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>
202 lines (201 loc) • 36.7 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); }
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _react = _interopRequireWildcard(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _classnames = _interopRequireDefault(require("classnames"));
var _warning = _interopRequireDefault(require("../_util/warning"));
var _configProvider = require("../config-provider");
var _button = _interopRequireDefault(require("../button"));
require("./style");
var _excluded = ["align", "className", "current", "defaultCurrent", "disabled", "hideWhenSinglePage", "onChange", "pageSize", "showButtonJumper", "showInputJumper", "size", "theme", "total"];
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 _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, 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 _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var s = Object.getOwnPropertySymbols(e); for (r = 0; r < s.length; r++) o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) continue; t[n] = r[n]; } return t; }
var noop = function noop() {};
var prefix = "adui-channels-pagination";
var Pagination = function Pagination(_ref) {
var align = _ref.align,
className = _ref.className,
currentProp = _ref.current,
defaultCurrent = _ref.defaultCurrent,
disabled = _ref.disabled,
hideWhenSinglePage = _ref.hideWhenSinglePage,
onChange = _ref.onChange,
pageSize = _ref.pageSize,
showButtonJumper = _ref.showButtonJumper,
showInputJumper = _ref.showInputJumper,
sizeProp = _ref.size,
theme = _ref.theme,
total = _ref.total,
otherProps = _objectWithoutProperties(_ref, _excluded);
var _useState = (0, _react.useState)((currentProp !== null ? currentProp : defaultCurrent) || 1),
_useState2 = _slicedToArray(_useState, 2),
current = _useState2[0],
setCurrent = _useState2[1];
var _useState3 = (0, _react.useState)(""),
_useState4 = _slicedToArray(_useState3, 2),
inputValue = _useState4[0],
setInputValue = _useState4[1];
if (currentProp !== null && currentProp !== undefined && current !== currentProp) {
setCurrent(currentProp);
}
var _useContext = (0, _react.useContext)(_configProvider.ConfigContext),
sizeContext = _useContext.size;
var size = (0, _configProvider.getComputedSize)(sizeProp, sizeContext);
var classSet = (0, _classnames["default"])(className, "".concat(prefix, "-base"), "".concat(prefix, "-").concat(size), _defineProperty(_defineProperty({}, "".concat(prefix, "-").concat(align), align), "".concat(prefix, "-disabled"), disabled));
(0, _warning["default"])(Number.isInteger(current), "Pagination", "current 值需要是正整数");
(0, _warning["default"])(!(current < 1 || current > Math.ceil((total || 0) / (pageSize || 10)) && current !== 1), "Pagination", "current \u9700\u8981\u65F6\u5728\u6B63\u786E\u8303\u56F4\u5185\u7684\u6B63\u6574\u6570\uFF0Ctotal: ".concat(total, "\uFF0CpageSize\uFF1A").concat(pageSize));
var pageNumber = 1;
if (total && pageSize) {
pageNumber = Math.max(Math.ceil(total / pageSize), 1);
}
var prevDisabled = current === 1;
var nextDisabled = current === pageNumber;
if (pageNumber === 1 && hideWhenSinglePage) {
return null;
}
var handleJump = function handleJump(type) {
var newPage;
switch (type) {
case "first":
newPage = 1;
break;
case "prev":
newPage = current - 1;
break;
case "next":
newPage = current + 1;
break;
case "last":
if (total && pageSize) {
newPage = Math.max(Math.ceil(total / pageSize), 1);
}
break;
default:
}
if (newPage && pageSize) {
if (currentProp === null) {
setCurrent(newPage);
}
if (onChange) {
onChange(newPage, pageSize);
}
}
};
var handleInputJump = function handleInputJump() {
var parsevalue = parseInt(inputValue, 10);
if (isNaN(parsevalue)) {
return;
}
var value = Math.max(parsevalue, 1);
if (total && pageSize) {
value = Math.min(value, Math.max(Math.ceil(total / pageSize), 1));
}
if (currentProp === null) {
setCurrent(value);
}
if (onChange) {
onChange(value, pageSize);
}
};
return _react["default"].createElement("div", _extends({
className: classSet,
"data-current": current
}, otherProps), showButtonJumper && _react["default"].createElement(_button["default"], {
disabled: disabled,
style: {
marginRight: "8px"
},
leftIcon: "arrow-left-first",
size: size,
theme: theme,
onClick: function onClick() {
if (!prevDisabled) handleJump("first");
}
}), _react["default"].createElement("div", {
className: "".concat(prefix, "-btn ").concat(prefix, "-btn-left"),
role: "none",
onClick: function onClick() {
if (!prevDisabled) handleJump("prev");
}
}), _react["default"].createElement("span", {
className: "".concat(prefix, "-text")
}, current, " / ", pageNumber), _react["default"].createElement("div", {
className: "".concat(prefix, "-btn ").concat(prefix, "-btn-right"),
role: "none",
onClick: function onClick() {
if (!nextDisabled) handleJump("next");
}
}), showButtonJumper && _react["default"].createElement(_button["default"], {
disabled: disabled,
style: {
marginLeft: "8px"
},
leftIcon: "arrow-right-last",
size: size,
theme: theme,
onClick: function onClick() {
if (!nextDisabled) handleJump("last");
}
}), showInputJumper && [_react["default"].createElement("input", {
key: 0,
className: "".concat(prefix, "-input"),
onChange: function onChange(e) {
return setInputValue(e.target.value);
}
}), _react["default"].createElement("div", {
role: "none",
className: "".concat(prefix, "-input-btn"),
key: 1,
onClick: handleInputJump
}, "\u8DF3\u8F6C")]);
};
Pagination.displayName = "Pagination";
Pagination.propTypes = {
align: _propTypes["default"].oneOf(["left", "center", "right"]),
className: _propTypes["default"].string,
current: _propTypes["default"].number,
defaultCurrent: _propTypes["default"].number,
disabled: _propTypes["default"].bool,
hideWhenSinglePage: _propTypes["default"].bool,
onChange: _propTypes["default"].func,
pageSize: _propTypes["default"].number,
showButtonJumper: _propTypes["default"].bool,
showInputJumper: _propTypes["default"].bool,
size: _propTypes["default"].oneOf(["mini", "small", "medium", "large"]),
theme: _propTypes["default"].oneOf([null, "light"]),
total: _propTypes["default"].number
};
Pagination.defaultProps = {
align: undefined,
className: undefined,
current: null,
defaultCurrent: 1,
disabled: false,
hideWhenSinglePage: true,
onChange: noop,
pageSize: 10,
showButtonJumper: false,
showInputJumper: true,
size: "small",
theme: null,
total: 0
};
var _default = exports["default"] = Pagination;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfcHJvcFR5cGVzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9jbGFzc25hbWVzIiwiX3dhcm5pbmciLCJfY29uZmlnUHJvdmlkZXIiLCJfYnV0dG9uIiwiX2V4Y2x1ZGVkIiwiZSIsIl9fZXNNb2R1bGUiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJXZWFrTWFwIiwiciIsInQiLCJfdHlwZW9mIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0IiwiX2V4dGVuZHMiLCJhc3NpZ24iLCJiaW5kIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiYXBwbHkiLCJfZGVmaW5lUHJvcGVydHkiLCJfdG9Qcm9wZXJ0eUtleSIsInZhbHVlIiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiX3RvUHJpbWl0aXZlIiwiU3ltYm9sIiwidG9QcmltaXRpdmUiLCJUeXBlRXJyb3IiLCJTdHJpbmciLCJOdW1iZXIiLCJfc2xpY2VkVG9BcnJheSIsIl9hcnJheVdpdGhIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXlMaW1pdCIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVJlc3QiLCJfYXJyYXlMaWtlVG9BcnJheSIsInRvU3RyaW5nIiwic2xpY2UiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJBcnJheSIsImZyb20iLCJ0ZXN0IiwibCIsIml0ZXJhdG9yIiwiZiIsIm8iLCJuZXh0IiwiZG9uZSIsInB1c2giLCJpc0FycmF5IiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJzIiwiaW5jbHVkZXMiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsIm5vb3AiLCJwcmVmaXgiLCJQYWdpbmF0aW9uIiwiX3JlZiIsImFsaWduIiwiY2xhc3NOYW1lIiwiY3VycmVudFByb3AiLCJjdXJyZW50IiwiZGVmYXVsdEN1cnJlbnQiLCJkaXNhYmxlZCIsImhpZGVXaGVuU2luZ2xlUGFnZSIsIm9uQ2hhbmdlIiwicGFnZVNpemUiLCJzaG93QnV0dG9uSnVtcGVyIiwic2hvd0lucHV0SnVtcGVyIiwic2l6ZVByb3AiLCJzaXplIiwidGhlbWUiLCJ0b3RhbCIsIm90aGVyUHJvcHMiLCJfdXNlU3RhdGUiLCJ1c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJzZXRDdXJyZW50IiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJpbnB1dFZhbHVlIiwic2V0SW5wdXRWYWx1ZSIsInVuZGVmaW5lZCIsIl91c2VDb250ZXh0IiwidXNlQ29udGV4dCIsIkNvbmZpZ0NvbnRleHQiLCJzaXplQ29udGV4dCIsImdldENvbXB1dGVkU2l6ZSIsImNsYXNzU2V0IiwiY2xhc3NOYW1lcyIsImNvbmNhdCIsIndhcm5pbmciLCJpc0ludGVnZXIiLCJNYXRoIiwiY2VpbCIsInBhZ2VOdW1iZXIiLCJtYXgiLCJwcmV2RGlzYWJsZWQiLCJuZXh0RGlzYWJsZWQiLCJoYW5kbGVKdW1wIiwidHlwZSIsIm5ld1BhZ2UiLCJoYW5kbGVJbnB1dEp1bXAiLCJwYXJzZXZhbHVlIiwicGFyc2VJbnQiLCJpc05hTiIsIm1pbiIsImNyZWF0ZUVsZW1lbnQiLCJzdHlsZSIsIm1hcmdpblJpZ2h0IiwibGVmdEljb24iLCJvbkNsaWNrIiwicm9sZSIsIm1hcmdpbkxlZnQiLCJrZXkiLCJ0YXJnZXQiLCJkaXNwbGF5TmFtZSIsInByb3BUeXBlcyIsIlByb3BUeXBlcyIsIm9uZU9mIiwic3RyaW5nIiwibnVtYmVyIiwiYm9vbCIsImZ1bmMiLCJkZWZhdWx0UHJvcHMiLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi9jb21wb25lbnRzL2NoYW5uZWxzLXBhZ2luYXRpb24vUGFnaW5hdGlvbi50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZUNvbnRleHQsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCJcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIlxuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSBcImNsYXNzbmFtZXNcIlxuaW1wb3J0IHdhcm5pbmcgZnJvbSBcIi4uL191dGlsL3dhcm5pbmdcIlxuaW1wb3J0IHsgQ29uZmlnQ29udGV4dCwgZ2V0Q29tcHV0ZWRTaXplIH0gZnJvbSBcIi4uL2NvbmZpZy1wcm92aWRlclwiXG5pbXBvcnQgQnV0dG9uIGZyb20gXCIuLi9idXR0b25cIlxuaW1wb3J0IFwiLi9zdHlsZVwiXG5cbmNvbnN0IG5vb3AgPSAoKSA9PiB7fVxuY29uc3QgcHJlZml4ID0gXCJhZHVpLWNoYW5uZWxzLXBhZ2luYXRpb25cIlxuXG5leHBvcnQgaW50ZXJmYWNlIElQYWdpbmF0aW9uUHJvcHMge1xuICBba2V5OiBzdHJpbmddOiBhbnlcbiAgLyoqXG4gICAqIOWvuem9kOaWueW8j1xuICAgKi9cbiAgYWxpZ24/OiBcImxlZnRcIiB8IFwiY2VudGVyXCIgfCBcInJpZ2h0XCJcbiAgLyoqXG4gICAqIOmZhOWKoOexu+WQjVxuICAgKi9cbiAgY2xhc3NOYW1lPzogc3RyaW5nXG4gIC8qKlxuICAgKiDlvZPliY3pobXmlbBcbiAgICovXG4gIGN1cnJlbnQ/OiBudW1iZXIgfCBudWxsXG4gIC8qKlxuICAgKiDpu5jorqTnmoTlvZPliY3pobXmlbBcbiAgICovXG4gIGRlZmF1bHRDdXJyZW50PzogbnVtYmVyXG4gIC8qKlxuICAgKiDmmK/lkKbnpoHnlKhcbiAgICovXG4gIGRpc2FibGVkPzogYm9vbGVhblxuICAvKipcbiAgICog5Y+q5pyJ5LiA6aG15pe2IHJldHVybiBudWxsXG4gICAqL1xuICBoaWRlV2hlblNpbmdsZVBhZ2U/OiBib29sZWFuXG4gIC8qKlxuICAgKiDlvZPliY3pobXlj5jljJbml7bnmoQgaGFuZGxlclxuICAgKi9cbiAgb25DaGFuZ2U/OiAobmV3UGFnZTogbnVtYmVyLCBwYWdlU2l6ZT86IG51bWJlcikgPT4gdm9pZFxuICAvKipcbiAgICog6K6+572u5q+P6aG15p2h5pWw77yM6buY6K6kIDEwIOadoVxuICAgKi9cbiAgcGFnZVNpemU/OiBudW1iZXJcbiAgLyoqXG4gICAqIOaYr+WQpuaYvuekuummlumhteWwvumhtei3s+i9rOaMiemSrlxuICAgKi9cbiAgc2hvd0J1dHRvbkp1bXBlcj86IGJvb2xlYW5cbiAgLyoqXG4gICAqIOaYr+WQpuaYvuekuui3s+i9rOi+k+WFpeahhlxuICAgKi9cbiAgc2hvd0lucHV0SnVtcGVyPzogYm9vbGVhblxuICAvKipcbiAgICog6K6+572u5bC65a+4XG4gICAqL1xuICBzaXplPzogXCJtaW5pXCIgfCBcInNtYWxsXCIgfCBcIm1lZGl1bVwiIHwgXCJsYXJnZVwiXG4gIC8qKlxuICAgKiDorr7nva7kuLvpophcbiAgICovXG4gIHRoZW1lPzogbnVsbCB8IFwibGlnaHRcIlxuICAvKipcbiAgICog5pWw5o2u5oC75pWwXG4gICAqL1xuICB0b3RhbD86IG51bWJlclxufVxuXG4vKipcbiAqIOWIhumhteWZqOeUqOS6juWwhuWkp+mHj+WGheWuueS7peWIhumhteW9ouW8j+mXtOmalO+8jOWIh+aNoumAieaLqeafpeeci+OAglxuICovXG5jb25zdCBQYWdpbmF0aW9uOiBSZWFjdC5GQzxJUGFnaW5hdGlvblByb3BzPiA9ICh7XG4gIGFsaWduLFxuICBjbGFzc05hbWUsXG4gIGN1cnJlbnQ6IGN1cnJlbnRQcm9wLFxuICBkZWZhdWx0Q3VycmVudCxcbiAgZGlzYWJsZWQsXG4gIGhpZGVXaGVuU2luZ2xlUGFnZSxcbiAgb25DaGFuZ2UsXG4gIHBhZ2VTaXplLFxuICBzaG93QnV0dG9uSnVtcGVyLFxuICBzaG93SW5wdXRKdW1wZXIsXG4gIHNpemU6IHNpemVQcm9wLFxuICB0aGVtZSxcbiAgdG90YWwsXG4gIC4uLm90aGVyUHJvcHNcbn06IElQYWdpbmF0aW9uUHJvcHMpID0+IHtcbiAgY29uc3QgW2N1cnJlbnQsIHNldEN1cnJlbnRdID0gdXNlU3RhdGU8bnVtYmVyPihcbiAgICAoY3VycmVudFByb3AgIT09IG51bGwgPyBjdXJyZW50UHJvcCA6IGRlZmF1bHRDdXJyZW50KSB8fCAxXG4gIClcbiAgY29uc3QgW2lucHV0VmFsdWUsIHNldElucHV0VmFsdWVdID0gdXNlU3RhdGUoXCJcIilcblxuICAvLyDnm7jlvZPkuo7nlJ/lkb3lkajmnJ8gZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzXG4gIGlmIChcbiAgICBjdXJyZW50UHJvcCAhPT0gbnVsbCAmJlxuICAgIGN1cnJlbnRQcm9wICE9PSB1bmRlZmluZWQgJiZcbiAgICBjdXJyZW50ICE9PSBjdXJyZW50UHJvcFxuICApIHtcbiAgICBzZXRDdXJyZW50KGN1cnJlbnRQcm9wKVxuICB9XG5cbiAgY29uc3QgeyBzaXplOiBzaXplQ29udGV4dCB9ID0gdXNlQ29udGV4dChDb25maWdDb250ZXh0KVxuICBjb25zdCBzaXplID0gZ2V0Q29tcHV0ZWRTaXplKHNpemVQcm9wLCBzaXplQ29udGV4dClcblxuICBjb25zdCBjbGFzc1NldCA9IGNsYXNzTmFtZXMoXG4gICAgY2xhc3NOYW1lLFxuICAgIGAke3ByZWZpeH0tYmFzZWAsXG4gICAgYCR7cHJlZml4fS0ke3NpemV9YCxcbiAgICB7XG4gICAgICBbYCR7cHJlZml4fS0ke2FsaWdufWBdOiBhbGlnbixcbiAgICAgIFtgJHtwcmVmaXh9LWRpc2FibGVkYF06IGRpc2FibGVkLFxuICAgIH1cbiAgKVxuXG4gIHdhcm5pbmcoTnVtYmVyLmlzSW50ZWdlcihjdXJyZW50KSwgXCJQYWdpbmF0aW9uXCIsIFwiY3VycmVudCDlgLzpnIDopoHmmK/mraPmlbTmlbBcIilcblxuICB3YXJuaW5nKFxuICAgICEoXG4gICAgICBjdXJyZW50IDwgMSB8fFxuICAgICAgKGN1cnJlbnQgPiBNYXRoLmNlaWwoKHRvdGFsIHx8IDApIC8gKHBhZ2VTaXplIHx8IDEwKSkgJiYgY3VycmVudCAhPT0gMSlcbiAgICApLFxuICAgIFwiUGFnaW5hdGlvblwiLFxuICAgIGBjdXJyZW50IOmcgOimgeaXtuWcqOato+ehruiMg+WbtOWGheeahOato+aVtOaVsO+8jHRvdGFsOiAke3RvdGFsfe+8jHBhZ2VTaXpl77yaJHtwYWdlU2l6ZX1gXG4gIClcblxuICBsZXQgcGFnZU51bWJlciA9IDFcbiAgaWYgKHRvdGFsICYmIHBhZ2VTaXplKSB7XG4gICAgcGFnZU51bWJlciA9IE1hdGgubWF4KE1hdGguY2VpbCh0b3RhbCAvIHBhZ2VTaXplKSwgMSlcbiAgfVxuICBjb25zdCBwcmV2RGlzYWJsZWQgPSBjdXJyZW50ID09PSAxXG4gIGNvbnN0IG5leHREaXNhYmxlZCA9IGN1cnJlbnQgPT09IHBhZ2VOdW1iZXJcblxuICBpZiAocGFnZU51bWJlciA9PT0gMSAmJiBoaWRlV2hlblNpbmdsZVBhZ2UpIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgY29uc3QgaGFuZGxlSnVtcCA9ICh0eXBlOiBzdHJpbmcpID0+IHtcbiAgICBsZXQgbmV3UGFnZVxuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSBcImZpcnN0XCI6XG4gICAgICAgIG5ld1BhZ2UgPSAxXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIFwicHJldlwiOlxuICAgICAgICBuZXdQYWdlID0gY3VycmVudCAtIDFcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgXCJuZXh0XCI6XG4gICAgICAgIG5ld1BhZ2UgPSBjdXJyZW50ICsgMVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSBcImxhc3RcIjpcbiAgICAgICAgaWYgKHRvdGFsICYmIHBhZ2VTaXplKSB7XG4gICAgICAgICAgbmV3UGFnZSA9IE1hdGgubWF4KE1hdGguY2VpbCh0b3RhbCAvIHBhZ2VTaXplKSwgMSlcbiAgICAgICAgfVxuICAgICAgICBicmVha1xuICAgICAgZGVmYXVsdDpcbiAgICB9XG5cbiAgICBpZiAobmV3UGFnZSAmJiBwYWdlU2l6ZSkge1xuICAgICAgaWYgKGN1cnJlbnRQcm9wID09PSBudWxsKSB7XG4gICAgICAgIHNldEN1cnJlbnQobmV3UGFnZSlcbiAgICAgIH1cbiAgICAgIGlmIChvbkNoYW5nZSkge1xuICAgICAgICBvbkNoYW5nZShuZXdQYWdlLCBwYWdlU2l6ZSlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBoYW5kbGVJbnB1dEp1bXAgPSAoKSA9PiB7XG4gICAgY29uc3QgcGFyc2V2YWx1ZSA9IHBhcnNlSW50KGlucHV0VmFsdWUsIDEwKVxuICAgIGlmIChpc05hTihwYXJzZXZhbHVlKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGxldCB2YWx1ZSA9IE1hdGgubWF4KHBhcnNldmFsdWUsIDEpXG4gICAgaWYgKHRvdGFsICYmIHBhZ2VTaXplKSB7XG4gICAgICB2YWx1ZSA9IE1hdGgubWluKHZhbHVlLCBNYXRoLm1heChNYXRoLmNlaWwodG90YWwgLyBwYWdlU2l6ZSksIDEpKVxuICAgIH1cbiAgICBpZiAoY3VycmVudFByb3AgPT09IG51bGwpIHtcbiAgICAgIHNldEN1cnJlbnQodmFsdWUpXG4gICAgfVxuICAgIGlmIChvbkNoYW5nZSkge1xuICAgICAgb25DaGFuZ2UodmFsdWUsIHBhZ2VTaXplKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzU2V0fSBkYXRhLWN1cnJlbnQ9e2N1cnJlbnR9IHsuLi5vdGhlclByb3BzfT5cbiAgICAgIHtzaG93QnV0dG9uSnVtcGVyICYmIChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICBzdHlsZT17eyBtYXJnaW5SaWdodDogXCI4cHhcIiB9fVxuICAgICAgICAgIGxlZnRJY29uPVwiYXJyb3ctbGVmdC1maXJzdFwiXG4gICAgICAgICAgc2l6ZT17c2l6ZX1cbiAgICAgICAgICB0aGVtZT17dGhlbWV9XG4gICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgaWYgKCFwcmV2RGlzYWJsZWQpIGhhbmRsZUp1bXAoXCJmaXJzdFwiKVxuICAgICAgICAgIH19XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgICAgPGRpdlxuICAgICAgICBjbGFzc05hbWU9e2Ake3ByZWZpeH0tYnRuICR7cHJlZml4fS1idG4tbGVmdGB9XG4gICAgICAgIHJvbGU9XCJub25lXCJcbiAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgIGlmICghcHJldkRpc2FibGVkKSBoYW5kbGVKdW1wKFwicHJldlwiKVxuICAgICAgICB9fVxuICAgICAgLz5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT17YCR7cHJlZml4fS10ZXh0YH0+XG4gICAgICAgIHtjdXJyZW50fSAvIHtwYWdlTnVtYmVyfVxuICAgICAgPC9zcGFuPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzc05hbWU9e2Ake3ByZWZpeH0tYnRuICR7cHJlZml4fS1idG4tcmlnaHRgfVxuICAgICAgICByb2xlPVwibm9uZVwiXG4gICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICBpZiAoIW5leHREaXNhYmxlZCkgaGFuZGxlSnVtcChcIm5leHRcIilcbiAgICAgICAgfX1cbiAgICAgIC8+XG4gICAgICB7c2hvd0J1dHRvbkp1bXBlciAmJiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgICAgc3R5bGU9e3sgbWFyZ2luTGVmdDogXCI4cHhcIiB9fVxuICAgICAgICAgIGxlZnRJY29uPVwiYXJyb3ctcmlnaHQtbGFzdFwiXG4gICAgICAgICAgc2l6ZT17c2l6ZX1cbiAgICAgICAgICB0aGVtZT17dGhlbWV9XG4gICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgaWYgKCFuZXh0RGlzYWJsZWQpIGhhbmRsZUp1bXAoXCJsYXN0XCIpXG4gICAgICAgICAgfX1cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgICB7c2hvd0lucHV0SnVtcGVyICYmIFtcbiAgICAgICAgPGlucHV0XG4gICAgICAgICAga2V5PXswfVxuICAgICAgICAgIGNsYXNzTmFtZT17YCR7cHJlZml4fS1pbnB1dGB9XG4gICAgICAgICAgb25DaGFuZ2U9eyhlOiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT5cbiAgICAgICAgICAgIHNldElucHV0VmFsdWUoZS50YXJnZXQudmFsdWUpXG4gICAgICAgICAgfVxuICAgICAgICAvPixcbiAgICAgICAgPGRpdlxuICAgICAgICAgIHJvbGU9XCJub25lXCJcbiAgICAgICAgICBjbGFzc05hbWU9e2Ake3ByZWZpeH0taW5wdXQtYnRuYH1cbiAgICAgICAgICBrZXk9ezF9XG4gICAgICAgICAgb25DbGljaz17aGFuZGxlSW5wdXRKdW1wfVxuICAgICAgICA+XG4gICAgICAgICAg6Lez6L2sXG4gICAgICAgIDwvZGl2PixcbiAgICAgIF19XG4gICAgPC9kaXY+XG4gIClcbn1cblxuUGFnaW5hdGlvbi5kaXNwbGF5TmFtZSA9IFwiUGFnaW5hdGlvblwiXG5cblBhZ2luYXRpb24ucHJvcFR5cGVzID0ge1xuICAvKipcbiAgICog5a+56b2Q5pa55byPXG4gICAqL1xuICBhbGlnbjogUHJvcFR5cGVzLm9uZU9mKFtcImxlZnRcIiwgXCJjZW50ZXJcIiwgXCJyaWdodFwiXSksXG4gIC8qKlxuICAgKiDpmYTliqDnsbvlkI1cbiAgICovXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIOW9k+WJjemhteaVsFxuICAgKi9cbiAgY3VycmVudDogUHJvcFR5cGVzLm51bWJlcixcbiAgLyoqXG4gICAqIOm7mOiupOeahOW9k+WJjemhteaVsFxuICAgKi9cbiAgZGVmYXVsdEN1cnJlbnQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIC8qKlxuICAgKiDmmK/lkKbnpoHnlKhcbiAgICovXG4gIGRpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIOWPquacieS4gOmhteaXtiByZXR1cm4gbnVsbFxuICAgKi9cbiAgaGlkZVdoZW5TaW5nbGVQYWdlOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIOW9k+WJjemhteWPmOWMluaXtueahCBoYW5kbGVyXG4gICAqL1xuICBvbkNoYW5nZTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKlxuICAgKiDorr7nva7mr4/pobXmnaHmlbDvvIzpu5jorqQgMTAg5p2hXG4gICAqL1xuICBwYWdlU2l6ZTogUHJvcFR5cGVzLm51bWJlcixcbiAgLyoqXG4gICAqIOaYr+WQpuaYvuekuummlumhteWwvumhtei3s+i9rOaMiemSrlxuICAgKi9cbiAgc2hvd0J1dHRvbkp1bXBlcjogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiDmmK/lkKbmmL7npLrot7PovazovpPlhaXmoYZcbiAgICovXG4gIHNob3dJbnB1dEp1bXBlcjogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiDorr7nva7lsLrlr7hcbiAgICovXG4gIHNpemU6IFByb3BUeXBlcy5vbmVPZihbXCJtaW5pXCIsIFwic21hbGxcIiwgXCJtZWRpdW1cIiwgXCJsYXJnZVwiXSksXG4gIC8qKlxuICAgKiDorr7nva7kuLvpophcbiAgICovXG4gIHRoZW1lOiBQcm9wVHlwZXMub25lT2YoW251bGwsIFwibGlnaHRcIl0pLFxuICAvKipcbiAgICog5pWw5o2u5oC75pWwXG4gICAqL1xuICB0b3RhbDogUHJvcFR5cGVzLm51bWJlcixcbn1cblxuUGFnaW5hdGlvbi5kZWZhdWx0UHJvcHMgPSB7XG4gIGFsaWduOiB1bmRlZmluZWQsXG4gIGNsYXNzTmFtZTogdW5kZWZpbmVkLFxuICBjdXJyZW50OiBudWxsLFxuICBkZWZhdWx0Q3VycmVudDogMSxcbiAgZGlzYWJsZWQ6IGZhbHNlLFxuICBoaWRlV2hlblNpbmdsZVBhZ2U6IHRydWUsXG4gIG9uQ2hhbmdlOiBub29wLFxuICBwYWdlU2l6ZTogMTAsXG4gIHNob3dCdXR0b25KdW1wZXI6IGZhbHNlLFxuICBzaG93SW5wdXRKdW1wZXI6IHRydWUsXG4gIHNpemU6IFwic21hbGxcIixcbiAgdGhlbWU6IG51bGwsXG4gIHRvdGFsOiAwLFxufVxuXG5leHBvcnQgZGVmYXVsdCBQYWdpbmF0aW9uXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxVQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxXQUFBLEdBQUFELHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBSSxRQUFBLEdBQUFGLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBSyxlQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxPQUFBLEdBQUFKLHNCQUFBLENBQUFGLE9BQUE7QUFDQUEsT0FBQTtBQUFnQixJQUFBTyxTQUFBO0FBQUEsU0FBQUwsdUJBQUFNLENBQUEsV0FBQUEsQ0FBQSxJQUFBQSxDQUFBLENBQUFDLFVBQUEsR0FBQUQsQ0FBQSxnQkFBQUEsQ0FBQTtBQUFBLFNBQUFFLHlCQUFBRixDQUFBLDZCQUFBRyxPQUFBLG1CQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFELHdCQUFBLFlBQUFBLHlCQUFBRixDQUFBLFdBQUFBLENBQUEsR0FBQUssQ0FBQSxHQUFBRCxDQUFBLEtBQUFKLENBQUE7QUFBQSxTQUFBVCx3QkFBQVMsQ0FBQSxFQUFBSSxDQUFBLFNBQUFBLENBQUEsSUFBQUosQ0FBQSxJQUFBQSxDQUFBLENBQUFDLFVBQUEsU0FBQUQsQ0FBQSxlQUFBQSxDQUFBLGdCQUFBTSxPQUFBLENBQUFOLENBQUEsMEJBQUFBLENBQUEsc0JBQUFBLENBQUEsUUFBQUssQ0FBQSxHQUFBSCx3QkFBQSxDQUFBRSxDQUFBLE9BQUFDLENBQUEsSUFBQUEsQ0FBQSxDQUFBRSxHQUFBLENBQUFQLENBQUEsVUFBQUssQ0FBQSxDQUFBRyxHQUFBLENBQUFSLENBQUEsT0FBQVMsQ0FBQSxLQUFBQyxTQUFBLFVBQUFD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
;