1 | ;
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 | exports["default"] = void 0;
|
7 |
|
8 | var _react = _interopRequireWildcard(require("react"));
|
9 |
|
10 | var _propTypes = _interopRequireDefault(require("prop-types"));
|
11 |
|
12 | var _reactJsonTree = _interopRequireDefault(require("react-json-tree"));
|
13 |
|
14 | var _LogMonitorEntryAction = _interopRequireDefault(require("./LogMonitorEntryAction"));
|
15 |
|
16 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
17 |
|
18 | function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }
|
19 |
|
20 | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
21 |
|
22 | function _typeof(obj) { "@babel/helpers - typeof"; 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); }
|
23 |
|
24 | function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
25 |
|
26 | function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
27 |
|
28 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
29 |
|
30 | 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); } }
|
31 |
|
32 | function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
|
33 |
|
34 | 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); }
|
35 |
|
36 | function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
|
37 |
|
38 | function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
|
39 |
|
40 | function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
|
41 |
|
42 | function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
|
43 |
|
44 | function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
|
45 |
|
46 | function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
|
47 |
|
48 | 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; }
|
49 |
|
50 | function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
51 |
|
52 | function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
53 |
|
54 | function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
55 |
|
56 | function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); }
|
57 |
|
58 | function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
59 |
|
60 | function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
61 |
|
62 | var styles = {
|
63 | entry: {
|
64 | display: 'block',
|
65 | WebkitUserSelect: 'none'
|
66 | },
|
67 | root: {
|
68 | marginLeft: 0
|
69 | }
|
70 | };
|
71 |
|
72 | var getDeepItem = function getDeepItem(data, path) {
|
73 | return path.reduce(function (obj, key) {
|
74 | return obj && obj[key];
|
75 | }, data);
|
76 | };
|
77 |
|
78 | var dataIsEqual = function dataIsEqual(data, previousData, keyPath) {
|
79 | var path = _toConsumableArray(keyPath).reverse().slice(1);
|
80 |
|
81 | return getDeepItem(data, path) === getDeepItem(previousData, path);
|
82 | };
|
83 |
|
84 | var LogMonitorEntry = /*#__PURE__*/function (_PureComponent) {
|
85 | _inherits(LogMonitorEntry, _PureComponent);
|
86 |
|
87 | var _super = _createSuper(LogMonitorEntry);
|
88 |
|
89 | function LogMonitorEntry() {
|
90 | var _this;
|
91 |
|
92 | _classCallCheck(this, LogMonitorEntry);
|
93 |
|
94 | for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
95 | args[_key] = arguments[_key];
|
96 | }
|
97 |
|
98 | _this = _super.call.apply(_super, [this].concat(args));
|
99 |
|
100 | _defineProperty(_assertThisInitialized(_this), "handleActionClick", function (e) {
|
101 | var _this$props = _this.props,
|
102 | actionId = _this$props.actionId,
|
103 | onActionClick = _this$props.onActionClick,
|
104 | onActionShiftClick = _this$props.onActionShiftClick;
|
105 |
|
106 | if (actionId > 0) {
|
107 | if (e.shiftKey) {
|
108 | onActionShiftClick(actionId);
|
109 | } else {
|
110 | onActionClick(actionId);
|
111 | }
|
112 | }
|
113 | });
|
114 |
|
115 | _defineProperty(_assertThisInitialized(_this), "shouldExpandNode", function (keyPath, data, level) {
|
116 | return _this.props.expandStateRoot && level === 0;
|
117 | });
|
118 |
|
119 | return _this;
|
120 | }
|
121 |
|
122 | _createClass(LogMonitorEntry, [{
|
123 | key: "printState",
|
124 | value: function printState(state, error) {
|
125 | var _this2 = this;
|
126 |
|
127 | var errorText = error;
|
128 |
|
129 | if (!errorText) {
|
130 | try {
|
131 | var data = this.props.select(state);
|
132 | var theme;
|
133 |
|
134 | if (this.props.markStateDiff) {
|
135 | var previousData = typeof this.props.previousState !== 'undefined' ? this.props.select(this.props.previousState) : undefined;
|
136 |
|
137 | var getValueStyle = function getValueStyle(_ref, nodeType, keyPath) {
|
138 | var style = _ref.style;
|
139 | return {
|
140 | style: _objectSpread(_objectSpread({}, style), {}, {
|
141 | backgroundColor: dataIsEqual(data, previousData, keyPath) ? 'transparent' : _this2.props.theme.base01
|
142 | })
|
143 | };
|
144 | };
|
145 |
|
146 | var getNestedNodeStyle = function getNestedNodeStyle(_ref2, keyPath) {
|
147 | var style = _ref2.style;
|
148 | return {
|
149 | style: _objectSpread(_objectSpread({}, style), keyPath.length > 1 ? {} : styles.root)
|
150 | };
|
151 | };
|
152 |
|
153 | theme = {
|
154 | extend: this.props.theme,
|
155 | value: getValueStyle,
|
156 | nestedNode: getNestedNodeStyle
|
157 | };
|
158 | } else {
|
159 | theme = this.props.theme;
|
160 | }
|
161 |
|
162 | return /*#__PURE__*/_react["default"].createElement(_reactJsonTree["default"], {
|
163 | theme: theme,
|
164 | data: data,
|
165 | invertTheme: false,
|
166 | keyPath: ['state'],
|
167 | shouldExpandNode: this.shouldExpandNode
|
168 | });
|
169 | } catch (err) {
|
170 | errorText = 'Error selecting state.';
|
171 | }
|
172 | }
|
173 |
|
174 | return /*#__PURE__*/_react["default"].createElement("div", {
|
175 | style: {
|
176 | color: this.props.theme.base08,
|
177 | paddingTop: 20,
|
178 | paddingLeft: 30,
|
179 | paddingRight: 30,
|
180 | paddingBottom: 35
|
181 | }
|
182 | }, errorText);
|
183 | }
|
184 | }, {
|
185 | key: "render",
|
186 | value: function render() {
|
187 | var _this$props2 = this.props,
|
188 | actionId = _this$props2.actionId,
|
189 | error = _this$props2.error,
|
190 | action = _this$props2.action,
|
191 | state = _this$props2.state,
|
192 | collapsed = _this$props2.collapsed,
|
193 | selected = _this$props2.selected,
|
194 | inFuture = _this$props2.inFuture;
|
195 | var styleEntry = {
|
196 | opacity: collapsed ? 0.5 : 1,
|
197 | cursor: actionId > 0 ? 'pointer' : 'default'
|
198 | };
|
199 | return /*#__PURE__*/_react["default"].createElement("div", {
|
200 | style: {
|
201 | opacity: selected ? 0.4 : inFuture ? 0.6 : 1,
|
202 | // eslint-disable-line no-nested-ternary
|
203 | textDecoration: collapsed ? 'line-through' : 'none',
|
204 | color: this.props.theme.base06
|
205 | }
|
206 | }, /*#__PURE__*/_react["default"].createElement(_LogMonitorEntryAction["default"], {
|
207 | theme: this.props.theme,
|
208 | collapsed: collapsed,
|
209 | action: action,
|
210 | expandActionRoot: this.props.expandActionRoot,
|
211 | onClick: this.handleActionClick,
|
212 | style: _objectSpread(_objectSpread({}, styles.entry), styleEntry)
|
213 | }), !collapsed && /*#__PURE__*/_react["default"].createElement("div", {
|
214 | style: {
|
215 | paddingLeft: 16
|
216 | }
|
217 | }, this.printState(state, error)));
|
218 | }
|
219 | }]);
|
220 |
|
221 | return LogMonitorEntry;
|
222 | }(_react.PureComponent);
|
223 |
|
224 | exports["default"] = LogMonitorEntry;
|
225 |
|
226 | _defineProperty(LogMonitorEntry, "propTypes", {
|
227 | state: _propTypes["default"].object.isRequired,
|
228 | action: _propTypes["default"].object.isRequired,
|
229 | actionId: _propTypes["default"].number.isRequired,
|
230 | select: _propTypes["default"].func.isRequired,
|
231 | inFuture: _propTypes["default"].bool,
|
232 | error: _propTypes["default"].string,
|
233 | onActionClick: _propTypes["default"].func.isRequired,
|
234 | onActionShiftClick: _propTypes["default"].func.isRequired,
|
235 | collapsed: _propTypes["default"].bool,
|
236 | selected: _propTypes["default"].bool,
|
237 | expandActionRoot: _propTypes["default"].bool,
|
238 | expandStateRoot: _propTypes["default"].bool,
|
239 | previousState: _propTypes["default"].object
|
240 | });
|
241 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9Mb2dNb25pdG9yRW50cnkudHN4Il0sIm5hbWVzIjpbInN0eWxlcyIsImVudHJ5IiwiZGlzcGxheSIsIldlYmtpdFVzZXJTZWxlY3QiLCJyb290IiwibWFyZ2luTGVmdCIsImdldERlZXBJdGVtIiwiZGF0YSIsInBhdGgiLCJyZWR1Y2UiLCJvYmoiLCJrZXkiLCJkYXRhSXNFcXVhbCIsInByZXZpb3VzRGF0YSIsImtleVBhdGgiLCJyZXZlcnNlIiwic2xpY2UiLCJMb2dNb25pdG9yRW50cnkiLCJlIiwicHJvcHMiLCJhY3Rpb25JZCIsIm9uQWN0aW9uQ2xpY2siLCJvbkFjdGlvblNoaWZ0Q2xpY2siLCJzaGlmdEtleSIsImxldmVsIiwiZXhwYW5kU3RhdGVSb290Iiwic3RhdGUiLCJlcnJvciIsImVycm9yVGV4dCIsInNlbGVjdCIsInRoZW1lIiwibWFya1N0YXRlRGlmZiIsInByZXZpb3VzU3RhdGUiLCJ1bmRlZmluZWQiLCJnZXRWYWx1ZVN0eWxlIiwibm9kZVR5cGUiLCJzdHlsZSIsImJhY2tncm91bmRDb2xvciIsImJhc2UwMSIsImdldE5lc3RlZE5vZGVTdHlsZSIsImxlbmd0aCIsImV4dGVuZCIsInZhbHVlIiwibmVzdGVkTm9kZSIsInNob3VsZEV4cGFuZE5vZGUiLCJlcnIiLCJjb2xvciIsImJhc2UwOCIsInBhZGRpbmdUb3AiLCJwYWRkaW5nTGVmdCIsInBhZGRpbmdSaWdodCIsInBhZGRpbmdCb3R0b20iLCJhY3Rpb24iLCJjb2xsYXBzZWQiLCJzZWxlY3RlZCIsImluRnV0dXJlIiwic3R5bGVFbnRyeSIsIm9wYWNpdHkiLCJjdXJzb3IiLCJ0ZXh0RGVjb3JhdGlvbiIsImJhc2UwNiIsImV4cGFuZEFjdGlvblJvb3QiLCJoYW5kbGVBY3Rpb25DbGljayIsInByaW50U3RhdGUiLCJQdXJlQ29tcG9uZW50IiwiUHJvcFR5cGVzIiwib2JqZWN0IiwiaXNSZXF1aXJlZCIsIm51bWJlciIsImZ1bmMiLCJib29sIiwic3RyaW5nIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBR0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBLElBQU1BLE1BQXFELEdBQUc7QUFDNURDLEVBQUFBLEtBQUssRUFBRTtBQUNMQyxJQUFBQSxPQUFPLEVBQUUsT0FESjtBQUVMQyxJQUFBQSxnQkFBZ0IsRUFBRTtBQUZiLEdBRHFEO0FBTTVEQyxFQUFBQSxJQUFJLEVBQUU7QUFDSkMsSUFBQUEsVUFBVSxFQUFFO0FBRFI7QUFOc0QsQ0FBOUQ7O0FBV0EsSUFBTUMsV0FBVyxHQUFHLFNBQWRBLFdBQWMsQ0FBQ0MsSUFBRCxFQUFZQyxJQUFaO0FBQUEsU0FDbEJBLElBQUksQ0FBQ0MsTUFBTCxDQUFZLFVBQUNDLEdBQUQsRUFBTUMsR0FBTjtBQUFBLFdBQWNELEdBQUcsSUFBSUEsR0FBRyxDQUFDQyxHQUFELENBQXhCO0FBQUEsR0FBWixFQUEyQ0osSUFBM0MsQ0FEa0I7QUFBQSxDQUFwQjs7QUFFQSxJQUFNSyxXQUFXLEdBQUcsU0FBZEEsV0FBYyxDQUNsQkwsSUFEa0IsRUFFbEJNLFlBRmtCLEVBR2xCQyxPQUhrQixFQUlmO0FBQ0gsTUFBTU4sSUFBSSxHQUFHLG1CQUFJTSxPQUFKLEVBQWFDLE9BQWIsR0FBdUJDLEtBQXZCLENBQTZCLENBQTdCLENBQWI7O0FBRUEsU0FBT1YsV0FBVyxDQUFDQyxJQUFELEVBQU9DLElBQVAsQ0FBWCxLQUE0QkYsV0FBVyxDQUFDTyxZQUFELEVBQWVMLElBQWYsQ0FBOUM7QUFDRCxDQVJEOztJQTRCcUJTLGU7Ozs7Ozs7Ozs7Ozs7Ozs7d0VBd0ZvQyxVQUFDQyxDQUFELEVBQU87QUFBQSx3QkFDSixNQUFLQyxLQUREO0FBQUEsVUFDcERDLFFBRG9ELGVBQ3BEQSxRQURvRDtBQUFBLFVBQzFDQyxhQUQwQyxlQUMxQ0EsYUFEMEM7QUFBQSxVQUMzQkMsa0JBRDJCLGVBQzNCQSxrQkFEMkI7O0FBRTVELFVBQUlGLFFBQVEsR0FBRyxDQUFmLEVBQWtCO0FBQ2hCLFlBQUlGLENBQUMsQ0FBQ0ssUUFBTixFQUFnQjtBQUNkRCxVQUFBQSxrQkFBa0IsQ0FBQ0YsUUFBRCxDQUFsQjtBQUNELFNBRkQsTUFFTztBQUNMQyxVQUFBQSxhQUFhLENBQUNELFFBQUQsQ0FBYjtBQUNEO0FBQ0Y7QUFDRixLOzt1RUFFa0IsVUFDakJOLE9BRGlCLEVBRWpCUCxJQUZpQixFQUdqQmlCLEtBSGlCLEVBSWQ7QUFDSCxhQUFPLE1BQUtMLEtBQUwsQ0FBV00sZUFBWCxJQUE4QkQsS0FBSyxLQUFLLENBQS9DO0FBQ0QsSzs7Ozs7OzsrQkFyRlVFLEssRUFBVUMsSyxFQUEyQjtBQUFBOztBQUM5QyxVQUFJQyxTQUFTLEdBQUdELEtBQWhCOztBQUNBLFVBQUksQ0FBQ0MsU0FBTCxFQUFnQjtBQUNkLFlBQUk7QUFDRixjQUFNckIsSUFBSSxHQUFHLEtBQUtZLEtBQUwsQ0FBV1UsTUFBWCxDQUFrQkgsS0FBbEIsQ0FBYjtBQUNBLGNBQUlJLEtBQUo7O0FBRUEsY0FBSSxLQUFLWCxLQUFMLENBQVdZLGFBQWYsRUFBOEI7QUFDNUIsZ0JBQU1sQixZQUFZLEdBQ2hCLE9BQU8sS0FBS00sS0FBTCxDQUFXYSxhQUFsQixLQUFvQyxXQUFwQyxHQUNJLEtBQUtiLEtBQUwsQ0FBV1UsTUFBWCxDQUFrQixLQUFLVixLQUFMLENBQVdhLGFBQTdCLENBREosR0FFSUMsU0FITjs7QUFJQSxnQkFBTUMsYUFBMkIsR0FBRyxTQUE5QkEsYUFBOEIsT0FFbENDLFFBRmtDLEVBR2xDckIsT0FIa0M7QUFBQSxrQkFDaENzQixLQURnQyxRQUNoQ0EsS0FEZ0M7QUFBQSxxQkFJOUI7QUFDSkEsZ0JBQUFBLEtBQUssa0NBQ0FBLEtBREE7QUFFSEMsa0JBQUFBLGVBQWUsRUFBRXpCLFdBQVcsQ0FBQ0wsSUFBRCxFQUFPTSxZQUFQLEVBQXFCQyxPQUFyQixDQUFYLEdBQ2IsYUFEYSxHQUViLE1BQUksQ0FBQ0ssS0FBTCxDQUFXVyxLQUFYLENBQWlCUTtBQUpsQjtBQURELGVBSjhCO0FBQUEsYUFBcEM7O0FBWUEsZ0JBQU1DLGtCQUFnQyxHQUFHLFNBQW5DQSxrQkFBbUMsUUFBWXpCLE9BQVo7QUFBQSxrQkFBR3NCLEtBQUgsU0FBR0EsS0FBSDtBQUFBLHFCQUF5QjtBQUNoRUEsZ0JBQUFBLEtBQUssa0NBQ0FBLEtBREEsR0FFQ3RCLE9BQU8sQ0FBQzBCLE1BQVIsR0FBaUIsQ0FBakIsR0FBcUIsRUFBckIsR0FBMEJ4QyxNQUFNLENBQUNJLElBRmxDO0FBRDJELGVBQXpCO0FBQUEsYUFBekM7O0FBTUEwQixZQUFBQSxLQUFLLEdBQUc7QUFDTlcsY0FBQUEsTUFBTSxFQUFFLEtBQUt0QixLQUFMLENBQVdXLEtBRGI7QUFFTlksY0FBQUEsS0FBSyxFQUFFUixhQUZEO0FBR05TLGNBQUFBLFVBQVUsRUFBRUo7QUFITixhQUFSO0FBS0QsV0E1QkQsTUE0Qk87QUFDTFQsWUFBQUEsS0FBSyxHQUFHLEtBQUtYLEtBQUwsQ0FBV1csS0FBbkI7QUFDRDs7QUFFRCw4QkFDRSxnQ0FBQyx5QkFBRDtBQUNFLFlBQUEsS0FBSyxFQUFFQSxLQURUO0FBRUUsWUFBQSxJQUFJLEVBQUV2QixJQUZSO0FBR0UsWUFBQSxXQUFXLEVBQUUsS0FIZjtBQUlFLFlBQUEsT0FBTyxFQUFFLENBQUMsT0FBRCxDQUpYO0FBS0UsWUFBQSxnQkFBZ0IsRUFBRSxLQUFLcUM7QUFMekIsWUFERjtBQVNELFNBN0NELENBNkNFLE9BQU9DLEdBQVAsRUFBWTtBQUNaakIsVUFBQUEsU0FBUyxHQUFHLHdCQUFaO0FBQ0Q7QUFDRjs7QUFFRCwwQkFDRTtBQUNFLFFBQUEsS0FBSyxFQUFFO0FBQ0xrQixVQUFBQSxLQUFLLEVBQUUsS0FBSzNCLEtBQUwsQ0FBV1csS0FBWCxDQUFpQmlCLE1BRG5CO0FBRUxDLFVBQUFBLFVBQVUsRUFBRSxFQUZQO0FBR0xDLFVBQUFBLFdBQVcsRUFBRSxFQUhSO0FBSUxDLFVBQUFBLFlBQVksRUFBRSxFQUpUO0FBS0xDLFVBQUFBLGFBQWEsRUFBRTtBQUxWO0FBRFQsU0FTR3ZCLFNBVEgsQ0FERjtBQWFEOzs7NkJBcUJRO0FBQUEseUJBU0gsS0FBS1QsS0FURjtBQUFBLFVBRUxDLFFBRkssZ0JBRUxBLFFBRks7QUFBQSxVQUdMTyxLQUhLLGdCQUdMQSxLQUhLO0FBQUEsVUFJTHlCLE1BSkssZ0JBSUxBLE1BSks7QUFBQSxVQUtMMUIsS0FMSyxnQkFLTEEsS0FMSztBQUFBLFVBTUwyQixTQU5LLGdCQU1MQSxTQU5LO0FBQUEsVUFPTEMsUUFQSyxnQkFPTEEsUUFQSztBQUFBLFVBUUxDLFFBUkssZ0JBUUxBLFFBUks7QUFVUCxVQUFNQyxVQUFVLEdBQUc7QUFDakJDLFFBQUFBLE9BQU8sRUFBRUosU0FBUyxHQUFHLEdBQUgsR0FBUyxDQURWO0FBRWpCSyxRQUFBQSxNQUFNLEVBQUV0QyxRQUFRLEdBQUcsQ0FBWCxHQUFlLFNBQWYsR0FBMkI7QUFGbEIsT0FBbkI7QUFLQSwwQkFDRTtBQUNFLFFBQUEsS0FBSyxFQUFFO0FBQ0xxQyxVQUFBQSxPQUFPLEVBQUVILFFBQVEsR0FBRyxHQUFILEdBQVNDLFFBQVEsR0FBRyxHQUFILEdBQVMsQ0FEdEM7QUFDeUM7QUFDOUNJLFVBQUFBLGNBQWMsRUFBRU4sU0FBUyxHQUFHLGNBQUgsR0FBb0IsTUFGeEM7QUFHTFAsVUFBQUEsS0FBSyxFQUFFLEtBQUszQixLQUFMLENBQVdXLEtBQVgsQ0FBaUI4QjtBQUhuQjtBQURULHNCQU9FLGdDQUFDLGlDQUFEO0FBQ0UsUUFBQSxLQUFLLEVBQUUsS0FBS3pDLEtBQUwsQ0FBV1csS0FEcEI7QUFFRSxRQUFBLFNBQVMsRUFBRXVCLFNBRmI7QUFHRSxRQUFBLE1BQU0sRUFBRUQsTUFIVjtBQUlFLFFBQUEsZ0JBQWdCLEVBQUUsS0FBS2pDLEtBQUwsQ0FBVzBDLGdCQUovQjtBQUtFLFFBQUEsT0FBTyxFQUFFLEtBQUtDLGlCQUxoQjtBQU1FLFFBQUEsS0FBSyxrQ0FBTzlELE1BQU0sQ0FBQ0MsS0FBZCxHQUF3QnVELFVBQXhCO0FBTlAsUUFQRixFQWVHLENBQUNILFNBQUQsaUJBQ0M7QUFBSyxRQUFBLEtBQUssRUFBRTtBQUFFSixVQUFBQSxXQUFXLEVBQUU7QUFBZjtBQUFaLFNBQWtDLEtBQUtjLFVBQUwsQ0FBZ0JyQyxLQUFoQixFQUF1QkMsS0FBdkIsQ0FBbEMsQ0FoQkosQ0FERjtBQXFCRDs7OztFQTVJT3FDLG9COzs7O2dCQUhXL0MsZSxlQUlBO0FBQ2pCUyxFQUFBQSxLQUFLLEVBQUV1QyxzQkFBVUMsTUFBVixDQUFpQkMsVUFEUDtBQUVqQmYsRUFBQUEsTUFBTSxFQUFFYSxzQkFBVUMsTUFBVixDQUFpQkMsVUFGUjtBQUdqQi9DLEVBQUFBLFFBQVEsRUFBRTZDLHNCQUFVRyxNQUFWLENBQWlCRCxVQUhWO0FBSWpCdEMsRUFBQUEsTUFBTSxFQUFFb0Msc0JBQVVJLElBQVYsQ0FBZUYsVUFKTjtBQUtqQlosRUFBQUEsUUFBUSxFQUFFVSxzQkFBVUssSUFMSDtBQU1qQjNDLEVBQUFBLEtBQUssRUFBRXNDLHNCQUFVTSxNQU5BO0FBT2pCbEQsRUFBQUEsYUFBYSxFQUFFNEMsc0JBQVVJLElBQVYsQ0FBZUYsVUFQYjtBQVFqQjdDLEVBQUFBLGtCQUFrQixFQUFFMkMsc0JBQVVJLElBQVYsQ0FBZUYsVUFSbEI7QUFTakJkLEVBQUFBLFNBQVMsRUFBRVksc0JBQVVLLElBVEo7QUFVakJoQixFQUFBQSxRQUFRLEVBQUVXLHNCQUFVSyxJQVZIO0FBV2pCVCxFQUFBQSxnQkFBZ0IsRUFBRUksc0JBQVVLLElBWFg7QUFZakI3QyxFQUFBQSxlQUFlLEVBQUV3QyxzQkFBVUssSUFaVjtBQWFqQnRDLEVBQUFBLGFBQWEsRUFBRWlDLHNCQUFVQztBQWJSLEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgQ1NTUHJvcGVydGllcywgTW91c2VFdmVudEhhbmRsZXIsIFB1cmVDb21wb25lbnQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IEpTT05UcmVlLCB7IFN0eWxpbmdWYWx1ZSB9IGZyb20gJ3JlYWN0LWpzb24tdHJlZSc7XG5pbXBvcnQgeyBCYXNlMTZUaGVtZSB9IGZyb20gJ3JlZHV4LWRldnRvb2xzLXRoZW1lcyc7XG5pbXBvcnQgeyBBY3Rpb24gfSBmcm9tICdyZWR1eCc7XG5pbXBvcnQgTG9nTW9uaXRvckVudHJ5QWN0aW9uIGZyb20gJy4vTG9nTW9uaXRvckVudHJ5QWN0aW9uJztcblxuY29uc3Qgc3R5bGVzOiB7IGVudHJ5OiBDU1NQcm9wZXJ0aWVzOyByb290OiBDU1NQcm9wZXJ0aWVzIH0gPSB7XG4gIGVudHJ5OiB7XG4gICAgZGlzcGxheTogJ2Jsb2NrJyxcbiAgICBXZWJraXRVc2VyU2VsZWN0OiAnbm9uZScsXG4gIH0sXG5cbiAgcm9vdDoge1xuICAgIG1hcmdpbkxlZnQ6IDAsXG4gIH0sXG59O1xuXG5jb25zdCBnZXREZWVwSXRlbSA9IChkYXRhOiBhbnksIHBhdGg6IChzdHJpbmcgfCBudW1iZXIpW10pID0+XG4gIHBhdGgucmVkdWNlKChvYmosIGtleSkgPT4gb2JqICYmIG9ialtrZXldLCBkYXRhKTtcbmNvbnN0IGRhdGFJc0VxdWFsID0gKFxuICBkYXRhOiBhbnksXG4gIHByZXZpb3VzRGF0YTogdW5rbm93bixcbiAga2V5UGF0aDogKHN0cmluZyB8IG51bWJlcilbXVxuKSA9PiB7XG4gIGNvbnN0IHBhdGggPSBbLi4ua2V5UGF0aF0ucmV2ZXJzZSgpLnNsaWNlKDEpO1xuXG4gIHJldHVybiBnZXREZWVwSXRlbShkYXRhLCBwYXRoKSA9PT0gZ2V0RGVlcEl0ZW0ocHJldmlvdXNEYXRhLCBwYXRoKTtcbn07XG5cbmludGVyZmFjZSBQcm9wczxTLCBBIGV4dGVuZHMgQWN0aW9uPHVua25vd24+PiB7XG4gIHRoZW1lOiBCYXNlMTZUaGVtZTtcbiAgc2VsZWN0OiAoc3RhdGU6IGFueSkgPT4gdW5rbm93bjtcbiAgYWN0aW9uOiBBO1xuICBhY3Rpb25JZDogbnVtYmVyO1xuICBzdGF0ZTogUztcbiAgcHJldmlvdXNTdGF0ZTogUyB8IHVuZGVmaW5lZDtcbiAgY29sbGFwc2VkOiBib29sZWFuO1xuICBpbkZ1dHVyZTogYm9vbGVhbjtcbiAgc2VsZWN0ZWQ6IGJvb2xlYW47XG4gIGVycm9yOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGV4cGFuZEFjdGlvblJvb3Q6IGJvb2xlYW47XG4gIGV4cGFuZFN0YXRlUm9vdDogYm9vbGVhbjtcbiAgbWFya1N0YXRlRGlmZjogYm9vbGVhbjtcbiAgb25BY3Rpb25DbGljazogKGlkOiBudW1iZXIpID0+IHZvaWQ7XG4gIG9uQWN0aW9uU2hpZnRDbGljazogKGlkOiBudW1iZXIpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIExvZ01vbml0b3JFbnRyeTxcbiAgUyxcbiAgQSBleHRlbmRzIEFjdGlvbjx1bmtub3duPlxuPiBleHRlbmRzIFB1cmVDb21wb25lbnQ8UHJvcHM8UywgQT4+IHtcbiAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICBzdGF0ZTogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICAgIGFjdGlvbjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICAgIGFjdGlvbklkOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG4gICAgc2VsZWN0OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgIGluRnV0dXJlOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBlcnJvcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBvbkFjdGlvbkNsaWNrOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgIG9uQWN0aW9uU2hpZnRDbGljazogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICBjb2xsYXBzZWQ6IFByb3BUeXBlcy5ib29sLFxuICAgIHNlbGVjdGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBleHBhbmRBY3Rpb25Sb290OiBQcm9wVHlwZXMuYm9vbCxcbiAgICBleHBhbmRTdGF0ZVJvb3Q6IFByb3BUeXBlcy5ib29sLFxuICAgIHByZXZpb3VzU3RhdGU6IFByb3BUeXBlcy5vYmplY3QsXG4gIH07XG5cbiAgcHJpbnRTdGF0ZShzdGF0ZTogUywgZXJyb3I6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIGxldCBlcnJvclRleHQgPSBlcnJvcjtcbiAgICBpZiAoIWVycm9yVGV4dCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgZGF0YSA9IHRoaXMucHJvcHMuc2VsZWN0KHN0YXRlKTtcbiAgICAgICAgbGV0IHRoZW1lO1xuXG4gICAgICAgIGlmICh0aGlzLnByb3BzLm1hcmtTdGF0ZURpZmYpIHtcbiAgICAgICAgICBjb25zdCBwcmV2aW91c0RhdGEgPVxuICAgICAgICAgICAgdHlwZW9mIHRoaXMucHJvcHMucHJldmlvdXNTdGF0ZSAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAgICAgICAgPyB0aGlzLnByb3BzLnNlbGVjdCh0aGlzLnByb3BzLnByZXZpb3VzU3RhdGUpXG4gICAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgICAgIGNvbnN0IGdldFZhbHVlU3R5bGU6IFN0eWxpbmdWYWx1ZSA9IChcbiAgICAgICAgICAgIHsgc3R5bGUgfSxcbiAgICAgICAgICAgIG5vZGVUeXBlLFxuICAgICAgICAgICAga2V5UGF0aFxuICAgICAgICAgICkgPT4gKHtcbiAgICAgICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICAgIC4uLnN0eWxlLFxuICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGRhdGFJc0VxdWFsKGRhdGEsIHByZXZpb3VzRGF0YSwga2V5UGF0aClcbiAgICAgICAgICAgICAgICA/ICd0cmFuc3BhcmVudCdcbiAgICAgICAgICAgICAgICA6IHRoaXMucHJvcHMudGhlbWUuYmFzZTAxLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBjb25zdCBnZXROZXN0ZWROb2RlU3R5bGU6IFN0eWxpbmdWYWx1ZSA9ICh7IHN0eWxlIH0sIGtleVBhdGgpID0+ICh7XG4gICAgICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgICAuLi5zdHlsZSxcbiAgICAgICAgICAgICAgLi4uKGtleVBhdGgubGVuZ3RoID4gMSA/IHt9IDogc3R5bGVzLnJvb3QpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGVtZSA9IHtcbiAgICAgICAgICAgIGV4dGVuZDogdGhpcy5wcm9wcy50aGVtZSxcbiAgICAgICAgICAgIHZhbHVlOiBnZXRWYWx1ZVN0eWxlLFxuICAgICAgICAgICAgbmVzdGVkTm9kZTogZ2V0TmVzdGVkTm9kZVN0eWxlLFxuICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhlbWUgPSB0aGlzLnByb3BzLnRoZW1lO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICA8SlNPTlRyZWVcbiAgICAgICAgICAgIHRoZW1lPXt0aGVtZX1cbiAgICAgICAgICAgIGRhdGE9e2RhdGF9XG4gICAgICAgICAgICBpbnZlcnRUaGVtZT17ZmFsc2V9XG4gICAgICAgICAgICBrZXlQYXRoPXtbJ3N0YXRlJ119XG4gICAgICAgICAgICBzaG91bGRFeHBhbmROb2RlPXt0aGlzLnNob3VsZEV4cGFuZE5vZGV9XG4gICAgICAgICAgLz5cbiAgICAgICAgKTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBlcnJvclRleHQgPSAnRXJyb3Igc2VsZWN0aW5nIHN0YXRlLic7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXZcbiAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICBjb2xvcjogdGhpcy5wcm9wcy50aGVtZS5iYXNlMDgsXG4gICAgICAgICAgcGFkZGluZ1RvcDogMjAsXG4gICAgICAgICAgcGFkZGluZ0xlZnQ6IDMwLFxuICAgICAgICAgIHBhZGRpbmdSaWdodDogMzAsXG4gICAgICAgICAgcGFkZGluZ0JvdHRvbTogMzUsXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIHtlcnJvclRleHR9XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG5cbiAgaGFuZGxlQWN0aW9uQ2xpY2s6IE1vdXNlRXZlbnRIYW5kbGVyPEhUTUxEaXZFbGVtZW50PiA9IChlKSA9PiB7XG4gICAgY29uc3QgeyBhY3Rpb25JZCwgb25BY3Rpb25DbGljaywgb25BY3Rpb25TaGlmdENsaWNrIH0gPSB0aGlzLnByb3BzO1xuICAgIGlmIChhY3Rpb25JZCA+IDApIHtcbiAgICAgIGlmIChlLnNoaWZ0S2V5KSB7XG4gICAgICAgIG9uQWN0aW9uU2hpZnRDbGljayhhY3Rpb25JZCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvbkFjdGlvbkNsaWNrKGFjdGlvbklkKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgc2hvdWxkRXhwYW5kTm9kZSA9IChcbiAgICBrZXlQYXRoOiAoc3RyaW5nIHwgbnVtYmVyKVtdLFxuICAgIGRhdGE6IGFueSxcbiAgICBsZXZlbDogbnVtYmVyXG4gICkgPT4ge1xuICAgIHJldHVybiB0aGlzLnByb3BzLmV4cGFuZFN0YXRlUm9vdCAmJiBsZXZlbCA9PT0gMDtcbiAgfTtcblxuICByZW5kZXIoKSB7XG4gICAgY29uc3Qge1xuICAgICAgYWN0aW9uSWQsXG4gICAgICBlcnJvcixcbiAgICAgIGFjdGlvbixcbiAgICAgIHN0YXRlLFxuICAgICAgY29sbGFwc2VkLFxuICAgICAgc2VsZWN0ZWQsXG4gICAgICBpbkZ1dHVyZSxcbiAgICB9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCBzdHlsZUVudHJ5ID0ge1xuICAgICAgb3BhY2l0eTogY29sbGFwc2VkID8gMC41IDogMSxcbiAgICAgIGN1cnNvcjogYWN0aW9uSWQgPiAwID8gJ3BvaW50ZXInIDogJ2RlZmF1bHQnLFxuICAgIH07XG5cbiAgICByZXR1cm4gKFxuICAgICAgPGRpdlxuICAgICAgICBzdHlsZT17e1xuICAgICAgICAgIG9wYWNpdHk6IHNlbGVjdGVkID8gMC40IDogaW5GdXR1cmUgPyAwLjYgOiAxLCAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLW5lc3RlZC10ZXJuYXJ5XG4gICAgICAgICAgdGV4dERlY29yYXRpb246IGNvbGxhcHNlZCA/ICdsaW5lLXRocm91Z2gnIDogJ25vbmUnLFxuICAgICAgICAgIGNvbG9yOiB0aGlzLnByb3BzLnRoZW1lLmJhc2UwNixcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAgPExvZ01vbml0b3JFbnRyeUFjdGlvblxuICAgICAgICAgIHRoZW1lPXt0aGlzLnByb3BzLnRoZW1lfVxuICAgICAgICAgIGNvbGxhcHNlZD17Y29sbGFwc2VkfVxuICAgICAgICAgIGFjdGlvbj17YWN0aW9ufVxuICAgICAgICAgIGV4cGFuZEFjdGlvblJvb3Q9e3RoaXMucHJvcHMuZXhwYW5kQWN0aW9uUm9vdH1cbiAgICAgICAgICBvbkNsaWNrPXt0aGlzLmhhbmRsZUFjdGlvbkNsaWNrfVxuICAgICAgICAgIHN0eWxlPXt7IC4uLnN0eWxlcy5lbnRyeSwgLi4uc3R5bGVFbnRyeSB9fVxuICAgICAgICAvPlxuICAgICAgICB7IWNvbGxhcHNlZCAmJiAoXG4gICAgICAgICAgPGRpdiBzdHlsZT17eyBwYWRkaW5nTGVmdDogMTYgfX0+e3RoaXMucHJpbnRTdGF0ZShzdGF0ZSwgZXJyb3IpfTwvZGl2PlxuICAgICAgICApfVxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfVxufVxuIl19 |
\ | No newline at end of file |