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>
136 lines (135 loc) • 31 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 _Context = require("./Context");
var _configProvider = require("../config-provider");
var _Group = _interopRequireDefault(require("./Group"));
var _icon = _interopRequireDefault(require("../icon"));
var _popover = _interopRequireDefault(require("../popover"));
require("./style");
var _excluded = ["checked", "children", "className", "disabled", "helper", "helperIcon", "helperProps", "onChange", "onClick", "size", "value"];
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 _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 _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 _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 prefix = "adui-channels-radio";
var Radio = (0, _react.forwardRef)(function (_ref, ref) {
var checkedProp = _ref.checked,
children = _ref.children,
className = _ref.className,
disabled = _ref.disabled,
helper = _ref.helper,
helperIcon = _ref.helperIcon,
helperProps = _ref.helperProps,
onChange = _ref.onChange,
onClick = _ref.onClick,
sizeProp = _ref.size,
value = _ref.value,
otherProps = _objectWithoutProperties(_ref, _excluded);
var _useState = (0, _react.useState)(!!checkedProp),
_useState2 = _slicedToArray(_useState, 2),
checked = _useState2[0],
setChecked = _useState2[1];
var _useContext = (0, _react.useContext)(_Context.GroupContext),
disabledContext = _useContext.disabled,
handleGroupValueChange = _useContext.handleGroupValueChange,
sizeContext = _useContext.size,
valueContext = _useContext.value;
if (checkedProp !== null && checked !== checkedProp) {
setChecked(!!checkedProp);
}
var _useContext2 = (0, _react.useContext)(_configProvider.ConfigContext),
sizeConfig = _useContext2.size;
var size = (0, _configProvider.getComputedSize)(sizeProp, sizeContext, sizeConfig);
var popover = helper ? _react["default"].createElement(_popover["default"], _extends({
alignEdge: false,
popup: helper
}, helperProps), _react["default"].createElement(_icon["default"], {
icon: helperIcon || "help-circle",
color: "var(--gray-600)",
interactive: true,
className: "".concat(prefix, "-helper")
})) : null;
var classSet = (0, _classnames["default"])(className, "".concat(prefix, "-base"), "".concat(prefix, "-").concat(size), _defineProperty(_defineProperty(_defineProperty({}, "".concat(prefix, "-checked"), valueContext !== null && valueContext !== undefined ? valueContext === (value === null ? children === null || children === void 0 ? void 0 : children.toString() : value) : checked), "".concat(prefix, "-noChildren"), !children), "".concat(prefix, "-disabled"), disabledContext || disabled));
var handleClick = function handleClick(e) {
if (onClick) {
onClick(e);
}
var computedValue = value === null ? children === null || children === void 0 ? void 0 : children.toString() : value;
if ((valueContext !== null ? valueContext === computedValue : checked) || disabled || disabledContext) {
return;
}
if (handleGroupValueChange) {
handleGroupValueChange(computedValue === undefined ? "" : computedValue);
} else {
if (checkedProp === null) {
setChecked(true);
}
if (onChange) {
onChange(true);
}
}
};
var handleKeyDown = function handleKeyDown(e) {
if (e.key === "Enter") {
handleClick(e);
}
};
return _react["default"].createElement("label", _extends({
"aria-checked": checked,
className: classSet,
onClick: handleClick,
onKeyDown: handleKeyDown,
ref: ref,
role: "radio"
}, otherProps), _react["default"].createElement("span", {
className: "".concat(prefix, "-indicator")
}), !!children && _react["default"].createElement("span", null, children), popover);
});
Radio.Group = _Group["default"];
Radio.displayName = "Radio";
Radio.propTypes = {
checked: _propTypes["default"].oneOf([null, true, false]),
children: _propTypes["default"].node,
className: _propTypes["default"].string,
disabled: _propTypes["default"].bool,
helper: _propTypes["default"].node,
helperIcon: _propTypes["default"].any,
helperProps: _propTypes["default"].object,
onChange: _propTypes["default"].func,
onClick: _propTypes["default"].func,
size: _propTypes["default"].oneOf(["mini", "small", "medium", "large"]),
value: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].number])
};
Radio.defaultProps = {
checked: null,
children: "",
className: undefined,
disabled: false,
helper: null,
helperIcon: "help-circle",
helperProps: {},
onChange: null,
onClick: null,
size: "small",
value: null
};
var _default = exports["default"] = Radio;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfcHJvcFR5cGVzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9jbGFzc25hbWVzIiwiX0NvbnRleHQiLCJfY29uZmlnUHJvdmlkZXIiLCJfR3JvdXAiLCJfaWNvbiIsIl9wb3BvdmVyIiwiX2V4Y2x1ZGVkIiwiZSIsIl9fZXNNb2R1bGUiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJXZWFrTWFwIiwiciIsInQiLCJfdHlwZW9mIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0IiwiX2RlZmluZVByb3BlcnR5IiwiX3RvUHJvcGVydHlLZXkiLCJ2YWx1ZSIsImVudW1lcmFibGUiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsIl90b1ByaW1pdGl2ZSIsIlN5bWJvbCIsInRvUHJpbWl0aXZlIiwiVHlwZUVycm9yIiwiU3RyaW5nIiwiTnVtYmVyIiwiX2V4dGVuZHMiLCJhc3NpZ24iLCJiaW5kIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiYXBwbHkiLCJfc2xpY2VkVG9BcnJheSIsIl9hcnJheVdpdGhIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXlMaW1pdCIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVJlc3QiLCJfYXJyYXlMaWtlVG9BcnJheSIsInRvU3RyaW5nIiwic2xpY2UiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJBcnJheSIsImZyb20iLCJ0ZXN0IiwibCIsIml0ZXJhdG9yIiwiZiIsIm8iLCJuZXh0IiwiZG9uZSIsInB1c2giLCJpc0FycmF5IiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJzIiwiaW5jbHVkZXMiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsInByZWZpeCIsIlJhZGlvIiwiZm9yd2FyZFJlZiIsIl9yZWYiLCJyZWYiLCJjaGVja2VkUHJvcCIsImNoZWNrZWQiLCJjaGlsZHJlbiIsImNsYXNzTmFtZSIsImRpc2FibGVkIiwiaGVscGVyIiwiaGVscGVySWNvbiIsImhlbHBlclByb3BzIiwib25DaGFuZ2UiLCJvbkNsaWNrIiwic2l6ZVByb3AiLCJzaXplIiwib3RoZXJQcm9wcyIsIl91c2VTdGF0ZSIsInVzZVN0YXRlIiwiX3VzZVN0YXRlMiIsInNldENoZWNrZWQiLCJfdXNlQ29udGV4dCIsInVzZUNvbnRleHQiLCJHcm91cENvbnRleHQiLCJkaXNhYmxlZENvbnRleHQiLCJoYW5kbGVHcm91cFZhbHVlQ2hhbmdlIiwic2l6ZUNvbnRleHQiLCJ2YWx1ZUNvbnRleHQiLCJfdXNlQ29udGV4dDIiLCJDb25maWdDb250ZXh0Iiwic2l6ZUNvbmZpZyIsImdldENvbXB1dGVkU2l6ZSIsInBvcG92ZXIiLCJjcmVhdGVFbGVtZW50IiwiYWxpZ25FZGdlIiwicG9wdXAiLCJpY29uIiwiY29sb3IiLCJpbnRlcmFjdGl2ZSIsImNvbmNhdCIsImNsYXNzU2V0IiwiY2xhc3NOYW1lcyIsInVuZGVmaW5lZCIsImhhbmRsZUNsaWNrIiwiY29tcHV0ZWRWYWx1ZSIsImhhbmRsZUtleURvd24iLCJrZXkiLCJvbktleURvd24iLCJyb2xlIiwiR3JvdXAiLCJkaXNwbGF5TmFtZSIsInByb3BUeXBlcyIsIlByb3BUeXBlcyIsIm9uZU9mIiwibm9kZSIsInN0cmluZyIsImJvb2wiLCJhbnkiLCJvYmplY3QiLCJmdW5jIiwib25lT2ZUeXBlIiwibnVtYmVyIiwiZGVmYXVsdFByb3BzIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vY29tcG9uZW50cy9jaGFubmVscy1yYWRpby9SYWRpby50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUganN4LWExMXkvbm8tbm9uaW50ZXJhY3RpdmUtZWxlbWVudC10by1pbnRlcmFjdGl2ZS1yb2xlICovXG5pbXBvcnQgUmVhY3QsIHsgZm9yd2FyZFJlZiwgdXNlQ29udGV4dCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiXG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tIFwiY2xhc3NuYW1lc1wiXG5pbXBvcnQgeyBHcm91cENvbnRleHQgfSBmcm9tIFwiLi9Db250ZXh0XCJcbmltcG9ydCB7IENvbmZpZ0NvbnRleHQsIGdldENvbXB1dGVkU2l6ZSB9IGZyb20gXCIuLi9jb25maWctcHJvdmlkZXJcIlxuaW1wb3J0IEdyb3VwIGZyb20gXCIuL0dyb3VwXCJcbmltcG9ydCBJY29uLCB7IEljb25OYW1lcyB9IGZyb20gXCIuLi9pY29uXCJcbmltcG9ydCBQb3BvdmVyLCB7IElQb3BvdmVyUHJvcHMgfSBmcm9tIFwiLi4vcG9wb3ZlclwiXG5pbXBvcnQgXCIuL3N0eWxlXCJcblxuY29uc3QgcHJlZml4ID0gXCJhZHVpLWNoYW5uZWxzLXJhZGlvXCJcblxuZXhwb3J0IGludGVyZmFjZSBJUmFkaW9Qcm9wcyB7XG4gIFtrZXk6IHN0cmluZ106IGFueVxuICAvKipcbiAgICog5piv5ZCm6YCJ5LitXG4gICAqL1xuICBjaGVja2VkPzogbnVsbCB8IGJvb2xlYW5cbiAgLyoqXG4gICAqIOWtkOiKgueCuVxuICAgKi9cbiAgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGVcbiAgLyoqXG4gICAqIOmZhOWKoOexu+WQjVxuICAgKi9cbiAgY2xhc3NOYW1lPzogc3RyaW5nXG4gIC8qKlxuICAgKiDmmK/lkKbnpoHnlKhcbiAgICovXG4gIGRpc2FibGVkPzogYm9vbGVhblxuICAvKipcbiAgICog5Yqg5YWl6Zeu5Y+35rCU5rOh5o+Q56S65YaF5a65XG4gICAqL1xuICBoZWxwZXI/OiBSZWFjdC5SZWFjdE5vZGVcbiAgLyoqXG4gICAqIOiHquWumuS5iemXruWPt+awlOazoeeahCBJY29uXG4gICAqL1xuICBoZWxwZXJJY29uPzogSWNvbk5hbWVzXG4gIC8qKlxuICAgKiDpl67lj7fmsJTms6Hmj5DnpLrnmoQgcHJvcHPvvIzkvJrlsIbmraTlr7nosaHpg73kvKDpgJLnu5kgPFBvcG92ZXIgLz5cbiAgICovXG4gIGhlbHBlclByb3BzPzogSVBvcG92ZXJQcm9wc1xuICAvKipcbiAgICog6YCJ5Lit5oCB5Y+R55Sf5Y+Y5YyW5pe255qEIGhhbmRsZXJcbiAgICovXG4gIG9uQ2hhbmdlPzogKChjaGVja2VkOiBib29sZWFuKSA9PiB2b2lkKSB8IG51bGxcbiAgLyoqXG4gICAqIOeCueWHu+aXtueahCBoYW5kbGVyXG4gICAqL1xuICBvbkNsaWNrPzpcbiAgICB8ICgoXG4gICAgICAgIGU6XG4gICAgICAgICAgfCBSZWFjdC5Nb3VzZUV2ZW50PEhUTUxMYWJlbEVsZW1lbnQ+XG4gICAgICAgICAgfCBSZWFjdC5LZXlib2FyZEV2ZW50PEhUTUxMYWJlbEVsZW1lbnQ+XG4gICAgICApID0+IHZvaWQpXG4gICAgfCBudWxsXG4gIC8qKlxuICAgKiDorr7nva7lsLrlr7hcbiAgICovXG4gIHNpemU/OiBcIm1pbmlcIiB8IFwic21hbGxcIiB8IFwibWVkaXVtXCIgfCBcImxhcmdlXCJcbiAgLyoqXG4gICAqIOWAvO+8jOWPquWcqOS9v+eUqCBSYWRpby5Hcm91cCDml7bkvJror7vlj5bkvb/nlKhcbiAgICovXG4gIHZhbHVlPzogbnVsbCB8IFJlYWN0LlJlYWN0VGV4dFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElSYWRpb1xuICBleHRlbmRzIFJlYWN0LkZvcndhcmRSZWZFeG90aWNDb21wb25lbnQ8XG4gICAgSVJhZGlvUHJvcHMgJiBSZWFjdC5SZWZBdHRyaWJ1dGVzPEhUTUxMYWJlbEVsZW1lbnQ+XG4gID4ge1xuICBHcm91cDogdHlwZW9mIEdyb3VwXG59XG5cbi8qKlxuICog5Y2V6YCJ5o+Q5L6b57uZ55So5oi35Zyo5LqS5pal55qE5aSa5Liq6YCJ6aG55Lit77yM5a+56YCJ6aG55YaF5a656L+b6KGM5Y2V5Liq6YCJ5oup44CCXG4gKi9cbi8vIEB0cy1pZ25vcmVcbmNvbnN0IFJhZGlvOiBJUmFkaW8gPSBmb3J3YXJkUmVmKFxuICAoXG4gICAge1xuICAgICAgY2hlY2tlZDogY2hlY2tlZFByb3AsXG4gICAgICBjaGlsZHJlbixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICAgIGRpc2FibGVkLFxuICAgICAgaGVscGVyLFxuICAgICAgaGVscGVySWNvbixcbiAgICAgIGhlbHBlclByb3BzLFxuICAgICAgb25DaGFuZ2UsXG4gICAgICBvbkNsaWNrLFxuICAgICAgc2l6ZTogc2l6ZVByb3AsXG4gICAgICB2YWx1ZSxcbiAgICAgIC4uLm90aGVyUHJvcHNcbiAgICB9OiBJUmFkaW9Qcm9wcyxcbiAgICByZWZcbiAgKSA9PiB7XG4gICAgY29uc3QgW2NoZWNrZWQsIHNldENoZWNrZWRdID0gdXNlU3RhdGUoISFjaGVja2VkUHJvcClcbiAgICBjb25zdCB7XG4gICAgICBkaXNhYmxlZDogZGlzYWJsZWRDb250ZXh0LFxuICAgICAgaGFuZGxlR3JvdXBWYWx1ZUNoYW5nZSxcbiAgICAgIHNpemU6IHNpemVDb250ZXh0LFxuICAgICAgdmFsdWU6IHZhbHVlQ29udGV4dCxcbiAgICB9ID0gdXNlQ29udGV4dChHcm91cENvbnRleHQpXG5cbiAgICAvLyDnm7jlvZPkuo7nlJ/lkb3lkajmnJ8gZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzXG4gICAgaWYgKGNoZWNrZWRQcm9wICE9PSBudWxsICYmIGNoZWNrZWQgIT09IGNoZWNrZWRQcm9wKSB7XG4gICAgICBzZXRDaGVja2VkKCEhY2hlY2tlZFByb3ApXG4gICAgfVxuXG4gICAgY29uc3QgeyBzaXplOiBzaXplQ29uZmlnIH0gPSB1c2VDb250ZXh0KENvbmZpZ0NvbnRleHQpXG5cbiAgICBjb25zdCBzaXplID0gZ2V0Q29tcHV0ZWRTaXplKHNpemVQcm9wLCBzaXplQ29udGV4dCwgc2l6ZUNvbmZpZylcblxuICAgIGNvbnN0IHBvcG92ZXIgPSBoZWxwZXIgPyAoXG4gICAgICA8UG9wb3ZlciBhbGlnbkVkZ2U9e2ZhbHNlfSBwb3B1cD17aGVscGVyfSB7Li4uaGVscGVyUHJvcHN9PlxuICAgICAgICA8SWNvblxuICAgICAgICAgIGljb249e2hlbHBlckljb24gfHwgXCJoZWxwLWNpcmNsZVwifVxuICAgICAgICAgIGNvbG9yPVwidmFyKC0tZ3JheS02MDApXCJcbiAgICAgICAgICBpbnRlcmFjdGl2ZVxuICAgICAgICAgIGNsYXNzTmFtZT17YCR7cHJlZml4fS1oZWxwZXJgfVxuICAgICAgICAvPlxuICAgICAgPC9Qb3BvdmVyPlxuICAgICkgOiBudWxsXG5cbiAgICAvKipcbiAgICAgKiDlvZPmnIkgcmFkaW9Hcm91cCBjb250ZXh0IOaXtu+8jOS9v+eUqCB2YWx1Ze+8mlxuICAgICAqIOWmguaenOWtmOWcqCB2YWx1ZSBwcm9w77yM5YiZ55u05o6l5L2/55SoIHZhbHVl77ybXG4gICAgICog5aaC5p6c5LiN5a2Y5Zyo77yM5bCxIHN0cmluZyDljJYgY2hpbGRyZW4g5L2c5Li6IHZhbHVl44CCXG4gICAgICovXG4gICAgY29uc3QgY2xhc3NTZXQgPSBjbGFzc05hbWVzKFxuICAgICAgY2xhc3NOYW1lLFxuICAgICAgYCR7cHJlZml4fS1iYXNlYCxcbiAgICAgIGAke3ByZWZpeH0tJHtzaXplfWAsXG4gICAgICB7XG4gICAgICAgIFtgJHtwcmVmaXh9LWNoZWNrZWRgXTpcbiAgICAgICAgICB2YWx1ZUNvbnRleHQgIT09IG51bGwgJiYgdmFsdWVDb250ZXh0ICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgID8gdmFsdWVDb250ZXh0ID09PSAodmFsdWUgPT09IG51bGwgPyBjaGlsZHJlbj8udG9TdHJpbmcoKSA6IHZhbHVlKVxuICAgICAgICAgICAgOiBjaGVja2VkLFxuICAgICAgICBbYCR7cHJlZml4fS1ub0NoaWxkcmVuYF06ICFjaGlsZHJlbixcbiAgICAgICAgW2Ake3ByZWZpeH0tZGlzYWJsZWRgXTogZGlzYWJsZWRDb250ZXh0IHx8IGRpc2FibGVkLFxuICAgICAgfVxuICAgIClcblxuICAgIGNvbnN0IGhhbmRsZUNsaWNrID0gKFxuICAgICAgZTpcbiAgICAgICAgfCBSZWFjdC5Nb3VzZUV2ZW50PEhUTUxMYWJlbEVsZW1lbnQ+XG4gICAgICAgIHwgUmVhY3QuS2V5Ym9hcmRFdmVudDxIVE1MTGFiZWxFbGVtZW50PlxuICAgICkgPT4ge1xuICAgICAgaWYgKG9uQ2xpY2spIHtcbiAgICAgICAgb25DbGljayhlKVxuICAgICAgfVxuICAgICAgY29uc3QgY29tcHV0ZWRWYWx1ZSA9IHZhbHVlID09PSBudWxsID8gY2hpbGRyZW4/LnRvU3RyaW5nKCkgOiB2YWx1ZVxuICAgICAgLyoqXG4gICAgICAgKiDljZXpgInkuI7lpJrpgInlpITnkIbngrnlh7vnmoTkuI3lkIzlnKjkuo7vvJpcbiAgICAgICAqIOWNlemAiemAieS4reeKtuaAgeaYr+WNlemhueeahO+8jOS4gOaXpumAieS4reS4jeWGjeinpuWPkeS6i+S7tuOAglxuICAgICAgICovXG4gICAgICBpZiAoXG4gICAgICAgICh2YWx1ZUNvbnRleHQgIT09IG51bGwgPyB2YWx1ZUNvbnRleHQgPT09IGNvbXB1dGVkVmFsdWUgOiBjaGVja2VkKSB8fFxuICAgICAgICBkaXNhYmxlZCB8fFxuICAgICAgICBkaXNhYmxlZENvbnRleHRcbiAgICAgICkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGlmIChoYW5kbGVHcm91cFZhbHVlQ2hhbmdlKSB7XG4gICAgICAgIGhhbmRsZUdyb3VwVmFsdWVDaGFuZ2UoY29tcHV0ZWRWYWx1ZSA9PT0gdW5kZWZpbmVkID8gXCJcIiA6IGNvbXB1dGVkVmFsdWUpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoY2hlY2tlZFByb3AgPT09IG51bGwpIHtcbiAgICAgICAgICBzZXRDaGVja2VkKHRydWUpXG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9uQ2hhbmdlKSB7XG4gICAgICAgICAgb25DaGFuZ2UodHJ1ZSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGhhbmRsZUtleURvd24gPSAoZTogUmVhY3QuS2V5Ym9hcmRFdmVudDxIVE1MTGFiZWxFbGVtZW50PikgPT4ge1xuICAgICAgaWYgKGUua2V5ID09PSBcIkVudGVyXCIpIHtcbiAgICAgICAgaGFuZGxlQ2xpY2soZSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPGxhYmVsXG4gICAgICAgIGFyaWEtY2hlY2tlZD17Y2hlY2tlZH1cbiAgICAgICAgY2xhc3NOYW1lPXtjbGFzc1NldH1cbiAgICAgICAgb25DbGljaz17aGFuZGxlQ2xpY2t9XG4gICAgICAgIG9uS2V5RG93bj17aGFuZGxlS2V5RG93bn1cbiAgICAgICAgcmVmPXtyZWZ9XG4gICAgICAgIHJvbGU9XCJyYWRpb1wiXG4gICAgICAgIHsuLi5vdGhlclByb3BzfVxuICAgICAgPlxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2Ake3ByZWZpeH0taW5kaWNhdG9yYH0gLz5cbiAgICAgICAgeyEhY2hpbGRyZW4gJiYgPHNwYW4+e2NoaWxkcmVufTwvc3Bhbj59XG4gICAgICAgIHtwb3BvdmVyfVxuICAgICAgPC9sYWJlbD5cbiAgICApXG4gIH1cbilcblxuUmFkaW8uR3JvdXAgPSBHcm91cFxuXG5SYWRpby5kaXNwbGF5TmFtZSA9IFwiUmFkaW9cIlxuXG5SYWRpby5wcm9wVHlwZXMgPSB7XG4gIC8qKlxuICAgKiDmmK/lkKbpgInkuK1cbiAgICovXG4gIGNoZWNrZWQ6IFByb3BUeXBlcy5vbmVPZihbbnVsbCwgdHJ1ZSwgZmFsc2VdKSxcbiAgLyoqXG4gICAqIOWtkOiKgueCuVxuICAgKi9cbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICAvKipcbiAgICog6ZmE5Yqg57G75ZCNXG4gICAqL1xuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiDmmK/lkKbnpoHnlKhcbiAgICovXG4gIGRpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIOWKoOWFpemXruWPt+awlOazoeaPkOekuuWGheWuuVxuICAgKi9cbiAgaGVscGVyOiBQcm9wVHlwZXMubm9kZSxcbiAgLyoqXG4gICAqIOiHquWumuS5iemXruWPt+awlOazoeeahCBJY29uXG4gICAqL1xuICBoZWxwZXJJY29uOiBQcm9wVHlwZXMuYW55LFxuICAvKipcbiAgICog6Zeu5Y+35rCU5rOh5o+Q56S655qEIHByb3Bz77yM5Lya5bCG5q2k5a+56LGh6YO95Lyg6YCS57uZIDxQb3BvdmVyIC8+XG4gICAqL1xuICBoZWxwZXJQcm9wczogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqXG4gICAqIOmAieS4reaAgeWPkeeUn+WPmOWMluaXtueahCBoYW5kbGVyXG4gICAqL1xuICBvbkNoYW5nZTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKlxuICAgKiDngrnlh7vml7bnmoQgaGFuZGxlclxuICAgKi9cbiAgb25DbGljazogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKlxuICAgKiDorr7nva7lsLrlr7hcbiAgICovXG4gIHNpemU6IFByb3BUeXBlcy5vbmVPZihbXCJtaW5pXCIsIFwic21hbGxcIiwgXCJtZWRpdW1cIiwgXCJsYXJnZVwiXSksXG4gIC8qKlxuICAgKiDlgLzvvIzlj6rlnKjkvb/nlKggUmFkaW8uR3JvdXAg5pe25Lya6K+75Y+W5L2/55SoXG4gICAqL1xuICB2YWx1ZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLnN0cmluZywgUHJvcFR5cGVzLm51bWJlcl0pLFxufVxuXG5SYWRpby5kZWZhdWx0UHJvcHMgPSB7XG4gIGNoZWNrZWQ6IG51bGwsXG4gIGNoaWxkcmVuOiBcIlwiLFxuICBjbGFzc05hbWU6IHVuZGVmaW5lZCxcbiAgZGlzYWJsZWQ6IGZhbHNlLFxuICBoZWxwZXI6IG51bGwsXG4gIGhlbHBlckljb246IFwiaGVscC1jaXJjbGVcIixcbiAgaGVscGVyUHJvcHM6IHt9LFxuICBvbkNoYW5nZTogbnVsbCxcbiAgb25DbGljazogbnVsbCxcbiAgc2l6ZTogXCJzbWFsbFwiLFxuICB2YWx1ZTogbnVsbCxcbn1cblxuZXhwb3J0IGRlZmF1bHQgUmFkaW9cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUNBLElBQUFBLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFVBQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFHLFdBQUEsR0FBQUQsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFJLFFBQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLGVBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLE1BQUEsR0FBQUosc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFPLEtBQUEsR0FBQUwsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFRLFFBQUEsR0FBQU4sc0JBQUEsQ0FBQUYsT0FBQTtBQUNBQSxPQUFBO0FBQWdCLElBQUFTLFNBQUE7QUFBQSxTQUFBUCx1QkFBQVEsQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLGdCQUFBQSxDQUFBO0FBQUEsU0FBQUUseUJBQUFGLENBQUEsNkJBQUFHLE9BQUEsbUJBQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUQsd0JBQUEsWUFBQUEseUJBQUFGLENBQUEsV0FBQUEsQ0FBQSxHQUFBSyxDQUFBLEdBQUFELENBQUEsS0FBQUosQ0FBQTtBQUFBLFNBQUFYLHdCQUFBVyxDQUFBLEVBQUFJLENBQUEsU0FBQUEsQ0FBQSxJQUFBSixDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxTQUFBRCxDQUFBLGVBQUFBLENBQUEsZ0JBQUFNLE9BQUEsQ0FBQU4sQ0FBQSwwQkFBQUEsQ0FBQSxzQkFBQUEsQ0FBQSxRQUFBSyxDQUFBLEdBQUFILHdCQUFBLENBQUFFLENBQUEsT0FBQUMsQ0FBQSxJQUFBQSxDQUFBLENBQUFFLEdBQUEsQ0FBQVAsQ0FBQSxVQUFBSyxDQUFBLENBQUFHLEdBQUEs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