diff --git a/.eslintignore b/.eslintignore index c566e95..828617e 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1,4 +1,5 @@ -node_modules -doc -dist -lib \ No newline at end of file +node_modules/ +coverage/ +doc/ +dist/ +lib/ \ No newline at end of file diff --git a/.gitignore b/.gitignore index 9daa824..71d84d6 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ .DS_Store -node_modules +node_modules/ +coverage/ diff --git a/.stylelintignore b/.stylelintignore index 7282f13..812eae0 100644 --- a/.stylelintignore +++ b/.stylelintignore @@ -1,4 +1,5 @@ -node_modules -doc -dist -lib +node_modules/ +coverage/ +doc/ +dist/ +lib/ diff --git a/README.md b/README.md index 3537839..9595001 100644 --- a/README.md +++ b/README.md @@ -270,6 +270,35 @@ Note: Sources code of Examples in the folder `examples` */ onRenderTokenDeleteButtonContent: PropTypes.func, + /** + * A callback function for determine whether the token is inline editable. + * + * onIsTokenEditable(tokenValue, tokenMeta) + * + * @ tokenValue + * Type: any (string | number | object | customize data structure) + * Description: The tokenValue build by `onBuildTokenValue` + * + * @ tokenMeta + * Description: token's meta data + * { + * // A private key for render + * key: string, + * + * // Specific the token is activated for `edit` or not + * activated: boolean, + * + * // Customize data structure built by `onTokenValue Validate` + * // Specific the token's validate status or errorMessage + * error: any, + * } + * + * @ return + * Type: boolean + * Description: `true` if editable. `false` if not. + */ + onIsTokenEditable: PropTypes.func, + /** * A callback function for getting `string input value` * from `tokenValue` for the end-user to perform `edit` @@ -406,6 +435,7 @@ Enter | End editing and apply the new value. In case the new value is an `e // Token onGetTokenClassName: () => {}, // Dummy function onGetTokenDisplayLabel: getDefaultTokenEditableValue, + onIsTokenEditable: () => true, onGetTokenEditableValue: getDefaultTokenEditableValue, onGetTokenErrorMessage: getDefaultTokenErrorMessage, ``` @@ -428,6 +458,8 @@ Could also reference this [Example Demo](https://seawind543.github.io/react-toke onGetDisplayLabel: PropTypes.func.isRequired, // Same as props `onRenderTokenDeleteButtonContent` of TokenInput onRenderDeleteButtonContent: PropTypes.func, + // Same as props `onIsTokenEditable` of TokenInput + onIsEditable: PropTypes.func.isRequired, // Same as props `onGetTokenEditableValue` of TokenInput onGetEditableValue: PropTypes.func.isRequired, // Same as props `onGetTokenErrorMessage` of TokenInput diff --git a/dist/react-customize-token-input.css b/dist/react-customize-token-input.css index 23e8161..3ef54f3 100644 --- a/dist/react-customize-token-input.css +++ b/dist/react-customize-token-input.css @@ -1 +1 @@ -/*! react-customize-token-input v1.4.2 | (c) 2021 Mark Lin. | MIT | https://github.com/seawind543/react-token-input */.token-input-container{background-color:#fff;border:1px solid #ccc;border-radius:4px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;cursor:text;height:200px;outline:0;overflow-y:auto;padding:4px;-webkit-transition:all .2s linear 0s;-moz-transition:all .2s linear 0s;-o-transition:all .2s linear 0s;-ms-transition:all .2s linear 0s;transition:all .2s linear 0s}.token-input-container *,.token-input-container :after,.token-input-container :before{-webkit-box-sizing:inherit;-moz-box-sizing:inherit;box-sizing:inherit}.token-input-container.token-input-container--focused{border-color:#0096cc}.token-input-container.token-input-container.token-input-container--errors{border-color:#db3d44}.token-input-container .token-input-token-list .token-input-token{-webkit-box-orient:horizontal;-moz-box-orient:horizontal;-o-box-orient:horizontal;-webkit-box-lines:single;-moz-box-lines:single;-o-box-lines:single;-webkit-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-ms-flex-pack:center;-webkit-box-align:center;-moz-box-align:center;-o-box-align:center;-ms-flex-align:center;-ms-flex-line-pack:center;-webkit-align-content:center;align-content:center;-webkit-align-items:center;align-items:center;background-color:#cceaf5;border:0;border-radius:4px;color:#0096cc;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-flex-flow:row nowrap;-ms-flex-flow:row nowrap;flex-flow:row nowrap;float:left;height:32px;-webkit-justify-content:center;justify-content:center;line-height:1.5;margin:0 4px 4px 0;max-width:100%;padding:0;white-space:nowrap}.token-input-container .token-input-token-list .token-input-token.token-input-token--error{background-color:#f9b5b5;color:#db3d44}.token-input-container .token-input-token-list .token-input-token:hover{background-color:#e6f4fc;cursor:pointer}.token-input-container .token-input-token-list .token-input-token:hover.token-input-token--error{background-color:#ffdada}.token-input-container .token-input-token-list .token-input-token:hover.token-input-token--read-only{cursor:default}.token-input-container .token-input-token-list .token-input-token.token-input-token--active .token-input-autosized-wrapper{-webkit-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-ms-flex-pack:center;-webkit-box-align:center;-moz-box-align:center;-o-box-align:center;-ms-flex-align:center;-ms-flex-line-pack:center;-webkit-align-content:center;align-content:center;-webkit-align-items:center;align-items:center;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;height:32px;-webkit-justify-content:center;justify-content:center;margin:4px 8px}.token-input-container .token-input-token-list .token-input-token.token-input-token--active .token-input-autosized-wrapper input{border-bottom:1px solid #aaa;height:auto}.token-input-container .token-input-token-list .token-input-token .token-input-token__label-wrapper{-webkit-box-flex:1;-moz-box-flex:1;-o-box-flex:1;box-flex:1;-webkit-flex:1 0 0;-ms-flex:1 0 0;flex:1 0 0;margin:0 8px;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.token-input-container .token-input-token-list .token-input-token .token-input-token__delete-button{-webkit-box-flex:1;-moz-box-flex:1;-o-box-flex:1;box-flex:1;-webkit-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-ms-flex-pack:center;-webkit-box-align:center;-moz-box-align:center;-o-box-align:center;-ms-flex-align:center;-ms-flex-line-pack:center;-webkit-align-content:center;align-content:center;-webkit-align-items:center;align-items:center;border-left:1px solid #aaa;border-radius:0 4px 4px 0;cursor:pointer;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=30)";filter:alpha(opacity=30);-webkit-flex:0 0 0;-ms-flex:0 0 0;flex:0 0 0;height:100%;-webkit-justify-content:center;justify-content:center;opacity:.3;padding:2px 8px}.token-input-container .token-input-token-list .token-input-token .token-input-token__delete-button:hover{background-color:#aaa;-ms-filter:none;filter:none;opacity:1}.token-input-container .token-input-token-list .token-input-token .token-input-token__delete-button:hover .token-input-token__delete-button__close-icon:after,.token-input-container .token-input-token-list .token-input-token .token-input-token__delete-button:hover .token-input-token__delete-button__close-icon:before{border-color:#fff}.token-input-container .token-input-token-list .token-input-token .token-input-token__delete-button .token-input-token__delete-button__close-icon{height:14px;position:relative;width:14px}.token-input-container .token-input-token-list .token-input-token .token-input-token__delete-button .token-input-token__delete-button__close-icon:after,.token-input-container .token-input-token-list .token-input-token .token-input-token__delete-button .token-input-token__delete-button__close-icon:before{border-left:2px solid #222;content:"";height:14px;left:6px;position:absolute}.token-input-container .token-input-token-list .token-input-token .token-input-token__delete-button .token-input-token__delete-button__close-icon:before{-webkit-transform:rotate(-45deg);-moz-transform:rotate(-45deg);-o-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg)}.token-input-container .token-input-token-list .token-input-token .token-input-token__delete-button .token-input-token__delete-button__close-icon:after{-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-o-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.token-input-container .token-input-autosized-wrapper{float:left;margin-right:4px;overflow:hidden}.token-input-container .token-input-autosized-wrapper input{background:none;border:0;-webkit-box-shadow:none;box-shadow:none;color:#222;cursor:text;height:32px;margin:0;outline:0;padding:0} \ No newline at end of file +/*! react-customize-token-input v1.5.0 | (c) 2021 Mark Lin. | MIT | https://github.com/seawind543/react-token-input */.token-input-container{background-color:#fff;border:1px solid #ccc;border-radius:4px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;cursor:text;height:200px;outline:0;overflow-y:auto;padding:4px}.token-input-container *,.token-input-container :after,.token-input-container :before{-webkit-box-sizing:inherit;-moz-box-sizing:inherit;box-sizing:inherit}.token-input-container.token-input-container--focused{border-color:#0096cc}.token-input-container.token-input-container.token-input-container--errors{border-color:#db3d44}.token-input-container .token-input-token-list .token-input-token{-webkit-box-orient:horizontal;-moz-box-orient:horizontal;-o-box-orient:horizontal;-webkit-box-lines:single;-moz-box-lines:single;-o-box-lines:single;-webkit-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-ms-flex-pack:center;-webkit-box-align:center;-moz-box-align:center;-o-box-align:center;-ms-flex-align:center;-ms-flex-line-pack:center;-webkit-align-content:center;align-content:center;-webkit-align-items:center;align-items:center;background-color:#cceaf5;border:0;border-radius:4px;color:#0096cc;cursor:default;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-webkit-flex-flow:row nowrap;-ms-flex-flow:row nowrap;flex-flow:row nowrap;float:left;height:32px;-webkit-justify-content:center;justify-content:center;line-height:1.5;margin:0 4px 4px 0;max-width:100%;padding:0;white-space:nowrap}.token-input-container .token-input-token-list .token-input-token:hover{background-color:#e6f4fc}.token-input-container .token-input-token-list .token-input-token.token-input-token--error{background-color:#f9b5b5;color:#db3d44}.token-input-container .token-input-token-list .token-input-token.token-input-token--error:hover{background-color:#ffdada}.token-input-container .token-input-token-list .token-input-token.token-input-token--editable:hover{cursor:pointer}.token-input-container .token-input-token-list .token-input-token.token-input-token--active .token-input-autosized-wrapper{-webkit-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-ms-flex-pack:center;-webkit-box-align:center;-moz-box-align:center;-o-box-align:center;-ms-flex-align:center;-ms-flex-line-pack:center;-webkit-align-content:center;align-content:center;-webkit-align-items:center;align-items:center;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;height:32px;-webkit-justify-content:center;justify-content:center;margin:4px 8px}.token-input-container .token-input-token-list .token-input-token.token-input-token--active .token-input-autosized-wrapper input{border-bottom:1px solid #aaa;height:auto}.token-input-container .token-input-token-list .token-input-token .token-input-token__label-wrapper{-webkit-box-flex:1;-moz-box-flex:1;-o-box-flex:1;box-flex:1;-webkit-flex:1 0 0;-ms-flex:1 0 0;flex:1 0 0;margin:0 8px;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.token-input-container .token-input-token-list .token-input-token .token-input-token__delete-button{-webkit-box-flex:1;-moz-box-flex:1;-o-box-flex:1;box-flex:1;-webkit-box-pack:center;-moz-box-pack:center;-o-box-pack:center;-ms-flex-pack:center;-webkit-box-align:center;-moz-box-align:center;-o-box-align:center;-ms-flex-align:center;-ms-flex-line-pack:center;-webkit-align-content:center;align-content:center;-webkit-align-items:center;align-items:center;border-left:1px solid #aaa;border-radius:0 4px 4px 0;cursor:pointer;display:-webkit-box;display:-moz-box;display:-webkit-flex;display:-ms-flexbox;display:box;display:flex;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=30)";filter:alpha(opacity=30);-webkit-flex:0 0 0;-ms-flex:0 0 0;flex:0 0 0;height:100%;-webkit-justify-content:center;justify-content:center;opacity:.3;padding:2px 8px}.token-input-container .token-input-token-list .token-input-token .token-input-token__delete-button:hover{background-color:#aaa;-ms-filter:none;filter:none;opacity:1}.token-input-container .token-input-token-list .token-input-token .token-input-token__delete-button:hover .token-input-token__delete-button__close-icon:after,.token-input-container .token-input-token-list .token-input-token .token-input-token__delete-button:hover .token-input-token__delete-button__close-icon:before{border-color:#fff}.token-input-container .token-input-token-list .token-input-token .token-input-token__delete-button .token-input-token__delete-button__close-icon{height:14px;position:relative;width:14px}.token-input-container .token-input-token-list .token-input-token .token-input-token__delete-button .token-input-token__delete-button__close-icon:after,.token-input-container .token-input-token-list .token-input-token .token-input-token__delete-button .token-input-token__delete-button__close-icon:before{border-left:2px solid #222;content:"";height:14px;left:6px;position:absolute}.token-input-container .token-input-token-list .token-input-token .token-input-token__delete-button .token-input-token__delete-button__close-icon:before{-webkit-transform:rotate(-45deg);-moz-transform:rotate(-45deg);-o-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg)}.token-input-container .token-input-token-list .token-input-token .token-input-token__delete-button .token-input-token__delete-button__close-icon:after{-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-o-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.token-input-container .token-input-autosized-wrapper{float:left;margin-right:4px;overflow:hidden}.token-input-container .token-input-autosized-wrapper input{background:none;border:0;-webkit-box-shadow:none;box-shadow:none;color:#222;cursor:text;height:32px;margin:0;outline:0;padding:0} \ No newline at end of file diff --git a/dist/react-customize-token-input.original.css b/dist/react-customize-token-input.original.css index 139bf26..5a63822 100644 --- a/dist/react-customize-token-input.original.css +++ b/dist/react-customize-token-input.original.css @@ -1,4 +1,4 @@ -/*! react-customize-token-input v1.4.2 | (c) 2021 Mark Lin. | MIT | https://github.com/seawind543/react-token-input */ +/*! react-customize-token-input v1.5.0 | (c) 2021 Mark Lin. | MIT | https://github.com/seawind543/react-token-input */ .token-input-container { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; @@ -11,11 +11,6 @@ border: 1px solid #ccc; border-radius: 4px; outline: 0; - -webkit-transition: all 0.2s linear 0s; - -moz-transition: all 0.2s linear 0s; - -o-transition: all 0.2s linear 0s; - -ms-transition: all 0.2s linear 0s; - transition: all 0.2s linear 0s; } .token-input-container *, .token-input-container *::before, @@ -72,20 +67,20 @@ border-radius: 4px; color: #0096cc; background-color: #cceaf5; + cursor: default; +} +.token-input-container .token-input-token-list .token-input-token:hover { + background-color: #e6f4fc; } .token-input-container .token-input-token-list .token-input-token.token-input-token--error { color: #db3d44; background-color: #f9b5b5; } -.token-input-container .token-input-token-list .token-input-token:hover { - cursor: pointer; - background-color: #e6f4fc; -} -.token-input-container .token-input-token-list .token-input-token:hover.token-input-token--error { +.token-input-container .token-input-token-list .token-input-token.token-input-token--error:hover { background-color: #ffdada; } -.token-input-container .token-input-token-list .token-input-token:hover.token-input-token--read-only { - cursor: default; +.token-input-container .token-input-token-list .token-input-token.token-input-token--editable:hover { + cursor: pointer; } .token-input-container .token-input-token-list .token-input-token.token-input-token--active .token-input-autosized-wrapper { display: -webkit-box; diff --git a/docs/bundle.js b/docs/bundle.js index 2129f4a..61e1732 100644 --- a/docs/bundle.js +++ b/docs/bundle.js @@ -196,6 +196,28 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ }), +/***/ "./ExampleEditable/ExampleEditable.jsx": +/*!*********************************************!*\ + !*** ./ExampleEditable/ExampleEditable.jsx ***! + \*********************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var _src__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../src */ \"../src/index.js\");\n/* harmony import */ var _share_CopyAnchor__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../share/CopyAnchor */ \"./share/CopyAnchor.jsx\");\n/* harmony import */ var _demoValues__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../demoValues */ \"./demoValues.js\");\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _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.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n/* eslint no-console: 0 */\n\n/* eslint no-unused-vars: 0 */\n\n\n\n\n\nvar handleIsTokenEditable = function handleIsTokenEditable(tokenValue, tokenMeta) {\n return Number.isNaN(+tokenValue);\n};\n\nvar ExampleReadOnly = function ExampleReadOnly() {\n var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(_demoValues__WEBPACK_IMPORTED_MODULE_3__.DEMO_VALUES),\n _useState2 = _slicedToArray(_useState, 2),\n values = _useState2[0],\n setValues = _useState2[1];\n\n var handleTokenValuesChange = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(function (newTokenValues) {\n console.log('tokenValues before', values, 'newTokenValues', newTokenValues);\n setValues(newTokenValues);\n }, [values]);\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(react__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"h2\", null, \"Control Token Inline Editable\", /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_share_CopyAnchor__WEBPACK_IMPORTED_MODULE_2__.default, {\n hashTag: \"example-editable\"\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"p\", null, \"TokenInput allow to control a Token is \", /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"b\", null, \"inline editable\"), \" or not.\", /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"br\", null), \"This example demonstrates that only tokens with non-number values are editable.\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_src__WEBPACK_IMPORTED_MODULE_1__.default, {\n tokenValues: values,\n onIsTokenEditable: handleIsTokenEditable,\n onTokenValuesChange: handleTokenValuesChange\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"pre\", null, \"\\n\\n \"));\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ExampleReadOnly);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9FeGFtcGxlRWRpdGFibGUvRXhhbXBsZUVkaXRhYmxlLmpzeC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBO0FBRUE7QUFDQTtBQUVBO0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7O0FBRUE7QUFFQTtBQU1BO0FBQ0E7QUFJQTtBQUlBO0FBQUE7QUFVQTtBQUNBO0FBQ0E7QUFIQTtBQWdCQTs7QUFFQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL0V4YW1wbGVFZGl0YWJsZS9FeGFtcGxlRWRpdGFibGUuanN4PzYxNDgiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50IG5vLWNvbnNvbGU6IDAgKi9cbi8qIGVzbGludCBuby11bnVzZWQtdmFyczogMCAqL1xuXG5pbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIHVzZUNhbGxiYWNrIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IFRva2VuSW5wdXQgZnJvbSAnLi4vLi4vc3JjJztcblxuaW1wb3J0IENvcHlBbmNob3IgZnJvbSAnLi4vc2hhcmUvQ29weUFuY2hvcic7XG5cbmltcG9ydCB7IERFTU9fVkFMVUVTIH0gZnJvbSAnLi4vZGVtb1ZhbHVlcyc7XG5cbmNvbnN0IGhhbmRsZUlzVG9rZW5FZGl0YWJsZSA9ICh0b2tlblZhbHVlLCB0b2tlbk1ldGEpID0+IHtcbiAgcmV0dXJuIE51bWJlci5pc05hTigrdG9rZW5WYWx1ZSk7XG59O1xuXG5jb25zdCBFeGFtcGxlUmVhZE9ubHkgPSAoKSA9PiB7XG4gIGNvbnN0IFt2YWx1ZXMsIHNldFZhbHVlc10gPSB1c2VTdGF0ZShERU1PX1ZBTFVFUyk7XG5cbiAgY29uc3QgaGFuZGxlVG9rZW5WYWx1ZXNDaGFuZ2UgPSB1c2VDYWxsYmFjayhcbiAgICAobmV3VG9rZW5WYWx1ZXMpID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAndG9rZW5WYWx1ZXMgYmVmb3JlJyxcbiAgICAgICAgdmFsdWVzLFxuICAgICAgICAnbmV3VG9rZW5WYWx1ZXMnLFxuICAgICAgICBuZXdUb2tlblZhbHVlc1xuICAgICAgKTtcbiAgICAgIHNldFZhbHVlcyhuZXdUb2tlblZhbHVlcyk7XG4gICAgfSxcbiAgICBbdmFsdWVzXVxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxoMj5cbiAgICAgICAgQ29udHJvbCBUb2tlbiBJbmxpbmUgRWRpdGFibGVcbiAgICAgICAgPENvcHlBbmNob3IgaGFzaFRhZz1cImV4YW1wbGUtZWRpdGFibGVcIiAvPlxuICAgICAgPC9oMj5cbiAgICAgIDxwPlxuICAgICAgICBUb2tlbklucHV0IGFsbG93IHRvIGNvbnRyb2wgYSBUb2tlbiBpcyA8Yj5pbmxpbmUgZWRpdGFibGU8L2I+IG9yIG5vdC5cbiAgICAgICAgPGJyIC8+XG4gICAgICAgIFRoaXMgZXhhbXBsZSBkZW1vbnN0cmF0ZXMgdGhhdCBvbmx5IHRva2VucyB3aXRoIG5vbi1udW1iZXIgdmFsdWVzIGFyZVxuICAgICAgICBlZGl0YWJsZS5cbiAgICAgIDwvcD5cblxuICAgICAgPFRva2VuSW5wdXRcbiAgICAgICAgdG9rZW5WYWx1ZXM9e3ZhbHVlc31cbiAgICAgICAgb25Jc1Rva2VuRWRpdGFibGU9e2hhbmRsZUlzVG9rZW5FZGl0YWJsZX1cbiAgICAgICAgb25Ub2tlblZhbHVlc0NoYW5nZT17aGFuZGxlVG9rZW5WYWx1ZXNDaGFuZ2V9XG4gICAgICAvPlxuICAgICAgPHByZT5cbiAgICAgICAge2BcbjxUb2tlbklucHV0XG4gIHRva2VuVmFsdWVzPXt2YWx1ZXN9XG4gIG9uSXNUb2tlbkVkaXRhYmxlPXtoYW5kbGVJc1Rva2VuRWRpdGFibGV9XG4gIG9uVG9rZW5WYWx1ZXNDaGFuZ2U9e2hhbmRsZVRva2VuVmFsdWVzQ2hhbmdlfVxuLz5cbiAgICAgICAgYH1cbiAgICAgIDwvcHJlPlxuICAgIDwvPlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgRXhhbXBsZVJlYWRPbmx5O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./ExampleEditable/ExampleEditable.jsx\n"); + +/***/ }), + +/***/ "./ExampleEditable/index.js": +/*!**********************************!*\ + !*** ./ExampleEditable/index.js ***! + \**********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _ExampleEditable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ExampleEditable */ \"./ExampleEditable/ExampleEditable.jsx\");\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_ExampleEditable__WEBPACK_IMPORTED_MODULE_0__.default);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9FeGFtcGxlRWRpdGFibGUvaW5kZXguanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTtBQUVBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vRXhhbXBsZUVkaXRhYmxlL2luZGV4LmpzP2U3YmIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEV4YW1wbGVFZGl0YWJsZSBmcm9tICcuL0V4YW1wbGVFZGl0YWJsZSc7XG5cbmV4cG9ydCBkZWZhdWx0IEV4YW1wbGVFZGl0YWJsZTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./ExampleEditable/index.js\n"); + +/***/ }), + /***/ "./ExamplePreprocessor/ExamplePreprocessor.jsx": /*!*****************************************************!*\ !*** ./ExamplePreprocessor/ExamplePreprocessor.jsx ***! @@ -324,7 +346,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-dom */ \"../node_modules/react-dom/index.js\");\n/* harmony import */ var _Navbar__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Navbar */ \"./Navbar.jsx\");\n/* harmony import */ var _Section__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Section */ \"./Section.jsx\");\n/* harmony import */ var _ExampleDefault__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./ExampleDefault */ \"./ExampleDefault/index.js\");\n/* harmony import */ var _ExampleCustomizeDataStructure__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./ExampleCustomizeDataStructure */ \"./ExampleCustomizeDataStructure/index.js\");\n/* harmony import */ var _ExampleCustomizeTokenLabel__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./ExampleCustomizeTokenLabel */ \"./ExampleCustomizeTokenLabel/index.js\");\n/* harmony import */ var _ExampleCustomizeDeleteButton__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./ExampleCustomizeDeleteButton */ \"./ExampleCustomizeDeleteButton/index.js\");\n/* harmony import */ var _ExampleCustomizeTokenVisualTrick__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./ExampleCustomizeTokenVisualTrick */ \"./ExampleCustomizeTokenVisualTrick/index.js\");\n/* harmony import */ var _ExamplePreprocessor__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./ExamplePreprocessor */ \"./ExamplePreprocessor/index.js\");\n/* harmony import */ var _ExampleCustomizeSeparators__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./ExampleCustomizeSeparators */ \"./ExampleCustomizeSeparators/index.js\");\n/* harmony import */ var _ExampleCustomizeToken__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./ExampleCustomizeToken */ \"./ExampleCustomizeToken/index.js\");\n/* harmony import */ var _ExampleReadOnly__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./ExampleReadOnly */ \"./ExampleReadOnly/index.js\");\n/* harmony import */ var _ExampleWithFormLibrary__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./ExampleWithFormLibrary */ \"./ExampleWithFormLibrary/index.js\");\n/* harmony import */ var _ExampleSpecialKeyDown__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./ExampleSpecialKeyDown */ \"./ExampleSpecialKeyDown/index.js\");\n/* harmony import */ var _index_styl__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./index.styl */ \"./index.styl\");\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _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.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n/**\n * Disable the ESLint `import/no-extraneous-dependencies` for import ReactDOM\n * ReactDOM is only use for build the `live demo page` and `dev`,\n * so keep it in devDependencies\n */\n\n // eslint-disable-line import/no-extraneous-dependencies\n\n\n // import ExampleTest from './ExampleTest';\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar name = 'React TokenInput (react-customize-token-input). Visit GitHub here';\nvar url = 'https://github.com/seawind543/react-token-input';\nvar examples = [\n/*#__PURE__*/\n// ,\nreact__WEBPACK_IMPORTED_MODULE_0__.createElement(_ExampleDefault__WEBPACK_IMPORTED_MODULE_4__.default, {\n key: \"ExampleDefault\"\n}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_ExampleCustomizeTokenLabel__WEBPACK_IMPORTED_MODULE_6__.default, {\n key: \"ExampleCustomizeTokenLabel\"\n}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_ExampleCustomizeDeleteButton__WEBPACK_IMPORTED_MODULE_7__.default, {\n key: \"ExampleCustomizeDeleteButton\"\n}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_ExampleCustomizeTokenVisualTrick__WEBPACK_IMPORTED_MODULE_8__.default, {\n key: \"ExampleCustomizeTokenVisualTrick\"\n}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_ExampleCustomizeDataStructure__WEBPACK_IMPORTED_MODULE_5__.default, {\n key: \"ExampleCustomizeDataStructure\"\n}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_ExamplePreprocessor__WEBPACK_IMPORTED_MODULE_9__.default, {\n key: \"ExamplePreprocessor\"\n}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_ExampleCustomizeSeparators__WEBPACK_IMPORTED_MODULE_10__.default, {\n key: \"ExampleCustomizeSeparators\"\n}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_ExampleCustomizeToken__WEBPACK_IMPORTED_MODULE_11__.default, {\n key: \"ExampleCustomizeToken\"\n}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_ExampleReadOnly__WEBPACK_IMPORTED_MODULE_12__.default, {\n key: \"ExampleReadOnly\"\n}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_ExampleWithFormLibrary__WEBPACK_IMPORTED_MODULE_13__.default, {\n key: \"ExampleWithFormLibrary\"\n}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_ExampleSpecialKeyDown__WEBPACK_IMPORTED_MODULE_14__.default, {\n key: \"ExampleSpecialKeyDown\"\n})];\n\nvar App = function App() {\n var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)([]),\n _useState2 = _slicedToArray(_useState, 2),\n titles = _useState2[0],\n setTitles = _useState2[1];\n\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n var titles = [];\n (document.querySelectorAll('h2') || []).forEach(function (h2) {\n var url = (h2.lastChild.className || '').split(' ').includes('hashTag') ? h2.lastChild.href : '#';\n titles.push({\n label: h2.firstChild.textContent || '',\n url: url\n });\n });\n setTitles(titles);\n }, []);\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", {\n \"data-component-name\": \"App\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_Navbar__WEBPACK_IMPORTED_MODULE_2__.default, {\n name: name,\n url: url\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", {\n className: \"container-fluid\",\n style: {\n padding: '20px 20px 0'\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", {\n className: \"row\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"h1\", null, \"Table of contents\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"ul\", null, titles.map(function (title, index) {\n var label = title.label,\n url = title.url;\n var isUrlExist = url !== '#';\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"li\", {\n key: index\n }, isUrlExist && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"a\", {\n href: url\n }, label), !isUrlExist && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"span\", null, label));\n }))), examples.map(function (example, index) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", {\n className: \"row\",\n key: index\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_Section__WEBPACK_IMPORTED_MODULE_3__.default, null, example));\n })));\n};\n\nreact_dom__WEBPACK_IMPORTED_MODULE_1__.render( /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(App, null), document.getElementById('container'));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9pbmRleC5qc3guanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBQ0E7O0FBRUE7QUFDQTs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUVBO0FBRUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTs7QUFHQTtBQUNBO0FBQUE7QUFBQTtBQUFBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUlBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFJQTtBQUlBO0FBQ0E7QUFBQTtBQUFBO0FBREE7QUFRQTs7QUFFQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL2luZGV4LmpzeD8xMTYzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnO1xuXG4vKipcbiAqIERpc2FibGUgdGhlIEVTTGludCBgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzYCBmb3IgaW1wb3J0IFJlYWN0RE9NXG4gKiBSZWFjdERPTSBpcyBvbmx5IHVzZSBmb3IgYnVpbGQgdGhlIGBsaXZlIGRlbW8gcGFnZWAgYW5kIGBkZXZgLFxuICogc28ga2VlcCBpdCBpbiBkZXZEZXBlbmRlbmNpZXNcbiAqL1xuaW1wb3J0IFJlYWN0RE9NIGZyb20gJ3JlYWN0LWRvbSc7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzXG5cbmltcG9ydCBOYXZiYXIgZnJvbSAnLi9OYXZiYXInO1xuaW1wb3J0IFNlY3Rpb24gZnJvbSAnLi9TZWN0aW9uJztcblxuLy8gaW1wb3J0IEV4YW1wbGVUZXN0IGZyb20gJy4vRXhhbXBsZVRlc3QnO1xuaW1wb3J0IEV4YW1wbGVEZWZhdWx0IGZyb20gJy4vRXhhbXBsZURlZmF1bHQnO1xuaW1wb3J0IEV4YW1wbGVDdXN0b21pemVEYXRhU3RydWN0dXJlIGZyb20gJy4vRXhhbXBsZUN1c3RvbWl6ZURhdGFTdHJ1Y3R1cmUnO1xuaW1wb3J0IEV4YW1wbGVDdXN0b21pemVUb2tlbkxhYmVsIGZyb20gJy4vRXhhbXBsZUN1c3RvbWl6ZVRva2VuTGFiZWwnO1xuaW1wb3J0IEV4YW1wbGVDdXN0b21pemVEZWxldGVCdXR0b24gZnJvbSAnLi9FeGFtcGxlQ3VzdG9taXplRGVsZXRlQnV0dG9uJztcbmltcG9ydCBFeGFtcGxlQ3VzdG9taXplVG9rZW5WaXN1YWxUcmljayBmcm9tICcuL0V4YW1wbGVDdXN0b21pemVUb2tlblZpc3VhbFRyaWNrJztcbmltcG9ydCBFeGFtcGxlUHJlcHJvY2Vzc29yIGZyb20gJy4vRXhhbXBsZVByZXByb2Nlc3Nvcic7XG5pbXBvcnQgRXhhbXBsZUN1c3RvbWl6ZVNlcGFyYXRvcnMgZnJvbSAnLi9FeGFtcGxlQ3VzdG9taXplU2VwYXJhdG9ycyc7XG5pbXBvcnQgRXhhbXBsZUN1c3RvbWl6ZVRva2VuIGZyb20gJy4vRXhhbXBsZUN1c3RvbWl6ZVRva2VuJztcbmltcG9ydCBFeGFtcGxlUmVhZE9ubHkgZnJvbSAnLi9FeGFtcGxlUmVhZE9ubHknO1xuaW1wb3J0IEV4YW1wbGVXaXRoRm9ybUxpYnJhcnkgZnJvbSAnLi9FeGFtcGxlV2l0aEZvcm1MaWJyYXJ5JztcbmltcG9ydCBFeGFtcGxlU3BlY2lhbEtleURvd24gZnJvbSAnLi9FeGFtcGxlU3BlY2lhbEtleURvd24nO1xuXG5pbXBvcnQgJy4vaW5kZXguc3R5bCc7XG5cbmNvbnN0IG5hbWUgPVxuICAnUmVhY3QgVG9rZW5JbnB1dCAocmVhY3QtY3VzdG9taXplLXRva2VuLWlucHV0KS4gVmlzaXQgR2l0SHViIGhlcmUnO1xuY29uc3QgdXJsID0gJ2h0dHBzOi8vZ2l0aHViLmNvbS9zZWF3aW5kNTQzL3JlYWN0LXRva2VuLWlucHV0JztcblxuY29uc3QgZXhhbXBsZXMgPSBbXG4gIC8vIDxFeGFtcGxlVGVzdCBrZXk9XCJFeGFtcGxlVGVzdFwiIC8+LFxuICA8RXhhbXBsZURlZmF1bHQga2V5PVwiRXhhbXBsZURlZmF1bHRcIiAvPixcbiAgPEV4YW1wbGVDdXN0b21pemVUb2tlbkxhYmVsIGtleT1cIkV4YW1wbGVDdXN0b21pemVUb2tlbkxhYmVsXCIgLz4sXG4gIDxFeGFtcGxlQ3VzdG9taXplRGVsZXRlQnV0dG9uIGtleT1cIkV4YW1wbGVDdXN0b21pemVEZWxldGVCdXR0b25cIiAvPixcbiAgPEV4YW1wbGVDdXN0b21pemVUb2tlblZpc3VhbFRyaWNrIGtleT1cIkV4YW1wbGVDdXN0b21pemVUb2tlblZpc3VhbFRyaWNrXCIgLz4sXG4gIDxFeGFtcGxlQ3VzdG9taXplRGF0YVN0cnVjdHVyZSBrZXk9XCJFeGFtcGxlQ3VzdG9taXplRGF0YVN0cnVjdHVyZVwiIC8+LFxuICA8RXhhbXBsZVByZXByb2Nlc3NvciBrZXk9XCJFeGFtcGxlUHJlcHJvY2Vzc29yXCIgLz4sXG4gIDxFeGFtcGxlQ3VzdG9taXplU2VwYXJhdG9ycyBrZXk9XCJFeGFtcGxlQ3VzdG9taXplU2VwYXJhdG9yc1wiIC8+LFxuICA8RXhhbXBsZUN1c3RvbWl6ZVRva2VuIGtleT1cIkV4YW1wbGVDdXN0b21pemVUb2tlblwiIC8+LFxuICA8RXhhbXBsZVJlYWRPbmx5IGtleT1cIkV4YW1wbGVSZWFkT25seVwiIC8+LFxuICA8RXhhbXBsZVdpdGhGb3JtTGlicmFyeSBrZXk9XCJFeGFtcGxlV2l0aEZvcm1MaWJyYXJ5XCIgLz4sXG4gIDxFeGFtcGxlU3BlY2lhbEtleURvd24ga2V5PVwiRXhhbXBsZVNwZWNpYWxLZXlEb3duXCIgLz4sXG5dO1xuXG5jb25zdCBBcHAgPSAoKSA9PiB7XG4gIGNvbnN0IFt0aXRsZXMsIHNldFRpdGxlc10gPSB1c2VTdGF0ZShbXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCB0aXRsZXMgPSBbXTtcbiAgICAoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnaDInKSB8fCBbXSkuZm9yRWFjaCgoaDIpID0+IHtcbiAgICAgIGNvbnN0IHVybCA9IChoMi5sYXN0Q2hpbGQuY2xhc3NOYW1lIHx8ICcnKS5zcGxpdCgnICcpLmluY2x1ZGVzKCdoYXNoVGFnJylcbiAgICAgICAgPyBoMi5sYXN0Q2hpbGQuaHJlZlxuICAgICAgICA6ICcjJztcblxuICAgICAgdGl0bGVzLnB1c2goe1xuICAgICAgICBsYWJlbDogaDIuZmlyc3RDaGlsZC50ZXh0Q29udGVudCB8fCAnJyxcbiAgICAgICAgdXJsLFxuICAgICAgfSk7XG4gICAgfSk7XG4gICAgc2V0VGl0bGVzKHRpdGxlcyk7XG4gIH0sIFtdKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXY+XG4gICAgICA8TmF2YmFyIG5hbWU9e25hbWV9IHVybD17dXJsfSAvPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb250YWluZXItZmx1aWRcIiBzdHlsZT17eyBwYWRkaW5nOiAnMjBweCAyMHB4IDAnIH19PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvd1wiPlxuICAgICAgICAgIDxoMT5UYWJsZSBvZiBjb250ZW50czwvaDE+XG4gICAgICAgICAgPHVsPlxuICAgICAgICAgICAge3RpdGxlcy5tYXAoKHRpdGxlLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCB7IGxhYmVsLCB1cmwgfSA9IHRpdGxlO1xuXG4gICAgICAgICAgICAgIGNvbnN0IGlzVXJsRXhpc3QgPSB1cmwgIT09ICcjJztcbiAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICA8bGkga2V5PXtpbmRleH0+XG4gICAgICAgICAgICAgICAgICB7aXNVcmxFeGlzdCAmJiA8YSBocmVmPXt1cmx9PntsYWJlbH08L2E+fVxuICAgICAgICAgICAgICAgICAgeyFpc1VybEV4aXN0ICYmIDxzcGFuPntsYWJlbH08L3NwYW4+fVxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9KX1cbiAgICAgICAgICA8L3VsPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICB7ZXhhbXBsZXMubWFwKChleGFtcGxlLCBpbmRleCkgPT4gKFxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicm93XCIga2V5PXtpbmRleH0+XG4gICAgICAgICAgICA8U2VjdGlvbj57ZXhhbXBsZX08L1NlY3Rpb24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICkpfVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5SZWFjdERPTS5yZW5kZXIoPEFwcCAvPiwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRhaW5lcicpKTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./index.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-dom */ \"../node_modules/react-dom/index.js\");\n/* harmony import */ var _Navbar__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Navbar */ \"./Navbar.jsx\");\n/* harmony import */ var _Section__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Section */ \"./Section.jsx\");\n/* harmony import */ var _ExampleDefault__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./ExampleDefault */ \"./ExampleDefault/index.js\");\n/* harmony import */ var _ExampleCustomizeDataStructure__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./ExampleCustomizeDataStructure */ \"./ExampleCustomizeDataStructure/index.js\");\n/* harmony import */ var _ExampleCustomizeTokenLabel__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./ExampleCustomizeTokenLabel */ \"./ExampleCustomizeTokenLabel/index.js\");\n/* harmony import */ var _ExampleCustomizeDeleteButton__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./ExampleCustomizeDeleteButton */ \"./ExampleCustomizeDeleteButton/index.js\");\n/* harmony import */ var _ExampleCustomizeTokenVisualTrick__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./ExampleCustomizeTokenVisualTrick */ \"./ExampleCustomizeTokenVisualTrick/index.js\");\n/* harmony import */ var _ExamplePreprocessor__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./ExamplePreprocessor */ \"./ExamplePreprocessor/index.js\");\n/* harmony import */ var _ExampleCustomizeSeparators__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./ExampleCustomizeSeparators */ \"./ExampleCustomizeSeparators/index.js\");\n/* harmony import */ var _ExampleCustomizeToken__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./ExampleCustomizeToken */ \"./ExampleCustomizeToken/index.js\");\n/* harmony import */ var _ExampleReadOnly__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./ExampleReadOnly */ \"./ExampleReadOnly/index.js\");\n/* harmony import */ var _ExampleEditable__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./ExampleEditable */ \"./ExampleEditable/index.js\");\n/* harmony import */ var _ExampleWithFormLibrary__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./ExampleWithFormLibrary */ \"./ExampleWithFormLibrary/index.js\");\n/* harmony import */ var _ExampleSpecialKeyDown__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./ExampleSpecialKeyDown */ \"./ExampleSpecialKeyDown/index.js\");\n/* harmony import */ var _index_styl__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./index.styl */ \"./index.styl\");\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _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.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n/**\n * Disable the ESLint `import/no-extraneous-dependencies` for import ReactDOM\n * ReactDOM is only use for build the `live demo page` and `dev`,\n * so keep it in devDependencies\n */\n\n // eslint-disable-line import/no-extraneous-dependencies\n\n\n // import ExampleTest from './ExampleTest';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar name = 'React TokenInput (react-customize-token-input). Visit GitHub here';\nvar url = 'https://github.com/seawind543/react-token-input';\nvar examples = [\n/*#__PURE__*/\n// ,\nreact__WEBPACK_IMPORTED_MODULE_0__.createElement(_ExampleDefault__WEBPACK_IMPORTED_MODULE_4__.default, {\n key: \"ExampleDefault\"\n}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_ExampleCustomizeTokenLabel__WEBPACK_IMPORTED_MODULE_6__.default, {\n key: \"ExampleCustomizeTokenLabel\"\n}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_ExampleCustomizeDeleteButton__WEBPACK_IMPORTED_MODULE_7__.default, {\n key: \"ExampleCustomizeDeleteButton\"\n}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_ExampleCustomizeTokenVisualTrick__WEBPACK_IMPORTED_MODULE_8__.default, {\n key: \"ExampleCustomizeTokenVisualTrick\"\n}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_ExampleCustomizeDataStructure__WEBPACK_IMPORTED_MODULE_5__.default, {\n key: \"ExampleCustomizeDataStructure\"\n}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_ExamplePreprocessor__WEBPACK_IMPORTED_MODULE_9__.default, {\n key: \"ExamplePreprocessor\"\n}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_ExampleCustomizeSeparators__WEBPACK_IMPORTED_MODULE_10__.default, {\n key: \"ExampleCustomizeSeparators\"\n}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_ExampleCustomizeToken__WEBPACK_IMPORTED_MODULE_11__.default, {\n key: \"ExampleCustomizeToken\"\n}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_ExampleReadOnly__WEBPACK_IMPORTED_MODULE_12__.default, {\n key: \"ExampleReadOnly\"\n}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_ExampleEditable__WEBPACK_IMPORTED_MODULE_13__.default, {\n key: \"ExampleEditable\"\n}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_ExampleWithFormLibrary__WEBPACK_IMPORTED_MODULE_14__.default, {\n key: \"ExampleWithFormLibrary\"\n}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_ExampleSpecialKeyDown__WEBPACK_IMPORTED_MODULE_15__.default, {\n key: \"ExampleSpecialKeyDown\"\n})];\n\nvar App = function App() {\n var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)([]),\n _useState2 = _slicedToArray(_useState, 2),\n titles = _useState2[0],\n setTitles = _useState2[1];\n\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n var titles = [];\n (document.querySelectorAll('h2') || []).forEach(function (h2) {\n var url = (h2.lastChild.className || '').split(' ').includes('hashTag') ? h2.lastChild.href : '#';\n titles.push({\n label: h2.firstChild.textContent || '',\n url: url\n });\n });\n setTitles(titles);\n }, []);\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", {\n \"data-component-name\": \"App\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_Navbar__WEBPACK_IMPORTED_MODULE_2__.default, {\n name: name,\n url: url\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", {\n className: \"container-fluid\",\n style: {\n padding: '20px 20px 0'\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", {\n className: \"row\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"h1\", null, \"Table of contents\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"ul\", null, titles.map(function (title, index) {\n var label = title.label,\n url = title.url;\n var isUrlExist = url !== '#';\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"li\", {\n key: index\n }, isUrlExist && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"a\", {\n href: url\n }, label), !isUrlExist && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"span\", null, label));\n }))), examples.map(function (example, index) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", {\n className: \"row\",\n key: index\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_Section__WEBPACK_IMPORTED_MODULE_3__.default, null, example));\n })));\n};\n\nreact_dom__WEBPACK_IMPORTED_MODULE_1__.render( /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(App, null), document.getElementById('container'));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9pbmRleC5qc3guanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUNBOztBQUVBO0FBQ0E7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUVBO0FBRUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7O0FBR0E7QUFDQTtBQUFBO0FBQUE7QUFBQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFJQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBSUE7QUFJQTtBQUNBO0FBQUE7QUFBQTtBQURBO0FBUUE7O0FBRUEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9pbmRleC5qc3g/MTE2MyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcblxuLyoqXG4gKiBEaXNhYmxlIHRoZSBFU0xpbnQgYGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llc2AgZm9yIGltcG9ydCBSZWFjdERPTVxuICogUmVhY3RET00gaXMgb25seSB1c2UgZm9yIGJ1aWxkIHRoZSBgbGl2ZSBkZW1vIHBhZ2VgIGFuZCBgZGV2YCxcbiAqIHNvIGtlZXAgaXQgaW4gZGV2RGVwZW5kZW5jaWVzXG4gKi9cbmltcG9ydCBSZWFjdERPTSBmcm9tICdyZWFjdC1kb20nOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llc1xuXG5pbXBvcnQgTmF2YmFyIGZyb20gJy4vTmF2YmFyJztcbmltcG9ydCBTZWN0aW9uIGZyb20gJy4vU2VjdGlvbic7XG5cbi8vIGltcG9ydCBFeGFtcGxlVGVzdCBmcm9tICcuL0V4YW1wbGVUZXN0JztcbmltcG9ydCBFeGFtcGxlRGVmYXVsdCBmcm9tICcuL0V4YW1wbGVEZWZhdWx0JztcbmltcG9ydCBFeGFtcGxlQ3VzdG9taXplRGF0YVN0cnVjdHVyZSBmcm9tICcuL0V4YW1wbGVDdXN0b21pemVEYXRhU3RydWN0dXJlJztcbmltcG9ydCBFeGFtcGxlQ3VzdG9taXplVG9rZW5MYWJlbCBmcm9tICcuL0V4YW1wbGVDdXN0b21pemVUb2tlbkxhYmVsJztcbmltcG9ydCBFeGFtcGxlQ3VzdG9taXplRGVsZXRlQnV0dG9uIGZyb20gJy4vRXhhbXBsZUN1c3RvbWl6ZURlbGV0ZUJ1dHRvbic7XG5pbXBvcnQgRXhhbXBsZUN1c3RvbWl6ZVRva2VuVmlzdWFsVHJpY2sgZnJvbSAnLi9FeGFtcGxlQ3VzdG9taXplVG9rZW5WaXN1YWxUcmljayc7XG5pbXBvcnQgRXhhbXBsZVByZXByb2Nlc3NvciBmcm9tICcuL0V4YW1wbGVQcmVwcm9jZXNzb3InO1xuaW1wb3J0IEV4YW1wbGVDdXN0b21pemVTZXBhcmF0b3JzIGZyb20gJy4vRXhhbXBsZUN1c3RvbWl6ZVNlcGFyYXRvcnMnO1xuaW1wb3J0IEV4YW1wbGVDdXN0b21pemVUb2tlbiBmcm9tICcuL0V4YW1wbGVDdXN0b21pemVUb2tlbic7XG5pbXBvcnQgRXhhbXBsZVJlYWRPbmx5IGZyb20gJy4vRXhhbXBsZVJlYWRPbmx5JztcbmltcG9ydCBFeGFtcGxlRWRpdGFibGUgZnJvbSAnLi9FeGFtcGxlRWRpdGFibGUnO1xuaW1wb3J0IEV4YW1wbGVXaXRoRm9ybUxpYnJhcnkgZnJvbSAnLi9FeGFtcGxlV2l0aEZvcm1MaWJyYXJ5JztcbmltcG9ydCBFeGFtcGxlU3BlY2lhbEtleURvd24gZnJvbSAnLi9FeGFtcGxlU3BlY2lhbEtleURvd24nO1xuXG5pbXBvcnQgJy4vaW5kZXguc3R5bCc7XG5cbmNvbnN0IG5hbWUgPVxuICAnUmVhY3QgVG9rZW5JbnB1dCAocmVhY3QtY3VzdG9taXplLXRva2VuLWlucHV0KS4gVmlzaXQgR2l0SHViIGhlcmUnO1xuY29uc3QgdXJsID0gJ2h0dHBzOi8vZ2l0aHViLmNvbS9zZWF3aW5kNTQzL3JlYWN0LXRva2VuLWlucHV0JztcblxuY29uc3QgZXhhbXBsZXMgPSBbXG4gIC8vIDxFeGFtcGxlVGVzdCBrZXk9XCJFeGFtcGxlVGVzdFwiIC8+LFxuICA8RXhhbXBsZURlZmF1bHQga2V5PVwiRXhhbXBsZURlZmF1bHRcIiAvPixcbiAgPEV4YW1wbGVDdXN0b21pemVUb2tlbkxhYmVsIGtleT1cIkV4YW1wbGVDdXN0b21pemVUb2tlbkxhYmVsXCIgLz4sXG4gIDxFeGFtcGxlQ3VzdG9taXplRGVsZXRlQnV0dG9uIGtleT1cIkV4YW1wbGVDdXN0b21pemVEZWxldGVCdXR0b25cIiAvPixcbiAgPEV4YW1wbGVDdXN0b21pemVUb2tlblZpc3VhbFRyaWNrIGtleT1cIkV4YW1wbGVDdXN0b21pemVUb2tlblZpc3VhbFRyaWNrXCIgLz4sXG4gIDxFeGFtcGxlQ3VzdG9taXplRGF0YVN0cnVjdHVyZSBrZXk9XCJFeGFtcGxlQ3VzdG9taXplRGF0YVN0cnVjdHVyZVwiIC8+LFxuICA8RXhhbXBsZVByZXByb2Nlc3NvciBrZXk9XCJFeGFtcGxlUHJlcHJvY2Vzc29yXCIgLz4sXG4gIDxFeGFtcGxlQ3VzdG9taXplU2VwYXJhdG9ycyBrZXk9XCJFeGFtcGxlQ3VzdG9taXplU2VwYXJhdG9yc1wiIC8+LFxuICA8RXhhbXBsZUN1c3RvbWl6ZVRva2VuIGtleT1cIkV4YW1wbGVDdXN0b21pemVUb2tlblwiIC8+LFxuICA8RXhhbXBsZVJlYWRPbmx5IGtleT1cIkV4YW1wbGVSZWFkT25seVwiIC8+LFxuICA8RXhhbXBsZUVkaXRhYmxlIGtleT1cIkV4YW1wbGVFZGl0YWJsZVwiIC8+LFxuICA8RXhhbXBsZVdpdGhGb3JtTGlicmFyeSBrZXk9XCJFeGFtcGxlV2l0aEZvcm1MaWJyYXJ5XCIgLz4sXG4gIDxFeGFtcGxlU3BlY2lhbEtleURvd24ga2V5PVwiRXhhbXBsZVNwZWNpYWxLZXlEb3duXCIgLz4sXG5dO1xuXG5jb25zdCBBcHAgPSAoKSA9PiB7XG4gIGNvbnN0IFt0aXRsZXMsIHNldFRpdGxlc10gPSB1c2VTdGF0ZShbXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCB0aXRsZXMgPSBbXTtcbiAgICAoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnaDInKSB8fCBbXSkuZm9yRWFjaCgoaDIpID0+IHtcbiAgICAgIGNvbnN0IHVybCA9IChoMi5sYXN0Q2hpbGQuY2xhc3NOYW1lIHx8ICcnKS5zcGxpdCgnICcpLmluY2x1ZGVzKCdoYXNoVGFnJylcbiAgICAgICAgPyBoMi5sYXN0Q2hpbGQuaHJlZlxuICAgICAgICA6ICcjJztcblxuICAgICAgdGl0bGVzLnB1c2goe1xuICAgICAgICBsYWJlbDogaDIuZmlyc3RDaGlsZC50ZXh0Q29udGVudCB8fCAnJyxcbiAgICAgICAgdXJsLFxuICAgICAgfSk7XG4gICAgfSk7XG4gICAgc2V0VGl0bGVzKHRpdGxlcyk7XG4gIH0sIFtdKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXY+XG4gICAgICA8TmF2YmFyIG5hbWU9e25hbWV9IHVybD17dXJsfSAvPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb250YWluZXItZmx1aWRcIiBzdHlsZT17eyBwYWRkaW5nOiAnMjBweCAyMHB4IDAnIH19PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvd1wiPlxuICAgICAgICAgIDxoMT5UYWJsZSBvZiBjb250ZW50czwvaDE+XG4gICAgICAgICAgPHVsPlxuICAgICAgICAgICAge3RpdGxlcy5tYXAoKHRpdGxlLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCB7IGxhYmVsLCB1cmwgfSA9IHRpdGxlO1xuXG4gICAgICAgICAgICAgIGNvbnN0IGlzVXJsRXhpc3QgPSB1cmwgIT09ICcjJztcbiAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICA8bGkga2V5PXtpbmRleH0+XG4gICAgICAgICAgICAgICAgICB7aXNVcmxFeGlzdCAmJiA8YSBocmVmPXt1cmx9PntsYWJlbH08L2E+fVxuICAgICAgICAgICAgICAgICAgeyFpc1VybEV4aXN0ICYmIDxzcGFuPntsYWJlbH08L3NwYW4+fVxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9KX1cbiAgICAgICAgICA8L3VsPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICB7ZXhhbXBsZXMubWFwKChleGFtcGxlLCBpbmRleCkgPT4gKFxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicm93XCIga2V5PXtpbmRleH0+XG4gICAgICAgICAgICA8U2VjdGlvbj57ZXhhbXBsZX08L1NlY3Rpb24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICkpfVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5SZWFjdERPTS5yZW5kZXIoPEFwcCAvPiwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRhaW5lcicpKTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./index.jsx\n"); /***/ }), @@ -368,7 +390,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ \"../node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! classnames */ \"../node_modules/classnames/index.js\");\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var react_input_autosize__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-input-autosize */ \"../node_modules/react-input-autosize/lib/AutosizeInput.js\");\n/* harmony import */ var _utils_keyDownHandlerProxy__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/keyDownHandlerProxy */ \"../src/utils/keyDownHandlerProxy.js\");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../constants */ \"../src/constants.js\");\n/* harmony import */ var _DeleteButton__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./DeleteButton */ \"../src/Token/DeleteButton.jsx\");\n/* harmony import */ var _styles_styl__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../styles.styl */ \"../src/styles.styl\");\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _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.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\n\n\n\n\n\nvar handleInlineEditClick = function handleInlineEditClick(e) {\n e.stopPropagation();\n};\n\nvar Token = function Token(_ref) {\n var readOnly = _ref.readOnly,\n tokenValue = _ref.tokenValue,\n tokenMeta = _ref.tokenMeta,\n onGetClassName = _ref.onGetClassName,\n onGetDisplayLabel = _ref.onGetDisplayLabel,\n onRenderDeleteButtonContent = _ref.onRenderDeleteButtonContent,\n onGetEditableValue = _ref.onGetEditableValue,\n onGetErrorMessage = _ref.onGetErrorMessage,\n onBuildTokenValue = _ref.onBuildTokenValue,\n onEditStart = _ref.onEditStart,\n onEditEnd = _ref.onEditEnd,\n onDelete = _ref.onDelete;\n var autosizeInputRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n\n var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(_constants__WEBPACK_IMPORTED_MODULE_5__.DEFAULT_INPUT_INIT_VALUE),\n _useState2 = _slicedToArray(_useState, 2),\n inputValue = _useState2[0],\n setInputValue = _useState2[1];\n\n var activated = tokenMeta.activated,\n error = tokenMeta.error;\n var handleEditStart = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(function () {\n var tokenEditableValue = onGetEditableValue(tokenValue, tokenMeta);\n setInputValue(tokenEditableValue);\n onEditStart();\n }, [setInputValue, tokenValue, tokenMeta, onGetEditableValue, onEditStart]);\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n if (activated && autosizeInputRef.current) {\n autosizeInputRef.current.focus();\n }\n }, [activated]);\n var handleEditEnd = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(function () {\n var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref2$reset = _ref2.reset,\n reset = _ref2$reset === void 0 ? false : _ref2$reset;\n\n // Handle input inputValue length === 0 case: Rest token\n var isValueClear = inputValue.length === 0;\n\n if (reset || isValueClear) {\n onEditEnd();\n return;\n } // TODO: Handle inputValue include `separators`\n\n\n var newTokenValue = onBuildTokenValue(inputValue);\n onEditEnd(newTokenValue);\n }, [inputValue, onBuildTokenValue, onEditEnd]);\n /*\n * Event handlers\n */\n\n var handleTokenClick = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(function (e) {\n // console.log('handleTokenClick');\n e.stopPropagation();\n\n if (readOnly) {\n return;\n }\n /**\n * Check does the click on the delete button\n * That is, the Element or its parents matched the `selector`\n */\n\n\n var isOnDeleteButton = !!e.target.closest(\".\".concat(_styles_styl__WEBPACK_IMPORTED_MODULE_7__.default.token, \" .\").concat(_constants__WEBPACK_IMPORTED_MODULE_5__.JS__TOKEN__DELETE_BUTTON__CLASS_NAME));\n\n if (isOnDeleteButton) {\n onDelete();\n return;\n }\n\n handleEditStart();\n }, [readOnly, onDelete, handleEditStart]);\n var handleInputValueChange = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(function (e) {\n var value = e.target.value;\n setInputValue(value);\n }, [setInputValue]);\n var handleKeyDown = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(function (e) {\n (0,_utils_keyDownHandlerProxy__WEBPACK_IMPORTED_MODULE_4__.default)(e, {\n onEscape: function onEscape() {\n return handleEditEnd({\n reset: true\n });\n },\n onEnter: function onEnter() {\n return handleEditEnd();\n }\n });\n }, [handleEditEnd]);\n var handleBlur = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(function () {\n // console.log('Token handleBlur');\n handleEditEnd();\n }, [handleEditEnd]);\n var tokenClassName = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function () {\n var _classNames;\n\n return classnames__WEBPACK_IMPORTED_MODULE_2___default()( // Apply customize className on the token\n onGetClassName(tokenValue, tokenMeta), _styles_styl__WEBPACK_IMPORTED_MODULE_7__.default.token, (_classNames = {}, _defineProperty(_classNames, _styles_styl__WEBPACK_IMPORTED_MODULE_7__.default[\"token--active\"], activated), _defineProperty(_classNames, _styles_styl__WEBPACK_IMPORTED_MODULE_7__.default[\"token--error\"], error && !activated), _defineProperty(_classNames, _styles_styl__WEBPACK_IMPORTED_MODULE_7__.default[\"token--read-only\"], readOnly), _classNames));\n }, [readOnly, error, activated, onGetClassName, tokenValue, tokenMeta]);\n var errorMessage = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function () {\n return onGetErrorMessage(tokenValue, tokenMeta);\n }, [onGetErrorMessage, tokenValue, tokenMeta]);\n\n if (activated) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", {\n role: \"presentation\",\n className: tokenClassName,\n onClick: handleInlineEditClick\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", {\n className: _styles_styl__WEBPACK_IMPORTED_MODULE_7__.default[\"autosized-wrapper\"]\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(react_input_autosize__WEBPACK_IMPORTED_MODULE_3__.default, {\n ref: autosizeInputRef,\n value: inputValue,\n onChange: handleInputValueChange,\n onKeyDown: handleKeyDown,\n onBlur: handleBlur\n })));\n }\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", {\n role: \"presentation\",\n className: tokenClassName,\n onClick: handleTokenClick,\n title: errorMessage,\n \"data-component-name\": \"Token\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", {\n className: _styles_styl__WEBPACK_IMPORTED_MODULE_7__.default[\"token__label-wrapper\"]\n }, onGetDisplayLabel(tokenValue, tokenMeta)), !readOnly && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_DeleteButton__WEBPACK_IMPORTED_MODULE_6__.default, {\n onRenderContent: onRenderDeleteButtonContent\n }));\n};\n\nToken.propTypes = {\n // Same as props of TokenInput\n readOnly: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().bool.isRequired),\n // tokenValue of token\n tokenValue: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().any.isRequired),\n // tokenMeta of token\n tokenMeta: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().object.isRequired),\n // Same as props `onGetTokenClassName` of TokenInput\n onGetClassName: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func.isRequired),\n // Same as props `onGetTokenDisplayLabel` of TokenInput\n onGetDisplayLabel: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func.isRequired),\n // Same as props `onRenderTokenDeleteButtonContent` of TokenInput\n onRenderDeleteButtonContent: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func),\n // Same as props `onGetTokenEditableValue` of TokenInput\n onGetEditableValue: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func.isRequired),\n // Same as props `onGetTokenErrorMessage` of TokenInput\n onGetErrorMessage: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func.isRequired),\n // Editing\n // Same as props `onBuildTokenValue` of TokenInput\n onBuildTokenValue: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func.isRequired),\n\n /**\n * A callback function, which should be `invoked` when end-user `start editing`\n *\n * Note:\n * Call this function to tell TokenInput it is start to editing the token.\n * As result, TokenInput will set `tokenMeta.activate` to `true`\n *\n * onEditStart()\n *\n * @ return\n * Type: void\n */\n onEditStart: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func.isRequired),\n\n /**\n * A callback function, which should be `invoked` when end-user `end editing`\n *\n * Note:\n * Call this function to tell TokenInput it is finish editing the token.\n * As result, TokenInput will set `tokenMeta.activate` to `false`\n *\n * onEditEnd(newTokenValue?)\n *\n * @ newTokenValue\n * Type: undefined | any (string | number | object | customize data structure)\n * Description:\n * The new tokenValue build by `onBuildTokenValue.\n * TokenInput will update it, and\n * TokenInput will call `onTokenValuesChange`\n *\n * Note:\n * When newTokenValue is `undefined`,\n * TokenInput will treat as `Cancel` (End without update newTokenValue).\n * The `onTokenValuesChange` will not be called.\n *\n * @ return\n * Type: void\n */\n onEditEnd: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func.isRequired),\n\n /**\n * A callback function, which should be `invoked` when end-user `delete` the token\n *\n * Note:\n * Call this function to tell TokenInput to delete the token.\n * As result, TokenInput will remove it, and\n * TokenInput will call `onTokenValuesChange` to update tokenValues.\n *\n * onDelete()\n *\n * @ return\n * Type: void\n */\n onDelete: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func.isRequired)\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Token);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vc3JjL1Rva2VuL1Rva2VuLmpzeC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFhQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTs7QUFDQTtBQUFBO0FBQUE7QUFBQTs7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFBQTs7QUFDQTtBQUNBOztBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFJQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7O0FBQ0E7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQTs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBSUE7QUFFQTtBQUNBO0FBQ0E7QUFJQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUZBO0FBSUE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7O0FBQ0E7QUFFQTtBQVFBO0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFIQTtBQUtBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTEE7QUFVQTs7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFBQTtBQU1BO0FBQUE7QUFJQTtBQUFBO0FBSUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBNUVBO0FBK0VBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uL3NyYy9Ub2tlbi9Ub2tlbi5qc3g/MDM2MSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHtcbiAgdXNlU3RhdGUsXG4gIHVzZUNhbGxiYWNrLFxuICB1c2VNZW1vLFxuICB1c2VSZWYsXG4gIHVzZUVmZmVjdCxcbn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IEF1dG9zaXplSW5wdXQgZnJvbSAncmVhY3QtaW5wdXQtYXV0b3NpemUnO1xuaW1wb3J0IGtleURvd25IYW5kbGVyUHJveHkgZnJvbSAnLi4vdXRpbHMva2V5RG93bkhhbmRsZXJQcm94eSc7XG5pbXBvcnQge1xuICBERUZBVUxUX0lOUFVUX0lOSVRfVkFMVUUsXG4gIEpTX19UT0tFTl9fREVMRVRFX0JVVFRPTl9fQ0xBU1NfTkFNRSxcbn0gZnJvbSAnLi4vY29uc3RhbnRzJztcblxuaW1wb3J0IERlbGV0ZUJ1dHRvbiBmcm9tICcuL0RlbGV0ZUJ1dHRvbic7XG5cbmltcG9ydCBzdHlsZXMgZnJvbSAnLi4vc3R5bGVzLnN0eWwnO1xuXG5jb25zdCBoYW5kbGVJbmxpbmVFZGl0Q2xpY2sgPSAoZSkgPT4ge1xuICBlLnN0b3BQcm9wYWdhdGlvbigpO1xufTtcblxuY29uc3QgVG9rZW4gPSAoe1xuICByZWFkT25seSxcbiAgdG9rZW5WYWx1ZSxcbiAgdG9rZW5NZXRhLFxuICBvbkdldENsYXNzTmFtZSxcbiAgb25HZXREaXNwbGF5TGFiZWwsXG4gIG9uUmVuZGVyRGVsZXRlQnV0dG9uQ29udGVudCxcbiAgb25HZXRFZGl0YWJsZVZhbHVlLFxuICBvbkdldEVycm9yTWVzc2FnZSxcbiAgb25CdWlsZFRva2VuVmFsdWUsXG4gIG9uRWRpdFN0YXJ0LFxuICBvbkVkaXRFbmQsXG4gIG9uRGVsZXRlLFxufSkgPT4ge1xuICBjb25zdCBhdXRvc2l6ZUlucHV0UmVmID0gdXNlUmVmKG51bGwpO1xuICBjb25zdCBbaW5wdXRWYWx1ZSwgc2V0SW5wdXRWYWx1ZV0gPSB1c2VTdGF0ZShERUZBVUxUX0lOUFVUX0lOSVRfVkFMVUUpO1xuICBjb25zdCB7IGFjdGl2YXRlZCwgZXJyb3IgfSA9IHRva2VuTWV0YTtcblxuICBjb25zdCBoYW5kbGVFZGl0U3RhcnQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY29uc3QgdG9rZW5FZGl0YWJsZVZhbHVlID0gb25HZXRFZGl0YWJsZVZhbHVlKHRva2VuVmFsdWUsIHRva2VuTWV0YSk7XG4gICAgc2V0SW5wdXRWYWx1ZSh0b2tlbkVkaXRhYmxlVmFsdWUpO1xuICAgIG9uRWRpdFN0YXJ0KCk7XG4gIH0sIFtzZXRJbnB1dFZhbHVlLCB0b2tlblZhbHVlLCB0b2tlbk1ldGEsIG9uR2V0RWRpdGFibGVWYWx1ZSwgb25FZGl0U3RhcnRdKTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoYWN0aXZhdGVkICYmIGF1dG9zaXplSW5wdXRSZWYuY3VycmVudCkge1xuICAgICAgYXV0b3NpemVJbnB1dFJlZi5jdXJyZW50LmZvY3VzKCk7XG4gICAgfVxuICB9LCBbYWN0aXZhdGVkXSk7XG5cbiAgY29uc3QgaGFuZGxlRWRpdEVuZCA9IHVzZUNhbGxiYWNrKFxuICAgICh7IHJlc2V0ID0gZmFsc2UgfSA9IHt9KSA9PiB7XG4gICAgICAvLyBIYW5kbGUgaW5wdXQgaW5wdXRWYWx1ZSBsZW5ndGggPT09IDAgY2FzZTogUmVzdCB0b2tlblxuICAgICAgY29uc3QgaXNWYWx1ZUNsZWFyID0gaW5wdXRWYWx1ZS5sZW5ndGggPT09IDA7XG4gICAgICBpZiAocmVzZXQgfHwgaXNWYWx1ZUNsZWFyKSB7XG4gICAgICAgIG9uRWRpdEVuZCgpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIFRPRE86IEhhbmRsZSBpbnB1dFZhbHVlIGluY2x1ZGUgYHNlcGFyYXRvcnNgXG5cbiAgICAgIGNvbnN0IG5ld1Rva2VuVmFsdWUgPSBvbkJ1aWxkVG9rZW5WYWx1ZShpbnB1dFZhbHVlKTtcbiAgICAgIG9uRWRpdEVuZChuZXdUb2tlblZhbHVlKTtcbiAgICB9LFxuICAgIFtpbnB1dFZhbHVlLCBvbkJ1aWxkVG9rZW5WYWx1ZSwgb25FZGl0RW5kXVxuICApO1xuXG4gIC8qXG4gICAqIEV2ZW50IGhhbmRsZXJzXG4gICAqL1xuICBjb25zdCBoYW5kbGVUb2tlbkNsaWNrID0gdXNlQ2FsbGJhY2soXG4gICAgKGUpID0+IHtcbiAgICAgIC8vIGNvbnNvbGUubG9nKCdoYW5kbGVUb2tlbkNsaWNrJyk7XG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgICBpZiAocmVhZE9ubHkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvKipcbiAgICAgICAqIENoZWNrIGRvZXMgdGhlIGNsaWNrIG9uIHRoZSBkZWxldGUgYnV0dG9uXG4gICAgICAgKiBUaGF0IGlzLCB0aGUgRWxlbWVudCBvciBpdHMgcGFyZW50cyBtYXRjaGVkIHRoZSBgc2VsZWN0b3JgXG4gICAgICAgKi9cbiAgICAgIGNvbnN0IGlzT25EZWxldGVCdXR0b24gPSAhIWUudGFyZ2V0LmNsb3Nlc3QoXG4gICAgICAgIGAuJHtzdHlsZXMudG9rZW59IC4ke0pTX19UT0tFTl9fREVMRVRFX0JVVFRPTl9fQ0xBU1NfTkFNRX1gXG4gICAgICApO1xuICAgICAgaWYgKGlzT25EZWxldGVCdXR0b24pIHtcbiAgICAgICAgb25EZWxldGUoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBoYW5kbGVFZGl0U3RhcnQoKTtcbiAgICB9LFxuICAgIFtyZWFkT25seSwgb25EZWxldGUsIGhhbmRsZUVkaXRTdGFydF1cbiAgKTtcblxuICBjb25zdCBoYW5kbGVJbnB1dFZhbHVlQ2hhbmdlID0gdXNlQ2FsbGJhY2soXG4gICAgKGUpID0+IHtcbiAgICAgIGNvbnN0IHsgdmFsdWUgfSA9IGUudGFyZ2V0O1xuICAgICAgc2V0SW5wdXRWYWx1ZSh2YWx1ZSk7XG4gICAgfSxcbiAgICBbc2V0SW5wdXRWYWx1ZV1cbiAgKTtcblxuICBjb25zdCBoYW5kbGVLZXlEb3duID0gdXNlQ2FsbGJhY2soXG4gICAgKGUpID0+IHtcbiAgICAgIGtleURvd25IYW5kbGVyUHJveHkoZSwge1xuICAgICAgICBvbkVzY2FwZTogKCkgPT4gaGFuZGxlRWRpdEVuZCh7IHJlc2V0OiB0cnVlIH0pLFxuICAgICAgICBvbkVudGVyOiAoKSA9PiBoYW5kbGVFZGl0RW5kKCksXG4gICAgICB9KTtcbiAgICB9LFxuICAgIFtoYW5kbGVFZGl0RW5kXVxuICApO1xuXG4gIGNvbnN0IGhhbmRsZUJsdXIgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgLy8gY29uc29sZS5sb2coJ1Rva2VuIGhhbmRsZUJsdXInKTtcbiAgICBoYW5kbGVFZGl0RW5kKCk7XG4gIH0sIFtoYW5kbGVFZGl0RW5kXSk7XG5cbiAgY29uc3QgdG9rZW5DbGFzc05hbWUgPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gY2xhc3NOYW1lcyhcbiAgICAgIC8vIEFwcGx5IGN1c3RvbWl6ZSBjbGFzc05hbWUgb24gdGhlIHRva2VuXG4gICAgICBvbkdldENsYXNzTmFtZSh0b2tlblZhbHVlLCB0b2tlbk1ldGEpLFxuICAgICAgc3R5bGVzLnRva2VuLFxuICAgICAge1xuICAgICAgICBbc3R5bGVzWyd0b2tlbi0tYWN0aXZlJ11dOiBhY3RpdmF0ZWQsXG4gICAgICAgIFtzdHlsZXNbJ3Rva2VuLS1lcnJvciddXTogZXJyb3IgJiYgIWFjdGl2YXRlZCxcbiAgICAgICAgW3N0eWxlc1sndG9rZW4tLXJlYWQtb25seSddXTogcmVhZE9ubHksXG4gICAgICB9XG4gICAgKTtcbiAgfSwgW3JlYWRPbmx5LCBlcnJvciwgYWN0aXZhdGVkLCBvbkdldENsYXNzTmFtZSwgdG9rZW5WYWx1ZSwgdG9rZW5NZXRhXSk7XG5cbiAgY29uc3QgZXJyb3JNZXNzYWdlID0gdXNlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIG9uR2V0RXJyb3JNZXNzYWdlKHRva2VuVmFsdWUsIHRva2VuTWV0YSk7XG4gIH0sIFtvbkdldEVycm9yTWVzc2FnZSwgdG9rZW5WYWx1ZSwgdG9rZW5NZXRhXSk7XG5cbiAgaWYgKGFjdGl2YXRlZCkge1xuICAgIHJldHVybiAoXG4gICAgICA8ZGl2XG4gICAgICAgIHJvbGU9XCJwcmVzZW50YXRpb25cIlxuICAgICAgICBjbGFzc05hbWU9e3Rva2VuQ2xhc3NOYW1lfVxuICAgICAgICBvbkNsaWNrPXtoYW5kbGVJbmxpbmVFZGl0Q2xpY2t9XG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXNbJ2F1dG9zaXplZC13cmFwcGVyJ119PlxuICAgICAgICAgIDxBdXRvc2l6ZUlucHV0XG4gICAgICAgICAgICByZWY9e2F1dG9zaXplSW5wdXRSZWZ9XG4gICAgICAgICAgICB2YWx1ZT17aW5wdXRWYWx1ZX1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVJbnB1dFZhbHVlQ2hhbmdlfVxuICAgICAgICAgICAgb25LZXlEb3duPXtoYW5kbGVLZXlEb3dufVxuICAgICAgICAgICAgb25CbHVyPXtoYW5kbGVCbHVyfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgcm9sZT1cInByZXNlbnRhdGlvblwiXG4gICAgICBjbGFzc05hbWU9e3Rva2VuQ2xhc3NOYW1lfVxuICAgICAgb25DbGljaz17aGFuZGxlVG9rZW5DbGlja31cbiAgICAgIHRpdGxlPXtlcnJvck1lc3NhZ2V9XG4gICAgPlxuICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlc1sndG9rZW5fX2xhYmVsLXdyYXBwZXInXX0+XG4gICAgICAgIHtvbkdldERpc3BsYXlMYWJlbCh0b2tlblZhbHVlLCB0b2tlbk1ldGEpfVxuICAgICAgPC9kaXY+XG4gICAgICB7IXJlYWRPbmx5ICYmIChcbiAgICAgICAgPERlbGV0ZUJ1dHRvbiBvblJlbmRlckNvbnRlbnQ9e29uUmVuZGVyRGVsZXRlQnV0dG9uQ29udGVudH0gLz5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5Ub2tlbi5wcm9wVHlwZXMgPSB7XG4gIC8vIFNhbWUgYXMgcHJvcHMgb2YgVG9rZW5JbnB1dFxuICByZWFkT25seTogUHJvcFR5cGVzLmJvb2wuaXNSZXF1aXJlZCxcbiAgLy8gdG9rZW5WYWx1ZSBvZiB0b2tlblxuICB0b2tlblZhbHVlOiBQcm9wVHlwZXMuYW55LmlzUmVxdWlyZWQsXG4gIC8vIHRva2VuTWV0YSBvZiB0b2tlblxuICB0b2tlbk1ldGE6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcblxuICAvLyBTYW1lIGFzIHByb3BzIGBvbkdldFRva2VuQ2xhc3NOYW1lYCBvZiBUb2tlbklucHV0XG4gIG9uR2V0Q2xhc3NOYW1lOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAvLyBTYW1lIGFzIHByb3BzIGBvbkdldFRva2VuRGlzcGxheUxhYmVsYCBvZiBUb2tlbklucHV0XG4gIG9uR2V0RGlzcGxheUxhYmVsOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAvLyBTYW1lIGFzIHByb3BzIGBvblJlbmRlclRva2VuRGVsZXRlQnV0dG9uQ29udGVudGAgb2YgVG9rZW5JbnB1dFxuICBvblJlbmRlckRlbGV0ZUJ1dHRvbkNvbnRlbnQ6IFByb3BUeXBlcy5mdW5jLFxuICAvLyBTYW1lIGFzIHByb3BzIGBvbkdldFRva2VuRWRpdGFibGVWYWx1ZWAgb2YgVG9rZW5JbnB1dFxuICBvbkdldEVkaXRhYmxlVmFsdWU6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIC8vIFNhbWUgYXMgcHJvcHMgYG9uR2V0VG9rZW5FcnJvck1lc3NhZ2VgIG9mIFRva2VuSW5wdXRcbiAgb25HZXRFcnJvck1lc3NhZ2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG5cbiAgLy8gRWRpdGluZ1xuICAvLyBTYW1lIGFzIHByb3BzIGBvbkJ1aWxkVG9rZW5WYWx1ZWAgb2YgVG9rZW5JbnB1dFxuICBvbkJ1aWxkVG9rZW5WYWx1ZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcblxuICAvKipcbiAgICogQSBjYWxsYmFjayBmdW5jdGlvbiwgd2hpY2ggc2hvdWxkIGJlIGBpbnZva2VkYCB3aGVuIGVuZC11c2VyIGBzdGFydCBlZGl0aW5nYFxuICAgKlxuICAgKiBOb3RlOlxuICAgKiBDYWxsIHRoaXMgZnVuY3Rpb24gdG8gdGVsbCBUb2tlbklucHV0IGl0IGlzIHN0YXJ0IHRvIGVkaXRpbmcgdGhlIHRva2VuLlxuICAgKiBBcyByZXN1bHQsIFRva2VuSW5wdXQgd2lsbCBzZXQgYHRva2VuTWV0YS5hY3RpdmF0ZWAgdG8gYHRydWVgXG4gICAqXG4gICAqIG9uRWRpdFN0YXJ0KClcbiAgICpcbiAgICogQCByZXR1cm5cbiAgICogVHlwZTogdm9pZFxuICAgKi9cbiAgb25FZGl0U3RhcnQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG5cbiAgLyoqXG4gICAqIEEgY2FsbGJhY2sgZnVuY3Rpb24sIHdoaWNoIHNob3VsZCBiZSBgaW52b2tlZGAgd2hlbiBlbmQtdXNlciBgZW5kIGVkaXRpbmdgXG4gICAqXG4gICAqIE5vdGU6XG4gICAqIENhbGwgdGhpcyBmdW5jdGlvbiB0byB0ZWxsIFRva2VuSW5wdXQgaXQgaXMgZmluaXNoIGVkaXRpbmcgdGhlIHRva2VuLlxuICAgKiBBcyByZXN1bHQsIFRva2VuSW5wdXQgd2lsbCBzZXQgYHRva2VuTWV0YS5hY3RpdmF0ZWAgdG8gYGZhbHNlYFxuICAgKlxuICAgKiBvbkVkaXRFbmQobmV3VG9rZW5WYWx1ZT8pXG4gICAqXG4gICAqIEAgbmV3VG9rZW5WYWx1ZVxuICAgKiBUeXBlOiB1bmRlZmluZWQgfCBhbnkgKHN0cmluZyB8IG51bWJlciB8IG9iamVjdCB8IGN1c3RvbWl6ZSBkYXRhIHN0cnVjdHVyZSlcbiAgICogRGVzY3JpcHRpb246XG4gICAqIFRoZSBuZXcgdG9rZW5WYWx1ZSBidWlsZCBieSBgb25CdWlsZFRva2VuVmFsdWUuXG4gICAqIFRva2VuSW5wdXQgd2lsbCB1cGRhdGUgaXQsIGFuZFxuICAgKiBUb2tlbklucHV0IHdpbGwgY2FsbCBgb25Ub2tlblZhbHVlc0NoYW5nZWBcbiAgICpcbiAgICogTm90ZTpcbiAgICogV2hlbiBuZXdUb2tlblZhbHVlIGlzIGB1bmRlZmluZWRgLFxuICAgKiBUb2tlbklucHV0IHdpbGwgdHJlYXQgYXMgYENhbmNlbGAgKEVuZCB3aXRob3V0IHVwZGF0ZSBuZXdUb2tlblZhbHVlKS5cbiAgICogVGhlIGBvblRva2VuVmFsdWVzQ2hhbmdlYCB3aWxsIG5vdCBiZSBjYWxsZWQuXG4gICAqXG4gICAqIEAgcmV0dXJuXG4gICAqIFR5cGU6IHZvaWRcbiAgICovXG4gIG9uRWRpdEVuZDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcblxuICAvKipcbiAgICogQSBjYWxsYmFjayBmdW5jdGlvbiwgd2hpY2ggc2hvdWxkIGJlIGBpbnZva2VkYCB3aGVuIGVuZC11c2VyIGBkZWxldGVgIHRoZSB0b2tlblxuICAgKlxuICAgKiBOb3RlOlxuICAgKiBDYWxsIHRoaXMgZnVuY3Rpb24gdG8gdGVsbCBUb2tlbklucHV0IHRvIGRlbGV0ZSB0aGUgdG9rZW4uXG4gICAqIEFzIHJlc3VsdCwgVG9rZW5JbnB1dCB3aWxsIHJlbW92ZSBpdCwgYW5kXG4gICAqIFRva2VuSW5wdXQgd2lsbCBjYWxsIGBvblRva2VuVmFsdWVzQ2hhbmdlYCB0byB1cGRhdGUgdG9rZW5WYWx1ZXMuXG4gICAqXG4gICAqIG9uRGVsZXRlKClcbiAgICpcbiAgICogQCByZXR1cm5cbiAgICogVHlwZTogdm9pZFxuICAgKi9cbiAgb25EZWxldGU6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUb2tlbjtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../src/Token/Token.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ \"../node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! classnames */ \"../node_modules/classnames/index.js\");\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var react_input_autosize__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-input-autosize */ \"../node_modules/react-input-autosize/lib/AutosizeInput.js\");\n/* harmony import */ var _utils_keyDownHandlerProxy__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/keyDownHandlerProxy */ \"../src/utils/keyDownHandlerProxy.js\");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../constants */ \"../src/constants.js\");\n/* harmony import */ var _DeleteButton__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./DeleteButton */ \"../src/Token/DeleteButton.jsx\");\n/* harmony import */ var _styles_styl__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../styles.styl */ \"../src/styles.styl\");\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _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.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\n\n\n\n\n\nvar handleInlineEditClick = function handleInlineEditClick(e) {\n e.stopPropagation();\n};\n\nvar Token = function Token(_ref) {\n var readOnly = _ref.readOnly,\n tokenValue = _ref.tokenValue,\n tokenMeta = _ref.tokenMeta,\n onGetClassName = _ref.onGetClassName,\n onGetDisplayLabel = _ref.onGetDisplayLabel,\n onRenderDeleteButtonContent = _ref.onRenderDeleteButtonContent,\n onIsEditable = _ref.onIsEditable,\n onGetEditableValue = _ref.onGetEditableValue,\n onGetErrorMessage = _ref.onGetErrorMessage,\n onBuildTokenValue = _ref.onBuildTokenValue,\n onEditStart = _ref.onEditStart,\n onEditEnd = _ref.onEditEnd,\n onDelete = _ref.onDelete;\n var autosizeInputRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n\n var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(_constants__WEBPACK_IMPORTED_MODULE_5__.DEFAULT_INPUT_INIT_VALUE),\n _useState2 = _slicedToArray(_useState, 2),\n inputValue = _useState2[0],\n setInputValue = _useState2[1];\n\n var activated = tokenMeta.activated,\n error = tokenMeta.error;\n var isEditable = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function () {\n return onIsEditable(tokenValue, tokenMeta);\n }, [onIsEditable, tokenValue, tokenMeta]);\n var handleEditStart = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(function () {\n var tokenEditableValue = onGetEditableValue(tokenValue, tokenMeta);\n setInputValue(tokenEditableValue);\n onEditStart();\n }, [setInputValue, tokenValue, tokenMeta, onGetEditableValue, onEditStart]);\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n if (activated && autosizeInputRef.current) {\n autosizeInputRef.current.focus();\n }\n }, [activated]);\n var handleEditEnd = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(function () {\n var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref2$reset = _ref2.reset,\n reset = _ref2$reset === void 0 ? false : _ref2$reset;\n\n // Handle input inputValue length === 0 case: Rest token\n var isValueClear = inputValue.length === 0;\n\n if (reset || isValueClear) {\n onEditEnd();\n return;\n } // TODO: Handle inputValue include `separators`\n\n\n var newTokenValue = onBuildTokenValue(inputValue);\n onEditEnd(newTokenValue);\n }, [inputValue, onBuildTokenValue, onEditEnd]);\n /*\n * Event handlers\n */\n\n var handleTokenClick = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(function (e) {\n // console.log('handleTokenClick');\n e.stopPropagation();\n\n if (readOnly) {\n return;\n }\n /**\n * Check does the click on the delete button\n * That is, the Element or its parents matched the `selector`\n */\n\n\n var isOnDeleteButton = !!e.target.closest(\".\".concat(_styles_styl__WEBPACK_IMPORTED_MODULE_7__.default.token, \" .\").concat(_constants__WEBPACK_IMPORTED_MODULE_5__.JS__TOKEN__DELETE_BUTTON__CLASS_NAME));\n\n if (isOnDeleteButton) {\n onDelete();\n return;\n }\n\n if (isEditable) {\n handleEditStart();\n }\n }, [readOnly, isEditable, onDelete, handleEditStart]);\n var handleInputValueChange = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(function (e) {\n var value = e.target.value;\n setInputValue(value);\n }, [setInputValue]);\n var handleKeyDown = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(function (e) {\n (0,_utils_keyDownHandlerProxy__WEBPACK_IMPORTED_MODULE_4__.default)(e, {\n onEscape: function onEscape() {\n return handleEditEnd({\n reset: true\n });\n },\n onEnter: function onEnter() {\n return handleEditEnd();\n }\n });\n }, [handleEditEnd]);\n var handleBlur = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(function () {\n // console.log('Token handleBlur');\n handleEditEnd();\n }, [handleEditEnd]);\n var tokenClassName = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function () {\n var _classNames;\n\n return classnames__WEBPACK_IMPORTED_MODULE_2___default()( // Apply customize className on the token\n onGetClassName(tokenValue, tokenMeta), _styles_styl__WEBPACK_IMPORTED_MODULE_7__.default.token, (_classNames = {}, _defineProperty(_classNames, _styles_styl__WEBPACK_IMPORTED_MODULE_7__.default[\"token--read-only\"], readOnly), _defineProperty(_classNames, _styles_styl__WEBPACK_IMPORTED_MODULE_7__.default[\"token--editable\"], isEditable && !readOnly), _defineProperty(_classNames, _styles_styl__WEBPACK_IMPORTED_MODULE_7__.default[\"token--active\"], activated), _defineProperty(_classNames, _styles_styl__WEBPACK_IMPORTED_MODULE_7__.default[\"token--error\"], error && !activated), _classNames));\n }, [onGetClassName, readOnly, isEditable, activated, error, tokenValue, tokenMeta]);\n var errorMessage = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function () {\n return onGetErrorMessage(tokenValue, tokenMeta);\n }, [onGetErrorMessage, tokenValue, tokenMeta]);\n\n if (activated) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", {\n role: \"presentation\",\n className: tokenClassName,\n onClick: handleInlineEditClick\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", {\n className: _styles_styl__WEBPACK_IMPORTED_MODULE_7__.default[\"autosized-wrapper\"]\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(react_input_autosize__WEBPACK_IMPORTED_MODULE_3__.default, {\n ref: autosizeInputRef,\n value: inputValue,\n onChange: handleInputValueChange,\n onKeyDown: handleKeyDown,\n onBlur: handleBlur\n })));\n }\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", {\n role: \"presentation\",\n className: tokenClassName,\n onClick: handleTokenClick,\n title: errorMessage,\n \"data-component-name\": \"Token\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", {\n className: _styles_styl__WEBPACK_IMPORTED_MODULE_7__.default[\"token__label-wrapper\"]\n }, onGetDisplayLabel(tokenValue, tokenMeta)), !readOnly && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_DeleteButton__WEBPACK_IMPORTED_MODULE_6__.default, {\n onRenderContent: onRenderDeleteButtonContent\n }));\n};\n\nToken.propTypes = {\n // Same as props of TokenInput\n readOnly: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().bool.isRequired),\n // tokenValue of token\n tokenValue: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().any.isRequired),\n // tokenMeta of token\n tokenMeta: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().object.isRequired),\n // Same as props `onGetTokenClassName` of TokenInput\n onGetClassName: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func.isRequired),\n // Same as props `onGetTokenDisplayLabel` of TokenInput\n onGetDisplayLabel: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func.isRequired),\n // Same as props `onRenderTokenDeleteButtonContent` of TokenInput\n onRenderDeleteButtonContent: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func),\n // Same as props `onIsTokenEditable` of TokenInput\n onIsEditable: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func.isRequired),\n // Same as props `onGetTokenEditableValue` of TokenInput\n onGetEditableValue: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func.isRequired),\n // Same as props `onGetTokenErrorMessage` of TokenInput\n onGetErrorMessage: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func.isRequired),\n // Editing\n // Same as props `onBuildTokenValue` of TokenInput\n onBuildTokenValue: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func.isRequired),\n\n /**\n * A callback function, which should be `invoked` when end-user `start editing`\n *\n * Note:\n * Call this function to tell TokenInput it is start to editing the token.\n * As result, TokenInput will set `tokenMeta.activate` to `true`\n *\n * onEditStart()\n *\n * @ return\n * Type: void\n */\n onEditStart: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func.isRequired),\n\n /**\n * A callback function, which should be `invoked` when end-user `end editing`\n *\n * Note:\n * Call this function to tell TokenInput it is finish editing the token.\n * As result, TokenInput will set `tokenMeta.activate` to `false`\n *\n * onEditEnd(newTokenValue?)\n *\n * @ newTokenValue\n * Type: undefined | any (string | number | object | customize data structure)\n * Description:\n * The new tokenValue build by `onBuildTokenValue.\n * TokenInput will update it, and\n * TokenInput will call `onTokenValuesChange`\n *\n * Note:\n * When newTokenValue is `undefined`,\n * TokenInput will treat as `Cancel` (End without update newTokenValue).\n * The `onTokenValuesChange` will not be called.\n *\n * @ return\n * Type: void\n */\n onEditEnd: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func.isRequired),\n\n /**\n * A callback function, which should be `invoked` when end-user `delete` the token\n *\n * Note:\n * Call this function to tell TokenInput to delete the token.\n * As result, TokenInput will remove it, and\n * TokenInput will call `onTokenValuesChange` to update tokenValues.\n *\n * onDelete()\n *\n * @ return\n * Type: void\n */\n onDelete: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func.isRequired)\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Token);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vc3JjL1Rva2VuL1Rva2VuLmpzeC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFjQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBOztBQUNBO0FBQUE7QUFBQTtBQUFBOztBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUFBOztBQUNBO0FBQ0E7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUlBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTs7QUFDQTtBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7OztBQUNBOztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFFQTtBQUNBO0FBQ0E7QUFJQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUZBO0FBSUE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7O0FBQ0E7QUFFQTtBQVNBO0FBVUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFIQTtBQUtBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTEE7QUFVQTs7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFBQTtBQU1BO0FBQUE7QUFJQTtBQUFBO0FBSUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQTlFQTtBQWlGQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi9zcmMvVG9rZW4vVG9rZW4uanN4PzAzNjEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7XG4gIHVzZVN0YXRlLFxuICB1c2VDYWxsYmFjayxcbiAgdXNlTWVtbyxcbiAgdXNlUmVmLFxuICB1c2VFZmZlY3QsXG59IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCBBdXRvc2l6ZUlucHV0IGZyb20gJ3JlYWN0LWlucHV0LWF1dG9zaXplJztcbmltcG9ydCBrZXlEb3duSGFuZGxlclByb3h5IGZyb20gJy4uL3V0aWxzL2tleURvd25IYW5kbGVyUHJveHknO1xuaW1wb3J0IHtcbiAgREVGQVVMVF9JTlBVVF9JTklUX1ZBTFVFLFxuICBKU19fVE9LRU5fX0RFTEVURV9CVVRUT05fX0NMQVNTX05BTUUsXG59IGZyb20gJy4uL2NvbnN0YW50cyc7XG5cbmltcG9ydCBEZWxldGVCdXR0b24gZnJvbSAnLi9EZWxldGVCdXR0b24nO1xuXG5pbXBvcnQgc3R5bGVzIGZyb20gJy4uL3N0eWxlcy5zdHlsJztcblxuY29uc3QgaGFuZGxlSW5saW5lRWRpdENsaWNrID0gKGUpID0+IHtcbiAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbn07XG5cbmNvbnN0IFRva2VuID0gKHtcbiAgcmVhZE9ubHksXG4gIHRva2VuVmFsdWUsXG4gIHRva2VuTWV0YSxcbiAgb25HZXRDbGFzc05hbWUsXG4gIG9uR2V0RGlzcGxheUxhYmVsLFxuICBvblJlbmRlckRlbGV0ZUJ1dHRvbkNvbnRlbnQsXG4gIG9uSXNFZGl0YWJsZSxcbiAgb25HZXRFZGl0YWJsZVZhbHVlLFxuICBvbkdldEVycm9yTWVzc2FnZSxcbiAgb25CdWlsZFRva2VuVmFsdWUsXG4gIG9uRWRpdFN0YXJ0LFxuICBvbkVkaXRFbmQsXG4gIG9uRGVsZXRlLFxufSkgPT4ge1xuICBjb25zdCBhdXRvc2l6ZUlucHV0UmVmID0gdXNlUmVmKG51bGwpO1xuICBjb25zdCBbaW5wdXRWYWx1ZSwgc2V0SW5wdXRWYWx1ZV0gPSB1c2VTdGF0ZShERUZBVUxUX0lOUFVUX0lOSVRfVkFMVUUpO1xuICBjb25zdCB7IGFjdGl2YXRlZCwgZXJyb3IgfSA9IHRva2VuTWV0YTtcbiAgY29uc3QgaXNFZGl0YWJsZSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiBvbklzRWRpdGFibGUodG9rZW5WYWx1ZSwgdG9rZW5NZXRhKTtcbiAgfSwgW29uSXNFZGl0YWJsZSwgdG9rZW5WYWx1ZSwgdG9rZW5NZXRhXSk7XG5cbiAgY29uc3QgaGFuZGxlRWRpdFN0YXJ0ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IHRva2VuRWRpdGFibGVWYWx1ZSA9IG9uR2V0RWRpdGFibGVWYWx1ZSh0b2tlblZhbHVlLCB0b2tlbk1ldGEpO1xuICAgIHNldElucHV0VmFsdWUodG9rZW5FZGl0YWJsZVZhbHVlKTtcbiAgICBvbkVkaXRTdGFydCgpO1xuICB9LCBbc2V0SW5wdXRWYWx1ZSwgdG9rZW5WYWx1ZSwgdG9rZW5NZXRhLCBvbkdldEVkaXRhYmxlVmFsdWUsIG9uRWRpdFN0YXJ0XSk7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGFjdGl2YXRlZCAmJiBhdXRvc2l6ZUlucHV0UmVmLmN1cnJlbnQpIHtcbiAgICAgIGF1dG9zaXplSW5wdXRSZWYuY3VycmVudC5mb2N1cygpO1xuICAgIH1cbiAgfSwgW2FjdGl2YXRlZF0pO1xuXG4gIGNvbnN0IGhhbmRsZUVkaXRFbmQgPSB1c2VDYWxsYmFjayhcbiAgICAoeyByZXNldCA9IGZhbHNlIH0gPSB7fSkgPT4ge1xuICAgICAgLy8gSGFuZGxlIGlucHV0IGlucHV0VmFsdWUgbGVuZ3RoID09PSAwIGNhc2U6IFJlc3QgdG9rZW5cbiAgICAgIGNvbnN0IGlzVmFsdWVDbGVhciA9IGlucHV0VmFsdWUubGVuZ3RoID09PSAwO1xuICAgICAgaWYgKHJlc2V0IHx8IGlzVmFsdWVDbGVhcikge1xuICAgICAgICBvbkVkaXRFbmQoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBUT0RPOiBIYW5kbGUgaW5wdXRWYWx1ZSBpbmNsdWRlIGBzZXBhcmF0b3JzYFxuXG4gICAgICBjb25zdCBuZXdUb2tlblZhbHVlID0gb25CdWlsZFRva2VuVmFsdWUoaW5wdXRWYWx1ZSk7XG4gICAgICBvbkVkaXRFbmQobmV3VG9rZW5WYWx1ZSk7XG4gICAgfSxcbiAgICBbaW5wdXRWYWx1ZSwgb25CdWlsZFRva2VuVmFsdWUsIG9uRWRpdEVuZF1cbiAgKTtcblxuICAvKlxuICAgKiBFdmVudCBoYW5kbGVyc1xuICAgKi9cbiAgY29uc3QgaGFuZGxlVG9rZW5DbGljayA9IHVzZUNhbGxiYWNrKFxuICAgIChlKSA9PiB7XG4gICAgICAvLyBjb25zb2xlLmxvZygnaGFuZGxlVG9rZW5DbGljaycpO1xuICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgICAgaWYgKHJlYWRPbmx5KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLyoqXG4gICAgICAgKiBDaGVjayBkb2VzIHRoZSBjbGljayBvbiB0aGUgZGVsZXRlIGJ1dHRvblxuICAgICAgICogVGhhdCBpcywgdGhlIEVsZW1lbnQgb3IgaXRzIHBhcmVudHMgbWF0Y2hlZCB0aGUgYHNlbGVjdG9yYFxuICAgICAgICovXG4gICAgICBjb25zdCBpc09uRGVsZXRlQnV0dG9uID0gISFlLnRhcmdldC5jbG9zZXN0KFxuICAgICAgICBgLiR7c3R5bGVzLnRva2VufSAuJHtKU19fVE9LRU5fX0RFTEVURV9CVVRUT05fX0NMQVNTX05BTUV9YFxuICAgICAgKTtcbiAgICAgIGlmIChpc09uRGVsZXRlQnV0dG9uKSB7XG4gICAgICAgIG9uRGVsZXRlKCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKGlzRWRpdGFibGUpIHtcbiAgICAgICAgaGFuZGxlRWRpdFN0YXJ0KCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBbcmVhZE9ubHksIGlzRWRpdGFibGUsIG9uRGVsZXRlLCBoYW5kbGVFZGl0U3RhcnRdXG4gICk7XG5cbiAgY29uc3QgaGFuZGxlSW5wdXRWYWx1ZUNoYW5nZSA9IHVzZUNhbGxiYWNrKFxuICAgIChlKSA9PiB7XG4gICAgICBjb25zdCB7IHZhbHVlIH0gPSBlLnRhcmdldDtcbiAgICAgIHNldElucHV0VmFsdWUodmFsdWUpO1xuICAgIH0sXG4gICAgW3NldElucHV0VmFsdWVdXG4gICk7XG5cbiAgY29uc3QgaGFuZGxlS2V5RG93biA9IHVzZUNhbGxiYWNrKFxuICAgIChlKSA9PiB7XG4gICAgICBrZXlEb3duSGFuZGxlclByb3h5KGUsIHtcbiAgICAgICAgb25Fc2NhcGU6ICgpID0+IGhhbmRsZUVkaXRFbmQoeyByZXNldDogdHJ1ZSB9KSxcbiAgICAgICAgb25FbnRlcjogKCkgPT4gaGFuZGxlRWRpdEVuZCgpLFxuICAgICAgfSk7XG4gICAgfSxcbiAgICBbaGFuZGxlRWRpdEVuZF1cbiAgKTtcblxuICBjb25zdCBoYW5kbGVCbHVyID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIC8vIGNvbnNvbGUubG9nKCdUb2tlbiBoYW5kbGVCbHVyJyk7XG4gICAgaGFuZGxlRWRpdEVuZCgpO1xuICB9LCBbaGFuZGxlRWRpdEVuZF0pO1xuXG4gIGNvbnN0IHRva2VuQ2xhc3NOYW1lID0gdXNlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIGNsYXNzTmFtZXMoXG4gICAgICAvLyBBcHBseSBjdXN0b21pemUgY2xhc3NOYW1lIG9uIHRoZSB0b2tlblxuICAgICAgb25HZXRDbGFzc05hbWUodG9rZW5WYWx1ZSwgdG9rZW5NZXRhKSxcbiAgICAgIHN0eWxlcy50b2tlbixcbiAgICAgIHtcbiAgICAgICAgW3N0eWxlc1sndG9rZW4tLXJlYWQtb25seSddXTogcmVhZE9ubHksXG4gICAgICAgIFtzdHlsZXNbJ3Rva2VuLS1lZGl0YWJsZSddXTogaXNFZGl0YWJsZSAmJiAhcmVhZE9ubHksXG4gICAgICAgIFtzdHlsZXNbJ3Rva2VuLS1hY3RpdmUnXV06IGFjdGl2YXRlZCxcbiAgICAgICAgW3N0eWxlc1sndG9rZW4tLWVycm9yJ11dOiBlcnJvciAmJiAhYWN0aXZhdGVkLFxuICAgICAgfVxuICAgICk7XG4gIH0sIFtcbiAgICBvbkdldENsYXNzTmFtZSxcbiAgICByZWFkT25seSxcbiAgICBpc0VkaXRhYmxlLFxuICAgIGFjdGl2YXRlZCxcbiAgICBlcnJvcixcbiAgICB0b2tlblZhbHVlLFxuICAgIHRva2VuTWV0YSxcbiAgXSk7XG5cbiAgY29uc3QgZXJyb3JNZXNzYWdlID0gdXNlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIG9uR2V0RXJyb3JNZXNzYWdlKHRva2VuVmFsdWUsIHRva2VuTWV0YSk7XG4gIH0sIFtvbkdldEVycm9yTWVzc2FnZSwgdG9rZW5WYWx1ZSwgdG9rZW5NZXRhXSk7XG5cbiAgaWYgKGFjdGl2YXRlZCkge1xuICAgIHJldHVybiAoXG4gICAgICA8ZGl2XG4gICAgICAgIHJvbGU9XCJwcmVzZW50YXRpb25cIlxuICAgICAgICBjbGFzc05hbWU9e3Rva2VuQ2xhc3NOYW1lfVxuICAgICAgICBvbkNsaWNrPXtoYW5kbGVJbmxpbmVFZGl0Q2xpY2t9XG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXNbJ2F1dG9zaXplZC13cmFwcGVyJ119PlxuICAgICAgICAgIDxBdXRvc2l6ZUlucHV0XG4gICAgICAgICAgICByZWY9e2F1dG9zaXplSW5wdXRSZWZ9XG4gICAgICAgICAgICB2YWx1ZT17aW5wdXRWYWx1ZX1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVJbnB1dFZhbHVlQ2hhbmdlfVxuICAgICAgICAgICAgb25LZXlEb3duPXtoYW5kbGVLZXlEb3dufVxuICAgICAgICAgICAgb25CbHVyPXtoYW5kbGVCbHVyfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgcm9sZT1cInByZXNlbnRhdGlvblwiXG4gICAgICBjbGFzc05hbWU9e3Rva2VuQ2xhc3NOYW1lfVxuICAgICAgb25DbGljaz17aGFuZGxlVG9rZW5DbGlja31cbiAgICAgIHRpdGxlPXtlcnJvck1lc3NhZ2V9XG4gICAgPlxuICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlc1sndG9rZW5fX2xhYmVsLXdyYXBwZXInXX0+XG4gICAgICAgIHtvbkdldERpc3BsYXlMYWJlbCh0b2tlblZhbHVlLCB0b2tlbk1ldGEpfVxuICAgICAgPC9kaXY+XG4gICAgICB7IXJlYWRPbmx5ICYmIChcbiAgICAgICAgPERlbGV0ZUJ1dHRvbiBvblJlbmRlckNvbnRlbnQ9e29uUmVuZGVyRGVsZXRlQnV0dG9uQ29udGVudH0gLz5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5Ub2tlbi5wcm9wVHlwZXMgPSB7XG4gIC8vIFNhbWUgYXMgcHJvcHMgb2YgVG9rZW5JbnB1dFxuICByZWFkT25seTogUHJvcFR5cGVzLmJvb2wuaXNSZXF1aXJlZCxcbiAgLy8gdG9rZW5WYWx1ZSBvZiB0b2tlblxuICB0b2tlblZhbHVlOiBQcm9wVHlwZXMuYW55LmlzUmVxdWlyZWQsXG4gIC8vIHRva2VuTWV0YSBvZiB0b2tlblxuICB0b2tlbk1ldGE6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcblxuICAvLyBTYW1lIGFzIHByb3BzIGBvbkdldFRva2VuQ2xhc3NOYW1lYCBvZiBUb2tlbklucHV0XG4gIG9uR2V0Q2xhc3NOYW1lOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAvLyBTYW1lIGFzIHByb3BzIGBvbkdldFRva2VuRGlzcGxheUxhYmVsYCBvZiBUb2tlbklucHV0XG4gIG9uR2V0RGlzcGxheUxhYmVsOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAvLyBTYW1lIGFzIHByb3BzIGBvblJlbmRlclRva2VuRGVsZXRlQnV0dG9uQ29udGVudGAgb2YgVG9rZW5JbnB1dFxuICBvblJlbmRlckRlbGV0ZUJ1dHRvbkNvbnRlbnQ6IFByb3BUeXBlcy5mdW5jLFxuICAvLyBTYW1lIGFzIHByb3BzIGBvbklzVG9rZW5FZGl0YWJsZWAgb2YgVG9rZW5JbnB1dFxuICBvbklzRWRpdGFibGU6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIC8vIFNhbWUgYXMgcHJvcHMgYG9uR2V0VG9rZW5FZGl0YWJsZVZhbHVlYCBvZiBUb2tlbklucHV0XG4gIG9uR2V0RWRpdGFibGVWYWx1ZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgLy8gU2FtZSBhcyBwcm9wcyBgb25HZXRUb2tlbkVycm9yTWVzc2FnZWAgb2YgVG9rZW5JbnB1dFxuICBvbkdldEVycm9yTWVzc2FnZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcblxuICAvLyBFZGl0aW5nXG4gIC8vIFNhbWUgYXMgcHJvcHMgYG9uQnVpbGRUb2tlblZhbHVlYCBvZiBUb2tlbklucHV0XG4gIG9uQnVpbGRUb2tlblZhbHVlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuXG4gIC8qKlxuICAgKiBBIGNhbGxiYWNrIGZ1bmN0aW9uLCB3aGljaCBzaG91bGQgYmUgYGludm9rZWRgIHdoZW4gZW5kLXVzZXIgYHN0YXJ0IGVkaXRpbmdgXG4gICAqXG4gICAqIE5vdGU6XG4gICAqIENhbGwgdGhpcyBmdW5jdGlvbiB0byB0ZWxsIFRva2VuSW5wdXQgaXQgaXMgc3RhcnQgdG8gZWRpdGluZyB0aGUgdG9rZW4uXG4gICAqIEFzIHJlc3VsdCwgVG9rZW5JbnB1dCB3aWxsIHNldCBgdG9rZW5NZXRhLmFjdGl2YXRlYCB0byBgdHJ1ZWBcbiAgICpcbiAgICogb25FZGl0U3RhcnQoKVxuICAgKlxuICAgKiBAIHJldHVyblxuICAgKiBUeXBlOiB2b2lkXG4gICAqL1xuICBvbkVkaXRTdGFydDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcblxuICAvKipcbiAgICogQSBjYWxsYmFjayBmdW5jdGlvbiwgd2hpY2ggc2hvdWxkIGJlIGBpbnZva2VkYCB3aGVuIGVuZC11c2VyIGBlbmQgZWRpdGluZ2BcbiAgICpcbiAgICogTm90ZTpcbiAgICogQ2FsbCB0aGlzIGZ1bmN0aW9uIHRvIHRlbGwgVG9rZW5JbnB1dCBpdCBpcyBmaW5pc2ggZWRpdGluZyB0aGUgdG9rZW4uXG4gICAqIEFzIHJlc3VsdCwgVG9rZW5JbnB1dCB3aWxsIHNldCBgdG9rZW5NZXRhLmFjdGl2YXRlYCB0byBgZmFsc2VgXG4gICAqXG4gICAqIG9uRWRpdEVuZChuZXdUb2tlblZhbHVlPylcbiAgICpcbiAgICogQCBuZXdUb2tlblZhbHVlXG4gICAqIFR5cGU6IHVuZGVmaW5lZCB8IGFueSAoc3RyaW5nIHwgbnVtYmVyIHwgb2JqZWN0IHwgY3VzdG9taXplIGRhdGEgc3RydWN0dXJlKVxuICAgKiBEZXNjcmlwdGlvbjpcbiAgICogVGhlIG5ldyB0b2tlblZhbHVlIGJ1aWxkIGJ5IGBvbkJ1aWxkVG9rZW5WYWx1ZS5cbiAgICogVG9rZW5JbnB1dCB3aWxsIHVwZGF0ZSBpdCwgYW5kXG4gICAqIFRva2VuSW5wdXQgd2lsbCBjYWxsIGBvblRva2VuVmFsdWVzQ2hhbmdlYFxuICAgKlxuICAgKiBOb3RlOlxuICAgKiBXaGVuIG5ld1Rva2VuVmFsdWUgaXMgYHVuZGVmaW5lZGAsXG4gICAqIFRva2VuSW5wdXQgd2lsbCB0cmVhdCBhcyBgQ2FuY2VsYCAoRW5kIHdpdGhvdXQgdXBkYXRlIG5ld1Rva2VuVmFsdWUpLlxuICAgKiBUaGUgYG9uVG9rZW5WYWx1ZXNDaGFuZ2VgIHdpbGwgbm90IGJlIGNhbGxlZC5cbiAgICpcbiAgICogQCByZXR1cm5cbiAgICogVHlwZTogdm9pZFxuICAgKi9cbiAgb25FZGl0RW5kOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuXG4gIC8qKlxuICAgKiBBIGNhbGxiYWNrIGZ1bmN0aW9uLCB3aGljaCBzaG91bGQgYmUgYGludm9rZWRgIHdoZW4gZW5kLXVzZXIgYGRlbGV0ZWAgdGhlIHRva2VuXG4gICAqXG4gICAqIE5vdGU6XG4gICAqIENhbGwgdGhpcyBmdW5jdGlvbiB0byB0ZWxsIFRva2VuSW5wdXQgdG8gZGVsZXRlIHRoZSB0b2tlbi5cbiAgICogQXMgcmVzdWx0LCBUb2tlbklucHV0IHdpbGwgcmVtb3ZlIGl0LCBhbmRcbiAgICogVG9rZW5JbnB1dCB3aWxsIGNhbGwgYG9uVG9rZW5WYWx1ZXNDaGFuZ2VgIHRvIHVwZGF0ZSB0b2tlblZhbHVlcy5cbiAgICpcbiAgICogb25EZWxldGUoKVxuICAgKlxuICAgKiBAIHJldHVyblxuICAgKiBUeXBlOiB2b2lkXG4gICAqL1xuICBvbkRlbGV0ZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRva2VuO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../src/Token/Token.jsx\n"); /***/ }), @@ -401,7 +423,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ \"../node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! classnames */ \"../node_modules/classnames/index.js\");\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _TokenCreator__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./TokenCreator */ \"../src/TokenCreator.jsx\");\n/* harmony import */ var _Token__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Token */ \"../src/Token/index.js\");\n/* harmony import */ var _hooks_useTokenInputFocus__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./hooks/useTokenInputFocus */ \"../src/hooks/useTokenInputFocus.js\");\n/* harmony import */ var _hooks_useTokenCreatorRef__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./hooks/useTokenCreatorRef */ \"../src/hooks/useTokenCreatorRef.js\");\n/* harmony import */ var _hooks_useTokensUpdate__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./hooks/useTokensUpdate */ \"../src/hooks/useTokensUpdate.js\");\n/* harmony import */ var _hooks_useTokenEdit__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./hooks/useTokenEdit */ \"../src/hooks/useTokenEdit.js\");\n/* harmony import */ var _hooks_useTokenDelete__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./hooks/useTokenDelete */ \"../src/hooks/useTokenDelete.js\");\n/* harmony import */ var _utils_buildDefaultTokenValue__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./utils/buildDefaultTokenValue */ \"../src/utils/buildDefaultTokenValue.js\");\n/* harmony import */ var _utils_getDefaultTokenEditableValue__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./utils/getDefaultTokenEditableValue */ \"../src/utils/getDefaultTokenEditableValue.js\");\n/* harmony import */ var _utils_getDefaultTokenErrorMessage__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./utils/getDefaultTokenErrorMessage */ \"../src/utils/getDefaultTokenErrorMessage.js\");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./constants */ \"../src/constants.js\");\n/* harmony import */ var _styles_styl__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./styles.styl */ \"../src/styles.styl\");\nvar _excluded = [\"className\", \"readOnly\", \"autoFocus\", \"placeholder\", \"tokenValues\", \"onTokenValuesChange\", \"onBuildTokenValue\", \"customizeTokenComponent\", \"onGetTokenClassName\", \"onGetTokenDisplayLabel\", \"onRenderTokenDeleteButtonContent\", \"onGetTokenEditableValue\", \"onGetTokenErrorMessage\", \"separators\", \"specialKeyDown\", \"onPreprocess\", \"onInputValueChange\", \"onTokenValueValidate\"];\n\nfunction _extends() { _extends = Object.assign || 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); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _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; }\n\nfunction _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; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar TokenInput = function TokenInput(_ref) {\n var _classNames;\n\n var className = _ref.className,\n readOnly = _ref.readOnly,\n autoFocus = _ref.autoFocus,\n placeholder = _ref.placeholder,\n tokenValues = _ref.tokenValues,\n onTokenValuesChange = _ref.onTokenValuesChange,\n onBuildTokenValue = _ref.onBuildTokenValue,\n customizeTokenComponent = _ref.customizeTokenComponent,\n onGetTokenClassName = _ref.onGetTokenClassName,\n onGetTokenDisplayLabel = _ref.onGetTokenDisplayLabel,\n onRenderTokenDeleteButtonContent = _ref.onRenderTokenDeleteButtonContent,\n onGetTokenEditableValue = _ref.onGetTokenEditableValue,\n onGetTokenErrorMessage = _ref.onGetTokenErrorMessage,\n separators = _ref.separators,\n specialKeyDown = _ref.specialKeyDown,\n onPreprocess = _ref.onPreprocess,\n onInputValueChange = _ref.onInputValueChange,\n onTokenValueValidate = _ref.onTokenValueValidate,\n props = _objectWithoutProperties(_ref, _excluded);\n\n var _useTokenInputFocus = (0,_hooks_useTokenInputFocus__WEBPACK_IMPORTED_MODULE_5__.default)(),\n isTokenInputFocused = _useTokenInputFocus.isTokenInputFocused,\n handleTokenInputFocus = _useTokenInputFocus.handleTokenInputFocus,\n handleTokenInputBlur = _useTokenInputFocus.handleTokenInputBlur;\n\n var _useTokenCreatorRef = (0,_hooks_useTokenCreatorRef__WEBPACK_IMPORTED_MODULE_6__.default)(),\n tokenCreatorRef = _useTokenCreatorRef.tokenCreatorRef,\n focusTokenCreator = _useTokenCreatorRef.focusTokenCreator;\n\n var _useTokensUpdate = (0,_hooks_useTokensUpdate__WEBPACK_IMPORTED_MODULE_7__.default)({\n tokenValues: tokenValues,\n onTokenValueValidate: onTokenValueValidate\n }),\n hasInvalidToken = _useTokensUpdate.hasInvalidToken,\n internalTokenValues = _useTokensUpdate.internalTokenValues,\n tokenMetas = _useTokensUpdate.tokenMetas,\n setTokenActivated = _useTokensUpdate.setTokenActivated;\n\n var _useTokenEdit = (0,_hooks_useTokenEdit__WEBPACK_IMPORTED_MODULE_8__.default)({\n tokenValues: tokenValues,\n onTokenValuesChange: onTokenValuesChange,\n setTokenActivated: setTokenActivated,\n handleTokenInputFocus: handleTokenInputFocus,\n handleTokenInputBlur: handleTokenInputBlur,\n focusTokenCreator: focusTokenCreator\n }),\n handleTokenEditStart = _useTokenEdit.handleTokenEditStart,\n handleTokenEditEnd = _useTokenEdit.handleTokenEditEnd;\n\n var _useTokenDelete = (0,_hooks_useTokenDelete__WEBPACK_IMPORTED_MODULE_9__.default)({\n tokenValues: tokenValues,\n onTokenValuesChange: onTokenValuesChange,\n focusTokenCreator: focusTokenCreator\n }),\n handleTokenDelete = _useTokenDelete.handleTokenDelete,\n handleLastTokenDelete = _useTokenDelete.handleLastTokenDelete;\n\n var handleNewTokenValuesAppend = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(function (appendTokenValues) {\n if (appendTokenValues.length === 0) {\n // Avoid meaningless update\n return;\n }\n\n var newTokenValues = [].concat(_toConsumableArray(tokenValues), _toConsumableArray(appendTokenValues));\n onTokenValuesChange(newTokenValues);\n }, [tokenValues, onTokenValuesChange]);\n var handleInputValuesPreprocess = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(function (inputValues) {\n // console.log('handleInputValuesPreprocess', inputValues);\n if (typeof onPreprocess !== 'function') {\n return inputValues;\n }\n\n var processedValues = onPreprocess(inputValues);\n\n if (Array.isArray(processedValues) !== true) {\n throw new Error('onPreprocess should return an array of values');\n }\n\n return processedValues;\n }, [onPreprocess]);\n var TokenComponent = customizeTokenComponent || _Token__WEBPACK_IMPORTED_MODULE_4__.default;\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", _extends({}, props, {\n className: classnames__WEBPACK_IMPORTED_MODULE_2___default()(className, _styles_styl__WEBPACK_IMPORTED_MODULE_14__.default.container, (_classNames = {}, _defineProperty(_classNames, _styles_styl__WEBPACK_IMPORTED_MODULE_14__.default[\"container--focused\"], isTokenInputFocused), _defineProperty(_classNames, _styles_styl__WEBPACK_IMPORTED_MODULE_14__.default[\"container--errors\"], hasInvalidToken), _classNames)),\n onClick: focusTokenCreator,\n role: \"presentation\",\n \"data-component-name\": \"TokenInput\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", {\n className: _styles_styl__WEBPACK_IMPORTED_MODULE_14__.default[\"token-list\"]\n }, internalTokenValues.map(function (tokenValue, index) {\n var tokenMeta = tokenMetas[index];\n var key = tokenMeta.key;\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(TokenComponent, {\n key: key,\n readOnly: readOnly,\n tokenValue: tokenValue,\n tokenMeta: tokenMeta,\n onGetClassName: onGetTokenClassName,\n onGetDisplayLabel: onGetTokenDisplayLabel,\n onRenderDeleteButtonContent: onRenderTokenDeleteButtonContent,\n onGetEditableValue: onGetTokenEditableValue,\n onGetErrorMessage: onGetTokenErrorMessage,\n onBuildTokenValue: onBuildTokenValue,\n onEditStart: handleTokenEditStart(index),\n onEditEnd: handleTokenEditEnd(index),\n onDelete: handleTokenDelete(index)\n });\n })), !readOnly && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_TokenCreator__WEBPACK_IMPORTED_MODULE_3__.default, {\n ref: tokenCreatorRef,\n placeholder: placeholder,\n autoFocus: autoFocus // eslint-disable-line jsx-a11y/no-autofocus\n ,\n onFocus: handleTokenInputFocus,\n onBlur: handleTokenInputBlur,\n separators: separators,\n specialKeyDown: specialKeyDown,\n onInputValueChange: onInputValueChange,\n onPreprocess: handleInputValuesPreprocess,\n onBuildTokenValue: onBuildTokenValue,\n onNewTokenValuesAppend: handleNewTokenValuesAppend,\n onLastTokenDelete: handleLastTokenDelete\n }));\n};\n\nTokenInput.propTypes = {\n // Assign style to the TokenInput\n style: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().object),\n // Assign className to the TokenInput\n className: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string),\n // Specific TokenInput is `readOnly` or not\n readOnly: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().bool),\n // Specific TokenInput should be autoFocus or not\n autoFocus: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().bool),\n // Placeholder of TokenInput\n placeholder: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string),\n\n /**\n * An array of characters for split the user input string.\n * For example,\n * Split the user input string `abc;def` into `['abc', 'def']`\n * by separators `[';']`\n *\n * Note:\n * It take the `String.prototype.split()` and `RegExp` to split the user input string.\n * Make sure your customized separators could be used with `RegExp`.\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp\n */\n separators: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().array),\n // [Required] An array of tokenValue of TokenInput\n tokenValues: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().array.isRequired),\n\n /**\n * A callback function invoked when tokenValues update\n *\n * onTokenValuesChange(modifiedTokenValues)\n *\n * @ modifiedTokenValues\n * Type: An array of tokenValue of TokenInput\n * Description: Updated tokenValues\n */\n onTokenValuesChange: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func),\n\n /**\n * A callback function for preprocessing the user input string\n * (after it is split into `array of value`).\n *\n * Note: This function execute after `split` but before `onBuildTokenValue`\n *\n * [Use case 1]\n * Make your normalize process in this function, such as `String.prototype.trim()`.\n *\n * [Use case 2]\n * Sometimes, we will want to auto-fit user input, this function could help with it.\n * For example, the user input string is `www.google.com`,\n * and we want to auto-fit it into `http://www.google.com` and `https://www.google.com`.\n *\n *\n * onPreprocess(inputStringValues)\n *\n * @ inputStringValues\n * Type: An array of string values\n * Description:\n * The user input string values // (split from the user input string by the `separators`)\n *\n * @ return\n * Type: An array of string values\n * Description: The values after preprocess\n */\n onPreprocess: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func),\n\n /**\n * A callback function for building `user input string value` into\n * the `tokenValue` (customize data structure).\n *\n * Note: You could make your normalize process in this function too.\n *\n * onBuildTokenValue(stringValue)\n *\n * @ stringValue\n * Type: string\n * Description: The user input value // (A value split by separators)\n *\n * @ return\n * Type: any (string | number | object | customize data structure)\n * Description: customize data structure\n */\n onBuildTokenValue: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func),\n\n /**\n * A callback function invoked when end-user typing but not become token yet\n *\n * onInputValueChange(newValue, previousValue)\n *\n * @ newValue\n * Type: string\n * Description: end-user input string\n *\n * @ previousValue\n * Type: string\n * Description: previous end-user input string\n */\n onInputValueChange: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func),\n\n /**\n * A callback function for validate tokenValue\n *\n * onTokenValueValidate(tokenValue, tokenIndex, tokenValues)\n *\n * @ tokenValue\n * Type: any (string | number | object | customize data structure)\n * Description: The tokenValue build by `onBuildTokenValue`\n *\n * @ tokenIndex\n * Type: number\n * Description: The array index for this tokenValue in tokenValues\n *\n * @ tokenValues\n * Type: array\n * Description: The array of tokenValue of TokenInput\n *\n * @ return\n * Type: any (string | number | object | customize data structure)\n * Description:\n * The customize error.\n * Specific the token's validate status or errorMessage.\n * Could be an error message to display or error object\n *\n * Will be use by `onGetTokenErrorMessage`\n */\n onTokenValueValidate: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func),\n\n /**\n * A callback function for getting customizes `className` for a token\n *\n * onGetTokenClassName(tokenValue, tokenMeta)\n *\n * @ tokenValue\n * Type: any (string | number | object | customize data structure)\n * Description: The tokenValue build by `onBuildTokenValue`\n *\n * @ tokenMeta\n * Description: token's meta data\n * {\n * // A private key for render\n * key: string,\n *\n * // Specific the token is activated for `edit` or not\n * activated: boolean,\n *\n * // Customize data structure built by `onTokenValue Validate`\n * // Specific the token's validate status or errorMessage\n * error: any,\n * }\n *\n * @ return\n * Type: string\n * Description: The customizes className\n */\n onGetTokenClassName: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func),\n\n /**\n * A callback function for getting displayable `label` for a token\n * Apply this to customize the token's content\n * For example, render token with `icon` or `Additional text`\n *\n * onGetTokenDisplayLabel(tokenValue, tokenMeta)\n *\n * @ tokenValue\n * Type: any (string | number | object | customize data structure)\n * Description: The tokenValue build by `onBuildTokenValue`\n *\n * @ tokenMeta\n * Description: token's meta data\n * {\n * // A private key for render\n * key: string,\n *\n * // Specific the token is activated for `edit` or not\n * activated: boolean,\n *\n * // Customize data structure built by `onTokenValue Validate`\n * // Specific the token's validate status or errorMessage\n * error: any,\n * }\n *\n * @ return\n * Type: string || react node\n * Description: The token's content.\n * By default, will apply `getDefaultTokenEditableValue`\n */\n onGetTokenDisplayLabel: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func),\n\n /**\n * A callback function for render content of the delete button for a token\n * Apply this to customize the token's content of delete button\n * For example, replace the build-in x by Google font material-icons\n *\n * onRenderTokenDeleteButtonContent()\n *\n * @ return\n * Type: react node\n * Description: The content of the delete button of the token.\n * By default, TokenInput render a build-in x icon\n */\n onRenderTokenDeleteButtonContent: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func),\n\n /**\n * A callback function for getting `string input value`\n * from `tokenValue` for the end-user to perform `edit`\n *\n * onGetTokenEditableValue(tokenValue)\n *\n * @ tokenValue\n * Type: any (string | number | object | customize data structure)\n * Description: The tokenValue build by `onBuildTokenValue`\n *\n * @ return\n * Type: string\n * Description: The value for end-user to `edit` in an input field\n */\n onGetTokenEditableValue: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func),\n\n /**\n * A callback function for getting the error message from the customize error\n * The `customize error` is generate by `onTokenValueValidate`\n *\n * onGetTokenErrorMessage(tokenValue, tokenMeta)\n *\n * @ tokenValue\n * Type: any (string | number | object | customize data structure)\n * Description: The tokenValue build by `onBuildTokenValue`\n *\n * @ tokenMeta\n * Description: token's meta data\n * {\n * // A private key for render\n * key: string,\n *\n * // Specific the token is activated for `edit` or not\n * activated: boolean,\n *\n * // Customize data structure built by `onTokenValue Validate`\n * // Specific the token's validate status or errorMessage\n * error: any,\n * }\n *\n * @ return\n * Type: string | any\n * Description: The error message to describe an invalid token\n */\n onGetTokenErrorMessage: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func),\n\n /**\n * A customize react functional component for rendering a token\n * Apply this to customize all token function.\n *\n * customizeTokenComponent={MyToken}\n */\n customizeTokenComponent: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func),\n\n /**\n * [Beta; Might be change in the future version]\n * Current only apply to Token Create\n *\n * The config settings to control the specials keyDown event handler behavior.\n * Default setting as below.\n * specialKeyDown: {\n * onBackspace: 1,\n * onTab: 0,\n * onEnter: 1,\n * onEscape: 1,\n * },\n *\n * `0` means turn off (Took native browser behavior. TokenInput should NOT handle it).\n * `1` means apply TokenInput predefined event handler.\n *\n * Reference section below for Predefined event handlers.\n * `Predefined KeyDown Event Handlers`\n */\n specialKeyDown: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().object)\n};\n\nvar dummyFunc = function dummyFunc() {}; // Dummy function\n\n\nTokenInput.defaultProps = {\n className: '',\n readOnly: false,\n autoFocus: false,\n placeholder: '',\n // TokenCreator\n separators: _constants__WEBPACK_IMPORTED_MODULE_13__.DEFAULT_SEPARATORS,\n specialKeyDown: {\n onBackspace: 1,\n onTab: 0,\n onEnter: 1,\n onEscape: 1\n },\n onBuildTokenValue: _utils_buildDefaultTokenValue__WEBPACK_IMPORTED_MODULE_10__.default,\n onInputValueChange: dummyFunc,\n onTokenValueValidate: dummyFunc,\n // FixMe: ReadOnly mode do not need onTokenValuesChange, but for others need\n onTokenValuesChange: dummyFunc,\n // Token\n onGetTokenClassName: dummyFunc,\n onGetTokenDisplayLabel: _utils_getDefaultTokenEditableValue__WEBPACK_IMPORTED_MODULE_11__.default,\n onGetTokenEditableValue: _utils_getDefaultTokenEditableValue__WEBPACK_IMPORTED_MODULE_11__.default,\n onGetTokenErrorMessage: _utils_getDefaultTokenErrorMessage__WEBPACK_IMPORTED_MODULE_12__.default // TODO: Consider add more callback\n // onFocus\n // onBlur\n\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (TokenInput);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vc3JjL1Rva2VuSW5wdXQuanN4LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7O0FBRUE7QUEyQkE7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBQ0E7QUFBQTtBQUFBO0FBQUE7O0FBRUE7QUFBQTtBQUFBOztBQUVBO0FBTUE7QUFDQTtBQUZBO0FBTEE7QUFBQTtBQUFBO0FBQUE7O0FBVUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFOQTtBQUFBO0FBQUE7O0FBU0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUFBO0FBQUE7O0FBTUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFJQTtBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUNBO0FBQ0E7QUFDQTs7QUFDQTtBQUNBO0FBSUE7QUFFQTtBQUdBO0FBSUE7QUFDQTtBQVBBO0FBQUE7QUFTQTtBQUFBO0FBRUE7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFiQTtBQWdCQTtBQUtBO0FBQ0E7QUFDQTtBQUhBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBWkE7QUFpQkE7O0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUF4UkE7O0FBMlJBOzs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFKQTtBQU9BO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTs7QUE5QkE7QUFpQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vc3JjL1Rva2VuSW5wdXQuanN4P2VmN2UiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZUNhbGxiYWNrIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IFRva2VuQ3JlYXRvciBmcm9tICcuL1Rva2VuQ3JlYXRvcic7XG5pbXBvcnQgVG9rZW4gZnJvbSAnLi9Ub2tlbic7XG5cbmltcG9ydCB1c2VUb2tlbklucHV0Rm9jdXMgZnJvbSAnLi9ob29rcy91c2VUb2tlbklucHV0Rm9jdXMnO1xuaW1wb3J0IHVzZVRva2VuQ3JlYXRvclJlZiBmcm9tICcuL2hvb2tzL3VzZVRva2VuQ3JlYXRvclJlZic7XG5pbXBvcnQgdXNlVG9rZW5zVXBkYXRlIGZyb20gJy4vaG9va3MvdXNlVG9rZW5zVXBkYXRlJztcbmltcG9ydCB1c2VUb2tlbkVkaXQgZnJvbSAnLi9ob29rcy91c2VUb2tlbkVkaXQnO1xuaW1wb3J0IHVzZVRva2VuRGVsZXRlIGZyb20gJy4vaG9va3MvdXNlVG9rZW5EZWxldGUnO1xuXG5pbXBvcnQgYnVpbGREZWZhdWx0VG9rZW5WYWx1ZSBmcm9tICcuL3V0aWxzL2J1aWxkRGVmYXVsdFRva2VuVmFsdWUnO1xuaW1wb3J0IGdldERlZmF1bHRUb2tlbkVkaXRhYmxlVmFsdWUgZnJvbSAnLi91dGlscy9nZXREZWZhdWx0VG9rZW5FZGl0YWJsZVZhbHVlJztcbmltcG9ydCBnZXREZWZhdWx0VG9rZW5FcnJvck1lc3NhZ2UgZnJvbSAnLi91dGlscy9nZXREZWZhdWx0VG9rZW5FcnJvck1lc3NhZ2UnO1xuXG5pbXBvcnQgeyBERUZBVUxUX1NFUEFSQVRPUlMgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5cbmltcG9ydCBzdHlsZXMgZnJvbSAnLi9zdHlsZXMuc3R5bCc7XG5cbmNvbnN0IFRva2VuSW5wdXQgPSAoe1xuICBjbGFzc05hbWUsXG4gIHJlYWRPbmx5LFxuICBhdXRvRm9jdXMsXG4gIHBsYWNlaG9sZGVyLFxuXG4gIHRva2VuVmFsdWVzLFxuICBvblRva2VuVmFsdWVzQ2hhbmdlLFxuICBvbkJ1aWxkVG9rZW5WYWx1ZSxcblxuICAvLyBUb2tlblxuICBjdXN0b21pemVUb2tlbkNvbXBvbmVudCxcbiAgb25HZXRUb2tlbkNsYXNzTmFtZSxcbiAgb25HZXRUb2tlbkRpc3BsYXlMYWJlbCxcbiAgb25SZW5kZXJUb2tlbkRlbGV0ZUJ1dHRvbkNvbnRlbnQsXG4gIG9uR2V0VG9rZW5FZGl0YWJsZVZhbHVlLFxuICBvbkdldFRva2VuRXJyb3JNZXNzYWdlLFxuXG4gIC8vIFRva2VuQ3JlYXRvclxuICBzZXBhcmF0b3JzLFxuICBzcGVjaWFsS2V5RG93bixcbiAgb25QcmVwcm9jZXNzLFxuICBvbklucHV0VmFsdWVDaGFuZ2UsXG4gIG9uVG9rZW5WYWx1ZVZhbGlkYXRlLFxuXG4gIC8vIFJlc3RcbiAgLi4ucHJvcHNcbn0pID0+IHtcbiAgY29uc3QgeyBpc1Rva2VuSW5wdXRGb2N1c2VkLCBoYW5kbGVUb2tlbklucHV0Rm9jdXMsIGhhbmRsZVRva2VuSW5wdXRCbHVyIH0gPVxuICAgIHVzZVRva2VuSW5wdXRGb2N1cygpO1xuICBjb25zdCB7IHRva2VuQ3JlYXRvclJlZiwgZm9jdXNUb2tlbkNyZWF0b3IgfSA9IHVzZVRva2VuQ3JlYXRvclJlZigpO1xuXG4gIGNvbnN0IHtcbiAgICBoYXNJbnZhbGlkVG9rZW4sXG4gICAgaW50ZXJuYWxUb2tlblZhbHVlcyxcbiAgICB0b2tlbk1ldGFzLFxuICAgIHNldFRva2VuQWN0aXZhdGVkLFxuICB9ID0gdXNlVG9rZW5zVXBkYXRlKHtcbiAgICB0b2tlblZhbHVlcyxcbiAgICBvblRva2VuVmFsdWVWYWxpZGF0ZSxcbiAgfSk7XG5cbiAgY29uc3QgeyBoYW5kbGVUb2tlbkVkaXRTdGFydCwgaGFuZGxlVG9rZW5FZGl0RW5kIH0gPSB1c2VUb2tlbkVkaXQoe1xuICAgIHRva2VuVmFsdWVzLFxuICAgIG9uVG9rZW5WYWx1ZXNDaGFuZ2UsXG4gICAgc2V0VG9rZW5BY3RpdmF0ZWQsXG4gICAgaGFuZGxlVG9rZW5JbnB1dEZvY3VzLFxuICAgIGhhbmRsZVRva2VuSW5wdXRCbHVyLFxuICAgIGZvY3VzVG9rZW5DcmVhdG9yLFxuICB9KTtcblxuICBjb25zdCB7IGhhbmRsZVRva2VuRGVsZXRlLCBoYW5kbGVMYXN0VG9rZW5EZWxldGUgfSA9IHVzZVRva2VuRGVsZXRlKHtcbiAgICB0b2tlblZhbHVlcyxcbiAgICBvblRva2VuVmFsdWVzQ2hhbmdlLFxuICAgIGZvY3VzVG9rZW5DcmVhdG9yLFxuICB9KTtcblxuICBjb25zdCBoYW5kbGVOZXdUb2tlblZhbHVlc0FwcGVuZCA9IHVzZUNhbGxiYWNrKFxuICAgIChhcHBlbmRUb2tlblZhbHVlcykgPT4ge1xuICAgICAgaWYgKGFwcGVuZFRva2VuVmFsdWVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAvLyBBdm9pZCBtZWFuaW5nbGVzcyB1cGRhdGVcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBuZXdUb2tlblZhbHVlcyA9IFsuLi50b2tlblZhbHVlcywgLi4uYXBwZW5kVG9rZW5WYWx1ZXNdO1xuICAgICAgb25Ub2tlblZhbHVlc0NoYW5nZShuZXdUb2tlblZhbHVlcyk7XG4gICAgfSxcbiAgICBbdG9rZW5WYWx1ZXMsIG9uVG9rZW5WYWx1ZXNDaGFuZ2VdXG4gICk7XG5cbiAgY29uc3QgaGFuZGxlSW5wdXRWYWx1ZXNQcmVwcm9jZXNzID0gdXNlQ2FsbGJhY2soXG4gICAgKGlucHV0VmFsdWVzKSA9PiB7XG4gICAgICAvLyBjb25zb2xlLmxvZygnaGFuZGxlSW5wdXRWYWx1ZXNQcmVwcm9jZXNzJywgaW5wdXRWYWx1ZXMpO1xuICAgICAgaWYgKHR5cGVvZiBvblByZXByb2Nlc3MgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIGlucHV0VmFsdWVzO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBwcm9jZXNzZWRWYWx1ZXMgPSBvblByZXByb2Nlc3MoaW5wdXRWYWx1ZXMpO1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkocHJvY2Vzc2VkVmFsdWVzKSAhPT0gdHJ1ZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ29uUHJlcHJvY2VzcyBzaG91bGQgcmV0dXJuIGFuIGFycmF5IG9mIHZhbHVlcycpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHByb2Nlc3NlZFZhbHVlcztcbiAgICB9LFxuICAgIFtvblByZXByb2Nlc3NdXG4gICk7XG5cbiAgY29uc3QgVG9rZW5Db21wb25lbnQgPSBjdXN0b21pemVUb2tlbkNvbXBvbmVudCB8fCBUb2tlbjtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIHsuLi5wcm9wc31cbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhjbGFzc05hbWUsIHN0eWxlcy5jb250YWluZXIsIHtcbiAgICAgICAgW3N0eWxlc1snY29udGFpbmVyLS1mb2N1c2VkJ11dOiBpc1Rva2VuSW5wdXRGb2N1c2VkLFxuICAgICAgICBbc3R5bGVzWydjb250YWluZXItLWVycm9ycyddXTogaGFzSW52YWxpZFRva2VuLFxuICAgICAgfSl9XG4gICAgICBvbkNsaWNrPXtmb2N1c1Rva2VuQ3JlYXRvcn1cbiAgICAgIHJvbGU9XCJwcmVzZW50YXRpb25cIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXNbJ3Rva2VuLWxpc3QnXX0+XG4gICAgICAgIHtpbnRlcm5hbFRva2VuVmFsdWVzLm1hcCgodG9rZW5WYWx1ZSwgaW5kZXgpID0+IHtcbiAgICAgICAgICBjb25zdCB0b2tlbk1ldGEgPSB0b2tlbk1ldGFzW2luZGV4XTtcbiAgICAgICAgICBjb25zdCB7IGtleSB9ID0gdG9rZW5NZXRhO1xuXG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxUb2tlbkNvbXBvbmVudFxuICAgICAgICAgICAgICBrZXk9e2tleX1cbiAgICAgICAgICAgICAgcmVhZE9ubHk9e3JlYWRPbmx5fVxuICAgICAgICAgICAgICB0b2tlblZhbHVlPXt0b2tlblZhbHVlfVxuICAgICAgICAgICAgICB0b2tlbk1ldGE9e3Rva2VuTWV0YX1cbiAgICAgICAgICAgICAgb25HZXRDbGFzc05hbWU9e29uR2V0VG9rZW5DbGFzc05hbWV9XG4gICAgICAgICAgICAgIG9uR2V0RGlzcGxheUxhYmVsPXtvbkdldFRva2VuRGlzcGxheUxhYmVsfVxuICAgICAgICAgICAgICBvblJlbmRlckRlbGV0ZUJ1dHRvbkNvbnRlbnQ9e29uUmVuZGVyVG9rZW5EZWxldGVCdXR0b25Db250ZW50fVxuICAgICAgICAgICAgICBvbkdldEVkaXRhYmxlVmFsdWU9e29uR2V0VG9rZW5FZGl0YWJsZVZhbHVlfVxuICAgICAgICAgICAgICBvbkdldEVycm9yTWVzc2FnZT17b25HZXRUb2tlbkVycm9yTWVzc2FnZX1cbiAgICAgICAgICAgICAgb25CdWlsZFRva2VuVmFsdWU9e29uQnVpbGRUb2tlblZhbHVlfVxuICAgICAgICAgICAgICBvbkVkaXRTdGFydD17aGFuZGxlVG9rZW5FZGl0U3RhcnQoaW5kZXgpfVxuICAgICAgICAgICAgICBvbkVkaXRFbmQ9e2hhbmRsZVRva2VuRWRpdEVuZChpbmRleCl9XG4gICAgICAgICAgICAgIG9uRGVsZXRlPXtoYW5kbGVUb2tlbkRlbGV0ZShpbmRleCl9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICk7XG4gICAgICAgIH0pfVxuICAgICAgPC9kaXY+XG5cbiAgICAgIHshcmVhZE9ubHkgJiYgKFxuICAgICAgICA8VG9rZW5DcmVhdG9yXG4gICAgICAgICAgcmVmPXt0b2tlbkNyZWF0b3JSZWZ9XG4gICAgICAgICAgcGxhY2Vob2xkZXI9e3BsYWNlaG9sZGVyfVxuICAgICAgICAgIGF1dG9Gb2N1cz17YXV0b0ZvY3VzfSAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGpzeC1hMTF5L25vLWF1dG9mb2N1c1xuICAgICAgICAgIG9uRm9jdXM9e2hhbmRsZVRva2VuSW5wdXRGb2N1c31cbiAgICAgICAgICBvbkJsdXI9e2hhbmRsZVRva2VuSW5wdXRCbHVyfVxuICAgICAgICAgIHNlcGFyYXRvcnM9e3NlcGFyYXRvcnN9XG4gICAgICAgICAgc3BlY2lhbEtleURvd249e3NwZWNpYWxLZXlEb3dufVxuICAgICAgICAgIG9uSW5wdXRWYWx1ZUNoYW5nZT17b25JbnB1dFZhbHVlQ2hhbmdlfVxuICAgICAgICAgIG9uUHJlcHJvY2Vzcz17aGFuZGxlSW5wdXRWYWx1ZXNQcmVwcm9jZXNzfVxuICAgICAgICAgIG9uQnVpbGRUb2tlblZhbHVlPXtvbkJ1aWxkVG9rZW5WYWx1ZX1cbiAgICAgICAgICBvbk5ld1Rva2VuVmFsdWVzQXBwZW5kPXtoYW5kbGVOZXdUb2tlblZhbHVlc0FwcGVuZH1cbiAgICAgICAgICBvbkxhc3RUb2tlbkRlbGV0ZT17aGFuZGxlTGFzdFRva2VuRGVsZXRlfVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cblRva2VuSW5wdXQucHJvcFR5cGVzID0ge1xuICAvLyBBc3NpZ24gc3R5bGUgdG8gdGhlIFRva2VuSW5wdXRcbiAgc3R5bGU6IFByb3BUeXBlcy5vYmplY3QsXG5cbiAgLy8gQXNzaWduIGNsYXNzTmFtZSB0byB0aGUgVG9rZW5JbnB1dFxuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG5cbiAgLy8gU3BlY2lmaWMgVG9rZW5JbnB1dCBpcyBgcmVhZE9ubHlgIG9yIG5vdFxuICByZWFkT25seTogUHJvcFR5cGVzLmJvb2wsXG5cbiAgLy8gU3BlY2lmaWMgVG9rZW5JbnB1dCBzaG91bGQgYmUgYXV0b0ZvY3VzIG9yIG5vdFxuICBhdXRvRm9jdXM6IFByb3BUeXBlcy5ib29sLFxuXG4gIC8vIFBsYWNlaG9sZGVyIG9mIFRva2VuSW5wdXRcbiAgcGxhY2Vob2xkZXI6IFByb3BUeXBlcy5zdHJpbmcsXG5cbiAgLyoqXG4gICAqIEFuIGFycmF5IG9mIGNoYXJhY3RlcnMgZm9yIHNwbGl0IHRoZSB1c2VyIGlucHV0IHN0cmluZy5cbiAgICogRm9yIGV4YW1wbGUsXG4gICAqIFNwbGl0IHRoZSB1c2VyIGlucHV0IHN0cmluZyBgYWJjO2RlZmAgaW50byBgWydhYmMnLCAnZGVmJ11gXG4gICAqIGJ5IHNlcGFyYXRvcnMgYFsnOyddYFxuICAgKlxuICAgKiBOb3RlOlxuICAgKiBJdCB0YWtlIHRoZSBgU3RyaW5nLnByb3RvdHlwZS5zcGxpdCgpYCBhbmQgYFJlZ0V4cGAgdG8gc3BsaXQgdGhlIHVzZXIgaW5wdXQgc3RyaW5nLlxuICAgKiBNYWtlIHN1cmUgeW91ciBjdXN0b21pemVkIHNlcGFyYXRvcnMgY291bGQgYmUgdXNlZCB3aXRoIGBSZWdFeHBgLlxuICAgKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9SZWdFeHBcbiAgICovXG4gIHNlcGFyYXRvcnM6IFByb3BUeXBlcy5hcnJheSxcblxuICAvLyBbUmVxdWlyZWRdIEFuIGFycmF5IG9mIHRva2VuVmFsdWUgb2YgVG9rZW5JbnB1dFxuICB0b2tlblZhbHVlczogUHJvcFR5cGVzLmFycmF5LmlzUmVxdWlyZWQsXG5cbiAgLyoqXG4gICAqIEEgY2FsbGJhY2sgZnVuY3Rpb24gaW52b2tlZCB3aGVuIHRva2VuVmFsdWVzIHVwZGF0ZVxuICAgKlxuICAgKiBvblRva2VuVmFsdWVzQ2hhbmdlKG1vZGlmaWVkVG9rZW5WYWx1ZXMpXG4gICAqXG4gICAqIEAgbW9kaWZpZWRUb2tlblZhbHVlc1xuICAgKiBUeXBlOiBBbiBhcnJheSBvZiB0b2tlblZhbHVlIG9mIFRva2VuSW5wdXRcbiAgICogRGVzY3JpcHRpb246IFVwZGF0ZWQgdG9rZW5WYWx1ZXNcbiAgICovXG4gIG9uVG9rZW5WYWx1ZXNDaGFuZ2U6IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8qKlxuICAgKiBBIGNhbGxiYWNrIGZ1bmN0aW9uIGZvciBwcmVwcm9jZXNzaW5nIHRoZSB1c2VyIGlucHV0IHN0cmluZ1xuICAgKiAoYWZ0ZXIgaXQgaXMgc3BsaXQgaW50byBgYXJyYXkgb2YgdmFsdWVgKS5cbiAgICpcbiAgICogTm90ZTogVGhpcyBmdW5jdGlvbiBleGVjdXRlIGFmdGVyIGBzcGxpdGAgYnV0IGJlZm9yZSBgb25CdWlsZFRva2VuVmFsdWVgXG4gICAqXG4gICAqIFtVc2UgY2FzZSAxXVxuICAgKiAgTWFrZSB5b3VyIG5vcm1hbGl6ZSBwcm9jZXNzIGluIHRoaXMgZnVuY3Rpb24sIHN1Y2ggYXMgYFN0cmluZy5wcm90b3R5cGUudHJpbSgpYC5cbiAgICpcbiAgICogW1VzZSBjYXNlIDJdXG4gICAqIFNvbWV0aW1lcywgd2Ugd2lsbCB3YW50IHRvIGF1dG8tZml0IHVzZXIgaW5wdXQsIHRoaXMgZnVuY3Rpb24gY291bGQgaGVscCB3aXRoIGl0LlxuICAgKiBGb3IgZXhhbXBsZSwgdGhlIHVzZXIgaW5wdXQgc3RyaW5nIGlzIGB3d3cuZ29vZ2xlLmNvbWAsXG4gICAqIGFuZCB3ZSB3YW50IHRvIGF1dG8tZml0IGl0IGludG8gYGh0dHA6Ly93d3cuZ29vZ2xlLmNvbWAgYW5kIGBodHRwczovL3d3dy5nb29nbGUuY29tYC5cbiAgICpcbiAgICpcbiAgICogb25QcmVwcm9jZXNzKGlucHV0U3RyaW5nVmFsdWVzKVxuICAgKlxuICAgKiBAIGlucHV0U3RyaW5nVmFsdWVzXG4gICAqIFR5cGU6IEFuIGFycmF5IG9mIHN0cmluZyB2YWx1ZXNcbiAgICogRGVzY3JpcHRpb246XG4gICAqIFRoZSB1c2VyIGlucHV0IHN0cmluZyB2YWx1ZXMgLy8gKHNwbGl0IGZyb20gdGhlIHVzZXIgaW5wdXQgc3RyaW5nIGJ5IHRoZSBgc2VwYXJhdG9yc2ApXG4gICAqXG4gICAqIEAgcmV0dXJuXG4gICAqIFR5cGU6IEFuIGFycmF5IG9mIHN0cmluZyB2YWx1ZXNcbiAgICogRGVzY3JpcHRpb246IFRoZSB2YWx1ZXMgYWZ0ZXIgcHJlcHJvY2Vzc1xuICAgKi9cbiAgb25QcmVwcm9jZXNzOiBQcm9wVHlwZXMuZnVuYyxcblxuICAvKipcbiAgICogQSBjYWxsYmFjayBmdW5jdGlvbiBmb3IgYnVpbGRpbmcgYHVzZXIgaW5wdXQgc3RyaW5nIHZhbHVlYCBpbnRvXG4gICAqIHRoZSBgdG9rZW5WYWx1ZWAgKGN1c3RvbWl6ZSBkYXRhIHN0cnVjdHVyZSkuXG4gICAqXG4gICAqIE5vdGU6IFlvdSBjb3VsZCBtYWtlIHlvdXIgbm9ybWFsaXplIHByb2Nlc3MgaW4gdGhpcyBmdW5jdGlvbiB0b28uXG4gICAqXG4gICAqIG9uQnVpbGRUb2tlblZhbHVlKHN0cmluZ1ZhbHVlKVxuICAgKlxuICAgKiBAIHN0cmluZ1ZhbHVlXG4gICAqIFR5cGU6IHN0cmluZ1xuICAgKiBEZXNjcmlwdGlvbjogVGhlIHVzZXIgaW5wdXQgdmFsdWUgLy8gKEEgdmFsdWUgc3BsaXQgYnkgc2VwYXJhdG9ycylcbiAgICpcbiAgICogQCByZXR1cm5cbiAgICogVHlwZTogYW55IChzdHJpbmcgfCBudW1iZXIgfCBvYmplY3QgfCBjdXN0b21pemUgZGF0YSBzdHJ1Y3R1cmUpXG4gICAqIERlc2NyaXB0aW9uOiBjdXN0b21pemUgZGF0YSBzdHJ1Y3R1cmVcbiAgICovXG4gIG9uQnVpbGRUb2tlblZhbHVlOiBQcm9wVHlwZXMuZnVuYyxcblxuICAvKipcbiAgICogQSBjYWxsYmFjayBmdW5jdGlvbiBpbnZva2VkIHdoZW4gZW5kLXVzZXIgdHlwaW5nIGJ1dCBub3QgYmVjb21lIHRva2VuIHlldFxuICAgKlxuICAgKiBvbklucHV0VmFsdWVDaGFuZ2UobmV3VmFsdWUsIHByZXZpb3VzVmFsdWUpXG4gICAqXG4gICAqIEAgbmV3VmFsdWVcbiAgICogVHlwZTogc3RyaW5nXG4gICAqIERlc2NyaXB0aW9uOiBlbmQtdXNlciBpbnB1dCBzdHJpbmdcbiAgICpcbiAgICogQCBwcmV2aW91c1ZhbHVlXG4gICAqIFR5cGU6IHN0cmluZ1xuICAgKiBEZXNjcmlwdGlvbjogcHJldmlvdXMgZW5kLXVzZXIgaW5wdXQgc3RyaW5nXG4gICAqL1xuICBvbklucHV0VmFsdWVDaGFuZ2U6IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8qKlxuICAgKiBBIGNhbGxiYWNrIGZ1bmN0aW9uIGZvciB2YWxpZGF0ZSB0b2tlblZhbHVlXG4gICAqXG4gICAqIG9uVG9rZW5WYWx1ZVZhbGlkYXRlKHRva2VuVmFsdWUsIHRva2VuSW5kZXgsIHRva2VuVmFsdWVzKVxuICAgKlxuICAgKiBAIHRva2VuVmFsdWVcbiAgICogVHlwZTogYW55IChzdHJpbmcgfCBudW1iZXIgfCBvYmplY3QgfCBjdXN0b21pemUgZGF0YSBzdHJ1Y3R1cmUpXG4gICAqIERlc2NyaXB0aW9uOiBUaGUgdG9rZW5WYWx1ZSBidWlsZCBieSBgb25CdWlsZFRva2VuVmFsdWVgXG4gICAqXG4gICAqIEAgdG9rZW5JbmRleFxuICAgKiBUeXBlOiBudW1iZXJcbiAgICogRGVzY3JpcHRpb246IFRoZSBhcnJheSBpbmRleCBmb3IgdGhpcyB0b2tlblZhbHVlIGluIHRva2VuVmFsdWVzXG4gICAqXG4gICAqIEAgdG9rZW5WYWx1ZXNcbiAgICogVHlwZTogYXJyYXlcbiAgICogRGVzY3JpcHRpb246IFRoZSBhcnJheSBvZiB0b2tlblZhbHVlIG9mIFRva2VuSW5wdXRcbiAgICpcbiAgICogQCByZXR1cm5cbiAgICogVHlwZTogYW55IChzdHJpbmcgfCBudW1iZXIgfCBvYmplY3QgfCBjdXN0b21pemUgZGF0YSBzdHJ1Y3R1cmUpXG4gICAqIERlc2NyaXB0aW9uOlxuICAgKiBUaGUgY3VzdG9taXplIGVycm9yLlxuICAgKiBTcGVjaWZpYyB0aGUgdG9rZW4ncyB2YWxpZGF0ZSBzdGF0dXMgb3IgZXJyb3JNZXNzYWdlLlxuICAgKiBDb3VsZCBiZSBhbiBlcnJvciBtZXNzYWdlIHRvIGRpc3BsYXkgb3IgZXJyb3Igb2JqZWN0XG4gICAqXG4gICAqIFdpbGwgYmUgdXNlIGJ5IGBvbkdldFRva2VuRXJyb3JNZXNzYWdlYFxuICAgKi9cbiAgb25Ub2tlblZhbHVlVmFsaWRhdGU6IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8qKlxuICAgKiBBIGNhbGxiYWNrIGZ1bmN0aW9uIGZvciBnZXR0aW5nIGN1c3RvbWl6ZXMgYGNsYXNzTmFtZWAgZm9yIGEgdG9rZW5cbiAgICpcbiAgICogb25HZXRUb2tlbkNsYXNzTmFtZSh0b2tlblZhbHVlLCB0b2tlbk1ldGEpXG4gICAqXG4gICAqIEAgdG9rZW5WYWx1ZVxuICAgKiBUeXBlOiBhbnkgKHN0cmluZyB8IG51bWJlciB8IG9iamVjdCB8IGN1c3RvbWl6ZSBkYXRhIHN0cnVjdHVyZSlcbiAgICogRGVzY3JpcHRpb246IFRoZSB0b2tlblZhbHVlIGJ1aWxkIGJ5IGBvbkJ1aWxkVG9rZW5WYWx1ZWBcbiAgICpcbiAgICogQCB0b2tlbk1ldGFcbiAgICogRGVzY3JpcHRpb246IHRva2VuJ3MgbWV0YSBkYXRhXG4gICAqICB7XG4gICAqICAgIC8vIEEgcHJpdmF0ZSBrZXkgZm9yIHJlbmRlclxuICAgKiAgICBrZXk6IHN0cmluZyxcbiAgICpcbiAgICogICAgLy8gU3BlY2lmaWMgdGhlIHRva2VuIGlzIGFjdGl2YXRlZCBmb3IgYGVkaXRgIG9yIG5vdFxuICAgKiAgICBhY3RpdmF0ZWQ6IGJvb2xlYW4sXG4gICAqXG4gICAqICAgIC8vIEN1c3RvbWl6ZSBkYXRhIHN0cnVjdHVyZSBidWlsdCBieSBgb25Ub2tlblZhbHVlIFZhbGlkYXRlYFxuICAgKiAgICAvLyBTcGVjaWZpYyB0aGUgdG9rZW4ncyB2YWxpZGF0ZSBzdGF0dXMgb3IgZXJyb3JNZXNzYWdlXG4gICAqICAgIGVycm9yOiBhbnksXG4gICAqICB9XG4gICAqXG4gICAqIEAgcmV0dXJuXG4gICAqIFR5cGU6IHN0cmluZ1xuICAgKiBEZXNjcmlwdGlvbjogVGhlIGN1c3RvbWl6ZXMgY2xhc3NOYW1lXG4gICAqL1xuICBvbkdldFRva2VuQ2xhc3NOYW1lOiBQcm9wVHlwZXMuZnVuYyxcblxuICAvKipcbiAgICogQSBjYWxsYmFjayBmdW5jdGlvbiBmb3IgZ2V0dGluZyBkaXNwbGF5YWJsZSBgbGFiZWxgIGZvciBhIHRva2VuXG4gICAqIEFwcGx5IHRoaXMgdG8gY3VzdG9taXplIHRoZSB0b2tlbidzIGNvbnRlbnRcbiAgICogRm9yIGV4YW1wbGUsIHJlbmRlciB0b2tlbiB3aXRoIGBpY29uYCBvciBgQWRkaXRpb25hbCB0ZXh0YFxuICAgKlxuICAgKiBvbkdldFRva2VuRGlzcGxheUxhYmVsKHRva2VuVmFsdWUsIHRva2VuTWV0YSlcbiAgICpcbiAgICogQCB0b2tlblZhbHVlXG4gICAqIFR5cGU6IGFueSAoc3RyaW5nIHwgbnVtYmVyIHwgb2JqZWN0IHwgY3VzdG9taXplIGRhdGEgc3RydWN0dXJlKVxuICAgKiBEZXNjcmlwdGlvbjogVGhlIHRva2VuVmFsdWUgYnVpbGQgYnkgYG9uQnVpbGRUb2tlblZhbHVlYFxuICAgKlxuICAgKiBAIHRva2VuTWV0YVxuICAgKiBEZXNjcmlwdGlvbjogdG9rZW4ncyBtZXRhIGRhdGFcbiAgICogIHtcbiAgICogICAgLy8gQSBwcml2YXRlIGtleSBmb3IgcmVuZGVyXG4gICAqICAgIGtleTogc3RyaW5nLFxuICAgKlxuICAgKiAgICAvLyBTcGVjaWZpYyB0aGUgdG9rZW4gaXMgYWN0aXZhdGVkIGZvciBgZWRpdGAgb3Igbm90XG4gICAqICAgIGFjdGl2YXRlZDogYm9vbGVhbixcbiAgICpcbiAgICogICAgLy8gQ3VzdG9taXplIGRhdGEgc3RydWN0dXJlIGJ1aWx0IGJ5IGBvblRva2VuVmFsdWUgVmFsaWRhdGVgXG4gICAqICAgIC8vIFNwZWNpZmljIHRoZSB0b2tlbidzIHZhbGlkYXRlIHN0YXR1cyBvciBlcnJvck1lc3NhZ2VcbiAgICogICAgZXJyb3I6IGFueSxcbiAgICogIH1cbiAgICpcbiAgICogQCByZXR1cm5cbiAgICogVHlwZTogc3RyaW5nIHx8IHJlYWN0IG5vZGVcbiAgICogRGVzY3JpcHRpb246IFRoZSB0b2tlbidzIGNvbnRlbnQuXG4gICAqIEJ5IGRlZmF1bHQsIHdpbGwgYXBwbHkgYGdldERlZmF1bHRUb2tlbkVkaXRhYmxlVmFsdWVgXG4gICAqL1xuICBvbkdldFRva2VuRGlzcGxheUxhYmVsOiBQcm9wVHlwZXMuZnVuYyxcblxuICAvKipcbiAgICogQSBjYWxsYmFjayBmdW5jdGlvbiBmb3IgcmVuZGVyIGNvbnRlbnQgb2YgdGhlIGRlbGV0ZSBidXR0b24gZm9yIGEgdG9rZW5cbiAgICogQXBwbHkgdGhpcyB0byBjdXN0b21pemUgdGhlIHRva2VuJ3MgY29udGVudCBvZiBkZWxldGUgYnV0dG9uXG4gICAqIEZvciBleGFtcGxlLCByZXBsYWNlIHRoZSBidWlsZC1pbiB4IGJ5IEdvb2dsZSBmb250IG1hdGVyaWFsLWljb25zXG4gICAqXG4gICAqIG9uUmVuZGVyVG9rZW5EZWxldGVCdXR0b25Db250ZW50KClcbiAgICpcbiAgICogQCByZXR1cm5cbiAgICogVHlwZTogcmVhY3Qgbm9kZVxuICAgKiBEZXNjcmlwdGlvbjogVGhlIGNvbnRlbnQgb2YgdGhlIGRlbGV0ZSBidXR0b24gb2YgdGhlIHRva2VuLlxuICAgKiBCeSBkZWZhdWx0LCBUb2tlbklucHV0IHJlbmRlciBhIGJ1aWxkLWluIHggaWNvblxuICAgKi9cbiAgb25SZW5kZXJUb2tlbkRlbGV0ZUJ1dHRvbkNvbnRlbnQ6IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8qKlxuICAgKiBBIGNhbGxiYWNrIGZ1bmN0aW9uIGZvciBnZXR0aW5nIGBzdHJpbmcgaW5wdXQgdmFsdWVgXG4gICAqIGZyb20gYHRva2VuVmFsdWVgIGZvciB0aGUgZW5kLXVzZXIgdG8gcGVyZm9ybSBgZWRpdGBcbiAgICpcbiAgICogb25HZXRUb2tlbkVkaXRhYmxlVmFsdWUodG9rZW5WYWx1ZSlcbiAgICpcbiAgICogQCB0b2tlblZhbHVlXG4gICAqIFR5cGU6IGFueSAoc3RyaW5nIHwgbnVtYmVyIHwgb2JqZWN0IHwgY3VzdG9taXplIGRhdGEgc3RydWN0dXJlKVxuICAgKiBEZXNjcmlwdGlvbjogVGhlIHRva2VuVmFsdWUgYnVpbGQgYnkgYG9uQnVpbGRUb2tlblZhbHVlYFxuICAgKlxuICAgKiBAIHJldHVyblxuICAgKiBUeXBlOiBzdHJpbmdcbiAgICogRGVzY3JpcHRpb246IFRoZSB2YWx1ZSBmb3IgZW5kLXVzZXIgdG8gYGVkaXRgIGluIGFuIGlucHV0IGZpZWxkXG4gICAqL1xuICBvbkdldFRva2VuRWRpdGFibGVWYWx1ZTogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgLyoqXG4gICAqIEEgY2FsbGJhY2sgZnVuY3Rpb24gZm9yIGdldHRpbmcgdGhlIGVycm9yIG1lc3NhZ2UgZnJvbSB0aGUgY3VzdG9taXplIGVycm9yXG4gICAqIFRoZSBgY3VzdG9taXplIGVycm9yYCBpcyBnZW5lcmF0ZSBieSBgb25Ub2tlblZhbHVlVmFsaWRhdGVgXG4gICAqXG4gICAqIG9uR2V0VG9rZW5FcnJvck1lc3NhZ2UodG9rZW5WYWx1ZSwgdG9rZW5NZXRhKVxuICAgKlxuICAgKiBAIHRva2VuVmFsdWVcbiAgICogVHlwZTogYW55IChzdHJpbmcgfCBudW1iZXIgfCBvYmplY3QgfCBjdXN0b21pemUgZGF0YSBzdHJ1Y3R1cmUpXG4gICAqIERlc2NyaXB0aW9uOiBUaGUgdG9rZW5WYWx1ZSBidWlsZCBieSBgb25CdWlsZFRva2VuVmFsdWVgXG4gICAqXG4gICAqIEAgdG9rZW5NZXRhXG4gICAqIERlc2NyaXB0aW9uOiB0b2tlbidzIG1ldGEgZGF0YVxuICAgKiAge1xuICAgKiAgICAvLyBBIHByaXZhdGUga2V5IGZvciByZW5kZXJcbiAgICogICAga2V5OiBzdHJpbmcsXG4gICAqXG4gICAqICAgIC8vIFNwZWNpZmljIHRoZSB0b2tlbiBpcyBhY3RpdmF0ZWQgZm9yIGBlZGl0YCBvciBub3RcbiAgICogICAgYWN0aXZhdGVkOiBib29sZWFuLFxuICAgKlxuICAgKiAgICAvLyBDdXN0b21pemUgZGF0YSBzdHJ1Y3R1cmUgYnVpbHQgYnkgYG9uVG9rZW5WYWx1ZSBWYWxpZGF0ZWBcbiAgICogICAgLy8gU3BlY2lmaWMgdGhlIHRva2VuJ3MgdmFsaWRhdGUgc3RhdHVzIG9yIGVycm9yTWVzc2FnZVxuICAgKiAgICBlcnJvcjogYW55LFxuICAgKiAgfVxuICAgKlxuICAgKiBAIHJldHVyblxuICAgKiBUeXBlOiBzdHJpbmcgfCBhbnlcbiAgICogRGVzY3JpcHRpb246IFRoZSBlcnJvciBtZXNzYWdlIHRvIGRlc2NyaWJlIGFuIGludmFsaWQgdG9rZW5cbiAgICovXG4gIG9uR2V0VG9rZW5FcnJvck1lc3NhZ2U6IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8qKlxuICAgKiBBIGN1c3RvbWl6ZSByZWFjdCBmdW5jdGlvbmFsIGNvbXBvbmVudCBmb3IgcmVuZGVyaW5nIGEgdG9rZW5cbiAgICogQXBwbHkgdGhpcyB0byBjdXN0b21pemUgYWxsIHRva2VuIGZ1bmN0aW9uLlxuICAgKlxuICAgKiBjdXN0b21pemVUb2tlbkNvbXBvbmVudD17TXlUb2tlbn1cbiAgICovXG4gIGN1c3RvbWl6ZVRva2VuQ29tcG9uZW50OiBQcm9wVHlwZXMuZnVuYyxcblxuICAvKipcbiAgICogW0JldGE7IE1pZ2h0IGJlIGNoYW5nZSBpbiB0aGUgZnV0dXJlIHZlcnNpb25dXG4gICAqIEN1cnJlbnQgb25seSBhcHBseSB0byBUb2tlbiBDcmVhdGVcbiAgICpcbiAgICogVGhlIGNvbmZpZyBzZXR0aW5ncyB0byBjb250cm9sIHRoZSBzcGVjaWFscyBrZXlEb3duIGV2ZW50IGhhbmRsZXIgYmVoYXZpb3IuXG4gICAqIERlZmF1bHQgc2V0dGluZyBhcyBiZWxvdy5cbiAgICogc3BlY2lhbEtleURvd246IHtcbiAgICogICBvbkJhY2tzcGFjZTogMSxcbiAgICogICBvblRhYjogMCxcbiAgICogICBvbkVudGVyOiAxLFxuICAgKiAgIG9uRXNjYXBlOiAxLFxuICAgKiB9LFxuICAgKlxuICAgKiBgMGAgbWVhbnMgdHVybiBvZmYgKFRvb2sgbmF0aXZlIGJyb3dzZXIgYmVoYXZpb3IuIFRva2VuSW5wdXQgc2hvdWxkIE5PVCBoYW5kbGUgaXQpLlxuICAgKiBgMWAgbWVhbnMgYXBwbHkgVG9rZW5JbnB1dCBwcmVkZWZpbmVkIGV2ZW50IGhhbmRsZXIuXG4gICAqXG4gICAqIFJlZmVyZW5jZSBzZWN0aW9uIGJlbG93IGZvciBQcmVkZWZpbmVkIGV2ZW50IGhhbmRsZXJzLlxuICAgKiBgUHJlZGVmaW5lZCBLZXlEb3duIEV2ZW50IEhhbmRsZXJzYFxuICAgKi9cbiAgc3BlY2lhbEtleURvd246IFByb3BUeXBlcy5vYmplY3QsXG59O1xuXG5jb25zdCBkdW1teUZ1bmMgPSAoKSA9PiB7fTsgLy8gRHVtbXkgZnVuY3Rpb25cblRva2VuSW5wdXQuZGVmYXVsdFByb3BzID0ge1xuICBjbGFzc05hbWU6ICcnLFxuICByZWFkT25seTogZmFsc2UsXG4gIGF1dG9Gb2N1czogZmFsc2UsXG4gIHBsYWNlaG9sZGVyOiAnJyxcblxuICAvLyBUb2tlbkNyZWF0b3JcbiAgc2VwYXJhdG9yczogREVGQVVMVF9TRVBBUkFUT1JTLFxuICBzcGVjaWFsS2V5RG93bjoge1xuICAgIG9uQmFja3NwYWNlOiAxLFxuICAgIG9uVGFiOiAwLFxuICAgIG9uRW50ZXI6IDEsXG4gICAgb25Fc2NhcGU6IDEsXG4gIH0sXG5cbiAgb25CdWlsZFRva2VuVmFsdWU6IGJ1aWxkRGVmYXVsdFRva2VuVmFsdWUsXG4gIG9uSW5wdXRWYWx1ZUNoYW5nZTogZHVtbXlGdW5jLFxuICBvblRva2VuVmFsdWVWYWxpZGF0ZTogZHVtbXlGdW5jLFxuXG4gIC8vIEZpeE1lOiBSZWFkT25seSBtb2RlIGRvIG5vdCBuZWVkIG9uVG9rZW5WYWx1ZXNDaGFuZ2UsIGJ1dCBmb3Igb3RoZXJzIG5lZWRcbiAgb25Ub2tlblZhbHVlc0NoYW5nZTogZHVtbXlGdW5jLFxuXG4gIC8vIFRva2VuXG4gIG9uR2V0VG9rZW5DbGFzc05hbWU6IGR1bW15RnVuYyxcbiAgb25HZXRUb2tlbkRpc3BsYXlMYWJlbDogZ2V0RGVmYXVsdFRva2VuRWRpdGFibGVWYWx1ZSxcbiAgb25HZXRUb2tlbkVkaXRhYmxlVmFsdWU6IGdldERlZmF1bHRUb2tlbkVkaXRhYmxlVmFsdWUsXG4gIG9uR2V0VG9rZW5FcnJvck1lc3NhZ2U6IGdldERlZmF1bHRUb2tlbkVycm9yTWVzc2FnZSxcblxuICAvLyBUT0RPOiBDb25zaWRlciBhZGQgbW9yZSBjYWxsYmFja1xuICAvLyBvbkZvY3VzXG4gIC8vIG9uQmx1clxufTtcblxuZXhwb3J0IGRlZmF1bHQgVG9rZW5JbnB1dDtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../src/TokenInput.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"../node_modules/react/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ \"../node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! classnames */ \"../node_modules/classnames/index.js\");\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _TokenCreator__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./TokenCreator */ \"../src/TokenCreator.jsx\");\n/* harmony import */ var _Token__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Token */ \"../src/Token/index.js\");\n/* harmony import */ var _hooks_useTokenInputFocus__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./hooks/useTokenInputFocus */ \"../src/hooks/useTokenInputFocus.js\");\n/* harmony import */ var _hooks_useTokenCreatorRef__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./hooks/useTokenCreatorRef */ \"../src/hooks/useTokenCreatorRef.js\");\n/* harmony import */ var _hooks_useTokensUpdate__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./hooks/useTokensUpdate */ \"../src/hooks/useTokensUpdate.js\");\n/* harmony import */ var _hooks_useTokenEdit__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./hooks/useTokenEdit */ \"../src/hooks/useTokenEdit.js\");\n/* harmony import */ var _hooks_useTokenDelete__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./hooks/useTokenDelete */ \"../src/hooks/useTokenDelete.js\");\n/* harmony import */ var _utils_dummyFunction__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./utils/dummyFunction */ \"../src/utils/dummyFunction.js\");\n/* harmony import */ var _utils_buildDefaultTokenValue__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./utils/buildDefaultTokenValue */ \"../src/utils/buildDefaultTokenValue.js\");\n/* harmony import */ var _utils_getDefaultTokenEditableValue__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./utils/getDefaultTokenEditableValue */ \"../src/utils/getDefaultTokenEditableValue.js\");\n/* harmony import */ var _utils_getDefaultTokenErrorMessage__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./utils/getDefaultTokenErrorMessage */ \"../src/utils/getDefaultTokenErrorMessage.js\");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./constants */ \"../src/constants.js\");\n/* harmony import */ var _styles_styl__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./styles.styl */ \"../src/styles.styl\");\nvar _excluded = [\"className\", \"readOnly\", \"autoFocus\", \"placeholder\", \"tokenValues\", \"onTokenValuesChange\", \"onBuildTokenValue\", \"customizeTokenComponent\", \"onGetTokenClassName\", \"onGetTokenDisplayLabel\", \"onRenderTokenDeleteButtonContent\", \"onIsTokenEditable\", \"onGetTokenEditableValue\", \"onGetTokenErrorMessage\", \"separators\", \"specialKeyDown\", \"onPreprocess\", \"onInputValueChange\", \"onTokenValueValidate\"];\n\nfunction _extends() { _extends = Object.assign || 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); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _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; }\n\nfunction _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; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar TokenInput = function TokenInput(_ref) {\n var _classNames;\n\n var className = _ref.className,\n readOnly = _ref.readOnly,\n autoFocus = _ref.autoFocus,\n placeholder = _ref.placeholder,\n tokenValues = _ref.tokenValues,\n onTokenValuesChange = _ref.onTokenValuesChange,\n onBuildTokenValue = _ref.onBuildTokenValue,\n customizeTokenComponent = _ref.customizeTokenComponent,\n onGetTokenClassName = _ref.onGetTokenClassName,\n onGetTokenDisplayLabel = _ref.onGetTokenDisplayLabel,\n onRenderTokenDeleteButtonContent = _ref.onRenderTokenDeleteButtonContent,\n onIsTokenEditable = _ref.onIsTokenEditable,\n onGetTokenEditableValue = _ref.onGetTokenEditableValue,\n onGetTokenErrorMessage = _ref.onGetTokenErrorMessage,\n separators = _ref.separators,\n specialKeyDown = _ref.specialKeyDown,\n onPreprocess = _ref.onPreprocess,\n onInputValueChange = _ref.onInputValueChange,\n onTokenValueValidate = _ref.onTokenValueValidate,\n props = _objectWithoutProperties(_ref, _excluded);\n\n var _useTokenInputFocus = (0,_hooks_useTokenInputFocus__WEBPACK_IMPORTED_MODULE_5__.default)(),\n isTokenInputFocused = _useTokenInputFocus.isTokenInputFocused,\n handleTokenInputFocus = _useTokenInputFocus.handleTokenInputFocus,\n handleTokenInputBlur = _useTokenInputFocus.handleTokenInputBlur;\n\n var _useTokenCreatorRef = (0,_hooks_useTokenCreatorRef__WEBPACK_IMPORTED_MODULE_6__.default)(),\n tokenCreatorRef = _useTokenCreatorRef.tokenCreatorRef,\n focusTokenCreator = _useTokenCreatorRef.focusTokenCreator;\n\n var _useTokensUpdate = (0,_hooks_useTokensUpdate__WEBPACK_IMPORTED_MODULE_7__.default)({\n tokenValues: tokenValues,\n onTokenValueValidate: onTokenValueValidate\n }),\n hasInvalidToken = _useTokensUpdate.hasInvalidToken,\n internalTokenValues = _useTokensUpdate.internalTokenValues,\n tokenMetas = _useTokensUpdate.tokenMetas,\n setTokenActivated = _useTokensUpdate.setTokenActivated;\n\n var _useTokenEdit = (0,_hooks_useTokenEdit__WEBPACK_IMPORTED_MODULE_8__.default)({\n tokenValues: tokenValues,\n onTokenValuesChange: onTokenValuesChange,\n setTokenActivated: setTokenActivated,\n handleTokenInputFocus: handleTokenInputFocus,\n handleTokenInputBlur: handleTokenInputBlur,\n focusTokenCreator: focusTokenCreator\n }),\n handleTokenEditStart = _useTokenEdit.handleTokenEditStart,\n handleTokenEditEnd = _useTokenEdit.handleTokenEditEnd;\n\n var _useTokenDelete = (0,_hooks_useTokenDelete__WEBPACK_IMPORTED_MODULE_9__.default)({\n tokenValues: tokenValues,\n onTokenValuesChange: onTokenValuesChange,\n focusTokenCreator: focusTokenCreator\n }),\n handleTokenDelete = _useTokenDelete.handleTokenDelete,\n handleLastTokenDelete = _useTokenDelete.handleLastTokenDelete;\n\n var handleNewTokenValuesAppend = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(function (appendTokenValues) {\n if (appendTokenValues.length === 0) {\n // Avoid meaningless update\n return;\n }\n\n var newTokenValues = [].concat(_toConsumableArray(tokenValues), _toConsumableArray(appendTokenValues));\n onTokenValuesChange(newTokenValues);\n }, [tokenValues, onTokenValuesChange]);\n var handleInputValuesPreprocess = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(function (inputValues) {\n // console.log('handleInputValuesPreprocess', inputValues);\n if (typeof onPreprocess !== 'function') {\n return inputValues;\n }\n\n var processedValues = onPreprocess(inputValues);\n\n if (Array.isArray(processedValues) !== true) {\n throw new Error('onPreprocess should return an array of values');\n }\n\n return processedValues;\n }, [onPreprocess]);\n var TokenComponent = customizeTokenComponent || _Token__WEBPACK_IMPORTED_MODULE_4__.default;\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", _extends({}, props, {\n className: classnames__WEBPACK_IMPORTED_MODULE_2___default()(className, _styles_styl__WEBPACK_IMPORTED_MODULE_15__.default.container, (_classNames = {}, _defineProperty(_classNames, _styles_styl__WEBPACK_IMPORTED_MODULE_15__.default[\"container--focused\"], isTokenInputFocused), _defineProperty(_classNames, _styles_styl__WEBPACK_IMPORTED_MODULE_15__.default[\"container--errors\"], hasInvalidToken), _classNames)),\n onClick: focusTokenCreator,\n role: \"presentation\",\n \"data-component-name\": \"TokenInput\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", {\n className: _styles_styl__WEBPACK_IMPORTED_MODULE_15__.default[\"token-list\"]\n }, internalTokenValues.map(function (tokenValue, index) {\n var tokenMeta = tokenMetas[index];\n var key = tokenMeta.key;\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(TokenComponent, {\n key: key,\n readOnly: readOnly,\n tokenValue: tokenValue,\n tokenMeta: tokenMeta,\n onGetClassName: onGetTokenClassName,\n onGetDisplayLabel: onGetTokenDisplayLabel,\n onRenderDeleteButtonContent: onRenderTokenDeleteButtonContent,\n onIsEditable: onIsTokenEditable,\n onGetEditableValue: onGetTokenEditableValue,\n onGetErrorMessage: onGetTokenErrorMessage,\n onBuildTokenValue: onBuildTokenValue,\n onEditStart: handleTokenEditStart(index),\n onEditEnd: handleTokenEditEnd(index),\n onDelete: handleTokenDelete(index)\n });\n })), !readOnly && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_TokenCreator__WEBPACK_IMPORTED_MODULE_3__.default, {\n ref: tokenCreatorRef,\n placeholder: placeholder,\n autoFocus: autoFocus // eslint-disable-line jsx-a11y/no-autofocus\n ,\n onFocus: handleTokenInputFocus,\n onBlur: handleTokenInputBlur,\n separators: separators,\n specialKeyDown: specialKeyDown,\n onInputValueChange: onInputValueChange,\n onPreprocess: handleInputValuesPreprocess,\n onBuildTokenValue: onBuildTokenValue,\n onNewTokenValuesAppend: handleNewTokenValuesAppend,\n onLastTokenDelete: handleLastTokenDelete\n }));\n};\n\nTokenInput.propTypes = {\n // Assign style to the TokenInput\n style: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().object),\n // Assign className to the TokenInput\n className: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string),\n // Specific TokenInput is `readOnly` or not\n readOnly: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().bool),\n // Specific TokenInput should be autoFocus or not\n autoFocus: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().bool),\n // Placeholder of TokenInput\n placeholder: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string),\n\n /**\n * An array of characters for split the user input string.\n * For example,\n * Split the user input string `abc;def` into `['abc', 'def']`\n * by separators `[';']`\n *\n * Note:\n * It take the `String.prototype.split()` and `RegExp` to split the user input string.\n * Make sure your customized separators could be used with `RegExp`.\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp\n */\n separators: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().array),\n // [Required] An array of tokenValue of TokenInput\n tokenValues: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().array.isRequired),\n\n /**\n * A callback function invoked when tokenValues update\n *\n * onTokenValuesChange(modifiedTokenValues)\n *\n * @ modifiedTokenValues\n * Type: An array of tokenValue of TokenInput\n * Description: Updated tokenValues\n */\n onTokenValuesChange: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func),\n\n /**\n * A callback function for preprocessing the user input string\n * (after it is split into `array of value`).\n *\n * Note: This function execute after `split` but before `onBuildTokenValue`\n *\n * [Use case 1]\n * Make your normalize process in this function, such as `String.prototype.trim()`.\n *\n * [Use case 2]\n * Sometimes, we will want to auto-fit user input, this function could help with it.\n * For example, the user input string is `www.google.com`,\n * and we want to auto-fit it into `http://www.google.com` and `https://www.google.com`.\n *\n *\n * onPreprocess(inputStringValues)\n *\n * @ inputStringValues\n * Type: An array of string values\n * Description:\n * The user input string values // (split from the user input string by the `separators`)\n *\n * @ return\n * Type: An array of string values\n * Description: The values after preprocess\n */\n onPreprocess: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func),\n\n /**\n * A callback function for building `user input string value` into\n * the `tokenValue` (customize data structure).\n *\n * Note: You could make your normalize process in this function too.\n *\n * onBuildTokenValue(stringValue)\n *\n * @ stringValue\n * Type: string\n * Description: The user input value // (A value split by separators)\n *\n * @ return\n * Type: any (string | number | object | customize data structure)\n * Description: customize data structure\n */\n onBuildTokenValue: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func),\n\n /**\n * A callback function invoked when end-user typing but not become token yet\n *\n * onInputValueChange(newValue, previousValue)\n *\n * @ newValue\n * Type: string\n * Description: end-user input string\n *\n * @ previousValue\n * Type: string\n * Description: previous end-user input string\n */\n onInputValueChange: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func),\n\n /**\n * A callback function for validate tokenValue\n *\n * onTokenValueValidate(tokenValue, tokenIndex, tokenValues)\n *\n * @ tokenValue\n * Type: any (string | number | object | customize data structure)\n * Description: The tokenValue build by `onBuildTokenValue`\n *\n * @ tokenIndex\n * Type: number\n * Description: The array index for this tokenValue in tokenValues\n *\n * @ tokenValues\n * Type: array\n * Description: The array of tokenValue of TokenInput\n *\n * @ return\n * Type: any (string | number | object | customize data structure)\n * Description:\n * The customize error.\n * Specific the token's validate status or errorMessage.\n * Could be an error message to display or error object\n *\n * Will be use by `onGetTokenErrorMessage`\n */\n onTokenValueValidate: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func),\n\n /**\n * A callback function for getting customizes `className` for a token\n *\n * onGetTokenClassName(tokenValue, tokenMeta)\n *\n * @ tokenValue\n * Type: any (string | number | object | customize data structure)\n * Description: The tokenValue build by `onBuildTokenValue`\n *\n * @ tokenMeta\n * Description: token's meta data\n * {\n * // A private key for render\n * key: string,\n *\n * // Specific the token is activated for `edit` or not\n * activated: boolean,\n *\n * // Customize data structure built by `onTokenValue Validate`\n * // Specific the token's validate status or errorMessage\n * error: any,\n * }\n *\n * @ return\n * Type: string\n * Description: The customizes className\n */\n onGetTokenClassName: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func),\n\n /**\n * A callback function for getting displayable `label` for a token\n * Apply this to customize the token's content\n * For example, render token with `icon` or `Additional text`\n *\n * onGetTokenDisplayLabel(tokenValue, tokenMeta)\n *\n * @ tokenValue\n * Type: any (string | number | object | customize data structure)\n * Description: The tokenValue build by `onBuildTokenValue`\n *\n * @ tokenMeta\n * Description: token's meta data\n * {\n * // A private key for render\n * key: string,\n *\n * // Specific the token is activated for `edit` or not\n * activated: boolean,\n *\n * // Customize data structure built by `onTokenValue Validate`\n * // Specific the token's validate status or errorMessage\n * error: any,\n * }\n *\n * @ return\n * Type: string || react node\n * Description: The token's content.\n * By default, will apply `getDefaultTokenEditableValue`\n */\n onGetTokenDisplayLabel: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func),\n\n /**\n * A callback function for render content of the delete button for a token\n * Apply this to customize the token's content of delete button\n * For example, replace the build-in x by Google font material-icons\n *\n * onRenderTokenDeleteButtonContent()\n *\n * @ return\n * Type: react node\n * Description: The content of the delete button of the token.\n * By default, TokenInput render a build-in x icon\n */\n onRenderTokenDeleteButtonContent: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func),\n\n /**\n * A callback function for determine whether the token is inline editable.\n *\n * onIsTokenEditable(tokenValue, tokenMeta)\n *\n * @ tokenValue\n * Type: any (string | number | object | customize data structure)\n * Description: The tokenValue build by `onBuildTokenValue`\n *\n * @ tokenMeta\n * Description: token's meta data\n * {\n * // A private key for render\n * key: string,\n *\n * // Specific the token is activated for `edit` or not\n * activated: boolean,\n *\n * // Customize data structure built by `onTokenValue Validate`\n * // Specific the token's validate status or errorMessage\n * error: any,\n * }\n *\n * @ return\n * Type: boolean\n * Description: `true` if editable. `false` if not.\n */\n onIsTokenEditable: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func),\n\n /**\n * A callback function for getting `string input value`\n * from `tokenValue` for the end-user to perform `edit`\n *\n * onGetTokenEditableValue(tokenValue)\n *\n * @ tokenValue\n * Type: any (string | number | object | customize data structure)\n * Description: The tokenValue build by `onBuildTokenValue`\n *\n * @ return\n * Type: string\n * Description: The value for end-user to `edit` in an input field\n */\n onGetTokenEditableValue: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func),\n\n /**\n * A callback function for getting the error message from the customize error\n * The `customize error` is generate by `onTokenValueValidate`\n *\n * onGetTokenErrorMessage(tokenValue, tokenMeta)\n *\n * @ tokenValue\n * Type: any (string | number | object | customize data structure)\n * Description: The tokenValue build by `onBuildTokenValue`\n *\n * @ tokenMeta\n * Description: token's meta data\n * {\n * // A private key for render\n * key: string,\n *\n * // Specific the token is activated for `edit` or not\n * activated: boolean,\n *\n * // Customize data structure built by `onTokenValue Validate`\n * // Specific the token's validate status or errorMessage\n * error: any,\n * }\n *\n * @ return\n * Type: string | any\n * Description: The error message to describe an invalid token\n */\n onGetTokenErrorMessage: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func),\n\n /**\n * A customize react functional component for rendering a token\n * Apply this to customize all token function.\n *\n * customizeTokenComponent={MyToken}\n */\n customizeTokenComponent: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func),\n\n /**\n * [Beta; Might be change in the future version]\n * Current only apply to Token Create\n *\n * The config settings to control the specials keyDown event handler behavior.\n * Default setting as below.\n * specialKeyDown: {\n * onBackspace: 1,\n * onTab: 0,\n * onEnter: 1,\n * onEscape: 1,\n * },\n *\n * `0` means turn off (Took native browser behavior. TokenInput should NOT handle it).\n * `1` means apply TokenInput predefined event handler.\n *\n * Reference section below for Predefined event handlers.\n * `Predefined KeyDown Event Handlers`\n */\n specialKeyDown: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().object)\n};\nTokenInput.defaultProps = {\n className: '',\n readOnly: false,\n autoFocus: false,\n placeholder: '',\n // TokenCreator\n separators: _constants__WEBPACK_IMPORTED_MODULE_14__.DEFAULT_SEPARATORS,\n specialKeyDown: {\n onBackspace: 1,\n onTab: 0,\n onEnter: 1,\n onEscape: 1\n },\n onBuildTokenValue: _utils_buildDefaultTokenValue__WEBPACK_IMPORTED_MODULE_11__.default,\n onInputValueChange: _utils_dummyFunction__WEBPACK_IMPORTED_MODULE_10__.default,\n onTokenValueValidate: _utils_dummyFunction__WEBPACK_IMPORTED_MODULE_10__.default,\n // FixMe: ReadOnly mode do not need onTokenValuesChange, but for others need\n onTokenValuesChange: _utils_dummyFunction__WEBPACK_IMPORTED_MODULE_10__.default,\n // Token\n onGetTokenClassName: _utils_dummyFunction__WEBPACK_IMPORTED_MODULE_10__.default,\n onGetTokenDisplayLabel: _utils_getDefaultTokenEditableValue__WEBPACK_IMPORTED_MODULE_12__.default,\n onIsTokenEditable: function onIsTokenEditable() {\n return true;\n },\n onGetTokenEditableValue: _utils_getDefaultTokenEditableValue__WEBPACK_IMPORTED_MODULE_12__.default,\n onGetTokenErrorMessage: _utils_getDefaultTokenErrorMessage__WEBPACK_IMPORTED_MODULE_13__.default // TODO: Consider add more callback\n // onFocus\n // onBlur\n\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (TokenInput);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vc3JjL1Rva2VuSW5wdXQuanN4LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7O0FBRUE7QUE0QkE7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFDQTtBQUFBO0FBQUE7QUFBQTs7QUFFQTtBQUFBO0FBQUE7O0FBRUE7QUFNQTtBQUNBO0FBRkE7QUFMQTtBQUFBO0FBQUE7QUFBQTs7QUFVQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU5BO0FBQUE7QUFBQTs7QUFTQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBQUE7QUFBQTs7QUFNQTtBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUlBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBQ0E7QUFDQTtBQUNBOztBQUNBO0FBQ0E7QUFJQTtBQUVBO0FBR0E7QUFJQTtBQUNBO0FBUEE7QUFBQTtBQVNBO0FBQUE7QUFFQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBZEE7QUFpQkE7QUFLQTtBQUNBO0FBQ0E7QUFIQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVpBO0FBaUJBOztBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBclRBO0FBd1RBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBT0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFHQTtBQUNBOztBQS9CQTtBQWtDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi9zcmMvVG9rZW5JbnB1dC5qc3g/ZWY3ZSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgdXNlQ2FsbGJhY2sgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgVG9rZW5DcmVhdG9yIGZyb20gJy4vVG9rZW5DcmVhdG9yJztcbmltcG9ydCBUb2tlbiBmcm9tICcuL1Rva2VuJztcblxuaW1wb3J0IHVzZVRva2VuSW5wdXRGb2N1cyBmcm9tICcuL2hvb2tzL3VzZVRva2VuSW5wdXRGb2N1cyc7XG5pbXBvcnQgdXNlVG9rZW5DcmVhdG9yUmVmIGZyb20gJy4vaG9va3MvdXNlVG9rZW5DcmVhdG9yUmVmJztcbmltcG9ydCB1c2VUb2tlbnNVcGRhdGUgZnJvbSAnLi9ob29rcy91c2VUb2tlbnNVcGRhdGUnO1xuaW1wb3J0IHVzZVRva2VuRWRpdCBmcm9tICcuL2hvb2tzL3VzZVRva2VuRWRpdCc7XG5pbXBvcnQgdXNlVG9rZW5EZWxldGUgZnJvbSAnLi9ob29rcy91c2VUb2tlbkRlbGV0ZSc7XG5cbmltcG9ydCBkdW1teUZ1bmN0aW9uIGZyb20gJy4vdXRpbHMvZHVtbXlGdW5jdGlvbic7XG5pbXBvcnQgYnVpbGREZWZhdWx0VG9rZW5WYWx1ZSBmcm9tICcuL3V0aWxzL2J1aWxkRGVmYXVsdFRva2VuVmFsdWUnO1xuaW1wb3J0IGdldERlZmF1bHRUb2tlbkVkaXRhYmxlVmFsdWUgZnJvbSAnLi91dGlscy9nZXREZWZhdWx0VG9rZW5FZGl0YWJsZVZhbHVlJztcbmltcG9ydCBnZXREZWZhdWx0VG9rZW5FcnJvck1lc3NhZ2UgZnJvbSAnLi91dGlscy9nZXREZWZhdWx0VG9rZW5FcnJvck1lc3NhZ2UnO1xuXG5pbXBvcnQgeyBERUZBVUxUX1NFUEFSQVRPUlMgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5cbmltcG9ydCBzdHlsZXMgZnJvbSAnLi9zdHlsZXMuc3R5bCc7XG5cbmNvbnN0IFRva2VuSW5wdXQgPSAoe1xuICBjbGFzc05hbWUsXG4gIHJlYWRPbmx5LFxuICBhdXRvRm9jdXMsXG4gIHBsYWNlaG9sZGVyLFxuXG4gIHRva2VuVmFsdWVzLFxuICBvblRva2VuVmFsdWVzQ2hhbmdlLFxuICBvbkJ1aWxkVG9rZW5WYWx1ZSxcblxuICAvLyBUb2tlblxuICBjdXN0b21pemVUb2tlbkNvbXBvbmVudCxcbiAgb25HZXRUb2tlbkNsYXNzTmFtZSxcbiAgb25HZXRUb2tlbkRpc3BsYXlMYWJlbCxcbiAgb25SZW5kZXJUb2tlbkRlbGV0ZUJ1dHRvbkNvbnRlbnQsXG4gIG9uSXNUb2tlbkVkaXRhYmxlLFxuICBvbkdldFRva2VuRWRpdGFibGVWYWx1ZSxcbiAgb25HZXRUb2tlbkVycm9yTWVzc2FnZSxcblxuICAvLyBUb2tlbkNyZWF0b3JcbiAgc2VwYXJhdG9ycyxcbiAgc3BlY2lhbEtleURvd24sXG4gIG9uUHJlcHJvY2VzcyxcbiAgb25JbnB1dFZhbHVlQ2hhbmdlLFxuICBvblRva2VuVmFsdWVWYWxpZGF0ZSxcblxuICAvLyBSZXN0XG4gIC4uLnByb3BzXG59KSA9PiB7XG4gIGNvbnN0IHsgaXNUb2tlbklucHV0Rm9jdXNlZCwgaGFuZGxlVG9rZW5JbnB1dEZvY3VzLCBoYW5kbGVUb2tlbklucHV0Qmx1ciB9ID1cbiAgICB1c2VUb2tlbklucHV0Rm9jdXMoKTtcbiAgY29uc3QgeyB0b2tlbkNyZWF0b3JSZWYsIGZvY3VzVG9rZW5DcmVhdG9yIH0gPSB1c2VUb2tlbkNyZWF0b3JSZWYoKTtcblxuICBjb25zdCB7XG4gICAgaGFzSW52YWxpZFRva2VuLFxuICAgIGludGVybmFsVG9rZW5WYWx1ZXMsXG4gICAgdG9rZW5NZXRhcyxcbiAgICBzZXRUb2tlbkFjdGl2YXRlZCxcbiAgfSA9IHVzZVRva2Vuc1VwZGF0ZSh7XG4gICAgdG9rZW5WYWx1ZXMsXG4gICAgb25Ub2tlblZhbHVlVmFsaWRhdGUsXG4gIH0pO1xuXG4gIGNvbnN0IHsgaGFuZGxlVG9rZW5FZGl0U3RhcnQsIGhhbmRsZVRva2VuRWRpdEVuZCB9ID0gdXNlVG9rZW5FZGl0KHtcbiAgICB0b2tlblZhbHVlcyxcbiAgICBvblRva2VuVmFsdWVzQ2hhbmdlLFxuICAgIHNldFRva2VuQWN0aXZhdGVkLFxuICAgIGhhbmRsZVRva2VuSW5wdXRGb2N1cyxcbiAgICBoYW5kbGVUb2tlbklucHV0Qmx1cixcbiAgICBmb2N1c1Rva2VuQ3JlYXRvcixcbiAgfSk7XG5cbiAgY29uc3QgeyBoYW5kbGVUb2tlbkRlbGV0ZSwgaGFuZGxlTGFzdFRva2VuRGVsZXRlIH0gPSB1c2VUb2tlbkRlbGV0ZSh7XG4gICAgdG9rZW5WYWx1ZXMsXG4gICAgb25Ub2tlblZhbHVlc0NoYW5nZSxcbiAgICBmb2N1c1Rva2VuQ3JlYXRvcixcbiAgfSk7XG5cbiAgY29uc3QgaGFuZGxlTmV3VG9rZW5WYWx1ZXNBcHBlbmQgPSB1c2VDYWxsYmFjayhcbiAgICAoYXBwZW5kVG9rZW5WYWx1ZXMpID0+IHtcbiAgICAgIGlmIChhcHBlbmRUb2tlblZhbHVlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgLy8gQXZvaWQgbWVhbmluZ2xlc3MgdXBkYXRlXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbmV3VG9rZW5WYWx1ZXMgPSBbLi4udG9rZW5WYWx1ZXMsIC4uLmFwcGVuZFRva2VuVmFsdWVzXTtcbiAgICAgIG9uVG9rZW5WYWx1ZXNDaGFuZ2UobmV3VG9rZW5WYWx1ZXMpO1xuICAgIH0sXG4gICAgW3Rva2VuVmFsdWVzLCBvblRva2VuVmFsdWVzQ2hhbmdlXVxuICApO1xuXG4gIGNvbnN0IGhhbmRsZUlucHV0VmFsdWVzUHJlcHJvY2VzcyA9IHVzZUNhbGxiYWNrKFxuICAgIChpbnB1dFZhbHVlcykgPT4ge1xuICAgICAgLy8gY29uc29sZS5sb2coJ2hhbmRsZUlucHV0VmFsdWVzUHJlcHJvY2VzcycsIGlucHV0VmFsdWVzKTtcbiAgICAgIGlmICh0eXBlb2Ygb25QcmVwcm9jZXNzICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiBpbnB1dFZhbHVlcztcbiAgICAgIH1cblxuICAgICAgY29uc3QgcHJvY2Vzc2VkVmFsdWVzID0gb25QcmVwcm9jZXNzKGlucHV0VmFsdWVzKTtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHByb2Nlc3NlZFZhbHVlcykgIT09IHRydWUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdvblByZXByb2Nlc3Mgc2hvdWxkIHJldHVybiBhbiBhcnJheSBvZiB2YWx1ZXMnKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwcm9jZXNzZWRWYWx1ZXM7XG4gICAgfSxcbiAgICBbb25QcmVwcm9jZXNzXVxuICApO1xuXG4gIGNvbnN0IFRva2VuQ29tcG9uZW50ID0gY3VzdG9taXplVG9rZW5Db21wb25lbnQgfHwgVG9rZW47XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICB7Li4ucHJvcHN9XG4gICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMoY2xhc3NOYW1lLCBzdHlsZXMuY29udGFpbmVyLCB7XG4gICAgICAgIFtzdHlsZXNbJ2NvbnRhaW5lci0tZm9jdXNlZCddXTogaXNUb2tlbklucHV0Rm9jdXNlZCxcbiAgICAgICAgW3N0eWxlc1snY29udGFpbmVyLS1lcnJvcnMnXV06IGhhc0ludmFsaWRUb2tlbixcbiAgICAgIH0pfVxuICAgICAgb25DbGljaz17Zm9jdXNUb2tlbkNyZWF0b3J9XG4gICAgICByb2xlPVwicHJlc2VudGF0aW9uXCJcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzWyd0b2tlbi1saXN0J119PlxuICAgICAgICB7aW50ZXJuYWxUb2tlblZhbHVlcy5tYXAoKHRva2VuVmFsdWUsIGluZGV4KSA9PiB7XG4gICAgICAgICAgY29uc3QgdG9rZW5NZXRhID0gdG9rZW5NZXRhc1tpbmRleF07XG4gICAgICAgICAgY29uc3QgeyBrZXkgfSA9IHRva2VuTWV0YTtcblxuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8VG9rZW5Db21wb25lbnRcbiAgICAgICAgICAgICAga2V5PXtrZXl9XG4gICAgICAgICAgICAgIHJlYWRPbmx5PXtyZWFkT25seX1cbiAgICAgICAgICAgICAgdG9rZW5WYWx1ZT17dG9rZW5WYWx1ZX1cbiAgICAgICAgICAgICAgdG9rZW5NZXRhPXt0b2tlbk1ldGF9XG4gICAgICAgICAgICAgIG9uR2V0Q2xhc3NOYW1lPXtvbkdldFRva2VuQ2xhc3NOYW1lfVxuICAgICAgICAgICAgICBvbkdldERpc3BsYXlMYWJlbD17b25HZXRUb2tlbkRpc3BsYXlMYWJlbH1cbiAgICAgICAgICAgICAgb25SZW5kZXJEZWxldGVCdXR0b25Db250ZW50PXtvblJlbmRlclRva2VuRGVsZXRlQnV0dG9uQ29udGVudH1cbiAgICAgICAgICAgICAgb25Jc0VkaXRhYmxlPXtvbklzVG9rZW5FZGl0YWJsZX1cbiAgICAgICAgICAgICAgb25HZXRFZGl0YWJsZVZhbHVlPXtvbkdldFRva2VuRWRpdGFibGVWYWx1ZX1cbiAgICAgICAgICAgICAgb25HZXRFcnJvck1lc3NhZ2U9e29uR2V0VG9rZW5FcnJvck1lc3NhZ2V9XG4gICAgICAgICAgICAgIG9uQnVpbGRUb2tlblZhbHVlPXtvbkJ1aWxkVG9rZW5WYWx1ZX1cbiAgICAgICAgICAgICAgb25FZGl0U3RhcnQ9e2hhbmRsZVRva2VuRWRpdFN0YXJ0KGluZGV4KX1cbiAgICAgICAgICAgICAgb25FZGl0RW5kPXtoYW5kbGVUb2tlbkVkaXRFbmQoaW5kZXgpfVxuICAgICAgICAgICAgICBvbkRlbGV0ZT17aGFuZGxlVG9rZW5EZWxldGUoaW5kZXgpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApO1xuICAgICAgICB9KX1cbiAgICAgIDwvZGl2PlxuXG4gICAgICB7IXJlYWRPbmx5ICYmIChcbiAgICAgICAgPFRva2VuQ3JlYXRvclxuICAgICAgICAgIHJlZj17dG9rZW5DcmVhdG9yUmVmfVxuICAgICAgICAgIHBsYWNlaG9sZGVyPXtwbGFjZWhvbGRlcn1cbiAgICAgICAgICBhdXRvRm9jdXM9e2F1dG9Gb2N1c30gLy8gZXNsaW50LWRpc2FibGUtbGluZSBqc3gtYTExeS9uby1hdXRvZm9jdXNcbiAgICAgICAgICBvbkZvY3VzPXtoYW5kbGVUb2tlbklucHV0Rm9jdXN9XG4gICAgICAgICAgb25CbHVyPXtoYW5kbGVUb2tlbklucHV0Qmx1cn1cbiAgICAgICAgICBzZXBhcmF0b3JzPXtzZXBhcmF0b3JzfVxuICAgICAgICAgIHNwZWNpYWxLZXlEb3duPXtzcGVjaWFsS2V5RG93bn1cbiAgICAgICAgICBvbklucHV0VmFsdWVDaGFuZ2U9e29uSW5wdXRWYWx1ZUNoYW5nZX1cbiAgICAgICAgICBvblByZXByb2Nlc3M9e2hhbmRsZUlucHV0VmFsdWVzUHJlcHJvY2Vzc31cbiAgICAgICAgICBvbkJ1aWxkVG9rZW5WYWx1ZT17b25CdWlsZFRva2VuVmFsdWV9XG4gICAgICAgICAgb25OZXdUb2tlblZhbHVlc0FwcGVuZD17aGFuZGxlTmV3VG9rZW5WYWx1ZXNBcHBlbmR9XG4gICAgICAgICAgb25MYXN0VG9rZW5EZWxldGU9e2hhbmRsZUxhc3RUb2tlbkRlbGV0ZX1cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5Ub2tlbklucHV0LnByb3BUeXBlcyA9IHtcbiAgLy8gQXNzaWduIHN0eWxlIHRvIHRoZSBUb2tlbklucHV0XG4gIHN0eWxlOiBQcm9wVHlwZXMub2JqZWN0LFxuXG4gIC8vIEFzc2lnbiBjbGFzc05hbWUgdG8gdGhlIFRva2VuSW5wdXRcbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuXG4gIC8vIFNwZWNpZmljIFRva2VuSW5wdXQgaXMgYHJlYWRPbmx5YCBvciBub3RcbiAgcmVhZE9ubHk6IFByb3BUeXBlcy5ib29sLFxuXG4gIC8vIFNwZWNpZmljIFRva2VuSW5wdXQgc2hvdWxkIGJlIGF1dG9Gb2N1cyBvciBub3RcbiAgYXV0b0ZvY3VzOiBQcm9wVHlwZXMuYm9vbCxcblxuICAvLyBQbGFjZWhvbGRlciBvZiBUb2tlbklucHV0XG4gIHBsYWNlaG9sZGVyOiBQcm9wVHlwZXMuc3RyaW5nLFxuXG4gIC8qKlxuICAgKiBBbiBhcnJheSBvZiBjaGFyYWN0ZXJzIGZvciBzcGxpdCB0aGUgdXNlciBpbnB1dCBzdHJpbmcuXG4gICAqIEZvciBleGFtcGxlLFxuICAgKiBTcGxpdCB0aGUgdXNlciBpbnB1dCBzdHJpbmcgYGFiYztkZWZgIGludG8gYFsnYWJjJywgJ2RlZiddYFxuICAgKiBieSBzZXBhcmF0b3JzIGBbJzsnXWBcbiAgICpcbiAgICogTm90ZTpcbiAgICogSXQgdGFrZSB0aGUgYFN0cmluZy5wcm90b3R5cGUuc3BsaXQoKWAgYW5kIGBSZWdFeHBgIHRvIHNwbGl0IHRoZSB1c2VyIGlucHV0IHN0cmluZy5cbiAgICogTWFrZSBzdXJlIHlvdXIgY3VzdG9taXplZCBzZXBhcmF0b3JzIGNvdWxkIGJlIHVzZWQgd2l0aCBgUmVnRXhwYC5cbiAgICogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvUmVnRXhwXG4gICAqL1xuICBzZXBhcmF0b3JzOiBQcm9wVHlwZXMuYXJyYXksXG5cbiAgLy8gW1JlcXVpcmVkXSBBbiBhcnJheSBvZiB0b2tlblZhbHVlIG9mIFRva2VuSW5wdXRcbiAgdG9rZW5WYWx1ZXM6IFByb3BUeXBlcy5hcnJheS5pc1JlcXVpcmVkLFxuXG4gIC8qKlxuICAgKiBBIGNhbGxiYWNrIGZ1bmN0aW9uIGludm9rZWQgd2hlbiB0b2tlblZhbHVlcyB1cGRhdGVcbiAgICpcbiAgICogb25Ub2tlblZhbHVlc0NoYW5nZShtb2RpZmllZFRva2VuVmFsdWVzKVxuICAgKlxuICAgKiBAIG1vZGlmaWVkVG9rZW5WYWx1ZXNcbiAgICogVHlwZTogQW4gYXJyYXkgb2YgdG9rZW5WYWx1ZSBvZiBUb2tlbklucHV0XG4gICAqIERlc2NyaXB0aW9uOiBVcGRhdGVkIHRva2VuVmFsdWVzXG4gICAqL1xuICBvblRva2VuVmFsdWVzQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYyxcblxuICAvKipcbiAgICogQSBjYWxsYmFjayBmdW5jdGlvbiBmb3IgcHJlcHJvY2Vzc2luZyB0aGUgdXNlciBpbnB1dCBzdHJpbmdcbiAgICogKGFmdGVyIGl0IGlzIHNwbGl0IGludG8gYGFycmF5IG9mIHZhbHVlYCkuXG4gICAqXG4gICAqIE5vdGU6IFRoaXMgZnVuY3Rpb24gZXhlY3V0ZSBhZnRlciBgc3BsaXRgIGJ1dCBiZWZvcmUgYG9uQnVpbGRUb2tlblZhbHVlYFxuICAgKlxuICAgKiBbVXNlIGNhc2UgMV1cbiAgICogIE1ha2UgeW91ciBub3JtYWxpemUgcHJvY2VzcyBpbiB0aGlzIGZ1bmN0aW9uLCBzdWNoIGFzIGBTdHJpbmcucHJvdG90eXBlLnRyaW0oKWAuXG4gICAqXG4gICAqIFtVc2UgY2FzZSAyXVxuICAgKiBTb21ldGltZXMsIHdlIHdpbGwgd2FudCB0byBhdXRvLWZpdCB1c2VyIGlucHV0LCB0aGlzIGZ1bmN0aW9uIGNvdWxkIGhlbHAgd2l0aCBpdC5cbiAgICogRm9yIGV4YW1wbGUsIHRoZSB1c2VyIGlucHV0IHN0cmluZyBpcyBgd3d3Lmdvb2dsZS5jb21gLFxuICAgKiBhbmQgd2Ugd2FudCB0byBhdXRvLWZpdCBpdCBpbnRvIGBodHRwOi8vd3d3Lmdvb2dsZS5jb21gIGFuZCBgaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbWAuXG4gICAqXG4gICAqXG4gICAqIG9uUHJlcHJvY2VzcyhpbnB1dFN0cmluZ1ZhbHVlcylcbiAgICpcbiAgICogQCBpbnB1dFN0cmluZ1ZhbHVlc1xuICAgKiBUeXBlOiBBbiBhcnJheSBvZiBzdHJpbmcgdmFsdWVzXG4gICAqIERlc2NyaXB0aW9uOlxuICAgKiBUaGUgdXNlciBpbnB1dCBzdHJpbmcgdmFsdWVzIC8vIChzcGxpdCBmcm9tIHRoZSB1c2VyIGlucHV0IHN0cmluZyBieSB0aGUgYHNlcGFyYXRvcnNgKVxuICAgKlxuICAgKiBAIHJldHVyblxuICAgKiBUeXBlOiBBbiBhcnJheSBvZiBzdHJpbmcgdmFsdWVzXG4gICAqIERlc2NyaXB0aW9uOiBUaGUgdmFsdWVzIGFmdGVyIHByZXByb2Nlc3NcbiAgICovXG4gIG9uUHJlcHJvY2VzczogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgLyoqXG4gICAqIEEgY2FsbGJhY2sgZnVuY3Rpb24gZm9yIGJ1aWxkaW5nIGB1c2VyIGlucHV0IHN0cmluZyB2YWx1ZWAgaW50b1xuICAgKiB0aGUgYHRva2VuVmFsdWVgIChjdXN0b21pemUgZGF0YSBzdHJ1Y3R1cmUpLlxuICAgKlxuICAgKiBOb3RlOiBZb3UgY291bGQgbWFrZSB5b3VyIG5vcm1hbGl6ZSBwcm9jZXNzIGluIHRoaXMgZnVuY3Rpb24gdG9vLlxuICAgKlxuICAgKiBvbkJ1aWxkVG9rZW5WYWx1ZShzdHJpbmdWYWx1ZSlcbiAgICpcbiAgICogQCBzdHJpbmdWYWx1ZVxuICAgKiBUeXBlOiBzdHJpbmdcbiAgICogRGVzY3JpcHRpb246IFRoZSB1c2VyIGlucHV0IHZhbHVlIC8vIChBIHZhbHVlIHNwbGl0IGJ5IHNlcGFyYXRvcnMpXG4gICAqXG4gICAqIEAgcmV0dXJuXG4gICAqIFR5cGU6IGFueSAoc3RyaW5nIHwgbnVtYmVyIHwgb2JqZWN0IHwgY3VzdG9taXplIGRhdGEgc3RydWN0dXJlKVxuICAgKiBEZXNjcmlwdGlvbjogY3VzdG9taXplIGRhdGEgc3RydWN0dXJlXG4gICAqL1xuICBvbkJ1aWxkVG9rZW5WYWx1ZTogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgLyoqXG4gICAqIEEgY2FsbGJhY2sgZnVuY3Rpb24gaW52b2tlZCB3aGVuIGVuZC11c2VyIHR5cGluZyBidXQgbm90IGJlY29tZSB0b2tlbiB5ZXRcbiAgICpcbiAgICogb25JbnB1dFZhbHVlQ2hhbmdlKG5ld1ZhbHVlLCBwcmV2aW91c1ZhbHVlKVxuICAgKlxuICAgKiBAIG5ld1ZhbHVlXG4gICAqIFR5cGU6IHN0cmluZ1xuICAgKiBEZXNjcmlwdGlvbjogZW5kLXVzZXIgaW5wdXQgc3RyaW5nXG4gICAqXG4gICAqIEAgcHJldmlvdXNWYWx1ZVxuICAgKiBUeXBlOiBzdHJpbmdcbiAgICogRGVzY3JpcHRpb246IHByZXZpb3VzIGVuZC11c2VyIGlucHV0IHN0cmluZ1xuICAgKi9cbiAgb25JbnB1dFZhbHVlQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYyxcblxuICAvKipcbiAgICogQSBjYWxsYmFjayBmdW5jdGlvbiBmb3IgdmFsaWRhdGUgdG9rZW5WYWx1ZVxuICAgKlxuICAgKiBvblRva2VuVmFsdWVWYWxpZGF0ZSh0b2tlblZhbHVlLCB0b2tlbkluZGV4LCB0b2tlblZhbHVlcylcbiAgICpcbiAgICogQCB0b2tlblZhbHVlXG4gICAqIFR5cGU6IGFueSAoc3RyaW5nIHwgbnVtYmVyIHwgb2JqZWN0IHwgY3VzdG9taXplIGRhdGEgc3RydWN0dXJlKVxuICAgKiBEZXNjcmlwdGlvbjogVGhlIHRva2VuVmFsdWUgYnVpbGQgYnkgYG9uQnVpbGRUb2tlblZhbHVlYFxuICAgKlxuICAgKiBAIHRva2VuSW5kZXhcbiAgICogVHlwZTogbnVtYmVyXG4gICAqIERlc2NyaXB0aW9uOiBUaGUgYXJyYXkgaW5kZXggZm9yIHRoaXMgdG9rZW5WYWx1ZSBpbiB0b2tlblZhbHVlc1xuICAgKlxuICAgKiBAIHRva2VuVmFsdWVzXG4gICAqIFR5cGU6IGFycmF5XG4gICAqIERlc2NyaXB0aW9uOiBUaGUgYXJyYXkgb2YgdG9rZW5WYWx1ZSBvZiBUb2tlbklucHV0XG4gICAqXG4gICAqIEAgcmV0dXJuXG4gICAqIFR5cGU6IGFueSAoc3RyaW5nIHwgbnVtYmVyIHwgb2JqZWN0IHwgY3VzdG9taXplIGRhdGEgc3RydWN0dXJlKVxuICAgKiBEZXNjcmlwdGlvbjpcbiAgICogVGhlIGN1c3RvbWl6ZSBlcnJvci5cbiAgICogU3BlY2lmaWMgdGhlIHRva2VuJ3MgdmFsaWRhdGUgc3RhdHVzIG9yIGVycm9yTWVzc2FnZS5cbiAgICogQ291bGQgYmUgYW4gZXJyb3IgbWVzc2FnZSB0byBkaXNwbGF5IG9yIGVycm9yIG9iamVjdFxuICAgKlxuICAgKiBXaWxsIGJlIHVzZSBieSBgb25HZXRUb2tlbkVycm9yTWVzc2FnZWBcbiAgICovXG4gIG9uVG9rZW5WYWx1ZVZhbGlkYXRlOiBQcm9wVHlwZXMuZnVuYyxcblxuICAvKipcbiAgICogQSBjYWxsYmFjayBmdW5jdGlvbiBmb3IgZ2V0dGluZyBjdXN0b21pemVzIGBjbGFzc05hbWVgIGZvciBhIHRva2VuXG4gICAqXG4gICAqIG9uR2V0VG9rZW5DbGFzc05hbWUodG9rZW5WYWx1ZSwgdG9rZW5NZXRhKVxuICAgKlxuICAgKiBAIHRva2VuVmFsdWVcbiAgICogVHlwZTogYW55IChzdHJpbmcgfCBudW1iZXIgfCBvYmplY3QgfCBjdXN0b21pemUgZGF0YSBzdHJ1Y3R1cmUpXG4gICAqIERlc2NyaXB0aW9uOiBUaGUgdG9rZW5WYWx1ZSBidWlsZCBieSBgb25CdWlsZFRva2VuVmFsdWVgXG4gICAqXG4gICAqIEAgdG9rZW5NZXRhXG4gICAqIERlc2NyaXB0aW9uOiB0b2tlbidzIG1ldGEgZGF0YVxuICAgKiAge1xuICAgKiAgICAvLyBBIHByaXZhdGUga2V5IGZvciByZW5kZXJcbiAgICogICAga2V5OiBzdHJpbmcsXG4gICAqXG4gICAqICAgIC8vIFNwZWNpZmljIHRoZSB0b2tlbiBpcyBhY3RpdmF0ZWQgZm9yIGBlZGl0YCBvciBub3RcbiAgICogICAgYWN0aXZhdGVkOiBib29sZWFuLFxuICAgKlxuICAgKiAgICAvLyBDdXN0b21pemUgZGF0YSBzdHJ1Y3R1cmUgYnVpbHQgYnkgYG9uVG9rZW5WYWx1ZSBWYWxpZGF0ZWBcbiAgICogICAgLy8gU3BlY2lmaWMgdGhlIHRva2VuJ3MgdmFsaWRhdGUgc3RhdHVzIG9yIGVycm9yTWVzc2FnZVxuICAgKiAgICBlcnJvcjogYW55LFxuICAgKiAgfVxuICAgKlxuICAgKiBAIHJldHVyblxuICAgKiBUeXBlOiBzdHJpbmdcbiAgICogRGVzY3JpcHRpb246IFRoZSBjdXN0b21pemVzIGNsYXNzTmFtZVxuICAgKi9cbiAgb25HZXRUb2tlbkNsYXNzTmFtZTogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgLyoqXG4gICAqIEEgY2FsbGJhY2sgZnVuY3Rpb24gZm9yIGdldHRpbmcgZGlzcGxheWFibGUgYGxhYmVsYCBmb3IgYSB0b2tlblxuICAgKiBBcHBseSB0aGlzIHRvIGN1c3RvbWl6ZSB0aGUgdG9rZW4ncyBjb250ZW50XG4gICAqIEZvciBleGFtcGxlLCByZW5kZXIgdG9rZW4gd2l0aCBgaWNvbmAgb3IgYEFkZGl0aW9uYWwgdGV4dGBcbiAgICpcbiAgICogb25HZXRUb2tlbkRpc3BsYXlMYWJlbCh0b2tlblZhbHVlLCB0b2tlbk1ldGEpXG4gICAqXG4gICAqIEAgdG9rZW5WYWx1ZVxuICAgKiBUeXBlOiBhbnkgKHN0cmluZyB8IG51bWJlciB8IG9iamVjdCB8IGN1c3RvbWl6ZSBkYXRhIHN0cnVjdHVyZSlcbiAgICogRGVzY3JpcHRpb246IFRoZSB0b2tlblZhbHVlIGJ1aWxkIGJ5IGBvbkJ1aWxkVG9rZW5WYWx1ZWBcbiAgICpcbiAgICogQCB0b2tlbk1ldGFcbiAgICogRGVzY3JpcHRpb246IHRva2VuJ3MgbWV0YSBkYXRhXG4gICAqICB7XG4gICAqICAgIC8vIEEgcHJpdmF0ZSBrZXkgZm9yIHJlbmRlclxuICAgKiAgICBrZXk6IHN0cmluZyxcbiAgICpcbiAgICogICAgLy8gU3BlY2lmaWMgdGhlIHRva2VuIGlzIGFjdGl2YXRlZCBmb3IgYGVkaXRgIG9yIG5vdFxuICAgKiAgICBhY3RpdmF0ZWQ6IGJvb2xlYW4sXG4gICAqXG4gICAqICAgIC8vIEN1c3RvbWl6ZSBkYXRhIHN0cnVjdHVyZSBidWlsdCBieSBgb25Ub2tlblZhbHVlIFZhbGlkYXRlYFxuICAgKiAgICAvLyBTcGVjaWZpYyB0aGUgdG9rZW4ncyB2YWxpZGF0ZSBzdGF0dXMgb3IgZXJyb3JNZXNzYWdlXG4gICAqICAgIGVycm9yOiBhbnksXG4gICAqICB9XG4gICAqXG4gICAqIEAgcmV0dXJuXG4gICAqIFR5cGU6IHN0cmluZyB8fCByZWFjdCBub2RlXG4gICAqIERlc2NyaXB0aW9uOiBUaGUgdG9rZW4ncyBjb250ZW50LlxuICAgKiBCeSBkZWZhdWx0LCB3aWxsIGFwcGx5IGBnZXREZWZhdWx0VG9rZW5FZGl0YWJsZVZhbHVlYFxuICAgKi9cbiAgb25HZXRUb2tlbkRpc3BsYXlMYWJlbDogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgLyoqXG4gICAqIEEgY2FsbGJhY2sgZnVuY3Rpb24gZm9yIHJlbmRlciBjb250ZW50IG9mIHRoZSBkZWxldGUgYnV0dG9uIGZvciBhIHRva2VuXG4gICAqIEFwcGx5IHRoaXMgdG8gY3VzdG9taXplIHRoZSB0b2tlbidzIGNvbnRlbnQgb2YgZGVsZXRlIGJ1dHRvblxuICAgKiBGb3IgZXhhbXBsZSwgcmVwbGFjZSB0aGUgYnVpbGQtaW4geCBieSBHb29nbGUgZm9udCBtYXRlcmlhbC1pY29uc1xuICAgKlxuICAgKiBvblJlbmRlclRva2VuRGVsZXRlQnV0dG9uQ29udGVudCgpXG4gICAqXG4gICAqIEAgcmV0dXJuXG4gICAqIFR5cGU6IHJlYWN0IG5vZGVcbiAgICogRGVzY3JpcHRpb246IFRoZSBjb250ZW50IG9mIHRoZSBkZWxldGUgYnV0dG9uIG9mIHRoZSB0b2tlbi5cbiAgICogQnkgZGVmYXVsdCwgVG9rZW5JbnB1dCByZW5kZXIgYSBidWlsZC1pbiB4IGljb25cbiAgICovXG4gIG9uUmVuZGVyVG9rZW5EZWxldGVCdXR0b25Db250ZW50OiBQcm9wVHlwZXMuZnVuYyxcblxuICAvKipcbiAgICogQSBjYWxsYmFjayBmdW5jdGlvbiBmb3IgZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIHRva2VuIGlzIGlubGluZSBlZGl0YWJsZS5cbiAgICpcbiAgICogb25Jc1Rva2VuRWRpdGFibGUodG9rZW5WYWx1ZSwgdG9rZW5NZXRhKVxuICAgKlxuICAgKiBAIHRva2VuVmFsdWVcbiAgICogVHlwZTogYW55IChzdHJpbmcgfCBudW1iZXIgfCBvYmplY3QgfCBjdXN0b21pemUgZGF0YSBzdHJ1Y3R1cmUpXG4gICAqIERlc2NyaXB0aW9uOiBUaGUgdG9rZW5WYWx1ZSBidWlsZCBieSBgb25CdWlsZFRva2VuVmFsdWVgXG4gICAqXG4gICAqIEAgdG9rZW5NZXRhXG4gICAqIERlc2NyaXB0aW9uOiB0b2tlbidzIG1ldGEgZGF0YVxuICAgKiAge1xuICAgKiAgICAvLyBBIHByaXZhdGUga2V5IGZvciByZW5kZXJcbiAgICogICAga2V5OiBzdHJpbmcsXG4gICAqXG4gICAqICAgIC8vIFNwZWNpZmljIHRoZSB0b2tlbiBpcyBhY3RpdmF0ZWQgZm9yIGBlZGl0YCBvciBub3RcbiAgICogICAgYWN0aXZhdGVkOiBib29sZWFuLFxuICAgKlxuICAgKiAgICAvLyBDdXN0b21pemUgZGF0YSBzdHJ1Y3R1cmUgYnVpbHQgYnkgYG9uVG9rZW5WYWx1ZSBWYWxpZGF0ZWBcbiAgICogICAgLy8gU3BlY2lmaWMgdGhlIHRva2VuJ3MgdmFsaWRhdGUgc3RhdHVzIG9yIGVycm9yTWVzc2FnZVxuICAgKiAgICBlcnJvcjogYW55LFxuICAgKiAgfVxuICAgKlxuICAgKiBAIHJldHVyblxuICAgKiBUeXBlOiBib29sZWFuXG4gICAqIERlc2NyaXB0aW9uOiBgdHJ1ZWAgaWYgZWRpdGFibGUuIGBmYWxzZWAgaWYgbm90LlxuICAgKi9cbiAgb25Jc1Rva2VuRWRpdGFibGU6IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8qKlxuICAgKiBBIGNhbGxiYWNrIGZ1bmN0aW9uIGZvciBnZXR0aW5nIGBzdHJpbmcgaW5wdXQgdmFsdWVgXG4gICAqIGZyb20gYHRva2VuVmFsdWVgIGZvciB0aGUgZW5kLXVzZXIgdG8gcGVyZm9ybSBgZWRpdGBcbiAgICpcbiAgICogb25HZXRUb2tlbkVkaXRhYmxlVmFsdWUodG9rZW5WYWx1ZSlcbiAgICpcbiAgICogQCB0b2tlblZhbHVlXG4gICAqIFR5cGU6IGFueSAoc3RyaW5nIHwgbnVtYmVyIHwgb2JqZWN0IHwgY3VzdG9taXplIGRhdGEgc3RydWN0dXJlKVxuICAgKiBEZXNjcmlwdGlvbjogVGhlIHRva2VuVmFsdWUgYnVpbGQgYnkgYG9uQnVpbGRUb2tlblZhbHVlYFxuICAgKlxuICAgKiBAIHJldHVyblxuICAgKiBUeXBlOiBzdHJpbmdcbiAgICogRGVzY3JpcHRpb246IFRoZSB2YWx1ZSBmb3IgZW5kLXVzZXIgdG8gYGVkaXRgIGluIGFuIGlucHV0IGZpZWxkXG4gICAqL1xuICBvbkdldFRva2VuRWRpdGFibGVWYWx1ZTogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgLyoqXG4gICAqIEEgY2FsbGJhY2sgZnVuY3Rpb24gZm9yIGdldHRpbmcgdGhlIGVycm9yIG1lc3NhZ2UgZnJvbSB0aGUgY3VzdG9taXplIGVycm9yXG4gICAqIFRoZSBgY3VzdG9taXplIGVycm9yYCBpcyBnZW5lcmF0ZSBieSBgb25Ub2tlblZhbHVlVmFsaWRhdGVgXG4gICAqXG4gICAqIG9uR2V0VG9rZW5FcnJvck1lc3NhZ2UodG9rZW5WYWx1ZSwgdG9rZW5NZXRhKVxuICAgKlxuICAgKiBAIHRva2VuVmFsdWVcbiAgICogVHlwZTogYW55IChzdHJpbmcgfCBudW1iZXIgfCBvYmplY3QgfCBjdXN0b21pemUgZGF0YSBzdHJ1Y3R1cmUpXG4gICAqIERlc2NyaXB0aW9uOiBUaGUgdG9rZW5WYWx1ZSBidWlsZCBieSBgb25CdWlsZFRva2VuVmFsdWVgXG4gICAqXG4gICAqIEAgdG9rZW5NZXRhXG4gICAqIERlc2NyaXB0aW9uOiB0b2tlbidzIG1ldGEgZGF0YVxuICAgKiAge1xuICAgKiAgICAvLyBBIHByaXZhdGUga2V5IGZvciByZW5kZXJcbiAgICogICAga2V5OiBzdHJpbmcsXG4gICAqXG4gICAqICAgIC8vIFNwZWNpZmljIHRoZSB0b2tlbiBpcyBhY3RpdmF0ZWQgZm9yIGBlZGl0YCBvciBub3RcbiAgICogICAgYWN0aXZhdGVkOiBib29sZWFuLFxuICAgKlxuICAgKiAgICAvLyBDdXN0b21pemUgZGF0YSBzdHJ1Y3R1cmUgYnVpbHQgYnkgYG9uVG9rZW5WYWx1ZSBWYWxpZGF0ZWBcbiAgICogICAgLy8gU3BlY2lmaWMgdGhlIHRva2VuJ3MgdmFsaWRhdGUgc3RhdHVzIG9yIGVycm9yTWVzc2FnZVxuICAgKiAgICBlcnJvcjogYW55LFxuICAgKiAgfVxuICAgKlxuICAgKiBAIHJldHVyblxuICAgKiBUeXBlOiBzdHJpbmcgfCBhbnlcbiAgICogRGVzY3JpcHRpb246IFRoZSBlcnJvciBtZXNzYWdlIHRvIGRlc2NyaWJlIGFuIGludmFsaWQgdG9rZW5cbiAgICovXG4gIG9uR2V0VG9rZW5FcnJvck1lc3NhZ2U6IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8qKlxuICAgKiBBIGN1c3RvbWl6ZSByZWFjdCBmdW5jdGlvbmFsIGNvbXBvbmVudCBmb3IgcmVuZGVyaW5nIGEgdG9rZW5cbiAgICogQXBwbHkgdGhpcyB0byBjdXN0b21pemUgYWxsIHRva2VuIGZ1bmN0aW9uLlxuICAgKlxuICAgKiBjdXN0b21pemVUb2tlbkNvbXBvbmVudD17TXlUb2tlbn1cbiAgICovXG4gIGN1c3RvbWl6ZVRva2VuQ29tcG9uZW50OiBQcm9wVHlwZXMuZnVuYyxcblxuICAvKipcbiAgICogW0JldGE7IE1pZ2h0IGJlIGNoYW5nZSBpbiB0aGUgZnV0dXJlIHZlcnNpb25dXG4gICAqIEN1cnJlbnQgb25seSBhcHBseSB0byBUb2tlbiBDcmVhdGVcbiAgICpcbiAgICogVGhlIGNvbmZpZyBzZXR0aW5ncyB0byBjb250cm9sIHRoZSBzcGVjaWFscyBrZXlEb3duIGV2ZW50IGhhbmRsZXIgYmVoYXZpb3IuXG4gICAqIERlZmF1bHQgc2V0dGluZyBhcyBiZWxvdy5cbiAgICogc3BlY2lhbEtleURvd246IHtcbiAgICogICBvbkJhY2tzcGFjZTogMSxcbiAgICogICBvblRhYjogMCxcbiAgICogICBvbkVudGVyOiAxLFxuICAgKiAgIG9uRXNjYXBlOiAxLFxuICAgKiB9LFxuICAgKlxuICAgKiBgMGAgbWVhbnMgdHVybiBvZmYgKFRvb2sgbmF0aXZlIGJyb3dzZXIgYmVoYXZpb3IuIFRva2VuSW5wdXQgc2hvdWxkIE5PVCBoYW5kbGUgaXQpLlxuICAgKiBgMWAgbWVhbnMgYXBwbHkgVG9rZW5JbnB1dCBwcmVkZWZpbmVkIGV2ZW50IGhhbmRsZXIuXG4gICAqXG4gICAqIFJlZmVyZW5jZSBzZWN0aW9uIGJlbG93IGZvciBQcmVkZWZpbmVkIGV2ZW50IGhhbmRsZXJzLlxuICAgKiBgUHJlZGVmaW5lZCBLZXlEb3duIEV2ZW50IEhhbmRsZXJzYFxuICAgKi9cbiAgc3BlY2lhbEtleURvd246IFByb3BUeXBlcy5vYmplY3QsXG59O1xuXG5Ub2tlbklucHV0LmRlZmF1bHRQcm9wcyA9IHtcbiAgY2xhc3NOYW1lOiAnJyxcbiAgcmVhZE9ubHk6IGZhbHNlLFxuICBhdXRvRm9jdXM6IGZhbHNlLFxuICBwbGFjZWhvbGRlcjogJycsXG5cbiAgLy8gVG9rZW5DcmVhdG9yXG4gIHNlcGFyYXRvcnM6IERFRkFVTFRfU0VQQVJBVE9SUyxcbiAgc3BlY2lhbEtleURvd246IHtcbiAgICBvbkJhY2tzcGFjZTogMSxcbiAgICBvblRhYjogMCxcbiAgICBvbkVudGVyOiAxLFxuICAgIG9uRXNjYXBlOiAxLFxuICB9LFxuXG4gIG9uQnVpbGRUb2tlblZhbHVlOiBidWlsZERlZmF1bHRUb2tlblZhbHVlLFxuICBvbklucHV0VmFsdWVDaGFuZ2U6IGR1bW15RnVuY3Rpb24sXG4gIG9uVG9rZW5WYWx1ZVZhbGlkYXRlOiBkdW1teUZ1bmN0aW9uLFxuXG4gIC8vIEZpeE1lOiBSZWFkT25seSBtb2RlIGRvIG5vdCBuZWVkIG9uVG9rZW5WYWx1ZXNDaGFuZ2UsIGJ1dCBmb3Igb3RoZXJzIG5lZWRcbiAgb25Ub2tlblZhbHVlc0NoYW5nZTogZHVtbXlGdW5jdGlvbixcblxuICAvLyBUb2tlblxuICBvbkdldFRva2VuQ2xhc3NOYW1lOiBkdW1teUZ1bmN0aW9uLFxuICBvbkdldFRva2VuRGlzcGxheUxhYmVsOiBnZXREZWZhdWx0VG9rZW5FZGl0YWJsZVZhbHVlLFxuICBvbklzVG9rZW5FZGl0YWJsZTogKCkgPT4gdHJ1ZSxcbiAgb25HZXRUb2tlbkVkaXRhYmxlVmFsdWU6IGdldERlZmF1bHRUb2tlbkVkaXRhYmxlVmFsdWUsXG4gIG9uR2V0VG9rZW5FcnJvck1lc3NhZ2U6IGdldERlZmF1bHRUb2tlbkVycm9yTWVzc2FnZSxcblxuICAvLyBUT0RPOiBDb25zaWRlciBhZGQgbW9yZSBjYWxsYmFja1xuICAvLyBvbkZvY3VzXG4gIC8vIG9uQmx1clxufTtcblxuZXhwb3J0IGRlZmF1bHQgVG9rZW5JbnB1dDtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../src/TokenInput.jsx\n"); /***/ }), @@ -526,6 +548,17 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ }), +/***/ "../src/utils/dummyFunction.js": +/*!*************************************!*\ + !*** ../src/utils/dummyFunction.js ***! + \*************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/**\n * A dummy empty function\n */\nvar dummyFunction = function dummyFunction() {};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (dummyFunction);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vc3JjL3V0aWxzL2R1bW15RnVuY3Rpb24uanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uL3NyYy91dGlscy9kdW1teUZ1bmN0aW9uLmpzPzFhNjciXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBBIGR1bW15IGVtcHR5IGZ1bmN0aW9uXG4gKi9cbmNvbnN0IGR1bW15RnVuY3Rpb24gPSAoKSA9PiB7fTtcblxuZXhwb3J0IGRlZmF1bHQgZHVtbXlGdW5jdGlvbjtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../src/utils/dummyFunction.js\n"); + +/***/ }), + /***/ "../src/utils/getDefaultTokenEditableValue.js": /*!****************************************************!*\ !*** ../src/utils/getDefaultTokenEditableValue.js ***! @@ -566,7 +599,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _keyDownEventPropsNormalizer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./keyDownEventPropsNormalizer */ \"../src/utils/keyDownEventPropsNormalizer.js\");\n\n/**\n * Help function to proxy keyDown event to handler\n *\n * @ keyDownEvent\n * Type: Event\n * Description: keyDown event\n *\n * @ actions.onBackspace\n * Type: function\n * Description: callback function when `Backspace` keyDone\n *\n * @ actions.onTab\n * Type: function\n * Description: callback function when `Tab` keyDone\n *\n * @ actions.onEnter\n * Type: function\n * Description: callback function when `Enter` keyDone\n *\n * @ actions.onEscape\n * Type: function\n * Description: callback function when `Escape` keyDone\n */\n\nvar dummyFunction = function dummyFunction() {};\n\nvar keyDownHandlerProxy = function keyDownHandlerProxy(keyDownEvent, actions) {\n var _actions$onBackspace = actions.onBackspace,\n onBackspace = _actions$onBackspace === void 0 ? dummyFunction : _actions$onBackspace,\n _actions$onTab = actions.onTab,\n onTab = _actions$onTab === void 0 ? dummyFunction : _actions$onTab,\n _actions$onEnter = actions.onEnter,\n onEnter = _actions$onEnter === void 0 ? dummyFunction : _actions$onEnter,\n _actions$onEscape = actions.onEscape,\n onEscape = _actions$onEscape === void 0 ? dummyFunction : _actions$onEscape;\n\n var _keyDownEventPropsNor = (0,_keyDownEventPropsNormalizer__WEBPACK_IMPORTED_MODULE_0__.default)(keyDownEvent),\n eventKey = _keyDownEventPropsNor.key;\n\n switch (eventKey) {\n case 'Backspace':\n onBackspace(keyDownEvent);\n break;\n\n case 'Tab':\n onTab(keyDownEvent);\n break;\n\n case 'Enter':\n onEnter(keyDownEvent);\n break;\n\n case 'Escape':\n onEscape(keyDownEvent);\n break;\n\n default:\n }\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (keyDownHandlerProxy);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vc3JjL3V0aWxzL2tleURvd25IYW5kbGVyUHJveHkuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBQ0E7O0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQU9BO0FBQUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFqQkE7QUFtQkE7O0FBRUEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vc3JjL3V0aWxzL2tleURvd25IYW5kbGVyUHJveHkuanM/MDMzNiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQga2V5RG93bkV2ZW50UHJvcHNOb3JtYWxpemVyIGZyb20gJy4va2V5RG93bkV2ZW50UHJvcHNOb3JtYWxpemVyJztcblxuLyoqXG4gKiBIZWxwIGZ1bmN0aW9uIHRvIHByb3h5IGtleURvd24gZXZlbnQgdG8gaGFuZGxlclxuICpcbiAqIEAga2V5RG93bkV2ZW50XG4gKiBUeXBlOiBFdmVudFxuICogRGVzY3JpcHRpb246IGtleURvd24gZXZlbnRcbiAqXG4gKiBAIGFjdGlvbnMub25CYWNrc3BhY2VcbiAqIFR5cGU6IGZ1bmN0aW9uXG4gKiBEZXNjcmlwdGlvbjogY2FsbGJhY2sgZnVuY3Rpb24gd2hlbiBgQmFja3NwYWNlYCBrZXlEb25lXG4gKlxuICogQCBhY3Rpb25zLm9uVGFiXG4gKiBUeXBlOiBmdW5jdGlvblxuICogRGVzY3JpcHRpb246IGNhbGxiYWNrIGZ1bmN0aW9uIHdoZW4gYFRhYmAga2V5RG9uZVxuICpcbiAqIEAgYWN0aW9ucy5vbkVudGVyXG4gKiBUeXBlOiBmdW5jdGlvblxuICogRGVzY3JpcHRpb246IGNhbGxiYWNrIGZ1bmN0aW9uIHdoZW4gYEVudGVyYCBrZXlEb25lXG4gKlxuICogQCBhY3Rpb25zLm9uRXNjYXBlXG4gKiBUeXBlOiBmdW5jdGlvblxuICogRGVzY3JpcHRpb246IGNhbGxiYWNrIGZ1bmN0aW9uIHdoZW4gYEVzY2FwZWAga2V5RG9uZVxuICovXG5jb25zdCBkdW1teUZ1bmN0aW9uID0gKCkgPT4ge307XG5jb25zdCBrZXlEb3duSGFuZGxlclByb3h5ID0gKGtleURvd25FdmVudCwgYWN0aW9ucykgPT4ge1xuICBjb25zdCB7XG4gICAgb25CYWNrc3BhY2UgPSBkdW1teUZ1bmN0aW9uLFxuICAgIG9uVGFiID0gZHVtbXlGdW5jdGlvbixcbiAgICBvbkVudGVyID0gZHVtbXlGdW5jdGlvbixcbiAgICBvbkVzY2FwZSA9IGR1bW15RnVuY3Rpb24sXG4gIH0gPSBhY3Rpb25zO1xuXG4gIGNvbnN0IHsga2V5OiBldmVudEtleSB9ID0ga2V5RG93bkV2ZW50UHJvcHNOb3JtYWxpemVyKGtleURvd25FdmVudCk7XG5cbiAgc3dpdGNoIChldmVudEtleSkge1xuICAgIGNhc2UgJ0JhY2tzcGFjZSc6XG4gICAgICBvbkJhY2tzcGFjZShrZXlEb3duRXZlbnQpO1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlICdUYWInOlxuICAgICAgb25UYWIoa2V5RG93bkV2ZW50KTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSAnRW50ZXInOlxuICAgICAgb25FbnRlcihrZXlEb3duRXZlbnQpO1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlICdFc2NhcGUnOlxuICAgICAgb25Fc2NhcGUoa2V5RG93bkV2ZW50KTtcbiAgICAgIGJyZWFrO1xuXG4gICAgZGVmYXVsdDpcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQga2V5RG93bkhhbmRsZXJQcm94eTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../src/utils/keyDownHandlerProxy.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _keyDownEventPropsNormalizer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./keyDownEventPropsNormalizer */ \"../src/utils/keyDownEventPropsNormalizer.js\");\n/* harmony import */ var _dummyFunction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./dummyFunction */ \"../src/utils/dummyFunction.js\");\n\n\n/**\n * Help function to proxy keyDown event to handler\n *\n * @ keyDownEvent\n * Type: Event\n * Description: keyDown event\n *\n * @ actions.onBackspace\n * Type: function\n * Description: callback function when `Backspace` keyDone\n *\n * @ actions.onTab\n * Type: function\n * Description: callback function when `Tab` keyDone\n *\n * @ actions.onEnter\n * Type: function\n * Description: callback function when `Enter` keyDone\n *\n * @ actions.onEscape\n * Type: function\n * Description: callback function when `Escape` keyDone\n */\n\nvar keyDownHandlerProxy = function keyDownHandlerProxy(keyDownEvent, actions) {\n var _actions$onBackspace = actions.onBackspace,\n onBackspace = _actions$onBackspace === void 0 ? _dummyFunction__WEBPACK_IMPORTED_MODULE_1__.default : _actions$onBackspace,\n _actions$onTab = actions.onTab,\n onTab = _actions$onTab === void 0 ? _dummyFunction__WEBPACK_IMPORTED_MODULE_1__.default : _actions$onTab,\n _actions$onEnter = actions.onEnter,\n onEnter = _actions$onEnter === void 0 ? _dummyFunction__WEBPACK_IMPORTED_MODULE_1__.default : _actions$onEnter,\n _actions$onEscape = actions.onEscape,\n onEscape = _actions$onEscape === void 0 ? _dummyFunction__WEBPACK_IMPORTED_MODULE_1__.default : _actions$onEscape;\n\n var _keyDownEventPropsNor = (0,_keyDownEventPropsNormalizer__WEBPACK_IMPORTED_MODULE_0__.default)(keyDownEvent),\n eventKey = _keyDownEventPropsNor.key;\n\n switch (eventKey) {\n case 'Backspace':\n onBackspace(keyDownEvent);\n break;\n\n case 'Tab':\n onTab(keyDownEvent);\n break;\n\n case 'Enter':\n onEnter(keyDownEvent);\n break;\n\n case 'Escape':\n onEscape(keyDownEvent);\n break;\n\n default:\n }\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (keyDownHandlerProxy);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vc3JjL3V0aWxzL2tleURvd25IYW5kbGVyUHJveHkuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQU9BO0FBQUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFqQkE7QUFtQkE7O0FBRUEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vc3JjL3V0aWxzL2tleURvd25IYW5kbGVyUHJveHkuanM/MDMzNiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQga2V5RG93bkV2ZW50UHJvcHNOb3JtYWxpemVyIGZyb20gJy4va2V5RG93bkV2ZW50UHJvcHNOb3JtYWxpemVyJztcbmltcG9ydCBkdW1teUZ1bmN0aW9uIGZyb20gJy4vZHVtbXlGdW5jdGlvbic7XG5cbi8qKlxuICogSGVscCBmdW5jdGlvbiB0byBwcm94eSBrZXlEb3duIGV2ZW50IHRvIGhhbmRsZXJcbiAqXG4gKiBAIGtleURvd25FdmVudFxuICogVHlwZTogRXZlbnRcbiAqIERlc2NyaXB0aW9uOiBrZXlEb3duIGV2ZW50XG4gKlxuICogQCBhY3Rpb25zLm9uQmFja3NwYWNlXG4gKiBUeXBlOiBmdW5jdGlvblxuICogRGVzY3JpcHRpb246IGNhbGxiYWNrIGZ1bmN0aW9uIHdoZW4gYEJhY2tzcGFjZWAga2V5RG9uZVxuICpcbiAqIEAgYWN0aW9ucy5vblRhYlxuICogVHlwZTogZnVuY3Rpb25cbiAqIERlc2NyaXB0aW9uOiBjYWxsYmFjayBmdW5jdGlvbiB3aGVuIGBUYWJgIGtleURvbmVcbiAqXG4gKiBAIGFjdGlvbnMub25FbnRlclxuICogVHlwZTogZnVuY3Rpb25cbiAqIERlc2NyaXB0aW9uOiBjYWxsYmFjayBmdW5jdGlvbiB3aGVuIGBFbnRlcmAga2V5RG9uZVxuICpcbiAqIEAgYWN0aW9ucy5vbkVzY2FwZVxuICogVHlwZTogZnVuY3Rpb25cbiAqIERlc2NyaXB0aW9uOiBjYWxsYmFjayBmdW5jdGlvbiB3aGVuIGBFc2NhcGVgIGtleURvbmVcbiAqL1xuY29uc3Qga2V5RG93bkhhbmRsZXJQcm94eSA9IChrZXlEb3duRXZlbnQsIGFjdGlvbnMpID0+IHtcbiAgY29uc3Qge1xuICAgIG9uQmFja3NwYWNlID0gZHVtbXlGdW5jdGlvbixcbiAgICBvblRhYiA9IGR1bW15RnVuY3Rpb24sXG4gICAgb25FbnRlciA9IGR1bW15RnVuY3Rpb24sXG4gICAgb25Fc2NhcGUgPSBkdW1teUZ1bmN0aW9uLFxuICB9ID0gYWN0aW9ucztcblxuICBjb25zdCB7IGtleTogZXZlbnRLZXkgfSA9IGtleURvd25FdmVudFByb3BzTm9ybWFsaXplcihrZXlEb3duRXZlbnQpO1xuXG4gIHN3aXRjaCAoZXZlbnRLZXkpIHtcbiAgICBjYXNlICdCYWNrc3BhY2UnOlxuICAgICAgb25CYWNrc3BhY2Uoa2V5RG93bkV2ZW50KTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSAnVGFiJzpcbiAgICAgIG9uVGFiKGtleURvd25FdmVudCk7XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgJ0VudGVyJzpcbiAgICAgIG9uRW50ZXIoa2V5RG93bkV2ZW50KTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSAnRXNjYXBlJzpcbiAgICAgIG9uRXNjYXBlKGtleURvd25FdmVudCk7XG4gICAgICBicmVhaztcblxuICAgIGRlZmF1bHQ6XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IGtleURvd25IYW5kbGVyUHJveHk7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../src/utils/keyDownHandlerProxy.js\n"); /***/ }), @@ -653,7 +686,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ ((module, __webpack_exports__, __webpack_require__) => { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../node_modules/css-loader/dist/runtime/cssWithMappingToString.js */ \"../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../node_modules/css-loader/dist/runtime/api.js */ \"../node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".token-input-container {\\n -webkit-box-sizing: border-box;\\n -moz-box-sizing: border-box;\\n box-sizing: border-box;\\n cursor: text;\\n overflow-y: auto;\\n height: 200px;\\n padding: 4px;\\n background-color: #fff;\\n border: 1px solid #ccc;\\n border-radius: 4px;\\n outline: 0;\\n -webkit-transition: all 0.2s linear 0s;\\n -moz-transition: all 0.2s linear 0s;\\n -o-transition: all 0.2s linear 0s;\\n -ms-transition: all 0.2s linear 0s;\\n transition: all 0.2s linear 0s;\\n}\\n.token-input-container *,\\n.token-input-container *::before,\\n.token-input-container *::after {\\n -webkit-box-sizing: inherit;\\n -moz-box-sizing: inherit;\\n box-sizing: inherit;\\n}\\n.token-input-container.token-input-container--focused {\\n border-color: #0096cc;\\n}\\n.token-input-container.token-input-container.token-input-container--errors {\\n border-color: #db3d44;\\n}\\n.token-input-container .token-input-token-list .token-input-token {\\n float: left;\\n display: -webkit-box;\\n display: -moz-box;\\n display: -webkit-flex;\\n display: -ms-flexbox;\\n display: box;\\n display: flex;\\n -webkit-box-orient: horizontal;\\n -moz-box-orient: horizontal;\\n -o-box-orient: horizontal;\\n -webkit-box-lines: single;\\n -moz-box-lines: single;\\n -o-box-lines: single;\\n -webkit-flex-flow: row nowrap;\\n -ms-flex-flow: row nowrap;\\n flex-flow: row nowrap;\\n -webkit-box-pack: center;\\n -moz-box-pack: center;\\n -o-box-pack: center;\\n -ms-flex-pack: center;\\n -webkit-justify-content: center;\\n justify-content: center;\\n -webkit-box-align: center;\\n -moz-box-align: center;\\n -o-box-align: center;\\n -ms-flex-align: center;\\n -webkit-align-items: center;\\n align-items: center;\\n -ms-flex-line-pack: center;\\n -webkit-align-content: center;\\n align-content: center;\\n max-width: 100%;\\n height: 32px;\\n line-height: 1.5;\\n white-space: nowrap;\\n margin: 0 4px 4px 0;\\n padding: 0;\\n border: 0;\\n border-radius: 4px;\\n color: #0096cc;\\n background-color: #cceaf5;\\n}\\n.token-input-container .token-input-token-list .token-input-token.token-input-token--error {\\n color: #db3d44;\\n background-color: #f9b5b5;\\n}\\n.token-input-container .token-input-token-list .token-input-token:hover {\\n cursor: pointer;\\n background-color: #e6f4fc;\\n}\\n.token-input-container .token-input-token-list .token-input-token:hover.token-input-token--error {\\n background-color: #ffdada;\\n}\\n.token-input-container .token-input-token-list .token-input-token:hover.token-input-token--read-only {\\n cursor: default;\\n}\\n.token-input-container .token-input-token-list .token-input-token.token-input-token--active .token-input-autosized-wrapper {\\n display: -webkit-box;\\n display: -moz-box;\\n display: -webkit-flex;\\n display: -ms-flexbox;\\n display: box;\\n display: flex;\\n -webkit-box-pack: center;\\n -moz-box-pack: center;\\n -o-box-pack: center;\\n -ms-flex-pack: center;\\n -webkit-justify-content: center;\\n justify-content: center;\\n -webkit-box-align: center;\\n -moz-box-align: center;\\n -o-box-align: center;\\n -ms-flex-align: center;\\n -webkit-align-items: center;\\n align-items: center;\\n -ms-flex-line-pack: center;\\n -webkit-align-content: center;\\n align-content: center;\\n margin: 4px 8px;\\n height: 32px;\\n}\\n.token-input-container .token-input-token-list .token-input-token.token-input-token--active .token-input-autosized-wrapper input {\\n height: auto;\\n border-bottom: 1px solid #aaa;\\n}\\n.token-input-container .token-input-token-list .token-input-token .token-input-token__label-wrapper {\\n -webkit-box-flex: 1;\\n -moz-box-flex: 1;\\n -o-box-flex: 1;\\n box-flex: 1;\\n -webkit-flex: 1 0 0;\\n -ms-flex: 1 0 0;\\n flex: 1 0 0;\\n margin: 0 8px;\\n overflow: hidden;\\n -o-text-overflow: ellipsis;\\n text-overflow: ellipsis;\\n}\\n.token-input-container .token-input-token-list .token-input-token .token-input-token__delete-button {\\n -webkit-box-flex: 1;\\n -moz-box-flex: 1;\\n -o-box-flex: 1;\\n box-flex: 1;\\n -webkit-flex: 0 0 0;\\n -ms-flex: 0 0 0;\\n flex: 0 0 0;\\n display: -webkit-box;\\n display: -moz-box;\\n display: -webkit-flex;\\n display: -ms-flexbox;\\n display: box;\\n display: flex;\\n -webkit-box-pack: center;\\n -moz-box-pack: center;\\n -o-box-pack: center;\\n -ms-flex-pack: center;\\n -webkit-justify-content: center;\\n justify-content: center;\\n -webkit-box-align: center;\\n -moz-box-align: center;\\n -o-box-align: center;\\n -ms-flex-align: center;\\n -webkit-align-items: center;\\n align-items: center;\\n -ms-flex-line-pack: center;\\n -webkit-align-content: center;\\n align-content: center;\\n height: 100%;\\n padding: 2px 8px;\\n cursor: pointer;\\n opacity: 0.3;\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.Alpha(Opacity=30)\\\";\\n filter: alpha(opacity=30);\\n border-left: 1px solid #aaa;\\n border-radius: 0 4px 4px 0;\\n}\\n.token-input-container .token-input-token-list .token-input-token .token-input-token__delete-button:hover {\\n opacity: 1;\\n -ms-filter: none;\\n filter: none;\\n background-color: #aaa;\\n}\\n.token-input-container .token-input-token-list .token-input-token .token-input-token__delete-button:hover .token-input-token__delete-button__close-icon:before,\\n.token-input-container .token-input-token-list .token-input-token .token-input-token__delete-button:hover .token-input-token__delete-button__close-icon:after {\\n border-color: #fff;\\n}\\n.token-input-container .token-input-token-list .token-input-token .token-input-token__delete-button .token-input-token__delete-button__close-icon {\\n width: 14px;\\n height: 14px;\\n position: relative;\\n}\\n.token-input-container .token-input-token-list .token-input-token .token-input-token__delete-button .token-input-token__delete-button__close-icon:before,\\n.token-input-container .token-input-token-list .token-input-token .token-input-token__delete-button .token-input-token__delete-button__close-icon:after {\\n content: '';\\n height: 14px;\\n left: 6px;\\n border-left: 2px solid #222;\\n position: absolute;\\n}\\n.token-input-container .token-input-token-list .token-input-token .token-input-token__delete-button .token-input-token__delete-button__close-icon:before {\\n -webkit-transform: rotate(-45deg);\\n -moz-transform: rotate(-45deg);\\n -o-transform: rotate(-45deg);\\n -ms-transform: rotate(-45deg);\\n transform: rotate(-45deg);\\n}\\n.token-input-container .token-input-token-list .token-input-token .token-input-token__delete-button .token-input-token__delete-button__close-icon:after {\\n -webkit-transform: rotate(45deg);\\n -moz-transform: rotate(45deg);\\n -o-transform: rotate(45deg);\\n -ms-transform: rotate(45deg);\\n transform: rotate(45deg);\\n}\\n.token-input-container .token-input-autosized-wrapper {\\n float: left;\\n overflow: hidden;\\n margin-right: 4px;\\n}\\n.token-input-container .token-input-autosized-wrapper input {\\n height: 32px;\\n margin: 0;\\n padding: 0;\\n border: 0;\\n outline: 0;\\n cursor: text;\\n -webkit-box-shadow: none;\\n box-shadow: none;\\n background: none;\\n color: #222;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./../src/styles.styl\",\"webpack://./../node_modules/nib/lib/nib/vendor.styl\",\"webpack://./../node_modules/nib/lib/nib/border.styl\",\"webpack://./../node_modules/nib/lib/nib/border-radius.styl\",\"webpack://./../node_modules/nib/lib/nib/size.styl\",\"webpack://./../node_modules/stylus/lib/functions/index.styl\",\"webpack://./../node_modules/nib/lib/nib/flex.styl\",\"webpack://./../node_modules/nib/lib/nib/overflow.styl\"],\"names\":[],\"mappings\":\"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\",\"sourcesContent\":[\".container {\\n // https://www.paulirish.com/2012/box-sizing-border-box-ftw/\\n box-sizing: border-box;\\n *, \\n *::before, \\n *::after {\\n box-sizing: inherit;\\n }\\n \\n cursor: text;\\n overflow-y: auto;\\n height: 200px;\\n\\n padding: 4px;\\n\\n background-color: #fff;\\n\\n border: 1px solid #ccc;\\n border-radius: 4px;\\n\\n // remove focuse border style of mac sysytem\\n // outline: none; \\n outline: 0;\\n\\n &.container--focused {\\n border-color: #0096cc;\\n }\\n &&.container--errors {\\n border-color: #db3d44;\\n }\\n\\n transition: all 0.2s linear 0s;\\n\\n .token-list {\\n .token {\\n float: left;\\n\\n display: flex;\\n flex-flow: row nowrap;\\n justify-content: center;\\n align-items: center;\\n align-content: center;\\n\\n max-width: 100%;\\n // TODO: Set minimum?\\n // min-width: 100px;\\n\\n height: 32px;\\n line-height: 1.5;\\n white-space: nowrap;\\n \\n margin: 0 4px 4px 0;\\n padding: 0; \\n\\n border: 0;\\n border-radius: 4px;\\n\\n color: #0096cc;\\n background-color: #cceaf5;\\n\\n &.token--error {\\n // color: #f75757;\\n color: #db3d44;\\n background-color: #f9b5b5;\\n }\\n\\n &:hover {\\n cursor: pointer;\\n background-color: #e6f4fc;\\n\\n &.token--error {\\n background-color: #ffdada;\\n }\\n\\n &.token--read-only {\\n cursor: default;\\n }\\n }\\n\\n &.token--active {\\n .autosized-wrapper {\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n align-content: center;\\n\\n margin: 4px 8px;\\n height: 32px;\\n\\n input {\\n height: auto;\\n border-bottom: 1px solid #aaa;\\n }\\n }\\n }\\n \\n // &.token--read-only {\\n // .token__label-wrapper {\\n // max-width: 100%;\\n // }\\n // }\\n \\n .token__label-wrapper {\\n flex: 1 0 0;\\n\\n margin: 0 8px;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n }\\n \\n .token__delete-button {\\n flex: 0 0 0;\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n align-content: center;\\n\\n height: 100%;\\n padding: 2px 8px;\\n\\n cursor: pointer;\\n // font-size: 14px;\\n // color: #222;\\n opacity: 0.3;\\n\\n border-left: 1px solid #aaa;\\n border-radius: 0 4px 4px 0;\\n\\n &:hover {\\n opacity: 1;\\n background-color: #aaa;\\n\\n .token__delete-button__close-icon {\\n &:before,\\n &:after {\\n border-color: #fff;\\n }\\n }\\n }\\n\\n .token__delete-button__close-icon {\\n width: 14px;\\n height: 14px;\\n position: relative;\\n\\n &:before,\\n &:after {\\n content: '';\\n height: 14px;\\n left: 6px;\\n border-left: 2px solid #222;\\n position: absolute;\\n }\\n &:before {\\n transform: rotate(-45deg);\\n }\\n &:after {\\n transform: rotate(45deg);\\n }\\n }\\n }\\n }\\n }\\n\\n .autosized-wrapper {\\n float: left;\\n overflow: hidden;\\n margin-right: 4px;\\n \\n input {\\n height: 32px;\\n margin: 0;\\n padding: 0;\\n\\n border: 0;\\n\\n // remove focuse border style of mac sysytem\\n // outline: none; \\n outline: 0;\\n\\n cursor: text;\\n box-shadow: none;\\n background: none;\\n color: #222;\\n }\\n }\\n}\\n\",\"use('../nodes/vendor-helpers.js')\\n@import 'config'\\n\\n/*\\n * Alias \\\"nowrap\\\" as \\\"no-wrap\\\".\\n */\\n\\nno-wrap = unquote('nowrap')\\n\\n/*\\n * Helper to find out if a given value is a width\\n */\\n\\nis-width(val)\\n if auto == val\\n return true\\n else if val && 'unit' == type(val)\\n // Stylus does not short circuit so we need to perform this as a distinct\\n // operation to prevent errors\\n return '' != unit(val)\\n return false\\n\\n/*\\n * Vendor support for the given prop / arguments, optionally specifying the\\n * only prefixes to utilize, or those which should be ignored.\\n */\\n\\nvendor(prop, args, only = null, ignore = null, vendor-property = true)\\n need_normalize = !vendor-property or prop in ('transition' 'transition-property' 'border-image' 'border-image-slice')\\n for prefix in vendor-prefixes\\n unless (only and !(prefix in only)) or (ignore and prefix in ignore)\\n if official == prefix\\n if need_normalize\\n {prop}: normalize(prop,('%s' % args))\\n else\\n {prop}: args\\n else\\n newprop = prop\\n newprop = '-' + prefix + '-' + prop if vendor-property\\n\\n if need_normalize\\n {newprop}: normalize(prop,('%s' % args),prefix)\\n else\\n {newprop}: args\\n/*\\n * Vendorize the given value.\\n */\\n\\nvendor-value(arg, only = null, ignore = null)\\n prop = current-property[0]\\n for prefix in vendor-prefixes\\n unless (only and !(prefix in only)) or (ignore and prefix in ignore) or official == prefix\\n add-property(prop, '-%s-%s' % (prefix arg))\\n arg\\n\\n/*\\n * Vendor \\\"box-shadow\\\" support.\\n */\\n\\nbox-shadow()\\n vendor('box-shadow', arguments, only: webkit official)\\n\\n/*\\n * Vendor \\\"user-select\\\" support.\\n */\\n\\nuser-select()\\n vendor('user-select', arguments, only: webkit moz ms official)\\n\\n/*\\n * Vendor \\\"column-count\\\" support.\\n */\\n\\ncolumn-count()\\n vendor('column-count', arguments, only: webkit moz official)\\n\\n/*\\n * Vendor \\\"column-gap\\\" support.\\n */\\n\\ncolumn-gap()\\n vendor('column-gap', arguments, only: webkit moz official)\\n\\n/*\\n * Vendor \\\"column-rule\\\" support.\\n */\\n\\ncolumn-rule()\\n vendor('column-rule', arguments, only: webkit moz official)\\n\\n/*\\n * Vendor \\\"column-rule-color\\\" support.\\n */\\n\\ncolumn-rule-color()\\n vendor('column-rule-color', arguments, only: webkit moz official)\\n\\n/*\\n * Vendor \\\"column-rule-width\\\" support.\\n */\\n\\ncolumn-rule-width()\\n vendor('column-rule-width', arguments, only: webkit moz official)\\n\\n/*\\n * Vendor \\\"column-rule-style\\\" support.\\n */\\n\\ncolumn-rule-style()\\n vendor('column-rule-style', arguments, only: webkit moz official)\\n\\n/*\\n * Vendor \\\"column-width\\\" support.\\n */\\n\\ncolumn-width()\\n vendor('column-width', arguments, only: webkit moz official)\\n\\n/*\\n * Vendor \\\"column-span\\\" support.\\n */\\n\\ncolumn-span()\\n vendor('column-span', arguments, only: webkit official)\\n\\n/*\\n * Vendor \\\"column-fill\\\" support.\\n */\\n\\ncolumn-fill()\\n vendor('column-fill', arguments, only: moz)\\n\\n/*\\n * Legacy syntax support for background-clip and background-origin\\n */\\n\\nlegacy-bg-values(property, args)\\n legacy_args = ()\\n importance = unquote('')\\n for subargs in args\\n for arg in subargs\\n if arg in (border-box padding-box content-box)\\n arg = unquote('border') if arg == border-box\\n arg = unquote('padding') if arg == padding-box\\n arg = unquote('content') if arg == content-box\\n if arg != '!important'\\n push(legacy_args,arg)\\n else\\n importance = !important\\n vendor(property, unquote(join(', ',legacy_args)) importance, only: moz webkit)\\n\\n/*\\n * Vendor \\\"background-clip\\\" support.\\n */\\n\\nbackground-clip()\\n if arguments[0] == text\\n vendor('background-clip', arguments, only: webkit)\\n else\\n legacy-bg-values('background-clip', arguments)\\n background-clip: arguments\\n\\n/*\\n * Vendor \\\"background-origin\\\" support.\\n */\\n\\nbackground-origin()\\n legacy-bg-values('background-origin', arguments)\\n background-origin: arguments\\n\\n/*\\n * Vendor \\\"background-size\\\" support.\\n */\\n\\nbackground-size()\\n vendor('background-size', arguments, only: webkit moz official)\\n\\n/*\\n * Vendor \\\"transform\\\" support.\\n */\\n\\ntransform()\\n vendor('transform', arguments)\\n\\n/*\\n * Vendor \\\"transform-origin\\\" support.\\n */\\ntransform-origin()\\n vendor('transform-origin', arguments)\\n\\n/*\\n * Vendor \\\"transform-style\\\" support.\\n */\\n\\ntransform-style()\\n vendor('transform-style', arguments)\\n\\n/*\\n * Vendor \\\"border-image\\\" support.\\n */\\n\\nborder-image()\\n vendor('border-image', arguments, only: webkit moz o official)\\n\\n/*\\n * Vendor \\\"transition\\\" support.\\n */\\n\\ntransition()\\n vendor('transition', arguments)\\n\\n/*\\n * Vendor \\\"transition-property\\\" support.\\n */\\n\\ntransition-property()\\n vendor('transition-property', arguments)\\n\\n/*\\n * Vendor \\\"transition-duration\\\" support.\\n */\\n\\ntransition-duration()\\n vendor('transition-duration', arguments)\\n\\n/*\\n * Vendor \\\"transition-timing-function\\\" support.\\n */\\n\\ntransition-timing-function()\\n vendor('transition-timing-function', arguments)\\n\\n/*\\n * Vendor \\\"transition-delay\\\" support.\\n */\\n\\ntransition-delay()\\n vendor('transition-delay', arguments)\\n\\n/*\\n * Vendor \\\"backface-visibility\\\" support.\\n */\\n\\nbackface-visibility()\\n vendor('backface-visibility', arguments, only: webkit moz ms official)\\n\\n/*\\n * Vendor \\\"perspective\\\" support.\\n */\\n\\nperspective()\\n if mixin\\n vendor('perspective', arguments, only: webkit moz ms official)\\n else\\n 'perspective(%s)' % arguments\\n\\n/*\\n * Vendor \\\"perspective-origin\\\" support.\\n */\\n\\nperspective-origin()\\n vendor('perspective-origin', arguments, only: webkit moz ms official)\\n\\n/*\\n * Opacity with conditional IE support.\\n */\\n\\nopacity(n, args...)\\n opacity: n args\\n if support-for-ie\\n if n == inherit or n == initial\\n -ms-filter: n args\\n filter: n args\\n else\\n val = round(n * 100)\\n if val == 100\\n -ms-filter: none args\\n filter: none args\\n else\\n -ms-filter: '\\\"progid:DXImageTransform.Microsoft.Alpha(Opacity=%s)\\\"' % val args\\n filter: 'alpha(opacity=%s)' % val args\\n\\n/*\\n * Vendor \\\"text-size-adjust\\\"\\n */\\n\\ntext-size-adjust()\\n vendor('text-size-adjust', arguments)\\n\\n/*\\n * Alias the \\\"white-space\\\" property.\\n */\\n\\nwhitespace()\\n white-space: arguments\\n\\n/*\\n * Vendor \\\"box-sizing\\\" support.\\n */\\n\\nbox-sizing()\\n vendor('box-sizing', arguments, only: webkit moz official)\\n\\n/*\\n * Vendor \\\"box-orient\\\" support.\\n */\\n\\nbox-orient()\\n vendor('box-orient', arguments, only: webkit moz official)\\n\\n/*\\n * Vendor \\\"box-flex-group\\\" support.\\n */\\n\\nbox-flex-group()\\n vendor('box-flex-group', arguments, only: webkit moz official)\\n\\n/*\\n * Vendor \\\"box-ordinal-group\\\" support.\\n */\\n\\nbox-ordinal-group()\\n vendor('box-ordinal-group', arguments, only: webkit moz ms official)\\n\\n\\n/*\\n * Vendor \\\"box-align\\\" support.\\n */\\n\\nbox-align()\\n vendor('box-align', arguments, only: webkit moz ms official)\\n\\n/*\\n * Vendor \\\"box-pack\\\" support.\\n */\\n\\nbox-pack()\\n vendor('box-pack', arguments, only: webkit moz ms official)\\n\\n/*\\n * Vendor \\\"box-direction\\\" support.\\n */\\n\\nbox-direction()\\n vendor('box-direction', arguments, only: webkit moz ms official)\\n\\n/*\\n * Vendor \\\"animation\\\" support.\\n */\\n\\nanimation()\\n vendor('animation', arguments)\\n\\n\\n/*\\n * Vendor \\\"animation-name\\\" support.\\n */\\n\\nanimation-name()\\n vendor('animation-name', arguments)\\n\\n/*\\n * Vendor \\\"animation-duration\\\" support.\\n */\\n\\nanimation-duration()\\n vendor('animation-duration', arguments)\\n\\n/*\\n * Vendor \\\"animation-delay\\\" support.\\n */\\n\\nanimation-delay()\\n vendor('animation-delay', arguments)\\n\\n/*\\n * Vendor \\\"animation-direction\\\" support.\\n */\\n\\nanimation-direction()\\n vendor('animation-direction', arguments)\\n\\n/*\\n * Vendor \\\"animation-iteration-count\\\" support.\\n */\\n\\nanimation-iteration-count()\\n vendor('animation-iteration-count', arguments)\\n\\n/*\\n * Vendor \\\"animation-timing-function\\\" support.\\n */\\n\\nanimation-timing-function()\\n vendor('animation-timing-function', arguments)\\n\\n/*\\n * Vendor \\\"animation-play-state\\\" support.\\n */\\n\\nanimation-play-state()\\n vendor('animation-play-state', arguments)\\n\\n/*\\n * Vendor \\\"animation-fill-mode\\\" support.\\n */\\n\\nanimation-fill-mode()\\n vendor('animation-fill-mode', arguments)\\n\\n/*\\n * Vendor \\\"hyphens\\\" support.\\n */\\n\\nhyphens()\\n vendor('hyphens', arguments, only: webkit moz ms official)\\n\\n/*\\n * Vendor \\\"appearance\\\" support.\\n */\\n\\nappearance()\\n vendor('appearance', arguments, only: webkit moz official)\\n\\n/*\\n * Vendor \\\"tab-size\\\" support.\\n */\\n\\ntab-size()\\n vendor('tab-size', arguments, only: moz o official)\\n\\n/*\\n * Vendor \\\"overflow-scrolling\\\" support.\\n */\\n\\noverflow-scrolling()\\n vendor('overflow-scrolling', arguments, only: webkit official)\\n\\n/*\\n * Vendor \\\"text-overflow\\\" support, , -o- for opera 9.* - 10.*\\n */\\n\\ntext-overflow()\\n vendor('text-overflow', arguments, only: official o)\\n\\n/*\\n * Vendor \\\"text-size-adjust\\\" support.\\n */\\ntext-size-adjust()\\n vendor('text-size-adjust', arguments, only: official webkit ms)\\n\\n/*\\n * Vendor \\\"font-smoothing\\\" support, webkit only.\\n */\\nfont-smoothing()\\n vendor('font-smoothing', arguments, only: webkit)\\n\\n\\n/**\\n * Vendor input-placeholder/placeholder support.\\n *\\n * Examples:\\n * // Default syntax\\n * body\\n * placeholder(color #333, font-weight normal)\\n *\\n * // The comma is important\\n * .placeholder-red\\n * placeholder(color red,)\\n *\\n * // We can pass a function\\n * green-placeholder()\\n * color green\\n * .placeholder-green\\n * placeholder(green-placeholder)\\n *\\n * // We can pass a hash\\n * textarea\\n * placeholder((font-style italic) (font-weight bold) (padding '4px 10px'))\\n */\\nplaceholder()\\n for v in ':-webkit-input' '-moz' ':-moz' '-ms-input'\\n &:{v}-placeholder\\n for pair in arguments\\n if typeof(pair) == 'function'\\n pair()\\n else if pair is not null && pair[0] is not null\\n {pair[0]}: type(pair[1]) == 'string' ? s(pair[1]) : pair[1]\\ninput-placeholder = placeholder\\n\\n/*\\n * Vendor background support (gradients).\\n */\\n\\nbackground()\\n if match('-gradient\\\\(', ''+arguments)\\n vendor('background', arguments, vendor-property: false)\\n else\\n background arguments\\n\\nbackground-image()\\n if match('-gradient\\\\(', ''+arguments)\\n vendor('background-image', arguments, vendor-property: false)\\n else\\n background-image arguments\\n\\ncursor()\\n if match('-gradient\\\\(', ''+arguments)\\n vendor('cursor', arguments, vendor-property: false)\\n else\\n cursor arguments\\n\\nlist-style()\\n if match('-gradient\\\\(', ''+arguments)\\n vendor('list-style', arguments, vendor-property: false)\\n else\\n list-style arguments\\n\\nlist-style-image()\\n if match('-gradient\\\\(', ''+arguments)\\n vendor('list-style-image', arguments, vendor-property: false)\\n else\\n list-style-image arguments\\n\",\"/*\\n * border: \\n * border: ...\\n */\\n\\nborder(color, args...)\\n if color is a 'color'\\n border: 1px solid color args\\n else\\n border: arguments\\n\",\"/*\\n * Helper for border-radius().\\n */\\n\\n-apply-border-radius(pos, importance)\\n if length(pos) == 3\\n // border-radius: \\n y = pos[0]\\n x = pos[1]\\n // We don't use vendor for boder-radius anymore\\n // vendor('border-radius-%s%s' % pos, pos[2], only: webkit official)\\n {'border-%s-%s-radius' % pos}: pos[2] importance\\n else if pos[0] in (top bottom)\\n // border-radius: \\n -apply-border-radius(pos[0] left pos[1], importance)\\n -apply-border-radius(pos[0] right pos[1], importance)\\n else if pos[0] in (left right)\\n // border-radius: \\n unshift(pos, top);\\n -apply-border-radius(pos, importance)\\n pos[0] = bottom\\n -apply-border-radius(pos, importance)\\n\\n/*\\n * border-radius supporting augmented behavior.\\n *\\n * Examples:\\n *\\n * border-radius: 2px 5px\\n * border-radius: top 5px bottom 10px\\n * border-radius: left 5px\\n * border-radius: top left 5px\\n * border-radius: top left 10px bottom right 5px\\n * border-radius: top left 10px, bottom right 5px\\n *\\n */\\n\\nborder-radius()\\n pos = ()\\n augmented = false\\n importance = arguments[length(arguments) - 1] == !important ? !important : unquote('')\\n\\n for args in arguments\\n for arg in args\\n if arg is a 'ident'\\n append(pos, arg)\\n augmented = true\\n else\\n append(pos, arg)\\n if augmented\\n -apply-border-radius(pos, importance)\\n pos = ()\\n border-radius pos unless augmented\\n\",\"/*\\n * Size utility.\\n *\\n * Synopsis:\\n *\\n * size: | \\n *\\n * Examples:\\n *\\n * size: 100% 30px\\n * yields:\\n * width: 100%\\n * height: 30px\\n *\\n * size: 5px\\n * yields:\\n * width: 5px\\n * height: 5px\\n *\\n */\\n\\nsize()\\n if length(arguments) == 1\\n width: arguments[0]\\n height: arguments[0]\\n else\\n width: arguments[0]\\n height: arguments[1]\\n\",\"called-from = ()\\n\\nvendors = moz webkit o ms official\\n\\n// stringify the given arg\\n\\n-string(arg)\\n type(arg) + ' ' + arg\\n\\n// require a color\\n\\nrequire-color(color)\\n unless color is a 'color'\\n error('RGB or HSL value expected, got a ' + -string(color))\\n\\n// require a unit\\n\\nrequire-unit(n)\\n unless n is a 'unit'\\n error('unit expected, got a ' + -string(n))\\n\\n// require a string\\n\\nrequire-string(str)\\n unless str is a 'string' or str is a 'ident'\\n error('string expected, got a ' + -string(str))\\n\\n// Math functions\\n\\nabs(n) { math(n, 'abs') }\\nmin(a, b) { a < b ? a : b }\\nmax(a, b) { a > b ? a : b }\\n\\n// Trigonometrics\\nPI = -math-prop('PI')\\n\\nradians-to-degrees(angle)\\n angle * (180 / PI)\\n\\ndegrees-to-radians(angle)\\n angle * (PI / 180)\\n\\nsin(n)\\n n = unit(n) == 'deg' ? degrees-to-radians(unit(n, '')) : unit(n, '')\\n round(math(n, 'sin'), 9)\\n\\ncos(n)\\n n = unit(n) == 'deg' ? degrees-to-radians(unit(n, '')) : unit(n, '')\\n round(math(n, 'cos'), 9)\\n\\n// Rounding Math functions\\n\\nceil(n, precision = 0)\\n multiplier = 10 ** precision\\n math(n * multiplier, 'ceil') / multiplier\\n\\nfloor(n, precision = 0)\\n multiplier = 10 ** precision\\n math(n * multiplier, 'floor') / multiplier\\n\\nround(n, precision = 0)\\n multiplier = 10 ** precision\\n math(n * multiplier, 'round') / multiplier\\n\\n// return the sum of the given numbers\\n\\nsum(nums)\\n sum = 0\\n sum += n for n in nums\\n\\n// return the average of the given numbers\\n\\navg(nums)\\n sum(nums) / length(nums)\\n\\n// return a unitless number, or pass through\\n\\nremove-unit(n)\\n if typeof(n) is \\\"unit\\\"\\n unit(n, \\\"\\\")\\n else\\n n\\n\\n// convert a percent to a decimal, or pass through\\n\\npercent-to-decimal(n)\\n if unit(n) is \\\"%\\\"\\n remove-unit(n) / 100\\n else\\n n\\n\\n// check if n is an odd number\\n\\nodd(n)\\n 1 == n % 2\\n\\n// check if n is an even number\\n\\neven(n)\\n 0 == n % 2\\n\\n// check if color is light\\n\\nlight(color)\\n lightness(color) >= 50%\\n\\n// check if color is dark\\n\\ndark(color)\\n lightness(color) < 50%\\n\\n// desaturate color by amount\\n\\ndesaturate(color, amount)\\n adjust(color, 'saturation', - amount)\\n\\n// saturate color by amount\\n\\nsaturate(color = '', amount = 100%)\\n if color is a 'color'\\n adjust(color, 'saturation', amount)\\n else\\n unquote( \\\"saturate(\\\" + color + \\\")\\\" )\\n\\n// darken by the given amount\\n\\ndarken(color, amount)\\n adjust(color, 'lightness', - amount)\\n\\n// lighten by the given amount\\n\\nlighten(color, amount)\\n adjust(color, 'lightness', amount)\\n\\n// decrease opacity by amount\\n\\nfade-out(color, amount)\\n color - rgba(black, percent-to-decimal(amount))\\n\\n// increase opacity by amount\\n\\nfade-in(color, amount)\\n color + rgba(black, percent-to-decimal(amount))\\n\\n// spin hue by a given amount\\n\\nspin(color, amount)\\n color + unit(amount, deg)\\n\\n// mix two colors by a given amount\\n\\nmix(color1, color2, weight = 50%)\\n unless weight in 0..100\\n error(\\\"Weight must be between 0% and 100%\\\")\\n\\n if length(color1) == 2\\n weight = color1[0]\\n color1 = color1[1]\\n\\n else if length(color2) == 2\\n weight = 100 - color2[0]\\n color2 = color2[1]\\n\\n require-color(color1)\\n require-color(color2)\\n\\n p = unit(weight / 100, '')\\n w = p * 2 - 1\\n\\n a = alpha(color1) - alpha(color2)\\n\\n w1 = (((w * a == -1) ? w : (w + a) / (1 + w * a)) + 1) / 2\\n w2 = 1 - w1\\n\\n channels = (red(color1) red(color2)) (green(color1) green(color2)) (blue(color1) blue(color2))\\n rgb = ()\\n\\n for pair in channels\\n push(rgb, floor(pair[0] * w1 + pair[1] * w2))\\n\\n a1 = alpha(color1) * p\\n a2 = alpha(color2) * (1 - p)\\n alpha = a1 + a2\\n\\n rgba(rgb[0], rgb[1], rgb[2], alpha)\\n\\n// invert colors, leave alpha intact\\n\\ninvert(color = '')\\n if color is a 'color'\\n rgba(#fff - color, alpha(color))\\n else\\n unquote( \\\"invert(\\\" + color + \\\")\\\" )\\n\\n// give complement of the given color\\n\\ncomplement( color )\\n spin( color, 180 )\\n\\n// give grayscale of the given color\\n\\ngrayscale( color = '' )\\n if color is a 'color'\\n desaturate( color, 100% )\\n else\\n unquote( \\\"grayscale(\\\" + color + \\\")\\\" )\\n\\n// mix the given color with white\\n\\ntint( color, percent )\\n mix( white, color, percent )\\n\\n// mix the given color with black\\n\\nshade( color, percent )\\n mix( black, color, percent )\\n\\n// return the last value in the given expr\\n\\nlast(expr)\\n expr[length(expr) - 1]\\n\\n// return keys in the given pairs or object\\n\\nkeys(pairs)\\n ret = ()\\n if type(pairs) == 'object'\\n for key in pairs\\n push(ret, key)\\n else\\n for pair in pairs\\n push(ret, pair[0]);\\n ret\\n\\n// return values in the given pairs or object\\n\\nvalues(pairs)\\n ret = ()\\n if type(pairs) == 'object'\\n for key, val in pairs\\n push(ret, val)\\n else\\n for pair in pairs\\n push(ret, pair[1]);\\n ret\\n\\n// join values with the given delimiter\\n\\njoin(delim, vals...)\\n buf = ''\\n vals = vals[0] if length(vals) == 1\\n for val, i in vals\\n buf += i ? delim + val : val\\n\\n// add a CSS rule to the containing block\\n\\n// - This definition allows add-property to be used as a mixin\\n// - It has the same effect as interpolation but allows users\\n// to opt for a functional style\\n\\nadd-property-function = add-property\\nadd-property(name, expr)\\n if mixin\\n {name} expr\\n else\\n add-property-function(name, expr)\\n\\nprefix-classes(prefix)\\n -prefix-classes(prefix, block)\\n\\n// Caching mixin, use inside your functions to enable caching by extending.\\n\\n$stylus_mixin_cache = {}\\ncache()\\n $key = (current-media() or 'no-media') + '__' + called-from[0] + '__' + arguments\\n if $key in $stylus_mixin_cache\\n @extend {\\\"$cache_placeholder_for_\\\" + $stylus_mixin_cache[$key]}\\n else if 'cache' in called-from\\n {block}\\n else\\n $id = length($stylus_mixin_cache)\\n\\n &,\\n /$cache_placeholder_for_{$id}\\n $stylus_mixin_cache[$key] = $id\\n {block}\\n\\n// Percentage function to convert a number, e.g. \\\".45\\\", into a percentage, e.g. \\\"45%\\\"\\n\\npercentage(num)\\n return unit(num * 100, '%')\\n\\n// Returns the position of a `value` within a `list`\\n\\nindex(list, value)\\n for val, i in list\\n return i if val == value\\n\",\"/*\\n * Vendor \\\"display: flex\\\" support with fallback to obsolete versions.\\n */\\n\\nflex-version ?= box flex\\n\\n//\\n// 1. Display values\\n// - http://www.w3.org/TR/css3-flexbox/#flex-containers\\n//\\ndisplay(type, args...)\\n if flex == type || inline-flex == type\\n if box in flex-version\\n if flex == type\\n display: -ms-flexbox args\\n display: vendor-value(box args, only: moz webkit)\\n else\\n display: -ms-inline-flexbox args\\n display: vendor-value(inline-box args, only: moz webkit)\\n if flex in flex-version\\n display: vendor-value(arguments, only: webkit official) // overwrites old webkit\\n else\\n display: arguments\\n\\n/*\\n * New syntax for browsers like Google Chrome.\\n * Plus a translation to the old syntax, if possible.\\n */\\n\\n\\n//\\n// 5. Ordering and Orientation\\n// - http://www.w3.org/TR/css3-flexbox/#ordering-and-orientation\\n//\\n-flex-obsolete-direction(direction)\\n if box in flex-version\\n if row-reverse == direction || column-reverse == direction\\n vendor('box-direction', reverse, ignore: ms official)\\n\\n if row == direction || row-reverse == direction\\n vendor('box-orient', horizontal, ignore: ms official)\\n else if column == direction || column-reverse == direction\\n vendor('box-orient', vertical, ignore: ms official)\\n\\n-flex-obsolete-wrap(value)\\n if box in flex-version\\n // WARN: wrap-reverse does not have a box equivalent. This will render in different manners\\n // on box vs. flex values.\\n if 'wrap' == value || wrap-reverse == value\\n vendor('box-lines', multiple, ignore: ms official)\\n else if nowrap == value\\n vendor('box-lines', single, ignore: ms official)\\n\\nflex-direction(direction)\\n // obsolete\\n -flex-obsolete-direction(direction)\\n\\n // new\\n if flex in flex-version\\n vendor('flex-direction', arguments, only: webkit ms official)\\n\\nflex-wrap(value)\\n // obsolete\\n -flex-obsolete-wrap(value)\\n\\n if flex in flex-version\\n vendor('flex-wrap', arguments, only: webkit ms official)\\n\\nflex-flow()\\n // obsolete\\n -flex-obsolete-direction(arguments[0])\\n -flex-obsolete-direction(arguments[1])\\n -flex-obsolete-wrap(arguments[0])\\n -flex-obsolete-wrap(arguments[1])\\n\\n // new\\n if flex in flex-version\\n vendor('flex-flow', arguments, only: webkit ms official)\\n\\n\\norder()\\n // obsolete\\n if box in flex-version\\n vendor('box-ordinal-group', arguments, ignore: ms official)\\n\\n // new\\n if flex in flex-version\\n vendor('flex-order', arguments, only: ms)\\n vendor('order', arguments, only: webkit official)\\n\\n\\n//\\n// 7. Flexibility\\n// - http://www.w3.org/TR/css3-flexbox/#flexibility\\n//\\nflex-grow(growth)\\n // obsolete\\n if box in flex-version\\n vendor('box-flex', growth)\\n\\n // new\\n if flex in flex-version\\n vendor('flex-grow', arguments, only: webkit official)\\n\\nflex-basis()\\n if flex in flex-version\\n vendor('flex-basis', arguments, only: webkit official)\\n\\nflex-shrink()\\n if flex in flex-version\\n vendor('flex-shrink', arguments, only: webkit official)\\n\\nflex(growth)\\n\\n // obsolete\\n if box in flex-version\\n shrink = 1\\n\\n if none == growth || initial == growth\\n // Well known values\\n shrink = 0 if none == growth\\n growth = 0\\n else if is-width(growth) == true\\n // Basis is defined as the first parameter\\n growth = arguments[1] || 0\\n shrink = arguments[2] if 3 <= length(arguments)\\n else if arguments[1] && is-width(arguments[1]) == false\\n // Growth is first and shrink is second\\n shrink = arguments[1]\\n\\n // Since we can't make the distinction between growing and shrinking in the box model, take\\n // the one that provides the most flexibility.\\n vendor('box-flex', max(growth, shrink), ignore: ms)\\n\\n // new\\n if flex in flex-version\\n vendor('flex', arguments, only: webkit ms official)\\n\\n\\n// converts the justification alignment\\n-convert-justify(align)\\n if flex-start == align\\n return start\\n else if flex-end == align\\n return end\\n else if space-around == align\\n return distribute\\n else if space-between == align\\n return justify\\n else\\n return align\\n\\n//\\n// 8. Alignment\\n// - http://www.w3.org/TR/css3-flexbox/#alignment\\n//\\njustify-content(align)\\n // obsolete\\n if box in flex-version\\n vendor('box-pack', -convert-justify(align), ignore: ms official)\\n\\n // new\\n if flex in flex-version\\n vendor('flex-pack', -convert-justify(align), only: ms)\\n vendor('justify-content', align, only: webkit official)\\n\\nalign-content(align)\\n // WARN: Obsolete spec does not allow for adjustment here\\n if flex in flex-version\\n vendor('flex-line-pack', -convert-justify(align), only: ms)\\n vendor('align-content', align, only: webkit official)\\n\\n// converts alignment from 'flex' to normal value\\n-convert-alignment(align)\\n if flex-start == align\\n return start\\n else if flex-end == align\\n return end\\n else\\n return align\\n\\nalign-items(align)\\n // obsolete\\n if box in flex-version\\n vendor('box-align', -convert-alignment(align), ignore: ms official)\\n\\n // new\\n if flex in flex-version\\n vendor('flex-align', -convert-alignment(align), only: ms)\\n vendor('align-items', arguments, only: webkit official)\\n\\nalign-self(align)\\n // WARN: Obsolete spec does not allow for overriding alignment on individual items.\\n if flex in flex-version\\n vendor('align-self', align, only: webkit official)\\n vendor('flex-item-align', -convert-alignment(align), only: ms)\\n\",\"/*\\n * Overflow utility. Maps to regular overflow, and adds an ellipsis value.\\n *\\n * Synopsis:\\n *\\n * overflow: \\n *\\n * Examples:\\n *\\n * overflow: auto\\n * overflow: hidden\\n * overflow: ellipsis\\n *\\n */\\n\\noverflow()\\n if arguments[0] == ellipsis\\n ellipsis()\\n else\\n overflow: arguments\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"container\": \"token-input-container\",\n\t\"container--focused\": \"token-input-container--focused\",\n\t\"container--errors\": \"token-input-container--errors\",\n\t\"token-list\": \"token-input-token-list\",\n\t\"token\": \"token-input-token\",\n\t\"token--error\": \"token-input-token--error\",\n\t\"token--read-only\": \"token-input-token--read-only\",\n\t\"token--active\": \"token-input-token--active\",\n\t\"autosized-wrapper\": \"token-input-autosized-wrapper\",\n\t\"token__label-wrapper\": \"token-input-token__label-wrapper\",\n\t\"token__delete-button\": \"token-input-token__delete-button\",\n\t\"token__delete-button__close-icon\": \"token-input-token__delete-button__close-icon\"\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMV0udXNlWzFdIS4uL25vZGVfbW9kdWxlcy9zdHlsdXMtbG9hZGVyL2Rpc3QvY2pzLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzFdLnVzZVsyXSEuLi9zcmMvc3R5bGVzLnN0eWwuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi9zcmMvc3R5bGVzLnN0eWw/ZDBiNiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi50b2tlbi1pbnB1dC1jb250YWluZXIge1xcbiAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgLW1vei1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gIGN1cnNvcjogdGV4dDtcXG4gIG92ZXJmbG93LXk6IGF1dG87XFxuICBoZWlnaHQ6IDIwMHB4O1xcbiAgcGFkZGluZzogNHB4O1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcXG4gIGJvcmRlcjogMXB4IHNvbGlkICNjY2M7XFxuICBib3JkZXItcmFkaXVzOiA0cHg7XFxuICBvdXRsaW5lOiAwO1xcbiAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4ycyBsaW5lYXIgMHM7XFxuICAtbW96LXRyYW5zaXRpb246IGFsbCAwLjJzIGxpbmVhciAwcztcXG4gIC1vLXRyYW5zaXRpb246IGFsbCAwLjJzIGxpbmVhciAwcztcXG4gIC1tcy10cmFuc2l0aW9uOiBhbGwgMC4ycyBsaW5lYXIgMHM7XFxuICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBsaW5lYXIgMHM7XFxufVxcbi50b2tlbi1pbnB1dC1jb250YWluZXIgKixcXG4udG9rZW4taW5wdXQtY29udGFpbmVyICo6OmJlZm9yZSxcXG4udG9rZW4taW5wdXQtY29udGFpbmVyICo6OmFmdGVyIHtcXG4gIC13ZWJraXQtYm94LXNpemluZzogaW5oZXJpdDtcXG4gIC1tb3otYm94LXNpemluZzogaW5oZXJpdDtcXG4gIGJveC1zaXppbmc6IGluaGVyaXQ7XFxufVxcbi50b2tlbi1pbnB1dC1jb250YWluZXIudG9rZW4taW5wdXQtY29udGFpbmVyLS1mb2N1c2VkIHtcXG4gIGJvcmRlci1jb2xvcjogIzAwOTZjYztcXG59XFxuLnRva2VuLWlucHV0LWNvbnRhaW5lci50b2tlbi1pbnB1dC1jb250YWluZXIudG9rZW4taW5wdXQtY29udGFpbmVyLS1lcnJvcnMge1xcbiAgYm9yZGVyLWNvbG9yOiAjZGIzZDQ0O1xcbn1cXG4udG9rZW4taW5wdXQtY29udGFpbmVyIC50b2tlbi1pbnB1dC10b2tlbi1saXN0IC50b2tlbi1pbnB1dC10b2tlbiB7XFxuICBmbG9hdDogbGVmdDtcXG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgZGlzcGxheTogLW1vei1ib3g7XFxuICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7XFxuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gIGRpc3BsYXk6IGJveDtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICAtd2Via2l0LWJveC1vcmllbnQ6IGhvcml6b250YWw7XFxuICAtbW96LWJveC1vcmllbnQ6IGhvcml6b250YWw7XFxuICAtby1ib3gtb3JpZW50OiBob3Jpem9udGFsO1xcbiAgLXdlYmtpdC1ib3gtbGluZXM6IHNpbmdsZTtcXG4gIC1tb3otYm94LWxpbmVzOiBzaW5nbGU7XFxuICAtby1ib3gtbGluZXM6IHNpbmdsZTtcXG4gIC13ZWJraXQtZmxleC1mbG93OiByb3cgbm93cmFwO1xcbiAgLW1zLWZsZXgtZmxvdzogcm93IG5vd3JhcDtcXG4gIGZsZXgtZmxvdzogcm93IG5vd3JhcDtcXG4gIC13ZWJraXQtYm94LXBhY2s6IGNlbnRlcjtcXG4gIC1tb3otYm94LXBhY2s6IGNlbnRlcjtcXG4gIC1vLWJveC1wYWNrOiBjZW50ZXI7XFxuICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7XFxuICAtd2Via2l0LWp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyO1xcbiAgLW1vei1ib3gtYWxpZ246IGNlbnRlcjtcXG4gIC1vLWJveC1hbGlnbjogY2VudGVyO1xcbiAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjtcXG4gIC13ZWJraXQtYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAtbXMtZmxleC1saW5lLXBhY2s6IGNlbnRlcjtcXG4gIC13ZWJraXQtYWxpZ24tY29udGVudDogY2VudGVyO1xcbiAgYWxpZ24tY29udGVudDogY2VudGVyO1xcbiAgbWF4LXdpZHRoOiAxMDAlO1xcbiAgaGVpZ2h0OiAzMnB4O1xcbiAgbGluZS1oZWlnaHQ6IDEuNTtcXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XFxuICBtYXJnaW46IDAgNHB4IDRweCAwO1xcbiAgcGFkZGluZzogMDtcXG4gIGJvcmRlcjogMDtcXG4gIGJvcmRlci1yYWRpdXM6IDRweDtcXG4gIGNvbG9yOiAjMDA5NmNjO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2NjZWFmNTtcXG59XFxuLnRva2VuLWlucHV0LWNvbnRhaW5lciAudG9rZW4taW5wdXQtdG9rZW4tbGlzdCAudG9rZW4taW5wdXQtdG9rZW4udG9rZW4taW5wdXQtdG9rZW4tLWVycm9yIHtcXG4gIGNvbG9yOiAjZGIzZDQ0O1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y5YjViNTtcXG59XFxuLnRva2VuLWlucHV0LWNvbnRhaW5lciAudG9rZW4taW5wdXQtdG9rZW4tbGlzdCAudG9rZW4taW5wdXQtdG9rZW46aG92ZXIge1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2U2ZjRmYztcXG59XFxuLnRva2VuLWlucHV0LWNvbnRhaW5lciAudG9rZW4taW5wdXQtdG9rZW4tbGlzdCAudG9rZW4taW5wdXQtdG9rZW46aG92ZXIudG9rZW4taW5wdXQtdG9rZW4tLWVycm9yIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmRhZGE7XFxufVxcbi50b2tlbi1pbnB1dC1jb250YWluZXIgLnRva2VuLWlucHV0LXRva2VuLWxpc3QgLnRva2VuLWlucHV0LXRva2VuOmhvdmVyLnRva2VuLWlucHV0LXRva2VuLS1yZWFkLW9ubHkge1xcbiAgY3Vyc29yOiBkZWZhdWx0O1xcbn1cXG4udG9rZW4taW5wdXQtY29udGFpbmVyIC50b2tlbi1pbnB1dC10b2tlbi1saXN0IC50b2tlbi1pbnB1dC10b2tlbi50b2tlbi1pbnB1dC10b2tlbi0tYWN0aXZlIC50b2tlbi1pbnB1dC1hdXRvc2l6ZWQtd3JhcHBlciB7XFxuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gIGRpc3BsYXk6IC1tb3otYm94O1xcbiAgZGlzcGxheTogLXdlYmtpdC1mbGV4O1xcbiAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICBkaXNwbGF5OiBib3g7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgLXdlYmtpdC1ib3gtcGFjazogY2VudGVyO1xcbiAgLW1vei1ib3gtcGFjazogY2VudGVyO1xcbiAgLW8tYm94LXBhY2s6IGNlbnRlcjtcXG4gIC1tcy1mbGV4LXBhY2s6IGNlbnRlcjtcXG4gIC13ZWJraXQtanVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7XFxuICAtbW96LWJveC1hbGlnbjogY2VudGVyO1xcbiAgLW8tYm94LWFsaWduOiBjZW50ZXI7XFxuICAtbXMtZmxleC1hbGlnbjogY2VudGVyO1xcbiAgLXdlYmtpdC1hbGlnbi1pdGVtczogY2VudGVyO1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIC1tcy1mbGV4LWxpbmUtcGFjazogY2VudGVyO1xcbiAgLXdlYmtpdC1hbGlnbi1jb250ZW50OiBjZW50ZXI7XFxuICBhbGlnbi1jb250ZW50OiBjZW50ZXI7XFxuICBtYXJnaW46IDRweCA4cHg7XFxuICBoZWlnaHQ6IDMycHg7XFxufVxcbi50b2tlbi1pbnB1dC1jb250YWluZXIgLnRva2VuLWlucHV0LXRva2VuLWxpc3QgLnRva2VuLWlucHV0LXRva2VuLnRva2VuLWlucHV0LXRva2VuLS1hY3RpdmUgLnRva2VuLWlucHV0LWF1dG9zaXplZC13cmFwcGVyIGlucHV0IHtcXG4gIGhlaWdodDogYXV0bztcXG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjYWFhO1xcbn1cXG4udG9rZW4taW5wdXQtY29udGFpbmVyIC50b2tlbi1pbnB1dC10b2tlbi1saXN0IC50b2tlbi1pbnB1dC10b2tlbiAudG9rZW4taW5wdXQtdG9rZW5fX2xhYmVsLXdyYXBwZXIge1xcbiAgLXdlYmtpdC1ib3gtZmxleDogMTtcXG4gIC1tb3otYm94LWZsZXg6IDE7XFxuICAtby1ib3gtZmxleDogMTtcXG4gIGJveC1mbGV4OiAxO1xcbiAgLXdlYmtpdC1mbGV4OiAxIDAgMDtcXG4gIC1tcy1mbGV4OiAxIDAgMDtcXG4gIGZsZXg6IDEgMCAwO1xcbiAgbWFyZ2luOiAwIDhweDtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICAtby10ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcXG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xcbn1cXG4udG9rZW4taW5wdXQtY29udGFpbmVyIC50b2tlbi1pbnB1dC10b2tlbi1saXN0IC50b2tlbi1pbnB1dC10b2tlbiAudG9rZW4taW5wdXQtdG9rZW5fX2RlbGV0ZS1idXR0b24ge1xcbiAgLXdlYmtpdC1ib3gtZmxleDogMTtcXG4gIC1tb3otYm94LWZsZXg6IDE7XFxuICAtby1ib3gtZmxleDogMTtcXG4gIGJveC1mbGV4OiAxO1xcbiAgLXdlYmtpdC1mbGV4OiAwIDAgMDtcXG4gIC1tcy1mbGV4OiAwIDAgMDtcXG4gIGZsZXg6IDAgMCAwO1xcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICBkaXNwbGF5OiAtbW96LWJveDtcXG4gIGRpc3BsYXk6IC13ZWJraXQtZmxleDtcXG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgZGlzcGxheTogYm94O1xcbiAgZGlzcGxheTogZmxleDtcXG4gIC13ZWJraXQtYm94LXBhY2s6IGNlbnRlcjtcXG4gIC1tb3otYm94LXBhY2s6IGNlbnRlcjtcXG4gIC1vLWJveC1wYWNrOiBjZW50ZXI7XFxuICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7XFxuICAtd2Via2l0LWp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyO1xcbiAgLW1vei1ib3gtYWxpZ246IGNlbnRlcjtcXG4gIC1vLWJveC1hbGlnbjogY2VudGVyO1xcbiAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjtcXG4gIC13ZWJraXQtYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAtbXMtZmxleC1saW5lLXBhY2s6IGNlbnRlcjtcXG4gIC13ZWJraXQtYWxpZ24tY29udGVudDogY2VudGVyO1xcbiAgYWxpZ24tY29udGVudDogY2VudGVyO1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgcGFkZGluZzogMnB4IDhweDtcXG4gIGN1cnNvcjogcG9pbnRlcjtcXG4gIG9wYWNpdHk6IDAuMztcXG4gIC1tcy1maWx0ZXI6IFxcXCJwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT0zMClcXFwiO1xcbiAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTMwKTtcXG4gIGJvcmRlci1sZWZ0OiAxcHggc29saWQgI2FhYTtcXG4gIGJvcmRlci1yYWRpdXM6IDAgNHB4IDRweCAwO1xcbn1cXG4udG9rZW4taW5wdXQtY29udGFpbmVyIC50b2tlbi1pbnB1dC10b2tlbi1saXN0IC50b2tlbi1pbnB1dC10b2tlbiAudG9rZW4taW5wdXQtdG9rZW5fX2RlbGV0ZS1idXR0b246aG92ZXIge1xcbiAgb3BhY2l0eTogMTtcXG4gIC1tcy1maWx0ZXI6IG5vbmU7XFxuICBmaWx0ZXI6IG5vbmU7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYWFhO1xcbn1cXG4udG9rZW4taW5wdXQtY29udGFpbmVyIC50b2tlbi1pbnB1dC10b2tlbi1saXN0IC50b2tlbi1pbnB1dC10b2tlbiAudG9rZW4taW5wdXQtdG9rZW5fX2RlbGV0ZS1idXR0b246aG92ZXIgLnRva2VuLWlucHV0LXRva2VuX19kZWxldGUtYnV0dG9uX19jbG9zZS1pY29uOmJlZm9yZSxcXG4udG9rZW4taW5wdXQtY29udGFpbmVyIC50b2tlbi1pbnB1dC10b2tlbi1saXN0IC50b2tlbi1pbnB1dC10b2tlbiAudG9rZW4taW5wdXQtdG9rZW5fX2RlbGV0ZS1idXR0b246aG92ZXIgLnRva2VuLWlucHV0LXRva2VuX19kZWxldGUtYnV0dG9uX19jbG9zZS1pY29uOmFmdGVyIHtcXG4gIGJvcmRlci1jb2xvcjogI2ZmZjtcXG59XFxuLnRva2VuLWlucHV0LWNvbnRhaW5lciAudG9rZW4taW5wdXQtdG9rZW4tbGlzdCAudG9rZW4taW5wdXQtdG9rZW4gLnRva2VuLWlucHV0LXRva2VuX19kZWxldGUtYnV0dG9uIC50b2tlbi1pbnB1dC10b2tlbl9fZGVsZXRlLWJ1dHRvbl9fY2xvc2UtaWNvbiB7XFxuICB3aWR0aDogMTRweDtcXG4gIGhlaWdodDogMTRweDtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG59XFxuLnRva2VuLWlucHV0LWNvbnRhaW5lciAudG9rZW4taW5wdXQtdG9rZW4tbGlzdCAudG9rZW4taW5wdXQtdG9rZW4gLnRva2VuLWlucHV0LXRva2VuX19kZWxldGUtYnV0dG9uIC50b2tlbi1pbnB1dC10b2tlbl9fZGVsZXRlLWJ1dHRvbl9fY2xvc2UtaWNvbjpiZWZvcmUsXFxuLnRva2VuLWlucHV0LWNvbnRhaW5lciAudG9rZW4taW5wdXQtdG9rZW4tbGlzdCAudG9rZW4taW5wdXQtdG9rZW4gLnRva2VuLWlucHV0LXRva2VuX19kZWxldGUtYnV0dG9uIC50b2tlbi1pbnB1dC10b2tlbl9fZGVsZXRlLWJ1dHRvbl9fY2xvc2UtaWNvbjphZnRlciB7XFxuICBjb250ZW50OiAnJztcXG4gIGhlaWdodDogMTRweDtcXG4gIGxlZnQ6IDZweDtcXG4gIGJvcmRlci1sZWZ0OiAycHggc29saWQgIzIyMjtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG59XFxuLnRva2VuLWlucHV0LWNvbnRhaW5lciAudG9rZW4taW5wdXQtdG9rZW4tbGlzdCAudG9rZW4taW5wdXQtdG9rZW4gLnRva2VuLWlucHV0LXRva2VuX19kZWxldGUtYnV0dG9uIC50b2tlbi1pbnB1dC10b2tlbl9fZGVsZXRlLWJ1dHRvbl9fY2xvc2UtaWNvbjpiZWZvcmUge1xcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpO1xcbiAgLW1vei10cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpO1xcbiAgLW8tdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKTtcXG4gIC1tcy10cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpO1xcbiAgdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKTtcXG59XFxuLnRva2VuLWlucHV0LWNvbnRhaW5lciAudG9rZW4taW5wdXQtdG9rZW4tbGlzdCAudG9rZW4taW5wdXQtdG9rZW4gLnRva2VuLWlucHV0LXRva2VuX19kZWxldGUtYnV0dG9uIC50b2tlbi1pbnB1dC10b2tlbl9fZGVsZXRlLWJ1dHRvbl9fY2xvc2UtaWNvbjphZnRlciB7XFxuICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTtcXG4gIC1tb3otdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpO1xcbiAgLW8tdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpO1xcbiAgLW1zLXRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTtcXG4gIHRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTtcXG59XFxuLnRva2VuLWlucHV0LWNvbnRhaW5lciAudG9rZW4taW5wdXQtYXV0b3NpemVkLXdyYXBwZXIge1xcbiAgZmxvYXQ6IGxlZnQ7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgbWFyZ2luLXJpZ2h0OiA0cHg7XFxufVxcbi50b2tlbi1pbnB1dC1jb250YWluZXIgLnRva2VuLWlucHV0LWF1dG9zaXplZC13cmFwcGVyIGlucHV0IHtcXG4gIGhlaWdodDogMzJweDtcXG4gIG1hcmdpbjogMDtcXG4gIHBhZGRpbmc6IDA7XFxuICBib3JkZXI6IDA7XFxuICBvdXRsaW5lOiAwO1xcbiAgY3Vyc29yOiB0ZXh0O1xcbiAgLXdlYmtpdC1ib3gtc2hhZG93OiBub25lO1xcbiAgYm94LXNoYWRvdzogbm9uZTtcXG4gIGJhY2tncm91bmQ6IG5vbmU7XFxuICBjb2xvcjogIzIyMjtcXG59XFxuXCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vLi4vc3JjL3N0eWxlcy5zdHlsXCIsXCJ3ZWJwYWNrOi8vLi8uLi9ub2RlX21vZHVsZXMvbmliL2xpYi9uaWIvdmVuZG9yLnN0eWxcIixcIndlYnBhY2s6Ly8uLy4uL25vZGVfbW9kdWxlcy9uaWIvbGliL25pYi9ib3JkZXIuc3R5bFwiLFwid2VicGFjazovLy4vLi4vbm9kZV9tb2R1bGVzL25pYi9saWIvbmliL2JvcmRlci1yYWRpdXMuc3R5bFwiLFwid2VicGFjazovLy4vLi4vbm9kZV9tb2R1bGVzL25pYi9saWIvbmliL3NpemUuc3R5bFwiLFwid2VicGFjazovLy4vLi4vbm9kZV9tb2R1bGVzL3N0eWx1cy9saWIvZnVuY3Rpb25zL2luZGV4LnN0eWxcIixcIndlYnBhY2s6Ly8uLy4uL25vZGVfbW9kdWxlcy9uaWIvbGliL25pYi9mbGV4LnN0eWxcIixcIndlYnBhY2s6Ly8uLy4uL25vZGVfbW9kdWxlcy9uaWIvbGliL25pYi9vdmVyZmxvdy5zdHlsXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUFBO0VDMkNrQiw4QkFBRztFQUFILDJCQUFHO0VBUk4sc0JBQUc7RUEyZGQsWUFBTztFRHBmUCxnQkFBWTtFQUNaLGFBQVE7RUFFUixZQUFTO0VBRVQsc0JBQWtCO0VFTmxCLHNCQUFRO0VDMkNWLGtCQUFjO0VIOUJaLFVBQVM7RUNtQkssc0NBQUc7RUFBSCxtQ0FBRztFQUFILGlDQUFHO0VBQUgsa0NBQUc7RUFSTiw4QkFBRztBRGhCbEI7QUFkSTs7O0VDd0NjLDJCQUFHO0VBQUgsd0JBQUc7RUFSTixtQkFBRztBRFhsQjtBQUFJO0VBQ0kscUJBQWM7QUFFdEI7QUFBSTtFQUNJLHFCQUFjO0FBRXRCO0FBSVE7RUFDSSxXQUFPO0VJUkssb0JDOE9RO0VEOU9SLGlCQzhPUTtFRDlPUixxQkM4T1E7RUMzUHhCLG9CQUFTO0VBQ1QsWUFBUztFQUtYLGFBQVM7RUx1QkcsOEJBQUc7RUFBSCwyQkFBRztFQUFILHlCQUFHO0VBQUgseUJBQUc7RUFBSCxzQkFBRztFQUFILG9CQUFHO0VBQUgsNkJBQUc7RUFBSCx5QkFBRztFQVJOLHFCQUFHO0VBUUEsd0JBQUc7RUFBSCxxQkFBRztFQUFILG1CQUFHO0VBQUgscUJBQUc7RUFBSCwrQkFBRztFQVJOLHVCQUFHO0VBUUEseUJBQUc7RUFBSCxzQkFBRztFQUFILG9CQUFHO0VBQUgsc0JBQUc7RUFBSCwyQkFBRztFQVJOLG1CQUFHO0VBUUEsMEJBQUc7RUFBSCw2QkFBRztFQVJOLHFCQUFHO0VEUU4sZUFBVztFQUlYLFlBQVE7RUFDUixnQkFBYTtFQUNiLG1CQUFhO0VBRWIsbUJBQVE7RUFDUixVQUFTO0VFM0NqQixTQUFRO0VDMkNWLGtCQUFjO0VIS0osY0FBTztFQUNQLHlCQUFrQjtBQWU5QjtBQWJZO0VBRUksY0FBTztFQUNQLHlCQUFrQjtBQWNsQztBQVhZO0VDNGJSLGVBQU87RUQxYksseUJBQWtCO0FBYWxDO0FBWGdCO0VBQ0kseUJBQWtCO0FBYXRDO0FBVmdCO0VDb2JaLGVBQU87QUR2YVg7QUFQZ0I7RUlyRFEsb0JDOE9RO0VEOU9SLGlCQzhPUTtFRDlPUixxQkM4T1E7RUMzUHhCLG9CQUFTO0VBQ1QsWUFBUztFQUtYLGFBQVM7RUx1Qkcsd0JBQUc7RUFBSCxxQkFBRztFQUFILG1CQUFHO0VBQUgscUJBQUc7RUFBSCwrQkFBRztFQVJOLHVCQUFHO0VBUUEseUJBQUc7RUFBSCxzQkFBRztFQUFILG9CQUFHO0VBQUgsc0JBQUc7RUFBSCwyQkFBRztFQVJOLG1CQUFHO0VBUUEsMEJBQUc7RUFBSCw2QkFBRztFQVJOLHFCQUFHO0VEbURFLGVBQVE7RUFDUixZQUFRO0FBeUI1QjtBQXZCb0I7RUFDSSxZQUFRO0VBQ1IsNkJBQWU7QUF5QnZDO0FBZFk7RUMzRE0sbUJBQUc7RUFBSCxnQkFBRztFQUFILGNBQUc7RUFSTixXQUFHO0VBUUEsbUJBQUc7RUFBSCxlQUFHO0VBUk4sV0FBRztFRHNFRixhQUFRO0VPdEZwQixnQkFBVTtFTndCSSwwQkFBRztFQVJOLHVCQUFHO0FEOEZsQjtBQW5CWTtFQ25FTSxtQkFBRztFQUFILGdCQUFHO0VBQUgsY0FBRztFQVJOLFdBQUc7RUFRQSxtQkFBRztFQUFILGVBQUc7RUFSTixXQUFHO0VHUk0sb0JDOE9RO0VEOU9SLGlCQzhPUTtFRDlPUixxQkM4T1E7RUMzUHhCLG9CQUFTO0VBQ1QsWUFBUztFQUtYLGFBQVM7RUx1Qkcsd0JBQUc7RUFBSCxxQkFBRztFQUFILG1CQUFHO0VBQUgscUJBQUc7RUFBSCwrQkFBRztFQVJOLHVCQUFHO0VBUUEseUJBQUc7RUFBSCxzQkFBRztFQUFILG9CQUFHO0VBQUgsc0JBQUc7RUFBSCwyQkFBRztFQVJOLG1CQUFHO0VBUUEsMEJBQUc7RUFBSCw2QkFBRztFQVJOLHFCQUFHO0VEa0ZGLFlBQVE7RUFDUixnQkFBUztFQ3dZckIsZUFBTztFQWxQVCxZQUFTO0VBV0gsaUVBQXlFO0VBQ3pFLHlCQUFpQztFRDNKekIsMkJBQWE7RUd6RTNCLDBCQUFjO0FIbUhoQjtBQXZDZ0I7RUM0SWQsVUFBUztFQVFILGdCQUFZO0VBQ1osWUFBUTtFRG5KSSxzQkFBa0I7QUEyQ3RDO0FBeEN3Qjs7RUFFSSxrQkFBYztBQTBDMUM7QUFyQ2dCO0VBQ0ksV0FBTztFQUNQLFlBQVE7RUFDUixrQkFBVTtBQXVDOUI7QUFyQ29COztFQUVJLFdBQVM7RUFDVCxZQUFRO0VBQ1IsU0FBTTtFQUNOLDJCQUFhO0VBQ2Isa0JBQVU7QUF1Q2xDO0FBckNvQjtFQzlHRixpQ0FBRztFQUFILDhCQUFHO0VBQUgsNEJBQUc7RUFBSCw2QkFBRztFQVJOLHlCQUFHO0FEa0tsQjtBQXpDb0I7RUNqSEYsZ0NBQUc7RUFBSCw2QkFBRztFQUFILDJCQUFHO0VBQUgsNEJBQUc7RUFSTix3QkFBRztBRHlLbEI7QUF4Q0k7RUFDSSxXQUFPO0VPbEpYLGdCQUFVO0VQb0pOLGlCQUFjO0FBMEN0QjtBQXhDUTtFQUNJLFlBQVE7RUFDUixTQUFRO0VBQ1IsVUFBUztFRW5LakIsU0FBUTtFRnlLQSxVQUFTO0VDNFVqQixZQUFPO0VBbmRPLHdCQUFHO0VBUk4sZ0JBQUc7RUErY2QsZ0JBQVc7RUQzVEgsV0FBTztBQXNDbkJcIixcInNvdXJjZXNDb250ZW50XCI6W1wiLmNvbnRhaW5lciB7XFxuICAgIC8vIGh0dHBzOi8vd3d3LnBhdWxpcmlzaC5jb20vMjAxMi9ib3gtc2l6aW5nLWJvcmRlci1ib3gtZnR3L1xcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgICAqLCBcXG4gICAgKjo6YmVmb3JlLCBcXG4gICAgKjo6YWZ0ZXIge1xcbiAgICAgICAgYm94LXNpemluZzogaW5oZXJpdDtcXG4gICAgfVxcbiAgICBcXG4gICAgY3Vyc29yOiB0ZXh0O1xcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xcbiAgICBoZWlnaHQ6IDIwMHB4O1xcblxcbiAgICBwYWRkaW5nOiA0cHg7XFxuXFxuICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XFxuXFxuICAgIGJvcmRlcjogMXB4IHNvbGlkICNjY2M7XFxuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcXG5cXG4gICAgLy8gcmVtb3ZlIGZvY3VzZSBib3JkZXIgc3R5bGUgb2YgbWFjIHN5c3l0ZW1cXG4gICAgLy8gb3V0bGluZTogbm9uZTsgXFxuICAgIG91dGxpbmU6IDA7XFxuXFxuICAgICYuY29udGFpbmVyLS1mb2N1c2VkIHtcXG4gICAgICAgIGJvcmRlci1jb2xvcjogIzAwOTZjYztcXG4gICAgfVxcbiAgICAmJi5jb250YWluZXItLWVycm9ycyB7XFxuICAgICAgICBib3JkZXItY29sb3I6ICNkYjNkNDQ7XFxuICAgIH1cXG5cXG4gICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgbGluZWFyIDBzO1xcblxcbiAgICAudG9rZW4tbGlzdCB7XFxuICAgICAgICAudG9rZW4ge1xcbiAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xcblxcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgICAgICAgICAgZmxleC1mbG93OiByb3cgbm93cmFwO1xcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAgICAgICAgICAgYWxpZ24tY29udGVudDogY2VudGVyO1xcblxcbiAgICAgICAgICAgIG1heC13aWR0aDogMTAwJTtcXG4gICAgICAgICAgICAvLyBUT0RPOiBTZXQgbWluaW11bT9cXG4gICAgICAgICAgICAvLyBtaW4td2lkdGg6IDEwMHB4O1xcblxcbiAgICAgICAgICAgIGhlaWdodDogMzJweDtcXG4gICAgICAgICAgICBsaW5lLWhlaWdodDogMS41O1xcbiAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XFxuICAgICAgICAgICAgXFxuICAgICAgICAgICAgbWFyZ2luOiAwIDRweCA0cHggMDtcXG4gICAgICAgICAgICBwYWRkaW5nOiAwOyBcXG5cXG4gICAgICAgICAgICBib3JkZXI6IDA7XFxuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xcblxcbiAgICAgICAgICAgIGNvbG9yOiAjMDA5NmNjO1xcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNjY2VhZjU7XFxuXFxuICAgICAgICAgICAgJi50b2tlbi0tZXJyb3Ige1xcbiAgICAgICAgICAgICAgICAvLyBjb2xvcjogI2Y3NTc1NztcXG4gICAgICAgICAgICAgICAgY29sb3I6ICNkYjNkNDQ7XFxuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmOWI1YjU7XFxuICAgICAgICAgICAgfVxcblxcbiAgICAgICAgICAgICY6aG92ZXIge1xcbiAgICAgICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XFxuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlNmY0ZmM7XFxuXFxuICAgICAgICAgICAgICAgICYudG9rZW4tLWVycm9yIHtcXG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmRhZGE7XFxuICAgICAgICAgICAgICAgIH1cXG5cXG4gICAgICAgICAgICAgICAgJi50b2tlbi0tcmVhZC1vbmx5IHtcXG4gICAgICAgICAgICAgICAgICAgIGN1cnNvcjogZGVmYXVsdDtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH1cXG5cXG4gICAgICAgICAgICAmLnRva2VuLS1hY3RpdmUge1xcbiAgICAgICAgICAgICAgICAuYXV0b3NpemVkLXdyYXBwZXIge1xcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcXG4gICAgICAgICAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgICAgICAgICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAgICAgICAgICAgICAgICAgIGFsaWduLWNvbnRlbnQ6IGNlbnRlcjtcXG5cXG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbjogNHB4IDhweDtcXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogMzJweDtcXG5cXG4gICAgICAgICAgICAgICAgICAgIGlucHV0IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGF1dG87XFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNhYWE7XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgXFxuICAgICAgICAgICAgLy8gJi50b2tlbi0tcmVhZC1vbmx5IHtcXG4gICAgICAgICAgICAvLyAgICAgLnRva2VuX19sYWJlbC13cmFwcGVyIHtcXG4gICAgICAgICAgICAvLyAgICAgICAgIG1heC13aWR0aDogMTAwJTtcXG4gICAgICAgICAgICAvLyAgICAgfVxcbiAgICAgICAgICAgIC8vIH1cXG4gICAgICAgICAgICBcXG4gICAgICAgICAgICAudG9rZW5fX2xhYmVsLXdyYXBwZXIge1xcbiAgICAgICAgICAgICAgICBmbGV4OiAxIDAgMDtcXG5cXG4gICAgICAgICAgICAgICAgbWFyZ2luOiAwIDhweDtcXG4gICAgICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gICAgICAgICAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIFxcbiAgICAgICAgICAgIC50b2tlbl9fZGVsZXRlLWJ1dHRvbiB7XFxuICAgICAgICAgICAgICAgIGZsZXg6IDAgMCAwO1xcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICAgICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gICAgICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAgICAgICAgICAgICAgYWxpZ24tY29udGVudDogY2VudGVyO1xcblxcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XFxuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDJweCA4cHg7XFxuXFxuICAgICAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcXG4gICAgICAgICAgICAgICAgLy8gZm9udC1zaXplOiAxNHB4O1xcbiAgICAgICAgICAgICAgICAvLyBjb2xvcjogIzIyMjtcXG4gICAgICAgICAgICAgICAgb3BhY2l0eTogMC4zO1xcblxcbiAgICAgICAgICAgICAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkICNhYWE7XFxuICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDAgNHB4IDRweCAwO1xcblxcbiAgICAgICAgICAgICAgICAmOmhvdmVyIHtcXG4gICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDE7XFxuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjYWFhO1xcblxcbiAgICAgICAgICAgICAgICAgICAgLnRva2VuX19kZWxldGUtYnV0dG9uX19jbG9zZS1pY29uIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAmOmJlZm9yZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAmOmFmdGVyIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiAjZmZmO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfVxcblxcbiAgICAgICAgICAgICAgICAudG9rZW5fX2RlbGV0ZS1idXR0b25fX2Nsb3NlLWljb24ge1xcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDE0cHg7XFxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDE0cHg7XFxuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuXFxuICAgICAgICAgICAgICAgICAgICAmOmJlZm9yZSxcXG4gICAgICAgICAgICAgICAgICAgICY6YWZ0ZXIge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICcnO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMTRweDtcXG4gICAgICAgICAgICAgICAgICAgICAgICBsZWZ0OiA2cHg7XFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAjMjIyO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICY6YmVmb3JlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpO1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgJjphZnRlciB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpO1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICB9XFxuXFxuICAgIC5hdXRvc2l6ZWQtd3JhcHBlciB7XFxuICAgICAgICBmbG9hdDogbGVmdDtcXG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XFxuICAgICAgICBtYXJnaW4tcmlnaHQ6IDRweDtcXG4gICAgICAgIFxcbiAgICAgICAgaW5wdXQge1xcbiAgICAgICAgICAgIGhlaWdodDogMzJweDtcXG4gICAgICAgICAgICBtYXJnaW46IDA7XFxuICAgICAgICAgICAgcGFkZGluZzogMDtcXG5cXG4gICAgICAgICAgICBib3JkZXI6IDA7XFxuXFxuICAgICAgICAgICAgLy8gcmVtb3ZlIGZvY3VzZSBib3JkZXIgc3R5bGUgb2YgbWFjIHN5c3l0ZW1cXG4gICAgICAgICAgICAvLyBvdXRsaW5lOiBub25lOyBcXG4gICAgICAgICAgICBvdXRsaW5lOiAwO1xcblxcbiAgICAgICAgICAgIGN1cnNvcjogdGV4dDtcXG4gICAgICAgICAgICBib3gtc2hhZG93OiBub25lO1xcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IG5vbmU7XFxuICAgICAgICAgICAgY29sb3I6ICMyMjI7XFxuICAgICAgICB9XFxuICAgIH1cXG59XFxuXCIsXCJ1c2UoJy4uL25vZGVzL3ZlbmRvci1oZWxwZXJzLmpzJylcXG5AaW1wb3J0ICdjb25maWcnXFxuXFxuLypcXG4gKiBBbGlhcyBcXFwibm93cmFwXFxcIiBhcyBcXFwibm8td3JhcFxcXCIuXFxuICovXFxuXFxubm8td3JhcCA9IHVucXVvdGUoJ25vd3JhcCcpXFxuXFxuLypcXG4gKiBIZWxwZXIgdG8gZmluZCBvdXQgaWYgYSBnaXZlbiB2YWx1ZSBpcyBhIHdpZHRoXFxuICovXFxuXFxuaXMtd2lkdGgodmFsKVxcbiAgaWYgYXV0byA9PSB2YWxcXG4gICAgcmV0dXJuIHRydWVcXG4gIGVsc2UgaWYgdmFsICYmICd1bml0JyA9PSB0eXBlKHZhbClcXG4gICAgLy8gU3R5bHVzIGRvZXMgbm90IHNob3J0IGNpcmN1aXQgc28gd2UgbmVlZCB0byBwZXJmb3JtIHRoaXMgYXMgYSBkaXN0aW5jdFxcbiAgICAvLyBvcGVyYXRpb24gdG8gcHJldmVudCBlcnJvcnNcXG4gICAgcmV0dXJuICcnICE9IHVuaXQodmFsKVxcbiAgcmV0dXJuIGZhbHNlXFxuXFxuLypcXG4gKiBWZW5kb3Igc3VwcG9ydCBmb3IgdGhlIGdpdmVuIHByb3AgLyBhcmd1bWVudHMsIG9wdGlvbmFsbHkgc3BlY2lmeWluZyB0aGVcXG4gKiBvbmx5IHByZWZpeGVzIHRvIHV0aWxpemUsIG9yIHRob3NlIHdoaWNoIHNob3VsZCBiZSBpZ25vcmVkLlxcbiAqL1xcblxcbnZlbmRvcihwcm9wLCBhcmdzLCBvbmx5ID0gbnVsbCwgaWdub3JlID0gbnVsbCwgdmVuZG9yLXByb3BlcnR5ID0gdHJ1ZSlcXG4gIG5lZWRfbm9ybWFsaXplID0gIXZlbmRvci1wcm9wZXJ0eSBvciBwcm9wIGluICgndHJhbnNpdGlvbicgJ3RyYW5zaXRpb24tcHJvcGVydHknICdib3JkZXItaW1hZ2UnICdib3JkZXItaW1hZ2Utc2xpY2UnKVxcbiAgZm9yIHByZWZpeCBpbiB2ZW5kb3ItcHJlZml4ZXNcXG4gICAgdW5sZXNzIChvbmx5IGFuZCAhKHByZWZpeCBpbiBvbmx5KSkgb3IgKGlnbm9yZSBhbmQgcHJlZml4IGluIGlnbm9yZSlcXG4gICAgICBpZiBvZmZpY2lhbCA9PSBwcmVmaXhcXG4gICAgICAgIGlmIG5lZWRfbm9ybWFsaXplXFxuICAgICAgICAgIHtwcm9wfTogbm9ybWFsaXplKHByb3AsKCclcycgJSBhcmdzKSlcXG4gICAgICAgIGVsc2VcXG4gICAgICAgICAge3Byb3B9OiBhcmdzXFxuICAgICAgZWxzZVxcbiAgICAgICAgbmV3cHJvcCA9IHByb3BcXG4gICAgICAgIG5ld3Byb3AgPSAnLScgKyBwcmVmaXggKyAnLScgKyBwcm9wIGlmIHZlbmRvci1wcm9wZXJ0eVxcblxcbiAgICAgICAgaWYgbmVlZF9ub3JtYWxpemVcXG4gICAgICAgICAge25ld3Byb3B9OiBub3JtYWxpemUocHJvcCwoJyVzJyAlIGFyZ3MpLHByZWZpeClcXG4gICAgICAgIGVsc2VcXG4gICAgICAgICAge25ld3Byb3B9OiBhcmdzXFxuLypcXG4gKiBWZW5kb3JpemUgdGhlIGdpdmVuIHZhbHVlLlxcbiAqL1xcblxcbnZlbmRvci12YWx1ZShhcmcsIG9ubHkgPSBudWxsLCBpZ25vcmUgPSBudWxsKVxcbiAgcHJvcCA9IGN1cnJlbnQtcHJvcGVydHlbMF1cXG4gIGZvciBwcmVmaXggaW4gdmVuZG9yLXByZWZpeGVzXFxuICAgIHVubGVzcyAob25seSBhbmQgIShwcmVmaXggaW4gb25seSkpIG9yIChpZ25vcmUgYW5kIHByZWZpeCBpbiBpZ25vcmUpIG9yIG9mZmljaWFsID09IHByZWZpeFxcbiAgICAgIGFkZC1wcm9wZXJ0eShwcm9wLCAnLSVzLSVzJyAlIChwcmVmaXggYXJnKSlcXG4gIGFyZ1xcblxcbi8qXFxuICogVmVuZG9yIFxcXCJib3gtc2hhZG93XFxcIiBzdXBwb3J0LlxcbiAqL1xcblxcbmJveC1zaGFkb3coKVxcbiAgdmVuZG9yKCdib3gtc2hhZG93JywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgb2ZmaWNpYWwpXFxuXFxuLypcXG4gKiBWZW5kb3IgXFxcInVzZXItc2VsZWN0XFxcIiBzdXBwb3J0LlxcbiAqL1xcblxcbnVzZXItc2VsZWN0KClcXG4gIHZlbmRvcigndXNlci1zZWxlY3QnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogbXMgb2ZmaWNpYWwpXFxuXFxuLypcXG4gKiBWZW5kb3IgXFxcImNvbHVtbi1jb3VudFxcXCIgc3VwcG9ydC5cXG4gKi9cXG5cXG5jb2x1bW4tY291bnQoKVxcbiAgdmVuZG9yKCdjb2x1bW4tY291bnQnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogb2ZmaWNpYWwpXFxuXFxuLypcXG4gKiBWZW5kb3IgXFxcImNvbHVtbi1nYXBcXFwiIHN1cHBvcnQuXFxuICovXFxuXFxuY29sdW1uLWdhcCgpXFxuICB2ZW5kb3IoJ2NvbHVtbi1nYXAnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogb2ZmaWNpYWwpXFxuXFxuLypcXG4gKiBWZW5kb3IgXFxcImNvbHVtbi1ydWxlXFxcIiBzdXBwb3J0LlxcbiAqL1xcblxcbmNvbHVtbi1ydWxlKClcXG4gIHZlbmRvcignY29sdW1uLXJ1bGUnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogb2ZmaWNpYWwpXFxuXFxuLypcXG4gKiBWZW5kb3IgXFxcImNvbHVtbi1ydWxlLWNvbG9yXFxcIiBzdXBwb3J0LlxcbiAqL1xcblxcbmNvbHVtbi1ydWxlLWNvbG9yKClcXG4gIHZlbmRvcignY29sdW1uLXJ1bGUtY29sb3InLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogb2ZmaWNpYWwpXFxuXFxuLypcXG4gKiBWZW5kb3IgXFxcImNvbHVtbi1ydWxlLXdpZHRoXFxcIiBzdXBwb3J0LlxcbiAqL1xcblxcbmNvbHVtbi1ydWxlLXdpZHRoKClcXG4gIHZlbmRvcignY29sdW1uLXJ1bGUtd2lkdGgnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogb2ZmaWNpYWwpXFxuXFxuLypcXG4gKiBWZW5kb3IgXFxcImNvbHVtbi1ydWxlLXN0eWxlXFxcIiBzdXBwb3J0LlxcbiAqL1xcblxcbmNvbHVtbi1ydWxlLXN0eWxlKClcXG4gIHZlbmRvcignY29sdW1uLXJ1bGUtc3R5bGUnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogb2ZmaWNpYWwpXFxuXFxuLypcXG4gKiBWZW5kb3IgXFxcImNvbHVtbi13aWR0aFxcXCIgc3VwcG9ydC5cXG4gKi9cXG5cXG5jb2x1bW4td2lkdGgoKVxcbiAgdmVuZG9yKCdjb2x1bW4td2lkdGgnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogb2ZmaWNpYWwpXFxuXFxuLypcXG4gKiBWZW5kb3IgXFxcImNvbHVtbi1zcGFuXFxcIiBzdXBwb3J0LlxcbiAqL1xcblxcbmNvbHVtbi1zcGFuKClcXG4gIHZlbmRvcignY29sdW1uLXNwYW4nLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBvZmZpY2lhbClcXG5cXG4vKlxcbiAqIFZlbmRvciBcXFwiY29sdW1uLWZpbGxcXFwiIHN1cHBvcnQuXFxuICovXFxuXFxuY29sdW1uLWZpbGwoKVxcbiAgdmVuZG9yKCdjb2x1bW4tZmlsbCcsIGFyZ3VtZW50cywgb25seTogbW96KVxcblxcbi8qXFxuICogTGVnYWN5IHN5bnRheCBzdXBwb3J0IGZvciBiYWNrZ3JvdW5kLWNsaXAgYW5kIGJhY2tncm91bmQtb3JpZ2luXFxuICovXFxuXFxubGVnYWN5LWJnLXZhbHVlcyhwcm9wZXJ0eSwgYXJncylcXG4gIGxlZ2FjeV9hcmdzID0gKClcXG4gIGltcG9ydGFuY2UgPSB1bnF1b3RlKCcnKVxcbiAgZm9yIHN1YmFyZ3MgaW4gYXJnc1xcbiAgICBmb3IgYXJnIGluIHN1YmFyZ3NcXG4gICAgICBpZiBhcmcgaW4gKGJvcmRlci1ib3ggcGFkZGluZy1ib3ggY29udGVudC1ib3gpXFxuICAgICAgICBhcmcgPSB1bnF1b3RlKCdib3JkZXInKSAgaWYgYXJnID09IGJvcmRlci1ib3hcXG4gICAgICAgIGFyZyA9IHVucXVvdGUoJ3BhZGRpbmcnKSBpZiBhcmcgPT0gcGFkZGluZy1ib3hcXG4gICAgICAgIGFyZyA9IHVucXVvdGUoJ2NvbnRlbnQnKSBpZiBhcmcgPT0gY29udGVudC1ib3hcXG4gICAgICBpZiBhcmcgIT0gJyFpbXBvcnRhbnQnXFxuICAgICAgICBwdXNoKGxlZ2FjeV9hcmdzLGFyZylcXG4gICAgICBlbHNlXFxuICAgICAgICBpbXBvcnRhbmNlID0gIWltcG9ydGFudFxcbiAgdmVuZG9yKHByb3BlcnR5LCB1bnF1b3RlKGpvaW4oJywgJyxsZWdhY3lfYXJncykpIGltcG9ydGFuY2UsIG9ubHk6IG1veiB3ZWJraXQpXFxuXFxuLypcXG4gKiBWZW5kb3IgXFxcImJhY2tncm91bmQtY2xpcFxcXCIgc3VwcG9ydC5cXG4gKi9cXG5cXG5iYWNrZ3JvdW5kLWNsaXAoKVxcbiAgaWYgYXJndW1lbnRzWzBdID09IHRleHRcXG4gICAgdmVuZG9yKCdiYWNrZ3JvdW5kLWNsaXAnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdClcXG4gIGVsc2VcXG4gICAgbGVnYWN5LWJnLXZhbHVlcygnYmFja2dyb3VuZC1jbGlwJywgYXJndW1lbnRzKVxcbiAgICBiYWNrZ3JvdW5kLWNsaXA6IGFyZ3VtZW50c1xcblxcbi8qXFxuICogVmVuZG9yIFxcXCJiYWNrZ3JvdW5kLW9yaWdpblxcXCIgc3VwcG9ydC5cXG4gKi9cXG5cXG5iYWNrZ3JvdW5kLW9yaWdpbigpXFxuICBsZWdhY3ktYmctdmFsdWVzKCdiYWNrZ3JvdW5kLW9yaWdpbicsIGFyZ3VtZW50cylcXG4gIGJhY2tncm91bmQtb3JpZ2luOiBhcmd1bWVudHNcXG5cXG4vKlxcbiAqIFZlbmRvciBcXFwiYmFja2dyb3VuZC1zaXplXFxcIiBzdXBwb3J0LlxcbiAqL1xcblxcbmJhY2tncm91bmQtc2l6ZSgpXFxuICB2ZW5kb3IoJ2JhY2tncm91bmQtc2l6ZScsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1veiBvZmZpY2lhbClcXG5cXG4vKlxcbiAqIFZlbmRvciBcXFwidHJhbnNmb3JtXFxcIiBzdXBwb3J0LlxcbiAqL1xcblxcbnRyYW5zZm9ybSgpXFxuICB2ZW5kb3IoJ3RyYW5zZm9ybScsIGFyZ3VtZW50cylcXG5cXG4vKlxcbiAqIFZlbmRvciBcXFwidHJhbnNmb3JtLW9yaWdpblxcXCIgc3VwcG9ydC5cXG4gKi9cXG50cmFuc2Zvcm0tb3JpZ2luKClcXG4gICAgdmVuZG9yKCd0cmFuc2Zvcm0tb3JpZ2luJywgYXJndW1lbnRzKVxcblxcbi8qXFxuICogVmVuZG9yIFxcXCJ0cmFuc2Zvcm0tc3R5bGVcXFwiIHN1cHBvcnQuXFxuICovXFxuXFxudHJhbnNmb3JtLXN0eWxlKClcXG4gIHZlbmRvcigndHJhbnNmb3JtLXN0eWxlJywgYXJndW1lbnRzKVxcblxcbi8qXFxuICogVmVuZG9yIFxcXCJib3JkZXItaW1hZ2VcXFwiIHN1cHBvcnQuXFxuICovXFxuXFxuYm9yZGVyLWltYWdlKClcXG4gIHZlbmRvcignYm9yZGVyLWltYWdlJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgbW96IG8gb2ZmaWNpYWwpXFxuXFxuLypcXG4gKiBWZW5kb3IgXFxcInRyYW5zaXRpb25cXFwiIHN1cHBvcnQuXFxuICovXFxuXFxudHJhbnNpdGlvbigpXFxuICB2ZW5kb3IoJ3RyYW5zaXRpb24nLCBhcmd1bWVudHMpXFxuXFxuLypcXG4gKiBWZW5kb3IgXFxcInRyYW5zaXRpb24tcHJvcGVydHlcXFwiIHN1cHBvcnQuXFxuICovXFxuXFxudHJhbnNpdGlvbi1wcm9wZXJ0eSgpXFxuICB2ZW5kb3IoJ3RyYW5zaXRpb24tcHJvcGVydHknLCBhcmd1bWVudHMpXFxuXFxuLypcXG4gKiBWZW5kb3IgXFxcInRyYW5zaXRpb24tZHVyYXRpb25cXFwiIHN1cHBvcnQuXFxuICovXFxuXFxudHJhbnNpdGlvbi1kdXJhdGlvbigpXFxuICB2ZW5kb3IoJ3RyYW5zaXRpb24tZHVyYXRpb24nLCBhcmd1bWVudHMpXFxuXFxuLypcXG4gKiBWZW5kb3IgXFxcInRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uXFxcIiBzdXBwb3J0LlxcbiAqL1xcblxcbnRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uKClcXG4gIHZlbmRvcigndHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24nLCBhcmd1bWVudHMpXFxuXFxuLypcXG4gKiBWZW5kb3IgXFxcInRyYW5zaXRpb24tZGVsYXlcXFwiIHN1cHBvcnQuXFxuICovXFxuXFxudHJhbnNpdGlvbi1kZWxheSgpXFxuICB2ZW5kb3IoJ3RyYW5zaXRpb24tZGVsYXknLCBhcmd1bWVudHMpXFxuXFxuLypcXG4gKiBWZW5kb3IgXFxcImJhY2tmYWNlLXZpc2liaWxpdHlcXFwiIHN1cHBvcnQuXFxuICovXFxuXFxuYmFja2ZhY2UtdmlzaWJpbGl0eSgpXFxuICB2ZW5kb3IoJ2JhY2tmYWNlLXZpc2liaWxpdHknLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogbXMgb2ZmaWNpYWwpXFxuXFxuLypcXG4gKiBWZW5kb3IgXFxcInBlcnNwZWN0aXZlXFxcIiBzdXBwb3J0LlxcbiAqL1xcblxcbnBlcnNwZWN0aXZlKClcXG4gIGlmIG1peGluXFxuICAgIHZlbmRvcigncGVyc3BlY3RpdmUnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogbXMgb2ZmaWNpYWwpXFxuICBlbHNlXFxuICAgICdwZXJzcGVjdGl2ZSglcyknICUgYXJndW1lbnRzXFxuXFxuLypcXG4gKiBWZW5kb3IgXFxcInBlcnNwZWN0aXZlLW9yaWdpblxcXCIgc3VwcG9ydC5cXG4gKi9cXG5cXG5wZXJzcGVjdGl2ZS1vcmlnaW4oKVxcbiAgdmVuZG9yKCdwZXJzcGVjdGl2ZS1vcmlnaW4nLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogbXMgb2ZmaWNpYWwpXFxuXFxuLypcXG4gKiBPcGFjaXR5IHdpdGggY29uZGl0aW9uYWwgSUUgc3VwcG9ydC5cXG4gKi9cXG5cXG5vcGFjaXR5KG4sIGFyZ3MuLi4pXFxuICBvcGFjaXR5OiBuIGFyZ3NcXG4gIGlmIHN1cHBvcnQtZm9yLWllXFxuICAgIGlmIG4gPT0gaW5oZXJpdCBvciBuID09IGluaXRpYWxcXG4gICAgICAtbXMtZmlsdGVyOiBuIGFyZ3NcXG4gICAgICBmaWx0ZXI6IG4gYXJnc1xcbiAgICBlbHNlXFxuICAgICAgdmFsID0gcm91bmQobiAqIDEwMClcXG4gICAgICBpZiB2YWwgPT0gMTAwXFxuICAgICAgICAtbXMtZmlsdGVyOiBub25lIGFyZ3NcXG4gICAgICAgIGZpbHRlcjogbm9uZSBhcmdzXFxuICAgICAgZWxzZVxcbiAgICAgICAgLW1zLWZpbHRlcjogJ1xcXCJwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT0lcylcXFwiJyAlIHZhbCBhcmdzXFxuICAgICAgICBmaWx0ZXI6ICdhbHBoYShvcGFjaXR5PSVzKScgJSB2YWwgYXJnc1xcblxcbi8qXFxuICogVmVuZG9yIFxcXCJ0ZXh0LXNpemUtYWRqdXN0XFxcIlxcbiAqL1xcblxcbnRleHQtc2l6ZS1hZGp1c3QoKVxcbiAgdmVuZG9yKCd0ZXh0LXNpemUtYWRqdXN0JywgYXJndW1lbnRzKVxcblxcbi8qXFxuICogQWxpYXMgdGhlIFxcXCJ3aGl0ZS1zcGFjZVxcXCIgcHJvcGVydHkuXFxuICovXFxuXFxud2hpdGVzcGFjZSgpXFxuICB3aGl0ZS1zcGFjZTogYXJndW1lbnRzXFxuXFxuLypcXG4gKiBWZW5kb3IgXFxcImJveC1zaXppbmdcXFwiIHN1cHBvcnQuXFxuICovXFxuXFxuYm94LXNpemluZygpXFxuICB2ZW5kb3IoJ2JveC1zaXppbmcnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogb2ZmaWNpYWwpXFxuXFxuLypcXG4gKiBWZW5kb3IgXFxcImJveC1vcmllbnRcXFwiIHN1cHBvcnQuXFxuICovXFxuXFxuYm94LW9yaWVudCgpXFxuICB2ZW5kb3IoJ2JveC1vcmllbnQnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogb2ZmaWNpYWwpXFxuXFxuLypcXG4gKiBWZW5kb3IgXFxcImJveC1mbGV4LWdyb3VwXFxcIiBzdXBwb3J0LlxcbiAqL1xcblxcbmJveC1mbGV4LWdyb3VwKClcXG4gIHZlbmRvcignYm94LWZsZXgtZ3JvdXAnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogb2ZmaWNpYWwpXFxuXFxuLypcXG4gKiBWZW5kb3IgXFxcImJveC1vcmRpbmFsLWdyb3VwXFxcIiBzdXBwb3J0LlxcbiAqL1xcblxcbmJveC1vcmRpbmFsLWdyb3VwKClcXG4gIHZlbmRvcignYm94LW9yZGluYWwtZ3JvdXAnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogbXMgb2ZmaWNpYWwpXFxuXFxuXFxuLypcXG4gKiBWZW5kb3IgXFxcImJveC1hbGlnblxcXCIgc3VwcG9ydC5cXG4gKi9cXG5cXG5ib3gtYWxpZ24oKVxcbiAgdmVuZG9yKCdib3gtYWxpZ24nLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogbXMgb2ZmaWNpYWwpXFxuXFxuLypcXG4gKiBWZW5kb3IgXFxcImJveC1wYWNrXFxcIiBzdXBwb3J0LlxcbiAqL1xcblxcbmJveC1wYWNrKClcXG4gIHZlbmRvcignYm94LXBhY2snLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogbXMgb2ZmaWNpYWwpXFxuXFxuLypcXG4gKiBWZW5kb3IgXFxcImJveC1kaXJlY3Rpb25cXFwiIHN1cHBvcnQuXFxuICovXFxuXFxuYm94LWRpcmVjdGlvbigpXFxuICB2ZW5kb3IoJ2JveC1kaXJlY3Rpb24nLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogbXMgb2ZmaWNpYWwpXFxuXFxuLypcXG4gKiBWZW5kb3IgXFxcImFuaW1hdGlvblxcXCIgc3VwcG9ydC5cXG4gKi9cXG5cXG5hbmltYXRpb24oKVxcbiAgdmVuZG9yKCdhbmltYXRpb24nLCBhcmd1bWVudHMpXFxuXFxuXFxuLypcXG4gKiBWZW5kb3IgXFxcImFuaW1hdGlvbi1uYW1lXFxcIiBzdXBwb3J0LlxcbiAqL1xcblxcbmFuaW1hdGlvbi1uYW1lKClcXG4gIHZlbmRvcignYW5pbWF0aW9uLW5hbWUnLCBhcmd1bWVudHMpXFxuXFxuLypcXG4gKiBWZW5kb3IgXFxcImFuaW1hdGlvbi1kdXJhdGlvblxcXCIgc3VwcG9ydC5cXG4gKi9cXG5cXG5hbmltYXRpb24tZHVyYXRpb24oKVxcbiAgdmVuZG9yKCdhbmltYXRpb24tZHVyYXRpb24nLCBhcmd1bWVudHMpXFxuXFxuLypcXG4gKiBWZW5kb3IgXFxcImFuaW1hdGlvbi1kZWxheVxcXCIgc3VwcG9ydC5cXG4gKi9cXG5cXG5hbmltYXRpb24tZGVsYXkoKVxcbiAgdmVuZG9yKCdhbmltYXRpb24tZGVsYXknLCBhcmd1bWVudHMpXFxuXFxuLypcXG4gKiBWZW5kb3IgXFxcImFuaW1hdGlvbi1kaXJlY3Rpb25cXFwiIHN1cHBvcnQuXFxuICovXFxuXFxuYW5pbWF0aW9uLWRpcmVjdGlvbigpXFxuICB2ZW5kb3IoJ2FuaW1hdGlvbi1kaXJlY3Rpb24nLCBhcmd1bWVudHMpXFxuXFxuLypcXG4gKiBWZW5kb3IgXFxcImFuaW1hdGlvbi1pdGVyYXRpb24tY291bnRcXFwiIHN1cHBvcnQuXFxuICovXFxuXFxuYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCgpXFxuICB2ZW5kb3IoJ2FuaW1hdGlvbi1pdGVyYXRpb24tY291bnQnLCBhcmd1bWVudHMpXFxuXFxuLypcXG4gKiBWZW5kb3IgXFxcImFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb25cXFwiIHN1cHBvcnQuXFxuICovXFxuXFxuYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbigpXFxuICB2ZW5kb3IoJ2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb24nLCBhcmd1bWVudHMpXFxuXFxuLypcXG4gKiBWZW5kb3IgXFxcImFuaW1hdGlvbi1wbGF5LXN0YXRlXFxcIiBzdXBwb3J0LlxcbiAqL1xcblxcbmFuaW1hdGlvbi1wbGF5LXN0YXRlKClcXG4gIHZlbmRvcignYW5pbWF0aW9uLXBsYXktc3RhdGUnLCBhcmd1bWVudHMpXFxuXFxuLypcXG4gKiBWZW5kb3IgXFxcImFuaW1hdGlvbi1maWxsLW1vZGVcXFwiIHN1cHBvcnQuXFxuICovXFxuXFxuYW5pbWF0aW9uLWZpbGwtbW9kZSgpXFxuICB2ZW5kb3IoJ2FuaW1hdGlvbi1maWxsLW1vZGUnLCBhcmd1bWVudHMpXFxuXFxuLypcXG4gKiBWZW5kb3IgXFxcImh5cGhlbnNcXFwiIHN1cHBvcnQuXFxuICovXFxuXFxuaHlwaGVucygpXFxuICB2ZW5kb3IoJ2h5cGhlbnMnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogbXMgb2ZmaWNpYWwpXFxuXFxuLypcXG4gKiBWZW5kb3IgXFxcImFwcGVhcmFuY2VcXFwiIHN1cHBvcnQuXFxuICovXFxuXFxuYXBwZWFyYW5jZSgpXFxuICB2ZW5kb3IoJ2FwcGVhcmFuY2UnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogb2ZmaWNpYWwpXFxuXFxuLypcXG4gKiBWZW5kb3IgXFxcInRhYi1zaXplXFxcIiBzdXBwb3J0LlxcbiAqL1xcblxcbnRhYi1zaXplKClcXG4gIHZlbmRvcigndGFiLXNpemUnLCBhcmd1bWVudHMsIG9ubHk6IG1veiBvIG9mZmljaWFsKVxcblxcbi8qXFxuICogVmVuZG9yIFxcXCJvdmVyZmxvdy1zY3JvbGxpbmdcXFwiIHN1cHBvcnQuXFxuICovXFxuXFxub3ZlcmZsb3ctc2Nyb2xsaW5nKClcXG4gIHZlbmRvcignb3ZlcmZsb3ctc2Nyb2xsaW5nJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgb2ZmaWNpYWwpXFxuXFxuLypcXG4gKiBWZW5kb3IgXFxcInRleHQtb3ZlcmZsb3dcXFwiIHN1cHBvcnQsICwgLW8tIGZvciBvcGVyYSA5LiogLSAxMC4qXFxuICovXFxuXFxudGV4dC1vdmVyZmxvdygpXFxuICB2ZW5kb3IoJ3RleHQtb3ZlcmZsb3cnLCBhcmd1bWVudHMsIG9ubHk6IG9mZmljaWFsIG8pXFxuXFxuLypcXG4gKiBWZW5kb3IgXFxcInRleHQtc2l6ZS1hZGp1c3RcXFwiIHN1cHBvcnQuXFxuICovXFxudGV4dC1zaXplLWFkanVzdCgpXFxuICB2ZW5kb3IoJ3RleHQtc2l6ZS1hZGp1c3QnLCBhcmd1bWVudHMsIG9ubHk6IG9mZmljaWFsIHdlYmtpdCBtcylcXG5cXG4vKlxcbiAqIFZlbmRvciBcXFwiZm9udC1zbW9vdGhpbmdcXFwiIHN1cHBvcnQsIHdlYmtpdCBvbmx5LlxcbiAqL1xcbmZvbnQtc21vb3RoaW5nKClcXG4gIHZlbmRvcignZm9udC1zbW9vdGhpbmcnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdClcXG5cXG5cXG4vKipcXG4gKiBWZW5kb3IgaW5wdXQtcGxhY2Vob2xkZXIvcGxhY2Vob2xkZXIgc3VwcG9ydC5cXG4gKlxcbiAqIEV4YW1wbGVzOlxcbiAqICAgIC8vIERlZmF1bHQgc3ludGF4XFxuICogICAgYm9keVxcbiAqICAgICAgcGxhY2Vob2xkZXIoY29sb3IgIzMzMywgZm9udC13ZWlnaHQgbm9ybWFsKVxcbiAqXFxuICogICAgLy8gVGhlIGNvbW1hIGlzIGltcG9ydGFudFxcbiAqICAgIC5wbGFjZWhvbGRlci1yZWRcXG4gKiAgICAgIHBsYWNlaG9sZGVyKGNvbG9yIHJlZCwpXFxuICpcXG4gKiAgICAvLyBXZSBjYW4gcGFzcyBhIGZ1bmN0aW9uXFxuICogICAgZ3JlZW4tcGxhY2Vob2xkZXIoKVxcbiAqICAgICAgY29sb3IgZ3JlZW5cXG4gKiAgICAucGxhY2Vob2xkZXItZ3JlZW5cXG4gKiAgICAgIHBsYWNlaG9sZGVyKGdyZWVuLXBsYWNlaG9sZGVyKVxcbiAqXFxuICogICAgLy8gV2UgY2FuIHBhc3MgYSBoYXNoXFxuICogICAgdGV4dGFyZWFcXG4gKiAgICAgIHBsYWNlaG9sZGVyKChmb250LXN0eWxlIGl0YWxpYykgKGZvbnQtd2VpZ2h0IGJvbGQpIChwYWRkaW5nICc0cHggMTBweCcpKVxcbiAqL1xcbnBsYWNlaG9sZGVyKClcXG4gIGZvciB2IGluICc6LXdlYmtpdC1pbnB1dCcgJy1tb3onICc6LW1veicgJy1tcy1pbnB1dCdcXG4gICAgJjp7dn0tcGxhY2Vob2xkZXJcXG4gICAgICBmb3IgcGFpciBpbiBhcmd1bWVudHNcXG4gICAgICAgIGlmIHR5cGVvZihwYWlyKSA9PSAnZnVuY3Rpb24nXFxuICAgICAgICAgIHBhaXIoKVxcbiAgICAgICAgZWxzZSBpZiBwYWlyIGlzIG5vdCBudWxsICYmIHBhaXJbMF0gaXMgbm90IG51bGxcXG4gICAgICAgICAge3BhaXJbMF19OiB0eXBlKHBhaXJbMV0pID09ICdzdHJpbmcnID8gcyhwYWlyWzFdKSA6IHBhaXJbMV1cXG5pbnB1dC1wbGFjZWhvbGRlciA9IHBsYWNlaG9sZGVyXFxuXFxuLypcXG4gKiBWZW5kb3IgYmFja2dyb3VuZCBzdXBwb3J0IChncmFkaWVudHMpLlxcbiAqL1xcblxcbmJhY2tncm91bmQoKVxcbiAgaWYgbWF0Y2goJy1ncmFkaWVudFxcXFwoJywgJycrYXJndW1lbnRzKVxcbiAgICB2ZW5kb3IoJ2JhY2tncm91bmQnLCBhcmd1bWVudHMsIHZlbmRvci1wcm9wZXJ0eTogZmFsc2UpXFxuICBlbHNlXFxuICAgIGJhY2tncm91bmQgYXJndW1lbnRzXFxuXFxuYmFja2dyb3VuZC1pbWFnZSgpXFxuICBpZiBtYXRjaCgnLWdyYWRpZW50XFxcXCgnLCAnJythcmd1bWVudHMpXFxuICAgIHZlbmRvcignYmFja2dyb3VuZC1pbWFnZScsIGFyZ3VtZW50cywgdmVuZG9yLXByb3BlcnR5OiBmYWxzZSlcXG4gIGVsc2VcXG4gICAgYmFja2dyb3VuZC1pbWFnZSBhcmd1bWVudHNcXG5cXG5jdXJzb3IoKVxcbiAgaWYgbWF0Y2goJy1ncmFkaWVudFxcXFwoJywgJycrYXJndW1lbnRzKVxcbiAgICB2ZW5kb3IoJ2N1cnNvcicsIGFyZ3VtZW50cywgdmVuZG9yLXByb3BlcnR5OiBmYWxzZSlcXG4gIGVsc2VcXG4gICAgY3Vyc29yIGFyZ3VtZW50c1xcblxcbmxpc3Qtc3R5bGUoKVxcbiAgaWYgbWF0Y2goJy1ncmFkaWVudFxcXFwoJywgJycrYXJndW1lbnRzKVxcbiAgICB2ZW5kb3IoJ2xpc3Qtc3R5bGUnLCBhcmd1bWVudHMsIHZlbmRvci1wcm9wZXJ0eTogZmFsc2UpXFxuICBlbHNlXFxuICAgIGxpc3Qtc3R5bGUgYXJndW1lbnRzXFxuXFxubGlzdC1zdHlsZS1pbWFnZSgpXFxuICBpZiBtYXRjaCgnLWdyYWRpZW50XFxcXCgnLCAnJythcmd1bWVudHMpXFxuICAgIHZlbmRvcignbGlzdC1zdHlsZS1pbWFnZScsIGFyZ3VtZW50cywgdmVuZG9yLXByb3BlcnR5OiBmYWxzZSlcXG4gIGVsc2VcXG4gICAgbGlzdC1zdHlsZS1pbWFnZSBhcmd1bWVudHNcXG5cIixcIi8qXFxuICogYm9yZGVyOiA8Y29sb3I+XFxuICogYm9yZGVyOiAuLi5cXG4gKi9cXG5cXG5ib3JkZXIoY29sb3IsIGFyZ3MuLi4pXFxuICBpZiBjb2xvciBpcyBhICdjb2xvcidcXG4gICAgYm9yZGVyOiAxcHggc29saWQgY29sb3IgYXJnc1xcbiAgZWxzZVxcbiAgICBib3JkZXI6IGFyZ3VtZW50c1xcblwiLFwiLypcXG4gKiBIZWxwZXIgZm9yIGJvcmRlci1yYWRpdXMoKS5cXG4gKi9cXG5cXG4tYXBwbHktYm9yZGVyLXJhZGl1cyhwb3MsIGltcG9ydGFuY2UpXFxuICBpZiBsZW5ndGgocG9zKSA9PSAzXFxuICAgIC8vIGJvcmRlci1yYWRpdXM6IDx0b3AgfCBib3R0b20+IDxsZWZ0IHwgcmlnaHQ+IDxuPlxcbiAgICB5ID0gcG9zWzBdXFxuICAgIHggPSBwb3NbMV1cXG4gICAgLy8gV2UgZG9uJ3QgdXNlIHZlbmRvciBmb3IgYm9kZXItcmFkaXVzIGFueW1vcmVcXG4gICAgLy8gdmVuZG9yKCdib3JkZXItcmFkaXVzLSVzJXMnICUgcG9zLCBwb3NbMl0sIG9ubHk6IHdlYmtpdCBvZmZpY2lhbClcXG4gICAgeydib3JkZXItJXMtJXMtcmFkaXVzJyAlIHBvc306IHBvc1syXSBpbXBvcnRhbmNlXFxuICBlbHNlIGlmIHBvc1swXSBpbiAodG9wIGJvdHRvbSlcXG4gICAgLy8gYm9yZGVyLXJhZGl1czogPHRvcCB8IGJvdHRvbT4gPG4+XFxuICAgIC1hcHBseS1ib3JkZXItcmFkaXVzKHBvc1swXSBsZWZ0IHBvc1sxXSwgaW1wb3J0YW5jZSlcXG4gICAgLWFwcGx5LWJvcmRlci1yYWRpdXMocG9zWzBdIHJpZ2h0IHBvc1sxXSwgaW1wb3J0YW5jZSlcXG4gIGVsc2UgaWYgcG9zWzBdIGluIChsZWZ0IHJpZ2h0KVxcbiAgICAvLyBib3JkZXItcmFkaXVzOiA8bGVmdCB8IHJpZ2h0PiA8bj5cXG4gICAgdW5zaGlmdChwb3MsIHRvcCk7XFxuICAgIC1hcHBseS1ib3JkZXItcmFkaXVzKHBvcywgaW1wb3J0YW5jZSlcXG4gICAgcG9zWzBdID0gYm90dG9tXFxuICAgIC1hcHBseS1ib3JkZXItcmFkaXVzKHBvcywgaW1wb3J0YW5jZSlcXG5cXG4vKlxcbiAqIGJvcmRlci1yYWRpdXMgc3VwcG9ydGluZyBhdWdtZW50ZWQgYmVoYXZpb3IuXFxuICpcXG4gKiBFeGFtcGxlczpcXG4gKlxcbiAqICAgIGJvcmRlci1yYWRpdXM6IDJweCA1cHhcXG4gKiAgICBib3JkZXItcmFkaXVzOiB0b3AgNXB4IGJvdHRvbSAxMHB4XFxuICogICAgYm9yZGVyLXJhZGl1czogbGVmdCA1cHhcXG4gKiAgICBib3JkZXItcmFkaXVzOiB0b3AgbGVmdCA1cHhcXG4gKiAgICBib3JkZXItcmFkaXVzOiB0b3AgbGVmdCAxMHB4IGJvdHRvbSByaWdodCA1cHhcXG4gKiAgICBib3JkZXItcmFkaXVzOiB0b3AgbGVmdCAxMHB4LCBib3R0b20gcmlnaHQgNXB4XFxuICpcXG4gKi9cXG5cXG5ib3JkZXItcmFkaXVzKClcXG4gIHBvcyA9ICgpXFxuICBhdWdtZW50ZWQgPSBmYWxzZVxcbiAgaW1wb3J0YW5jZSA9IGFyZ3VtZW50c1tsZW5ndGgoYXJndW1lbnRzKSAtIDFdID09ICFpbXBvcnRhbnQgPyAhaW1wb3J0YW50IDogdW5xdW90ZSgnJylcXG5cXG4gIGZvciBhcmdzIGluIGFyZ3VtZW50c1xcbiAgICBmb3IgYXJnIGluIGFyZ3NcXG4gICAgICBpZiBhcmcgaXMgYSAnaWRlbnQnXFxuICAgICAgICBhcHBlbmQocG9zLCBhcmcpXFxuICAgICAgICBhdWdtZW50ZWQgPSB0cnVlXFxuICAgICAgZWxzZVxcbiAgICAgICAgYXBwZW5kKHBvcywgYXJnKVxcbiAgICAgICAgaWYgYXVnbWVudGVkXFxuICAgICAgICAgIC1hcHBseS1ib3JkZXItcmFkaXVzKHBvcywgaW1wb3J0YW5jZSlcXG4gICAgICAgICAgcG9zID0gKClcXG4gIGJvcmRlci1yYWRpdXMgcG9zIHVubGVzcyBhdWdtZW50ZWRcXG5cIixcIi8qXFxuICogU2l6ZSB1dGlsaXR5LlxcbiAqXFxuICogU3lub3BzaXM6XFxuICpcXG4gKiAgIHNpemU6IDx3aWR0aD4gPGhlaWdodD4gfCA8d2lkdGggJiBoZWlnaHQ+XFxuICpcXG4gKiBFeGFtcGxlczpcXG4gKlxcbiAqICAgICBzaXplOiAxMDAlIDMwcHhcXG4gKiAgICAgICB5aWVsZHM6XFxuICogICAgICAgICB3aWR0aDogMTAwJVxcbiAqICAgICAgICAgaGVpZ2h0OiAzMHB4XFxuICpcXG4gKiAgICAgc2l6ZTogNXB4XFxuICogICAgICAgeWllbGRzOlxcbiAqICAgICAgICAgd2lkdGg6IDVweFxcbiAqICAgICAgICAgaGVpZ2h0OiA1cHhcXG4gKlxcbiAqL1xcblxcbnNpemUoKVxcbiAgaWYgbGVuZ3RoKGFyZ3VtZW50cykgPT0gMVxcbiAgICB3aWR0aDogYXJndW1lbnRzWzBdXFxuICAgIGhlaWdodDogYXJndW1lbnRzWzBdXFxuICBlbHNlXFxuICAgIHdpZHRoOiBhcmd1bWVudHNbMF1cXG4gICAgaGVpZ2h0OiBhcmd1bWVudHNbMV1cXG5cIixcImNhbGxlZC1mcm9tID0gKClcXG5cXG52ZW5kb3JzID0gbW96IHdlYmtpdCBvIG1zIG9mZmljaWFsXFxuXFxuLy8gc3RyaW5naWZ5IHRoZSBnaXZlbiBhcmdcXG5cXG4tc3RyaW5nKGFyZylcXG4gIHR5cGUoYXJnKSArICcgJyArIGFyZ1xcblxcbi8vIHJlcXVpcmUgYSBjb2xvclxcblxcbnJlcXVpcmUtY29sb3IoY29sb3IpXFxuICB1bmxlc3MgY29sb3IgaXMgYSAnY29sb3InXFxuICAgIGVycm9yKCdSR0Igb3IgSFNMIHZhbHVlIGV4cGVjdGVkLCBnb3QgYSAnICsgLXN0cmluZyhjb2xvcikpXFxuXFxuLy8gcmVxdWlyZSBhIHVuaXRcXG5cXG5yZXF1aXJlLXVuaXQobilcXG4gIHVubGVzcyBuIGlzIGEgJ3VuaXQnXFxuICAgIGVycm9yKCd1bml0IGV4cGVjdGVkLCBnb3QgYSAnICsgLXN0cmluZyhuKSlcXG5cXG4vLyByZXF1aXJlIGEgc3RyaW5nXFxuXFxucmVxdWlyZS1zdHJpbmcoc3RyKVxcbiAgdW5sZXNzIHN0ciBpcyBhICdzdHJpbmcnIG9yIHN0ciBpcyBhICdpZGVudCdcXG4gICAgZXJyb3IoJ3N0cmluZyBleHBlY3RlZCwgZ290IGEgJyArIC1zdHJpbmcoc3RyKSlcXG5cXG4vLyBNYXRoIGZ1bmN0aW9uc1xcblxcbmFicyhuKSB7IG1hdGgobiwgJ2FicycpIH1cXG5taW4oYSwgYikgeyBhIDwgYiA/IGEgOiBiIH1cXG5tYXgoYSwgYikgeyBhID4gYiA/IGEgOiBiIH1cXG5cXG4vLyBUcmlnb25vbWV0cmljc1xcblBJID0gLW1hdGgtcHJvcCgnUEknKVxcblxcbnJhZGlhbnMtdG8tZGVncmVlcyhhbmdsZSlcXG4gIGFuZ2xlICogKDE4MCAvIFBJKVxcblxcbmRlZ3JlZXMtdG8tcmFkaWFucyhhbmdsZSlcXG4gIGFuZ2xlICogKFBJIC8gMTgwKVxcblxcbnNpbihuKVxcbiAgbiA9IHVuaXQobikgPT0gJ2RlZycgPyBkZWdyZWVzLXRvLXJhZGlhbnModW5pdChuLCAnJykpIDogdW5pdChuLCAnJylcXG4gIHJvdW5kKG1hdGgobiwgJ3NpbicpLCA5KVxcblxcbmNvcyhuKVxcbiAgbiA9IHVuaXQobikgPT0gJ2RlZycgPyBkZWdyZWVzLXRvLXJhZGlhbnModW5pdChuLCAnJykpIDogdW5pdChuLCAnJylcXG4gIHJvdW5kKG1hdGgobiwgJ2NvcycpLCA5KVxcblxcbi8vIFJvdW5kaW5nIE1hdGggZnVuY3Rpb25zXFxuXFxuY2VpbChuLCBwcmVjaXNpb24gPSAwKVxcbiAgbXVsdGlwbGllciA9IDEwICoqIHByZWNpc2lvblxcbiAgbWF0aChuICogbXVsdGlwbGllciwgJ2NlaWwnKSAvIG11bHRpcGxpZXJcXG5cXG5mbG9vcihuLCBwcmVjaXNpb24gPSAwKVxcbiAgbXVsdGlwbGllciA9IDEwICoqIHByZWNpc2lvblxcbiAgbWF0aChuICogbXVsdGlwbGllciwgJ2Zsb29yJykgLyBtdWx0aXBsaWVyXFxuXFxucm91bmQobiwgcHJlY2lzaW9uID0gMClcXG4gIG11bHRpcGxpZXIgPSAxMCAqKiBwcmVjaXNpb25cXG4gIG1hdGgobiAqIG11bHRpcGxpZXIsICdyb3VuZCcpIC8gbXVsdGlwbGllclxcblxcbi8vIHJldHVybiB0aGUgc3VtIG9mIHRoZSBnaXZlbiBudW1iZXJzXFxuXFxuc3VtKG51bXMpXFxuICBzdW0gPSAwXFxuICBzdW0gKz0gbiBmb3IgbiBpbiBudW1zXFxuXFxuLy8gcmV0dXJuIHRoZSBhdmVyYWdlIG9mIHRoZSBnaXZlbiBudW1iZXJzXFxuXFxuYXZnKG51bXMpXFxuICBzdW0obnVtcykgLyBsZW5ndGgobnVtcylcXG5cXG4vLyByZXR1cm4gYSB1bml0bGVzcyBudW1iZXIsIG9yIHBhc3MgdGhyb3VnaFxcblxcbnJlbW92ZS11bml0KG4pXFxuICBpZiB0eXBlb2YobikgaXMgXFxcInVuaXRcXFwiXFxuICAgIHVuaXQobiwgXFxcIlxcXCIpXFxuICBlbHNlXFxuICAgIG5cXG5cXG4vLyBjb252ZXJ0IGEgcGVyY2VudCB0byBhIGRlY2ltYWwsIG9yIHBhc3MgdGhyb3VnaFxcblxcbnBlcmNlbnQtdG8tZGVjaW1hbChuKVxcbiAgaWYgdW5pdChuKSBpcyBcXFwiJVxcXCJcXG4gICAgcmVtb3ZlLXVuaXQobikgLyAxMDBcXG4gIGVsc2VcXG4gICAgblxcblxcbi8vIGNoZWNrIGlmIG4gaXMgYW4gb2RkIG51bWJlclxcblxcbm9kZChuKVxcbiAgMSA9PSBuICUgMlxcblxcbi8vIGNoZWNrIGlmIG4gaXMgYW4gZXZlbiBudW1iZXJcXG5cXG5ldmVuKG4pXFxuICAwID09IG4gJSAyXFxuXFxuLy8gY2hlY2sgaWYgY29sb3IgaXMgbGlnaHRcXG5cXG5saWdodChjb2xvcilcXG4gIGxpZ2h0bmVzcyhjb2xvcikgPj0gNTAlXFxuXFxuLy8gY2hlY2sgaWYgY29sb3IgaXMgZGFya1xcblxcbmRhcmsoY29sb3IpXFxuICBsaWdodG5lc3MoY29sb3IpIDwgNTAlXFxuXFxuLy8gZGVzYXR1cmF0ZSBjb2xvciBieSBhbW91bnRcXG5cXG5kZXNhdHVyYXRlKGNvbG9yLCBhbW91bnQpXFxuICBhZGp1c3QoY29sb3IsICdzYXR1cmF0aW9uJywgLSBhbW91bnQpXFxuXFxuLy8gc2F0dXJhdGUgY29sb3IgYnkgYW1vdW50XFxuXFxuc2F0dXJhdGUoY29sb3IgPSAnJywgYW1vdW50ID0gMTAwJSlcXG4gIGlmIGNvbG9yIGlzIGEgJ2NvbG9yJ1xcbiAgICBhZGp1c3QoY29sb3IsICdzYXR1cmF0aW9uJywgYW1vdW50KVxcbiAgZWxzZVxcbiAgICB1bnF1b3RlKCBcXFwic2F0dXJhdGUoXFxcIiArIGNvbG9yICsgXFxcIilcXFwiIClcXG5cXG4vLyBkYXJrZW4gYnkgdGhlIGdpdmVuIGFtb3VudFxcblxcbmRhcmtlbihjb2xvciwgYW1vdW50KVxcbiAgYWRqdXN0KGNvbG9yLCAnbGlnaHRuZXNzJywgLSBhbW91bnQpXFxuXFxuLy8gbGlnaHRlbiBieSB0aGUgZ2l2ZW4gYW1vdW50XFxuXFxubGlnaHRlbihjb2xvciwgYW1vdW50KVxcbiAgYWRqdXN0KGNvbG9yLCAnbGlnaHRuZXNzJywgYW1vdW50KVxcblxcbi8vIGRlY3JlYXNlIG9wYWNpdHkgYnkgYW1vdW50XFxuXFxuZmFkZS1vdXQoY29sb3IsIGFtb3VudClcXG4gIGNvbG9yIC0gcmdiYShibGFjaywgcGVyY2VudC10by1kZWNpbWFsKGFtb3VudCkpXFxuXFxuLy8gaW5jcmVhc2Ugb3BhY2l0eSBieSBhbW91bnRcXG5cXG5mYWRlLWluKGNvbG9yLCBhbW91bnQpXFxuICBjb2xvciArIHJnYmEoYmxhY2ssIHBlcmNlbnQtdG8tZGVjaW1hbChhbW91bnQpKVxcblxcbi8vIHNwaW4gaHVlIGJ5IGEgZ2l2ZW4gYW1vdW50XFxuXFxuc3Bpbihjb2xvciwgYW1vdW50KVxcbiAgY29sb3IgKyB1bml0KGFtb3VudCwgZGVnKVxcblxcbi8vIG1peCB0d28gY29sb3JzIGJ5IGEgZ2l2ZW4gYW1vdW50XFxuXFxubWl4KGNvbG9yMSwgY29sb3IyLCB3ZWlnaHQgPSA1MCUpXFxuICB1bmxlc3Mgd2VpZ2h0IGluIDAuLjEwMFxcbiAgICBlcnJvcihcXFwiV2VpZ2h0IG11c3QgYmUgYmV0d2VlbiAwJSBhbmQgMTAwJVxcXCIpXFxuXFxuICBpZiBsZW5ndGgoY29sb3IxKSA9PSAyXFxuICAgIHdlaWdodCA9IGNvbG9yMVswXVxcbiAgICBjb2xvcjEgPSBjb2xvcjFbMV1cXG5cXG4gIGVsc2UgaWYgbGVuZ3RoKGNvbG9yMikgPT0gMlxcbiAgICB3ZWlnaHQgPSAxMDAgLSBjb2xvcjJbMF1cXG4gICAgY29sb3IyID0gY29sb3IyWzFdXFxuXFxuICByZXF1aXJlLWNvbG9yKGNvbG9yMSlcXG4gIHJlcXVpcmUtY29sb3IoY29sb3IyKVxcblxcbiAgcCA9IHVuaXQod2VpZ2h0IC8gMTAwLCAnJylcXG4gIHcgPSBwICogMiAtIDFcXG5cXG4gIGEgPSBhbHBoYShjb2xvcjEpIC0gYWxwaGEoY29sb3IyKVxcblxcbiAgdzEgPSAoKCh3ICogYSA9PSAtMSkgPyB3IDogKHcgKyBhKSAvICgxICsgdyAqIGEpKSArIDEpIC8gMlxcbiAgdzIgPSAxIC0gdzFcXG5cXG4gIGNoYW5uZWxzID0gKHJlZChjb2xvcjEpIHJlZChjb2xvcjIpKSAoZ3JlZW4oY29sb3IxKSBncmVlbihjb2xvcjIpKSAoYmx1ZShjb2xvcjEpIGJsdWUoY29sb3IyKSlcXG4gIHJnYiA9ICgpXFxuXFxuICBmb3IgcGFpciBpbiBjaGFubmVsc1xcbiAgICBwdXNoKHJnYiwgZmxvb3IocGFpclswXSAqIHcxICsgcGFpclsxXSAqIHcyKSlcXG5cXG4gIGExID0gYWxwaGEoY29sb3IxKSAqIHBcXG4gIGEyID0gYWxwaGEoY29sb3IyKSAqICgxIC0gcClcXG4gIGFscGhhID0gYTEgKyBhMlxcblxcbiAgcmdiYShyZ2JbMF0sIHJnYlsxXSwgcmdiWzJdLCBhbHBoYSlcXG5cXG4vLyBpbnZlcnQgY29sb3JzLCBsZWF2ZSBhbHBoYSBpbnRhY3RcXG5cXG5pbnZlcnQoY29sb3IgPSAnJylcXG4gIGlmIGNvbG9yIGlzIGEgJ2NvbG9yJ1xcbiAgICByZ2JhKCNmZmYgLSBjb2xvciwgYWxwaGEoY29sb3IpKVxcbiAgZWxzZVxcbiAgICB1bnF1b3RlKCBcXFwiaW52ZXJ0KFxcXCIgKyBjb2xvciArIFxcXCIpXFxcIiApXFxuXFxuLy8gZ2l2ZSBjb21wbGVtZW50IG9mIHRoZSBnaXZlbiBjb2xvclxcblxcbmNvbXBsZW1lbnQoIGNvbG9yIClcXG4gIHNwaW4oIGNvbG9yLCAxODAgKVxcblxcbi8vIGdpdmUgZ3JheXNjYWxlIG9mIHRoZSBnaXZlbiBjb2xvclxcblxcbmdyYXlzY2FsZSggY29sb3IgPSAnJyApXFxuICBpZiBjb2xvciBpcyBhICdjb2xvcidcXG4gICAgZGVzYXR1cmF0ZSggY29sb3IsIDEwMCUgKVxcbiAgZWxzZVxcbiAgICB1bnF1b3RlKCBcXFwiZ3JheXNjYWxlKFxcXCIgKyBjb2xvciArIFxcXCIpXFxcIiApXFxuXFxuLy8gbWl4IHRoZSBnaXZlbiBjb2xvciB3aXRoIHdoaXRlXFxuXFxudGludCggY29sb3IsIHBlcmNlbnQgKVxcbiAgbWl4KCB3aGl0ZSwgY29sb3IsIHBlcmNlbnQgKVxcblxcbi8vIG1peCB0aGUgZ2l2ZW4gY29sb3Igd2l0aCBibGFja1xcblxcbnNoYWRlKCBjb2xvciwgcGVyY2VudCApXFxuICBtaXgoIGJsYWNrLCBjb2xvciwgcGVyY2VudCApXFxuXFxuLy8gcmV0dXJuIHRoZSBsYXN0IHZhbHVlIGluIHRoZSBnaXZlbiBleHByXFxuXFxubGFzdChleHByKVxcbiAgZXhwcltsZW5ndGgoZXhwcikgLSAxXVxcblxcbi8vIHJldHVybiBrZXlzIGluIHRoZSBnaXZlbiBwYWlycyBvciBvYmplY3RcXG5cXG5rZXlzKHBhaXJzKVxcbiAgcmV0ID0gKClcXG4gIGlmIHR5cGUocGFpcnMpID09ICdvYmplY3QnXFxuICAgIGZvciBrZXkgaW4gcGFpcnNcXG4gICAgICBwdXNoKHJldCwga2V5KVxcbiAgZWxzZVxcbiAgICBmb3IgcGFpciBpbiBwYWlyc1xcbiAgICAgIHB1c2gocmV0LCBwYWlyWzBdKTtcXG4gIHJldFxcblxcbi8vIHJldHVybiB2YWx1ZXMgaW4gdGhlIGdpdmVuIHBhaXJzIG9yIG9iamVjdFxcblxcbnZhbHVlcyhwYWlycylcXG4gIHJldCA9ICgpXFxuICBpZiB0eXBlKHBhaXJzKSA9PSAnb2JqZWN0J1xcbiAgICBmb3Iga2V5LCB2YWwgaW4gcGFpcnNcXG4gICAgICBwdXNoKHJldCwgdmFsKVxcbiAgZWxzZVxcbiAgICBmb3IgcGFpciBpbiBwYWlyc1xcbiAgICAgIHB1c2gocmV0LCBwYWlyWzFdKTtcXG4gIHJldFxcblxcbi8vIGpvaW4gdmFsdWVzIHdpdGggdGhlIGdpdmVuIGRlbGltaXRlclxcblxcbmpvaW4oZGVsaW0sIHZhbHMuLi4pXFxuICBidWYgPSAnJ1xcbiAgdmFscyA9IHZhbHNbMF0gaWYgbGVuZ3RoKHZhbHMpID09IDFcXG4gIGZvciB2YWwsIGkgaW4gdmFsc1xcbiAgICBidWYgKz0gaSA/IGRlbGltICsgdmFsIDogdmFsXFxuXFxuLy8gYWRkIGEgQ1NTIHJ1bGUgdG8gdGhlIGNvbnRhaW5pbmcgYmxvY2tcXG5cXG4vLyAtIFRoaXMgZGVmaW5pdGlvbiBhbGxvd3MgYWRkLXByb3BlcnR5IHRvIGJlIHVzZWQgYXMgYSBtaXhpblxcbi8vIC0gSXQgaGFzIHRoZSBzYW1lIGVmZmVjdCBhcyBpbnRlcnBvbGF0aW9uIGJ1dCBhbGxvd3MgdXNlcnNcXG4vLyAgIHRvIG9wdCBmb3IgYSBmdW5jdGlvbmFsIHN0eWxlXFxuXFxuYWRkLXByb3BlcnR5LWZ1bmN0aW9uID0gYWRkLXByb3BlcnR5XFxuYWRkLXByb3BlcnR5KG5hbWUsIGV4cHIpXFxuICBpZiBtaXhpblxcbiAgICB7bmFtZX0gZXhwclxcbiAgZWxzZVxcbiAgICBhZGQtcHJvcGVydHktZnVuY3Rpb24obmFtZSwgZXhwcilcXG5cXG5wcmVmaXgtY2xhc3NlcyhwcmVmaXgpXFxuICAtcHJlZml4LWNsYXNzZXMocHJlZml4LCBibG9jaylcXG5cXG4vLyBDYWNoaW5nIG1peGluLCB1c2UgaW5zaWRlIHlvdXIgZnVuY3Rpb25zIHRvIGVuYWJsZSBjYWNoaW5nIGJ5IGV4dGVuZGluZy5cXG5cXG4kc3R5bHVzX21peGluX2NhY2hlID0ge31cXG5jYWNoZSgpXFxuICAka2V5ID0gKGN1cnJlbnQtbWVkaWEoKSBvciAnbm8tbWVkaWEnKSArICdfXycgKyBjYWxsZWQtZnJvbVswXSArICdfXycgKyBhcmd1bWVudHNcXG4gIGlmICRrZXkgaW4gJHN0eWx1c19taXhpbl9jYWNoZVxcbiAgICBAZXh0ZW5kIHtcXFwiJGNhY2hlX3BsYWNlaG9sZGVyX2Zvcl9cXFwiICsgJHN0eWx1c19taXhpbl9jYWNoZVska2V5XX1cXG4gIGVsc2UgaWYgJ2NhY2hlJyBpbiBjYWxsZWQtZnJvbVxcbiAgICB7YmxvY2t9XFxuICBlbHNlXFxuICAgICRpZCA9IGxlbmd0aCgkc3R5bHVzX21peGluX2NhY2hlKVxcblxcbiAgICAmLFxcbiAgICAvJGNhY2hlX3BsYWNlaG9sZGVyX2Zvcl97JGlkfVxcbiAgICAgICRzdHlsdXNfbWl4aW5fY2FjaGVbJGtleV0gPSAkaWRcXG4gICAgICB7YmxvY2t9XFxuXFxuLy8gUGVyY2VudGFnZSBmdW5jdGlvbiB0byBjb252ZXJ0IGEgbnVtYmVyLCBlLmcuIFxcXCIuNDVcXFwiLCBpbnRvIGEgcGVyY2VudGFnZSwgZS5nLiBcXFwiNDUlXFxcIlxcblxcbnBlcmNlbnRhZ2UobnVtKVxcbiAgcmV0dXJuIHVuaXQobnVtICogMTAwLCAnJScpXFxuXFxuLy8gUmV0dXJucyB0aGUgcG9zaXRpb24gb2YgYSBgdmFsdWVgIHdpdGhpbiBhIGBsaXN0YFxcblxcbmluZGV4KGxpc3QsIHZhbHVlKVxcbiAgZm9yIHZhbCwgaSBpbiBsaXN0XFxuICAgIHJldHVybiBpIGlmIHZhbCA9PSB2YWx1ZVxcblwiLFwiLypcXG4gKiBWZW5kb3IgXFxcImRpc3BsYXk6IGZsZXhcXFwiIHN1cHBvcnQgd2l0aCBmYWxsYmFjayB0byBvYnNvbGV0ZSB2ZXJzaW9ucy5cXG4gKi9cXG5cXG5mbGV4LXZlcnNpb24gPz0gYm94IGZsZXhcXG5cXG4vL1xcbi8vIDEuIERpc3BsYXkgdmFsdWVzXFxuLy8gICAgLSBodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLWZsZXhib3gvI2ZsZXgtY29udGFpbmVyc1xcbi8vXFxuZGlzcGxheSh0eXBlLCBhcmdzLi4uKVxcbiAgaWYgZmxleCA9PSB0eXBlIHx8IGlubGluZS1mbGV4ID09IHR5cGVcXG4gICAgaWYgYm94IGluIGZsZXgtdmVyc2lvblxcbiAgICAgIGlmIGZsZXggPT0gdHlwZVxcbiAgICAgICAgZGlzcGxheTogLW1zLWZsZXhib3ggYXJnc1xcbiAgICAgICAgZGlzcGxheTogdmVuZG9yLXZhbHVlKGJveCBhcmdzLCBvbmx5OiBtb3ogd2Via2l0KVxcbiAgICAgIGVsc2VcXG4gICAgICAgIGRpc3BsYXk6IC1tcy1pbmxpbmUtZmxleGJveCBhcmdzXFxuICAgICAgICBkaXNwbGF5OiB2ZW5kb3ItdmFsdWUoaW5saW5lLWJveCBhcmdzLCBvbmx5OiBtb3ogd2Via2l0KVxcbiAgICBpZiBmbGV4IGluIGZsZXgtdmVyc2lvblxcbiAgICAgIGRpc3BsYXk6IHZlbmRvci12YWx1ZShhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBvZmZpY2lhbCkgLy8gb3ZlcndyaXRlcyBvbGQgd2Via2l0XFxuICBlbHNlXFxuICAgIGRpc3BsYXk6IGFyZ3VtZW50c1xcblxcbi8qXFxuICogTmV3IHN5bnRheCBmb3IgYnJvd3NlcnMgbGlrZSBHb29nbGUgQ2hyb21lLlxcbiAqIFBsdXMgYSB0cmFuc2xhdGlvbiB0byB0aGUgb2xkIHN5bnRheCwgaWYgcG9zc2libGUuXFxuICovXFxuXFxuXFxuLy9cXG4vLyA1LiBPcmRlcmluZyBhbmQgT3JpZW50YXRpb25cXG4vLyAgICAtIGh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtZmxleGJveC8jb3JkZXJpbmctYW5kLW9yaWVudGF0aW9uXFxuLy9cXG4tZmxleC1vYnNvbGV0ZS1kaXJlY3Rpb24oZGlyZWN0aW9uKVxcbiAgaWYgYm94IGluIGZsZXgtdmVyc2lvblxcbiAgICBpZiByb3ctcmV2ZXJzZSA9PSBkaXJlY3Rpb24gfHwgY29sdW1uLXJldmVyc2UgPT0gZGlyZWN0aW9uXFxuICAgICAgdmVuZG9yKCdib3gtZGlyZWN0aW9uJywgcmV2ZXJzZSwgaWdub3JlOiBtcyBvZmZpY2lhbClcXG5cXG4gICAgaWYgcm93ID09IGRpcmVjdGlvbiB8fCByb3ctcmV2ZXJzZSA9PSBkaXJlY3Rpb25cXG4gICAgICB2ZW5kb3IoJ2JveC1vcmllbnQnLCBob3Jpem9udGFsLCBpZ25vcmU6IG1zIG9mZmljaWFsKVxcbiAgICBlbHNlIGlmIGNvbHVtbiA9PSBkaXJlY3Rpb24gfHwgY29sdW1uLXJldmVyc2UgPT0gZGlyZWN0aW9uXFxuICAgICAgdmVuZG9yKCdib3gtb3JpZW50JywgdmVydGljYWwsIGlnbm9yZTogbXMgb2ZmaWNpYWwpXFxuXFxuLWZsZXgtb2Jzb2xldGUtd3JhcCh2YWx1ZSlcXG4gIGlmIGJveCBpbiBmbGV4LXZlcnNpb25cXG4gICAgLy8gV0FSTjogd3JhcC1yZXZlcnNlIGRvZXMgbm90IGhhdmUgYSBib3ggZXF1aXZhbGVudC4gVGhpcyB3aWxsIHJlbmRlciBpbiBkaWZmZXJlbnQgbWFubmVyc1xcbiAgICAvLyAgICBvbiBib3ggdnMuIGZsZXggdmFsdWVzLlxcbiAgICBpZiAnd3JhcCcgPT0gdmFsdWUgfHwgd3JhcC1yZXZlcnNlID09IHZhbHVlXFxuICAgICAgdmVuZG9yKCdib3gtbGluZXMnLCBtdWx0aXBsZSwgaWdub3JlOiBtcyBvZmZpY2lhbClcXG4gICAgZWxzZSBpZiBub3dyYXAgPT0gdmFsdWVcXG4gICAgICB2ZW5kb3IoJ2JveC1saW5lcycsIHNpbmdsZSwgaWdub3JlOiBtcyBvZmZpY2lhbClcXG5cXG5mbGV4LWRpcmVjdGlvbihkaXJlY3Rpb24pXFxuICAvLyBvYnNvbGV0ZVxcbiAgLWZsZXgtb2Jzb2xldGUtZGlyZWN0aW9uKGRpcmVjdGlvbilcXG5cXG4gIC8vIG5ld1xcbiAgaWYgZmxleCBpbiBmbGV4LXZlcnNpb25cXG4gICAgdmVuZG9yKCdmbGV4LWRpcmVjdGlvbicsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1zIG9mZmljaWFsKVxcblxcbmZsZXgtd3JhcCh2YWx1ZSlcXG4gIC8vIG9ic29sZXRlXFxuICAtZmxleC1vYnNvbGV0ZS13cmFwKHZhbHVlKVxcblxcbiAgaWYgZmxleCBpbiBmbGV4LXZlcnNpb25cXG4gICAgdmVuZG9yKCdmbGV4LXdyYXAnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtcyBvZmZpY2lhbClcXG5cXG5mbGV4LWZsb3coKVxcbiAgLy8gb2Jzb2xldGVcXG4gIC1mbGV4LW9ic29sZXRlLWRpcmVjdGlvbihhcmd1bWVudHNbMF0pXFxuICAtZmxleC1vYnNvbGV0ZS1kaXJlY3Rpb24oYXJndW1lbnRzWzFdKVxcbiAgLWZsZXgtb2Jzb2xldGUtd3JhcChhcmd1bWVudHNbMF0pXFxuICAtZmxleC1vYnNvbGV0ZS13cmFwKGFyZ3VtZW50c1sxXSlcXG5cXG4gIC8vIG5ld1xcbiAgaWYgZmxleCBpbiBmbGV4LXZlcnNpb25cXG4gICAgdmVuZG9yKCdmbGV4LWZsb3cnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtcyBvZmZpY2lhbClcXG5cXG5cXG5vcmRlcigpXFxuICAvLyBvYnNvbGV0ZVxcbiAgaWYgYm94IGluIGZsZXgtdmVyc2lvblxcbiAgICB2ZW5kb3IoJ2JveC1vcmRpbmFsLWdyb3VwJywgYXJndW1lbnRzLCBpZ25vcmU6IG1zIG9mZmljaWFsKVxcblxcbiAgLy8gbmV3XFxuICBpZiBmbGV4IGluIGZsZXgtdmVyc2lvblxcbiAgICB2ZW5kb3IoJ2ZsZXgtb3JkZXInLCBhcmd1bWVudHMsIG9ubHk6IG1zKVxcbiAgICB2ZW5kb3IoJ29yZGVyJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgb2ZmaWNpYWwpXFxuXFxuXFxuLy9cXG4vLyA3LiBGbGV4aWJpbGl0eVxcbi8vICAgIC0gaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1mbGV4Ym94LyNmbGV4aWJpbGl0eVxcbi8vXFxuZmxleC1ncm93KGdyb3d0aClcXG4gIC8vIG9ic29sZXRlXFxuICBpZiBib3ggaW4gZmxleC12ZXJzaW9uXFxuICAgIHZlbmRvcignYm94LWZsZXgnLCBncm93dGgpXFxuXFxuICAvLyBuZXdcXG4gIGlmIGZsZXggaW4gZmxleC12ZXJzaW9uXFxuICAgIHZlbmRvcignZmxleC1ncm93JywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgb2ZmaWNpYWwpXFxuXFxuZmxleC1iYXNpcygpXFxuICBpZiBmbGV4IGluIGZsZXgtdmVyc2lvblxcbiAgICB2ZW5kb3IoJ2ZsZXgtYmFzaXMnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBvZmZpY2lhbClcXG5cXG5mbGV4LXNocmluaygpXFxuICBpZiBmbGV4IGluIGZsZXgtdmVyc2lvblxcbiAgICB2ZW5kb3IoJ2ZsZXgtc2hyaW5rJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgb2ZmaWNpYWwpXFxuXFxuZmxleChncm93dGgpXFxuXFxuICAvLyBvYnNvbGV0ZVxcbiAgaWYgYm94IGluIGZsZXgtdmVyc2lvblxcbiAgICBzaHJpbmsgPSAxXFxuXFxuICAgIGlmIG5vbmUgPT0gZ3Jvd3RoIHx8IGluaXRpYWwgPT0gZ3Jvd3RoXFxuICAgICAgLy8gV2VsbCBrbm93biB2YWx1ZXNcXG4gICAgICBzaHJpbmsgPSAwIGlmIG5vbmUgPT0gZ3Jvd3RoXFxuICAgICAgZ3Jvd3RoID0gMFxcbiAgICBlbHNlIGlmIGlzLXdpZHRoKGdyb3d0aCkgPT0gdHJ1ZVxcbiAgICAgIC8vIEJhc2lzIGlzIGRlZmluZWQgYXMgdGhlIGZpcnN0IHBhcmFtZXRlclxcbiAgICAgIGdyb3d0aCA9IGFyZ3VtZW50c1sxXSB8fCAwXFxuICAgICAgc2hyaW5rID0gYXJndW1lbnRzWzJdIGlmIDMgPD0gbGVuZ3RoKGFyZ3VtZW50cylcXG4gICAgZWxzZSBpZiBhcmd1bWVudHNbMV0gJiYgaXMtd2lkdGgoYXJndW1lbnRzWzFdKSA9PSBmYWxzZVxcbiAgICAgIC8vIEdyb3d0aCBpcyBmaXJzdCBhbmQgc2hyaW5rIGlzIHNlY29uZFxcbiAgICAgIHNocmluayA9IGFyZ3VtZW50c1sxXVxcblxcbiAgICAvLyBTaW5jZSB3ZSBjYW4ndCBtYWtlIHRoZSBkaXN0aW5jdGlvbiBiZXR3ZWVuIGdyb3dpbmcgYW5kIHNocmlua2luZyBpbiB0aGUgYm94IG1vZGVsLCB0YWtlXFxuICAgIC8vIHRoZSBvbmUgdGhhdCBwcm92aWRlcyB0aGUgbW9zdCBmbGV4aWJpbGl0eS5cXG4gICAgdmVuZG9yKCdib3gtZmxleCcsIG1heChncm93dGgsIHNocmluayksIGlnbm9yZTogbXMpXFxuXFxuICAvLyBuZXdcXG4gIGlmIGZsZXggaW4gZmxleC12ZXJzaW9uXFxuICAgIHZlbmRvcignZmxleCcsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1zIG9mZmljaWFsKVxcblxcblxcbi8vIGNvbnZlcnRzIHRoZSBqdXN0aWZpY2F0aW9uIGFsaWdubWVudFxcbi1jb252ZXJ0LWp1c3RpZnkoYWxpZ24pXFxuICBpZiBmbGV4LXN0YXJ0ID09IGFsaWduXFxuICAgIHJldHVybiBzdGFydFxcbiAgZWxzZSBpZiBmbGV4LWVuZCA9PSBhbGlnblxcbiAgICByZXR1cm4gZW5kXFxuICBlbHNlIGlmIHNwYWNlLWFyb3VuZCA9PSBhbGlnblxcbiAgICByZXR1cm4gZGlzdHJpYnV0ZVxcbiAgZWxzZSBpZiBzcGFjZS1iZXR3ZWVuID09IGFsaWduXFxuICAgIHJldHVybiBqdXN0aWZ5XFxuICBlbHNlXFxuICAgIHJldHVybiBhbGlnblxcblxcbi8vXFxuLy8gOC4gQWxpZ25tZW50XFxuLy8gICAgLSBodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLWZsZXhib3gvI2FsaWdubWVudFxcbi8vXFxuanVzdGlmeS1jb250ZW50KGFsaWduKVxcbiAgLy8gb2Jzb2xldGVcXG4gIGlmIGJveCBpbiBmbGV4LXZlcnNpb25cXG4gICAgdmVuZG9yKCdib3gtcGFjaycsIC1jb252ZXJ0LWp1c3RpZnkoYWxpZ24pLCBpZ25vcmU6IG1zIG9mZmljaWFsKVxcblxcbiAgLy8gbmV3XFxuICBpZiBmbGV4IGluIGZsZXgtdmVyc2lvblxcbiAgICB2ZW5kb3IoJ2ZsZXgtcGFjaycsIC1jb252ZXJ0LWp1c3RpZnkoYWxpZ24pLCBvbmx5OiBtcylcXG4gICAgdmVuZG9yKCdqdXN0aWZ5LWNvbnRlbnQnLCBhbGlnbiwgb25seTogd2Via2l0IG9mZmljaWFsKVxcblxcbmFsaWduLWNvbnRlbnQoYWxpZ24pXFxuICAvLyBXQVJOOiBPYnNvbGV0ZSBzcGVjIGRvZXMgbm90IGFsbG93IGZvciBhZGp1c3RtZW50IGhlcmVcXG4gIGlmIGZsZXggaW4gZmxleC12ZXJzaW9uXFxuICAgIHZlbmRvcignZmxleC1saW5lLXBhY2snLCAtY29udmVydC1qdXN0aWZ5KGFsaWduKSwgb25seTogbXMpXFxuICAgIHZlbmRvcignYWxpZ24tY29udGVudCcsIGFsaWduLCBvbmx5OiB3ZWJraXQgb2ZmaWNpYWwpXFxuXFxuLy8gY29udmVydHMgYWxpZ25tZW50IGZyb20gJ2ZsZXgnIHRvIG5vcm1hbCB2YWx1ZVxcbi1jb252ZXJ0LWFsaWdubWVudChhbGlnbilcXG4gIGlmIGZsZXgtc3RhcnQgPT0gYWxpZ25cXG4gICAgcmV0dXJuIHN0YXJ0XFxuICBlbHNlIGlmIGZsZXgtZW5kID09IGFsaWduXFxuICAgIHJldHVybiBlbmRcXG4gIGVsc2VcXG4gICAgcmV0dXJuIGFsaWduXFxuXFxuYWxpZ24taXRlbXMoYWxpZ24pXFxuICAvLyBvYnNvbGV0ZVxcbiAgaWYgYm94IGluIGZsZXgtdmVyc2lvblxcbiAgICB2ZW5kb3IoJ2JveC1hbGlnbicsIC1jb252ZXJ0LWFsaWdubWVudChhbGlnbiksIGlnbm9yZTogbXMgb2ZmaWNpYWwpXFxuXFxuICAvLyBuZXdcXG4gIGlmIGZsZXggaW4gZmxleC12ZXJzaW9uXFxuICAgIHZlbmRvcignZmxleC1hbGlnbicsIC1jb252ZXJ0LWFsaWdubWVudChhbGlnbiksIG9ubHk6IG1zKVxcbiAgICB2ZW5kb3IoJ2FsaWduLWl0ZW1zJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgb2ZmaWNpYWwpXFxuXFxuYWxpZ24tc2VsZihhbGlnbilcXG4gIC8vIFdBUk46IE9ic29sZXRlIHNwZWMgZG9lcyBub3QgYWxsb3cgZm9yIG92ZXJyaWRpbmcgYWxpZ25tZW50IG9uIGluZGl2aWR1YWwgaXRlbXMuXFxuICBpZiBmbGV4IGluIGZsZXgtdmVyc2lvblxcbiAgICB2ZW5kb3IoJ2FsaWduLXNlbGYnLCBhbGlnbiwgb25seTogd2Via2l0IG9mZmljaWFsKVxcbiAgICB2ZW5kb3IoJ2ZsZXgtaXRlbS1hbGlnbicsIC1jb252ZXJ0LWFsaWdubWVudChhbGlnbiksIG9ubHk6IG1zKVxcblwiLFwiLypcXG4gKiBPdmVyZmxvdyB1dGlsaXR5LiBNYXBzIHRvIHJlZ3VsYXIgb3ZlcmZsb3csIGFuZCBhZGRzIGFuIGVsbGlwc2lzIHZhbHVlLlxcbiAqXFxuICogU3lub3BzaXM6XFxuICpcXG4gKiAgIG92ZXJmbG93OiA8dHlwZT5cXG4gKlxcbiAqIEV4YW1wbGVzOlxcbiAqXFxuICogICAgIG92ZXJmbG93OiBhdXRvXFxuICogICAgIG92ZXJmbG93OiBoaWRkZW5cXG4gKiAgICAgb3ZlcmZsb3c6IGVsbGlwc2lzXFxuICpcXG4gKi9cXG5cXG5vdmVyZmxvdygpXFxuICBpZiBhcmd1bWVudHNbMF0gPT0gZWxsaXBzaXNcXG4gICAgZWxsaXBzaXMoKVxcbiAgZWxzZVxcbiAgICBvdmVyZmxvdzogYXJndW1lbnRzXFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5sb2NhbHMgPSB7XG5cdFwiY29udGFpbmVyXCI6IFwidG9rZW4taW5wdXQtY29udGFpbmVyXCIsXG5cdFwiY29udGFpbmVyLS1mb2N1c2VkXCI6IFwidG9rZW4taW5wdXQtY29udGFpbmVyLS1mb2N1c2VkXCIsXG5cdFwiY29udGFpbmVyLS1lcnJvcnNcIjogXCJ0b2tlbi1pbnB1dC1jb250YWluZXItLWVycm9yc1wiLFxuXHRcInRva2VuLWxpc3RcIjogXCJ0b2tlbi1pbnB1dC10b2tlbi1saXN0XCIsXG5cdFwidG9rZW5cIjogXCJ0b2tlbi1pbnB1dC10b2tlblwiLFxuXHRcInRva2VuLS1lcnJvclwiOiBcInRva2VuLWlucHV0LXRva2VuLS1lcnJvclwiLFxuXHRcInRva2VuLS1yZWFkLW9ubHlcIjogXCJ0b2tlbi1pbnB1dC10b2tlbi0tcmVhZC1vbmx5XCIsXG5cdFwidG9rZW4tLWFjdGl2ZVwiOiBcInRva2VuLWlucHV0LXRva2VuLS1hY3RpdmVcIixcblx0XCJhdXRvc2l6ZWQtd3JhcHBlclwiOiBcInRva2VuLWlucHV0LWF1dG9zaXplZC13cmFwcGVyXCIsXG5cdFwidG9rZW5fX2xhYmVsLXdyYXBwZXJcIjogXCJ0b2tlbi1pbnB1dC10b2tlbl9fbGFiZWwtd3JhcHBlclwiLFxuXHRcInRva2VuX19kZWxldGUtYnV0dG9uXCI6IFwidG9rZW4taW5wdXQtdG9rZW5fX2RlbGV0ZS1idXR0b25cIixcblx0XCJ0b2tlbl9fZGVsZXRlLWJ1dHRvbl9fY2xvc2UtaWNvblwiOiBcInRva2VuLWlucHV0LXRva2VuX19kZWxldGUtYnV0dG9uX19jbG9zZS1pY29uXCJcbn07XG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!../node_modules/stylus-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!../src/styles.styl\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../node_modules/css-loader/dist/runtime/cssWithMappingToString.js */ \"../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../node_modules/css-loader/dist/runtime/api.js */ \"../node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".token-input-container {\\n -webkit-box-sizing: border-box;\\n -moz-box-sizing: border-box;\\n box-sizing: border-box;\\n cursor: text;\\n overflow-y: auto;\\n height: 200px;\\n padding: 4px;\\n background-color: #fff;\\n border: 1px solid #ccc;\\n border-radius: 4px;\\n outline: 0;\\n}\\n.token-input-container *,\\n.token-input-container *::before,\\n.token-input-container *::after {\\n -webkit-box-sizing: inherit;\\n -moz-box-sizing: inherit;\\n box-sizing: inherit;\\n}\\n.token-input-container.token-input-container--focused {\\n border-color: #0096cc;\\n}\\n.token-input-container.token-input-container.token-input-container--errors {\\n border-color: #db3d44;\\n}\\n.token-input-container .token-input-token-list .token-input-token {\\n float: left;\\n display: -webkit-box;\\n display: -moz-box;\\n display: -webkit-flex;\\n display: -ms-flexbox;\\n display: box;\\n display: flex;\\n -webkit-box-orient: horizontal;\\n -moz-box-orient: horizontal;\\n -o-box-orient: horizontal;\\n -webkit-box-lines: single;\\n -moz-box-lines: single;\\n -o-box-lines: single;\\n -webkit-flex-flow: row nowrap;\\n -ms-flex-flow: row nowrap;\\n flex-flow: row nowrap;\\n -webkit-box-pack: center;\\n -moz-box-pack: center;\\n -o-box-pack: center;\\n -ms-flex-pack: center;\\n -webkit-justify-content: center;\\n justify-content: center;\\n -webkit-box-align: center;\\n -moz-box-align: center;\\n -o-box-align: center;\\n -ms-flex-align: center;\\n -webkit-align-items: center;\\n align-items: center;\\n -ms-flex-line-pack: center;\\n -webkit-align-content: center;\\n align-content: center;\\n max-width: 100%;\\n height: 32px;\\n line-height: 1.5;\\n white-space: nowrap;\\n margin: 0 4px 4px 0;\\n padding: 0;\\n border: 0;\\n border-radius: 4px;\\n color: #0096cc;\\n background-color: #cceaf5;\\n cursor: default;\\n}\\n.token-input-container .token-input-token-list .token-input-token:hover {\\n background-color: #e6f4fc;\\n}\\n.token-input-container .token-input-token-list .token-input-token.token-input-token--error {\\n color: #db3d44;\\n background-color: #f9b5b5;\\n}\\n.token-input-container .token-input-token-list .token-input-token.token-input-token--error:hover {\\n background-color: #ffdada;\\n}\\n.token-input-container .token-input-token-list .token-input-token.token-input-token--editable:hover {\\n cursor: pointer;\\n}\\n.token-input-container .token-input-token-list .token-input-token.token-input-token--active .token-input-autosized-wrapper {\\n display: -webkit-box;\\n display: -moz-box;\\n display: -webkit-flex;\\n display: -ms-flexbox;\\n display: box;\\n display: flex;\\n -webkit-box-pack: center;\\n -moz-box-pack: center;\\n -o-box-pack: center;\\n -ms-flex-pack: center;\\n -webkit-justify-content: center;\\n justify-content: center;\\n -webkit-box-align: center;\\n -moz-box-align: center;\\n -o-box-align: center;\\n -ms-flex-align: center;\\n -webkit-align-items: center;\\n align-items: center;\\n -ms-flex-line-pack: center;\\n -webkit-align-content: center;\\n align-content: center;\\n margin: 4px 8px;\\n height: 32px;\\n}\\n.token-input-container .token-input-token-list .token-input-token.token-input-token--active .token-input-autosized-wrapper input {\\n height: auto;\\n border-bottom: 1px solid #aaa;\\n}\\n.token-input-container .token-input-token-list .token-input-token .token-input-token__label-wrapper {\\n -webkit-box-flex: 1;\\n -moz-box-flex: 1;\\n -o-box-flex: 1;\\n box-flex: 1;\\n -webkit-flex: 1 0 0;\\n -ms-flex: 1 0 0;\\n flex: 1 0 0;\\n margin: 0 8px;\\n overflow: hidden;\\n -o-text-overflow: ellipsis;\\n text-overflow: ellipsis;\\n}\\n.token-input-container .token-input-token-list .token-input-token .token-input-token__delete-button {\\n -webkit-box-flex: 1;\\n -moz-box-flex: 1;\\n -o-box-flex: 1;\\n box-flex: 1;\\n -webkit-flex: 0 0 0;\\n -ms-flex: 0 0 0;\\n flex: 0 0 0;\\n display: -webkit-box;\\n display: -moz-box;\\n display: -webkit-flex;\\n display: -ms-flexbox;\\n display: box;\\n display: flex;\\n -webkit-box-pack: center;\\n -moz-box-pack: center;\\n -o-box-pack: center;\\n -ms-flex-pack: center;\\n -webkit-justify-content: center;\\n justify-content: center;\\n -webkit-box-align: center;\\n -moz-box-align: center;\\n -o-box-align: center;\\n -ms-flex-align: center;\\n -webkit-align-items: center;\\n align-items: center;\\n -ms-flex-line-pack: center;\\n -webkit-align-content: center;\\n align-content: center;\\n height: 100%;\\n padding: 2px 8px;\\n cursor: pointer;\\n opacity: 0.3;\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.Alpha(Opacity=30)\\\";\\n filter: alpha(opacity=30);\\n border-left: 1px solid #aaa;\\n border-radius: 0 4px 4px 0;\\n}\\n.token-input-container .token-input-token-list .token-input-token .token-input-token__delete-button:hover {\\n opacity: 1;\\n -ms-filter: none;\\n filter: none;\\n background-color: #aaa;\\n}\\n.token-input-container .token-input-token-list .token-input-token .token-input-token__delete-button:hover .token-input-token__delete-button__close-icon:before,\\n.token-input-container .token-input-token-list .token-input-token .token-input-token__delete-button:hover .token-input-token__delete-button__close-icon:after {\\n border-color: #fff;\\n}\\n.token-input-container .token-input-token-list .token-input-token .token-input-token__delete-button .token-input-token__delete-button__close-icon {\\n width: 14px;\\n height: 14px;\\n position: relative;\\n}\\n.token-input-container .token-input-token-list .token-input-token .token-input-token__delete-button .token-input-token__delete-button__close-icon:before,\\n.token-input-container .token-input-token-list .token-input-token .token-input-token__delete-button .token-input-token__delete-button__close-icon:after {\\n content: '';\\n height: 14px;\\n left: 6px;\\n border-left: 2px solid #222;\\n position: absolute;\\n}\\n.token-input-container .token-input-token-list .token-input-token .token-input-token__delete-button .token-input-token__delete-button__close-icon:before {\\n -webkit-transform: rotate(-45deg);\\n -moz-transform: rotate(-45deg);\\n -o-transform: rotate(-45deg);\\n -ms-transform: rotate(-45deg);\\n transform: rotate(-45deg);\\n}\\n.token-input-container .token-input-token-list .token-input-token .token-input-token__delete-button .token-input-token__delete-button__close-icon:after {\\n -webkit-transform: rotate(45deg);\\n -moz-transform: rotate(45deg);\\n -o-transform: rotate(45deg);\\n -ms-transform: rotate(45deg);\\n transform: rotate(45deg);\\n}\\n.token-input-container .token-input-autosized-wrapper {\\n float: left;\\n overflow: hidden;\\n margin-right: 4px;\\n}\\n.token-input-container .token-input-autosized-wrapper input {\\n height: 32px;\\n margin: 0;\\n padding: 0;\\n border: 0;\\n outline: 0;\\n cursor: text;\\n -webkit-box-shadow: none;\\n box-shadow: none;\\n background: none;\\n color: #222;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./../src/styles.styl\",\"webpack://./../node_modules/nib/lib/nib/vendor.styl\",\"webpack://./../node_modules/nib/lib/nib/border.styl\",\"webpack://./../node_modules/nib/lib/nib/border-radius.styl\",\"webpack://./../node_modules/nib/lib/nib/size.styl\",\"webpack://./../node_modules/stylus/lib/functions/index.styl\",\"webpack://./../node_modules/nib/lib/nib/flex.styl\",\"webpack://./../node_modules/nib/lib/nib/overflow.styl\"],\"names\":[],\"mappings\":\"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\",\"sourcesContent\":[\".container {\\n // https://www.paulirish.com/2012/box-sizing-border-box-ftw/\\n box-sizing: border-box;\\n *, \\n *::before, \\n *::after {\\n box-sizing: inherit;\\n }\\n \\n cursor: text;\\n overflow-y: auto;\\n height: 200px;\\n\\n padding: 4px;\\n\\n background-color: #fff;\\n\\n border: 1px solid #ccc;\\n border-radius: 4px;\\n\\n // remove focuse border style of mac sysytem\\n // outline: none; \\n outline: 0;\\n\\n &.container--focused {\\n border-color: #0096cc;\\n }\\n &&.container--errors {\\n border-color: #db3d44;\\n }\\n\\n .token-list {\\n .token {\\n float: left;\\n\\n display: flex;\\n flex-flow: row nowrap;\\n justify-content: center;\\n align-items: center;\\n align-content: center;\\n\\n max-width: 100%;\\n // TODO: Set minimum?\\n // min-width: 100px;\\n\\n height: 32px;\\n line-height: 1.5;\\n white-space: nowrap;\\n \\n margin: 0 4px 4px 0;\\n padding: 0; \\n\\n border: 0;\\n border-radius: 4px;\\n\\n color: #0096cc;\\n background-color: #cceaf5;\\n\\n cursor: default;\\n\\n &:hover {\\n background-color: #e6f4fc;\\n }\\n\\n &.token--error {\\n color: #db3d44;\\n background-color: #f9b5b5;\\n\\n &:hover {\\n background-color: #ffdada;\\n }\\n }\\n\\n &.token--editable:hover {\\n cursor: pointer;\\n }\\n\\n &.token--active {\\n .autosized-wrapper {\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n align-content: center;\\n\\n margin: 4px 8px;\\n height: 32px;\\n\\n input {\\n height: auto;\\n border-bottom: 1px solid #aaa;\\n }\\n }\\n }\\n \\n // &.token--read-only {\\n // .token__label-wrapper {\\n // max-width: 100%;\\n // }\\n // }\\n \\n .token__label-wrapper {\\n flex: 1 0 0;\\n\\n margin: 0 8px;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n }\\n \\n .token__delete-button {\\n flex: 0 0 0;\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n align-content: center;\\n\\n height: 100%;\\n padding: 2px 8px;\\n\\n cursor: pointer;\\n opacity: 0.3;\\n\\n border-left: 1px solid #aaa;\\n border-radius: 0 4px 4px 0;\\n\\n &:hover {\\n opacity: 1;\\n background-color: #aaa;\\n\\n .token__delete-button__close-icon {\\n &:before,\\n &:after {\\n border-color: #fff;\\n }\\n }\\n }\\n\\n .token__delete-button__close-icon {\\n width: 14px;\\n height: 14px;\\n position: relative;\\n\\n &:before,\\n &:after {\\n content: '';\\n height: 14px;\\n left: 6px;\\n border-left: 2px solid #222;\\n position: absolute;\\n }\\n &:before {\\n transform: rotate(-45deg);\\n }\\n &:after {\\n transform: rotate(45deg);\\n }\\n }\\n }\\n }\\n }\\n\\n .autosized-wrapper {\\n float: left;\\n overflow: hidden;\\n margin-right: 4px;\\n \\n input {\\n height: 32px;\\n margin: 0;\\n padding: 0;\\n\\n border: 0;\\n\\n // remove focuse border style of mac sysytem\\n // outline: none; \\n outline: 0;\\n\\n cursor: text;\\n box-shadow: none;\\n background: none;\\n color: #222;\\n }\\n }\\n}\\n\",\"use('../nodes/vendor-helpers.js')\\n@import 'config'\\n\\n/*\\n * Alias \\\"nowrap\\\" as \\\"no-wrap\\\".\\n */\\n\\nno-wrap = unquote('nowrap')\\n\\n/*\\n * Helper to find out if a given value is a width\\n */\\n\\nis-width(val)\\n if auto == val\\n return true\\n else if val && 'unit' == type(val)\\n // Stylus does not short circuit so we need to perform this as a distinct\\n // operation to prevent errors\\n return '' != unit(val)\\n return false\\n\\n/*\\n * Vendor support for the given prop / arguments, optionally specifying the\\n * only prefixes to utilize, or those which should be ignored.\\n */\\n\\nvendor(prop, args, only = null, ignore = null, vendor-property = true)\\n need_normalize = !vendor-property or prop in ('transition' 'transition-property' 'border-image' 'border-image-slice')\\n for prefix in vendor-prefixes\\n unless (only and !(prefix in only)) or (ignore and prefix in ignore)\\n if official == prefix\\n if need_normalize\\n {prop}: normalize(prop,('%s' % args))\\n else\\n {prop}: args\\n else\\n newprop = prop\\n newprop = '-' + prefix + '-' + prop if vendor-property\\n\\n if need_normalize\\n {newprop}: normalize(prop,('%s' % args),prefix)\\n else\\n {newprop}: args\\n/*\\n * Vendorize the given value.\\n */\\n\\nvendor-value(arg, only = null, ignore = null)\\n prop = current-property[0]\\n for prefix in vendor-prefixes\\n unless (only and !(prefix in only)) or (ignore and prefix in ignore) or official == prefix\\n add-property(prop, '-%s-%s' % (prefix arg))\\n arg\\n\\n/*\\n * Vendor \\\"box-shadow\\\" support.\\n */\\n\\nbox-shadow()\\n vendor('box-shadow', arguments, only: webkit official)\\n\\n/*\\n * Vendor \\\"user-select\\\" support.\\n */\\n\\nuser-select()\\n vendor('user-select', arguments, only: webkit moz ms official)\\n\\n/*\\n * Vendor \\\"column-count\\\" support.\\n */\\n\\ncolumn-count()\\n vendor('column-count', arguments, only: webkit moz official)\\n\\n/*\\n * Vendor \\\"column-gap\\\" support.\\n */\\n\\ncolumn-gap()\\n vendor('column-gap', arguments, only: webkit moz official)\\n\\n/*\\n * Vendor \\\"column-rule\\\" support.\\n */\\n\\ncolumn-rule()\\n vendor('column-rule', arguments, only: webkit moz official)\\n\\n/*\\n * Vendor \\\"column-rule-color\\\" support.\\n */\\n\\ncolumn-rule-color()\\n vendor('column-rule-color', arguments, only: webkit moz official)\\n\\n/*\\n * Vendor \\\"column-rule-width\\\" support.\\n */\\n\\ncolumn-rule-width()\\n vendor('column-rule-width', arguments, only: webkit moz official)\\n\\n/*\\n * Vendor \\\"column-rule-style\\\" support.\\n */\\n\\ncolumn-rule-style()\\n vendor('column-rule-style', arguments, only: webkit moz official)\\n\\n/*\\n * Vendor \\\"column-width\\\" support.\\n */\\n\\ncolumn-width()\\n vendor('column-width', arguments, only: webkit moz official)\\n\\n/*\\n * Vendor \\\"column-span\\\" support.\\n */\\n\\ncolumn-span()\\n vendor('column-span', arguments, only: webkit official)\\n\\n/*\\n * Vendor \\\"column-fill\\\" support.\\n */\\n\\ncolumn-fill()\\n vendor('column-fill', arguments, only: moz)\\n\\n/*\\n * Legacy syntax support for background-clip and background-origin\\n */\\n\\nlegacy-bg-values(property, args)\\n legacy_args = ()\\n importance = unquote('')\\n for subargs in args\\n for arg in subargs\\n if arg in (border-box padding-box content-box)\\n arg = unquote('border') if arg == border-box\\n arg = unquote('padding') if arg == padding-box\\n arg = unquote('content') if arg == content-box\\n if arg != '!important'\\n push(legacy_args,arg)\\n else\\n importance = !important\\n vendor(property, unquote(join(', ',legacy_args)) importance, only: moz webkit)\\n\\n/*\\n * Vendor \\\"background-clip\\\" support.\\n */\\n\\nbackground-clip()\\n if arguments[0] == text\\n vendor('background-clip', arguments, only: webkit)\\n else\\n legacy-bg-values('background-clip', arguments)\\n background-clip: arguments\\n\\n/*\\n * Vendor \\\"background-origin\\\" support.\\n */\\n\\nbackground-origin()\\n legacy-bg-values('background-origin', arguments)\\n background-origin: arguments\\n\\n/*\\n * Vendor \\\"background-size\\\" support.\\n */\\n\\nbackground-size()\\n vendor('background-size', arguments, only: webkit moz official)\\n\\n/*\\n * Vendor \\\"transform\\\" support.\\n */\\n\\ntransform()\\n vendor('transform', arguments)\\n\\n/*\\n * Vendor \\\"transform-origin\\\" support.\\n */\\ntransform-origin()\\n vendor('transform-origin', arguments)\\n\\n/*\\n * Vendor \\\"transform-style\\\" support.\\n */\\n\\ntransform-style()\\n vendor('transform-style', arguments)\\n\\n/*\\n * Vendor \\\"border-image\\\" support.\\n */\\n\\nborder-image()\\n vendor('border-image', arguments, only: webkit moz o official)\\n\\n/*\\n * Vendor \\\"transition\\\" support.\\n */\\n\\ntransition()\\n vendor('transition', arguments)\\n\\n/*\\n * Vendor \\\"transition-property\\\" support.\\n */\\n\\ntransition-property()\\n vendor('transition-property', arguments)\\n\\n/*\\n * Vendor \\\"transition-duration\\\" support.\\n */\\n\\ntransition-duration()\\n vendor('transition-duration', arguments)\\n\\n/*\\n * Vendor \\\"transition-timing-function\\\" support.\\n */\\n\\ntransition-timing-function()\\n vendor('transition-timing-function', arguments)\\n\\n/*\\n * Vendor \\\"transition-delay\\\" support.\\n */\\n\\ntransition-delay()\\n vendor('transition-delay', arguments)\\n\\n/*\\n * Vendor \\\"backface-visibility\\\" support.\\n */\\n\\nbackface-visibility()\\n vendor('backface-visibility', arguments, only: webkit moz ms official)\\n\\n/*\\n * Vendor \\\"perspective\\\" support.\\n */\\n\\nperspective()\\n if mixin\\n vendor('perspective', arguments, only: webkit moz ms official)\\n else\\n 'perspective(%s)' % arguments\\n\\n/*\\n * Vendor \\\"perspective-origin\\\" support.\\n */\\n\\nperspective-origin()\\n vendor('perspective-origin', arguments, only: webkit moz ms official)\\n\\n/*\\n * Opacity with conditional IE support.\\n */\\n\\nopacity(n, args...)\\n opacity: n args\\n if support-for-ie\\n if n == inherit or n == initial\\n -ms-filter: n args\\n filter: n args\\n else\\n val = round(n * 100)\\n if val == 100\\n -ms-filter: none args\\n filter: none args\\n else\\n -ms-filter: '\\\"progid:DXImageTransform.Microsoft.Alpha(Opacity=%s)\\\"' % val args\\n filter: 'alpha(opacity=%s)' % val args\\n\\n/*\\n * Vendor \\\"text-size-adjust\\\"\\n */\\n\\ntext-size-adjust()\\n vendor('text-size-adjust', arguments)\\n\\n/*\\n * Alias the \\\"white-space\\\" property.\\n */\\n\\nwhitespace()\\n white-space: arguments\\n\\n/*\\n * Vendor \\\"box-sizing\\\" support.\\n */\\n\\nbox-sizing()\\n vendor('box-sizing', arguments, only: webkit moz official)\\n\\n/*\\n * Vendor \\\"box-orient\\\" support.\\n */\\n\\nbox-orient()\\n vendor('box-orient', arguments, only: webkit moz official)\\n\\n/*\\n * Vendor \\\"box-flex-group\\\" support.\\n */\\n\\nbox-flex-group()\\n vendor('box-flex-group', arguments, only: webkit moz official)\\n\\n/*\\n * Vendor \\\"box-ordinal-group\\\" support.\\n */\\n\\nbox-ordinal-group()\\n vendor('box-ordinal-group', arguments, only: webkit moz ms official)\\n\\n\\n/*\\n * Vendor \\\"box-align\\\" support.\\n */\\n\\nbox-align()\\n vendor('box-align', arguments, only: webkit moz ms official)\\n\\n/*\\n * Vendor \\\"box-pack\\\" support.\\n */\\n\\nbox-pack()\\n vendor('box-pack', arguments, only: webkit moz ms official)\\n\\n/*\\n * Vendor \\\"box-direction\\\" support.\\n */\\n\\nbox-direction()\\n vendor('box-direction', arguments, only: webkit moz ms official)\\n\\n/*\\n * Vendor \\\"animation\\\" support.\\n */\\n\\nanimation()\\n vendor('animation', arguments)\\n\\n\\n/*\\n * Vendor \\\"animation-name\\\" support.\\n */\\n\\nanimation-name()\\n vendor('animation-name', arguments)\\n\\n/*\\n * Vendor \\\"animation-duration\\\" support.\\n */\\n\\nanimation-duration()\\n vendor('animation-duration', arguments)\\n\\n/*\\n * Vendor \\\"animation-delay\\\" support.\\n */\\n\\nanimation-delay()\\n vendor('animation-delay', arguments)\\n\\n/*\\n * Vendor \\\"animation-direction\\\" support.\\n */\\n\\nanimation-direction()\\n vendor('animation-direction', arguments)\\n\\n/*\\n * Vendor \\\"animation-iteration-count\\\" support.\\n */\\n\\nanimation-iteration-count()\\n vendor('animation-iteration-count', arguments)\\n\\n/*\\n * Vendor \\\"animation-timing-function\\\" support.\\n */\\n\\nanimation-timing-function()\\n vendor('animation-timing-function', arguments)\\n\\n/*\\n * Vendor \\\"animation-play-state\\\" support.\\n */\\n\\nanimation-play-state()\\n vendor('animation-play-state', arguments)\\n\\n/*\\n * Vendor \\\"animation-fill-mode\\\" support.\\n */\\n\\nanimation-fill-mode()\\n vendor('animation-fill-mode', arguments)\\n\\n/*\\n * Vendor \\\"hyphens\\\" support.\\n */\\n\\nhyphens()\\n vendor('hyphens', arguments, only: webkit moz ms official)\\n\\n/*\\n * Vendor \\\"appearance\\\" support.\\n */\\n\\nappearance()\\n vendor('appearance', arguments, only: webkit moz official)\\n\\n/*\\n * Vendor \\\"tab-size\\\" support.\\n */\\n\\ntab-size()\\n vendor('tab-size', arguments, only: moz o official)\\n\\n/*\\n * Vendor \\\"overflow-scrolling\\\" support.\\n */\\n\\noverflow-scrolling()\\n vendor('overflow-scrolling', arguments, only: webkit official)\\n\\n/*\\n * Vendor \\\"text-overflow\\\" support, , -o- for opera 9.* - 10.*\\n */\\n\\ntext-overflow()\\n vendor('text-overflow', arguments, only: official o)\\n\\n/*\\n * Vendor \\\"text-size-adjust\\\" support.\\n */\\ntext-size-adjust()\\n vendor('text-size-adjust', arguments, only: official webkit ms)\\n\\n/*\\n * Vendor \\\"font-smoothing\\\" support, webkit only.\\n */\\nfont-smoothing()\\n vendor('font-smoothing', arguments, only: webkit)\\n\\n\\n/**\\n * Vendor input-placeholder/placeholder support.\\n *\\n * Examples:\\n * // Default syntax\\n * body\\n * placeholder(color #333, font-weight normal)\\n *\\n * // The comma is important\\n * .placeholder-red\\n * placeholder(color red,)\\n *\\n * // We can pass a function\\n * green-placeholder()\\n * color green\\n * .placeholder-green\\n * placeholder(green-placeholder)\\n *\\n * // We can pass a hash\\n * textarea\\n * placeholder((font-style italic) (font-weight bold) (padding '4px 10px'))\\n */\\nplaceholder()\\n for v in ':-webkit-input' '-moz' ':-moz' '-ms-input'\\n &:{v}-placeholder\\n for pair in arguments\\n if typeof(pair) == 'function'\\n pair()\\n else if pair is not null && pair[0] is not null\\n {pair[0]}: type(pair[1]) == 'string' ? s(pair[1]) : pair[1]\\ninput-placeholder = placeholder\\n\\n/*\\n * Vendor background support (gradients).\\n */\\n\\nbackground()\\n if match('-gradient\\\\(', ''+arguments)\\n vendor('background', arguments, vendor-property: false)\\n else\\n background arguments\\n\\nbackground-image()\\n if match('-gradient\\\\(', ''+arguments)\\n vendor('background-image', arguments, vendor-property: false)\\n else\\n background-image arguments\\n\\ncursor()\\n if match('-gradient\\\\(', ''+arguments)\\n vendor('cursor', arguments, vendor-property: false)\\n else\\n cursor arguments\\n\\nlist-style()\\n if match('-gradient\\\\(', ''+arguments)\\n vendor('list-style', arguments, vendor-property: false)\\n else\\n list-style arguments\\n\\nlist-style-image()\\n if match('-gradient\\\\(', ''+arguments)\\n vendor('list-style-image', arguments, vendor-property: false)\\n else\\n list-style-image arguments\\n\",\"/*\\n * border: \\n * border: ...\\n */\\n\\nborder(color, args...)\\n if color is a 'color'\\n border: 1px solid color args\\n else\\n border: arguments\\n\",\"/*\\n * Helper for border-radius().\\n */\\n\\n-apply-border-radius(pos, importance)\\n if length(pos) == 3\\n // border-radius: \\n y = pos[0]\\n x = pos[1]\\n // We don't use vendor for boder-radius anymore\\n // vendor('border-radius-%s%s' % pos, pos[2], only: webkit official)\\n {'border-%s-%s-radius' % pos}: pos[2] importance\\n else if pos[0] in (top bottom)\\n // border-radius: \\n -apply-border-radius(pos[0] left pos[1], importance)\\n -apply-border-radius(pos[0] right pos[1], importance)\\n else if pos[0] in (left right)\\n // border-radius: \\n unshift(pos, top);\\n -apply-border-radius(pos, importance)\\n pos[0] = bottom\\n -apply-border-radius(pos, importance)\\n\\n/*\\n * border-radius supporting augmented behavior.\\n *\\n * Examples:\\n *\\n * border-radius: 2px 5px\\n * border-radius: top 5px bottom 10px\\n * border-radius: left 5px\\n * border-radius: top left 5px\\n * border-radius: top left 10px bottom right 5px\\n * border-radius: top left 10px, bottom right 5px\\n *\\n */\\n\\nborder-radius()\\n pos = ()\\n augmented = false\\n importance = arguments[length(arguments) - 1] == !important ? !important : unquote('')\\n\\n for args in arguments\\n for arg in args\\n if arg is a 'ident'\\n append(pos, arg)\\n augmented = true\\n else\\n append(pos, arg)\\n if augmented\\n -apply-border-radius(pos, importance)\\n pos = ()\\n border-radius pos unless augmented\\n\",\"/*\\n * Size utility.\\n *\\n * Synopsis:\\n *\\n * size: | \\n *\\n * Examples:\\n *\\n * size: 100% 30px\\n * yields:\\n * width: 100%\\n * height: 30px\\n *\\n * size: 5px\\n * yields:\\n * width: 5px\\n * height: 5px\\n *\\n */\\n\\nsize()\\n if length(arguments) == 1\\n width: arguments[0]\\n height: arguments[0]\\n else\\n width: arguments[0]\\n height: arguments[1]\\n\",\"called-from = ()\\n\\nvendors = moz webkit o ms official\\n\\n// stringify the given arg\\n\\n-string(arg)\\n type(arg) + ' ' + arg\\n\\n// require a color\\n\\nrequire-color(color)\\n unless color is a 'color'\\n error('RGB or HSL value expected, got a ' + -string(color))\\n\\n// require a unit\\n\\nrequire-unit(n)\\n unless n is a 'unit'\\n error('unit expected, got a ' + -string(n))\\n\\n// require a string\\n\\nrequire-string(str)\\n unless str is a 'string' or str is a 'ident'\\n error('string expected, got a ' + -string(str))\\n\\n// Math functions\\n\\nabs(n) { math(n, 'abs') }\\nmin(a, b) { a < b ? a : b }\\nmax(a, b) { a > b ? a : b }\\n\\n// Trigonometrics\\nPI = -math-prop('PI')\\n\\nradians-to-degrees(angle)\\n angle * (180 / PI)\\n\\ndegrees-to-radians(angle)\\n angle * (PI / 180)\\n\\nsin(n)\\n n = unit(n) == 'deg' ? degrees-to-radians(unit(n, '')) : unit(n, '')\\n round(math(n, 'sin'), 9)\\n\\ncos(n)\\n n = unit(n) == 'deg' ? degrees-to-radians(unit(n, '')) : unit(n, '')\\n round(math(n, 'cos'), 9)\\n\\n// Rounding Math functions\\n\\nceil(n, precision = 0)\\n multiplier = 10 ** precision\\n math(n * multiplier, 'ceil') / multiplier\\n\\nfloor(n, precision = 0)\\n multiplier = 10 ** precision\\n math(n * multiplier, 'floor') / multiplier\\n\\nround(n, precision = 0)\\n multiplier = 10 ** precision\\n math(n * multiplier, 'round') / multiplier\\n\\n// return the sum of the given numbers\\n\\nsum(nums)\\n sum = 0\\n sum += n for n in nums\\n\\n// return the average of the given numbers\\n\\navg(nums)\\n sum(nums) / length(nums)\\n\\n// return a unitless number, or pass through\\n\\nremove-unit(n)\\n if typeof(n) is \\\"unit\\\"\\n unit(n, \\\"\\\")\\n else\\n n\\n\\n// convert a percent to a decimal, or pass through\\n\\npercent-to-decimal(n)\\n if unit(n) is \\\"%\\\"\\n remove-unit(n) / 100\\n else\\n n\\n\\n// check if n is an odd number\\n\\nodd(n)\\n 1 == n % 2\\n\\n// check if n is an even number\\n\\neven(n)\\n 0 == n % 2\\n\\n// check if color is light\\n\\nlight(color)\\n lightness(color) >= 50%\\n\\n// check if color is dark\\n\\ndark(color)\\n lightness(color) < 50%\\n\\n// desaturate color by amount\\n\\ndesaturate(color, amount)\\n adjust(color, 'saturation', - amount)\\n\\n// saturate color by amount\\n\\nsaturate(color = '', amount = 100%)\\n if color is a 'color'\\n adjust(color, 'saturation', amount)\\n else\\n unquote( \\\"saturate(\\\" + color + \\\")\\\" )\\n\\n// darken by the given amount\\n\\ndarken(color, amount)\\n adjust(color, 'lightness', - amount)\\n\\n// lighten by the given amount\\n\\nlighten(color, amount)\\n adjust(color, 'lightness', amount)\\n\\n// decrease opacity by amount\\n\\nfade-out(color, amount)\\n color - rgba(black, percent-to-decimal(amount))\\n\\n// increase opacity by amount\\n\\nfade-in(color, amount)\\n color + rgba(black, percent-to-decimal(amount))\\n\\n// spin hue by a given amount\\n\\nspin(color, amount)\\n color + unit(amount, deg)\\n\\n// mix two colors by a given amount\\n\\nmix(color1, color2, weight = 50%)\\n unless weight in 0..100\\n error(\\\"Weight must be between 0% and 100%\\\")\\n\\n if length(color1) == 2\\n weight = color1[0]\\n color1 = color1[1]\\n\\n else if length(color2) == 2\\n weight = 100 - color2[0]\\n color2 = color2[1]\\n\\n require-color(color1)\\n require-color(color2)\\n\\n p = unit(weight / 100, '')\\n w = p * 2 - 1\\n\\n a = alpha(color1) - alpha(color2)\\n\\n w1 = (((w * a == -1) ? w : (w + a) / (1 + w * a)) + 1) / 2\\n w2 = 1 - w1\\n\\n channels = (red(color1) red(color2)) (green(color1) green(color2)) (blue(color1) blue(color2))\\n rgb = ()\\n\\n for pair in channels\\n push(rgb, floor(pair[0] * w1 + pair[1] * w2))\\n\\n a1 = alpha(color1) * p\\n a2 = alpha(color2) * (1 - p)\\n alpha = a1 + a2\\n\\n rgba(rgb[0], rgb[1], rgb[2], alpha)\\n\\n// invert colors, leave alpha intact\\n\\ninvert(color = '')\\n if color is a 'color'\\n rgba(#fff - color, alpha(color))\\n else\\n unquote( \\\"invert(\\\" + color + \\\")\\\" )\\n\\n// give complement of the given color\\n\\ncomplement( color )\\n spin( color, 180 )\\n\\n// give grayscale of the given color\\n\\ngrayscale( color = '' )\\n if color is a 'color'\\n desaturate( color, 100% )\\n else\\n unquote( \\\"grayscale(\\\" + color + \\\")\\\" )\\n\\n// mix the given color with white\\n\\ntint( color, percent )\\n mix( white, color, percent )\\n\\n// mix the given color with black\\n\\nshade( color, percent )\\n mix( black, color, percent )\\n\\n// return the last value in the given expr\\n\\nlast(expr)\\n expr[length(expr) - 1]\\n\\n// return keys in the given pairs or object\\n\\nkeys(pairs)\\n ret = ()\\n if type(pairs) == 'object'\\n for key in pairs\\n push(ret, key)\\n else\\n for pair in pairs\\n push(ret, pair[0]);\\n ret\\n\\n// return values in the given pairs or object\\n\\nvalues(pairs)\\n ret = ()\\n if type(pairs) == 'object'\\n for key, val in pairs\\n push(ret, val)\\n else\\n for pair in pairs\\n push(ret, pair[1]);\\n ret\\n\\n// join values with the given delimiter\\n\\njoin(delim, vals...)\\n buf = ''\\n vals = vals[0] if length(vals) == 1\\n for val, i in vals\\n buf += i ? delim + val : val\\n\\n// add a CSS rule to the containing block\\n\\n// - This definition allows add-property to be used as a mixin\\n// - It has the same effect as interpolation but allows users\\n// to opt for a functional style\\n\\nadd-property-function = add-property\\nadd-property(name, expr)\\n if mixin\\n {name} expr\\n else\\n add-property-function(name, expr)\\n\\nprefix-classes(prefix)\\n -prefix-classes(prefix, block)\\n\\n// Caching mixin, use inside your functions to enable caching by extending.\\n\\n$stylus_mixin_cache = {}\\ncache()\\n $key = (current-media() or 'no-media') + '__' + called-from[0] + '__' + arguments\\n if $key in $stylus_mixin_cache\\n @extend {\\\"$cache_placeholder_for_\\\" + $stylus_mixin_cache[$key]}\\n else if 'cache' in called-from\\n {block}\\n else\\n $id = length($stylus_mixin_cache)\\n\\n &,\\n /$cache_placeholder_for_{$id}\\n $stylus_mixin_cache[$key] = $id\\n {block}\\n\\n// Percentage function to convert a number, e.g. \\\".45\\\", into a percentage, e.g. \\\"45%\\\"\\n\\npercentage(num)\\n return unit(num * 100, '%')\\n\\n// Returns the position of a `value` within a `list`\\n\\nindex(list, value)\\n for val, i in list\\n return i if val == value\\n\",\"/*\\n * Vendor \\\"display: flex\\\" support with fallback to obsolete versions.\\n */\\n\\nflex-version ?= box flex\\n\\n//\\n// 1. Display values\\n// - http://www.w3.org/TR/css3-flexbox/#flex-containers\\n//\\ndisplay(type, args...)\\n if flex == type || inline-flex == type\\n if box in flex-version\\n if flex == type\\n display: -ms-flexbox args\\n display: vendor-value(box args, only: moz webkit)\\n else\\n display: -ms-inline-flexbox args\\n display: vendor-value(inline-box args, only: moz webkit)\\n if flex in flex-version\\n display: vendor-value(arguments, only: webkit official) // overwrites old webkit\\n else\\n display: arguments\\n\\n/*\\n * New syntax for browsers like Google Chrome.\\n * Plus a translation to the old syntax, if possible.\\n */\\n\\n\\n//\\n// 5. Ordering and Orientation\\n// - http://www.w3.org/TR/css3-flexbox/#ordering-and-orientation\\n//\\n-flex-obsolete-direction(direction)\\n if box in flex-version\\n if row-reverse == direction || column-reverse == direction\\n vendor('box-direction', reverse, ignore: ms official)\\n\\n if row == direction || row-reverse == direction\\n vendor('box-orient', horizontal, ignore: ms official)\\n else if column == direction || column-reverse == direction\\n vendor('box-orient', vertical, ignore: ms official)\\n\\n-flex-obsolete-wrap(value)\\n if box in flex-version\\n // WARN: wrap-reverse does not have a box equivalent. This will render in different manners\\n // on box vs. flex values.\\n if 'wrap' == value || wrap-reverse == value\\n vendor('box-lines', multiple, ignore: ms official)\\n else if nowrap == value\\n vendor('box-lines', single, ignore: ms official)\\n\\nflex-direction(direction)\\n // obsolete\\n -flex-obsolete-direction(direction)\\n\\n // new\\n if flex in flex-version\\n vendor('flex-direction', arguments, only: webkit ms official)\\n\\nflex-wrap(value)\\n // obsolete\\n -flex-obsolete-wrap(value)\\n\\n if flex in flex-version\\n vendor('flex-wrap', arguments, only: webkit ms official)\\n\\nflex-flow()\\n // obsolete\\n -flex-obsolete-direction(arguments[0])\\n -flex-obsolete-direction(arguments[1])\\n -flex-obsolete-wrap(arguments[0])\\n -flex-obsolete-wrap(arguments[1])\\n\\n // new\\n if flex in flex-version\\n vendor('flex-flow', arguments, only: webkit ms official)\\n\\n\\norder()\\n // obsolete\\n if box in flex-version\\n vendor('box-ordinal-group', arguments, ignore: ms official)\\n\\n // new\\n if flex in flex-version\\n vendor('flex-order', arguments, only: ms)\\n vendor('order', arguments, only: webkit official)\\n\\n\\n//\\n// 7. Flexibility\\n// - http://www.w3.org/TR/css3-flexbox/#flexibility\\n//\\nflex-grow(growth)\\n // obsolete\\n if box in flex-version\\n vendor('box-flex', growth)\\n\\n // new\\n if flex in flex-version\\n vendor('flex-grow', arguments, only: webkit official)\\n\\nflex-basis()\\n if flex in flex-version\\n vendor('flex-basis', arguments, only: webkit official)\\n\\nflex-shrink()\\n if flex in flex-version\\n vendor('flex-shrink', arguments, only: webkit official)\\n\\nflex(growth)\\n\\n // obsolete\\n if box in flex-version\\n shrink = 1\\n\\n if none == growth || initial == growth\\n // Well known values\\n shrink = 0 if none == growth\\n growth = 0\\n else if is-width(growth) == true\\n // Basis is defined as the first parameter\\n growth = arguments[1] || 0\\n shrink = arguments[2] if 3 <= length(arguments)\\n else if arguments[1] && is-width(arguments[1]) == false\\n // Growth is first and shrink is second\\n shrink = arguments[1]\\n\\n // Since we can't make the distinction between growing and shrinking in the box model, take\\n // the one that provides the most flexibility.\\n vendor('box-flex', max(growth, shrink), ignore: ms)\\n\\n // new\\n if flex in flex-version\\n vendor('flex', arguments, only: webkit ms official)\\n\\n\\n// converts the justification alignment\\n-convert-justify(align)\\n if flex-start == align\\n return start\\n else if flex-end == align\\n return end\\n else if space-around == align\\n return distribute\\n else if space-between == align\\n return justify\\n else\\n return align\\n\\n//\\n// 8. Alignment\\n// - http://www.w3.org/TR/css3-flexbox/#alignment\\n//\\njustify-content(align)\\n // obsolete\\n if box in flex-version\\n vendor('box-pack', -convert-justify(align), ignore: ms official)\\n\\n // new\\n if flex in flex-version\\n vendor('flex-pack', -convert-justify(align), only: ms)\\n vendor('justify-content', align, only: webkit official)\\n\\nalign-content(align)\\n // WARN: Obsolete spec does not allow for adjustment here\\n if flex in flex-version\\n vendor('flex-line-pack', -convert-justify(align), only: ms)\\n vendor('align-content', align, only: webkit official)\\n\\n// converts alignment from 'flex' to normal value\\n-convert-alignment(align)\\n if flex-start == align\\n return start\\n else if flex-end == align\\n return end\\n else\\n return align\\n\\nalign-items(align)\\n // obsolete\\n if box in flex-version\\n vendor('box-align', -convert-alignment(align), ignore: ms official)\\n\\n // new\\n if flex in flex-version\\n vendor('flex-align', -convert-alignment(align), only: ms)\\n vendor('align-items', arguments, only: webkit official)\\n\\nalign-self(align)\\n // WARN: Obsolete spec does not allow for overriding alignment on individual items.\\n if flex in flex-version\\n vendor('align-self', align, only: webkit official)\\n vendor('flex-item-align', -convert-alignment(align), only: ms)\\n\",\"/*\\n * Overflow utility. Maps to regular overflow, and adds an ellipsis value.\\n *\\n * Synopsis:\\n *\\n * overflow: \\n *\\n * Examples:\\n *\\n * overflow: auto\\n * overflow: hidden\\n * overflow: ellipsis\\n *\\n */\\n\\noverflow()\\n if arguments[0] == ellipsis\\n ellipsis()\\n else\\n overflow: arguments\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"container\": \"token-input-container\",\n\t\"container--focused\": \"token-input-container--focused\",\n\t\"container--errors\": \"token-input-container--errors\",\n\t\"token-list\": \"token-input-token-list\",\n\t\"token\": \"token-input-token\",\n\t\"token--error\": \"token-input-token--error\",\n\t\"token--editable\": \"token-input-token--editable\",\n\t\"token--active\": \"token-input-token--active\",\n\t\"autosized-wrapper\": \"token-input-autosized-wrapper\",\n\t\"token__label-wrapper\": \"token-input-token__label-wrapper\",\n\t\"token__delete-button\": \"token-input-token__delete-button\",\n\t\"token__delete-button__close-icon\": \"token-input-token__delete-button__close-icon\"\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMV0udXNlWzFdIS4uL25vZGVfbW9kdWxlcy9zdHlsdXMtbG9hZGVyL2Rpc3QvY2pzLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzFdLnVzZVsyXSEuLi9zcmMvc3R5bGVzLnN0eWwuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi9zcmMvc3R5bGVzLnN0eWw/ZDBiNiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2Nzc1dpdGhNYXBwaW5nVG9TdHJpbmcuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi50b2tlbi1pbnB1dC1jb250YWluZXIge1xcbiAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgLW1vei1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gIGN1cnNvcjogdGV4dDtcXG4gIG92ZXJmbG93LXk6IGF1dG87XFxuICBoZWlnaHQ6IDIwMHB4O1xcbiAgcGFkZGluZzogNHB4O1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcXG4gIGJvcmRlcjogMXB4IHNvbGlkICNjY2M7XFxuICBib3JkZXItcmFkaXVzOiA0cHg7XFxuICBvdXRsaW5lOiAwO1xcbn1cXG4udG9rZW4taW5wdXQtY29udGFpbmVyICosXFxuLnRva2VuLWlucHV0LWNvbnRhaW5lciAqOjpiZWZvcmUsXFxuLnRva2VuLWlucHV0LWNvbnRhaW5lciAqOjphZnRlciB7XFxuICAtd2Via2l0LWJveC1zaXppbmc6IGluaGVyaXQ7XFxuICAtbW96LWJveC1zaXppbmc6IGluaGVyaXQ7XFxuICBib3gtc2l6aW5nOiBpbmhlcml0O1xcbn1cXG4udG9rZW4taW5wdXQtY29udGFpbmVyLnRva2VuLWlucHV0LWNvbnRhaW5lci0tZm9jdXNlZCB7XFxuICBib3JkZXItY29sb3I6ICMwMDk2Y2M7XFxufVxcbi50b2tlbi1pbnB1dC1jb250YWluZXIudG9rZW4taW5wdXQtY29udGFpbmVyLnRva2VuLWlucHV0LWNvbnRhaW5lci0tZXJyb3JzIHtcXG4gIGJvcmRlci1jb2xvcjogI2RiM2Q0NDtcXG59XFxuLnRva2VuLWlucHV0LWNvbnRhaW5lciAudG9rZW4taW5wdXQtdG9rZW4tbGlzdCAudG9rZW4taW5wdXQtdG9rZW4ge1xcbiAgZmxvYXQ6IGxlZnQ7XFxuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gIGRpc3BsYXk6IC1tb3otYm94O1xcbiAgZGlzcGxheTogLXdlYmtpdC1mbGV4O1xcbiAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICBkaXNwbGF5OiBib3g7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgLXdlYmtpdC1ib3gtb3JpZW50OiBob3Jpem9udGFsO1xcbiAgLW1vei1ib3gtb3JpZW50OiBob3Jpem9udGFsO1xcbiAgLW8tYm94LW9yaWVudDogaG9yaXpvbnRhbDtcXG4gIC13ZWJraXQtYm94LWxpbmVzOiBzaW5nbGU7XFxuICAtbW96LWJveC1saW5lczogc2luZ2xlO1xcbiAgLW8tYm94LWxpbmVzOiBzaW5nbGU7XFxuICAtd2Via2l0LWZsZXgtZmxvdzogcm93IG5vd3JhcDtcXG4gIC1tcy1mbGV4LWZsb3c6IHJvdyBub3dyYXA7XFxuICBmbGV4LWZsb3c6IHJvdyBub3dyYXA7XFxuICAtd2Via2l0LWJveC1wYWNrOiBjZW50ZXI7XFxuICAtbW96LWJveC1wYWNrOiBjZW50ZXI7XFxuICAtby1ib3gtcGFjazogY2VudGVyO1xcbiAgLW1zLWZsZXgtcGFjazogY2VudGVyO1xcbiAgLXdlYmtpdC1qdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjtcXG4gIC1tb3otYm94LWFsaWduOiBjZW50ZXI7XFxuICAtby1ib3gtYWxpZ246IGNlbnRlcjtcXG4gIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7XFxuICAtd2Via2l0LWFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgLW1zLWZsZXgtbGluZS1wYWNrOiBjZW50ZXI7XFxuICAtd2Via2l0LWFsaWduLWNvbnRlbnQ6IGNlbnRlcjtcXG4gIGFsaWduLWNvbnRlbnQ6IGNlbnRlcjtcXG4gIG1heC13aWR0aDogMTAwJTtcXG4gIGhlaWdodDogMzJweDtcXG4gIGxpbmUtaGVpZ2h0OiAxLjU7XFxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xcbiAgbWFyZ2luOiAwIDRweCA0cHggMDtcXG4gIHBhZGRpbmc6IDA7XFxuICBib3JkZXI6IDA7XFxuICBib3JkZXItcmFkaXVzOiA0cHg7XFxuICBjb2xvcjogIzAwOTZjYztcXG4gIGJhY2tncm91bmQtY29sb3I6ICNjY2VhZjU7XFxuICBjdXJzb3I6IGRlZmF1bHQ7XFxufVxcbi50b2tlbi1pbnB1dC1jb250YWluZXIgLnRva2VuLWlucHV0LXRva2VuLWxpc3QgLnRva2VuLWlucHV0LXRva2VuOmhvdmVyIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNlNmY0ZmM7XFxufVxcbi50b2tlbi1pbnB1dC1jb250YWluZXIgLnRva2VuLWlucHV0LXRva2VuLWxpc3QgLnRva2VuLWlucHV0LXRva2VuLnRva2VuLWlucHV0LXRva2VuLS1lcnJvciB7XFxuICBjb2xvcjogI2RiM2Q0NDtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmOWI1YjU7XFxufVxcbi50b2tlbi1pbnB1dC1jb250YWluZXIgLnRva2VuLWlucHV0LXRva2VuLWxpc3QgLnRva2VuLWlucHV0LXRva2VuLnRva2VuLWlucHV0LXRva2VuLS1lcnJvcjpob3ZlciB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZkYWRhO1xcbn1cXG4udG9rZW4taW5wdXQtY29udGFpbmVyIC50b2tlbi1pbnB1dC10b2tlbi1saXN0IC50b2tlbi1pbnB1dC10b2tlbi50b2tlbi1pbnB1dC10b2tlbi0tZWRpdGFibGU6aG92ZXIge1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbn1cXG4udG9rZW4taW5wdXQtY29udGFpbmVyIC50b2tlbi1pbnB1dC10b2tlbi1saXN0IC50b2tlbi1pbnB1dC10b2tlbi50b2tlbi1pbnB1dC10b2tlbi0tYWN0aXZlIC50b2tlbi1pbnB1dC1hdXRvc2l6ZWQtd3JhcHBlciB7XFxuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gIGRpc3BsYXk6IC1tb3otYm94O1xcbiAgZGlzcGxheTogLXdlYmtpdC1mbGV4O1xcbiAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICBkaXNwbGF5OiBib3g7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgLXdlYmtpdC1ib3gtcGFjazogY2VudGVyO1xcbiAgLW1vei1ib3gtcGFjazogY2VudGVyO1xcbiAgLW8tYm94LXBhY2s6IGNlbnRlcjtcXG4gIC1tcy1mbGV4LXBhY2s6IGNlbnRlcjtcXG4gIC13ZWJraXQtanVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7XFxuICAtbW96LWJveC1hbGlnbjogY2VudGVyO1xcbiAgLW8tYm94LWFsaWduOiBjZW50ZXI7XFxuICAtbXMtZmxleC1hbGlnbjogY2VudGVyO1xcbiAgLXdlYmtpdC1hbGlnbi1pdGVtczogY2VudGVyO1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIC1tcy1mbGV4LWxpbmUtcGFjazogY2VudGVyO1xcbiAgLXdlYmtpdC1hbGlnbi1jb250ZW50OiBjZW50ZXI7XFxuICBhbGlnbi1jb250ZW50OiBjZW50ZXI7XFxuICBtYXJnaW46IDRweCA4cHg7XFxuICBoZWlnaHQ6IDMycHg7XFxufVxcbi50b2tlbi1pbnB1dC1jb250YWluZXIgLnRva2VuLWlucHV0LXRva2VuLWxpc3QgLnRva2VuLWlucHV0LXRva2VuLnRva2VuLWlucHV0LXRva2VuLS1hY3RpdmUgLnRva2VuLWlucHV0LWF1dG9zaXplZC13cmFwcGVyIGlucHV0IHtcXG4gIGhlaWdodDogYXV0bztcXG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjYWFhO1xcbn1cXG4udG9rZW4taW5wdXQtY29udGFpbmVyIC50b2tlbi1pbnB1dC10b2tlbi1saXN0IC50b2tlbi1pbnB1dC10b2tlbiAudG9rZW4taW5wdXQtdG9rZW5fX2xhYmVsLXdyYXBwZXIge1xcbiAgLXdlYmtpdC1ib3gtZmxleDogMTtcXG4gIC1tb3otYm94LWZsZXg6IDE7XFxuICAtby1ib3gtZmxleDogMTtcXG4gIGJveC1mbGV4OiAxO1xcbiAgLXdlYmtpdC1mbGV4OiAxIDAgMDtcXG4gIC1tcy1mbGV4OiAxIDAgMDtcXG4gIGZsZXg6IDEgMCAwO1xcbiAgbWFyZ2luOiAwIDhweDtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICAtby10ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcXG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xcbn1cXG4udG9rZW4taW5wdXQtY29udGFpbmVyIC50b2tlbi1pbnB1dC10b2tlbi1saXN0IC50b2tlbi1pbnB1dC10b2tlbiAudG9rZW4taW5wdXQtdG9rZW5fX2RlbGV0ZS1idXR0b24ge1xcbiAgLXdlYmtpdC1ib3gtZmxleDogMTtcXG4gIC1tb3otYm94LWZsZXg6IDE7XFxuICAtby1ib3gtZmxleDogMTtcXG4gIGJveC1mbGV4OiAxO1xcbiAgLXdlYmtpdC1mbGV4OiAwIDAgMDtcXG4gIC1tcy1mbGV4OiAwIDAgMDtcXG4gIGZsZXg6IDAgMCAwO1xcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICBkaXNwbGF5OiAtbW96LWJveDtcXG4gIGRpc3BsYXk6IC13ZWJraXQtZmxleDtcXG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgZGlzcGxheTogYm94O1xcbiAgZGlzcGxheTogZmxleDtcXG4gIC13ZWJraXQtYm94LXBhY2s6IGNlbnRlcjtcXG4gIC1tb3otYm94LXBhY2s6IGNlbnRlcjtcXG4gIC1vLWJveC1wYWNrOiBjZW50ZXI7XFxuICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7XFxuICAtd2Via2l0LWp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyO1xcbiAgLW1vei1ib3gtYWxpZ246IGNlbnRlcjtcXG4gIC1vLWJveC1hbGlnbjogY2VudGVyO1xcbiAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjtcXG4gIC13ZWJraXQtYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAtbXMtZmxleC1saW5lLXBhY2s6IGNlbnRlcjtcXG4gIC13ZWJraXQtYWxpZ24tY29udGVudDogY2VudGVyO1xcbiAgYWxpZ24tY29udGVudDogY2VudGVyO1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgcGFkZGluZzogMnB4IDhweDtcXG4gIGN1cnNvcjogcG9pbnRlcjtcXG4gIG9wYWNpdHk6IDAuMztcXG4gIC1tcy1maWx0ZXI6IFxcXCJwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT0zMClcXFwiO1xcbiAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTMwKTtcXG4gIGJvcmRlci1sZWZ0OiAxcHggc29saWQgI2FhYTtcXG4gIGJvcmRlci1yYWRpdXM6IDAgNHB4IDRweCAwO1xcbn1cXG4udG9rZW4taW5wdXQtY29udGFpbmVyIC50b2tlbi1pbnB1dC10b2tlbi1saXN0IC50b2tlbi1pbnB1dC10b2tlbiAudG9rZW4taW5wdXQtdG9rZW5fX2RlbGV0ZS1idXR0b246aG92ZXIge1xcbiAgb3BhY2l0eTogMTtcXG4gIC1tcy1maWx0ZXI6IG5vbmU7XFxuICBmaWx0ZXI6IG5vbmU7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYWFhO1xcbn1cXG4udG9rZW4taW5wdXQtY29udGFpbmVyIC50b2tlbi1pbnB1dC10b2tlbi1saXN0IC50b2tlbi1pbnB1dC10b2tlbiAudG9rZW4taW5wdXQtdG9rZW5fX2RlbGV0ZS1idXR0b246aG92ZXIgLnRva2VuLWlucHV0LXRva2VuX19kZWxldGUtYnV0dG9uX19jbG9zZS1pY29uOmJlZm9yZSxcXG4udG9rZW4taW5wdXQtY29udGFpbmVyIC50b2tlbi1pbnB1dC10b2tlbi1saXN0IC50b2tlbi1pbnB1dC10b2tlbiAudG9rZW4taW5wdXQtdG9rZW5fX2RlbGV0ZS1idXR0b246aG92ZXIgLnRva2VuLWlucHV0LXRva2VuX19kZWxldGUtYnV0dG9uX19jbG9zZS1pY29uOmFmdGVyIHtcXG4gIGJvcmRlci1jb2xvcjogI2ZmZjtcXG59XFxuLnRva2VuLWlucHV0LWNvbnRhaW5lciAudG9rZW4taW5wdXQtdG9rZW4tbGlzdCAudG9rZW4taW5wdXQtdG9rZW4gLnRva2VuLWlucHV0LXRva2VuX19kZWxldGUtYnV0dG9uIC50b2tlbi1pbnB1dC10b2tlbl9fZGVsZXRlLWJ1dHRvbl9fY2xvc2UtaWNvbiB7XFxuICB3aWR0aDogMTRweDtcXG4gIGhlaWdodDogMTRweDtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG59XFxuLnRva2VuLWlucHV0LWNvbnRhaW5lciAudG9rZW4taW5wdXQtdG9rZW4tbGlzdCAudG9rZW4taW5wdXQtdG9rZW4gLnRva2VuLWlucHV0LXRva2VuX19kZWxldGUtYnV0dG9uIC50b2tlbi1pbnB1dC10b2tlbl9fZGVsZXRlLWJ1dHRvbl9fY2xvc2UtaWNvbjpiZWZvcmUsXFxuLnRva2VuLWlucHV0LWNvbnRhaW5lciAudG9rZW4taW5wdXQtdG9rZW4tbGlzdCAudG9rZW4taW5wdXQtdG9rZW4gLnRva2VuLWlucHV0LXRva2VuX19kZWxldGUtYnV0dG9uIC50b2tlbi1pbnB1dC10b2tlbl9fZGVsZXRlLWJ1dHRvbl9fY2xvc2UtaWNvbjphZnRlciB7XFxuICBjb250ZW50OiAnJztcXG4gIGhlaWdodDogMTRweDtcXG4gIGxlZnQ6IDZweDtcXG4gIGJvcmRlci1sZWZ0OiAycHggc29saWQgIzIyMjtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG59XFxuLnRva2VuLWlucHV0LWNvbnRhaW5lciAudG9rZW4taW5wdXQtdG9rZW4tbGlzdCAudG9rZW4taW5wdXQtdG9rZW4gLnRva2VuLWlucHV0LXRva2VuX19kZWxldGUtYnV0dG9uIC50b2tlbi1pbnB1dC10b2tlbl9fZGVsZXRlLWJ1dHRvbl9fY2xvc2UtaWNvbjpiZWZvcmUge1xcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpO1xcbiAgLW1vei10cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpO1xcbiAgLW8tdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKTtcXG4gIC1tcy10cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpO1xcbiAgdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKTtcXG59XFxuLnRva2VuLWlucHV0LWNvbnRhaW5lciAudG9rZW4taW5wdXQtdG9rZW4tbGlzdCAudG9rZW4taW5wdXQtdG9rZW4gLnRva2VuLWlucHV0LXRva2VuX19kZWxldGUtYnV0dG9uIC50b2tlbi1pbnB1dC10b2tlbl9fZGVsZXRlLWJ1dHRvbl9fY2xvc2UtaWNvbjphZnRlciB7XFxuICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTtcXG4gIC1tb3otdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpO1xcbiAgLW8tdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpO1xcbiAgLW1zLXRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTtcXG4gIHRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTtcXG59XFxuLnRva2VuLWlucHV0LWNvbnRhaW5lciAudG9rZW4taW5wdXQtYXV0b3NpemVkLXdyYXBwZXIge1xcbiAgZmxvYXQ6IGxlZnQ7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgbWFyZ2luLXJpZ2h0OiA0cHg7XFxufVxcbi50b2tlbi1pbnB1dC1jb250YWluZXIgLnRva2VuLWlucHV0LWF1dG9zaXplZC13cmFwcGVyIGlucHV0IHtcXG4gIGhlaWdodDogMzJweDtcXG4gIG1hcmdpbjogMDtcXG4gIHBhZGRpbmc6IDA7XFxuICBib3JkZXI6IDA7XFxuICBvdXRsaW5lOiAwO1xcbiAgY3Vyc29yOiB0ZXh0O1xcbiAgLXdlYmtpdC1ib3gtc2hhZG93OiBub25lO1xcbiAgYm94LXNoYWRvdzogbm9uZTtcXG4gIGJhY2tncm91bmQ6IG5vbmU7XFxuICBjb2xvcjogIzIyMjtcXG59XFxuXCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vLi4vc3JjL3N0eWxlcy5zdHlsXCIsXCJ3ZWJwYWNrOi8vLi8uLi9ub2RlX21vZHVsZXMvbmliL2xpYi9uaWIvdmVuZG9yLnN0eWxcIixcIndlYnBhY2s6Ly8uLy4uL25vZGVfbW9kdWxlcy9uaWIvbGliL25pYi9ib3JkZXIuc3R5bFwiLFwid2VicGFjazovLy4vLi4vbm9kZV9tb2R1bGVzL25pYi9saWIvbmliL2JvcmRlci1yYWRpdXMuc3R5bFwiLFwid2VicGFjazovLy4vLi4vbm9kZV9tb2R1bGVzL25pYi9saWIvbmliL3NpemUuc3R5bFwiLFwid2VicGFjazovLy4vLi4vbm9kZV9tb2R1bGVzL3N0eWx1cy9saWIvZnVuY3Rpb25zL2luZGV4LnN0eWxcIixcIndlYnBhY2s6Ly8uLy4uL25vZGVfbW9kdWxlcy9uaWIvbGliL25pYi9mbGV4LnN0eWxcIixcIndlYnBhY2s6Ly8uLy4uL25vZGVfbW9kdWxlcy9uaWIvbGliL25pYi9vdmVyZmxvdy5zdHlsXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUFBO0VDMkNrQiw4QkFBRztFQUFILDJCQUFHO0VBUk4sc0JBQUc7RUEyZGQsWUFBTztFRHBmUCxnQkFBWTtFQUNaLGFBQVE7RUFFUixZQUFTO0VBRVQsc0JBQWtCO0VFTmxCLHNCQUFRO0VDMkNWLGtCQUFjO0VIOUJaLFVBQVM7QUFWYjtBQVRJOzs7RUN3Q2MsMkJBQUc7RUFBSCx3QkFBRztFQVJOLG1CQUFHO0FEaEJsQjtBQUtJO0VBQ0kscUJBQWM7QUFIdEI7QUFLSTtFQUNJLHFCQUFjO0FBSHRCO0FBT1E7RUFDSSxXQUFPO0VJTkssb0JDOE9RO0VEOU9SLGlCQzhPUTtFRDlPUixxQkM4T1E7RUMzUHhCLG9CQUFTO0VBQ1QsWUFBUztFQUtYLGFBQVM7RUx1QkcsOEJBQUc7RUFBSCwyQkFBRztFQUFILHlCQUFHO0VBQUgseUJBQUc7RUFBSCxzQkFBRztFQUFILG9CQUFHO0VBQUgsNkJBQUc7RUFBSCx5QkFBRztFQVJOLHFCQUFHO0VBUUEsd0JBQUc7RUFBSCxxQkFBRztFQUFILG1CQUFHO0VBQUgscUJBQUc7RUFBSCwrQkFBRztFQVJOLHVCQUFHO0VBUUEseUJBQUc7RUFBSCxzQkFBRztFQUFILG9CQUFHO0VBQUgsc0JBQUc7RUFBSCwyQkFBRztFQVJOLG1CQUFHO0VBUUEsMEJBQUc7RUFBSCw2QkFBRztFQVJOLHFCQUFHO0VETU4sZUFBVztFQUlYLFlBQVE7RUFDUixnQkFBYTtFQUNiLG1CQUFhO0VBRWIsbUJBQVE7RUFDUixVQUFTO0VFekNqQixTQUFRO0VDMkNWLGtCQUFjO0VIR0osY0FBTztFQUNQLHlCQUFrQjtFQ3NjMUIsZUFBTztBRHpiWDtBQVRZO0VBQ0kseUJBQWtCO0FBV2xDO0FBUlk7RUFDSSxjQUFPO0VBQ1AseUJBQWtCO0FBVWxDO0FBUmdCO0VBQ0kseUJBQWtCO0FBVXRDO0FBTlk7RUNxYlIsZUFBTztBRDVhWDtBQUpnQjtFSW5EUSxvQkM4T1E7RUQ5T1IsaUJDOE9RO0VEOU9SLHFCQzhPUTtFQzNQeEIsb0JBQVM7RUFDVCxZQUFTO0VBS1gsYUFBUztFTHVCRyx3QkFBRztFQUFILHFCQUFHO0VBQUgsbUJBQUc7RUFBSCxxQkFBRztFQUFILCtCQUFHO0VBUk4sdUJBQUc7RUFRQSx5QkFBRztFQUFILHNCQUFHO0VBQUgsb0JBQUc7RUFBSCxzQkFBRztFQUFILDJCQUFHO0VBUk4sbUJBQUc7RUFRQSwwQkFBRztFQUFILDZCQUFHO0VBUk4scUJBQUc7RURpREUsZUFBUTtFQUNSLFlBQVE7QUFzQjVCO0FBcEJvQjtFQUNJLFlBQVE7RUFDUiw2QkFBZTtBQXNCdkM7QUFYWTtFQ3pETSxtQkFBRztFQUFILGdCQUFHO0VBQUgsY0FBRztFQVJOLFdBQUc7RUFRQSxtQkFBRztFQUFILGVBQUc7RUFSTixXQUFHO0VEb0VGLGFBQVE7RU9wRnBCLGdCQUFVO0VOd0JJLDBCQUFHO0VBUk4sdUJBQUc7QUR5RmxCO0FBaEJZO0VDakVNLG1CQUFHO0VBQUgsZ0JBQUc7RUFBSCxjQUFHO0VBUk4sV0FBRztFQVFBLG1CQUFHO0VBQUgsZUFBRztFQVJOLFdBQUc7RUdSTSxvQkM4T1E7RUQ5T1IsaUJDOE9RO0VEOU9SLHFCQzhPUTtFQzNQeEIsb0JBQVM7RUFDVCxZQUFTO0VBS1gsYUFBUztFTHVCRyx3QkFBRztFQUFILHFCQUFHO0VBQUgsbUJBQUc7RUFBSCxxQkFBRztFQUFILCtCQUFHO0VBUk4sdUJBQUc7RUFRQSx5QkFBRztFQUFILHNCQUFHO0VBQUgsb0JBQUc7RUFBSCxzQkFBRztFQUFILDJCQUFHO0VBUk4sbUJBQUc7RUFRQSwwQkFBRztFQUFILDZCQUFHO0VBUk4scUJBQUc7RURnRkYsWUFBUTtFQUNSLGdCQUFTO0VDMFlyQixlQUFPO0VBbFBULFlBQVM7RUFXSCxpRUFBeUU7RUFDekUseUJBQWlDO0VEL0p6QiwyQkFBYTtFR3JFM0IsMEJBQWM7QUg4R2hCO0FBdENnQjtFQ2dKZCxVQUFTO0VBUUgsZ0JBQVk7RUFDWixZQUFRO0VEdkpJLHNCQUFrQjtBQTBDdEM7QUF2Q3dCOztFQUVJLGtCQUFjO0FBeUMxQztBQXBDZ0I7RUFDSSxXQUFPO0VBQ1AsWUFBUTtFQUNSLGtCQUFVO0FBc0M5QjtBQXBDb0I7O0VBRUksV0FBUztFQUNULFlBQVE7RUFDUixTQUFNO0VBQ04sMkJBQWE7RUFDYixrQkFBVTtBQXNDbEM7QUFwQ29CO0VDMUdGLGlDQUFHO0VBQUgsOEJBQUc7RUFBSCw0QkFBRztFQUFILDZCQUFHO0VBUk4seUJBQUc7QUQ2SmxCO0FBeENvQjtFQzdHRixnQ0FBRztFQUFILDZCQUFHO0VBQUgsMkJBQUc7RUFBSCw0QkFBRztFQVJOLHdCQUFHO0FEb0tsQjtBQXZDSTtFQUNJLFdBQU87RU85SVgsZ0JBQVU7RVBnSk4saUJBQWM7QUF5Q3RCO0FBdkNRO0VBQ0ksWUFBUTtFQUNSLFNBQVE7RUFDUixVQUFTO0VFL0pqQixTQUFRO0VGcUtBLFVBQVM7RUNnVmpCLFlBQU87RUFuZE8sd0JBQUc7RUFSTixnQkFBRztFQStjZCxnQkFBVztFRC9USCxXQUFPO0FBcUNuQlwiLFwic291cmNlc0NvbnRlbnRcIjpbXCIuY29udGFpbmVyIHtcXG4gICAgLy8gaHR0cHM6Ly93d3cucGF1bGlyaXNoLmNvbS8yMDEyL2JveC1zaXppbmctYm9yZGVyLWJveC1mdHcvXFxuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICAgICosIFxcbiAgICAqOjpiZWZvcmUsIFxcbiAgICAqOjphZnRlciB7XFxuICAgICAgICBib3gtc2l6aW5nOiBpbmhlcml0O1xcbiAgICB9XFxuICAgIFxcbiAgICBjdXJzb3I6IHRleHQ7XFxuICAgIG92ZXJmbG93LXk6IGF1dG87XFxuICAgIGhlaWdodDogMjAwcHg7XFxuXFxuICAgIHBhZGRpbmc6IDRweDtcXG5cXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcXG5cXG4gICAgYm9yZGVyOiAxcHggc29saWQgI2NjYztcXG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xcblxcbiAgICAvLyByZW1vdmUgZm9jdXNlIGJvcmRlciBzdHlsZSBvZiBtYWMgc3lzeXRlbVxcbiAgICAvLyBvdXRsaW5lOiBub25lOyBcXG4gICAgb3V0bGluZTogMDtcXG5cXG4gICAgJi5jb250YWluZXItLWZvY3VzZWQge1xcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAjMDA5NmNjO1xcbiAgICB9XFxuICAgICYmLmNvbnRhaW5lci0tZXJyb3JzIHtcXG4gICAgICAgIGJvcmRlci1jb2xvcjogI2RiM2Q0NDtcXG4gICAgfVxcblxcbiAgICAudG9rZW4tbGlzdCB7XFxuICAgICAgICAudG9rZW4ge1xcbiAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xcblxcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgICAgICAgICAgZmxleC1mbG93OiByb3cgbm93cmFwO1xcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAgICAgICAgICAgYWxpZ24tY29udGVudDogY2VudGVyO1xcblxcbiAgICAgICAgICAgIG1heC13aWR0aDogMTAwJTtcXG4gICAgICAgICAgICAvLyBUT0RPOiBTZXQgbWluaW11bT9cXG4gICAgICAgICAgICAvLyBtaW4td2lkdGg6IDEwMHB4O1xcblxcbiAgICAgICAgICAgIGhlaWdodDogMzJweDtcXG4gICAgICAgICAgICBsaW5lLWhlaWdodDogMS41O1xcbiAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XFxuICAgICAgICAgICAgXFxuICAgICAgICAgICAgbWFyZ2luOiAwIDRweCA0cHggMDtcXG4gICAgICAgICAgICBwYWRkaW5nOiAwOyBcXG5cXG4gICAgICAgICAgICBib3JkZXI6IDA7XFxuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xcblxcbiAgICAgICAgICAgIGNvbG9yOiAjMDA5NmNjO1xcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNjY2VhZjU7XFxuXFxuICAgICAgICAgICAgY3Vyc29yOiBkZWZhdWx0O1xcblxcbiAgICAgICAgICAgICY6aG92ZXIge1xcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTZmNGZjO1xcbiAgICAgICAgICAgIH1cXG5cXG4gICAgICAgICAgICAmLnRva2VuLS1lcnJvciB7XFxuICAgICAgICAgICAgICAgIGNvbG9yOiAjZGIzZDQ0O1xcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjliNWI1O1xcblxcbiAgICAgICAgICAgICAgICAmOmhvdmVyIHtcXG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmRhZGE7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9XFxuXFxuICAgICAgICAgICAgJi50b2tlbi0tZWRpdGFibGU6aG92ZXIge1xcbiAgICAgICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XFxuICAgICAgICAgICAgfVxcblxcbiAgICAgICAgICAgICYudG9rZW4tLWFjdGl2ZSB7XFxuICAgICAgICAgICAgICAgIC5hdXRvc2l6ZWQtd3JhcHBlciB7XFxuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICAgICAgICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICAgICAgICAgICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgICAgICAgICAgICAgICAgICAgYWxpZ24tY29udGVudDogY2VudGVyO1xcblxcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luOiA0cHggOHB4O1xcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMnB4O1xcblxcbiAgICAgICAgICAgICAgICAgICAgaW5wdXQge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogYXV0bztcXG4gICAgICAgICAgICAgICAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2FhYTtcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBcXG4gICAgICAgICAgICAvLyAmLnRva2VuLS1yZWFkLW9ubHkge1xcbiAgICAgICAgICAgIC8vICAgICAudG9rZW5fX2xhYmVsLXdyYXBwZXIge1xcbiAgICAgICAgICAgIC8vICAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xcbiAgICAgICAgICAgIC8vICAgICB9XFxuICAgICAgICAgICAgLy8gfVxcbiAgICAgICAgICAgIFxcbiAgICAgICAgICAgIC50b2tlbl9fbGFiZWwtd3JhcHBlciB7XFxuICAgICAgICAgICAgICAgIGZsZXg6IDEgMCAwO1xcblxcbiAgICAgICAgICAgICAgICBtYXJnaW46IDAgOHB4O1xcbiAgICAgICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgICAgICAgICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgXFxuICAgICAgICAgICAgLnRva2VuX19kZWxldGUtYnV0dG9uIHtcXG4gICAgICAgICAgICAgICAgZmxleDogMCAwIDA7XFxuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgICAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgICAgICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgICAgICAgICAgICAgICBhbGlnbi1jb250ZW50OiBjZW50ZXI7XFxuXFxuICAgICAgICAgICAgICAgIGhlaWdodDogMTAwJTtcXG4gICAgICAgICAgICAgICAgcGFkZGluZzogMnB4IDhweDtcXG5cXG4gICAgICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xcbiAgICAgICAgICAgICAgICBvcGFjaXR5OiAwLjM7XFxuXFxuICAgICAgICAgICAgICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgI2FhYTtcXG4gICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMCA0cHggNHB4IDA7XFxuXFxuICAgICAgICAgICAgICAgICY6aG92ZXIge1xcbiAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMTtcXG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNhYWE7XFxuXFxuICAgICAgICAgICAgICAgICAgICAudG9rZW5fX2RlbGV0ZS1idXR0b25fX2Nsb3NlLWljb24ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICY6YmVmb3JlLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICY6YWZ0ZXIge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXItY29sb3I6ICNmZmY7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9XFxuXFxuICAgICAgICAgICAgICAgIC50b2tlbl9fZGVsZXRlLWJ1dHRvbl9fY2xvc2UtaWNvbiB7XFxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogMTRweDtcXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogMTRweDtcXG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG5cXG4gICAgICAgICAgICAgICAgICAgICY6YmVmb3JlLFxcbiAgICAgICAgICAgICAgICAgICAgJjphZnRlciB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogJyc7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxNHB4O1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6IDZweDtcXG4gICAgICAgICAgICAgICAgICAgICAgICBib3JkZXItbGVmdDogMnB4IHNvbGlkICMyMjI7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgJjpiZWZvcmUge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKC00NWRlZyk7XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAmOmFmdGVyIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgIH1cXG5cXG4gICAgLmF1dG9zaXplZC13cmFwcGVyIHtcXG4gICAgICAgIGZsb2F0OiBsZWZ0O1xcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gICAgICAgIG1hcmdpbi1yaWdodDogNHB4O1xcbiAgICAgICAgXFxuICAgICAgICBpbnB1dCB7XFxuICAgICAgICAgICAgaGVpZ2h0OiAzMnB4O1xcbiAgICAgICAgICAgIG1hcmdpbjogMDtcXG4gICAgICAgICAgICBwYWRkaW5nOiAwO1xcblxcbiAgICAgICAgICAgIGJvcmRlcjogMDtcXG5cXG4gICAgICAgICAgICAvLyByZW1vdmUgZm9jdXNlIGJvcmRlciBzdHlsZSBvZiBtYWMgc3lzeXRlbVxcbiAgICAgICAgICAgIC8vIG91dGxpbmU6IG5vbmU7IFxcbiAgICAgICAgICAgIG91dGxpbmU6IDA7XFxuXFxuICAgICAgICAgICAgY3Vyc29yOiB0ZXh0O1xcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IG5vbmU7XFxuICAgICAgICAgICAgYmFja2dyb3VuZDogbm9uZTtcXG4gICAgICAgICAgICBjb2xvcjogIzIyMjtcXG4gICAgICAgIH1cXG4gICAgfVxcbn1cXG5cIixcInVzZSgnLi4vbm9kZXMvdmVuZG9yLWhlbHBlcnMuanMnKVxcbkBpbXBvcnQgJ2NvbmZpZydcXG5cXG4vKlxcbiAqIEFsaWFzIFxcXCJub3dyYXBcXFwiIGFzIFxcXCJuby13cmFwXFxcIi5cXG4gKi9cXG5cXG5uby13cmFwID0gdW5xdW90ZSgnbm93cmFwJylcXG5cXG4vKlxcbiAqIEhlbHBlciB0byBmaW5kIG91dCBpZiBhIGdpdmVuIHZhbHVlIGlzIGEgd2lkdGhcXG4gKi9cXG5cXG5pcy13aWR0aCh2YWwpXFxuICBpZiBhdXRvID09IHZhbFxcbiAgICByZXR1cm4gdHJ1ZVxcbiAgZWxzZSBpZiB2YWwgJiYgJ3VuaXQnID09IHR5cGUodmFsKVxcbiAgICAvLyBTdHlsdXMgZG9lcyBub3Qgc2hvcnQgY2lyY3VpdCBzbyB3ZSBuZWVkIHRvIHBlcmZvcm0gdGhpcyBhcyBhIGRpc3RpbmN0XFxuICAgIC8vIG9wZXJhdGlvbiB0byBwcmV2ZW50IGVycm9yc1xcbiAgICByZXR1cm4gJycgIT0gdW5pdCh2YWwpXFxuICByZXR1cm4gZmFsc2VcXG5cXG4vKlxcbiAqIFZlbmRvciBzdXBwb3J0IGZvciB0aGUgZ2l2ZW4gcHJvcCAvIGFyZ3VtZW50cywgb3B0aW9uYWxseSBzcGVjaWZ5aW5nIHRoZVxcbiAqIG9ubHkgcHJlZml4ZXMgdG8gdXRpbGl6ZSwgb3IgdGhvc2Ugd2hpY2ggc2hvdWxkIGJlIGlnbm9yZWQuXFxuICovXFxuXFxudmVuZG9yKHByb3AsIGFyZ3MsIG9ubHkgPSBudWxsLCBpZ25vcmUgPSBudWxsLCB2ZW5kb3ItcHJvcGVydHkgPSB0cnVlKVxcbiAgbmVlZF9ub3JtYWxpemUgPSAhdmVuZG9yLXByb3BlcnR5IG9yIHByb3AgaW4gKCd0cmFuc2l0aW9uJyAndHJhbnNpdGlvbi1wcm9wZXJ0eScgJ2JvcmRlci1pbWFnZScgJ2JvcmRlci1pbWFnZS1zbGljZScpXFxuICBmb3IgcHJlZml4IGluIHZlbmRvci1wcmVmaXhlc1xcbiAgICB1bmxlc3MgKG9ubHkgYW5kICEocHJlZml4IGluIG9ubHkpKSBvciAoaWdub3JlIGFuZCBwcmVmaXggaW4gaWdub3JlKVxcbiAgICAgIGlmIG9mZmljaWFsID09IHByZWZpeFxcbiAgICAgICAgaWYgbmVlZF9ub3JtYWxpemVcXG4gICAgICAgICAge3Byb3B9OiBub3JtYWxpemUocHJvcCwoJyVzJyAlIGFyZ3MpKVxcbiAgICAgICAgZWxzZVxcbiAgICAgICAgICB7cHJvcH06IGFyZ3NcXG4gICAgICBlbHNlXFxuICAgICAgICBuZXdwcm9wID0gcHJvcFxcbiAgICAgICAgbmV3cHJvcCA9ICctJyArIHByZWZpeCArICctJyArIHByb3AgaWYgdmVuZG9yLXByb3BlcnR5XFxuXFxuICAgICAgICBpZiBuZWVkX25vcm1hbGl6ZVxcbiAgICAgICAgICB7bmV3cHJvcH06IG5vcm1hbGl6ZShwcm9wLCgnJXMnICUgYXJncykscHJlZml4KVxcbiAgICAgICAgZWxzZVxcbiAgICAgICAgICB7bmV3cHJvcH06IGFyZ3NcXG4vKlxcbiAqIFZlbmRvcml6ZSB0aGUgZ2l2ZW4gdmFsdWUuXFxuICovXFxuXFxudmVuZG9yLXZhbHVlKGFyZywgb25seSA9IG51bGwsIGlnbm9yZSA9IG51bGwpXFxuICBwcm9wID0gY3VycmVudC1wcm9wZXJ0eVswXVxcbiAgZm9yIHByZWZpeCBpbiB2ZW5kb3ItcHJlZml4ZXNcXG4gICAgdW5sZXNzIChvbmx5IGFuZCAhKHByZWZpeCBpbiBvbmx5KSkgb3IgKGlnbm9yZSBhbmQgcHJlZml4IGluIGlnbm9yZSkgb3Igb2ZmaWNpYWwgPT0gcHJlZml4XFxuICAgICAgYWRkLXByb3BlcnR5KHByb3AsICctJXMtJXMnICUgKHByZWZpeCBhcmcpKVxcbiAgYXJnXFxuXFxuLypcXG4gKiBWZW5kb3IgXFxcImJveC1zaGFkb3dcXFwiIHN1cHBvcnQuXFxuICovXFxuXFxuYm94LXNoYWRvdygpXFxuICB2ZW5kb3IoJ2JveC1zaGFkb3cnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBvZmZpY2lhbClcXG5cXG4vKlxcbiAqIFZlbmRvciBcXFwidXNlci1zZWxlY3RcXFwiIHN1cHBvcnQuXFxuICovXFxuXFxudXNlci1zZWxlY3QoKVxcbiAgdmVuZG9yKCd1c2VyLXNlbGVjdCcsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1veiBtcyBvZmZpY2lhbClcXG5cXG4vKlxcbiAqIFZlbmRvciBcXFwiY29sdW1uLWNvdW50XFxcIiBzdXBwb3J0LlxcbiAqL1xcblxcbmNvbHVtbi1jb3VudCgpXFxuICB2ZW5kb3IoJ2NvbHVtbi1jb3VudCcsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1veiBvZmZpY2lhbClcXG5cXG4vKlxcbiAqIFZlbmRvciBcXFwiY29sdW1uLWdhcFxcXCIgc3VwcG9ydC5cXG4gKi9cXG5cXG5jb2x1bW4tZ2FwKClcXG4gIHZlbmRvcignY29sdW1uLWdhcCcsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1veiBvZmZpY2lhbClcXG5cXG4vKlxcbiAqIFZlbmRvciBcXFwiY29sdW1uLXJ1bGVcXFwiIHN1cHBvcnQuXFxuICovXFxuXFxuY29sdW1uLXJ1bGUoKVxcbiAgdmVuZG9yKCdjb2x1bW4tcnVsZScsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1veiBvZmZpY2lhbClcXG5cXG4vKlxcbiAqIFZlbmRvciBcXFwiY29sdW1uLXJ1bGUtY29sb3JcXFwiIHN1cHBvcnQuXFxuICovXFxuXFxuY29sdW1uLXJ1bGUtY29sb3IoKVxcbiAgdmVuZG9yKCdjb2x1bW4tcnVsZS1jb2xvcicsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1veiBvZmZpY2lhbClcXG5cXG4vKlxcbiAqIFZlbmRvciBcXFwiY29sdW1uLXJ1bGUtd2lkdGhcXFwiIHN1cHBvcnQuXFxuICovXFxuXFxuY29sdW1uLXJ1bGUtd2lkdGgoKVxcbiAgdmVuZG9yKCdjb2x1bW4tcnVsZS13aWR0aCcsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1veiBvZmZpY2lhbClcXG5cXG4vKlxcbiAqIFZlbmRvciBcXFwiY29sdW1uLXJ1bGUtc3R5bGVcXFwiIHN1cHBvcnQuXFxuICovXFxuXFxuY29sdW1uLXJ1bGUtc3R5bGUoKVxcbiAgdmVuZG9yKCdjb2x1bW4tcnVsZS1zdHlsZScsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1veiBvZmZpY2lhbClcXG5cXG4vKlxcbiAqIFZlbmRvciBcXFwiY29sdW1uLXdpZHRoXFxcIiBzdXBwb3J0LlxcbiAqL1xcblxcbmNvbHVtbi13aWR0aCgpXFxuICB2ZW5kb3IoJ2NvbHVtbi13aWR0aCcsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1veiBvZmZpY2lhbClcXG5cXG4vKlxcbiAqIFZlbmRvciBcXFwiY29sdW1uLXNwYW5cXFwiIHN1cHBvcnQuXFxuICovXFxuXFxuY29sdW1uLXNwYW4oKVxcbiAgdmVuZG9yKCdjb2x1bW4tc3BhbicsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG9mZmljaWFsKVxcblxcbi8qXFxuICogVmVuZG9yIFxcXCJjb2x1bW4tZmlsbFxcXCIgc3VwcG9ydC5cXG4gKi9cXG5cXG5jb2x1bW4tZmlsbCgpXFxuICB2ZW5kb3IoJ2NvbHVtbi1maWxsJywgYXJndW1lbnRzLCBvbmx5OiBtb3opXFxuXFxuLypcXG4gKiBMZWdhY3kgc3ludGF4IHN1cHBvcnQgZm9yIGJhY2tncm91bmQtY2xpcCBhbmQgYmFja2dyb3VuZC1vcmlnaW5cXG4gKi9cXG5cXG5sZWdhY3ktYmctdmFsdWVzKHByb3BlcnR5LCBhcmdzKVxcbiAgbGVnYWN5X2FyZ3MgPSAoKVxcbiAgaW1wb3J0YW5jZSA9IHVucXVvdGUoJycpXFxuICBmb3Igc3ViYXJncyBpbiBhcmdzXFxuICAgIGZvciBhcmcgaW4gc3ViYXJnc1xcbiAgICAgIGlmIGFyZyBpbiAoYm9yZGVyLWJveCBwYWRkaW5nLWJveCBjb250ZW50LWJveClcXG4gICAgICAgIGFyZyA9IHVucXVvdGUoJ2JvcmRlcicpICBpZiBhcmcgPT0gYm9yZGVyLWJveFxcbiAgICAgICAgYXJnID0gdW5xdW90ZSgncGFkZGluZycpIGlmIGFyZyA9PSBwYWRkaW5nLWJveFxcbiAgICAgICAgYXJnID0gdW5xdW90ZSgnY29udGVudCcpIGlmIGFyZyA9PSBjb250ZW50LWJveFxcbiAgICAgIGlmIGFyZyAhPSAnIWltcG9ydGFudCdcXG4gICAgICAgIHB1c2gobGVnYWN5X2FyZ3MsYXJnKVxcbiAgICAgIGVsc2VcXG4gICAgICAgIGltcG9ydGFuY2UgPSAhaW1wb3J0YW50XFxuICB2ZW5kb3IocHJvcGVydHksIHVucXVvdGUoam9pbignLCAnLGxlZ2FjeV9hcmdzKSkgaW1wb3J0YW5jZSwgb25seTogbW96IHdlYmtpdClcXG5cXG4vKlxcbiAqIFZlbmRvciBcXFwiYmFja2dyb3VuZC1jbGlwXFxcIiBzdXBwb3J0LlxcbiAqL1xcblxcbmJhY2tncm91bmQtY2xpcCgpXFxuICBpZiBhcmd1bWVudHNbMF0gPT0gdGV4dFxcbiAgICB2ZW5kb3IoJ2JhY2tncm91bmQtY2xpcCcsIGFyZ3VtZW50cywgb25seTogd2Via2l0KVxcbiAgZWxzZVxcbiAgICBsZWdhY3ktYmctdmFsdWVzKCdiYWNrZ3JvdW5kLWNsaXAnLCBhcmd1bWVudHMpXFxuICAgIGJhY2tncm91bmQtY2xpcDogYXJndW1lbnRzXFxuXFxuLypcXG4gKiBWZW5kb3IgXFxcImJhY2tncm91bmQtb3JpZ2luXFxcIiBzdXBwb3J0LlxcbiAqL1xcblxcbmJhY2tncm91bmQtb3JpZ2luKClcXG4gIGxlZ2FjeS1iZy12YWx1ZXMoJ2JhY2tncm91bmQtb3JpZ2luJywgYXJndW1lbnRzKVxcbiAgYmFja2dyb3VuZC1vcmlnaW46IGFyZ3VtZW50c1xcblxcbi8qXFxuICogVmVuZG9yIFxcXCJiYWNrZ3JvdW5kLXNpemVcXFwiIHN1cHBvcnQuXFxuICovXFxuXFxuYmFja2dyb3VuZC1zaXplKClcXG4gIHZlbmRvcignYmFja2dyb3VuZC1zaXplJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgbW96IG9mZmljaWFsKVxcblxcbi8qXFxuICogVmVuZG9yIFxcXCJ0cmFuc2Zvcm1cXFwiIHN1cHBvcnQuXFxuICovXFxuXFxudHJhbnNmb3JtKClcXG4gIHZlbmRvcigndHJhbnNmb3JtJywgYXJndW1lbnRzKVxcblxcbi8qXFxuICogVmVuZG9yIFxcXCJ0cmFuc2Zvcm0tb3JpZ2luXFxcIiBzdXBwb3J0LlxcbiAqL1xcbnRyYW5zZm9ybS1vcmlnaW4oKVxcbiAgICB2ZW5kb3IoJ3RyYW5zZm9ybS1vcmlnaW4nLCBhcmd1bWVudHMpXFxuXFxuLypcXG4gKiBWZW5kb3IgXFxcInRyYW5zZm9ybS1zdHlsZVxcXCIgc3VwcG9ydC5cXG4gKi9cXG5cXG50cmFuc2Zvcm0tc3R5bGUoKVxcbiAgdmVuZG9yKCd0cmFuc2Zvcm0tc3R5bGUnLCBhcmd1bWVudHMpXFxuXFxuLypcXG4gKiBWZW5kb3IgXFxcImJvcmRlci1pbWFnZVxcXCIgc3VwcG9ydC5cXG4gKi9cXG5cXG5ib3JkZXItaW1hZ2UoKVxcbiAgdmVuZG9yKCdib3JkZXItaW1hZ2UnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogbyBvZmZpY2lhbClcXG5cXG4vKlxcbiAqIFZlbmRvciBcXFwidHJhbnNpdGlvblxcXCIgc3VwcG9ydC5cXG4gKi9cXG5cXG50cmFuc2l0aW9uKClcXG4gIHZlbmRvcigndHJhbnNpdGlvbicsIGFyZ3VtZW50cylcXG5cXG4vKlxcbiAqIFZlbmRvciBcXFwidHJhbnNpdGlvbi1wcm9wZXJ0eVxcXCIgc3VwcG9ydC5cXG4gKi9cXG5cXG50cmFuc2l0aW9uLXByb3BlcnR5KClcXG4gIHZlbmRvcigndHJhbnNpdGlvbi1wcm9wZXJ0eScsIGFyZ3VtZW50cylcXG5cXG4vKlxcbiAqIFZlbmRvciBcXFwidHJhbnNpdGlvbi1kdXJhdGlvblxcXCIgc3VwcG9ydC5cXG4gKi9cXG5cXG50cmFuc2l0aW9uLWR1cmF0aW9uKClcXG4gIHZlbmRvcigndHJhbnNpdGlvbi1kdXJhdGlvbicsIGFyZ3VtZW50cylcXG5cXG4vKlxcbiAqIFZlbmRvciBcXFwidHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb25cXFwiIHN1cHBvcnQuXFxuICovXFxuXFxudHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24oKVxcbiAgdmVuZG9yKCd0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbicsIGFyZ3VtZW50cylcXG5cXG4vKlxcbiAqIFZlbmRvciBcXFwidHJhbnNpdGlvbi1kZWxheVxcXCIgc3VwcG9ydC5cXG4gKi9cXG5cXG50cmFuc2l0aW9uLWRlbGF5KClcXG4gIHZlbmRvcigndHJhbnNpdGlvbi1kZWxheScsIGFyZ3VtZW50cylcXG5cXG4vKlxcbiAqIFZlbmRvciBcXFwiYmFja2ZhY2UtdmlzaWJpbGl0eVxcXCIgc3VwcG9ydC5cXG4gKi9cXG5cXG5iYWNrZmFjZS12aXNpYmlsaXR5KClcXG4gIHZlbmRvcignYmFja2ZhY2UtdmlzaWJpbGl0eScsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1veiBtcyBvZmZpY2lhbClcXG5cXG4vKlxcbiAqIFZlbmRvciBcXFwicGVyc3BlY3RpdmVcXFwiIHN1cHBvcnQuXFxuICovXFxuXFxucGVyc3BlY3RpdmUoKVxcbiAgaWYgbWl4aW5cXG4gICAgdmVuZG9yKCdwZXJzcGVjdGl2ZScsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1veiBtcyBvZmZpY2lhbClcXG4gIGVsc2VcXG4gICAgJ3BlcnNwZWN0aXZlKCVzKScgJSBhcmd1bWVudHNcXG5cXG4vKlxcbiAqIFZlbmRvciBcXFwicGVyc3BlY3RpdmUtb3JpZ2luXFxcIiBzdXBwb3J0LlxcbiAqL1xcblxcbnBlcnNwZWN0aXZlLW9yaWdpbigpXFxuICB2ZW5kb3IoJ3BlcnNwZWN0aXZlLW9yaWdpbicsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1veiBtcyBvZmZpY2lhbClcXG5cXG4vKlxcbiAqIE9wYWNpdHkgd2l0aCBjb25kaXRpb25hbCBJRSBzdXBwb3J0LlxcbiAqL1xcblxcbm9wYWNpdHkobiwgYXJncy4uLilcXG4gIG9wYWNpdHk6IG4gYXJnc1xcbiAgaWYgc3VwcG9ydC1mb3ItaWVcXG4gICAgaWYgbiA9PSBpbmhlcml0IG9yIG4gPT0gaW5pdGlhbFxcbiAgICAgIC1tcy1maWx0ZXI6IG4gYXJnc1xcbiAgICAgIGZpbHRlcjogbiBhcmdzXFxuICAgIGVsc2VcXG4gICAgICB2YWwgPSByb3VuZChuICogMTAwKVxcbiAgICAgIGlmIHZhbCA9PSAxMDBcXG4gICAgICAgIC1tcy1maWx0ZXI6IG5vbmUgYXJnc1xcbiAgICAgICAgZmlsdGVyOiBub25lIGFyZ3NcXG4gICAgICBlbHNlXFxuICAgICAgICAtbXMtZmlsdGVyOiAnXFxcInByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYShPcGFjaXR5PSVzKVxcXCInICUgdmFsIGFyZ3NcXG4gICAgICAgIGZpbHRlcjogJ2FscGhhKG9wYWNpdHk9JXMpJyAlIHZhbCBhcmdzXFxuXFxuLypcXG4gKiBWZW5kb3IgXFxcInRleHQtc2l6ZS1hZGp1c3RcXFwiXFxuICovXFxuXFxudGV4dC1zaXplLWFkanVzdCgpXFxuICB2ZW5kb3IoJ3RleHQtc2l6ZS1hZGp1c3QnLCBhcmd1bWVudHMpXFxuXFxuLypcXG4gKiBBbGlhcyB0aGUgXFxcIndoaXRlLXNwYWNlXFxcIiBwcm9wZXJ0eS5cXG4gKi9cXG5cXG53aGl0ZXNwYWNlKClcXG4gIHdoaXRlLXNwYWNlOiBhcmd1bWVudHNcXG5cXG4vKlxcbiAqIFZlbmRvciBcXFwiYm94LXNpemluZ1xcXCIgc3VwcG9ydC5cXG4gKi9cXG5cXG5ib3gtc2l6aW5nKClcXG4gIHZlbmRvcignYm94LXNpemluZycsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1veiBvZmZpY2lhbClcXG5cXG4vKlxcbiAqIFZlbmRvciBcXFwiYm94LW9yaWVudFxcXCIgc3VwcG9ydC5cXG4gKi9cXG5cXG5ib3gtb3JpZW50KClcXG4gIHZlbmRvcignYm94LW9yaWVudCcsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1veiBvZmZpY2lhbClcXG5cXG4vKlxcbiAqIFZlbmRvciBcXFwiYm94LWZsZXgtZ3JvdXBcXFwiIHN1cHBvcnQuXFxuICovXFxuXFxuYm94LWZsZXgtZ3JvdXAoKVxcbiAgdmVuZG9yKCdib3gtZmxleC1ncm91cCcsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1veiBvZmZpY2lhbClcXG5cXG4vKlxcbiAqIFZlbmRvciBcXFwiYm94LW9yZGluYWwtZ3JvdXBcXFwiIHN1cHBvcnQuXFxuICovXFxuXFxuYm94LW9yZGluYWwtZ3JvdXAoKVxcbiAgdmVuZG9yKCdib3gtb3JkaW5hbC1ncm91cCcsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1veiBtcyBvZmZpY2lhbClcXG5cXG5cXG4vKlxcbiAqIFZlbmRvciBcXFwiYm94LWFsaWduXFxcIiBzdXBwb3J0LlxcbiAqL1xcblxcbmJveC1hbGlnbigpXFxuICB2ZW5kb3IoJ2JveC1hbGlnbicsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1veiBtcyBvZmZpY2lhbClcXG5cXG4vKlxcbiAqIFZlbmRvciBcXFwiYm94LXBhY2tcXFwiIHN1cHBvcnQuXFxuICovXFxuXFxuYm94LXBhY2soKVxcbiAgdmVuZG9yKCdib3gtcGFjaycsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1veiBtcyBvZmZpY2lhbClcXG5cXG4vKlxcbiAqIFZlbmRvciBcXFwiYm94LWRpcmVjdGlvblxcXCIgc3VwcG9ydC5cXG4gKi9cXG5cXG5ib3gtZGlyZWN0aW9uKClcXG4gIHZlbmRvcignYm94LWRpcmVjdGlvbicsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1veiBtcyBvZmZpY2lhbClcXG5cXG4vKlxcbiAqIFZlbmRvciBcXFwiYW5pbWF0aW9uXFxcIiBzdXBwb3J0LlxcbiAqL1xcblxcbmFuaW1hdGlvbigpXFxuICB2ZW5kb3IoJ2FuaW1hdGlvbicsIGFyZ3VtZW50cylcXG5cXG5cXG4vKlxcbiAqIFZlbmRvciBcXFwiYW5pbWF0aW9uLW5hbWVcXFwiIHN1cHBvcnQuXFxuICovXFxuXFxuYW5pbWF0aW9uLW5hbWUoKVxcbiAgdmVuZG9yKCdhbmltYXRpb24tbmFtZScsIGFyZ3VtZW50cylcXG5cXG4vKlxcbiAqIFZlbmRvciBcXFwiYW5pbWF0aW9uLWR1cmF0aW9uXFxcIiBzdXBwb3J0LlxcbiAqL1xcblxcbmFuaW1hdGlvbi1kdXJhdGlvbigpXFxuICB2ZW5kb3IoJ2FuaW1hdGlvbi1kdXJhdGlvbicsIGFyZ3VtZW50cylcXG5cXG4vKlxcbiAqIFZlbmRvciBcXFwiYW5pbWF0aW9uLWRlbGF5XFxcIiBzdXBwb3J0LlxcbiAqL1xcblxcbmFuaW1hdGlvbi1kZWxheSgpXFxuICB2ZW5kb3IoJ2FuaW1hdGlvbi1kZWxheScsIGFyZ3VtZW50cylcXG5cXG4vKlxcbiAqIFZlbmRvciBcXFwiYW5pbWF0aW9uLWRpcmVjdGlvblxcXCIgc3VwcG9ydC5cXG4gKi9cXG5cXG5hbmltYXRpb24tZGlyZWN0aW9uKClcXG4gIHZlbmRvcignYW5pbWF0aW9uLWRpcmVjdGlvbicsIGFyZ3VtZW50cylcXG5cXG4vKlxcbiAqIFZlbmRvciBcXFwiYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudFxcXCIgc3VwcG9ydC5cXG4gKi9cXG5cXG5hbmltYXRpb24taXRlcmF0aW9uLWNvdW50KClcXG4gIHZlbmRvcignYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCcsIGFyZ3VtZW50cylcXG5cXG4vKlxcbiAqIFZlbmRvciBcXFwiYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvblxcXCIgc3VwcG9ydC5cXG4gKi9cXG5cXG5hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uKClcXG4gIHZlbmRvcignYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbicsIGFyZ3VtZW50cylcXG5cXG4vKlxcbiAqIFZlbmRvciBcXFwiYW5pbWF0aW9uLXBsYXktc3RhdGVcXFwiIHN1cHBvcnQuXFxuICovXFxuXFxuYW5pbWF0aW9uLXBsYXktc3RhdGUoKVxcbiAgdmVuZG9yKCdhbmltYXRpb24tcGxheS1zdGF0ZScsIGFyZ3VtZW50cylcXG5cXG4vKlxcbiAqIFZlbmRvciBcXFwiYW5pbWF0aW9uLWZpbGwtbW9kZVxcXCIgc3VwcG9ydC5cXG4gKi9cXG5cXG5hbmltYXRpb24tZmlsbC1tb2RlKClcXG4gIHZlbmRvcignYW5pbWF0aW9uLWZpbGwtbW9kZScsIGFyZ3VtZW50cylcXG5cXG4vKlxcbiAqIFZlbmRvciBcXFwiaHlwaGVuc1xcXCIgc3VwcG9ydC5cXG4gKi9cXG5cXG5oeXBoZW5zKClcXG4gIHZlbmRvcignaHlwaGVucycsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1veiBtcyBvZmZpY2lhbClcXG5cXG4vKlxcbiAqIFZlbmRvciBcXFwiYXBwZWFyYW5jZVxcXCIgc3VwcG9ydC5cXG4gKi9cXG5cXG5hcHBlYXJhbmNlKClcXG4gIHZlbmRvcignYXBwZWFyYW5jZScsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1veiBvZmZpY2lhbClcXG5cXG4vKlxcbiAqIFZlbmRvciBcXFwidGFiLXNpemVcXFwiIHN1cHBvcnQuXFxuICovXFxuXFxudGFiLXNpemUoKVxcbiAgdmVuZG9yKCd0YWItc2l6ZScsIGFyZ3VtZW50cywgb25seTogbW96IG8gb2ZmaWNpYWwpXFxuXFxuLypcXG4gKiBWZW5kb3IgXFxcIm92ZXJmbG93LXNjcm9sbGluZ1xcXCIgc3VwcG9ydC5cXG4gKi9cXG5cXG5vdmVyZmxvdy1zY3JvbGxpbmcoKVxcbiAgdmVuZG9yKCdvdmVyZmxvdy1zY3JvbGxpbmcnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBvZmZpY2lhbClcXG5cXG4vKlxcbiAqIFZlbmRvciBcXFwidGV4dC1vdmVyZmxvd1xcXCIgc3VwcG9ydCwgLCAtby0gZm9yIG9wZXJhIDkuKiAtIDEwLipcXG4gKi9cXG5cXG50ZXh0LW92ZXJmbG93KClcXG4gIHZlbmRvcigndGV4dC1vdmVyZmxvdycsIGFyZ3VtZW50cywgb25seTogb2ZmaWNpYWwgbylcXG5cXG4vKlxcbiAqIFZlbmRvciBcXFwidGV4dC1zaXplLWFkanVzdFxcXCIgc3VwcG9ydC5cXG4gKi9cXG50ZXh0LXNpemUtYWRqdXN0KClcXG4gIHZlbmRvcigndGV4dC1zaXplLWFkanVzdCcsIGFyZ3VtZW50cywgb25seTogb2ZmaWNpYWwgd2Via2l0IG1zKVxcblxcbi8qXFxuICogVmVuZG9yIFxcXCJmb250LXNtb290aGluZ1xcXCIgc3VwcG9ydCwgd2Via2l0IG9ubHkuXFxuICovXFxuZm9udC1zbW9vdGhpbmcoKVxcbiAgdmVuZG9yKCdmb250LXNtb290aGluZycsIGFyZ3VtZW50cywgb25seTogd2Via2l0KVxcblxcblxcbi8qKlxcbiAqIFZlbmRvciBpbnB1dC1wbGFjZWhvbGRlci9wbGFjZWhvbGRlciBzdXBwb3J0LlxcbiAqXFxuICogRXhhbXBsZXM6XFxuICogICAgLy8gRGVmYXVsdCBzeW50YXhcXG4gKiAgICBib2R5XFxuICogICAgICBwbGFjZWhvbGRlcihjb2xvciAjMzMzLCBmb250LXdlaWdodCBub3JtYWwpXFxuICpcXG4gKiAgICAvLyBUaGUgY29tbWEgaXMgaW1wb3J0YW50XFxuICogICAgLnBsYWNlaG9sZGVyLXJlZFxcbiAqICAgICAgcGxhY2Vob2xkZXIoY29sb3IgcmVkLClcXG4gKlxcbiAqICAgIC8vIFdlIGNhbiBwYXNzIGEgZnVuY3Rpb25cXG4gKiAgICBncmVlbi1wbGFjZWhvbGRlcigpXFxuICogICAgICBjb2xvciBncmVlblxcbiAqICAgIC5wbGFjZWhvbGRlci1ncmVlblxcbiAqICAgICAgcGxhY2Vob2xkZXIoZ3JlZW4tcGxhY2Vob2xkZXIpXFxuICpcXG4gKiAgICAvLyBXZSBjYW4gcGFzcyBhIGhhc2hcXG4gKiAgICB0ZXh0YXJlYVxcbiAqICAgICAgcGxhY2Vob2xkZXIoKGZvbnQtc3R5bGUgaXRhbGljKSAoZm9udC13ZWlnaHQgYm9sZCkgKHBhZGRpbmcgJzRweCAxMHB4JykpXFxuICovXFxucGxhY2Vob2xkZXIoKVxcbiAgZm9yIHYgaW4gJzotd2Via2l0LWlucHV0JyAnLW1veicgJzotbW96JyAnLW1zLWlucHV0J1xcbiAgICAmOnt2fS1wbGFjZWhvbGRlclxcbiAgICAgIGZvciBwYWlyIGluIGFyZ3VtZW50c1xcbiAgICAgICAgaWYgdHlwZW9mKHBhaXIpID09ICdmdW5jdGlvbidcXG4gICAgICAgICAgcGFpcigpXFxuICAgICAgICBlbHNlIGlmIHBhaXIgaXMgbm90IG51bGwgJiYgcGFpclswXSBpcyBub3QgbnVsbFxcbiAgICAgICAgICB7cGFpclswXX06IHR5cGUocGFpclsxXSkgPT0gJ3N0cmluZycgPyBzKHBhaXJbMV0pIDogcGFpclsxXVxcbmlucHV0LXBsYWNlaG9sZGVyID0gcGxhY2Vob2xkZXJcXG5cXG4vKlxcbiAqIFZlbmRvciBiYWNrZ3JvdW5kIHN1cHBvcnQgKGdyYWRpZW50cykuXFxuICovXFxuXFxuYmFja2dyb3VuZCgpXFxuICBpZiBtYXRjaCgnLWdyYWRpZW50XFxcXCgnLCAnJythcmd1bWVudHMpXFxuICAgIHZlbmRvcignYmFja2dyb3VuZCcsIGFyZ3VtZW50cywgdmVuZG9yLXByb3BlcnR5OiBmYWxzZSlcXG4gIGVsc2VcXG4gICAgYmFja2dyb3VuZCBhcmd1bWVudHNcXG5cXG5iYWNrZ3JvdW5kLWltYWdlKClcXG4gIGlmIG1hdGNoKCctZ3JhZGllbnRcXFxcKCcsICcnK2FyZ3VtZW50cylcXG4gICAgdmVuZG9yKCdiYWNrZ3JvdW5kLWltYWdlJywgYXJndW1lbnRzLCB2ZW5kb3ItcHJvcGVydHk6IGZhbHNlKVxcbiAgZWxzZVxcbiAgICBiYWNrZ3JvdW5kLWltYWdlIGFyZ3VtZW50c1xcblxcbmN1cnNvcigpXFxuICBpZiBtYXRjaCgnLWdyYWRpZW50XFxcXCgnLCAnJythcmd1bWVudHMpXFxuICAgIHZlbmRvcignY3Vyc29yJywgYXJndW1lbnRzLCB2ZW5kb3ItcHJvcGVydHk6IGZhbHNlKVxcbiAgZWxzZVxcbiAgICBjdXJzb3IgYXJndW1lbnRzXFxuXFxubGlzdC1zdHlsZSgpXFxuICBpZiBtYXRjaCgnLWdyYWRpZW50XFxcXCgnLCAnJythcmd1bWVudHMpXFxuICAgIHZlbmRvcignbGlzdC1zdHlsZScsIGFyZ3VtZW50cywgdmVuZG9yLXByb3BlcnR5OiBmYWxzZSlcXG4gIGVsc2VcXG4gICAgbGlzdC1zdHlsZSBhcmd1bWVudHNcXG5cXG5saXN0LXN0eWxlLWltYWdlKClcXG4gIGlmIG1hdGNoKCctZ3JhZGllbnRcXFxcKCcsICcnK2FyZ3VtZW50cylcXG4gICAgdmVuZG9yKCdsaXN0LXN0eWxlLWltYWdlJywgYXJndW1lbnRzLCB2ZW5kb3ItcHJvcGVydHk6IGZhbHNlKVxcbiAgZWxzZVxcbiAgICBsaXN0LXN0eWxlLWltYWdlIGFyZ3VtZW50c1xcblwiLFwiLypcXG4gKiBib3JkZXI6IDxjb2xvcj5cXG4gKiBib3JkZXI6IC4uLlxcbiAqL1xcblxcbmJvcmRlcihjb2xvciwgYXJncy4uLilcXG4gIGlmIGNvbG9yIGlzIGEgJ2NvbG9yJ1xcbiAgICBib3JkZXI6IDFweCBzb2xpZCBjb2xvciBhcmdzXFxuICBlbHNlXFxuICAgIGJvcmRlcjogYXJndW1lbnRzXFxuXCIsXCIvKlxcbiAqIEhlbHBlciBmb3IgYm9yZGVyLXJhZGl1cygpLlxcbiAqL1xcblxcbi1hcHBseS1ib3JkZXItcmFkaXVzKHBvcywgaW1wb3J0YW5jZSlcXG4gIGlmIGxlbmd0aChwb3MpID09IDNcXG4gICAgLy8gYm9yZGVyLXJhZGl1czogPHRvcCB8IGJvdHRvbT4gPGxlZnQgfCByaWdodD4gPG4+XFxuICAgIHkgPSBwb3NbMF1cXG4gICAgeCA9IHBvc1sxXVxcbiAgICAvLyBXZSBkb24ndCB1c2UgdmVuZG9yIGZvciBib2Rlci1yYWRpdXMgYW55bW9yZVxcbiAgICAvLyB2ZW5kb3IoJ2JvcmRlci1yYWRpdXMtJXMlcycgJSBwb3MsIHBvc1syXSwgb25seTogd2Via2l0IG9mZmljaWFsKVxcbiAgICB7J2JvcmRlci0lcy0lcy1yYWRpdXMnICUgcG9zfTogcG9zWzJdIGltcG9ydGFuY2VcXG4gIGVsc2UgaWYgcG9zWzBdIGluICh0b3AgYm90dG9tKVxcbiAgICAvLyBib3JkZXItcmFkaXVzOiA8dG9wIHwgYm90dG9tPiA8bj5cXG4gICAgLWFwcGx5LWJvcmRlci1yYWRpdXMocG9zWzBdIGxlZnQgcG9zWzFdLCBpbXBvcnRhbmNlKVxcbiAgICAtYXBwbHktYm9yZGVyLXJhZGl1cyhwb3NbMF0gcmlnaHQgcG9zWzFdLCBpbXBvcnRhbmNlKVxcbiAgZWxzZSBpZiBwb3NbMF0gaW4gKGxlZnQgcmlnaHQpXFxuICAgIC8vIGJvcmRlci1yYWRpdXM6IDxsZWZ0IHwgcmlnaHQ+IDxuPlxcbiAgICB1bnNoaWZ0KHBvcywgdG9wKTtcXG4gICAgLWFwcGx5LWJvcmRlci1yYWRpdXMocG9zLCBpbXBvcnRhbmNlKVxcbiAgICBwb3NbMF0gPSBib3R0b21cXG4gICAgLWFwcGx5LWJvcmRlci1yYWRpdXMocG9zLCBpbXBvcnRhbmNlKVxcblxcbi8qXFxuICogYm9yZGVyLXJhZGl1cyBzdXBwb3J0aW5nIGF1Z21lbnRlZCBiZWhhdmlvci5cXG4gKlxcbiAqIEV4YW1wbGVzOlxcbiAqXFxuICogICAgYm9yZGVyLXJhZGl1czogMnB4IDVweFxcbiAqICAgIGJvcmRlci1yYWRpdXM6IHRvcCA1cHggYm90dG9tIDEwcHhcXG4gKiAgICBib3JkZXItcmFkaXVzOiBsZWZ0IDVweFxcbiAqICAgIGJvcmRlci1yYWRpdXM6IHRvcCBsZWZ0IDVweFxcbiAqICAgIGJvcmRlci1yYWRpdXM6IHRvcCBsZWZ0IDEwcHggYm90dG9tIHJpZ2h0IDVweFxcbiAqICAgIGJvcmRlci1yYWRpdXM6IHRvcCBsZWZ0IDEwcHgsIGJvdHRvbSByaWdodCA1cHhcXG4gKlxcbiAqL1xcblxcbmJvcmRlci1yYWRpdXMoKVxcbiAgcG9zID0gKClcXG4gIGF1Z21lbnRlZCA9IGZhbHNlXFxuICBpbXBvcnRhbmNlID0gYXJndW1lbnRzW2xlbmd0aChhcmd1bWVudHMpIC0gMV0gPT0gIWltcG9ydGFudCA/ICFpbXBvcnRhbnQgOiB1bnF1b3RlKCcnKVxcblxcbiAgZm9yIGFyZ3MgaW4gYXJndW1lbnRzXFxuICAgIGZvciBhcmcgaW4gYXJnc1xcbiAgICAgIGlmIGFyZyBpcyBhICdpZGVudCdcXG4gICAgICAgIGFwcGVuZChwb3MsIGFyZylcXG4gICAgICAgIGF1Z21lbnRlZCA9IHRydWVcXG4gICAgICBlbHNlXFxuICAgICAgICBhcHBlbmQocG9zLCBhcmcpXFxuICAgICAgICBpZiBhdWdtZW50ZWRcXG4gICAgICAgICAgLWFwcGx5LWJvcmRlci1yYWRpdXMocG9zLCBpbXBvcnRhbmNlKVxcbiAgICAgICAgICBwb3MgPSAoKVxcbiAgYm9yZGVyLXJhZGl1cyBwb3MgdW5sZXNzIGF1Z21lbnRlZFxcblwiLFwiLypcXG4gKiBTaXplIHV0aWxpdHkuXFxuICpcXG4gKiBTeW5vcHNpczpcXG4gKlxcbiAqICAgc2l6ZTogPHdpZHRoPiA8aGVpZ2h0PiB8IDx3aWR0aCAmIGhlaWdodD5cXG4gKlxcbiAqIEV4YW1wbGVzOlxcbiAqXFxuICogICAgIHNpemU6IDEwMCUgMzBweFxcbiAqICAgICAgIHlpZWxkczpcXG4gKiAgICAgICAgIHdpZHRoOiAxMDAlXFxuICogICAgICAgICBoZWlnaHQ6IDMwcHhcXG4gKlxcbiAqICAgICBzaXplOiA1cHhcXG4gKiAgICAgICB5aWVsZHM6XFxuICogICAgICAgICB3aWR0aDogNXB4XFxuICogICAgICAgICBoZWlnaHQ6IDVweFxcbiAqXFxuICovXFxuXFxuc2l6ZSgpXFxuICBpZiBsZW5ndGgoYXJndW1lbnRzKSA9PSAxXFxuICAgIHdpZHRoOiBhcmd1bWVudHNbMF1cXG4gICAgaGVpZ2h0OiBhcmd1bWVudHNbMF1cXG4gIGVsc2VcXG4gICAgd2lkdGg6IGFyZ3VtZW50c1swXVxcbiAgICBoZWlnaHQ6IGFyZ3VtZW50c1sxXVxcblwiLFwiY2FsbGVkLWZyb20gPSAoKVxcblxcbnZlbmRvcnMgPSBtb3ogd2Via2l0IG8gbXMgb2ZmaWNpYWxcXG5cXG4vLyBzdHJpbmdpZnkgdGhlIGdpdmVuIGFyZ1xcblxcbi1zdHJpbmcoYXJnKVxcbiAgdHlwZShhcmcpICsgJyAnICsgYXJnXFxuXFxuLy8gcmVxdWlyZSBhIGNvbG9yXFxuXFxucmVxdWlyZS1jb2xvcihjb2xvcilcXG4gIHVubGVzcyBjb2xvciBpcyBhICdjb2xvcidcXG4gICAgZXJyb3IoJ1JHQiBvciBIU0wgdmFsdWUgZXhwZWN0ZWQsIGdvdCBhICcgKyAtc3RyaW5nKGNvbG9yKSlcXG5cXG4vLyByZXF1aXJlIGEgdW5pdFxcblxcbnJlcXVpcmUtdW5pdChuKVxcbiAgdW5sZXNzIG4gaXMgYSAndW5pdCdcXG4gICAgZXJyb3IoJ3VuaXQgZXhwZWN0ZWQsIGdvdCBhICcgKyAtc3RyaW5nKG4pKVxcblxcbi8vIHJlcXVpcmUgYSBzdHJpbmdcXG5cXG5yZXF1aXJlLXN0cmluZyhzdHIpXFxuICB1bmxlc3Mgc3RyIGlzIGEgJ3N0cmluZycgb3Igc3RyIGlzIGEgJ2lkZW50J1xcbiAgICBlcnJvcignc3RyaW5nIGV4cGVjdGVkLCBnb3QgYSAnICsgLXN0cmluZyhzdHIpKVxcblxcbi8vIE1hdGggZnVuY3Rpb25zXFxuXFxuYWJzKG4pIHsgbWF0aChuLCAnYWJzJykgfVxcbm1pbihhLCBiKSB7IGEgPCBiID8gYSA6IGIgfVxcbm1heChhLCBiKSB7IGEgPiBiID8gYSA6IGIgfVxcblxcbi8vIFRyaWdvbm9tZXRyaWNzXFxuUEkgPSAtbWF0aC1wcm9wKCdQSScpXFxuXFxucmFkaWFucy10by1kZWdyZWVzKGFuZ2xlKVxcbiAgYW5nbGUgKiAoMTgwIC8gUEkpXFxuXFxuZGVncmVlcy10by1yYWRpYW5zKGFuZ2xlKVxcbiAgYW5nbGUgKiAoUEkgLyAxODApXFxuXFxuc2luKG4pXFxuICBuID0gdW5pdChuKSA9PSAnZGVnJyA/IGRlZ3JlZXMtdG8tcmFkaWFucyh1bml0KG4sICcnKSkgOiB1bml0KG4sICcnKVxcbiAgcm91bmQobWF0aChuLCAnc2luJyksIDkpXFxuXFxuY29zKG4pXFxuICBuID0gdW5pdChuKSA9PSAnZGVnJyA/IGRlZ3JlZXMtdG8tcmFkaWFucyh1bml0KG4sICcnKSkgOiB1bml0KG4sICcnKVxcbiAgcm91bmQobWF0aChuLCAnY29zJyksIDkpXFxuXFxuLy8gUm91bmRpbmcgTWF0aCBmdW5jdGlvbnNcXG5cXG5jZWlsKG4sIHByZWNpc2lvbiA9IDApXFxuICBtdWx0aXBsaWVyID0gMTAgKiogcHJlY2lzaW9uXFxuICBtYXRoKG4gKiBtdWx0aXBsaWVyLCAnY2VpbCcpIC8gbXVsdGlwbGllclxcblxcbmZsb29yKG4sIHByZWNpc2lvbiA9IDApXFxuICBtdWx0aXBsaWVyID0gMTAgKiogcHJlY2lzaW9uXFxuICBtYXRoKG4gKiBtdWx0aXBsaWVyLCAnZmxvb3InKSAvIG11bHRpcGxpZXJcXG5cXG5yb3VuZChuLCBwcmVjaXNpb24gPSAwKVxcbiAgbXVsdGlwbGllciA9IDEwICoqIHByZWNpc2lvblxcbiAgbWF0aChuICogbXVsdGlwbGllciwgJ3JvdW5kJykgLyBtdWx0aXBsaWVyXFxuXFxuLy8gcmV0dXJuIHRoZSBzdW0gb2YgdGhlIGdpdmVuIG51bWJlcnNcXG5cXG5zdW0obnVtcylcXG4gIHN1bSA9IDBcXG4gIHN1bSArPSBuIGZvciBuIGluIG51bXNcXG5cXG4vLyByZXR1cm4gdGhlIGF2ZXJhZ2Ugb2YgdGhlIGdpdmVuIG51bWJlcnNcXG5cXG5hdmcobnVtcylcXG4gIHN1bShudW1zKSAvIGxlbmd0aChudW1zKVxcblxcbi8vIHJldHVybiBhIHVuaXRsZXNzIG51bWJlciwgb3IgcGFzcyB0aHJvdWdoXFxuXFxucmVtb3ZlLXVuaXQobilcXG4gIGlmIHR5cGVvZihuKSBpcyBcXFwidW5pdFxcXCJcXG4gICAgdW5pdChuLCBcXFwiXFxcIilcXG4gIGVsc2VcXG4gICAgblxcblxcbi8vIGNvbnZlcnQgYSBwZXJjZW50IHRvIGEgZGVjaW1hbCwgb3IgcGFzcyB0aHJvdWdoXFxuXFxucGVyY2VudC10by1kZWNpbWFsKG4pXFxuICBpZiB1bml0KG4pIGlzIFxcXCIlXFxcIlxcbiAgICByZW1vdmUtdW5pdChuKSAvIDEwMFxcbiAgZWxzZVxcbiAgICBuXFxuXFxuLy8gY2hlY2sgaWYgbiBpcyBhbiBvZGQgbnVtYmVyXFxuXFxub2RkKG4pXFxuICAxID09IG4gJSAyXFxuXFxuLy8gY2hlY2sgaWYgbiBpcyBhbiBldmVuIG51bWJlclxcblxcbmV2ZW4obilcXG4gIDAgPT0gbiAlIDJcXG5cXG4vLyBjaGVjayBpZiBjb2xvciBpcyBsaWdodFxcblxcbmxpZ2h0KGNvbG9yKVxcbiAgbGlnaHRuZXNzKGNvbG9yKSA+PSA1MCVcXG5cXG4vLyBjaGVjayBpZiBjb2xvciBpcyBkYXJrXFxuXFxuZGFyayhjb2xvcilcXG4gIGxpZ2h0bmVzcyhjb2xvcikgPCA1MCVcXG5cXG4vLyBkZXNhdHVyYXRlIGNvbG9yIGJ5IGFtb3VudFxcblxcbmRlc2F0dXJhdGUoY29sb3IsIGFtb3VudClcXG4gIGFkanVzdChjb2xvciwgJ3NhdHVyYXRpb24nLCAtIGFtb3VudClcXG5cXG4vLyBzYXR1cmF0ZSBjb2xvciBieSBhbW91bnRcXG5cXG5zYXR1cmF0ZShjb2xvciA9ICcnLCBhbW91bnQgPSAxMDAlKVxcbiAgaWYgY29sb3IgaXMgYSAnY29sb3InXFxuICAgIGFkanVzdChjb2xvciwgJ3NhdHVyYXRpb24nLCBhbW91bnQpXFxuICBlbHNlXFxuICAgIHVucXVvdGUoIFxcXCJzYXR1cmF0ZShcXFwiICsgY29sb3IgKyBcXFwiKVxcXCIgKVxcblxcbi8vIGRhcmtlbiBieSB0aGUgZ2l2ZW4gYW1vdW50XFxuXFxuZGFya2VuKGNvbG9yLCBhbW91bnQpXFxuICBhZGp1c3QoY29sb3IsICdsaWdodG5lc3MnLCAtIGFtb3VudClcXG5cXG4vLyBsaWdodGVuIGJ5IHRoZSBnaXZlbiBhbW91bnRcXG5cXG5saWdodGVuKGNvbG9yLCBhbW91bnQpXFxuICBhZGp1c3QoY29sb3IsICdsaWdodG5lc3MnLCBhbW91bnQpXFxuXFxuLy8gZGVjcmVhc2Ugb3BhY2l0eSBieSBhbW91bnRcXG5cXG5mYWRlLW91dChjb2xvciwgYW1vdW50KVxcbiAgY29sb3IgLSByZ2JhKGJsYWNrLCBwZXJjZW50LXRvLWRlY2ltYWwoYW1vdW50KSlcXG5cXG4vLyBpbmNyZWFzZSBvcGFjaXR5IGJ5IGFtb3VudFxcblxcbmZhZGUtaW4oY29sb3IsIGFtb3VudClcXG4gIGNvbG9yICsgcmdiYShibGFjaywgcGVyY2VudC10by1kZWNpbWFsKGFtb3VudCkpXFxuXFxuLy8gc3BpbiBodWUgYnkgYSBnaXZlbiBhbW91bnRcXG5cXG5zcGluKGNvbG9yLCBhbW91bnQpXFxuICBjb2xvciArIHVuaXQoYW1vdW50LCBkZWcpXFxuXFxuLy8gbWl4IHR3byBjb2xvcnMgYnkgYSBnaXZlbiBhbW91bnRcXG5cXG5taXgoY29sb3IxLCBjb2xvcjIsIHdlaWdodCA9IDUwJSlcXG4gIHVubGVzcyB3ZWlnaHQgaW4gMC4uMTAwXFxuICAgIGVycm9yKFxcXCJXZWlnaHQgbXVzdCBiZSBiZXR3ZWVuIDAlIGFuZCAxMDAlXFxcIilcXG5cXG4gIGlmIGxlbmd0aChjb2xvcjEpID09IDJcXG4gICAgd2VpZ2h0ID0gY29sb3IxWzBdXFxuICAgIGNvbG9yMSA9IGNvbG9yMVsxXVxcblxcbiAgZWxzZSBpZiBsZW5ndGgoY29sb3IyKSA9PSAyXFxuICAgIHdlaWdodCA9IDEwMCAtIGNvbG9yMlswXVxcbiAgICBjb2xvcjIgPSBjb2xvcjJbMV1cXG5cXG4gIHJlcXVpcmUtY29sb3IoY29sb3IxKVxcbiAgcmVxdWlyZS1jb2xvcihjb2xvcjIpXFxuXFxuICBwID0gdW5pdCh3ZWlnaHQgLyAxMDAsICcnKVxcbiAgdyA9IHAgKiAyIC0gMVxcblxcbiAgYSA9IGFscGhhKGNvbG9yMSkgLSBhbHBoYShjb2xvcjIpXFxuXFxuICB3MSA9ICgoKHcgKiBhID09IC0xKSA/IHcgOiAodyArIGEpIC8gKDEgKyB3ICogYSkpICsgMSkgLyAyXFxuICB3MiA9IDEgLSB3MVxcblxcbiAgY2hhbm5lbHMgPSAocmVkKGNvbG9yMSkgcmVkKGNvbG9yMikpIChncmVlbihjb2xvcjEpIGdyZWVuKGNvbG9yMikpIChibHVlKGNvbG9yMSkgYmx1ZShjb2xvcjIpKVxcbiAgcmdiID0gKClcXG5cXG4gIGZvciBwYWlyIGluIGNoYW5uZWxzXFxuICAgIHB1c2gocmdiLCBmbG9vcihwYWlyWzBdICogdzEgKyBwYWlyWzFdICogdzIpKVxcblxcbiAgYTEgPSBhbHBoYShjb2xvcjEpICogcFxcbiAgYTIgPSBhbHBoYShjb2xvcjIpICogKDEgLSBwKVxcbiAgYWxwaGEgPSBhMSArIGEyXFxuXFxuICByZ2JhKHJnYlswXSwgcmdiWzFdLCByZ2JbMl0sIGFscGhhKVxcblxcbi8vIGludmVydCBjb2xvcnMsIGxlYXZlIGFscGhhIGludGFjdFxcblxcbmludmVydChjb2xvciA9ICcnKVxcbiAgaWYgY29sb3IgaXMgYSAnY29sb3InXFxuICAgIHJnYmEoI2ZmZiAtIGNvbG9yLCBhbHBoYShjb2xvcikpXFxuICBlbHNlXFxuICAgIHVucXVvdGUoIFxcXCJpbnZlcnQoXFxcIiArIGNvbG9yICsgXFxcIilcXFwiIClcXG5cXG4vLyBnaXZlIGNvbXBsZW1lbnQgb2YgdGhlIGdpdmVuIGNvbG9yXFxuXFxuY29tcGxlbWVudCggY29sb3IgKVxcbiAgc3BpbiggY29sb3IsIDE4MCApXFxuXFxuLy8gZ2l2ZSBncmF5c2NhbGUgb2YgdGhlIGdpdmVuIGNvbG9yXFxuXFxuZ3JheXNjYWxlKCBjb2xvciA9ICcnIClcXG4gIGlmIGNvbG9yIGlzIGEgJ2NvbG9yJ1xcbiAgICBkZXNhdHVyYXRlKCBjb2xvciwgMTAwJSApXFxuICBlbHNlXFxuICAgIHVucXVvdGUoIFxcXCJncmF5c2NhbGUoXFxcIiArIGNvbG9yICsgXFxcIilcXFwiIClcXG5cXG4vLyBtaXggdGhlIGdpdmVuIGNvbG9yIHdpdGggd2hpdGVcXG5cXG50aW50KCBjb2xvciwgcGVyY2VudCApXFxuICBtaXgoIHdoaXRlLCBjb2xvciwgcGVyY2VudCApXFxuXFxuLy8gbWl4IHRoZSBnaXZlbiBjb2xvciB3aXRoIGJsYWNrXFxuXFxuc2hhZGUoIGNvbG9yLCBwZXJjZW50IClcXG4gIG1peCggYmxhY2ssIGNvbG9yLCBwZXJjZW50IClcXG5cXG4vLyByZXR1cm4gdGhlIGxhc3QgdmFsdWUgaW4gdGhlIGdpdmVuIGV4cHJcXG5cXG5sYXN0KGV4cHIpXFxuICBleHByW2xlbmd0aChleHByKSAtIDFdXFxuXFxuLy8gcmV0dXJuIGtleXMgaW4gdGhlIGdpdmVuIHBhaXJzIG9yIG9iamVjdFxcblxcbmtleXMocGFpcnMpXFxuICByZXQgPSAoKVxcbiAgaWYgdHlwZShwYWlycykgPT0gJ29iamVjdCdcXG4gICAgZm9yIGtleSBpbiBwYWlyc1xcbiAgICAgIHB1c2gocmV0LCBrZXkpXFxuICBlbHNlXFxuICAgIGZvciBwYWlyIGluIHBhaXJzXFxuICAgICAgcHVzaChyZXQsIHBhaXJbMF0pO1xcbiAgcmV0XFxuXFxuLy8gcmV0dXJuIHZhbHVlcyBpbiB0aGUgZ2l2ZW4gcGFpcnMgb3Igb2JqZWN0XFxuXFxudmFsdWVzKHBhaXJzKVxcbiAgcmV0ID0gKClcXG4gIGlmIHR5cGUocGFpcnMpID09ICdvYmplY3QnXFxuICAgIGZvciBrZXksIHZhbCBpbiBwYWlyc1xcbiAgICAgIHB1c2gocmV0LCB2YWwpXFxuICBlbHNlXFxuICAgIGZvciBwYWlyIGluIHBhaXJzXFxuICAgICAgcHVzaChyZXQsIHBhaXJbMV0pO1xcbiAgcmV0XFxuXFxuLy8gam9pbiB2YWx1ZXMgd2l0aCB0aGUgZ2l2ZW4gZGVsaW1pdGVyXFxuXFxuam9pbihkZWxpbSwgdmFscy4uLilcXG4gIGJ1ZiA9ICcnXFxuICB2YWxzID0gdmFsc1swXSBpZiBsZW5ndGgodmFscykgPT0gMVxcbiAgZm9yIHZhbCwgaSBpbiB2YWxzXFxuICAgIGJ1ZiArPSBpID8gZGVsaW0gKyB2YWwgOiB2YWxcXG5cXG4vLyBhZGQgYSBDU1MgcnVsZSB0byB0aGUgY29udGFpbmluZyBibG9ja1xcblxcbi8vIC0gVGhpcyBkZWZpbml0aW9uIGFsbG93cyBhZGQtcHJvcGVydHkgdG8gYmUgdXNlZCBhcyBhIG1peGluXFxuLy8gLSBJdCBoYXMgdGhlIHNhbWUgZWZmZWN0IGFzIGludGVycG9sYXRpb24gYnV0IGFsbG93cyB1c2Vyc1xcbi8vICAgdG8gb3B0IGZvciBhIGZ1bmN0aW9uYWwgc3R5bGVcXG5cXG5hZGQtcHJvcGVydHktZnVuY3Rpb24gPSBhZGQtcHJvcGVydHlcXG5hZGQtcHJvcGVydHkobmFtZSwgZXhwcilcXG4gIGlmIG1peGluXFxuICAgIHtuYW1lfSBleHByXFxuICBlbHNlXFxuICAgIGFkZC1wcm9wZXJ0eS1mdW5jdGlvbihuYW1lLCBleHByKVxcblxcbnByZWZpeC1jbGFzc2VzKHByZWZpeClcXG4gIC1wcmVmaXgtY2xhc3NlcyhwcmVmaXgsIGJsb2NrKVxcblxcbi8vIENhY2hpbmcgbWl4aW4sIHVzZSBpbnNpZGUgeW91ciBmdW5jdGlvbnMgdG8gZW5hYmxlIGNhY2hpbmcgYnkgZXh0ZW5kaW5nLlxcblxcbiRzdHlsdXNfbWl4aW5fY2FjaGUgPSB7fVxcbmNhY2hlKClcXG4gICRrZXkgPSAoY3VycmVudC1tZWRpYSgpIG9yICduby1tZWRpYScpICsgJ19fJyArIGNhbGxlZC1mcm9tWzBdICsgJ19fJyArIGFyZ3VtZW50c1xcbiAgaWYgJGtleSBpbiAkc3R5bHVzX21peGluX2NhY2hlXFxuICAgIEBleHRlbmQge1xcXCIkY2FjaGVfcGxhY2Vob2xkZXJfZm9yX1xcXCIgKyAkc3R5bHVzX21peGluX2NhY2hlWyRrZXldfVxcbiAgZWxzZSBpZiAnY2FjaGUnIGluIGNhbGxlZC1mcm9tXFxuICAgIHtibG9ja31cXG4gIGVsc2VcXG4gICAgJGlkID0gbGVuZ3RoKCRzdHlsdXNfbWl4aW5fY2FjaGUpXFxuXFxuICAgICYsXFxuICAgIC8kY2FjaGVfcGxhY2Vob2xkZXJfZm9yX3skaWR9XFxuICAgICAgJHN0eWx1c19taXhpbl9jYWNoZVska2V5XSA9ICRpZFxcbiAgICAgIHtibG9ja31cXG5cXG4vLyBQZXJjZW50YWdlIGZ1bmN0aW9uIHRvIGNvbnZlcnQgYSBudW1iZXIsIGUuZy4gXFxcIi40NVxcXCIsIGludG8gYSBwZXJjZW50YWdlLCBlLmcuIFxcXCI0NSVcXFwiXFxuXFxucGVyY2VudGFnZShudW0pXFxuICByZXR1cm4gdW5pdChudW0gKiAxMDAsICclJylcXG5cXG4vLyBSZXR1cm5zIHRoZSBwb3NpdGlvbiBvZiBhIGB2YWx1ZWAgd2l0aGluIGEgYGxpc3RgXFxuXFxuaW5kZXgobGlzdCwgdmFsdWUpXFxuICBmb3IgdmFsLCBpIGluIGxpc3RcXG4gICAgcmV0dXJuIGkgaWYgdmFsID09IHZhbHVlXFxuXCIsXCIvKlxcbiAqIFZlbmRvciBcXFwiZGlzcGxheTogZmxleFxcXCIgc3VwcG9ydCB3aXRoIGZhbGxiYWNrIHRvIG9ic29sZXRlIHZlcnNpb25zLlxcbiAqL1xcblxcbmZsZXgtdmVyc2lvbiA/PSBib3ggZmxleFxcblxcbi8vXFxuLy8gMS4gRGlzcGxheSB2YWx1ZXNcXG4vLyAgICAtIGh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtZmxleGJveC8jZmxleC1jb250YWluZXJzXFxuLy9cXG5kaXNwbGF5KHR5cGUsIGFyZ3MuLi4pXFxuICBpZiBmbGV4ID09IHR5cGUgfHwgaW5saW5lLWZsZXggPT0gdHlwZVxcbiAgICBpZiBib3ggaW4gZmxleC12ZXJzaW9uXFxuICAgICAgaWYgZmxleCA9PSB0eXBlXFxuICAgICAgICBkaXNwbGF5OiAtbXMtZmxleGJveCBhcmdzXFxuICAgICAgICBkaXNwbGF5OiB2ZW5kb3ItdmFsdWUoYm94IGFyZ3MsIG9ubHk6IG1veiB3ZWJraXQpXFxuICAgICAgZWxzZVxcbiAgICAgICAgZGlzcGxheTogLW1zLWlubGluZS1mbGV4Ym94IGFyZ3NcXG4gICAgICAgIGRpc3BsYXk6IHZlbmRvci12YWx1ZShpbmxpbmUtYm94IGFyZ3MsIG9ubHk6IG1veiB3ZWJraXQpXFxuICAgIGlmIGZsZXggaW4gZmxleC12ZXJzaW9uXFxuICAgICAgZGlzcGxheTogdmVuZG9yLXZhbHVlKGFyZ3VtZW50cywgb25seTogd2Via2l0IG9mZmljaWFsKSAvLyBvdmVyd3JpdGVzIG9sZCB3ZWJraXRcXG4gIGVsc2VcXG4gICAgZGlzcGxheTogYXJndW1lbnRzXFxuXFxuLypcXG4gKiBOZXcgc3ludGF4IGZvciBicm93c2VycyBsaWtlIEdvb2dsZSBDaHJvbWUuXFxuICogUGx1cyBhIHRyYW5zbGF0aW9uIHRvIHRoZSBvbGQgc3ludGF4LCBpZiBwb3NzaWJsZS5cXG4gKi9cXG5cXG5cXG4vL1xcbi8vIDUuIE9yZGVyaW5nIGFuZCBPcmllbnRhdGlvblxcbi8vICAgIC0gaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1mbGV4Ym94LyNvcmRlcmluZy1hbmQtb3JpZW50YXRpb25cXG4vL1xcbi1mbGV4LW9ic29sZXRlLWRpcmVjdGlvbihkaXJlY3Rpb24pXFxuICBpZiBib3ggaW4gZmxleC12ZXJzaW9uXFxuICAgIGlmIHJvdy1yZXZlcnNlID09IGRpcmVjdGlvbiB8fCBjb2x1bW4tcmV2ZXJzZSA9PSBkaXJlY3Rpb25cXG4gICAgICB2ZW5kb3IoJ2JveC1kaXJlY3Rpb24nLCByZXZlcnNlLCBpZ25vcmU6IG1zIG9mZmljaWFsKVxcblxcbiAgICBpZiByb3cgPT0gZGlyZWN0aW9uIHx8IHJvdy1yZXZlcnNlID09IGRpcmVjdGlvblxcbiAgICAgIHZlbmRvcignYm94LW9yaWVudCcsIGhvcml6b250YWwsIGlnbm9yZTogbXMgb2ZmaWNpYWwpXFxuICAgIGVsc2UgaWYgY29sdW1uID09IGRpcmVjdGlvbiB8fCBjb2x1bW4tcmV2ZXJzZSA9PSBkaXJlY3Rpb25cXG4gICAgICB2ZW5kb3IoJ2JveC1vcmllbnQnLCB2ZXJ0aWNhbCwgaWdub3JlOiBtcyBvZmZpY2lhbClcXG5cXG4tZmxleC1vYnNvbGV0ZS13cmFwKHZhbHVlKVxcbiAgaWYgYm94IGluIGZsZXgtdmVyc2lvblxcbiAgICAvLyBXQVJOOiB3cmFwLXJldmVyc2UgZG9lcyBub3QgaGF2ZSBhIGJveCBlcXVpdmFsZW50LiBUaGlzIHdpbGwgcmVuZGVyIGluIGRpZmZlcmVudCBtYW5uZXJzXFxuICAgIC8vICAgIG9uIGJveCB2cy4gZmxleCB2YWx1ZXMuXFxuICAgIGlmICd3cmFwJyA9PSB2YWx1ZSB8fCB3cmFwLXJldmVyc2UgPT0gdmFsdWVcXG4gICAgICB2ZW5kb3IoJ2JveC1saW5lcycsIG11bHRpcGxlLCBpZ25vcmU6IG1zIG9mZmljaWFsKVxcbiAgICBlbHNlIGlmIG5vd3JhcCA9PSB2YWx1ZVxcbiAgICAgIHZlbmRvcignYm94LWxpbmVzJywgc2luZ2xlLCBpZ25vcmU6IG1zIG9mZmljaWFsKVxcblxcbmZsZXgtZGlyZWN0aW9uKGRpcmVjdGlvbilcXG4gIC8vIG9ic29sZXRlXFxuICAtZmxleC1vYnNvbGV0ZS1kaXJlY3Rpb24oZGlyZWN0aW9uKVxcblxcbiAgLy8gbmV3XFxuICBpZiBmbGV4IGluIGZsZXgtdmVyc2lvblxcbiAgICB2ZW5kb3IoJ2ZsZXgtZGlyZWN0aW9uJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgbXMgb2ZmaWNpYWwpXFxuXFxuZmxleC13cmFwKHZhbHVlKVxcbiAgLy8gb2Jzb2xldGVcXG4gIC1mbGV4LW9ic29sZXRlLXdyYXAodmFsdWUpXFxuXFxuICBpZiBmbGV4IGluIGZsZXgtdmVyc2lvblxcbiAgICB2ZW5kb3IoJ2ZsZXgtd3JhcCcsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1zIG9mZmljaWFsKVxcblxcbmZsZXgtZmxvdygpXFxuICAvLyBvYnNvbGV0ZVxcbiAgLWZsZXgtb2Jzb2xldGUtZGlyZWN0aW9uKGFyZ3VtZW50c1swXSlcXG4gIC1mbGV4LW9ic29sZXRlLWRpcmVjdGlvbihhcmd1bWVudHNbMV0pXFxuICAtZmxleC1vYnNvbGV0ZS13cmFwKGFyZ3VtZW50c1swXSlcXG4gIC1mbGV4LW9ic29sZXRlLXdyYXAoYXJndW1lbnRzWzFdKVxcblxcbiAgLy8gbmV3XFxuICBpZiBmbGV4IGluIGZsZXgtdmVyc2lvblxcbiAgICB2ZW5kb3IoJ2ZsZXgtZmxvdycsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1zIG9mZmljaWFsKVxcblxcblxcbm9yZGVyKClcXG4gIC8vIG9ic29sZXRlXFxuICBpZiBib3ggaW4gZmxleC12ZXJzaW9uXFxuICAgIHZlbmRvcignYm94LW9yZGluYWwtZ3JvdXAnLCBhcmd1bWVudHMsIGlnbm9yZTogbXMgb2ZmaWNpYWwpXFxuXFxuICAvLyBuZXdcXG4gIGlmIGZsZXggaW4gZmxleC12ZXJzaW9uXFxuICAgIHZlbmRvcignZmxleC1vcmRlcicsIGFyZ3VtZW50cywgb25seTogbXMpXFxuICAgIHZlbmRvcignb3JkZXInLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBvZmZpY2lhbClcXG5cXG5cXG4vL1xcbi8vIDcuIEZsZXhpYmlsaXR5XFxuLy8gICAgLSBodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLWZsZXhib3gvI2ZsZXhpYmlsaXR5XFxuLy9cXG5mbGV4LWdyb3coZ3Jvd3RoKVxcbiAgLy8gb2Jzb2xldGVcXG4gIGlmIGJveCBpbiBmbGV4LXZlcnNpb25cXG4gICAgdmVuZG9yKCdib3gtZmxleCcsIGdyb3d0aClcXG5cXG4gIC8vIG5ld1xcbiAgaWYgZmxleCBpbiBmbGV4LXZlcnNpb25cXG4gICAgdmVuZG9yKCdmbGV4LWdyb3cnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBvZmZpY2lhbClcXG5cXG5mbGV4LWJhc2lzKClcXG4gIGlmIGZsZXggaW4gZmxleC12ZXJzaW9uXFxuICAgIHZlbmRvcignZmxleC1iYXNpcycsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG9mZmljaWFsKVxcblxcbmZsZXgtc2hyaW5rKClcXG4gIGlmIGZsZXggaW4gZmxleC12ZXJzaW9uXFxuICAgIHZlbmRvcignZmxleC1zaHJpbmsnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBvZmZpY2lhbClcXG5cXG5mbGV4KGdyb3d0aClcXG5cXG4gIC8vIG9ic29sZXRlXFxuICBpZiBib3ggaW4gZmxleC12ZXJzaW9uXFxuICAgIHNocmluayA9IDFcXG5cXG4gICAgaWYgbm9uZSA9PSBncm93dGggfHwgaW5pdGlhbCA9PSBncm93dGhcXG4gICAgICAvLyBXZWxsIGtub3duIHZhbHVlc1xcbiAgICAgIHNocmluayA9IDAgaWYgbm9uZSA9PSBncm93dGhcXG4gICAgICBncm93dGggPSAwXFxuICAgIGVsc2UgaWYgaXMtd2lkdGgoZ3Jvd3RoKSA9PSB0cnVlXFxuICAgICAgLy8gQmFzaXMgaXMgZGVmaW5lZCBhcyB0aGUgZmlyc3QgcGFyYW1ldGVyXFxuICAgICAgZ3Jvd3RoID0gYXJndW1lbnRzWzFdIHx8IDBcXG4gICAgICBzaHJpbmsgPSBhcmd1bWVudHNbMl0gaWYgMyA8PSBsZW5ndGgoYXJndW1lbnRzKVxcbiAgICBlbHNlIGlmIGFyZ3VtZW50c1sxXSAmJiBpcy13aWR0aChhcmd1bWVudHNbMV0pID09IGZhbHNlXFxuICAgICAgLy8gR3Jvd3RoIGlzIGZpcnN0IGFuZCBzaHJpbmsgaXMgc2Vjb25kXFxuICAgICAgc2hyaW5rID0gYXJndW1lbnRzWzFdXFxuXFxuICAgIC8vIFNpbmNlIHdlIGNhbid0IG1ha2UgdGhlIGRpc3RpbmN0aW9uIGJldHdlZW4gZ3Jvd2luZyBhbmQgc2hyaW5raW5nIGluIHRoZSBib3ggbW9kZWwsIHRha2VcXG4gICAgLy8gdGhlIG9uZSB0aGF0IHByb3ZpZGVzIHRoZSBtb3N0IGZsZXhpYmlsaXR5LlxcbiAgICB2ZW5kb3IoJ2JveC1mbGV4JywgbWF4KGdyb3d0aCwgc2hyaW5rKSwgaWdub3JlOiBtcylcXG5cXG4gIC8vIG5ld1xcbiAgaWYgZmxleCBpbiBmbGV4LXZlcnNpb25cXG4gICAgdmVuZG9yKCdmbGV4JywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgbXMgb2ZmaWNpYWwpXFxuXFxuXFxuLy8gY29udmVydHMgdGhlIGp1c3RpZmljYXRpb24gYWxpZ25tZW50XFxuLWNvbnZlcnQtanVzdGlmeShhbGlnbilcXG4gIGlmIGZsZXgtc3RhcnQgPT0gYWxpZ25cXG4gICAgcmV0dXJuIHN0YXJ0XFxuICBlbHNlIGlmIGZsZXgtZW5kID09IGFsaWduXFxuICAgIHJldHVybiBlbmRcXG4gIGVsc2UgaWYgc3BhY2UtYXJvdW5kID09IGFsaWduXFxuICAgIHJldHVybiBkaXN0cmlidXRlXFxuICBlbHNlIGlmIHNwYWNlLWJldHdlZW4gPT0gYWxpZ25cXG4gICAgcmV0dXJuIGp1c3RpZnlcXG4gIGVsc2VcXG4gICAgcmV0dXJuIGFsaWduXFxuXFxuLy9cXG4vLyA4LiBBbGlnbm1lbnRcXG4vLyAgICAtIGh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtZmxleGJveC8jYWxpZ25tZW50XFxuLy9cXG5qdXN0aWZ5LWNvbnRlbnQoYWxpZ24pXFxuICAvLyBvYnNvbGV0ZVxcbiAgaWYgYm94IGluIGZsZXgtdmVyc2lvblxcbiAgICB2ZW5kb3IoJ2JveC1wYWNrJywgLWNvbnZlcnQtanVzdGlmeShhbGlnbiksIGlnbm9yZTogbXMgb2ZmaWNpYWwpXFxuXFxuICAvLyBuZXdcXG4gIGlmIGZsZXggaW4gZmxleC12ZXJzaW9uXFxuICAgIHZlbmRvcignZmxleC1wYWNrJywgLWNvbnZlcnQtanVzdGlmeShhbGlnbiksIG9ubHk6IG1zKVxcbiAgICB2ZW5kb3IoJ2p1c3RpZnktY29udGVudCcsIGFsaWduLCBvbmx5OiB3ZWJraXQgb2ZmaWNpYWwpXFxuXFxuYWxpZ24tY29udGVudChhbGlnbilcXG4gIC8vIFdBUk46IE9ic29sZXRlIHNwZWMgZG9lcyBub3QgYWxsb3cgZm9yIGFkanVzdG1lbnQgaGVyZVxcbiAgaWYgZmxleCBpbiBmbGV4LXZlcnNpb25cXG4gICAgdmVuZG9yKCdmbGV4LWxpbmUtcGFjaycsIC1jb252ZXJ0LWp1c3RpZnkoYWxpZ24pLCBvbmx5OiBtcylcXG4gICAgdmVuZG9yKCdhbGlnbi1jb250ZW50JywgYWxpZ24sIG9ubHk6IHdlYmtpdCBvZmZpY2lhbClcXG5cXG4vLyBjb252ZXJ0cyBhbGlnbm1lbnQgZnJvbSAnZmxleCcgdG8gbm9ybWFsIHZhbHVlXFxuLWNvbnZlcnQtYWxpZ25tZW50KGFsaWduKVxcbiAgaWYgZmxleC1zdGFydCA9PSBhbGlnblxcbiAgICByZXR1cm4gc3RhcnRcXG4gIGVsc2UgaWYgZmxleC1lbmQgPT0gYWxpZ25cXG4gICAgcmV0dXJuIGVuZFxcbiAgZWxzZVxcbiAgICByZXR1cm4gYWxpZ25cXG5cXG5hbGlnbi1pdGVtcyhhbGlnbilcXG4gIC8vIG9ic29sZXRlXFxuICBpZiBib3ggaW4gZmxleC12ZXJzaW9uXFxuICAgIHZlbmRvcignYm94LWFsaWduJywgLWNvbnZlcnQtYWxpZ25tZW50KGFsaWduKSwgaWdub3JlOiBtcyBvZmZpY2lhbClcXG5cXG4gIC8vIG5ld1xcbiAgaWYgZmxleCBpbiBmbGV4LXZlcnNpb25cXG4gICAgdmVuZG9yKCdmbGV4LWFsaWduJywgLWNvbnZlcnQtYWxpZ25tZW50KGFsaWduKSwgb25seTogbXMpXFxuICAgIHZlbmRvcignYWxpZ24taXRlbXMnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBvZmZpY2lhbClcXG5cXG5hbGlnbi1zZWxmKGFsaWduKVxcbiAgLy8gV0FSTjogT2Jzb2xldGUgc3BlYyBkb2VzIG5vdCBhbGxvdyBmb3Igb3ZlcnJpZGluZyBhbGlnbm1lbnQgb24gaW5kaXZpZHVhbCBpdGVtcy5cXG4gIGlmIGZsZXggaW4gZmxleC12ZXJzaW9uXFxuICAgIHZlbmRvcignYWxpZ24tc2VsZicsIGFsaWduLCBvbmx5OiB3ZWJraXQgb2ZmaWNpYWwpXFxuICAgIHZlbmRvcignZmxleC1pdGVtLWFsaWduJywgLWNvbnZlcnQtYWxpZ25tZW50KGFsaWduKSwgb25seTogbXMpXFxuXCIsXCIvKlxcbiAqIE92ZXJmbG93IHV0aWxpdHkuIE1hcHMgdG8gcmVndWxhciBvdmVyZmxvdywgYW5kIGFkZHMgYW4gZWxsaXBzaXMgdmFsdWUuXFxuICpcXG4gKiBTeW5vcHNpczpcXG4gKlxcbiAqICAgb3ZlcmZsb3c6IDx0eXBlPlxcbiAqXFxuICogRXhhbXBsZXM6XFxuICpcXG4gKiAgICAgb3ZlcmZsb3c6IGF1dG9cXG4gKiAgICAgb3ZlcmZsb3c6IGhpZGRlblxcbiAqICAgICBvdmVyZmxvdzogZWxsaXBzaXNcXG4gKlxcbiAqL1xcblxcbm92ZXJmbG93KClcXG4gIGlmIGFyZ3VtZW50c1swXSA9PSBlbGxpcHNpc1xcbiAgICBlbGxpcHNpcygpXFxuICBlbHNlXFxuICAgIG92ZXJmbG93OiBhcmd1bWVudHNcXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLmxvY2FscyA9IHtcblx0XCJjb250YWluZXJcIjogXCJ0b2tlbi1pbnB1dC1jb250YWluZXJcIixcblx0XCJjb250YWluZXItLWZvY3VzZWRcIjogXCJ0b2tlbi1pbnB1dC1jb250YWluZXItLWZvY3VzZWRcIixcblx0XCJjb250YWluZXItLWVycm9yc1wiOiBcInRva2VuLWlucHV0LWNvbnRhaW5lci0tZXJyb3JzXCIsXG5cdFwidG9rZW4tbGlzdFwiOiBcInRva2VuLWlucHV0LXRva2VuLWxpc3RcIixcblx0XCJ0b2tlblwiOiBcInRva2VuLWlucHV0LXRva2VuXCIsXG5cdFwidG9rZW4tLWVycm9yXCI6IFwidG9rZW4taW5wdXQtdG9rZW4tLWVycm9yXCIsXG5cdFwidG9rZW4tLWVkaXRhYmxlXCI6IFwidG9rZW4taW5wdXQtdG9rZW4tLWVkaXRhYmxlXCIsXG5cdFwidG9rZW4tLWFjdGl2ZVwiOiBcInRva2VuLWlucHV0LXRva2VuLS1hY3RpdmVcIixcblx0XCJhdXRvc2l6ZWQtd3JhcHBlclwiOiBcInRva2VuLWlucHV0LWF1dG9zaXplZC13cmFwcGVyXCIsXG5cdFwidG9rZW5fX2xhYmVsLXdyYXBwZXJcIjogXCJ0b2tlbi1pbnB1dC10b2tlbl9fbGFiZWwtd3JhcHBlclwiLFxuXHRcInRva2VuX19kZWxldGUtYnV0dG9uXCI6IFwidG9rZW4taW5wdXQtdG9rZW5fX2RlbGV0ZS1idXR0b25cIixcblx0XCJ0b2tlbl9fZGVsZXRlLWJ1dHRvbl9fY2xvc2UtaWNvblwiOiBcInRva2VuLWlucHV0LXRva2VuX19kZWxldGUtYnV0dG9uX19jbG9zZS1pY29uXCJcbn07XG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!../node_modules/stylus-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!../src/styles.styl\n"); /***/ }), diff --git a/docs/index.html b/docs/index.html index a6673d6..25fbabb 100644 --- a/docs/index.html +++ b/docs/index.html @@ -7,7 +7,7 @@ - +
diff --git a/examples/ExampleEditable/ExampleEditable.jsx b/examples/ExampleEditable/ExampleEditable.jsx new file mode 100644 index 0000000..5d2fda9 --- /dev/null +++ b/examples/ExampleEditable/ExampleEditable.jsx @@ -0,0 +1,62 @@ +/* eslint no-console: 0 */ +/* eslint no-unused-vars: 0 */ + +import React, { useState, useCallback } from 'react'; +import TokenInput from '../../src'; + +import CopyAnchor from '../share/CopyAnchor'; + +import { DEMO_VALUES } from '../demoValues'; + +const handleIsTokenEditable = (tokenValue, tokenMeta) => { + return Number.isNaN(+tokenValue); +}; + +const ExampleReadOnly = () => { + const [values, setValues] = useState(DEMO_VALUES); + + const handleTokenValuesChange = useCallback( + (newTokenValues) => { + console.log( + 'tokenValues before', + values, + 'newTokenValues', + newTokenValues + ); + setValues(newTokenValues); + }, + [values] + ); + + return ( + <> +

+ Control Token Inline Editable + +

+

+ TokenInput allow to control a Token is inline editable or not. +
+ This example demonstrates that only tokens with non-number values are + editable. +

+ + +
+        {`
+
+        `}
+      
+ + ); +}; + +export default ExampleReadOnly; diff --git a/examples/ExampleEditable/index.js b/examples/ExampleEditable/index.js new file mode 100644 index 0000000..3b177a6 --- /dev/null +++ b/examples/ExampleEditable/index.js @@ -0,0 +1,3 @@ +import ExampleEditable from './ExampleEditable'; + +export default ExampleEditable; diff --git a/examples/index.jsx b/examples/index.jsx index 8f82ac2..bcd5039 100644 --- a/examples/index.jsx +++ b/examples/index.jsx @@ -20,6 +20,7 @@ import ExamplePreprocessor from './ExamplePreprocessor'; import ExampleCustomizeSeparators from './ExampleCustomizeSeparators'; import ExampleCustomizeToken from './ExampleCustomizeToken'; import ExampleReadOnly from './ExampleReadOnly'; +import ExampleEditable from './ExampleEditable'; import ExampleWithFormLibrary from './ExampleWithFormLibrary'; import ExampleSpecialKeyDown from './ExampleSpecialKeyDown'; @@ -40,6 +41,7 @@ const examples = [ , , , + , , , ]; diff --git a/examples/webpack.config.js b/examples/webpack.config.js index 2a799d1..6bda9f0 100644 --- a/examples/webpack.config.js +++ b/examples/webpack.config.js @@ -26,7 +26,7 @@ module.exports = { // Process JS with Babel { test: /\.(js|jsx)?$/, - exclude: /node_modules/, + exclude: /(node_modules|coverage)/, use: { loader: 'babel-loader', }, diff --git a/jest.config.js b/jest.config.js new file mode 100644 index 0000000..ef5db71 --- /dev/null +++ b/jest.config.js @@ -0,0 +1,194 @@ +/* + * For a detailed explanation regarding each configuration property, visit: + * https://jestjs.io/docs/en/configuration.html + */ + +module.exports = { + // All imported modules in your tests should be mocked automatically + // automock: false, + + // Stop running tests after `n` failures + // bail: 0, + + // The directory where Jest should store its cached dependency information + // cacheDirectory: "/private/var/folders/fl/kfb5rtvn77xdykk535cfgj6c0000gn/T/jest_dx", + + // Automatically clear mock calls and instances between every test + // clearMocks: false, + + // Indicates whether the coverage information should be collected while executing the test + // collectCoverage: false, + + // An array of glob patterns indicating a set of files for which coverage information should be collected + collectCoverageFrom: ['src/**/*.js', '!src/**/*.fixtures.js'], + + // The directory where Jest should output its coverage files + coverageDirectory: 'coverage', + + // An array of regexp pattern strings used to skip coverage collection + // coveragePathIgnorePatterns: [ + // "/node_modules/" + // ], + + // Indicates which provider should be used to instrument code for coverage + coverageProvider: 'v8', + + // A list of reporter names that Jest uses when writing coverage reports + // coverageReporters: [ + // "json", + // "text", + // "lcov", + // "clover" + // ], + + // An object that configures minimum threshold enforcement for coverage results + // coverageThreshold: undefined, + + // A path to a custom dependency extractor + // dependencyExtractor: undefined, + + // Make calling deprecated APIs throw helpful error messages + // errorOnDeprecated: false, + + // Force coverage collection from ignored files using an array of glob patterns + // forceCoverageMatch: [], + + // A path to a module which exports an async function that is triggered once before all test suites + // globalSetup: undefined, + + // A path to a module which exports an async function that is triggered once after all test suites + // globalTeardown: undefined, + + // A set of global variables that need to be available in all test environments + // globals: {}, + + // The maximum amount of workers used to run your tests. Can be specified as % or a number. E.g. maxWorkers: 10% will use 10% of your CPU amount + 1 as the maximum worker number. maxWorkers: 2 will use a maximum of 2 workers. + // maxWorkers: "50%", + + // An array of directory names to be searched recursively up from the requiring module's location + // moduleDirectories: [ + // "node_modules" + // ], + + // An array of file extensions your modules use + // moduleFileExtensions: [ + // "js", + // "json", + // "jsx", + // "ts", + // "tsx", + // "node" + // ], + + // A map from regular expressions to module names or to arrays of module names that allow to stub out resources with a single module + // moduleNameMapper: {}, + + // An array of regexp pattern strings, matched against all module paths before considered 'visible' to the module loader + // modulePathIgnorePatterns: [], + + // Activates notifications for test results + // notify: false, + + // An enum that specifies notification mode. Requires { notify: true } + // notifyMode: "failure-change", + + // A preset that is used as a base for Jest's configuration + // preset: undefined, + + // Run tests from one or more projects + // projects: undefined, + + // Use this configuration option to add custom reporters to Jest + // reporters: undefined, + + // Automatically reset mock state between every test + // resetMocks: false, + + // Reset the module registry before running each individual test + // resetModules: false, + + // A path to a custom resolver + // resolver: undefined, + + // Automatically restore mock state between every test + // restoreMocks: false, + + // The root directory that Jest should scan for tests and modules within + // rootDir: undefined, + + // A list of paths to directories that Jest should use to search for files in + // roots: [ + // "" + // ], + + // Allows you to use a custom runner instead of Jest's default test runner + // runner: "jest-runner", + + // The paths to modules that run some code to configure or set up the testing environment before each test + // setupFiles: [], + + // A list of paths to modules that run some code to configure or set up the testing framework before each test + setupFilesAfterEnv: ['/setupTests.js'], + + // The number of seconds after which a test is considered as slow and reported as such in the results. + // slowTestThreshold: 5, + + // A list of paths to snapshot serializer modules Jest should use for snapshot testing + // snapshotSerializers: [], + + // The test environment that will be used for testing + testEnvironment: 'jsdom', + + // Options that will be passed to the testEnvironment + // testEnvironmentOptions: {}, + + // Adds a location field to test results + // testLocationInResults: false, + + // The glob patterns Jest uses to detect test files + // testMatch: [ + // "**/__tests__/**/*.[jt]s?(x)", + // "**/?(*.)+(spec|test).[tj]s?(x)" + // ], + + // An array of regexp pattern strings that are matched against all test paths, matched tests are skipped + // testPathIgnorePatterns: [ + // "/node_modules/" + // ], + + // The regexp pattern or array of patterns that Jest uses to detect test files + // testRegex: [], + + // This option allows the use of a custom results processor + // testResultsProcessor: undefined, + + // This option allows use of a custom test runner + // testRunner: "jasmine2", + + // This option sets the URL for the jsdom environment. It is reflected in properties such as location.href + // testURL: "http://localhost", + + // Setting this value to "fake" allows the use of fake timers for functions such as "setTimeout" + // timers: "real", + + // A map from regular expressions to paths to transformers + // transform: undefined, + + // An array of regexp pattern strings that are matched against all source file paths, matched files will skip transformation + // transformIgnorePatterns: [ + // "/node_modules/", + // "\\.pnp\\.[^\\/]+$" + // ], + + // An array of regexp pattern strings that are matched against all modules before the module loader will automatically return a mock for them + // unmockedModulePathPatterns: undefined, + + // Indicates whether each individual test should be reported during the run + // verbose: undefined, + + // An array of regexp patterns that are matched against all source file paths before re-running tests in watch mode + // watchPathIgnorePatterns: [], + + // Whether to use watchman for file crawling + // watchman: true, +}; diff --git a/lib/index.js b/lib/index.js index 5e21a5a..0655e19 100644 --- a/lib/index.js +++ b/lib/index.js @@ -1,3 +1,3 @@ /*! For license information please see index.js.LICENSE.txt */ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("react")):"function"==typeof define&&define.amd?define(["react"],t):"object"==typeof exports?exports["token-input"]=t(require("react")):e.TokenInput=t(e.React)}(self,(function(e){return(()=>{var t={184:(e,t)=>{var n;!function(){"use strict";var r={}.hasOwnProperty;function o(){for(var e=[],t=0;t{"use strict";var r=n(414);function o(){}function a(){}a.resetWarningCache=o,e.exports=function(){function e(e,t,n,o,a,u){if(u!==r){var i=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw i.name="Invariant Violation",i}}function t(){return e}e.isRequired=e;var n={array:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:a,resetWarningCache:o};return n.PropTypes=n,n}},697:(e,t,n)=>{e.exports=n(703)()},414:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},639:(e,t,n)=>{"use strict";var r=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}(this.props,[]);return function(e){c.forEach((function(t){return delete e[t]}))}(o),o.className=this.props.inputClassName,o.id=this.state.inputId,o.style=n,u.default.createElement("div",{className:this.props.className,style:t},this.renderStyles(),u.default.createElement("input",r({},o,{ref:this.inputRef})),u.default.createElement("div",{ref:this.sizerRef,style:s},e),this.props.placeholder?u.default.createElement("div",{ref:this.placeHolderSizerRef,style:s},this.props.placeholder):null)}}]),t}(a.Component);y.propTypes={className:i.default.string,defaultValue:i.default.any,extraWidth:i.default.oneOfType([i.default.number,i.default.string]),id:i.default.string,injectStyles:i.default.bool,inputClassName:i.default.string,inputRef:i.default.func,inputStyle:i.default.object,minWidth:i.default.oneOfType([i.default.number,i.default.string]),onAutosize:i.default.func,onChange:i.default.func,placeholder:i.default.string,placeholderIsMinWidth:i.default.bool,style:i.default.object,value:i.default.any},y.defaultProps={minWidth:1,injectStyles:!0},t.Z=y},698:t=>{"use strict";t.exports=e}},n={};function r(e){var o=n[e];if(void 0!==o)return o.exports;var a=n[e]={exports:{}};return t[e](a,a.exports,r),a.exports}r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var o={};return(()=>{"use strict";r.r(o),r.d(o,{JS__TOKEN__DELETE_BUTTON__CLASS_NAME:()=>p,default:()=>X});var e=r(698),t=r.n(e),n=r(697),a=r.n(n),u=r(184),i=r.n(u),l=r(639);var s=function(){};const c=function(e,t){var n=t.onBackspace,r=void 0===n?s:n,o=t.onTab,a=void 0===o?s:o,u=t.onEnter,i=void 0===u?s:u,l=t.onEscape,c=void 0===l?s:l;switch(function(e){var t=e.key,n=e.keyCode,r=t;return n&&229===n&&(r="Process"),{key:r}}(e).key){case"Backspace":r(e);break;case"Tab":a(e);break;case"Enter":i(e);break;case"Escape":c(e)}};var f={onBackspace:1,onTab:0,onEnter:1,onEscape:1},p="js__token__delete-button";function d(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function y(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=new Array(t);n0})),n=h(t).map((function(e){return b(e)}));v(n),O("")}}),[C,h,b,v,O]),A=(0,e.useCallback)((function(e){var t=e.target.value,n=t.substring(t.length-1);!0!==C.test(n)?O(t):j(S)}),[C,j,S,O]),I=m({specialKeyDown:d,inputInitValue:"",inputValue:S,onLastTokenDelete:T,handleInputValueUpdate:O,handleTokensCreate:j}),V=I.handleBackspaceKeyDown,D=I.handleTabKeyDown,R=I.handleEnterKeyDown,_=I.handleEscapeKeyDown,P=(0,e.useCallback)((function(e){c(e,{onBackspace:V,onTab:D,onEnter:R,onEscape:_})}),[V,D,R,_]),M=(0,e.useCallback)((function(e){j(S),f(e)}),[j,S,f]),x=(0,e.useCallback)((function(e){e.preventDefault();var t=e.clipboardData.getData("text");j(t)}),[j]);return t().createElement("div",{className:k},t().createElement(l.Z,{ref:r,autoFocus:i,placeholder:u,value:S,onChange:A,onKeyDown:P,onPaste:x,onFocus:s,onBlur:M}))}));T.displayName="TokenCreator",T.propTypes={placeholder:a().string.isRequired,autoFocus:a().bool.isRequired,onFocus:a().func.isRequired,onBlur:a().func.isRequired,separators:a().array.isRequired,specialKeyDown:a().object.isRequired,onInputValueChange:a().func.isRequired,onPreprocess:a().func.isRequired,onBuildTokenValue:a().func.isRequired,onNewTokenValuesAppend:a().func.isRequired,onLastTokenDelete:a().func.isRequired};const w=T,S=function(){return t().createElement("div",{role:"img",className:"token-input-token__delete-button__close-icon","aria-hidden":"true","data-component-name":"CloseIcon"})};var E=function(e){var n=e.onRenderContent,r="function"==typeof n;return t().createElement("span",{role:"button",className:i()(p,"token-input-token__delete-button"),"aria-hidden":"true","data-component-name":"DeleteButton"},r&&n(),!r&&t().createElement(S,null))};E.propTypes={onRenderContent:a().func};const C=E;function O(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function j(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n0&&void 0!==arguments[0]?arguments[0]:{},t=e.reset,n=void 0!==t&&t,r=0===I.length;if(n||r)T();else{var o=m(I);T(o)}}),[I,m,T]),M=(0,e.useCallback)((function(e){e.stopPropagation(),a||(e.target.closest(".".concat(v," .").concat(p))?w():_())}),[a,w,_]),x=(0,e.useCallback)((function(e){var t=e.target.value;V(t)}),[V]),B=(0,e.useCallback)((function(e){c(e,{onEscape:function(){return P({reset:!0})},onEnter:function(){return P()}})}),[P]),N=(0,e.useCallback)((function(){P()}),[P]),W=(0,e.useMemo)((function(){var e;return i()(f(u,s),v,(O(e={},"token-input-token--active",D),O(e,"token-input-token--error",R&&!D),O(e,"token-input-token--read-only",a),e))}),[a,R,D,f,u,s]),G=(0,e.useMemo)((function(){return b(u,s)}),[b,u,s]);return D?t().createElement("div",{role:"presentation",className:W,onClick:A},t().createElement("div",{className:k},t().createElement(l.Z,{ref:S,value:I,onChange:x,onKeyDown:B,onBlur:N}))):t().createElement("div",{role:"presentation",className:W,onClick:M,title:G,"data-component-name":"Token"},t().createElement("div",{className:"token-input-token__label-wrapper"},d(u,s)),!a&&t().createElement(C,{onRenderContent:y}))};I.propTypes={readOnly:a().bool.isRequired,tokenValue:a().any.isRequired,tokenMeta:a().object.isRequired,onGetClassName:a().func.isRequired,onGetDisplayLabel:a().func.isRequired,onRenderDeleteButtonContent:a().func,onGetEditableValue:a().func.isRequired,onGetErrorMessage:a().func.isRequired,onBuildTokenValue:a().func.isRequired,onEditStart:a().func.isRequired,onEditEnd:a().func.isRequired,onDelete:a().func.isRequired};const V=I;function D(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);ne.length)&&(t=e.length);for(var n=0,r=new Array(t);n=o.length)throw new Error("setTokenActivated out of tokenMetas scope; targetIndex ".concat(e,"; tokenMetas.length ").concat(o.length));var n=function(e){return function(e){if(Array.isArray(e))return M(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||P(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}(o);n[e].activated=t,a(n)}),[o]);return{buildTokenMeta:_,tokenMetas:o,setTokenMetas:a,setTokenActivated:u}};function B(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,a=[],u=!0,i=!1;try{for(n=n.call(e);!(u=(r=n.next()).done)&&(a.push(r.value),!t||a.length!==t);u=!0);}catch(e){i=!0,o=e}finally{try{u||null==n.return||n.return()}finally{if(i)throw o}}return a}}(e,t)||N(e,t)||function(){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 N(e,t){if(e){if("string"==typeof e)return W(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?W(e,t):void 0}}function W(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);ne.length)&&(t=e.length);for(var n=0,r=new Array(t);ne.length)&&(t=e.length);for(var n=0,r=new Array(t);ne.length)&&(t=e.length);for(var n=0,r=new Array(t);n=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}(n,U),C=R(),O=C.isTokenInputFocused,j=C.handleTokenInputFocus,A=C.handleTokenInputBlur,I=function(){var t=(0,e.useRef)(null),n=(0,e.useCallback)((function(){t&&t.current&&t.current.focus()}),[]);return{tokenCreatorRef:t,focusTokenCreator:n}}(),D=I.tokenCreatorRef,_=I.focusTokenCreator,P=G({tokenValues:s,onTokenValueValidate:S}),M=P.hasInvalidToken,x=P.internalTokenValues,B=P.tokenMetas,N=P.setTokenActivated,W=z({tokenValues:s,onTokenValuesChange:c,setTokenActivated:N,handleTokenInputFocus:j,handleTokenInputBlur:A,focusTokenCreator:_}),q=W.handleTokenEditStart,K=W.handleTokenEditEnd,L=F({tokenValues:s,onTokenValuesChange:c,focusTokenCreator:_}),J=L.handleTokenDelete,Y=L.handleLastTokenDelete,Q=(0,e.useCallback)((function(e){if(0!==e.length){var t=[].concat(Z(s),Z(e));c(t)}}),[s,c]),X=(0,e.useCallback)((function(e){if("function"!=typeof g)return e;var t=g(e);if(!0!==Array.isArray(t))throw new Error("onPreprocess should return an array of values");return t}),[g]),ee=p||V;return t().createElement("div",H({},E,{className:i()(o,"token-input-container",(r={},$(r,"token-input-container--focused",O),$(r,"token-input-container--errors",M),r)),onClick:_,role:"presentation","data-component-name":"TokenInput"}),t().createElement("div",{className:"token-input-token-list"},x.map((function(e,n){var r=B[n],o=r.key;return t().createElement(ee,{key:o,readOnly:a,tokenValue:e,tokenMeta:r,onGetClassName:d,onGetDisplayLabel:y,onRenderDeleteButtonContent:h,onGetEditableValue:b,onGetErrorMessage:m,onBuildTokenValue:f,onEditStart:q(n),onEditEnd:K(n),onDelete:J(n)})}))),!a&&t().createElement(w,{ref:D,placeholder:l,autoFocus:u,onFocus:j,onBlur:A,separators:v,specialKeyDown:k,onInputValueChange:T,onPreprocess:X,onBuildTokenValue:f,onNewTokenValuesAppend:Q,onLastTokenDelete:Y}))};Y.propTypes={style:a().object,className:a().string,readOnly:a().bool,autoFocus:a().bool,placeholder:a().string,separators:a().array,tokenValues:a().array.isRequired,onTokenValuesChange:a().func,onPreprocess:a().func,onBuildTokenValue:a().func,onInputValueChange:a().func,onTokenValueValidate:a().func,onGetTokenClassName:a().func,onGetTokenDisplayLabel:a().func,onRenderTokenDeleteButtonContent:a().func,onGetTokenEditableValue:a().func,onGetTokenErrorMessage:a().func,customizeTokenComponent:a().func,specialKeyDown:a().object};var Q=function(){};Y.defaultProps={className:"",readOnly:!1,autoFocus:!1,placeholder:"",separators:[",",";","\n","\r","\r\n"],specialKeyDown:{onBackspace:1,onTab:0,onEnter:1,onEscape:1},onBuildTokenValue:function(e){return e.trim()},onInputValueChange:Q,onTokenValueValidate:Q,onTokenValuesChange:Q,onGetTokenClassName:Q,onGetTokenDisplayLabel:L,onGetTokenEditableValue:L,onGetTokenErrorMessage:function(e,t){if("string"==typeof t.error)return t.error}};const X=Y})(),o})()})); +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("react")):"function"==typeof define&&define.amd?define(["react"],t):"object"==typeof exports?exports["token-input"]=t(require("react")):e.TokenInput=t(e.React)}(self,(function(e){return(()=>{var t={184:(e,t)=>{var n;!function(){"use strict";var r={}.hasOwnProperty;function o(){for(var e=[],t=0;t{"use strict";var r=n(414);function o(){}function a(){}a.resetWarningCache=o,e.exports=function(){function e(e,t,n,o,a,i){if(i!==r){var u=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw u.name="Invariant Violation",u}}function t(){return e}e.isRequired=e;var n={array:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:a,resetWarningCache:o};return n.PropTypes=n,n}},697:(e,t,n)=>{e.exports=n(703)()},414:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},639:(e,t,n)=>{"use strict";var r=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}(this.props,[]);return function(e){c.forEach((function(t){return delete e[t]}))}(o),o.className=this.props.inputClassName,o.id=this.state.inputId,o.style=n,i.default.createElement("div",{className:this.props.className,style:t},this.renderStyles(),i.default.createElement("input",r({},o,{ref:this.inputRef})),i.default.createElement("div",{ref:this.sizerRef,style:s},e),this.props.placeholder?i.default.createElement("div",{ref:this.placeHolderSizerRef,style:s},this.props.placeholder):null)}}]),t}(a.Component);y.propTypes={className:u.default.string,defaultValue:u.default.any,extraWidth:u.default.oneOfType([u.default.number,u.default.string]),id:u.default.string,injectStyles:u.default.bool,inputClassName:u.default.string,inputRef:u.default.func,inputStyle:u.default.object,minWidth:u.default.oneOfType([u.default.number,u.default.string]),onAutosize:u.default.func,onChange:u.default.func,placeholder:u.default.string,placeholderIsMinWidth:u.default.bool,style:u.default.object,value:u.default.any},y.defaultProps={minWidth:1,injectStyles:!0},t.Z=y},698:t=>{"use strict";t.exports=e}},n={};function r(e){var o=n[e];if(void 0!==o)return o.exports;var a=n[e]={exports:{}};return t[e](a,a.exports,r),a.exports}r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var o={};return(()=>{"use strict";r.r(o),r.d(o,{JS__TOKEN__DELETE_BUTTON__CLASS_NAME:()=>p,default:()=>Y});var e=r(698),t=r.n(e),n=r(697),a=r.n(n),i=r(184),u=r.n(i),l=r(639);const s=function(){},c=function(e,t){var n=t.onBackspace,r=void 0===n?s:n,o=t.onTab,a=void 0===o?s:o,i=t.onEnter,u=void 0===i?s:i,l=t.onEscape,c=void 0===l?s:l;switch(function(e){var t=e.key,n=e.keyCode,r=t;return n&&229===n&&(r="Process"),{key:r}}(e).key){case"Backspace":r(e);break;case"Tab":a(e);break;case"Enter":u(e);break;case"Escape":c(e)}};var f={onBackspace:1,onTab:0,onEnter:1,onEscape:1},p="js__token__delete-button";function d(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function y(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=new Array(t);n0})),n=h(t).map((function(e){return b(e)}));g(n),O("")}}),[C,h,b,g,O]),j=(0,e.useCallback)((function(e){var t=e.target.value,n=t.substring(t.length-1);!0!==C.test(n)?O(t):I(E)}),[C,I,E,O]),A=k({specialKeyDown:d,inputInitValue:"",inputValue:E,onLastTokenDelete:T,handleInputValueUpdate:O,handleTokensCreate:I}),V=A.handleBackspaceKeyDown,D=A.handleTabKeyDown,_=A.handleEnterKeyDown,R=A.handleEscapeKeyDown,M=(0,e.useCallback)((function(e){c(e,{onBackspace:V,onTab:D,onEnter:_,onEscape:R})}),[V,D,_,R]),P=(0,e.useCallback)((function(e){I(E),f(e)}),[I,E,f]),x=(0,e.useCallback)((function(e){e.preventDefault();var t=e.clipboardData.getData("text");I(t)}),[I]);return t().createElement("div",{className:m["autosized-wrapper"]},t().createElement(l.Z,{ref:r,autoFocus:u,placeholder:i,value:E,onChange:j,onKeyDown:M,onPaste:x,onFocus:s,onBlur:P}))}));g.displayName="TokenCreator",g.propTypes={placeholder:a().string.isRequired,autoFocus:a().bool.isRequired,onFocus:a().func.isRequired,onBlur:a().func.isRequired,separators:a().array.isRequired,specialKeyDown:a().object.isRequired,onInputValueChange:a().func.isRequired,onPreprocess:a().func.isRequired,onBuildTokenValue:a().func.isRequired,onNewTokenValuesAppend:a().func.isRequired,onLastTokenDelete:a().func.isRequired};const T=g,w=function(){return t().createElement("div",{role:"img",className:m["token__delete-button__close-icon"],"aria-hidden":"true","data-component-name":"CloseIcon"})};var E=function(e){var n=e.onRenderContent,r="function"==typeof n;return t().createElement("span",{role:"button",className:u()(p,m["token__delete-button"]),"aria-hidden":"true","data-component-name":"DeleteButton"},r&&n(),!r&&t().createElement(w,null))};E.propTypes={onRenderContent:a().func};const S=E;function C(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function O(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n0&&void 0!==arguments[0]?arguments[0]:{},t=e.reset,n=void 0!==t&&t,r=0===A.length;if(n||r)T();else{var o=v(A);T(o)}}),[A,v,T]),x=(0,e.useCallback)((function(e){e.stopPropagation(),a||(e.target.closest(".".concat(m.token," .").concat(p))?w():R&&M())}),[a,R,w,M]),B=(0,e.useCallback)((function(e){var t=e.target.value;V(t)}),[V]),N=(0,e.useCallback)((function(e){c(e,{onEscape:function(){return P({reset:!0})},onEnter:function(){return P()}})}),[P]),W=(0,e.useCallback)((function(){P()}),[P]),z=(0,e.useMemo)((function(){var e;return u()(f(i,s),m.token,(C(e={},m["token--read-only"],a),C(e,m["token--editable"],R&&!a),C(e,m["token--active"],D),C(e,m["token--error"],_&&!D),e))}),[f,a,R,D,_,i,s]),G=(0,e.useMemo)((function(){return k(i,s)}),[k,i,s]);return D?t().createElement("div",{role:"presentation",className:z,onClick:I},t().createElement("div",{className:m["autosized-wrapper"]},t().createElement(l.Z,{ref:E,value:A,onChange:B,onKeyDown:N,onBlur:W}))):t().createElement("div",{role:"presentation",className:z,onClick:x,title:G,"data-component-name":"Token"},t().createElement("div",{className:m["token__label-wrapper"]},d(i,s)),!a&&t().createElement(S,{onRenderContent:y}))};j.propTypes={readOnly:a().bool.isRequired,tokenValue:a().any.isRequired,tokenMeta:a().object.isRequired,onGetClassName:a().func.isRequired,onGetDisplayLabel:a().func.isRequired,onRenderDeleteButtonContent:a().func,onIsEditable:a().func.isRequired,onGetEditableValue:a().func.isRequired,onGetErrorMessage:a().func.isRequired,onBuildTokenValue:a().func.isRequired,onEditStart:a().func.isRequired,onEditEnd:a().func.isRequired,onDelete:a().func.isRequired};const A=j;function V(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);ne.length)&&(t=e.length);for(var n=0,r=new Array(t);n=o.length)throw new Error("setTokenActivated out of tokenMetas scope; targetIndex ".concat(e,"; tokenMetas.length ").concat(o.length));var n=function(e){return function(e){if(Array.isArray(e))return M(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||R(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}(o);n[e].activated=t,a(n)}),[o]);return{buildTokenMeta:_,tokenMetas:o,setTokenMetas:a,setTokenActivated:i}};function x(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,a=[],i=!0,u=!1;try{for(n=n.call(e);!(i=(r=n.next()).done)&&(a.push(r.value),!t||a.length!==t);i=!0);}catch(e){u=!0,o=e}finally{try{i||null==n.return||n.return()}finally{if(u)throw o}}return a}}(e,t)||B(e,t)||function(){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 B(e,t){if(e){if("string"==typeof e)return N(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?N(e,t):void 0}}function N(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);ne.length)&&(t=e.length);for(var n=0,r=new Array(t);ne.length)&&(t=e.length);for(var n=0,r=new Array(t);ne.length)&&(t=e.length);for(var n=0,r=new Array(t);n=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}(n,L),I=D(),j=I.isTokenInputFocused,V=I.handleTokenInputFocus,_=I.handleTokenInputBlur,R=function(){var t=(0,e.useRef)(null),n=(0,e.useCallback)((function(){t&&t.current&&t.current.focus()}),[]);return{tokenCreatorRef:t,focusTokenCreator:n}}(),M=R.tokenCreatorRef,P=R.focusTokenCreator,x=W({tokenValues:s,onTokenValueValidate:C}),B=x.hasInvalidToken,N=x.internalTokenValues,z=x.tokenMetas,q=x.setTokenActivated,F=G({tokenValues:s,onTokenValuesChange:c,setTokenActivated:q,handleTokenInputFocus:V,handleTokenInputBlur:_,focusTokenCreator:P}),Z=F.handleTokenEditStart,J=F.handleTokenEditEnd,Y=K({tokenValues:s,onTokenValuesChange:c,focusTokenCreator:P}),Q=Y.handleTokenDelete,X=Y.handleLastTokenDelete,ee=(0,e.useCallback)((function(e){if(0!==e.length){var t=[].concat($(s),$(e));c(t)}}),[s,c]),te=(0,e.useCallback)((function(e){if("function"!=typeof E)return e;var t=E(e);if(!0!==Array.isArray(t))throw new Error("onPreprocess should return an array of values");return t}),[E]),ne=p||A;return t().createElement("div",U({},O,{className:u()(o,m.container,(r={},H(r,m["container--focused"],j),H(r,m["container--errors"],B),r)),onClick:P,role:"presentation","data-component-name":"TokenInput"}),t().createElement("div",{className:m["token-list"]},N.map((function(e,n){var r=z[n],o=r.key;return t().createElement(ne,{key:o,readOnly:a,tokenValue:e,tokenMeta:r,onGetClassName:d,onGetDisplayLabel:y,onRenderDeleteButtonContent:h,onIsEditable:b,onGetEditableValue:k,onGetErrorMessage:v,onBuildTokenValue:f,onEditStart:Z(n),onEditEnd:J(n),onDelete:Q(n)})}))),!a&&t().createElement(T,{ref:M,placeholder:l,autoFocus:i,onFocus:V,onBlur:_,separators:g,specialKeyDown:w,onInputValueChange:S,onPreprocess:te,onBuildTokenValue:f,onNewTokenValuesAppend:ee,onLastTokenDelete:X}))};J.propTypes={style:a().object,className:a().string,readOnly:a().bool,autoFocus:a().bool,placeholder:a().string,separators:a().array,tokenValues:a().array.isRequired,onTokenValuesChange:a().func,onPreprocess:a().func,onBuildTokenValue:a().func,onInputValueChange:a().func,onTokenValueValidate:a().func,onGetTokenClassName:a().func,onGetTokenDisplayLabel:a().func,onRenderTokenDeleteButtonContent:a().func,onIsTokenEditable:a().func,onGetTokenEditableValue:a().func,onGetTokenErrorMessage:a().func,customizeTokenComponent:a().func,specialKeyDown:a().object},J.defaultProps={className:"",readOnly:!1,autoFocus:!1,placeholder:"",separators:[",",";","\n","\r","\r\n"],specialKeyDown:{onBackspace:1,onTab:0,onEnter:1,onEscape:1},onBuildTokenValue:function(e){return e.trim()},onInputValueChange:s,onTokenValueValidate:s,onTokenValuesChange:s,onGetTokenClassName:s,onGetTokenDisplayLabel:F,onIsTokenEditable:function(){return!0},onGetTokenEditableValue:F,onGetTokenErrorMessage:function(e,t){if("string"==typeof t.error)return t.error}};const Y=J})(),o})()})); //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/lib/index.js.LICENSE.txt b/lib/index.js.LICENSE.txt index 7a5dbeb..8bed4d9 100644 --- a/lib/index.js.LICENSE.txt +++ b/lib/index.js.LICENSE.txt @@ -4,4 +4,4 @@ http://jedwatson.github.io/classnames */ -/*! react-customize-token-input v1.4.2 | (c) 2021 Mark Lin. | MIT | https://github.com/seawind543/react-token-input */ +/*! react-customize-token-input v1.5.0 | (c) 2021 Mark Lin. | MIT | https://github.com/seawind543/react-token-input */ diff --git a/lib/index.js.map b/lib/index.js.map index b7bb315..c175262 100644 --- a/lib/index.js.map +++ b/lib/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","mappings":"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","sources":["webpack://TokenInput/webpack/universalModuleDefinition","webpack://TokenInput/./node_modules/classnames/index.js","webpack://TokenInput/./node_modules/prop-types/factoryWithThrowingShims.js","webpack://TokenInput/./node_modules/prop-types/index.js","webpack://TokenInput/./node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack://TokenInput/./node_modules/react-input-autosize/lib/AutosizeInput.js","webpack://TokenInput/external {\"root\":\"React\",\"commonjs2\":\"react\",\"commonjs\":\"react\",\"amd\":\"react\"}","webpack://TokenInput/webpack/bootstrap","webpack://TokenInput/webpack/runtime/compat get default export","webpack://TokenInput/webpack/runtime/define property getters","webpack://TokenInput/webpack/runtime/hasOwnProperty shorthand","webpack://TokenInput/webpack/runtime/make namespace object","webpack://TokenInput/./src/utils/keyDownHandlerProxy.js","webpack://TokenInput/./src/utils/keyDownEventPropsNormalizer.js","webpack://TokenInput/./src/constants.js","webpack://TokenInput/./src/hooks/usePredefinedKeyDownHandlers.js","webpack://TokenInput/./src/styles.styl","webpack://TokenInput/./src/TokenCreator.jsx","webpack://TokenInput/./src/Token/CloseIcon.js","webpack://TokenInput/./src/Token/DeleteButton.jsx","webpack://TokenInput/./src/Token/Token.jsx","webpack://TokenInput/./src/Token/index.js","webpack://TokenInput/./src/hooks/useTokenInputFocus.js","webpack://TokenInput/./src/utils/buildTokenMeta.js","webpack://TokenInput/./src/hooks/useTokenMetas.js","webpack://TokenInput/./src/hooks/useTokensUpdate.js","webpack://TokenInput/./src/hooks/useTokenEdit.js","webpack://TokenInput/./src/hooks/useTokenDelete.js","webpack://TokenInput/./src/utils/getDefaultTokenEditableValue.js","webpack://TokenInput/./src/TokenInput.jsx","webpack://TokenInput/./src/hooks/useTokenCreatorRef.js","webpack://TokenInput/./src/utils/buildDefaultTokenValue.js","webpack://TokenInput/./src/utils/getDefaultTokenErrorMessage.js","webpack://TokenInput/./src/index.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"react\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"react\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"token-input\"] = factory(require(\"react\"));\n\telse\n\t\troot[\"TokenInput\"] = factory(root[\"React\"]);\n})(self, function(__WEBPACK_EXTERNAL_MODULE__698__) {\nreturn ","/*!\n Copyright (c) 2018 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString === Object.prototype.toString) {\n\t\t\t\t\tfor (var key in arg) {\n\t\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _extends = Object.assign || 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; };\n\nvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar sizerStyle = {\n\tposition: 'absolute',\n\ttop: 0,\n\tleft: 0,\n\tvisibility: 'hidden',\n\theight: 0,\n\toverflow: 'scroll',\n\twhiteSpace: 'pre'\n};\n\nvar INPUT_PROPS_BLACKLIST = ['extraWidth', 'injectStyles', 'inputClassName', 'inputRef', 'inputStyle', 'minWidth', 'onAutosize', 'placeholderIsMinWidth'];\n\nvar cleanInputProps = function cleanInputProps(inputProps) {\n\tINPUT_PROPS_BLACKLIST.forEach(function (field) {\n\t\treturn delete inputProps[field];\n\t});\n\treturn inputProps;\n};\n\nvar copyStyles = function copyStyles(styles, node) {\n\tnode.style.fontSize = styles.fontSize;\n\tnode.style.fontFamily = styles.fontFamily;\n\tnode.style.fontWeight = styles.fontWeight;\n\tnode.style.fontStyle = styles.fontStyle;\n\tnode.style.letterSpacing = styles.letterSpacing;\n\tnode.style.textTransform = styles.textTransform;\n};\n\nvar isIE = typeof window !== 'undefined' && window.navigator ? /MSIE |Trident\\/|Edge\\//.test(window.navigator.userAgent) : false;\n\nvar generateId = function generateId() {\n\t// we only need an auto-generated ID for stylesheet injection, which is only\n\t// used for IE. so if the browser is not IE, this should return undefined.\n\treturn isIE ? '_' + Math.random().toString(36).substr(2, 12) : undefined;\n};\n\nvar AutosizeInput = function (_Component) {\n\t_inherits(AutosizeInput, _Component);\n\n\t_createClass(AutosizeInput, null, [{\n\t\tkey: 'getDerivedStateFromProps',\n\t\tvalue: function getDerivedStateFromProps(props, state) {\n\t\t\tvar id = props.id;\n\n\t\t\treturn id !== state.prevId ? { inputId: id || generateId(), prevId: id } : null;\n\t\t}\n\t}]);\n\n\tfunction AutosizeInput(props) {\n\t\t_classCallCheck(this, AutosizeInput);\n\n\t\tvar _this = _possibleConstructorReturn(this, (AutosizeInput.__proto__ || Object.getPrototypeOf(AutosizeInput)).call(this, props));\n\n\t\t_this.inputRef = function (el) {\n\t\t\t_this.input = el;\n\t\t\tif (typeof _this.props.inputRef === 'function') {\n\t\t\t\t_this.props.inputRef(el);\n\t\t\t}\n\t\t};\n\n\t\t_this.placeHolderSizerRef = function (el) {\n\t\t\t_this.placeHolderSizer = el;\n\t\t};\n\n\t\t_this.sizerRef = function (el) {\n\t\t\t_this.sizer = el;\n\t\t};\n\n\t\t_this.state = {\n\t\t\tinputWidth: props.minWidth,\n\t\t\tinputId: props.id || generateId(),\n\t\t\tprevId: props.id\n\t\t};\n\t\treturn _this;\n\t}\n\n\t_createClass(AutosizeInput, [{\n\t\tkey: 'componentDidMount',\n\t\tvalue: function componentDidMount() {\n\t\t\tthis.mounted = true;\n\t\t\tthis.copyInputStyles();\n\t\t\tthis.updateInputWidth();\n\t\t}\n\t}, {\n\t\tkey: 'componentDidUpdate',\n\t\tvalue: function componentDidUpdate(prevProps, prevState) {\n\t\t\tif (prevState.inputWidth !== this.state.inputWidth) {\n\t\t\t\tif (typeof this.props.onAutosize === 'function') {\n\t\t\t\t\tthis.props.onAutosize(this.state.inputWidth);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.updateInputWidth();\n\t\t}\n\t}, {\n\t\tkey: 'componentWillUnmount',\n\t\tvalue: function componentWillUnmount() {\n\t\t\tthis.mounted = false;\n\t\t}\n\t}, {\n\t\tkey: 'copyInputStyles',\n\t\tvalue: function copyInputStyles() {\n\t\t\tif (!this.mounted || !window.getComputedStyle) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar inputStyles = this.input && window.getComputedStyle(this.input);\n\t\t\tif (!inputStyles) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tcopyStyles(inputStyles, this.sizer);\n\t\t\tif (this.placeHolderSizer) {\n\t\t\t\tcopyStyles(inputStyles, this.placeHolderSizer);\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'updateInputWidth',\n\t\tvalue: function updateInputWidth() {\n\t\t\tif (!this.mounted || !this.sizer || typeof this.sizer.scrollWidth === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar newInputWidth = void 0;\n\t\t\tif (this.props.placeholder && (!this.props.value || this.props.value && this.props.placeholderIsMinWidth)) {\n\t\t\t\tnewInputWidth = Math.max(this.sizer.scrollWidth, this.placeHolderSizer.scrollWidth) + 2;\n\t\t\t} else {\n\t\t\t\tnewInputWidth = this.sizer.scrollWidth + 2;\n\t\t\t}\n\t\t\t// add extraWidth to the detected width. for number types, this defaults to 16 to allow for the stepper UI\n\t\t\tvar extraWidth = this.props.type === 'number' && this.props.extraWidth === undefined ? 16 : parseInt(this.props.extraWidth) || 0;\n\t\t\tnewInputWidth += extraWidth;\n\t\t\tif (newInputWidth < this.props.minWidth) {\n\t\t\t\tnewInputWidth = this.props.minWidth;\n\t\t\t}\n\t\t\tif (newInputWidth !== this.state.inputWidth) {\n\t\t\t\tthis.setState({\n\t\t\t\t\tinputWidth: newInputWidth\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'getInput',\n\t\tvalue: function getInput() {\n\t\t\treturn this.input;\n\t\t}\n\t}, {\n\t\tkey: 'focus',\n\t\tvalue: function focus() {\n\t\t\tthis.input.focus();\n\t\t}\n\t}, {\n\t\tkey: 'blur',\n\t\tvalue: function blur() {\n\t\t\tthis.input.blur();\n\t\t}\n\t}, {\n\t\tkey: 'select',\n\t\tvalue: function select() {\n\t\t\tthis.input.select();\n\t\t}\n\t}, {\n\t\tkey: 'renderStyles',\n\t\tvalue: function renderStyles() {\n\t\t\t// this method injects styles to hide IE's clear indicator, which messes\n\t\t\t// with input size detection. the stylesheet is only injected when the\n\t\t\t// browser is IE, and can also be disabled by the `injectStyles` prop.\n\t\t\tvar injectStyles = this.props.injectStyles;\n\n\t\t\treturn isIE && injectStyles ? _react2.default.createElement('style', { dangerouslySetInnerHTML: {\n\t\t\t\t\t__html: 'input#' + this.state.inputId + '::-ms-clear {display: none;}'\n\t\t\t\t} }) : null;\n\t\t}\n\t}, {\n\t\tkey: 'render',\n\t\tvalue: function render() {\n\t\t\tvar sizerValue = [this.props.defaultValue, this.props.value, ''].reduce(function (previousValue, currentValue) {\n\t\t\t\tif (previousValue !== null && previousValue !== undefined) {\n\t\t\t\t\treturn previousValue;\n\t\t\t\t}\n\t\t\t\treturn currentValue;\n\t\t\t});\n\n\t\t\tvar wrapperStyle = _extends({}, this.props.style);\n\t\t\tif (!wrapperStyle.display) wrapperStyle.display = 'inline-block';\n\n\t\t\tvar inputStyle = _extends({\n\t\t\t\tboxSizing: 'content-box',\n\t\t\t\twidth: this.state.inputWidth + 'px'\n\t\t\t}, this.props.inputStyle);\n\n\t\t\tvar inputProps = _objectWithoutProperties(this.props, []);\n\n\t\t\tcleanInputProps(inputProps);\n\t\t\tinputProps.className = this.props.inputClassName;\n\t\t\tinputProps.id = this.state.inputId;\n\t\t\tinputProps.style = inputStyle;\n\n\t\t\treturn _react2.default.createElement(\n\t\t\t\t'div',\n\t\t\t\t{ className: this.props.className, style: wrapperStyle },\n\t\t\t\tthis.renderStyles(),\n\t\t\t\t_react2.default.createElement('input', _extends({}, inputProps, { ref: this.inputRef })),\n\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t'div',\n\t\t\t\t\t{ ref: this.sizerRef, style: sizerStyle },\n\t\t\t\t\tsizerValue\n\t\t\t\t),\n\t\t\t\tthis.props.placeholder ? _react2.default.createElement(\n\t\t\t\t\t'div',\n\t\t\t\t\t{ ref: this.placeHolderSizerRef, style: sizerStyle },\n\t\t\t\t\tthis.props.placeholder\n\t\t\t\t) : null\n\t\t\t);\n\t\t}\n\t}]);\n\n\treturn AutosizeInput;\n}(_react.Component);\n\nAutosizeInput.propTypes = {\n\tclassName: _propTypes2.default.string, // className for the outer element\n\tdefaultValue: _propTypes2.default.any, // default field value\n\textraWidth: _propTypes2.default.oneOfType([// additional width for input element\n\t_propTypes2.default.number, _propTypes2.default.string]),\n\tid: _propTypes2.default.string, // id to use for the input, can be set for consistent snapshots\n\tinjectStyles: _propTypes2.default.bool, // inject the custom stylesheet to hide clear UI, defaults to true\n\tinputClassName: _propTypes2.default.string, // className for the input element\n\tinputRef: _propTypes2.default.func, // ref callback for the input element\n\tinputStyle: _propTypes2.default.object, // css styles for the input element\n\tminWidth: _propTypes2.default.oneOfType([// minimum width for input element\n\t_propTypes2.default.number, _propTypes2.default.string]),\n\tonAutosize: _propTypes2.default.func, // onAutosize handler: function(newWidth) {}\n\tonChange: _propTypes2.default.func, // onChange handler: function(event) {}\n\tplaceholder: _propTypes2.default.string, // placeholder text\n\tplaceholderIsMinWidth: _propTypes2.default.bool, // don't collapse size to less than the placeholder\n\tstyle: _propTypes2.default.object, // css styles for the outer element\n\tvalue: _propTypes2.default.any // field value\n};\nAutosizeInput.defaultProps = {\n\tminWidth: 1,\n\tinjectStyles: true\n};\n\nexports.default = AutosizeInput;","module.exports = __WEBPACK_EXTERNAL_MODULE__698__;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import keyDownEventPropsNormalizer from './keyDownEventPropsNormalizer';\n\n/**\n * Help function to proxy keyDown event to handler\n *\n * @ keyDownEvent\n * Type: Event\n * Description: keyDown event\n *\n * @ actions.onBackspace\n * Type: function\n * Description: callback function when `Backspace` keyDone\n *\n * @ actions.onTab\n * Type: function\n * Description: callback function when `Tab` keyDone\n *\n * @ actions.onEnter\n * Type: function\n * Description: callback function when `Enter` keyDone\n *\n * @ actions.onEscape\n * Type: function\n * Description: callback function when `Escape` keyDone\n */\nconst dummyFunction = () => {};\nconst keyDownHandlerProxy = (keyDownEvent, actions) => {\n const {\n onBackspace = dummyFunction,\n onTab = dummyFunction,\n onEnter = dummyFunction,\n onEscape = dummyFunction,\n } = actions;\n\n const { key: eventKey } = keyDownEventPropsNormalizer(keyDownEvent);\n\n switch (eventKey) {\n case 'Backspace':\n onBackspace(keyDownEvent);\n break;\n\n case 'Tab':\n onTab(keyDownEvent);\n break;\n\n case 'Enter':\n onEnter(keyDownEvent);\n break;\n\n case 'Escape':\n onEscape(keyDownEvent);\n break;\n\n default:\n }\n};\n\nexport default keyDownHandlerProxy;\n","/**\n * Help function to normalize keyDown event properties\n *\n * Q: Why need this?\n * A: Handle the different behaviors with IME\n * - The behavior of Chrome is different on Mac and Windows\n * - The behavior of Chrome and FireFox are different on Mac\n *\n * Playground\n * [Vanilla JS] https://codepen.io/seawind543/pen/gOWNVYR\n * [React JS] https://codepen.io/seawind543/pen/xxdvZyE\n *\n * Reference:\n * [1] https://github.com/facebook/react/issues/13104\n * [2] https://github.com/seawind543/react-token-input/issues/1#issuecomment-896190656\n * [3] https://developer.mozilla.org/en-US/docs/Web/API/Document/keydown_event#ignoring_keydown_during_ime_composition\n *\n * @ keyDownEvent\n * Type: Event\n * Description: keyDown event\n */\nconst keyDownEventPropsNormalizer = (keyDownEvent) => {\n // https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent\n const {\n key,\n keyCode, // Deprecated in Vanilla JS\n } = keyDownEvent;\n let eventKey = key;\n\n /**\n * Normalize `key` value for Chrome on Mac\n * When `keyCode` is 229, the `key` should be `Process` to align most browsers.\n */\n if (keyCode && keyCode === 229) {\n eventKey = 'Process';\n }\n\n return {\n key: eventKey,\n };\n};\n\nexport default keyDownEventPropsNormalizer;\n\n/**\n * [Mac]\n * Chrome (92.0.4515.159)\n * Firefox (91.0.1)\n *\n * [Win 7]\n * Chrome ()\n * Firefox ()\n */\n\n/**\n * Mac + Chrome\n * Win + Chrome\n * Mac + Firefox\n * Win + Firefox\n */\n// React + [a]\n// altKey = false\n// charCode = 0 // Deprecated\n// code = KeyA\n// ctrlKey = false\n// isComposing = undefined\n// key = a\n// keyCode = 65 // Deprecated\n// keyIdentifier = undefined // Deprecated\n// location = 0\n// metaKey = false\n// repeat = false\n// shiftKey = false\n// which = 65 // Deprecated\n//\n// Vanilla JS + [a]\n// altKey = false\n// charCode = 0 // Deprecated\n// code = KeyA\n// ctrlKey = false\n// isComposing = false\n// key = a\n// keyCode = 65 // Deprecated\n// keyIdentifier = undefined // Deprecated\n// location = 0\n// metaKey = false\n// repeat = false\n// shiftKey = false\n// which = 65 // Deprecated\n\n/**\n * Mac + Chrome\n * Mac + Firefox\n */\n// React + [ShiftLeft]\n// altKey = false\n// charCode = 0 // Deprecated\n// code = ShiftLeft\n// ctrlKey = false\n// isComposing = undefined\n// key = Shift\n// keyCode = 16 // Deprecated\n// keyIdentifier = undefined // Deprecated\n// location = 1\n// metaKey = false\n// repeat = false\n// shiftKey = true\n// which = 16 // Deprecated\n//\n// Vanilla JS + [ShiftLeft]\n// altKey = false\n// charCode = 0 // Deprecated\n// code = ShiftLeft\n// ctrlKey = false\n// isComposing = false\n// key = Shift\n// keyCode = 16 // Deprecated\n// keyIdentifier = undefined // Deprecated\n// location = 1\n// metaKey = false\n// repeat = false\n// shiftKey = true\n// which = 16 // Deprecated\n\n/**\n * Mac + Chrome\n * Win + Chrome\n * Mac + Firefox\n * Win + Firefox\n */\n// React + [Enter]\n// altKey = false\n// charCode = 0 // Deprecated\n// code = Enter\n// ctrlKey = false\n// isComposing = undefined\n// key = Enter\n// keyCode = 13 // Deprecated\n// keyIdentifier = undefined // Deprecated\n// location = 0\n// metaKey = false\n// repeat = false\n// shiftKey = false\n// which = 13 // Deprecated\n//\n// Vanilla JS + [Enter]\n// altKey = false\n// charCode = 0 // Deprecated\n// code = Enter\n// ctrlKey = false\n// isComposing = false\n// key = Enter\n// keyCode = 13 // Deprecated\n// keyIdentifier = undefined // Deprecated\n// location = 0\n// metaKey = false\n// repeat = false\n// shiftKey = false\n// which = 13 // Deprecated\n\n/**\n * Mac + Chrome\n */\n// React + [ㄏ]\n// altKey = false\n// charCode = 0 // Deprecated\n// code = KeyC\n// ctrlKey = false\n// isComposing = undefined\n// key = ㄏ\n// keyCode = 229 // Deprecated\n// keyIdentifier = undefined // Deprecated\n// location = 0\n// metaKey = false\n// repeat = false\n// shiftKey = false\n// which = 229 // Deprecated\n//\n// Vanilla JS + [ㄏ]\n// altKey = false\n// charCode = 0 // Deprecated\n// code = KeyC\n// ctrlKey = false\n// isComposing = false\n// key = ㄏ\n// keyCode = 229 // Deprecated\n// keyIdentifier = undefined // Deprecated\n// location = 0\n// metaKey = false\n// repeat = false\n// shiftKey = false\n// which = 229 // Deprecated\n\n/**\n * Win + Chrome\n * Mac + Firefox\n * Win + Firefox\n */\n// React + [ㄏ]\n// altKey = false\n// charCode = 0 // Deprecated\n// code = KeyC\n// ctrlKey = false\n// isComposing = undefined\n// key = Process\n// keyCode = 229 // Deprecated\n// keyIdentifier = undefined // Deprecated\n// location = 0\n// metaKey = false\n// repeat = false\n// shiftKey = false\n// which = 229 // Deprecated\n//\n// Vanilla JS + [ㄏ]\n// altKey = false\n// charCode = 0 // Deprecated\n// code = KeyC\n// ctrlKey = false\n// isComposing = false\n// key = Process\n// keyCode = 229 // Deprecated\n// keyIdentifier = undefined // Deprecated\n// location = 0\n// metaKey = false\n// repeat = false\n// shiftKey = false\n// which = 229 // Deprecated\n\n/**\n * Mac + Chrome\n */\n// React + [IME Enter]\n// altKey = false\n// charCode = 0 // Deprecated\n// code = Enter\n// ctrlKey = false\n// isComposing = undefined\n// key = Enter\n// keyCode = 229 // Deprecated\n// keyIdentifier = undefined // Deprecated\n// location = 0\n// metaKey = false\n// repeat = false\n// shiftKey = false\n// which = 229 // Deprecated\n//\n// Vanilla JS + [IME Enter]\n// altKey = false\n// charCode = 0 // Deprecated\n// code = Enter\n// ctrlKey = false\n// isComposing = true\n// key = Enter\n// keyCode = 229 // Deprecated\n// keyIdentifier = undefined // Deprecated\n// location = 0\n// metaKey = false\n// repeat = false\n// shiftKey = false\n// which = 229 // Deprecated\n\n/**\n * Win + Chrome\n * Mac + Firefox\n * Win + Firefox\n */\n// React + [IME Enter]\n// altKey = false\n// charCode = 0 // Deprecated\n// code = Enter\n// ctrlKey = false\n// isComposing = undefined\n// key = Process\n// keyCode = 229 // Deprecated\n// keyIdentifier = undefined // Deprecated\n// location = 0\n// metaKey = false\n// repeat = false\n// shiftKey = false\n// which = 229 // Deprecated\n//\n// Vanilla JS + [IME Enter]\n// altKey = false\n// charCode = 0 // Deprecated\n// code = Enter\n// ctrlKey = false\n// isComposing = true\n// key = Process\n// keyCode = 229 // Deprecated\n// keyIdentifier = undefined // Deprecated\n// location = 0\n// metaKey = false\n// repeat = false\n// shiftKey = false\n// which = 229 // Deprecated\n","/**\n * The default `separators`\n * in the `TokenLabel` (onGetTokenDisplayLabel)\n */\nexport const DEFAULT_SEPARATORS = [\n ',',\n ';',\n '\\n', // for copy and paste\n '\\r', // for copy and paste\n '\\r\\n', // for copy and paste\n];\n\n/**\n * The default specialKeyDown settings\n */\nexport const DEFAULT_SPECIAL_KEY_DOWN_SETTINGS = {\n onBackspace: 1,\n onTab: 0,\n onEnter: 1,\n onEscape: 1,\n};\n\n/**\n * For customize the `delete button`\n * in the `TokenLabel` (onGetTokenDisplayLabel)\n */\nexport const JS__TOKEN__DELETE_BUTTON__CLASS_NAME = 'js__token__delete-button';\n\n/**\n * The default init value of the `input`\n */\nexport const DEFAULT_INPUT_INIT_VALUE = '';\n","import { useCallback } from 'react';\nimport { DEFAULT_SPECIAL_KEY_DOWN_SETTINGS } from '../constants';\n\nconst handleKeyDown = ({ keyDownEvent, onKey, predefinedHandler }) => {\n switch (true) {\n case onKey === 1:\n predefinedHandler(keyDownEvent);\n break;\n\n // case onKey === 0:\n default:\n // Do nothing\n }\n};\n\nfunction usePredefinedKeyDownHandlers({\n specialKeyDown,\n inputInitValue,\n inputValue,\n onLastTokenDelete,\n handleInputValueUpdate,\n handleTokensCreate,\n}) {\n // console.log('specialKeyDown', specialKeyDown);\n const { onBackspace, onTab, onEnter, onEscape } = {\n ...DEFAULT_SPECIAL_KEY_DOWN_SETTINGS,\n ...specialKeyDown,\n };\n const handleBackspaceKeyDown = useCallback(\n (keyDownEvent) => {\n handleKeyDown({\n keyDownEvent,\n onKey: onBackspace,\n predefinedHandler: () => {\n if (inputValue.length === 0) {\n // Delete the latest token when `Backspace`\n onLastTokenDelete();\n }\n },\n });\n },\n [onBackspace, inputValue, onLastTokenDelete]\n );\n\n const handleTabKeyDown = useCallback(\n (keyDownEvent) => {\n handleKeyDown({\n keyDownEvent,\n onKey: onTab,\n predefinedHandler: (keyDownEvent) => {\n keyDownEvent.preventDefault();\n handleTokensCreate(inputValue);\n },\n });\n },\n [onTab, inputValue, handleTokensCreate]\n );\n\n const handleEnterKeyDown = useCallback(\n (keyDownEvent) => {\n handleKeyDown({\n keyDownEvent,\n onKey: onEnter,\n predefinedHandler: () => {\n handleTokensCreate(inputValue);\n },\n });\n },\n [onEnter, inputValue, handleTokensCreate]\n );\n\n const handleEscapeKeyDown = useCallback(\n (keyDownEvent) => {\n handleKeyDown({\n keyDownEvent,\n onKey: onEscape,\n predefinedHandler: () => {\n // Reset the input value\n handleInputValueUpdate(inputInitValue);\n },\n });\n },\n [onEscape, inputInitValue, handleInputValueUpdate]\n );\n\n return {\n handleBackspaceKeyDown,\n handleTabKeyDown,\n handleEnterKeyDown,\n handleEscapeKeyDown,\n };\n}\n\nexport default usePredefinedKeyDownHandlers;\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"token-input-container\",\"container--focused\":\"token-input-container--focused\",\"container--errors\":\"token-input-container--errors\",\"token-list\":\"token-input-token-list\",\"token\":\"token-input-token\",\"token--error\":\"token-input-token--error\",\"token--read-only\":\"token-input-token--read-only\",\"token--active\":\"token-input-token--active\",\"autosized-wrapper\":\"token-input-autosized-wrapper\",\"token__label-wrapper\":\"token-input-token__label-wrapper\",\"token__delete-button\":\"token-input-token__delete-button\",\"token__delete-button__close-icon\":\"token-input-token__delete-button__close-icon\"};","import React, { useState, useMemo, useCallback, forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nimport AutosizeInput from 'react-input-autosize';\nimport keyDownHandlerProxy from './utils/keyDownHandlerProxy';\n\nimport usePredefinedKeyDownHandlers from './hooks/usePredefinedKeyDownHandlers';\n\nimport { DEFAULT_INPUT_INIT_VALUE } from './constants';\n\nimport styles from './styles.styl';\n\nconst TokenCreator = forwardRef((props, ref) => {\n const {\n placeholder,\n autoFocus,\n onFocus,\n onBlur,\n\n separators,\n specialKeyDown,\n onInputValueChange,\n onPreprocess,\n onBuildTokenValue,\n onNewTokenValuesAppend,\n onLastTokenDelete,\n } = props;\n const [inputValue, setInputValue] = useState(DEFAULT_INPUT_INIT_VALUE);\n\n const splitPattens = useMemo(\n () => new RegExp(separators.join('|')),\n [separators]\n );\n\n const handleInputValueUpdate = useCallback(\n (newValue) => {\n // console.log(\n // 'handleInputValueUpdate; newValue',\n // `${newValue}`,\n // 'previousValue',\n // `${inputValue}`\n // );\n setInputValue(newValue);\n onInputValueChange(newValue, inputValue);\n },\n [onInputValueChange, inputValue, setInputValue]\n );\n\n const handleTokensCreate = useCallback(\n (inputString) => {\n // console.log('handleTokensCreate', `${inputString}`);\n\n /**\n * Do not change inputString by `trim`.\n * Leave customize to decide how to handle the blank.\n * Note: The trim could be handled by either `onPreprocess` or `onBuildTokenValue`\n */\n if (inputString.trim().length === 0) {\n // Skip the empty\n return;\n }\n\n // Split string into values by `separators`\n const inputValues = inputString\n .split(splitPattens)\n // Filter out empty\n .filter((inputValue) => inputValue.trim().length > 0);\n const processedValues = onPreprocess(inputValues);\n const appendTokenValues = processedValues.map((value) => {\n return onBuildTokenValue(value);\n });\n onNewTokenValuesAppend(appendTokenValues);\n\n // Rest the input value after token created\n handleInputValueUpdate(DEFAULT_INPUT_INIT_VALUE);\n },\n [\n splitPattens,\n onPreprocess,\n onBuildTokenValue,\n onNewTokenValuesAppend,\n handleInputValueUpdate,\n ]\n );\n\n /*\n * Event handlers\n */\n const handleInputValueChange = useCallback(\n (e) => {\n // console.log('TokenCreator > handleInputValueChange');\n const { value: newInputValue } = e.target;\n const lastChar = newInputValue.substring(newInputValue.length - 1);\n\n const isTypingSeparators = splitPattens.test(lastChar);\n if (isTypingSeparators === true) {\n // User input a `Separator`, so create a token\n handleTokensCreate(inputValue);\n return;\n }\n\n handleInputValueUpdate(newInputValue);\n },\n [splitPattens, handleTokensCreate, inputValue, handleInputValueUpdate]\n );\n\n const {\n handleBackspaceKeyDown,\n handleTabKeyDown,\n handleEnterKeyDown,\n handleEscapeKeyDown,\n } = usePredefinedKeyDownHandlers({\n specialKeyDown,\n inputInitValue: DEFAULT_INPUT_INIT_VALUE,\n inputValue,\n onLastTokenDelete,\n handleInputValueUpdate,\n handleTokensCreate,\n });\n\n const handleKeyDown = useCallback(\n (e) => {\n // console.log('TokenCreator > handleKeyDown');\n keyDownHandlerProxy(e, {\n onBackspace: handleBackspaceKeyDown,\n onTab: handleTabKeyDown,\n onEnter: handleEnterKeyDown,\n onEscape: handleEscapeKeyDown,\n });\n },\n [\n handleBackspaceKeyDown,\n handleTabKeyDown,\n handleEnterKeyDown,\n handleEscapeKeyDown,\n ]\n );\n\n const handleBlur = useCallback(\n (e) => {\n // console.log('TokenCreator > handleBlur');\n handleTokensCreate(inputValue);\n onBlur(e);\n },\n [handleTokensCreate, inputValue, onBlur]\n );\n\n const handlePaste = useCallback(\n (e) => {\n // console.log('TokenCreator > handlePaste');\n e.preventDefault();\n const pastedText = e.clipboardData.getData('text');\n handleTokensCreate(pastedText);\n },\n [handleTokensCreate]\n );\n\n return (\n
\n \n
\n );\n});\n\n/**\n * Fix the eslint 'react/display-name' issue with forwardRef\n * https://stackoverflow.com/questions/59716140/using-forwardref-with-proptypes-and-eslint\n */\nTokenCreator.displayName = 'TokenCreator';\n\nTokenCreator.propTypes = {\n placeholder: PropTypes.string.isRequired,\n autoFocus: PropTypes.bool.isRequired,\n onFocus: PropTypes.func.isRequired,\n onBlur: PropTypes.func.isRequired,\n\n /**\n * Token\n */\n separators: PropTypes.array.isRequired,\n specialKeyDown: PropTypes.object.isRequired,\n\n onInputValueChange: PropTypes.func.isRequired,\n onPreprocess: PropTypes.func.isRequired,\n onBuildTokenValue: PropTypes.func.isRequired,\n onNewTokenValuesAppend: PropTypes.func.isRequired,\n onLastTokenDelete: PropTypes.func.isRequired,\n};\n\nexport default TokenCreator;\n","import React from 'react';\nimport styles from '../styles.styl';\n\nconst CloseIcon = () => {\n return (\n \n );\n};\n\nexport default CloseIcon;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\n\nimport styles from '../styles.styl';\nimport { JS__TOKEN__DELETE_BUTTON__CLASS_NAME } from '../constants';\nimport CloseIcon from './CloseIcon';\n\nconst DeleteButton = ({ onRenderContent }) => {\n const isCustomizeContent = typeof onRenderContent === 'function';\n\n return (\n \n {isCustomizeContent && onRenderContent()}\n {!isCustomizeContent && }\n \n );\n};\n\nDeleteButton.propTypes = {\n onRenderContent: PropTypes.func,\n};\n\nexport default DeleteButton;\n","import React, {\n useState,\n useCallback,\n useMemo,\n useRef,\n useEffect,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport AutosizeInput from 'react-input-autosize';\nimport keyDownHandlerProxy from '../utils/keyDownHandlerProxy';\nimport {\n DEFAULT_INPUT_INIT_VALUE,\n JS__TOKEN__DELETE_BUTTON__CLASS_NAME,\n} from '../constants';\n\nimport DeleteButton from './DeleteButton';\n\nimport styles from '../styles.styl';\n\nconst handleInlineEditClick = (e) => {\n e.stopPropagation();\n};\n\nconst Token = ({\n readOnly,\n tokenValue,\n tokenMeta,\n onGetClassName,\n onGetDisplayLabel,\n onRenderDeleteButtonContent,\n onGetEditableValue,\n onGetErrorMessage,\n onBuildTokenValue,\n onEditStart,\n onEditEnd,\n onDelete,\n}) => {\n const autosizeInputRef = useRef(null);\n const [inputValue, setInputValue] = useState(DEFAULT_INPUT_INIT_VALUE);\n const { activated, error } = tokenMeta;\n\n const handleEditStart = useCallback(() => {\n const tokenEditableValue = onGetEditableValue(tokenValue, tokenMeta);\n setInputValue(tokenEditableValue);\n onEditStart();\n }, [setInputValue, tokenValue, tokenMeta, onGetEditableValue, onEditStart]);\n useEffect(() => {\n if (activated && autosizeInputRef.current) {\n autosizeInputRef.current.focus();\n }\n }, [activated]);\n\n const handleEditEnd = useCallback(\n ({ reset = false } = {}) => {\n // Handle input inputValue length === 0 case: Rest token\n const isValueClear = inputValue.length === 0;\n if (reset || isValueClear) {\n onEditEnd();\n return;\n }\n\n // TODO: Handle inputValue include `separators`\n\n const newTokenValue = onBuildTokenValue(inputValue);\n onEditEnd(newTokenValue);\n },\n [inputValue, onBuildTokenValue, onEditEnd]\n );\n\n /*\n * Event handlers\n */\n const handleTokenClick = useCallback(\n (e) => {\n // console.log('handleTokenClick');\n e.stopPropagation();\n\n if (readOnly) {\n return;\n }\n\n /**\n * Check does the click on the delete button\n * That is, the Element or its parents matched the `selector`\n */\n const isOnDeleteButton = !!e.target.closest(\n `.${styles.token} .${JS__TOKEN__DELETE_BUTTON__CLASS_NAME}`\n );\n if (isOnDeleteButton) {\n onDelete();\n return;\n }\n\n handleEditStart();\n },\n [readOnly, onDelete, handleEditStart]\n );\n\n const handleInputValueChange = useCallback(\n (e) => {\n const { value } = e.target;\n setInputValue(value);\n },\n [setInputValue]\n );\n\n const handleKeyDown = useCallback(\n (e) => {\n keyDownHandlerProxy(e, {\n onEscape: () => handleEditEnd({ reset: true }),\n onEnter: () => handleEditEnd(),\n });\n },\n [handleEditEnd]\n );\n\n const handleBlur = useCallback(() => {\n // console.log('Token handleBlur');\n handleEditEnd();\n }, [handleEditEnd]);\n\n const tokenClassName = useMemo(() => {\n return classNames(\n // Apply customize className on the token\n onGetClassName(tokenValue, tokenMeta),\n styles.token,\n {\n [styles['token--active']]: activated,\n [styles['token--error']]: error && !activated,\n [styles['token--read-only']]: readOnly,\n }\n );\n }, [readOnly, error, activated, onGetClassName, tokenValue, tokenMeta]);\n\n const errorMessage = useMemo(() => {\n return onGetErrorMessage(tokenValue, tokenMeta);\n }, [onGetErrorMessage, tokenValue, tokenMeta]);\n\n if (activated) {\n return (\n \n
\n \n
\n \n );\n }\n\n return (\n \n
\n {onGetDisplayLabel(tokenValue, tokenMeta)}\n
\n {!readOnly && (\n \n )}\n \n );\n};\n\nToken.propTypes = {\n // Same as props of TokenInput\n readOnly: PropTypes.bool.isRequired,\n // tokenValue of token\n tokenValue: PropTypes.any.isRequired,\n // tokenMeta of token\n tokenMeta: PropTypes.object.isRequired,\n\n // Same as props `onGetTokenClassName` of TokenInput\n onGetClassName: PropTypes.func.isRequired,\n // Same as props `onGetTokenDisplayLabel` of TokenInput\n onGetDisplayLabel: PropTypes.func.isRequired,\n // Same as props `onRenderTokenDeleteButtonContent` of TokenInput\n onRenderDeleteButtonContent: PropTypes.func,\n // Same as props `onGetTokenEditableValue` of TokenInput\n onGetEditableValue: PropTypes.func.isRequired,\n // Same as props `onGetTokenErrorMessage` of TokenInput\n onGetErrorMessage: PropTypes.func.isRequired,\n\n // Editing\n // Same as props `onBuildTokenValue` of TokenInput\n onBuildTokenValue: PropTypes.func.isRequired,\n\n /**\n * A callback function, which should be `invoked` when end-user `start editing`\n *\n * Note:\n * Call this function to tell TokenInput it is start to editing the token.\n * As result, TokenInput will set `tokenMeta.activate` to `true`\n *\n * onEditStart()\n *\n * @ return\n * Type: void\n */\n onEditStart: PropTypes.func.isRequired,\n\n /**\n * A callback function, which should be `invoked` when end-user `end editing`\n *\n * Note:\n * Call this function to tell TokenInput it is finish editing the token.\n * As result, TokenInput will set `tokenMeta.activate` to `false`\n *\n * onEditEnd(newTokenValue?)\n *\n * @ newTokenValue\n * Type: undefined | any (string | number | object | customize data structure)\n * Description:\n * The new tokenValue build by `onBuildTokenValue.\n * TokenInput will update it, and\n * TokenInput will call `onTokenValuesChange`\n *\n * Note:\n * When newTokenValue is `undefined`,\n * TokenInput will treat as `Cancel` (End without update newTokenValue).\n * The `onTokenValuesChange` will not be called.\n *\n * @ return\n * Type: void\n */\n onEditEnd: PropTypes.func.isRequired,\n\n /**\n * A callback function, which should be `invoked` when end-user `delete` the token\n *\n * Note:\n * Call this function to tell TokenInput to delete the token.\n * As result, TokenInput will remove it, and\n * TokenInput will call `onTokenValuesChange` to update tokenValues.\n *\n * onDelete()\n *\n * @ return\n * Type: void\n */\n onDelete: PropTypes.func.isRequired,\n};\n\nexport default Token;\n","import Token from './Token';\n\nexport default Token;\n","import { useState, useCallback } from 'react';\n\nfunction useTokenInputFocus() {\n const [isTokenInputFocused, setIsTokenInputFocused] = useState(false);\n\n const handleTokenInputFocus = useCallback(() => {\n // console.log('handleTokenInputFocus');\n setIsTokenInputFocused(true);\n }, []);\n\n const handleTokenInputBlur = useCallback(() => {\n // console.log('handleTokenInputBlur');\n setIsTokenInputFocused(false);\n }, []);\n\n return {\n isTokenInputFocused,\n handleTokenInputFocus,\n handleTokenInputBlur,\n };\n}\n\nexport default useTokenInputFocus;\n","/* eslint no-unused-vars: 0 */\n\n/**\n * Internal function for TokenInput to\n * build token data and meta with customize data\n *\n * buildTokenMeta(customizeError, tokenValue, tokenIndex)\n *\n * @ customizeError\n * Type: any\n * Description: The return of onTokenValueValidate\n *\n * @ tokenValue\n * Type: any (string | number | object | customize data structure)\n * Description: The tokenValue build by `onBuildTokenValue`\n *\n * @ tokenIndex\n * Type: number\n * Description: The array index for this tokenValue in tokenValues\n *\n * @ return\n * Type: object\n * Description: token's meta data\n * {\n * // A private key for render\n * key: string,\n *\n * // Specific the token is activated for `edit` or not\n * activated: boolean,\n *\n * // Customize data structure built by `onTokenValue Validate`\n * // Specific the token's validate status or errorMessage\n * error: any,\n * }\n */\nconst buildTokenMeta = (customizeError, tokenValue, tokenIndex) => {\n return {\n // TODO: Consider uuid\n key: `${JSON.stringify(tokenValue)}-${Date.now()}-${tokenIndex}`,\n activated: false,\n error: customizeError,\n };\n};\n\nexport default buildTokenMeta;\n","import { useState, useCallback } from 'react';\nimport buildTokenMeta from '../utils/buildTokenMeta';\n\nfunction useTokenMetas() {\n const [tokenMetas, setTokenMetas] = useState([]);\n\n const setTokenActivated = useCallback(\n (targetIndex, activated) => {\n // console.log(\n // 'setTokenActivated; targetIndex',\n // targetIndex,\n // 'activated',\n // activated,\n // 'tokenMetas',\n // tokenMetas\n // );\n\n if (targetIndex >= tokenMetas.length) {\n throw new Error(\n `setTokenActivated out of tokenMetas scope; targetIndex ${targetIndex}; tokenMetas.length ${tokenMetas.length}`\n );\n }\n\n const newTokenMetas = [...tokenMetas];\n newTokenMetas[targetIndex].activated = activated;\n setTokenMetas(newTokenMetas);\n },\n [tokenMetas]\n );\n\n return {\n buildTokenMeta,\n tokenMetas,\n setTokenMetas,\n setTokenActivated,\n };\n}\n\nexport default useTokenMetas;\n","import { useState, useLayoutEffect } from 'react';\nimport useTokenMetas from './useTokenMetas';\n\nfunction useTokensUpdate({ tokenValues, onTokenValueValidate }) {\n const { buildTokenMeta, tokenMetas, setTokenMetas, setTokenActivated } =\n useTokenMetas();\n const [hasInvalidToken, setHasInvalidToken] = useState(false);\n\n /**\n * Use this internalTokenValues to `render` to avoid\n * not synced between tokenMetas and tokenValues\n */\n const [internalTokenValues, setInternalTokenValues] = useState([]);\n\n useLayoutEffect(() => {\n // console.log('useTokensUpdate > useLayoutEffect');\n\n let hasInvalid = false;\n // Build tokenMetas based on the latest tokenValues\n const newTokenMetas = tokenValues.map((tokenValue, index) => {\n const error = onTokenValueValidate(tokenValue, index, tokenValues);\n const newTokenMeta = buildTokenMeta(error, tokenValue, index);\n\n if (newTokenMeta.error && !newTokenMeta.activated) {\n hasInvalid = true;\n }\n\n return newTokenMeta;\n });\n\n setInternalTokenValues([...tokenValues]);\n setTokenMetas(newTokenMetas);\n setHasInvalidToken(hasInvalid);\n }, [tokenValues, onTokenValueValidate, setTokenMetas, buildTokenMeta]);\n\n return {\n hasInvalidToken,\n internalTokenValues,\n tokenMetas,\n setTokenActivated,\n };\n}\n\nexport default useTokensUpdate;\n","import { useCallback } from 'react';\n\nfunction useTokenEdit({\n tokenValues,\n onTokenValuesChange,\n setTokenActivated,\n handleTokenInputFocus,\n handleTokenInputBlur,\n focusTokenCreator,\n}) {\n const handleTokenEditStart = useCallback(\n (targetIndex) => () => {\n // console.log('handleTokenEditStart; targetIndex', targetIndex);\n setTokenActivated(targetIndex, true);\n handleTokenInputFocus();\n },\n [setTokenActivated, handleTokenInputFocus]\n );\n\n const handleTokenEditEnd = useCallback(\n (targetIndex) => (newTokenValue) => {\n // console.log(\n // 'handleTokenEditEnd; targetIndex',\n // targetIndex,\n // 'newTokenValue',\n // `${newTokenValue}`\n // );\n\n setTokenActivated(targetIndex, false);\n handleTokenInputBlur();\n\n // Re-focus on TokenCreator\n focusTokenCreator();\n\n // TODO: Consider split editEnd and tokenValue update\n if (typeof newTokenValue === 'undefined') {\n // Avoid meaningless update\n return;\n }\n\n const modifiedTokenValues = [...tokenValues];\n modifiedTokenValues[targetIndex] = newTokenValue;\n onTokenValuesChange(modifiedTokenValues);\n },\n [\n tokenValues,\n onTokenValuesChange,\n setTokenActivated,\n handleTokenInputBlur,\n focusTokenCreator,\n ]\n );\n\n return {\n handleTokenEditStart,\n handleTokenEditEnd,\n };\n}\n\nexport default useTokenEdit;\n","import { useCallback } from 'react';\n\nfunction useTokenDelete({\n tokenValues,\n onTokenValuesChange,\n focusTokenCreator,\n}) {\n const deleteToken = useCallback(\n (targetIndex) => {\n const newTokenValues = [...tokenValues];\n newTokenValues.splice(targetIndex, 1);\n onTokenValuesChange(newTokenValues);\n\n /**\n * Keep focus when remove a token.\n * Use scenario: User click the delete button of a token\n */\n focusTokenCreator();\n },\n [tokenValues, onTokenValuesChange, focusTokenCreator]\n );\n\n const handleTokenDelete = useCallback(\n (targetIndex) => () => {\n // console.log('handleTokenDelete', targetIndex);\n deleteToken(targetIndex);\n },\n [deleteToken]\n );\n\n const handleLastTokenDelete = useCallback(() => {\n deleteToken(-1);\n }, [deleteToken]);\n\n return {\n handleTokenDelete,\n handleLastTokenDelete,\n };\n}\n\nexport default useTokenDelete;\n","/* eslint no-unused-vars: 0 */\n\n/**\n * Default function for TokenInput to\n * get `editable value` from customize data structure\n * for user to perform `edit` in an `HTML input element`\n *\n * getDefaultTokenEditableValue(tokenValue)\n *\n * @ tokenValue\n * Type: string | number | object | any\n * Description: The customize token data\n *\n * @ tokenMeta\n * Type: object\n * Description: The token meta\n *\n * @ return\n * Type: string\n * Description: The value for user to edit in an input\n */\nconst getDefaultTokenEditableValue = (tokenValue, tokenMeta) => {\n return tokenValue;\n};\n\nexport default getDefaultTokenEditableValue;\n","import React, { useCallback } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport TokenCreator from './TokenCreator';\nimport Token from './Token';\n\nimport useTokenInputFocus from './hooks/useTokenInputFocus';\nimport useTokenCreatorRef from './hooks/useTokenCreatorRef';\nimport useTokensUpdate from './hooks/useTokensUpdate';\nimport useTokenEdit from './hooks/useTokenEdit';\nimport useTokenDelete from './hooks/useTokenDelete';\n\nimport buildDefaultTokenValue from './utils/buildDefaultTokenValue';\nimport getDefaultTokenEditableValue from './utils/getDefaultTokenEditableValue';\nimport getDefaultTokenErrorMessage from './utils/getDefaultTokenErrorMessage';\n\nimport { DEFAULT_SEPARATORS } from './constants';\n\nimport styles from './styles.styl';\n\nconst TokenInput = ({\n className,\n readOnly,\n autoFocus,\n placeholder,\n\n tokenValues,\n onTokenValuesChange,\n onBuildTokenValue,\n\n // Token\n customizeTokenComponent,\n onGetTokenClassName,\n onGetTokenDisplayLabel,\n onRenderTokenDeleteButtonContent,\n onGetTokenEditableValue,\n onGetTokenErrorMessage,\n\n // TokenCreator\n separators,\n specialKeyDown,\n onPreprocess,\n onInputValueChange,\n onTokenValueValidate,\n\n // Rest\n ...props\n}) => {\n const { isTokenInputFocused, handleTokenInputFocus, handleTokenInputBlur } =\n useTokenInputFocus();\n const { tokenCreatorRef, focusTokenCreator } = useTokenCreatorRef();\n\n const {\n hasInvalidToken,\n internalTokenValues,\n tokenMetas,\n setTokenActivated,\n } = useTokensUpdate({\n tokenValues,\n onTokenValueValidate,\n });\n\n const { handleTokenEditStart, handleTokenEditEnd } = useTokenEdit({\n tokenValues,\n onTokenValuesChange,\n setTokenActivated,\n handleTokenInputFocus,\n handleTokenInputBlur,\n focusTokenCreator,\n });\n\n const { handleTokenDelete, handleLastTokenDelete } = useTokenDelete({\n tokenValues,\n onTokenValuesChange,\n focusTokenCreator,\n });\n\n const handleNewTokenValuesAppend = useCallback(\n (appendTokenValues) => {\n if (appendTokenValues.length === 0) {\n // Avoid meaningless update\n return;\n }\n\n const newTokenValues = [...tokenValues, ...appendTokenValues];\n onTokenValuesChange(newTokenValues);\n },\n [tokenValues, onTokenValuesChange]\n );\n\n const handleInputValuesPreprocess = useCallback(\n (inputValues) => {\n // console.log('handleInputValuesPreprocess', inputValues);\n if (typeof onPreprocess !== 'function') {\n return inputValues;\n }\n\n const processedValues = onPreprocess(inputValues);\n if (Array.isArray(processedValues) !== true) {\n throw new Error('onPreprocess should return an array of values');\n }\n return processedValues;\n },\n [onPreprocess]\n );\n\n const TokenComponent = customizeTokenComponent || Token;\n\n return (\n \n
\n {internalTokenValues.map((tokenValue, index) => {\n const tokenMeta = tokenMetas[index];\n const { key } = tokenMeta;\n\n return (\n \n );\n })}\n
\n\n {!readOnly && (\n \n )}\n \n );\n};\n\nTokenInput.propTypes = {\n // Assign style to the TokenInput\n style: PropTypes.object,\n\n // Assign className to the TokenInput\n className: PropTypes.string,\n\n // Specific TokenInput is `readOnly` or not\n readOnly: PropTypes.bool,\n\n // Specific TokenInput should be autoFocus or not\n autoFocus: PropTypes.bool,\n\n // Placeholder of TokenInput\n placeholder: PropTypes.string,\n\n /**\n * An array of characters for split the user input string.\n * For example,\n * Split the user input string `abc;def` into `['abc', 'def']`\n * by separators `[';']`\n *\n * Note:\n * It take the `String.prototype.split()` and `RegExp` to split the user input string.\n * Make sure your customized separators could be used with `RegExp`.\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp\n */\n separators: PropTypes.array,\n\n // [Required] An array of tokenValue of TokenInput\n tokenValues: PropTypes.array.isRequired,\n\n /**\n * A callback function invoked when tokenValues update\n *\n * onTokenValuesChange(modifiedTokenValues)\n *\n * @ modifiedTokenValues\n * Type: An array of tokenValue of TokenInput\n * Description: Updated tokenValues\n */\n onTokenValuesChange: PropTypes.func,\n\n /**\n * A callback function for preprocessing the user input string\n * (after it is split into `array of value`).\n *\n * Note: This function execute after `split` but before `onBuildTokenValue`\n *\n * [Use case 1]\n * Make your normalize process in this function, such as `String.prototype.trim()`.\n *\n * [Use case 2]\n * Sometimes, we will want to auto-fit user input, this function could help with it.\n * For example, the user input string is `www.google.com`,\n * and we want to auto-fit it into `http://www.google.com` and `https://www.google.com`.\n *\n *\n * onPreprocess(inputStringValues)\n *\n * @ inputStringValues\n * Type: An array of string values\n * Description:\n * The user input string values // (split from the user input string by the `separators`)\n *\n * @ return\n * Type: An array of string values\n * Description: The values after preprocess\n */\n onPreprocess: PropTypes.func,\n\n /**\n * A callback function for building `user input string value` into\n * the `tokenValue` (customize data structure).\n *\n * Note: You could make your normalize process in this function too.\n *\n * onBuildTokenValue(stringValue)\n *\n * @ stringValue\n * Type: string\n * Description: The user input value // (A value split by separators)\n *\n * @ return\n * Type: any (string | number | object | customize data structure)\n * Description: customize data structure\n */\n onBuildTokenValue: PropTypes.func,\n\n /**\n * A callback function invoked when end-user typing but not become token yet\n *\n * onInputValueChange(newValue, previousValue)\n *\n * @ newValue\n * Type: string\n * Description: end-user input string\n *\n * @ previousValue\n * Type: string\n * Description: previous end-user input string\n */\n onInputValueChange: PropTypes.func,\n\n /**\n * A callback function for validate tokenValue\n *\n * onTokenValueValidate(tokenValue, tokenIndex, tokenValues)\n *\n * @ tokenValue\n * Type: any (string | number | object | customize data structure)\n * Description: The tokenValue build by `onBuildTokenValue`\n *\n * @ tokenIndex\n * Type: number\n * Description: The array index for this tokenValue in tokenValues\n *\n * @ tokenValues\n * Type: array\n * Description: The array of tokenValue of TokenInput\n *\n * @ return\n * Type: any (string | number | object | customize data structure)\n * Description:\n * The customize error.\n * Specific the token's validate status or errorMessage.\n * Could be an error message to display or error object\n *\n * Will be use by `onGetTokenErrorMessage`\n */\n onTokenValueValidate: PropTypes.func,\n\n /**\n * A callback function for getting customizes `className` for a token\n *\n * onGetTokenClassName(tokenValue, tokenMeta)\n *\n * @ tokenValue\n * Type: any (string | number | object | customize data structure)\n * Description: The tokenValue build by `onBuildTokenValue`\n *\n * @ tokenMeta\n * Description: token's meta data\n * {\n * // A private key for render\n * key: string,\n *\n * // Specific the token is activated for `edit` or not\n * activated: boolean,\n *\n * // Customize data structure built by `onTokenValue Validate`\n * // Specific the token's validate status or errorMessage\n * error: any,\n * }\n *\n * @ return\n * Type: string\n * Description: The customizes className\n */\n onGetTokenClassName: PropTypes.func,\n\n /**\n * A callback function for getting displayable `label` for a token\n * Apply this to customize the token's content\n * For example, render token with `icon` or `Additional text`\n *\n * onGetTokenDisplayLabel(tokenValue, tokenMeta)\n *\n * @ tokenValue\n * Type: any (string | number | object | customize data structure)\n * Description: The tokenValue build by `onBuildTokenValue`\n *\n * @ tokenMeta\n * Description: token's meta data\n * {\n * // A private key for render\n * key: string,\n *\n * // Specific the token is activated for `edit` or not\n * activated: boolean,\n *\n * // Customize data structure built by `onTokenValue Validate`\n * // Specific the token's validate status or errorMessage\n * error: any,\n * }\n *\n * @ return\n * Type: string || react node\n * Description: The token's content.\n * By default, will apply `getDefaultTokenEditableValue`\n */\n onGetTokenDisplayLabel: PropTypes.func,\n\n /**\n * A callback function for render content of the delete button for a token\n * Apply this to customize the token's content of delete button\n * For example, replace the build-in x by Google font material-icons\n *\n * onRenderTokenDeleteButtonContent()\n *\n * @ return\n * Type: react node\n * Description: The content of the delete button of the token.\n * By default, TokenInput render a build-in x icon\n */\n onRenderTokenDeleteButtonContent: PropTypes.func,\n\n /**\n * A callback function for getting `string input value`\n * from `tokenValue` for the end-user to perform `edit`\n *\n * onGetTokenEditableValue(tokenValue)\n *\n * @ tokenValue\n * Type: any (string | number | object | customize data structure)\n * Description: The tokenValue build by `onBuildTokenValue`\n *\n * @ return\n * Type: string\n * Description: The value for end-user to `edit` in an input field\n */\n onGetTokenEditableValue: PropTypes.func,\n\n /**\n * A callback function for getting the error message from the customize error\n * The `customize error` is generate by `onTokenValueValidate`\n *\n * onGetTokenErrorMessage(tokenValue, tokenMeta)\n *\n * @ tokenValue\n * Type: any (string | number | object | customize data structure)\n * Description: The tokenValue build by `onBuildTokenValue`\n *\n * @ tokenMeta\n * Description: token's meta data\n * {\n * // A private key for render\n * key: string,\n *\n * // Specific the token is activated for `edit` or not\n * activated: boolean,\n *\n * // Customize data structure built by `onTokenValue Validate`\n * // Specific the token's validate status or errorMessage\n * error: any,\n * }\n *\n * @ return\n * Type: string | any\n * Description: The error message to describe an invalid token\n */\n onGetTokenErrorMessage: PropTypes.func,\n\n /**\n * A customize react functional component for rendering a token\n * Apply this to customize all token function.\n *\n * customizeTokenComponent={MyToken}\n */\n customizeTokenComponent: PropTypes.func,\n\n /**\n * [Beta; Might be change in the future version]\n * Current only apply to Token Create\n *\n * The config settings to control the specials keyDown event handler behavior.\n * Default setting as below.\n * specialKeyDown: {\n * onBackspace: 1,\n * onTab: 0,\n * onEnter: 1,\n * onEscape: 1,\n * },\n *\n * `0` means turn off (Took native browser behavior. TokenInput should NOT handle it).\n * `1` means apply TokenInput predefined event handler.\n *\n * Reference section below for Predefined event handlers.\n * `Predefined KeyDown Event Handlers`\n */\n specialKeyDown: PropTypes.object,\n};\n\nconst dummyFunc = () => {}; // Dummy function\nTokenInput.defaultProps = {\n className: '',\n readOnly: false,\n autoFocus: false,\n placeholder: '',\n\n // TokenCreator\n separators: DEFAULT_SEPARATORS,\n specialKeyDown: {\n onBackspace: 1,\n onTab: 0,\n onEnter: 1,\n onEscape: 1,\n },\n\n onBuildTokenValue: buildDefaultTokenValue,\n onInputValueChange: dummyFunc,\n onTokenValueValidate: dummyFunc,\n\n // FixMe: ReadOnly mode do not need onTokenValuesChange, but for others need\n onTokenValuesChange: dummyFunc,\n\n // Token\n onGetTokenClassName: dummyFunc,\n onGetTokenDisplayLabel: getDefaultTokenEditableValue,\n onGetTokenEditableValue: getDefaultTokenEditableValue,\n onGetTokenErrorMessage: getDefaultTokenErrorMessage,\n\n // TODO: Consider add more callback\n // onFocus\n // onBlur\n};\n\nexport default TokenInput;\n","import { useRef, useCallback } from 'react';\n\nfunction useTokenCreatorRef() {\n const tokenCreatorRef = useRef(null);\n\n const focusTokenCreator = useCallback(() => {\n // console.log('handleTokenCreatorFocus');\n if (tokenCreatorRef && tokenCreatorRef.current) {\n tokenCreatorRef.current.focus();\n }\n }, []);\n\n return {\n tokenCreatorRef,\n focusTokenCreator,\n };\n}\n\nexport default useTokenCreatorRef;\n","/**\n * Default function for TokenInput to\n * build default token value from user input value\n *\n * buildDefaultTokenValue(inputValue)\n *\n * @ inputValue\n * Type: string\n * Description: The user input value.\n * Which is `one item` of the `user input string` split by the `separators`\n * Example:\n * - Input string \"ABC, DEF\" and separators is `,`\n * - buildDefaultTokenValue will be called twice\n * buildDefaultTokenValue('ABC') and buildDefaultTokenValue('DEF')\n *\n * @ return\n * Type: string\n * Description: The default token value\n */\nconst buildDefaultTokenValue = (inputValue) => {\n return inputValue.trim();\n};\n\nexport default buildDefaultTokenValue;\n","/* eslint no-unused-vars: 0 */\n\n/**\n * Default function for get errorMessage\n * getDefaultTokenErrorMessage(tokenValue, tokenMeta)\n *\n * @ tokenValue\n * Type: any (string | number | object | customize data structure)\n * Description: The tokenValue build by `onBuildTokenValue`\n *\n * @ tokenMeta\n * Type: object\n * Description: The token meta\n *\n * @ return\n * Type: string\n * Description: The error message to describe an invalid token\n */\nconst getDefaultTokenErrorMessage = (tokenValue, tokenMeta) => {\n if (typeof tokenMeta.error === 'string') {\n return tokenMeta.error;\n }\n\n return undefined;\n};\n\nexport default getDefaultTokenErrorMessage;\n","import TokenInput from './TokenInput';\nimport { JS__TOKEN__DELETE_BUTTON__CLASS_NAME } from './constants';\n\nexport { JS__TOKEN__DELETE_BUTTON__CLASS_NAME };\n\nexport default TokenInput;\n"],"names":["root","factory","exports","module","require","define","amd","self","__WEBPACK_EXTERNAL_MODULE__698__","hasOwn","hasOwnProperty","classNames","classes","i","arguments","length","arg","argType","push","Array","isArray","inner","apply","toString","Object","prototype","key","call","join","default","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","props","propName","componentName","location","propFullName","secret","err","Error","name","getShim","isRequired","ReactPropTypes","array","bool","func","number","object","string","symbol","any","arrayOf","element","elementType","instanceOf","node","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","_extends","assign","target","source","_createClass","defineProperties","descriptor","enumerable","configurable","writable","defineProperty","Constructor","protoProps","staticProps","_react","_react2","_interopRequireDefault","_propTypes2","obj","__esModule","sizerStyle","position","top","left","visibility","height","overflow","whiteSpace","INPUT_PROPS_BLACKLIST","copyStyles","styles","style","fontSize","fontFamily","fontWeight","fontStyle","letterSpacing","textTransform","isIE","window","navigator","test","userAgent","generateId","Math","random","substr","undefined","AutosizeInput","_Component","instance","TypeError","_classCallCheck","this","_this","ReferenceError","_possibleConstructorReturn","__proto__","getPrototypeOf","inputRef","el","input","placeHolderSizerRef","placeHolderSizer","sizerRef","sizer","state","inputWidth","minWidth","inputId","id","prevId","subClass","superClass","create","constructor","value","setPrototypeOf","_inherits","mounted","copyInputStyles","updateInputWidth","prevProps","prevState","onAutosize","getComputedStyle","inputStyles","scrollWidth","newInputWidth","placeholder","placeholderIsMinWidth","max","type","extraWidth","parseInt","setState","focus","blur","select","injectStyles","createElement","dangerouslySetInnerHTML","__html","sizerValue","defaultValue","reduce","previousValue","currentValue","wrapperStyle","display","inputStyle","boxSizing","width","inputProps","keys","indexOf","_objectWithoutProperties","forEach","field","cleanInputProps","className","inputClassName","renderStyles","ref","Component","propTypes","onChange","defaultProps","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","n","getter","d","a","definition","o","get","prop","r","Symbol","toStringTag","dummyFunction","keyDownEvent","actions","onBackspace","onTab","onEnter","onEscape","keyCode","eventKey","keyDownEventPropsNormalizer","DEFAULT_SPECIAL_KEY_DOWN_SETTINGS","JS__TOKEN__DELETE_BUTTON__CLASS_NAME","handleKeyDown","onKey","predefinedHandler","specialKeyDown","inputInitValue","inputValue","onLastTokenDelete","handleInputValueUpdate","handleTokensCreate","handleBackspaceKeyDown","useCallback","handleTabKeyDown","preventDefault","handleEnterKeyDown","handleEscapeKeyDown","TokenCreator","forwardRef","autoFocus","onFocus","onBlur","separators","onInputValueChange","onPreprocess","onBuildTokenValue","onNewTokenValuesAppend","useState","setInputValue","splitPattens","useMemo","RegExp","newValue","inputString","trim","inputValues","split","filter","appendTokenValues","map","handleInputValueChange","e","newInputValue","lastChar","substring","usePredefinedKeyDownHandlers","keyDownHandlerProxy","handleBlur","handlePaste","pastedText","clipboardData","getData","onKeyDown","onPaste","displayName","role","DeleteButton","onRenderContent","isCustomizeContent","handleInlineEditClick","stopPropagation","Token","readOnly","tokenValue","tokenMeta","onGetClassName","onGetDisplayLabel","onRenderDeleteButtonContent","onGetEditableValue","onGetErrorMessage","onEditStart","onEditEnd","onDelete","autosizeInputRef","useRef","activated","error","handleEditStart","tokenEditableValue","useEffect","current","handleEditEnd","reset","isValueClear","newTokenValue","handleTokenClick","closest","tokenClassName","errorMessage","onClick","title","isTokenInputFocused","setIsTokenInputFocused","handleTokenInputFocus","handleTokenInputBlur","customizeError","tokenIndex","JSON","stringify","Date","now","tokenMetas","setTokenMetas","setTokenActivated","targetIndex","newTokenMetas","buildTokenMeta","tokenValues","onTokenValueValidate","useTokenMetas","hasInvalidToken","setHasInvalidToken","internalTokenValues","setInternalTokenValues","useLayoutEffect","hasInvalid","index","newTokenMeta","onTokenValuesChange","focusTokenCreator","handleTokenEditStart","handleTokenEditEnd","modifiedTokenValues","deleteToken","newTokenValues","splice","handleTokenDelete","handleLastTokenDelete","TokenInput","customizeTokenComponent","onGetTokenClassName","onGetTokenDisplayLabel","onRenderTokenDeleteButtonContent","onGetTokenEditableValue","onGetTokenErrorMessage","useTokenInputFocus","tokenCreatorRef","useTokenCreatorRef","useTokensUpdate","useTokenEdit","useTokenDelete","handleNewTokenValuesAppend","handleInputValuesPreprocess","processedValues","TokenComponent","dummyFunc","getDefaultTokenEditableValue"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"index.js","mappings":"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","sources":["webpack://TokenInput/webpack/universalModuleDefinition","webpack://TokenInput/./node_modules/classnames/index.js","webpack://TokenInput/./node_modules/prop-types/factoryWithThrowingShims.js","webpack://TokenInput/./node_modules/prop-types/index.js","webpack://TokenInput/./node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack://TokenInput/./node_modules/react-input-autosize/lib/AutosizeInput.js","webpack://TokenInput/external {\"root\":\"React\",\"commonjs2\":\"react\",\"commonjs\":\"react\",\"amd\":\"react\"}","webpack://TokenInput/webpack/bootstrap","webpack://TokenInput/webpack/runtime/compat get default export","webpack://TokenInput/webpack/runtime/define property getters","webpack://TokenInput/webpack/runtime/hasOwnProperty shorthand","webpack://TokenInput/webpack/runtime/make namespace object","webpack://TokenInput/./src/utils/keyDownEventPropsNormalizer.js","webpack://TokenInput/./src/utils/dummyFunction.js","webpack://TokenInput/./src/utils/keyDownHandlerProxy.js","webpack://TokenInput/./src/constants.js","webpack://TokenInput/./src/hooks/usePredefinedKeyDownHandlers.js","webpack://TokenInput/./src/styles.styl","webpack://TokenInput/./src/TokenCreator.jsx","webpack://TokenInput/./src/Token/CloseIcon.js","webpack://TokenInput/./src/Token/DeleteButton.jsx","webpack://TokenInput/./src/Token/Token.jsx","webpack://TokenInput/./src/Token/index.js","webpack://TokenInput/./src/hooks/useTokenInputFocus.js","webpack://TokenInput/./src/utils/buildTokenMeta.js","webpack://TokenInput/./src/hooks/useTokenMetas.js","webpack://TokenInput/./src/hooks/useTokensUpdate.js","webpack://TokenInput/./src/hooks/useTokenEdit.js","webpack://TokenInput/./src/hooks/useTokenDelete.js","webpack://TokenInput/./src/utils/getDefaultTokenEditableValue.js","webpack://TokenInput/./src/TokenInput.jsx","webpack://TokenInput/./src/hooks/useTokenCreatorRef.js","webpack://TokenInput/./src/utils/buildDefaultTokenValue.js","webpack://TokenInput/./src/utils/getDefaultTokenErrorMessage.js","webpack://TokenInput/./src/index.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"react\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"react\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"token-input\"] = factory(require(\"react\"));\n\telse\n\t\troot[\"TokenInput\"] = factory(root[\"React\"]);\n})(self, function(__WEBPACK_EXTERNAL_MODULE__698__) {\nreturn ","/*!\n Copyright (c) 2018 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString === Object.prototype.toString) {\n\t\t\t\t\tfor (var key in arg) {\n\t\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _extends = Object.assign || 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; };\n\nvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar sizerStyle = {\n\tposition: 'absolute',\n\ttop: 0,\n\tleft: 0,\n\tvisibility: 'hidden',\n\theight: 0,\n\toverflow: 'scroll',\n\twhiteSpace: 'pre'\n};\n\nvar INPUT_PROPS_BLACKLIST = ['extraWidth', 'injectStyles', 'inputClassName', 'inputRef', 'inputStyle', 'minWidth', 'onAutosize', 'placeholderIsMinWidth'];\n\nvar cleanInputProps = function cleanInputProps(inputProps) {\n\tINPUT_PROPS_BLACKLIST.forEach(function (field) {\n\t\treturn delete inputProps[field];\n\t});\n\treturn inputProps;\n};\n\nvar copyStyles = function copyStyles(styles, node) {\n\tnode.style.fontSize = styles.fontSize;\n\tnode.style.fontFamily = styles.fontFamily;\n\tnode.style.fontWeight = styles.fontWeight;\n\tnode.style.fontStyle = styles.fontStyle;\n\tnode.style.letterSpacing = styles.letterSpacing;\n\tnode.style.textTransform = styles.textTransform;\n};\n\nvar isIE = typeof window !== 'undefined' && window.navigator ? /MSIE |Trident\\/|Edge\\//.test(window.navigator.userAgent) : false;\n\nvar generateId = function generateId() {\n\t// we only need an auto-generated ID for stylesheet injection, which is only\n\t// used for IE. so if the browser is not IE, this should return undefined.\n\treturn isIE ? '_' + Math.random().toString(36).substr(2, 12) : undefined;\n};\n\nvar AutosizeInput = function (_Component) {\n\t_inherits(AutosizeInput, _Component);\n\n\t_createClass(AutosizeInput, null, [{\n\t\tkey: 'getDerivedStateFromProps',\n\t\tvalue: function getDerivedStateFromProps(props, state) {\n\t\t\tvar id = props.id;\n\n\t\t\treturn id !== state.prevId ? { inputId: id || generateId(), prevId: id } : null;\n\t\t}\n\t}]);\n\n\tfunction AutosizeInput(props) {\n\t\t_classCallCheck(this, AutosizeInput);\n\n\t\tvar _this = _possibleConstructorReturn(this, (AutosizeInput.__proto__ || Object.getPrototypeOf(AutosizeInput)).call(this, props));\n\n\t\t_this.inputRef = function (el) {\n\t\t\t_this.input = el;\n\t\t\tif (typeof _this.props.inputRef === 'function') {\n\t\t\t\t_this.props.inputRef(el);\n\t\t\t}\n\t\t};\n\n\t\t_this.placeHolderSizerRef = function (el) {\n\t\t\t_this.placeHolderSizer = el;\n\t\t};\n\n\t\t_this.sizerRef = function (el) {\n\t\t\t_this.sizer = el;\n\t\t};\n\n\t\t_this.state = {\n\t\t\tinputWidth: props.minWidth,\n\t\t\tinputId: props.id || generateId(),\n\t\t\tprevId: props.id\n\t\t};\n\t\treturn _this;\n\t}\n\n\t_createClass(AutosizeInput, [{\n\t\tkey: 'componentDidMount',\n\t\tvalue: function componentDidMount() {\n\t\t\tthis.mounted = true;\n\t\t\tthis.copyInputStyles();\n\t\t\tthis.updateInputWidth();\n\t\t}\n\t}, {\n\t\tkey: 'componentDidUpdate',\n\t\tvalue: function componentDidUpdate(prevProps, prevState) {\n\t\t\tif (prevState.inputWidth !== this.state.inputWidth) {\n\t\t\t\tif (typeof this.props.onAutosize === 'function') {\n\t\t\t\t\tthis.props.onAutosize(this.state.inputWidth);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.updateInputWidth();\n\t\t}\n\t}, {\n\t\tkey: 'componentWillUnmount',\n\t\tvalue: function componentWillUnmount() {\n\t\t\tthis.mounted = false;\n\t\t}\n\t}, {\n\t\tkey: 'copyInputStyles',\n\t\tvalue: function copyInputStyles() {\n\t\t\tif (!this.mounted || !window.getComputedStyle) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar inputStyles = this.input && window.getComputedStyle(this.input);\n\t\t\tif (!inputStyles) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tcopyStyles(inputStyles, this.sizer);\n\t\t\tif (this.placeHolderSizer) {\n\t\t\t\tcopyStyles(inputStyles, this.placeHolderSizer);\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'updateInputWidth',\n\t\tvalue: function updateInputWidth() {\n\t\t\tif (!this.mounted || !this.sizer || typeof this.sizer.scrollWidth === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar newInputWidth = void 0;\n\t\t\tif (this.props.placeholder && (!this.props.value || this.props.value && this.props.placeholderIsMinWidth)) {\n\t\t\t\tnewInputWidth = Math.max(this.sizer.scrollWidth, this.placeHolderSizer.scrollWidth) + 2;\n\t\t\t} else {\n\t\t\t\tnewInputWidth = this.sizer.scrollWidth + 2;\n\t\t\t}\n\t\t\t// add extraWidth to the detected width. for number types, this defaults to 16 to allow for the stepper UI\n\t\t\tvar extraWidth = this.props.type === 'number' && this.props.extraWidth === undefined ? 16 : parseInt(this.props.extraWidth) || 0;\n\t\t\tnewInputWidth += extraWidth;\n\t\t\tif (newInputWidth < this.props.minWidth) {\n\t\t\t\tnewInputWidth = this.props.minWidth;\n\t\t\t}\n\t\t\tif (newInputWidth !== this.state.inputWidth) {\n\t\t\t\tthis.setState({\n\t\t\t\t\tinputWidth: newInputWidth\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'getInput',\n\t\tvalue: function getInput() {\n\t\t\treturn this.input;\n\t\t}\n\t}, {\n\t\tkey: 'focus',\n\t\tvalue: function focus() {\n\t\t\tthis.input.focus();\n\t\t}\n\t}, {\n\t\tkey: 'blur',\n\t\tvalue: function blur() {\n\t\t\tthis.input.blur();\n\t\t}\n\t}, {\n\t\tkey: 'select',\n\t\tvalue: function select() {\n\t\t\tthis.input.select();\n\t\t}\n\t}, {\n\t\tkey: 'renderStyles',\n\t\tvalue: function renderStyles() {\n\t\t\t// this method injects styles to hide IE's clear indicator, which messes\n\t\t\t// with input size detection. the stylesheet is only injected when the\n\t\t\t// browser is IE, and can also be disabled by the `injectStyles` prop.\n\t\t\tvar injectStyles = this.props.injectStyles;\n\n\t\t\treturn isIE && injectStyles ? _react2.default.createElement('style', { dangerouslySetInnerHTML: {\n\t\t\t\t\t__html: 'input#' + this.state.inputId + '::-ms-clear {display: none;}'\n\t\t\t\t} }) : null;\n\t\t}\n\t}, {\n\t\tkey: 'render',\n\t\tvalue: function render() {\n\t\t\tvar sizerValue = [this.props.defaultValue, this.props.value, ''].reduce(function (previousValue, currentValue) {\n\t\t\t\tif (previousValue !== null && previousValue !== undefined) {\n\t\t\t\t\treturn previousValue;\n\t\t\t\t}\n\t\t\t\treturn currentValue;\n\t\t\t});\n\n\t\t\tvar wrapperStyle = _extends({}, this.props.style);\n\t\t\tif (!wrapperStyle.display) wrapperStyle.display = 'inline-block';\n\n\t\t\tvar inputStyle = _extends({\n\t\t\t\tboxSizing: 'content-box',\n\t\t\t\twidth: this.state.inputWidth + 'px'\n\t\t\t}, this.props.inputStyle);\n\n\t\t\tvar inputProps = _objectWithoutProperties(this.props, []);\n\n\t\t\tcleanInputProps(inputProps);\n\t\t\tinputProps.className = this.props.inputClassName;\n\t\t\tinputProps.id = this.state.inputId;\n\t\t\tinputProps.style = inputStyle;\n\n\t\t\treturn _react2.default.createElement(\n\t\t\t\t'div',\n\t\t\t\t{ className: this.props.className, style: wrapperStyle },\n\t\t\t\tthis.renderStyles(),\n\t\t\t\t_react2.default.createElement('input', _extends({}, inputProps, { ref: this.inputRef })),\n\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t'div',\n\t\t\t\t\t{ ref: this.sizerRef, style: sizerStyle },\n\t\t\t\t\tsizerValue\n\t\t\t\t),\n\t\t\t\tthis.props.placeholder ? _react2.default.createElement(\n\t\t\t\t\t'div',\n\t\t\t\t\t{ ref: this.placeHolderSizerRef, style: sizerStyle },\n\t\t\t\t\tthis.props.placeholder\n\t\t\t\t) : null\n\t\t\t);\n\t\t}\n\t}]);\n\n\treturn AutosizeInput;\n}(_react.Component);\n\nAutosizeInput.propTypes = {\n\tclassName: _propTypes2.default.string, // className for the outer element\n\tdefaultValue: _propTypes2.default.any, // default field value\n\textraWidth: _propTypes2.default.oneOfType([// additional width for input element\n\t_propTypes2.default.number, _propTypes2.default.string]),\n\tid: _propTypes2.default.string, // id to use for the input, can be set for consistent snapshots\n\tinjectStyles: _propTypes2.default.bool, // inject the custom stylesheet to hide clear UI, defaults to true\n\tinputClassName: _propTypes2.default.string, // className for the input element\n\tinputRef: _propTypes2.default.func, // ref callback for the input element\n\tinputStyle: _propTypes2.default.object, // css styles for the input element\n\tminWidth: _propTypes2.default.oneOfType([// minimum width for input element\n\t_propTypes2.default.number, _propTypes2.default.string]),\n\tonAutosize: _propTypes2.default.func, // onAutosize handler: function(newWidth) {}\n\tonChange: _propTypes2.default.func, // onChange handler: function(event) {}\n\tplaceholder: _propTypes2.default.string, // placeholder text\n\tplaceholderIsMinWidth: _propTypes2.default.bool, // don't collapse size to less than the placeholder\n\tstyle: _propTypes2.default.object, // css styles for the outer element\n\tvalue: _propTypes2.default.any // field value\n};\nAutosizeInput.defaultProps = {\n\tminWidth: 1,\n\tinjectStyles: true\n};\n\nexports.default = AutosizeInput;","module.exports = __WEBPACK_EXTERNAL_MODULE__698__;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/**\n * Help function to normalize keyDown event properties\n *\n * Q: Why need this?\n * A: Handle the different behaviors with IME\n * - The behavior of Chrome is different on Mac and Windows\n * - The behavior of Chrome and FireFox are different on Mac\n *\n * Playground\n * [Vanilla JS] https://codepen.io/seawind543/pen/gOWNVYR\n * [React JS] https://codepen.io/seawind543/pen/xxdvZyE\n *\n * Reference:\n * [1] https://github.com/facebook/react/issues/13104\n * [2] https://github.com/seawind543/react-token-input/issues/1#issuecomment-896190656\n * [3] https://developer.mozilla.org/en-US/docs/Web/API/Document/keydown_event#ignoring_keydown_during_ime_composition\n *\n * @ keyDownEvent\n * Type: Event\n * Description: keyDown event\n */\nconst keyDownEventPropsNormalizer = (keyDownEvent) => {\n // https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent\n const {\n key,\n keyCode, // Deprecated in Vanilla JS\n } = keyDownEvent;\n let eventKey = key;\n\n /**\n * Normalize `key` value for Chrome on Mac\n * When `keyCode` is 229, the `key` should be `Process` to align most browsers.\n */\n if (keyCode && keyCode === 229) {\n eventKey = 'Process';\n }\n\n return {\n key: eventKey,\n };\n};\n\nexport default keyDownEventPropsNormalizer;\n\n/**\n * [Mac]\n * Chrome (92.0.4515.159)\n * Firefox (91.0.1)\n *\n * [Win 7]\n * Chrome ()\n * Firefox ()\n */\n\n/**\n * Mac + Chrome\n * Win + Chrome\n * Mac + Firefox\n * Win + Firefox\n */\n// React + [a]\n// altKey = false\n// charCode = 0 // Deprecated\n// code = KeyA\n// ctrlKey = false\n// isComposing = undefined\n// key = a\n// keyCode = 65 // Deprecated\n// keyIdentifier = undefined // Deprecated\n// location = 0\n// metaKey = false\n// repeat = false\n// shiftKey = false\n// which = 65 // Deprecated\n//\n// Vanilla JS + [a]\n// altKey = false\n// charCode = 0 // Deprecated\n// code = KeyA\n// ctrlKey = false\n// isComposing = false\n// key = a\n// keyCode = 65 // Deprecated\n// keyIdentifier = undefined // Deprecated\n// location = 0\n// metaKey = false\n// repeat = false\n// shiftKey = false\n// which = 65 // Deprecated\n\n/**\n * Mac + Chrome\n * Mac + Firefox\n */\n// React + [ShiftLeft]\n// altKey = false\n// charCode = 0 // Deprecated\n// code = ShiftLeft\n// ctrlKey = false\n// isComposing = undefined\n// key = Shift\n// keyCode = 16 // Deprecated\n// keyIdentifier = undefined // Deprecated\n// location = 1\n// metaKey = false\n// repeat = false\n// shiftKey = true\n// which = 16 // Deprecated\n//\n// Vanilla JS + [ShiftLeft]\n// altKey = false\n// charCode = 0 // Deprecated\n// code = ShiftLeft\n// ctrlKey = false\n// isComposing = false\n// key = Shift\n// keyCode = 16 // Deprecated\n// keyIdentifier = undefined // Deprecated\n// location = 1\n// metaKey = false\n// repeat = false\n// shiftKey = true\n// which = 16 // Deprecated\n\n/**\n * Mac + Chrome\n * Win + Chrome\n * Mac + Firefox\n * Win + Firefox\n */\n// React + [Enter]\n// altKey = false\n// charCode = 0 // Deprecated\n// code = Enter\n// ctrlKey = false\n// isComposing = undefined\n// key = Enter\n// keyCode = 13 // Deprecated\n// keyIdentifier = undefined // Deprecated\n// location = 0\n// metaKey = false\n// repeat = false\n// shiftKey = false\n// which = 13 // Deprecated\n//\n// Vanilla JS + [Enter]\n// altKey = false\n// charCode = 0 // Deprecated\n// code = Enter\n// ctrlKey = false\n// isComposing = false\n// key = Enter\n// keyCode = 13 // Deprecated\n// keyIdentifier = undefined // Deprecated\n// location = 0\n// metaKey = false\n// repeat = false\n// shiftKey = false\n// which = 13 // Deprecated\n\n/**\n * Mac + Chrome\n */\n// React + [ㄏ]\n// altKey = false\n// charCode = 0 // Deprecated\n// code = KeyC\n// ctrlKey = false\n// isComposing = undefined\n// key = ㄏ\n// keyCode = 229 // Deprecated\n// keyIdentifier = undefined // Deprecated\n// location = 0\n// metaKey = false\n// repeat = false\n// shiftKey = false\n// which = 229 // Deprecated\n//\n// Vanilla JS + [ㄏ]\n// altKey = false\n// charCode = 0 // Deprecated\n// code = KeyC\n// ctrlKey = false\n// isComposing = false\n// key = ㄏ\n// keyCode = 229 // Deprecated\n// keyIdentifier = undefined // Deprecated\n// location = 0\n// metaKey = false\n// repeat = false\n// shiftKey = false\n// which = 229 // Deprecated\n\n/**\n * Win + Chrome\n * Mac + Firefox\n * Win + Firefox\n */\n// React + [ㄏ]\n// altKey = false\n// charCode = 0 // Deprecated\n// code = KeyC\n// ctrlKey = false\n// isComposing = undefined\n// key = Process\n// keyCode = 229 // Deprecated\n// keyIdentifier = undefined // Deprecated\n// location = 0\n// metaKey = false\n// repeat = false\n// shiftKey = false\n// which = 229 // Deprecated\n//\n// Vanilla JS + [ㄏ]\n// altKey = false\n// charCode = 0 // Deprecated\n// code = KeyC\n// ctrlKey = false\n// isComposing = false\n// key = Process\n// keyCode = 229 // Deprecated\n// keyIdentifier = undefined // Deprecated\n// location = 0\n// metaKey = false\n// repeat = false\n// shiftKey = false\n// which = 229 // Deprecated\n\n/**\n * Mac + Chrome\n */\n// React + [IME Enter]\n// altKey = false\n// charCode = 0 // Deprecated\n// code = Enter\n// ctrlKey = false\n// isComposing = undefined\n// key = Enter\n// keyCode = 229 // Deprecated\n// keyIdentifier = undefined // Deprecated\n// location = 0\n// metaKey = false\n// repeat = false\n// shiftKey = false\n// which = 229 // Deprecated\n//\n// Vanilla JS + [IME Enter]\n// altKey = false\n// charCode = 0 // Deprecated\n// code = Enter\n// ctrlKey = false\n// isComposing = true\n// key = Enter\n// keyCode = 229 // Deprecated\n// keyIdentifier = undefined // Deprecated\n// location = 0\n// metaKey = false\n// repeat = false\n// shiftKey = false\n// which = 229 // Deprecated\n\n/**\n * Win + Chrome\n * Mac + Firefox\n * Win + Firefox\n */\n// React + [IME Enter]\n// altKey = false\n// charCode = 0 // Deprecated\n// code = Enter\n// ctrlKey = false\n// isComposing = undefined\n// key = Process\n// keyCode = 229 // Deprecated\n// keyIdentifier = undefined // Deprecated\n// location = 0\n// metaKey = false\n// repeat = false\n// shiftKey = false\n// which = 229 // Deprecated\n//\n// Vanilla JS + [IME Enter]\n// altKey = false\n// charCode = 0 // Deprecated\n// code = Enter\n// ctrlKey = false\n// isComposing = true\n// key = Process\n// keyCode = 229 // Deprecated\n// keyIdentifier = undefined // Deprecated\n// location = 0\n// metaKey = false\n// repeat = false\n// shiftKey = false\n// which = 229 // Deprecated\n","/**\n * A dummy empty function\n */\nconst dummyFunction = () => {};\n\nexport default dummyFunction;\n","import keyDownEventPropsNormalizer from './keyDownEventPropsNormalizer';\nimport dummyFunction from './dummyFunction';\n\n/**\n * Help function to proxy keyDown event to handler\n *\n * @ keyDownEvent\n * Type: Event\n * Description: keyDown event\n *\n * @ actions.onBackspace\n * Type: function\n * Description: callback function when `Backspace` keyDone\n *\n * @ actions.onTab\n * Type: function\n * Description: callback function when `Tab` keyDone\n *\n * @ actions.onEnter\n * Type: function\n * Description: callback function when `Enter` keyDone\n *\n * @ actions.onEscape\n * Type: function\n * Description: callback function when `Escape` keyDone\n */\nconst keyDownHandlerProxy = (keyDownEvent, actions) => {\n const {\n onBackspace = dummyFunction,\n onTab = dummyFunction,\n onEnter = dummyFunction,\n onEscape = dummyFunction,\n } = actions;\n\n const { key: eventKey } = keyDownEventPropsNormalizer(keyDownEvent);\n\n switch (eventKey) {\n case 'Backspace':\n onBackspace(keyDownEvent);\n break;\n\n case 'Tab':\n onTab(keyDownEvent);\n break;\n\n case 'Enter':\n onEnter(keyDownEvent);\n break;\n\n case 'Escape':\n onEscape(keyDownEvent);\n break;\n\n default:\n }\n};\n\nexport default keyDownHandlerProxy;\n","/**\n * The default `separators`\n * in the `TokenLabel` (onGetTokenDisplayLabel)\n */\nexport const DEFAULT_SEPARATORS = [\n ',',\n ';',\n '\\n', // for copy and paste\n '\\r', // for copy and paste\n '\\r\\n', // for copy and paste\n];\n\n/**\n * The default specialKeyDown settings\n */\nexport const DEFAULT_SPECIAL_KEY_DOWN_SETTINGS = {\n onBackspace: 1,\n onTab: 0,\n onEnter: 1,\n onEscape: 1,\n};\n\n/**\n * For customize the `delete button`\n * in the `TokenLabel` (onGetTokenDisplayLabel)\n */\nexport const JS__TOKEN__DELETE_BUTTON__CLASS_NAME = 'js__token__delete-button';\n\n/**\n * The default init value of the `input`\n */\nexport const DEFAULT_INPUT_INIT_VALUE = '';\n","import { useCallback } from 'react';\nimport { DEFAULT_SPECIAL_KEY_DOWN_SETTINGS } from '../constants';\n\nconst handleKeyDown = ({ keyDownEvent, onKey, predefinedHandler }) => {\n switch (true) {\n case onKey === 1:\n predefinedHandler(keyDownEvent);\n break;\n\n // case onKey === 0:\n default:\n // Do nothing\n }\n};\n\nfunction usePredefinedKeyDownHandlers({\n specialKeyDown,\n inputInitValue,\n inputValue,\n onLastTokenDelete,\n handleInputValueUpdate,\n handleTokensCreate,\n}) {\n // console.log('specialKeyDown', specialKeyDown);\n const { onBackspace, onTab, onEnter, onEscape } = {\n ...DEFAULT_SPECIAL_KEY_DOWN_SETTINGS,\n ...specialKeyDown,\n };\n const handleBackspaceKeyDown = useCallback(\n (keyDownEvent) => {\n handleKeyDown({\n keyDownEvent,\n onKey: onBackspace,\n predefinedHandler: () => {\n if (inputValue.length === 0) {\n // Delete the latest token when `Backspace`\n onLastTokenDelete();\n }\n },\n });\n },\n [onBackspace, inputValue, onLastTokenDelete]\n );\n\n const handleTabKeyDown = useCallback(\n (keyDownEvent) => {\n handleKeyDown({\n keyDownEvent,\n onKey: onTab,\n predefinedHandler: (keyDownEvent) => {\n keyDownEvent.preventDefault();\n handleTokensCreate(inputValue);\n },\n });\n },\n [onTab, inputValue, handleTokensCreate]\n );\n\n const handleEnterKeyDown = useCallback(\n (keyDownEvent) => {\n handleKeyDown({\n keyDownEvent,\n onKey: onEnter,\n predefinedHandler: () => {\n handleTokensCreate(inputValue);\n },\n });\n },\n [onEnter, inputValue, handleTokensCreate]\n );\n\n const handleEscapeKeyDown = useCallback(\n (keyDownEvent) => {\n handleKeyDown({\n keyDownEvent,\n onKey: onEscape,\n predefinedHandler: () => {\n // Reset the input value\n handleInputValueUpdate(inputInitValue);\n },\n });\n },\n [onEscape, inputInitValue, handleInputValueUpdate]\n );\n\n return {\n handleBackspaceKeyDown,\n handleTabKeyDown,\n handleEnterKeyDown,\n handleEscapeKeyDown,\n };\n}\n\nexport default usePredefinedKeyDownHandlers;\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"token-input-container\",\"container--focused\":\"token-input-container--focused\",\"container--errors\":\"token-input-container--errors\",\"token-list\":\"token-input-token-list\",\"token\":\"token-input-token\",\"token--error\":\"token-input-token--error\",\"token--editable\":\"token-input-token--editable\",\"token--active\":\"token-input-token--active\",\"autosized-wrapper\":\"token-input-autosized-wrapper\",\"token__label-wrapper\":\"token-input-token__label-wrapper\",\"token__delete-button\":\"token-input-token__delete-button\",\"token__delete-button__close-icon\":\"token-input-token__delete-button__close-icon\"};","import React, { useState, useMemo, useCallback, forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nimport AutosizeInput from 'react-input-autosize';\nimport keyDownHandlerProxy from './utils/keyDownHandlerProxy';\n\nimport usePredefinedKeyDownHandlers from './hooks/usePredefinedKeyDownHandlers';\n\nimport { DEFAULT_INPUT_INIT_VALUE } from './constants';\n\nimport styles from './styles.styl';\n\nconst TokenCreator = forwardRef((props, ref) => {\n const {\n placeholder,\n autoFocus,\n onFocus,\n onBlur,\n\n separators,\n specialKeyDown,\n onInputValueChange,\n onPreprocess,\n onBuildTokenValue,\n onNewTokenValuesAppend,\n onLastTokenDelete,\n } = props;\n const [inputValue, setInputValue] = useState(DEFAULT_INPUT_INIT_VALUE);\n\n const splitPattens = useMemo(\n () => new RegExp(separators.join('|')),\n [separators]\n );\n\n const handleInputValueUpdate = useCallback(\n (newValue) => {\n // console.log(\n // 'handleInputValueUpdate; newValue',\n // `${newValue}`,\n // 'previousValue',\n // `${inputValue}`\n // );\n setInputValue(newValue);\n onInputValueChange(newValue, inputValue);\n },\n [onInputValueChange, inputValue, setInputValue]\n );\n\n const handleTokensCreate = useCallback(\n (inputString) => {\n // console.log('handleTokensCreate', `${inputString}`);\n\n /**\n * Do not change inputString by `trim`.\n * Leave customize to decide how to handle the blank.\n * Note: The trim could be handled by either `onPreprocess` or `onBuildTokenValue`\n */\n if (inputString.trim().length === 0) {\n // Skip the empty\n return;\n }\n\n // Split string into values by `separators`\n const inputValues = inputString\n .split(splitPattens)\n // Filter out empty\n .filter((inputValue) => inputValue.trim().length > 0);\n const processedValues = onPreprocess(inputValues);\n const appendTokenValues = processedValues.map((value) => {\n return onBuildTokenValue(value);\n });\n onNewTokenValuesAppend(appendTokenValues);\n\n // Rest the input value after token created\n handleInputValueUpdate(DEFAULT_INPUT_INIT_VALUE);\n },\n [\n splitPattens,\n onPreprocess,\n onBuildTokenValue,\n onNewTokenValuesAppend,\n handleInputValueUpdate,\n ]\n );\n\n /*\n * Event handlers\n */\n const handleInputValueChange = useCallback(\n (e) => {\n // console.log('TokenCreator > handleInputValueChange');\n const { value: newInputValue } = e.target;\n const lastChar = newInputValue.substring(newInputValue.length - 1);\n\n const isTypingSeparators = splitPattens.test(lastChar);\n if (isTypingSeparators === true) {\n // User input a `Separator`, so create a token\n handleTokensCreate(inputValue);\n return;\n }\n\n handleInputValueUpdate(newInputValue);\n },\n [splitPattens, handleTokensCreate, inputValue, handleInputValueUpdate]\n );\n\n const {\n handleBackspaceKeyDown,\n handleTabKeyDown,\n handleEnterKeyDown,\n handleEscapeKeyDown,\n } = usePredefinedKeyDownHandlers({\n specialKeyDown,\n inputInitValue: DEFAULT_INPUT_INIT_VALUE,\n inputValue,\n onLastTokenDelete,\n handleInputValueUpdate,\n handleTokensCreate,\n });\n\n const handleKeyDown = useCallback(\n (e) => {\n // console.log('TokenCreator > handleKeyDown');\n keyDownHandlerProxy(e, {\n onBackspace: handleBackspaceKeyDown,\n onTab: handleTabKeyDown,\n onEnter: handleEnterKeyDown,\n onEscape: handleEscapeKeyDown,\n });\n },\n [\n handleBackspaceKeyDown,\n handleTabKeyDown,\n handleEnterKeyDown,\n handleEscapeKeyDown,\n ]\n );\n\n const handleBlur = useCallback(\n (e) => {\n // console.log('TokenCreator > handleBlur');\n handleTokensCreate(inputValue);\n onBlur(e);\n },\n [handleTokensCreate, inputValue, onBlur]\n );\n\n const handlePaste = useCallback(\n (e) => {\n // console.log('TokenCreator > handlePaste');\n e.preventDefault();\n const pastedText = e.clipboardData.getData('text');\n handleTokensCreate(pastedText);\n },\n [handleTokensCreate]\n );\n\n return (\n
\n \n
\n );\n});\n\n/**\n * Fix the eslint 'react/display-name' issue with forwardRef\n * https://stackoverflow.com/questions/59716140/using-forwardref-with-proptypes-and-eslint\n */\nTokenCreator.displayName = 'TokenCreator';\n\nTokenCreator.propTypes = {\n placeholder: PropTypes.string.isRequired,\n autoFocus: PropTypes.bool.isRequired,\n onFocus: PropTypes.func.isRequired,\n onBlur: PropTypes.func.isRequired,\n\n /**\n * Token\n */\n separators: PropTypes.array.isRequired,\n specialKeyDown: PropTypes.object.isRequired,\n\n onInputValueChange: PropTypes.func.isRequired,\n onPreprocess: PropTypes.func.isRequired,\n onBuildTokenValue: PropTypes.func.isRequired,\n onNewTokenValuesAppend: PropTypes.func.isRequired,\n onLastTokenDelete: PropTypes.func.isRequired,\n};\n\nexport default TokenCreator;\n","import React from 'react';\nimport styles from '../styles.styl';\n\nconst CloseIcon = () => {\n return (\n \n );\n};\n\nexport default CloseIcon;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\n\nimport styles from '../styles.styl';\nimport { JS__TOKEN__DELETE_BUTTON__CLASS_NAME } from '../constants';\nimport CloseIcon from './CloseIcon';\n\nconst DeleteButton = ({ onRenderContent }) => {\n const isCustomizeContent = typeof onRenderContent === 'function';\n\n return (\n \n {isCustomizeContent && onRenderContent()}\n {!isCustomizeContent && }\n \n );\n};\n\nDeleteButton.propTypes = {\n onRenderContent: PropTypes.func,\n};\n\nexport default DeleteButton;\n","import React, {\n useState,\n useCallback,\n useMemo,\n useRef,\n useEffect,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport AutosizeInput from 'react-input-autosize';\nimport keyDownHandlerProxy from '../utils/keyDownHandlerProxy';\nimport {\n DEFAULT_INPUT_INIT_VALUE,\n JS__TOKEN__DELETE_BUTTON__CLASS_NAME,\n} from '../constants';\n\nimport DeleteButton from './DeleteButton';\n\nimport styles from '../styles.styl';\n\nconst handleInlineEditClick = (e) => {\n e.stopPropagation();\n};\n\nconst Token = ({\n readOnly,\n tokenValue,\n tokenMeta,\n onGetClassName,\n onGetDisplayLabel,\n onRenderDeleteButtonContent,\n onIsEditable,\n onGetEditableValue,\n onGetErrorMessage,\n onBuildTokenValue,\n onEditStart,\n onEditEnd,\n onDelete,\n}) => {\n const autosizeInputRef = useRef(null);\n const [inputValue, setInputValue] = useState(DEFAULT_INPUT_INIT_VALUE);\n const { activated, error } = tokenMeta;\n const isEditable = useMemo(() => {\n return onIsEditable(tokenValue, tokenMeta);\n }, [onIsEditable, tokenValue, tokenMeta]);\n\n const handleEditStart = useCallback(() => {\n const tokenEditableValue = onGetEditableValue(tokenValue, tokenMeta);\n setInputValue(tokenEditableValue);\n onEditStart();\n }, [setInputValue, tokenValue, tokenMeta, onGetEditableValue, onEditStart]);\n useEffect(() => {\n if (activated && autosizeInputRef.current) {\n autosizeInputRef.current.focus();\n }\n }, [activated]);\n\n const handleEditEnd = useCallback(\n ({ reset = false } = {}) => {\n // Handle input inputValue length === 0 case: Rest token\n const isValueClear = inputValue.length === 0;\n if (reset || isValueClear) {\n onEditEnd();\n return;\n }\n\n // TODO: Handle inputValue include `separators`\n\n const newTokenValue = onBuildTokenValue(inputValue);\n onEditEnd(newTokenValue);\n },\n [inputValue, onBuildTokenValue, onEditEnd]\n );\n\n /*\n * Event handlers\n */\n const handleTokenClick = useCallback(\n (e) => {\n // console.log('handleTokenClick');\n e.stopPropagation();\n\n if (readOnly) {\n return;\n }\n\n /**\n * Check does the click on the delete button\n * That is, the Element or its parents matched the `selector`\n */\n const isOnDeleteButton = !!e.target.closest(\n `.${styles.token} .${JS__TOKEN__DELETE_BUTTON__CLASS_NAME}`\n );\n if (isOnDeleteButton) {\n onDelete();\n return;\n }\n\n if (isEditable) {\n handleEditStart();\n }\n },\n [readOnly, isEditable, onDelete, handleEditStart]\n );\n\n const handleInputValueChange = useCallback(\n (e) => {\n const { value } = e.target;\n setInputValue(value);\n },\n [setInputValue]\n );\n\n const handleKeyDown = useCallback(\n (e) => {\n keyDownHandlerProxy(e, {\n onEscape: () => handleEditEnd({ reset: true }),\n onEnter: () => handleEditEnd(),\n });\n },\n [handleEditEnd]\n );\n\n const handleBlur = useCallback(() => {\n // console.log('Token handleBlur');\n handleEditEnd();\n }, [handleEditEnd]);\n\n const tokenClassName = useMemo(() => {\n return classNames(\n // Apply customize className on the token\n onGetClassName(tokenValue, tokenMeta),\n styles.token,\n {\n [styles['token--read-only']]: readOnly,\n [styles['token--editable']]: isEditable && !readOnly,\n [styles['token--active']]: activated,\n [styles['token--error']]: error && !activated,\n }\n );\n }, [\n onGetClassName,\n readOnly,\n isEditable,\n activated,\n error,\n tokenValue,\n tokenMeta,\n ]);\n\n const errorMessage = useMemo(() => {\n return onGetErrorMessage(tokenValue, tokenMeta);\n }, [onGetErrorMessage, tokenValue, tokenMeta]);\n\n if (activated) {\n return (\n \n
\n \n
\n \n );\n }\n\n return (\n \n
\n {onGetDisplayLabel(tokenValue, tokenMeta)}\n
\n {!readOnly && (\n \n )}\n \n );\n};\n\nToken.propTypes = {\n // Same as props of TokenInput\n readOnly: PropTypes.bool.isRequired,\n // tokenValue of token\n tokenValue: PropTypes.any.isRequired,\n // tokenMeta of token\n tokenMeta: PropTypes.object.isRequired,\n\n // Same as props `onGetTokenClassName` of TokenInput\n onGetClassName: PropTypes.func.isRequired,\n // Same as props `onGetTokenDisplayLabel` of TokenInput\n onGetDisplayLabel: PropTypes.func.isRequired,\n // Same as props `onRenderTokenDeleteButtonContent` of TokenInput\n onRenderDeleteButtonContent: PropTypes.func,\n // Same as props `onIsTokenEditable` of TokenInput\n onIsEditable: PropTypes.func.isRequired,\n // Same as props `onGetTokenEditableValue` of TokenInput\n onGetEditableValue: PropTypes.func.isRequired,\n // Same as props `onGetTokenErrorMessage` of TokenInput\n onGetErrorMessage: PropTypes.func.isRequired,\n\n // Editing\n // Same as props `onBuildTokenValue` of TokenInput\n onBuildTokenValue: PropTypes.func.isRequired,\n\n /**\n * A callback function, which should be `invoked` when end-user `start editing`\n *\n * Note:\n * Call this function to tell TokenInput it is start to editing the token.\n * As result, TokenInput will set `tokenMeta.activate` to `true`\n *\n * onEditStart()\n *\n * @ return\n * Type: void\n */\n onEditStart: PropTypes.func.isRequired,\n\n /**\n * A callback function, which should be `invoked` when end-user `end editing`\n *\n * Note:\n * Call this function to tell TokenInput it is finish editing the token.\n * As result, TokenInput will set `tokenMeta.activate` to `false`\n *\n * onEditEnd(newTokenValue?)\n *\n * @ newTokenValue\n * Type: undefined | any (string | number | object | customize data structure)\n * Description:\n * The new tokenValue build by `onBuildTokenValue.\n * TokenInput will update it, and\n * TokenInput will call `onTokenValuesChange`\n *\n * Note:\n * When newTokenValue is `undefined`,\n * TokenInput will treat as `Cancel` (End without update newTokenValue).\n * The `onTokenValuesChange` will not be called.\n *\n * @ return\n * Type: void\n */\n onEditEnd: PropTypes.func.isRequired,\n\n /**\n * A callback function, which should be `invoked` when end-user `delete` the token\n *\n * Note:\n * Call this function to tell TokenInput to delete the token.\n * As result, TokenInput will remove it, and\n * TokenInput will call `onTokenValuesChange` to update tokenValues.\n *\n * onDelete()\n *\n * @ return\n * Type: void\n */\n onDelete: PropTypes.func.isRequired,\n};\n\nexport default Token;\n","import Token from './Token';\n\nexport default Token;\n","import { useState, useCallback } from 'react';\n\nfunction useTokenInputFocus() {\n const [isTokenInputFocused, setIsTokenInputFocused] = useState(false);\n\n const handleTokenInputFocus = useCallback(() => {\n // console.log('handleTokenInputFocus');\n setIsTokenInputFocused(true);\n }, []);\n\n const handleTokenInputBlur = useCallback(() => {\n // console.log('handleTokenInputBlur');\n setIsTokenInputFocused(false);\n }, []);\n\n return {\n isTokenInputFocused,\n handleTokenInputFocus,\n handleTokenInputBlur,\n };\n}\n\nexport default useTokenInputFocus;\n","/* eslint no-unused-vars: 0 */\n\n/**\n * Internal function for TokenInput to\n * build token data and meta with customize data\n *\n * buildTokenMeta(customizeError, tokenValue, tokenIndex)\n *\n * @ customizeError\n * Type: any\n * Description: The return of onTokenValueValidate\n *\n * @ tokenValue\n * Type: any (string | number | object | customize data structure)\n * Description: The tokenValue build by `onBuildTokenValue`\n *\n * @ tokenIndex\n * Type: number\n * Description: The array index for this tokenValue in tokenValues\n *\n * @ return\n * Type: object\n * Description: token's meta data\n * {\n * // A private key for render\n * key: string,\n *\n * // Specific the token is activated for `edit` or not\n * activated: boolean,\n *\n * // Customize data structure built by `onTokenValue Validate`\n * // Specific the token's validate status or errorMessage\n * error: any,\n * }\n */\nconst buildTokenMeta = (customizeError, tokenValue, tokenIndex) => {\n return {\n // TODO: Consider uuid\n key: `${JSON.stringify(tokenValue)}-${Date.now()}-${tokenIndex}`,\n activated: false,\n error: customizeError,\n };\n};\n\nexport default buildTokenMeta;\n","import { useState, useCallback } from 'react';\nimport buildTokenMeta from '../utils/buildTokenMeta';\n\nfunction useTokenMetas() {\n const [tokenMetas, setTokenMetas] = useState([]);\n\n const setTokenActivated = useCallback(\n (targetIndex, activated) => {\n // console.log(\n // 'setTokenActivated; targetIndex',\n // targetIndex,\n // 'activated',\n // activated,\n // 'tokenMetas',\n // tokenMetas\n // );\n\n if (targetIndex >= tokenMetas.length) {\n throw new Error(\n `setTokenActivated out of tokenMetas scope; targetIndex ${targetIndex}; tokenMetas.length ${tokenMetas.length}`\n );\n }\n\n const newTokenMetas = [...tokenMetas];\n newTokenMetas[targetIndex].activated = activated;\n setTokenMetas(newTokenMetas);\n },\n [tokenMetas]\n );\n\n return {\n buildTokenMeta,\n tokenMetas,\n setTokenMetas,\n setTokenActivated,\n };\n}\n\nexport default useTokenMetas;\n","import { useState, useLayoutEffect } from 'react';\nimport useTokenMetas from './useTokenMetas';\n\nfunction useTokensUpdate({ tokenValues, onTokenValueValidate }) {\n const { buildTokenMeta, tokenMetas, setTokenMetas, setTokenActivated } =\n useTokenMetas();\n const [hasInvalidToken, setHasInvalidToken] = useState(false);\n\n /**\n * Use this internalTokenValues to `render` to avoid\n * not synced between tokenMetas and tokenValues\n */\n const [internalTokenValues, setInternalTokenValues] = useState([]);\n\n useLayoutEffect(() => {\n // console.log('useTokensUpdate > useLayoutEffect');\n\n let hasInvalid = false;\n // Build tokenMetas based on the latest tokenValues\n const newTokenMetas = tokenValues.map((tokenValue, index) => {\n const error = onTokenValueValidate(tokenValue, index, tokenValues);\n const newTokenMeta = buildTokenMeta(error, tokenValue, index);\n\n if (newTokenMeta.error && !newTokenMeta.activated) {\n hasInvalid = true;\n }\n\n return newTokenMeta;\n });\n\n setInternalTokenValues([...tokenValues]);\n setTokenMetas(newTokenMetas);\n setHasInvalidToken(hasInvalid);\n }, [tokenValues, onTokenValueValidate, setTokenMetas, buildTokenMeta]);\n\n return {\n hasInvalidToken,\n internalTokenValues,\n tokenMetas,\n setTokenActivated,\n };\n}\n\nexport default useTokensUpdate;\n","import { useCallback } from 'react';\n\nfunction useTokenEdit({\n tokenValues,\n onTokenValuesChange,\n setTokenActivated,\n handleTokenInputFocus,\n handleTokenInputBlur,\n focusTokenCreator,\n}) {\n const handleTokenEditStart = useCallback(\n (targetIndex) => () => {\n // console.log('handleTokenEditStart; targetIndex', targetIndex);\n setTokenActivated(targetIndex, true);\n handleTokenInputFocus();\n },\n [setTokenActivated, handleTokenInputFocus]\n );\n\n const handleTokenEditEnd = useCallback(\n (targetIndex) => (newTokenValue) => {\n // console.log(\n // 'handleTokenEditEnd; targetIndex',\n // targetIndex,\n // 'newTokenValue',\n // `${newTokenValue}`\n // );\n\n setTokenActivated(targetIndex, false);\n handleTokenInputBlur();\n\n // Re-focus on TokenCreator\n focusTokenCreator();\n\n // TODO: Consider split editEnd and tokenValue update\n if (typeof newTokenValue === 'undefined') {\n // Avoid meaningless update\n return;\n }\n\n const modifiedTokenValues = [...tokenValues];\n modifiedTokenValues[targetIndex] = newTokenValue;\n onTokenValuesChange(modifiedTokenValues);\n },\n [\n tokenValues,\n onTokenValuesChange,\n setTokenActivated,\n handleTokenInputBlur,\n focusTokenCreator,\n ]\n );\n\n return {\n handleTokenEditStart,\n handleTokenEditEnd,\n };\n}\n\nexport default useTokenEdit;\n","import { useCallback } from 'react';\n\nfunction useTokenDelete({\n tokenValues,\n onTokenValuesChange,\n focusTokenCreator,\n}) {\n const deleteToken = useCallback(\n (targetIndex) => {\n const newTokenValues = [...tokenValues];\n newTokenValues.splice(targetIndex, 1);\n onTokenValuesChange(newTokenValues);\n\n /**\n * Keep focus when remove a token.\n * Use scenario: User click the delete button of a token\n */\n focusTokenCreator();\n },\n [tokenValues, onTokenValuesChange, focusTokenCreator]\n );\n\n const handleTokenDelete = useCallback(\n (targetIndex) => () => {\n // console.log('handleTokenDelete', targetIndex);\n deleteToken(targetIndex);\n },\n [deleteToken]\n );\n\n const handleLastTokenDelete = useCallback(() => {\n deleteToken(-1);\n }, [deleteToken]);\n\n return {\n handleTokenDelete,\n handleLastTokenDelete,\n };\n}\n\nexport default useTokenDelete;\n","/* eslint no-unused-vars: 0 */\n\n/**\n * Default function for TokenInput to\n * get `editable value` from customize data structure\n * for user to perform `edit` in an `HTML input element`\n *\n * getDefaultTokenEditableValue(tokenValue)\n *\n * @ tokenValue\n * Type: string | number | object | any\n * Description: The customize token data\n *\n * @ tokenMeta\n * Type: object\n * Description: The token meta\n *\n * @ return\n * Type: string\n * Description: The value for user to edit in an input\n */\nconst getDefaultTokenEditableValue = (tokenValue, tokenMeta) => {\n return tokenValue;\n};\n\nexport default getDefaultTokenEditableValue;\n","import React, { useCallback } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport TokenCreator from './TokenCreator';\nimport Token from './Token';\n\nimport useTokenInputFocus from './hooks/useTokenInputFocus';\nimport useTokenCreatorRef from './hooks/useTokenCreatorRef';\nimport useTokensUpdate from './hooks/useTokensUpdate';\nimport useTokenEdit from './hooks/useTokenEdit';\nimport useTokenDelete from './hooks/useTokenDelete';\n\nimport dummyFunction from './utils/dummyFunction';\nimport buildDefaultTokenValue from './utils/buildDefaultTokenValue';\nimport getDefaultTokenEditableValue from './utils/getDefaultTokenEditableValue';\nimport getDefaultTokenErrorMessage from './utils/getDefaultTokenErrorMessage';\n\nimport { DEFAULT_SEPARATORS } from './constants';\n\nimport styles from './styles.styl';\n\nconst TokenInput = ({\n className,\n readOnly,\n autoFocus,\n placeholder,\n\n tokenValues,\n onTokenValuesChange,\n onBuildTokenValue,\n\n // Token\n customizeTokenComponent,\n onGetTokenClassName,\n onGetTokenDisplayLabel,\n onRenderTokenDeleteButtonContent,\n onIsTokenEditable,\n onGetTokenEditableValue,\n onGetTokenErrorMessage,\n\n // TokenCreator\n separators,\n specialKeyDown,\n onPreprocess,\n onInputValueChange,\n onTokenValueValidate,\n\n // Rest\n ...props\n}) => {\n const { isTokenInputFocused, handleTokenInputFocus, handleTokenInputBlur } =\n useTokenInputFocus();\n const { tokenCreatorRef, focusTokenCreator } = useTokenCreatorRef();\n\n const {\n hasInvalidToken,\n internalTokenValues,\n tokenMetas,\n setTokenActivated,\n } = useTokensUpdate({\n tokenValues,\n onTokenValueValidate,\n });\n\n const { handleTokenEditStart, handleTokenEditEnd } = useTokenEdit({\n tokenValues,\n onTokenValuesChange,\n setTokenActivated,\n handleTokenInputFocus,\n handleTokenInputBlur,\n focusTokenCreator,\n });\n\n const { handleTokenDelete, handleLastTokenDelete } = useTokenDelete({\n tokenValues,\n onTokenValuesChange,\n focusTokenCreator,\n });\n\n const handleNewTokenValuesAppend = useCallback(\n (appendTokenValues) => {\n if (appendTokenValues.length === 0) {\n // Avoid meaningless update\n return;\n }\n\n const newTokenValues = [...tokenValues, ...appendTokenValues];\n onTokenValuesChange(newTokenValues);\n },\n [tokenValues, onTokenValuesChange]\n );\n\n const handleInputValuesPreprocess = useCallback(\n (inputValues) => {\n // console.log('handleInputValuesPreprocess', inputValues);\n if (typeof onPreprocess !== 'function') {\n return inputValues;\n }\n\n const processedValues = onPreprocess(inputValues);\n if (Array.isArray(processedValues) !== true) {\n throw new Error('onPreprocess should return an array of values');\n }\n return processedValues;\n },\n [onPreprocess]\n );\n\n const TokenComponent = customizeTokenComponent || Token;\n\n return (\n \n
\n {internalTokenValues.map((tokenValue, index) => {\n const tokenMeta = tokenMetas[index];\n const { key } = tokenMeta;\n\n return (\n \n );\n })}\n
\n\n {!readOnly && (\n \n )}\n \n );\n};\n\nTokenInput.propTypes = {\n // Assign style to the TokenInput\n style: PropTypes.object,\n\n // Assign className to the TokenInput\n className: PropTypes.string,\n\n // Specific TokenInput is `readOnly` or not\n readOnly: PropTypes.bool,\n\n // Specific TokenInput should be autoFocus or not\n autoFocus: PropTypes.bool,\n\n // Placeholder of TokenInput\n placeholder: PropTypes.string,\n\n /**\n * An array of characters for split the user input string.\n * For example,\n * Split the user input string `abc;def` into `['abc', 'def']`\n * by separators `[';']`\n *\n * Note:\n * It take the `String.prototype.split()` and `RegExp` to split the user input string.\n * Make sure your customized separators could be used with `RegExp`.\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp\n */\n separators: PropTypes.array,\n\n // [Required] An array of tokenValue of TokenInput\n tokenValues: PropTypes.array.isRequired,\n\n /**\n * A callback function invoked when tokenValues update\n *\n * onTokenValuesChange(modifiedTokenValues)\n *\n * @ modifiedTokenValues\n * Type: An array of tokenValue of TokenInput\n * Description: Updated tokenValues\n */\n onTokenValuesChange: PropTypes.func,\n\n /**\n * A callback function for preprocessing the user input string\n * (after it is split into `array of value`).\n *\n * Note: This function execute after `split` but before `onBuildTokenValue`\n *\n * [Use case 1]\n * Make your normalize process in this function, such as `String.prototype.trim()`.\n *\n * [Use case 2]\n * Sometimes, we will want to auto-fit user input, this function could help with it.\n * For example, the user input string is `www.google.com`,\n * and we want to auto-fit it into `http://www.google.com` and `https://www.google.com`.\n *\n *\n * onPreprocess(inputStringValues)\n *\n * @ inputStringValues\n * Type: An array of string values\n * Description:\n * The user input string values // (split from the user input string by the `separators`)\n *\n * @ return\n * Type: An array of string values\n * Description: The values after preprocess\n */\n onPreprocess: PropTypes.func,\n\n /**\n * A callback function for building `user input string value` into\n * the `tokenValue` (customize data structure).\n *\n * Note: You could make your normalize process in this function too.\n *\n * onBuildTokenValue(stringValue)\n *\n * @ stringValue\n * Type: string\n * Description: The user input value // (A value split by separators)\n *\n * @ return\n * Type: any (string | number | object | customize data structure)\n * Description: customize data structure\n */\n onBuildTokenValue: PropTypes.func,\n\n /**\n * A callback function invoked when end-user typing but not become token yet\n *\n * onInputValueChange(newValue, previousValue)\n *\n * @ newValue\n * Type: string\n * Description: end-user input string\n *\n * @ previousValue\n * Type: string\n * Description: previous end-user input string\n */\n onInputValueChange: PropTypes.func,\n\n /**\n * A callback function for validate tokenValue\n *\n * onTokenValueValidate(tokenValue, tokenIndex, tokenValues)\n *\n * @ tokenValue\n * Type: any (string | number | object | customize data structure)\n * Description: The tokenValue build by `onBuildTokenValue`\n *\n * @ tokenIndex\n * Type: number\n * Description: The array index for this tokenValue in tokenValues\n *\n * @ tokenValues\n * Type: array\n * Description: The array of tokenValue of TokenInput\n *\n * @ return\n * Type: any (string | number | object | customize data structure)\n * Description:\n * The customize error.\n * Specific the token's validate status or errorMessage.\n * Could be an error message to display or error object\n *\n * Will be use by `onGetTokenErrorMessage`\n */\n onTokenValueValidate: PropTypes.func,\n\n /**\n * A callback function for getting customizes `className` for a token\n *\n * onGetTokenClassName(tokenValue, tokenMeta)\n *\n * @ tokenValue\n * Type: any (string | number | object | customize data structure)\n * Description: The tokenValue build by `onBuildTokenValue`\n *\n * @ tokenMeta\n * Description: token's meta data\n * {\n * // A private key for render\n * key: string,\n *\n * // Specific the token is activated for `edit` or not\n * activated: boolean,\n *\n * // Customize data structure built by `onTokenValue Validate`\n * // Specific the token's validate status or errorMessage\n * error: any,\n * }\n *\n * @ return\n * Type: string\n * Description: The customizes className\n */\n onGetTokenClassName: PropTypes.func,\n\n /**\n * A callback function for getting displayable `label` for a token\n * Apply this to customize the token's content\n * For example, render token with `icon` or `Additional text`\n *\n * onGetTokenDisplayLabel(tokenValue, tokenMeta)\n *\n * @ tokenValue\n * Type: any (string | number | object | customize data structure)\n * Description: The tokenValue build by `onBuildTokenValue`\n *\n * @ tokenMeta\n * Description: token's meta data\n * {\n * // A private key for render\n * key: string,\n *\n * // Specific the token is activated for `edit` or not\n * activated: boolean,\n *\n * // Customize data structure built by `onTokenValue Validate`\n * // Specific the token's validate status or errorMessage\n * error: any,\n * }\n *\n * @ return\n * Type: string || react node\n * Description: The token's content.\n * By default, will apply `getDefaultTokenEditableValue`\n */\n onGetTokenDisplayLabel: PropTypes.func,\n\n /**\n * A callback function for render content of the delete button for a token\n * Apply this to customize the token's content of delete button\n * For example, replace the build-in x by Google font material-icons\n *\n * onRenderTokenDeleteButtonContent()\n *\n * @ return\n * Type: react node\n * Description: The content of the delete button of the token.\n * By default, TokenInput render a build-in x icon\n */\n onRenderTokenDeleteButtonContent: PropTypes.func,\n\n /**\n * A callback function for determine whether the token is inline editable.\n *\n * onIsTokenEditable(tokenValue, tokenMeta)\n *\n * @ tokenValue\n * Type: any (string | number | object | customize data structure)\n * Description: The tokenValue build by `onBuildTokenValue`\n *\n * @ tokenMeta\n * Description: token's meta data\n * {\n * // A private key for render\n * key: string,\n *\n * // Specific the token is activated for `edit` or not\n * activated: boolean,\n *\n * // Customize data structure built by `onTokenValue Validate`\n * // Specific the token's validate status or errorMessage\n * error: any,\n * }\n *\n * @ return\n * Type: boolean\n * Description: `true` if editable. `false` if not.\n */\n onIsTokenEditable: PropTypes.func,\n\n /**\n * A callback function for getting `string input value`\n * from `tokenValue` for the end-user to perform `edit`\n *\n * onGetTokenEditableValue(tokenValue)\n *\n * @ tokenValue\n * Type: any (string | number | object | customize data structure)\n * Description: The tokenValue build by `onBuildTokenValue`\n *\n * @ return\n * Type: string\n * Description: The value for end-user to `edit` in an input field\n */\n onGetTokenEditableValue: PropTypes.func,\n\n /**\n * A callback function for getting the error message from the customize error\n * The `customize error` is generate by `onTokenValueValidate`\n *\n * onGetTokenErrorMessage(tokenValue, tokenMeta)\n *\n * @ tokenValue\n * Type: any (string | number | object | customize data structure)\n * Description: The tokenValue build by `onBuildTokenValue`\n *\n * @ tokenMeta\n * Description: token's meta data\n * {\n * // A private key for render\n * key: string,\n *\n * // Specific the token is activated for `edit` or not\n * activated: boolean,\n *\n * // Customize data structure built by `onTokenValue Validate`\n * // Specific the token's validate status or errorMessage\n * error: any,\n * }\n *\n * @ return\n * Type: string | any\n * Description: The error message to describe an invalid token\n */\n onGetTokenErrorMessage: PropTypes.func,\n\n /**\n * A customize react functional component for rendering a token\n * Apply this to customize all token function.\n *\n * customizeTokenComponent={MyToken}\n */\n customizeTokenComponent: PropTypes.func,\n\n /**\n * [Beta; Might be change in the future version]\n * Current only apply to Token Create\n *\n * The config settings to control the specials keyDown event handler behavior.\n * Default setting as below.\n * specialKeyDown: {\n * onBackspace: 1,\n * onTab: 0,\n * onEnter: 1,\n * onEscape: 1,\n * },\n *\n * `0` means turn off (Took native browser behavior. TokenInput should NOT handle it).\n * `1` means apply TokenInput predefined event handler.\n *\n * Reference section below for Predefined event handlers.\n * `Predefined KeyDown Event Handlers`\n */\n specialKeyDown: PropTypes.object,\n};\n\nTokenInput.defaultProps = {\n className: '',\n readOnly: false,\n autoFocus: false,\n placeholder: '',\n\n // TokenCreator\n separators: DEFAULT_SEPARATORS,\n specialKeyDown: {\n onBackspace: 1,\n onTab: 0,\n onEnter: 1,\n onEscape: 1,\n },\n\n onBuildTokenValue: buildDefaultTokenValue,\n onInputValueChange: dummyFunction,\n onTokenValueValidate: dummyFunction,\n\n // FixMe: ReadOnly mode do not need onTokenValuesChange, but for others need\n onTokenValuesChange: dummyFunction,\n\n // Token\n onGetTokenClassName: dummyFunction,\n onGetTokenDisplayLabel: getDefaultTokenEditableValue,\n onIsTokenEditable: () => true,\n onGetTokenEditableValue: getDefaultTokenEditableValue,\n onGetTokenErrorMessage: getDefaultTokenErrorMessage,\n\n // TODO: Consider add more callback\n // onFocus\n // onBlur\n};\n\nexport default TokenInput;\n","import { useRef, useCallback } from 'react';\n\nfunction useTokenCreatorRef() {\n const tokenCreatorRef = useRef(null);\n\n const focusTokenCreator = useCallback(() => {\n // console.log('handleTokenCreatorFocus');\n if (tokenCreatorRef && tokenCreatorRef.current) {\n tokenCreatorRef.current.focus();\n }\n }, []);\n\n return {\n tokenCreatorRef,\n focusTokenCreator,\n };\n}\n\nexport default useTokenCreatorRef;\n","/**\n * Default function for TokenInput to\n * build default token value from user input value\n *\n * buildDefaultTokenValue(inputValue)\n *\n * @ inputValue\n * Type: string\n * Description: The user input value.\n * Which is `one item` of the `user input string` split by the `separators`\n * Example:\n * - Input string \"ABC, DEF\" and separators is `,`\n * - buildDefaultTokenValue will be called twice\n * buildDefaultTokenValue('ABC') and buildDefaultTokenValue('DEF')\n *\n * @ return\n * Type: string\n * Description: The default token value\n */\nconst buildDefaultTokenValue = (inputValue) => {\n return inputValue.trim();\n};\n\nexport default buildDefaultTokenValue;\n","/* eslint no-unused-vars: 0 */\n\n/**\n * Default function for get errorMessage\n * getDefaultTokenErrorMessage(tokenValue, tokenMeta)\n *\n * @ tokenValue\n * Type: any (string | number | object | customize data structure)\n * Description: The tokenValue build by `onBuildTokenValue`\n *\n * @ tokenMeta\n * Type: object\n * Description: The token meta\n *\n * @ return\n * Type: string\n * Description: The error message to describe an invalid token\n */\nconst getDefaultTokenErrorMessage = (tokenValue, tokenMeta) => {\n if (typeof tokenMeta.error === 'string') {\n return tokenMeta.error;\n }\n\n return undefined;\n};\n\nexport default getDefaultTokenErrorMessage;\n","import TokenInput from './TokenInput';\nimport { JS__TOKEN__DELETE_BUTTON__CLASS_NAME } from './constants';\n\nexport { JS__TOKEN__DELETE_BUTTON__CLASS_NAME };\n\nexport default TokenInput;\n"],"names":["root","factory","exports","module","require","define","amd","self","__WEBPACK_EXTERNAL_MODULE__698__","hasOwn","hasOwnProperty","classNames","classes","i","arguments","length","arg","argType","push","Array","isArray","inner","apply","toString","Object","prototype","key","call","join","default","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","props","propName","componentName","location","propFullName","secret","err","Error","name","getShim","isRequired","ReactPropTypes","array","bool","func","number","object","string","symbol","any","arrayOf","element","elementType","instanceOf","node","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","_extends","assign","target","source","_createClass","defineProperties","descriptor","enumerable","configurable","writable","defineProperty","Constructor","protoProps","staticProps","_react","_react2","_interopRequireDefault","_propTypes2","obj","__esModule","sizerStyle","position","top","left","visibility","height","overflow","whiteSpace","INPUT_PROPS_BLACKLIST","copyStyles","styles","style","fontSize","fontFamily","fontWeight","fontStyle","letterSpacing","textTransform","isIE","window","navigator","test","userAgent","generateId","Math","random","substr","undefined","AutosizeInput","_Component","instance","TypeError","_classCallCheck","this","_this","ReferenceError","_possibleConstructorReturn","__proto__","getPrototypeOf","inputRef","el","input","placeHolderSizerRef","placeHolderSizer","sizerRef","sizer","state","inputWidth","minWidth","inputId","id","prevId","subClass","superClass","create","constructor","value","setPrototypeOf","_inherits","mounted","copyInputStyles","updateInputWidth","prevProps","prevState","onAutosize","getComputedStyle","inputStyles","scrollWidth","newInputWidth","placeholder","placeholderIsMinWidth","max","type","extraWidth","parseInt","setState","focus","blur","select","injectStyles","createElement","dangerouslySetInnerHTML","__html","sizerValue","defaultValue","reduce","previousValue","currentValue","wrapperStyle","display","inputStyle","boxSizing","width","inputProps","keys","indexOf","_objectWithoutProperties","forEach","field","cleanInputProps","className","inputClassName","renderStyles","ref","Component","propTypes","onChange","defaultProps","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","n","getter","d","a","definition","o","get","prop","r","Symbol","toStringTag","keyDownEvent","actions","onBackspace","dummyFunction","onTab","onEnter","onEscape","keyCode","eventKey","keyDownEventPropsNormalizer","DEFAULT_SPECIAL_KEY_DOWN_SETTINGS","JS__TOKEN__DELETE_BUTTON__CLASS_NAME","handleKeyDown","onKey","predefinedHandler","specialKeyDown","inputInitValue","inputValue","onLastTokenDelete","handleInputValueUpdate","handleTokensCreate","handleBackspaceKeyDown","useCallback","handleTabKeyDown","preventDefault","handleEnterKeyDown","handleEscapeKeyDown","TokenCreator","forwardRef","autoFocus","onFocus","onBlur","separators","onInputValueChange","onPreprocess","onBuildTokenValue","onNewTokenValuesAppend","useState","setInputValue","splitPattens","useMemo","RegExp","newValue","inputString","trim","inputValues","split","filter","appendTokenValues","map","handleInputValueChange","e","newInputValue","lastChar","substring","usePredefinedKeyDownHandlers","keyDownHandlerProxy","handleBlur","handlePaste","pastedText","clipboardData","getData","onKeyDown","onPaste","displayName","role","DeleteButton","onRenderContent","isCustomizeContent","handleInlineEditClick","stopPropagation","Token","readOnly","tokenValue","tokenMeta","onGetClassName","onGetDisplayLabel","onRenderDeleteButtonContent","onIsEditable","onGetEditableValue","onGetErrorMessage","onEditStart","onEditEnd","onDelete","autosizeInputRef","useRef","activated","error","isEditable","handleEditStart","tokenEditableValue","useEffect","current","handleEditEnd","reset","isValueClear","newTokenValue","handleTokenClick","closest","token","tokenClassName","errorMessage","onClick","title","isTokenInputFocused","setIsTokenInputFocused","handleTokenInputFocus","handleTokenInputBlur","customizeError","tokenIndex","JSON","stringify","Date","now","tokenMetas","setTokenMetas","setTokenActivated","targetIndex","newTokenMetas","buildTokenMeta","tokenValues","onTokenValueValidate","useTokenMetas","hasInvalidToken","setHasInvalidToken","internalTokenValues","setInternalTokenValues","useLayoutEffect","hasInvalid","index","newTokenMeta","onTokenValuesChange","focusTokenCreator","handleTokenEditStart","handleTokenEditEnd","modifiedTokenValues","deleteToken","newTokenValues","splice","handleTokenDelete","handleLastTokenDelete","TokenInput","customizeTokenComponent","onGetTokenClassName","onGetTokenDisplayLabel","onRenderTokenDeleteButtonContent","onIsTokenEditable","onGetTokenEditableValue","onGetTokenErrorMessage","useTokenInputFocus","tokenCreatorRef","useTokenCreatorRef","useTokensUpdate","useTokenEdit","useTokenDelete","handleNewTokenValuesAppend","handleInputValuesPreprocess","processedValues","TokenComponent","container","getDefaultTokenEditableValue"],"sourceRoot":""} \ No newline at end of file diff --git a/package.json b/package.json index de53bd2..a3e482a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "react-customize-token-input", - "version": "1.4.2", + "version": "1.5.0", "description": "A react token (tag) input component. Allow customize data structure and Look & Feel", "main": "lib/index.js", "files": [ @@ -8,11 +8,12 @@ "lib" ], "scripts": { - "prepublish": "yarn run eslint && yarn run clean && yarn run build && yarn run build:examples", + "prepublish": "yarn run eslint && yarn run test && yarn run clean && yarn run build && yarn run build:examples", "build": "webpack", "build:examples": "cd examples; webpack", "clean": "rm -f {lib,dist}/*", - "eslint": "eslint --max-warnings 0 --ext .jsx,.js,.ts,.tsx examples src test", + "eslint": "eslint --max-warnings 0 --ext .jsx,.js examples src", + "test": "jest --coverage", "dev": "cd examples; webpack && webpack serve --hot --inline --host 0.0.0.0 --port 8000 --content-base ../docs" }, "husky": { @@ -59,6 +60,7 @@ "@babel/eslint-plugin": "^7.14.5", "@babel/preset-env": "^7.14.9", "@babel/preset-react": "^7.14.5", + "@testing-library/react-hooks": "^7.0.2", "babel-loader": "^8.2.2", "babel-plugin-transform-react-qa-classes": "^1.6.0", "css-loader": "^6.2.0", @@ -75,8 +77,10 @@ "eslint-webpack-plugin": "^3.0.1", "html-webpack-plugin": "^5.3.2", "husky": "^7.0.1", + "jest": "26.6.3", "lint-staged": "^11.1.1", "mini-css-extract-plugin": "^2.1.0", + "mockdate": "^3.0.5", "nib": "^1.1.2", "prettier": "^2.3.2", "react": "^16.10.2", diff --git a/setupTests.js b/setupTests.js index bc7df45..53cb801 100644 --- a/setupTests.js +++ b/setupTests.js @@ -1,35 +1,11 @@ -// TODO: Build Test -// import Enzyme from 'enzyme'; -// import Adapter from 'enzyme-adapter-react-16'; -// import { JSDOM } from 'jsdom'; - -// // React 16 Enzyme adapter -// Enzyme.configure({ adapter: new Adapter() }); - -// // Ignore `.styl` files -// require.extensions['.styl'] = () => {}; - -// // JSDOM -// const jsdom = new JSDOM(''); -// const { window } = jsdom; - -// const copyProps = (src, target) => { -// const props = Object.getOwnPropertyNames(src) -// .filter((prop) => typeof target[prop] === 'undefined') -// .reduce( -// (result, prop) => ({ -// ...result, -// [prop]: Object.getOwnPropertyDescriptor(src, prop), -// }), -// {} -// ); -// Object.defineProperties(target, props); -// }; - -// global.window = window; -// global.document = window.document; -// global.navigator = { -// userAgent: 'node.js', -// }; - -// copyProps(window, global); +/** + * Disable the ESLint `import/no-extraneous-dependencies` for import mockdate + * mockdate is only use for unit-test, + * so keep it in devDependencies + */ +import MockDate from 'mockdate'; // eslint-disable-line import/no-extraneous-dependencies + +/** + * Mock `Date` to change when "now" is for unit test + */ +MockDate.set('2021-01-02T03:04:05.000Z'); // 1609556645000 diff --git a/src/Token/Token.jsx b/src/Token/Token.jsx index d9ac509..c9193f4 100644 --- a/src/Token/Token.jsx +++ b/src/Token/Token.jsx @@ -29,6 +29,7 @@ const Token = ({ onGetClassName, onGetDisplayLabel, onRenderDeleteButtonContent, + onIsEditable, onGetEditableValue, onGetErrorMessage, onBuildTokenValue, @@ -39,6 +40,9 @@ const Token = ({ const autosizeInputRef = useRef(null); const [inputValue, setInputValue] = useState(DEFAULT_INPUT_INIT_VALUE); const { activated, error } = tokenMeta; + const isEditable = useMemo(() => { + return onIsEditable(tokenValue, tokenMeta); + }, [onIsEditable, tokenValue, tokenMeta]); const handleEditStart = useCallback(() => { const tokenEditableValue = onGetEditableValue(tokenValue, tokenMeta); @@ -92,9 +96,11 @@ const Token = ({ return; } - handleEditStart(); + if (isEditable) { + handleEditStart(); + } }, - [readOnly, onDelete, handleEditStart] + [readOnly, isEditable, onDelete, handleEditStart] ); const handleInputValueChange = useCallback( @@ -126,12 +132,21 @@ const Token = ({ onGetClassName(tokenValue, tokenMeta), styles.token, { + [styles['token--read-only']]: readOnly, + [styles['token--editable']]: isEditable && !readOnly, [styles['token--active']]: activated, [styles['token--error']]: error && !activated, - [styles['token--read-only']]: readOnly, } ); - }, [readOnly, error, activated, onGetClassName, tokenValue, tokenMeta]); + }, [ + onGetClassName, + readOnly, + isEditable, + activated, + error, + tokenValue, + tokenMeta, + ]); const errorMessage = useMemo(() => { return onGetErrorMessage(tokenValue, tokenMeta); @@ -188,6 +203,8 @@ Token.propTypes = { onGetDisplayLabel: PropTypes.func.isRequired, // Same as props `onRenderTokenDeleteButtonContent` of TokenInput onRenderDeleteButtonContent: PropTypes.func, + // Same as props `onIsTokenEditable` of TokenInput + onIsEditable: PropTypes.func.isRequired, // Same as props `onGetTokenEditableValue` of TokenInput onGetEditableValue: PropTypes.func.isRequired, // Same as props `onGetTokenErrorMessage` of TokenInput diff --git a/src/TokenInput.jsx b/src/TokenInput.jsx index 95b362f..19f74c1 100644 --- a/src/TokenInput.jsx +++ b/src/TokenInput.jsx @@ -10,6 +10,7 @@ import useTokensUpdate from './hooks/useTokensUpdate'; import useTokenEdit from './hooks/useTokenEdit'; import useTokenDelete from './hooks/useTokenDelete'; +import dummyFunction from './utils/dummyFunction'; import buildDefaultTokenValue from './utils/buildDefaultTokenValue'; import getDefaultTokenEditableValue from './utils/getDefaultTokenEditableValue'; import getDefaultTokenErrorMessage from './utils/getDefaultTokenErrorMessage'; @@ -33,6 +34,7 @@ const TokenInput = ({ onGetTokenClassName, onGetTokenDisplayLabel, onRenderTokenDeleteButtonContent, + onIsTokenEditable, onGetTokenEditableValue, onGetTokenErrorMessage, @@ -130,6 +132,7 @@ const TokenInput = ({ onGetClassName={onGetTokenClassName} onGetDisplayLabel={onGetTokenDisplayLabel} onRenderDeleteButtonContent={onRenderTokenDeleteButtonContent} + onIsEditable={onIsTokenEditable} onGetEditableValue={onGetTokenEditableValue} onGetErrorMessage={onGetTokenErrorMessage} onBuildTokenValue={onBuildTokenValue} @@ -368,6 +371,35 @@ TokenInput.propTypes = { */ onRenderTokenDeleteButtonContent: PropTypes.func, + /** + * A callback function for determine whether the token is inline editable. + * + * onIsTokenEditable(tokenValue, tokenMeta) + * + * @ tokenValue + * Type: any (string | number | object | customize data structure) + * Description: The tokenValue build by `onBuildTokenValue` + * + * @ tokenMeta + * Description: token's meta data + * { + * // A private key for render + * key: string, + * + * // Specific the token is activated for `edit` or not + * activated: boolean, + * + * // Customize data structure built by `onTokenValue Validate` + * // Specific the token's validate status or errorMessage + * error: any, + * } + * + * @ return + * Type: boolean + * Description: `true` if editable. `false` if not. + */ + onIsTokenEditable: PropTypes.func, + /** * A callback function for getting `string input value` * from `tokenValue` for the end-user to perform `edit` @@ -444,7 +476,6 @@ TokenInput.propTypes = { specialKeyDown: PropTypes.object, }; -const dummyFunc = () => {}; // Dummy function TokenInput.defaultProps = { className: '', readOnly: false, @@ -461,15 +492,16 @@ TokenInput.defaultProps = { }, onBuildTokenValue: buildDefaultTokenValue, - onInputValueChange: dummyFunc, - onTokenValueValidate: dummyFunc, + onInputValueChange: dummyFunction, + onTokenValueValidate: dummyFunction, // FixMe: ReadOnly mode do not need onTokenValuesChange, but for others need - onTokenValuesChange: dummyFunc, + onTokenValuesChange: dummyFunction, // Token - onGetTokenClassName: dummyFunc, + onGetTokenClassName: dummyFunction, onGetTokenDisplayLabel: getDefaultTokenEditableValue, + onIsTokenEditable: () => true, onGetTokenEditableValue: getDefaultTokenEditableValue, onGetTokenErrorMessage: getDefaultTokenErrorMessage, diff --git a/src/__fixtures__/inputValues.fixtures.js b/src/__fixtures__/inputValues.fixtures.js new file mode 100644 index 0000000..cbd1d61 --- /dev/null +++ b/src/__fixtures__/inputValues.fixtures.js @@ -0,0 +1,20 @@ +const MOCK_INPUT = [ + { + inputValue: 'testString', + expectTokenValue: 'testString', + }, + { + inputValue: ' testString ', + expectTokenValue: 'testString', + }, + { + inputValue: ' test String ', + expectTokenValue: 'test String', + }, + { + inputValue: '123', + expectTokenValue: '123', + }, +]; + +export default MOCK_INPUT; diff --git a/src/__fixtures__/tokenValues.fixtures.js b/src/__fixtures__/tokenValues.fixtures.js new file mode 100644 index 0000000..b9baf98 --- /dev/null +++ b/src/__fixtures__/tokenValues.fixtures.js @@ -0,0 +1,30 @@ +/** + * TokenInput default value type (string) + */ +const DEFAULT_VALUE_TYPE_DATA = { + tokenValues: ['hello world', 'Sunny', 'Cloudy', 'Rain'], + tokenMetas: [ + { + key: '"hello world"-1609556645000-0', + activated: false, + error: undefined, + }, + { + key: '"Sunny"-1609556645000-1', + activated: false, + error: undefined, + }, + { + key: '"Cloudy"-1609556645000-2', + activated: false, + error: undefined, + }, + { + key: '"Rain"-1609556645000-3', + activated: false, + error: undefined, + }, + ], +}; + +export default DEFAULT_VALUE_TYPE_DATA; diff --git a/src/__fixtures__/tokens.fixtures.js b/src/__fixtures__/tokens.fixtures.js new file mode 100644 index 0000000..0f84251 --- /dev/null +++ b/src/__fixtures__/tokens.fixtures.js @@ -0,0 +1,153 @@ +/** + * TokenInput default value type (string) + */ +export const DEFAULT_VALUE_TYPE = { + BASED: { + tokenValue: 'hello world', + tokenMeta: { + key: '"hello world"-1609556645000-0', + activated: false, + error: undefined, + }, + }, + + ACTIVATED: { + tokenValue: 'hello world', + tokenMeta: { + key: '"hello world"-1609556645000-0', + activated: true, + error: undefined, + }, + }, + + WITH_ERROR: { + tokenValue: 'hello world', + tokenMeta: { + key: '"hello world"-1609556645000-0', + activated: false, + error: 'This is an invalid token', + }, + }, + + ACTIVATED_WITH_ERROR: { + tokenValue: 'hello world', + tokenMeta: { + key: '"hello world"-1609556645000-0', + activated: true, + error: 'This is an invalid token', + }, + }, + + BOOLEAN_TYPE_ERROR: { + tokenValue: 'hello world', + tokenMeta: { + key: '"hello world"-1609556645000-0', + activated: false, + error: true, + }, + }, +}; + +/** + * Number value type + */ +export const NUMBER_VALUE_TYPE = { + BASED: { + tokenValue: 123, + tokenMeta: { + key: '123-1609556645000-0', + activated: false, + error: undefined, + }, + }, + + ACTIVATED: { + tokenValue: 123, + tokenMeta: { + key: '123-1609556645000-0', + activated: true, + error: undefined, + }, + }, + + WITH_ERROR: { + tokenValue: 123, + tokenMeta: { + key: '123-1609556645000-0', + activated: false, + error: 'This is an invalid token', + }, + }, + + ACTIVATED_WITH_ERROR: { + tokenValue: 123, + tokenMeta: { + key: '123-1609556645000-0', + activated: true, + error: 'This is an invalid token', + }, + }, +}; + +/** + * Object value type + */ +export const OBJECT_VALUE_TYPE = { + BASED: { + tokenValue: { + number: 123, + }, + tokenMeta: { + key: '{"number":123}-1609556645000-0', + activated: false, + error: undefined, + }, + }, + + ACTIVATED: { + tokenValue: { + number: 123, + }, + tokenMeta: { + key: '{"number":123}-1609556645000-0', + activated: true, + error: undefined, + }, + }, + + WITH_ERROR: { + tokenValue: { + number: 123, + }, + tokenMeta: { + key: '{"number":123}-1609556645000-0', + activated: false, + error: 'This is an invalid token', + }, + }, + + ACTIVATED_WITH_ERROR: { + tokenValue: { + number: 123, + }, + tokenMeta: { + key: '{"number":123}-1609556645000-0', + activated: true, + error: 'This is an invalid token', + }, + }, + + OBJECT_TYPE_ERROR: { + tokenValue: { + number: 123, + }, + tokenMeta: { + key: '{"number":123}-1609556645000-0', + activated: false, + error: { + reason: 'Not weather', + message: 'I am not weather', + }, + }, + }, +}; diff --git a/src/hooks/usePredefinedKeyDownHandlers.test.js b/src/hooks/usePredefinedKeyDownHandlers.test.js new file mode 100644 index 0000000..ce2e539 --- /dev/null +++ b/src/hooks/usePredefinedKeyDownHandlers.test.js @@ -0,0 +1,277 @@ +import { renderHook } from '@testing-library/react-hooks'; +import usePredefinedKeyDownHandlers from './usePredefinedKeyDownHandlers'; +import { DEFAULT_SPECIAL_KEY_DOWN_SETTINGS } from '../constants'; + +const INPUT_INIT_VALUE = 'INPUT_INIT_VALUE'; +const KEY_DOWN_EVENT = { key: 'the key', preventDefault: jest.fn() }; + +describe('usePredefinedKeyDownHandlers() default setting', () => { + it('should return `handleBackspaceKeyDown`, `handleTabKeyDown`, `handleEnterKeyDown` and `handleEscapeKeyDown`', () => { + const specialKeyDown = DEFAULT_SPECIAL_KEY_DOWN_SETTINGS; + const inputInitValue = INPUT_INIT_VALUE; + const inputValue = 'hello world'; + const onLastTokenDelete = jest.fn(); + const handleInputValueUpdate = jest.fn(); + const handleTokensCreate = jest.fn(); + + const { result } = renderHook(() => + usePredefinedKeyDownHandlers({ + specialKeyDown, + inputInitValue, + inputValue, + onLastTokenDelete, + handleInputValueUpdate, + handleTokensCreate, + }) + ); + + expect(typeof result.current.handleBackspaceKeyDown).toBe('function'); + expect(typeof result.current.handleTabKeyDown).toBe('function'); + expect(typeof result.current.handleEnterKeyDown).toBe('function'); + expect(typeof result.current.handleEscapeKeyDown).toBe('function'); + }); + + it('should return `handleBackspaceKeyDown`', () => { + const specialKeyDown = DEFAULT_SPECIAL_KEY_DOWN_SETTINGS; + const inputInitValue = INPUT_INIT_VALUE; + const inputValue = 'hello world'; + const emptyInputValue = ''; + const onLastTokenDelete = jest.fn(); + const handleInputValueUpdate = jest.fn(); + const handleTokensCreate = jest.fn(); + + const { result } = renderHook(() => + usePredefinedKeyDownHandlers({ + specialKeyDown, + inputInitValue, + inputValue, + onLastTokenDelete, + handleInputValueUpdate, + handleTokensCreate, + }) + ); + + expect(typeof result.current.handleBackspaceKeyDown).toBe('function'); + result.current.handleBackspaceKeyDown(KEY_DOWN_EVENT); + expect(onLastTokenDelete).not.toBeCalled(); + + const { result: emptyInputValueResult } = renderHook(() => + usePredefinedKeyDownHandlers({ + specialKeyDown, + inputInitValue, + inputValue: emptyInputValue, + onLastTokenDelete, + handleInputValueUpdate, + handleTokensCreate, + }) + ); + expect(typeof emptyInputValueResult.current.handleBackspaceKeyDown).toBe( + 'function' + ); + emptyInputValueResult.current.handleBackspaceKeyDown(KEY_DOWN_EVENT); + expect(onLastTokenDelete).toBeCalledTimes(1); + }); + + it('should return `handleTabKeyDown`', () => { + const specialKeyDown = DEFAULT_SPECIAL_KEY_DOWN_SETTINGS; + const inputInitValue = INPUT_INIT_VALUE; + const inputValue = 'hello world'; + const onLastTokenDelete = jest.fn(); + const handleInputValueUpdate = jest.fn(); + const handleTokensCreate = jest.fn(); + + const { result } = renderHook(() => + usePredefinedKeyDownHandlers({ + specialKeyDown, + inputInitValue, + inputValue, + onLastTokenDelete, + handleInputValueUpdate, + handleTokensCreate, + }) + ); + + expect(typeof result.current.handleTabKeyDown).toBe('function'); + result.current.handleTabKeyDown(KEY_DOWN_EVENT); + expect(KEY_DOWN_EVENT.preventDefault).not.toBeCalled(); + expect(handleTokensCreate).not.toBeCalled(); + }); + + it('should return `handleEnterKeyDown`', () => { + const specialKeyDown = DEFAULT_SPECIAL_KEY_DOWN_SETTINGS; + const inputInitValue = INPUT_INIT_VALUE; + const inputValue = 'hello world'; + const onLastTokenDelete = jest.fn(); + const handleInputValueUpdate = jest.fn(); + const handleTokensCreate = jest.fn(); + + const { result } = renderHook(() => + usePredefinedKeyDownHandlers({ + specialKeyDown, + inputInitValue, + inputValue, + onLastTokenDelete, + handleInputValueUpdate, + handleTokensCreate, + }) + ); + + expect(typeof result.current.handleEnterKeyDown).toBe('function'); + result.current.handleEnterKeyDown(KEY_DOWN_EVENT); + expect(handleTokensCreate).toBeCalledTimes(1); + expect(handleTokensCreate).toBeCalledWith(inputValue); + }); + + it('should return `handleEscapeKeyDown`', () => { + const specialKeyDown = DEFAULT_SPECIAL_KEY_DOWN_SETTINGS; + const inputInitValue = INPUT_INIT_VALUE; + const inputValue = 'hello world'; + const onLastTokenDelete = jest.fn(); + const handleInputValueUpdate = jest.fn(); + const handleTokensCreate = jest.fn(); + + const { result } = renderHook(() => + usePredefinedKeyDownHandlers({ + specialKeyDown, + inputInitValue, + inputValue, + onLastTokenDelete, + handleInputValueUpdate, + handleTokensCreate, + }) + ); + + expect(typeof result.current.handleEscapeKeyDown).toBe('function'); + result.current.handleEscapeKeyDown(KEY_DOWN_EVENT); + expect(handleInputValueUpdate).toBeCalledTimes(1); + expect(handleInputValueUpdate).toBeCalledWith(inputInitValue); + }); +}); + +describe('usePredefinedKeyDownHandlers().handleBackspaceKeyDown()', () => { + describe('Mode: onBackspace === 1', () => { + it('should return `handleBackspaceKeyDown`', () => { + const specialKeyDown = {}; + const inputInitValue = INPUT_INIT_VALUE; + const inputValue = 'hello world'; + const emptyInputValue = ''; + const onLastTokenDelete = jest.fn(); + const handleInputValueUpdate = jest.fn(); + const handleTokensCreate = jest.fn(); + + const { result } = renderHook(() => + usePredefinedKeyDownHandlers({ + specialKeyDown, + inputInitValue, + inputValue, + onLastTokenDelete, + handleInputValueUpdate, + handleTokensCreate, + }) + ); + + expect(typeof result.current.handleBackspaceKeyDown).toBe('function'); + result.current.handleBackspaceKeyDown(KEY_DOWN_EVENT); + expect(onLastTokenDelete).not.toBeCalled(); + + const { result: emptyInputValueResult } = renderHook(() => + usePredefinedKeyDownHandlers({ + specialKeyDown, + inputInitValue, + inputValue: emptyInputValue, + onLastTokenDelete, + handleInputValueUpdate, + handleTokensCreate, + }) + ); + expect(typeof emptyInputValueResult.current.handleBackspaceKeyDown).toBe( + 'function' + ); + emptyInputValueResult.current.handleBackspaceKeyDown(KEY_DOWN_EVENT); + expect(onLastTokenDelete).toBeCalledTimes(1); + }); + }); + + describe('Mode: onBackspace === 0', () => { + const specialKeyDown = { onBackspace: 0 }; + + it('should return `handleBackspaceKeyDown` as dummy', () => { + const inputInitValue = INPUT_INIT_VALUE; + const emptyInputValue = ''; + const onLastTokenDelete = jest.fn(); + const handleInputValueUpdate = jest.fn(); + const handleTokensCreate = jest.fn(); + + const { result } = renderHook(() => + usePredefinedKeyDownHandlers({ + specialKeyDown, + inputInitValue, + inputValue: emptyInputValue, + onLastTokenDelete, + handleInputValueUpdate, + handleTokensCreate, + }) + ); + expect(typeof result.current.handleBackspaceKeyDown).toBe('function'); + result.current.handleBackspaceKeyDown(KEY_DOWN_EVENT); + expect(onLastTokenDelete).not.toBeCalled(); + }); + }); +}); + +describe('usePredefinedKeyDownHandlers().handleTabKeyDown()', () => { + describe('Mode: onTab === 0', () => { + it('should return `handleTabKeyDown` as dummy', () => { + const specialKeyDown = DEFAULT_SPECIAL_KEY_DOWN_SETTINGS; + const inputInitValue = INPUT_INIT_VALUE; + const inputValue = 'hello world'; + const onLastTokenDelete = jest.fn(); + const handleInputValueUpdate = jest.fn(); + const handleTokensCreate = jest.fn(); + + const { result } = renderHook(() => + usePredefinedKeyDownHandlers({ + specialKeyDown, + inputInitValue, + inputValue, + onLastTokenDelete, + handleInputValueUpdate, + handleTokensCreate, + }) + ); + + expect(typeof result.current.handleTabKeyDown).toBe('function'); + result.current.handleTabKeyDown(KEY_DOWN_EVENT); + expect(KEY_DOWN_EVENT.preventDefault).not.toBeCalled(); + expect(handleTokensCreate).not.toBeCalled(); + }); + }); + + describe('Mode: onTab === 1', () => { + it('should return `handleTabKeyDown`', () => { + const specialKeyDown = { onTab: 1 }; + const inputInitValue = INPUT_INIT_VALUE; + const inputValue = 'hello world'; + const onLastTokenDelete = jest.fn(); + const handleInputValueUpdate = jest.fn(); + const handleTokensCreate = jest.fn(); + + const { result } = renderHook(() => + usePredefinedKeyDownHandlers({ + specialKeyDown, + inputInitValue, + inputValue, + onLastTokenDelete, + handleInputValueUpdate, + handleTokensCreate, + }) + ); + + expect(typeof result.current.handleTabKeyDown).toBe('function'); + result.current.handleTabKeyDown(KEY_DOWN_EVENT); + expect(KEY_DOWN_EVENT.preventDefault).toBeCalledTimes(1); + expect(handleTokensCreate).toBeCalledTimes(1); + expect(handleTokensCreate).toBeCalledWith(inputValue); + }); + }); +}); diff --git a/src/hooks/useTokenDelete.test.js b/src/hooks/useTokenDelete.test.js new file mode 100644 index 0000000..795b5e1 --- /dev/null +++ b/src/hooks/useTokenDelete.test.js @@ -0,0 +1,32 @@ +import { renderHook } from '@testing-library/react-hooks'; +import useTokenDelete from './useTokenDelete'; + +import DEFAULT_VALUE_TYPE_DATA from '../__fixtures__/tokenValues.fixtures'; + +describe('useTokenDelete() with default string type tokenValue', () => { + it('should return `handleTokenDelete`', () => { + const { tokenValues } = DEFAULT_VALUE_TYPE_DATA; + const onTokenValuesChange = jest.fn(); + const focusTokenCreator = jest.fn(); + const { result } = renderHook(() => + useTokenDelete({ + tokenValues, + onTokenValuesChange, + focusTokenCreator, + }) + ); + + expect(typeof result.current.handleTokenDelete).toBe('function'); + + // Delete the target one + const MOCK_TARGET_INDEX = 2; + result.current.handleTokenDelete(MOCK_TARGET_INDEX)(); + + const newTokenValues = [...tokenValues]; + newTokenValues.splice(MOCK_TARGET_INDEX, 1); + expect(onTokenValuesChange).toBeCalledTimes(1); + expect(onTokenValuesChange).toBeCalledWith(newTokenValues); + + expect(focusTokenCreator).toBeCalledTimes(1); + }); +}); diff --git a/src/hooks/useTokenEdit.test.js b/src/hooks/useTokenEdit.test.js new file mode 100644 index 0000000..83e263e --- /dev/null +++ b/src/hooks/useTokenEdit.test.js @@ -0,0 +1,116 @@ +import { renderHook } from '@testing-library/react-hooks'; +import useTokenEdit from './useTokenEdit'; + +import DEFAULT_VALUE_TYPE_DATA from '../__fixtures__/tokenValues.fixtures'; + +describe('useTokenEdit() with default string type tokenValue', () => { + describe('handleTokenEditStart()', () => { + it('should set target token `activated` and focus on inline Input of the the token', () => { + const { tokenValues } = DEFAULT_VALUE_TYPE_DATA; + const onTokenValuesChange = jest.fn(); + const setTokenActivated = jest.fn(); + const handleTokenInputFocus = jest.fn(); + const handleTokenInputBlur = jest.fn(); + const focusTokenCreator = jest.fn(); + const { result } = renderHook(() => + useTokenEdit({ + tokenValues, + onTokenValuesChange, + setTokenActivated, + handleTokenInputFocus, + handleTokenInputBlur, + focusTokenCreator, + }) + ); + + expect(typeof result.current.handleTokenEditStart).toBe('function'); + + // Target one to be edit + const MOCK_TARGET_INDEX = 2; + result.current.handleTokenEditStart(MOCK_TARGET_INDEX)(); + + expect(setTokenActivated).toBeCalledTimes(1); + expect(setTokenActivated).toBeCalledWith(MOCK_TARGET_INDEX, true); + + expect(handleTokenInputFocus).toBeCalledTimes(1); + + expect(onTokenValuesChange).not.toBeCalled(); + expect(handleTokenInputBlur).not.toBeCalled(); + expect(focusTokenCreator).not.toBeCalled(); + }); + }); + + describe('handleTokenEditEnd()', () => { + it('should set target token NOT `activated` and focus on tokenCreator', () => { + const { tokenValues } = DEFAULT_VALUE_TYPE_DATA; + const onTokenValuesChange = jest.fn(); + const setTokenActivated = jest.fn(); + const handleTokenInputFocus = jest.fn(); + const handleTokenInputBlur = jest.fn(); + const focusTokenCreator = jest.fn(); + const { result } = renderHook(() => + useTokenEdit({ + tokenValues, + onTokenValuesChange, + setTokenActivated, + handleTokenInputFocus, + handleTokenInputBlur, + focusTokenCreator, + }) + ); + + expect(typeof result.current.handleTokenEditEnd).toBe('function'); + + // Target one to be end edit + const MOCK_TARGET_INDEX = 2; + result.current.handleTokenEditEnd(MOCK_TARGET_INDEX)(); + + expect(setTokenActivated).toBeCalledTimes(1); + expect(setTokenActivated).toBeCalledWith(MOCK_TARGET_INDEX, false); + + expect(handleTokenInputBlur).toBeCalledTimes(1); + + expect(focusTokenCreator).toBeCalledTimes(1); + + expect(onTokenValuesChange).not.toBeCalled(); + }); + + it('should update tokenValues when `handleTokenEditEnd` provide new value', () => { + const { tokenValues } = DEFAULT_VALUE_TYPE_DATA; + const onTokenValuesChange = jest.fn(); + const setTokenActivated = jest.fn(); + const handleTokenInputFocus = jest.fn(); + const handleTokenInputBlur = jest.fn(); + const focusTokenCreator = jest.fn(); + const { result } = renderHook(() => + useTokenEdit({ + tokenValues, + onTokenValuesChange, + setTokenActivated, + handleTokenInputFocus, + handleTokenInputBlur, + focusTokenCreator, + }) + ); + + expect(typeof result.current.handleTokenEditEnd).toBe('function'); + + // Target one to be end edit + const MOCK_TARGET_INDEX = 2; + const NEW_TOKEN_VALUE = 'new value'; + result.current.handleTokenEditEnd(MOCK_TARGET_INDEX)(NEW_TOKEN_VALUE); + + expect(setTokenActivated).toBeCalledTimes(1); + expect(setTokenActivated).toBeCalledWith(MOCK_TARGET_INDEX, false); + + expect(handleTokenInputBlur).toBeCalledTimes(1); + + expect(focusTokenCreator).toBeCalledTimes(1); + + const modifiedTokenValues = [...tokenValues]; + modifiedTokenValues[MOCK_TARGET_INDEX] = NEW_TOKEN_VALUE; + expect(onTokenValuesChange).toBeCalledTimes(1); + expect(onTokenValuesChange).toBeCalledWith(modifiedTokenValues); + }); + }); +}); diff --git a/src/hooks/useTokenInputFocus.test.js b/src/hooks/useTokenInputFocus.test.js new file mode 100644 index 0000000..8c8cc6c --- /dev/null +++ b/src/hooks/useTokenInputFocus.test.js @@ -0,0 +1,37 @@ +import { renderHook, act } from '@testing-library/react-hooks'; +import useTokenInputFocus from './useTokenInputFocus'; + +describe('useTokenInputFocus()', () => { + it('should return `isTokenInputFocused`, `handleTokenInputFocus` and `handleTokenInputBlur`', () => { + const { result } = renderHook(() => useTokenInputFocus()); + + expect(result.current.isTokenInputFocused).toBe(false); + expect(typeof result.current.handleTokenInputFocus).toBe('function'); + expect(typeof result.current.handleTokenInputBlur).toBe('function'); + }); + + it('should return `handleTokenInputFocus`', () => { + const { result } = renderHook(() => useTokenInputFocus()); + + expect(result.current.isTokenInputFocused).toBe(false); + act(() => { + result.current.handleTokenInputFocus(); + }); + expect(result.current.isTokenInputFocused).toBe(true); + }); + + it('should return `handleTokenInputBlur`', () => { + const { result } = renderHook(() => useTokenInputFocus()); + + // init + act(() => { + result.current.handleTokenInputFocus(); + }); + + // handle blurred + act(() => { + result.current.handleTokenInputBlur(); + }); + expect(result.current.isTokenInputFocused).toBe(false); + }); +}); diff --git a/src/hooks/useTokenMetas.test.js b/src/hooks/useTokenMetas.test.js new file mode 100644 index 0000000..d3f14f8 --- /dev/null +++ b/src/hooks/useTokenMetas.test.js @@ -0,0 +1,58 @@ +import { renderHook, act } from '@testing-library/react-hooks'; +import useTokenMetas from './useTokenMetas'; + +import DEFAULT_VALUE_TYPE_DATA from '../__fixtures__/tokenValues.fixtures'; + +jest.mock('../utils/buildTokenMeta', () => jest.fn()); + +describe('useTokenMetas() with default string type tokenValue', () => { + it('should return `tokenMetas`, `setTokenMetas` and `setTokenActivated`', () => { + const { result } = renderHook(() => useTokenMetas()); + + expect(typeof result.current.buildTokenMeta).toBe('function'); + expect(result.current.tokenMetas).toEqual([]); + expect(typeof result.current.setTokenMetas).toBe('function'); + expect(typeof result.current.setTokenActivated).toBe('function'); + }); + + it('should return `setTokenMetas`', () => { + const { result } = renderHook(() => useTokenMetas()); + + expect(result.current.tokenMetas).toEqual([]); + + const { tokenMetas } = DEFAULT_VALUE_TYPE_DATA; + act(() => { + result.current.setTokenMetas(tokenMetas); + }); + expect(result.current.tokenMetas).toEqual(tokenMetas); + }); + + it('should return `setTokenActivated`', () => { + const { result } = renderHook(() => useTokenMetas()); + + // init + const { tokenMetas } = DEFAULT_VALUE_TYPE_DATA; + act(() => { + result.current.setTokenMetas(tokenMetas); + }); + + // Set the target one to activated + const MOCK_TARGET_INDEX = 1; + act(() => { + result.current.setTokenActivated(MOCK_TARGET_INDEX, true); + }); + + result.current.tokenMetas.forEach((tokenMeta, idx) => { + if (idx === MOCK_TARGET_INDEX) { + // Target tokenMeta should be activated + expect(tokenMeta).toEqual({ + ...tokenMetas[idx], + activated: true, + }); + } else { + // Not target tokenMeta should not change + expect(tokenMeta).toEqual(tokenMetas[idx]); + } + }); + }); +}); diff --git a/src/styles.styl b/src/styles.styl index a6dc622..f9d481f 100644 --- a/src/styles.styl +++ b/src/styles.styl @@ -29,8 +29,6 @@ border-color: #db3d44; } - transition: all 0.2s linear 0s; - .token-list { .token { float: left; @@ -58,23 +56,23 @@ color: #0096cc; background-color: #cceaf5; - &.token--error { - // color: #f75757; - color: #db3d44; - background-color: #f9b5b5; - } + cursor: default; &:hover { - cursor: pointer; background-color: #e6f4fc; + } - &.token--error { + &.token--error { + color: #db3d44; + background-color: #f9b5b5; + + &:hover { background-color: #ffdada; } + } - &.token--read-only { - cursor: default; - } + &.token--editable:hover { + cursor: pointer; } &.token--active { @@ -119,8 +117,6 @@ padding: 2px 8px; cursor: pointer; - // font-size: 14px; - // color: #222; opacity: 0.3; border-left: 1px solid #aaa; diff --git a/src/utils/buildDefaultTokenValue.test.js b/src/utils/buildDefaultTokenValue.test.js new file mode 100644 index 0000000..e659280 --- /dev/null +++ b/src/utils/buildDefaultTokenValue.test.js @@ -0,0 +1,12 @@ +import buildDefaultTokenValue from './buildDefaultTokenValue'; +import MOCK_INPUT from '../__fixtures__/inputValues.fixtures'; + +describe('buildDefaultTokenValue()', () => { + it('should return trimmed `inputValue`', () => { + MOCK_INPUT.forEach((testData) => { + expect(buildDefaultTokenValue(testData.inputValue)).toBe( + testData.expectTokenValue + ); + }); + }); +}); diff --git a/src/utils/buildTokenMeta.test.js b/src/utils/buildTokenMeta.test.js new file mode 100644 index 0000000..1e20ca6 --- /dev/null +++ b/src/utils/buildTokenMeta.test.js @@ -0,0 +1,71 @@ +import buildTokenMeta from './buildTokenMeta'; +import { + DEFAULT_VALUE_TYPE, + OBJECT_VALUE_TYPE, +} from '../__fixtures__/tokens.fixtures'; + +const MOCK_TOKEN_INDEX = 0; + +describe('buildTokenMeta() with default string type tokenValue', () => { + describe('token without error', () => { + const { tokenValue, tokenMeta } = DEFAULT_VALUE_TYPE.BASED; + + it('should return `tokenMeta`', () => { + expect( + buildTokenMeta(tokenMeta.error, tokenValue, MOCK_TOKEN_INDEX) + ).toEqual(tokenMeta); + }); + }); + + describe('token with error message', () => { + const { tokenValue, tokenMeta } = DEFAULT_VALUE_TYPE.WITH_ERROR; + + it('should return `tokenMeta`', () => { + expect( + buildTokenMeta(tokenMeta.error, tokenValue, MOCK_TOKEN_INDEX) + ).toEqual(tokenMeta); + }); + }); + + describe('token with customize error', () => { + const { tokenValue, tokenMeta } = DEFAULT_VALUE_TYPE.BOOLEAN_TYPE_ERROR; + + it('should return `tokenMeta`', () => { + expect( + buildTokenMeta(tokenMeta.error, tokenValue, MOCK_TOKEN_INDEX) + ).toEqual(tokenMeta); + }); + }); +}); + +describe('buildTokenMeta() with object type tokenValue', () => { + describe('token without error', () => { + const { tokenValue, tokenMeta } = OBJECT_VALUE_TYPE.BASED; + + it('should return `tokenMeta`', () => { + expect( + buildTokenMeta(tokenMeta.error, tokenValue, MOCK_TOKEN_INDEX) + ).toEqual(tokenMeta); + }); + }); + + describe('token with error message', () => { + const { tokenValue, tokenMeta } = OBJECT_VALUE_TYPE.WITH_ERROR; + + it('should return `tokenMeta`', () => { + expect( + buildTokenMeta(tokenMeta.error, tokenValue, MOCK_TOKEN_INDEX) + ).toEqual(tokenMeta); + }); + }); + + describe('token with customize error', () => { + const { tokenValue, tokenMeta } = OBJECT_VALUE_TYPE.OBJECT_TYPE_ERROR; + + it('should return `tokenMeta`', () => { + expect( + buildTokenMeta(tokenMeta.error, tokenValue, MOCK_TOKEN_INDEX) + ).toEqual(tokenMeta); + }); + }); +}); diff --git a/src/utils/dummyFunction.js b/src/utils/dummyFunction.js new file mode 100644 index 0000000..6984bc7 --- /dev/null +++ b/src/utils/dummyFunction.js @@ -0,0 +1,6 @@ +/** + * A dummy empty function + */ +const dummyFunction = () => {}; + +export default dummyFunction; diff --git a/src/utils/getDefaultTokenEditableValue.test.js b/src/utils/getDefaultTokenEditableValue.test.js new file mode 100644 index 0000000..0334755 --- /dev/null +++ b/src/utils/getDefaultTokenEditableValue.test.js @@ -0,0 +1,12 @@ +import getDefaultTokenEditableValue from './getDefaultTokenEditableValue'; +import { DEFAULT_VALUE_TYPE } from '../__fixtures__/tokens.fixtures'; + +describe('getDefaultTokenEditableValue()', () => { + it('should return `tokenValue` directly', () => { + const { tokenValue, tokenMeta } = DEFAULT_VALUE_TYPE.BASED; + + expect(getDefaultTokenEditableValue(tokenValue, tokenMeta)).toBe( + tokenValue + ); + }); +}); diff --git a/src/utils/getDefaultTokenErrorMessage.test.js b/src/utils/getDefaultTokenErrorMessage.test.js new file mode 100644 index 0000000..3cc731e --- /dev/null +++ b/src/utils/getDefaultTokenErrorMessage.test.js @@ -0,0 +1,24 @@ +import getDefaultTokenErrorMessage from './getDefaultTokenErrorMessage'; +import { DEFAULT_VALUE_TYPE } from '../__fixtures__/tokens.fixtures'; + +describe('getDefaultTokenErrorMessage()', () => { + describe('tokenMeta.error is string', () => { + const { tokenValue, tokenMeta } = DEFAULT_VALUE_TYPE.WITH_ERROR; + + it('should return tokenMeta.error`', () => { + expect(getDefaultTokenErrorMessage(tokenValue, tokenMeta)).toBe( + tokenMeta.error + ); + }); + }); + + describe('tokenMeta.error is NOT string', () => { + const { tokenValue, tokenMeta } = DEFAULT_VALUE_TYPE.BOOLEAN_TYPE_ERROR; + + it('should return tokenMeta.error`', () => { + expect( + getDefaultTokenErrorMessage(tokenValue, tokenMeta) + ).toBeUndefined(); + }); + }); +}); diff --git a/src/utils/keyDownHandlerProxy.js b/src/utils/keyDownHandlerProxy.js index c1b40a1..47f4c6c 100644 --- a/src/utils/keyDownHandlerProxy.js +++ b/src/utils/keyDownHandlerProxy.js @@ -1,4 +1,5 @@ import keyDownEventPropsNormalizer from './keyDownEventPropsNormalizer'; +import dummyFunction from './dummyFunction'; /** * Help function to proxy keyDown event to handler @@ -23,7 +24,6 @@ import keyDownEventPropsNormalizer from './keyDownEventPropsNormalizer'; * Type: function * Description: callback function when `Escape` keyDone */ -const dummyFunction = () => {}; const keyDownHandlerProxy = (keyDownEvent, actions) => { const { onBackspace = dummyFunction, diff --git a/src/utils/keyDownHandlerProxy.test.js b/src/utils/keyDownHandlerProxy.test.js new file mode 100644 index 0000000..ba151e4 --- /dev/null +++ b/src/utils/keyDownHandlerProxy.test.js @@ -0,0 +1,76 @@ +import keyDownHandlerProxy from './keyDownHandlerProxy'; +import keyDownEventPropsNormalizer from './keyDownEventPropsNormalizer'; + +jest.mock('./keyDownEventPropsNormalizer'); + +describe('keyDownHandlerProxy()', () => { + const MOCK_KEY_DONE_EVENT = { + key: 'MOCK', + }; + const MOCK_ACTIONS = { + onBackspace: jest.fn(), + onTab: jest.fn(), + onEnter: jest.fn(), + onEscape: jest.fn(), + }; + + describe('KeyDone on `Backspace`', () => { + beforeEach(() => { + keyDownEventPropsNormalizer.mockReturnValue({ + key: 'Backspace', + }); + }); + + it('should execute onBackspace()', () => { + keyDownHandlerProxy(MOCK_KEY_DONE_EVENT, MOCK_ACTIONS); + + expect(MOCK_ACTIONS.onBackspace).toBeCalledWith(MOCK_KEY_DONE_EVENT); + expect(MOCK_ACTIONS.onBackspace).toBeCalledTimes(1); + }); + }); + + describe('KeyDone on `Tab`', () => { + beforeEach(() => { + keyDownEventPropsNormalizer.mockReturnValue({ + key: 'Tab', + }); + }); + + it('should execute onTab()', () => { + keyDownHandlerProxy(MOCK_KEY_DONE_EVENT, MOCK_ACTIONS); + + expect(MOCK_ACTIONS.onTab).toBeCalledWith(MOCK_KEY_DONE_EVENT); + expect(MOCK_ACTIONS.onTab).toBeCalledTimes(1); + }); + }); + + describe('KeyDone on `Enter`', () => { + beforeEach(() => { + keyDownEventPropsNormalizer.mockReturnValue({ + key: 'Enter', + }); + }); + + it('should execute onEnter()', () => { + keyDownHandlerProxy(MOCK_KEY_DONE_EVENT, MOCK_ACTIONS); + + expect(MOCK_ACTIONS.onEnter).toBeCalledWith(MOCK_KEY_DONE_EVENT); + expect(MOCK_ACTIONS.onEnter).toBeCalledTimes(1); + }); + }); + + describe('KeyDone on `Escape`', () => { + beforeEach(() => { + keyDownEventPropsNormalizer.mockReturnValue({ + key: 'Escape', + }); + }); + + it('should execute onEnter()', () => { + keyDownHandlerProxy(MOCK_KEY_DONE_EVENT, MOCK_ACTIONS); + + expect(MOCK_ACTIONS.onEscape).toBeCalledWith(MOCK_KEY_DONE_EVENT); + expect(MOCK_ACTIONS.onEscape).toBeCalledTimes(1); + }); + }); +}); diff --git a/test/index.js b/test/index.js deleted file mode 100644 index 7d17199..0000000 --- a/test/index.js +++ /dev/null @@ -1,2 +0,0 @@ -// TODO: Build tests -// import '../setupTests'; diff --git a/webpack.config.js b/webpack.config.js index cf75ff7..75ff0f0 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -59,7 +59,7 @@ module.exports = { // Process JS with Babel { test: /\.(js|jsx)?$/, - exclude: /node_modules/, + exclude: /(node_modules|coverage)/, use: { loader: 'babel-loader', }, diff --git a/yarn.lock b/yarn.lock index 4869aed..7817044 100644 --- a/yarn.lock +++ b/yarn.lock @@ -49,6 +49,27 @@ semver "^6.3.0" source-map "^0.5.0" +"@babel/core@^7.1.0", "@babel/core@^7.7.5": + version "7.15.5" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.15.5.tgz#f8ed9ace730722544609f90c9bb49162dc3bf5b9" + integrity sha512-pYgXxiwAgQpgM1bNkZsDEq85f0ggXMA5L7c+o3tskGMh2BunCI9QUwB9Z4jpvXUOuMdyGKiGKQiRe11VS6Jzvg== + dependencies: + "@babel/code-frame" "^7.14.5" + "@babel/generator" "^7.15.4" + "@babel/helper-compilation-targets" "^7.15.4" + "@babel/helper-module-transforms" "^7.15.4" + "@babel/helpers" "^7.15.4" + "@babel/parser" "^7.15.5" + "@babel/template" "^7.15.4" + "@babel/traverse" "^7.15.4" + "@babel/types" "^7.15.4" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.1.2" + semver "^6.3.0" + source-map "^0.5.0" + "@babel/eslint-parser@^7.14.9": version "7.15.0" resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.15.0.tgz#b54f06e04d0e93aebcba99f89251e3bf0ee39f21" @@ -74,6 +95,15 @@ jsesc "^2.5.1" source-map "^0.5.0" +"@babel/generator@^7.15.4": + version "7.15.4" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.15.4.tgz#85acb159a267ca6324f9793986991ee2022a05b0" + integrity sha512-d3itta0tu+UayjEORPNz6e1T3FtvWlP5N4V5M+lhp/CxT4oAA7/NcScnpRyspUMLK6tu9MNHmQHxRykuN2R7hw== + dependencies: + "@babel/types" "^7.15.4" + jsesc "^2.5.1" + source-map "^0.5.0" + "@babel/helper-annotate-as-pure@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.14.5.tgz#7bf478ec3b71726d56a8ca5775b046fc29879e61" @@ -99,6 +129,16 @@ browserslist "^4.16.6" semver "^6.3.0" +"@babel/helper-compilation-targets@^7.15.4": + version "7.15.4" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.4.tgz#cf6d94f30fbefc139123e27dd6b02f65aeedb7b9" + integrity sha512-rMWPCirulnPSe4d+gwdWXLfAXTTBj8M3guAf5xFQJ0nvFY7tfNAFnWdqaHegHlgDZOCT4qvhF3BYlSJag8yhqQ== + dependencies: + "@babel/compat-data" "^7.15.0" + "@babel/helper-validator-option" "^7.14.5" + browserslist "^4.16.6" + semver "^6.3.0" + "@babel/helper-create-class-features-plugin@^7.14.5": version "7.15.0" resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.15.0.tgz#c9a137a4d137b2d0e2c649acf536d7ba1a76c0f7" @@ -149,6 +189,15 @@ "@babel/template" "^7.14.5" "@babel/types" "^7.14.5" +"@babel/helper-function-name@^7.15.4": + version "7.15.4" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz#845744dafc4381a4a5fb6afa6c3d36f98a787ebc" + integrity sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw== + dependencies: + "@babel/helper-get-function-arity" "^7.15.4" + "@babel/template" "^7.15.4" + "@babel/types" "^7.15.4" + "@babel/helper-get-function-arity@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz#25fbfa579b0937eee1f3b805ece4ce398c431815" @@ -156,6 +205,13 @@ dependencies: "@babel/types" "^7.14.5" +"@babel/helper-get-function-arity@^7.15.4": + version "7.15.4" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz#098818934a137fce78b536a3e015864be1e2879b" + integrity sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA== + dependencies: + "@babel/types" "^7.15.4" + "@babel/helper-hoist-variables@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.14.5.tgz#e0dd27c33a78e577d7c8884916a3e7ef1f7c7f8d" @@ -163,6 +219,13 @@ dependencies: "@babel/types" "^7.14.5" +"@babel/helper-hoist-variables@^7.15.4": + version "7.15.4" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz#09993a3259c0e918f99d104261dfdfc033f178df" + integrity sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA== + dependencies: + "@babel/types" "^7.15.4" + "@babel/helper-member-expression-to-functions@^7.15.0": version "7.15.0" resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.0.tgz#0ddaf5299c8179f27f37327936553e9bba60990b" @@ -170,6 +233,13 @@ dependencies: "@babel/types" "^7.15.0" +"@babel/helper-member-expression-to-functions@^7.15.4": + version "7.15.4" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz#bfd34dc9bba9824a4658b0317ec2fd571a51e6ef" + integrity sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA== + dependencies: + "@babel/types" "^7.15.4" + "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz#6d1a44df6a38c957aa7c312da076429f11b422f3" @@ -177,6 +247,13 @@ dependencies: "@babel/types" "^7.14.5" +"@babel/helper-module-imports@^7.15.4": + version "7.15.4" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz#e18007d230632dea19b47853b984476e7b4e103f" + integrity sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA== + dependencies: + "@babel/types" "^7.15.4" + "@babel/helper-module-transforms@^7.14.5", "@babel/helper-module-transforms@^7.15.0": version "7.15.0" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.15.0.tgz#679275581ea056373eddbe360e1419ef23783b08" @@ -191,6 +268,20 @@ "@babel/traverse" "^7.15.0" "@babel/types" "^7.15.0" +"@babel/helper-module-transforms@^7.15.4": + version "7.15.4" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.15.4.tgz#962cc629a7f7f9a082dd62d0307fa75fe8788d7c" + integrity sha512-9fHHSGE9zTC++KuXLZcB5FKgvlV83Ox+NLUmQTawovwlJ85+QMhk1CnVk406CQVj97LaWod6KVjl2Sfgw9Aktw== + dependencies: + "@babel/helper-module-imports" "^7.15.4" + "@babel/helper-replace-supers" "^7.15.4" + "@babel/helper-simple-access" "^7.15.4" + "@babel/helper-split-export-declaration" "^7.15.4" + "@babel/helper-validator-identifier" "^7.14.9" + "@babel/template" "^7.15.4" + "@babel/traverse" "^7.15.4" + "@babel/types" "^7.15.4" + "@babel/helper-optimise-call-expression@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.14.5.tgz#f27395a8619e0665b3f0364cddb41c25d71b499c" @@ -198,6 +289,13 @@ dependencies: "@babel/types" "^7.14.5" +"@babel/helper-optimise-call-expression@^7.15.4": + version "7.15.4" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz#f310a5121a3b9cc52d9ab19122bd729822dee171" + integrity sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw== + dependencies: + "@babel/types" "^7.15.4" + "@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz#5ac822ce97eec46741ab70a517971e443a70c5a9" @@ -222,6 +320,16 @@ "@babel/traverse" "^7.15.0" "@babel/types" "^7.15.0" +"@babel/helper-replace-supers@^7.15.4": + version "7.15.4" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz#52a8ab26ba918c7f6dee28628b07071ac7b7347a" + integrity sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.15.4" + "@babel/helper-optimise-call-expression" "^7.15.4" + "@babel/traverse" "^7.15.4" + "@babel/types" "^7.15.4" + "@babel/helper-simple-access@^7.14.8": version "7.14.8" resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.14.8.tgz#82e1fec0644a7e775c74d305f212c39f8fe73924" @@ -229,6 +337,13 @@ dependencies: "@babel/types" "^7.14.8" +"@babel/helper-simple-access@^7.15.4": + version "7.15.4" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz#ac368905abf1de8e9781434b635d8f8674bcc13b" + integrity sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg== + dependencies: + "@babel/types" "^7.15.4" + "@babel/helper-skip-transparent-expression-wrappers@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.14.5.tgz#96f486ac050ca9f44b009fbe5b7d394cab3a0ee4" @@ -243,6 +358,13 @@ dependencies: "@babel/types" "^7.14.5" +"@babel/helper-split-export-declaration@^7.15.4": + version "7.15.4" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz#aecab92dcdbef6a10aa3b62ab204b085f776e257" + integrity sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw== + dependencies: + "@babel/types" "^7.15.4" + "@babel/helper-validator-identifier@^7.14.5", "@babel/helper-validator-identifier@^7.14.9": version "7.14.9" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz#6654d171b2024f6d8ee151bf2509699919131d48" @@ -272,6 +394,15 @@ "@babel/traverse" "^7.14.8" "@babel/types" "^7.14.8" +"@babel/helpers@^7.15.4": + version "7.15.4" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.15.4.tgz#5f40f02050a3027121a3cf48d497c05c555eaf43" + integrity sha512-V45u6dqEJ3w2rlryYYXf6i9rQ5YMNu4FLS6ngs8ikblhu2VdR1AqAd6aJjBzmf2Qzh6KOLqKHxEN9+TFbAkAVQ== + dependencies: + "@babel/template" "^7.15.4" + "@babel/traverse" "^7.15.4" + "@babel/types" "^7.15.4" + "@babel/highlight@^7.10.4", "@babel/highlight@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.5.tgz#6861a52f03966405001f6aa534a01a24d99e8cd9" @@ -281,6 +412,11 @@ chalk "^2.0.0" js-tokens "^4.0.0" +"@babel/parser@^7.1.0", "@babel/parser@^7.15.4", "@babel/parser@^7.15.5": + version "7.15.6" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.15.6.tgz#043b9aa3c303c0722e5377fef9197f4cf1796549" + integrity sha512-S/TSCcsRuCkmpUuoWijua0Snt+f3ewU/8spLo+4AXJCZfT0bVCzLD5MuOKdrx0mlAptbKzn5AdgEIIKXxXkz9Q== + "@babel/parser@^7.14.5", "@babel/parser@^7.15.0": version "7.15.2" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.15.2.tgz#08d4ffcf90d211bf77e7cc7154c6f02d468d2b1d" @@ -430,7 +566,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-class-properties@^7.12.13": +"@babel/plugin-syntax-bigint@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" + integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-class-properties@^7.12.13", "@babel/plugin-syntax-class-properties@^7.8.3": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== @@ -458,6 +601,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" +"@babel/plugin-syntax-import-meta@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" + integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-json-strings@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" @@ -472,7 +622,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-logical-assignment-operators@^7.10.4": +"@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== @@ -486,7 +636,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-numeric-separator@^7.10.4": +"@babel/plugin-syntax-numeric-separator@^7.10.4", "@babel/plugin-syntax-numeric-separator@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== @@ -521,7 +671,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-top-level-await@^7.14.5": +"@babel/plugin-syntax-top-level-await@^7.14.5", "@babel/plugin-syntax-top-level-await@^7.8.3": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== @@ -926,6 +1076,13 @@ dependencies: regenerator-runtime "^0.13.4" +"@babel/runtime@^7.12.5": + version "7.15.4" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.15.4.tgz#fd17d16bfdf878e6dd02d19753a39fa8a8d9c84a" + integrity sha512-99catp6bHCaxr4sJ/DbTGgHS4+Rs2RVd2g7iOap6SLGPDknRK9ztKNsE/Fg6QhSeh1FGE5f6gHGQmvvn3I3xhw== + dependencies: + regenerator-runtime "^0.13.4" + "@babel/template@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.14.5.tgz#a9bc9d8b33354ff6e55a9c60d1109200a68974f4" @@ -935,6 +1092,30 @@ "@babel/parser" "^7.14.5" "@babel/types" "^7.14.5" +"@babel/template@^7.15.4", "@babel/template@^7.3.3": + version "7.15.4" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.15.4.tgz#51898d35dcf3faa670c4ee6afcfd517ee139f194" + integrity sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg== + dependencies: + "@babel/code-frame" "^7.14.5" + "@babel/parser" "^7.15.4" + "@babel/types" "^7.15.4" + +"@babel/traverse@^7.1.0", "@babel/traverse@^7.15.4": + version "7.15.4" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.15.4.tgz#ff8510367a144bfbff552d9e18e28f3e2889c22d" + integrity sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA== + dependencies: + "@babel/code-frame" "^7.14.5" + "@babel/generator" "^7.15.4" + "@babel/helper-function-name" "^7.15.4" + "@babel/helper-hoist-variables" "^7.15.4" + "@babel/helper-split-export-declaration" "^7.15.4" + "@babel/parser" "^7.15.4" + "@babel/types" "^7.15.4" + debug "^4.1.0" + globals "^11.1.0" + "@babel/traverse@^7.13.0", "@babel/traverse@^7.14.5", "@babel/traverse@^7.14.8", "@babel/traverse@^7.15.0": version "7.15.0" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.15.0.tgz#4cca838fd1b2a03283c1f38e141f639d60b3fc98" @@ -950,6 +1131,14 @@ debug "^4.1.0" globals "^11.1.0" +"@babel/types@^7.0.0", "@babel/types@^7.15.4", "@babel/types@^7.3.0", "@babel/types@^7.3.3": + version "7.15.6" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.15.6.tgz#99abdc48218b2881c058dd0a7ab05b99c9be758f" + integrity sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig== + dependencies: + "@babel/helper-validator-identifier" "^7.14.9" + to-fast-properties "^2.0.0" + "@babel/types@^7.14.5", "@babel/types@^7.14.8", "@babel/types@^7.14.9", "@babel/types@^7.15.0", "@babel/types@^7.4.4": version "7.15.0" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.15.0.tgz#61af11f2286c4e9c69ca8deb5f4375a73c72dcbd" @@ -958,6 +1147,19 @@ "@babel/helper-validator-identifier" "^7.14.9" to-fast-properties "^2.0.0" +"@bcoe/v8-coverage@^0.2.3": + version "0.2.3" + resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" + integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== + +"@cnakazawa/watch@^1.0.3": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.4.tgz#f864ae85004d0fcab6f50be9141c4da368d1656a" + integrity sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ== + dependencies: + exec-sh "^0.3.2" + minimist "^1.2.0" + "@discoveryjs/json-ext@^0.5.0": version "0.5.3" resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.3.tgz#90420f9f9c6d3987f176a19a7d8e764271a2f55d" @@ -992,6 +1194,193 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz#87de7af9c231826fdd68ac7258f77c429e0e5fcf" integrity sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w== +"@istanbuljs/load-nyc-config@^1.0.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" + integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== + dependencies: + camelcase "^5.3.1" + find-up "^4.1.0" + get-package-type "^0.1.0" + js-yaml "^3.13.1" + resolve-from "^5.0.0" + +"@istanbuljs/schema@^0.1.2": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" + integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== + +"@jest/console@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-26.6.2.tgz#4e04bc464014358b03ab4937805ee36a0aeb98f2" + integrity sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g== + dependencies: + "@jest/types" "^26.6.2" + "@types/node" "*" + chalk "^4.0.0" + jest-message-util "^26.6.2" + jest-util "^26.6.2" + slash "^3.0.0" + +"@jest/core@^26.6.3": + version "26.6.3" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-26.6.3.tgz#7639fcb3833d748a4656ada54bde193051e45fad" + integrity sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw== + dependencies: + "@jest/console" "^26.6.2" + "@jest/reporters" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/transform" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + exit "^0.1.2" + graceful-fs "^4.2.4" + jest-changed-files "^26.6.2" + jest-config "^26.6.3" + jest-haste-map "^26.6.2" + jest-message-util "^26.6.2" + jest-regex-util "^26.0.0" + jest-resolve "^26.6.2" + jest-resolve-dependencies "^26.6.3" + jest-runner "^26.6.3" + jest-runtime "^26.6.3" + jest-snapshot "^26.6.2" + jest-util "^26.6.2" + jest-validate "^26.6.2" + jest-watcher "^26.6.2" + micromatch "^4.0.2" + p-each-series "^2.1.0" + rimraf "^3.0.0" + slash "^3.0.0" + strip-ansi "^6.0.0" + +"@jest/environment@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-26.6.2.tgz#ba364cc72e221e79cc8f0a99555bf5d7577cf92c" + integrity sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA== + dependencies: + "@jest/fake-timers" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + jest-mock "^26.6.2" + +"@jest/fake-timers@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-26.6.2.tgz#459c329bcf70cee4af4d7e3f3e67848123535aad" + integrity sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA== + dependencies: + "@jest/types" "^26.6.2" + "@sinonjs/fake-timers" "^6.0.1" + "@types/node" "*" + jest-message-util "^26.6.2" + jest-mock "^26.6.2" + jest-util "^26.6.2" + +"@jest/globals@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-26.6.2.tgz#5b613b78a1aa2655ae908eba638cc96a20df720a" + integrity sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA== + dependencies: + "@jest/environment" "^26.6.2" + "@jest/types" "^26.6.2" + expect "^26.6.2" + +"@jest/reporters@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-26.6.2.tgz#1f518b99637a5f18307bd3ecf9275f6882a667f6" + integrity sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw== + dependencies: + "@bcoe/v8-coverage" "^0.2.3" + "@jest/console" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/transform" "^26.6.2" + "@jest/types" "^26.6.2" + chalk "^4.0.0" + collect-v8-coverage "^1.0.0" + exit "^0.1.2" + glob "^7.1.2" + graceful-fs "^4.2.4" + istanbul-lib-coverage "^3.0.0" + istanbul-lib-instrument "^4.0.3" + istanbul-lib-report "^3.0.0" + istanbul-lib-source-maps "^4.0.0" + istanbul-reports "^3.0.2" + jest-haste-map "^26.6.2" + jest-resolve "^26.6.2" + jest-util "^26.6.2" + jest-worker "^26.6.2" + slash "^3.0.0" + source-map "^0.6.0" + string-length "^4.0.1" + terminal-link "^2.0.0" + v8-to-istanbul "^7.0.0" + optionalDependencies: + node-notifier "^8.0.0" + +"@jest/source-map@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-26.6.2.tgz#29af5e1e2e324cafccc936f218309f54ab69d535" + integrity sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA== + dependencies: + callsites "^3.0.0" + graceful-fs "^4.2.4" + source-map "^0.6.0" + +"@jest/test-result@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-26.6.2.tgz#55da58b62df134576cc95476efa5f7949e3f5f18" + integrity sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ== + dependencies: + "@jest/console" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/istanbul-lib-coverage" "^2.0.0" + collect-v8-coverage "^1.0.0" + +"@jest/test-sequencer@^26.6.3": + version "26.6.3" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-26.6.3.tgz#98e8a45100863886d074205e8ffdc5a7eb582b17" + integrity sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw== + dependencies: + "@jest/test-result" "^26.6.2" + graceful-fs "^4.2.4" + jest-haste-map "^26.6.2" + jest-runner "^26.6.3" + jest-runtime "^26.6.3" + +"@jest/transform@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-26.6.2.tgz#5ac57c5fa1ad17b2aae83e73e45813894dcf2e4b" + integrity sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA== + dependencies: + "@babel/core" "^7.1.0" + "@jest/types" "^26.6.2" + babel-plugin-istanbul "^6.0.0" + chalk "^4.0.0" + convert-source-map "^1.4.0" + fast-json-stable-stringify "^2.0.0" + graceful-fs "^4.2.4" + jest-haste-map "^26.6.2" + jest-regex-util "^26.0.0" + jest-util "^26.6.2" + micromatch "^4.0.2" + pirates "^4.0.1" + slash "^3.0.0" + source-map "^0.6.1" + write-file-atomic "^3.0.0" + +"@jest/types@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.6.2.tgz#bef5a532030e1d88a2f5a6d933f84e97226ed48e" + integrity sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^15.0.0" + chalk "^4.0.0" + "@mrmlnc/readdir-enhanced@^2.2.1": version "2.2.1" resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" @@ -1026,6 +1415,20 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" +"@sinonjs/commons@^1.7.0": + version "1.8.3" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.3.tgz#3802ddd21a50a949b6721ddd72da36e67e7f1b2d" + integrity sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ== + dependencies: + type-detect "4.0.8" + +"@sinonjs/fake-timers@^6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz#293674fccb3262ac782c7aadfdeca86b10c75c40" + integrity sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA== + dependencies: + "@sinonjs/commons" "^1.7.0" + "@stylelint/postcss-css-in-js@^0.37.2": version "0.37.2" resolved "https://registry.yarnpkg.com/@stylelint/postcss-css-in-js/-/postcss-css-in-js-0.37.2.tgz#7e5a84ad181f4234a2480803422a47b8749af3d2" @@ -1041,11 +1444,60 @@ remark "^13.0.0" unist-util-find-all-after "^3.0.2" +"@testing-library/react-hooks@^7.0.2": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@testing-library/react-hooks/-/react-hooks-7.0.2.tgz#3388d07f562d91e7f2431a4a21b5186062ecfee0" + integrity sha512-dYxpz8u9m4q1TuzfcUApqi8iFfR6R0FaMbr2hjZJy1uC8z+bO/K4v8Gs9eogGKYQop7QsrBTFkv/BCF7MzD2Cg== + dependencies: + "@babel/runtime" "^7.12.5" + "@types/react" ">=16.9.0" + "@types/react-dom" ">=16.9.0" + "@types/react-test-renderer" ">=16.9.0" + react-error-boundary "^3.1.0" + +"@tootallnate/once@1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" + integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== + "@trysound/sax@0.1.1": version "0.1.1" resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.1.1.tgz#3348564048e7a2d7398c935d466c0414ebb6a669" integrity sha512-Z6DoceYb/1xSg5+e+ZlPZ9v0N16ZvZ+wYMraFue4HYrE4ttONKtsvruIRf6t9TBR0YvSOfi1hUU0fJfBLCDYow== +"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.7": + version "7.1.16" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.16.tgz#bc12c74b7d65e82d29876b5d0baf5c625ac58702" + integrity sha512-EAEHtisTMM+KaKwfWdC3oyllIqswlznXCIVCt7/oRNrh+DhgT4UEBNC/jlADNjvw7UnfbcdkGQcPVZ1xYiLcrQ== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + "@types/babel__generator" "*" + "@types/babel__template" "*" + "@types/babel__traverse" "*" + +"@types/babel__generator@*": + version "7.6.3" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.3.tgz#f456b4b2ce79137f768aa130d2423d2f0ccfaba5" + integrity sha512-/GWCmzJWqV7diQW54smJZzWbSFf4QYtF71WCKhcx6Ru/tFyQIY2eiiITcCAeuPbNSvT9YCGkVMqqvSk2Z0mXiA== + dependencies: + "@babel/types" "^7.0.0" + +"@types/babel__template@*": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.1.tgz#3d1a48fd9d6c0edfd56f2ff578daed48f36c8969" + integrity sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + +"@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.14.2.tgz#ffcd470bbb3f8bf30481678fb5502278ca833a43" + integrity sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA== + dependencies: + "@babel/types" "^7.3.0" + "@types/eslint-scope@^3.7.0": version "3.7.1" resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.1.tgz#8dc390a7b4f9dd9f1284629efce982e41612116e" @@ -1075,11 +1527,37 @@ "@types/minimatch" "*" "@types/node" "*" +"@types/graceful-fs@^4.1.2": + version "4.1.5" + resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.5.tgz#21ffba0d98da4350db64891f92a9e5db3cdb4e15" + integrity sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw== + dependencies: + "@types/node" "*" + "@types/html-minifier-terser@^5.0.0": version "5.1.2" resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-5.1.2.tgz#693b316ad323ea97eed6b38ed1a3cc02b1672b57" integrity sha512-h4lTMgMJctJybDp8CQrxTUiiYmedihHWkjnF/8Pxseu2S6Nlfcy8kwboQ8yejh456rP2yWoEVm1sS/FVsfM48w== +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz#4ba8ddb720221f432e443bd5f9117fd22cfd4762" + integrity sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw== + +"@types/istanbul-lib-report@*": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" + integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== + dependencies: + "@types/istanbul-lib-coverage" "*" + +"@types/istanbul-reports@^3.0.0": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz#9153fe98bba2bd565a63add9436d6f0d7f8468ff" + integrity sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw== + dependencies: + "@types/istanbul-lib-report" "*" + "@types/json-schema@*", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8": version "7.0.9" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d" @@ -1117,6 +1595,49 @@ resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== +"@types/prettier@^2.0.0": + version "2.3.2" + resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.3.2.tgz#fc8c2825e4ed2142473b4a81064e6e081463d1b3" + integrity sha512-eI5Yrz3Qv4KPUa/nSIAi0h+qX0XyewOliug5F2QAtuRg6Kjg6jfmxe1GIwoIRhZspD1A0RP8ANrPwvEXXtRFog== + +"@types/prop-types@*": + version "15.7.4" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.4.tgz#fcf7205c25dff795ee79af1e30da2c9790808f11" + integrity sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ== + +"@types/react-dom@>=16.9.0": + version "17.0.9" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-17.0.9.tgz#441a981da9d7be117042e1a6fd3dac4b30f55add" + integrity sha512-wIvGxLfgpVDSAMH5utdL9Ngm5Owu0VsGmldro3ORLXV8CShrL8awVj06NuEXFQ5xyaYfdca7Sgbk/50Ri1GdPg== + dependencies: + "@types/react" "*" + +"@types/react-test-renderer@>=16.9.0": + version "17.0.1" + resolved "https://registry.yarnpkg.com/@types/react-test-renderer/-/react-test-renderer-17.0.1.tgz#3120f7d1c157fba9df0118dae20cb0297ee0e06b" + integrity sha512-3Fi2O6Zzq/f3QR9dRnlnHso9bMl7weKCviFmfF6B4LS1Uat6Hkm15k0ZAQuDz+UBq6B3+g+NM6IT2nr5QgPzCw== + dependencies: + "@types/react" "*" + +"@types/react@*", "@types/react@>=16.9.0": + version "17.0.22" + resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.22.tgz#c80d1d0e87fe953bae3ab273bef451dea1a6291b" + integrity sha512-kq/BMeaAVLJM6Pynh8C2rnr/drCK+/5ksH0ch9asz+8FW3DscYCIEFtCeYTFeIx/ubvOsMXmRfy7qEJ76gM96A== + dependencies: + "@types/prop-types" "*" + "@types/scheduler" "*" + csstype "^3.0.2" + +"@types/scheduler@*": + version "0.16.2" + resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39" + integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew== + +"@types/stack-utils@^2.0.0": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" + integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== + "@types/stylelint@^13.13.1": version "13.13.1" resolved "https://registry.yarnpkg.com/@types/stylelint/-/stylelint-13.13.1.tgz#c7534ccf35efc019f29d883e2655c651dc3c9b7b" @@ -1146,6 +1667,18 @@ "@types/unist" "*" "@types/vfile-message" "*" +"@types/yargs-parser@*": + version "20.2.1" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-20.2.1.tgz#3b9ce2489919d9e4fea439b76916abc34b2df129" + integrity sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw== + +"@types/yargs@^15.0.0": + version "15.0.14" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.14.tgz#26d821ddb89e70492160b66d10a0eb6df8f6fb06" + integrity sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ== + dependencies: + "@types/yargs-parser" "*" + "@webassemblyjs/ast@1.11.1": version "1.11.1" resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7" @@ -1294,6 +1827,11 @@ resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== +abab@^2.0.3, abab@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" + integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q== + accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: version "1.3.7" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" @@ -1302,6 +1840,14 @@ accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: mime-types "~2.1.24" negotiator "0.6.2" +acorn-globals@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" + integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg== + dependencies: + acorn "^7.1.1" + acorn-walk "^7.1.1" + acorn-import-assertions@^1.7.6: version "1.7.6" resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.7.6.tgz#580e3ffcae6770eebeec76c3b9723201e9d01f78" @@ -1312,11 +1858,21 @@ acorn-jsx@^5.3.1: resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== -acorn@^7.4.0: +acorn-walk@^7.1.1: + version "7.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" + integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== + +acorn@^7.1.1, acorn@^7.4.0: version "7.4.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== +acorn@^8.2.4: + version "8.5.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.5.0.tgz#4512ccb99b3698c752591e9bb4472e38ad43cee2" + integrity sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q== + acorn@^8.4.1: version "8.4.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.4.1.tgz#56c36251fc7cabc7096adc18f05afe814321a28c" @@ -1327,6 +1883,13 @@ address@1.1.2, address@^1.0.1: resolved "https://registry.yarnpkg.com/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6" integrity sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA== +agent-base@6: + version "6.0.2" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== + dependencies: + debug "4" + aggregate-error@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" @@ -1385,7 +1948,7 @@ ansi-colors@^4.1.1: resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== -ansi-escapes@^4.3.0: +ansi-escapes@^4.2.1, ansi-escapes@^4.3.0: version "4.3.2" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== @@ -1434,6 +1997,14 @@ anymatch@^2.0.0: micromatch "^3.1.4" normalize-path "^2.1.1" +anymatch@^3.0.3: + version "3.1.2" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" + integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + argparse@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" @@ -1573,6 +2144,11 @@ async@^2.6.2: dependencies: lodash "^4.17.14" +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= + atob@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" @@ -1601,6 +2177,20 @@ axobject-query@^2.2.0: resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be" integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA== +babel-jest@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-26.6.3.tgz#d87d25cb0037577a0c89f82e5755c5d293c01056" + integrity sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA== + dependencies: + "@jest/transform" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/babel__core" "^7.1.7" + babel-plugin-istanbul "^6.0.0" + babel-preset-jest "^26.6.2" + chalk "^4.0.0" + graceful-fs "^4.2.4" + slash "^3.0.0" + babel-loader@^8.2.2: version "8.2.2" resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.2.tgz#9363ce84c10c9a40e6c753748e1441b60c8a0b81" @@ -1618,6 +2208,27 @@ babel-plugin-dynamic-import-node@^2.3.3: dependencies: object.assign "^4.1.0" +babel-plugin-istanbul@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz#e159ccdc9af95e0b570c75b4573b7c34d671d765" + integrity sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@istanbuljs/load-nyc-config" "^1.0.0" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-instrument "^4.0.0" + test-exclude "^6.0.0" + +babel-plugin-jest-hoist@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.6.2.tgz#8185bd030348d254c6d7dd974355e6a28b21e62d" + integrity sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw== + dependencies: + "@babel/template" "^7.3.3" + "@babel/types" "^7.3.3" + "@types/babel__core" "^7.0.0" + "@types/babel__traverse" "^7.0.6" + babel-plugin-polyfill-corejs2@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.2.tgz#e9124785e6fd94f94b618a7954e5693053bf5327" @@ -1654,6 +2265,32 @@ babel-plugin-transform-react-qa-classes@^1.6.0: lodash.snakecase "^4.1.1" pascalcase "^1.0.0" +babel-preset-current-node-syntax@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" + integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== + dependencies: + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-bigint" "^7.8.3" + "@babel/plugin-syntax-class-properties" "^7.8.3" + "@babel/plugin-syntax-import-meta" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.8.3" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-top-level-await" "^7.8.3" + +babel-preset-jest@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-26.6.2.tgz#747872b1171df032252426586881d62d31798fee" + integrity sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ== + dependencies: + babel-plugin-jest-hoist "^26.6.2" + babel-preset-current-node-syntax "^1.0.0" + babel-runtime@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" @@ -1786,6 +2423,11 @@ braces@^3.0.1: dependencies: fill-range "^7.0.1" +browser-process-hrtime@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" + integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== + browserslist@4.14.2: version "4.14.2" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.14.2.tgz#1b3cec458a1ba87588cc5e9be62f19b6d48813ce" @@ -1818,6 +2460,13 @@ browserslist@^4.12.0, browserslist@^4.14.5, browserslist@^4.16.6, browserslist@^ escalade "^3.1.1" node-releases "^1.1.73" +bser@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" + integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== + dependencies: + node-int64 "^0.4.0" + buffer-from@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" @@ -1926,6 +2575,11 @@ camelcase@^5.0.0, camelcase@^5.3.1: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== +camelcase@^6.0.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" + integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== + caniuse-api@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" @@ -1946,6 +2600,13 @@ caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001125, caniuse-lite@^1.0.300012 resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001249.tgz#90a330057f8ff75bfe97a94d047d5e14fabb2ee8" integrity sha512-vcX4U8lwVXPdqzPWi6cAJ3FnQaqXbBqy/GZseKNQzRj37J7qZdGcBtxq/QLFNLLlfsoXLUdHw8Iwenri86Tagw== +capture-exit@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4" + integrity sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g== + dependencies: + rsvp "^4.8.4" + ccount@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/ccount/-/ccount-1.1.0.tgz#246687debb6014735131be8abab2d93898f8d043" @@ -1968,6 +2629,11 @@ chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.1: ansi-styles "^4.1.0" supports-color "^7.1.0" +char-regex@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" + integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== + character-entities-html4@^1.0.0: version "1.1.4" resolved "https://registry.yarnpkg.com/character-entities-html4/-/character-entities-html4-1.1.4.tgz#0e64b0a3753ddbf1fdc044c5fd01d0199a02e125" @@ -2012,6 +2678,16 @@ chrome-trace-event@^1.0.2: resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== +ci-info@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" + integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== + +cjs-module-lexer@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz#4186fcca0eae175970aee870b9fe2d6cf8d5655f" + integrity sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw== + class-utils@^0.3.5: version "0.3.6" resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" @@ -2063,6 +2739,15 @@ cliui@^5.0.0: strip-ansi "^5.2.0" wrap-ansi "^5.1.0" +cliui@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" + integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^6.2.0" + clone-deep@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" @@ -2087,11 +2772,21 @@ clone-regexp@^2.1.0: dependencies: is-regexp "^2.0.0" +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= + collapse-white-space@^1.0.2: version "1.0.6" resolved "https://registry.yarnpkg.com/collapse-white-space/-/collapse-white-space-1.0.6.tgz#e63629c0016665792060dbbeb79c42239d2c5287" integrity sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ== +collect-v8-coverage@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" + integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== + collection-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" @@ -2139,6 +2834,13 @@ colorette@^1.3.0: resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.3.0.tgz#ff45d2f0edb244069d3b772adeb04fed38d0a0af" integrity sha512-ecORCqbSFP7Wm8Y6lyqMJjexBQqXSF7SSeaTyGGphogUjBlFP9m9o08wy86HL2uB7fMTxtOUzLMk7ogKcxMg1w== +combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + commander@^2.20.0: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" @@ -2211,7 +2913,7 @@ content-type@~1.0.4: resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== -convert-source-map@^1.7.0: +convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: version "1.8.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== @@ -2277,7 +2979,7 @@ cosmiconfig@^7.0.0: path-type "^4.0.0" yaml "^1.10.0" -cross-spawn@7.0.3, cross-spawn@^7.0.2, cross-spawn@^7.0.3: +cross-spawn@7.0.3, cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== @@ -2444,6 +3146,28 @@ csso@^4.2.0: dependencies: css-tree "^1.1.2" +cssom@^0.4.4: + version "0.4.4" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" + integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== + +cssom@~0.3.6: + version "0.3.8" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" + integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== + +cssstyle@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" + integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== + dependencies: + cssom "~0.3.6" + +csstype@^3.0.2: + version "3.0.9" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.9.tgz#6410af31b26bd0520933d02cbc64fce9ce3fbf0b" + integrity sha512-rpw6JPxK6Rfg1zLOYCSwle2GFOOsnjmDYDaBwEcwoOg4qlsIVCN789VkBZDJAGi4T07gI4YSutR43t9Zz4Lzuw== + currently-unhandled@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" @@ -2456,7 +3180,16 @@ damerau-levenshtein@^1.0.6: resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.7.tgz#64368003512a1a6992593741a09a9d31a836f55d" integrity sha512-VvdQIPGdWP0SqFXghj79Wf/5LArmreyMsGLa6FG6iC4t3j7j5s71TrwWmT/4akbDQIqjfACkLZmjXhA7g2oUZw== -debug@*, debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1: +data-urls@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" + integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ== + dependencies: + abab "^2.0.3" + whatwg-mimetype "^2.3.0" + whatwg-url "^8.0.0" + +debug@*, debug@4, debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1: version "4.3.2" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== @@ -2497,6 +3230,11 @@ decamelize@^1.1.0, decamelize@^1.2.0: resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= +decimal.js@^10.2.1: + version "10.3.1" + resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.3.1.tgz#d8c3a444a9c6774ba60ca6ad7261c3a94fd5e783" + integrity sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ== + decode-uri-component@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" @@ -2519,6 +3257,16 @@ deep-is@^0.1.3: resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= +deep-is@~0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + +deepmerge@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" + integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== + default-gateway@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-4.2.0.tgz#167104c7500c2115f6dd69b0a536bb8ed720552b" @@ -2569,6 +3317,11 @@ del@^4.1.1: pify "^4.0.1" rimraf "^2.6.3" +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= + depd@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" @@ -2579,6 +3332,11 @@ destroy@~1.0.4: resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= +detect-newline@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" + integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== + detect-node@^2.0.4: version "2.1.0" resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" @@ -2592,6 +3350,11 @@ detect-port-alt@1.1.6: address "^1.0.1" debug "^2.6.0" +diff-sequences@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-26.6.2.tgz#48ba99157de1923412eed41db6b6d4aa9ca7c0b1" + integrity sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q== + dir-glob@^2.2.2: version "2.2.2" resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.2.2.tgz#fa09f0694153c8918b18ba0deafae94769fc50c4" @@ -2674,6 +3437,13 @@ domelementtype@^2.0.1, domelementtype@^2.2.0: resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.2.0.tgz#9a0b6c2782ed6a1c7323d42267183df9bd8b1d57" integrity sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A== +domexception@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" + integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg== + dependencies: + webidl-conversions "^5.0.0" + domhandler@^2.3.0: version "2.4.2" resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803" @@ -2740,6 +3510,11 @@ electron-to-chromium@^1.3.811: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.814.tgz#418fad80c3276a46103ca72a21a8290620d83c4a" integrity sha512-0mH03cyjh6OzMlmjauGg0TLd87ErIJqWiYxMcOLKf5w6p0YEOl7DJAj7BDlXEFmCguY5CQaKVOiMjAMODO2XDw== +emittery@^0.7.1: + version "0.7.2" + resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.7.2.tgz#25595908e13af0f5674ab419396e2fb394cdfa82" + integrity sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ== + emoji-regex@^7.0.1: version "7.0.3" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" @@ -2863,7 +3638,7 @@ escape-html@~1.0.3: resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= -escape-string-regexp@2.0.0: +escape-string-regexp@2.0.0, escape-string-regexp@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== @@ -2878,6 +3653,18 @@ escape-string-regexp@^4.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== +escodegen@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd" + integrity sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw== + dependencies: + esprima "^4.0.1" + estraverse "^5.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.6.1" + eslint-config-airbnb-base@^14.2.1: version "14.2.1" resolved "https://registry.yarnpkg.com/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.2.1.tgz#8a2eb38455dc5a312550193b319cdaeef042cd1e" @@ -3079,7 +3866,7 @@ espree@^7.3.0, espree@^7.3.1: acorn-jsx "^5.3.1" eslint-visitor-keys "^1.3.0" -esprima@^4.0.0: +esprima@^4.0.0, esprima@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== @@ -3135,6 +3922,11 @@ eventsource@^1.0.7: dependencies: original "^1.0.0" +exec-sh@^0.3.2: + version "0.3.6" + resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.6.tgz#ff264f9e325519a60cb5e273692943483cca63bc" + integrity sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w== + execa@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" @@ -3148,6 +3940,21 @@ execa@^1.0.0: signal-exit "^3.0.0" strip-eof "^1.0.0" +execa@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" + integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== + dependencies: + cross-spawn "^7.0.0" + get-stream "^5.0.0" + human-signals "^1.1.1" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.0" + onetime "^5.1.0" + signal-exit "^3.0.2" + strip-final-newline "^2.0.0" + execa@^5.0.0: version "5.1.1" resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" @@ -3177,6 +3984,11 @@ execall@^2.0.0: dependencies: clone-regexp "^2.1.0" +exit@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" + integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= + expand-brackets@^2.1.4: version "2.1.4" resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" @@ -3190,6 +4002,18 @@ expand-brackets@^2.1.4: snapdragon "^0.8.1" to-regex "^3.0.1" +expect@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/expect/-/expect-26.6.2.tgz#c6b996bf26bf3fe18b67b2d0f51fc981ba934417" + integrity sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA== + dependencies: + "@jest/types" "^26.6.2" + ansi-styles "^4.0.0" + jest-get-type "^26.3.0" + jest-matcher-utils "^26.6.2" + jest-message-util "^26.6.2" + jest-regex-util "^26.0.0" + express@^4.17.1: version "4.17.1" resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" @@ -3298,7 +4122,7 @@ fast-json-stable-stringify@^2.0.0: resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== -fast-levenshtein@^2.0.6: +fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= @@ -3322,6 +4146,13 @@ faye-websocket@^0.11.3: dependencies: websocket-driver ">=0.5.1" +fb-watchman@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" + integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg== + dependencies: + bser "2.1.1" + file-entry-cache@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-4.0.0.tgz#633567d15364aefe0b299e1e217735e8f3a9f6e8" @@ -3457,6 +4288,15 @@ fork-ts-checker-webpack-plugin@4.1.6: tapable "^1.0.0" worker-rpc "^0.1.0" +form-data@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" + integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + forwarded@0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" @@ -3487,6 +4327,11 @@ fsevents@^1.2.7: bindings "^1.5.0" nan "^2.12.1" +fsevents@^2.1.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" @@ -3521,6 +4366,11 @@ get-own-enumerable-property-symbols@^3.0.0: resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== +get-package-type@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" + integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== + get-stdin@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b" @@ -3538,6 +4388,13 @@ get-stream@^4.0.0: dependencies: pump "^3.0.0" +get-stream@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" + integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== + dependencies: + pump "^3.0.0" + get-stream@^6.0.0: version "6.0.1" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" @@ -3585,7 +4442,7 @@ glob@7.0.x: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.0.3, glob@^7.1.3, glob@^7.1.6: +glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: version "7.1.7" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== @@ -3691,6 +4548,11 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.2.4: resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a" integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg== +growly@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" + integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= + gzip-size@5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.1.1.tgz#cb9bee692f87c0612b232840a873904e4c135274" @@ -3801,11 +4663,23 @@ hpack.js@^2.1.6: readable-stream "^2.0.1" wbuf "^1.1.0" +html-encoding-sniffer@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" + integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ== + dependencies: + whatwg-encoding "^1.0.5" + html-entities@^1.3.1: version "1.4.0" resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.4.0.tgz#cfbd1b01d2afaf9adca1b10ae7dffab98c71d2dc" integrity sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA== +html-escaper@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" + integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== + html-minifier-terser@^5.0.1: version "5.1.1" resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz#922e96f1f3bb60832c2634b79884096389b1f054" @@ -3904,6 +4778,15 @@ http-parser-js@>=0.5.1: resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.3.tgz#01d2709c79d41698bb01d4decc5e9da4e4a033d9" integrity sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg== +http-proxy-agent@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" + integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== + dependencies: + "@tootallnate/once" "1" + agent-base "6" + debug "4" + http-proxy-middleware@0.19.1: version "0.19.1" resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz#183c7dc4aa1479150306498c210cdaf96080a43a" @@ -3923,6 +4806,19 @@ http-proxy@^1.17.0: follow-redirects "^1.0.0" requires-port "^1.0.0" +https-proxy-agent@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2" + integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA== + dependencies: + agent-base "6" + debug "4" + +human-signals@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" + integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== + human-signals@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" @@ -4167,6 +5063,13 @@ is-callable@^1.1.4, is-callable@^1.2.3: resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945" integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w== +is-ci@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" + integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== + dependencies: + ci-info "^2.0.0" + is-core-module@^2.2.0, is-core-module@^2.4.0: version "2.5.0" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.5.0.tgz#f754843617c70bfd29b7bd87327400cda5c18491" @@ -4255,6 +5158,11 @@ is-fullwidth-code-point@^3.0.0: resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== +is-generator-fn@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" + integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== + is-glob@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" @@ -4344,6 +5252,11 @@ is-plain-object@^2.0.3, is-plain-object@^2.0.4: dependencies: isobject "^3.0.1" +is-potential-custom-element-name@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" + integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== + is-regex@^1.0.4, is-regex@^1.1.3: version "1.1.4" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" @@ -4431,7 +5344,7 @@ is-wsl@^1.1.0: resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= -is-wsl@^2.1.1: +is-wsl@^2.1.1, is-wsl@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== @@ -4460,6 +5373,411 @@ isobject@^3.0.0, isobject@^3.0.1: resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= +istanbul-lib-coverage@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" + integrity sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg== + +istanbul-lib-instrument@^4.0.0, istanbul-lib-instrument@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz#873c6fff897450118222774696a3f28902d77c1d" + integrity sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ== + dependencies: + "@babel/core" "^7.7.5" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-coverage "^3.0.0" + semver "^6.3.0" + +istanbul-lib-report@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" + integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== + dependencies: + istanbul-lib-coverage "^3.0.0" + make-dir "^3.0.0" + supports-color "^7.1.0" + +istanbul-lib-source-maps@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz#75743ce6d96bb86dc7ee4352cf6366a23f0b1ad9" + integrity sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg== + dependencies: + debug "^4.1.1" + istanbul-lib-coverage "^3.0.0" + source-map "^0.6.1" + +istanbul-reports@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.0.2.tgz#d593210e5000683750cb09fc0644e4b6e27fd53b" + integrity sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw== + dependencies: + html-escaper "^2.0.0" + istanbul-lib-report "^3.0.0" + +jest-changed-files@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-26.6.2.tgz#f6198479e1cc66f22f9ae1e22acaa0b429c042d0" + integrity sha512-fDS7szLcY9sCtIip8Fjry9oGf3I2ht/QT21bAHm5Dmf0mD4X3ReNUf17y+bO6fR8WgbIZTlbyG1ak/53cbRzKQ== + dependencies: + "@jest/types" "^26.6.2" + execa "^4.0.0" + throat "^5.0.0" + +jest-cli@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-26.6.3.tgz#43117cfef24bc4cd691a174a8796a532e135e92a" + integrity sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg== + dependencies: + "@jest/core" "^26.6.3" + "@jest/test-result" "^26.6.2" + "@jest/types" "^26.6.2" + chalk "^4.0.0" + exit "^0.1.2" + graceful-fs "^4.2.4" + import-local "^3.0.2" + is-ci "^2.0.0" + jest-config "^26.6.3" + jest-util "^26.6.2" + jest-validate "^26.6.2" + prompts "^2.0.1" + yargs "^15.4.1" + +jest-config@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-26.6.3.tgz#64f41444eef9eb03dc51d5c53b75c8c71f645349" + integrity sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg== + dependencies: + "@babel/core" "^7.1.0" + "@jest/test-sequencer" "^26.6.3" + "@jest/types" "^26.6.2" + babel-jest "^26.6.3" + chalk "^4.0.0" + deepmerge "^4.2.2" + glob "^7.1.1" + graceful-fs "^4.2.4" + jest-environment-jsdom "^26.6.2" + jest-environment-node "^26.6.2" + jest-get-type "^26.3.0" + jest-jasmine2 "^26.6.3" + jest-regex-util "^26.0.0" + jest-resolve "^26.6.2" + jest-util "^26.6.2" + jest-validate "^26.6.2" + micromatch "^4.0.2" + pretty-format "^26.6.2" + +jest-diff@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-26.6.2.tgz#1aa7468b52c3a68d7d5c5fdcdfcd5e49bd164394" + integrity sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA== + dependencies: + chalk "^4.0.0" + diff-sequences "^26.6.2" + jest-get-type "^26.3.0" + pretty-format "^26.6.2" + +jest-docblock@^26.0.0: + version "26.0.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-26.0.0.tgz#3e2fa20899fc928cb13bd0ff68bd3711a36889b5" + integrity sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w== + dependencies: + detect-newline "^3.0.0" + +jest-each@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-26.6.2.tgz#02526438a77a67401c8a6382dfe5999952c167cb" + integrity sha512-Mer/f0KaATbjl8MCJ+0GEpNdqmnVmDYqCTJYTvoo7rqmRiDllmp2AYN+06F93nXcY3ur9ShIjS+CO/uD+BbH4A== + dependencies: + "@jest/types" "^26.6.2" + chalk "^4.0.0" + jest-get-type "^26.3.0" + jest-util "^26.6.2" + pretty-format "^26.6.2" + +jest-environment-jsdom@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-26.6.2.tgz#78d09fe9cf019a357009b9b7e1f101d23bd1da3e" + integrity sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q== + dependencies: + "@jest/environment" "^26.6.2" + "@jest/fake-timers" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + jest-mock "^26.6.2" + jest-util "^26.6.2" + jsdom "^16.4.0" + +jest-environment-node@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-26.6.2.tgz#824e4c7fb4944646356f11ac75b229b0035f2b0c" + integrity sha512-zhtMio3Exty18dy8ee8eJ9kjnRyZC1N4C1Nt/VShN1apyXc8rWGtJ9lI7vqiWcyyXS4BVSEn9lxAM2D+07/Tag== + dependencies: + "@jest/environment" "^26.6.2" + "@jest/fake-timers" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + jest-mock "^26.6.2" + jest-util "^26.6.2" + +jest-get-type@^26.3.0: + version "26.3.0" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-26.3.0.tgz#e97dc3c3f53c2b406ca7afaed4493b1d099199e0" + integrity sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig== + +jest-haste-map@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-26.6.2.tgz#dd7e60fe7dc0e9f911a23d79c5ff7fb5c2cafeaa" + integrity sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w== + dependencies: + "@jest/types" "^26.6.2" + "@types/graceful-fs" "^4.1.2" + "@types/node" "*" + anymatch "^3.0.3" + fb-watchman "^2.0.0" + graceful-fs "^4.2.4" + jest-regex-util "^26.0.0" + jest-serializer "^26.6.2" + jest-util "^26.6.2" + jest-worker "^26.6.2" + micromatch "^4.0.2" + sane "^4.0.3" + walker "^1.0.7" + optionalDependencies: + fsevents "^2.1.2" + +jest-jasmine2@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-26.6.3.tgz#adc3cf915deacb5212c93b9f3547cd12958f2edd" + integrity sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg== + dependencies: + "@babel/traverse" "^7.1.0" + "@jest/environment" "^26.6.2" + "@jest/source-map" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + chalk "^4.0.0" + co "^4.6.0" + expect "^26.6.2" + is-generator-fn "^2.0.0" + jest-each "^26.6.2" + jest-matcher-utils "^26.6.2" + jest-message-util "^26.6.2" + jest-runtime "^26.6.3" + jest-snapshot "^26.6.2" + jest-util "^26.6.2" + pretty-format "^26.6.2" + throat "^5.0.0" + +jest-leak-detector@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-26.6.2.tgz#7717cf118b92238f2eba65054c8a0c9c653a91af" + integrity sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg== + dependencies: + jest-get-type "^26.3.0" + pretty-format "^26.6.2" + +jest-matcher-utils@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz#8e6fd6e863c8b2d31ac6472eeb237bc595e53e7a" + integrity sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw== + dependencies: + chalk "^4.0.0" + jest-diff "^26.6.2" + jest-get-type "^26.3.0" + pretty-format "^26.6.2" + +jest-message-util@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-26.6.2.tgz#58173744ad6fc0506b5d21150b9be56ef001ca07" + integrity sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA== + dependencies: + "@babel/code-frame" "^7.0.0" + "@jest/types" "^26.6.2" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.4" + micromatch "^4.0.2" + pretty-format "^26.6.2" + slash "^3.0.0" + stack-utils "^2.0.2" + +jest-mock@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-26.6.2.tgz#d6cb712b041ed47fe0d9b6fc3474bc6543feb302" + integrity sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew== + dependencies: + "@jest/types" "^26.6.2" + "@types/node" "*" + +jest-pnp-resolver@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" + integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== + +jest-regex-util@^26.0.0: + version "26.0.0" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-26.0.0.tgz#d25e7184b36e39fd466c3bc41be0971e821fee28" + integrity sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A== + +jest-resolve-dependencies@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-26.6.3.tgz#6680859ee5d22ee5dcd961fe4871f59f4c784fb6" + integrity sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg== + dependencies: + "@jest/types" "^26.6.2" + jest-regex-util "^26.0.0" + jest-snapshot "^26.6.2" + +jest-resolve@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-26.6.2.tgz#a3ab1517217f469b504f1b56603c5bb541fbb507" + integrity sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ== + dependencies: + "@jest/types" "^26.6.2" + chalk "^4.0.0" + graceful-fs "^4.2.4" + jest-pnp-resolver "^1.2.2" + jest-util "^26.6.2" + read-pkg-up "^7.0.1" + resolve "^1.18.1" + slash "^3.0.0" + +jest-runner@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-26.6.3.tgz#2d1fed3d46e10f233fd1dbd3bfaa3fe8924be159" + integrity sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ== + dependencies: + "@jest/console" "^26.6.2" + "@jest/environment" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + chalk "^4.0.0" + emittery "^0.7.1" + exit "^0.1.2" + graceful-fs "^4.2.4" + jest-config "^26.6.3" + jest-docblock "^26.0.0" + jest-haste-map "^26.6.2" + jest-leak-detector "^26.6.2" + jest-message-util "^26.6.2" + jest-resolve "^26.6.2" + jest-runtime "^26.6.3" + jest-util "^26.6.2" + jest-worker "^26.6.2" + source-map-support "^0.5.6" + throat "^5.0.0" + +jest-runtime@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-26.6.3.tgz#4f64efbcfac398331b74b4b3c82d27d401b8fa2b" + integrity sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw== + dependencies: + "@jest/console" "^26.6.2" + "@jest/environment" "^26.6.2" + "@jest/fake-timers" "^26.6.2" + "@jest/globals" "^26.6.2" + "@jest/source-map" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/transform" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/yargs" "^15.0.0" + chalk "^4.0.0" + cjs-module-lexer "^0.6.0" + collect-v8-coverage "^1.0.0" + exit "^0.1.2" + glob "^7.1.3" + graceful-fs "^4.2.4" + jest-config "^26.6.3" + jest-haste-map "^26.6.2" + jest-message-util "^26.6.2" + jest-mock "^26.6.2" + jest-regex-util "^26.0.0" + jest-resolve "^26.6.2" + jest-snapshot "^26.6.2" + jest-util "^26.6.2" + jest-validate "^26.6.2" + slash "^3.0.0" + strip-bom "^4.0.0" + yargs "^15.4.1" + +jest-serializer@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-26.6.2.tgz#d139aafd46957d3a448f3a6cdabe2919ba0742d1" + integrity sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g== + dependencies: + "@types/node" "*" + graceful-fs "^4.2.4" + +jest-snapshot@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-26.6.2.tgz#f3b0af1acb223316850bd14e1beea9837fb39c84" + integrity sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og== + dependencies: + "@babel/types" "^7.0.0" + "@jest/types" "^26.6.2" + "@types/babel__traverse" "^7.0.4" + "@types/prettier" "^2.0.0" + chalk "^4.0.0" + expect "^26.6.2" + graceful-fs "^4.2.4" + jest-diff "^26.6.2" + jest-get-type "^26.3.0" + jest-haste-map "^26.6.2" + jest-matcher-utils "^26.6.2" + jest-message-util "^26.6.2" + jest-resolve "^26.6.2" + natural-compare "^1.4.0" + pretty-format "^26.6.2" + semver "^7.3.2" + +jest-util@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-26.6.2.tgz#907535dbe4d5a6cb4c47ac9b926f6af29576cbc1" + integrity sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q== + dependencies: + "@jest/types" "^26.6.2" + "@types/node" "*" + chalk "^4.0.0" + graceful-fs "^4.2.4" + is-ci "^2.0.0" + micromatch "^4.0.2" + +jest-validate@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-26.6.2.tgz#23d380971587150467342911c3d7b4ac57ab20ec" + integrity sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ== + dependencies: + "@jest/types" "^26.6.2" + camelcase "^6.0.0" + chalk "^4.0.0" + jest-get-type "^26.3.0" + leven "^3.1.0" + pretty-format "^26.6.2" + +jest-watcher@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-26.6.2.tgz#a5b683b8f9d68dbcb1d7dae32172d2cca0592975" + integrity sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ== + dependencies: + "@jest/test-result" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + jest-util "^26.6.2" + string-length "^4.0.1" + +jest-worker@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" + integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^7.0.0" + jest-worker@^27.0.2, jest-worker@^27.0.6: version "27.0.6" resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.0.6.tgz#a5fdb1e14ad34eb228cfe162d9f729cdbfa28aed" @@ -4469,6 +5787,15 @@ jest-worker@^27.0.2, jest-worker@^27.0.6: merge-stream "^2.0.0" supports-color "^8.0.0" +jest@26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest/-/jest-26.6.3.tgz#40e8fdbe48f00dfa1f0ce8121ca74b88ac9148ef" + integrity sha512-lGS5PXGAzR4RF7V5+XObhqz2KZIDUA1yD0DG6pBVmy10eh0ZIXQImRuzocsI/N2XZ1GrLFwTS27In2i2jlpq1Q== + dependencies: + "@jest/core" "^26.6.3" + import-local "^3.0.2" + jest-cli "^26.6.3" + "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -4482,6 +5809,39 @@ js-yaml@^3.13.1: argparse "^1.0.7" esprima "^4.0.0" +jsdom@^16.4.0: + version "16.7.0" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.7.0.tgz#918ae71965424b197c819f8183a754e18977b710" + integrity sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw== + dependencies: + abab "^2.0.5" + acorn "^8.2.4" + acorn-globals "^6.0.0" + cssom "^0.4.4" + cssstyle "^2.3.0" + data-urls "^2.0.0" + decimal.js "^10.2.1" + domexception "^2.0.1" + escodegen "^2.0.0" + form-data "^3.0.0" + html-encoding-sniffer "^2.0.1" + http-proxy-agent "^4.0.1" + https-proxy-agent "^5.0.0" + is-potential-custom-element-name "^1.0.1" + nwsapi "^2.2.0" + parse5 "6.0.1" + saxes "^5.0.1" + symbol-tree "^3.2.4" + tough-cookie "^4.0.0" + w3c-hr-time "^1.0.2" + w3c-xmlserializer "^2.0.0" + webidl-conversions "^6.1.0" + whatwg-encoding "^1.0.5" + whatwg-mimetype "^2.3.0" + whatwg-url "^8.5.0" + ws "^7.4.6" + xml-name-validator "^3.0.0" + jsesc@^2.5.1: version "2.5.2" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" @@ -4610,6 +5970,11 @@ leven@^2.1.0: resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580" integrity sha1-wuep93IJTe6dNCAq6KzORoeHVYA= +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + levn@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" @@ -4618,6 +5983,14 @@ levn@^0.4.1: prelude-ls "^1.2.1" type-check "~0.4.0" +levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + lilconfig@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.3.tgz#68f3005e921dafbd2a2afb48379986aa6d2579fd" @@ -4767,7 +6140,7 @@ lodash.uniq@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= -lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4: +lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4, lodash@^4.7.0: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -4836,13 +6209,20 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" -make-dir@^3.0.2, make-dir@^3.1.0: +make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== dependencies: semver "^6.0.0" +makeerror@1.0.x: + version "1.0.11" + resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" + integrity sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw= + dependencies: + tmpl "1.0.x" + map-cache@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" @@ -5023,7 +6403,7 @@ micromatch@^3.1.10, micromatch@^3.1.4: snapdragon "^0.8.1" to-regex "^3.0.2" -micromatch@^4.0.4: +micromatch@^4.0.2, micromatch@^4.0.4: version "4.0.4" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== @@ -5036,7 +6416,7 @@ mime-db@1.49.0, "mime-db@>= 1.43.0 < 2": resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.49.0.tgz#f3dfde60c99e9cf3bc9701d687778f537001cbed" integrity sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA== -mime-types@^2.1.27, mime-types@~2.1.17, mime-types@~2.1.24: +mime-types@^2.1.12, mime-types@^2.1.27, mime-types@~2.1.17, mime-types@~2.1.24: version "2.1.32" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.32.tgz#1d00e89e7de7fe02008db61001d9e02852670fd5" integrity sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A== @@ -5099,7 +6479,7 @@ minimist-options@^3.0.1: arrify "^1.0.1" is-plain-obj "^1.1.0" -minimist@^1.2.0, minimist@^1.2.5: +minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== @@ -5124,6 +6504,11 @@ mkdirp@~1.0.4: resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== +mockdate@^3.0.5: + version "3.0.5" + resolved "https://registry.yarnpkg.com/mockdate/-/mockdate-3.0.5.tgz#789be686deb3149e7df2b663d2bc4392bc3284fb" + integrity sha512-iniQP4rj1FhBdBYS/+eQv7j1tadJ9lJtdzgOpvsOHng/GbcDh2Fhdeq+ZRldrPYdXvCyfFUmFeEwEGXZB5I/AQ== + ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" @@ -5224,6 +6609,28 @@ node-forge@^0.10.0: resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3" integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA== +node-int64@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" + integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= + +node-modules-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" + integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= + +node-notifier@^8.0.0: + version "8.0.2" + resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-8.0.2.tgz#f3167a38ef0d2c8a866a83e318c1ba0efeb702c5" + integrity sha512-oJP/9NAdd9+x2Q+rfphB2RJCHjod70RcRLjosiPMMu5gjIfwVnOUGq2nbTjTUbmy0DJ/tFIVT30+Qe3nzl4TJg== + dependencies: + growly "^1.3.0" + is-wsl "^2.2.0" + semver "^7.3.2" + shellwords "^0.1.1" + uuid "^8.3.0" + which "^2.0.2" + node-releases@^1.1.61, node-releases@^1.1.73: version "1.1.73" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.73.tgz#dd4e81ddd5277ff846b80b52bb40c49edf7a7b20" @@ -5288,7 +6695,7 @@ npm-run-path@^2.0.0: dependencies: path-key "^2.0.0" -npm-run-path@^4.0.1: +npm-run-path@^4.0.0, npm-run-path@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== @@ -5307,6 +6714,11 @@ num2fraction@^1.2.2: resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4= +nwsapi@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" + integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== + object-assign@^4.0.1, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" @@ -5437,6 +6849,18 @@ opn@^5.5.0: dependencies: is-wsl "^1.1.0" +optionator@^0.8.1: + version "0.8.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" + integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.6" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + word-wrap "~1.2.3" + optionator@^0.9.1: version "0.9.1" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" @@ -5456,6 +6880,11 @@ original@^1.0.0: dependencies: url-parse "^1.4.3" +p-each-series@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-2.2.0.tgz#105ab0357ce72b202a8a8b94933672657b5e2a9a" + integrity sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA== + p-finally@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" @@ -5589,6 +7018,11 @@ parse-json@^5.0.0: json-parse-even-better-errors "^2.3.0" lines-and-columns "^1.1.6" +parse5@6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" + integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== + parseurl@~1.3.2, parseurl@~1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" @@ -5669,7 +7103,7 @@ path-type@^4.0.0: resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== -picomatch@^2.2.3: +picomatch@^2.0.4, picomatch@^2.2.3: version "2.3.0" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== @@ -5701,6 +7135,13 @@ pinkie@^2.0.0: resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= +pirates@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87" + integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA== + dependencies: + node-modules-regexp "^1.0.0" + pkg-dir@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" @@ -6135,6 +7576,11 @@ prelude-ls@^1.2.1: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= + prettier-linter-helpers@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" @@ -6155,6 +7601,16 @@ pretty-error@^3.0.4: lodash "^4.17.20" renderkid "^2.0.6" +pretty-format@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.6.2.tgz#e35c2705f14cb7fe2fe94fa078345b444120fc93" + integrity sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg== + dependencies: + "@jest/types" "^26.6.2" + ansi-regex "^5.0.0" + ansi-styles "^4.0.0" + react-is "^17.0.1" + process-nextick-args@~2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" @@ -6173,6 +7629,14 @@ prompts@2.4.0: kleur "^3.0.3" sisteransi "^1.0.5" +prompts@^2.0.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.1.tgz#befd3b1195ba052f9fd2fde8a486c4e82ee77f61" + integrity sha512-EQyfIuO2hPDsX1L/blblV+H7I0knhgAd82cVneCwcdND9B8AuCDuRcBH6yIcG4dFzlOUqbazQqwGjx5xmsNLuQ== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.5" + prop-types@^15.5.8, prop-types@^15.6.2, prop-types@^15.7.2: version "15.7.2" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" @@ -6195,6 +7659,11 @@ prr@~1.0.1: resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= +psl@^1.1.33: + version "1.8.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" + integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== + pump@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" @@ -6208,7 +7677,7 @@ punycode@1.3.2: resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= -punycode@^2.1.0: +punycode@^2.1.0, punycode@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== @@ -6305,6 +7774,13 @@ react-dom@^16.14.0: prop-types "^15.6.2" scheduler "^0.19.1" +react-error-boundary@^3.1.0: + version "3.1.3" + resolved "https://registry.yarnpkg.com/react-error-boundary/-/react-error-boundary-3.1.3.tgz#276bfa05de8ac17b863587c9e0647522c25e2a0b" + integrity sha512-A+F9HHy9fvt9t8SNDlonq01prnU8AmkjvGKV4kk8seB9kU3xMEO8J/PQlLVmoOIDODl5U2kufSBs4vrWIqhsAA== + dependencies: + "@babel/runtime" "^7.12.5" + react-error-overlay@^6.0.9: version "6.0.9" resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.9.tgz#3c743010c9359608c375ecd6bc76f35d93995b0a" @@ -6322,6 +7798,11 @@ react-is@^16.8.1: resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== +react-is@^17.0.1: + version "17.0.2" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" + integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== + react@^16.10.2: version "16.14.0" resolved "https://registry.yarnpkg.com/react/-/react-16.14.0.tgz#94d776ddd0aaa37da3eda8fc5b6b18a4c9a3114d" @@ -6665,7 +8146,7 @@ resolve-url@^0.2.1: resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= -resolve@^1.10.0, resolve@^1.14.2, resolve@^1.20.0, resolve@^1.9.0: +resolve@^1.10.0, resolve@^1.14.2, resolve@^1.18.1, resolve@^1.20.0, resolve@^1.9.0: version "1.20.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== @@ -6718,13 +8199,18 @@ rimraf@^2.6.3: dependencies: glob "^7.1.3" -rimraf@^3.0.2: +rimraf@^3.0.0, rimraf@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== dependencies: glob "^7.1.3" +rsvp@^4.8.4: + version "4.8.5" + resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" + integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== + run-parallel@^1.1.9: version "1.2.0" resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" @@ -6761,6 +8247,21 @@ safe-regex@^1.1.0: resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== +sane@^4.0.3: + version "4.1.0" + resolved "https://registry.yarnpkg.com/sane/-/sane-4.1.0.tgz#ed881fd922733a6c461bc189dc2b6c006f3ffded" + integrity sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA== + dependencies: + "@cnakazawa/watch" "^1.0.3" + anymatch "^2.0.0" + capture-exit "^2.0.0" + exec-sh "^0.3.2" + execa "^1.0.0" + fb-watchman "^2.0.0" + micromatch "^3.1.4" + minimist "^1.1.1" + walker "~1.0.5" + sax@0.5.x: version "0.5.8" resolved "https://registry.yarnpkg.com/sax/-/sax-0.5.8.tgz#d472db228eb331c2506b0e8c15524adb939d12c1" @@ -6771,6 +8272,13 @@ sax@~1.2.4: resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== +saxes@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" + integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== + dependencies: + xmlchars "^2.2.0" + scheduler@^0.19.1: version "0.19.1" resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.19.1.tgz#4f3e2ed2c1a7d65681f4c854fa8c5a1ccb40f196" @@ -6838,7 +8346,7 @@ semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== -semver@^7.2.1, semver@^7.3.4, semver@^7.3.5: +semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5: version "7.3.5" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== @@ -6955,6 +8463,11 @@ shell-quote@1.7.2: resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2" integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== +shellwords@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" + integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww== + side-channel@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" @@ -7078,6 +8591,14 @@ source-map-resolve@^0.5.0, source-map-resolve@^0.5.2: source-map-url "^0.4.0" urix "^0.1.0" +source-map-support@^0.5.20, source-map-support@^0.5.6: + version "0.5.20" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.20.tgz#12166089f8f5e5e8c56926b377633392dd2cb6c9" + integrity sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + source-map-support@~0.5.12, source-map-support@~0.5.19: version "0.5.19" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" @@ -7184,6 +8705,14 @@ stable@^0.1.8: resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== +stack-utils@^2.0.2: + version "2.0.4" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.4.tgz#bf967ae2813d3d2d1e1f59a4408676495c8112ab" + integrity sha512-ERg+H//lSSYlZhBIUu+wJnqg30AbyBbpZlIhcshpn7BNzpoRODZgfyr9J+8ERf3ooC6af3u7Lcl01nleau7MrA== + dependencies: + escape-string-regexp "^2.0.0" + source-map-support "^0.5.20" + state-toggle@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/state-toggle/-/state-toggle-1.0.3.tgz#e123b16a88e143139b09c6852221bc9815917dfe" @@ -7207,6 +8736,14 @@ string-argv@0.3.1: resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da" integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg== +string-length@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" + integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== + dependencies: + char-regex "^1.0.2" + strip-ansi "^6.0.0" + string-width@^3.0.0, string-width@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" @@ -7314,6 +8851,11 @@ strip-bom@^3.0.0: resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= +strip-bom@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" + integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== + strip-eof@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" @@ -7575,7 +9117,7 @@ supports-color@^6.1.0: dependencies: has-flag "^3.0.0" -supports-color@^7.1.0: +supports-color@^7.0.0, supports-color@^7.1.0: version "7.2.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== @@ -7589,6 +9131,14 @@ supports-color@^8.0.0: dependencies: has-flag "^4.0.0" +supports-hyperlinks@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz#4f77b42488765891774b70c79babd87f9bd594bb" + integrity sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ== + dependencies: + has-flag "^4.0.0" + supports-color "^7.0.0" + svg-tags@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/svg-tags/-/svg-tags-1.0.0.tgz#58f71cee3bd519b59d4b2a843b6c7de64ac04764" @@ -7607,6 +9157,11 @@ svgo@^2.3.0: csso "^4.2.0" stable "^0.1.8" +symbol-tree@^3.2.4: + version "3.2.4" + resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" + integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== + table@^5.0.0: version "5.4.6" resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" @@ -7639,6 +9194,14 @@ tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0: resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.0.tgz#5c373d281d9c672848213d0e037d1c4165ab426b" integrity sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw== +terminal-link@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" + integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== + dependencies: + ansi-escapes "^4.2.1" + supports-hyperlinks "^2.0.0" + terser-webpack-plugin@^5.1.3: version "5.1.4" resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.1.4.tgz#c369cf8a47aa9922bd0d8a94fe3d3da11a7678a1" @@ -7669,11 +9232,25 @@ terser@^5.7.0: source-map "~0.7.2" source-map-support "~0.5.19" +test-exclude@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" + integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== + dependencies: + "@istanbuljs/schema" "^0.1.2" + glob "^7.1.4" + minimatch "^3.0.4" + text-table@0.2.0, text-table@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= +throat@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b" + integrity sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA== + through@^2.3.8: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" @@ -7689,6 +9266,11 @@ timsort@^0.3.0: resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= +tmpl@1.0.x: + version "1.0.5" + resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" + integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== + to-fast-properties@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" @@ -7736,6 +9318,22 @@ toidentifier@1.0.0: resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== +tough-cookie@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.0.0.tgz#d822234eeca882f991f0f908824ad2622ddbece4" + integrity sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg== + dependencies: + psl "^1.1.33" + punycode "^2.1.1" + universalify "^0.1.2" + +tr46@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.1.0.tgz#fa87aa81ca5d5941da8cbf1f9b749dc969a4e240" + integrity sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw== + dependencies: + punycode "^2.1.1" + trim-newlines@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-2.0.0.tgz#b403d0b91be50c331dfc4b82eeceb22c3de16d20" @@ -7787,6 +9385,18 @@ type-check@^0.4.0, type-check@~0.4.0: dependencies: prelude-ls "^1.2.1" +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= + dependencies: + prelude-ls "~1.1.2" + +type-detect@4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + type-fest@^0.18.0: version "0.18.1" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.18.1.tgz#db4bc151a4a2cf4eebf9add5db75508db6cc841f" @@ -7978,6 +9588,11 @@ unist-util-visit@^1.1.0: dependencies: unist-util-visit-parents "^2.0.0" +universalify@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" @@ -8049,11 +9664,25 @@ uuid@^3.3.2, uuid@^3.4.0: resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== +uuid@^8.3.0: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + v8-compile-cache@^2.0.3, v8-compile-cache@^2.2.0, v8-compile-cache@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== +v8-to-istanbul@^7.0.0: + version "7.1.2" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-7.1.2.tgz#30898d1a7fa0c84d225a2c1434fb958f290883c1" + integrity sha512-TxNb7YEUwkLXCQYeudi6lgQ/SZrzNO4kMdlqVxaZPUIUjCv6iSSypUQX70kNBSERpQ8fk48+d61FXk+tgqcWow== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.1" + convert-source-map "^1.6.0" + source-map "^0.7.3" + validate-npm-package-license@^3.0.1: version "3.0.4" resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" @@ -8120,6 +9749,27 @@ vfile@^4.0.0: unist-util-stringify-position "^2.0.0" vfile-message "^2.0.0" +w3c-hr-time@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" + integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== + dependencies: + browser-process-hrtime "^1.0.0" + +w3c-xmlserializer@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a" + integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA== + dependencies: + xml-name-validator "^3.0.0" + +walker@^1.0.7, walker@~1.0.5: + version "1.0.7" + resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" + integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs= + dependencies: + makeerror "1.0.x" + watchpack@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.2.0.tgz#47d78f5415fe550ecd740f99fe2882323a58b1ce" @@ -8135,6 +9785,16 @@ wbuf@^1.1.0, wbuf@^1.7.3: dependencies: minimalistic-assert "^1.0.0" +webidl-conversions@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" + integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== + +webidl-conversions@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" + integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== + webpack-cli@^4.7.2: version "4.7.2" resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-4.7.2.tgz#a718db600de6d3906a4357e059ae584a89f4c1a5" @@ -8269,6 +9929,27 @@ websocket-extensions@>=0.1.1: resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== +whatwg-encoding@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" + integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== + dependencies: + iconv-lite "0.4.24" + +whatwg-mimetype@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" + integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== + +whatwg-url@^8.0.0, whatwg-url@^8.5.0: + version "8.7.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.7.0.tgz#656a78e510ff8f3937bc0bcbe9f5c0ac35941b77" + integrity sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg== + dependencies: + lodash "^4.7.0" + tr46 "^2.1.0" + webidl-conversions "^6.1.0" + which-boxed-primitive@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" @@ -8292,7 +9973,7 @@ which@^1.2.9, which@^1.3.1: dependencies: isexe "^2.0.0" -which@^2.0.1: +which@^2.0.1, which@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== @@ -8304,7 +9985,7 @@ wildcard@^2.0.0: resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.0.tgz#a77d20e5200c6faaac979e4b3aadc7b3dd7f8fec" integrity sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw== -word-wrap@^1.2.3: +word-wrap@^1.2.3, word-wrap@~1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== @@ -8348,7 +10029,7 @@ wrappy@1: resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= -write-file-atomic@^3.0.3: +write-file-atomic@^3.0.0, write-file-atomic@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== @@ -8372,11 +10053,26 @@ ws@^6.2.1: dependencies: async-limiter "~1.0.0" +ws@^7.4.6: + version "7.5.5" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.5.tgz#8b4bc4af518cfabd0473ae4f99144287b33eb881" + integrity sha512-BAkMFcAzl8as1G/hArkxOxq3G7pjUqQ3gzYbLL0/5zNkph70e+lCoxBGnm6AW1+/aiNeV4fnKqZ8m4GZewmH2w== + x-is-string@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/x-is-string/-/x-is-string-0.1.0.tgz#474b50865af3a49a9c4657f05acd145458f77d82" integrity sha1-R0tQhlrzpJqcRlfwWs0UVFj3fYI= +xml-name-validator@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" + integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== + +xmlchars@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" + integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== + xtend@^4.0.0, xtend@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" @@ -8412,6 +10108,14 @@ yargs-parser@^13.1.2: camelcase "^5.0.0" decamelize "^1.2.0" +yargs-parser@^18.1.2: + version "18.1.3" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" + integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + yargs-parser@^20.2.3: version "20.2.9" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" @@ -8433,6 +10137,23 @@ yargs@^13.3.2: y18n "^4.0.0" yargs-parser "^13.1.2" +yargs@^15.4.1: + version "15.4.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" + integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== + dependencies: + cliui "^6.0.0" + decamelize "^1.2.0" + find-up "^4.1.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^4.2.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^18.1.2" + yocto-queue@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"