UNPKG

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>

221 lines 27.4 kB
import * as React from "react"; import { mount } from "enzyme"; import TestRenderer from "react-test-renderer"; import sinon from "sinon"; import Table from ".."; 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 = mount(React.createElement(Table, { dataSource: dataSource, headerAffixed: true }, React.createElement(Table.Column, { dataIndex: "one", title: "\u7B2C\u4E00\u9879", popover: "\u8868\u5934\u63D0\u793A\u5185\u5BB9", width: "100px", fixed: "left" }), React.createElement(Table.Column, { fixed: "right", dataIndex: "two", title: "\u7B2Cer\u9879", width: 300 }), React.createElement(Table.Column, { dataIndex: "s", title: "\u7B2Csi\u9879", width: "10%", align: "center", render: function render() { return "这些撒大声地"; } }), React.createElement(Table.Column, { dataIndex: "three", title: "\u7B2Csan\u9879" }), React.createElement(Table.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.stub(console, "error"); mount(React.createElement(Table, { dataSource: dataSource, height: 500, headerAffixed: true }, React.createElement(Table.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 = mount(React.createElement(Table, { dataSource: dataSource, height: 200 }, React.createElement(Table.Column, { dataIndex: "one", title: "\u7B2C\u4E00\u9879", popover: "\u8868\u5934\u63D0\u793A\u5185\u5BB9", width: 100, fixed: "left" }), React.createElement(Table.Column, { fixed: "right", dataIndex: "two", title: "\u7B2Cer\u9879", width: 300 }), React.createElement(Table.Column, { dataIndex: "s", title: "\u7B2Csi\u9879", width: 300, align: "center", render: function render() { return "这些撒大声地"; } }), React.createElement(Table.Column, { dataIndex: "three", title: "\u7B2Csan\u9879" }), React.createElement(Table.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.stub(console, "error"); mount(React.createElement(Table, { dataSource: dataSource }, React.createElement(Table.Column, { dataIndex: "one", title: "\u7B2C\u4E00\u9879", fixed: "left" }))); expect(stub.calledOnce).toBe(true); stub.restore(); }); it("loading 快照", function () { var wrapper = TestRenderer.create(React.createElement(Table, { loading: true, dataSource: dataSource }, React.createElement(Table.Column, { dataIndex: "one", title: "\u7B2C\u4E00\u9879", fixed: "left" }))); expect(wrapper).toMatchSnapshot(); }); it("合并单元格快照", function () { var wrapper = TestRenderer.create(React.createElement(Table, { 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(Table.Column, { dataIndex: "one", title: "\u7B2C\u4E00\u9879", fixed: true }), React.createElement(Table.Column, { dataIndex: "two", title: "\u7B2Cer\u9879", fixed: true }), React.createElement(Table.Column, { dataIndex: "three", title: "\u7B2C3\u9879", align: "center" }), React.createElement(Table.Column, { dataIndex: "four", title: "\u7B2C\u56DB\u9879", align: "center", fixed: "right" }))); expect(wrapper).toMatchSnapshot(); }); }); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIm1vdW50IiwiVGVzdFJlbmRlcmVyIiwic2lub24iLCJUYWJsZSIsIndpbmRvdyIsIlJlc2l6ZU9ic2VydmVyIiwiamVzdCIsImZuIiwibW9ja0ltcGxlbWVudGF0aW9uIiwiZGlzY29ubmVjdCIsIm9ic2VydmUiLCJ1bm9ic2VydmUiLCJkYXRhU291cmNlIiwib25lIiwidHdvIiwiZm91ciIsInRocmVlIiwiZGVzY3JpYmUiLCJiZWZvcmVBbGwiLCJFbGVtZW50IiwicHJvdG90eXBlIiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0Iiwid2lkdGgiLCJoZWlnaHQiLCJ0b3AiLCJsZWZ0IiwiYm90dG9tIiwicmlnaHQiLCJ4IiwieSIsInRvSlNPTiIsIml0Iiwid3JhcHBlciIsImNyZWF0ZUVsZW1lbnQiLCJoZWFkZXJBZmZpeGVkIiwiQ29sdW1uIiwiZGF0YUluZGV4IiwidGl0bGUiLCJwb3BvdmVyIiwiZml4ZWQiLCJhbGlnbiIsInJlbmRlciIsImdsb2JhbCIsImlubmVyV2lkdGgiLCJkaXNwYXRjaEV2ZW50IiwiRXZlbnQiLCJpbnN0YW5jZSIsImhhbmRsZU1haW5UYWJsZVNjcm9sbCIsImNvbXBvbmVudFdpbGxVbm1vdW50Iiwic3R1YiIsImNvbnNvbGUiLCJleHBlY3QiLCJjYWxsZWRPbmNlIiwidG9CZSIsInJlc3RvcmUiLCJpbm5lckhlaWdodCIsImNyZWF0ZSIsImxvYWRpbmciLCJ0b01hdGNoU25hcHNob3QiLCJnZXRDZWxsUHJvcHMiLCJfIiwiX18iLCJyb3dJbmRleCIsImNvbEluZGV4Iiwicm93U3BhbiIsImNvbFNwYW4iXSwic291cmNlcyI6WyIuLi8uLi8uLi9jb21wb25lbnRzL3RhYmxlL19fdGVzdHNfXy9wcm9wcy50ZXN0LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSAqL1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCJcbmltcG9ydCB7IG1vdW50IH0gZnJvbSBcImVuenltZVwiXG5pbXBvcnQgVGVzdFJlbmRlcmVyIGZyb20gXCJyZWFjdC10ZXN0LXJlbmRlcmVyXCJcbmltcG9ydCBzaW5vbiBmcm9tIFwic2lub25cIlxuaW1wb3J0IFRhYmxlIGZyb20gXCIuLlwiXG5cbndpbmRvdy5SZXNpemVPYnNlcnZlciA9XG4gIHdpbmRvdy5SZXNpemVPYnNlcnZlciB8fFxuICBqZXN0LmZuKCkubW9ja0ltcGxlbWVudGF0aW9uKCgpID0+ICh7XG4gICAgZGlzY29ubmVjdDogamVzdC5mbigpLFxuICAgIG9ic2VydmU6IGplc3QuZm4oKSxcbiAgICB1bm9ic2VydmU6IGplc3QuZm4oKSxcbiAgfSkpXG5cbmNvbnN0IGRhdGFTb3VyY2UgPSBbXG4gIHtcbiAgICBvbmU6IFwi6Zi/6JCo5b63XCIsXG4gICAgdHdvOiBcIumYv+iQqOW+t+mYv+iQqOW+t+mYv+iQqOW+t+mYv+iQqOW+t+mYv+iQqOW+t+mYv+iQqOW+t1wiLFxuICAgIGZvdXI6IFwi6Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b63XCIsXG4gICAgdGhyZWU6IFwi6Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b63XCIsXG4gIH0sXG4gIHtcbiAgICBvbmU6IFwi6Zi/6JCo5b63XCIsXG4gICAgdHdvOiBcIumYv+iQqOW+t+mYv+iQqOW+t+mYv+iQqOW+t+mYv+iQqOW+t+mYv+iQqOW+t+mYv+iQqOW+t1wiLFxuICAgIGZvdXI6IFwi6Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b63XCIsXG4gICAgdGhyZWU6IFwi6Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b63XCIsXG4gIH0sXG4gIHtcbiAgICBvbmU6IFwi6Zi/6JCo5b63XCIsXG4gICAgdHdvOiBcIumYv+iQqOW+t+mYv+iQqOW+t+mYv+iQqOW+t+mYv+iQqOW+t+mYv+iQqOW+t+mYv+iQqOW+t1wiLFxuICAgIGZvdXI6IFwi6Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b63XCIsXG4gICAgdGhyZWU6IFwi6Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b63XCIsXG4gIH0sXG4gIHtcbiAgICBvbmU6IFwi6Zi/6JCo5b63XCIsXG4gICAgdHdvOiBcIumYv+iQqOW+t+mYv+iQqOW+t+mYv+iQqOW+t+mYv+iQqOW+t+mYv+iQqOW+t+mYv+iQqOW+t1wiLFxuICAgIGZvdXI6IFwi6Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b63XCIsXG4gICAgdGhyZWU6IFwi6Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b63XCIsXG4gIH0sXG4gIHtcbiAgICBvbmU6IFwi6Zi/6JCo5b63XCIsXG4gICAgdHdvOiBcIumYv+iQqOW+t+mYv+iQqOW+t+mYv+iQqOW+t+mYv+iQqOW+t+mYv+iQqOW+t+mYv+iQqOW+t1wiLFxuICAgIGZvdXI6IFwi6Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b63XCIsXG4gICAgdGhyZWU6IFwi6Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b636Zi/6JCo5b63XCIsXG4gIH0sXG5dXG5cbmV4cG9ydCBpbnRlcmZhY2UgSUJhc2VPYmplY3Qge1xuICBba2V5OiBzdHJpbmddOiBhbnlcbn1cblxuZGVzY3JpYmUoXCJUYWJsZVwiLCAoKSA9PiB7XG4gIGJlZm9yZUFsbCgoKSA9PiB7XG4gICAgLyoqXG4gICAgICogaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzQwMDA2NjYzXG4gICAgICog6YCa6L+HIG1vY2sgYGdldEJvdW5kaW5nQ2xpZW50UmVjdGDvvIzkuYvlkI7ov5DooYznmoTmiYDmnIkgYGdldEJvdW5kaW5nQ2xpZW50UmVjdGAg6YO95Lya6L+U5Zue6L+Z5ZCM5LiA5Liq5YC844CCXG4gICAgICovXG4gICAgRWxlbWVudC5wcm90b3R5cGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0ID0gamVzdC5mbigoKSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB3aWR0aDogNTAwLFxuICAgICAgICBoZWlnaHQ6IDYwMCxcbiAgICAgICAgdG9wOiAwLFxuICAgICAgICBsZWZ0OiAwLFxuICAgICAgICBib3R0b206IDAsXG4gICAgICAgIHJpZ2h0OiAwLFxuICAgICAgICB4OiAwLFxuICAgICAgICB5OiAwLFxuICAgICAgICB0b0pTT046ICgpID0+IHt9LFxuICAgICAgfVxuICAgIH0pXG4gIH0pXG5cbiAgaXQoXCJoZWFkZXJBZmZpeGVkIOajgOa1i1wiLCAoKSA9PiB7XG4gICAgY29uc3Qgd3JhcHBlciA9IG1vdW50KFxuICAgICAgPFRhYmxlIGRhdGFTb3VyY2U9e2RhdGFTb3VyY2V9IGhlYWRlckFmZml4ZWQ+XG4gICAgICAgIDxUYWJsZS5Db2x1bW5cbiAgICAgICAgICBkYXRhSW5kZXg9XCJvbmVcIlxuICAgICAgICAgIHRpdGxlPVwi56ys5LiA6aG5XCJcbiAgICAgICAgICBwb3BvdmVyPVwi6KGo5aS05o+Q56S65YaF5a65XCJcbiAgICAgICAgICB3aWR0aD1cIjEwMHB4XCJcbiAgICAgICAgICBmaXhlZD1cImxlZnRcIlxuICAgICAgICAvPlxuICAgICAgICA8VGFibGUuQ29sdW1uXG4gICAgICAgICAgZml4ZWQ9XCJyaWdodFwiXG4gICAgICAgICAgZGF0YUluZGV4PVwidHdvXCJcbiAgICAgICAgICB0aXRsZT1cIuesrGVy6aG5XCJcbiAgICAgICAgICB3aWR0aD17MzAwfVxuICAgICAgICAvPlxuICAgICAgICA8VGFibGUuQ29sdW1uXG4gICAgICAgICAgZGF0YUluZGV4PVwic1wiXG4gICAgICAgICAgdGl0bGU9XCLnrKxzaemhuVwiXG4gICAgICAgICAgd2lkdGg9XCIxMCVcIlxuICAgICAgICAgIGFsaWduPVwiY2VudGVyXCJcbiAgICAgICAgICByZW5kZXI9eygpID0+IFwi6L+Z5Lqb5pKS5aSn5aOw5ZywXCJ9XG4gICAgICAgIC8+XG4gICAgICAgIDxUYWJsZS5Db2x1bW4gZGF0YUluZGV4PVwidGhyZWVcIiB0aXRsZT1cIuesrHNhbumhuVwiIC8+XG4gICAgICAgIDxUYWJsZS5Db2x1bW5cbiAgICAgICAgICBkYXRhSW5kZXg9XCJmb3VyXCJcbiAgICAgICAgICB0aXRsZT1cIuesrHNp6aG5XCJcbiAgICAgICAgICB3aWR0aD17MzAwfVxuICAgICAgICAgIGFsaWduPVwicmlnaHRcIlxuICAgICAgICAvPlxuICAgICAgPC9UYWJsZT5cbiAgICApXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGdsb2JhbC5pbm5lcldpZHRoID0gNTAwXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGdsb2JhbC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudChcInJlc2l6ZVwiKSlcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgZ2xvYmFsLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KFwic2Nyb2xsXCIpKVxuICAgIHdyYXBwZXIuaW5zdGFuY2UoKS5oYW5kbGVNYWluVGFibGVTY3JvbGwoKVxuICAgIHdyYXBwZXIuaW5zdGFuY2UoKS5jb21wb25lbnRXaWxsVW5tb3VudCgpXG4gIH0pXG5cbiAgLy8gaXQoXCJoZWlnaHQgcHJvcCDpqozor4FcIiwgKCkgPT4ge1xuICAvLyAgIGNvbnN0IHN0dWIgPSBzaW5vbi5zdHViKGNvbnNvbGUsICdlcnJvcicpXG4gIC8vICAgY29uc3Qgd3JhcHBlciA9IG1vdW50KFxuICAvLyAgICAgPFRhYmxlXG4gIC8vICAgICAgIGRhdGFTb3VyY2U9e2RhdGFTb3VyY2V9XG4gIC8vICAgICAgIGhlaWdodD1cIjUwMHB4XCJcbiAgLy8gICAgID5cbiAgLy8gICAgICAgPFRhYmxlLkNvbHVtblxuICAvLyAgICAgICAgIGRhdGFJbmRleD1cIm9uZVwiXG4gIC8vICAgICAgICAgdGl0bGU9XCLnrKzkuIDpoblcIlxuICAvLyAgICAgICAgIHBvcG92ZXI9XCLooajlpLTmj5DnpLrlhoXlrrlcIlxuICAvLyAgICAgICAgIHdpZHRoPXsxMDB9XG4gIC8vICAgICAgICAgZml4ZWQ9XCJsZWZ0XCJcbiAgLy8gICAgICAgLz5cbiAgLy8gICAgIDwvVGFibGU+XG4gIC8vICAgKVxuICAvLyAgIGV4cGVjdChzdHViLmNhbGxlZE9uY2UpLnRvQmUodHJ1ZSlcbiAgLy8gICBzdHViLnJlc3RvcmUoKVxuICAvLyB9KVxuXG4gIGl0KFwiaGVpZ2h0IOS4jiBoZWFkZXJBZmZpeGVkIOS4jeiDveWQjOaXtuS9v+eUqCDpqozor4FcIiwgKCkgPT4ge1xuICAgIGNvbnN0IHN0dWIgPSBzaW5vbi5zdHViKGNvbnNvbGUsIFwiZXJyb3JcIilcbiAgICBtb3VudChcbiAgICAgIDxUYWJsZSBkYXRhU291cmNlPXtkYXRhU291cmNlfSBoZWlnaHQ9ezUwMH0gaGVhZGVyQWZmaXhlZD5cbiAgICAgICAgPFRhYmxlLkNvbHVtblxuICAgICAgICAgIGRhdGFJbmRleD1cIm9uZVwiXG4gICAgICAgICAgdGl0bGU9XCLljYrop5Lmi6zlj7flpJYo5Y2K6KeS5ous5Y+35YaF5rWL6K+VKVwiXG4gICAgICAgICAgcG9wb3Zlcj1cIuihqOWktOaPkOekuuWGheWuuVwiXG4gICAgICAgICAgd2lkdGg9ezEwMH1cbiAgICAgICAgICBmaXhlZD1cImxlZnRcIlxuICAgICAgICAvPlxuICAgICAgPC9UYWJsZT5cbiAgICApXG4gICAgZXhwZWN0KHN0dWIuY2FsbGVkT25jZSkudG9CZSh0cnVlKVxuICAgIHN0dWIucmVzdG9yZSgpXG4gIH0pXG5cbiAgaXQoXCJoZWlnaHQg5qOA5rWLXCIsICgpID0+IHtcbiAgICBjb25zdCB3cmFwcGVyID0gbW91bnQoXG4gICAgICA8VGFibGUgZGF0YVNvdXJjZT17ZGF0YVNvdXJjZX0gaGVpZ2h0PXsyMDB9PlxuICAgICAgICA8VGFibGUuQ29sdW1uXG4gICAgICAgICAgZGF0YUluZGV4PVwib25lXCJcbiAgICAgICAgICB0aXRsZT1cIuesrOS4gOmhuVwiXG4gICAgICAgICAgcG9wb3Zlcj1cIuihqOWktOaPkOekuuWGheWuuVwiXG4gICAgICAgICAgd2lkdGg9ezEwMH1cbiAgICAgICAgICBmaXhlZD1cImxlZnRcIlxuICAgICAgICAvPlxuICAgICAgICA8VGFibGUuQ29sdW1uXG4gICAgICAgICAgZml4ZWQ9XCJyaWdodFwiXG4gICAgICAgICAgZGF0YUluZGV4PVwidHdvXCJcbiAgICAgICAgICB0aXRsZT1cIuesrGVy6aG5XCJcbiAgICAgICAgICB3aWR0aD17MzAwfVxuICAgICAgICAvPlxuICAgICAgICA8VGFibGUuQ29sdW1uXG4gICAgICAgICAgZGF0YUluZGV4PVwic1wiXG4gICAgICAgICAgdGl0bGU9XCLnrKxzaemhuVwiXG4gICAgICAgICAgd2lkdGg9ezMwMH1cbiAgICAgICAgICBhbGlnbj1cImNlbnRlclwiXG4gICAgICAgICAgcmVuZGVyPXsoKSA9PiBcIui/meS6m+aSkuWkp+WjsOWcsFwifVxuICAgICAgICAvPlxuICAgICAgICA8VGFibGUuQ29sdW1uIGRhdGFJbmRleD1cInRocmVlXCIgdGl0bGU9XCLnrKxzYW7poblcIiAvPlxuICAgICAgICA8VGFibGUuQ29sdW1uXG4gICAgICAgICAgZGF0YUluZGV4PVwiZm91clwiXG4gICAgICAgICAgdGl0bGU9XCLnrKxzaemhuVwiXG4gICAgICAgICAgd2lkdGg9ezMwMH1cbiAgICAgICAgICBhbGlnbj1cInJpZ2h0XCJcbiAgICAgICAgLz5cbiAgICAgIDwvVGFibGU+XG4gICAgKVxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBnbG9iYWwuaW5uZXJXaWR0aCA9IDUwMFxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBnbG9iYWwuaW5uZXJIZWlnaHQgPSA1MDBcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgZ2xvYmFsLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KFwicmVzaXplXCIpKVxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBnbG9iYWwuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoXCJzY3JvbGxcIikpXG4gICAgd3JhcHBlci5pbnN0YW5jZSgpLmhhbmRsZU1haW5UYWJsZVNjcm9sbCgpXG4gIH0pXG5cbiAgLy8gaXQoXCJDb2x1bW4gd2lkdGggcHJvcCDpqozor4FcIiwgKCkgPT4ge1xuICAvLyAgIGNvbnN0IHN0dWIgPSBzaW5vbi5zdHViKGNvbnNvbGUsICdlcnJvcicpXG4gIC8vICAgY29uc3Qgd3JhcHBlciA9IG1vdW50KFxuICAvLyAgICAgPFRhYmxlXG4gIC8vICAgICAgIGRhdGFTb3VyY2U9e2RhdGFTb3VyY2V9XG4gIC8vICAgICA+XG4gIC8vICAgICAgIDxUYWJsZS5Db2x1bW5cbiAgLy8gICAgICAgICBkYXRhSW5kZXg9XCJvbmVcIlxuICAvLyAgICAgICAgIHRpdGxlPVwi56ys5LiA6aG5XCJcbiAgLy8gICAgICAgICB3aWR0aD17W119XG4gIC8vICAgICAgIC8+XG4gIC8vICAgICA8L1RhYmxlPlxuICAvLyAgIClcbiAgLy8gICBleHBlY3Qoc3R1Yi5jYWxsZWRPbmNlKS50b0JlKHRydWUpXG4gIC8vICAgc3R1Yi5yZXN0b3JlKClcbiAgLy8gfSlcblxuICBpdChcIkNvbHVtbiB3aWR0aCDlnKggZml4ZWQg5pe25b+F6aG76K6+572uIOmqjOivgVwiLCAoKSA9PiB7XG4gICAgY29uc3Qgc3R1YiA9IHNpbm9uLnN0dWIoY29uc29sZSwgXCJlcnJvclwiKVxuICAgIG1vdW50KFxuICAgICAgPFRhYmxlIGRhdGFTb3VyY2U9e2RhdGFTb3VyY2V9PlxuICAgICAgICA8VGFibGUuQ29sdW1uIGRhdGFJbmRleD1cIm9uZVwiIHRpdGxlPVwi56ys5LiA6aG5XCIgZml4ZWQ9XCJsZWZ0XCIgLz5cbiAgICAgIDwvVGFibGU+XG4gICAgKVxuICAgIGV4cGVjdChzdHViLmNhbGxlZE9uY2UpLnRvQmUodHJ1ZSlcbiAgICBzdHViLnJlc3RvcmUoKVxuICB9KVxuXG4gIGl0KFwibG9hZGluZyDlv6vnhadcIiwgKCkgPT4ge1xuICAgIGNvbnN0IHdyYXBwZXIgPSBUZXN0UmVuZGVyZXIuY3JlYXRlKFxuICAgICAgPFRhYmxlIGxvYWRpbmcgZGF0YVNvdXJjZT17ZGF0YVNvdXJjZX0+XG4gICAgICAgIDxUYWJsZS5Db2x1bW4gZGF0YUluZGV4PVwib25lXCIgdGl0bGU9XCLnrKzkuIDpoblcIiBmaXhlZD1cImxlZnRcIiAvPlxuICAgICAgPC9UYWJsZT5cbiAgICApXG4gICAgZXhwZWN0KHdyYXBwZXIpLnRvTWF0Y2hTbmFwc2hvdCgpXG4gIH0pXG5cbiAgaXQoXCLlkIjlubbljZXlhYPmoLzlv6vnhadcIiwgKCkgPT4ge1xuICAgIGNvbnN0IHdyYXBwZXIgPSBUZXN0UmVuZGVyZXIuY3JlYXRlKFxuICAgICAgPFRhYmxlXG4gICAgICAgIGRhdGFTb3VyY2U9e2RhdGFTb3VyY2V9XG4gICAgICAgIGdldENlbGxQcm9wcz17KF8sIF9fLCByb3dJbmRleCwgY29sSW5kZXgpID0+IHtcbiAgICAgICAgICBpZiAocm93SW5kZXggPT09IDAgJiYgY29sSW5kZXggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIHJvd1NwYW46IDIsXG4gICAgICAgICAgICAgIGNvbFNwYW46IDIsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChyb3dJbmRleCA9PT0gMyAmJiBjb2xJbmRleCA9PT0gMikge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgcm93U3BhbjogMixcbiAgICAgICAgICAgICAgY29sU3BhbjogMSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHJvd0luZGV4ID09PSAzICYmIGNvbEluZGV4ID09PSAzKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICByb3dTcGFuOiAyLFxuICAgICAgICAgICAgICBjb2xTcGFuOiAxLFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAocm93SW5kZXggPT09IDIgJiYgY29sSW5kZXggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIHJvd1NwYW46IDEsXG4gICAgICAgICAgICAgIGNvbFNwYW46IDEsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB7fVxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICA8VGFibGUuQ29sdW1uIGRhdGFJbmRleD1cIm9uZVwiIHRpdGxlPVwi56ys5LiA6aG5XCIgZml4ZWQgLz5cbiAgICAgICAgPFRhYmxlLkNvbHVtbiBkYXRhSW5kZXg9XCJ0d29cIiB0aXRsZT1cIuesrGVy6aG5XCIgZml4ZWQgLz5cbiAgICAgICAgPFRhYmxlLkNvbHVtbiBkYXRhSW5kZXg9XCJ0aHJlZVwiIHRpdGxlPVwi56ysM+mhuVwiIGFsaWduPVwiY2VudGVyXCIgLz5cbiAgICAgICAgPFRhYmxlLkNvbHVtblxuICAgICAgICAgIGRhdGFJbmRleD1cImZvdXJcIlxuICAgICAgICAgIHRpdGxlPVwi56ys5Zub6aG5XCJcbiAgICAgICAgICBhbGlnbj1cImNlbnRlclwiXG4gICAgICAgICAgZml4ZWQ9XCJyaWdodFwiXG4gICAgICAgIC8+XG4gICAgICA8L1RhYmxlPlxuICAgIClcbiAgICBleHBlY3Qod3JhcHBlcikudG9NYXRjaFNuYXBzaG90KClcbiAgfSlcbn0pXG4iXSwibWFw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