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>

281 lines (230 loc) 34.2 kB
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } var _excluded = ["autoHidePopup", "dataSource", "defaultValue", "filterOption", "getPopupContainer", "inputProps", "intent", "leftElement", "placeholder", "rightElement", "size", "theme", "value"]; function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; } function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } import * as React from "react"; import PropTypes from "prop-types"; import RcSelect, { Option, OptGroup } from "rc-select"; import { ConfigContext } from "../config-provider"; import Input from "../input"; import omit from "../_util/omit"; import "./style"; var noop = function noop() {}; var Suggest = function (_React$Component) { _inherits(Suggest, _React$Component); var _super = _createSuper(Suggest); function Suggest(props) { var _this; _classCallCheck(this, Suggest); _this = _super.call(this, props); _this.locked = false; _this.suggest = void 0; _this.saveSuggest = function (node) { if (node) { _this.suggest = node; } }; _this.onDropdownVisibleChange = function (open) { var _this$props = _this.props, onDropdownVisibleChange = _this$props.onDropdownVisibleChange, openProp = _this$props.open; if (openProp === null) { _this.setState({ open: open }); } if (onDropdownVisibleChange) onDropdownVisibleChange(open); }; _this.onSearch = function (val) { var onSearch = _this.props.onSearch; var open = _this.state.open; _this.setState({ searchValue: val }); if (!open) { _this.setState({ open: true }); } if (onSearch) { onSearch(val); } }; var defaultOpen = props.defaultOpen, defaultValue = props.defaultValue, _open = props.open, value = props.value; var openState; if (_open !== null) { openState = _open; } else if (defaultOpen !== null) { openState = defaultOpen; } _this.state = { open: openState, searchValue: (value || defaultValue || "").toString() }; return _this; } _createClass(Suggest, [{ key: "render", value: function render() { var _this2 = this; var _this$props2 = this.props, autoHidePopup = _this$props2.autoHidePopup, dataSource = _this$props2.dataSource, defaultValue = _this$props2.defaultValue, filterOptionProp = _this$props2.filterOption, getPopupContainer = _this$props2.getPopupContainer, inputProps = _this$props2.inputProps, intent = _this$props2.intent, leftElement = _this$props2.leftElement, placeholder = _this$props2.placeholder, rightElement = _this$props2.rightElement, size = _this$props2.size, theme = _this$props2.theme, value = _this$props2.value, otherProps = _objectWithoutProperties(_this$props2, _excluded); var _this$state = this.state, openState = _this$state.open, searchValue = _this$state.searchValue; var restProps = omit(otherProps, ["defaultOpen", "onSearch", "onDropdownVisibleChange", "open"]); var selectProps = {}; if (typeof openState === "boolean") { selectProps.open = openState; } if (value !== null) { selectProps.value = value; } else { selectProps.defaultValue = defaultValue; } var filterOption = filterOptionProp || function (inputValue, o) { if (typeof o !== "string") { return o.props.title.toUpperCase().includes(inputValue.toUpperCase()); } return o.toUpperCase().includes(inputValue.toUpperCase()); }; var options = dataSource ? dataSource.filter(function (o) { if (searchValue) { return filterOption(searchValue, o); } return true; }).map(function (item) { if (React.isValidElement(item)) { return item; } return React.createElement(Option, { key: item, value: item }, item); }) : []; if (autoHidePopup && !searchValue) { options = []; } return React.createElement(ConfigContext.Consumer, null, function (_ref) { var getPopupContainerContext = _ref.getPopupContainer; return React.createElement(RcSelect, _extends({ mode: "combobox", menuItemSelectedIcon: null, dropdownMatchSelectWidth: true, dropdownClassName: "adui-suggest-dropdown", defaultActiveFirstOption: true, getPopupContainer: getPopupContainer || getPopupContainerContext, onDropdownVisibleChange: _this2.onDropdownVisibleChange, onSearch: _this2.onSearch, optionFilterProp: "children", prefixCls: "adui-suggest", showSearch: true, ref: _this2.saveSuggest, transitionName: "slide-up", getInputElement: function getInputElement() { return React.createElement(Input, _extends({ intent: intent, leftElement: leftElement, placeholder: placeholder, rightElement: rightElement, size: size, theme: theme }, inputProps)); } }, selectProps, restProps), options); }); } }]); return Suggest; }(React.Component); Suggest.Option = Option; Suggest.OptGroup = OptGroup; Suggest.propTypes = { autoHidePopup: PropTypes.bool, autoFocus: PropTypes.bool, children: PropTypes.node, dataSource: PropTypes.array, defaultOpen: PropTypes.bool, defaultValue: PropTypes.oneOfType([PropTypes.string, PropTypes.number]), filterOption: PropTypes.func, getPopupContainer: PropTypes.func, inputProps: PropTypes.object, intent: PropTypes.oneOf(["normal", "primary", "success", "warning", "danger"]), leftElement: PropTypes.node, notFoundContent: PropTypes.string, onDropdownVisibleChange: PropTypes.func, onInputKeyDown: PropTypes.func, onSearch: PropTypes.func, onSelect: PropTypes.func, open: PropTypes.bool, placeholder: PropTypes.string, rightElement: PropTypes.node, size: PropTypes.oneOf(["mini", "small", "medium", "large"]), theme: PropTypes.oneOf([null, "light"]), value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]) }; Suggest.defaultProps = { autoHidePopup: true, autoFocus: false, children: null, dataSource: [], defaultOpen: null, defaultValue: "", filterOption: undefined, getPopupContainer: null, inputProps: {}, intent: "normal", leftElement: undefined, notFoundContent: null, onDropdownVisibleChange: noop, onInputKeyDown: noop, onSearch: noop, onSelect: noop, open: null, placeholder: "请选择", rightElement: undefined, size: "small", theme: null, value: null }; Suggest.getDerivedStateFromProps = function (_ref2) { var open = _ref2.open, value = _ref2.value; var newState = {}; if (open !== null) { newState.open = open; } if (value !== null) { newState.searchValue = (value || "").toString(); } return Object.keys(newState).length > 0 ? newState : null; }; export default Suggest; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlByb3BUeXBlcyIsIlJjU2VsZWN0IiwiT3B0aW9uIiwiT3B0R3JvdXAiLCJDb25maWdDb250ZXh0IiwiSW5wdXQiLCJvbWl0Iiwibm9vcCIsIlN1Z2dlc3QiLCJwcm9wcyIsImxvY2tlZCIsInN1Z2dlc3QiLCJzYXZlU3VnZ2VzdCIsIm5vZGUiLCJvbkRyb3Bkb3duVmlzaWJsZUNoYW5nZSIsIm9wZW4iLCJvcGVuUHJvcCIsInNldFN0YXRlIiwib25TZWFyY2giLCJ2YWwiLCJzdGF0ZSIsInNlYXJjaFZhbHVlIiwiZGVmYXVsdE9wZW4iLCJkZWZhdWx0VmFsdWUiLCJ2YWx1ZSIsIm9wZW5TdGF0ZSIsInRvU3RyaW5nIiwiYXV0b0hpZGVQb3B1cCIsImRhdGFTb3VyY2UiLCJmaWx0ZXJPcHRpb25Qcm9wIiwiZmlsdGVyT3B0aW9uIiwiZ2V0UG9wdXBDb250YWluZXIiLCJpbnB1dFByb3BzIiwiaW50ZW50IiwibGVmdEVsZW1lbnQiLCJwbGFjZWhvbGRlciIsInJpZ2h0RWxlbWVudCIsInNpemUiLCJ0aGVtZSIsIm90aGVyUHJvcHMiLCJyZXN0UHJvcHMiLCJzZWxlY3RQcm9wcyIsImlucHV0VmFsdWUiLCJvIiwidGl0bGUiLCJ0b1VwcGVyQ2FzZSIsImluY2x1ZGVzIiwib3B0aW9ucyIsImZpbHRlciIsIm1hcCIsIml0ZW0iLCJpc1ZhbGlkRWxlbWVudCIsImdldFBvcHVwQ29udGFpbmVyQ29udGV4dCIsIkNvbXBvbmVudCIsInByb3BUeXBlcyIsImJvb2wiLCJhdXRvRm9jdXMiLCJjaGlsZHJlbiIsImFycmF5Iiwib25lT2ZUeXBlIiwic3RyaW5nIiwibnVtYmVyIiwiZnVuYyIsIm9iamVjdCIsIm9uZU9mIiwibm90Rm91bmRDb250ZW50Iiwib25JbnB1dEtleURvd24iLCJvblNlbGVjdCIsImRlZmF1bHRQcm9wcyIsInVuZGVmaW5lZCIsImdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyIsIm5ld1N0YXRlIiwiT2JqZWN0Iiwia2V5cyIsImxlbmd0aCJdLCJzb3VyY2VzIjpbIi4uLy4uL2NvbXBvbmVudHMvc3VnZ2VzdC9TdWdnZXN0LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiXG5pbXBvcnQgUmNTZWxlY3QsIHsgT3B0aW9uLCBPcHRHcm91cCB9IGZyb20gXCJyYy1zZWxlY3RcIlxuaW1wb3J0IHsgQ29uZmlnQ29udGV4dCB9IGZyb20gXCIuLi9jb25maWctcHJvdmlkZXJcIlxuaW1wb3J0IElucHV0LCB7IElJbnB1dFByb3BzIH0gZnJvbSBcIi4uL2lucHV0XCJcbmltcG9ydCBvbWl0IGZyb20gXCIuLi9fdXRpbC9vbWl0XCJcbmltcG9ydCBcIi4vc3R5bGVcIlxuXG5jb25zdCBub29wID0gKCkgPT4ge31cblxuZXhwb3J0IGludGVyZmFjZSBJU3VnZ2VzdCB7XG4gIGdldFBvcHVwRE9NTm9kZTogKCkgPT4gSFRNTEVsZW1lbnRcbiAgZ2V0SW5wdXRET01Ob2RlOiAoKSA9PiBIVE1MSW5wdXRFbGVtZW50XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSU9wdGlvbiB7XG4gIFtrZXk6IHN0cmluZ106IGFueVxuICBrZXk6IHN0cmluZ1xuICB2YWx1ZTogc3RyaW5nXG4gIGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGVcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJU3VnZ2VzdFByb3BzIHtcbiAgW2tleTogc3RyaW5nXTogYW55XG4gIC8qKlxuICAgKiDmmK/lkKblnKjmkJzntKLmoYbkuLrnqbrml7bvvIzoh6rliqjpmpDol48gcG9wdXBcbiAgICovXG4gIGF1dG9IaWRlUG9wdXA/OiBib29sZWFuXG4gIC8qKlxuICAgKiBpbnB1dCDmoIfnrb7ljp/nlJ/lsZ7mgKcgLSBhdXRvRm9jdXNcbiAgICovXG4gIGF1dG9Gb2N1cz86IGJvb2xlYW5cbiAgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGVcbiAgZGVmYXVsdE9wZW4/OiBib29sZWFuIHwgbnVsbFxuICAvKipcbiAgICog6buY6K6k5YC8IC0g5YaF6YOo6amx5YqoXG4gICAqL1xuICBkZWZhdWx0VmFsdWU/OiBzdHJpbmcgfCBudWxsXG4gIGRhdGFTb3VyY2U/OiBhbnlbXVxuICAvKipcbiAgICog5o6l5pS2IGlucHV0VmFsdWUgb3B0aW9uIOS4pOS4quWPguaVsO+8jOW9kyBvcHRpb24g56ym5ZCI562b6YCJ5p2h5Lu25pe277yM5bqU6L+U5ZueIHRydWXvvIzlj43kuYvliJnov5Tlm54gZmFsc2VcbiAgICovXG4gIGZpbHRlck9wdGlvbj86IChpbnB1dFZhbHVlOiBzdHJpbmcsIG9wdGlvbjogYW55KSA9PiBib29sZWFuXG4gIC8qKlxuICAgKiDmjIflrprlvLnlh7rlsYLnmoTniLbnuqfvvIzpu5jorqTkuLogZG9jdW1lbnQuYm9keVxuICAgKi9cbiAgZ2V0UG9wdXBDb250YWluZXI/OiBudWxsIHwgKChub2RlOiBIVE1MRWxlbWVudCkgPT4gSFRNTEVsZW1lbnQpXG4gIGlucHV0UHJvcHM/OiBJSW5wdXRQcm9wc1xuICAvKipcbiAgICog57G75Z6LXG4gICAqL1xuICBpbnRlbnQ/OiBcIm5vcm1hbFwiIHwgXCJwcmltYXJ5XCIgfCBcInN1Y2Nlc3NcIiB8IFwid2FybmluZ1wiIHwgXCJkYW5nZXJcIlxuICBsZWZ0RWxlbWVudD86IEpTWC5FbGVtZW50XG4gIG5vdEZvdW5kQ29udGVudD86IHN0cmluZyB8IG51bGxcbiAgb25JbnB1dEtleURvd24/OiAoZTogUmVhY3QuS2V5Ym9hcmRFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4gdm9pZFxuICBvbkRyb3Bkb3duVmlzaWJsZUNoYW5nZT86IChvcGVuOiBib29sZWFuKSA9PiB2b2lkXG4gIG9uU2VhcmNoPzogKHZhbDogc3RyaW5nKSA9PiB2b2lkXG4gIG9uU2VsZWN0PzogKHZhbHVlOiBzdHJpbmcsIG9wdGlvbjogSU9wdGlvbikgPT4gdm9pZFxuICBvcGVuPzogbnVsbCB8IGJvb2xlYW5cbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmdcbiAgcmlnaHRFbGVtZW50PzogSlNYLkVsZW1lbnRcbiAgLyoqXG4gICAqIOiuvue9ruWwuuWvuFxuICAgKi9cbiAgc2l6ZT86IFwibWluaVwiIHwgXCJzbWFsbFwiIHwgXCJtZWRpdW1cIiB8IFwibGFyZ2VcIlxuICAvKipcbiAgICog6K6+572u5Li76aKYXG4gICAqL1xuICB0aGVtZT86IG51bGwgfCBcImxpZ2h0XCJcbiAgdmFsdWU/OiBzdHJpbmcgfCBudWxsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVN1Z2dlc3RTdGF0ZSB7XG4gIG9wZW4/OiBib29sZWFuXG4gIHNlYXJjaFZhbHVlPzogc3RyaW5nXG59XG4vKipcbiAqIOS4i+aLiemAieaLqeWZqOOAglxuICovXG5jbGFzcyBTdWdnZXN0IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50PElTdWdnZXN0UHJvcHMsIElTdWdnZXN0U3RhdGU+IHtcbiAgcHVibGljIHN0YXRpYyBPcHRpb246IHR5cGVvZiBPcHRpb24gPSBPcHRpb25cblxuICBwdWJsaWMgc3RhdGljIE9wdEdyb3VwOiB0eXBlb2YgT3B0R3JvdXAgPSBPcHRHcm91cFxuXG4gIHB1YmxpYyBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgIC8qKlxuICAgICAqIOaYr+WQpuWcqOaQnOe0ouahhuS4uuepuuaXtu+8jOiHquWKqOmakOiXjyBwb3B1cFxuICAgICAqL1xuICAgIGF1dG9IaWRlUG9wdXA6IFByb3BUeXBlcy5ib29sLFxuICAgIC8qKlxuICAgICAqIGlucHV0IOagh+etvuWOn+eUn+WxnuaApyAtIGF1dG9Gb2N1c1xuICAgICAqL1xuICAgIGF1dG9Gb2N1czogUHJvcFR5cGVzLmJvb2wsXG4gICAgLyoqXG4gICAgICog5a2Q6IqC54K5XG4gICAgICovXG4gICAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICAgIC8qKlxuICAgICAqIOS4i+aLieWIl+ihqFxuICAgICAqL1xuICAgIGRhdGFTb3VyY2U6IFByb3BUeXBlcy5hcnJheSxcbiAgICAvKipcbiAgICAgKiDlhoXpg6jpqbHliqjvvJrmmK/lkKblsZXlvIBcbiAgICAgKi9cbiAgICBkZWZhdWx0T3BlbjogUHJvcFR5cGVzLmJvb2wsXG4gICAgLyoqXG4gICAgICog6buY6K6k5YC8IC0g5YaF6YOo6amx5YqoXG4gICAgICovXG4gICAgZGVmYXVsdFZhbHVlOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuc3RyaW5nLCBQcm9wVHlwZXMubnVtYmVyXSksXG4gICAgLyoqXG4gICAgICog5o6l5pS2IGlucHV0VmFsdWUgb3B0aW9uIOS4pOS4quWPguaVsO+8jOW9kyBvcHRpb24g56ym5ZCI562b6YCJ5p2h5Lu25pe277yM5bqU6L+U5ZueIHRydWXvvIzlj43kuYvliJnov5Tlm54gZmFsc2VcbiAgICAgKi9cbiAgICBmaWx0ZXJPcHRpb246IFByb3BUeXBlcy5mdW5jLFxuICAgIC8qKlxuICAgICAqIOaMh+WumuW8ueWHuuWxgueahOeItue6p++8jOm7mOiupOS4uiBkb2N1bWVudC5ib2R5XG4gICAgICovXG4gICAgZ2V0UG9wdXBDb250YWluZXI6IFByb3BUeXBlcy5mdW5jLFxuICAgIC8qKlxuICAgICAqIOS8oOmAkue7mSA8SW5wdXQgLz4g55qEIFByb3BzXG4gICAgICovXG4gICAgaW5wdXRQcm9wczogUHJvcFR5cGVzLm9iamVjdCxcbiAgICAvKipcbiAgICAgKiDnsbvlnotcbiAgICAgKi9cbiAgICBpbnRlbnQ6IFByb3BUeXBlcy5vbmVPZihbXG4gICAgICBcIm5vcm1hbFwiLFxuICAgICAgXCJwcmltYXJ5XCIsXG4gICAgICBcInN1Y2Nlc3NcIixcbiAgICAgIFwid2FybmluZ1wiLFxuICAgICAgXCJkYW5nZXJcIixcbiAgICBdKSxcbiAgICAvKipcbiAgICAgKiDliY3nva7lhYPntKBcbiAgICAgKi9cbiAgICBsZWZ0RWxlbWVudDogUHJvcFR5cGVzLm5vZGUsXG4gICAgLyoqXG4gICAgICog5peg5Yy56YWN57uT5p6c5pe255qE5pi+56S65paH5a2XXG4gICAgICovXG4gICAgbm90Rm91bmRDb250ZW50OiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIC8qKlxuICAgICAqIOS4i+aLieWxleekuuWPkeeUn+WPmOWMluaXtueahCBoYW5kbGVy77yM5Y+C5pWw77yaYm9vbFxuICAgICAqL1xuICAgIG9uRHJvcGRvd25WaXNpYmxlQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYyxcbiAgICAvKipcbiAgICAgKiBpbnB1dCBrZXkgcHJlc3Mg5pe255qEIGhhbmRsZXIs5aaC5p6c5oOz56aB55So5Zue6L2m6YCJ5oup77yM5Y+v5Lul5bCd6K+V77yaXG4gICAgICBvbklucHV0S2V5RG93bj17KGUpID0+IHtcbiAgICAgICAgaWYgKGUua2V5ID09PSBcIkVudGVyXCIpIHtcbiAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgIH1cbiAgICAgIH19XG4gICAgICovXG4gICAgb25JbnB1dEtleURvd246IFByb3BUeXBlcy5mdW5jLFxuICAgIC8qKlxuICAgICAqIOaQnOe0ouaXtueahCBoYW5kbGVy77yM5Y+C5pWw77yadmFsdWVcbiAgICAgKi9cbiAgICBvblNlYXJjaDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgLyoqXG4gICAgICog6YCJ5oup5pe255qEIGhhbmRsZXLvvIzlj4LmlbDvvJoodmFsdWUsIG9wdGlvbilcbiAgICAgKi9cbiAgICBvblNlbGVjdDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgLyoqXG4gICAgICog5LuO5aSW6YOo5oyH5a6a5LiL5ouJ5piv5ZCm5bGV5byAXG4gICAgICovXG4gICAgb3BlbjogUHJvcFR5cGVzLmJvb2wsXG4gICAgLyoqXG4gICAgICog6YCJ5oup5qGG6buY6K6k5paH5a2XXG4gICAgICovXG4gICAgcGxhY2Vob2xkZXI6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgLyoqXG4gICAgICog5ZCO572u5YWD57SgXG4gICAgICovXG4gICAgcmlnaHRFbGVtZW50OiBQcm9wVHlwZXMubm9kZSxcbiAgICAvKipcbiAgICAgKiDorr7nva7lsLrlr7hcbiAgICAgKi9cbiAgICBzaXplOiBQcm9wVHlwZXMub25lT2YoW1wibWluaVwiLCBcInNtYWxsXCIsIFwibWVkaXVtXCIsIFwibGFyZ2VcIl0pLFxuICAgIC8qKlxuICAgICAqIOiuvue9ruS4u+mimFxuICAgICAqL1xuICAgIHRoZW1lOiBQcm9wVHlwZXMub25lT2YoW251bGwsIFwibGlnaHRcIl0pLFxuICAgIC8qKlxuICAgICAqIOS7juWklumDqOaMh+WumuW9k+WJjemAieS4remhueeahOWAvFxuICAgICAqL1xuICAgIHZhbHVlOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuc3RyaW5nLCBQcm9wVHlwZXMubnVtYmVyXSksXG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGRlZmF1bHRQcm9wczogSVN1Z2dlc3RQcm9wcyA9IHtcbiAgICBhdXRvSGlkZVBvcHVwOiB0cnVlLFxuICAgIGF1dG9Gb2N1czogZmFsc2UsXG4gICAgY2hpbGRyZW46IG51bGwsXG4gICAgZGF0YVNvdXJjZTogW10sXG4gICAgZGVmYXVsdE9wZW46IG51bGwsXG4gICAgZGVmYXVsdFZhbHVlOiBcIlwiLFxuICAgIGZpbHRlck9wdGlvbjogdW5kZWZpbmVkLFxuICAgIGdldFBvcHVwQ29udGFpbmVyOiBudWxsLFxuICAgIGlucHV0UHJvcHM6IHt9LFxuICAgIGludGVudDogXCJub3JtYWxcIixcbiAgICBsZWZ0RWxlbWVudDogdW5kZWZpbmVkLFxuICAgIG5vdEZvdW5kQ29udGVudDogbnVsbCxcbiAgICBvbkRyb3Bkb3duVmlzaWJsZUNoYW5nZTogbm9vcCxcbiAgICBvbklucHV0S2V5RG93bjogbm9vcCxcbiAgICBvblNlYXJjaDogbm9vcCxcbiAgICBvblNlbGVjdDogbm9vcCxcbiAgICBvcGVuOiBudWxsLFxuICAgIHBsYWNlaG9sZGVyOiBcIuivt+mAieaLqVwiLFxuICAgIHJpZ2h0RWxlbWVudDogdW5kZWZpbmVkLFxuICAgIHNpemU6IFwic21hbGxcIixcbiAgICB0aGVtZTogbnVsbCxcbiAgICB2YWx1ZTogbnVsbCxcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzID0gKHsgb3BlbiwgdmFsdWUgfTogSVN1Z2dlc3RQcm9wcykgPT4ge1xuICAgIGNvbnN0IG5ld1N0YXRlOiBJU3VnZ2VzdFN0YXRlID0ge31cbiAgICBpZiAob3BlbiAhPT0gbnVsbCkge1xuICAgICAgbmV3U3RhdGUub3BlbiA9IG9wZW5cbiAgICB9XG4gICAgaWYgKHZhbHVlICE9PSBudWxsKSB7XG4gICAgICBuZXdTdGF0ZS5zZWFyY2hWYWx1ZSA9ICh2YWx1ZSB8fCBcIlwiKS50b1N0cmluZygpXG4gICAgfVxuICAgIHJldHVybiBPYmplY3Qua2V5cyhuZXdTdGF0ZSkubGVuZ3RoID4gMCA/IG5ld1N0YXRlIDogbnVsbFxuICB9XG5cbiAgcHVibGljIGxvY2tlZCA9IGZhbHNlXG5cbiAgcHVibGljIHN1Z2dlc3Q6IElTdWdnZXN0XG5cbiAgY29uc3RydWN0b3IocHJvcHM6IElTdWdnZXN0UHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcylcbiAgICBjb25zdCB7IGRlZmF1bHRPcGVuLCBkZWZhdWx0VmFsdWUsIG9wZW4sIHZhbHVlIH0gPSBwcm9wc1xuXG4gICAgbGV0IG9wZW5TdGF0ZTogYm9vbGVhbiB8IHVuZGVmaW5lZFxuICAgIGlmIChvcGVuICE9PSBudWxsKSB7XG4gICAgICBvcGVuU3RhdGUgPSBvcGVuXG4gICAgfSBlbHNlIGlmIChkZWZhdWx0T3BlbiAhPT0gbnVsbCkge1xuICAgICAgb3BlblN0YXRlID0gZGVmYXVsdE9wZW5cbiAgICB9XG5cbiAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgb3Blbjogb3BlblN0YXRlLFxuICAgICAgc2VhcmNoVmFsdWU6ICh2YWx1ZSB8fCBkZWZhdWx0VmFsdWUgfHwgXCJcIikudG9TdHJpbmcoKSxcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2F2ZVN1Z2dlc3QgPSAobm9kZTogSVN1Z2dlc3QpID0+IHtcbiAgICBpZiAobm9kZSkge1xuICAgICAgdGhpcy5zdWdnZXN0ID0gbm9kZVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvbkRyb3Bkb3duVmlzaWJsZUNoYW5nZSA9IChvcGVuOiBib29sZWFuKSA9PiB7XG4gICAgY29uc3QgeyBvbkRyb3Bkb3duVmlzaWJsZUNoYW5nZSwgb3Blbjogb3BlblByb3AgfSA9IHRoaXMucHJvcHNcblxuICAgIGlmIChvcGVuUHJvcCA9PT0gbnVsbCkge1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7IG9wZW4gfSlcbiAgICB9XG4gICAgaWYgKG9uRHJvcGRvd25WaXNpYmxlQ2hhbmdlKSBvbkRyb3Bkb3duVmlzaWJsZUNoYW5nZShvcGVuKVxuICB9XG5cbiAgcHVibGljIG9uU2VhcmNoID0gKHZhbDogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgeyBvblNlYXJjaCB9ID0gdGhpcy5wcm9wc1xuICAgIGNvbnN0IHsgb3BlbiB9ID0gdGhpcy5zdGF0ZVxuICAgIHRoaXMuc2V0U3RhdGUoeyBzZWFyY2hWYWx1ZTogdmFsIH0pXG5cbiAgICBpZiAoIW9wZW4pIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoeyBvcGVuOiB0cnVlIH0pXG4gICAgfVxuICAgIGlmIChvblNlYXJjaCkge1xuICAgICAgb25TZWFyY2godmFsKVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyByZW5kZXIoKSB7XG4gICAgY29uc3Qge1xuICAgICAgYXV0b0hpZGVQb3B1cCxcbiAgICAgIGRhdGFTb3VyY2UsXG4gICAgICBkZWZhdWx0VmFsdWUsXG4gICAgICBmaWx0ZXJPcHRpb246IGZpbHRlck9wdGlvblByb3AsXG4gICAgICBnZXRQb3B1cENvbnRhaW5lcixcbiAgICAgIGlucHV0UHJvcHMsXG4gICAgICBpbnRlbnQsXG4gICAgICBsZWZ0RWxlbWVudCxcbiAgICAgIHBsYWNlaG9sZGVyLFxuICAgICAgcmlnaHRFbGVtZW50LFxuICAgICAgc2l6ZSxcbiAgICAgIHRoZW1lLFxuICAgICAgdmFsdWUsXG4gICAgICAuLi5vdGhlclByb3BzXG4gICAgfSA9IHRoaXMucHJvcHNcblxuICAgIGNvbnN0IHsgb3Blbjogb3BlblN0YXRlLCBzZWFyY2hWYWx1ZSB9ID0gdGhpcy5zdGF0ZVxuXG4gICAgY29uc3QgcmVzdFByb3BzID0gb21pdChvdGhlclByb3BzLCBbXG4gICAgICBcImRlZmF1bHRPcGVuXCIsXG4gICAgICBcIm9uU2VhcmNoXCIsXG4gICAgICBcIm9uRHJvcGRvd25WaXNpYmxlQ2hhbmdlXCIsXG4gICAgICBcIm9wZW5cIixcbiAgICBdKVxuXG4gICAgLy8gb3BlblN0YXRlIOWPr+iDveaYryB1bmRlZmluZWQgb3IgbnVsbFxuICAgIGNvbnN0IHNlbGVjdFByb3BzOiB7XG4gICAgICBkZWZhdWx0VmFsdWU/OiBSZWFjdC5SZWFjdFRleHQgfCBudWxsXG4gICAgICBvcGVuPzogYm9vbGVhblxuICAgICAgdmFsdWU/OiBSZWFjdC5SZWFjdFRleHQgfCBudWxsXG4gICAgfSA9IHt9XG4gICAgaWYgKHR5cGVvZiBvcGVuU3RhdGUgPT09IFwiYm9vbGVhblwiKSB7XG4gICAgICBzZWxlY3RQcm9wcy5vcGVuID0gb3BlblN0YXRlXG4gICAgfVxuICAgIGlmICh2YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgc2VsZWN0UHJvcHMudmFsdWUgPSB2YWx1ZVxuICAgIH0gZWxzZSB7XG4gICAgICBzZWxlY3RQcm9wcy5kZWZhdWx0VmFsdWUgPSBkZWZhdWx0VmFsdWVcbiAgICB9XG5cbiAgICBjb25zdCBmaWx0ZXJPcHRpb24gPVxuICAgICAgZmlsdGVyT3B0aW9uUHJvcCB8fFxuICAgICAgKChpbnB1dFZhbHVlOiBzdHJpbmcsIG86IGFueSkgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIG8gIT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICByZXR1cm4gby5wcm9wcy50aXRsZS50b1VwcGVyQ2FzZSgpLmluY2x1ZGVzKGlucHV0VmFsdWUudG9VcHBlckNhc2UoKSlcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gby50b1VwcGVyQ2FzZSgpLmluY2x1ZGVzKGlucHV0VmFsdWUudG9VcHBlckNhc2UoKSlcbiAgICAgIH0pXG5cbiAgICBsZXQgb3B0aW9ucyA9IGRhdGFTb3VyY2VcbiAgICAgID8gZGF0YVNvdXJjZVxuICAgICAgICAgIC5maWx0ZXIoKG8pID0+IHtcbiAgICAgICAgICAgIGlmIChzZWFyY2hWYWx1ZSkge1xuICAgICAgICAgICAgICByZXR1cm4gZmlsdGVyT3B0aW9uKHNlYXJjaFZhbHVlLCBvKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGlmIChSZWFjdC5pc1ZhbGlkRWxlbWVudChpdGVtKSkge1xuICAgICAgICAgICAgICByZXR1cm4gaXRlbVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgPE9wdGlvbiBrZXk9e2l0ZW19IHZhbHVlPXtpdGVtfT5cbiAgICAgICAgICAgICAgICB7aXRlbX1cbiAgICAgICAgICAgICAgPC9PcHRpb24+XG4gICAgICAgICAgICApXG4gICAgICAgICAgfSlcbiAgICAgIDogW11cblxuICAgIGlmIChhdXRvSGlkZVBvcHVwICYmICFzZWFyY2hWYWx1ZSkge1xuICAgICAgb3B0aW9ucyA9IFtdXG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxDb25maWdDb250ZXh0LkNvbnN1bWVyPlxuICAgICAgICB7KHsgZ2V0UG9wdXBDb250YWluZXI6IGdldFBvcHVwQ29udGFpbmVyQ29udGV4dCB9KSA9PiAoXG4gICAgICAgICAgPFJjU2VsZWN0XG4gICAgICAgICAgICBtb2RlPVwiY29tYm9ib3hcIlxuICAgICAgICAgICAgbWVudUl0ZW1TZWxlY3RlZEljb249e251bGx9XG4gICAgICAgICAgICBkcm9wZG93bk1hdGNoU2VsZWN0V2lkdGhcbiAgICAgICAgICAgIGRyb3Bkb3duQ2xhc3NOYW1lPVwiYWR1aS1zdWdnZXN0LWRyb3Bkb3duXCJcbiAgICAgICAgICAgIGRlZmF1bHRBY3RpdmVGaXJzdE9wdGlvblxuICAgICAgICAgICAgZ2V0UG9wdXBDb250YWluZXI9e2dldFBvcHVwQ29udGFpbmVyIHx8IGdldFBvcHVwQ29udGFpbmVyQ29udGV4dH1cbiAgICAgICAgICAgIG9uRHJvcGRvd25WaXNpYmxlQ2hhbmdlPXt0aGlzLm9uRHJvcGRvd25WaXNpYmxlQ2hhbmdlfVxuICAgICAgICAgICAgb25TZWFyY2g9e3RoaXMub25TZWFyY2h9XG4gICAgICAgICAgICBvcHRpb25GaWx0ZXJQcm9wPVwiY2hpbGRyZW5cIlxuICAgICAgICAgICAgcHJlZml4Q2xzPVwiYWR1aS1zdWdnZXN0XCJcbiAgICAgICAgICAgIHNob3dTZWFyY2hcbiAgICAgICAgICAgIHJlZj17dGhpcy5zYXZlU3VnZ2VzdH1cbiAgICAgICAgICAgIHRyYW5zaXRpb25OYW1lPVwic2xpZGUtdXBcIlxuICAgICAgICAgICAgZ2V0SW5wdXRFbGVtZW50PXsoKSA9PiAoXG4gICAgICAgICAgICAgIDxJbnB1dFxuICAgICAgICAgICAgICAgIGludGVudD17aW50ZW50fVxuICAgICAgICAgICAgICAgIGxlZnRFbGVtZW50PXtsZWZ0RWxlbWVudH1cbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17cGxhY2Vob2xkZXJ9XG4gICAgICAgICAgICAgICAgcmlnaHRFbGVtZW50PXtyaWdodEVsZW1lbnR9XG4gICAgICAgICAgICAgICAgc2l6ZT17c2l6ZX1cbiAgICAgICAgICAgICAgICB0aGVtZT17dGhlbWV9XG4gICAgICAgICAgICAgICAgey4uLmlucHV0UHJvcHN9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgey4uLnNlbGVjdFByb3BzfVxuICAgICAgICAgICAgey4uLnJlc3RQcm9wc31cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7b3B0aW9uc31cbiAgICAgICAgICA8L1JjU2VsZWN0PlxuICAgICAgICApfVxuICAgICAgPC9Db25maWdDb250ZXh0LkNvbnN1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