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>

210 lines (209 loc) 40.6 kB
"use strict"; 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"); require("./style"); var _excluded = ["autoFocus", "className", "countHanzi", "defaultValue", "disabled", "id", "intent", "limit", "name", "onBlur", "onChange", "onFocus", "onKeyDown", "onPressEnter", "onScroll", "placeholder", "required", "resize", "size", "theme", "type", "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 _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-input"; var Textarea = (0, _react.forwardRef)(function (_ref, ref) { var autoFocus = _ref.autoFocus, className = _ref.className, countHanzi = _ref.countHanzi, defaultValue = _ref.defaultValue, disabled = _ref.disabled, id = _ref.id, intent = _ref.intent, limit = _ref.limit, name = _ref.name, onBlur = _ref.onBlur, onChange = _ref.onChange, onFocus = _ref.onFocus, onKeyDown = _ref.onKeyDown, onPressEnter = _ref.onPressEnter, onScroll = _ref.onScroll, placeholder = _ref.placeholder, required = _ref.required, resize = _ref.resize, sizeProp = _ref.size, theme = _ref.theme, type = _ref.type, value = _ref.value, otherProps = _objectWithoutProperties(_ref, _excluded); var _useState = (0, _react.useState)(false), _useState2 = _slicedToArray(_useState, 2), focused = _useState2[0], setFocused = _useState2[1]; var textareaRef = (0, _react.useRef)(null); var _useContext = (0, _react.useContext)(_configProvider.ConfigContext), sizeContext = _useContext.size; var size = (0, _configProvider.getComputedSize)(sizeProp, sizeContext); var handleChange = function handleChange(e) { if (!disabled && onChange) { var val = e.target.value.replace(/\u0008|\u0009|\u000B|\u000C|\u000D|\u00A0|\u2028|\u2029|\uFEFF/g, ""); onChange(e, val); } }; var handleKeyDown = function handleKeyDown(e) { if (e.key === "Enter" && onPressEnter) { onPressEnter(e); } if (onKeyDown) { onKeyDown(e); } }; var handleBlur = function handleBlur(e) { setFocused(false); if (onBlur) { onBlur(e); } }; var handleFocus = function handleFocus(e) { setFocused(true); if (onFocus) { onFocus(e); } }; var fixControlledValue = function fixControlledValue(val) { if (typeof val === "undefined" || val === null) { return ""; } return val; }; var getFormatStrLeng = function getFormatStrLeng(str) { var len = str.length; var realLength = 0; var charCode = -1; for (var i = 0; i < len; i += 1) { charCode = str.charCodeAt(i); if (charCode >= 0 && charCode <= 128) { realLength += 0.5; } else { realLength += 1; } } return Math.ceil(realLength); }; (0, _react.useImperativeHandle)(ref, function () { return { input: textareaRef === null || textareaRef === void 0 ? void 0 : textareaRef.current, handleChange: handleChange, handleKeyDown: handleKeyDown, handleBlur: handleBlur, handleFocus: handleFocus }; }); var textareaProps = { autoFocus: autoFocus, className: "".concat(prefix, "-base"), disabled: disabled, id: id, name: name, onBlur: handleBlur, onChange: handleChange, onFocus: handleFocus, onKeyDown: handleKeyDown, onScroll: onScroll, placeholder: placeholder, ref: textareaRef, required: required, style: { resize: resize }, type: type }; if (value !== null) { textareaProps.value = fixControlledValue(value); } else { textareaProps.defaultValue = fixControlledValue(defaultValue); } var length; if (limit) { (0, _warning["default"])(resize === "none", "Input.Textarea", "不允许同时使用 prop `limit` 与 prop `resize`"); if (value) { length = countHanzi ? getFormatStrLeng(value) : value.length; } else { (0, _warning["default"])(value !== null, "Input.Textarea", "如果要限制字数,必须从外部控制 value。"); length = 0; } } var classSet = (0, _classnames["default"])(className, "".concat(prefix, "-wrapper"), "".concat(prefix, "-wrapper_textarea"), "".concat(prefix, "-").concat(size), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, "".concat(prefix, "-").concat(theme), theme), "".concat(prefix, "-disabled"), disabled), "".concat(prefix, "-limited"), !!limit), "".concat(prefix, "-normal"), intent === "normal"), "".concat(prefix, "-primary"), intent === "primary"), "".concat(prefix, "-success"), intent === "success"), "".concat(prefix, "-warning"), intent === "warning"), "".concat(prefix, "-danger"), intent === "danger" || length && limit && length > limit), "".concat(prefix, "-focused"), focused)); return _react["default"].createElement("div", _extends({ className: classSet }, otherProps), _react["default"].createElement("textarea", textareaProps), !!limit && _react["default"].createElement("div", { className: "".concat(prefix, "-limit") }, _react["default"].createElement("span", null, "".concat(length, "/").concat(limit)))); }); Textarea.propTypes = { autoFocus: _propTypes["default"].bool, className: _propTypes["default"].string, countHanzi: _propTypes["default"].bool, defaultValue: _propTypes["default"].string, disabled: _propTypes["default"].bool, id: _propTypes["default"].string, intent: _propTypes["default"].oneOf(["normal", "primary", "success", "warning", "danger"]), limit: _propTypes["default"].number, name: _propTypes["default"].string, onBlur: _propTypes["default"].func, onChange: _propTypes["default"].func, onFocus: _propTypes["default"].func, onKeyDown: _propTypes["default"].func, onPressEnter: _propTypes["default"].func, onScroll: _propTypes["default"].func, placeholder: _propTypes["default"].string, required: _propTypes["default"].bool, resize: _propTypes["default"].oneOf(["none", "both", "horizontal", "vertical"]), size: _propTypes["default"].oneOf(["mini", "small", "medium", "large"]), theme: _propTypes["default"].oneOf([null, "light"]), type: _propTypes["default"].string, value: _propTypes["default"].string }; Textarea.defaultProps = { autoFocus: false, className: undefined, countHanzi: true, defaultValue: null, disabled: false, id: null, intent: "normal", limit: null, name: null, onBlur: noop, onChange: noop, onFocus: noop, onKeyDown: noop, onPressEnter: noop, onScroll: noop, placeholder: "请输入", required: false, resize: "none", size: "small", theme: null, type: null, value: null }; Textarea.displayName = "Textarea"; var _default = exports["default"] = Textarea; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfcHJvcFR5cGVzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9jbGFzc25hbWVzIiwiX3dhcm5pbmciLCJfY29uZmlnUHJvdmlkZXIiLCJfZXhjbHVkZWQiLCJlIiwiX19lc01vZHVsZSIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsIldlYWtNYXAiLCJyIiwidCIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJfZXh0ZW5kcyIsImFzc2lnbiIsImJpbmQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJhcHBseSIsIl9kZWZpbmVQcm9wZXJ0eSIsIl90b1Byb3BlcnR5S2V5IiwidmFsdWUiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJfdG9QcmltaXRpdmUiLCJTeW1ib2wiLCJ0b1ByaW1pdGl2ZSIsIlR5cGVFcnJvciIsIlN0cmluZyIsIk51bWJlciIsIl9zbGljZWRUb0FycmF5IiwiX2FycmF5V2l0aEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheUxpbWl0IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwiX25vbkl0ZXJhYmxlUmVzdCIsIl9hcnJheUxpa2VUb0FycmF5IiwidG9TdHJpbmciLCJzbGljZSIsImNvbnN0cnVjdG9yIiwibmFtZSIsIkFycmF5IiwiZnJvbSIsInRlc3QiLCJsIiwiaXRlcmF0b3IiLCJmIiwibyIsIm5leHQiLCJkb25lIiwicHVzaCIsImlzQXJyYXkiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSIsImdldE93blByb3BlcnR5U3ltYm9scyIsInMiLCJpbmNsdWRlcyIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwibm9vcCIsInByZWZpeCIsIlRleHRhcmVhIiwiZm9yd2FyZFJlZiIsIl9yZWYiLCJyZWYiLCJhdXRvRm9jdXMiLCJjbGFzc05hbWUiLCJjb3VudEhhbnppIiwiZGVmYXVsdFZhbHVlIiwiZGlzYWJsZWQiLCJpZCIsImludGVudCIsImxpbWl0Iiwib25CbHVyIiwib25DaGFuZ2UiLCJvbkZvY3VzIiwib25LZXlEb3duIiwib25QcmVzc0VudGVyIiwib25TY3JvbGwiLCJwbGFjZWhvbGRlciIsInJlcXVpcmVkIiwicmVzaXplIiwic2l6ZVByb3AiLCJzaXplIiwidGhlbWUiLCJ0eXBlIiwib3RoZXJQcm9wcyIsIl91c2VTdGF0ZSIsInVzZVN0YXRlIiwiX3VzZVN0YXRlMiIsImZvY3VzZWQiLCJzZXRGb2N1c2VkIiwidGV4dGFyZWFSZWYiLCJ1c2VSZWYiLCJfdXNlQ29udGV4dCIsInVzZUNvbnRleHQiLCJDb25maWdDb250ZXh0Iiwic2l6ZUNvbnRleHQiLCJnZXRDb21wdXRlZFNpemUiLCJoYW5kbGVDaGFuZ2UiLCJ2YWwiLCJ0YXJnZXQiLCJyZXBsYWNlIiwiaGFuZGxlS2V5RG93biIsImtleSIsImhhbmRsZUJsdXIiLCJoYW5kbGVGb2N1cyIsImZpeENvbnRyb2xsZWRWYWx1ZSIsImdldEZvcm1hdFN0ckxlbmciLCJzdHIiLCJsZW4iLCJyZWFsTGVuZ3RoIiwiY2hhckNvZGUiLCJjaGFyQ29kZUF0IiwiTWF0aCIsImNlaWwiLCJ1c2VJbXBlcmF0aXZlSGFuZGxlIiwiaW5wdXQiLCJjdXJyZW50IiwidGV4dGFyZWFQcm9wcyIsImNvbmNhdCIsInN0eWxlIiwid2FybmluZyIsImNsYXNzU2V0IiwiY2xhc3NOYW1lcyIsImNyZWF0ZUVsZW1lbnQiLCJwcm9wVHlwZXMiLCJQcm9wVHlwZXMiLCJib29sIiwic3RyaW5nIiwib25lT2YiLCJudW1iZXIiLCJmdW5jIiwiZGVmYXVsdFByb3BzIiwidW5kZWZpbmVkIiwiZGlzcGxheU5hbWUiLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi9jb21wb25lbnRzL2NoYW5uZWxzLWlucHV0L1RleHRhcmVhLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHtcbiAgZm9yd2FyZFJlZixcbiAgdXNlQ29udGV4dCxcbiAgdXNlSW1wZXJhdGl2ZUhhbmRsZSxcbiAgdXNlUmVmLFxuICB1c2VTdGF0ZSxcbn0gZnJvbSBcInJlYWN0XCJcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIlxuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSBcImNsYXNzbmFtZXNcIlxuaW1wb3J0IHdhcm5pbmcgZnJvbSBcIi4uL191dGlsL3dhcm5pbmdcIlxuaW1wb3J0IHsgQ29uZmlnQ29udGV4dCwgZ2V0Q29tcHV0ZWRTaXplIH0gZnJvbSBcIi4uL2NvbmZpZy1wcm92aWRlclwiXG5pbXBvcnQgXCIuL3N0eWxlXCJcblxuY29uc3Qgbm9vcCA9ICgpID0+IHt9XG5cbmNvbnN0IHByZWZpeCA9IFwiYWR1aS1jaGFubmVscy1pbnB1dFwiXG5cbmV4cG9ydCBpbnRlcmZhY2UgSVRleHRhcmVhUHJvcHMge1xuICBba2V5OiBzdHJpbmddOiBhbnlcbiAgLyoqXG4gICAqIGlucHV0IOagh+etvuWOn+eUn+WxnuaApyAtIGF1dG9Gb2N1c1xuICAgKi9cbiAgYXV0b0ZvY3VzPzogYm9vbGVhblxuICAvKipcbiAgICog6ZmE5Yqg57G75ZCNXG4gICAqL1xuICBjbGFzc05hbWU/OiBzdHJpbmdcbiAgLyoqXG4gICAqIOaYr+WQpuaMieeFp+S4gOS4quaxieWtl+eulyAyIOWtl+aVsOeahOaWueW8j+mZkOWItumVv+W6plxuICAgKi9cbiAgY291bnRIYW56aT86IGJvb2xlYW5cbiAgLyoqXG4gICAqIOm7mOiupOWAvCAtIOWGhemDqOmpseWKqFxuICAgKi9cbiAgZGVmYXVsdFZhbHVlPzogc3RyaW5nIHwgbnVsbFxuICAvKipcbiAgICog5piv5ZCm56aB55SoXG4gICAqL1xuICBkaXNhYmxlZD86IGJvb2xlYW5cbiAgLyoqXG4gICAqIOi+k+WFpeahhueahCBpZFxuICAgKi9cbiAgaWQ/OiBzdHJpbmcgfCBudWxsXG4gIC8qKlxuICAgKiDnsbvlnotcbiAgICovXG4gIGludGVudD86IFwibm9ybWFsXCIgfCBcInByaW1hcnlcIiB8IFwic3VjY2Vzc1wiIHwgXCJ3YXJuaW5nXCIgfCBcImRhbmdlclwiXG4gIC8qKlxuICAgKiDpmZDliLbplb/luqZcbiAgICovXG4gIGxpbWl0PzogbnVtYmVyIHwgbnVsbFxuICAvKipcbiAgICogaW5wdXQg5qCH562+5Y6f55Sf5bGe5oCnIC0gbmFtZVxuICAgKi9cbiAgbmFtZT86IHN0cmluZyB8IG51bGxcbiAgLyoqXG4gICAqIGJsdXIg5pe255qEIGhhbmRsZXJcbiAgICovXG4gIG9uQmx1cj86IChlOiBSZWFjdC5Gb2N1c0V2ZW50PEhUTUxUZXh0QXJlYUVsZW1lbnQ+KSA9PiB2b2lkXG4gIC8qKlxuICAgKiDlgLzmlLnlj5jml7bnmoQgaGFuZGxlclxuICAgKi9cbiAgb25DaGFuZ2U/OiAoZTogUmVhY3QuQ2hhbmdlRXZlbnQ8SFRNTFRleHRBcmVhRWxlbWVudD4sIHZhbHVlPzogc3RyaW5nKSA9PiB2b2lkXG4gIC8qKlxuICAgKiBmb2N1cyDml7bnmoQgaGFuZGxlclxuICAgKi9cbiAgb25Gb2N1cz86IChlOiBSZWFjdC5Gb2N1c0V2ZW50PEhUTUxUZXh0QXJlYUVsZW1lbnQ+KSA9PiB2b2lkXG4gIC8qKlxuICAgKiBrZXlkb3duIOaXtueahCBoYW5kbGVyXG4gICAqL1xuICBvbktleURvd24/OiAoZTogUmVhY3QuS2V5Ym9hcmRFdmVudDxIVE1MVGV4dEFyZWFFbGVtZW50PikgPT4gdm9pZFxuICAvKipcbiAgICogZW50ZXIg5pe255qEIGhhbmRsZXJcbiAgICovXG4gIG9uUHJlc3NFbnRlcj86IChlOiBSZWFjdC5LZXlib2FyZEV2ZW50PEhUTUxUZXh0QXJlYUVsZW1lbnQ+KSA9PiB2b2lkXG4gIC8qKlxuICAgKiBzY3JvbGwg5pe255qEIGhhbmRsZXJcbiAgICovXG4gIG9uU2Nyb2xsPzogKGU6IFJlYWN0LlVJRXZlbnQ8SFRNTFRleHRBcmVhRWxlbWVudD4pID0+IHZvaWRcbiAgLyoqXG4gICAqIHBsYWNlaG9sZGVyXG4gICAqL1xuICBwbGFjZWhvbGRlcj86IHN0cmluZ1xuICAvKipcbiAgICogaW5wdXQg5qCH562+5Y6f55Sf5bGe5oCnIC0gcmVxdWlyZWRcbiAgICovXG4gIHJlcXVpcmVkPzogYm9vbGVhblxuICAvKipcbiAgICog5piv5ZCm5pSv5oyB6LCD5pW05aSn5bCPXG4gICAqL1xuICByZXNpemU/OiBcIm5vbmVcIiB8IFwiYm90aFwiIHwgXCJob3Jpem9udGFsXCIgfCBcInZlcnRpY2FsXCJcbiAgLyoqXG4gICAqIOiuvue9ruWwuuWvuFxuICAgKi9cbiAgc2l6ZT86IFwibWluaVwiIHwgXCJzbWFsbFwiIHwgXCJtZWRpdW1cIiB8IFwibGFyZ2VcIlxuICAvKipcbiAgICog6K6+572u5Li76aKYXG4gICAqL1xuICB0aGVtZT86IG51bGwgfCBcImxpZ2h0XCJcbiAgLyoqXG4gICAqIGlucHV0IOagh+etvuWOn+eUn+WxnuaApyAtIHR5cGVcbiAgICovXG4gIHR5cGU/OiBzdHJpbmcgfCBudWxsXG4gIC8qKlxuICAgKiDlgLwgLSDlpJbpg6jmjqfliLZcbiAgICovXG4gIHZhbHVlPzogc3RyaW5nIHwgbnVsbFxufVxuXG4vKipcbiAqIOi+k+WFpeWMuuWfn++8jOeUqOS6juWkmuihjOe6r+aWh+acrOe8lui+keOAglxuICovXG5jb25zdCBUZXh0YXJlYTogUmVhY3QuRm9yd2FyZFJlZkV4b3RpY0NvbXBvbmVudDxcbiAgSVRleHRhcmVhUHJvcHMgJiBSZWFjdC5SZWZBdHRyaWJ1dGVzPGFueT5cbj4gPSBmb3J3YXJkUmVmKFxuICAoXG4gICAge1xuICAgICAgYXV0b0ZvY3VzLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICAgY291bnRIYW56aSxcbiAgICAgIGRlZmF1bHRWYWx1ZSxcbiAgICAgIGRpc2FibGVkLFxuICAgICAgaWQsXG4gICAgICBpbnRlbnQsXG4gICAgICBsaW1pdCxcbiAgICAgIG5hbWUsXG4gICAgICBvbkJsdXIsXG4gICAgICBvbkNoYW5nZSxcbiAgICAgIG9uRm9jdXMsXG4gICAgICBvbktleURvd24sXG4gICAgICBvblByZXNzRW50ZXIsXG4gICAgICBvblNjcm9sbCxcbiAgICAgIHBsYWNlaG9sZGVyLFxuICAgICAgcmVxdWlyZWQsXG4gICAgICByZXNpemUsXG4gICAgICBzaXplOiBzaXplUHJvcCxcbiAgICAgIHRoZW1lLFxuICAgICAgdHlwZSxcbiAgICAgIHZhbHVlLFxuICAgICAgLi4ub3RoZXJQcm9wc1xuICAgIH06IElUZXh0YXJlYVByb3BzLFxuICAgIHJlZlxuICApID0+IHtcbiAgICBjb25zdCBbZm9jdXNlZCwgc2V0Rm9jdXNlZF0gPSB1c2VTdGF0ZShmYWxzZSlcblxuICAgIGNvbnN0IHRleHRhcmVhUmVmID0gdXNlUmVmPEhUTUxUZXh0QXJlYUVsZW1lbnQ+KG51bGwpXG5cbiAgICBjb25zdCB7IHNpemU6IHNpemVDb250ZXh0IH0gPSB1c2VDb250ZXh0KENvbmZpZ0NvbnRleHQpXG5cbiAgICBjb25zdCBzaXplID0gZ2V0Q29tcHV0ZWRTaXplKHNpemVQcm9wLCBzaXplQ29udGV4dClcblxuICAgIGNvbnN0IGhhbmRsZUNoYW5nZSA9IChlOiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MVGV4dEFyZWFFbGVtZW50PikgPT4ge1xuICAgICAgaWYgKCFkaXNhYmxlZCAmJiBvbkNoYW5nZSkge1xuICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZSBuby1jb250cm9sLXJlZ2V4LCBtYXgtbGVuICovXG4gICAgICAgIC8vIDA4IEJhY2tzcGFjZSwgMDkgVGFiLCAwQiDlnoLnm7TliLbooajnrKYsIDBDIOaNoumhtSwgMEQg5Zue6L2mLCBBMCDkuI3pl7Tmlq3nqbrmoLwsXG4gICAgICAgIC8vIDIwMjgvMjAyOSDliIbpmpTnrKYsIEZFZmYg5a2X6IqC6aG65bqP5qCH6K6w44CCXG4gICAgICAgIGNvbnN0IHZhbCA9IGUudGFyZ2V0LnZhbHVlLnJlcGxhY2UoXG4gICAgICAgICAgL1xcdTAwMDh8XFx1MDAwOXxcXHUwMDBCfFxcdTAwMEN8XFx1MDAwRHxcXHUwMEEwfFxcdTIwMjh8XFx1MjAyOXxcXHVGRUZGL2csXG4gICAgICAgICAgXCJcIlxuICAgICAgICApXG4gICAgICAgIG9uQ2hhbmdlKGUsIHZhbClcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBoYW5kbGVLZXlEb3duID0gKGU6IFJlYWN0LktleWJvYXJkRXZlbnQ8SFRNTFRleHRBcmVhRWxlbWVudD4pID0+IHtcbiAgICAgIGlmIChlLmtleSA9PT0gXCJFbnRlclwiICYmIG9uUHJlc3NFbnRlcikge1xuICAgICAgICBvblByZXNzRW50ZXIoZSlcbiAgICAgIH1cbiAgICAgIGlmIChvbktleURvd24pIHtcbiAgICAgICAgb25LZXlEb3duKGUpXG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgaGFuZGxlQmx1ciA9IChlOiBSZWFjdC5Gb2N1c0V2ZW50PEhUTUxUZXh0QXJlYUVsZW1lbnQ+KSA9PiB7XG4gICAgICBzZXRGb2N1c2VkKGZhbHNlKVxuICAgICAgaWYgKG9uQmx1cikge1xuICAgICAgICBvbkJsdXIoZSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBoYW5kbGVGb2N1cyA9IChlOiBSZWFjdC5Gb2N1c0V2ZW50PEhUTUxUZXh0QXJlYUVsZW1lbnQ+KSA9PiB7XG4gICAgICBzZXRGb2N1c2VkKHRydWUpXG4gICAgICBpZiAob25Gb2N1cykge1xuICAgICAgICBvbkZvY3VzKGUpXG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZml4Q29udHJvbGxlZFZhbHVlID0gKHZhbD86IHN0cmluZyB8IG51bGwpID0+IHtcbiAgICAgIGlmICh0eXBlb2YgdmFsID09PSBcInVuZGVmaW5lZFwiIHx8IHZhbCA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gXCJcIlxuICAgICAgfVxuICAgICAgcmV0dXJuIHZhbFxuICAgIH1cblxuICAgIGNvbnN0IGdldEZvcm1hdFN0ckxlbmcgPSAoc3RyOiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IGxlbiA9IHN0ci5sZW5ndGhcbiAgICAgIGxldCByZWFsTGVuZ3RoID0gMFxuICAgICAgbGV0IGNoYXJDb2RlID0gLTFcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpICs9IDEpIHtcbiAgICAgICAgY2hhckNvZGUgPSBzdHIuY2hhckNvZGVBdChpKVxuICAgICAgICBpZiAoY2hhckNvZGUgPj0gMCAmJiBjaGFyQ29kZSA8PSAxMjgpIHtcbiAgICAgICAgICByZWFsTGVuZ3RoICs9IDAuNVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlYWxMZW5ndGggKz0gMVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gTWF0aC5jZWlsKHJlYWxMZW5ndGgpXG4gICAgfVxuXG4gICAgdXNlSW1wZXJhdGl2ZUhhbmRsZShyZWYsICgpID0+ICh7XG4gICAgICBpbnB1dDogdGV4dGFyZWFSZWY/LmN1cnJlbnQsXG4gICAgICBoYW5kbGVDaGFuZ2UsXG4gICAgICBoYW5kbGVLZXlEb3duLFxuICAgICAgaGFuZGxlQmx1cixcbiAgICAgIGhhbmRsZUZvY3VzLFxuICAgIH0pKVxuXG4gICAgY29uc3QgdGV4dGFyZWFQcm9wczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHtcbiAgICAgIGF1dG9Gb2N1cyxcbiAgICAgIGNsYXNzTmFtZTogYCR7cHJlZml4fS1iYXNlYCxcbiAgICAgIGRpc2FibGVkLFxuICAgICAgaWQsXG4gICAgICBuYW1lLFxuICAgICAgb25CbHVyOiBoYW5kbGVCbHVyLFxuICAgICAgb25DaGFuZ2U6IGhhbmRsZUNoYW5nZSxcbiAgICAgIG9uRm9jdXM6IGhhbmRsZUZvY3VzLFxuICAgICAgb25LZXlEb3duOiBoYW5kbGVLZXlEb3duLFxuICAgICAgb25TY3JvbGwsXG4gICAgICBwbGFjZWhvbGRlcixcbiAgICAgIHJlZjogdGV4dGFyZWFSZWYsXG4gICAgICByZXF1aXJlZCxcbiAgICAgIHN0eWxlOiB7IHJlc2l6ZSB9LFxuICAgICAgdHlwZSxcbiAgICB9XG5cbiAgICBpZiAodmFsdWUgIT09IG51bGwpIHtcbiAgICAgIHRleHRhcmVhUHJvcHMudmFsdWUgPSBmaXhDb250cm9sbGVkVmFsdWUodmFsdWUpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRleHRhcmVhUHJvcHMuZGVmYXVsdFZhbHVlID0gZml4Q29udHJvbGxlZFZhbHVlKGRlZmF1bHRWYWx1ZSlcbiAgICB9XG5cbiAgICBsZXQgbGVuZ3RoXG4gICAgaWYgKGxpbWl0KSB7XG4gICAgICB3YXJuaW5nKFxuICAgICAgICByZXNpemUgPT09IFwibm9uZVwiLFxuICAgICAgICBcIklucHV0LlRleHRhcmVhXCIsXG4gICAgICAgIFwi5LiN5YWB6K645ZCM5pe25L2/55SoIHByb3AgYGxpbWl0YCDkuI4gcHJvcCBgcmVzaXplYFwiXG4gICAgICApXG4gICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgbGVuZ3RoID0gY291bnRIYW56aSA/IGdldEZvcm1hdFN0ckxlbmcodmFsdWUpIDogdmFsdWUubGVuZ3RoXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB3YXJuaW5nKFxuICAgICAgICAgIHZhbHVlICE9PSBudWxsLFxuICAgICAgICAgIFwiSW5wdXQuVGV4dGFyZWFcIixcbiAgICAgICAgICBcIuWmguaenOimgemZkOWItuWtl+aVsO+8jOW/hemhu+S7juWklumDqOaOp+WItiB2YWx1ZeOAglwiXG4gICAgICAgIClcbiAgICAgICAgbGVuZ3RoID0gMFxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGNsYXNzU2V0ID0gY2xhc3NOYW1lcyhcbiAgICAgIGNsYXNzTmFtZSxcbiAgICAgIGAke3ByZWZpeH0td3JhcHBlcmAsXG4gICAgICBgJHtwcmVmaXh9LXdyYXBwZXJfdGV4dGFyZWFgLFxuICAgICAgYCR7cHJlZml4fS0ke3NpemV9YCxcbiAgICAgIHtcbiAgICAgICAgW2Ake3ByZWZpeH0tJHt0aGVtZX1gXTogdGhlbWUsXG4gICAgICAgIFtgJHtwcmVmaXh9LWRpc2FibGVkYF06IGRpc2FibGVkLFxuICAgICAgICBbYCR7cHJlZml4fS1saW1pdGVkYF06ICEhbGltaXQsXG4gICAgICAgIFtgJHtwcmVmaXh9LW5vcm1hbGBdOiBpbnRlbnQgPT09IFwibm9ybWFsXCIsXG4gICAgICAgIFtgJHtwcmVmaXh9LXByaW1hcnlgXTogaW50ZW50ID09PSBcInByaW1hcnlcIixcbiAgICAgICAgW2Ake3ByZWZpeH0tc3VjY2Vzc2BdOiBpbnRlbnQgPT09IFwic3VjY2Vzc1wiLFxuICAgICAgICBbYCR7cHJlZml4fS13YXJuaW5nYF06IGludGVudCA9PT0gXCJ3YXJuaW5nXCIsXG4gICAgICAgIFtgJHtwcmVmaXh9LWRhbmdlcmBdOlxuICAgICAgICAgIGludGVudCA9PT0gXCJkYW5nZXJcIiB8fCAobGVuZ3RoICYmIGxpbWl0ICYmIGxlbmd0aCA+IGxpbWl0KSxcbiAgICAgICAgW2Ake3ByZWZpeH0tZm9jdXNlZGBdOiBmb2N1c2VkLFxuICAgICAgfVxuICAgIClcblxuICAgIHJldHVybiAoXG4gICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NTZXR9IHsuLi5vdGhlclByb3BzfT5cbiAgICAgICAgPHRleHRhcmVhIHsuLi50ZXh0YXJlYVByb3BzfSAvPlxuICAgICAgICB7ISFsaW1pdCAmJiAoXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2Ake3ByZWZpeH0tbGltaXRgfT5cbiAgICAgICAgICAgIDxzcGFuPntgJHtsZW5ndGh9LyR7bGltaXR9YH08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5cbiAgICApXG4gIH1cbilcblxuVGV4dGFyZWEucHJvcFR5cGVzID0ge1xuICAvKipcbiAgICogaW5wdXQg5qCH562+5Y6f55Sf5bGe5oCnIC0gYXV0b0ZvY3VzXG4gICAqL1xuICBhdXRvRm9jdXM6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICog6ZmE5Yqg57G75ZCNXG4gICAqL1xuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiDmmK/lkKbmjInnhafkuIDkuKrmsYnlrZfnrpcgMiDlrZfmlbDnmoTmlrnlvI/pmZDliLbplb/luqZcbiAgICovXG4gIGNvdW50SGFuemk6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICog6buY6K6k5YC8IC0g5YaF6YOo6amx5YqoXG4gICAqL1xuICBkZWZhdWx0VmFsdWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiDmmK/lkKbnpoHnlKhcbiAgICovXG4gIGRpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIOi+k+WFpeahhueahCBpZFxuICAgKi9cbiAgaWQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiDorr7nva7nsbvlnotcbiAgICovXG4gIGludGVudDogUHJvcFR5cGVzLm9uZU9mKFtcbiAgICBcIm5vcm1hbFwiLFxuICAgIFwicHJpbWFyeVwiLFxuICAgIFwic3VjY2Vzc1wiLFxuICAgIFwid2FybmluZ1wiLFxuICAgIFwiZGFuZ2VyXCIsXG4gIF0pLFxuICAvKipcbiAgICog6ZmQ5Yi26ZW/5bqmXG4gICAqL1xuICBsaW1pdDogUHJvcFR5cGVzLm51bWJlcixcbiAgLyoqXG4gICAqIHRleHRhcmVhIOagh+etvuWOn+eUn+WxnuaApyAtIG5hbWVcbiAgICovXG4gIG5hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiBibHVyIOaXtueahCBoYW5kbGVyXG4gICAqL1xuICBvbkJsdXI6IFByb3BUeXBlcy5mdW5jLFxuICAvKipcbiAgICog5YC85pS55Y+Y5pe255qEIGhhbmRsZXJcbiAgICovXG4gIG9uQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIGZvY3VzIOaXtueahCBoYW5kbGVyXG4gICAqL1xuICBvbkZvY3VzOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIGtleWRvd24g5pe255qEIGhhbmRsZXJcbiAgICovXG4gIG9uS2V5RG93bjogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKlxuICAgKiBlbnRlciDml7bnmoQgaGFuZGxlclxuICAgKi9cbiAgb25QcmVzc0VudGVyOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIHNjcm9sbCDml7bnmoQgaGFuZGxlclxuICAgKi9cbiAgb25TY3JvbGw6IFByb3BUeXBlcy5mdW5jLFxuICAvKipcbiAgICogcGxhY2Vob2xkZXJcbiAgICovXG4gIHBsYWNlaG9sZGVyOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICogaW5wdXQg5qCH562+5Y6f55Sf5bGe5oCnIC0gcmVxdWlyZWRcbiAgICovXG4gIHJlcXVpcmVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIOaYr+WQpuaUr+aMgeiwg+aVtOWkp+Wwj1xuICAgKi9cbiAgcmVzaXplOiBQcm9wVHlwZXMub25lT2YoW1wibm9uZVwiLCBcImJvdGhcIiwgXCJob3Jpem9udGFsXCIsIFwidmVydGljYWxcIl0pLFxuICAvKipcbiAgICog6K6+572u5bC65a+4XG4gICAqL1xuICBzaXplOiBQcm9wVHlwZXMub25lT2YoW1wibWluaVwiLCBcInNtYWxsXCIsIFwibWVkaXVtXCIsIFwibGFyZ2VcIl0pLFxuICAvKipcbiAgICog6K6+572u5Li76aKYXG4gICAqL1xuICB0aGVtZTogUHJvcFR5cGVzLm9uZU9mKFtudWxsLCBcImxpZ2h0XCJdKSxcbiAgLyoqXG4gICAqIHRleHRhcmVhIOagh+etvuWOn+eUn+WxnuaApyAtIHR5cGVcbiAgICovXG4gIHR5cGU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiDlgLwgLSDlpJbpg6jmjqfliLZcbiAgICovXG4gIHZhbHVlOiBQcm9wVHlwZXMuc3RyaW5nLFxufVxuXG5UZXh0YXJlYS5kZWZhdWx0UHJvcHMgPSB7XG4gIGF1dG9Gb2N1czogZmFsc2UsXG4gIGNsYXNzTmFtZTogdW5kZWZpbmVkLFxuICBjb3VudEhhbnppOiB0cnVlLFxuICBkZWZhdWx0VmFsdWU6IG51bGwsXG4gIGRpc2FibGVkOiBmYWxzZSxcbiAgaWQ6IG51bGwsXG4gIGludGVudDogXCJub3JtYWxcIixcbiAgbGltaXQ6IG51bGwsXG4gIG5hbWU6IG51bGwsXG4gIG9uQmx1cjogbm9vcCxcbiAgb25DaGFuZ2U6IG5vb3AsXG4gIG9uRm9jdXM6IG5vb3AsXG4gIG9uS2V5RG93bjogbm9vcCxcbiAgb25QcmVzc0VudGVyOiBub29wLFxuICBvblNjcm9sbDogbm9vcCxcbiAgcGxhY2Vob2xkZXI6IFwi6K+36L6T5YWlXCIsXG4gIHJlcXVpcmVkOiBmYWxzZSxcbiAgcmVzaXplOiBcIm5vbmVcIixcbiAgc2l6ZTogXCJzbWFsbFwiLFxuICB0aGVtZTogbnVsbCxcbiAgdHlwZTogbnVsbCxcbiAgdmFsdWU6IG51bGwsXG59XG5cblRleHRhcmVhLmRpc3BsYXlOYW1lID0gXCJUZXh0YXJlYVwiXG5cbmV4cG9ydCBkZWZhdWx0IFRleHRhcmVhXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFPQSxJQUFBQyxVQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxXQUFBLEdBQUFELHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBSSxRQUFBLEdBQUFGLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBSyxlQUFBLEdBQUFMLE9BQUE7QUFDQUEsT0FBQTtBQUFnQixJQUFBTSxTQUFBO0FBQUEsU0FBQUosdUJBQUFLLENBQUEsV0FBQUEsQ0FBQSxJQUFBQSxDQUFBLENBQUFDLFVBQUEsR0FBQUQsQ0FBQSxnQkFBQUEsQ0FBQTtBQUFBLFNBQUFFLHlCQUFBRixDQUFBLDZCQUFBRyxPQUFBLG1CQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFELHdCQUFBLFlBQUFBLHlCQUFBRixDQUFBLFdBQUFBLENBQUEsR0FBQUssQ0FBQSxHQUFBRCxDQUFBLEtBQUFKLENBQUE7QUFBQSxTQUFBUix3QkFBQVEsQ0FBQSxFQUFBSSxDQUFBLFNBQUFBLENBQUEsSUFBQUosQ0FBQSxJQUFBQSxDQUFBLENBQUFDLFVBQUEsU0FBQUQsQ0FBQSxlQUFBQSxDQUFBLGdCQUFBTSxPQUFBLENBQUFOLENBQUEsMEJBQUFBLENBQUEsc0JBQUFBLENBQUEsUUFBQUssQ0FBQSxHQUFBSCx3QkFBQSxDQUFBRSxDQUFBLE9BQUFDLENBQUEsSUFBQUEsQ0FBQSxDQUFBRSxHQUFBLENBQUFQLENBQUEsVUFBQUssQ0FBQSxDQUFBRyxHQUFBLENBQUFSLENBQUEsT0FBQVMsQ0FBQSxLQUFBQyxTQUFBLFVBQUFDLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxjQUFBLElBQUFELE1BQUEsQ0FBQUUsd0JBQUEsV0FBQUMsQ0FBQSxJQUFBZixDQUFBLG9CQUFBZSxDQUFBLE9BQUFDLGNBQUEsQ0FBQUMsSUFBQSxDQUFBakIsQ0FBQSxFQUFBZSxDQUFBLFNBQUFHLENBQUEsR0FBQVAsQ0FBQSxHQUFBQyxNQUFBLENBQUFFLHdCQUFBLENBQUFkLENBQUEsRUFBQWUsQ0FBQSxVQUFBRyxDQUFBLEtBQUFBLENBQUEsQ0FBQVYsR0FBQSxJQUFBVSxDQUFBLENBQUFDLEdBQUEsSUFBQVAsTUFBQSxDQUFBQyxjQUFBLENBQUFKLENBQUEsRUFBQU0sQ0FBQSxFQUFBRyxDQUFBLElBQUFULENBQUEsQ0FBQU0sQ0FBQSxJQUFBZixDQUFBLENBQUFlLENBQUEsWUFBQU4sQ0FBQSxjQUFBVCxDQUFBLEVBQUFLLENBQUEsSUFBQUEsQ0FBQSxDQUFBYyxHQUFBLENBQUFuQixDQUFBLEVBQUFTLENBQUEsR0FBQUEsQ0FBQTtBQUFBLFNBQUFXLFNBQUEsV0FBQUEsUUFBQSxHQUFBUixNQUFBLENBQUFTLE1BQUEsR0FBQVQsTUFBQSxDQUFBUyxNQUFBLENBQUFDLElBQUEsZUFBQWIsQ0FBQSxhQUFBVCxDQUFBLE1BQUFBLENBQUEsR0FBQXVCLFNBQUEsQ0FBQUMsTUFBQSxFQUFBeEIsQ0FBQSxVQUFBSyxDQUFBLEdBQUFrQixTQUFBLENBQUF2QixDQUFBLFlBQUFJLENBQUEsSUFBQUMsQ0FBQSxPQUFBVyxjQUFBLENBQUFDLElBQUEsQ0FBQVosQ0FBQSxFQUFBRCxDQUFBLE1BQUFLLENBQUEsQ0FBQUwsQ0FBQSxJQUFBQyxDQUFBLENBQUFELENBQUEsYUFBQUssQ0FBQSxLQUFBVyxRQUFBLENBQUFLLEtBQUEsT0FBQUYsU0FBQTtBQUFBLFNBQUFHLGdCQUFBMUIsQ0FBQSxFQUFBSSxDQUFBLEVBQUFDLENBQUEsWUFBQUQsQ0FBQSxHQUFBdUIsY0FBQSxDQUFBdkIsQ0FBQSxNQUFBSixDQUFBLEdBQUFZLE1BQUEsQ0FBQUMsY0FBQSxDQUFBYixDQUFBLEVBQUFJLENBQUEsSUFBQXdCLEtBQUEsRUFBQXZCLENBQUEsRUFBQXdCLFVBQUEsTUFBQUMsWUFBQSxNQUFBQyxRQUFBLFVBQUEvQixDQUFBLENBQUFJLENBQUEsSUFBQUMsQ0FBQSxFQUFBTCxDQUFBO0FBQUEsU0FBQTJCLGVBQUF0QixDQUFBLFFBQUFhLENBQUEsR0FBQWMsWUFBQSxDQUFBM0IsQ0FBQSxnQ0FBQUMsT0FBQSxDQUFBWSxDQUFBLElBQUFBLENBQUEsR0FBQUEsQ0FBQTtBQUFBLFNBQUFjLGFBQUEzQixDQUFBLEVBQUFELENBQUEsb0JBQUFFLE9BQUEsQ0FBQUQsQ0FBQSxNQUFBQSxDQUFBLFNBQUFBLENBQUEsTUFBQUwsQ0FBQSxHQUFBSyxDQUFBLENBQUE0QixNQUFBLENBQUFDLFdBQUEsa0JBQUFsQyxDQUFBLFFBQUFrQixDQUFBLEdBQUFsQixDQUFBLENBQUFpQixJQUFBLENBQUFaLENBQUEsRUFBQUQsQ0FBQSxnQ0FBQUUsT0FBQSxDQUFBWSxDQUFBLFVBQUFBLENBQUEsWUFBQWlCLFNBQUEseUVBQUEvQixDQUFBLEdBQUFnQyxNQUFBLEdBQUFDLE1BQUEsRUFBQWhDLENBQUE7QUFBQSxTQUFBaUMsZUFBQWxDLENBQUEsRUFBQUosQ0FBQSxXQUFBdUMsZUFBQSxDQUFBbkMsQ0FBQSxLQUFBb0MscUJBQUEsQ0FBQXBDLENBQUEsRUFBQUosQ0FBQSxLQUFBeUMsMkJBQUEsQ0FBQXJDLENBQUEsRUFBQUosQ0FBQSxLQUFBMEMsZ0JBQUE7QUFBQSxTQUFBQSxpQkFBQSxjQUFBUCxTQUFBO0FBQUEsU0FBQU0sNEJBQUFyQyxDQUFBLEVBQUFPLENBQUEsUUFBQVAsQ0FBQSwyQkFBQUEsQ0FBQSxTQUFBdUMsaUJBQUEsQ0FBQXZDLENBQUEsRUFBQU8sQ0FBQSxPQUFBTixDQUFBLE1BQUF1QyxRQUFBLENBQUEzQixJQUFBLENBQUFiLENBQUEsRUFBQXlDLEtBQUEsNkJBQUF4QyxDQUFBLElBQUFELENBQUEsQ0FBQTBDLFdBQUEsS0FBQXpDLENBQUEsR0FBQUQsQ0FBQSxDQUFBMEMsV0FBQSxDQUFBQyxJQUFBLGFBQUExQyxDQUFBLGNBQUFBLENBQUEsR0FBQTJDLEtBQUEsQ0FBQUMsSUFBQSxDQUFBN0MsQ0FBQSxvQkFBQUMsQ0FBQSwrQ0FBQTZDLElBQUEsQ0FBQTdDLENBQUEsSUFBQXNDLGlCQUFBLENBQUF2QyxDQUFBLEVBQUFPLENBQUE7QUFBQSxTQUFBZ0Msa0JBQUF2QyxDQUFBLEVBQUFPLENBQUEsYUFBQUEsQ0FBQSxJQUFBQSxDQUFBLEdBQUFQLENBQUEsQ0FBQW9CLE1BQUEsTUFBQWIsQ0FBQSxHQUFBUCxDQUFBLENBQUFvQixNQUFBLFlBQUF4QixDQUFBLE1BQUFTLENBQUEsR0FBQXVDLEtBQUEsQ0FBQXJDLENBQUEsR0FBQVgsQ0FBQSxHQUFBVyxDQUFBLEVBQUFYLENBQUEsSUFBQVMsQ0FBQSxDQUFBVCxDQUFBLElBQUFJLENBQUEsQ0FBQUosQ0FBQSxVQUFBUyxDQUFBO0FBQUEsU0FBQStCLHNCQUFBcEMsQ0FBQSxFQUFBK0MsQ0FBQSxRQUFBOUMsQ0FBQSxXQUFBRCxDQUFBLGdDQUFBNkIsTUFBQSxJQUFBN0IsQ0FBQSxDQUFBNkIsTUFBQSxDQUFBbUIsUUFBQSxLQUFBaEQsQ0FBQSw0QkFBQUMsQ0FBQSxRQUFBTCxDQUFBLEVBQUFTLENBQUEsRUFBQVMsQ0FBQSxFQUFBSCxDQUFBLEVBQUFKLENBQUEsT0FBQTBDLENBQUEsT0FBQUMsQ0FBQSxpQkFBQXBDLENBQUEsSUFBQWIsQ0FBQSxHQUFBQSxDQUFBLENBQUFZLElBQUEsQ0FBQWIsQ0FBQSxHQUFBbUQsSUFBQSxRQUFBSixDQUFBLFFBQUF2QyxNQUFBLENBQUFQLENBQUEsTUFBQUEsQ0FBQSxVQUFBZ0QsQ0FBQSx1QkFBQUEsQ0FBQSxJQUFBckQsQ0FBQSxHQUFBa0IsQ0FBQSxDQUFBRCxJQUFBLENBQUFaLENBQUEsR0FBQW1ELElBQUEsTUFBQTdDLENBQUEsQ0FBQThDLElBQUEsQ0FBQXpELENBQUEsQ0FBQTRCLEtBQUEsR0FBQWpCLENBQUEsQ0FBQWEsTUFBQSxLQUFBMkIsQ0FBQSxHQUFBRSxDQUFBLGlCQUFBakQsQ0FBQSxJQUFBa0QsQ0FBQSxPQUFBN0MsQ0FBQSxHQUFBTCxDQUFBLHlCQUFBaUQsQ0FBQSxZQUFBaEQsQ0FBQSxlQUFBVSxDQUFBLEdBQUFWLENBQUEsY0FBQU8sTUFBQSxDQUFBRyxDQUFBLE1BQUFBLENBQUEsMkJBQUF1QyxDQUFBLFFBQUE3QyxDQUFBLGFBQUFFLENBQUE7QUFBQSxTQUFBNEIsZ0JBQUFuQyxDQUFBLFFBQUE0QyxLQUFBLENBQUFVLE9BQUEsQ0FBQXRELENBQUEsVUFBQUEsQ0FBQTtBQUFBLFNBQUF1RCx5QkFBQTNELENBQUEsRUFBQUssQ0FBQSxnQkFBQUwsQ0FBQSxpQkFBQXNELENBQUEsRUFBQWxELENBQUEsRUFBQWMsQ0FBQSxHQUFBMEMsNkJBQUEsQ0FBQTVELENBQUEsRUFBQUssQ0FBQSxPQUFBTyxNQUFBLENBQUFpRCxxQkFBQSxRQUFBQyxDQUFBLEdBQUFsRCxNQUFBLENBQUFpRCxxQkFBQSxDQUFBN0QsQ0FBQSxRQUFBSSxDQUFBLE1BQUFBLENBQUEsR0FBQTBELENBQUEsQ0FBQXRDLE1BQUEsRUFBQXBCLENBQUEsSUFBQWtELENBQUEsR0FBQVEsQ0FBQSxDQUFBMUQsQ0FBQSxHQUFBQyxDQUFBLENBQUEwRCxRQUFBLENBQUFULENBQUEsUUFBQVUsb0JBQUEsQ0FBQS9DLElBQUEsQ0FBQWpCLENBQUEsRUFBQXNELENBQUEsTUFBQXBDLENBQUEsQ0FBQW9DLENBQUEsSUFBQXRELENBQUEsQ0FBQXNELENBQUEsYUFBQXBDLENBQUE7QUFBQSxTQUFBMEMsOEJBQUF4RCxDQUFBLEVBQUFKLENBQUEsZ0JBQUFJLENBQUEsaUJBQUFDLENBQUEsZ0JBQUFJLENBQUEsSUFBQUwsQ0FBQSxTQUFBWSxjQUFBLENBQUFDLElBQUEsQ0FBQWIsQ0FBQSxFQUFBSyxDQUFBLFNBQUFULENBQUEsQ0FBQStELFFBQUEsQ0FBQXRELENBQUEsYUFBQUosQ0FBQSxDQUFBSSxDQUFBLElBQUFMLENBQUEsQ0FBQUssQ0FBQSxZQUFBSixDQUFBO0FBRWhCLElBQU00RCxJQUFJLEdBQUcsU0FBUEEsSUFBSUEsQ0FBQSxFQUFTLENBQUMsQ0FBQztBQUVyQixJQUFNQyxNQUFNLEdBQUcscUJBQXFCO0FBaUdwQyxJQUFNQyxRQUVMLEdBQUcsSUFBQUMsaUJBQVUsRUFDWixVQUFBQyxJQUFBLEVBMEJFQyxHQUFHLEVBQ0E7RUFBQSxJQXpCREMsU0FBUyxHQUFBRixJQUFBLENBQVRFLFNBQVM7SUFDVEMsU0FBUyxHQUFBSCxJQUFBLENBQVRHLFNBQVM7SUFDVEMsVUFBVSxHQUFBSixJQUFBLENBQVZJLFVBQVU7SUFDVkMsWUFBWSxHQUFBTCxJQUFBLENBQVpLLFlBQVk7SUFDWkMsUUFBUSxHQUFBTixJQUFBLENBQVJNLFFBQVE7SUFDUkMsRUFBRSxHQUFBUCxJQUFBLENBQUZPLEVBQUU7SUFDRkMsTUFBTSxHQUFBUixJQUFBLENBQU5RLE1BQU07SUFDTkMsS0FBSyxHQUFBVCxJQUFBLENBQUxTLEtBQUs7SUFDTC9CLElBQUksR0FBQXNCLElBQUEsQ0FBSnRCLElBQUk7SUFDSmdDLE1BQU0sR0FBQVYsSUFBQSxDQUFOVSxNQUFNO0lBQ05DLFFBQVEsR0FBQVgsSUFBQSxDQUFSVyxRQUFRO0lBQ1JDLE9BQU8sR0FBQVosSUFBQSxDQUFQWSxPQUFPO0lBQ1BDLFNBQVMsR0FBQWIsSUFBQSxDQUFUYSxTQUFTO0lBQ1RDLFlBQVksR0FBQWQsSUFBQSxDQUFaYyxZQUFZO0lBQ1pDLFFBQVEsR0FBQWYsSUFBQSxDQUFSZSxRQUFRO0lBQ1JDLFdBQVcsR0FBQWhCLElBQUEsQ0FBWGdCLFdBQVc7SUFDWEMsUUFBUSxHQUFBakIsSUFBQSxDQUFSaUIsUUFBUTtJQUNSQyxNQUFNLEdBQUFsQixJQUFBLENBQU5rQixNQUFNO0lBQ0FDLFFBQVEsR0FBQW5CLElBQUEsQ0FBZG9CLElBQUk7SUFDSkMsS0FBSyxHQUFBckIsSUFBQSxDQUFMcUIsS0FBSztJQUNMQyxJQUFJLEdBQUF0QixJQUFBLENBQUpzQixJQUFJO0lBQ0ovRCxLQUFLLEdBQUF5QyxJQUFBLENBQUx6QyxLQUFLO0lBQ0ZnRSxVQUFVLEdBQUFqQyx3QkFBQSxDQUFBVSxJQUFBLEVBQUF0RSxTQUFBO0VBSWYsSUFBQThGLFNBQUEsR0FBOEIsSUFBQUMsZUFBUSxFQUFDLEtBQUssQ0FBQztJQUFBQyxVQUFBLEdBQUF6RCxjQUFBLENBQUF1RCxTQUFBO0lBQXRDRyxPQUFPLEdBQUFELFVBQUE7SUFBRUUsVUFBVSxHQUFBRixVQUFBO0VBRTFCLElBQU1HLFdBQVcsR0FBRyxJQUFBQyxhQUFNLEVBQXNCLElBQUksQ0FBQztFQUVyRCxJQUFBQyxXQUFBLEdBQThCLElBQUFDLGlCQUFVLEVBQUNDLDZCQUFhLENBQUM7SUFBekNDLFdBQVcsR0FBQUgsV0FBQSxDQUFqQlgsSUFBSTtFQUVaLElBQU1BLElBQUksR0FBRyxJQUFBZSwrQkFBZSxFQUFDaEIsUUFBUSxFQUFFZSxXQUFXLENBQUM7RUFFbkQsSUFBTUUsWUFBWSxHQUFHLFNBQWZBLFlBQVlBLENBQUl6RyxDQUF5QyxFQUFLO0lBQ2xFLElBQUksQ0FBQzJFLFFBQVEsSUFBSUssUUFBUSxFQUFFO01BSXpCLElBQU0wQixHQUFHLEdBQUcxRyxDQUFDLENBQUMyRyxNQUFNLENBQUMvRSxLQUFLLENBQUNnRixPQUFPLENBQ2hDLGlFQUFpRSxFQUNqRSxFQUNGLENBQUM7TUFDRDVCLFFBQVEsQ0FBQ2hGLENBQUMsRUFBRTBHLEdBQUcsQ0FBQztJQUNsQjtFQUNGLENBQUM7RUFFRCxJQUFNRyxhQUFhLEdBQUcsU0FBaEJBLGFBQWFBLENBQUk3RyxDQUEyQyxFQUFLO0lBQ3JFLElBQUlBLENBQUMsQ0FBQzhHLEdBQUcsS0FBSyxPQUFPLElBQUkzQixZQUFZLEVBQUU7TUFDckNBLFlBQVksQ0FBQ25GLENBQUMsQ0FBQztJQUNqQjtJQUNBLElBQUlrRixTQUFTLEVBQUU7TUFDYkEsU0FBUyxDQUFDbEYsQ0FBQyxDQUFDO0lBQ2Q7RUFDRixDQUFDO0VBRUQsSUFBTStHLFVBQVUsR0FBRyxTQUFiQSxVQUFVQSxDQUFJL0csQ0FBd0MsRUFBSztJQUMvRGlHLFVBQVUsQ0FBQyxLQUFLLENBQUM7SUFDakIsSUFBSWxCLE1BQU0sRUFBRTtNQUNWQSxNQUFNLENBQUMvRSxDQUFDLENBQUM7SUFDWDtFQUNGLENBQUM7RUFFRCxJQUFNZ0gsV0FBVyxHQUFHLFNBQWRBLFdBQVdBLENBQUloSCxDQUF3QyxFQUFLO0lBQ2hFaUcsVUFBVSxDQUFDLElBQUksQ0FBQztJQUNoQixJQUFJaEIsT0FBTyxFQUFFO01BQ1hBLE9BQU8sQ0FBQ2pGLENBQUMsQ0FBQztJQUNaO0VBQ0YsQ0FBQztFQUVELElBQU1pSCxrQkFBa0IsR0FBRyxTQUFyQkEsa0JBQWtCQSxDQUFJUCxHQUFtQixFQUFLO0lBQ2xELElBQUksT0FBT0EsR0FBRyxLQUFLLFdBQVcsSUFBSUEsR0FBRyxLQUFLLElBQUksRUFBRTtNQUM5QyxPQUFPLEVBQUU7SUFDWDtJQUNBLE9BQU9BLEdBQUc7RUFDWixDQUFDO0VBRUQsSUFBTVEsZ0JBQWdCLEdBQUcsU0FBbkJBLGdCQUFnQkEsQ0FBSUMsR0FBVyxFQUFLO0lBQ3hDLElBQU1DLEdBQUcsR0FBR0QsR0FBRyxDQUFDM0YsTUFBTTtJQUN0QixJQUFJNkYsVUFBVSxHQUFHLENBQUM7SUFDbEIsSUFBSUMsUUFBUSxHQUFHLENBQUMsQ0FBQztJQUNqQixLQUFLLElBQUlwRyxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLEdBQUdrRyxHQUFHLEVBQUVsRyxDQUFDLElBQUksQ0FBQyxFQUFFO01BQy9Cb0csUUFBUSxHQUFHSCxHQUFHLENBQUNJLFVBQVUsQ0FBQ3JHLENBQUMsQ0FBQztNQUM1QixJQUFJb0csUUFBUSxJQUFJLENBQUMsSUFBSUEsUUFBUSxJQUFJLEdBQUcsRUFBRTtRQUNwQ0QsVUFBVSxJQUFJLEdBQUc7TUFDbkIsQ0FBQyxNQUFNO1FBQ0xBLFVBQVUsSUFBSSxDQUFDO01BQ2pCO0lBQ0Y7SUFDQSxPQUFPRyxJQUFJLENBQUNDLElBQUksQ0FBQ0osVUFBVSxDQUFDO0VBQzlCLENBQUM7RUFFRCxJQUFBSywwQkFBbUIsRUFBQ3BELEdBQUcsRUFBRTtJQUFBLE9BQU87TUFDOUJxRCxLQUFLLEVBQUV6QixXQUFXLGFBQVhBLFdBQVcsdUJBQVhBLFdBQVcsQ0FBRTBCLE9BQU87TUFDM0JuQixZQUFZLEVBQVpBLFlBQVk7TUFDWkksYUFBYSxFQUFiQSxhQUFhO01BQ2JFLFVBQVUsRUFBVkEsVUFBVTtNQUNWQyxXQUFXLEVBQVhBO0lBQ0YsQ0FBQztFQUFBLENBQUMsQ0FBQztFQUVILElBQU1hLGFBQXFDLEdBQUc7SUFDNUN0RCxTQUFTLEVBQVRBLFNBQVM7SUFDVEMsU0FBUyxLQUFBc0QsTUFBQSxDQUFLNUQsTUFBTSxVQUFPO0lBQzNCUyxRQUFRLEVBQVJBLFFBQVE7SUFDUkMsRUFBRSxFQUFGQSxFQUFFO0lBQ0Y3QixJQUFJLEVBQUpBLElBQUk7SUFDSmdDLE1BQU0sRUFBRWdDLFVBQVU7SUFDbEIvQixRQUFRLEVBQUV5QixZQUFZO0lBQ3RCeEIsT0FBTyxFQUFFK0IsV0FBVztJQUNwQjlCLFNBQVMsRUFBRTJCLGFBQWE7SUFDeEJ6QixRQUFRLEVBQVJBLFFBQVE7SUFDUkMsV0FBVyxFQUFYQSxXQUFXO0lBQ1hmLEdBQUcsRUFBRTRCLFdBQVc7SUFDaEJaLFFBQVEsRUFBUkEsUUFBUTtJQUNSeUMsS0FBSyxFQUFFO01BQUV4QyxNQUFNLEVBQU5BO0lBQU8sQ0FBQztJQUNqQkksSUFBSSxFQUFKQTtFQUNGLENBQUM7RUFFRCxJQUFJL0QsS0FBSyxLQUFLLElBQUksRUFBRTtJQUNsQmlHLGFBQWEsQ0FBQ2pHLEtBQUssR0FBR3FGLGtCQUFrQixDQUFDckYsS0FBSyxDQUFDO0VBQ2pELENBQUMsTUFBTTtJQUNMaUcsYUFBYSxDQUFDbkQsWUFBWSxHQUFHdUMsa0JBQWtCLENBQUN2QyxZQUFZLENBQUM7RUFDL0Q7RUFFQSxJQUFJbEQsTUFBTTtFQUNWLElBQUlzRCxLQUFLLEVBQUU7SUFDVCxJQUFBa0QsbUJBQU8sRUFDTHpDLE1BQU0sS0FBSyxNQUFNLEVBQ2pCLGdCQUFnQixFQUNoQixzQ0FDRixDQUFDO0lBQ0QsSUFBSTNELEtBQUssRUFBRTtNQUNUSixNQUFNLEdBQUdpRCxVQUFVLEdBQUd5QyxnQkFBZ0IsQ0FBQ3RGLEtBQUssQ0FBQyxHQUFHQSxLQUFLLENBQUNKLE1BQU07SUFDOUQsQ0FBQyxNQUFNO01BQ0wsSUFBQXdHLG1CQUFPLEVBQ0xwRyxLQUFLLEtBQUssSUFBSSxFQUNkLGdCQUFnQixFQUNoQix3QkFDRixDQUFDO01BQ0RKLE1BQU0sR0FBRyxDQUFDO0lBQ1o7RUFDRjtFQUVBLElBQU15RyxRQUFRLEdBQUcsSUFBQUMsc0JBQVUsRUFDekIxRCxTQUFTLEtBQUFzRCxNQUFBLENBQ041RCxNQUFNLGtCQUFBNEQsTUFBQSxDQUNONUQsTUFBTSwyQkFBQTRELE1BQUEsQ0FDTjVELE1BQU0sT0FBQTRELE1BQUEsQ0FBSXJDLElBQUksR0FBQS9ELGVBQUEsQ0FBQUEsZUFBQSxDQUFBQSxlQUFBLENBQUFBLGVBQUEsQ0FBQUEsZUFBQSxDQUFBQSxlQUFBLENBQUFBLGVBQUEsQ0FBQUEsZUFBQSxDQUFBQSxlQUFBLFFBQUFvRyxNQUFBLENBRVg1RCxNQUFNLE9BQUE0RCxNQUFBLENBQUlwQyxLQUFLLEdBQUtBLEtBQUssTUFBQW9DLE1BQUEsQ0FDekI1RCxNQUFNLGdCQUFjUyxRQUFRLE1BQUFtRCxNQUFBLENBQzVCNUQsTUFBTSxlQUFhLENBQUMsQ0FBQ1ksS0FBSyxNQUFBZ0QsTUFBQSxDQUMxQjVELE1BQU0sY0FBWVcsTUFBTSxLQUFLLFFBQVEsTUFBQWlELE1BQUEsQ0FDckM1RCxNQUFNLGVBQWFXLE1BQU0sS0FBSyxTQUFTLE1BQUFpRCxNQUFBLENBQ3ZDNUQsTUFBTSxlQUFhVyxNQUFNLEtBQUssU0FBUyxNQUFBaUQsTUFBQSxDQUN2QzVELE1BQU0sZUFBYVcsTUFBTSxLQUFLLFNBQVMsTUFBQWlELE1BQUEsQ0FDdkM1RCxNQUFNLGNBQ1JXLE1BQU0sS0FBSyxRQUFRLElBQUtyRCxNQUFNLElBQUlzRCxLQUFLLElBQUl0RCxNQUFNLEdBQUdzRCxLQUFNLE1BQUFnRCxNQUFBLENBQ3hENUQsTUFBTSxlQUFhOEIsT0FBTyxDQUVsQyxDQUFDO0VBRUQsT0FDRXpHLE1BQUEsWUFBQTRJLGFBQUEsUUFBQS9HLFFBQUE7SUFBS29ELFNBQVMsRUFBRXlEO0VBQVMsR0FBS3JDLFVBQVUsR0FDdENyRyxNQUFBLFlBQUE0SSxhQUFBLGFBQWNOLGFBQWdCLENBQUMsRUFDOUIsQ0FBQyxDQUFDL0MsS0FBSyxJQUNOdkYsTUFBQSxZQUFBNEksYUFBQTtJQUFLM0QsU0FBUyxLQUFBc0QsTUFBQSxDQUFLNUQsTUFBTTtFQUFTLEdBQ2hDM0UsTUFBQSxZQUFBNEksYUFBQSxrQkFBQUwsTUFBQSxDQUFVdEcsTUFBTSxPQUFBc0csTUFBQSxDQUFJaEQsS0FBSyxDQUFTLENBQy9CLENBRUosQ0FBQztBQUVWLENBQ0YsQ0FBQztBQUVEWCxRQUFRLENBQUNpRSxTQUFTLEdBQUc7RUFJbkI3RCxTQUFTLEVBQUU4RCxxQkFBUyxDQUFDQyxJQUFJO0VBSXpCOUQsU0FBUyxFQUFFNkQscUJBQVMsQ0FBQ0UsTUFBTTtFQUkzQjlELFVBQVUsRUFBRTRELHFCQUFTLENBQUNDLElBQUk7RUFJMUI1RCxZQUFZLEVBQUUyRCxxQkFBUyxDQUFDRSxNQUFNO0VBSTlCNUQsUUFBUSxFQUFFMEQscUJBQVMsQ0FBQ0MsSUFBSTtFQUl4QjFELEVBQUUsRUFBRXlELHFCQUFTLENBQUNFLE1BQU07RUFJcEIxRCxNQUFNLEVBQUV3RCxxQkFBUyxDQUFDRyxLQUFLLENBQUMsQ0FDdEIsUUFBUSxFQUNSLFNBQVMsRUFDVCxTQUFTLEVBQ1QsU0FBUyxFQUNULFFBQVEsQ0FDVCxDQUFDO0VBSUYxRCxLQUFLLEVBQUV1RCxxQkFBUyxDQUFDSSxNQUFNO0VBSXZCMUYsSUFBSSxFQUFFc0YscUJBQVMsQ0FBQ0UsTUFBTTtFQUl0QnhELE1BQU0sRUFBRXNELHFCQUFTLENBQUNLLElBQUk7RUFJdEIxRCxRQUFRLEVBQUVxRCxxQkFBUyxDQUFDSyxJQUFJO0VBSXhCekQsT0FBTyxFQUFFb0QscUJBQVMsQ0FBQ0ssSUFBSTtFQUl2QnhELFNBQVMsRUFBRW1ELHFCQUFTLENBQUNLLElBQUk7RUFJekJ2RCxZQUFZLEVBQUVrRCxxQkFBUyxDQUFDSyxJQUFJO0VBSTVCdEQsUUFBUSxFQUFFaUQscUJBQVMsQ0FBQ0ssSUFBSTtFQUl4QnJELFdBQVcsRUFBRWdELHFCQUFTLENBQUNFLE1BQU07RUFJN0JqRCxRQUFRLEVBQUUrQyxxQkFBUyxDQUFDQyxJQUFJO0VBSXhCL0MsTUFBTSxFQUFFOEMscUJBQVMsQ0FBQ0csS0FBSyxDQUFDLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsVUFBVSxDQUFDLENBQUM7RUFJbkUvQyxJQUFJLEVBQUU0QyxxQkFBUyxDQUFDRyxLQUFLLENBQUMsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztFQUkzRDlDLEtBQUssRUFBRTJDLHFCQUFTLENBQUNHLEtBQUssQ0FBQyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztFQUl2QzdDLElBQUksRUFBRTBDLHFCQUFTLENBQUNFLE1BQU07RUFJdEIzRyxLQUFLLEVBQUV5RyxxQkFBUyxDQUFDRTtBQUNuQixDQUFDO0FBRURwRSxRQUFRLENBQUN3RSxZQUFZLEdBQUc7RUFDdEJwRSxTQUFTLEVBQUUsS0FBSztFQUNoQkMsU0FBUyxFQUFFb0UsU0FBUztFQUNwQm5FLFVBQVUsRUFBRSxJQUFJO0VBQ2hCQyxZQUFZLEVBQUUsSUFBSTtFQUNsQkMsUUFBUSxFQUFFLEtBQUs7RUFDZkMsRUFBRSxFQUFFLElBQUk7RUFDUkMsTUFBTSxFQUFFLFFBQVE7RUFDaEJDLEtBQUssRUFBRSxJQUFJO0VBQ1gvQixJQUFJLEVBQUUsSUFBSTtFQUNWZ0MsTUFBTSxFQUFFZCxJQUFJO0VBQ1plLFFBQVEsRUFBRWYsSUFBSTtFQUNkZ0IsT0FBTyxFQUFFaEIsSUFBSTtFQUNiaUIsU0FBUyxFQUFFakIsSUFBSTtFQUNma0IsWUFBWSxFQUFFbEIsSUFBSTtFQUNsQm1CLFFBQVEsRUFBRW5CLElBQUk7RUFDZG9CLFdBQVcsRUFBRSxLQUFLO0VBQ2xCQyxRQUFRLEVBQUUsS0FBSztFQUNmQyxNQUFNLEVBQUUsTUFBTTtFQUNkRSxJQUFJLEVBQUUsT0FBTztFQUNiQyxLQUFLLEVBQUUsSUFBSTtFQUNYQyxJQUFJLEVBQUUsSUFBSTtFQUNWL0QsS0FBSyxFQUFFO0FBQ1QsQ0FBQztBQUVEdUMsUUFBUSxDQUFDMEUsV0FBVyxHQUFHLFVBQVU7QUFBQSxJQUFBQyxRQUFBLEdBQUFDLE9BQUEsY0FFbEI1RSxRQUFRIiwiaWdub3JlTGlzdCI6W119