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>

193 lines 28.4 kB
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 _excluded = ["align", "className", "current", "defaultCurrent", "disabled", "hideWhenSinglePage", "onChange", "pageSize", "showButtonJumper", "showInputJumper", "size", "theme", "total"]; 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; } import React, { useContext, useState } from "react"; import PropTypes from "prop-types"; import classNames from "classnames"; import warning from "../_util/warning"; import { ConfigContext, getComputedSize } from "../config-provider"; import Button from "../button"; import "./style"; 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 = useState((currentProp !== null ? currentProp : defaultCurrent) || 1), _useState2 = _slicedToArray(_useState, 2), current = _useState2[0], setCurrent = _useState2[1]; var _useState3 = useState(""), _useState4 = _slicedToArray(_useState3, 2), inputValue = _useState4[0], setInputValue = _useState4[1]; if (currentProp !== null && currentProp !== undefined && current !== currentProp) { setCurrent(currentProp); } var _useContext = useContext(ConfigContext), sizeContext = _useContext.size; var size = getComputedSize(sizeProp, sizeContext); var classSet = classNames(className, "".concat(prefix, "-base"), "".concat(prefix, "-").concat(size), _defineProperty(_defineProperty({}, "".concat(prefix, "-").concat(align), align), "".concat(prefix, "-disabled"), disabled)); warning(Number.isInteger(current), "Pagination", "current 值需要是正整数"); warning(!(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.createElement("div", _extends({ className: classSet, "data-current": current }, otherProps), showButtonJumper && React.createElement(Button, { disabled: disabled, style: { marginRight: "8px" }, leftIcon: "arrow-left-first", size: size, theme: theme, onClick: function onClick() { if (!prevDisabled) handleJump("first"); } }), React.createElement("div", { className: "".concat(prefix, "-btn ").concat(prefix, "-btn-left"), role: "none", onClick: function onClick() { if (!prevDisabled) handleJump("prev"); } }), React.createElement("span", { className: "".concat(prefix, "-text") }, current, " / ", pageNumber), React.createElement("div", { className: "".concat(prefix, "-btn ").concat(prefix, "-btn-right"), role: "none", onClick: function onClick() { if (!nextDisabled) handleJump("next"); } }), showButtonJumper && React.createElement(Button, { disabled: disabled, style: { marginLeft: "8px" }, leftIcon: "arrow-right-last", size: size, theme: theme, onClick: function onClick() { if (!nextDisabled) handleJump("last"); } }), showInputJumper && [React.createElement("input", { key: 0, className: "".concat(prefix, "-input"), onChange: function onChange(e) { return setInputValue(e.target.value); } }), React.createElement("div", { role: "none", className: "".concat(prefix, "-input-btn"), key: 1, onClick: handleInputJump }, "\u8DF3\u8F6C")]); }; Pagination.displayName = "Pagination"; Pagination.propTypes = { align: PropTypes.oneOf(["left", "center", "right"]), className: PropTypes.string, current: PropTypes.number, defaultCurrent: PropTypes.number, disabled: PropTypes.bool, hideWhenSinglePage: PropTypes.bool, onChange: PropTypes.func, pageSize: PropTypes.number, showButtonJumper: PropTypes.bool, showInputJumper: PropTypes.bool, size: PropTypes.oneOf(["mini", "small", "medium", "large"]), theme: PropTypes.oneOf([null, "light"]), total: PropTypes.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 }; export default Pagination; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsInVzZUNvbnRleHQiLCJ1c2VTdGF0ZSIsIlByb3BUeXBlcyIsImNsYXNzTmFtZXMiLCJ3YXJuaW5nIiwiQ29uZmlnQ29udGV4dCIsImdldENvbXB1dGVkU2l6ZSIsIkJ1dHRvbiIsIm5vb3AiLCJwcmVmaXgiLCJQYWdpbmF0aW9uIiwiX3JlZiIsImFsaWduIiwiY2xhc3NOYW1lIiwiY3VycmVudFByb3AiLCJjdXJyZW50IiwiZGVmYXVsdEN1cnJlbnQiLCJkaXNhYmxlZCIsImhpZGVXaGVuU2luZ2xlUGFnZSIsIm9uQ2hhbmdlIiwicGFnZVNpemUiLCJzaG93QnV0dG9uSnVtcGVyIiwic2hvd0lucHV0SnVtcGVyIiwic2l6ZVByb3AiLCJzaXplIiwidGhlbWUiLCJ0b3RhbCIsIm90aGVyUHJvcHMiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJfZXhjbHVkZWQiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJzZXRDdXJyZW50IiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJpbnB1dFZhbHVlIiwic2V0SW5wdXRWYWx1ZSIsInVuZGVmaW5lZCIsIl91c2VDb250ZXh0Iiwic2l6ZUNvbnRleHQiLCJjbGFzc1NldCIsImNvbmNhdCIsIl9kZWZpbmVQcm9wZXJ0eSIsIk51bWJlciIsImlzSW50ZWdlciIsIk1hdGgiLCJjZWlsIiwicGFnZU51bWJlciIsIm1heCIsInByZXZEaXNhYmxlZCIsIm5leHREaXNhYmxlZCIsImhhbmRsZUp1bXAiLCJ0eXBlIiwibmV3UGFnZSIsImhhbmRsZUlucHV0SnVtcCIsInBhcnNldmFsdWUiLCJwYXJzZUludCIsImlzTmFOIiwidmFsdWUiLCJtaW4iLCJjcmVhdGVFbGVtZW50IiwiX2V4dGVuZHMiLCJzdHlsZSIsIm1hcmdpblJpZ2h0IiwibGVmdEljb24iLCJvbkNsaWNrIiwicm9sZSIsIm1hcmdpbkxlZnQiLCJrZXkiLCJlIiwidGFyZ2V0IiwiZGlzcGxheU5hbWUiLCJwcm9wVHlwZXMiLCJvbmVPZiIsInN0cmluZyIsIm51bWJlciIsImJvb2wiLCJmdW5jIiwiZGVmYXVsdFByb3BzIl0sInNvdXJjZXMiOlsiLi4vLi4vY29tcG9uZW50cy9jaGFubmVscy1wYWdpbmF0aW9uL1BhZ2luYXRpb24udHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyB1c2VDb250ZXh0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCJcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gXCJjbGFzc25hbWVzXCJcbmltcG9ydCB3YXJuaW5nIGZyb20gXCIuLi9fdXRpbC93YXJuaW5nXCJcbmltcG9ydCB7IENvbmZpZ0NvbnRleHQsIGdldENvbXB1dGVkU2l6ZSB9IGZyb20gXCIuLi9jb25maWctcHJvdmlkZXJcIlxuaW1wb3J0IEJ1dHRvbiBmcm9tIFwiLi4vYnV0dG9uXCJcbmltcG9ydCBcIi4vc3R5bGVcIlxuXG5jb25zdCBub29wID0gKCkgPT4ge31cbmNvbnN0IHByZWZpeCA9IFwiYWR1aS1jaGFubmVscy1wYWdpbmF0aW9uXCJcblxuZXhwb3J0IGludGVyZmFjZSBJUGFnaW5hdGlvblByb3BzIHtcbiAgW2tleTogc3RyaW5nXTogYW55XG4gIC8qKlxuICAgKiDlr7npvZDmlrnlvI9cbiAgICovXG4gIGFsaWduPzogXCJsZWZ0XCIgfCBcImNlbnRlclwiIHwgXCJyaWdodFwiXG4gIC8qKlxuICAgKiDpmYTliqDnsbvlkI1cbiAgICovXG4gIGNsYXNzTmFtZT86IHN0cmluZ1xuICAvKipcbiAgICog5b2T5YmN6aG15pWwXG4gICAqL1xuICBjdXJyZW50PzogbnVtYmVyIHwgbnVsbFxuICAvKipcbiAgICog6buY6K6k55qE5b2T5YmN6aG15pWwXG4gICAqL1xuICBkZWZhdWx0Q3VycmVudD86IG51bWJlclxuICAvKipcbiAgICog5piv5ZCm56aB55SoXG4gICAqL1xuICBkaXNhYmxlZD86IGJvb2xlYW5cbiAgLyoqXG4gICAqIOWPquacieS4gOmhteaXtiByZXR1cm4gbnVsbFxuICAgKi9cbiAgaGlkZVdoZW5TaW5nbGVQYWdlPzogYm9vbGVhblxuICAvKipcbiAgICog5b2T5YmN6aG15Y+Y5YyW5pe255qEIGhhbmRsZXJcbiAgICovXG4gIG9uQ2hhbmdlPzogKG5ld1BhZ2U6IG51bWJlciwgcGFnZVNpemU/OiBudW1iZXIpID0+IHZvaWRcbiAgLyoqXG4gICAqIOiuvue9ruavj+mhteadoeaVsO+8jOm7mOiupCAxMCDmnaFcbiAgICovXG4gIHBhZ2VTaXplPzogbnVtYmVyXG4gIC8qKlxuICAgKiDmmK/lkKbmmL7npLrpppbpobXlsL7pobXot7PovazmjInpkq5cbiAgICovXG4gIHNob3dCdXR0b25KdW1wZXI/OiBib29sZWFuXG4gIC8qKlxuICAgKiDmmK/lkKbmmL7npLrot7PovazovpPlhaXmoYZcbiAgICovXG4gIHNob3dJbnB1dEp1bXBlcj86IGJvb2xlYW5cbiAgLyoqXG4gICAqIOiuvue9ruWwuuWvuFxuICAgKi9cbiAgc2l6ZT86IFwibWluaVwiIHwgXCJzbWFsbFwiIHwgXCJtZWRpdW1cIiB8IFwibGFyZ2VcIlxuICAvKipcbiAgICog6K6+572u5Li76aKYXG4gICAqL1xuICB0aGVtZT86IG51bGwgfCBcImxpZ2h0XCJcbiAgLyoqXG4gICAqIOaVsOaNruaAu+aVsFxuICAgKi9cbiAgdG90YWw/OiBudW1iZXJcbn1cblxuLyoqXG4gKiDliIbpobXlmajnlKjkuo7lsIblpKfph4/lhoXlrrnku6XliIbpobXlvaLlvI/pl7TpmpTvvIzliIfmjaLpgInmi6nmn6XnnIvjgIJcbiAqL1xuY29uc3QgUGFnaW5hdGlvbjogUmVhY3QuRkM8SVBhZ2luYXRpb25Qcm9wcz4gPSAoe1xuICBhbGlnbixcbiAgY2xhc3NOYW1lLFxuICBjdXJyZW50OiBjdXJyZW50UHJvcCxcbiAgZGVmYXVsdEN1cnJlbnQsXG4gIGRpc2FibGVkLFxuICBoaWRlV2hlblNpbmdsZVBhZ2UsXG4gIG9uQ2hhbmdlLFxuICBwYWdlU2l6ZSxcbiAgc2hvd0J1dHRvbkp1bXBlcixcbiAgc2hvd0lucHV0SnVtcGVyLFxuICBzaXplOiBzaXplUHJvcCxcbiAgdGhlbWUsXG4gIHRvdGFsLFxuICAuLi5vdGhlclByb3BzXG59OiBJUGFnaW5hdGlvblByb3BzKSA9PiB7XG4gIGNvbnN0IFtjdXJyZW50LCBzZXRDdXJyZW50XSA9IHVzZVN0YXRlPG51bWJlcj4oXG4gICAgKGN1cnJlbnRQcm9wICE9PSBudWxsID8gY3VycmVudFByb3AgOiBkZWZhdWx0Q3VycmVudCkgfHwgMVxuICApXG4gIGNvbnN0IFtpbnB1dFZhbHVlLCBzZXRJbnB1dFZhbHVlXSA9IHVzZVN0YXRlKFwiXCIpXG5cbiAgLy8g55u45b2T5LqO55Sf5ZG95ZGo5pyfIGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wc1xuICBpZiAoXG4gICAgY3VycmVudFByb3AgIT09IG51bGwgJiZcbiAgICBjdXJyZW50UHJvcCAhPT0gdW5kZWZpbmVkICYmXG4gICAgY3VycmVudCAhPT0gY3VycmVudFByb3BcbiAgKSB7XG4gICAgc2V0Q3VycmVudChjdXJyZW50UHJvcClcbiAgfVxuXG4gIGNvbnN0IHsgc2l6ZTogc2l6ZUNvbnRleHQgfSA9IHVzZUNvbnRleHQoQ29uZmlnQ29udGV4dClcbiAgY29uc3Qgc2l6ZSA9IGdldENvbXB1dGVkU2l6ZShzaXplUHJvcCwgc2l6ZUNvbnRleHQpXG5cbiAgY29uc3QgY2xhc3NTZXQgPSBjbGFzc05hbWVzKFxuICAgIGNsYXNzTmFtZSxcbiAgICBgJHtwcmVmaXh9LWJhc2VgLFxuICAgIGAke3ByZWZpeH0tJHtzaXplfWAsXG4gICAge1xuICAgICAgW2Ake3ByZWZpeH0tJHthbGlnbn1gXTogYWxpZ24sXG4gICAgICBbYCR7cHJlZml4fS1kaXNhYmxlZGBdOiBkaXNhYmxlZCxcbiAgICB9XG4gIClcblxuICB3YXJuaW5nKE51bWJlci5pc0ludGVnZXIoY3VycmVudCksIFwiUGFnaW5hdGlvblwiLCBcImN1cnJlbnQg5YC86ZyA6KaB5piv5q2j5pW05pWwXCIpXG5cbiAgd2FybmluZyhcbiAgICAhKFxuICAgICAgY3VycmVudCA8IDEgfHxcbiAgICAgIChjdXJyZW50ID4gTWF0aC5jZWlsKCh0b3RhbCB8fCAwKSAvIChwYWdlU2l6ZSB8fCAxMCkpICYmIGN1cnJlbnQgIT09IDEpXG4gICAgKSxcbiAgICBcIlBhZ2luYXRpb25cIixcbiAgICBgY3VycmVudCDpnIDopoHml7blnKjmraPnoa7ojIPlm7TlhoXnmoTmraPmlbTmlbDvvIx0b3RhbDogJHt0b3RhbH3vvIxwYWdlU2l6Ze+8miR7cGFnZVNpemV9YFxuICApXG5cbiAgbGV0IHBhZ2VOdW1iZXIgPSAxXG4gIGlmICh0b3RhbCAmJiBwYWdlU2l6ZSkge1xuICAgIHBhZ2VOdW1iZXIgPSBNYXRoLm1heChNYXRoLmNlaWwodG90YWwgLyBwYWdlU2l6ZSksIDEpXG4gIH1cbiAgY29uc3QgcHJldkRpc2FibGVkID0gY3VycmVudCA9PT0gMVxuICBjb25zdCBuZXh0RGlzYWJsZWQgPSBjdXJyZW50ID09PSBwYWdlTnVtYmVyXG5cbiAgaWYgKHBhZ2VOdW1iZXIgPT09IDEgJiYgaGlkZVdoZW5TaW5nbGVQYWdlKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUp1bXAgPSAodHlwZTogc3RyaW5nKSA9PiB7XG4gICAgbGV0IG5ld1BhZ2VcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgXCJmaXJzdFwiOlxuICAgICAgICBuZXdQYWdlID0gMVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSBcInByZXZcIjpcbiAgICAgICAgbmV3UGFnZSA9IGN1cnJlbnQgLSAxXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIFwibmV4dFwiOlxuICAgICAgICBuZXdQYWdlID0gY3VycmVudCArIDFcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgXCJsYXN0XCI6XG4gICAgICAgIGlmICh0b3RhbCAmJiBwYWdlU2l6ZSkge1xuICAgICAgICAgIG5ld1BhZ2UgPSBNYXRoLm1heChNYXRoLmNlaWwodG90YWwgLyBwYWdlU2l6ZSksIDEpXG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICAgIGRlZmF1bHQ6XG4gICAgfVxuXG4gICAgaWYgKG5ld1BhZ2UgJiYgcGFnZVNpemUpIHtcbiAgICAgIGlmIChjdXJyZW50UHJvcCA9PT0gbnVsbCkge1xuICAgICAgICBzZXRDdXJyZW50KG5ld1BhZ2UpXG4gICAgICB9XG4gICAgICBpZiAob25DaGFuZ2UpIHtcbiAgICAgICAgb25DaGFuZ2UobmV3UGFnZSwgcGFnZVNpemUpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGFuZGxlSW5wdXRKdW1wID0gKCkgPT4ge1xuICAgIGNvbnN0IHBhcnNldmFsdWUgPSBwYXJzZUludChpbnB1dFZhbHVlLCAxMClcbiAgICBpZiAoaXNOYU4ocGFyc2V2YWx1ZSkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBsZXQgdmFsdWUgPSBNYXRoLm1heChwYXJzZXZhbHVlLCAxKVxuICAgIGlmICh0b3RhbCAmJiBwYWdlU2l6ZSkge1xuICAgICAgdmFsdWUgPSBNYXRoLm1pbih2YWx1ZSwgTWF0aC5tYXgoTWF0aC5jZWlsKHRvdGFsIC8gcGFnZVNpemUpLCAxKSlcbiAgICB9XG4gICAgaWYgKGN1cnJlbnRQcm9wID09PSBudWxsKSB7XG4gICAgICBzZXRDdXJyZW50KHZhbHVlKVxuICAgIH1cbiAgICBpZiAob25DaGFuZ2UpIHtcbiAgICAgIG9uQ2hhbmdlKHZhbHVlLCBwYWdlU2l6ZSlcbiAgICB9XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc1NldH0gZGF0YS1jdXJyZW50PXtjdXJyZW50fSB7Li4ub3RoZXJQcm9wc30+XG4gICAgICB7c2hvd0J1dHRvbkp1bXBlciAmJiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgICAgc3R5bGU9e3sgbWFyZ2luUmlnaHQ6IFwiOHB4XCIgfX1cbiAgICAgICAgICBsZWZ0SWNvbj1cImFycm93LWxlZnQtZmlyc3RcIlxuICAgICAgICAgIHNpemU9e3NpemV9XG4gICAgICAgICAgdGhlbWU9e3RoZW1lfVxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgIGlmICghcHJldkRpc2FibGVkKSBoYW5kbGVKdW1wKFwiZmlyc3RcIilcbiAgICAgICAgICB9fVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3NOYW1lPXtgJHtwcmVmaXh9LWJ0biAke3ByZWZpeH0tYnRuLWxlZnRgfVxuICAgICAgICByb2xlPVwibm9uZVwiXG4gICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICBpZiAoIXByZXZEaXNhYmxlZCkgaGFuZGxlSnVtcChcInByZXZcIilcbiAgICAgICAgfX1cbiAgICAgIC8+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9e2Ake3ByZWZpeH0tdGV4dGB9PlxuICAgICAgICB7Y3VycmVudH0gLyB7cGFnZU51bWJlcn1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3NOYW1lPXtgJHtwcmVmaXh9LWJ0biAke3ByZWZpeH0tYnRuLXJpZ2h0YH1cbiAgICAgICAgcm9sZT1cIm5vbmVcIlxuICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgaWYgKCFuZXh0RGlzYWJsZWQpIGhhbmRsZUp1bXAoXCJuZXh0XCIpXG4gICAgICAgIH19XG4gICAgICAvPlxuICAgICAge3Nob3dCdXR0b25KdW1wZXIgJiYgKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICAgIHN0eWxlPXt7IG1hcmdpbkxlZnQ6IFwiOHB4XCIgfX1cbiAgICAgICAgICBsZWZ0SWNvbj1cImFycm93LXJpZ2h0LWxhc3RcIlxuICAgICAgICAgIHNpemU9e3NpemV9XG4gICAgICAgICAgdGhlbWU9e3RoZW1lfVxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgIGlmICghbmV4dERpc2FibGVkKSBoYW5kbGVKdW1wKFwibGFzdFwiKVxuICAgICAgICAgIH19XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgICAge3Nob3dJbnB1dEp1bXBlciAmJiBbXG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIGtleT17MH1cbiAgICAgICAgICBjbGFzc05hbWU9e2Ake3ByZWZpeH0taW5wdXRgfVxuICAgICAgICAgIG9uQ2hhbmdlPXsoZTogUmVhY3QuQ2hhbmdlRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+XG4gICAgICAgICAgICBzZXRJbnB1dFZhbHVlKGUudGFyZ2V0LnZhbHVlKVxuICAgICAgICAgIH1cbiAgICAgICAgLz4sXG4gICAgICAgIDxkaXZcbiAgICAgICAgICByb2xlPVwibm9uZVwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtgJHtwcmVmaXh9LWlucHV0LWJ0bmB9XG4gICAgICAgICAga2V5PXsxfVxuICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUlucHV0SnVtcH1cbiAgICAgICAgPlxuICAgICAgICAgIOi3s+i9rFxuICAgICAgICA8L2Rpdj4sXG4gICAgICBdfVxuICAgIDwvZGl2PlxuICApXG59XG5cblBhZ2luYXRpb24uZGlzcGxheU5hbWUgPSBcIlBhZ2luYXRpb25cIlxuXG5QYWdpbmF0aW9uLnByb3BUeXBlcyA9IHtcbiAgLyoqXG4gICAqIOWvuem9kOaWueW8j1xuICAgKi9cbiAgYWxpZ246IFByb3BUeXBlcy5vbmVPZihbXCJsZWZ0XCIsIFwiY2VudGVyXCIsIFwicmlnaHRcIl0pLFxuICAvKipcbiAgICog6ZmE5Yqg57G75ZCNXG4gICAqL1xuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiDlvZPliY3pobXmlbBcbiAgICovXG4gIGN1cnJlbnQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIC8qKlxuICAgKiDpu5jorqTnmoTlvZPliY3pobXmlbBcbiAgICovXG4gIGRlZmF1bHRDdXJyZW50OiBQcm9wVHlwZXMubnVtYmVyLFxuICAvKipcbiAgICog5piv5ZCm56aB55SoXG4gICAqL1xuICBkaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiDlj6rmnInkuIDpobXml7YgcmV0dXJuIG51bGxcbiAgICovXG4gIGhpZGVXaGVuU2luZ2xlUGFnZTogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiDlvZPliY3pobXlj5jljJbml7bnmoQgaGFuZGxlclxuICAgKi9cbiAgb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLFxuICAvKipcbiAgICog6K6+572u5q+P6aG15p2h5pWw77yM6buY6K6kIDEwIOadoVxuICAgKi9cbiAgcGFnZVNpemU6IFByb3BUeXBlcy5udW1iZXIsXG4gIC8qKlxuICAgKiDmmK/lkKbmmL7npLrpppbpobXlsL7pobXot7PovazmjInpkq5cbiAgICovXG4gIHNob3dCdXR0b25KdW1wZXI6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICog5piv5ZCm5pi+56S66Lez6L2s6L6T5YWl5qGGXG4gICAqL1xuICBzaG93SW5wdXRKdW1wZXI6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICog6K6+572u5bC65a+4XG4gICAqL1xuICBzaXplOiBQcm9wVHlwZXMub25lT2YoW1wibWluaVwiLCBcInNtYWxsXCIsIFwibWVkaXVtXCIsIFwibGFyZ2VcIl0pLFxuICAvKipcbiAgICog6K6+572u5Li76aKYXG4gICAqL1xuICB0aGVtZTogUHJvcFR5cGVzLm9uZU9mKFtudWxsLCBcImxpZ2h0XCJdKSxcbiAgLyoqXG4gICAqIOaVsOaNruaAu+aVsFxuICAgKi9cbiAgdG90YWw6IFByb3BUeXBlcy5udW1iZXIsXG59XG5cblBhZ2luYXRpb24uZGVmYXVsdFByb3BzID0ge1xuICBhbGlnbjogdW5kZWZpbmVkLFxuICBjbGFzc05hbWU6IHVuZGVmaW5lZCxcbiAgY3VycmVudDogbnVsbCxcbiAgZGVmYXVsdEN1cnJlbnQ6IDEsXG4gIGRpc2FibGVkOiBmYWxzZSxcbiAgaGlkZVdoZW5TaW5nbGVQYWdlOiB0cnVlLFxuICBvbkNoYW5nZTogbm9vcCxcbiAgcGFnZVNpemU6IDEwLFxuICBzaG93QnV0dG9uSnVtcGVyOiBmYWxzZSxcbiAgc2hvd0lucHV0SnVtcGVyOiB0cnVlLFxuICBzaXplOiBcInNtYWxsXCIsXG4gIHRoZW1lOiBudWxsLFxuICB0b3RhbDogMCxcbn1cblxuZXhwb3J0IGRlZmF1bHQgUGFnaW5hdGlvblxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU9BLEtBQUssSUFBSUMsVUFBVSxFQUFFQyxRQUFRLFFBQVEsT0FBTztBQUNuRCxPQUFPQyxTQUFTLE1BQU0sWUFBWTtBQUNsQyxPQUFPQyxVQUFVLE1BQU0sWUFBWTtBQUNuQyxPQUFPQyxPQUFPLE1BQU0sa0JBQWtCO0FBQ3RDLFNBQVNDLGFBQWEsRUFBRUMsZUFBZSxRQUFRLG9CQUFvQjtBQUNuRSxPQUFPQyxNQUFNLE1BQU0sV0FBVztBQUM5QixPQUFPLFNBQVM7QUFFaEIsSUFBTUMsSUFBSSxHQUFHLFNBQVBBLElBQUlBLENBQUEsRUFBUyxDQUFDLENBQUM7QUFDckIsSUFBTUMsTUFBTSxHQUFHLDBCQUEwQjtBQTZEekMsSUFBTUMsVUFBc0MsR0FBRyxTQUF6Q0EsVUFBc0NBLENBQUFDLElBQUEsRUFlcEI7RUFBQSxJQWR0QkMsS0FBSyxHQUFBRCxJQUFBLENBQUxDLEtBQUs7SUFDTEMsU0FBUyxHQUFBRixJQUFBLENBQVRFLFNBQVM7SUFDQUMsV0FBVyxHQUFBSCxJQUFBLENBQXBCSSxPQUFPO0lBQ1BDLGNBQWMsR0FBQUwsSUFBQSxDQUFkSyxjQUFjO0lBQ2RDLFFBQVEsR0FBQU4sSUFBQSxDQUFSTSxRQUFRO0lBQ1JDLGtCQUFrQixHQUFBUCxJQUFBLENBQWxCTyxrQkFBa0I7SUFDbEJDLFFBQVEsR0FBQVIsSUFBQSxDQUFSUSxRQUFRO0lBQ1JDLFFBQVEsR0FBQVQsSUFBQSxDQUFSUyxRQUFRO0lBQ1JDLGdCQUFnQixHQUFBVixJQUFBLENBQWhCVSxnQkFBZ0I7SUFDaEJD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