adui
Version:
<div> <img src="https://wxa.wxs.qq.com/mpweb/delivery/legacy/wxadtouch/upload/t1/od834zef_52939fc6.png" style="margin:40px 0 0 -8px; background-color: #fcfcfc; box-shadow: none;" /> </div>
182 lines (181 loc) • 30.5 kB
JavaScript
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
var React = _interopRequireWildcard(require("react"));
var _reactTestRenderer = _interopRequireDefault(require("react-test-renderer"));
var _testUtils = require("react-dom/test-utils");
var _enzyme = require("enzyme");
var _ = _interopRequireDefault(require(".."));
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }
function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
function _possibleConstructorReturn(t, e) { if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); return _assertThisInitialized(t); }
function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; }
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }
function _inherits(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && _setPrototypeOf(t, e); }
function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }
var TimePickerTest = function (_React$Component) {
function TimePickerTest() {
var _this;
_classCallCheck(this, TimePickerTest);
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
_this = _callSuper(this, TimePickerTest, [].concat(args));
_this.state = {
value: "09:00"
};
return _this;
}
_inherits(TimePickerTest, _React$Component);
return _createClass(TimePickerTest, [{
key: "render",
value: function render() {
var _this2 = this;
var value = this.state.value;
return React.createElement("div", null, React.createElement(_["default"], {
closeOnSelect: true,
value: value,
onChange: function onChange(val) {
return _this2.setState({
value: val
});
},
minTime: "08:40",
maxTime: "09:20",
ref: function ref(node) {
if (node) {
_this2.picker = node;
}
return null;
}
}));
}
}]);
}(React.Component);
function timeout(ms) {
return function (done) {
setTimeout(done, ms);
};
}
describe("TimePicker", function () {
beforeAll(function () {
jest.useFakeTimers();
});
afterAll(function () {
jest.useRealTimers();
});
it("是否正确渲染", function () {
var wrapper = _reactTestRenderer["default"].create(React.createElement(_["default"], null));
expect(wrapper).toMatchSnapshot();
});
it("各种情况快照核对", function () {
var wrapper0 = _reactTestRenderer["default"].create(React.createElement(_["default"], {
size: "mini",
theme: "light",
onlyHour: true,
disabled: true
}));
expect(wrapper0).toMatchSnapshot();
});
it("输入事件", function () {
var wrapper = (0, _enzyme.mount)(React.createElement(_["default"], null));
var input = wrapper.find("input");
input.simulate("focus");
expect(wrapper.find("Popover").props().visible).toEqual(true);
input.simulate("change", {
target: {
value: " "
}
});
input.simulate("change", {
target: {
value: "16:07"
}
});
expect(wrapper.find("Input").props().value).toEqual("16:07");
input.simulate("keydown", {
keyCode: 13
});
expect(wrapper.find("Popover").props().visible).toEqual(false);
});
it("点击事件", function () {
var wrapper = (0, _enzyme.mount)(React.createElement(TimePickerTest, null));
expect(wrapper.find("Popover").props().visible).toEqual(false);
wrapper.find("input").simulate("focus");
expect(wrapper.find("Popover").props().visible).toEqual(true);
(0, _testUtils.act)(function () {
wrapper.find(".adui-time-item").at(0).simulate("click");
jest.advanceTimersByTime(50);
wrapper.update();
expect(wrapper.find("Input").props().value).toEqual("08:40");
wrapper.find(".adui-time-item").at(42).simulate("click");
wrapper.update();
jest.advanceTimersByTime(50);
expect(wrapper.find("Input").props().value).toEqual("08:40");
wrapper.find("input").simulate("change", {
target: {
value: "07:40"
}
});
wrapper.find("input").simulate("change", {
target: {
value: "08:4"
}
});
wrapper.update();
expect(wrapper.find("Input").props().value).toEqual("08:40");
});
});
it("内部驱动", function () {
var wrapper = (0, _enzyme.mount)(React.createElement(_["default"], {
defaultValue: "09:20"
}));
var input = wrapper.find("input");
input.simulate("focus");
expect(wrapper.find("Popover").props().visible).toEqual(true);
wrapper.find(".adui-time-item").at(0).simulate("click");
expect(wrapper.find("Input").props().value).toEqual("00:20");
});
it("外部控制", function () {
var wrapper = (0, _enzyme.mount)(React.createElement(_["default"], {
value: "09:00",
onlyHour: true
}));
var input = wrapper.find("input");
input.simulate("focus");
expect(wrapper.find("Popover").props().visible).toEqual(true);
wrapper.find(".adui-time-item").at(0).simulate("click");
expect(wrapper.find("Input").props().value).toEqual("09:00");
});
it("测试禁用", function () {
var wrapper = (0, _enzyme.mount)(React.createElement(_["default"], {
disabled: true
}));
var input = wrapper.find("input");
input.simulate("click");
expect(wrapper.find("Popover").props().visible).toEqual(false);
});
it("测试最大时间和最小时间", function () {
var wrapper = (0, _enzyme.mount)(React.createElement(_["default"], {
minTime: "09:00",
maxTime: "09:20",
defaultValue: "09:10"
}));
var input = wrapper.find("input");
input.simulate("change", {
target: {
value: "09:30"
}
});
input.simulate("focus");
expect(wrapper.find("Popover").props().visible).toEqual(true);
});
});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwicmVxdWlyZSIsIl9yZWFjdFRlc3RSZW5kZXJlciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfdGVzdFV0aWxzIiwiX2VuenltZSIsIl8iLCJlIiwiX19lc01vZHVsZSIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsIldlYWtNYXAiLCJyIiwidCIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJfY2xhc3NDYWxsQ2hlY2siLCJUeXBlRXJyb3IiLCJfZGVmaW5lUHJvcGVydGllcyIsImxlbmd0aCIsIm8iLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJfdG9Qcm9wZXJ0eUtleSIsImtleSIsIl9jcmVhdGVDbGFzcyIsInByb3RvdHlwZSIsIl90b1ByaW1pdGl2ZSIsIlN5bWJvbCIsInRvUHJpbWl0aXZlIiwiU3RyaW5nIiwiTnVtYmVyIiwiX2NhbGxTdXBlciIsIl9nZXRQcm90b3R5cGVPZiIsIl9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuIiwiX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCIsIlJlZmxlY3QiLCJjb25zdHJ1Y3QiLCJjb25zdHJ1Y3RvciIsImFwcGx5IiwiX2Fzc2VydFRoaXNJbml0aWFsaXplZCIsIlJlZmVyZW5jZUVycm9yIiwiQm9vbGVhbiIsInZhbHVlT2YiLCJzZXRQcm90b3R5cGVPZiIsImdldFByb3RvdHlwZU9mIiwiYmluZCIsIl9pbmhlcml0cyIsImNyZWF0ZSIsInZhbHVlIiwiX3NldFByb3RvdHlwZU9mIiwiVGltZVBpY2tlclRlc3QiLCJfUmVhY3QkQ29tcG9uZW50IiwiX3RoaXMiLCJfbGVuIiwiYXJndW1lbnRzIiwiYXJncyIsIkFycmF5IiwiX2tleSIsImNvbmNhdCIsInN0YXRlIiwicmVuZGVyIiwiX3RoaXMyIiwiY3JlYXRlRWxlbWVudCIsImNsb3NlT25TZWxlY3QiLCJvbkNoYW5nZSIsInZhbCIsInNldFN0YXRlIiwibWluVGltZSIsIm1heFRpbWUiLCJyZWYiLCJub2RlIiwicGlja2VyIiwiQ29tcG9uZW50IiwidGltZW91dCIsIm1zIiwiZG9uZSIsInNldFRpbWVvdXQiLCJkZXNjcmliZSIsImJlZm9yZUFsbCIsImplc3QiLCJ1c2VGYWtlVGltZXJzIiwiYWZ0ZXJBbGwiLCJ1c2VSZWFsVGltZXJzIiwiaXQiLCJ3cmFwcGVyIiwiVGVzdFJlbmRlcmVyIiwiZXhwZWN0IiwidG9NYXRjaFNuYXBzaG90Iiwid3JhcHBlcjAiLCJzaXplIiwidGhlbWUiLCJvbmx5SG91ciIsImRpc2FibGVkIiwibW91bnQiLCJpbnB1dCIsImZpbmQiLCJzaW11bGF0ZSIsInByb3BzIiwidmlzaWJsZSIsInRvRXF1YWwiLCJ0YXJnZXQiLCJrZXlDb2RlIiwiYWN0IiwiYXQiLCJhZHZhbmNlVGltZXJzQnlUaW1lIiwidXBkYXRlIiwiZGVmYXVsdFZhbHVlIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vY29tcG9uZW50cy90aW1lLXBpY2tlci9fX3Rlc3RzX18vaW5kZXgudGVzdC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLW5vY2hlY2tcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgVGVzdFJlbmRlcmVyIGZyb20gXCJyZWFjdC10ZXN0LXJlbmRlcmVyXCJcbmltcG9ydCB7IGFjdCB9IGZyb20gXCJyZWFjdC1kb20vdGVzdC11dGlsc1wiXG5pbXBvcnQgeyBtb3VudCB9IGZyb20gXCJlbnp5bWVcIlxuaW1wb3J0IGFzeW5jIGZyb20gXCJhc3luY1wiXG5pbXBvcnQgVGltZVBpY2tlciBmcm9tIFwiLi5cIlxuXG5jbGFzcyBUaW1lUGlja2VyVGVzdCBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIHN0YXRlID0ge1xuICAgIHZhbHVlOiBcIjA5OjAwXCIsXG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgY29uc3QgeyB2YWx1ZSB9ID0gdGhpcy5zdGF0ZVxuICAgIHJldHVybiAoXG4gICAgICA8ZGl2PlxuICAgICAgICA8VGltZVBpY2tlclxuICAgICAgICAgIGNsb3NlT25TZWxlY3RcbiAgICAgICAgICB2YWx1ZT17dmFsdWV9XG4gICAgICAgICAgb25DaGFuZ2U9eyh2YWwpID0+IHRoaXMuc2V0U3RhdGUoeyB2YWx1ZTogdmFsIH0pfVxuICAgICAgICAgIG1pblRpbWU9XCIwODo0MFwiXG4gICAgICAgICAgbWF4VGltZT1cIjA5OjIwXCJcbiAgICAgICAgICByZWY9eyhub2RlKSA9PiB7XG4gICAgICAgICAgICBpZiAobm9kZSkge1xuICAgICAgICAgICAgICB0aGlzLnBpY2tlciA9IG5vZGVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgICAgfX1cbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgIClcbiAgfVxufVxuXG5mdW5jdGlvbiB0aW1lb3V0KG1zOiBudW1iZXIpIHtcbiAgcmV0dXJuIChkb25lOiAoKSA9PiB2b2lkKSA9PiB7XG4gICAgc2V0VGltZW91dChkb25lLCBtcylcbiAgfVxufVxuXG5kZXNjcmliZShcIlRpbWVQaWNrZXJcIiwgKCkgPT4ge1xuICBiZWZvcmVBbGwoKCkgPT4ge1xuICAgIGplc3QudXNlRmFrZVRpbWVycygpXG4gIH0pXG5cbiAgYWZ0ZXJBbGwoKCkgPT4ge1xuICAgIGplc3QudXNlUmVhbFRpbWVycygpXG4gIH0pXG5cbiAgaXQoXCLmmK/lkKbmraPnoa7muLLmn5NcIiwgKCkgPT4ge1xuICAgIGNvbnN0IHdyYXBwZXIgPSBUZXN0UmVuZGVyZXIuY3JlYXRlKDxUaW1lUGlja2VyIC8+KVxuICAgIGV4cGVjdCh3cmFwcGVyKS50b01hdGNoU25hcHNob3QoKVxuICB9KVxuXG4gIGl0KFwi5ZCE56eN5oOF5Ya15b+r54Wn5qC45a+5XCIsICgpID0+IHtcbiAgICBjb25zdCB3cmFwcGVyMCA9IFRlc3RSZW5kZXJlci5jcmVhdGUoXG4gICAgICA8VGltZVBpY2tlciBzaXplPVwibWluaVwiIHRoZW1lPVwibGlnaHRcIiBvbmx5SG91ciBkaXNhYmxlZCAvPlxuICAgIClcbiAgICBleHBlY3Qod3JhcHBlcjApLnRvTWF0Y2hTbmFwc2hvdCgpXG4gIH0pXG5cbiAgaXQoXCLovpPlhaXkuovku7ZcIiwgKCkgPT4ge1xuICAgIGNvbnN0IHdyYXBwZXIgPSBtb3VudCg8VGltZVBpY2tlciAvPilcbiAgICBjb25zdCBpbnB1dCA9IHdyYXBwZXIuZmluZChcImlucHV0XCIpXG4gICAgaW5wdXQuc2ltdWxhdGUoXCJmb2N1c1wiKVxuICAgIGV4cGVjdCh3cmFwcGVyLmZpbmQoXCJQb3BvdmVyXCIpLnByb3BzKCkudmlzaWJsZSkudG9FcXVhbCh0cnVlKVxuICAgIGlucHV0LnNpbXVsYXRlKFwiY2hhbmdlXCIsIHsgdGFyZ2V0OiB7IHZhbHVlOiBcIiBcIiB9IH0pXG4gICAgaW5wdXQuc2ltdWxhdGUoXCJjaGFuZ2VcIiwgeyB0YXJnZXQ6IHsgdmFsdWU6IFwiMTY6MDdcIiB9IH0pXG4gICAgZXhwZWN0KHdyYXBwZXIuZmluZChcIklucHV0XCIpLnByb3BzKCkudmFsdWUpLnRvRXF1YWwoXCIxNjowN1wiKVxuICAgIGlucHV0LnNpbXVsYXRlKFwia2V5ZG93blwiLCB7IGtleUNvZGU6IDEzIH0pXG4gICAgZXhwZWN0KHdyYXBwZXIuZmluZChcIlBvcG92ZXJcIikucHJvcHMoKS52aXNpYmxlKS50b0VxdWFsKGZhbHNlKVxuICB9KVxuXG4gIGl0KFwi54K55Ye75LqL5Lu2XCIsICgpID0+IHtcbiAgICBjb25zdCB3cmFwcGVyID0gbW91bnQoPFRpbWVQaWNrZXJUZXN0IC8+KVxuXG4gICAgZXhwZWN0KHdyYXBwZXIuZmluZChcIlBvcG92ZXJcIikucHJvcHMoKS52aXNpYmxlKS50b0VxdWFsKGZhbHNlKVxuXG4gICAgd3JhcHBlci5maW5kKFwiaW5wdXRcIikuc2ltdWxhdGUoXCJmb2N1c1wiKVxuICAgIGV4cGVjdCh3cmFwcGVyLmZpbmQoXCJQb3BvdmVyXCIpLnByb3BzKCkudmlzaWJsZSkudG9FcXVhbCh0cnVlKVxuXG4gICAgYWN0KCgpID0+IHtcbiAgICAgIHdyYXBwZXIuZmluZChcIi5hZHVpLXRpbWUtaXRlbVwiKS5hdCgwKS5zaW11bGF0ZShcImNsaWNrXCIpXG4gICAgICBqZXN0LmFkdmFuY2VUaW1lcnNCeVRpbWUoNTApXG4gICAgICB3cmFwcGVyLnVwZGF0ZSgpXG4gICAgICBleHBlY3Qod3JhcHBlci5maW5kKFwiSW5wdXRcIikucHJvcHMoKS52YWx1ZSkudG9FcXVhbChcIjA4OjQwXCIpXG5cbiAgICAgIHdyYXBwZXIuZmluZChcIi5hZHVpLXRpbWUtaXRlbVwiKS5hdCg0Mikuc2ltdWxhdGUoXCJjbGlja1wiKVxuICAgICAgd3JhcHBlci51cGRhdGUoKVxuICAgICAgamVzdC5hZHZhbmNlVGltZXJzQnlUaW1lKDUwKVxuICAgICAgZXhwZWN0KHdyYXBwZXIuZmluZChcIklucHV0XCIpLnByb3BzKCkudmFsdWUpLnRvRXF1YWwoXCIwODo0MFwiKVxuXG4gICAgICB3cmFwcGVyLmZpbmQoXCJpbnB1dFwiKS5zaW11bGF0ZShcImNoYW5nZVwiLCB7IHRhcmdldDogeyB2YWx1ZTogXCIwNzo0MFwiIH0gfSlcbiAgICAgIHdyYXBwZXIuZmluZChcImlucHV0XCIpLnNpbXVsYXRlKFwiY2hhbmdlXCIsIHsgdGFyZ2V0OiB7IHZhbHVlOiBcIjA4OjRcIiB9IH0pXG4gICAgICB3cmFwcGVyLnVwZGF0ZSgpXG4gICAgICBleHBlY3Qod3JhcHBlci5maW5kKFwiSW5wdXRcIikucHJvcHMoKS52YWx1ZSkudG9FcXVhbChcIjA4OjQwXCIpXG4gICAgfSlcblxuICAgIC8vIGFjdCgoKSA9PiB7XG4gICAgLy8gICB3cmFwcGVyXG4gICAgLy8gICAgIC5maW5kKFwiLmFkdWktdGltZS1pdGVtXCIpXG4gICAgLy8gICAgIC5hdCgxKVxuICAgIC8vICAgICAuc2ltdWxhdGUoXCJjbGlja1wiKVxuICAgIC8vICAgd3JhcHBlci51cGRhdGUoKVxuICAgIC8vICAgamVzdC5hZHZhbmNlVGltZXJzQnlUaW1lKDM1MClcbiAgICAvLyAgIGV4cGVjdCh3cmFwcGVyLmZpbmQoXCJJbnB1dFwiKS5wcm9wcygpLnZhbHVlKS50b0VxdWFsKFwiMDk6MjBcIilcbiAgICAvLyAgIGRvbmUoKVxuICAgIC8vIH0pXG5cbiAgICAvLyBhY3QoKCkgPT4ge1xuICAgIC8vICAgd3JhcHBlclxuICAgIC8vICAgICAuZmluZChcIi5hZHVpLXRpbWUtaXRlbVwiKVxuICAgIC8vICAgICAuYXQoMSlcbiAgICAvLyAgICAgLnNpbXVsYXRlKFwiY2xpY2tcIilcbiAgICAvLyAgIHdyYXBwZXIudXBkYXRlKClcbiAgICAvLyAgIGV4cGVjdCh3cmFwcGVyLmZpbmQoXCJJbnB1dFwiKS5wcm9wcygpLnZhbHVlKS50b0VxdWFsKFwiMDk6MjBcIilcbiAgICAvLyB9KVxuXG4gICAgLy8gYWN0KCgpID0+IHtcbiAgICAvLyAgIHdyYXBwZXJcbiAgICAvLyAgICAgLmZpbmQoXCIuYWR1aS10aW1lLWl0ZW1cIilcbiAgICAvLyAgICAgLmF0KDApXG4gICAgLy8gICAgIC5zaW11bGF0ZShcImNsaWNrXCIpXG4gICAgLy8gICB3cmFwcGVyLnVwZGF0ZSgpXG4gICAgLy8gICBleHBlY3Qod3JhcHBlci5maW5kKFwiSW5wdXRcIikucHJvcHMoKS52YWx1ZSkudG9FcXVhbChcIjA4OjQwXCIpXG4gICAgLy8gfSlcbiAgfSlcblxuICBpdChcIuWGhemDqOmpseWKqFwiLCAoKSA9PiB7XG4gICAgY29uc3Qgd3JhcHBlciA9IG1vdW50KDxUaW1lUGlja2VyIGRlZmF1bHRWYWx1ZT1cIjA5OjIwXCIgLz4pXG4gICAgY29uc3QgaW5wdXQgPSB3cmFwcGVyLmZpbmQoXCJpbnB1dFwiKVxuICAgIGlucHV0LnNpbXVsYXRlKFwiZm9jdXNcIilcbiAgICBleHBlY3Qod3JhcHBlci5maW5kKFwiUG9wb3ZlclwiKS5wcm9wcygpLnZpc2libGUpLnRvRXF1YWwodHJ1ZSlcbiAgICB3cmFwcGVyLmZpbmQoXCIuYWR1aS10aW1lLWl0ZW1cIikuYXQoMCkuc2ltdWxhdGUoXCJjbGlja1wiKVxuICAgIGV4cGVjdCh3cmFwcGVyLmZpbmQoXCJJbnB1dFwiKS5wcm9wcygpLnZhbHVlKS50b0VxdWFsKFwiMDA6MjBcIilcbiAgfSlcblxuICBpdChcIuWklumDqOaOp+WItlwiLCAoKSA9PiB7XG4gICAgY29uc3Qgd3JhcHBlciA9IG1vdW50KDxUaW1lUGlja2VyIHZhbHVlPVwiMDk6MDBcIiBvbmx5SG91ciAvPilcbiAgICBjb25zdCBpbnB1dCA9IHdyYXBwZXIuZmluZChcImlucHV0XCIpXG4gICAgaW5wdXQuc2ltdWxhdGUoXCJmb2N1c1wiKVxuICAgIGV4cGVjdCh3cmFwcGVyLmZpbmQoXCJQb3BvdmVyXCIpLnByb3BzKCkudmlzaWJsZSkudG9FcXVhbCh0cnVlKVxuICAgIHdyYXBwZXIuZmluZChcIi5hZHVpLXRpbWUtaXRlbVwiKS5hdCgwKS5zaW11bGF0ZShcImNsaWNrXCIpXG4gICAgZXhwZWN0KHdyYXBwZXIuZmluZChcIklucHV0XCIpLnByb3BzKCkudmFsdWUpLnRvRXF1YWwoXCIwOTowMFwiKVxuICB9KVxuXG4gIGl0KFwi5rWL6K+V56aB55SoXCIsICgpID0+IHtcbiAgICBjb25zdCB3cmFwcGVyID0gbW91bnQoPFRpbWVQaWNrZXIgZGlzYWJsZWQgLz4pXG4gICAgY29uc3QgaW5wdXQgPSB3cmFwcGVyLmZpbmQoXCJpbnB1dFwiKVxuICAgIGlucHV0LnNpbXVsYXRlKFwiY2xpY2tcIilcbiAgICBleHBlY3Qod3JhcHBlci5maW5kKFwiUG9wb3ZlclwiKS5wcm9wcygpLnZpc2libGUpLnRvRXF1YWwoZmFsc2UpXG4gIH0pXG5cbiAgaXQoXCLmtYvor5XmnIDlpKfml7bpl7TlkozmnIDlsI/ml7bpl7RcIiwgKCkgPT4ge1xuICAgIGNvbnN0IHdyYXBwZXIgPSBtb3VudChcbiAgICAgIDxUaW1lUGlja2VyIG1pblRpbWU9XCIwOTowMFwiIG1heFRpbWU9XCIwOToyMFwiIGRlZmF1bHRWYWx1ZT1cIjA5OjEwXCIgLz5cbiAgICApXG4gICAgY29uc3QgaW5wdXQgPSB3cmFwcGVyLmZpbmQoXCJpbnB1dFwiKVxuICAgIGlucHV0LnNpbXVsYXRlKFwiY2hhbmdlXCIsIHsgdGFyZ2V0OiB7IHZhbHVlOiBcIjA5OjMwXCIgfSB9KVxuICAgIGlucHV0LnNpbXVsYXRlKFwiZm9jdXNcIilcbiAgICBleHBlY3Qod3JhcHBlci5maW5kKFwiUG9wb3ZlclwiKS5wcm9wcygpLnZpc2libGUpLnRvRXF1YWwodHJ1ZSlcbiAgfSlcbn0pXG4iXSwibWFwcGluZ3MiOiI7OztBQUNBLElBQUFBLEtBQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLGtCQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxVQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxPQUFBLEdBQUFKLE9BQUE7QUFFQSxJQUFBSyxDQUFBLEdBQUFILHNCQUFBLENBQUFGLE9BQUE7QUFBMkIsU0FBQUUsdUJBQUFJLENBQUEsV0FBQUEsQ0FBQSxJQUFBQSxDQUFBLENBQUFDLFVBQUEsR0FBQUQsQ0FBQSxnQkFBQUEsQ0FBQTtBQUFBLFNBQUFFLHlCQUFBRixDQUFBLDZCQUFBRyxPQUFBLG1CQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFELHdCQUFBLFlBQUFBLHlCQUFBRixDQUFBLFdBQUFBLENBQUEsR0FBQUssQ0FBQSxHQUFBRCxDQUFBLEtBQUFKLENBQUE7QUFBQSxTQUFBUCx3QkFBQU8sQ0FBQSxFQUFBSSxDQUFBLFNBQUFBLENBQUEsSUFBQUosQ0FBQSxJQUFBQSxDQUFBLENBQUFDLFVBQUEsU0FBQUQsQ0FBQSxlQUFBQSxDQUFBLGdCQUFBTSxPQUFBLENBQUFOLENBQUEsMEJBQUFBLENBQUEsc0JBQUFBLENBQUEsUUFBQUssQ0FBQSxHQUFBSCx3QkFBQSxDQUFBRSxDQUFBLE9BQUFDLENBQUEs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
;