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>
227 lines (226 loc) • 31 kB
JavaScript
"use strict";
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 _enzyme = require("enzyme");
var _reactTestRenderer = _interopRequireDefault(require("react-test-renderer"));
var _sinon = _interopRequireDefault(require("sinon"));
var _2 = _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; }
window.ResizeObserver = window.ResizeObserver || jest.fn().mockImplementation(function () {
return {
disconnect: jest.fn(),
observe: jest.fn(),
unobserve: jest.fn()
};
});
var dataSource = [{
one: "阿萨德",
two: "阿萨德阿萨德阿萨德阿萨德阿萨德阿萨德",
four: "阿萨德阿萨德阿萨德阿萨德阿萨德阿萨德阿萨德阿萨德阿萨德阿萨德阿萨德阿萨德阿萨德",
three: "阿萨德阿萨德阿萨德阿萨德阿萨德"
}, {
one: "阿萨德",
two: "阿萨德阿萨德阿萨德阿萨德阿萨德阿萨德",
four: "阿萨德阿萨德阿萨德阿萨德阿萨德阿萨德阿萨德阿萨德阿萨德阿萨德阿萨德阿萨德阿萨德",
three: "阿萨德阿萨德阿萨德阿萨德阿萨德"
}, {
one: "阿萨德",
two: "阿萨德阿萨德阿萨德阿萨德阿萨德阿萨德",
four: "阿萨德阿萨德阿萨德阿萨德阿萨德阿萨德阿萨德阿萨德阿萨德阿萨德阿萨德阿萨德阿萨德",
three: "阿萨德阿萨德阿萨德阿萨德阿萨德"
}, {
one: "阿萨德",
two: "阿萨德阿萨德阿萨德阿萨德阿萨德阿萨德",
four: "阿萨德阿萨德阿萨德阿萨德阿萨德阿萨德阿萨德阿萨德阿萨德阿萨德阿萨德阿萨德阿萨德",
three: "阿萨德阿萨德阿萨德阿萨德阿萨德"
}, {
one: "阿萨德",
two: "阿萨德阿萨德阿萨德阿萨德阿萨德阿萨德",
four: "阿萨德阿萨德阿萨德阿萨德阿萨德阿萨德阿萨德阿萨德阿萨德阿萨德阿萨德阿萨德阿萨德",
three: "阿萨德阿萨德阿萨德阿萨德阿萨德"
}];
describe("Table", function () {
beforeAll(function () {
Element.prototype.getBoundingClientRect = jest.fn(function () {
return {
width: 500,
height: 600,
top: 0,
left: 0,
bottom: 0,
right: 0,
x: 0,
y: 0,
toJSON: function toJSON() {}
};
});
});
it("headerAffixed 检测", function () {
var wrapper = (0, _enzyme.mount)(React.createElement(_2["default"], {
dataSource: dataSource,
headerAffixed: true
}, React.createElement(_2["default"].Column, {
dataIndex: "one",
title: "\u7B2C\u4E00\u9879",
popover: "\u8868\u5934\u63D0\u793A\u5185\u5BB9",
width: "100px",
fixed: "left"
}), React.createElement(_2["default"].Column, {
fixed: "right",
dataIndex: "two",
title: "\u7B2Cer\u9879",
width: 300
}), React.createElement(_2["default"].Column, {
dataIndex: "s",
title: "\u7B2Csi\u9879",
width: "10%",
align: "center",
render: function render() {
return "这些撒大声地";
}
}), React.createElement(_2["default"].Column, {
dataIndex: "three",
title: "\u7B2Csan\u9879"
}), React.createElement(_2["default"].Column, {
dataIndex: "four",
title: "\u7B2Csi\u9879",
width: 300,
align: "right"
})));
global.innerWidth = 500;
global.dispatchEvent(new Event("resize"));
global.dispatchEvent(new Event("scroll"));
wrapper.instance().handleMainTableScroll();
wrapper.instance().componentWillUnmount();
});
it("height 与 headerAffixed 不能同时使用 验证", function () {
var stub = _sinon["default"].stub(console, "error");
(0, _enzyme.mount)(React.createElement(_2["default"], {
dataSource: dataSource,
height: 500,
headerAffixed: true
}, React.createElement(_2["default"].Column, {
dataIndex: "one",
title: "\u534A\u89D2\u62EC\u53F7\u5916(\u534A\u89D2\u62EC\u53F7\u5185\u6D4B\u8BD5)",
popover: "\u8868\u5934\u63D0\u793A\u5185\u5BB9",
width: 100,
fixed: "left"
})));
expect(stub.calledOnce).toBe(true);
stub.restore();
});
it("height 检测", function () {
var wrapper = (0, _enzyme.mount)(React.createElement(_2["default"], {
dataSource: dataSource,
height: 200
}, React.createElement(_2["default"].Column, {
dataIndex: "one",
title: "\u7B2C\u4E00\u9879",
popover: "\u8868\u5934\u63D0\u793A\u5185\u5BB9",
width: 100,
fixed: "left"
}), React.createElement(_2["default"].Column, {
fixed: "right",
dataIndex: "two",
title: "\u7B2Cer\u9879",
width: 300
}), React.createElement(_2["default"].Column, {
dataIndex: "s",
title: "\u7B2Csi\u9879",
width: 300,
align: "center",
render: function render() {
return "这些撒大声地";
}
}), React.createElement(_2["default"].Column, {
dataIndex: "three",
title: "\u7B2Csan\u9879"
}), React.createElement(_2["default"].Column, {
dataIndex: "four",
title: "\u7B2Csi\u9879",
width: 300,
align: "right"
})));
global.innerWidth = 500;
global.innerHeight = 500;
global.dispatchEvent(new Event("resize"));
global.dispatchEvent(new Event("scroll"));
wrapper.instance().handleMainTableScroll();
});
it("Column width 在 fixed 时必须设置 验证", function () {
var stub = _sinon["default"].stub(console, "error");
(0, _enzyme.mount)(React.createElement(_2["default"], {
dataSource: dataSource
}, React.createElement(_2["default"].Column, {
dataIndex: "one",
title: "\u7B2C\u4E00\u9879",
fixed: "left"
})));
expect(stub.calledOnce).toBe(true);
stub.restore();
});
it("loading 快照", function () {
var wrapper = _reactTestRenderer["default"].create(React.createElement(_2["default"], {
loading: true,
dataSource: dataSource
}, React.createElement(_2["default"].Column, {
dataIndex: "one",
title: "\u7B2C\u4E00\u9879",
fixed: "left"
})));
expect(wrapper).toMatchSnapshot();
});
it("合并单元格快照", function () {
var wrapper = _reactTestRenderer["default"].create(React.createElement(_2["default"], {
dataSource: dataSource,
getCellProps: function getCellProps(_, __, rowIndex, colIndex) {
if (rowIndex === 0 && colIndex === 0) {
return {
rowSpan: 2,
colSpan: 2
};
}
if (rowIndex === 3 && colIndex === 2) {
return {
rowSpan: 2,
colSpan: 1
};
}
if (rowIndex === 3 && colIndex === 3) {
return {
rowSpan: 2,
colSpan: 1
};
}
if (rowIndex === 2 && colIndex === 0) {
return {
rowSpan: 1,
colSpan: 1
};
}
return {};
}
}, React.createElement(_2["default"].Column, {
dataIndex: "one",
title: "\u7B2C\u4E00\u9879",
fixed: true
}), React.createElement(_2["default"].Column, {
dataIndex: "two",
title: "\u7B2Cer\u9879",
fixed: true
}), React.createElement(_2["default"].Column, {
dataIndex: "three",
title: "\u7B2C3\u9879",
align: "center"
}), React.createElement(_2["default"].Column, {
dataIndex: "four",
title: "\u7B2C\u56DB\u9879",
align: "center",
fixed: "right"
})));
expect(wrapper).toMatchSnapshot();
});
});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwicmVxdWlyZSIsIl9lbnp5bWUiLCJfcmVhY3RUZXN0UmVuZGVyZXIiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX3Npbm9uIiwiXzIiLCJlIiwiX19lc01vZHVsZSIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsIldlYWtNYXAiLCJyIiwidCIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJ3aW5kb3ciLCJSZXNpemVPYnNlcnZlciIsImplc3QiLCJmbiIsIm1vY2tJbXBsZW1lbnRhdGlvbiIsImRpc2Nvbm5lY3QiLCJvYnNlcnZlIiwidW5vYnNlcnZlIiwiZGF0YVNvdXJjZSIsIm9uZSIsInR3byIsImZvdXIiLCJ0aHJlZSIsImRlc2NyaWJlIiwiYmVmb3JlQWxsIiwiRWxlbWVudCIsInByb3RvdHlwZSIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsIndpZHRoIiwiaGVpZ2h0IiwidG9wIiwibGVmdCIsImJvdHRvbSIsInJpZ2h0IiwieCIsInkiLCJ0b0pTT04iLCJpdCIsIndyYXBwZXIiLCJtb3VudCIsImNyZWF0ZUVsZW1lbnQiLCJoZWFkZXJBZmZpeGVkIiwiQ29sdW1uIiwiZGF0YUluZGV4IiwidGl0bGUiLCJwb3BvdmVyIiwiZml4ZWQiLCJhbGlnbiIsInJlbmRlciIsImdsb2JhbCIsImlubmVyV2lkdGgiLCJkaXNwYXRjaEV2ZW50IiwiRXZlbnQiLCJpbnN0YW5jZSIsImhhbmRsZU1haW5UYWJsZVNjcm9sbCIsImNvbXBvbmVudFdpbGxVbm1vdW50Iiwic3R1YiIsInNpbm9uIiwiY29uc29sZSIsImV4cGVjdCIsImNhbGxlZE9uY2UiLCJ0b0JlIiwicmVzdG9yZSIsImlubmVySGVpZ2h0IiwiVGVzdFJlbmRlcmVyIiwiY3JlYXRlIiwibG9hZGluZyIsInRvTWF0Y2hTbmFwc2hvdCIsImdldENlbGxQcm9wcyIsIl8iLCJfXyIsInJvd0luZGV4IiwiY29sSW5kZXgiLCJyb3dTcGFuIiwiY29sU3BhbiJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2NvbXBvbmVudHMvdGFibGUvX190ZXN0c19fL3Byb3BzLnRlc3QudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlICovXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IHsgbW91bnQgfSBmcm9tIFwiZW56eW1lXCJcbmltcG9ydCBUZXN0UmVuZGVyZXIgZnJvbSBcInJlYWN0LXRlc3QtcmVuZGVyZXJcIlxuaW1wb3J0IHNpbm9uIGZyb20gXCJzaW5vblwiXG5pbXBvcnQgVGFibGUgZnJvbSBcIi4uXCJcblxud2luZG93LlJlc2l6ZU9ic2VydmVyID1cbiAgd2luZG93LlJlc2l6ZU9ic2VydmVyIHx8XG4gIGplc3QuZm4oKS5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4gKHtcbiAgICBkaXNjb25uZWN0OiBqZXN0LmZuKCksXG4gICAgb2JzZXJ2ZTogamVzdC5mbigpLFxuICAgIHVub2JzZXJ2ZTogamVzdC5mbigpLFxuICB9KSlcblxuY29uc3QgZGF0YVNvdXJjZSA9IFtcbiAge1xuICAgIG9uZTogXCLpmL/okKjlvrdcIixcbiAgICB0d286IFwi6Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b63XCIsXG4gICAgZm91cjogXCLpmL/okKjlvrfpmL/okKjlvrfpmL/okKjlvrfpmL/okKjlvrfpmL/okKjlvrfpmL/okKjlvrfpmL/okKjlvrfpmL/okKjlvrfpmL/okKjlvrfpmL/okKjlvrfpmL/okKjlvrfpmL/okKjlvrfpmL/okKjlvrdcIixcbiAgICB0aHJlZTogXCLpmL/okKjlvrfpmL/okKjlvrfpmL/okKjlvrfpmL/okKjlvrfpmL/okKjlvrdcIixcbiAgfSxcbiAge1xuICAgIG9uZTogXCLpmL/okKjlvrdcIixcbiAgICB0d286IFwi6Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b63XCIsXG4gICAgZm91cjogXCLpmL/okKjlvrfpmL/okKjlvrfpmL/okKjlvrfpmL/okKjlvrfpmL/okKjlvrfpmL/okKjlvrfpmL/okKjlvrfpmL/okKjlvrfpmL/okKjlvrfpmL/okKjlvrfpmL/okKjlvrfpmL/okKjlvrfpmL/okKjlvrdcIixcbiAgICB0aHJlZTogXCLpmL/okKjlvrfpmL/okKjlvrfpmL/okKjlvrfpmL/okKjlvrfpmL/okKjlvrdcIixcbiAgfSxcbiAge1xuICAgIG9uZTogXCLpmL/okKjlvrdcIixcbiAgICB0d286IFwi6Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b63XCIsXG4gICAgZm91cjogXCLpmL/okKjlvrfpmL/okKjlvrfpmL/okKjlvrfpmL/okKjlvrfpmL/okKjlvrfpmL/okKjlvrfpmL/okKjlvrfpmL/okKjlvrfpmL/okKjlvrfpmL/okKjlvrfpmL/okKjlvrfpmL/okKjlvrfpmL/okKjlvrdcIixcbiAgICB0aHJlZTogXCLpmL/okKjlvrfpmL/okKjlvrfpmL/okKjlvrfpmL/okKjlvrfpmL/okKjlvrdcIixcbiAgfSxcbiAge1xuICAgIG9uZTogXCLpmL/okKjlvrdcIixcbiAgICB0d286IFwi6Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b63XCIsXG4gICAgZm91cjogXCLpmL/okKjlvrfpmL/okKjlvrfpmL/okKjlvrfpmL/okKjlvrfpmL/okKjlvrfpmL/okKjlvrfpmL/okKjlvrfpmL/okKjlvrfpmL/okKjlvrfpmL/okKjlvrfpmL/okKjlvrfpmL/okKjlvrfpmL/okKjlvrdcIixcbiAgICB0aHJlZTogXCLpmL/okKjlvrfpmL/okKjlvrfpmL/okKjlvrfpmL/okKjlvrfpmL/okKjlvrdcIixcbiAgfSxcbiAge1xuICAgIG9uZTogXCLpmL/okKjlvrdcIixcbiAgICB0d286IFwi6Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b63XCIsXG4gICAgZm91cjogXCLpmL/okKjlvrfpmL/okKjlvrfpmL/okKjlvrfpmL/okKjlvrfpmL/okKjlvrfpmL/okKjlvrfpmL/okKjlvrfpmL/okKjlvrfpmL/okKjlvrfpmL/okKjlvrfpmL/okKjlvrfpmL/okKjlvrfpmL/okKjlvrdcIixcbiAgICB0aHJlZTogXCLpmL/okKjlvrfpmL/okKjlvrfpmL/okKjlvrfpmL/okKjlvrfpmL/okKjlvrdcIixcbiAgfSxcbl1cblxuZXhwb3J0IGludGVyZmFjZSBJQmFzZU9iamVjdCB7XG4gIFtrZXk6IHN0cmluZ106IGFueVxufVxuXG5kZXNjcmliZShcIlRhYmxlXCIsICgpID0+IHtcbiAgYmVmb3JlQWxsKCgpID0+IHtcbiAgICAvKipcbiAgICAgKiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvNDAwMDY2NjNcbiAgICAgKiDpgJrov4cgbW9jayBgZ2V0Qm91bmRpbmdDbGllbnRSZWN0YO+8jOS5i+WQjui/kOihjOeahOaJgOaciSBgZ2V0Qm91bmRpbmdDbGllbnRSZWN0YCDpg73kvJrov5Tlm57ov5nlkIzkuIDkuKrlgLzjgIJcbiAgICAgKi9cbiAgICBFbGVtZW50LnByb3RvdHlwZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QgPSBqZXN0LmZuKCgpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHdpZHRoOiA1MDAsXG4gICAgICAgIGhlaWdodDogNjAwLFxuICAgICAgICB0b3A6IDAsXG4gICAgICAgIGxlZnQ6IDAsXG4gICAgICAgIGJvdHRvbTogMCxcbiAgICAgICAgcmlnaHQ6IDAsXG4gICAgICAgIHg6IDAsXG4gICAgICAgIHk6IDAsXG4gICAgICAgIHRvSlNPTjogKCkgPT4ge30sXG4gICAgICB9XG4gICAgfSlcbiAgfSlcblxuICBpdChcImhlYWRlckFmZml4ZWQg5qOA5rWLXCIsICgpID0+IHtcbiAgICBjb25zdCB3cmFwcGVyID0gbW91bnQoXG4gICAgICA8VGFibGUgZGF0YVNvdXJjZT17ZGF0YVNvdXJjZX0gaGVhZGVyQWZmaXhlZD5cbiAgICAgICAgPFRhYmxlLkNvbHVtblxuICAgICAgICAgIGRhdGFJbmRleD1cIm9uZVwiXG4gICAgICAgICAgdGl0bGU9XCLnrKzkuIDpoblcIlxuICAgICAgICAgIHBvcG92ZXI9XCLooajlpLTmj5DnpLrlhoXlrrlcIlxuICAgICAgICAgIHdpZHRoPVwiMTAwcHhcIlxuICAgICAgICAgIGZpeGVkPVwibGVmdFwiXG4gICAgICAgIC8+XG4gICAgICAgIDxUYWJsZS5Db2x1bW5cbiAgICAgICAgICBmaXhlZD1cInJpZ2h0XCJcbiAgICAgICAgICBkYXRhSW5kZXg9XCJ0d29cIlxuICAgICAgICAgIHRpdGxlPVwi56ysZXLpoblcIlxuICAgICAgICAgIHdpZHRoPXszMDB9XG4gICAgICAgIC8+XG4gICAgICAgIDxUYWJsZS5Db2x1bW5cbiAgICAgICAgICBkYXRhSW5kZXg9XCJzXCJcbiAgICAgICAgICB0aXRsZT1cIuesrHNp6aG5XCJcbiAgICAgICAgICB3aWR0aD1cIjEwJVwiXG4gICAgICAgICAgYWxpZ249XCJjZW50ZXJcIlxuICAgICAgICAgIHJlbmRlcj17KCkgPT4gXCLov5nkupvmkpLlpKflo7DlnLBcIn1cbiAgICAgICAgLz5cbiAgICAgICAgPFRhYmxlLkNvbHVtbiBkYXRhSW5kZXg9XCJ0aHJlZVwiIHRpdGxlPVwi56ysc2Fu6aG5XCIgLz5cbiAgICAgICAgPFRhYmxlLkNvbHVtblxuICAgICAgICAgIGRhdGFJbmRleD1cImZvdXJcIlxuICAgICAgICAgIHRpdGxlPVwi56ysc2npoblcIlxuICAgICAgICAgIHdpZHRoPXszMDB9XG4gICAgICAgICAgYWxpZ249XCJyaWdodFwiXG4gICAgICAgIC8+XG4gICAgICA8L1RhYmxlPlxuICAgIClcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgZ2xvYmFsLmlubmVyV2lkdGggPSA1MDBcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgZ2xvYmFsLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KFwicmVzaXplXCIpKVxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBnbG9iYWwuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoXCJzY3JvbGxcIikpXG4gICAgd3JhcHBlci5pbnN0YW5jZSgpLmhhbmRsZU1haW5UYWJsZVNjcm9sbCgpXG4gICAgd3JhcHBlci5pbnN0YW5jZSgpLmNvbXBvbmVudFdpbGxVbm1vdW50KClcbiAgfSlcblxuICAvLyBpdChcImhlaWdodCBwcm9wIOmqjOivgVwiLCAoKSA9PiB7XG4gIC8vICAgY29uc3Qgc3R1YiA9IHNpbm9uLnN0dWIoY29uc29sZSwgJ2Vycm9yJylcbiAgLy8gICBjb25zdCB3cmFwcGVyID0gbW91bnQoXG4gIC8vICAgICA8VGFibGVcbiAgLy8gICAgICAgZGF0YVNvdXJjZT17ZGF0YVNvdXJjZX1cbiAgLy8gICAgICAgaGVpZ2h0PVwiNTAwcHhcIlxuICAvLyAgICAgPlxuICAvLyAgICAgICA8VGFibGUuQ29sdW1uXG4gIC8vICAgICAgICAgZGF0YUluZGV4PVwib25lXCJcbiAgLy8gICAgICAgICB0aXRsZT1cIuesrOS4gOmhuVwiXG4gIC8vICAgICAgICAgcG9wb3Zlcj1cIuihqOWktOaPkOekuuWGheWuuVwiXG4gIC8vICAgICAgICAgd2lkdGg9ezEwMH1cbiAgLy8gICAgICAgICBmaXhlZD1cImxlZnRcIlxuICAvLyAgICAgICAvPlxuICAvLyAgICAgPC9UYWJsZT5cbiAgLy8gICApXG4gIC8vICAgZXhwZWN0KHN0dWIuY2FsbGVkT25jZSkudG9CZSh0cnVlKVxuICAvLyAgIHN0dWIucmVzdG9yZSgpXG4gIC8vIH0pXG5cbiAgaXQoXCJoZWlnaHQg5LiOIGhlYWRlckFmZml4ZWQg5LiN6IO95ZCM5pe25L2/55SoIOmqjOivgVwiLCAoKSA9PiB7XG4gICAgY29uc3Qgc3R1YiA9IHNpbm9uLnN0dWIoY29uc29sZSwgXCJlcnJvclwiKVxuICAgIG1vdW50KFxuICAgICAgPFRhYmxlIGRhdGFTb3VyY2U9e2RhdGFTb3VyY2V9IGhlaWdodD17NTAwfSBoZWFkZXJBZmZpeGVkPlxuICAgICAgICA8VGFibGUuQ29sdW1uXG4gICAgICAgICAgZGF0YUluZGV4PVwib25lXCJcbiAgICAgICAgICB0aXRsZT1cIuWNiuinkuaLrOWPt+WklijljYrop5Lmi6zlj7flhoXmtYvor5UpXCJcbiAgICAgICAgICBwb3BvdmVyPVwi6KGo5aS05o+Q56S65YaF5a65XCJcbiAgICAgICAgICB3aWR0aD17MTAwfVxuICAgICAgICAgIGZpeGVkPVwibGVmdFwiXG4gICAgICAgIC8+XG4gICAgICA8L1RhYmxlPlxuICAgIClcbiAgICBleHBlY3Qoc3R1Yi5jYWxsZWRPbmNlKS50b0JlKHRydWUpXG4gICAgc3R1Yi5yZXN0b3JlKClcbiAgfSlcblxuICBpdChcImhlaWdodCDmo4DmtYtcIiwgKCkgPT4ge1xuICAgIGNvbnN0IHdyYXBwZXIgPSBtb3VudChcbiAgICAgIDxUYWJsZSBkYXRhU291cmNlPXtkYXRhU291cmNlfSBoZWlnaHQ9ezIwMH0+XG4gICAgICAgIDxUYWJsZS5Db2x1bW5cbiAgICAgICAgICBkYXRhSW5kZXg9XCJvbmVcIlxuICAgICAgICAgIHRpdGxlPVwi56ys5LiA6aG5XCJcbiAgICAgICAgICBwb3BvdmVyPVwi6KGo5aS05o+Q56S65YaF5a65XCJcbiAgICAgICAgICB3aWR0aD17MTAwfVxuICAgICAgICAgIGZpeGVkPVwibGVmdFwiXG4gICAgICAgIC8+XG4gICAgICAgIDxUYWJsZS5Db2x1bW5cbiAgICAgICAgICBmaXhlZD1cInJpZ2h0XCJcbiAgICAgICAgICBkYXRhSW5kZXg9XCJ0d29cIlxuICAgICAgICAgIHRpdGxlPVwi56ysZXLpoblcIlxuICAgICAgICAgIHdpZHRoPXszMDB9XG4gICAgICAgIC8+XG4gICAgICAgIDxUYWJsZS5Db2x1bW5cbiAgICAgICAgICBkYXRhSW5kZXg9XCJzXCJcbiAgICAgICAgICB0aXRsZT1cIuesrHNp6aG5XCJcbiAgICAgICAgICB3aWR0aD17MzAwfVxuICAgICAgICAgIGFsaWduPVwiY2VudGVyXCJcbiAgICAgICAgICByZW5kZXI9eygpID0+IFwi6L+Z5Lqb5pKS5aSn5aOw5ZywXCJ9XG4gICAgICAgIC8+XG4gICAgICAgIDxUYWJsZS5Db2x1bW4gZGF0YUluZGV4PVwidGhyZWVcIiB0aXRsZT1cIuesrHNhbumhuVwiIC8+XG4gICAgICAgIDxUYWJsZS5Db2x1bW5cbiAgICAgICAgICBkYXRhSW5kZXg9XCJmb3VyXCJcbiAgICAgICAgICB0aXRsZT1cIuesrHNp6aG5XCJcbiAgICAgICAgICB3aWR0aD17MzAwfVxuICAgICAgICAgIGFsaWduPVwicmlnaHRcIlxuICAgICAgICAvPlxuICAgICAgPC9UYWJsZT5cbiAgICApXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGdsb2JhbC5pbm5lcldpZHRoID0gNTAwXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGdsb2JhbC5pbm5lckhlaWdodCA9IDUwMFxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBnbG9iYWwuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoXCJyZXNpemVcIikpXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGdsb2JhbC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudChcInNjcm9sbFwiKSlcbiAgICB3cmFwcGVyLmluc3RhbmNlKCkuaGFuZGxlTWFpblRhYmxlU2Nyb2xsKClcbiAgfSlcblxuICAvLyBpdChcIkNvbHVtbiB3aWR0aCBwcm9wIOmqjOivgVwiLCAoKSA9PiB7XG4gIC8vICAgY29uc3Qgc3R1YiA9IHNpbm9uLnN0dWIoY29uc29sZSwgJ2Vycm9yJylcbiAgLy8gICBjb25zdCB3cmFwcGVyID0gbW91bnQoXG4gIC8vICAgICA8VGFibGVcbiAgLy8gICAgICAgZGF0YVNvdXJjZT17ZGF0YVNvdXJjZX1cbiAgLy8gICAgID5cbiAgLy8gICAgICAgPFRhYmxlLkNvbHVtblxuICAvLyAgICAgICAgIGRhdGFJbmRleD1cIm9uZVwiXG4gIC8vICAgICAgICAgdGl0bGU9XCLnrKzkuIDpoblcIlxuICAvLyAgICAgICAgIHdpZHRoPXtbXX1cbiAgLy8gICAgICAgLz5cbiAgLy8gICAgIDwvVGFibGU+XG4gIC8vICAgKVxuICAvLyAgIGV4cGVjdChzdHViLmNhbGxlZE9uY2UpLnRvQmUodHJ1ZSlcbiAgLy8gICBzdHViLnJlc3RvcmUoKVxuICAvLyB9KVxuXG4gIGl0KFwiQ29sdW1uIHdpZHRoIOWcqCBmaXhlZCDml7blv4Xpobvorr7nva4g6aqM6K+BXCIsICgpID0+IHtcbiAgICBjb25zdCBzdHViID0gc2lub24uc3R1Yihjb25zb2xlLCBcImVycm9yXCIpXG4gICAgbW91bnQoXG4gICAgICA8VGFibGUgZGF0YVNvdXJjZT17ZGF0YVNvdXJjZX0+XG4gICAgICAgIDxUYWJsZS5Db2x1bW4gZGF0YUluZGV4PVwib25lXCIgdGl0bGU9XCLnrKzkuIDpoblcIiBmaXhlZD1cImxlZnRcIiAvPlxuICAgICAgPC9UYWJsZT5cbiAgICApXG4gICAgZXhwZWN0KHN0dWIuY2FsbGVkT25jZSkudG9CZSh0cnVlKVxuICAgIHN0dWIucmVzdG9yZSgpXG4gIH0pXG5cbiAgaXQoXCJsb2FkaW5nIOW/q+eFp1wiLCAoKSA9PiB7XG4gICAgY29uc3Qgd3JhcHBlciA9IFRlc3RSZW5kZXJlci5jcmVhdGUoXG4gICAgICA8VGFibGUgbG9hZGluZyBkYXRhU291cmNlPXtkYXRhU291cmNlfT5cbiAgICAgICAgPFRhYmxlLkNvbHVtbiBkYXRhSW5kZXg9XCJvbmVcIiB0aXRsZT1cIuesrOS4gOmhuVwiIGZpeGVkPVwibGVmdFwiIC8+XG4gICAgICA8L1RhYmxlPlxuICAgIClcbiAgICBleHBlY3Qod3JhcHBlcikudG9NYXRjaFNuYXBzaG90KClcbiAgfSlcblxuICBpdChcIuWQiOW5tuWNleWFg+agvOW/q+eFp1wiLCAoKSA9PiB7XG4gICAgY29uc3Qgd3JhcHBlciA9IFRlc3RSZW5kZXJlci5jcmVhdGUoXG4gICAgICA8VGFibGVcbiAgICAgICAgZGF0YVNvdXJjZT17ZGF0YVNvdXJjZX1cbiAgICAgICAgZ2V0Q2VsbFByb3BzPXsoXywgX18sIHJvd0luZGV4LCBjb2xJbmRleCkgPT4ge1xuICAgICAgICAgIGlmIChyb3dJbmRleCA9PT0gMCAmJiBjb2xJbmRleCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgcm93U3BhbjogMixcbiAgICAgICAgICAgICAgY29sU3BhbjogMixcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHJvd0luZGV4ID09PSAzICYmIGNvbEluZGV4ID09PSAyKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICByb3dTcGFuOiAyLFxuICAgICAgICAgICAgICBjb2xTcGFuOiAxLFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAocm93SW5kZXggPT09IDMgJiYgY29sSW5kZXggPT09IDMpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIHJvd1NwYW46IDIsXG4gICAgICAgICAgICAgIGNvbFNwYW46IDEsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChyb3dJbmRleCA9PT0gMiAmJiBjb2xJbmRleCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgcm93U3BhbjogMSxcbiAgICAgICAgICAgICAgY29sU3BhbjogMSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHt9XG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIDxUYWJsZS5Db2x1bW4gZGF0YUluZGV4PVwib25lXCIgdGl0bGU9XCLnrKzkuIDpoblcIiBmaXhlZCAvPlxuICAgICAgICA8VGFibGUuQ29sdW1uIGRhdGFJbmRleD1cInR3b1wiIHRpdGxlPVwi56ysZXLpoblcIiBmaXhlZCAvPlxuICAgICAgICA8VGFibGUuQ29sdW1uIGRhdGFJbmRleD1cInRocmVlXCIgdGl0bGU9XCLnrKwz6aG5XCIgYWxpZ249XCJjZW50ZXJcIiAvPlxuICAgICAgICA8VGFibGUuQ29sdW1uXG4gICAgICAgICAgZGF0YUluZGV4PVwiZm91clwiXG4gICAgICAgICAgdGl0bGU9XCLnrKzlm5vpoblcIlxuICAgICAgICAgIGFsaWduPVwiY2VudGVyXCJcbiAgICAgICAgICBmaXhlZD1cInJpZ2h0XCJcbiAgICAgICAgLz5cbiAgICAgIDwvVGFibGU+XG4gICAgKVxuICAgIGV4cGVjdCh3cmFwcGVyKS50b01hdGNoU25hcHNob3QoKVxuICB9KVxufSlcbiJdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsSUFBQUEsS0FBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsa0JBQUEsR0FBQUMsc0JBQUEsQ0FBQUgsT0FBQTtBQUNBLElBQUFJLE1BQUEsR0FBQUQsc0JBQUEsQ0FBQUgsT0FBQTtBQUNBLElBQUFLLEVBQUEsR0FBQUYsc0JBQUEsQ0FBQUgsT0FBQTtBQUFzQixTQUFBRyx1QkFBQUcsQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLGdCQUFBQSxDQUFBO0FBQUEsU0FBQUUseUJBQUFGLENBQUEsNkJBQUFHLE9BQUEsbUJBQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUQsd0JBQUEsWUFBQUEseUJBQUFGLENBQUEsV0FBQUEsQ0FBQSxHQUFBSyxDQUFBLEdBQUFELENBQUEsS0FBQUosQ0FBQTtBQUFBLFNBQUFQLHdCQUFBTyxDQUFBLEVBQUFJLENBQUEsU0FBQUEsQ0FBQSxJQUFBSixDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxTQUFBRCxDQUFBLGVBQUFBLENBQUEsZ0JBQUFNLE9BQUEsQ0FBQU4sQ0FBQSwwQkFBQUEsQ0FBQSxzQkFBQUEsQ0FBQSxRQUFBSyxDQUFBLEdBQUFILHdCQUFBLENBQUFFLENB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