diff --git a/.eslintrc b/.eslintrc index 647e3109..40e032d0 100644 --- a/.eslintrc +++ b/.eslintrc @@ -3,6 +3,11 @@ "plugins": [ "react" ], + "settings": { + "react": { + "version": "16.12.0" + } + }, "env": { "browser": true, "node": true, @@ -34,6 +39,7 @@ "object-curly-spacing": ["error", "never", { "objectsInObjects": false }], "no-var": "error", "prefer-const": "error", + "no-prototype-builtins": "off", "react/jsx-uses-react": "error", "react/jsx-uses-vars": "error", "react/prop-types": "off", diff --git a/.stylelintrc b/.stylelintrc new file mode 100644 index 00000000..0307f024 --- /dev/null +++ b/.stylelintrc @@ -0,0 +1,10 @@ +{ + "extends": [ + "stylelint-config-standard" + ], + "rules": { + "indentation": [4, {"except": ["value"], "severity": "warning"}], + "selector-type-case": ["lower", {"ignoreTypes": ["foreignObject"]}], + "no-missing-end-of-source-newline": null + } +} \ No newline at end of file diff --git a/LICENSE b/LICENSE index 2e9a42e6..8831440a 100644 --- a/LICENSE +++ b/LICENSE @@ -1,11 +1,16 @@ Copyright © 2019-2020, Zack Rauen -All rights reserved. +All rights reserved. Code may not be modified and redistributed, or otherwise +used for derivative works and redistributed without explicit permission. -Code may not be redistributed, modified or otherwise taken without explicit permission. +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the “Software”), to deal +in the Software, including without limitation the rights to use, copy, and +distribute unmodified copies of the Software, and to permit persons to whom +the Software is furnished to do so, subject to the following conditions: -Note: As this branch is wholly owned by the above copyrighter, and acts as a separate -entity, the license and granted rights differ from HEAD. +The above copyright notice and this permission notice shall be included in all +copies or portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, diff --git a/dist/index.js b/dist/index.js index 879964ee..005e7c97 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1,4 +1,3 @@ -var Core = /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; @@ -95,7 +94,7 @@ var Core = /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _structs_builtin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../structs/builtin */ \"./src/structs/builtin.js\");\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\n\nconst MessageContent = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getModule(m => m.default && m.default.displayName && m.default.displayName == \"Message\");\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class ColoredText extends _structs_builtin__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n get name() {\n return \"ColoredText\";\n }\n\n get category() {\n return \"appearance\";\n }\n\n get id() {\n return \"coloredText\";\n }\n\n enabled() {\n this.injectColoredText();\n }\n\n disabled() {\n this.unpatchAll();\n }\n\n injectColoredText() {\n this.after(MessageContent.prototype, \"render\", (thisObject, args, retVal) => {\n this.after(retVal.props, \"children\", {\n silent: true,\n after: ({\n returnValue\n }) => {\n const markup = returnValue.props.children[1];\n const roleColor = thisObject.props.message.colorString;\n if (markup && roleColor) markup.props.style = {\n color: roleColor\n };\n }\n });\n });\n }\n\n removeColoredText() {\n document.querySelectorAll(\".markup-2BOw-j\").forEach(elem => {\n elem.style.setProperty(\"color\", \"\");\n });\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL2J1aWx0aW5zL2FwcGVhcmFuY2UvY29sb3JlZHRleHQuanM/ZTQ3MyJdLCJuYW1lcyI6WyJNZXNzYWdlQ29udGVudCIsIldlYnBhY2tNb2R1bGVzIiwiZ2V0TW9kdWxlIiwibSIsImRlZmF1bHQiLCJkaXNwbGF5TmFtZSIsIkNvbG9yZWRUZXh0IiwiQnVpbHRpbiIsIm5hbWUiLCJjYXRlZ29yeSIsImlkIiwiZW5hYmxlZCIsImluamVjdENvbG9yZWRUZXh0IiwiZGlzYWJsZWQiLCJ1bnBhdGNoQWxsIiwiYWZ0ZXIiLCJwcm90b3R5cGUiLCJ0aGlzT2JqZWN0IiwiYXJncyIsInJldFZhbCIsInByb3BzIiwic2lsZW50IiwicmV0dXJuVmFsdWUiLCJtYXJrdXAiLCJjaGlsZHJlbiIsInJvbGVDb2xvciIsIm1lc3NhZ2UiLCJjb2xvclN0cmluZyIsInN0eWxlIiwiY29sb3IiLCJyZW1vdmVDb2xvcmVkVGV4dCIsImRvY3VtZW50IiwicXVlcnlTZWxlY3RvckFsbCIsImZvckVhY2giLCJlbGVtIiwic2V0UHJvcGVydHkiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFFQSxNQUFNQSxjQUFjLEdBQUdDLHNEQUFjLENBQUNDLFNBQWYsQ0FBeUJDLENBQUMsSUFBSUEsQ0FBQyxDQUFDQyxPQUFGLElBQWFELENBQUMsQ0FBQ0MsT0FBRixDQUFVQyxXQUF2QixJQUFzQ0YsQ0FBQyxDQUFDQyxPQUFGLENBQVVDLFdBQVYsSUFBeUIsU0FBN0YsQ0FBdkI7QUFFZSxtRUFBSSxNQUFNQyxXQUFOLFNBQTBCQyx3REFBMUIsQ0FBa0M7QUFDakQsTUFBSUMsSUFBSixHQUFXO0FBQUMsV0FBTyxhQUFQO0FBQXNCOztBQUNsQyxNQUFJQyxRQUFKLEdBQWU7QUFBQyxXQUFPLFlBQVA7QUFBcUI7O0FBQ3JDLE1BQUlDLEVBQUosR0FBUztBQUFDLFdBQU8sYUFBUDtBQUFzQjs7QUFFaENDLFNBQU8sR0FBRztBQUNOLFNBQUtDLGlCQUFMO0FBQ0g7O0FBRURDLFVBQVEsR0FBRztBQUNQLFNBQUtDLFVBQUw7QUFDSDs7QUFFREYsbUJBQWlCLEdBQUc7QUFDaEIsU0FBS0csS0FBTCxDQUFXZixjQUFjLENBQUNnQixTQUExQixFQUFxQyxRQUFyQyxFQUErQyxDQUFDQyxVQUFELEVBQWFDLElBQWIsRUFBbUJDLE1BQW5CLEtBQThCO0FBQ3pFLFdBQUtKLEtBQUwsQ0FBV0ksTUFBTSxDQUFDQyxLQUFsQixFQUF5QixVQUF6QixFQUFxQztBQUFDQyxjQUFNLEVBQUUsSUFBVDtBQUFlTixhQUFLLEVBQUUsQ0FBQztBQUFDTztBQUFELFNBQUQsS0FBbUI7QUFDMUUsZ0JBQU1DLE1BQU0sR0FBR0QsV0FBVyxDQUFDRixLQUFaLENBQWtCSSxRQUFsQixDQUEyQixDQUEzQixDQUFmO0FBQ0EsZ0JBQU1DLFNBQVMsR0FBR1IsVUFBVSxDQUFDRyxLQUFYLENBQWlCTSxPQUFqQixDQUF5QkMsV0FBM0M7QUFDQSxjQUFJSixNQUFNLElBQUlFLFNBQWQsRUFBeUJGLE1BQU0sQ0FBQ0gsS0FBUCxDQUFhUSxLQUFiLEdBQXFCO0FBQUNDLGlCQUFLLEVBQUVKO0FBQVIsV0FBckI7QUFDNUI7QUFKb0MsT0FBckM7QUFLSCxLQU5EO0FBT0g7O0FBRURLLG1CQUFpQixHQUFHO0FBQ2hCQyxZQUFRLENBQUNDLGdCQUFULENBQTBCLGdCQUExQixFQUE0Q0MsT0FBNUMsQ0FBb0RDLElBQUksSUFBSTtBQUN4REEsVUFBSSxDQUFDTixLQUFMLENBQVdPLFdBQVgsQ0FBdUIsT0FBdkIsRUFBZ0MsRUFBaEM7QUFDSCxLQUZEO0FBR0g7O0FBM0JnRCxDQUF0QyxFQUFmIiwiZmlsZSI6Ii4vc3JjL2J1aWx0aW5zL2FwcGVhcmFuY2UvY29sb3JlZHRleHQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQnVpbHRpbiBmcm9tIFwiLi4vLi4vc3RydWN0cy9idWlsdGluXCI7XHJcbmltcG9ydCB7V2VicGFja01vZHVsZXN9IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5jb25zdCBNZXNzYWdlQ29udGVudCA9IFdlYnBhY2tNb2R1bGVzLmdldE1vZHVsZShtID0+IG0uZGVmYXVsdCAmJiBtLmRlZmF1bHQuZGlzcGxheU5hbWUgJiYgbS5kZWZhdWx0LmRpc3BsYXlOYW1lID09IFwiTWVzc2FnZVwiKTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IG5ldyBjbGFzcyBDb2xvcmVkVGV4dCBleHRlbmRzIEJ1aWx0aW4ge1xyXG4gICAgZ2V0IG5hbWUoKSB7cmV0dXJuIFwiQ29sb3JlZFRleHRcIjt9XHJcbiAgICBnZXQgY2F0ZWdvcnkoKSB7cmV0dXJuIFwiYXBwZWFyYW5jZVwiO31cclxuICAgIGdldCBpZCgpIHtyZXR1cm4gXCJjb2xvcmVkVGV4dFwiO31cclxuXHJcbiAgICBlbmFibGVkKCkge1xyXG4gICAgICAgIHRoaXMuaW5qZWN0Q29sb3JlZFRleHQoKTtcclxuICAgIH1cclxuXHJcbiAgICBkaXNhYmxlZCgpIHtcclxuICAgICAgICB0aGlzLnVucGF0Y2hBbGwoKTtcclxuICAgIH1cclxuXHJcbiAgICBpbmplY3RDb2xvcmVkVGV4dCgpIHtcclxuICAgICAgICB0aGlzLmFmdGVyKE1lc3NhZ2VDb250ZW50LnByb3RvdHlwZSwgXCJyZW5kZXJcIiwgKHRoaXNPYmplY3QsIGFyZ3MsIHJldFZhbCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmFmdGVyKHJldFZhbC5wcm9wcywgXCJjaGlsZHJlblwiLCB7c2lsZW50OiB0cnVlLCBhZnRlcjogKHtyZXR1cm5WYWx1ZX0pID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG1hcmt1cCA9IHJldHVyblZhbHVlLnByb3BzLmNoaWxkcmVuWzFdO1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgcm9sZUNvbG9yID0gdGhpc09iamVjdC5wcm9wcy5tZXNzYWdlLmNvbG9yU3RyaW5nO1xyXG4gICAgICAgICAgICAgICAgaWYgKG1hcmt1cCAmJiByb2xlQ29sb3IpIG1hcmt1cC5wcm9wcy5zdHlsZSA9IHtjb2xvcjogcm9sZUNvbG9yfTtcclxuICAgICAgICAgICAgfX0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbW92ZUNvbG9yZWRUZXh0KCkge1xyXG4gICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCIubWFya3VwLTJCT3ctalwiKS5mb3JFYWNoKGVsZW0gPT4ge1xyXG4gICAgICAgICAgICBlbGVtLnN0eWxlLnNldFByb3BlcnR5KFwiY29sb3JcIiwgXCJcIik7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/builtins/appearance/coloredtext.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _structs_builtin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../structs/builtin */ \"./src/structs/builtin.js\");\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\n\nconst MessageContent = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getModule(m => m.default && m.default.displayName && m.default.displayName == \"Message\");\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class ColoredText extends _structs_builtin__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n get name() {\n return \"ColoredText\";\n }\n\n get category() {\n return \"appearance\";\n }\n\n get id() {\n return \"coloredText\";\n }\n\n enabled() {\n this.injectColoredText();\n }\n\n disabled() {\n this.unpatchAll();\n }\n\n injectColoredText() {\n this.after(MessageContent.prototype, \"render\", (thisObject, args, retVal) => {\n this.after(retVal.props, \"children\", {\n silent: true,\n after: ({\n returnValue\n }) => {\n const markup = returnValue.props.children[1];\n const roleColor = thisObject.props.message.colorString;\n if (markup && roleColor) markup.props.style = {\n color: roleColor\n };\n }\n });\n });\n }\n\n removeColoredText() {\n document.querySelectorAll(\".markup-2BOw-j\").forEach(elem => {\n elem.style.setProperty(\"color\", \"\");\n });\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYnVpbHRpbnMvYXBwZWFyYW5jZS9jb2xvcmVkdGV4dC5qcz9lNDczIl0sIm5hbWVzIjpbIk1lc3NhZ2VDb250ZW50IiwiV2VicGFja01vZHVsZXMiLCJnZXRNb2R1bGUiLCJtIiwiZGVmYXVsdCIsImRpc3BsYXlOYW1lIiwiQ29sb3JlZFRleHQiLCJCdWlsdGluIiwibmFtZSIsImNhdGVnb3J5IiwiaWQiLCJlbmFibGVkIiwiaW5qZWN0Q29sb3JlZFRleHQiLCJkaXNhYmxlZCIsInVucGF0Y2hBbGwiLCJhZnRlciIsInByb3RvdHlwZSIsInRoaXNPYmplY3QiLCJhcmdzIiwicmV0VmFsIiwicHJvcHMiLCJzaWxlbnQiLCJyZXR1cm5WYWx1ZSIsIm1hcmt1cCIsImNoaWxkcmVuIiwicm9sZUNvbG9yIiwibWVzc2FnZSIsImNvbG9yU3RyaW5nIiwic3R5bGUiLCJjb2xvciIsInJlbW92ZUNvbG9yZWRUZXh0IiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yQWxsIiwiZm9yRWFjaCIsImVsZW0iLCJzZXRQcm9wZXJ0eSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUVBLE1BQU1BLGNBQWMsR0FBR0Msc0RBQWMsQ0FBQ0MsU0FBZixDQUF5QkMsQ0FBQyxJQUFJQSxDQUFDLENBQUNDLE9BQUYsSUFBYUQsQ0FBQyxDQUFDQyxPQUFGLENBQVVDLFdBQXZCLElBQXNDRixDQUFDLENBQUNDLE9BQUYsQ0FBVUMsV0FBVixJQUF5QixTQUE3RixDQUF2QjtBQUVlLG1FQUFJLE1BQU1DLFdBQU4sU0FBMEJDLHdEQUExQixDQUFrQztBQUNqRCxNQUFJQyxJQUFKLEdBQVc7QUFBQyxXQUFPLGFBQVA7QUFBc0I7O0FBQ2xDLE1BQUlDLFFBQUosR0FBZTtBQUFDLFdBQU8sWUFBUDtBQUFxQjs7QUFDckMsTUFBSUMsRUFBSixHQUFTO0FBQUMsV0FBTyxhQUFQO0FBQXNCOztBQUVoQ0MsU0FBTyxHQUFHO0FBQ04sU0FBS0MsaUJBQUw7QUFDSDs7QUFFREMsVUFBUSxHQUFHO0FBQ1AsU0FBS0MsVUFBTDtBQUNIOztBQUVERixtQkFBaUIsR0FBRztBQUNoQixTQUFLRyxLQUFMLENBQVdmLGNBQWMsQ0FBQ2dCLFNBQTFCLEVBQXFDLFFBQXJDLEVBQStDLENBQUNDLFVBQUQsRUFBYUMsSUFBYixFQUFtQkMsTUFBbkIsS0FBOEI7QUFDekUsV0FBS0osS0FBTCxDQUFXSSxNQUFNLENBQUNDLEtBQWxCLEVBQXlCLFVBQXpCLEVBQXFDO0FBQUNDLGNBQU0sRUFBRSxJQUFUO0FBQWVOLGFBQUssRUFBRSxDQUFDO0FBQUNPO0FBQUQsU0FBRCxLQUFtQjtBQUMxRSxnQkFBTUMsTUFBTSxHQUFHRCxXQUFXLENBQUNGLEtBQVosQ0FBa0JJLFFBQWxCLENBQTJCLENBQTNCLENBQWY7QUFDQSxnQkFBTUMsU0FBUyxHQUFHUixVQUFVLENBQUNHLEtBQVgsQ0FBaUJNLE9BQWpCLENBQXlCQyxXQUEzQztBQUNBLGNBQUlKLE1BQU0sSUFBSUUsU0FBZCxFQUF5QkYsTUFBTSxDQUFDSCxLQUFQLENBQWFRLEtBQWIsR0FBcUI7QUFBQ0MsaUJBQUssRUFBRUo7QUFBUixXQUFyQjtBQUM1QjtBQUpvQyxPQUFyQztBQUtILEtBTkQ7QUFPSDs7QUFFREssbUJBQWlCLEdBQUc7QUFDaEJDLFlBQVEsQ0FBQ0MsZ0JBQVQsQ0FBMEIsZ0JBQTFCLEVBQTRDQyxPQUE1QyxDQUFvREMsSUFBSSxJQUFJO0FBQ3hEQSxVQUFJLENBQUNOLEtBQUwsQ0FBV08sV0FBWCxDQUF1QixPQUF2QixFQUFnQyxFQUFoQztBQUNILEtBRkQ7QUFHSDs7QUEzQmdELENBQXRDLEVBQWYiLCJmaWxlIjoiLi9zcmMvYnVpbHRpbnMvYXBwZWFyYW5jZS9jb2xvcmVkdGV4dC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCdWlsdGluIGZyb20gXCIuLi8uLi9zdHJ1Y3RzL2J1aWx0aW5cIjtcclxuaW1wb3J0IHtXZWJwYWNrTW9kdWxlc30gZnJvbSBcIm1vZHVsZXNcIjtcclxuXHJcbmNvbnN0IE1lc3NhZ2VDb250ZW50ID0gV2VicGFja01vZHVsZXMuZ2V0TW9kdWxlKG0gPT4gbS5kZWZhdWx0ICYmIG0uZGVmYXVsdC5kaXNwbGF5TmFtZSAmJiBtLmRlZmF1bHQuZGlzcGxheU5hbWUgPT0gXCJNZXNzYWdlXCIpO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgbmV3IGNsYXNzIENvbG9yZWRUZXh0IGV4dGVuZHMgQnVpbHRpbiB7XHJcbiAgICBnZXQgbmFtZSgpIHtyZXR1cm4gXCJDb2xvcmVkVGV4dFwiO31cclxuICAgIGdldCBjYXRlZ29yeSgpIHtyZXR1cm4gXCJhcHBlYXJhbmNlXCI7fVxyXG4gICAgZ2V0IGlkKCkge3JldHVybiBcImNvbG9yZWRUZXh0XCI7fVxyXG5cclxuICAgIGVuYWJsZWQoKSB7XHJcbiAgICAgICAgdGhpcy5pbmplY3RDb2xvcmVkVGV4dCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGRpc2FibGVkKCkge1xyXG4gICAgICAgIHRoaXMudW5wYXRjaEFsbCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGluamVjdENvbG9yZWRUZXh0KCkge1xyXG4gICAgICAgIHRoaXMuYWZ0ZXIoTWVzc2FnZUNvbnRlbnQucHJvdG90eXBlLCBcInJlbmRlclwiLCAodGhpc09iamVjdCwgYXJncywgcmV0VmFsKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuYWZ0ZXIocmV0VmFsLnByb3BzLCBcImNoaWxkcmVuXCIsIHtzaWxlbnQ6IHRydWUsIGFmdGVyOiAoe3JldHVyblZhbHVlfSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbWFya3VwID0gcmV0dXJuVmFsdWUucHJvcHMuY2hpbGRyZW5bMV07XHJcbiAgICAgICAgICAgICAgICBjb25zdCByb2xlQ29sb3IgPSB0aGlzT2JqZWN0LnByb3BzLm1lc3NhZ2UuY29sb3JTdHJpbmc7XHJcbiAgICAgICAgICAgICAgICBpZiAobWFya3VwICYmIHJvbGVDb2xvcikgbWFya3VwLnByb3BzLnN0eWxlID0ge2NvbG9yOiByb2xlQ29sb3J9O1xyXG4gICAgICAgICAgICB9fSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVtb3ZlQ29sb3JlZFRleHQoKSB7XHJcbiAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcIi5tYXJrdXAtMkJPdy1qXCIpLmZvckVhY2goZWxlbSA9PiB7XHJcbiAgICAgICAgICAgIGVsZW0uc3R5bGUuc2V0UHJvcGVydHkoXCJjb2xvclwiLCBcIlwiKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/builtins/appearance/coloredtext.js\n"); /***/ }), @@ -107,7 +106,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _str /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _structs_builtin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../structs/builtin */ \"./src/structs/builtin.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class DarkMode extends _structs_builtin__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n get name() {\n return \"DarkMode\";\n }\n\n get category() {\n return \"appearance\";\n }\n\n get id() {\n return \"darkMode\";\n }\n\n enabled() {\n document.getElementById(\"app-mount\").classList.add(\"bda-dark\", \"bd-dark\");\n }\n\n disabled() {\n document.getElementById(\"app-mount\").classList.remove(\"bda-dark\", \"bd-dark\");\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL2J1aWx0aW5zL2FwcGVhcmFuY2UvZGFya21vZGUuanM/NTIyMCJdLCJuYW1lcyI6WyJEYXJrTW9kZSIsIkJ1aWx0aW4iLCJuYW1lIiwiY2F0ZWdvcnkiLCJpZCIsImVuYWJsZWQiLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwiY2xhc3NMaXN0IiwiYWRkIiwiZGlzYWJsZWQiLCJyZW1vdmUiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUVlLG1FQUFJLE1BQU1BLFFBQU4sU0FBdUJDLHdEQUF2QixDQUErQjtBQUM5QyxNQUFJQyxJQUFKLEdBQVc7QUFBQyxXQUFPLFVBQVA7QUFBbUI7O0FBQy9CLE1BQUlDLFFBQUosR0FBZTtBQUFDLFdBQU8sWUFBUDtBQUFxQjs7QUFDckMsTUFBSUMsRUFBSixHQUFTO0FBQUMsV0FBTyxVQUFQO0FBQW1COztBQUU3QkMsU0FBTyxHQUFHO0FBQ05DLFlBQVEsQ0FBQ0MsY0FBVCxDQUF3QixXQUF4QixFQUFxQ0MsU0FBckMsQ0FBK0NDLEdBQS9DLENBQW1ELFVBQW5ELEVBQStELFNBQS9EO0FBQ0g7O0FBRURDLFVBQVEsR0FBRztBQUNQSixZQUFRLENBQUNDLGNBQVQsQ0FBd0IsV0FBeEIsRUFBcUNDLFNBQXJDLENBQStDRyxNQUEvQyxDQUFzRCxVQUF0RCxFQUFrRSxTQUFsRTtBQUNIOztBQVg2QyxDQUFuQyxFQUFmIiwiZmlsZSI6Ii4vc3JjL2J1aWx0aW5zL2FwcGVhcmFuY2UvZGFya21vZGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQnVpbHRpbiBmcm9tIFwiLi4vLi4vc3RydWN0cy9idWlsdGluXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBuZXcgY2xhc3MgRGFya01vZGUgZXh0ZW5kcyBCdWlsdGluIHtcclxuICAgIGdldCBuYW1lKCkge3JldHVybiBcIkRhcmtNb2RlXCI7fVxyXG4gICAgZ2V0IGNhdGVnb3J5KCkge3JldHVybiBcImFwcGVhcmFuY2VcIjt9XHJcbiAgICBnZXQgaWQoKSB7cmV0dXJuIFwiZGFya01vZGVcIjt9XHJcblxyXG4gICAgZW5hYmxlZCgpIHtcclxuICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImFwcC1tb3VudFwiKS5jbGFzc0xpc3QuYWRkKFwiYmRhLWRhcmtcIiwgXCJiZC1kYXJrXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIGRpc2FibGVkKCkge1xyXG4gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiYXBwLW1vdW50XCIpLmNsYXNzTGlzdC5yZW1vdmUoXCJiZGEtZGFya1wiLCBcImJkLWRhcmtcIik7XHJcbiAgICB9XHJcbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/builtins/appearance/darkmode.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _structs_builtin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../structs/builtin */ \"./src/structs/builtin.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class DarkMode extends _structs_builtin__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n get name() {\n return \"DarkMode\";\n }\n\n get category() {\n return \"appearance\";\n }\n\n get id() {\n return \"darkMode\";\n }\n\n enabled() {\n document.getElementById(\"app-mount\").classList.add(\"bda-dark\", \"bd-dark\");\n }\n\n disabled() {\n document.getElementById(\"app-mount\").classList.remove(\"bda-dark\", \"bd-dark\");\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYnVpbHRpbnMvYXBwZWFyYW5jZS9kYXJrbW9kZS5qcz81MjIwIl0sIm5hbWVzIjpbIkRhcmtNb2RlIiwiQnVpbHRpbiIsIm5hbWUiLCJjYXRlZ29yeSIsImlkIiwiZW5hYmxlZCIsImRvY3VtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJjbGFzc0xpc3QiLCJhZGQiLCJkaXNhYmxlZCIsInJlbW92ZSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBRWUsbUVBQUksTUFBTUEsUUFBTixTQUF1QkMsd0RBQXZCLENBQStCO0FBQzlDLE1BQUlDLElBQUosR0FBVztBQUFDLFdBQU8sVUFBUDtBQUFtQjs7QUFDL0IsTUFBSUMsUUFBSixHQUFlO0FBQUMsV0FBTyxZQUFQO0FBQXFCOztBQUNyQyxNQUFJQyxFQUFKLEdBQVM7QUFBQyxXQUFPLFVBQVA7QUFBbUI7O0FBRTdCQyxTQUFPLEdBQUc7QUFDTkMsWUFBUSxDQUFDQyxjQUFULENBQXdCLFdBQXhCLEVBQXFDQyxTQUFyQyxDQUErQ0MsR0FBL0MsQ0FBbUQsVUFBbkQsRUFBK0QsU0FBL0Q7QUFDSDs7QUFFREMsVUFBUSxHQUFHO0FBQ1BKLFlBQVEsQ0FBQ0MsY0FBVCxDQUF3QixXQUF4QixFQUFxQ0MsU0FBckMsQ0FBK0NHLE1BQS9DLENBQXNELFVBQXRELEVBQWtFLFNBQWxFO0FBQ0g7O0FBWDZDLENBQW5DLEVBQWYiLCJmaWxlIjoiLi9zcmMvYnVpbHRpbnMvYXBwZWFyYW5jZS9kYXJrbW9kZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCdWlsdGluIGZyb20gXCIuLi8uLi9zdHJ1Y3RzL2J1aWx0aW5cIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IG5ldyBjbGFzcyBEYXJrTW9kZSBleHRlbmRzIEJ1aWx0aW4ge1xyXG4gICAgZ2V0IG5hbWUoKSB7cmV0dXJuIFwiRGFya01vZGVcIjt9XHJcbiAgICBnZXQgY2F0ZWdvcnkoKSB7cmV0dXJuIFwiYXBwZWFyYW5jZVwiO31cclxuICAgIGdldCBpZCgpIHtyZXR1cm4gXCJkYXJrTW9kZVwiO31cclxuXHJcbiAgICBlbmFibGVkKCkge1xyXG4gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiYXBwLW1vdW50XCIpLmNsYXNzTGlzdC5hZGQoXCJiZGEtZGFya1wiLCBcImJkLWRhcmtcIik7XHJcbiAgICB9XHJcblxyXG4gICAgZGlzYWJsZWQoKSB7XHJcbiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJhcHAtbW91bnRcIikuY2xhc3NMaXN0LnJlbW92ZShcImJkYS1kYXJrXCIsIFwiYmQtZGFya1wiKTtcclxuICAgIH1cclxufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/builtins/appearance/darkmode.js\n"); /***/ }), @@ -119,7 +118,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _str /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _structs_builtin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../structs/builtin */ \"./src/structs/builtin.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class MinimalMode extends _structs_builtin__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n get name() {\n return \"MinimalMode\";\n }\n\n get category() {\n return \"appearance\";\n }\n\n get id() {\n return \"minimalMode\";\n }\n\n get hideChannelsID() {\n return \"hideChannels\";\n }\n\n get hideChannels() {\n return this.get(this.hideChannelsID);\n }\n\n constructor() {\n super();\n this.enableHideChannels = this.enableHideChannels.bind(this);\n this.disableHideChannels = this.disableHideChannels.bind(this);\n }\n\n enabled() {\n document.body.classList.add(\"bd-minimal\");\n if (this.hideChannels) this.enableHideChannels();\n this.hideChannelCancel = this.registerSetting(this.hideChannelsID, this.enableHideChannels, this.disableHideChannels);\n }\n\n disabled() {\n document.body.classList.remove(\"bd-minimal\");\n if (this.hideChannels) this.disableHideChannels();\n if (this.hideChannelCancel) this.hideChannelCancel();\n }\n\n enableHideChannels() {\n document.body.classList.add(\"bd-minimal-chan\");\n }\n\n disableHideChannels() {\n document.body.classList.remove(\"bd-minimal-chan\");\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL2J1aWx0aW5zL2FwcGVhcmFuY2UvbWluaW1hbG1vZGUuanM/NWQyMSJdLCJuYW1lcyI6WyJNaW5pbWFsTW9kZSIsIkJ1aWx0aW4iLCJuYW1lIiwiY2F0ZWdvcnkiLCJpZCIsImhpZGVDaGFubmVsc0lEIiwiaGlkZUNoYW5uZWxzIiwiZ2V0IiwiY29uc3RydWN0b3IiLCJlbmFibGVIaWRlQ2hhbm5lbHMiLCJiaW5kIiwiZGlzYWJsZUhpZGVDaGFubmVscyIsImVuYWJsZWQiLCJkb2N1bWVudCIsImJvZHkiLCJjbGFzc0xpc3QiLCJhZGQiLCJoaWRlQ2hhbm5lbENhbmNlbCIsInJlZ2lzdGVyU2V0dGluZyIsImRpc2FibGVkIiwicmVtb3ZlIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFFZSxtRUFBSSxNQUFNQSxXQUFOLFNBQTBCQyx3REFBMUIsQ0FBa0M7QUFDakQsTUFBSUMsSUFBSixHQUFXO0FBQUMsV0FBTyxhQUFQO0FBQXNCOztBQUNsQyxNQUFJQyxRQUFKLEdBQWU7QUFBQyxXQUFPLFlBQVA7QUFBcUI7O0FBQ3JDLE1BQUlDLEVBQUosR0FBUztBQUFDLFdBQU8sYUFBUDtBQUFzQjs7QUFDaEMsTUFBSUMsY0FBSixHQUFxQjtBQUFDLFdBQU8sY0FBUDtBQUF1Qjs7QUFDN0MsTUFBSUMsWUFBSixHQUFtQjtBQUFDLFdBQU8sS0FBS0MsR0FBTCxDQUFTLEtBQUtGLGNBQWQsQ0FBUDtBQUFzQzs7QUFFMURHLGFBQVcsR0FBRztBQUNWO0FBQ0EsU0FBS0Msa0JBQUwsR0FBMEIsS0FBS0Esa0JBQUwsQ0FBd0JDLElBQXhCLENBQTZCLElBQTdCLENBQTFCO0FBQ0EsU0FBS0MsbUJBQUwsR0FBMkIsS0FBS0EsbUJBQUwsQ0FBeUJELElBQXpCLENBQThCLElBQTlCLENBQTNCO0FBQ0g7O0FBRURFLFNBQU8sR0FBRztBQUNOQyxZQUFRLENBQUNDLElBQVQsQ0FBY0MsU0FBZCxDQUF3QkMsR0FBeEIsQ0FBNEIsWUFBNUI7QUFDQSxRQUFJLEtBQUtWLFlBQVQsRUFBdUIsS0FBS0csa0JBQUw7QUFDdkIsU0FBS1EsaUJBQUwsR0FBeUIsS0FBS0MsZUFBTCxDQUFxQixLQUFLYixjQUExQixFQUEwQyxLQUFLSSxrQkFBL0MsRUFBbUUsS0FBS0UsbUJBQXhFLENBQXpCO0FBQ0g7O0FBRURRLFVBQVEsR0FBRztBQUNQTixZQUFRLENBQUNDLElBQVQsQ0FBY0MsU0FBZCxDQUF3QkssTUFBeEIsQ0FBK0IsWUFBL0I7QUFDQSxRQUFJLEtBQUtkLFlBQVQsRUFBdUIsS0FBS0ssbUJBQUw7QUFDdkIsUUFBSSxLQUFLTSxpQkFBVCxFQUE0QixLQUFLQSxpQkFBTDtBQUMvQjs7QUFFRFIsb0JBQWtCLEdBQUc7QUFDakJJLFlBQVEsQ0FBQ0MsSUFBVCxDQUFjQyxTQUFkLENBQXdCQyxHQUF4QixDQUE0QixpQkFBNUI7QUFDSDs7QUFFREwscUJBQW1CLEdBQUc7QUFDbEJFLFlBQVEsQ0FBQ0MsSUFBVCxDQUFjQyxTQUFkLENBQXdCSyxNQUF4QixDQUErQixpQkFBL0I7QUFDSDs7QUEvQmdELENBQXRDLEVBQWYiLCJmaWxlIjoiLi9zcmMvYnVpbHRpbnMvYXBwZWFyYW5jZS9taW5pbWFsbW9kZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCdWlsdGluIGZyb20gXCIuLi8uLi9zdHJ1Y3RzL2J1aWx0aW5cIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IG5ldyBjbGFzcyBNaW5pbWFsTW9kZSBleHRlbmRzIEJ1aWx0aW4ge1xyXG4gICAgZ2V0IG5hbWUoKSB7cmV0dXJuIFwiTWluaW1hbE1vZGVcIjt9XHJcbiAgICBnZXQgY2F0ZWdvcnkoKSB7cmV0dXJuIFwiYXBwZWFyYW5jZVwiO31cclxuICAgIGdldCBpZCgpIHtyZXR1cm4gXCJtaW5pbWFsTW9kZVwiO31cclxuICAgIGdldCBoaWRlQ2hhbm5lbHNJRCgpIHtyZXR1cm4gXCJoaWRlQ2hhbm5lbHNcIjt9XHJcbiAgICBnZXQgaGlkZUNoYW5uZWxzKCkge3JldHVybiB0aGlzLmdldCh0aGlzLmhpZGVDaGFubmVsc0lEKTt9XHJcblxyXG4gICAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICB0aGlzLmVuYWJsZUhpZGVDaGFubmVscyA9IHRoaXMuZW5hYmxlSGlkZUNoYW5uZWxzLmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlSGlkZUNoYW5uZWxzID0gdGhpcy5kaXNhYmxlSGlkZUNoYW5uZWxzLmJpbmQodGhpcyk7XHJcbiAgICB9XHJcblxyXG4gICAgZW5hYmxlZCgpIHtcclxuICAgICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoXCJiZC1taW5pbWFsXCIpO1xyXG4gICAgICAgIGlmICh0aGlzLmhpZGVDaGFubmVscykgdGhpcy5lbmFibGVIaWRlQ2hhbm5lbHMoKTtcclxuICAgICAgICB0aGlzLmhpZGVDaGFubmVsQ2FuY2VsID0gdGhpcy5yZWdpc3RlclNldHRpbmcodGhpcy5oaWRlQ2hhbm5lbHNJRCwgdGhpcy5lbmFibGVIaWRlQ2hhbm5lbHMsIHRoaXMuZGlzYWJsZUhpZGVDaGFubmVscyk7XHJcbiAgICB9XHJcblxyXG4gICAgZGlzYWJsZWQoKSB7XHJcbiAgICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKFwiYmQtbWluaW1hbFwiKTtcclxuICAgICAgICBpZiAodGhpcy5oaWRlQ2hhbm5lbHMpIHRoaXMuZGlzYWJsZUhpZGVDaGFubmVscygpO1xyXG4gICAgICAgIGlmICh0aGlzLmhpZGVDaGFubmVsQ2FuY2VsKSB0aGlzLmhpZGVDaGFubmVsQ2FuY2VsKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZW5hYmxlSGlkZUNoYW5uZWxzKCkge1xyXG4gICAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZChcImJkLW1pbmltYWwtY2hhblwiKTtcclxuICAgIH1cclxuXHJcbiAgICBkaXNhYmxlSGlkZUNoYW5uZWxzKCkge1xyXG4gICAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZShcImJkLW1pbmltYWwtY2hhblwiKTtcclxuICAgIH1cclxufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/builtins/appearance/minimalmode.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _structs_builtin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../structs/builtin */ \"./src/structs/builtin.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class MinimalMode extends _structs_builtin__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n get name() {\n return \"MinimalMode\";\n }\n\n get category() {\n return \"appearance\";\n }\n\n get id() {\n return \"minimalMode\";\n }\n\n get hideChannelsID() {\n return \"hideChannels\";\n }\n\n get hideChannels() {\n return this.get(this.hideChannelsID);\n }\n\n constructor() {\n super();\n this.enableHideChannels = this.enableHideChannels.bind(this);\n this.disableHideChannels = this.disableHideChannels.bind(this);\n }\n\n enabled() {\n document.body.classList.add(\"bd-minimal\");\n if (this.hideChannels) this.enableHideChannels();\n this.hideChannelCancel = this.registerSetting(this.hideChannelsID, this.enableHideChannels, this.disableHideChannels);\n }\n\n disabled() {\n document.body.classList.remove(\"bd-minimal\");\n if (this.hideChannels) this.disableHideChannels();\n if (this.hideChannelCancel) this.hideChannelCancel();\n }\n\n enableHideChannels() {\n document.body.classList.add(\"bd-minimal-chan\");\n }\n\n disableHideChannels() {\n document.body.classList.remove(\"bd-minimal-chan\");\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYnVpbHRpbnMvYXBwZWFyYW5jZS9taW5pbWFsbW9kZS5qcz81ZDIxIl0sIm5hbWVzIjpbIk1pbmltYWxNb2RlIiwiQnVpbHRpbiIsIm5hbWUiLCJjYXRlZ29yeSIsImlkIiwiaGlkZUNoYW5uZWxzSUQiLCJoaWRlQ2hhbm5lbHMiLCJnZXQiLCJjb25zdHJ1Y3RvciIsImVuYWJsZUhpZGVDaGFubmVscyIsImJpbmQiLCJkaXNhYmxlSGlkZUNoYW5uZWxzIiwiZW5hYmxlZCIsImRvY3VtZW50IiwiYm9keSIsImNsYXNzTGlzdCIsImFkZCIsImhpZGVDaGFubmVsQ2FuY2VsIiwicmVnaXN0ZXJTZXR0aW5nIiwiZGlzYWJsZWQiLCJyZW1vdmUiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUVlLG1FQUFJLE1BQU1BLFdBQU4sU0FBMEJDLHdEQUExQixDQUFrQztBQUNqRCxNQUFJQyxJQUFKLEdBQVc7QUFBQyxXQUFPLGFBQVA7QUFBc0I7O0FBQ2xDLE1BQUlDLFFBQUosR0FBZTtBQUFDLFdBQU8sWUFBUDtBQUFxQjs7QUFDckMsTUFBSUMsRUFBSixHQUFTO0FBQUMsV0FBTyxhQUFQO0FBQXNCOztBQUNoQyxNQUFJQyxjQUFKLEdBQXFCO0FBQUMsV0FBTyxjQUFQO0FBQXVCOztBQUM3QyxNQUFJQyxZQUFKLEdBQW1CO0FBQUMsV0FBTyxLQUFLQyxHQUFMLENBQVMsS0FBS0YsY0FBZCxDQUFQO0FBQXNDOztBQUUxREcsYUFBVyxHQUFHO0FBQ1Y7QUFDQSxTQUFLQyxrQkFBTCxHQUEwQixLQUFLQSxrQkFBTCxDQUF3QkMsSUFBeEIsQ0FBNkIsSUFBN0IsQ0FBMUI7QUFDQSxTQUFLQyxtQkFBTCxHQUEyQixLQUFLQSxtQkFBTCxDQUF5QkQsSUFBekIsQ0FBOEIsSUFBOUIsQ0FBM0I7QUFDSDs7QUFFREUsU0FBTyxHQUFHO0FBQ05DLFlBQVEsQ0FBQ0MsSUFBVCxDQUFjQyxTQUFkLENBQXdCQyxHQUF4QixDQUE0QixZQUE1QjtBQUNBLFFBQUksS0FBS1YsWUFBVCxFQUF1QixLQUFLRyxrQkFBTDtBQUN2QixTQUFLUSxpQkFBTCxHQUF5QixLQUFLQyxlQUFMLENBQXFCLEtBQUtiLGNBQTFCLEVBQTBDLEtBQUtJLGtCQUEvQyxFQUFtRSxLQUFLRSxtQkFBeEUsQ0FBekI7QUFDSDs7QUFFRFEsVUFBUSxHQUFHO0FBQ1BOLFlBQVEsQ0FBQ0MsSUFBVCxDQUFjQyxTQUFkLENBQXdCSyxNQUF4QixDQUErQixZQUEvQjtBQUNBLFFBQUksS0FBS2QsWUFBVCxFQUF1QixLQUFLSyxtQkFBTDtBQUN2QixRQUFJLEtBQUtNLGlCQUFULEVBQTRCLEtBQUtBLGlCQUFMO0FBQy9COztBQUVEUixvQkFBa0IsR0FBRztBQUNqQkksWUFBUSxDQUFDQyxJQUFULENBQWNDLFNBQWQsQ0FBd0JDLEdBQXhCLENBQTRCLGlCQUE1QjtBQUNIOztBQUVETCxxQkFBbUIsR0FBRztBQUNsQkUsWUFBUSxDQUFDQyxJQUFULENBQWNDLFNBQWQsQ0FBd0JLLE1BQXhCLENBQStCLGlCQUEvQjtBQUNIOztBQS9CZ0QsQ0FBdEMsRUFBZiIsImZpbGUiOiIuL3NyYy9idWlsdGlucy9hcHBlYXJhbmNlL21pbmltYWxtb2RlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJ1aWx0aW4gZnJvbSBcIi4uLy4uL3N0cnVjdHMvYnVpbHRpblwiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgbmV3IGNsYXNzIE1pbmltYWxNb2RlIGV4dGVuZHMgQnVpbHRpbiB7XHJcbiAgICBnZXQgbmFtZSgpIHtyZXR1cm4gXCJNaW5pbWFsTW9kZVwiO31cclxuICAgIGdldCBjYXRlZ29yeSgpIHtyZXR1cm4gXCJhcHBlYXJhbmNlXCI7fVxyXG4gICAgZ2V0IGlkKCkge3JldHVybiBcIm1pbmltYWxNb2RlXCI7fVxyXG4gICAgZ2V0IGhpZGVDaGFubmVsc0lEKCkge3JldHVybiBcImhpZGVDaGFubmVsc1wiO31cclxuICAgIGdldCBoaWRlQ2hhbm5lbHMoKSB7cmV0dXJuIHRoaXMuZ2V0KHRoaXMuaGlkZUNoYW5uZWxzSUQpO31cclxuXHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIHRoaXMuZW5hYmxlSGlkZUNoYW5uZWxzID0gdGhpcy5lbmFibGVIaWRlQ2hhbm5lbHMuYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLmRpc2FibGVIaWRlQ2hhbm5lbHMgPSB0aGlzLmRpc2FibGVIaWRlQ2hhbm5lbHMuYmluZCh0aGlzKTtcclxuICAgIH1cclxuXHJcbiAgICBlbmFibGVkKCkge1xyXG4gICAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZChcImJkLW1pbmltYWxcIik7XHJcbiAgICAgICAgaWYgKHRoaXMuaGlkZUNoYW5uZWxzKSB0aGlzLmVuYWJsZUhpZGVDaGFubmVscygpO1xyXG4gICAgICAgIHRoaXMuaGlkZUNoYW5uZWxDYW5jZWwgPSB0aGlzLnJlZ2lzdGVyU2V0dGluZyh0aGlzLmhpZGVDaGFubmVsc0lELCB0aGlzLmVuYWJsZUhpZGVDaGFubmVscywgdGhpcy5kaXNhYmxlSGlkZUNoYW5uZWxzKTtcclxuICAgIH1cclxuXHJcbiAgICBkaXNhYmxlZCgpIHtcclxuICAgICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoXCJiZC1taW5pbWFsXCIpO1xyXG4gICAgICAgIGlmICh0aGlzLmhpZGVDaGFubmVscykgdGhpcy5kaXNhYmxlSGlkZUNoYW5uZWxzKCk7XHJcbiAgICAgICAgaWYgKHRoaXMuaGlkZUNoYW5uZWxDYW5jZWwpIHRoaXMuaGlkZUNoYW5uZWxDYW5jZWwoKTtcclxuICAgIH1cclxuXHJcbiAgICBlbmFibGVIaWRlQ2hhbm5lbHMoKSB7XHJcbiAgICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKFwiYmQtbWluaW1hbC1jaGFuXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIGRpc2FibGVIaWRlQ2hhbm5lbHMoKSB7XHJcbiAgICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKFwiYmQtbWluaW1hbC1jaGFuXCIpO1xyXG4gICAgfVxyXG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/builtins/appearance/minimalmode.js\n"); /***/ }), @@ -131,7 +130,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _str /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _structs_builtin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../structs/builtin */ \"./src/structs/builtin.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class VoiceMode extends _structs_builtin__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n get name() {\n return \"VoiceMode\";\n }\n\n get category() {\n return \"appearance\";\n }\n\n get id() {\n return \"voiceMode\";\n }\n\n enabled() {\n document.querySelector(\".chat-3bRxxu\").style.setProperty(\"visibility\", \"hidden\");\n document.querySelector(\".chat-3bRxxu\").style.setProperty(\"min-width\", \"0px\");\n document.querySelector(\".channels-Ie2l6A\").style.setProperty(\"flex-grow\", \"100000\");\n }\n\n disabled() {\n document.querySelector(\".chat-3bRxxu\").style.setProperty(\"visibility\", \"\");\n document.querySelector(\".chat-3bRxxu\").style.setProperty(\"min-width\", \"\");\n document.querySelector(\".channels-Ie2l6A\").style.setProperty(\"flex-grow\", \"\");\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL2J1aWx0aW5zL2FwcGVhcmFuY2Uvdm9pY2Vtb2RlLmpzP2ZjZGIiXSwibmFtZXMiOlsiVm9pY2VNb2RlIiwiQnVpbHRpbiIsIm5hbWUiLCJjYXRlZ29yeSIsImlkIiwiZW5hYmxlZCIsImRvY3VtZW50IiwicXVlcnlTZWxlY3RvciIsInN0eWxlIiwic2V0UHJvcGVydHkiLCJkaXNhYmxlZCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBRWUsbUVBQUksTUFBTUEsU0FBTixTQUF3QkMsd0RBQXhCLENBQWdDO0FBQy9DLE1BQUlDLElBQUosR0FBVztBQUFDLFdBQU8sV0FBUDtBQUFvQjs7QUFDaEMsTUFBSUMsUUFBSixHQUFlO0FBQUMsV0FBTyxZQUFQO0FBQXFCOztBQUNyQyxNQUFJQyxFQUFKLEdBQVM7QUFBQyxXQUFPLFdBQVA7QUFBb0I7O0FBRTlCQyxTQUFPLEdBQUc7QUFDTkMsWUFBUSxDQUFDQyxhQUFULENBQXVCLGNBQXZCLEVBQXVDQyxLQUF2QyxDQUE2Q0MsV0FBN0MsQ0FBeUQsWUFBekQsRUFBdUUsUUFBdkU7QUFDQUgsWUFBUSxDQUFDQyxhQUFULENBQXVCLGNBQXZCLEVBQXVDQyxLQUF2QyxDQUE2Q0MsV0FBN0MsQ0FBeUQsV0FBekQsRUFBc0UsS0FBdEU7QUFDQUgsWUFBUSxDQUFDQyxhQUFULENBQXVCLGtCQUF2QixFQUEyQ0MsS0FBM0MsQ0FBaURDLFdBQWpELENBQTZELFdBQTdELEVBQTBFLFFBQTFFO0FBQ0g7O0FBRURDLFVBQVEsR0FBRztBQUNQSixZQUFRLENBQUNDLGFBQVQsQ0FBdUIsY0FBdkIsRUFBdUNDLEtBQXZDLENBQTZDQyxXQUE3QyxDQUF5RCxZQUF6RCxFQUF1RSxFQUF2RTtBQUNBSCxZQUFRLENBQUNDLGFBQVQsQ0FBdUIsY0FBdkIsRUFBdUNDLEtBQXZDLENBQTZDQyxXQUE3QyxDQUF5RCxXQUF6RCxFQUFzRSxFQUF0RTtBQUNBSCxZQUFRLENBQUNDLGFBQVQsQ0FBdUIsa0JBQXZCLEVBQTJDQyxLQUEzQyxDQUFpREMsV0FBakQsQ0FBNkQsV0FBN0QsRUFBMEUsRUFBMUU7QUFDSDs7QUFmOEMsQ0FBcEMsRUFBZiIsImZpbGUiOiIuL3NyYy9idWlsdGlucy9hcHBlYXJhbmNlL3ZvaWNlbW9kZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCdWlsdGluIGZyb20gXCIuLi8uLi9zdHJ1Y3RzL2J1aWx0aW5cIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IG5ldyBjbGFzcyBWb2ljZU1vZGUgZXh0ZW5kcyBCdWlsdGluIHtcclxuICAgIGdldCBuYW1lKCkge3JldHVybiBcIlZvaWNlTW9kZVwiO31cclxuICAgIGdldCBjYXRlZ29yeSgpIHtyZXR1cm4gXCJhcHBlYXJhbmNlXCI7fVxyXG4gICAgZ2V0IGlkKCkge3JldHVybiBcInZvaWNlTW9kZVwiO31cclxuXHJcbiAgICBlbmFibGVkKCkge1xyXG4gICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIuY2hhdC0zYlJ4eHVcIikuc3R5bGUuc2V0UHJvcGVydHkoXCJ2aXNpYmlsaXR5XCIsIFwiaGlkZGVuXCIpO1xyXG4gICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIuY2hhdC0zYlJ4eHVcIikuc3R5bGUuc2V0UHJvcGVydHkoXCJtaW4td2lkdGhcIiwgXCIwcHhcIik7XHJcbiAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIi5jaGFubmVscy1JZTJsNkFcIikuc3R5bGUuc2V0UHJvcGVydHkoXCJmbGV4LWdyb3dcIiwgXCIxMDAwMDBcIik7XHJcbiAgICB9XHJcblxyXG4gICAgZGlzYWJsZWQoKSB7XHJcbiAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIi5jaGF0LTNiUnh4dVwiKS5zdHlsZS5zZXRQcm9wZXJ0eShcInZpc2liaWxpdHlcIiwgXCJcIik7XHJcbiAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIi5jaGF0LTNiUnh4dVwiKS5zdHlsZS5zZXRQcm9wZXJ0eShcIm1pbi13aWR0aFwiLCBcIlwiKTtcclxuICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiLmNoYW5uZWxzLUllMmw2QVwiKS5zdHlsZS5zZXRQcm9wZXJ0eShcImZsZXgtZ3Jvd1wiLCBcIlwiKTtcclxuICAgIH1cclxufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/builtins/appearance/voicemode.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _structs_builtin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../structs/builtin */ \"./src/structs/builtin.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class VoiceMode extends _structs_builtin__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n get name() {\n return \"VoiceMode\";\n }\n\n get category() {\n return \"appearance\";\n }\n\n get id() {\n return \"voiceMode\";\n }\n\n enabled() {\n document.querySelector(\".chat-3bRxxu\").style.setProperty(\"visibility\", \"hidden\");\n document.querySelector(\".chat-3bRxxu\").style.setProperty(\"min-width\", \"0px\");\n document.querySelector(\".channels-Ie2l6A\").style.setProperty(\"flex-grow\", \"100000\");\n }\n\n disabled() {\n document.querySelector(\".chat-3bRxxu\").style.setProperty(\"visibility\", \"\");\n document.querySelector(\".chat-3bRxxu\").style.setProperty(\"min-width\", \"\");\n document.querySelector(\".channels-Ie2l6A\").style.setProperty(\"flex-grow\", \"\");\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYnVpbHRpbnMvYXBwZWFyYW5jZS92b2ljZW1vZGUuanM/ZmNkYiJdLCJuYW1lcyI6WyJWb2ljZU1vZGUiLCJCdWlsdGluIiwibmFtZSIsImNhdGVnb3J5IiwiaWQiLCJlbmFibGVkIiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwic3R5bGUiLCJzZXRQcm9wZXJ0eSIsImRpc2FibGVkIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFFZSxtRUFBSSxNQUFNQSxTQUFOLFNBQXdCQyx3REFBeEIsQ0FBZ0M7QUFDL0MsTUFBSUMsSUFBSixHQUFXO0FBQUMsV0FBTyxXQUFQO0FBQW9COztBQUNoQyxNQUFJQyxRQUFKLEdBQWU7QUFBQyxXQUFPLFlBQVA7QUFBcUI7O0FBQ3JDLE1BQUlDLEVBQUosR0FBUztBQUFDLFdBQU8sV0FBUDtBQUFvQjs7QUFFOUJDLFNBQU8sR0FBRztBQUNOQyxZQUFRLENBQUNDLGFBQVQsQ0FBdUIsY0FBdkIsRUFBdUNDLEtBQXZDLENBQTZDQyxXQUE3QyxDQUF5RCxZQUF6RCxFQUF1RSxRQUF2RTtBQUNBSCxZQUFRLENBQUNDLGFBQVQsQ0FBdUIsY0FBdkIsRUFBdUNDLEtBQXZDLENBQTZDQyxXQUE3QyxDQUF5RCxXQUF6RCxFQUFzRSxLQUF0RTtBQUNBSCxZQUFRLENBQUNDLGFBQVQsQ0FBdUIsa0JBQXZCLEVBQTJDQyxLQUEzQyxDQUFpREMsV0FBakQsQ0FBNkQsV0FBN0QsRUFBMEUsUUFBMUU7QUFDSDs7QUFFREMsVUFBUSxHQUFHO0FBQ1BKLFlBQVEsQ0FBQ0MsYUFBVCxDQUF1QixjQUF2QixFQUF1Q0MsS0FBdkMsQ0FBNkNDLFdBQTdDLENBQXlELFlBQXpELEVBQXVFLEVBQXZFO0FBQ0FILFlBQVEsQ0FBQ0MsYUFBVCxDQUF1QixjQUF2QixFQUF1Q0MsS0FBdkMsQ0FBNkNDLFdBQTdDLENBQXlELFdBQXpELEVBQXNFLEVBQXRFO0FBQ0FILFlBQVEsQ0FBQ0MsYUFBVCxDQUF1QixrQkFBdkIsRUFBMkNDLEtBQTNDLENBQWlEQyxXQUFqRCxDQUE2RCxXQUE3RCxFQUEwRSxFQUExRTtBQUNIOztBQWY4QyxDQUFwQyxFQUFmIiwiZmlsZSI6Ii4vc3JjL2J1aWx0aW5zL2FwcGVhcmFuY2Uvdm9pY2Vtb2RlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJ1aWx0aW4gZnJvbSBcIi4uLy4uL3N0cnVjdHMvYnVpbHRpblwiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgbmV3IGNsYXNzIFZvaWNlTW9kZSBleHRlbmRzIEJ1aWx0aW4ge1xyXG4gICAgZ2V0IG5hbWUoKSB7cmV0dXJuIFwiVm9pY2VNb2RlXCI7fVxyXG4gICAgZ2V0IGNhdGVnb3J5KCkge3JldHVybiBcImFwcGVhcmFuY2VcIjt9XHJcbiAgICBnZXQgaWQoKSB7cmV0dXJuIFwidm9pY2VNb2RlXCI7fVxyXG5cclxuICAgIGVuYWJsZWQoKSB7XHJcbiAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIi5jaGF0LTNiUnh4dVwiKS5zdHlsZS5zZXRQcm9wZXJ0eShcInZpc2liaWxpdHlcIiwgXCJoaWRkZW5cIik7XHJcbiAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIi5jaGF0LTNiUnh4dVwiKS5zdHlsZS5zZXRQcm9wZXJ0eShcIm1pbi13aWR0aFwiLCBcIjBweFwiKTtcclxuICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiLmNoYW5uZWxzLUllMmw2QVwiKS5zdHlsZS5zZXRQcm9wZXJ0eShcImZsZXgtZ3Jvd1wiLCBcIjEwMDAwMFwiKTtcclxuICAgIH1cclxuXHJcbiAgICBkaXNhYmxlZCgpIHtcclxuICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiLmNoYXQtM2JSeHh1XCIpLnN0eWxlLnNldFByb3BlcnR5KFwidmlzaWJpbGl0eVwiLCBcIlwiKTtcclxuICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiLmNoYXQtM2JSeHh1XCIpLnN0eWxlLnNldFByb3BlcnR5KFwibWluLXdpZHRoXCIsIFwiXCIpO1xyXG4gICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIuY2hhbm5lbHMtSWUybDZBXCIpLnN0eWxlLnNldFByb3BlcnR5KFwiZmxleC1ncm93XCIsIFwiXCIpO1xyXG4gICAgfVxyXG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/builtins/appearance/voicemode.js\n"); /***/ }), @@ -143,7 +142,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _str /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _customcss__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./customcss */ \"./src/builtins/customcss.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"CustomCSS\", function() { return _customcss__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _windowprefs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./windowprefs */ \"./src/builtins/windowprefs.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"WindowPrefs\", function() { return _windowprefs__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _general_24hour__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./general/24hour */ \"./src/builtins/general/24hour.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"TwentyFourHour\", function() { return _general_24hour__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _general_classnormalizer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./general/classnormalizer */ \"./src/builtins/general/classnormalizer.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ClassNormalizer\", function() { return _general_classnormalizer__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _general_publicservers__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./general/publicservers */ \"./src/builtins/general/publicservers.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"PublicServers\", function() { return _general_publicservers__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _general_voicedisconnect__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./general/voicedisconnect */ \"./src/builtins/general/voicedisconnect.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VoiceDisconnect\", function() { return _general_voicedisconnect__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _appearance_coloredtext__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./appearance/coloredtext */ \"./src/builtins/appearance/coloredtext.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ColoredText\", function() { return _appearance_coloredtext__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _appearance_darkmode__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./appearance/darkmode */ \"./src/builtins/appearance/darkmode.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"DarkMode\", function() { return _appearance_darkmode__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n/* harmony import */ var _appearance_minimalmode__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./appearance/minimalmode */ \"./src/builtins/appearance/minimalmode.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"MinimalMode\", function() { return _appearance_minimalmode__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; });\n\n/* harmony import */ var _appearance_voicemode__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./appearance/voicemode */ \"./src/builtins/appearance/voicemode.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VoiceMode\", function() { return _appearance_voicemode__WEBPACK_IMPORTED_MODULE_9__[\"default\"]; });\n\n/* harmony import */ var _emotes_emotes__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./emotes/emotes */ \"./src/builtins/emotes/emotes.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"EmoteModule\", function() { return _emotes_emotes__WEBPACK_IMPORTED_MODULE_10__[\"default\"]; });\n\n/* harmony import */ var _emotes_emotemenu__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./emotes/emotemenu */ \"./src/builtins/emotes/emotemenu.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"EmoteMenu\", function() { return _emotes_emotemenu__WEBPACK_IMPORTED_MODULE_11__[\"default\"]; });\n\n/* harmony import */ var _developer_copyselector__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./developer/copyselector */ \"./src/builtins/developer/copyselector.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"CopySelector\", function() { return _developer_copyselector__WEBPACK_IMPORTED_MODULE_12__[\"default\"]; });\n\n/* harmony import */ var _developer_debugger__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./developer/debugger */ \"./src/builtins/developer/debugger.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Debugger\", function() { return _developer_debugger__WEBPACK_IMPORTED_MODULE_13__[\"default\"]; });\n\n/* harmony import */ var _developer_reactdevtools__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./developer/reactdevtools */ \"./src/builtins/developer/reactdevtools.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ReactDevTools\", function() { return _developer_reactdevtools__WEBPACK_IMPORTED_MODULE_14__[\"default\"]; });\n\n// Export these two first because they add settings/panels\n\n\n\n\n\n\n\n\n\n\n\n // export {default as EmoteAutocaps} from \"./emotes/emoteautocaps\";\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL2J1aWx0aW5zL2J1aWx0aW5zLmpzPzU5YTYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7Q0FFQTs7QUFFQTtBQUNBIiwiZmlsZSI6Ii4vc3JjL2J1aWx0aW5zL2J1aWx0aW5zLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gRXhwb3J0IHRoZXNlIHR3byBmaXJzdCBiZWNhdXNlIHRoZXkgYWRkIHNldHRpbmdzL3BhbmVsc1xyXG5cclxuZXhwb3J0IHtkZWZhdWx0IGFzIEN1c3RvbUNTU30gZnJvbSBcIi4vY3VzdG9tY3NzXCI7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBXaW5kb3dQcmVmc30gZnJvbSBcIi4vd2luZG93cHJlZnNcIjtcclxuXHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBUd2VudHlGb3VySG91cn0gZnJvbSBcIi4vZ2VuZXJhbC8yNGhvdXJcIjtcclxuZXhwb3J0IHtkZWZhdWx0IGFzIENsYXNzTm9ybWFsaXplcn0gZnJvbSBcIi4vZ2VuZXJhbC9jbGFzc25vcm1hbGl6ZXJcIjtcclxuZXhwb3J0IHtkZWZhdWx0IGFzIFB1YmxpY1NlcnZlcnN9IGZyb20gXCIuL2dlbmVyYWwvcHVibGljc2VydmVyc1wiO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgVm9pY2VEaXNjb25uZWN0fSBmcm9tIFwiLi9nZW5lcmFsL3ZvaWNlZGlzY29ubmVjdFwiO1xyXG5cclxuZXhwb3J0IHtkZWZhdWx0IGFzIENvbG9yZWRUZXh0fSBmcm9tIFwiLi9hcHBlYXJhbmNlL2NvbG9yZWR0ZXh0XCI7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBEYXJrTW9kZX0gZnJvbSBcIi4vYXBwZWFyYW5jZS9kYXJrbW9kZVwiO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgTWluaW1hbE1vZGV9IGZyb20gXCIuL2FwcGVhcmFuY2UvbWluaW1hbG1vZGVcIjtcclxuZXhwb3J0IHtkZWZhdWx0IGFzIFZvaWNlTW9kZX0gZnJvbSBcIi4vYXBwZWFyYW5jZS92b2ljZW1vZGVcIjtcclxuXHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBFbW90ZU1vZHVsZX0gZnJvbSBcIi4vZW1vdGVzL2Vtb3Rlc1wiO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgRW1vdGVNZW51fSBmcm9tIFwiLi9lbW90ZXMvZW1vdGVtZW51XCI7XHJcbi8vIGV4cG9ydCB7ZGVmYXVsdCBhcyBFbW90ZUF1dG9jYXBzfSBmcm9tIFwiLi9lbW90ZXMvZW1vdGVhdXRvY2Fwc1wiO1xyXG5cclxuZXhwb3J0IHtkZWZhdWx0IGFzIENvcHlTZWxlY3Rvcn0gZnJvbSBcIi4vZGV2ZWxvcGVyL2NvcHlzZWxlY3RvclwiO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgRGVidWdnZXJ9IGZyb20gXCIuL2RldmVsb3Blci9kZWJ1Z2dlclwiO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgUmVhY3REZXZUb29sc30gZnJvbSBcIi4vZGV2ZWxvcGVyL3JlYWN0ZGV2dG9vbHNcIjsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/builtins/builtins.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _customcss__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./customcss */ \"./src/builtins/customcss.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"CustomCSS\", function() { return _customcss__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _windowprefs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./windowprefs */ \"./src/builtins/windowprefs.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"WindowPrefs\", function() { return _windowprefs__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _general_24hour__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./general/24hour */ \"./src/builtins/general/24hour.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"TwentyFourHour\", function() { return _general_24hour__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _general_classnormalizer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./general/classnormalizer */ \"./src/builtins/general/classnormalizer.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ClassNormalizer\", function() { return _general_classnormalizer__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _general_publicservers__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./general/publicservers */ \"./src/builtins/general/publicservers.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"PublicServers\", function() { return _general_publicservers__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _general_voicedisconnect__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./general/voicedisconnect */ \"./src/builtins/general/voicedisconnect.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VoiceDisconnect\", function() { return _general_voicedisconnect__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _appearance_coloredtext__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./appearance/coloredtext */ \"./src/builtins/appearance/coloredtext.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ColoredText\", function() { return _appearance_coloredtext__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _appearance_darkmode__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./appearance/darkmode */ \"./src/builtins/appearance/darkmode.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"DarkMode\", function() { return _appearance_darkmode__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n/* harmony import */ var _appearance_minimalmode__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./appearance/minimalmode */ \"./src/builtins/appearance/minimalmode.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"MinimalMode\", function() { return _appearance_minimalmode__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; });\n\n/* harmony import */ var _appearance_voicemode__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./appearance/voicemode */ \"./src/builtins/appearance/voicemode.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"VoiceMode\", function() { return _appearance_voicemode__WEBPACK_IMPORTED_MODULE_9__[\"default\"]; });\n\n/* harmony import */ var _emotes_emotes__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./emotes/emotes */ \"./src/builtins/emotes/emotes.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"EmoteModule\", function() { return _emotes_emotes__WEBPACK_IMPORTED_MODULE_10__[\"default\"]; });\n\n/* harmony import */ var _emotes_emotemenu__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./emotes/emotemenu */ \"./src/builtins/emotes/emotemenu.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"EmoteMenu\", function() { return _emotes_emotemenu__WEBPACK_IMPORTED_MODULE_11__[\"default\"]; });\n\n/* harmony import */ var _developer_copyselector__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./developer/copyselector */ \"./src/builtins/developer/copyselector.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"CopySelector\", function() { return _developer_copyselector__WEBPACK_IMPORTED_MODULE_12__[\"default\"]; });\n\n/* harmony import */ var _developer_debugger__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./developer/debugger */ \"./src/builtins/developer/debugger.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Debugger\", function() { return _developer_debugger__WEBPACK_IMPORTED_MODULE_13__[\"default\"]; });\n\n/* harmony import */ var _developer_reactdevtools__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./developer/reactdevtools */ \"./src/builtins/developer/reactdevtools.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ReactDevTools\", function() { return _developer_reactdevtools__WEBPACK_IMPORTED_MODULE_14__[\"default\"]; });\n\n// Export these two first because they add settings/panels\n\n\n\n\n\n\n\n\n\n\n\n // export {default as EmoteAutocaps} from \"./emotes/emoteautocaps\";\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYnVpbHRpbnMvYnVpbHRpbnMuanM/NTlhNiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtDQUVBOztBQUVBO0FBQ0EiLCJmaWxlIjoiLi9zcmMvYnVpbHRpbnMvYnVpbHRpbnMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBFeHBvcnQgdGhlc2UgdHdvIGZpcnN0IGJlY2F1c2UgdGhleSBhZGQgc2V0dGluZ3MvcGFuZWxzXHJcblxyXG5leHBvcnQge2RlZmF1bHQgYXMgQ3VzdG9tQ1NTfSBmcm9tIFwiLi9jdXN0b21jc3NcIjtcclxuZXhwb3J0IHtkZWZhdWx0IGFzIFdpbmRvd1ByZWZzfSBmcm9tIFwiLi93aW5kb3dwcmVmc1wiO1xyXG5cclxuZXhwb3J0IHtkZWZhdWx0IGFzIFR3ZW50eUZvdXJIb3VyfSBmcm9tIFwiLi9nZW5lcmFsLzI0aG91clwiO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgQ2xhc3NOb3JtYWxpemVyfSBmcm9tIFwiLi9nZW5lcmFsL2NsYXNzbm9ybWFsaXplclwiO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgUHVibGljU2VydmVyc30gZnJvbSBcIi4vZ2VuZXJhbC9wdWJsaWNzZXJ2ZXJzXCI7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBWb2ljZURpc2Nvbm5lY3R9IGZyb20gXCIuL2dlbmVyYWwvdm9pY2VkaXNjb25uZWN0XCI7XHJcblxyXG5leHBvcnQge2RlZmF1bHQgYXMgQ29sb3JlZFRleHR9IGZyb20gXCIuL2FwcGVhcmFuY2UvY29sb3JlZHRleHRcIjtcclxuZXhwb3J0IHtkZWZhdWx0IGFzIERhcmtNb2RlfSBmcm9tIFwiLi9hcHBlYXJhbmNlL2Rhcmttb2RlXCI7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBNaW5pbWFsTW9kZX0gZnJvbSBcIi4vYXBwZWFyYW5jZS9taW5pbWFsbW9kZVwiO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgVm9pY2VNb2RlfSBmcm9tIFwiLi9hcHBlYXJhbmNlL3ZvaWNlbW9kZVwiO1xyXG5cclxuZXhwb3J0IHtkZWZhdWx0IGFzIEVtb3RlTW9kdWxlfSBmcm9tIFwiLi9lbW90ZXMvZW1vdGVzXCI7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBFbW90ZU1lbnV9IGZyb20gXCIuL2Vtb3Rlcy9lbW90ZW1lbnVcIjtcclxuLy8gZXhwb3J0IHtkZWZhdWx0IGFzIEVtb3RlQXV0b2NhcHN9IGZyb20gXCIuL2Vtb3Rlcy9lbW90ZWF1dG9jYXBzXCI7XHJcblxyXG5leHBvcnQge2RlZmF1bHQgYXMgQ29weVNlbGVjdG9yfSBmcm9tIFwiLi9kZXZlbG9wZXIvY29weXNlbGVjdG9yXCI7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBEZWJ1Z2dlcn0gZnJvbSBcIi4vZGV2ZWxvcGVyL2RlYnVnZ2VyXCI7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBSZWFjdERldlRvb2xzfSBmcm9tIFwiLi9kZXZlbG9wZXIvcmVhY3RkZXZ0b29sc1wiOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/builtins/builtins.js\n"); /***/ }), @@ -155,7 +154,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _cus /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _structs_builtin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../structs/builtin */ \"./src/structs/builtin.js\");\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _ui_customcss_csseditor__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../ui/customcss/csseditor */ \"./src/ui/customcss/csseditor.jsx\");\n/* harmony import */ var _ui_floatingwindows__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../ui/floatingwindows */ \"./src/ui/floatingwindows.js\");\n/* harmony import */ var _ui_settings_title__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../ui/settings/title */ \"./src/ui/settings/title.jsx\");\n/* harmony import */ var _modules_utilities__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../modules/utilities */ \"./src/modules/utilities.js\");\n\n\n\n\n\n\n\nconst fs = __webpack_require__(/*! fs */ \"fs\");\n\nconst electron = __webpack_require__(/*! electron */ \"electron\");\n\nconst UserSettings = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"updateAccount\");\nconst Dispatcher = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"dirtyDispatch\");\nconst ActionTypes = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"ActionTypes\").ActionTypes;\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class CustomCSS extends _structs_builtin__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n get name() {\n return \"Custom CSS\";\n }\n\n get category() {\n return \"customcss\";\n }\n\n get id() {\n return \"customcss\";\n }\n\n get startDetached() {\n return modules__WEBPACK_IMPORTED_MODULE_1__[\"Settings\"].get(this.collection, this.category, \"openAction\") == \"detached\";\n }\n\n get nativeOpen() {\n return modules__WEBPACK_IMPORTED_MODULE_1__[\"Settings\"].get(this.collection, this.category, \"openAction\") == \"system\";\n }\n\n constructor() {\n super();\n this.savedCss = \"\";\n this.insertedCss = \"\";\n this.isDetached = false;\n }\n\n async enabled() {\n if (!window.ace) {\n modules__WEBPACK_IMPORTED_MODULE_1__[\"DOMManager\"].injectScript(\"ace-script\", \"https://cdnjs.cloudflare.com/ajax/libs/ace/1.2.9/ace.js\").then(() => {\n if (window.require.original) window.require = window.require.original;\n });\n }\n\n modules__WEBPACK_IMPORTED_MODULE_1__[\"Settings\"].registerPanel(this.id, modules__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].Panels.customcss, {\n order: 2,\n element: () => [/*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(_ui_settings_title__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n text: modules__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].CustomCSS.editorTitle\n }), modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(_ui_customcss_csseditor__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n css: this.savedCss,\n save: this.saveCSS.bind(this),\n update: this.insertCSS.bind(this),\n openNative: this.openNative.bind(this),\n openDetached: this.openDetached.bind(this),\n onChange: this.onChange.bind(this)\n })],\n onClick: thisObject => {\n if (this.isDetached) return;\n if (this.nativeOpen) return this.openNative();else if (this.startDetached) return this.openDetached();\n const settingsView = _modules_utilities__WEBPACK_IMPORTED_MODULE_5__[\"default\"].findInRenderTree(thisObject._reactInternalFiber, m => m && m.onSetSection, {\n walkable: [\"child\", \"memoizedProps\", \"props\", \"children\"]\n });\n if (settingsView && settingsView.onSetSection) settingsView.onSetSection(this.id);\n }\n });\n this.loadCSS();\n this.insertCSS(this.savedCss);\n this.watchContent();\n }\n\n disabled() {\n modules__WEBPACK_IMPORTED_MODULE_1__[\"Settings\"].removePanel(this.id);\n this.unwatchContent();\n }\n\n watchContent() {\n if (this.watcher) return this.error(\"Already watching content.\");\n const timeCache = {};\n this.log(\"Starting to watch content.\");\n this.watcher = fs.watch(modules__WEBPACK_IMPORTED_MODULE_1__[\"DataStore\"].customCSS, {\n persistent: false\n }, async (eventType, filename) => {\n if (!eventType || !filename) return;\n await new Promise(r => setTimeout(r, 50));\n\n try {\n fs.statSync(modules__WEBPACK_IMPORTED_MODULE_1__[\"DataStore\"].customCSS);\n } catch (err) {\n if (err.code !== \"ENOENT\") return;\n delete timeCache[filename];\n this.saveCSS(\"\");\n }\n\n const stats = fs.statSync(modules__WEBPACK_IMPORTED_MODULE_1__[\"DataStore\"].customCSS);\n if (!stats || !stats.mtime || !stats.mtime.getTime()) return;\n if (typeof stats.mtime.getTime() !== \"number\") return;\n if (timeCache[filename] == stats.mtime.getTime()) return;\n timeCache[filename] = stats.mtime.getTime();\n\n if (eventType == \"change\") {\n const newCSS = modules__WEBPACK_IMPORTED_MODULE_1__[\"DataStore\"].loadCustomCSS();\n if (newCSS == this.savedCss) return;\n this.savedCss = newCSS;\n this.insertCSS(this.savedCss);\n modules__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].emit(\"customcss-updated\", this.savedCss);\n }\n });\n }\n\n unwatchContent() {\n if (!this.watcher) return this.error(\"Was not watching content.\");\n this.watcher.close();\n delete this.watcher;\n this.log(\"No longer watching content.\");\n }\n\n onChange(value) {\n if (!modules__WEBPACK_IMPORTED_MODULE_1__[\"Settings\"].get(\"settings\", \"customcss\", \"liveUpdate\")) return;\n this.insertCSS(value);\n this.saveCSS(value);\n }\n\n loadCSS() {\n this.savedCss = modules__WEBPACK_IMPORTED_MODULE_1__[\"DataStore\"].loadCustomCSS();\n }\n\n insertCSS(newCss) {\n if (typeof newCss === \"undefined\") newCss = this.insertedCss;else this.insertedCss = newCss;\n modules__WEBPACK_IMPORTED_MODULE_1__[\"DOMManager\"].updateCustomCSS(newCss);\n }\n\n saveCSS(newCss) {\n if (typeof newCss !== \"undefined\") this.savedCss = newCss;\n modules__WEBPACK_IMPORTED_MODULE_1__[\"DataStore\"].saveCustomCSS(this.savedCss);\n }\n\n openNative() {\n electron.shell.openExternal(`file://${modules__WEBPACK_IMPORTED_MODULE_1__[\"DataStore\"].customCSS}`);\n }\n\n openDetached(currentCSS) {\n const editorRef = modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createRef();\n const editor = modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(_ui_customcss_csseditor__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n id: \"bd-floating-editor\",\n ref: editorRef,\n css: currentCSS,\n save: this.saveCSS.bind(this),\n update: this.insertCSS.bind(this),\n openNative: this.openNative.bind(this),\n onChange: this.onChange.bind(this)\n });\n _ui_floatingwindows__WEBPACK_IMPORTED_MODULE_3__[\"default\"].open({\n onClose: () => {\n this.isDetached = false;\n },\n onResize: () => {\n if (!editorRef || !editorRef.current || !editorRef.current.resize) return;\n editorRef.current.resize();\n },\n title: modules__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].CustomCSS.editorTitle,\n id: \"floating-editor-window\",\n height: 470,\n width: 410,\n center: true,\n resizable: true,\n children: editor,\n confirmClose: () => {\n if (!editorRef || !editorRef.current) return false;\n return editorRef.current.hasUnsavedChanges;\n },\n confirmationText: modules__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].CustomCSS.confirmationText\n });\n this.isDetached = true;\n UserSettings.close();\n Dispatcher.dirtyDispatch({\n type: ActionTypes.LAYER_POP\n });\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL2J1aWx0aW5zL2N1c3RvbWNzcy5qcz9jM2YyIl0sIm5hbWVzIjpbImZzIiwicmVxdWlyZSIsImVsZWN0cm9uIiwiVXNlclNldHRpbmdzIiwiV2VicGFja01vZHVsZXMiLCJnZXRCeVByb3BzIiwiRGlzcGF0Y2hlciIsIkFjdGlvblR5cGVzIiwiQ3VzdG9tQ1NTIiwiQnVpbHRpbiIsIm5hbWUiLCJjYXRlZ29yeSIsImlkIiwic3RhcnREZXRhY2hlZCIsIlNldHRpbmdzIiwiZ2V0IiwiY29sbGVjdGlvbiIsIm5hdGl2ZU9wZW4iLCJjb25zdHJ1Y3RvciIsInNhdmVkQ3NzIiwiaW5zZXJ0ZWRDc3MiLCJpc0RldGFjaGVkIiwiZW5hYmxlZCIsIndpbmRvdyIsImFjZSIsIkRPTU1hbmFnZXIiLCJpbmplY3RTY3JpcHQiLCJ0aGVuIiwib3JpZ2luYWwiLCJyZWdpc3RlclBhbmVsIiwiU3RyaW5ncyIsIlBhbmVscyIsImN1c3RvbWNzcyIsIm9yZGVyIiwiZWxlbWVudCIsImVkaXRvclRpdGxlIiwiUmVhY3QiLCJjcmVhdGVFbGVtZW50IiwiQ1NTRWRpdG9yIiwiY3NzIiwic2F2ZSIsInNhdmVDU1MiLCJiaW5kIiwidXBkYXRlIiwiaW5zZXJ0Q1NTIiwib3Blbk5hdGl2ZSIsIm9wZW5EZXRhY2hlZCIsIm9uQ2hhbmdlIiwib25DbGljayIsInRoaXNPYmplY3QiLCJzZXR0aW5nc1ZpZXciLCJVdGlsaXRpZXMiLCJmaW5kSW5SZW5kZXJUcmVlIiwiX3JlYWN0SW50ZXJuYWxGaWJlciIsIm0iLCJvblNldFNlY3Rpb24iLCJ3YWxrYWJsZSIsImxvYWRDU1MiLCJ3YXRjaENvbnRlbnQiLCJkaXNhYmxlZCIsInJlbW92ZVBhbmVsIiwidW53YXRjaENvbnRlbnQiLCJ3YXRjaGVyIiwiZXJyb3IiLCJ0aW1lQ2FjaGUiLCJsb2ciLCJ3YXRjaCIsIkRhdGFTdG9yZSIsImN1c3RvbUNTUyIsInBlcnNpc3RlbnQiLCJldmVudFR5cGUiLCJmaWxlbmFtZSIsIlByb21pc2UiLCJyIiwic2V0VGltZW91dCIsInN0YXRTeW5jIiwiZXJyIiwiY29kZSIsInN0YXRzIiwibXRpbWUiLCJnZXRUaW1lIiwibmV3Q1NTIiwibG9hZEN1c3RvbUNTUyIsIkV2ZW50cyIsImVtaXQiLCJjbG9zZSIsInZhbHVlIiwibmV3Q3NzIiwidXBkYXRlQ3VzdG9tQ1NTIiwic2F2ZUN1c3RvbUNTUyIsInNoZWxsIiwib3BlbkV4dGVybmFsIiwiY3VycmVudENTUyIsImVkaXRvclJlZiIsImNyZWF0ZVJlZiIsImVkaXRvciIsInJlZiIsIkZsb2F0aW5nV2luZG93cyIsIm9wZW4iLCJvbkNsb3NlIiwib25SZXNpemUiLCJjdXJyZW50IiwicmVzaXplIiwidGl0bGUiLCJoZWlnaHQiLCJ3aWR0aCIsImNlbnRlciIsInJlc2l6YWJsZSIsImNoaWxkcmVuIiwiY29uZmlybUNsb3NlIiwiaGFzVW5zYXZlZENoYW5nZXMiLCJjb25maXJtYXRpb25UZXh0IiwiZGlydHlEaXNwYXRjaCIsInR5cGUiLCJMQVlFUl9QT1AiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLE1BQU1BLEVBQUUsR0FBR0MsbUJBQU8sQ0FBQyxjQUFELENBQWxCOztBQUNBLE1BQU1DLFFBQVEsR0FBR0QsbUJBQU8sQ0FBQywwQkFBRCxDQUF4Qjs7QUFDQSxNQUFNRSxZQUFZLEdBQUdDLHNEQUFjLENBQUNDLFVBQWYsQ0FBMEIsZUFBMUIsQ0FBckI7QUFDQSxNQUFNQyxVQUFVLEdBQUdGLHNEQUFjLENBQUNDLFVBQWYsQ0FBMEIsZUFBMUIsQ0FBbkI7QUFDQSxNQUFNRSxXQUFXLEdBQUdILHNEQUFjLENBQUNDLFVBQWYsQ0FBMEIsYUFBMUIsRUFBeUNFLFdBQTdEO0FBRWUsbUVBQUksTUFBTUMsU0FBTixTQUF3QkMsd0RBQXhCLENBQWdDO0FBQy9DLE1BQUlDLElBQUosR0FBVztBQUFDLFdBQU8sWUFBUDtBQUFx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Z0I7QUFJakIrRSxjQUFRLEVBQUUsTUFBTTtBQUNaLFlBQUksQ0FBQ1AsU0FBRCxJQUFjLENBQUNBLFNBQVMsQ0FBQ1EsT0FBekIsSUFBb0MsQ0FBQ1IsU0FBUyxDQUFDUSxPQUFWLENBQWtCQyxNQUEzRCxFQUFtRTtBQUNuRVQsaUJBQVMsQ0FBQ1EsT0FBVixDQUFrQkMsTUFBbEI7QUFDSCxPQVBnQjtBQVFqQkMsV0FBSyxFQUFFekUsK0NBQU8sQ0FBQ3RCLFNBQVIsQ0FBa0IyQixXQVJSO0FBU2pCdkIsUUFBRSxFQUFFLHdCQVRhO0FBVWpCNEYsWUFBTSxFQUFFLEdBVlM7QUFXakJDLFdBQUssRUFBRSxHQVhVO0FBWWpCQyxZQUFNLEVBQUUsSUFaUztBQWFqQkMsZUFBUyxFQUFFLElBYk07QUFjakJDLGNBQVEsRUFBRWIsTUFkTztBQWVqQmMsa0JBQVksRUFBRSxNQUFNO0FBQ2hCLFlBQUksQ0FBQ2hCLFNBQUQsSUFBYyxDQUFDQSxTQUFTLENBQUNRLE9BQTdCLEVBQXNDLE9BQU8sS0FBUDtBQUN0QyxlQUFPUixTQUFTLENBQUNRLE9BQVYsQ0FBa0JTLGlCQUF6QjtBQUNILE9BbEJnQjtBQW1CakJDLHNCQUFnQixFQUFFakYsK0NBQU8sQ0FBQ3RCLFNBQVIsQ0FBa0J1RztBQW5CbkIsS0FBckI7QUFxQkEsU0FBSzFGLFVBQUwsR0FBa0IsSUFBbEI7QUFDQWxCLGdCQUFZLENBQUNrRixLQUFiO0FBQ0EvRSxjQUFVLENBQUMwRyxhQUFYLENBQXlCO0FBQUNDLFVBQUksRUFBRTFHLFdBQVcsQ0FBQzJHO0FBQW5CLEtBQXpCO0FBQ0g7O0FBaEo4QyxDQUFwQyxFQUFmIiwiZmlsZSI6Ii4vc3JjL2J1aWx0aW5zL2N1c3RvbWNzcy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCdWlsdGluIGZyb20gXCIuLi9zdHJ1Y3RzL2J1aWx0aW5cIjtcclxuaW1wb3J0IHtTZXR0aW5ncywgRGF0YVN0b3JlLCBSZWFjdCwgV2VicGFja01vZHVsZXMsIEV2ZW50cywgRE9NTWFuYWdlciwgU3RyaW5nc30gZnJvbSBcIm1vZHVsZXNcIjtcclxuaW1wb3J0IENTU0VkaXRvciBmcm9tIFwiLi4vdWkvY3VzdG9tY3NzL2Nzc2VkaXRvclwiO1xyXG5pbXBvcnQgRmxvYXRpbmdXaW5kb3dzIGZyb20gXCIuLi91aS9mbG9hdGluZ3dpbmRvd3NcIjtcclxuaW1wb3J0IFNldHRpbmdzVGl0bGUgZnJvbSBcIi4uL3VpL3NldHRpbmdzL3RpdGxlXCI7XHJcbmltcG9ydCBVdGlsaXRpZXMgZnJvbSBcIi4uL21vZHVsZXMvdXRpbGl0aWVzXCI7XHJcblxyXG5jb25zdCBmcyA9IHJlcXVpcmUoXCJmc1wiKTtcclxuY29uc3QgZWxlY3Ryb24gPSByZXF1aXJlKFwiZWxlY3Ryb25cIik7XHJcbmNvbnN0IFVzZXJTZXR0aW5ncyA9IFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJ1cGRhdGVBY2NvdW50XCIpO1xyXG5jb25zdCBEaXNwYXRjaGVyID0gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcImRpcnR5RGlzcGF0Y2hcIik7XHJcbmNvbnN0IEFjdGlvblR5cGVzID0gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcIkFjdGlvblR5cGVzXCIpLkFjdGlvblR5cGVzO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgbmV3IGNsYXNzIEN1c3RvbUNTUyBleHRlbmRzIEJ1aWx0aW4ge1xyXG4gICAgZ2V0IG5hbWUoKSB7cmV0dXJuIFwiQ3VzdG9tIENTU1wiO31cclxuICAgIGdldCBjYXRlZ29yeSgpIHtyZXR1cm4gXCJjdXN0b21jc3NcIjt9XHJcbiAgICBnZXQgaWQoKSB7cmV0dXJuIFwiY3VzdG9tY3NzXCI7fVxyXG4gICAgZ2V0IHN0YXJ0RGV0YWNoZWQoKSB7cmV0dXJuIFNldHRpbmdzLmdldCh0aGlzLmNvbGxlY3Rpb24sIHRoaXMuY2F0ZWdvcnksIFwib3BlbkFjdGlvblwiKSA9PSBcImRldGFjaGVkXCI7fVxyXG4gICAgZ2V0IG5hdGl2ZU9wZW4oKSB7cmV0dXJuIFNldHRpbmdzLmdldCh0aGlzLmNvbGxlY3Rpb24sIHRoaXMuY2F0ZWdvcnksIFwib3BlbkFjdGlvblwiKSA9PSBcInN5c3RlbVwiO31cclxuXHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIHRoaXMuc2F2ZWRDc3MgPSBcIlwiO1xyXG4gICAgICAgIHRoaXMuaW5zZXJ0ZWRDc3MgPSBcIlwiO1xyXG4gICAgICAgIHRoaXMuaXNEZXRhY2hlZCA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGVuYWJsZWQoKSB7XHJcbiAgICAgICAgaWYgKCF3aW5kb3cuYWNlKSB7XHJcbiAgICAgICAgICAgIERPTU1hbmFnZXIuaW5qZWN0U2NyaXB0KFwiYWNlLXNjcmlwdFwiLCBcImh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL2FjZS8xLjIuOS9hY2UuanNcIikudGhlbigoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAod2luZG93LnJlcXVpcmUub3JpZ2luYWwpIHdpbmRvdy5yZXF1aXJlID0gd2luZG93LnJlcXVpcmUub3JpZ2luYWw7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBTZXR0aW5ncy5yZWdpc3RlclBhbmVsKHRoaXMuaWQsIFN0cmluZ3MuUGFuZWxzLmN1c3RvbWNzcywge1xyXG4gICAgICAgICAgICBvcmRlcjogMixcclxuICAgICAgICAgICAgZWxlbWVudDogKCkgPT4gWzxTZXR0aW5nc1RpdGxlIHRleHQ9e1N0cmluZ3MuQ3VzdG9tQ1NTLmVkaXRvclRpdGxlfSAvPiwgUmVhY3QuY3JlYXRlRWxlbWVudChDU1NFZGl0b3IsIHtcclxuICAgICAgICAgICAgICAgIGNzczogdGhpcy5zYXZlZENzcyxcclxuICAgICAgICAgICAgICAgIHNhdmU6IHRoaXMuc2F2ZUNTUy5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgICAgICAgdXBkYXRlOiB0aGlzLmluc2VydENTUy5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgICAgICAgb3Blbk5hdGl2ZTogdGhpcy5vcGVuTmF0aXZlLmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgICAgICBvcGVuRGV0YWNoZWQ6IHRoaXMub3BlbkRldGFjaGVkLmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgICAgICBvbkNoYW5nZTogdGhpcy5vbkNoYW5nZS5iaW5kKHRoaXMpXHJcbiAgICAgICAgICAgIH0pXSxcclxuICAgICAgICAgICAgb25DbGljazogKHRoaXNPYmplY3QpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzRGV0YWNoZWQpIHJldHVybjtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLm5hdGl2ZU9wZW4pIHJldHVybiB0aGlzLm9wZW5OYXRpdmUoKTtcclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuc3RhcnREZXRhY2hlZCkgcmV0dXJuIHRoaXMub3BlbkRldGFjaGVkKCk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBzZXR0aW5nc1ZpZXcgPSBVdGlsaXRpZXMuZmluZEluUmVuZGVyVHJlZSh0aGlzT2JqZWN0Ll9yZWFjdEludGVybmFsRmliZXIsIG0gPT4gbSAmJiBtLm9uU2V0U2VjdGlvbiwge3dhbGthYmxlOiBbXCJjaGlsZFwiLCBcIm1lbW9pemVkUHJvcHNcIiwgXCJwcm9wc1wiLCBcImNoaWxkcmVuXCJdfSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoc2V0dGluZ3NWaWV3ICYmIHNldHRpbmdzVmlldy5vblNldFNlY3Rpb24pIHNldHRpbmdzVmlldy5vblNldFNlY3Rpb24odGhpcy5pZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmxvYWRDU1MoKTtcclxuICAgICAgICB0aGlzLmluc2VydENTUyh0aGlzLnNhdmVkQ3NzKTtcclxuICAgICAgICB0aGlzLndhdGNoQ29udGVudCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGRpc2FibGVkKCkge1xyXG4gICAgICAgIFNldHRpbmdzLnJlbW92ZVBhbmVsKHRoaXMuaWQpO1xyXG4gICAgICAgIHRoaXMudW53YXRjaENvbnRlbnQoKTtcclxuICAgIH1cclxuXHJcbiAgICB3YXRjaENvbnRlbnQoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMud2F0Y2hlcikgcmV0dXJuIHRoaXMuZXJyb3IoXCJBbHJlYWR5IHdhdGNoaW5nIGNvbnRlbnQuXCIpO1xyXG4gICAgICAgIGNvbnN0IHRpbWVDYWNoZSA9IHt9O1xyXG4gICAgICAgIHRoaXMubG9nKFwiU3RhcnRpbmcgdG8gd2F0Y2ggY29udGVudC5cIik7XHJcbiAgICAgICAgdGhpcy53YXRjaGVyID0gZnMud2F0Y2goRGF0YVN0b3JlLmN1c3RvbUNTUywge3BlcnNpc3RlbnQ6IGZhbHNlfSwgYXN5bmMgKGV2ZW50VHlwZSwgZmlsZW5hbWUpID0+IHtcclxuICAgICAgICAgICAgaWYgKCFldmVudFR5cGUgfHwgIWZpbGVuYW1lKSByZXR1cm47XHJcbiAgICAgICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKHIgPT4gc2V0VGltZW91dChyLCA1MCkpO1xyXG4gICAgICAgICAgICB0cnkge2ZzLnN0YXRTeW5jKERhdGFTdG9yZS5jdXN0b21DU1MpO31cclxuICAgICAgICAgICAgY2F0Y2ggKGVycikge1xyXG4gICAgICAgICAgICAgICAgaWYgKGVyci5jb2RlICE9PSBcIkVOT0VOVFwiKSByZXR1cm47XHJcbiAgICAgICAgICAgICAgICBkZWxldGUgdGltZUNhY2hlW2ZpbGVuYW1lXTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2F2ZUNTUyhcIlwiKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBzdGF0cyA9IGZzLnN0YXRTeW5jKERhdGFTdG9yZS5jdXN0b21DU1MpO1xyXG4gICAgICAgICAgICBpZiAoIXN0YXRzIHx8ICFzdGF0cy5tdGltZSB8fCAhc3RhdHMubXRpbWUuZ2V0VGltZSgpKSByZXR1cm47XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2Yoc3RhdHMubXRpbWUuZ2V0VGltZSgpKSAhPT0gXCJudW1iZXJcIikgcmV0dXJuO1xyXG4gICAgICAgICAgICBpZiAodGltZUNhY2hlW2ZpbGVuYW1lXSA9PSBzdGF0cy5tdGltZS5nZXRUaW1lKCkpIHJldHVybjtcclxuICAgICAgICAgICAgdGltZUNhY2hlW2ZpbGVuYW1lXSA9IHN0YXRzLm10aW1lLmdldFRpbWUoKTtcclxuICAgICAgICAgICAgaWYgKGV2ZW50VHlwZSA9PSBcImNoYW5nZVwiKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdDU1MgPSBEYXRhU3RvcmUubG9hZEN1c3RvbUNTUygpO1xyXG4gICAgICAgICAgICAgICAgaWYgKG5ld0NTUyA9PSB0aGlzLnNhdmVkQ3NzKSByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNhdmVkQ3NzID0gbmV3Q1NTO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pbnNlcnRDU1ModGhpcy5zYXZlZENzcyk7XHJcbiAgICAgICAgICAgICAgICBFdmVudHMuZW1pdChcImN1c3RvbWNzcy11cGRhdGVkXCIsIHRoaXMuc2F2ZWRDc3MpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdW53YXRjaENvbnRlbnQoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLndhdGNoZXIpIHJldHVybiB0aGlzLmVycm9yKFwiV2FzIG5vdCB3YXRjaGluZyBjb250ZW50LlwiKTtcclxuICAgICAgICB0aGlzLndhdGNoZXIuY2xvc2UoKTtcclxuICAgICAgICBkZWxldGUgdGhpcy53YXRjaGVyO1xyXG4gICAgICAgIHRoaXMubG9nKFwiTm8gbG9uZ2VyIHdhdGNoaW5nIGNvbnRlbnQuXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uQ2hhbmdlKHZhbHVlKSB7XHJcbiAgICAgICAgaWYgKCFTZXR0aW5ncy5nZXQoXCJzZXR0aW5nc1wiLCBcImN1c3RvbWNzc1wiLCBcImxpdmVVcGRhdGVcIikpIHJldHVybjtcclxuICAgICAgICB0aGlzLmluc2VydENTUyh2YWx1ZSk7XHJcbiAgICAgICAgdGhpcy5zYXZlQ1NTKHZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBsb2FkQ1NTKCkge1xyXG4gICAgICAgIHRoaXMuc2F2ZWRDc3MgPSBEYXRhU3RvcmUubG9hZEN1c3RvbUNTUygpO1xyXG4gICAgfVxyXG5cclxuICAgIGluc2VydENTUyhuZXdDc3MpIHtcclxuICAgICAgICBpZiAodHlwZW9mKG5ld0NzcykgPT09IFwidW5kZWZpbmVkXCIpIG5ld0NzcyA9IHRoaXMuaW5zZXJ0ZWRDc3M7XHJcbiAgICAgICAgZWxzZSB0aGlzLmluc2VydGVkQ3NzID0gbmV3Q3NzO1xyXG4gICAgICAgIERPTU1hbmFnZXIudXBkYXRlQ3VzdG9tQ1NTKG5ld0Nzcyk7XHJcbiAgICB9XHJcblxyXG4gICAgc2F2ZUNTUyhuZXdDc3MpIHtcclxuICAgICAgICBpZiAodHlwZW9mKG5ld0NzcykgIT09IFwidW5kZWZpbmVkXCIpIHRoaXMuc2F2ZWRDc3MgPSBuZXdDc3M7XHJcbiAgICAgICAgRGF0YVN0b3JlLnNhdmVDdXN0b21DU1ModGhpcy5zYXZlZENzcyk7XHJcbiAgICB9XHJcblxyXG4gICAgb3Blbk5hdGl2ZSgpIHtcclxuICAgICAgICBlbGVjdHJvbi5zaGVsbC5vcGVuRXh0ZXJuYWwoYGZpbGU6Ly8ke0RhdGFTdG9yZS5jdXN0b21DU1N9YCk7XHJcbiAgICB9XHJcblxyXG4gICAgb3BlbkRldGFjaGVkKGN1cnJlbnRDU1MpIHtcclxuICAgICAgICBjb25zdCBlZGl0b3JSZWYgPSBSZWFjdC5jcmVhdGVSZWYoKTtcclxuICAgICAgICBjb25zdCBlZGl0b3IgPSBSZWFjdC5jcmVhdGVFbGVtZW50KENTU0VkaXRvciwge1xyXG4gICAgICAgICAgICBpZDogXCJiZC1mbG9hdGluZy1lZGl0b3JcIixcclxuICAgICAgICAgICAgcmVmOiBlZGl0b3JSZWYsXHJcbiAgICAgICAgICAgIGNzczogY3VycmVudENTUyxcclxuICAgICAgICAgICAgc2F2ZTogdGhpcy5zYXZlQ1NTLmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgIHVwZGF0ZTogdGhpcy5pbnNlcnRDU1MuYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgb3Blbk5hdGl2ZTogdGhpcy5vcGVuTmF0aXZlLmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgIG9uQ2hhbmdlOiB0aGlzLm9uQ2hhbmdlLmJpbmQodGhpcylcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgRmxvYXRpbmdXaW5kb3dzLm9wZW4oe1xyXG4gICAgICAgICAgICBvbkNsb3NlOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmlzRGV0YWNoZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgb25SZXNpemU6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICghZWRpdG9yUmVmIHx8ICFlZGl0b3JSZWYuY3VycmVudCB8fCAhZWRpdG9yUmVmLmN1cnJlbnQucmVzaXplKSByZXR1cm47XHJcbiAgICAgICAgICAgICAgICBlZGl0b3JSZWYuY3VycmVudC5yZXNpemUoKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgdGl0bGU6IFN0cmluZ3MuQ3VzdG9tQ1NTLmVkaXRvclRpdGxlLFxyXG4gICAgICAgICAgICBpZDogXCJmbG9hdGluZy1lZGl0b3Itd2luZG93XCIsXHJcbiAgICAgICAgICAgIGhlaWdodDogNDcwLFxyXG4gICAgICAgICAgICB3aWR0aDogNDEwLFxyXG4gICAgICAgICAgICBjZW50ZXI6IHRydWUsXHJcbiAgICAgICAgICAgIHJlc2l6YWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgY2hpbGRyZW46IGVkaXRvcixcclxuICAgICAgICAgICAgY29uZmlybUNsb3NlOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWVkaXRvclJlZiB8fCAhZWRpdG9yUmVmLmN1cnJlbnQpIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBlZGl0b3JSZWYuY3VycmVudC5oYXNVbnNhdmVkQ2hhbmdlcztcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgY29uZmlybWF0aW9uVGV4dDogU3RyaW5ncy5DdXN0b21DU1MuY29uZmlybWF0aW9uVGV4dFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuaXNEZXRhY2hlZCA9IHRydWU7XHJcbiAgICAgICAgVXNlclNldHRpbmdzLmNsb3NlKCk7XHJcbiAgICAgICAgRGlzcGF0Y2hlci5kaXJ0eURpc3BhdGNoKHt0eXBlOiBBY3Rpb25UeXBlcy5MQVlFUl9QT1B9KTtcclxuICAgIH1cclxufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/builtins/customcss.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _structs_builtin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../structs/builtin */ \"./src/structs/builtin.js\");\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _ui_customcss_csseditor__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../ui/customcss/csseditor */ \"./src/ui/customcss/csseditor.jsx\");\n/* harmony import */ var _ui_floatingwindows__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../ui/floatingwindows */ \"./src/ui/floatingwindows.js\");\n/* harmony import */ var _ui_settings_title__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../ui/settings/title */ \"./src/ui/settings/title.jsx\");\n/* harmony import */ var _modules_utilities__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../modules/utilities */ \"./src/modules/utilities.js\");\n\n\n\n\n\n\n\nconst fs = __webpack_require__(/*! fs */ \"fs\");\n\nconst electron = __webpack_require__(/*! electron */ \"electron\");\n\nconst UserSettings = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"updateAccount\");\nconst Dispatcher = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"dirtyDispatch\");\nconst ActionTypes = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"ActionTypes\").ActionTypes;\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class CustomCSS extends _structs_builtin__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n get name() {\n return \"Custom CSS\";\n }\n\n get category() {\n return \"customcss\";\n }\n\n get id() {\n return \"customcss\";\n }\n\n get startDetached() {\n return modules__WEBPACK_IMPORTED_MODULE_1__[\"Settings\"].get(this.collection, this.category, \"openAction\") == \"detached\";\n }\n\n get nativeOpen() {\n return modules__WEBPACK_IMPORTED_MODULE_1__[\"Settings\"].get(this.collection, this.category, \"openAction\") == \"system\";\n }\n\n constructor() {\n super();\n this.savedCss = \"\";\n this.insertedCss = \"\";\n this.isDetached = false;\n }\n\n async enabled() {\n if (!window.ace) {\n modules__WEBPACK_IMPORTED_MODULE_1__[\"DOMManager\"].injectScript(\"ace-script\", \"https://cdnjs.cloudflare.com/ajax/libs/ace/1.2.9/ace.js\").then(() => {\n if (window.require.original) window.require = window.require.original;\n });\n }\n\n modules__WEBPACK_IMPORTED_MODULE_1__[\"Settings\"].registerPanel(this.id, modules__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].Panels.customcss, {\n order: 2,\n element: () => [/*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(_ui_settings_title__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n text: modules__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].CustomCSS.editorTitle\n }), modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(_ui_customcss_csseditor__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n css: this.savedCss,\n save: this.saveCSS.bind(this),\n update: this.insertCSS.bind(this),\n openNative: this.openNative.bind(this),\n openDetached: this.openDetached.bind(this),\n onChange: this.onChange.bind(this)\n })],\n onClick: thisObject => {\n if (this.isDetached) return;\n if (this.nativeOpen) return this.openNative();else if (this.startDetached) return this.openDetached();\n const settingsView = _modules_utilities__WEBPACK_IMPORTED_MODULE_5__[\"default\"].findInRenderTree(thisObject._reactInternalFiber, m => m && m.onSetSection, {\n walkable: [\"child\", \"memoizedProps\", \"props\", \"children\"]\n });\n if (settingsView && settingsView.onSetSection) settingsView.onSetSection(this.id);\n }\n });\n this.loadCSS();\n this.insertCSS(this.savedCss);\n this.watchContent();\n }\n\n disabled() {\n modules__WEBPACK_IMPORTED_MODULE_1__[\"Settings\"].removePanel(this.id);\n this.unwatchContent();\n }\n\n watchContent() {\n if (this.watcher) return this.error(\"Already watching content.\");\n const timeCache = {};\n this.log(\"Starting to watch content.\");\n this.watcher = fs.watch(modules__WEBPACK_IMPORTED_MODULE_1__[\"DataStore\"].customCSS, {\n persistent: false\n }, async (eventType, filename) => {\n if (!eventType || !filename) return;\n await new Promise(r => setTimeout(r, 50));\n\n try {\n fs.statSync(modules__WEBPACK_IMPORTED_MODULE_1__[\"DataStore\"].customCSS);\n } catch (err) {\n if (err.code !== \"ENOENT\") return;\n delete timeCache[filename];\n this.saveCSS(\"\");\n }\n\n const stats = fs.statSync(modules__WEBPACK_IMPORTED_MODULE_1__[\"DataStore\"].customCSS);\n if (!stats || !stats.mtime || !stats.mtime.getTime()) return;\n if (typeof stats.mtime.getTime() !== \"number\") return;\n if (timeCache[filename] == stats.mtime.getTime()) return;\n timeCache[filename] = stats.mtime.getTime();\n\n if (eventType == \"change\") {\n const newCSS = modules__WEBPACK_IMPORTED_MODULE_1__[\"DataStore\"].loadCustomCSS();\n if (newCSS == this.savedCss) return;\n this.savedCss = newCSS;\n this.insertCSS(this.savedCss);\n modules__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].emit(\"customcss-updated\", this.savedCss);\n }\n });\n }\n\n unwatchContent() {\n if (!this.watcher) return this.error(\"Was not watching content.\");\n this.watcher.close();\n delete this.watcher;\n this.log(\"No longer watching content.\");\n }\n\n onChange(value) {\n if (!modules__WEBPACK_IMPORTED_MODULE_1__[\"Settings\"].get(\"settings\", \"customcss\", \"liveUpdate\")) return;\n this.insertCSS(value);\n this.saveCSS(value);\n }\n\n loadCSS() {\n this.savedCss = modules__WEBPACK_IMPORTED_MODULE_1__[\"DataStore\"].loadCustomCSS();\n }\n\n insertCSS(newCss) {\n if (typeof newCss === \"undefined\") newCss = this.insertedCss;else this.insertedCss = newCss;\n modules__WEBPACK_IMPORTED_MODULE_1__[\"DOMManager\"].updateCustomCSS(newCss);\n }\n\n saveCSS(newCss) {\n if (typeof newCss !== \"undefined\") this.savedCss = newCss;\n modules__WEBPACK_IMPORTED_MODULE_1__[\"DataStore\"].saveCustomCSS(this.savedCss);\n }\n\n openNative() {\n electron.shell.openExternal(`file://${modules__WEBPACK_IMPORTED_MODULE_1__[\"DataStore\"].customCSS}`);\n }\n\n openDetached(currentCSS) {\n const editorRef = modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createRef();\n const editor = modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(_ui_customcss_csseditor__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n id: \"bd-floating-editor\",\n ref: editorRef,\n css: currentCSS,\n save: this.saveCSS.bind(this),\n update: this.insertCSS.bind(this),\n openNative: this.openNative.bind(this),\n onChange: this.onChange.bind(this)\n });\n _ui_floatingwindows__WEBPACK_IMPORTED_MODULE_3__[\"default\"].open({\n onClose: () => {\n this.isDetached = false;\n },\n onResize: () => {\n if (!editorRef || !editorRef.current || !editorRef.current.resize) return;\n editorRef.current.resize();\n },\n title: modules__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].CustomCSS.editorTitle,\n id: \"floating-editor-window\",\n height: 470,\n width: 410,\n center: true,\n resizable: true,\n children: editor,\n confirmClose: () => {\n if (!editorRef || !editorRef.current) return false;\n return editorRef.current.hasUnsavedChanges;\n },\n confirmationText: modules__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].CustomCSS.confirmationText\n });\n this.isDetached = true;\n UserSettings.close();\n Dispatcher.dirtyDispatch({\n type: ActionTypes.LAYER_POP\n });\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYnVpbHRpbnMvY3VzdG9tY3NzLmpzP2MzZjIiXSwibmFtZXMiOlsiZnMiLCJyZXF1aXJlIiwiZWxlY3Ryb24iLCJVc2VyU2V0dGluZ3MiLCJXZWJwYWNrTW9kdWxlcyIsImdldEJ5UHJvcHMiLCJEaXNwYXRjaGVyIiwiQWN0aW9uVHlwZXMiLCJDdXN0b21DU1MiLCJCdWlsdGluIiwibmFtZSIsImNhdGVnb3J5IiwiaWQiLCJzdGFydERldGFjaGVkIiwiU2V0dGluZ3MiLCJnZXQiLCJjb2xsZWN0aW9uIiwibmF0aXZlT3BlbiIsImNvbnN0cnVjdG9yIiwic2F2ZWRDc3MiLCJpbnNlcnRlZENzcyIsImlzRGV0YWNoZWQiLCJlbmFibGVkIiwid2luZG93IiwiYWNlIiwiRE9NTWFuYWdlciIsImluamVjdFNjcmlwdCIsInRoZW4iLCJvcmlnaW5hbCIsInJlZ2lzdGVyUGFuZWwiLCJTdHJpbmdzIiwiUGFuZWxzIiwiY3VzdG9tY3NzIiwib3JkZXIiLCJlbGVtZW50IiwiZWRpdG9yVGl0bGUiLCJSZWFjdCIsImNyZWF0ZUVsZW1lbnQiLCJDU1NFZGl0b3IiLCJjc3MiLCJzYXZlIiwic2F2ZUNTUyIsImJpbmQiLCJ1cGRhdGUiLCJpbnNlcnRDU1MiLCJvcGVuTmF0aXZlIiwib3BlbkRldGFjaGVkIiwib25DaGFuZ2UiLCJvbkNsaWNrIiwidGhpc09iamVjdCIsInNldHRpbmdzVmlldyIsIlV0aWxpdGllcyIsImZpbmRJblJlbmRlclRyZWUiLCJfcmVhY3RJbnRlcm5hbEZpYmVyIiwibSIsIm9uU2V0U2VjdGlvbiIsIndhbGthYmxlIiwibG9hZENTUyIsIndhdGNoQ29udGVudCIsImRpc2FibGVkIiwicmVtb3ZlUGFuZWwiLCJ1bndhdGNoQ29udGVudCIsIndhdGNoZXIiLCJlcnJvciIsInRpbWVDYWNoZSIsImxvZyIsIndhdGNoIiwiRGF0YVN0b3JlIiwiY3VzdG9tQ1NTIiwicGVyc2lzdGVudCIsImV2ZW50VHlwZSIsImZpbGVuYW1lIiwiUHJvbWlzZSIsInIiLCJzZXRUaW1lb3V0Iiwic3RhdFN5bmMiLCJlcnIiLCJjb2RlIiwic3RhdHMiLCJtdGltZSIsImdldFRpbWUiLCJuZXdDU1MiLCJsb2FkQ3VzdG9tQ1NTIiwiRXZlbnRzIiwiZW1pdCIsImNsb3NlIiwidmFsdWUiLCJuZXdDc3MiLCJ1cGRhdGVDdXN0b21DU1MiLCJzYXZlQ3VzdG9tQ1NTIiwic2hlbGwiLCJvcGVuRXh0ZXJuYWwiLCJjdXJyZW50Q1NTIiwiZWRpdG9yUmVmIiwiY3JlYXRlUmVmIiwiZWRpdG9yIiwicmVmIiwiRmxvYXRpbmdXaW5kb3dzIiwib3BlbiIsIm9uQ2xvc2UiLCJvblJlc2l6ZSIsImN1cnJlbnQiLCJyZXNpemUiLCJ0aXRsZSIsImhlaWdodCIsIndpZHRoIiwiY2VudGVyIiwicmVzaXphYmxlIiwiY2hpbGRyZW4iLCJjb25maXJtQ2xvc2UiLCJoYXNVbnNhdmVkQ2hhbmdlcyIsImNvbmZpcm1hdGlvblRleHQiLCJkaXJ0eURpc3BhdGNoIiwidHlwZSIsIkxBWUVSX1BPUCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsTUFBTUEsRUFBRSxHQUFHQyxtQkFBTyxDQUFDLGNBQUQsQ0FBbEI7O0FBQ0EsTUFBTUMsUUFBUSxHQUFHRCxtQkFBTyxDQUFDLDBCQUFELENBQXhCOztBQUNBLE1BQU1FLFlBQVksR0FBR0Msc0RBQWMsQ0FBQ0MsVUFBZixDQUEwQixlQUExQixDQUFyQjtBQUNBLE1BQU1DLFVBQVUsR0FBR0Ysc0RBQWMsQ0FBQ0MsVUFBZixDQUEwQixlQUExQixDQUFuQjtBQUNBLE1BQU1FLFdBQVcsR0FBR0gsc0RBQWMsQ0FBQ0MsVUFBZixDQUEwQixhQUExQixFQUF5Q0UsV0FBN0Q7QUFFZSxtRUFBSSxNQUFNQyxTQUFOLFNBQXdCQyx3REFBeEIsQ0FBZ0M7QUFDL0MsTUFBSUMsSUFBSixHQUFXO0FBQUMsV0FBTyxZQUFQO0FBQXFCOztB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QUlqQitFLGNBQVEsRUFBRSxNQUFNO0FBQ1osWUFBSSxDQUFDUCxTQUFELElBQWMsQ0FBQ0EsU0FBUyxDQUFDUSxPQUF6QixJQUFvQyxDQUFDUixTQUFTLENBQUNRLE9BQVYsQ0FBa0JDLE1BQTNELEVBQW1FO0FBQ25FVCxpQkFBUyxDQUFDUSxPQUFWLENBQWtCQyxNQUFsQjtBQUNILE9BUGdCO0FBUWpCQyxXQUFLLEVBQUV6RSwrQ0FBTyxDQUFDdEIsU0FBUixDQUFrQjJCLFdBUlI7QUFTakJ2QixRQUFFLEVBQUUsd0JBVGE7QUFVakI0RixZQUFNLEVBQUUsR0FWUztBQVdqQkMsV0FBSyxFQUFFLEdBWFU7QUFZakJDLFlBQU0sRUFBRSxJQVpTO0FBYWpCQyxlQUFTLEVBQUUsSUFiTTtBQWNqQkMsY0FBUSxFQUFFYixNQWRPO0FBZWpCYyxrQkFBWSxFQUFFLE1BQU07QUFDaEIsWUFBSSxDQUFDaEIsU0FBRCxJQUFjLENBQUNBLFNBQVMsQ0FBQ1EsT0FBN0IsRUFBc0MsT0FBTyxLQUFQO0FBQ3RDLGVBQU9SLFNBQVMsQ0FBQ1EsT0FBVixDQUFrQlMsaUJBQXpCO0FBQ0gsT0FsQmdCO0FBbUJqQkMsc0JBQWdCLEVBQUVqRiwrQ0FBTyxDQUFDdEIsU0FBUixDQUFrQnVHO0FBbkJuQixLQUFyQjtBQXFCQSxTQUFLMUYsVUFBTCxHQUFrQixJQUFsQjtBQUNBbEIsZ0JBQVksQ0FBQ2tGLEtBQWI7QUFDQS9FLGNBQVUsQ0FBQzBHLGFBQVgsQ0FBeUI7QUFBQ0MsVUFBSSxFQUFFMUcsV0FBVyxDQUFDMkc7QUFBbkIsS0FBekI7QUFDSDs7QUFoSjhDLENBQXBDLEVBQWYiLCJmaWxlIjoiLi9zcmMvYnVpbHRpbnMvY3VzdG9tY3NzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJ1aWx0aW4gZnJvbSBcIi4uL3N0cnVjdHMvYnVpbHRpblwiO1xyXG5pbXBvcnQge1NldHRpbmdzLCBEYXRhU3RvcmUsIFJlYWN0LCBXZWJwYWNrTW9kdWxlcywgRXZlbnRzLCBET01NYW5hZ2VyLCBTdHJpbmdzfSBmcm9tIFwibW9kdWxlc1wiO1xyXG5pbXBvcnQgQ1NTRWRpdG9yIGZyb20gXCIuLi91aS9jdXN0b21jc3MvY3NzZWRpdG9yXCI7XHJcbmltcG9ydCBGbG9hdGluZ1dpbmRvd3MgZnJvbSBcIi4uL3VpL2Zsb2F0aW5nd2luZG93c1wiO1xyXG5pbXBvcnQgU2V0dGluZ3NUaXRsZSBmcm9tIFwiLi4vdWkvc2V0dGluZ3MvdGl0bGVcIjtcclxuaW1wb3J0IFV0aWxpdGllcyBmcm9tIFwiLi4vbW9kdWxlcy91dGlsaXRpZXNcIjtcclxuXHJcbmNvbnN0IGZzID0gcmVxdWlyZShcImZzXCIpO1xyXG5jb25zdCBlbGVjdHJvbiA9IHJlcXVpcmUoXCJlbGVjdHJvblwiKTtcclxuY29uc3QgVXNlclNldHRpbmdzID0gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcInVwZGF0ZUFjY291bnRcIik7XHJcbmNvbnN0IERpc3BhdGNoZXIgPSBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiZGlydHlEaXNwYXRjaFwiKTtcclxuY29uc3QgQWN0aW9uVHlwZXMgPSBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiQWN0aW9uVHlwZXNcIikuQWN0aW9uVHlwZXM7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBuZXcgY2xhc3MgQ3VzdG9tQ1NTIGV4dGVuZHMgQnVpbHRpbiB7XHJcbiAgICBnZXQgbmFtZSgpIHtyZXR1cm4gXCJDdXN0b20gQ1NTXCI7fVxyXG4gICAgZ2V0IGNhdGVnb3J5KCkge3JldHVybiBcImN1c3RvbWNzc1wiO31cclxuICAgIGdldCBpZCgpIHtyZXR1cm4gXCJjdXN0b21jc3NcIjt9XHJcbiAgICBnZXQgc3RhcnREZXRhY2hlZCgpIHtyZXR1cm4gU2V0dGluZ3MuZ2V0KHRoaXMuY29sbGVjdGlvbiwgdGhpcy5jYXRlZ29yeSwgXCJvcGVuQWN0aW9uXCIpID09IFwiZGV0YWNoZWRcIjt9XHJcbiAgICBnZXQgbmF0aXZlT3BlbigpIHtyZXR1cm4gU2V0dGluZ3MuZ2V0KHRoaXMuY29sbGVjdGlvbiwgdGhpcy5jYXRlZ29yeSwgXCJvcGVuQWN0aW9uXCIpID09IFwic3lzdGVtXCI7fVxyXG5cclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgdGhpcy5zYXZlZENzcyA9IFwiXCI7XHJcbiAgICAgICAgdGhpcy5pbnNlcnRlZENzcyA9IFwiXCI7XHJcbiAgICAgICAgdGhpcy5pc0RldGFjaGVkID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZW5hYmxlZCgpIHtcclxuICAgICAgICBpZiAoIXdpbmRvdy5hY2UpIHtcclxuICAgICAgICAgICAgRE9NTWFuYWdlci5pbmplY3RTY3JpcHQoXCJhY2Utc2NyaXB0XCIsIFwiaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvYWNlLzEuMi45L2FjZS5qc1wiKS50aGVuKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICh3aW5kb3cucmVxdWlyZS5vcmlnaW5hbCkgd2luZG93LnJlcXVpcmUgPSB3aW5kb3cucmVxdWlyZS5vcmlnaW5hbDtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFNldHRpbmdzLnJlZ2lzdGVyUGFuZWwodGhpcy5pZCwgU3RyaW5ncy5QYW5lbHMuY3VzdG9tY3NzLCB7XHJcbiAgICAgICAgICAgIG9yZGVyOiAyLFxyXG4gICAgICAgICAgICBlbGVtZW50OiAoKSA9PiBbPFNldHRpbmdzVGl0bGUgdGV4dD17U3RyaW5ncy5DdXN0b21DU1MuZWRpdG9yVGl0bGV9IC8+LCBSZWFjdC5jcmVhdGVFbGVtZW50KENTU0VkaXRvciwge1xyXG4gICAgICAgICAgICAgICAgY3NzOiB0aGlzLnNhdmVkQ3NzLFxyXG4gICAgICAgICAgICAgICAgc2F2ZTogdGhpcy5zYXZlQ1NTLmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgICAgICB1cGRhdGU6IHRoaXMuaW5zZXJ0Q1NTLmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgICAgICBvcGVuTmF0aXZlOiB0aGlzLm9wZW5OYXRpdmUuYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgICAgIG9wZW5EZXRhY2hlZDogdGhpcy5vcGVuRGV0YWNoZWQuYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiB0aGlzLm9uQ2hhbmdlLmJpbmQodGhpcylcclxuICAgICAgICAgICAgfSldLFxyXG4gICAgICAgICAgICBvbkNsaWNrOiAodGhpc09iamVjdCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNEZXRhY2hlZCkgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubmF0aXZlT3BlbikgcmV0dXJuIHRoaXMub3Blbk5hdGl2ZSgpO1xyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5zdGFydERldGFjaGVkKSByZXR1cm4gdGhpcy5vcGVuRGV0YWNoZWQoKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHNldHRpbmdzVmlldyA9IFV0aWxpdGllcy5maW5kSW5SZW5kZXJUcmVlKHRoaXNPYmplY3QuX3JlYWN0SW50ZXJuYWxGaWJlciwgbSA9PiBtICYmIG0ub25TZXRTZWN0aW9uLCB7d2Fsa2FibGU6IFtcImNoaWxkXCIsIFwibWVtb2l6ZWRQcm9wc1wiLCBcInByb3BzXCIsIFwiY2hpbGRyZW5cIl19KTtcclxuICAgICAgICAgICAgICAgIGlmIChzZXR0aW5nc1ZpZXcgJiYgc2V0dGluZ3NWaWV3Lm9uU2V0U2VjdGlvbikgc2V0dGluZ3NWaWV3Lm9uU2V0U2VjdGlvbih0aGlzLmlkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMubG9hZENTUygpO1xyXG4gICAgICAgIHRoaXMuaW5zZXJ0Q1NTKHRoaXMuc2F2ZWRDc3MpO1xyXG4gICAgICAgIHRoaXMud2F0Y2hDb250ZW50KCk7XHJcbiAgICB9XHJcblxyXG4gICAgZGlzYWJsZWQoKSB7XHJcbiAgICAgICAgU2V0dGluZ3MucmVtb3ZlUGFuZWwodGhpcy5pZCk7XHJcbiAgICAgICAgdGhpcy51bndhdGNoQ29udGVudCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHdhdGNoQ29udGVudCgpIHtcclxuICAgICAgICBpZiAodGhpcy53YXRjaGVyKSByZXR1cm4gdGhpcy5lcnJvcihcIkFscmVhZHkgd2F0Y2hpbmcgY29udGVudC5cIik7XHJcbiAgICAgICAgY29uc3QgdGltZUNhY2hlID0ge307XHJcbiAgICAgICAgdGhpcy5sb2coXCJTdGFydGluZyB0byB3YXRjaCBjb250ZW50LlwiKTtcclxuICAgICAgICB0aGlzLndhdGNoZXIgPSBmcy53YXRjaChEYXRhU3RvcmUuY3VzdG9tQ1NTLCB7cGVyc2lzdGVudDogZmFsc2V9LCBhc3luYyAoZXZlbnRUeXBlLCBmaWxlbmFtZSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIWV2ZW50VHlwZSB8fCAhZmlsZW5hbWUpIHJldHVybjtcclxuICAgICAgICAgICAgYXdhaXQgbmV3IFByb21pc2UociA9PiBzZXRUaW1lb3V0KHIsIDUwKSk7XHJcbiAgICAgICAgICAgIHRyeSB7ZnMuc3RhdFN5bmMoRGF0YVN0b3JlLmN1c3RvbUNTUyk7fVxyXG4gICAgICAgICAgICBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZXJyLmNvZGUgIT09IFwiRU5PRU5UXCIpIHJldHVybjtcclxuICAgICAgICAgICAgICAgIGRlbGV0ZSB0aW1lQ2FjaGVbZmlsZW5hbWVdO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zYXZlQ1NTKFwiXCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IHN0YXRzID0gZnMuc3RhdFN5bmMoRGF0YVN0b3JlLmN1c3RvbUNTUyk7XHJcbiAgICAgICAgICAgIGlmICghc3RhdHMgfHwgIXN0YXRzLm10aW1lIHx8ICFzdGF0cy5tdGltZS5nZXRUaW1lKCkpIHJldHVybjtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZihzdGF0cy5tdGltZS5nZXRUaW1lKCkpICE9PSBcIm51bWJlclwiKSByZXR1cm47XHJcbiAgICAgICAgICAgIGlmICh0aW1lQ2FjaGVbZmlsZW5hbWVdID09IHN0YXRzLm10aW1lLmdldFRpbWUoKSkgcmV0dXJuO1xyXG4gICAgICAgICAgICB0aW1lQ2FjaGVbZmlsZW5hbWVdID0gc3RhdHMubXRpbWUuZ2V0VGltZSgpO1xyXG4gICAgICAgICAgICBpZiAoZXZlbnRUeXBlID09IFwiY2hhbmdlXCIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0NTUyA9IERhdGFTdG9yZS5sb2FkQ3VzdG9tQ1NTKCk7XHJcbiAgICAgICAgICAgICAgICBpZiAobmV3Q1NTID09IHRoaXMuc2F2ZWRDc3MpIHJldHVybjtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2F2ZWRDc3MgPSBuZXdDU1M7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmluc2VydENTUyh0aGlzLnNhdmVkQ3NzKTtcclxuICAgICAgICAgICAgICAgIEV2ZW50cy5lbWl0KFwiY3VzdG9tY3NzLXVwZGF0ZWRcIiwgdGhpcy5zYXZlZENzcyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB1bndhdGNoQ29udGVudCgpIHtcclxuICAgICAgICBpZiAoIXRoaXMud2F0Y2hlcikgcmV0dXJuIHRoaXMuZXJyb3IoXCJXYXMgbm90IHdhdGNoaW5nIGNvbnRlbnQuXCIpO1xyXG4gICAgICAgIHRoaXMud2F0Y2hlci5jbG9zZSgpO1xyXG4gICAgICAgIGRlbGV0ZSB0aGlzLndhdGNoZXI7XHJcbiAgICAgICAgdGhpcy5sb2coXCJObyBsb25nZXIgd2F0Y2hpbmcgY29udGVudC5cIik7XHJcbiAgICB9XHJcblxyXG4gICAgb25DaGFuZ2UodmFsdWUpIHtcclxuICAgICAgICBpZiAoIVNldHRpbmdzLmdldChcInNldHRpbmdzXCIsIFwiY3VzdG9tY3NzXCIsIFwibGl2ZVVwZGF0ZVwiKSkgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMuaW5zZXJ0Q1NTKHZhbHVlKTtcclxuICAgICAgICB0aGlzLnNhdmVDU1ModmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGxvYWRDU1MoKSB7XHJcbiAgICAgICAgdGhpcy5zYXZlZENzcyA9IERhdGFTdG9yZS5sb2FkQ3VzdG9tQ1NTKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaW5zZXJ0Q1NTKG5ld0Nzcykge1xyXG4gICAgICAgIGlmICh0eXBlb2YobmV3Q3NzKSA9PT0gXCJ1bmRlZmluZWRcIikgbmV3Q3NzID0gdGhpcy5pbnNlcnRlZENzcztcclxuICAgICAgICBlbHNlIHRoaXMuaW5zZXJ0ZWRDc3MgPSBuZXdDc3M7XHJcbiAgICAgICAgRE9NTWFuYWdlci51cGRhdGVDdXN0b21DU1MobmV3Q3NzKTtcclxuICAgIH1cclxuXHJcbiAgICBzYXZlQ1NTKG5ld0Nzcykge1xyXG4gICAgICAgIGlmICh0eXBlb2YobmV3Q3NzKSAhPT0gXCJ1bmRlZmluZWRcIikgdGhpcy5zYXZlZENzcyA9IG5ld0NzcztcclxuICAgICAgICBEYXRhU3RvcmUuc2F2ZUN1c3RvbUNTUyh0aGlzLnNhdmVkQ3NzKTtcclxuICAgIH1cclxuXHJcbiAgICBvcGVuTmF0aXZlKCkge1xyXG4gICAgICAgIGVsZWN0cm9uLnNoZWxsLm9wZW5FeHRlcm5hbChgZmlsZTovLyR7RGF0YVN0b3JlLmN1c3RvbUNTU31gKTtcclxuICAgIH1cclxuXHJcbiAgICBvcGVuRGV0YWNoZWQoY3VycmVudENTUykge1xyXG4gICAgICAgIGNvbnN0IGVkaXRvclJlZiA9IFJlYWN0LmNyZWF0ZVJlZigpO1xyXG4gICAgICAgIGNvbnN0IGVkaXRvciA9IFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ1NTRWRpdG9yLCB7XHJcbiAgICAgICAgICAgIGlkOiBcImJkLWZsb2F0aW5nLWVkaXRvclwiLFxyXG4gICAgICAgICAgICByZWY6IGVkaXRvclJlZixcclxuICAgICAgICAgICAgY3NzOiBjdXJyZW50Q1NTLFxyXG4gICAgICAgICAgICBzYXZlOiB0aGlzLnNhdmVDU1MuYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgdXBkYXRlOiB0aGlzLmluc2VydENTUy5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgICBvcGVuTmF0aXZlOiB0aGlzLm9wZW5OYXRpdmUuYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgb25DaGFuZ2U6IHRoaXMub25DaGFuZ2UuYmluZCh0aGlzKVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBGbG9hdGluZ1dpbmRvd3Mub3Blbih7XHJcbiAgICAgICAgICAgIG9uQ2xvc2U6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaXNEZXRhY2hlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBvblJlc2l6ZTogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFlZGl0b3JSZWYgfHwgIWVkaXRvclJlZi5jdXJyZW50IHx8ICFlZGl0b3JSZWYuY3VycmVudC5yZXNpemUpIHJldHVybjtcclxuICAgICAgICAgICAgICAgIGVkaXRvclJlZi5jdXJyZW50LnJlc2l6ZSgpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB0aXRsZTogU3RyaW5ncy5DdXN0b21DU1MuZWRpdG9yVGl0bGUsXHJcbiAgICAgICAgICAgIGlkOiBcImZsb2F0aW5nLWVkaXRvci13aW5kb3dcIixcclxuICAgICAgICAgICAgaGVpZ2h0OiA0NzAsXHJcbiAgICAgICAgICAgIHdpZHRoOiA0MTAsXHJcbiAgICAgICAgICAgIGNlbnRlcjogdHJ1ZSxcclxuICAgICAgICAgICAgcmVzaXphYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICBjaGlsZHJlbjogZWRpdG9yLFxyXG4gICAgICAgICAgICBjb25maXJtQ2xvc2U6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICghZWRpdG9yUmVmIHx8ICFlZGl0b3JSZWYuY3VycmVudCkgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGVkaXRvclJlZi5jdXJyZW50Lmhhc1Vuc2F2ZWRDaGFuZ2VzO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBjb25maXJtYXRpb25UZXh0OiBTdHJpbmdzLkN1c3RvbUNTUy5jb25maXJtYXRpb25UZXh0XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5pc0RldGFjaGVkID0gdHJ1ZTtcclxuICAgICAgICBVc2VyU2V0dGluZ3MuY2xvc2UoKTtcclxuICAgICAgICBEaXNwYXRjaGVyLmRpcnR5RGlzcGF0Y2goe3R5cGU6IEFjdGlvblR5cGVzLkxBWUVSX1BPUH0pO1xyXG4gICAgfVxyXG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/builtins/customcss.js\n"); /***/ }), @@ -167,7 +166,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _str /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _structs_builtin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../structs/builtin */ \"./src/structs/builtin.js\");\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class DeveloperMode extends _structs_builtin__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n get name() {\n return \"DeveloperMode\";\n }\n\n get category() {\n return \"developer\";\n }\n\n get id() {\n return \"developerMode\";\n }\n\n get selectorModeID() {\n return \"copySelector\";\n }\n\n get selectorMode() {\n return this.get(this.selectorModeID);\n }\n\n constructor() {\n super();\n this.copySelectorListener = this.copySelectorListener.bind(this);\n }\n\n enabled() {\n document.addEventListener(\"contextmenu\", this.copySelectorListener);\n }\n\n disabled() {\n document.removeEventListener(\"contextmenu\", this.copySelectorListener);\n }\n\n copySelectorListener(ctxEvent) {\n ctxEvent.stopPropagation();\n const selector = this.getSelector(ctxEvent.target);\n\n function attach() {\n let cm = modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].query(\".contextMenu-HLZMGh\");\n\n if (!cm) {\n const container = modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].query(\"#app-mount\");\n const cmWrap = modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].createElement(`
`);\n cm = modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].createElement(`
`);\n cmWrap.append(cm);\n container.append(cmWrap);\n cmWrap.style.top = ctxEvent.clientY + \"px\";\n cmWrap.style.left = ctxEvent.clientX + \"px\";\n cmWrap.style.zIndex = \"1002\";\n\n const removeCM = function (removeEvent) {\n if (removeEvent.keyCode && removeEvent.keyCode !== 27) return;\n cmWrap.remove();\n document.removeEventListener(\"click\", removeCM);\n document.removeEventListener(\"contextmenu\", removeCM);\n document.removeEventListener(\"keyup\", removeCM);\n };\n\n document.addEventListener(\"click\", removeCM);\n document.addEventListener(\"contextmenu\", removeCM);\n document.addEventListener(\"keyup\", removeCM);\n }\n\n const cmg = modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].createElement(`
`);\n const cmi = modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].createElement(`
`);\n cmi.append(modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].createElement(`
${modules__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].Developer.copySelector}
`));\n cmi.addEventListener(\"click\", () => {\n modules__WEBPACK_IMPORTED_MODULE_1__[\"DiscordModules\"].ElectronModule.copy(selector);\n cm.style.display = \"none\";\n });\n cmg.append(cmi);\n cm.append(cmg);\n }\n\n setImmediate(attach);\n }\n\n getSelector(element) {\n if (element.id) return `#${element.id}`;\n const rules = this.getRules(element);\n const latestRule = rules[rules.length - 1];\n if (latestRule) return latestRule.selectorText;else if (element.classList.length) return `.${Array.from(element.classList).join(\".\")}`;\n return `.${Array.from(element.parentElement.classList).join(\".\")}`;\n }\n\n getRules(element, css = element.ownerDocument.styleSheets) {\n //if (window.getMatchedCSSRules) return window.getMatchedCSSRules(element);\n const sheets = [...css].filter(s => !s.href || !s.href.includes(\"BetterDiscordApp\"));\n const rules = sheets.map(s => [...(s.cssRules || [])]).flat();\n const elementRules = rules.filter(r => r && r.selectorText && element.matches(r.selectorText) && r.style.length && r.selectorText.split(\", \").length < 8 && !r.selectorText.split(\", \").includes(\"*\"));\n return elementRules;\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL2J1aWx0aW5zL2RldmVsb3Blci9jb3B5c2VsZWN0b3IuanM/ODg5ZSJdLCJuYW1lcyI6WyJEZXZlbG9wZXJNb2RlIiwiQnVpbHRpbiIsIm5hbWUiLCJjYXRlZ29yeSIsImlkIiwic2VsZWN0b3JNb2RlSUQiLCJzZWxlY3Rvck1vZGUiLCJnZXQiLCJjb25zdHJ1Y3RvciIsImNvcHlTZWxlY3Rvckxpc3RlbmVyIiwiYmluZCIsImVuYWJsZWQiLCJkb2N1bWVudCIsImFkZEV2ZW50TGlzdGVuZXIiLCJkaXNhYmxlZCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJjdHhFdmVudCIsInN0b3BQcm9wYWdhdGlvbiIsInNlbGVjdG9yIiwiZ2V0U2VsZWN0b3IiLCJ0YXJnZXQiLCJhdHRhY2giLCJjbSIsIkRPTSIsInF1ZXJ5IiwiY29udGFpbmVyIiwiY21XcmFwIiwiY3JlYXRlRWxlbWVudCIsImFwcGVuZCIsInN0eWxlIiwidG9wIiwiY2xpZW50WSIsImxlZnQiLCJjbGllbnRYIiwiekluZGV4IiwicmVtb3ZlQ00iLCJyZW1vdmVFdmVudCIsImtleUNvZGUiLCJyZW1vdmUiLCJjbWciLCJjbWkiLCJTdHJpbmdzIiwiRGV2ZWxvcGVyIiwiY29weVNlbGVjdG9yIiwiRGlzY29yZE1vZHVsZXMiLCJFbGVjdHJvbk1vZHVsZSIsImNvcHkiLCJkaXNwbGF5Iiwic2V0SW1tZWRpYXRlIiwiZWxlbWVudCIsInJ1bGVzIiwiZ2V0UnVsZXMiLCJsYXRlc3RSdWxlIiwibGVuZ3RoIiwic2VsZWN0b3JUZXh0IiwiY2xhc3NMaXN0IiwiQXJyYXkiLCJmcm9tIiwiam9pbiIsInBhcmVudEVsZW1lbnQiLCJjc3MiLCJvd25lckRvY3VtZW50Iiwic3R5bGVTaGVldHMiLCJzaGVldHMiLCJmaWx0ZXIiLCJzIiwiaHJlZiIsImluY2x1ZGVzIiwibWFwIiwiY3NzUnVsZXMiLCJmbGF0IiwiZWxlbWVudFJ1bGVzIiwiciIsIm1hdGNoZXMiLCJzcGxpdCJd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WSxhQUFSLENBQXNCQyxXQUF0QyxFQUFtRDtBQUN2RDtBQUNBLFVBQU1DLE1BQU0sR0FBRyxDQUFDLEdBQUdILEdBQUosRUFBU0ksTUFBVCxDQUFnQkMsQ0FBQyxJQUFJLENBQUNBLENBQUMsQ0FBQ0MsSUFBSCxJQUFXLENBQUNELENBQUMsQ0FBQ0MsSUFBRixDQUFPQyxRQUFQLENBQWdCLGtCQUFoQixDQUFqQyxDQUFmO0FBQ0EsVUFBTWpCLEtBQUssR0FBR2EsTUFBTSxDQUFDSyxHQUFQLENBQVdILENBQUMsSUFBSSxDQUFDLElBQUlBLENBQUMsQ0FBQ0ksUUFBRixJQUFjLEVBQWxCLENBQUQsQ0FBaEIsRUFBeUNDLElBQXpDLEVBQWQ7QUFDQSxVQUFNQyxZQUFZLEdBQUdyQixLQUFLLENBQUNjLE1BQU4sQ0FBYVEsQ0FBQyxJQUFJQSxDQUFDLElBQUlBLENBQUMsQ0FBQ2xCLFlBQVAsSUFBdUJMLE9BQU8sQ0FBQ3dCLE9BQVIsQ0FBZ0JELENBQUMsQ0FBQ2xCLFlBQWxCLENBQXZCLElBQTBEa0IsQ0FBQyxDQUFDM0MsS0FBRixDQUFRd0IsTUFBbEUsSUFBNEVtQixDQUFDLENBQUNsQixZQUFGLENBQWVvQixLQUFmLENBQXFCLElBQXJCLEVBQTJCckIsTUFBM0IsR0FBb0MsQ0FBaEgsSUFBcUgsQ0FBQ21CLENBQUMsQ0FBQ2xCLFlBQUYsQ0FBZW9CLEtBQWYsQ0FBcUIsSUFBckIsRUFBMkJQLFFBQTNCLENBQW9DLEdBQXBDLENBQXhJLENBQXJCO0FBQ0EsV0FBT0ksWUFBUDtBQUNIOztBQTNFa0QsQ0FBeEMsRUFBZiIsImZpbGUiOiIuL3NyYy9idWlsdGlucy9kZXZlbG9wZXIvY29weXNlbGVjdG9yLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJ1aWx0aW4gZnJvbSBcIi4uLy4uL3N0cnVjdHMvYnVpbHRpblwiO1xyXG5pbXBvcnQge0RPTSwgRGlzY29yZE1vZHVsZXMsIFN0cmluZ3N9IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBuZXcgY2xhc3MgRGV2ZWxvcGVyTW9kZSBleHRlbmRzIEJ1aWx0aW4ge1xyXG4gICAgZ2V0IG5hbWUoKSB7cmV0dXJuIFwiRGV2ZWxvcGVyTW9kZVwiO31cclxuICAgIGdldCBjYXRlZ29yeSgpIHtyZXR1cm4gXCJkZXZlbG9wZXJcIjt9XHJcbiAgICBnZXQgaWQoKSB7cmV0dXJuIFwiZGV2ZWxvcGVyTW9kZVwiO31cclxuICAgIGdldCBzZWxlY3Rvck1vZGVJRCgpIHtyZXR1cm4gXCJjb3B5U2VsZWN0b3JcIjt9XHJcbiAgICBnZXQgc2VsZWN0b3JNb2RlKCkge3JldHVybiB0aGlzLmdldCh0aGlzLnNlbGVjdG9yTW9kZUlEKTt9XHJcblxyXG4gICAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICB0aGlzLmNvcHlTZWxlY3Rvckxpc3RlbmVyID0gdGhpcy5jb3B5U2VsZWN0b3JMaXN0ZW5lci5iaW5kKHRoaXMpO1xyXG4gICAgfVxyXG5cclxuICAgIGVuYWJsZWQoKSB7XHJcbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImNvbnRleHRtZW51XCIsIHRoaXMuY29weVNlbGVjdG9yTGlzdGVuZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIGRpc2FibGVkKCkge1xyXG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjb250ZXh0bWVudVwiLCB0aGlzLmNvcHlTZWxlY3Rvckxpc3RlbmVyKTtcclxuICAgIH1cclxuXHJcbiAgICBjb3B5U2VsZWN0b3JMaXN0ZW5lcihjdHhFdmVudCkge1xyXG4gICAgICAgIGN0eEV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgIGNvbnN0IHNlbGVjdG9yID0gdGhpcy5nZXRTZWxlY3RvcihjdHhFdmVudC50YXJnZXQpO1xyXG4gICAgICAgIGZ1bmN0aW9uIGF0dGFjaCgpIHtcclxuICAgICAgICAgICAgbGV0IGNtID0gRE9NLnF1ZXJ5KFwiLmNvbnRleHRNZW51LUhMWk1HaFwiKTtcclxuICAgICAgICAgICAgaWYgKCFjbSkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY29udGFpbmVyID0gRE9NLnF1ZXJ5KFwiI2FwcC1tb3VudFwiKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNtV3JhcCA9IERPTS5jcmVhdGVFbGVtZW50KGA8ZGl2IGNsYXNzPVwibGF5ZXItdjlIeVljIGRhLWxheWVyXCI+YCk7XHJcbiAgICAgICAgICAgICAgICBjbSA9IERPTS5jcmVhdGVFbGVtZW50KGA8ZGl2IGNsYXNzPVwiY29udGV4dE1lbnUtSExaTUdoIGRhLWNvbnRleHRNZW51IGJkLWNvbnRleHQtbWVudVwiPjwvZGl2PmApO1xyXG4gICAgICAgICAgICAgICAgY21XcmFwLmFwcGVuZChjbSk7XHJcbiAgICAgICAgICAgICAgICBjb250YWluZXIuYXBwZW5kKGNtV3JhcCk7XHJcbiAgICAgICAgICAgICAgICBjbVdyYXAuc3R5bGUudG9wID0gY3R4RXZlbnQuY2xpZW50WSArIFwicHhcIjtcclxuICAgICAgICAgICAgICAgIGNtV3JhcC5zdHlsZS5sZWZ0ID0gY3R4RXZlbnQuY2xpZW50WCArIFwicHhcIjtcclxuICAgICAgICAgICAgICAgIGNtV3JhcC5zdHlsZS56SW5kZXggPSBcIjEwMDJcIjtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJlbW92ZUNNID0gZnVuY3Rpb24ocmVtb3ZlRXZlbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVtb3ZlRXZlbnQua2V5Q29kZSAmJiByZW1vdmVFdmVudC5rZXlDb2RlICE9PSAyNykgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgIGNtV3JhcC5yZW1vdmUoKTtcclxuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgcmVtb3ZlQ00pO1xyXG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjb250ZXh0bWVudVwiLCByZW1vdmVDTSk7XHJcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImtleXVwXCIsIHJlbW92ZUNNKTtcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgcmVtb3ZlQ00pO1xyXG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImNvbnRleHRtZW51XCIsIHJlbW92ZUNNKTtcclxuICAgICAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJrZXl1cFwiLCByZW1vdmVDTSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGNvbnN0IGNtZyA9IERPTS5jcmVhdGVFbGVtZW50KGA8ZGl2IGNsYXNzPVwiaXRlbUdyb3VwLTF0TDB1eiBkYS1pdGVtR3JvdXBcIj5gKTtcclxuICAgICAgICAgICAgY29uc3QgY21pID0gRE9NLmNyZWF0ZUVsZW1lbnQoYDxkaXYgY2xhc3M9XCJpdGVtLTFZdmVoYyBpdGVtQmFzZS10ejVTZUMgZGEtaXRlbSBkYS1pdGVtQmFzZSBjbGlja2FibGUtMTF1QmktIGRhLWNsaWNrYWJsZVwiPmApO1xyXG4gICAgICAgICAgICBjbWkuYXBwZW5kKERPTS5jcmVhdGVFbGVtZW50KGA8ZGl2IGNsYXNzPVwibGFiZWwtSldRaU5lIGRhLWxhYmVsXCI+JHtTdHJpbmdzLkRldmVsb3Blci5jb3B5U2VsZWN0b3J9PC9kaXY+YCkpO1xyXG4gICAgICAgICAgICBjbWkuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsICgpID0+IHtcclxuICAgICAgICAgICAgICAgIERpc2NvcmRNb2R1bGVzLkVsZWN0cm9uTW9kdWxlLmNvcHkoc2VsZWN0b3IpO1xyXG4gICAgICAgICAgICAgICAgY20uc3R5bGUuZGlzcGxheSA9IFwibm9uZVwiO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgY21nLmFwcGVuZChjbWkpO1xyXG4gICAgICAgICAgICBjbS5hcHBlbmQoY21nKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHNldEltbWVkaWF0ZShhdHRhY2gpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFNlbGVjdG9yKGVsZW1lbnQpIHtcclxuICAgICAgICBpZiAoZWxlbWVudC5pZCkgcmV0dXJuIGAjJHtlbGVtZW50LmlkfWA7XHJcbiAgICAgICAgY29uc3QgcnVsZXMgPSB0aGlzLmdldFJ1bGVzKGVsZW1lbnQpO1xyXG4gICAgICAgIGNvbnN0IGxhdGVzdFJ1bGUgPSBydWxlc1tydWxlcy5sZW5ndGggLSAxXTtcclxuICAgICAgICBpZiAobGF0ZXN0UnVsZSkgcmV0dXJuIGxhdGVzdFJ1bGUuc2VsZWN0b3JUZXh0O1xyXG4gICAgICAgIGVsc2UgaWYgKGVsZW1lbnQuY2xhc3NMaXN0Lmxlbmd0aCkgcmV0dXJuIGAuJHtBcnJheS5mcm9tKGVsZW1lbnQuY2xhc3NMaXN0KS5qb2luKFwiLlwiKX1gO1xyXG4gICAgICAgIHJldHVybiBgLiR7QXJyYXkuZnJvbShlbGVtZW50LnBhcmVudEVsZW1lbnQuY2xhc3NMaXN0KS5qb2luKFwiLlwiKX1gO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFJ1bGVzKGVsZW1lbnQsIGNzcyA9IGVsZW1lbnQub3duZXJEb2N1bWVudC5zdHlsZVNoZWV0cykge1xyXG4gICAgICAgIC8vaWYgKHdpbmRvdy5nZXRNYXRjaGVkQ1NTUnVsZXMpIHJldHVybiB3aW5kb3cuZ2V0TWF0Y2hlZENTU1J1bGVzKGVsZW1lbnQpO1xyXG4gICAgICAgIGNvbnN0IHNoZWV0cyA9IFsuLi5jc3NdLmZpbHRlcihzID0+ICFzLmhyZWYgfHwgIXMuaHJlZi5pbmNsdWRlcyhcIkJldHRlckRpc2NvcmRBcHBcIikpO1xyXG4gICAgICAgIGNvbnN0IHJ1bGVzID0gc2hlZXRzLm1hcChzID0+IFsuLi4ocy5jc3NSdWxlcyB8fCBbXSldKS5mbGF0KCk7XHJcbiAgICAgICAgY29uc3QgZWxlbWVudFJ1bGVzID0gcnVsZXMuZmlsdGVyKHIgPT4gciAmJiByLnNlbGVjdG9yVGV4dCAmJiBlbGVtZW50Lm1hdGNoZXMoci5zZWxlY3RvclRleHQpICYmIHIuc3R5bGUubGVuZ3RoICYmIHIuc2VsZWN0b3JUZXh0LnNwbGl0KFwiLCBcIikubGVuZ3RoIDwgOCAmJiAhci5zZWxlY3RvclRleHQuc3BsaXQoXCIsIFwiKS5pbmNsdWRlcyhcIipcIikpO1xyXG4gICAgICAgIHJldHVybiBlbGVtZW50UnVsZXM7XHJcbiAgICB9XHJcbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/builtins/developer/copyselector.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _structs_builtin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../structs/builtin */ \"./src/structs/builtin.js\");\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class DeveloperMode extends _structs_builtin__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n get name() {\n return \"DeveloperMode\";\n }\n\n get category() {\n return \"developer\";\n }\n\n get id() {\n return \"developerMode\";\n }\n\n get selectorModeID() {\n return \"copySelector\";\n }\n\n get selectorMode() {\n return this.get(this.selectorModeID);\n }\n\n constructor() {\n super();\n this.copySelectorListener = this.copySelectorListener.bind(this);\n }\n\n enabled() {\n document.addEventListener(\"contextmenu\", this.copySelectorListener);\n }\n\n disabled() {\n document.removeEventListener(\"contextmenu\", this.copySelectorListener);\n }\n\n copySelectorListener(ctxEvent) {\n ctxEvent.stopPropagation();\n const selector = this.getSelector(ctxEvent.target);\n\n function attach() {\n let cm = modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].query(\".contextMenu-HLZMGh\");\n\n if (!cm) {\n const container = modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].query(\"#app-mount\");\n const cmWrap = modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].createElement(`
`);\n cm = modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].createElement(`
`);\n cmWrap.append(cm);\n container.append(cmWrap);\n cmWrap.style.top = ctxEvent.clientY + \"px\";\n cmWrap.style.left = ctxEvent.clientX + \"px\";\n cmWrap.style.zIndex = \"1002\";\n\n const removeCM = function (removeEvent) {\n if (removeEvent.keyCode && removeEvent.keyCode !== 27) return;\n cmWrap.remove();\n document.removeEventListener(\"click\", removeCM);\n document.removeEventListener(\"contextmenu\", removeCM);\n document.removeEventListener(\"keyup\", removeCM);\n };\n\n document.addEventListener(\"click\", removeCM);\n document.addEventListener(\"contextmenu\", removeCM);\n document.addEventListener(\"keyup\", removeCM);\n }\n\n const cmg = modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].createElement(`
`);\n const cmi = modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].createElement(`
`);\n cmi.append(modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].createElement(`
${modules__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].Developer.copySelector}
`));\n cmi.addEventListener(\"click\", () => {\n modules__WEBPACK_IMPORTED_MODULE_1__[\"DiscordModules\"].ElectronModule.copy(selector);\n cm.style.display = \"none\";\n });\n cmg.append(cmi);\n cm.append(cmg);\n }\n\n setImmediate(attach);\n }\n\n getSelector(element) {\n if (element.id) return `#${element.id}`;\n const rules = this.getRules(element);\n const latestRule = rules[rules.length - 1];\n if (latestRule) return latestRule.selectorText;else if (element.classList.length) return `.${Array.from(element.classList).join(\".\")}`;\n return `.${Array.from(element.parentElement.classList).join(\".\")}`;\n }\n\n getRules(element, css = element.ownerDocument.styleSheets) {\n //if (window.getMatchedCSSRules) return window.getMatchedCSSRules(element);\n const sheets = [...css].filter(s => !s.href || !s.href.includes(\"BetterDiscordApp\"));\n const rules = sheets.map(s => [...(s.cssRules || [])]).flat();\n const elementRules = rules.filter(r => r && r.selectorText && element.matches(r.selectorText) && r.style.length && r.selectorText.split(\", \").length < 8 && !r.selectorText.split(\", \").includes(\"*\"));\n return elementRules;\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYnVpbHRpbnMvZGV2ZWxvcGVyL2NvcHlzZWxlY3Rvci5qcz84ODllIl0sIm5hbWVzIjpbIkRldmVsb3Blck1vZGUiLCJCdWlsdGluIiwibmFtZSIsImNhdGVnb3J5IiwiaWQiLCJzZWxlY3Rvck1vZGVJRCIsInNlbGVjdG9yTW9kZSIsImdldCIsImNvbnN0cnVjdG9yIiwiY29weVNlbGVjdG9yTGlzdGVuZXIiLCJiaW5kIiwiZW5hYmxlZCIsImRvY3VtZW50IiwiYWRkRXZlbnRMaXN0ZW5lciIsImRpc2FibGVkIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImN0eEV2ZW50Iiwic3RvcFByb3BhZ2F0aW9uIiwic2VsZWN0b3IiLCJnZXRTZWxlY3RvciIsInRhcmdldCIsImF0dGFjaCIsImNtIiwiRE9NIiwicXVlcnkiLCJjb250YWluZXIiLCJjbVdyYXAiLCJjcmVhdGVFbGVtZW50IiwiYXBwZW5kIiwic3R5bGUiLCJ0b3AiLCJjbGllbnRZIiwibGVmdCIsImNsaWVudFgiLCJ6SW5kZXgiLCJyZW1vdmVDTSIsInJlbW92ZUV2ZW50Iiwia2V5Q29kZSIsInJlbW92ZSIsImNtZyIsImNtaSIsIlN0cmluZ3MiLCJEZXZlbG9wZXIiLCJjb3B5U2VsZWN0b3IiLCJEaXNjb3JkTW9kdWxlcyIsIkVsZWN0cm9uTW9kdWxlIiwiY29weSIsImRpc3BsYXkiLCJzZXRJbW1lZGlhdGUiLCJlbGVtZW50IiwicnVsZXMiLCJnZXRSdWxlcyIsImxhdGVzdFJ1bGUiLCJsZW5ndGgiLCJzZWxlY3RvclRleHQiLCJjbGFzc0xpc3QiLCJBcnJheSIsImZyb20iLCJqb2luIiwicGFyZW50RWxlbWVudCIsImNzcyIsIm93bmVyRG9jdW1lbnQiLCJzdHlsZVNoZWV0cyIsInNoZWV0cyIsImZpbHRlciIsInMiLCJocmVmIiwiaW5jbHVkZXMiLCJtYXAiLCJjc3NSdWxlcyIsImZsYXQiLCJlbGVtZW50UnVsZXMiLCJyIiwibWF0Y2hlcyIsInNwbGl0Il0sIm1h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QVIsQ0FBc0JDLFdBQXRDLEVBQW1EO0FBQ3ZEO0FBQ0EsVUFBTUMsTUFBTSxHQUFHLENBQUMsR0FBR0gsR0FBSixFQUFTSSxNQUFULENBQWdCQyxDQUFDLElBQUksQ0FBQ0EsQ0FBQyxDQUFDQyxJQUFILElBQVcsQ0FBQ0QsQ0FBQyxDQUFDQyxJQUFGLENBQU9DLFFBQVAsQ0FBZ0Isa0JBQWhCLENBQWpDLENBQWY7QUFDQSxVQUFNakIsS0FBSyxHQUFHYSxNQUFNLENBQUNLLEdBQVAsQ0FBV0gsQ0FBQyxJQUFJLENBQUMsSUFBSUEsQ0FBQyxDQUFDSSxRQUFGLElBQWMsRUFBbEIsQ0FBRCxDQUFoQixFQUF5Q0MsSUFBekMsRUFBZDtBQUNBLFVBQU1DLFlBQVksR0FBR3JCLEtBQUssQ0FBQ2MsTUFBTixDQUFhUSxDQUFDLElBQUlBLENBQUMsSUFBSUEsQ0FBQyxDQUFDbEIsWUFBUCxJQUF1QkwsT0FBTyxDQUFDd0IsT0FBUixDQUFnQkQsQ0FBQyxDQUFDbEIsWUFBbEIsQ0FBdkIsSUFBMERrQixDQUFDLENBQUMzQyxLQUFGLENBQVF3QixNQUFsRSxJQUE0RW1CLENBQUMsQ0FBQ2xCLFlBQUYsQ0FBZW9CLEtBQWYsQ0FBcUIsSUFBckIsRUFBMkJyQixNQUEzQixHQUFvQyxDQUFoSCxJQUFxSCxDQUFDbUIsQ0FBQyxDQUFDbEIsWUFBRixDQUFlb0IsS0FBZixDQUFxQixJQUFyQixFQUEyQlAsUUFBM0IsQ0FBb0MsR0FBcEMsQ0FBeEksQ0FBckI7QUFDQSxXQUFPSSxZQUFQO0FBQ0g7O0FBM0VrRCxDQUF4QyxFQUFmIiwiZmlsZSI6Ii4vc3JjL2J1aWx0aW5zL2RldmVsb3Blci9jb3B5c2VsZWN0b3IuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQnVpbHRpbiBmcm9tIFwiLi4vLi4vc3RydWN0cy9idWlsdGluXCI7XHJcbmltcG9ydCB7RE9NLCBEaXNjb3JkTW9kdWxlcywgU3RyaW5nc30gZnJvbSBcIm1vZHVsZXNcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IG5ldyBjbGFzcyBEZXZlbG9wZXJNb2RlIGV4dGVuZHMgQnVpbHRpbiB7XHJcbiAgICBnZXQgbmFtZSgpIHtyZXR1cm4gXCJEZXZlbG9wZXJNb2RlXCI7fVxyXG4gICAgZ2V0IGNhdGVnb3J5KCkge3JldHVybiBcImRldmVsb3BlclwiO31cclxuICAgIGdldCBpZCgpIHtyZXR1cm4gXCJkZXZlbG9wZXJNb2RlXCI7fVxyXG4gICAgZ2V0IHNlbGVjdG9yTW9kZUlEKCkge3JldHVybiBcImNvcHlTZWxlY3RvclwiO31cclxuICAgIGdldCBzZWxlY3Rvck1vZGUoKSB7cmV0dXJuIHRoaXMuZ2V0KHRoaXMuc2VsZWN0b3JNb2RlSUQpO31cclxuXHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIHRoaXMuY29weVNlbGVjdG9yTGlzdGVuZXIgPSB0aGlzLmNvcHlTZWxlY3Rvckxpc3RlbmVyLmJpbmQodGhpcyk7XHJcbiAgICB9XHJcblxyXG4gICAgZW5hYmxlZCgpIHtcclxuICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwiY29udGV4dG1lbnVcIiwgdGhpcy5jb3B5U2VsZWN0b3JMaXN0ZW5lcik7XHJcbiAgICB9XHJcblxyXG4gICAgZGlzYWJsZWQoKSB7XHJcbiAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNvbnRleHRtZW51XCIsIHRoaXMuY29weVNlbGVjdG9yTGlzdGVuZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvcHlTZWxlY3Rvckxpc3RlbmVyKGN0eEV2ZW50KSB7XHJcbiAgICAgICAgY3R4RXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgY29uc3Qgc2VsZWN0b3IgPSB0aGlzLmdldFNlbGVjdG9yKGN0eEV2ZW50LnRhcmdldCk7XHJcbiAgICAgICAgZnVuY3Rpb24gYXR0YWNoKCkge1xyXG4gICAgICAgICAgICBsZXQgY20gPSBET00ucXVlcnkoXCIuY29udGV4dE1lbnUtSExaTUdoXCIpO1xyXG4gICAgICAgICAgICBpZiAoIWNtKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjb250YWluZXIgPSBET00ucXVlcnkoXCIjYXBwLW1vdW50XCIpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY21XcmFwID0gRE9NLmNyZWF0ZUVsZW1lbnQoYDxkaXYgY2xhc3M9XCJsYXllci12OUh5WWMgZGEtbGF5ZXJcIj5gKTtcclxuICAgICAgICAgICAgICAgIGNtID0gRE9NLmNyZWF0ZUVsZW1lbnQoYDxkaXYgY2xhc3M9XCJjb250ZXh0TWVudS1ITFpNR2ggZGEtY29udGV4dE1lbnUgYmQtY29udGV4dC1tZW51XCI+PC9kaXY+YCk7XHJcbiAgICAgICAgICAgICAgICBjbVdyYXAuYXBwZW5kKGNtKTtcclxuICAgICAgICAgICAgICAgIGNvbnRhaW5lci5hcHBlbmQoY21XcmFwKTtcclxuICAgICAgICAgICAgICAgIGNtV3JhcC5zdHlsZS50b3AgPSBjdHhFdmVudC5jbGllbnRZICsgXCJweFwiO1xyXG4gICAgICAgICAgICAgICAgY21XcmFwLnN0eWxlLmxlZnQgPSBjdHhFdmVudC5jbGllbnRYICsgXCJweFwiO1xyXG4gICAgICAgICAgICAgICAgY21XcmFwLnN0eWxlLnpJbmRleCA9IFwiMTAwMlwiO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcmVtb3ZlQ00gPSBmdW5jdGlvbihyZW1vdmVFdmVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZW1vdmVFdmVudC5rZXlDb2RlICYmIHJlbW92ZUV2ZW50LmtleUNvZGUgIT09IDI3KSByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgY21XcmFwLnJlbW92ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCByZW1vdmVDTSk7XHJcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNvbnRleHRtZW51XCIsIHJlbW92ZUNNKTtcclxuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwia2V5dXBcIiwgcmVtb3ZlQ00pO1xyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCByZW1vdmVDTSk7XHJcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwiY29udGV4dG1lbnVcIiwgcmVtb3ZlQ00pO1xyXG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImtleXVwXCIsIHJlbW92ZUNNKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgY29uc3QgY21nID0gRE9NLmNyZWF0ZUVsZW1lbnQoYDxkaXYgY2xhc3M9XCJpdGVtR3JvdXAtMXRMMHV6IGRhLWl0ZW1Hcm91cFwiPmApO1xyXG4gICAgICAgICAgICBjb25zdCBjbWkgPSBET00uY3JlYXRlRWxlbWVudChgPGRpdiBjbGFzcz1cIml0ZW0tMVl2ZWhjIGl0ZW1CYXNlLXR6NVNlQyBkYS1pdGVtIGRhLWl0ZW1CYXNlIGNsaWNrYWJsZS0xMXVCaS0gZGEtY2xpY2thYmxlXCI+YCk7XHJcbiAgICAgICAgICAgIGNtaS5hcHBlbmQoRE9NLmNyZWF0ZUVsZW1lbnQoYDxkaXYgY2xhc3M9XCJsYWJlbC1KV1FpTmUgZGEtbGFiZWxcIj4ke1N0cmluZ3MuRGV2ZWxvcGVyLmNvcHlTZWxlY3Rvcn08L2Rpdj5gKSk7XHJcbiAgICAgICAgICAgIGNtaS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgRGlzY29yZE1vZHVsZXMuRWxlY3Ryb25Nb2R1bGUuY29weShzZWxlY3Rvcik7XHJcbiAgICAgICAgICAgICAgICBjbS5zdHlsZS5kaXNwbGF5ID0gXCJub25lXCI7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBjbWcuYXBwZW5kKGNtaSk7XHJcbiAgICAgICAgICAgIGNtLmFwcGVuZChjbWcpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc2V0SW1tZWRpYXRlKGF0dGFjaCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0U2VsZWN0b3IoZWxlbWVudCkge1xyXG4gICAgICAgIGlmIChlbGVtZW50LmlkKSByZXR1cm4gYCMke2VsZW1lbnQuaWR9YDtcclxuICAgICAgICBjb25zdCBydWxlcyA9IHRoaXMuZ2V0UnVsZXMoZWxlbWVudCk7XHJcbiAgICAgICAgY29uc3QgbGF0ZXN0UnVsZSA9IHJ1bGVzW3J1bGVzLmxlbmd0aCAtIDFdO1xyXG4gICAgICAgIGlmIChsYXRlc3RSdWxlKSByZXR1cm4gbGF0ZXN0UnVsZS5zZWxlY3RvclRleHQ7XHJcbiAgICAgICAgZWxzZSBpZiAoZWxlbWVudC5jbGFzc0xpc3QubGVuZ3RoKSByZXR1cm4gYC4ke0FycmF5LmZyb20oZWxlbWVudC5jbGFzc0xpc3QpLmpvaW4oXCIuXCIpfWA7XHJcbiAgICAgICAgcmV0dXJuIGAuJHtBcnJheS5mcm9tKGVsZW1lbnQucGFyZW50RWxlbWVudC5jbGFzc0xpc3QpLmpvaW4oXCIuXCIpfWA7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0UnVsZXMoZWxlbWVudCwgY3NzID0gZWxlbWVudC5vd25lckRvY3VtZW50LnN0eWxlU2hlZXRzKSB7XHJcbiAgICAgICAgLy9pZiAod2luZG93LmdldE1hdGNoZWRDU1NSdWxlcykgcmV0dXJuIHdpbmRvdy5nZXRNYXRjaGVkQ1NTUnVsZXMoZWxlbWVudCk7XHJcbiAgICAgICAgY29uc3Qgc2hlZXRzID0gWy4uLmNzc10uZmlsdGVyKHMgPT4gIXMuaHJlZiB8fCAhcy5ocmVmLmluY2x1ZGVzKFwiQmV0dGVyRGlzY29yZEFwcFwiKSk7XHJcbiAgICAgICAgY29uc3QgcnVsZXMgPSBzaGVldHMubWFwKHMgPT4gWy4uLihzLmNzc1J1bGVzIHx8IFtdKV0pLmZsYXQoKTtcclxuICAgICAgICBjb25zdCBlbGVtZW50UnVsZXMgPSBydWxlcy5maWx0ZXIociA9PiByICYmIHIuc2VsZWN0b3JUZXh0ICYmIGVsZW1lbnQubWF0Y2hlcyhyLnNlbGVjdG9yVGV4dCkgJiYgci5zdHlsZS5sZW5ndGggJiYgci5zZWxlY3RvclRleHQuc3BsaXQoXCIsIFwiKS5sZW5ndGggPCA4ICYmICFyLnNlbGVjdG9yVGV4dC5zcGxpdChcIiwgXCIpLmluY2x1ZGVzKFwiKlwiKSk7XHJcbiAgICAgICAgcmV0dXJuIGVsZW1lbnRSdWxlcztcclxuICAgIH1cclxufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/builtins/developer/copyselector.js\n"); /***/ }), @@ -179,7 +178,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _str /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _structs_builtin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../structs/builtin */ \"./src/structs/builtin.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class DeveloperMode extends _structs_builtin__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n get name() {\n return \"Debugger\";\n }\n\n get category() {\n return \"developer\";\n }\n\n get id() {\n return \"debuggerHotkey\";\n }\n\n enabled() {\n document.addEventListener(\"keydown\", this.debugListener);\n }\n\n disabled() {\n document.removeEventListener(\"keydown\", this.debugListener);\n }\n\n debugListener(e) {\n if (e.which === 119 || e.which == 118) {\n //F8\n debugger; // eslint-disable-line no-debugger\n\n e.preventDefault();\n e.stopImmediatePropagation();\n }\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL2J1aWx0aW5zL2RldmVsb3Blci9kZWJ1Z2dlci5qcz9iZDVlIl0sIm5hbWVzIjpbIkRldmVsb3Blck1vZGUiLCJCdWlsdGluIiwibmFtZSIsImNhdGVnb3J5IiwiaWQiLCJlbmFibGVkIiwiZG9jdW1lbnQiLCJhZGRFdmVudExpc3RlbmVyIiwiZGVidWdMaXN0ZW5lciIsImRpc2FibGVkIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImUiLCJ3aGljaCIsInByZXZlbnREZWZhdWx0Iiwic3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFFZSxtRUFBSSxNQUFNQSxhQUFOLFNBQTRCQyx3REFBNUIsQ0FBb0M7QUFDbkQsTUFBSUMsSUFBSixHQUFXO0FBQUMsV0FBTyxVQUFQO0FBQW1COztBQUMvQixNQUFJQyxRQUFKLEdBQWU7QUFBQyxXQUFPLFdBQVA7QUFBb0I7O0FBQ3BDLE1BQUlDLEVBQUosR0FBUztBQUFDLFdBQU8sZ0JBQVA7QUFBeUI7O0FBRW5DQyxTQUFPLEdBQUc7QUFDTkMsWUFBUSxDQUFDQyxnQkFBVCxDQUEwQixTQUExQixFQUFxQyxLQUFLQyxhQUExQztBQUNIOztBQUVEQyxVQUFRLEdBQUc7QUFDUEgsWUFBUSxDQUFDSSxtQkFBVCxDQUE2QixTQUE3QixFQUF3QyxLQUFLRixhQUE3QztBQUNIOztBQUVEQSxlQUFhLENBQUNHLENBQUQsRUFBSTtBQUNiLFFBQUlBLENBQUMsQ0FBQ0MsS0FBRixLQUFZLEdBQVosSUFBbUJELENBQUMsQ0FBQ0MsS0FBRixJQUFXLEdBQWxDLEVBQXVDO0FBQUU7QUFDckMsZUFEbUMsQ0FDekI7O0FBQ1ZELE9BQUMsQ0FBQ0UsY0FBRjtBQUNBRixPQUFDLENBQUNHLHdCQUFGO0FBQ0Y7QUFDTDs7QUFuQmtELENBQXhDLEVBQWYiLCJmaWxlIjoiLi9zcmMvYnVpbHRpbnMvZGV2ZWxvcGVyL2RlYnVnZ2VyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJ1aWx0aW4gZnJvbSBcIi4uLy4uL3N0cnVjdHMvYnVpbHRpblwiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgbmV3IGNsYXNzIERldmVsb3Blck1vZGUgZXh0ZW5kcyBCdWlsdGluIHtcclxuICAgIGdldCBuYW1lKCkge3JldHVybiBcIkRlYnVnZ2VyXCI7fVxyXG4gICAgZ2V0IGNhdGVnb3J5KCkge3JldHVybiBcImRldmVsb3BlclwiO31cclxuICAgIGdldCBpZCgpIHtyZXR1cm4gXCJkZWJ1Z2dlckhvdGtleVwiO31cclxuXHJcbiAgICBlbmFibGVkKCkge1xyXG4gICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsIHRoaXMuZGVidWdMaXN0ZW5lcik7XHJcbiAgICB9XHJcblxyXG4gICAgZGlzYWJsZWQoKSB7XHJcbiAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwgdGhpcy5kZWJ1Z0xpc3RlbmVyKTtcclxuICAgIH1cclxuXHJcbiAgICBkZWJ1Z0xpc3RlbmVyKGUpIHtcclxuICAgICAgICBpZiAoZS53aGljaCA9PT0gMTE5IHx8IGUud2hpY2ggPT0gMTE4KSB7IC8vRjhcclxuICAgICAgICAgICAgZGVidWdnZXI7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tZGVidWdnZXJcclxuICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICB9XHJcbiAgICB9XHJcbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/builtins/developer/debugger.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _structs_builtin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../structs/builtin */ \"./src/structs/builtin.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class DeveloperMode extends _structs_builtin__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n get name() {\n return \"Debugger\";\n }\n\n get category() {\n return \"developer\";\n }\n\n get id() {\n return \"debuggerHotkey\";\n }\n\n enabled() {\n document.addEventListener(\"keydown\", this.debugListener);\n }\n\n disabled() {\n document.removeEventListener(\"keydown\", this.debugListener);\n }\n\n debugListener(e) {\n if (e.which === 119 || e.which == 118) {\n //F8\n debugger; // eslint-disable-line no-debugger\n\n e.preventDefault();\n e.stopImmediatePropagation();\n }\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYnVpbHRpbnMvZGV2ZWxvcGVyL2RlYnVnZ2VyLmpzP2JkNWUiXSwibmFtZXMiOlsiRGV2ZWxvcGVyTW9kZSIsIkJ1aWx0aW4iLCJuYW1lIiwiY2F0ZWdvcnkiLCJpZCIsImVuYWJsZWQiLCJkb2N1bWVudCIsImFkZEV2ZW50TGlzdGVuZXIiLCJkZWJ1Z0xpc3RlbmVyIiwiZGlzYWJsZWQiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiZSIsIndoaWNoIiwicHJldmVudERlZmF1bHQiLCJzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUVlLG1FQUFJLE1BQU1BLGFBQU4sU0FBNEJDLHdEQUE1QixDQUFvQztBQUNuRCxNQUFJQyxJQUFKLEdBQVc7QUFBQyxXQUFPLFVBQVA7QUFBbUI7O0FBQy9CLE1BQUlDLFFBQUosR0FBZTtBQUFDLFdBQU8sV0FBUDtBQUFvQjs7QUFDcEMsTUFBSUMsRUFBSixHQUFTO0FBQUMsV0FBTyxnQkFBUDtBQUF5Qjs7QUFFbkNDLFNBQU8sR0FBRztBQUNOQyxZQUFRLENBQUNDLGdCQUFULENBQTBCLFNBQTFCLEVBQXFDLEtBQUtDLGFBQTFDO0FBQ0g7O0FBRURDLFVBQVEsR0FBRztBQUNQSCxZQUFRLENBQUNJLG1CQUFULENBQTZCLFNBQTdCLEVBQXdDLEtBQUtGLGFBQTdDO0FBQ0g7O0FBRURBLGVBQWEsQ0FBQ0csQ0FBRCxFQUFJO0FBQ2IsUUFBSUEsQ0FBQyxDQUFDQyxLQUFGLEtBQVksR0FBWixJQUFtQkQsQ0FBQyxDQUFDQyxLQUFGLElBQVcsR0FBbEMsRUFBdUM7QUFBRTtBQUNyQyxlQURtQyxDQUN6Qjs7QUFDVkQsT0FBQyxDQUFDRSxjQUFGO0FBQ0FGLE9BQUMsQ0FBQ0csd0JBQUY7QUFDRjtBQUNMOztBQW5Ca0QsQ0FBeEMsRUFBZiIsImZpbGUiOiIuL3NyYy9idWlsdGlucy9kZXZlbG9wZXIvZGVidWdnZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQnVpbHRpbiBmcm9tIFwiLi4vLi4vc3RydWN0cy9idWlsdGluXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBuZXcgY2xhc3MgRGV2ZWxvcGVyTW9kZSBleHRlbmRzIEJ1aWx0aW4ge1xyXG4gICAgZ2V0IG5hbWUoKSB7cmV0dXJuIFwiRGVidWdnZXJcIjt9XHJcbiAgICBnZXQgY2F0ZWdvcnkoKSB7cmV0dXJuIFwiZGV2ZWxvcGVyXCI7fVxyXG4gICAgZ2V0IGlkKCkge3JldHVybiBcImRlYnVnZ2VySG90a2V5XCI7fVxyXG5cclxuICAgIGVuYWJsZWQoKSB7XHJcbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwgdGhpcy5kZWJ1Z0xpc3RlbmVyKTtcclxuICAgIH1cclxuXHJcbiAgICBkaXNhYmxlZCgpIHtcclxuICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLCB0aGlzLmRlYnVnTGlzdGVuZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIGRlYnVnTGlzdGVuZXIoZSkge1xyXG4gICAgICAgIGlmIChlLndoaWNoID09PSAxMTkgfHwgZS53aGljaCA9PSAxMTgpIHsgLy9GOFxyXG4gICAgICAgICAgICBkZWJ1Z2dlcjsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1kZWJ1Z2dlclxyXG4gICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgIH1cclxuICAgIH1cclxufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/builtins/developer/debugger.js\n"); /***/ }), @@ -191,7 +190,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _str /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _structs_builtin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../structs/builtin */ \"./src/structs/builtin.js\");\n/* harmony import */ var _ui_modals__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../ui/modals */ \"./src/ui/modals.js\");\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\n\n\n\nconst electron = __webpack_require__(/*! electron */ \"electron\");\n\nconst fs = __webpack_require__(/*! fs */ \"fs\");\n\nconst path = __webpack_require__(/*! path */ \"path\");\n\nconst BrowserWindow = electron.remote.BrowserWindow;\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class ReactDevTools extends _structs_builtin__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n get name() {\n return \"ReactDevTools\";\n }\n\n get category() {\n return \"developer\";\n }\n\n get id() {\n return \"reactDevTools\";\n }\n\n initialize() {\n super.initialize();\n this.findExtension();\n }\n\n findExtension() {\n let extensionPath = \"\";\n if (process.platform === \"win32\") extensionPath = path.resolve(process.env.LOCALAPPDATA, \"Google/Chrome/User Data\");else if (process.platform === \"linux\") extensionPath = path.resolve(process.env.HOME, \".config/google-chrome\");else if (process.platform === \"darwin\") extensionPath = path.resolve(process.env.HOME, \"Library/Application Support/Google/Chrome\");else extensionPath = path.resolve(process.env.HOME, \".config/chromium\");\n extensionPath += \"/Default/Extensions/fmkadmapgofadopljbjfkapdkoienihi/\";\n\n if (fs.existsSync(extensionPath)) {\n const versions = fs.readdirSync(extensionPath);\n extensionPath = path.resolve(extensionPath, versions[versions.length - 1]);\n }\n\n this.extensionPath = extensionPath;\n this.isExtensionInstalled = fs.existsSync(extensionPath);\n }\n\n enabled() {\n if (!this.isExtensionInstalled) this.findExtension();\n if (!this.isExtensionInstalled) return _ui_modals__WEBPACK_IMPORTED_MODULE_1__[\"default\"].alert(modules__WEBPACK_IMPORTED_MODULE_2__[\"Strings\"].ReactDevTools.notFound, modules__WEBPACK_IMPORTED_MODULE_2__[\"Strings\"].ReactDevTools.notFoundDetails);\n const didInstall = BrowserWindow.addDevToolsExtension(this.extensionPath);\n if (didInstall) this.log(\"Successfully installed react devtools.\");else this.error(\"Couldn't find react devtools in chrome extensions!\");\n }\n\n disabled() {\n if (!this.isExtensionInstalled) return;\n BrowserWindow.removeDevToolsExtension(\"React Developer Tools\");\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL2J1aWx0aW5zL2RldmVsb3Blci9yZWFjdGRldnRvb2xzLmpzPzc5MzciXSwibmFtZXMiOlsiZWxlY3Ryb24iLCJyZXF1aXJlIiwiZnMiLCJwYXRoIiwiQnJvd3NlcldpbmRvdyIsInJlbW90ZSIsIlJlYWN0RGV2VG9vbHMiLCJCdWlsdGluIiwibmFtZSIsImNhdGVnb3J5IiwiaWQiLCJpbml0aWFsaXplIiwiZmluZEV4dGVuc2lvbiIsImV4dGVuc2lvblBhdGgiLCJwcm9jZXNzIiwicGxhdGZvcm0iLCJyZXNvbHZlIiwiZW52IiwiTE9DQUxBUFBEQVRBIiwiSE9NRSIsImV4aXN0c1N5bmMiLCJ2ZXJzaW9ucyIsInJlYWRkaXJTeW5jIiwibGVuZ3RoIiwiaXNFeHRlbnNpb25JbnN0YWxsZWQiLCJlbmFibGVkIiwiTW9kYWxzIiwiYWxlcnQiLCJTdHJpbmdzIiwibm90Rm91bmQiLCJub3RGb3VuZERldGFpbHMiLCJkaWRJbnN0YWxsIiwiYWRkRGV2VG9vbHNFeHRlbnNpb24iLCJsb2ciLCJlcnJvciIsImRpc2FibGVkIiwicmVtb3ZlRGV2VG9vbHNFeHRlbnNpb24iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBOztBQUVBLE1BQU1BLFFBQVEsR0FBR0MsbUJBQU8sQ0FBQywwQkFBRCxDQUF4Qjs7QUFDQSxNQUFNQyxFQUFFLEdBQUdELG1CQUFPLENBQUMsY0FBRCxDQUFsQjs7QUFDQSxNQUFNRSxJQUFJLEdBQUdGLG1CQUFPLENBQUMsa0JBQUQsQ0FBcEI7O0FBRUEsTUFBTUcsYUFBYSxHQUFHSixRQUFRLENBQUNLLE1BQVQsQ0FBZ0JELGFBQXRDO0FBRWUsbUVBQUksTUFBTUUsYUFBTixTQUE0QkMsd0RBQTVCLENBQW9DO0FBQ25ELE1BQUlDLElBQUosR0FBVztBQUFDLFdBQU8sZUFBUDtBQUF3Qjs7QUFDcEMsTUFBSUMsUUFBSixHQUFlO0FBQUMsV0FBTyxXQUFQO0FBQW9COztBQUNwQyxNQUFJQyxFQUFKLEdBQVM7QUFBQyxXQUFPLGVBQVA7QUFBd0I7O0FBRWxDQyxZQUFVLEdBQUc7QUFDVCxVQUFNQSxVQUFOO0FBQ0EsU0FBS0MsYUFBTDtBQUNIOztBQUVEQSxlQUFhLEdBQUc7QUFDWixRQUFJQyxhQUFhLEdBQUcsRUFBcEI7QUFDQSxRQUFJQyxPQUFPLENBQUNDLFFBQVIsS0FBcUIsT0FBekIsRUFBa0NGLGFBQWEsR0FBR1YsSUFBSSxDQUFDYSxPQUFMLENBQWFGLE9BQU8sQ0FBQ0csR0FBUixDQUFZQyxZQUF6QixFQUF1Qyx5QkFBdkMsQ0FBaEIsQ0FBbEMsS0FDSyxJQUFJSixPQUFPLENBQUNDLFFBQVIsS0FBcUIsT0FBekIsRUFBa0NGLGFBQWEsR0FBR1YsSUFBSSxDQUFDYSxPQUFMLENBQWFGLE9BQU8sQ0FBQ0csR0FBUixDQUFZRSxJQUF6QixFQUErQix1QkFBL0IsQ0FBaEIsQ0FBbEMsS0FDQSxJQUFJTCxPQUFPLENBQUNDLFFBQVIsS0FBcUIsUUFBekIsRUFBbUNGLGFBQWEsR0FBR1YsSUFBSSxDQUFDYSxPQUFMLENBQWFGLE9BQU8sQ0FBQ0csR0FBUixDQUFZRSxJQUF6QixFQUErQiwyQ0FBL0IsQ0FBaEIsQ0FBbkMsS0FDQU4sYUFBYSxHQUFHVixJQUFJLENBQUNhLE9BQUwsQ0FBYUYsT0FBTyxDQUFDRyxHQUFSLENBQVlFLElBQXpCLEVBQStCLGtCQUEvQixDQUFoQjtBQUNMTixpQkFBYSxJQUFJLHVEQUFqQjs7QUFDQSxRQUFJWCxFQUFFLENBQUNrQixVQUFILENBQWNQLGFBQWQsQ0FBSixFQUFrQztBQUM5QixZQUFNUSxRQUFRLEdBQUduQixFQUFFLENBQUNvQixXQUFILENBQWVULGFBQWYsQ0FBakI7QUFDQUEsbUJBQWEsR0FBR1YsSUFBSSxDQUFDYSxPQUFMLENBQWFILGFBQWIsRUFBNEJRLFFBQVEsQ0FBQ0EsUUFBUSxDQUFDRSxNQUFULEdBQWtCLENBQW5CLENBQXBDLENBQWhCO0FBQ0g7O0FBQ0QsU0FBS1YsYUFBTCxHQUFxQkEsYUFBckI7QUFDQSxTQUFLVyxvQkFBTCxHQUE0QnRCLEVBQUUsQ0FBQ2tCLFVBQUgsQ0FBY1AsYUFBZCxDQUE1QjtBQUNIOztBQUVEWSxTQUFPLEdBQUc7QUFDTixRQUFJLENBQUMsS0FBS0Qsb0JBQVYsRUFBZ0MsS0FBS1osYUFBTDtBQUNoQyxRQUFJLENBQUMsS0FBS1ksb0JBQVYsRUFBZ0MsT0FBT0Usa0RBQU0sQ0FBQ0MsS0FBUCxDQUFhQywrQ0FBTyxDQUFDdEIsYUFBUixDQUFzQnVCLFFBQW5DLEVBQTZDRCwrQ0FBTyxDQUFDdEIsYUFBUixDQUFzQndCLGVBQW5FLENBQVA7QUFFaEMsVUFBTUMsVUFBVSxHQUFHM0IsYUFBYSxDQUFDNEIsb0JBQWQsQ0FBbUMsS0FBS25CLGFBQXhDLENBQW5CO0FBQ0EsUUFBSWtCLFVBQUosRUFBZ0IsS0FBS0UsR0FBTCxDQUFTLHdDQUFULEVBQWhCLEtBQ0ssS0FBS0MsS0FBTCxDQUFXLG9EQUFYO0FBQ1I7O0FBRURDLFVBQVEsR0FBRztBQUNQLFFBQUksQ0FBQyxLQUFLWCxvQkFBVixFQUFnQztBQUNoQ3BCLGlCQUFhLENBQUNnQyx1QkFBZCxDQUFzQyx1QkFBdEM7QUFDSDs7QUFyQ2tELENBQXhDLEVBQWYiLCJmaWxlIjoiLi9zcmMvYnVpbHRpbnMvZGV2ZWxvcGVyL3JlYWN0ZGV2dG9vbHMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQnVpbHRpbiBmcm9tIFwiLi4vLi4vc3RydWN0cy9idWlsdGluXCI7XHJcbmltcG9ydCBNb2RhbHMgZnJvbSBcIi4uLy4uL3VpL21vZGFsc1wiO1xyXG5pbXBvcnQge1N0cmluZ3N9IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5jb25zdCBlbGVjdHJvbiA9IHJlcXVpcmUoXCJlbGVjdHJvblwiKTtcclxuY29uc3QgZnMgPSByZXF1aXJlKFwiZnNcIik7XHJcbmNvbnN0IHBhdGggPSByZXF1aXJlKFwicGF0aFwiKTtcclxuXHJcbmNvbnN0IEJyb3dzZXJXaW5kb3cgPSBlbGVjdHJvbi5yZW1vdGUuQnJvd3NlcldpbmRvdztcclxuXHJcbmV4cG9ydCBkZWZhdWx0IG5ldyBjbGFzcyBSZWFjdERldlRvb2xzIGV4dGVuZHMgQnVpbHRpbiB7XHJcbiAgICBnZXQgbmFtZSgpIHtyZXR1cm4gXCJSZWFjdERldlRvb2xzXCI7fVxyXG4gICAgZ2V0IGNhdGVnb3J5KCkge3JldHVybiBcImRldmVsb3BlclwiO31cclxuICAgIGdldCBpZCgpIHtyZXR1cm4gXCJyZWFjdERldlRvb2xzXCI7fVxyXG5cclxuICAgIGluaXRpYWxpemUoKSB7XHJcbiAgICAgICAgc3VwZXIuaW5pdGlhbGl6ZSgpO1xyXG4gICAgICAgIHRoaXMuZmluZEV4dGVuc2lvbigpO1xyXG4gICAgfVxyXG5cclxuICAgIGZpbmRFeHRlbnNpb24oKSB7XHJcbiAgICAgICAgbGV0IGV4dGVuc2lvblBhdGggPSBcIlwiO1xyXG4gICAgICAgIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSBcIndpbjMyXCIpIGV4dGVuc2lvblBhdGggPSBwYXRoLnJlc29sdmUocHJvY2Vzcy5lbnYuTE9DQUxBUFBEQVRBLCBcIkdvb2dsZS9DaHJvbWUvVXNlciBEYXRhXCIpO1xyXG4gICAgICAgIGVsc2UgaWYgKHByb2Nlc3MucGxhdGZvcm0gPT09IFwibGludXhcIikgZXh0ZW5zaW9uUGF0aCA9IHBhdGgucmVzb2x2ZShwcm9jZXNzLmVudi5IT01FLCBcIi5jb25maWcvZ29vZ2xlLWNocm9tZVwiKTtcclxuICAgICAgICBlbHNlIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSBcImRhcndpblwiKSBleHRlbnNpb25QYXRoID0gcGF0aC5yZXNvbHZlKHByb2Nlc3MuZW52LkhPTUUsIFwiTGlicmFyeS9BcHBsaWNhdGlvbiBTdXBwb3J0L0dvb2dsZS9DaHJvbWVcIik7XHJcbiAgICAgICAgZWxzZSBleHRlbnNpb25QYXRoID0gcGF0aC5yZXNvbHZlKHByb2Nlc3MuZW52LkhPTUUsIFwiLmNvbmZpZy9jaHJvbWl1bVwiKTtcclxuICAgICAgICBleHRlbnNpb25QYXRoICs9IFwiL0RlZmF1bHQvRXh0ZW5zaW9ucy9mbWthZG1hcGdvZmFkb3BsamJqZmthcGRrb2llbmloaS9cIjtcclxuICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyhleHRlbnNpb25QYXRoKSkge1xyXG4gICAgICAgICAgICBjb25zdCB2ZXJzaW9ucyA9IGZzLnJlYWRkaXJTeW5jKGV4dGVuc2lvblBhdGgpO1xyXG4gICAgICAgICAgICBleHRlbnNpb25QYXRoID0gcGF0aC5yZXNvbHZlKGV4dGVuc2lvblBhdGgsIHZlcnNpb25zW3ZlcnNpb25zLmxlbmd0aCAtIDFdKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5leHRlbnNpb25QYXRoID0gZXh0ZW5zaW9uUGF0aDtcclxuICAgICAgICB0aGlzLmlzRXh0ZW5zaW9uSW5zdGFsbGVkID0gZnMuZXhpc3RzU3luYyhleHRlbnNpb25QYXRoKTtcclxuICAgIH1cclxuXHJcbiAgICBlbmFibGVkKCkge1xyXG4gICAgICAgIGlmICghdGhpcy5pc0V4dGVuc2lvbkluc3RhbGxlZCkgdGhpcy5maW5kRXh0ZW5zaW9uKCk7XHJcbiAgICAgICAgaWYgKCF0aGlzLmlzRXh0ZW5zaW9uSW5zdGFsbGVkKSByZXR1cm4gTW9kYWxzLmFsZXJ0KFN0cmluZ3MuUmVhY3REZXZUb29scy5ub3RGb3VuZCwgU3RyaW5ncy5SZWFjdERldlRvb2xzLm5vdEZvdW5kRGV0YWlscyk7XHJcblxyXG4gICAgICAgIGNvbnN0IGRpZEluc3RhbGwgPSBCcm93c2VyV2luZG93LmFkZERldlRvb2xzRXh0ZW5zaW9uKHRoaXMuZXh0ZW5zaW9uUGF0aCk7XHJcbiAgICAgICAgaWYgKGRpZEluc3RhbGwpIHRoaXMubG9nKFwiU3VjY2Vzc2Z1bGx5IGluc3RhbGxlZCByZWFjdCBkZXZ0b29scy5cIik7XHJcbiAgICAgICAgZWxzZSB0aGlzLmVycm9yKFwiQ291bGRuJ3QgZmluZCByZWFjdCBkZXZ0b29scyBpbiBjaHJvbWUgZXh0ZW5zaW9ucyFcIik7XHJcbiAgICB9XHJcblxyXG4gICAgZGlzYWJsZWQoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmlzRXh0ZW5zaW9uSW5zdGFsbGVkKSByZXR1cm47XHJcbiAgICAgICAgQnJvd3NlcldpbmRvdy5yZW1vdmVEZXZUb29sc0V4dGVuc2lvbihcIlJlYWN0IERldmVsb3BlciBUb29sc1wiKTtcclxuICAgIH1cclxufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/builtins/developer/reactdevtools.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _structs_builtin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../structs/builtin */ \"./src/structs/builtin.js\");\n/* harmony import */ var _ui_modals__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../ui/modals */ \"./src/ui/modals.js\");\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\n\n\n\nconst electron = __webpack_require__(/*! electron */ \"electron\");\n\nconst fs = __webpack_require__(/*! fs */ \"fs\");\n\nconst path = __webpack_require__(/*! path */ \"path\");\n\nconst BrowserWindow = electron.remote.BrowserWindow;\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class ReactDevTools extends _structs_builtin__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n get name() {\n return \"ReactDevTools\";\n }\n\n get category() {\n return \"developer\";\n }\n\n get id() {\n return \"reactDevTools\";\n }\n\n initialize() {\n super.initialize();\n this.findExtension();\n }\n\n findExtension() {\n let extensionPath = \"\";\n if (process.platform === \"win32\") extensionPath = path.resolve(process.env.LOCALAPPDATA, \"Google/Chrome/User Data\");else if (process.platform === \"linux\") extensionPath = path.resolve(process.env.HOME, \".config/google-chrome\");else if (process.platform === \"darwin\") extensionPath = path.resolve(process.env.HOME, \"Library/Application Support/Google/Chrome\");else extensionPath = path.resolve(process.env.HOME, \".config/chromium\");\n extensionPath += \"/Default/Extensions/fmkadmapgofadopljbjfkapdkoienihi/\";\n\n if (fs.existsSync(extensionPath)) {\n const versions = fs.readdirSync(extensionPath);\n extensionPath = path.resolve(extensionPath, versions[versions.length - 1]);\n }\n\n this.extensionPath = extensionPath;\n this.isExtensionInstalled = fs.existsSync(extensionPath);\n }\n\n enabled() {\n if (!this.isExtensionInstalled) this.findExtension();\n if (!this.isExtensionInstalled) return _ui_modals__WEBPACK_IMPORTED_MODULE_1__[\"default\"].alert(modules__WEBPACK_IMPORTED_MODULE_2__[\"Strings\"].ReactDevTools.notFound, modules__WEBPACK_IMPORTED_MODULE_2__[\"Strings\"].ReactDevTools.notFoundDetails);\n const didInstall = BrowserWindow.addDevToolsExtension(this.extensionPath);\n if (didInstall) this.log(\"Successfully installed react devtools.\");else this.error(\"Couldn't find react devtools in chrome extensions!\");\n }\n\n disabled() {\n if (!this.isExtensionInstalled) return;\n BrowserWindow.removeDevToolsExtension(\"React Developer Tools\");\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYnVpbHRpbnMvZGV2ZWxvcGVyL3JlYWN0ZGV2dG9vbHMuanM/NzkzNyJdLCJuYW1lcyI6WyJlbGVjdHJvbiIsInJlcXVpcmUiLCJmcyIsInBhdGgiLCJCcm93c2VyV2luZG93IiwicmVtb3RlIiwiUmVhY3REZXZUb29scyIsIkJ1aWx0aW4iLCJuYW1lIiwiY2F0ZWdvcnkiLCJpZCIsImluaXRpYWxpemUiLCJmaW5kRXh0ZW5zaW9uIiwiZXh0ZW5zaW9uUGF0aCIsInByb2Nlc3MiLCJwbGF0Zm9ybSIsInJlc29sdmUiLCJlbnYiLCJMT0NBTEFQUERBVEEiLCJIT01FIiwiZXhpc3RzU3luYyIsInZlcnNpb25zIiwicmVhZGRpclN5bmMiLCJsZW5ndGgiLCJpc0V4dGVuc2lvbkluc3RhbGxlZCIsImVuYWJsZWQiLCJNb2RhbHMiLCJhbGVydCIsIlN0cmluZ3MiLCJub3RGb3VuZCIsIm5vdEZvdW5kRGV0YWlscyIsImRpZEluc3RhbGwiLCJhZGREZXZUb29sc0V4dGVuc2lvbiIsImxvZyIsImVycm9yIiwiZGlzYWJsZWQiLCJyZW1vdmVEZXZUb29sc0V4dGVuc2lvbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7O0FBRUEsTUFBTUEsUUFBUSxHQUFHQyxtQkFBTyxDQUFDLDBCQUFELENBQXhCOztBQUNBLE1BQU1DLEVBQUUsR0FBR0QsbUJBQU8sQ0FBQyxjQUFELENBQWxCOztBQUNBLE1BQU1FLElBQUksR0FBR0YsbUJBQU8sQ0FBQyxrQkFBRCxDQUFwQjs7QUFFQSxNQUFNRyxhQUFhLEdBQUdKLFFBQVEsQ0FBQ0ssTUFBVCxDQUFnQkQsYUFBdEM7QUFFZSxtRUFBSSxNQUFNRSxhQUFOLFNBQTRCQyx3REFBNUIsQ0FBb0M7QUFDbkQsTUFBSUMsSUFBSixHQUFXO0FBQUMsV0FBTyxlQUFQO0FBQXdCOztBQUNwQyxNQUFJQyxRQUFKLEdBQWU7QUFBQyxXQUFPLFdBQVA7QUFBb0I7O0FBQ3BDLE1BQUlDLEVBQUosR0FBUztBQUFDLFdBQU8sZUFBUDtBQUF3Qjs7QUFFbENDLFlBQVUsR0FBRztBQUNULFVBQU1BLFVBQU47QUFDQSxTQUFLQyxhQUFMO0FBQ0g7O0FBRURBLGVBQWEsR0FBRztBQUNaLFFBQUlDLGFBQWEsR0FBRyxFQUFwQjtBQUNBLFFBQUlDLE9BQU8sQ0FBQ0MsUUFBUixLQUFxQixPQUF6QixFQUFrQ0YsYUFBYSxHQUFHVixJQUFJLENBQUNhLE9BQUwsQ0FBYUYsT0FBTyxDQUFDRyxHQUFSLENBQVlDLFlBQXpCLEVBQXVDLHlCQUF2QyxDQUFoQixDQUFsQyxLQUNLLElBQUlKLE9BQU8sQ0FBQ0MsUUFBUixLQUFxQixPQUF6QixFQUFrQ0YsYUFBYSxHQUFHVixJQUFJLENBQUNhLE9BQUwsQ0FBYUYsT0FBTyxDQUFDRyxHQUFSLENBQVlFLElBQXpCLEVBQStCLHVCQUEvQixDQUFoQixDQUFsQyxLQUNBLElBQUlMLE9BQU8sQ0FBQ0MsUUFBUixLQUFxQixRQUF6QixFQUFtQ0YsYUFBYSxHQUFHVixJQUFJLENBQUNhLE9BQUwsQ0FBYUYsT0FBTyxDQUFDRyxHQUFSLENBQVlFLElBQXpCLEVBQStCLDJDQUEvQixDQUFoQixDQUFuQyxLQUNBTixhQUFhLEdBQUdWLElBQUksQ0FBQ2EsT0FBTCxDQUFhRixPQUFPLENBQUNHLEdBQVIsQ0FBWUUsSUFBekIsRUFBK0Isa0JBQS9CLENBQWhCO0FBQ0xOLGlCQUFhLElBQUksdURBQWpCOztBQUNBLFFBQUlYLEVBQUUsQ0FBQ2tCLFVBQUgsQ0FBY1AsYUFBZCxDQUFKLEVBQWtDO0FBQzlCLFlBQU1RLFFBQVEsR0FBR25CLEVBQUUsQ0FBQ29CLFdBQUgsQ0FBZVQsYUFBZixDQUFqQjtBQUNBQSxtQkFBYSxHQUFHVixJQUFJLENBQUNhLE9BQUwsQ0FBYUgsYUFBYixFQUE0QlEsUUFBUSxDQUFDQSxRQUFRLENBQUNFLE1BQVQsR0FBa0IsQ0FBbkIsQ0FBcEMsQ0FBaEI7QUFDSDs7QUFDRCxTQUFLVixhQUFMLEdBQXFCQSxhQUFyQjtBQUNBLFNBQUtXLG9CQUFMLEdBQTRCdEIsRUFBRSxDQUFDa0IsVUFBSCxDQUFjUCxhQUFkLENBQTVCO0FBQ0g7O0FBRURZLFNBQU8sR0FBRztBQUNOLFFBQUksQ0FBQyxLQUFLRCxvQkFBVixFQUFnQyxLQUFLWixhQUFMO0FBQ2hDLFFBQUksQ0FBQyxLQUFLWSxvQkFBVixFQUFnQyxPQUFPRSxrREFBTSxDQUFDQyxLQUFQLENBQWFDLCtDQUFPLENBQUN0QixhQUFSLENBQXNCdUIsUUFBbkMsRUFBNkNELCtDQUFPLENBQUN0QixhQUFSLENBQXNCd0IsZUFBbkUsQ0FBUDtBQUVoQyxVQUFNQyxVQUFVLEdBQUczQixhQUFhLENBQUM0QixvQkFBZCxDQUFtQyxLQUFLbkIsYUFBeEMsQ0FBbkI7QUFDQSxRQUFJa0IsVUFBSixFQUFnQixLQUFLRSxHQUFMLENBQVMsd0NBQVQsRUFBaEIsS0FDSyxLQUFLQyxLQUFMLENBQVcsb0RBQVg7QUFDUjs7QUFFREMsVUFBUSxHQUFHO0FBQ1AsUUFBSSxDQUFDLEtBQUtYLG9CQUFWLEVBQWdDO0FBQ2hDcEIsaUJBQWEsQ0FBQ2dDLHVCQUFkLENBQXNDLHVCQUF0QztBQUNIOztBQXJDa0QsQ0FBeEMsRUFBZiIsImZpbGUiOiIuL3NyYy9idWlsdGlucy9kZXZlbG9wZXIvcmVhY3RkZXZ0b29scy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCdWlsdGluIGZyb20gXCIuLi8uLi9zdHJ1Y3RzL2J1aWx0aW5cIjtcclxuaW1wb3J0IE1vZGFscyBmcm9tIFwiLi4vLi4vdWkvbW9kYWxzXCI7XHJcbmltcG9ydCB7U3RyaW5nc30gZnJvbSBcIm1vZHVsZXNcIjtcclxuXHJcbmNvbnN0IGVsZWN0cm9uID0gcmVxdWlyZShcImVsZWN0cm9uXCIpO1xyXG5jb25zdCBmcyA9IHJlcXVpcmUoXCJmc1wiKTtcclxuY29uc3QgcGF0aCA9IHJlcXVpcmUoXCJwYXRoXCIpO1xyXG5cclxuY29uc3QgQnJvd3NlcldpbmRvdyA9IGVsZWN0cm9uLnJlbW90ZS5Ccm93c2VyV2luZG93O1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgbmV3IGNsYXNzIFJlYWN0RGV2VG9vbHMgZXh0ZW5kcyBCdWlsdGluIHtcclxuICAgIGdldCBuYW1lKCkge3JldHVybiBcIlJlYWN0RGV2VG9vbHNcIjt9XHJcbiAgICBnZXQgY2F0ZWdvcnkoKSB7cmV0dXJuIFwiZGV2ZWxvcGVyXCI7fVxyXG4gICAgZ2V0IGlkKCkge3JldHVybiBcInJlYWN0RGV2VG9vbHNcIjt9XHJcblxyXG4gICAgaW5pdGlhbGl6ZSgpIHtcclxuICAgICAgICBzdXBlci5pbml0aWFsaXplKCk7XHJcbiAgICAgICAgdGhpcy5maW5kRXh0ZW5zaW9uKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZmluZEV4dGVuc2lvbigpIHtcclxuICAgICAgICBsZXQgZXh0ZW5zaW9uUGF0aCA9IFwiXCI7XHJcbiAgICAgICAgaWYgKHByb2Nlc3MucGxhdGZvcm0gPT09IFwid2luMzJcIikgZXh0ZW5zaW9uUGF0aCA9IHBhdGgucmVzb2x2ZShwcm9jZXNzLmVudi5MT0NBTEFQUERBVEEsIFwiR29vZ2xlL0Nocm9tZS9Vc2VyIERhdGFcIik7XHJcbiAgICAgICAgZWxzZSBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gXCJsaW51eFwiKSBleHRlbnNpb25QYXRoID0gcGF0aC5yZXNvbHZlKHByb2Nlc3MuZW52LkhPTUUsIFwiLmNvbmZpZy9nb29nbGUtY2hyb21lXCIpO1xyXG4gICAgICAgIGVsc2UgaWYgKHByb2Nlc3MucGxhdGZvcm0gPT09IFwiZGFyd2luXCIpIGV4dGVuc2lvblBhdGggPSBwYXRoLnJlc29sdmUocHJvY2Vzcy5lbnYuSE9NRSwgXCJMaWJyYXJ5L0FwcGxpY2F0aW9uIFN1cHBvcnQvR29vZ2xlL0Nocm9tZVwiKTtcclxuICAgICAgICBlbHNlIGV4dGVuc2lvblBhdGggPSBwYXRoLnJlc29sdmUocHJvY2Vzcy5lbnYuSE9NRSwgXCIuY29uZmlnL2Nocm9taXVtXCIpO1xyXG4gICAgICAgIGV4dGVuc2lvblBhdGggKz0gXCIvRGVmYXVsdC9FeHRlbnNpb25zL2Zta2FkbWFwZ29mYWRvcGxqYmpma2FwZGtvaWVuaWhpL1wiO1xyXG4gICAgICAgIGlmIChmcy5leGlzdHNTeW5jKGV4dGVuc2lvblBhdGgpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHZlcnNpb25zID0gZnMucmVhZGRpclN5bmMoZXh0ZW5zaW9uUGF0aCk7XHJcbiAgICAgICAgICAgIGV4dGVuc2lvblBhdGggPSBwYXRoLnJlc29sdmUoZXh0ZW5zaW9uUGF0aCwgdmVyc2lvbnNbdmVyc2lvbnMubGVuZ3RoIC0gMV0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmV4dGVuc2lvblBhdGggPSBleHRlbnNpb25QYXRoO1xyXG4gICAgICAgIHRoaXMuaXNFeHRlbnNpb25JbnN0YWxsZWQgPSBmcy5leGlzdHNTeW5jKGV4dGVuc2lvblBhdGgpO1xyXG4gICAgfVxyXG5cclxuICAgIGVuYWJsZWQoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmlzRXh0ZW5zaW9uSW5zdGFsbGVkKSB0aGlzLmZpbmRFeHRlbnNpb24oKTtcclxuICAgICAgICBpZiAoIXRoaXMuaXNFeHRlbnNpb25JbnN0YWxsZWQpIHJldHVybiBNb2RhbHMuYWxlcnQoU3RyaW5ncy5SZWFjdERldlRvb2xzLm5vdEZvdW5kLCBTdHJpbmdzLlJlYWN0RGV2VG9vbHMubm90Rm91bmREZXRhaWxzKTtcclxuXHJcbiAgICAgICAgY29uc3QgZGlkSW5zdGFsbCA9IEJyb3dzZXJXaW5kb3cuYWRkRGV2VG9vbHNFeHRlbnNpb24odGhpcy5leHRlbnNpb25QYXRoKTtcclxuICAgICAgICBpZiAoZGlkSW5zdGFsbCkgdGhpcy5sb2coXCJTdWNjZXNzZnVsbHkgaW5zdGFsbGVkIHJlYWN0IGRldnRvb2xzLlwiKTtcclxuICAgICAgICBlbHNlIHRoaXMuZXJyb3IoXCJDb3VsZG4ndCBmaW5kIHJlYWN0IGRldnRvb2xzIGluIGNocm9tZSBleHRlbnNpb25zIVwiKTtcclxuICAgIH1cclxuXHJcbiAgICBkaXNhYmxlZCgpIHtcclxuICAgICAgICBpZiAoIXRoaXMuaXNFeHRlbnNpb25JbnN0YWxsZWQpIHJldHVybjtcclxuICAgICAgICBCcm93c2VyV2luZG93LnJlbW92ZURldlRvb2xzRXh0ZW5zaW9uKFwiUmVhY3QgRGV2ZWxvcGVyIFRvb2xzXCIpO1xyXG4gICAgfVxyXG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/builtins/developer/reactdevtools.js\n"); /***/ }), @@ -203,7 +202,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _str /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _structs_builtin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../structs/builtin */ \"./src/structs/builtin.js\");\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _ui_modals__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../ui/modals */ \"./src/ui/modals.js\");\n/* harmony import */ var _emotes__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./emotes */ \"./src/builtins/emotes/emotes.js\");\n\n\n\n\nconst headerHTML = `
\n \n \n
`;\nconst twitchEmoteHTML = `
\n
\n
\n
\n\n
\n
\n
\n
`;\nconst favoritesHTML = `
\n
\n
\n
\n\n
\n
\n
\n
`;\n\nconst makeEmote = (emote, url, options = {}) => {\n const {\n onContextMenu,\n onClick\n } = options;\n const emoteContainer = modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].createElement(`
\n \"${emote}\"\n
`);\n if (onContextMenu) emoteContainer.addEventListener(\"contextmenu\", onContextMenu);\n emoteContainer.addEventListener(\"click\", onClick);\n return emoteContainer;\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class EmoteMenu extends _structs_builtin__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n get name() {\n return \"EmoteMenu\";\n }\n\n get collection() {\n return \"emotes\";\n }\n\n get category() {\n return \"general\";\n }\n\n get id() {\n return \"emoteMenu\";\n }\n\n get hideEmojisID() {\n return \"hideEmojiMenu\";\n }\n\n get hideEmojis() {\n return this.get(this.hideEmojisID);\n }\n\n constructor() {\n super();\n this.lastTab = \"bd-qem-emojis\";\n this.qmeHeader = modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].createElement(headerHTML);\n\n for (const button of this.qmeHeader.getElementsByTagName(\"button\")) button.addEventListener(\"click\", this.switchMenu.bind(this));\n\n this.teContainer = modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].createElement(twitchEmoteHTML);\n this.teContainerInner = this.teContainer.querySelector(\".emote-menu-inner\");\n this.faContainer = modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].createElement(favoritesHTML);\n this.faContainerInner = this.faContainer.querySelector(\".emote-menu-inner\");\n this.observer = new MutationObserver(mutations => {\n for (const mutation of mutations) this.observe(mutation);\n });\n this.enableHideEmojis = this.enableHideEmojis.bind(this);\n this.disableHideEmojis = this.disableHideEmojis.bind(this);\n this.updateTwitchEmotes = this.updateTwitchEmotes.bind(this);\n }\n\n async enabled() {\n // Temporary measure, so not using Strings/translation\n return _ui_modals__WEBPACK_IMPORTED_MODULE_2__[\"default\"].alert(\"Emote Menu Broken\", \"Emote Menu is currently broken, it is recommended to disable this until it is fixed.\"); // this.log(\"Starting to observe\");\n // this.observer.observe(document.getElementById(\"app-mount\"), {\n // childList: true,\n // subtree: true\n // });\n // this.hideEmojiCancel = this.registerSetting(this.hideEmojisID, this.enableHideEmojis, this.disableHideEmojis);\n // if (this.hideEmojis) this.enableHideEmojis();\n // if (EmoteModule.emotesLoaded) this.updateTwitchEmotes();\n // this.updateFavorites();\n // Events.on(\"emotes-loaded\", this.updateTwitchEmotes);\n }\n\n disabled() {\n modules__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].off(\"emotes-loaded\", this.updateTwitchEmotes);\n this.observer.disconnect();\n this.disableHideEmojis();\n if (this.hideEmojiCancel) this.hideEmojiCancel();\n }\n\n enableHideEmojis() {\n const picker = document.querySelector(\".emojiPicker-3m1S-j\");\n if (picker) picker.classList.add(\"bd-qme-hidden\");\n }\n\n disableHideEmojis() {\n const picker = document.querySelector(\".emojiPicker-3m1S-j\");\n if (picker) picker.classList.remove(\"bd-qme-hidden\");\n }\n\n insertEmote(emote) {\n const ta = modules__WEBPACK_IMPORTED_MODULE_1__[\"Utilities\"].getTextArea();\n modules__WEBPACK_IMPORTED_MODULE_1__[\"Utilities\"].insertText(ta[0], ta.val().slice(-1) == \" \" ? ta.val() + emote : ta.val() + \" \" + emote);\n }\n\n favContext(e) {\n e.stopPropagation();\n const em = e.target.closest(\".emote-container\").children[0];\n const menu = $(`
Remove
`);\n menu.css({\n top: e.pageY - $(\"#bd-qem-favourite-container\").offset().top,\n left: e.pageX - $(\"#bd-qem-favourite-container\").offset().left\n });\n $(em).parent().append(menu);\n menu.on(\"click\", event => {\n event.preventDefault();\n event.stopPropagation();\n $(em).remove();\n _emotes__WEBPACK_IMPORTED_MODULE_3__[\"default\"].removeFavorite($(em).attr(\"title\"));\n this.updateFavorites();\n $(document).off(\"mousedown.emotemenu\");\n });\n $(document).on(\"mousedown.emotemenu\", function (event) {\n if (event.target.id == \"removemenu\") return;\n $(\"#removemenu\").remove();\n $(document).off(\"mousedown.emotemenu\");\n });\n }\n\n switchMenu(e) {\n let id = typeof e == \"string\" ? e : e.target.id;\n if (id == \"bd-qem-emojis\" && this.hideEmojis) id = \"bd-qem-favourite\";\n const twitch = $(\"#bd-qem-twitch\");\n const fav = $(\"#bd-qem-favourite\");\n const emojis = $(\"#bd-qem-emojis\");\n twitch.removeClass(\"active\");\n fav.removeClass(\"active\");\n emojis.removeClass(\"active\");\n $(\".emojiPicker-3m1S-j\").hide();\n $(\"#bd-qem-favourite-container\").hide();\n $(\"#bd-qem-twitch-container\").hide();\n\n switch (id) {\n case \"bd-qem-twitch\":\n twitch.addClass(\"active\");\n $(\"#bd-qem-twitch-container\").show();\n break;\n\n case \"bd-qem-favourite\":\n fav.addClass(\"active\");\n $(\"#bd-qem-favourite-container\").show();\n break;\n\n case \"bd-qem-emojis\":\n emojis.addClass(\"active\");\n $(\".emojiPicker-3m1S-j\").show();\n $(\".emojiPicker-3m1S-j input\").focus();\n break;\n }\n\n if (id) this.lastTab = id;\n }\n\n observe(mutation) {\n if (!mutation.addedNodes.length || !(mutation.addedNodes[0] instanceof Element)) return;\n const node = mutation.addedNodes[0]; // if (!node.classList.contains(\"popout-2iWAc-\") || node.classList.contains(\"popoutLeft-30WmrD\") || !node.getElementsByClassName(\"emojiPicker-3m1S-j\").length) return;\n\n if (!node.classList.contains(\"layer-v9HyYc\") || !node.getElementsByClassName(\"emojiPicker-3m1S-j\").length || node.querySelector(\".emojiPicker-3m1S-j\").parentElement.classList.contains(\"animatorLeft-1EQxU0\")) return;\n const e = $(node);\n if (this.hideEmojis) e.addClass(\"bd-qme-hidden\");else e.removeClass(\"bd-qme-hidden\");\n e.prepend(this.qmeHeader);\n e.append(this.teContainer);\n e.append(this.faContainer);\n this.switchMenu(this.lastTab);\n }\n\n updateTwitchEmotes() {\n while (this.teContainerInner.firstChild) this.teContainerInner.firstChild.remove();\n\n for (const emote in _emotes__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getCategory(\"TwitchGlobal\")) {\n if (!_emotes__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getCategory(\"TwitchGlobal\").hasOwnProperty(emote)) continue;\n const url = _emotes__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getUrl(\"TwitchGlobal\", emote);\n const emoteElement = makeEmote(emote, url, {\n onClick: this.insertEmote.bind(this, emote)\n });\n this.teContainerInner.append(emoteElement);\n }\n }\n\n updateFavorites() {\n while (this.faContainerInner.firstChild) this.faContainerInner.firstChild.remove();\n\n for (const emote in _emotes__WEBPACK_IMPORTED_MODULE_3__[\"default\"].favorites) {\n const url = _emotes__WEBPACK_IMPORTED_MODULE_3__[\"default\"].favorites[emote];\n const emoteElement = makeEmote(emote, url, {\n onClick: this.insertEmote.bind(this, emote),\n onContextMenu: this.favContext.bind(this)\n });\n this.faContainerInner.append(emoteElement);\n }\n\n _emotes__WEBPACK_IMPORTED_MODULE_3__[\"default\"].saveFavorites();\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL2J1aWx0aW5zL2Vtb3Rlcy9lbW90ZW1lbnUuanM/ZjIyZSJdLCJuYW1lcyI6WyJoZWFkZXJIVE1MIiwidHdpdGNoRW1vdGVIVE1MIiwiZmF2b3JpdGVzSFRNTCIsIm1ha2VFbW90ZSIsImVtb3RlIiwidXJsIiwib3B0aW9ucyIsIm9uQ29udGV4dE1lbnUiLCJvbkNsaWNrIiwiZW1vdGVDb250YWluZXIiLCJET00iLCJjcmVhdGVFbGVtZW50IiwiYWRkRXZlbnRMaXN0ZW5lciIsIkVtb3RlTWVudSIsIkJ1aWx0aW4iLCJuYW1lIiwiY29sbGVjdGlvbiIsImNhdGVnb3J5IiwiaWQiLCJoaWRlRW1vamlzSUQiLCJoaWRlRW1vamlzIiwiZ2V0IiwiY29uc3RydWN0b3IiLCJsYXN0VGFiIiwicW1lSGVhZGVyIiwiYnV0dG9uIiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJzd2l0Y2hNZW51IiwiYmluZCIsInRlQ29udGFpbmVyIiwidGVDb250YWluZXJJbm5lciIsInF1ZXJ5U2VsZWN0b3IiLCJmYUNvbnRhaW5lciIsImZhQ29udGFpbmVySW5uZXIiLCJvYnNlcnZlciIsIk11dGF0aW9uT2JzZXJ2ZXIiLCJtdXRhdGlvbnMiLCJtdXRhdGlvbiIsIm9ic2VydmUiLCJlbmFibGVIaWRlRW1vamlzIiwiZGlzYWJsZUhpZGVFbW9qaXMiLCJ1cGRhdGVUd2l0Y2hFbW90ZXMiLCJlbmFibGVkIiwiTW9kYWxzIiwiYWxlcnQiLCJkaXNhYmxlZCIsIkV2ZW50cyIsIm9mZiIsImRpc2Nvbm5lY3QiLCJoaWRlRW1vamlDYW5jZWwiLCJwaWNrZXIiLCJkb2N1bWVudCIsImNsYXNzTGlzdCIsImFkZCIsInJlbW92ZSIsImluc2VydEVtb3RlIiwidGEiLCJVdGlsaXRpZXMiLCJnZXRUZXh0QXJlYSIsImluc2VydFRleHQiLCJ2YWwiLCJzbGljZSIsImZhdkNvbnRleHQiLCJlIiwic3RvcFByb3BhZ2F0aW9uIiwiZW0iLCJ0YXJnZXQiLCJjbG9zZXN0IiwiY2hpbGRyZW4iLCJtZW51IiwiJCIsImNzcyIsInRvcCIsInBhZ2VZIiwib2Zmc2V0IiwibGVmdCIsInBhZ2VYIiwicGFyZW50IiwiYXBwZW5kIiwib24iLCJldmVudCIsInByZXZlbnREZWZhdWx0IiwiRW1vdGVNb2R1bGUiLCJyZW1vdmVGYXZvcml0ZSIsImF0dHIiLCJ1cGRhdGVGYXZvcml0ZXMiLCJ0d2l0Y2giLCJmYXYiLCJlbW9qaXMiLCJyZW1vdmVDbGFzcyIsImhpZGUiLCJhZGRDbGFzcyIsInNob3ciLCJmb2N1cyIsImFkZGVkTm9kZXMiLCJsZW5ndGgiLCJFbGVtZW50Iiwibm9kZSIsImNvbnRhaW5zIiwiZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSIsInBhcmVudEVsZW1lbnQiLCJwcmVwZW5kIiwiZmlyc3RDaGlsZCIsImdldENhdGVnb3J5IiwiaGFzT3duUHJvcGVydHkiLCJnZXRVcmwiLCJlbW90ZUVsZW1lbnQiLCJmYXZvcml0ZXMiLCJzYXZlRmF2b3JpdGVzIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFFQSxNQUFNQSxVQUFVLEdBQUk7Ozs7T0FBcEI7QUFNQSxNQUFNQyxlQUFlLEdBQUk7Ozs7Ozs7O09BQXpCO0FBVUEsTUFBTUMsYUFBYSxHQUFJOzs7Ozs7OztPQUF2Qjs7QUFVQSxNQUFNQyxTQUFTLEdBQUcsQ0FBQ0MsS0FBRCxFQUFRQyxHQUFSLEVBQWFDLE9BQU8sR0FBRyxFQUF2QixLQUE4QjtBQUM1QyxRQUFNO0FBQUNDLGlCQUFEO0FBQWdCQztBQUFoQixNQUEyQkYsT0FBakM7QUFDQSxRQUFNRyxjQUFjLEdBQUdDLDJDQUFHLENBQUNDLGFBQUosQ0FBbUI7dUNBQ1BQLEtBQU0sVUFBU0MsR0FBSSxZQUFXRCxLQUFNO1dBRGhELENBQXZCO0FBR0EsTUFBSUcsYUFBSixFQUFtQkUsY0FBYyxDQUFDRyxnQkFBZixDQUFnQyxhQUFoQyxFQUErQ0wsYUFBL0M7QUFDbkJFLGdCQUFjLENBQUNHLGdCQUFm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Q0FBc0JxRSxVQUF0QixDQUFpQ2hELE1BQWpDOztBQUN6QyxTQUFLLE1BQU1sRCxLQUFYLElBQW9COEUsK0NBQVcsQ0FBQ3lCLFNBQWhDLEVBQTJDO0FBQ3ZDLFlBQU10RyxHQUFHLEdBQUc2RSwrQ0FBVyxDQUFDeUIsU0FBWixDQUFzQnZHLEtBQXRCLENBQVo7QUFDQSxZQUFNc0csWUFBWSxHQUFHdkcsU0FBUyxDQUFDQyxLQUFELEVBQVFDLEdBQVIsRUFBYTtBQUFDRyxlQUFPLEVBQUUsS0FBSytDLFdBQUwsQ0FBaUIzQixJQUFqQixDQUFzQixJQUF0QixFQUE0QnhCLEtBQTVCLENBQVY7QUFBOENHLHFCQUFhLEVBQUUsS0FBS3VELFVBQUwsQ0FBZ0JsQyxJQUFoQixDQUFxQixJQUFyQjtBQUE3RCxPQUFiLENBQTlCO0FBQ0EsV0FBS0ssZ0JBQUwsQ0FBc0I2QyxNQUF0QixDQUE2QjRCLFlBQTdCO0FBQ0g7O0FBQ0R4QixtREFBVyxDQUFDMEIsYUFBWjtBQUNIOztBQTNKOEMsQ0FBcEMsRUFBZiIsImZpbGUiOiIuL3NyYy9idWlsdGlucy9lbW90ZXMvZW1vdGVtZW51LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJ1aWx0aW4gZnJvbSBcIi4uLy4uL3N0cnVjdHMvYnVpbHRpblwiO1xyXG5pbXBvcnQge1V0aWxpdGllcywgRXZlbnRzLCBET019IGZyb20gXCJtb2R1bGVzXCI7XHJcbmltcG9ydCBNb2RhbHMgZnJvbSBcIi4uLy4uL3VpL21vZGFsc1wiO1xyXG5cclxuaW1wb3J0IEVtb3RlTW9kdWxlIGZyb20gXCIuL2Vtb3Rlc1wiO1xyXG5cclxuY29uc3QgaGVhZGVySFRNTCA9IGA8ZGl2IGlkPVwiYmQtcWVtXCI+XHJcbiAgICA8YnV0dG9uIGNsYXNzPVwiYWN0aXZlXCIgaWQ9XCJiZC1xZW0tdHdpdGNoXCI+VHdpdGNoPC9idXR0b24+XHJcbiAgICA8YnV0dG9uIGlkPVwiYmQtcWVtLWZhdm91cml0ZVwiPkZhdm91cml0ZTwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvbiBpZD1cImJkLXFlbS1lbW9qaXNcIj5FbW9qaXM8L2J1dHRvbmQ+XHJcbjwvZGl2PmA7XHJcblxyXG5jb25zdCB0d2l0Y2hFbW90ZUhUTUwgPSBgPGRpdiBpZD1cImJkLXFlbS10d2l0Y2gtY29udGFpbmVyXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwic2Nyb2xsZXItd3JhcCBzY3JvbGxlcldyYXAtMmxKRWtkIGZhZGVcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic2Nyb2xsZXIgc2Nyb2xsZXItMkZLRlBHXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlbW90ZS1tZW51LWlubmVyXCI+XHJcblxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5gO1xyXG5cclxuY29uc3QgZmF2b3JpdGVzSFRNTCA9IGA8ZGl2IGlkPVwiYmQtcWVtLWZhdm91cml0ZS1jb250YWluZXJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJzY3JvbGxlci13cmFwIHNjcm9sbGVyV3JhcC0ybEpFa2QgZmFkZVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzY3JvbGxlciBzY3JvbGxlci0yRktGUEdcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVtb3RlLW1lbnUtaW5uZXJcIj5cclxuXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PmA7XHJcblxyXG5jb25zdCBtYWtlRW1vdGUgPSAoZW1vdGUsIHVybCwgb3B0aW9ucyA9IHt9KSA9PiB7XHJcbiAgICBjb25zdCB7b25Db250ZXh0TWVudSwgb25DbGlja30gPSBvcHRpb25zO1xyXG4gICAgY29uc3QgZW1vdGVDb250YWluZXIgPSBET00uY3JlYXRlRWxlbWVudChgPGRpdiBjbGFzcz1cImVtb3RlLWNvbnRhaW5lclwiPlxyXG4gICAgICAgIDxpbWcgY2xhc3M9XCJlbW90ZS1pY29uXCIgYWx0PVwiJHtlbW90ZX1cIiBzcmM9XCIke3VybH1cIiB0aXRsZT1cIiR7ZW1vdGV9XCI+XHJcbiAgICA8L2Rpdj5gKTtcclxuICAgIGlmIChvbkNvbnRleHRNZW51KSBlbW90ZUNvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKFwiY29udGV4dG1lbnVcIiwgb25Db250ZXh0TWVudSk7XHJcbiAgICBlbW90ZUNvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgb25DbGljayk7XHJcbiAgICByZXR1cm4gZW1vdGVDb250YWluZXI7XHJcbn07XHJcblxyXG5leHBvcnQgZGVmYXVsdCBuZXcgY2xhc3MgRW1vdGVNZW51IGV4dGVuZHMgQnVpbHRpbiB7XHJcbiAgICBnZXQgbmFtZSgpIHtyZXR1cm4gXCJFbW90ZU1lbnVcIjt9XHJcbiAgICBnZXQgY29sbGVjdGlvbigpIHtyZXR1cm4gXCJlbW90ZXNcIjt9XHJcbiAgICBnZXQgY2F0ZWdvcnkoKSB7cmV0dXJuIFwiZ2VuZXJhbFwiO31cclxuICAgIGdldCBpZCgpIHtyZXR1cm4gXCJlbW90ZU1lbnVcIjt9XHJcbiAgICBnZXQgaGlkZUVtb2ppc0lEKCkge3JldHVybiBcImhpZGVFbW9qaU1lbnVcIjt9XHJcbiAgICBnZXQgaGlkZUVtb2ppcygpIHtyZXR1cm4gdGhpcy5nZXQodGhpcy5oaWRlRW1vamlzSUQpO31cclxuXHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIHRoaXMubGFzdFRhYiA9IFwiYmQtcWVtLWVtb2ppc1wiO1xyXG5cclxuICAgICAgICB0aGlzLnFtZUhlYWRlciA9IERPTS5jcmVhdGVFbGVtZW50KGhlYWRlckhUTUwpO1xyXG4gICAgICAgIGZvciAoY29uc3QgYnV0dG9uIG9mIHRoaXMucW1lSGVhZGVyLmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiYnV0dG9uXCIpKSBidXR0b24uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIHRoaXMuc3dpdGNoTWVudS5iaW5kKHRoaXMpKTtcclxuXHJcbiAgICAgICAgdGhpcy50ZUNvbnRhaW5lciA9IERPTS5jcmVhdGVFbGVtZW50KHR3aXRjaEVtb3RlSFRNTCk7XHJcbiAgICAgICAgdGhpcy50ZUNvbnRhaW5lcklubmVyID0gdGhpcy50ZUNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKFwiLmVtb3RlLW1lbnUtaW5uZXJcIik7XHJcblxyXG4gICAgICAgIHRoaXMuZmFDb250YWluZXIgPSBET00uY3JlYXRlRWxlbWVudChmYXZvcml0ZXNIVE1MKTtcclxuICAgICAgICB0aGlzLmZhQ29udGFpbmVySW5uZXIgPSB0aGlzLmZhQ29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoXCIuZW1vdGUtbWVudS1pbm5lclwiKTtcclxuXHJcbiAgICAgICAgdGhpcy5vYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKG11dGF0aW9ucyA9PiB7Zm9yIChjb25zdCBtdXRhdGlvbiBvZiBtdXRhdGlvbnMpIHRoaXMub2JzZXJ2ZShtdXRhdGlvbik7fSk7XHJcbiAgICAgICAgdGhpcy5lbmFibGVIaWRlRW1vamlzID0gdGhpcy5lbmFibGVIaWRlRW1vamlzLmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlSGlkZUVtb2ppcyA9IHRoaXMuZGlzYWJsZUhpZGVFbW9qaXMuYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZVR3aXRjaEVtb3RlcyA9IHRoaXMudXBkYXRlVHdpdGNoRW1vdGVzLmJpbmQodGhpcyk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZW5hYmxlZCgpIHtcclxuICAgICAgICAvLyBUZW1wb3JhcnkgbWVhc3VyZSwgc28gbm90IHVzaW5nIFN0cmluZ3MvdHJhbnNsYXRpb25cclxuICAgICAgICByZXR1cm4gTW9kYWxzLmFsZXJ0KFwiRW1vdGUgTWVudSBCcm9rZW5cIiwgXCJFbW90ZSBNZW51IGlzIGN1cnJlbnRseSBicm9rZW4sIGl0IGlzIHJlY29tbWVuZGVkIHRvIGRpc2FibGUgdGhpcyB1bnRpbCBpdCBpcyBmaXhlZC5cIik7XHJcbiAgICAgICAgLy8gdGhpcy5sb2coXCJTdGFydGluZyB0byBvYnNlcnZlXCIpO1xyXG4gICAgICAgIC8vIHRoaXMub2JzZXJ2ZXIub2JzZXJ2ZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImFwcC1tb3VudFwiKSwge1xyXG4gICAgICAgIC8vICAgICBjaGlsZExpc3Q6IHRydWUsXHJcbiAgICAgICAgLy8gICAgIHN1YnRyZWU6IHRydWVcclxuICAgICAgICAvLyB9KTtcclxuICAgICAgICAvLyB0aGlzLmhpZGVFbW9qaUNhbmNlbCA9IHRoaXMucmVnaXN0ZXJTZXR0aW5nKHRoaXMuaGlkZUVtb2ppc0lELCB0aGlzLmVuYWJsZUhpZGVFbW9qaXMsIHRoaXMuZGlzYWJsZUhpZGVFbW9qaXMpO1xyXG4gICAgICAgIC8vIGlmICh0aGlzLmhpZGVFbW9qaXMpIHRoaXMuZW5hYmxlSGlkZUVtb2ppcygpO1xyXG4gICAgICAgIC8vIGlmIChFbW90ZU1vZHVsZS5lbW90ZXNMb2FkZWQpIHRoaXMudXBkYXRlVHdpdGNoRW1vdGVzKCk7XHJcbiAgICAgICAgLy8gdGhpcy51cGRhdGVGYXZvcml0ZXMoKTtcclxuICAgICAgICAvLyBFdmVudHMub24oXCJlbW90ZXMtbG9hZGVkXCIsIHRoaXMudXBkYXRlVHdpdGNoRW1vdGVzKTtcclxuICAgIH1cclxuXHJcbiAgICBkaXNhYmxlZCgpIHtcclxuICAgICAgICBFdmVudHMub2ZmKFwiZW1vdGVzLWxvYWRlZFwiLCB0aGlzLnVwZGF0ZVR3aXRjaEVtb3Rlcyk7XHJcbiAgICAgICAgdGhpcy5vYnNlcnZlci5kaXNjb25uZWN0KCk7XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlSGlkZUVtb2ppcygpO1xyXG4gICAgICAgIGlmICh0aGlzLmhpZGVFbW9qaUNhbmNlbCkgdGhpcy5oaWRlRW1vamlDYW5jZWwoKTtcclxuICAgIH1cclxuXHJcbiAgICBlbmFibGVIaWRlRW1vamlzKCkge1xyXG4gICAgICAgIGNvbnN0IHBpY2tlciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIuZW1vamlQaWNrZXItM20xUy1qXCIpO1xyXG4gICAgICAgIGlmIChwaWNrZXIpIHBpY2tlci5jbGFzc0xpc3QuYWRkKFwiYmQtcW1lLWhpZGRlblwiKTtcclxuICAgIH1cclxuXHJcbiAgICBkaXNhYmxlSGlkZUVtb2ppcygpIHtcclxuICAgICAgICBjb25zdCBwaWNrZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiLmVtb2ppUGlja2VyLTNtMVMtalwiKTtcclxuICAgICAgICBpZiAocGlja2VyKSBwaWNrZXIuY2xhc3NMaXN0LnJlbW92ZShcImJkLXFtZS1oaWRkZW5cIik7XHJcbiAgICB9XHJcblxyXG4gICAgaW5zZXJ0RW1vdGUoZW1vdGUpIHtcclxuICAgICAgICBjb25zdCB0YSA9IFV0aWxpdGllcy5nZXRUZXh0QXJlYSgpO1xyXG4gICAgICAgIFV0aWxpdGllcy5pbnNlcnRUZXh0KHRhWzBdLCB0YS52YWwoKS5zbGljZSgtMSkgPT0gXCIgXCIgPyB0YS52YWwoKSArIGVtb3RlIDogdGEudmFsKCkgKyBcIiBcIiArIGVtb3RlKTtcclxuICAgIH1cclxuXHJcbiAgICBmYXZDb250ZXh0KGUpIHtcclxuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgIGNvbnN0IGVtID0gZS50YXJnZXQuY2xvc2VzdChcIi5lbW90ZS1jb250YWluZXJcIikuY2hpbGRyZW5bMF07XHJcbiAgICAgICAgY29uc3QgbWVudSA9ICQoYDxkaXYgaWQ9XCJyZW1vdmVtZW51XCIgY2xhc3M9XCJiZC1jb250ZXh0LW1lbnUgY29udGV4dC1tZW51IHRoZW1lLWRhcmtcIj5SZW1vdmU8L2Rpdj5gKTtcclxuICAgICAgICBtZW51LmNzcyh7XHJcbiAgICAgICAgICAgIHRvcDogZS5wYWdlWSAtICQoXCIjYmQtcWVtLWZhdm91cml0ZS1jb250YWluZXJcIikub2Zmc2V0KCkudG9wLFxyXG4gICAgICAgICAgICBsZWZ0OiBlLnBhZ2VYIC0gJChcIiNiZC1xZW0tZmF2b3VyaXRlLWNvbnRhaW5lclwiKS5vZmZzZXQoKS5sZWZ0XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgJChlbSkucGFyZW50KCkuYXBwZW5kKG1lbnUpO1xyXG4gICAgICAgIG1lbnUub24oXCJjbGlja1wiLCAoZXZlbnQpID0+IHtcclxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgICQoZW0pLnJlbW92ZSgpO1xyXG4gICAgICAgICAgICBFbW90ZU1vZHVsZS5yZW1vdmVGYXZvcml0ZSgkKGVtKS5hdHRyKFwidGl0bGVcIikpO1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUZhdm9yaXRlcygpO1xyXG4gICAgICAgICAgICAkKGRvY3VtZW50KS5vZmYoXCJtb3VzZWRvd24uZW1vdGVtZW51XCIpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgICQoZG9jdW1lbnQpLm9uKFwibW91c2Vkb3duLmVtb3RlbWVudVwiLCBmdW5jdGlvbihldmVudCkge1xyXG4gICAgICAgICAgICBpZiAoZXZlbnQudGFyZ2V0LmlkID09IFwicmVtb3ZlbWVudVwiKSByZXR1cm47XHJcbiAgICAgICAgICAgICQoXCIjcmVtb3ZlbWVudVwiKS5yZW1vdmUoKTtcclxuICAgICAgICAgICAgJChkb2N1bWVudCkub2ZmKFwibW91c2Vkb3duLmVtb3RlbWVudVwiKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBzd2l0Y2hNZW51KGUpIHtcclxuICAgICAgICBsZXQgaWQgPSB0eXBlb2YoZSkgPT0gXCJzdHJpbmdcIiA/IGUgOiBlLnRhcmdldC5pZDtcclxuICAgICAgICBpZiAoaWQgPT0gXCJiZC1xZW0tZW1vamlzXCIgJiYgdGhpcy5oaWRlRW1vamlzKSBpZCA9IFwiYmQtcWVtLWZhdm91cml0ZVwiO1xyXG4gICAgICAgIGNvbnN0IHR3aXRjaCA9ICQoXCIjYmQtcWVtLXR3aXRjaFwiKTtcclxuICAgICAgICBjb25zdCBmYXYgPSAkKFwiI2JkLXFlbS1mYXZvdXJpdGVcIik7XHJcbiAgICAgICAgY29uc3QgZW1vamlzID0gJChcIiNiZC1xZW0tZW1vamlzXCIpO1xyXG4gICAgICAgIHR3aXRjaC5yZW1vdmVDbGFzcyhcImFjdGl2ZVwiKTtcclxuICAgICAgICBmYXYucmVtb3ZlQ2xhc3MoXCJhY3RpdmVcIik7XHJcbiAgICAgICAgZW1vamlzLnJlbW92ZUNsYXNzKFwiYWN0aXZlXCIpO1xyXG5cclxuICAgICAgICAkKFwiLmVtb2ppUGlja2VyLTNtMVMtalwiKS5oaWRlKCk7XHJcbiAgICAgICAgJChcIiNiZC1xZW0tZmF2b3VyaXRlLWNvbnRhaW5lclwiKS5oaWRlKCk7XHJcbiAgICAgICAgJChcIiNiZC1xZW0tdHdpdGNoLWNvbnRhaW5lclwiKS5oaWRlKCk7XHJcblxyXG4gICAgICAgIHN3aXRjaCAoaWQpIHtcclxuICAgICAgICAgICAgY2FzZSBcImJkLXFlbS10d2l0Y2hcIjpcclxuICAgICAgICAgICAgICAgIHR3aXRjaC5hZGRDbGFzcyhcImFjdGl2ZVwiKTtcclxuICAgICAgICAgICAgICAgICQoXCIjYmQtcWVtLXR3aXRjaC1jb250YWluZXJcIikuc2hvdygpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgXCJiZC1xZW0tZmF2b3VyaXRlXCI6XHJcbiAgICAgICAgICAgICAgICBmYXYuYWRkQ2xhc3MoXCJhY3RpdmVcIik7XHJcbiAgICAgICAgICAgICAgICAkKFwiI2JkLXFlbS1mYXZvdXJpdGUtY29udGFpbmVyXCIpLnNob3coKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIFwiYmQtcWVtLWVtb2ppc1wiOlxyXG4gICAgICAgICAgICAgICAgZW1vamlzLmFkZENsYXNzKFwiYWN0aXZlXCIpO1xyXG4gICAgICAgICAgICAgICAgJChcIi5lbW9qaVBpY2tlci0zbTFTLWpcIikuc2hvdygpO1xyXG4gICAgICAgICAgICAgICAgJChcIi5lbW9qaVBpY2tlci0zbTFTLWogaW5wdXRcIikuZm9jdXMoKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaWQpIHRoaXMubGFzdFRhYiA9IGlkO1xyXG4gICAgfVxyXG5cclxuICAgIG9ic2VydmUobXV0YXRpb24pIHtcclxuICAgICAgICBpZiAoIW11dGF0aW9uLmFkZGVkTm9kZXMubGVuZ3RoIHx8ICEobXV0YXRpb24uYWRkZWROb2Rlc1swXSBpbnN0YW5jZW9mIEVsZW1lbnQpKSByZXR1cm47XHJcbiAgICAgICAgY29uc3Qgbm9kZSA9IG11dGF0aW9uLmFkZGVkTm9kZXNbMF07XHJcbiAgICAgICAgLy8gaWYgKCFub2RlLmNsYXNzTGlzdC5jb250YWlucyhcInBvcG91dC0yaVdBYy1cIikgfHwgbm9kZS5jbGFzc0xpc3QuY29udGFpbnMoXCJwb3BvdXRMZWZ0LTMwV21yRFwiKSB8fCAhbm9kZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwiZW1vamlQaWNrZXItM20xUy1qXCIpLmxlbmd0aCkgcmV0dXJuO1xyXG4gICAgICAgIGlmICghbm9kZS5jbGFzc0xpc3QuY29udGFpbnMoXCJsYXllci12OUh5WWNcIikgfHwgIW5vZGUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImVtb2ppUGlja2VyLTNtMVMtalwiKS5sZW5ndGggfHwgbm9kZS5xdWVyeVNlbGVjdG9yKFwiLmVtb2ppUGlja2VyLTNtMVMtalwiKS5wYXJlbnRFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhcImFuaW1hdG9yTGVmdC0xRVF4VTBcIikpIHJldHVybjtcclxuXHJcbiAgICAgICAgY29uc3QgZSA9ICQobm9kZSk7XHJcbiAgICAgICAgaWYgKHRoaXMuaGlkZUVtb2ppcykgZS5hZGRDbGFzcyhcImJkLXFtZS1oaWRkZW5cIik7XHJcbiAgICAgICAgZWxzZSBlLnJlbW92ZUNsYXNzKFwiYmQtcW1lLWhpZGRlblwiKTtcclxuXHJcbiAgICAgICAgZS5wcmVwZW5kKHRoaXMucW1lSGVhZGVyKTtcclxuICAgICAgICBlLmFwcGVuZCh0aGlzLnRlQ29udGFpbmVyKTtcclxuICAgICAgICBlLmFwcGVuZCh0aGlzLmZhQ29udGFpbmVyKTtcclxuXHJcbiAgICAgICAgdGhpcy5zd2l0Y2hNZW51KHRoaXMubGFzdFRhYik7XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlVHdpdGNoRW1vdGVzKCkge1xyXG4gICAgICAgIHdoaWxlICh0aGlzLnRlQ29udGFpbmVySW5uZXIuZmlyc3RDaGlsZCkgdGhpcy50ZUNvbnRhaW5lcklubmVyLmZpcnN0Q2hpbGQucmVtb3ZlKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBlbW90ZSBpbiBFbW90ZU1vZHVsZS5nZXRDYXRlZ29yeShcIlR3aXRjaEdsb2JhbFwiKSkge1xyXG4gICAgICAgICAgICBpZiAoIUVtb3RlTW9kdWxlLmdldENhdGVnb3J5KFwiVHdpdGNoR2xvYmFsXCIpLmhhc093blByb3BlcnR5KGVtb3RlKSkgY29udGludWU7XHJcbiAgICAgICAgICAgIGNvbnN0IHVybCA9IEVtb3RlTW9kdWxlLmdldFVybChcIlR3aXRjaEdsb2JhbFwiLCBlbW90ZSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGVtb3RlRWxlbWVudCA9IG1ha2VFbW90ZShlbW90ZSwgdXJsLCB7b25DbGljazogdGhpcy5pbnNlcnRFbW90ZS5iaW5kKHRoaXMsIGVtb3RlKX0pO1xyXG4gICAgICAgICAgICB0aGlzLnRlQ29udGFpbmVySW5uZXIuYXBwZW5kKGVtb3RlRWxlbWVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZUZhdm9yaXRlcygpIHtcclxuICAgICAgICB3aGlsZSAodGhpcy5mYUNvbnRhaW5lcklubmVyLmZpcnN0Q2hpbGQpIHRoaXMuZmFDb250YWluZXJJbm5lci5maXJzdENoaWxkLnJlbW92ZSgpO1xyXG4gICAgICAgIGZvciAoY29uc3QgZW1vdGUgaW4gRW1vdGVNb2R1bGUuZmF2b3JpdGVzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHVybCA9IEVtb3RlTW9kdWxlLmZhdm9yaXRlc1tlbW90ZV07XHJcbiAgICAgICAgICAgIGNvbnN0IGVtb3RlRWxlbWVudCA9IG1ha2VFbW90ZShlbW90ZSwgdXJsLCB7b25DbGljazogdGhpcy5pbnNlcnRFbW90ZS5iaW5kKHRoaXMsIGVtb3RlKSwgb25Db250ZXh0TWVudTogdGhpcy5mYXZDb250ZXh0LmJpbmQodGhpcyl9KTtcclxuICAgICAgICAgICAgdGhpcy5mYUNvbnRhaW5lcklubmVyLmFwcGVuZChlbW90ZUVsZW1lbnQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBFbW90ZU1vZHVsZS5zYXZlRmF2b3JpdGVzKCk7XHJcbiAgICB9XHJcblxyXG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/builtins/emotes/emotemenu.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _structs_builtin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../structs/builtin */ \"./src/structs/builtin.js\");\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _ui_modals__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../ui/modals */ \"./src/ui/modals.js\");\n/* harmony import */ var _emotes__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./emotes */ \"./src/builtins/emotes/emotes.js\");\n\n\n\n\nconst headerHTML = `
\n \n \n
`;\nconst twitchEmoteHTML = `
\n
\n
\n
\n\n
\n
\n
\n
`;\nconst favoritesHTML = `
\n
\n
\n
\n\n
\n
\n
\n
`;\n\nconst makeEmote = (emote, url, options = {}) => {\n const {\n onContextMenu,\n onClick\n } = options;\n const emoteContainer = modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].createElement(`
\n \"${emote}\"\n
`);\n if (onContextMenu) emoteContainer.addEventListener(\"contextmenu\", onContextMenu);\n emoteContainer.addEventListener(\"click\", onClick);\n return emoteContainer;\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class EmoteMenu extends _structs_builtin__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n get name() {\n return \"EmoteMenu\";\n }\n\n get collection() {\n return \"emotes\";\n }\n\n get category() {\n return \"general\";\n }\n\n get id() {\n return \"emoteMenu\";\n }\n\n get hideEmojisID() {\n return \"hideEmojiMenu\";\n }\n\n get hideEmojis() {\n return this.get(this.hideEmojisID);\n }\n\n constructor() {\n super();\n this.lastTab = \"bd-qem-emojis\";\n this.qmeHeader = modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].createElement(headerHTML);\n\n for (const button of this.qmeHeader.getElementsByTagName(\"button\")) button.addEventListener(\"click\", this.switchMenu.bind(this));\n\n this.teContainer = modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].createElement(twitchEmoteHTML);\n this.teContainerInner = this.teContainer.querySelector(\".emote-menu-inner\");\n this.faContainer = modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].createElement(favoritesHTML);\n this.faContainerInner = this.faContainer.querySelector(\".emote-menu-inner\");\n this.observer = new MutationObserver(mutations => {\n for (const mutation of mutations) this.observe(mutation);\n });\n this.enableHideEmojis = this.enableHideEmojis.bind(this);\n this.disableHideEmojis = this.disableHideEmojis.bind(this);\n this.updateTwitchEmotes = this.updateTwitchEmotes.bind(this);\n }\n\n async enabled() {\n // Temporary measure, so not using Strings/translation\n return _ui_modals__WEBPACK_IMPORTED_MODULE_2__[\"default\"].alert(\"Emote Menu Broken\", \"Emote Menu is currently broken, it is recommended to disable this until it is fixed.\"); // this.log(\"Starting to observe\");\n // this.observer.observe(document.getElementById(\"app-mount\"), {\n // childList: true,\n // subtree: true\n // });\n // this.hideEmojiCancel = this.registerSetting(this.hideEmojisID, this.enableHideEmojis, this.disableHideEmojis);\n // if (this.hideEmojis) this.enableHideEmojis();\n // if (EmoteModule.emotesLoaded) this.updateTwitchEmotes();\n // this.updateFavorites();\n // Events.on(\"emotes-loaded\", this.updateTwitchEmotes);\n }\n\n disabled() {\n modules__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].off(\"emotes-loaded\", this.updateTwitchEmotes);\n this.observer.disconnect();\n this.disableHideEmojis();\n if (this.hideEmojiCancel) this.hideEmojiCancel();\n }\n\n enableHideEmojis() {\n const picker = document.querySelector(\".emojiPicker-3m1S-j\");\n if (picker) picker.classList.add(\"bd-qme-hidden\");\n }\n\n disableHideEmojis() {\n const picker = document.querySelector(\".emojiPicker-3m1S-j\");\n if (picker) picker.classList.remove(\"bd-qme-hidden\");\n }\n\n insertEmote(emote) {\n const ta = modules__WEBPACK_IMPORTED_MODULE_1__[\"Utilities\"].getTextArea();\n modules__WEBPACK_IMPORTED_MODULE_1__[\"Utilities\"].insertText(ta[0], ta.val().slice(-1) == \" \" ? ta.val() + emote : ta.val() + \" \" + emote);\n }\n\n favContext(e) {\n e.stopPropagation();\n const em = e.target.closest(\".emote-container\").children[0];\n const menu = $(`
Remove
`);\n menu.css({\n top: e.pageY - $(\"#bd-qem-favourite-container\").offset().top,\n left: e.pageX - $(\"#bd-qem-favourite-container\").offset().left\n });\n $(em).parent().append(menu);\n menu.on(\"click\", event => {\n event.preventDefault();\n event.stopPropagation();\n $(em).remove();\n _emotes__WEBPACK_IMPORTED_MODULE_3__[\"default\"].removeFavorite($(em).attr(\"title\"));\n this.updateFavorites();\n $(document).off(\"mousedown.emotemenu\");\n });\n $(document).on(\"mousedown.emotemenu\", function (event) {\n if (event.target.id == \"removemenu\") return;\n $(\"#removemenu\").remove();\n $(document).off(\"mousedown.emotemenu\");\n });\n }\n\n switchMenu(e) {\n let id = typeof e == \"string\" ? e : e.target.id;\n if (id == \"bd-qem-emojis\" && this.hideEmojis) id = \"bd-qem-favourite\";\n const twitch = $(\"#bd-qem-twitch\");\n const fav = $(\"#bd-qem-favourite\");\n const emojis = $(\"#bd-qem-emojis\");\n twitch.removeClass(\"active\");\n fav.removeClass(\"active\");\n emojis.removeClass(\"active\");\n $(\".emojiPicker-3m1S-j\").hide();\n $(\"#bd-qem-favourite-container\").hide();\n $(\"#bd-qem-twitch-container\").hide();\n\n switch (id) {\n case \"bd-qem-twitch\":\n twitch.addClass(\"active\");\n $(\"#bd-qem-twitch-container\").show();\n break;\n\n case \"bd-qem-favourite\":\n fav.addClass(\"active\");\n $(\"#bd-qem-favourite-container\").show();\n break;\n\n case \"bd-qem-emojis\":\n emojis.addClass(\"active\");\n $(\".emojiPicker-3m1S-j\").show();\n $(\".emojiPicker-3m1S-j input\").focus();\n break;\n }\n\n if (id) this.lastTab = id;\n }\n\n observe(mutation) {\n if (!mutation.addedNodes.length || !(mutation.addedNodes[0] instanceof Element)) return;\n const node = mutation.addedNodes[0]; // if (!node.classList.contains(\"popout-2iWAc-\") || node.classList.contains(\"popoutLeft-30WmrD\") || !node.getElementsByClassName(\"emojiPicker-3m1S-j\").length) return;\n\n if (!node.classList.contains(\"layer-v9HyYc\") || !node.getElementsByClassName(\"emojiPicker-3m1S-j\").length || node.querySelector(\".emojiPicker-3m1S-j\").parentElement.classList.contains(\"animatorLeft-1EQxU0\")) return;\n const e = $(node);\n if (this.hideEmojis) e.addClass(\"bd-qme-hidden\");else e.removeClass(\"bd-qme-hidden\");\n e.prepend(this.qmeHeader);\n e.append(this.teContainer);\n e.append(this.faContainer);\n this.switchMenu(this.lastTab);\n }\n\n updateTwitchEmotes() {\n while (this.teContainerInner.firstChild) this.teContainerInner.firstChild.remove();\n\n for (const emote in _emotes__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getCategory(\"TwitchGlobal\")) {\n if (!_emotes__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getCategory(\"TwitchGlobal\").hasOwnProperty(emote)) continue;\n const url = _emotes__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getUrl(\"TwitchGlobal\", emote);\n const emoteElement = makeEmote(emote, url, {\n onClick: this.insertEmote.bind(this, emote)\n });\n this.teContainerInner.append(emoteElement);\n }\n }\n\n updateFavorites() {\n while (this.faContainerInner.firstChild) this.faContainerInner.firstChild.remove();\n\n for (const emote in _emotes__WEBPACK_IMPORTED_MODULE_3__[\"default\"].favorites) {\n const url = _emotes__WEBPACK_IMPORTED_MODULE_3__[\"default\"].favorites[emote];\n const emoteElement = makeEmote(emote, url, {\n onClick: this.insertEmote.bind(this, emote),\n onContextMenu: this.favContext.bind(this)\n });\n this.faContainerInner.append(emoteElement);\n }\n\n _emotes__WEBPACK_IMPORTED_MODULE_3__[\"default\"].saveFavorites();\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYnVpbHRpbnMvZW1vdGVzL2Vtb3RlbWVudS5qcz9mMjJlIl0sIm5hbWVzIjpbImhlYWRlckhUTUwiLCJ0d2l0Y2hFbW90ZUhUTUwiLCJmYXZvcml0ZXNIVE1MIiwibWFrZUVtb3RlIiwiZW1vdGUiLCJ1cmwiLCJvcHRpb25zIiwib25Db250ZXh0TWVudSIsIm9uQ2xpY2siLCJlbW90ZUNvbnRhaW5lciIsIkRPTSIsImNyZWF0ZUVsZW1lbnQiLCJhZGRFdmVudExpc3RlbmVyIiwiRW1vdGVNZW51IiwiQnVpbHRpbiIsIm5hbWUiLCJjb2xsZWN0aW9uIiwiY2F0ZWdvcnkiLCJpZCIsImhpZGVFbW9qaXNJRCIsImhpZGVFbW9qaXMiLCJnZXQiLCJjb25zdHJ1Y3RvciIsImxhc3RUYWIiLCJxbWVIZWFkZXIiLCJidXR0b24iLCJnZXRFbGVtZW50c0J5VGFnTmFtZSIsInN3aXRjaE1lbnUiLCJiaW5kIiwidGVDb250YWluZXIiLCJ0ZUNvbnRhaW5lcklubmVyIiwicXVlcnlTZWxlY3RvciIsImZhQ29udGFpbmVyIiwiZmFDb250YWluZXJJbm5lciIsIm9ic2VydmVyIiwiTXV0YXRpb25PYnNlcnZlciIsIm11dGF0aW9ucyIsIm11dGF0aW9uIiwib2JzZXJ2ZSIsImVuYWJsZUhpZGVFbW9qaXMiLCJkaXNhYmxlSGlkZUVtb2ppcyIsInVwZGF0ZVR3aXRjaEVtb3RlcyIsImVuYWJsZWQiLCJNb2RhbHMiLCJhbGVydCIsImRpc2FibGVkIiwiRXZlbnRzIiwib2ZmIiwiZGlzY29ubmVjdCIsImhpZGVFbW9qaUNhbmNlbCIsInBpY2tlciIsImRvY3VtZW50IiwiY2xhc3NMaXN0IiwiYWRkIiwicmVtb3ZlIiwiaW5zZXJ0RW1vdGUiLCJ0YSIsIlV0aWxpdGllcyIsImdldFRleHRBcmVhIiwiaW5zZXJ0VGV4dCIsInZhbCIsInNsaWNlIiwiZmF2Q29udGV4dCIsImUiLCJzdG9wUHJvcGFnYXRpb24iLCJlbSIsInRhcmdldCIsImNsb3Nlc3QiLCJjaGlsZHJlbiIsIm1lbnUiLCIkIiwiY3NzIiwidG9wIiwicGFnZVkiLCJvZmZzZXQiLCJsZWZ0IiwicGFnZVgiLCJwYXJlbnQiLCJhcHBlbmQiLCJvbiIsImV2ZW50IiwicHJldmVudERlZmF1bHQiLCJFbW90ZU1vZHVsZSIsInJlbW92ZUZhdm9yaXRlIiwiYXR0ciIsInVwZGF0ZUZhdm9yaXRlcyIsInR3aXRjaCIsImZhdiIsImVtb2ppcyIsInJlbW92ZUNsYXNzIiwiaGlkZSIsImFkZENsYXNzIiwic2hvdyIsImZvY3VzIiwiYWRkZWROb2RlcyIsImxlbmd0aCIsIkVsZW1lbnQiLCJub2RlIiwiY29udGFpbnMiLCJnZXRFbGVtZW50c0J5Q2xhc3NOYW1lIiwicGFyZW50RWxlbWVudCIsInByZXBlbmQiLCJmaXJzdENoaWxkIiwiZ2V0Q2F0ZWdvcnkiLCJoYXNPd25Qcm9wZXJ0eSIsImdldFVybCIsImVtb3RlRWxlbWVudCIsImZhdm9yaXRlcyIsInNhdmVGYXZvcml0ZXMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUVBLE1BQU1BLFVBQVUsR0FBSTs7OztPQUFwQjtBQU1BLE1BQU1DLGVBQWUsR0FBSTs7Ozs7Ozs7T0FBekI7QUFVQSxNQUFNQyxhQUFhLEdBQUk7Ozs7Ozs7O09BQXZCOztBQVVBLE1BQU1DLFNBQVMsR0FBRyxDQUFDQyxLQUFELEVBQVFDLEdBQVIsRUFBYUMsT0FBTyxHQUFHLEVBQXZCLEtBQThCO0FBQzVDLFFBQU07QUFBQ0MsaUJBQUQ7QUFBZ0JDO0FBQWhCLE1BQTJCRixPQUFqQztBQUNBLFFBQU1HLGNBQWMsR0FBR0MsMkNBQUcsQ0FBQ0MsYUFBSixDQUFtQjt1Q0FDUFAsS0FBTSxVQUFTQyxHQUFJLFlBQVdELEtBQU07V0FEaEQsQ0FBdkI7QUFHQSxNQUFJRyxhQUFKLEVBQW1CRSxjQUFjLENBQUNHLGdCQUFmLENBQWdDLGFBQWhDLEVBQStDTCxhQUEvQztBQUNuQkUsZ0JBQWMsQ0FBQ0csZ0JBQWYsQ0FB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QnFFLFVBQXRCLENBQWlDaEQsTUFBakM7O0FBQ3pDLFNBQUssTUFBTWxELEtBQVgsSUFBb0I4RSwrQ0FBVyxDQUFDeUIsU0FBaEMsRUFBMkM7QUFDdkMsWUFBTXRHLEdBQUcsR0FBRzZFLCtDQUFXLENBQUN5QixTQUFaLENBQXNCdkcsS0FBdEIsQ0FBWjtBQUNBLFlBQU1zRyxZQUFZLEdBQUd2RyxTQUFTLENBQUNDLEtBQUQsRUFBUUMsR0FBUixFQUFhO0FBQUNHLGVBQU8sRUFBRSxLQUFLK0MsV0FBTCxDQUFpQjNCLElBQWpCLENBQXNCLElBQXRCLEVBQTRCeEIsS0FBNUIsQ0FBVjtBQUE4Q0cscUJBQWEsRUFBRSxLQUFLdUQsVUFBTCxDQUFnQmxDLElBQWhCLENBQXFCLElBQXJCO0FBQTdELE9BQWIsQ0FBOUI7QUFDQSxXQUFLSyxnQkFBTCxDQUFzQjZDLE1BQXRCLENBQTZCNEIsWUFBN0I7QUFDSDs7QUFDRHhCLG1EQUFXLENBQUMwQixhQUFaO0FBQ0g7O0FBM0o4QyxDQUFwQyxFQUFmIiwiZmlsZSI6Ii4vc3JjL2J1aWx0aW5zL2Vtb3Rlcy9lbW90ZW1lbnUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQnVpbHRpbiBmcm9tIFwiLi4vLi4vc3RydWN0cy9idWlsdGluXCI7XHJcbmltcG9ydCB7VXRpbGl0aWVzLCBFdmVudHMsIERPTX0gZnJvbSBcIm1vZHVsZXNcIjtcclxuaW1wb3J0IE1vZGFscyBmcm9tIFwiLi4vLi4vdWkvbW9kYWxzXCI7XHJcblxyXG5pbXBvcnQgRW1vdGVNb2R1bGUgZnJvbSBcIi4vZW1vdGVzXCI7XHJcblxyXG5jb25zdCBoZWFkZXJIVE1MID0gYDxkaXYgaWQ9XCJiZC1xZW1cIj5cclxuICAgIDxidXR0b24gY2xhc3M9XCJhY3RpdmVcIiBpZD1cImJkLXFlbS10d2l0Y2hcIj5Ud2l0Y2g8L2J1dHRvbj5cclxuICAgIDxidXR0b24gaWQ9XCJiZC1xZW0tZmF2b3VyaXRlXCI+RmF2b3VyaXRlPC9idXR0b24+XHJcbiAgICA8YnV0dG9uIGlkPVwiYmQtcWVtLWVtb2ppc1wiPkVtb2ppczwvYnV0dG9uZD5cclxuPC9kaXY+YDtcclxuXHJcbmNvbnN0IHR3aXRjaEVtb3RlSFRNTCA9IGA8ZGl2IGlkPVwiYmQtcWVtLXR3aXRjaC1jb250YWluZXJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJzY3JvbGxlci13cmFwIHNjcm9sbGVyV3JhcC0ybEpFa2QgZmFkZVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzY3JvbGxlciBzY3JvbGxlci0yRktGUEdcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVtb3RlLW1lbnUtaW5uZXJcIj5cclxuXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PmA7XHJcblxyXG5jb25zdCBmYXZvcml0ZXNIVE1MID0gYDxkaXYgaWQ9XCJiZC1xZW0tZmF2b3VyaXRlLWNvbnRhaW5lclwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInNjcm9sbGVyLXdyYXAgc2Nyb2xsZXJXcmFwLTJsSkVrZCBmYWRlXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNjcm9sbGVyIHNjcm9sbGVyLTJGS0ZQR1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZW1vdGUtbWVudS1pbm5lclwiPlxyXG5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+YDtcclxuXHJcbmNvbnN0IG1ha2VFbW90ZSA9IChlbW90ZSwgdXJsLCBvcHRpb25zID0ge30pID0+IHtcclxuICAgIGNvbnN0IHtvbkNvbnRleHRNZW51LCBvbkNsaWNrfSA9IG9wdGlvbnM7XHJcbiAgICBjb25zdCBlbW90ZUNvbnRhaW5lciA9IERPTS5jcmVhdGVFbGVtZW50KGA8ZGl2IGNsYXNzPVwiZW1vdGUtY29udGFpbmVyXCI+XHJcbiAgICAgICAgPGltZyBjbGFzcz1cImVtb3RlLWljb25cIiBhbHQ9XCIke2Vtb3RlfVwiIHNyYz1cIiR7dXJsfVwiIHRpdGxlPVwiJHtlbW90ZX1cIj5cclxuICAgIDwvZGl2PmApO1xyXG4gICAgaWYgKG9uQ29udGV4dE1lbnUpIGVtb3RlQ29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoXCJjb250ZXh0bWVudVwiLCBvbkNvbnRleHRNZW51KTtcclxuICAgIGVtb3RlQ29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBvbkNsaWNrKTtcclxuICAgIHJldHVybiBlbW90ZUNvbnRhaW5lcjtcclxufTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IG5ldyBjbGFzcyBFbW90ZU1lbnUgZXh0ZW5kcyBCdWlsdGluIHtcclxuICAgIGdldCBuYW1lKCkge3JldHVybiBcIkVtb3RlTWVudVwiO31cclxuICAgIGdldCBjb2xsZWN0aW9uKCkge3JldHVybiBcImVtb3Rlc1wiO31cclxuICAgIGdldCBjYXRlZ29yeSgpIHtyZXR1cm4gXCJnZW5lcmFsXCI7fVxyXG4gICAgZ2V0IGlkKCkge3JldHVybiBcImVtb3RlTWVudVwiO31cclxuICAgIGdldCBoaWRlRW1vamlzSUQoKSB7cmV0dXJuIFwiaGlkZUVtb2ppTWVudVwiO31cclxuICAgIGdldCBoaWRlRW1vamlzKCkge3JldHVybiB0aGlzLmdldCh0aGlzLmhpZGVFbW9qaXNJRCk7fVxyXG5cclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgdGhpcy5sYXN0VGFiID0gXCJiZC1xZW0tZW1vamlzXCI7XHJcblxyXG4gICAgICAgIHRoaXMucW1lSGVhZGVyID0gRE9NLmNyZWF0ZUVsZW1lbnQoaGVhZGVySFRNTCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBidXR0b24gb2YgdGhpcy5xbWVIZWFkZXIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJidXR0b25cIikpIGJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgdGhpcy5zd2l0Y2hNZW51LmJpbmQodGhpcykpO1xyXG5cclxuICAgICAgICB0aGlzLnRlQ29udGFpbmVyID0gRE9NLmNyZWF0ZUVsZW1lbnQodHdpdGNoRW1vdGVIVE1MKTtcclxuICAgICAgICB0aGlzLnRlQ29udGFpbmVySW5uZXIgPSB0aGlzLnRlQ29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoXCIuZW1vdGUtbWVudS1pbm5lclwiKTtcclxuXHJcbiAgICAgICAgdGhpcy5mYUNvbnRhaW5lciA9IERPTS5jcmVhdGVFbGVtZW50KGZhdm9yaXRlc0hUTUwpO1xyXG4gICAgICAgIHRoaXMuZmFDb250YWluZXJJbm5lciA9IHRoaXMuZmFDb250YWluZXIucXVlcnlTZWxlY3RvcihcIi5lbW90ZS1tZW51LWlubmVyXCIpO1xyXG5cclxuICAgICAgICB0aGlzLm9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIobXV0YXRpb25zID0+IHtmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9ucykgdGhpcy5vYnNlcnZlKG11dGF0aW9uKTt9KTtcclxuICAgICAgICB0aGlzLmVuYWJsZUhpZGVFbW9qaXMgPSB0aGlzLmVuYWJsZUhpZGVFbW9qaXMuYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLmRpc2FibGVIaWRlRW1vamlzID0gdGhpcy5kaXNhYmxlSGlkZUVtb2ppcy5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlVHdpdGNoRW1vdGVzID0gdGhpcy51cGRhdGVUd2l0Y2hFbW90ZXMuYmluZCh0aGlzKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBlbmFibGVkKCkge1xyXG4gICAgICAgIC8vIFRlbXBvcmFyeSBtZWFzdXJlLCBzbyBub3QgdXNpbmcgU3RyaW5ncy90cmFuc2xhdGlvblxyXG4gICAgICAgIHJldHVybiBNb2RhbHMuYWxlcnQoXCJFbW90ZSBNZW51IEJyb2tlblwiLCBcIkVtb3RlIE1lbnUgaXMgY3VycmVudGx5IGJyb2tlbiwgaXQgaXMgcmVjb21tZW5kZWQgdG8gZGlzYWJsZSB0aGlzIHVudGlsIGl0IGlzIGZpeGVkLlwiKTtcclxuICAgICAgICAvLyB0aGlzLmxvZyhcIlN0YXJ0aW5nIHRvIG9ic2VydmVcIik7XHJcbiAgICAgICAgLy8gdGhpcy5vYnNlcnZlci5vYnNlcnZlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiYXBwLW1vdW50XCIpLCB7XHJcbiAgICAgICAgLy8gICAgIGNoaWxkTGlzdDogdHJ1ZSxcclxuICAgICAgICAvLyAgICAgc3VidHJlZTogdHJ1ZVxyXG4gICAgICAgIC8vIH0pO1xyXG4gICAgICAgIC8vIHRoaXMuaGlkZUVtb2ppQ2FuY2VsID0gdGhpcy5yZWdpc3RlclNldHRpbmcodGhpcy5oaWRlRW1vamlzSUQsIHRoaXMuZW5hYmxlSGlkZUVtb2ppcywgdGhpcy5kaXNhYmxlSGlkZUVtb2ppcyk7XHJcbiAgICAgICAgLy8gaWYgKHRoaXMuaGlkZUVtb2ppcykgdGhpcy5lbmFibGVIaWRlRW1vamlzKCk7XHJcbiAgICAgICAgLy8gaWYgKEVtb3RlTW9kdWxlLmVtb3Rlc0xvYWRlZCkgdGhpcy51cGRhdGVUd2l0Y2hFbW90ZXMoKTtcclxuICAgICAgICAvLyB0aGlzLnVwZGF0ZUZhdm9yaXRlcygpO1xyXG4gICAgICAgIC8vIEV2ZW50cy5vbihcImVtb3Rlcy1sb2FkZWRcIiwgdGhpcy51cGRhdGVUd2l0Y2hFbW90ZXMpO1xyXG4gICAgfVxyXG5cclxuICAgIGRpc2FibGVkKCkge1xyXG4gICAgICAgIEV2ZW50cy5vZmYoXCJlbW90ZXMtbG9hZGVkXCIsIHRoaXMudXBkYXRlVHdpdGNoRW1vdGVzKTtcclxuICAgICAgICB0aGlzLm9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcclxuICAgICAgICB0aGlzLmRpc2FibGVIaWRlRW1vamlzKCk7XHJcbiAgICAgICAgaWYgKHRoaXMuaGlkZUVtb2ppQ2FuY2VsKSB0aGlzLmhpZGVFbW9qaUNhbmNlbCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGVuYWJsZUhpZGVFbW9qaXMoKSB7XHJcbiAgICAgICAgY29uc3QgcGlja2VyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIi5lbW9qaVBpY2tlci0zbTFTLWpcIik7XHJcbiAgICAgICAgaWYgKHBpY2tlcikgcGlja2VyLmNsYXNzTGlzdC5hZGQoXCJiZC1xbWUtaGlkZGVuXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIGRpc2FibGVIaWRlRW1vamlzKCkge1xyXG4gICAgICAgIGNvbnN0IHBpY2tlciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIuZW1vamlQaWNrZXItM20xUy1qXCIpO1xyXG4gICAgICAgIGlmIChwaWNrZXIpIHBpY2tlci5jbGFzc0xpc3QucmVtb3ZlKFwiYmQtcW1lLWhpZGRlblwiKTtcclxuICAgIH1cclxuXHJcbiAgICBpbnNlcnRFbW90ZShlbW90ZSkge1xyXG4gICAgICAgIGNvbnN0IHRhID0gVXRpbGl0aWVzLmdldFRleHRBcmVhKCk7XHJcbiAgICAgICAgVXRpbGl0aWVzLmluc2VydFRleHQodGFbMF0sIHRhLnZhbCgpLnNsaWNlKC0xKSA9PSBcIiBcIiA/IHRhLnZhbCgpICsgZW1vdGUgOiB0YS52YWwoKSArIFwiIFwiICsgZW1vdGUpO1xyXG4gICAgfVxyXG5cclxuICAgIGZhdkNvbnRleHQoZSkge1xyXG4gICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgY29uc3QgZW0gPSBlLnRhcmdldC5jbG9zZXN0KFwiLmVtb3RlLWNvbnRhaW5lclwiKS5jaGlsZHJlblswXTtcclxuICAgICAgICBjb25zdCBtZW51ID0gJChgPGRpdiBpZD1cInJlbW92ZW1lbnVcIiBjbGFzcz1cImJkLWNvbnRleHQtbWVudSBjb250ZXh0LW1lbnUgdGhlbWUtZGFya1wiPlJlbW92ZTwvZGl2PmApO1xyXG4gICAgICAgIG1lbnUuY3NzKHtcclxuICAgICAgICAgICAgdG9wOiBlLnBhZ2VZIC0gJChcIiNiZC1xZW0tZmF2b3VyaXRlLWNvbnRhaW5lclwiKS5vZmZzZXQoKS50b3AsXHJcbiAgICAgICAgICAgIGxlZnQ6IGUucGFnZVggLSAkKFwiI2JkLXFlbS1mYXZvdXJpdGUtY29udGFpbmVyXCIpLm9mZnNldCgpLmxlZnRcclxuICAgICAgICB9KTtcclxuICAgICAgICAkKGVtKS5wYXJlbnQoKS5hcHBlbmQobWVudSk7XHJcbiAgICAgICAgbWVudS5vbihcImNsaWNrXCIsIChldmVudCkgPT4ge1xyXG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgJChlbSkucmVtb3ZlKCk7XHJcbiAgICAgICAgICAgIEVtb3RlTW9kdWxlLnJlbW92ZUZhdm9yaXRlKCQoZW0pLmF0dHIoXCJ0aXRsZVwiKSk7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlRmF2b3JpdGVzKCk7XHJcbiAgICAgICAgICAgICQoZG9jdW1lbnQpLm9mZihcIm1vdXNlZG93bi5lbW90ZW1lbnVcIik7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgJChkb2N1bWVudCkub24oXCJtb3VzZWRvd24uZW1vdGVtZW51XCIsIGZ1bmN0aW9uKGV2ZW50KSB7XHJcbiAgICAgICAgICAgIGlmIChldmVudC50YXJnZXQuaWQgPT0gXCJyZW1vdmVtZW51XCIpIHJldHVybjtcclxuICAgICAgICAgICAgJChcIiNyZW1vdmVtZW51XCIpLnJlbW92ZSgpO1xyXG4gICAgICAgICAgICAkKGRvY3VtZW50KS5vZmYoXCJtb3VzZWRvd24uZW1vdGVtZW51XCIpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHN3aXRjaE1lbnUoZSkge1xyXG4gICAgICAgIGxldCBpZCA9IHR5cGVvZihlKSA9PSBcInN0cmluZ1wiID8gZSA6IGUudGFyZ2V0LmlkO1xyXG4gICAgICAgIGlmIChpZCA9PSBcImJkLXFlbS1lbW9qaXNcIiAmJiB0aGlzLmhpZGVFbW9qaXMpIGlkID0gXCJiZC1xZW0tZmF2b3VyaXRlXCI7XHJcbiAgICAgICAgY29uc3QgdHdpdGNoID0gJChcIiNiZC1xZW0tdHdpdGNoXCIpO1xyXG4gICAgICAgIGNvbnN0IGZhdiA9ICQoXCIjYmQtcWVtLWZhdm91cml0ZVwiKTtcclxuICAgICAgICBjb25zdCBlbW9qaXMgPSAkKFwiI2JkLXFlbS1lbW9qaXNcIik7XHJcbiAgICAgICAgdHdpdGNoLnJlbW92ZUNsYXNzKFwiYWN0aXZlXCIpO1xyXG4gICAgICAgIGZhdi5yZW1vdmVDbGFzcyhcImFjdGl2ZVwiKTtcclxuICAgICAgICBlbW9qaXMucmVtb3ZlQ2xhc3MoXCJhY3RpdmVcIik7XHJcblxyXG4gICAgICAgICQoXCIuZW1vamlQaWNrZXItM20xUy1qXCIpLmhpZGUoKTtcclxuICAgICAgICAkKFwiI2JkLXFlbS1mYXZvdXJpdGUtY29udGFpbmVyXCIpLmhpZGUoKTtcclxuICAgICAgICAkKFwiI2JkLXFlbS10d2l0Y2gtY29udGFpbmVyXCIpLmhpZGUoKTtcclxuXHJcbiAgICAgICAgc3dpdGNoIChpZCkge1xyXG4gICAgICAgICAgICBjYXNlIFwiYmQtcWVtLXR3aXRjaFwiOlxyXG4gICAgICAgICAgICAgICAgdHdpdGNoLmFkZENsYXNzKFwiYWN0aXZlXCIpO1xyXG4gICAgICAgICAgICAgICAgJChcIiNiZC1xZW0tdHdpdGNoLWNvbnRhaW5lclwiKS5zaG93KCk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBcImJkLXFlbS1mYXZvdXJpdGVcIjpcclxuICAgICAgICAgICAgICAgIGZhdi5hZGRDbGFzcyhcImFjdGl2ZVwiKTtcclxuICAgICAgICAgICAgICAgICQoXCIjYmQtcWVtLWZhdm91cml0ZS1jb250YWluZXJcIikuc2hvdygpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgXCJiZC1xZW0tZW1vamlzXCI6XHJcbiAgICAgICAgICAgICAgICBlbW9qaXMuYWRkQ2xhc3MoXCJhY3RpdmVcIik7XHJcbiAgICAgICAgICAgICAgICAkKFwiLmVtb2ppUGlja2VyLTNtMVMtalwiKS5zaG93KCk7XHJcbiAgICAgICAgICAgICAgICAkKFwiLmVtb2ppUGlja2VyLTNtMVMtaiBpbnB1dFwiKS5mb2N1cygpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpZCkgdGhpcy5sYXN0VGFiID0gaWQ7XHJcbiAgICB9XHJcblxyXG4gICAgb2JzZXJ2ZShtdXRhdGlvbikge1xyXG4gICAgICAgIGlmICghbXV0YXRpb24uYWRkZWROb2Rlcy5sZW5ndGggfHwgIShtdXRhdGlvbi5hZGRlZE5vZGVzWzBdIGluc3RhbmNlb2YgRWxlbWVudCkpIHJldHVybjtcclxuICAgICAgICBjb25zdCBub2RlID0gbXV0YXRpb24uYWRkZWROb2Rlc1swXTtcclxuICAgICAgICAvLyBpZiAoIW5vZGUuY2xhc3NMaXN0LmNvbnRhaW5zKFwicG9wb3V0LTJpV0FjLVwiKSB8fCBub2RlLmNsYXNzTGlzdC5jb250YWlucyhcInBvcG91dExlZnQtMzBXbXJEXCIpIHx8ICFub2RlLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJlbW9qaVBpY2tlci0zbTFTLWpcIikubGVuZ3RoKSByZXR1cm47XHJcbiAgICAgICAgaWYgKCFub2RlLmNsYXNzTGlzdC5jb250YWlucyhcImxheWVyLXY5SHlZY1wiKSB8fCAhbm9kZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwiZW1vamlQaWNrZXItM20xUy1qXCIpLmxlbmd0aCB8fCBub2RlLnF1ZXJ5U2VsZWN0b3IoXCIuZW1vamlQaWNrZXItM20xUy1qXCIpLnBhcmVudEVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKFwiYW5pbWF0b3JMZWZ0LTFFUXhVMFwiKSkgcmV0dXJuO1xyXG5cclxuICAgICAgICBjb25zdCBlID0gJChub2RlKTtcclxuICAgICAgICBpZiAodGhpcy5oaWRlRW1vamlzKSBlLmFkZENsYXNzKFwiYmQtcW1lLWhpZGRlblwiKTtcclxuICAgICAgICBlbHNlIGUucmVtb3ZlQ2xhc3MoXCJiZC1xbWUtaGlkZGVuXCIpO1xyXG5cclxuICAgICAgICBlLnByZXBlbmQodGhpcy5xbWVIZWFkZXIpO1xyXG4gICAgICAgIGUuYXBwZW5kKHRoaXMudGVDb250YWluZXIpO1xyXG4gICAgICAgIGUuYXBwZW5kKHRoaXMuZmFDb250YWluZXIpO1xyXG5cclxuICAgICAgICB0aGlzLnN3aXRjaE1lbnUodGhpcy5sYXN0VGFiKTtcclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGVUd2l0Y2hFbW90ZXMoKSB7XHJcbiAgICAgICAgd2hpbGUgKHRoaXMudGVDb250YWluZXJJbm5lci5maXJzdENoaWxkKSB0aGlzLnRlQ29udGFpbmVySW5uZXIuZmlyc3RDaGlsZC5yZW1vdmUoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGVtb3RlIGluIEVtb3RlTW9kdWxlLmdldENhdGVnb3J5KFwiVHdpdGNoR2xvYmFsXCIpKSB7XHJcbiAgICAgICAgICAgIGlmICghRW1vdGVNb2R1bGUuZ2V0Q2F0ZWdvcnkoXCJUd2l0Y2hHbG9iYWxcIikuaGFzT3duUHJvcGVydHkoZW1vdGUpKSBjb250aW51ZTtcclxuICAgICAgICAgICAgY29uc3QgdXJsID0gRW1vdGVNb2R1bGUuZ2V0VXJsKFwiVHdpdGNoR2xvYmFsXCIsIGVtb3RlKTtcclxuICAgICAgICAgICAgY29uc3QgZW1vdGVFbGVtZW50ID0gbWFrZUVtb3RlKGVtb3RlLCB1cmwsIHtvbkNsaWNrOiB0aGlzLmluc2VydEVtb3RlLmJpbmQodGhpcywgZW1vdGUpfSk7XHJcbiAgICAgICAgICAgIHRoaXMudGVDb250YWluZXJJbm5lci5hcHBlbmQoZW1vdGVFbGVtZW50KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlRmF2b3JpdGVzKCkge1xyXG4gICAgICAgIHdoaWxlICh0aGlzLmZhQ29udGFpbmVySW5uZXIuZmlyc3RDaGlsZCkgdGhpcy5mYUNvbnRhaW5lcklubmVyLmZpcnN0Q2hpbGQucmVtb3ZlKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBlbW90ZSBpbiBFbW90ZU1vZHVsZS5mYXZvcml0ZXMpIHtcclxuICAgICAgICAgICAgY29uc3QgdXJsID0gRW1vdGVNb2R1bGUuZmF2b3JpdGVzW2Vtb3RlXTtcclxuICAgICAgICAgICAgY29uc3QgZW1vdGVFbGVtZW50ID0gbWFrZUVtb3RlKGVtb3RlLCB1cmwsIHtvbkNsaWNrOiB0aGlzLmluc2VydEVtb3RlLmJpbmQodGhpcywgZW1vdGUpLCBvbkNvbnRleHRNZW51OiB0aGlzLmZhdkNvbnRleHQuYmluZCh0aGlzKX0pO1xyXG4gICAgICAgICAgICB0aGlzLmZhQ29udGFpbmVySW5uZXIuYXBwZW5kKGVtb3RlRWxlbWVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEVtb3RlTW9kdWxlLnNhdmVGYXZvcml0ZXMoKTtcclxuICAgIH1cclxuXHJcbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/builtins/emotes/emotemenu.js\n"); /***/ }), @@ -215,7 +214,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _str /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _structs_builtin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../structs/builtin */ \"./src/structs/builtin.js\");\n/* harmony import */ var data__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! data */ \"./src/data/data.js\");\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _ui_emote__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../ui/emote */ \"./src/ui/emote.js\");\n/* harmony import */ var _ui_toasts__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../ui/toasts */ \"./src/ui/toasts.js\");\n/* harmony import */ var _structs_string__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../structs/string */ \"./src/structs/string.js\");\n\n\n\n\n\n\n\nconst request = __webpack_require__(/*! request */ \"request\");\n\nconst EmoteURLs = {\n TwitchGlobal: new _structs_string__WEBPACK_IMPORTED_MODULE_5__[\"default\"](`https://static-cdn.jtvnw.net/emoticons/v1/{{id}}/1.0`),\n TwitchSubscriber: new _structs_string__WEBPACK_IMPORTED_MODULE_5__[\"default\"](`https://static-cdn.jtvnw.net/emoticons/v1/{{id}}/1.0`),\n FrankerFaceZ: new _structs_string__WEBPACK_IMPORTED_MODULE_5__[\"default\"](`https://cdn.frankerfacez.com/emoticon/{{id}}/1`),\n BTTV: new _structs_string__WEBPACK_IMPORTED_MODULE_5__[\"default\"](`https://cdn.betterttv.net/emote/{{id}}/1x`)\n};\nconst Emotes = {\n TwitchGlobal: {},\n TwitchSubscriber: {},\n BTTV: {},\n FrankerFaceZ: {}\n};\nconst blacklist = [];\nconst overrides = [\"twitch\", \"subscriber\", \"bttv\", \"ffz\"];\nconst modifiers = [\"flip\", \"spin\", \"pulse\", \"spin2\", \"spin3\", \"1spin\", \"2spin\", \"3spin\", \"tr\", \"bl\", \"br\", \"shake\", \"shake2\", \"shake3\", \"flap\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class EmoteModule extends _structs_builtin__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n get name() {\n return \"Emotes\";\n }\n\n get collection() {\n return \"settings\";\n }\n\n get category() {\n return \"general\";\n }\n\n get id() {\n return \"emotes\";\n }\n\n get categories() {\n return Object.keys(Emotes).filter(k => this.isCategoryEnabled(k));\n }\n\n get shouldDownload() {\n return modules__WEBPACK_IMPORTED_MODULE_2__[\"Settings\"].get(\"emotes\", this.category, \"download\");\n }\n\n isCategoryEnabled(id) {\n return super.get(\"emotes\", \"categories\", id.toLowerCase());\n }\n\n get(id) {\n return super.get(\"emotes\", \"general\", id);\n }\n\n get MessageComponent() {\n return modules__WEBPACK_IMPORTED_MODULE_2__[\"WebpackModules\"].find(m => m.default && m.default.displayName && m.default.displayName == \"Message\");\n }\n\n get Emotes() {\n return Emotes;\n }\n\n get TwitchGlobal() {\n return Emotes.TwitchGlobal;\n }\n\n get TwitchSubscriber() {\n return Emotes.TwitchSubscriber;\n }\n\n get BTTV() {\n return Emotes.BTTV;\n }\n\n get FrankerFaceZ() {\n return Emotes.FrankerFaceZ;\n }\n\n get blacklist() {\n return blacklist;\n }\n\n get favorites() {\n return this.favoriteEmotes;\n }\n\n getUrl(category, name) {\n return EmoteURLs[category].format({\n id: Emotes[category][name]\n });\n }\n\n getCategory(category) {\n return Emotes[category];\n }\n\n getRemoteFile(category) {\n return modules__WEBPACK_IMPORTED_MODULE_2__[\"Utilities\"].repoUrl(`assets/emotes/${category.toLowerCase()}.json`);\n }\n\n initialize() {\n super.initialize();\n const storedFavorites = modules__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].getBDData(\"favoriteEmotes\");\n this.favoriteEmotes = storedFavorites || {};\n this.addFavorite = this.addFavorite.bind(this);\n this.removeFavorite = this.removeFavorite.bind(this);\n this.onCategoryToggle = this.onCategoryToggle.bind(this);\n this.resetEmotes = this.resetEmotes.bind(this);\n }\n\n async enabled() {\n modules__WEBPACK_IMPORTED_MODULE_2__[\"Settings\"].registerCollection(\"emotes\", \"Emotes\", data__WEBPACK_IMPORTED_MODULE_1__[\"EmoteConfig\"], {\n title: modules__WEBPACK_IMPORTED_MODULE_2__[\"Strings\"].Emotes.clearEmotes,\n onClick: this.resetEmotes\n });\n await this.getBlacklist();\n await this.loadEmoteData();\n modules__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].on(\"emotes-favorite-added\", this.addFavorite);\n modules__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].on(\"emotes-favorite-removed\", this.removeFavorite);\n modules__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].on(\"setting-updated\", this.onCategoryToggle);\n this.patchMessageContent();\n }\n\n disabled() {\n modules__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].off(\"setting-updated\", this.onCategoryToggle);\n modules__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].off(\"emotes-favorite-added\", this.addFavorite);\n modules__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].off(\"emotes-favorite-removed\", this.removeFavorite);\n modules__WEBPACK_IMPORTED_MODULE_2__[\"Settings\"].removeCollection(\"emotes\");\n this.emptyEmotes();\n if (!this.cancelEmoteRender) return;\n this.cancelEmoteRender();\n delete this.cancelEmoteRender;\n }\n\n onCategoryToggle(collection, cat, category, enabled) {\n if (collection != \"emotes\" || cat != \"categories\") return;\n if (enabled) return this.loadEmoteData(category);\n return this.unloadEmoteData(category);\n }\n\n addFavorite(name, url) {\n if (!this.favoriteEmotes.hasOwnProperty(name)) this.favoriteEmotes[name] = url;\n this.saveFavorites();\n }\n\n removeFavorite(name) {\n if (!this.favoriteEmotes.hasOwnProperty(name)) return;\n delete this.favoriteEmotes[name];\n this.saveFavorites();\n }\n\n isFavorite(name) {\n return this.favoriteEmotes.hasOwnProperty(name);\n }\n\n saveFavorites() {\n modules__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].setBDData(\"favoriteEmotes\", this.favoriteEmotes);\n }\n\n emptyEmotes() {\n for (const cat in Emotes) Object.assign(Emotes, {\n [cat]: {}\n });\n }\n\n patchMessageContent() {\n if (this.cancelEmoteRender) return;\n this.cancelEmoteRender = this.before(this.MessageComponent, \"default\", (thisObj, args) => {\n const nodes = args[0].childrenMessageContent.props.content;\n if (!nodes || !nodes.length) return;\n\n for (let n = 0; n < nodes.length; n++) {\n const node = nodes[n];\n if (typeof node !== \"string\") continue;\n const words = node.split(/([^\\s]+)([\\s]|$)/g);\n\n for (let c = 0, clen = this.categories.length; c < clen; c++) {\n for (let w = 0, wlen = words.length; w < wlen; w++) {\n const emote = words[w];\n const emoteSplit = emote.split(\":\");\n const emoteName = emoteSplit[0];\n let emoteModifier = emoteSplit[1] ? emoteSplit[1] : \"\";\n let emoteOverride = emoteModifier.slice(0);\n if (emoteName.length < 4 || blacklist.includes(emoteName)) continue;\n if (!modifiers.includes(emoteModifier) || !modules__WEBPACK_IMPORTED_MODULE_2__[\"Settings\"].get(\"emotes\", \"general\", \"modifiers\")) emoteModifier = \"\";\n if (!overrides.includes(emoteOverride)) emoteOverride = \"\";else emoteModifier = emoteOverride;\n let current = this.categories[c];\n\n if (emoteOverride === \"twitch\") {\n if (Emotes.TwitchGlobal[emoteName]) current = \"TwitchGlobal\";else if (Emotes.TwitchSubscriber[emoteName]) current = \"TwitchSubscriber\";\n } else if (emoteOverride === \"subscriber\") {\n if (Emotes.TwitchSubscriber[emoteName]) current = \"TwitchSubscriber\";\n } else if (emoteOverride === \"bttv\") {\n if (Emotes.BTTV[emoteName]) current = \"BTTV\";\n } else if (emoteOverride === \"ffz\") {\n if (Emotes.FrankerFaceZ[emoteName]) current = \"FrankerFaceZ\";\n }\n\n if (!Emotes[current][emoteName]) continue;\n const results = nodes[n].match(new RegExp(`([\\\\s]|^)${modules__WEBPACK_IMPORTED_MODULE_2__[\"Utilities\"].escape(emoteModifier ? emoteName + \":\" + emoteModifier : emoteName)}([\\\\s]|$)`));\n if (!results) continue;\n const pre = nodes[n].substring(0, results.index + results[1].length);\n const post = nodes[n].substring(results.index + results[0].length - results[2].length);\n nodes[n] = pre;\n const emoteComponent = modules__WEBPACK_IMPORTED_MODULE_2__[\"DiscordModules\"].React.createElement(_ui_emote__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n name: emoteName,\n url: EmoteURLs[current].format({\n id: Emotes[current][emoteName]\n }),\n modifier: emoteModifier,\n isFavorite: this.isFavorite(emoteName)\n });\n nodes.splice(n + 1, 0, post);\n nodes.splice(n + 1, 0, emoteComponent);\n }\n }\n }\n\n const onlyEmotes = nodes.every(r => {\n if (typeof r == \"string\" && r.replace(/\\s*/, \"\") == \"\") return true;else if (r.type && r.type.name == \"BDEmote\") return true;else if (r.props && r.props.children && r.props.children.props && r.props.children.props.emojiName) return true;\n return false;\n });\n if (!onlyEmotes) return;\n\n for (const node of nodes) {\n if (typeof node != \"object\") continue;\n if (node.type.name == \"BDEmote\") node.props.jumboable = true;else if (node.props && node.props.children && node.props.children.props && node.props.children.props.emojiName) node.props.children.props.jumboable = true;\n }\n });\n }\n\n async getBlacklist() {\n try {\n const category = \"Blacklist\";\n const exists = modules__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].emotesExist(category);\n const valid = await this.isCacheValid(category);\n const useCache = valid || !valid && exists && !this.shouldDownload;\n const list = useCache ? modules__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].getEmoteData(category) : await this.downloadEmotes(category);\n blacklist.push(...list);\n } catch (err) {// TODO: Log this\n }\n }\n\n isCacheValid(category) {\n return new Promise(resolve => {\n const etag = modules__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].getCacheHash(\"emotes\", category);\n if (!etag) return resolve(false);\n request.head({\n url: this.getRemoteFile(category),\n headers: {\n \"If-None-Match\": etag\n }\n }, (err, resp) => {\n resolve(resp.statusCode == 304);\n });\n });\n }\n\n async loadEmoteData(categories) {\n if (!categories) categories = this.categories;\n if (!Array.isArray(categories)) categories = [categories];\n const all = Object.keys(Emotes);\n categories = categories.map(k => all.find(c => c.toLowerCase() == k.toLowerCase()));\n _ui_toasts__WEBPACK_IMPORTED_MODULE_4__[\"default\"].show(modules__WEBPACK_IMPORTED_MODULE_2__[\"Strings\"].Emotes.loading, {\n type: \"info\"\n });\n this.emotesLoaded = false;\n\n for (const category of categories) {\n const exists = modules__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].emotesExist(category);\n const valid = await this.isCacheValid(category);\n const useCache = valid || !valid && exists && !this.shouldDownload;\n let data = null;\n\n if (useCache) {\n this.log(`Loading ${category} emotes from local cache.`);\n const cachedData = modules__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].getEmoteData(category);\n const hasData = Object.keys(cachedData).length > 0;\n if (hasData) data = cachedData;\n }\n\n if (!data) data = await this.downloadEmotes(category);\n Object.assign(Emotes[category], data);\n await new Promise(r => setTimeout(r, 1000));\n }\n\n this.emotesLoaded = true;\n modules__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].dispatch(\"emotes-loaded\");\n _ui_toasts__WEBPACK_IMPORTED_MODULE_4__[\"default\"].show(modules__WEBPACK_IMPORTED_MODULE_2__[\"Strings\"].Emotes.loaded, {\n type: \"success\"\n });\n }\n\n unloadEmoteData(categories) {\n if (!categories) categories = this.categories;\n if (!Array.isArray(categories)) categories = [categories];\n const all = Object.keys(Emotes);\n categories = categories.map(k => all.find(c => c.toLowerCase() == k.toLowerCase()));\n\n for (const category of categories) {\n delete Emotes[category];\n Emotes[category] = {};\n }\n }\n\n downloadEmotes(category) {\n const url = this.getRemoteFile(category);\n this.log(`Downloading ${category} from ${url}`);\n const options = {\n url: url,\n timeout: 10000,\n json: true\n };\n return new Promise(resolve => {\n request.get(options, (error, response, parsedData) => {\n if (error || response.statusCode != 200) {\n this.stacktrace(`Could not download ${category} emotes.`, error);\n return resolve({});\n }\n\n for (const emote in parsedData) {\n if (emote.length < 4 || blacklist.includes(emote) || !parsedData[emote]) {\n delete parsedData[emote];\n continue;\n } // parsedData[emote] = EmoteURLs[category].format({id: parsedData[emote]});\n\n }\n\n modules__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].saveEmoteData(category, parsedData);\n modules__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].setCacheHash(\"emotes\", category, response.headers.etag);\n resolve(parsedData);\n this.log(`Downloaded ${category}`);\n });\n });\n }\n\n resetEmotes() {\n const categories = Object.keys(Emotes);\n this.unloadEmoteData(categories);\n\n for (const cat of categories) modules__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].invalidateCache(\"emotes\", cat);\n\n this.loadEmoteData();\n }\n\n}()); // (async () => {\n// const emoteData = await new Promise(resolve => {\n// const req = require(\"request\");\n// req.get({url: \"https://twitchemotes.com/api_cache/v3/global.json\", json: true}, (err, resp, parsedData) => {\n// for (const emote in parsedData) {\n// if (emote.length < 4 || window.bemotes.includes(emote)) {\n// delete parsedData[emote];\n// continue;\n// }\n// parsedData[emote] = parsedData[emote].id;\n// }\n// resolve(parsedData);\n// });\n// });\n// const fs = require(\"fs\");\n// fs.writeFileSync(\"Z:\\\\Programming\\\\BetterDiscordStuff\\\\BetterDiscordApp\\\\data\\\\emotes\\\\global.json\", JSON.stringify(emoteData));\n// return emoteData;\n// })();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL2J1aWx0aW5zL2Vtb3Rlcy9lbW90ZXMuanM/YzRjYyJdLCJuYW1lcyI6WyJyZXF1ZXN0IiwicmVxdWlyZSIsIkVtb3RlVVJMcyIsIlR3aXRjaEdsb2JhbCIsIkZvcm1hdHRhYmxlU3RyaW5nIiwiVHdpdGNoU3Vic2NyaWJlciIsIkZyYW5rZXJGYWNlWiIsIkJUVFYiLCJFbW90ZXMiLCJibGFja2xpc3QiLCJvdmVycmlkZXMiLCJtb2RpZmllcnMiLCJFbW90ZU1vZHVsZSIsIkJ1aWx0aW4iLCJuYW1lIiwiY29sbGVjdGlvbiIsImNhdGVnb3J5IiwiaWQiLCJjYXRlZ29yaWVzIiwiT2JqZWN0Iiwia2V5cyIsImZpbHRlciIsImsiLCJpc0NhdGVnb3J5RW5hYmxlZCIsInNob3VsZERvd25sb2FkIiwiU2V0dGluZ3MiLCJnZXQiLCJ0b0xvd2VyQ2FzZSIsIk1lc3NhZ2VDb21wb25lbnQiLCJXZWJwYWNrTW9kdWxlcyIsImZpbmQiLCJtIiwiZGVmYXVsdCIsImRpc3BsYXlOYW1lIiwiZmF2b3JpdGVzIiwiZmF2b3JpdGVFbW90ZXMiLCJnZXRVcmwiLCJmb3JtYXQiLCJnZXRDYXRlZ29yeSIsImdldFJlbW90ZUZpbGUiLCJVdGlsaXRpZXMiLCJyZXBvVXJsIiwiaW5pdGlhbGl6ZSIsInN0b3JlZEZhdm9yaXRlcyIsIkRhdGFTdG9yZSIsImdldEJERGF0YSIsImFkZEZhdm9yaXRlIiwiYmluZCIsInJlbW92ZUZhdm9yaXRlIiwib25DYXRlZ29yeVRvZ2dsZSIsInJlc2V0RW1vdGVzIiwiZW5hYmxlZCIsInJlZ2lzdGVyQ29sbGVjdGlvbiIsIkVtb3RlQ29uZmlnIiwidGl0bGUiLCJTdHJpbmdzIiwiY2xlYXJFbW90ZXMiLCJvbkNsaWNrIiwiZ2V0QmxhY2tsaXN0IiwibG9hZEVtb3RlRGF0YSIsIkV2ZW50cyIsIm9uIiwicGF0Y2hNZXNzYWdlQ29udGVudCIsImRpc2FibGVkIiwib2ZmIiwicmVtb3ZlQ29sbGVjdGlvbiIsImVtcHR5RW1vdGVzIiwiY2FuY2VsRW1vdGVSZW5kZXIiLCJjYXQiLCJ1bmxvYWRFbW90ZURhdGEiLCJ1cmwiLCJoYXNPd25Qcm9wZXJ0eSIsInNhdmVGYXZvcml0ZXMiLCJpc0Zhdm9yaXRlIiwic2V0QkREYXRhIiwiYXNzaWduIiwiYmVmb3JlIiwidGhpc09iaiIsImFyZ3MiLCJub2RlcyIsImNoaWxkcmVuTWVzc2FnZUNvbnRlbnQiLCJwcm9wcyIsImNvbnRlbnQiLCJsZW5ndGgiLCJuIiwibm9kZSIsIndvcmRzIiwic3BsaXQiLCJjIiwiY2xlbiIsInciLCJ3bGVuIiwiZW1vdGUiLCJlbW90ZVNwbGl0IiwiZW1vdGVOYW1lIiwiZW1vdGVNb2RpZmllciIsImVtb3RlT3ZlcnJpZGUiLCJzbGljZSIsImluY2x1ZGVzIiwiY3VycmVudCIsInJlc3VsdHMiLCJtYXRjaCIsIlJlZ0V4cCIsImVzY2FwZSIsInByZSIsInN1YnN0cmluZyIsImluZGV4IiwicG9zdCIsImVtb3RlQ29tcG9uZW50IiwiRGlzY29yZE1vZHVsZXMiLCJSZWFjdCIsImNyZWF0ZUVsZW1lbnQiLCJCREVtb3RlIiwibW9kaWZpZXIiLCJzcGxpY2UiLCJvbmx5RW1vdGVzIiwiZXZlcnkiLCJyIiwicmVwbGFjZSIsInR5cGUiLCJjaGlsZHJlbiIsImVtb2ppTmFtZSIsImp1bWJvYWJsZSIsImV4aXN0cyIsImVtb3Rlc0V4aXN0IiwidmFsaWQiLCJpc0NhY2hlVmFsaWQiLCJ1c2VDYWNoZSIsImxpc3QiLCJnZXRFbW90ZURhdGEiLCJkb3dubG9hZEVtb3RlcyIsInB1c2giLCJlcnIiLCJQcm9taXNlIiwicmVzb2x2ZSIsImV0YWciLCJnZXRDYWNoZUhhc2giLCJoZWFkIiwiaGVhZGVycyIsInJlc3AiLCJzdGF0dXNDb2RlIiwiQXJyYXkiLCJpc0FycmF5IiwiYWxsIiwibWFwIiwiVG9hc3RzIiwic2hvdyIsImxvYWRpbmciLCJlbW90ZXNMb2FkZWQiLCJkYXRhIiwibG9nIiwiY2FjaGVkRGF0YSIsImhhc0RhdGEiLCJzZXRUaW1lb3V0IiwiZGlzcGF0Y2giLCJsb2FkZWQiLCJvcHRpb25zIiwidGltZW91dCIsImpzb24iLCJlcnJvciIsInJlc3BvbnNlIiwicGFyc2VkRGF0YSIsInN0YWNrdHJhY2UiLCJzYXZlRW1vdGVEYXRhIiwic2V0Q2FjaGVIYXNoIiwiaW52YWxpZGF0ZUNhY2hlIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFDQSxNQUFNQSxPQUFPLEdBQUdDLG1CQUFPLENBQUMsd0JBQUQsQ0FBdkI7O0FBRUEsTUFBTUMsU0FBUyxHQUFHO0FBQ2RDLGNBQVksRUFBRSxJQUFJQyx1REFBSixDQUF1QixzREFBdkIsQ0FEQTtBQUVkQyxrQkFBZ0IsRUFBRSxJQUFJRCx1REFBSixDQUF1QixzREFBdkIsQ0FGSjtBQUdkRSxjQUFZLEVBQUUsSUFBSUYsdURBQUosQ0FBdUIsZ0RBQXZCLENBSEE7QUFJZEcsTUFBSSxFQUFFLElBQUlILHVEQUFKLENBQXVCLDJDQUF2QjtBQUpRLENBQWxCO0FBT0EsTUFBTUksTUFBTSxHQUFHO0FBQ1hMLGNBQVksRUFBRSxFQURIO0FBRVhFLGtCQUFnQixFQUFFLEVBRlA7QUFHWEUsTUFBSSxFQUFFLEVBSEs7QUFJWEQsY0FBWSxFQUFFO0FBSkgsQ0FBZjtBQU9BLE1BQU1HLFNBQVMsR0FBRyxFQUFsQjtBQUNBLE1BQU1DLFNBQVMsR0FBRyxDQUFDLFFBQUQsRUFBVyxZQUFYLEVBQXlCLE1BQXpCLEVBQWlDLEtBQWpDLENBQWxCO0FBQ0EsTUFBTUMsU0FBUyxHQUFHLENBQUMsTUFBRCxFQUFTLE1BQVQsRUFBaUIsT0FBakIsRUFBMEIsT0FBMUIsRUFBbUMsT0FBbkMsRUFBNEMsT0FBNUMsRUFBcUQsT0FBckQsRUFBOEQsT0FBOUQsRUFBdUUsSUFBdkUsRUFBNkUsSUFBN0UsRUFBbUYsSUFBbkYsRUFBeUYsT0FBekYsRUFBa0csUUFBbEcsRUFBNEcsUUFBNUcsRUFBc0gsTUFBdEgsQ0FBbEI7QUFFZSxtRUFB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O0FBQ0E7QUFDQSIsImZpbGUiOiIuL3NyYy9idWlsdGlucy9lbW90ZXMvZW1vdGVzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJ1aWx0aW4gZnJvbSBcIi4uLy4uL3N0cnVjdHMvYnVpbHRpblwiO1xyXG5cclxuaW1wb3J0IHtFbW90ZUNvbmZpZ30gZnJvbSBcImRhdGFcIjtcclxuaW1wb3J0IHtVdGlsaXRpZXMsIFdlYnBhY2tNb2R1bGVzLCBEYXRhU3RvcmUsIERpc2NvcmRNb2R1bGVzLCBFdmVudHMsIFNldHRpbmdzLCBTdHJpbmdzfSBmcm9tIFwibW9kdWxlc1wiO1xyXG5pbXBvcnQgQkRFbW90ZSBmcm9tIFwiLi4vLi4vdWkvZW1vdGVcIjtcclxuaW1wb3J0IFRvYXN0cyBmcm9tIFwiLi4vLi4vdWkvdG9hc3RzXCI7XHJcbmltcG9ydCBGb3JtYXR0YWJsZVN0cmluZyBmcm9tIFwiLi4vLi4vc3RydWN0cy9zdHJpbmdcIjtcclxuY29uc3QgcmVxdWVzdCA9IHJlcXVpcmUoXCJyZXF1ZXN0XCIpO1xyXG5cclxuY29uc3QgRW1vdGVVUkxzID0ge1xyXG4gICAgVHdpdGNoR2xvYmFsOiBuZXcgRm9ybWF0dGFibGVTdHJpbmcoYGh0dHBzOi8vc3RhdGljLWNkbi5qdHZudy5uZXQvZW1vdGljb25zL3YxL3t7aWR9fS8xLjBgKSxcclxuICAgIFR3aXRjaFN1YnNjcmliZXI6IG5ldyBGb3JtYXR0YWJsZVN0cmluZyhgaHR0cHM6Ly9zdGF0aWMtY2RuLmp0dm53Lm5ldC9lbW90aWNvbnMvdjEve3tpZH19LzEuMGApLFxyXG4gICAgRnJhbmtlckZhY2VaOiBuZXcgRm9ybWF0dGFibGVTdHJpbmcoYGh0dHBzOi8vY2RuLmZyYW5rZXJmYWNlei5jb20vZW1vdGljb24ve3tpZH19LzFgKSxcclxuICAgIEJUVFY6IG5ldyBGb3JtYXR0YWJsZVN0cmluZyhgaHR0cHM6Ly9jZG4uYmV0dGVydHR2Lm5ldC9lbW90ZS97e2lkfX0vMXhgKSxcclxufTtcclxuXHJcbmNvbnN0IEVtb3RlcyA9IHtcclxuICAgIFR3aXRjaEdsb2JhbDoge30sXHJcbiAgICBUd2l0Y2hTdWJzY3JpYmVyOiB7fSxcclxuICAgIEJUVFY6IHt9LFxyXG4gICAgRnJhbmtlckZhY2VaOiB7fVxyXG59O1xyXG5cclxuY29uc3QgYmxhY2tsaXN0ID0gW107XHJcbmNvbnN0IG92ZXJyaWRlcyA9IFtcInR3aXRjaFwiLCBcInN1YnNjcmliZXJcIiwgXCJidHR2XCIsIFwiZmZ6XCJdO1xyXG5jb25zdCBtb2RpZmllcnMgPSBbXCJmbGlwXCIsIFwic3BpblwiLCBcInB1bHNlXCIsIFwic3BpbjJcIiwgXCJzcGluM1wiLCBcIjFzcGluXCIsIFwiMnNwaW5cIiwgXCIzc3BpblwiLCBcInRyXCIsIFwiYmxcIiwgXCJiclwiLCBcInNoYWtlXCIsIFwic2hha2UyXCIsIFwic2hha2UzXCIsIFwiZmxhcFwiXTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IG5ldyBjbGFzcyBFbW90ZU1vZHVsZSBleHRlbmRzIEJ1aWx0aW4ge1xyXG4gICAgZ2V0IG5hbWUoKSB7cmV0dXJuIFwiRW1vdGVzXCI7fVxyXG4gICAgZ2V0IGNvbGxlY3Rpb24oKSB7cmV0dXJuIFwic2V0dGluZ3NcIjt9XHJcbiAgICBnZXQgY2F0ZWdvcnkoKSB7cmV0dXJuIFwiZ2VuZXJhbFwiO31cclxuICAgIGdldCBpZCgpIHtyZXR1cm4gXCJlbW90ZXNcIjt9XHJcbiAgICBnZXQgY2F0ZWdvcmllcygpIHtyZXR1cm4gT2JqZWN0LmtleXMoRW1vdGVzKS5maWx0ZXIoayA9PiB0aGlzLmlzQ2F0ZWdvcnlFbmFibGVkKGspKTt9XHJcbiAgICBnZXQgc2hvdWxkRG93bmxvYWQoKSB7cmV0dXJuIFNldHRpbmdzLmdldChcImVtb3Rlc1wiLCB0aGlzLmNhdGVnb3J5LCBcImRvd25sb2FkXCIpO31cclxuXHJcbiAgICBpc0NhdGVnb3J5RW5hYmxlZChpZCkge3JldHVybiBzdXBlci5nZXQoXCJlbW90ZXNcIiwgXCJjYXRlZ29yaWVzXCIsIGlkLnRvTG93ZXJDYXNlKCkpO31cclxuXHJcbiAgICBnZXQoaWQpIHtyZXR1cm4gc3VwZXIuZ2V0KFwiZW1vdGVzXCIsIFwiZ2VuZXJhbFwiLCBpZCk7fVxyXG5cclxuICAgIGdldCBNZXNzYWdlQ29tcG9uZW50KCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5maW5kKG0gPT4gbS5kZWZhdWx0ICYmIG0uZGVmYXVsdC5kaXNwbGF5TmFtZSAmJiBtLmRlZmF1bHQuZGlzcGxheU5hbWUgPT0gXCJNZXNzYWdlXCIpO31cclxuXHJcbiAgICBnZXQgRW1vdGVzKCkge3JldHVybiBFbW90ZXM7fVxyXG4gICAgZ2V0IFR3aXRjaEdsb2JhbCgpIHtyZXR1cm4gRW1vdGVzLlR3aXRjaEdsb2JhbDt9XHJcbiAgICBnZXQgVHdpdGNoU3Vic2NyaWJlcigpIHtyZXR1cm4gRW1vdGVzLlR3aXRjaFN1YnNjcmliZXI7fVxyXG4gICAgZ2V0IEJUVFYoKSB7cmV0dXJuIEVtb3Rlcy5CVFRWO31cclxuICAgIGdldCBGcmFua2VyRmFjZVooKSB7cmV0dXJuIEVtb3Rlcy5GcmFua2VyRmFjZVo7fVxyXG4gICAgZ2V0IGJsYWNrbGlzdCgpIHtyZXR1cm4gYmxhY2tsaXN0O31cclxuICAgIGdldCBmYXZvcml0ZXMoKSB7cmV0dXJuIHRoaXMuZmF2b3JpdGVFbW90ZXM7fVxyXG4gICAgZ2V0VXJsKGNhdGVnb3J5LCBuYW1lKSB7cmV0dXJuIEVtb3RlVVJMc1tjYXRlZ29yeV0uZm9ybWF0KHtpZDogRW1vdGVzW2NhdGVnb3J5XVtuYW1lXX0pO31cclxuXHJcbiAgICBnZXRDYXRlZ29yeShjYXRlZ29yeSkge3JldHVybiBFbW90ZXNbY2F0ZWdvcnldO31cclxuICAgIGdldFJlbW90ZUZpbGUoY2F0ZWdvcnkpIHtyZXR1cm4gVXRpbGl0aWVzLnJlcG9VcmwoYGFzc2V0cy9lbW90ZXMvJHtjYXRlZ29yeS50b0xvd2VyQ2FzZSgpfS5qc29uYCk7fVxyXG5cclxuICAgIGluaXRpYWxpemUoKSB7XHJcbiAgICAgICAgc3VwZXIuaW5pdGlhbGl6ZSgpO1xyXG4gICAgICAgIGNvbnN0IHN0b3JlZEZhdm9yaXRlcyA9IERhdGFTdG9yZS5nZXRCRERhdGEoXCJmYXZvcml0ZUVtb3Rlc1wiKTtcclxuICAgICAgICB0aGlzLmZhdm9yaXRlRW1vdGVzID0gc3RvcmVkRmF2b3JpdGVzIHx8IHt9O1xyXG4gICAgICAgIHRoaXMuYWRkRmF2b3JpdGUgPSB0aGlzLmFkZEZhdm9yaXRlLmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy5yZW1vdmVGYXZvcml0ZSA9IHRoaXMucmVtb3ZlRmF2b3JpdGUuYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLm9uQ2F0ZWdvcnlUb2dnbGUgPSB0aGlzLm9uQ2F0ZWdvcnlUb2dnbGUuYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLnJlc2V0RW1vdGVzID0gdGhpcy5yZXNldEVtb3Rlcy5iaW5kKHRoaXMpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGVuYWJsZWQoKSB7XHJcbiAgICAgICAgU2V0dGluZ3MucmVnaXN0ZXJDb2xsZWN0aW9uKFwiZW1vdGVzXCIsIFwiRW1vdGVzXCIsIEVtb3RlQ29uZmlnLCB7dGl0bGU6IFN0cmluZ3MuRW1vdGVzLmNsZWFyRW1vdGVzLCBvbkNsaWNrOiB0aGlzLnJlc2V0RW1vdGVzfSk7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5nZXRCbGFja2xpc3QoKTtcclxuICAgICAgICBhd2FpdCB0aGlzLmxvYWRFbW90ZURhdGEoKTtcclxuXHJcbiAgICAgICAgRXZlbnRzLm9uKFwiZW1vdGVzLWZhdm9yaXRlLWFkZGVkXCIsIHRoaXMuYWRkRmF2b3JpdGUpO1xyXG4gICAgICAgIEV2ZW50cy5vbihcImVtb3Rlcy1mYXZvcml0ZS1yZW1vdmVkXCIsIHRoaXMucmVtb3ZlRmF2b3JpdGUpO1xyXG4gICAgICAgIEV2ZW50cy5vbihcInNldHRpbmctdXBkYXRlZFwiLCB0aGlzLm9uQ2F0ZWdvcnlUb2dnbGUpO1xyXG4gICAgICAgIHRoaXMucGF0Y2hNZXNzYWdlQ29udGVudCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGRpc2FibGVkKCkge1xyXG4gICAgICAgIEV2ZW50cy5vZmYoXCJzZXR0aW5nLXVwZGF0ZWRcIiwgdGhpcy5vbkNhdGVnb3J5VG9nZ2xlKTtcclxuICAgICAgICBFdmVudHMub2ZmKFwiZW1vdGVzLWZhdm9yaXRlLWFkZGVkXCIsIHRoaXMuYWRkRmF2b3JpdGUpO1xyXG4gICAgICAgIEV2ZW50cy5vZmYoXCJlbW90ZXMtZmF2b3JpdGUtcmVtb3ZlZFwiLCB0aGlzLnJlbW92ZUZhdm9yaXRlKTtcclxuICAgICAgICBTZXR0aW5ncy5yZW1vdmVDb2xsZWN0aW9uKFwiZW1vdGVzXCIpO1xyXG4gICAgICAgIHRoaXMuZW1wdHlFbW90ZXMoKTtcclxuICAgICAgICBpZiAoIXRoaXMuY2FuY2VsRW1vdGVSZW5kZXIpIHJldHVybjtcclxuICAgICAgICB0aGlzLmNhbmNlbEVtb3RlUmVuZGVyKCk7XHJcbiAgICAgICAgZGVsZXRlIHRoaXMuY2FuY2VsRW1vdGVSZW5kZXI7XHJcbiAgICB9XHJcblxyXG4gICAgb25DYXRlZ29yeVRvZ2dsZShjb2xsZWN0aW9uLCBjYXQsIGNhdGVnb3J5LCBlbmFibGVkKSB7XHJcbiAgICAgICAgaWYgKGNvbGxlY3Rpb24gIT0gXCJlbW90ZXNcIiB8fCBjYXQgIT0gXCJjYXRlZ29yaWVzXCIpIHJldHVybjtcclxuICAgICAgICBpZiAoZW5hYmxlZCkgcmV0dXJuIHRoaXMubG9hZEVtb3RlRGF0YShjYXRlZ29yeSk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudW5sb2FkRW1vdGVEYXRhKGNhdGVnb3J5KTtcclxuICAgIH1cclxuXHJcbiAgICBhZGRGYXZvcml0ZShuYW1lLCB1cmwpIHtcclxuICAgICAgICBpZiAoIXRoaXMuZmF2b3JpdGVFbW90ZXMuaGFzT3duUHJvcGVydHkobmFtZSkpIHRoaXMuZmF2b3JpdGVFbW90ZXNbbmFtZV0gPSB1cmw7XHJcbiAgICAgICAgdGhpcy5zYXZlRmF2b3JpdGVzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVtb3ZlRmF2b3JpdGUobmFtZSkge1xyXG4gICAgICAgIGlmICghdGhpcy5mYXZvcml0ZUVtb3Rlcy5oYXNPd25Qcm9wZXJ0eShuYW1lKSkgcmV0dXJuO1xyXG4gICAgICAgIGRlbGV0ZSB0aGlzLmZhdm9yaXRlRW1vdGVzW25hbWVdO1xyXG4gICAgICAgIHRoaXMuc2F2ZUZhdm9yaXRlcygpO1xyXG4gICAgfVxyXG5cclxuICAgIGlzRmF2b3JpdGUobmFtZSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmZhdm9yaXRlRW1vdGVzLmhhc093blByb3BlcnR5KG5hbWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHNhdmVGYXZvcml0ZXMoKSB7XHJcbiAgICAgICAgRGF0YVN0b3JlLnNldEJERGF0YShcImZhdm9yaXRlRW1vdGVzXCIsIHRoaXMuZmF2b3JpdGVFbW90ZXMpO1xyXG4gICAgfVxyXG5cclxuICAgIGVtcHR5RW1vdGVzKCkge1xyXG4gICAgICAgIGZvciAoY29uc3QgY2F0IGluIEVtb3RlcykgT2JqZWN0LmFzc2lnbihFbW90ZXMsIHtbY2F0XToge319KTtcclxuICAgIH1cclxuXHJcbiAgICBwYXRjaE1lc3NhZ2VDb250ZW50KCkge1xyXG4gICAgICAgIGlmICh0aGlzLmNhbmNlbEVtb3RlUmVuZGVyKSByZXR1cm47XHJcbiAgICAgICAgdGhpcy5jYW5jZWxFbW90ZVJlbmRlciA9IHRoaXMuYmVmb3JlKHRoaXMuTWVzc2FnZUNvbXBvbmVudCwgXCJkZWZhdWx0XCIsICh0aGlzT2JqLCBhcmdzKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IG5vZGVzID0gYXJnc1swXS5jaGlsZHJlbk1lc3NhZ2VDb250ZW50LnByb3BzLmNvbnRlbnQ7XHJcbiAgICAgICAgICAgIGlmICghbm9kZXMgfHwgIW5vZGVzLmxlbmd0aCkgcmV0dXJuO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBuID0gMDsgbiA8IG5vZGVzLmxlbmd0aDsgbisrKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBub2RlID0gbm9kZXNbbl07XHJcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mKG5vZGUpICE9PSBcInN0cmluZ1wiKSBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHdvcmRzID0gbm9kZS5zcGxpdCgvKFteXFxzXSspKFtcXHNdfCQpL2cpO1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgYyA9IDAsIGNsZW4gPSB0aGlzLmNhdGVnb3JpZXMubGVuZ3RoOyBjIDwgY2xlbjsgYysrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgdyA9IDAsIHdsZW4gPSB3b3Jkcy5sZW5ndGg7IHcgPCB3bGVuOyB3KyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZW1vdGUgPSB3b3Jkc1t3XTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZW1vdGVTcGxpdCA9IGVtb3RlLnNwbGl0KFwiOlwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZW1vdGVOYW1lID0gZW1vdGVTcGxpdFswXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGVtb3RlTW9kaWZpZXIgPSBlbW90ZVNwbGl0WzFdID8gZW1vdGVTcGxpdFsxXSA6IFwiXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBlbW90ZU92ZXJyaWRlID0gZW1vdGVNb2RpZmllci5zbGljZSgwKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbW90ZU5hbWUubGVuZ3RoIDwgNCB8fCBibGFja2xpc3QuaW5jbHVkZXMoZW1vdGVOYW1lKSkgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbW9kaWZpZXJzLmluY2x1ZGVzKGVtb3RlTW9kaWZpZXIpIHx8ICFTZXR0aW5ncy5nZXQoXCJlbW90ZXNcIiwgXCJnZW5lcmFsXCIsIFwibW9kaWZpZXJzXCIpKSBlbW90ZU1vZGlmaWVyID0gXCJcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFvdmVycmlkZXMuaW5jbHVkZXMoZW1vdGVPdmVycmlkZSkpIGVtb3RlT3ZlcnJpZGUgPSBcIlwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGVtb3RlTW9kaWZpZXIgPSBlbW90ZU92ZXJyaWRlO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGN1cnJlbnQgPSB0aGlzLmNhdGVnb3JpZXNbY107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbW90ZU92ZXJyaWRlID09PSBcInR3aXRjaFwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoRW1vdGVzLlR3aXRjaEdsb2JhbFtlbW90ZU5hbWVdKSBjdXJyZW50ID0gXCJUd2l0Y2hHbG9iYWxcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKEVtb3Rlcy5Ud2l0Y2hTdWJzY3JpYmVyW2Vtb3RlTmFtZV0pIGN1cnJlbnQgPSBcIlR3aXRjaFN1YnNjcmliZXJcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChlbW90ZU92ZXJyaWRlID09PSBcInN1YnNjcmliZXJcIikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEVtb3Rlcy5Ud2l0Y2hTdWJzY3JpYmVyW2Vtb3RlTmFtZV0pIGN1cnJlbnQgPSBcIlR3aXRjaFN1YnNjcmliZXJcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChlbW90ZU92ZXJyaWRlID09PSBcImJ0dHZcIikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEVtb3Rlcy5CVFRWW2Vtb3RlTmFtZV0pIGN1cnJlbnQgPSBcIkJUVFZcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChlbW90ZU92ZXJyaWRlID09PSBcImZmelwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoRW1vdGVzLkZyYW5rZXJGYWNlWltlbW90ZU5hbWVdKSBjdXJyZW50ID0gXCJGcmFua2VyRmFjZVpcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFFbW90ZXNbY3VycmVudF1bZW1vdGVOYW1lXSkgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdHMgPSBub2Rlc1tuXS5tYXRjaChuZXcgUmVnRXhwKGAoW1xcXFxzXXxeKSR7VXRpbGl0aWVzLmVzY2FwZShlbW90ZU1vZGlmaWVyID8gZW1vdGVOYW1lICsgXCI6XCIgKyBlbW90ZU1vZGlmaWVyIDogZW1vdGVOYW1lKX0oW1xcXFxzXXwkKWApKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHRzKSBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJlID0gbm9kZXNbbl0uc3Vic3RyaW5nKDAsIHJlc3VsdHMuaW5kZXggKyByZXN1bHRzWzFdLmxlbmd0aCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBvc3QgPSBub2Rlc1tuXS5zdWJzdHJpbmcocmVzdWx0cy5pbmRleCArIHJlc3VsdHNbMF0ubGVuZ3RoIC0gcmVzdWx0c1syXS5sZW5ndGgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBub2Rlc1tuXSA9IHByZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZW1vdGVDb21wb25lbnQgPSBEaXNjb3JkTW9kdWxlcy5SZWFjdC5jcmVhdGVFbGVtZW50KEJERW1vdGUsIHtuYW1lOiBlbW90ZU5hbWUsIHVybDogRW1vdGVVUkxzW2N1cnJlbnRdLmZvcm1hdCh7aWQ6IEVtb3Rlc1tjdXJyZW50XVtlbW90ZU5hbWVdfSksIG1vZGlmaWVyOiBlbW90ZU1vZGlmaWVyLCBpc0Zhdm9yaXRlOiB0aGlzLmlzRmF2b3JpdGUoZW1vdGVOYW1lKX0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBub2Rlcy5zcGxpY2UobiArIDEsIDAsIHBvc3QpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBub2Rlcy5zcGxpY2UobiArIDEsIDAsIGVtb3RlQ29tcG9uZW50KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3Qgb25seUVtb3RlcyA9IG5vZGVzLmV2ZXJ5KHIgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZihyKSA9PSBcInN0cmluZ1wiICYmIHIucmVwbGFjZSgvXFxzKi8sIFwiXCIpID09IFwiXCIpIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoci50eXBlICYmIHIudHlwZS5uYW1lID09IFwiQkRFbW90ZVwiKSByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHIucHJvcHMgJiYgci5wcm9wcy5jaGlsZHJlbiAmJiByLnByb3BzLmNoaWxkcmVuLnByb3BzICYmIHIucHJvcHMuY2hpbGRyZW4ucHJvcHMuZW1vamlOYW1lKSByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGlmICghb25seUVtb3RlcykgcmV0dXJuO1xyXG5cclxuICAgICAgICAgICAgZm9yIChjb25zdCBub2RlIG9mIG5vZGVzKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mKG5vZGUpICE9IFwib2JqZWN0XCIpIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgaWYgKG5vZGUudHlwZS5uYW1lID09IFwiQkRFbW90ZVwiKSBub2RlLnByb3BzLmp1bWJvYWJsZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChub2RlLnByb3BzICYmIG5vZGUucHJvcHMuY2hpbGRyZW4gJiYgbm9kZS5wcm9wcy5jaGlsZHJlbi5wcm9wcyAmJiBub2RlLnByb3BzLmNoaWxkcmVuLnByb3BzLmVtb2ppTmFtZSkgbm9kZS5wcm9wcy5jaGlsZHJlbi5wcm9wcy5qdW1ib2FibGUgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0QmxhY2tsaXN0KCkge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNhdGVnb3J5ID0gXCJCbGFja2xpc3RcIjtcclxuICAgICAgICAgICAgY29uc3QgZXhpc3RzID0gRGF0YVN0b3JlLmVtb3Rlc0V4aXN0KGNhdGVnb3J5KTtcclxuICAgICAgICAgICAgY29uc3QgdmFsaWQgPSBhd2FpdCB0aGlzLmlzQ2FjaGVWYWxpZChjYXRlZ29yeSk7XHJcbiAgICAgICAgICAgIGNvbnN0IHVzZUNhY2hlID0gKHZhbGlkKSB8fCAoIXZhbGlkICYmIGV4aXN0cyAmJiAhdGhpcy5zaG91bGREb3dubG9hZCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGxpc3QgPSB1c2VDYWNoZSA/IERhdGFTdG9yZS5nZXRFbW90ZURhdGEoY2F0ZWdvcnkpIDogYXdhaXQgdGhpcy5kb3dubG9hZEVtb3RlcyhjYXRlZ29yeSk7XHJcbiAgICAgICAgICAgIGJsYWNrbGlzdC5wdXNoKC4uLmxpc3QpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgICAgIC8vIFRPRE86IExvZyB0aGlzXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlzQ2FjaGVWYWxpZChjYXRlZ29yeSkge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcclxuICAgICAgICAgICAgY29uc3QgZXRhZyA9IERhdGFTdG9yZS5nZXRDYWNoZUhhc2goXCJlbW90ZXNcIiwgY2F0ZWdvcnkpO1xyXG4gICAgICAgICAgICBpZiAoIWV0YWcpIHJldHVybiByZXNvbHZlKGZhbHNlKTtcclxuICAgICAgICAgICAgcmVxdWVzdC5oZWFkKHt1cmw6IHRoaXMuZ2V0UmVtb3RlRmlsZShjYXRlZ29yeSksIGhlYWRlcnM6IHtcIklmLU5vbmUtTWF0Y2hcIjogZXRhZ319LCAoZXJyLCByZXNwKSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3Auc3RhdHVzQ29kZSA9PSAzMDQpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBsb2FkRW1vdGVEYXRhKGNhdGVnb3JpZXMpIHtcclxuICAgICAgICBpZiAoIWNhdGVnb3JpZXMpIGNhdGVnb3JpZXMgPSB0aGlzLmNhdGVnb3JpZXM7XHJcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGNhdGVnb3JpZXMpKSBjYXRlZ29yaWVzID0gW2NhdGVnb3JpZXNdO1xyXG4gICAgICAgIGNvbnN0IGFsbCA9IE9iamVjdC5rZXlzKEVtb3Rlcyk7XHJcbiAgICAgICAgY2F0ZWdvcmllcyA9IGNhdGVnb3JpZXMubWFwKGsgPT4gYWxsLmZpbmQoYyA9PiBjLnRvTG93ZXJDYXNlKCkgPT0gay50b0xvd2VyQ2FzZSgpKSk7XHJcbiAgICAgICAgVG9hc3RzLnNob3coU3RyaW5ncy5FbW90ZXMubG9hZGluZywge3R5cGU6IFwiaW5mb1wifSk7XHJcbiAgICAgICAgdGhpcy5lbW90ZXNMb2FkZWQgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgZm9yIChjb25zdCBjYXRlZ29yeSBvZiBjYXRlZ29yaWVzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGV4aXN0cyA9IERhdGFTdG9yZS5lbW90ZXNFeGlzdChjYXRlZ29yeSk7XHJcbiAgICAgICAgICAgIGNvbnN0IHZhbGlkID0gYXdhaXQgdGhpcy5pc0NhY2hlVmFsaWQoY2F0ZWdvcnkpO1xyXG4gICAgICAgICAgICBjb25zdCB1c2VDYWNoZSA9ICh2YWxpZCkgfHwgKCF2YWxpZCAmJiBleGlzdHMgJiYgIXRoaXMuc2hvdWxkRG93bmxvYWQpO1xyXG4gICAgICAgICAgICBsZXQgZGF0YSA9IG51bGw7XHJcbiAgICAgICAgICAgIGlmICh1c2VDYWNoZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2coYExvYWRpbmcgJHtjYXRlZ29yeX0gZW1vdGVzIGZyb20gbG9jYWwgY2FjaGUuYCk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjYWNoZWREYXRhID0gRGF0YVN0b3JlLmdldEVtb3RlRGF0YShjYXRlZ29yeSk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBoYXNEYXRhID0gT2JqZWN0LmtleXMoY2FjaGVkRGF0YSkubGVuZ3RoID4gMDtcclxuICAgICAgICAgICAgICAgIGlmIChoYXNEYXRhKSBkYXRhID0gY2FjaGVkRGF0YTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoIWRhdGEpIGRhdGEgPSBhd2FpdCB0aGlzLmRvd25sb2FkRW1vdGVzKGNhdGVnb3J5KTtcclxuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihFbW90ZXNbY2F0ZWdvcnldLCBkYXRhKTtcclxuICAgICAgICAgICAgYXdhaXQgbmV3IFByb21pc2UociA9PiBzZXRUaW1lb3V0KHIsIDEwMDApKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuZW1vdGVzTG9hZGVkID0gdHJ1ZTtcclxuICAgICAgICBFdmVudHMuZGlzcGF0Y2goXCJlbW90ZXMtbG9hZGVkXCIpO1xyXG4gICAgICAgIFRvYXN0cy5zaG93KFN0cmluZ3MuRW1vdGVzLmxvYWRlZCwge3R5cGU6IFwic3VjY2Vzc1wifSk7XHJcbiAgICB9XHJcblxyXG4gICAgdW5sb2FkRW1vdGVEYXRhKGNhdGVnb3JpZXMpIHtcclxuICAgICAgICBpZiAoIWNhdGVnb3JpZXMpIGNhdGVnb3JpZXMgPSB0aGlzLmNhdGVnb3JpZXM7XHJcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGNhdGVnb3JpZXMpKSBjYXRlZ29yaWVzID0gW2NhdGVnb3JpZXNdO1xyXG4gICAgICAgIGNvbnN0IGFsbCA9IE9iamVjdC5rZXlzKEVtb3Rlcyk7XHJcbiAgICAgICAgY2F0ZWdvcmllcyA9IGNhdGVnb3JpZXMubWFwKGsgPT4gYWxsLmZpbmQoYyA9PiBjLnRvTG93ZXJDYXNlKCkgPT0gay50b0xvd2VyQ2FzZSgpKSk7XHJcbiAgICAgICAgZm9yIChjb25zdCBjYXRlZ29yeSBvZiBjYXRlZ29yaWVzKSB7XHJcbiAgICAgICAgICAgIGRlbGV0ZSBFbW90ZXNbY2F0ZWdvcnldO1xyXG4gICAgICAgICAgICBFbW90ZXNbY2F0ZWdvcnldID0ge307XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGRvd25sb2FkRW1vdGVzKGNhdGVnb3J5KSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gdGhpcy5nZXRSZW1vdGVGaWxlKGNhdGVnb3J5KTtcclxuICAgICAgICB0aGlzLmxvZyhgRG93bmxvYWRpbmcgJHtjYXRlZ29yeX0gZnJvbSAke3VybH1gKTtcclxuICAgICAgICBjb25zdCBvcHRpb25zID0ge3VybDogdXJsLCB0aW1lb3V0OiAxMDAwMCwganNvbjogdHJ1ZX07XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xyXG4gICAgICAgICAgICByZXF1ZXN0LmdldChvcHRpb25zLCAoZXJyb3IsIHJlc3BvbnNlLCBwYXJzZWREYXRhKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZXJyb3IgfHwgcmVzcG9uc2Uuc3RhdHVzQ29kZSAhPSAyMDApIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YWNrdHJhY2UoYENvdWxkIG5vdCBkb3dubG9hZCAke2NhdGVnb3J5fSBlbW90ZXMuYCwgZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXNvbHZlKHt9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGVtb3RlIGluIHBhcnNlZERhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZW1vdGUubGVuZ3RoIDwgNCB8fCBibGFja2xpc3QuaW5jbHVkZXMoZW1vdGUpIHx8ICFwYXJzZWREYXRhW2Vtb3RlXSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgcGFyc2VkRGF0YVtlbW90ZV07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAvLyBwYXJzZWREYXRhW2Vtb3RlXSA9IEVtb3RlVVJMc1tjYXRlZ29yeV0uZm9ybWF0KHtpZDogcGFyc2VkRGF0YVtlbW90ZV19KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIERhdGFTdG9yZS5zYXZlRW1vdGVEYXRhKGNhdGVnb3J5LCBwYXJzZWREYXRhKTtcclxuICAgICAgICAgICAgICAgIERhdGFTdG9yZS5zZXRDYWNoZUhhc2goXCJlbW90ZXNcIiwgY2F0ZWdvcnksIHJlc3BvbnNlLmhlYWRlcnMuZXRhZyk7XHJcbiAgICAgICAgICAgICAgICByZXNvbHZlKHBhcnNlZERhdGEpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2coYERvd25sb2FkZWQgJHtjYXRlZ29yeX1gKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVzZXRFbW90ZXMoKSB7XHJcbiAgICAgICAgY29uc3QgY2F0ZWdvcmllcyA9IE9iamVjdC5rZXlzKEVtb3Rlcyk7XHJcbiAgICAgICAgdGhpcy51bmxvYWRFbW90ZURhdGEoY2F0ZWdvcmllcyk7XHJcbiAgICAgICAgZm9yIChjb25zdCBjYXQgb2YgY2F0ZWdvcmllcykgRGF0YVN0b3JlLmludmFsaWRhdGVDYWNoZShcImVtb3Rlc1wiLCBjYXQpO1xyXG4gICAgICAgIHRoaXMubG9hZEVtb3RlRGF0YSgpO1xyXG4gICAgfVxyXG59O1xyXG5cclxuXHJcbi8vIChhc3luYyAoKSA9PiB7XHJcbi8vICAgICBjb25zdCBlbW90ZURhdGEgPSBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcclxuLy8gICAgICAgICBjb25zdCByZXEgPSByZXF1aXJlKFwicmVxdWVzdFwiKTtcclxuLy8gICAgICAgICByZXEuZ2V0KHt1cmw6IFwiaHR0cHM6Ly90d2l0Y2hlbW90ZXMuY29tL2FwaV9jYWNoZS92My9nbG9iYWwuanNvblwiLCBqc29uOiB0cnVlfSwgKGVyciwgcmVzcCwgcGFyc2VkRGF0YSkgPT4ge1xyXG4vLyAgICAgICAgICAgICBmb3IgKGNvbnN0IGVtb3RlIGluIHBhcnNlZERhdGEpIHtcclxuLy8gICAgICAgICAgICAgICAgIGlmIChlbW90ZS5sZW5ndGggPCA0IHx8IHdpbmRvdy5iZW1vdGVzLmluY2x1ZGVzKGVtb3RlKSkge1xyXG4vLyAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBwYXJzZWREYXRhW2Vtb3RlXTtcclxuLy8gICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuLy8gICAgICAgICAgICAgICAgIH1cclxuLy8gICAgICAgICAgICAgICAgIHBhcnNlZERhdGFbZW1vdGVdID0gcGFyc2VkRGF0YVtlbW90ZV0uaWQ7XHJcbi8vICAgICAgICAgICAgIH1cclxuLy8gICAgICAgICAgICAgcmVzb2x2ZShwYXJzZWREYXRhKTtcclxuLy8gICAgICAgICB9KTtcclxuLy8gICAgIH0pO1xyXG4vLyAgICAgY29uc3QgZnMgPSByZXF1aXJlKFwiZnNcIik7XHJcbi8vICAgICBmcy53cml0ZUZpbGVTeW5jKFwiWjpcXFxcUHJvZ3JhbW1pbmdcXFxcQmV0dGVyRGlzY29yZFN0dWZmXFxcXEJldHRlckRpc2NvcmRBcHBcXFxcZGF0YVxcXFxlbW90ZXNcXFxcZ2xvYmFsLmpzb25cIiwgSlNPTi5zdHJpbmdpZnkoZW1vdGVEYXRhKSk7XHJcbi8vICAgICByZXR1cm4gZW1vdGVEYXRhO1xyXG4vLyB9KSgpOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/builtins/emotes/emotes.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _structs_builtin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../structs/builtin */ \"./src/structs/builtin.js\");\n/* harmony import */ var data__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! data */ \"./src/data/data.js\");\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _ui_emote__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../ui/emote */ \"./src/ui/emote.js\");\n/* harmony import */ var _ui_toasts__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../ui/toasts */ \"./src/ui/toasts.js\");\n/* harmony import */ var _structs_string__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../structs/string */ \"./src/structs/string.js\");\n\n\n\n\n\n\n\nconst request = __webpack_require__(/*! request */ \"request\");\n\nconst EmoteURLs = {\n TwitchGlobal: new _structs_string__WEBPACK_IMPORTED_MODULE_5__[\"default\"](`https://static-cdn.jtvnw.net/emoticons/v1/{{id}}/1.0`),\n TwitchSubscriber: new _structs_string__WEBPACK_IMPORTED_MODULE_5__[\"default\"](`https://static-cdn.jtvnw.net/emoticons/v1/{{id}}/1.0`),\n FrankerFaceZ: new _structs_string__WEBPACK_IMPORTED_MODULE_5__[\"default\"](`https://cdn.frankerfacez.com/emoticon/{{id}}/1`),\n BTTV: new _structs_string__WEBPACK_IMPORTED_MODULE_5__[\"default\"](`https://cdn.betterttv.net/emote/{{id}}/1x`)\n};\nconst Emotes = {\n TwitchGlobal: {},\n TwitchSubscriber: {},\n BTTV: {},\n FrankerFaceZ: {}\n};\nconst blacklist = [];\nconst overrides = [\"twitch\", \"subscriber\", \"bttv\", \"ffz\"];\nconst modifiers = [\"flip\", \"spin\", \"pulse\", \"spin2\", \"spin3\", \"1spin\", \"2spin\", \"3spin\", \"tr\", \"bl\", \"br\", \"shake\", \"shake2\", \"shake3\", \"flap\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class EmoteModule extends _structs_builtin__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n get name() {\n return \"Emotes\";\n }\n\n get collection() {\n return \"settings\";\n }\n\n get category() {\n return \"general\";\n }\n\n get id() {\n return \"emotes\";\n }\n\n get categories() {\n return Object.keys(Emotes).filter(k => this.isCategoryEnabled(k));\n }\n\n get shouldDownload() {\n return modules__WEBPACK_IMPORTED_MODULE_2__[\"Settings\"].get(\"emotes\", this.category, \"download\");\n }\n\n isCategoryEnabled(id) {\n return super.get(\"emotes\", \"categories\", id.toLowerCase());\n }\n\n get(id) {\n return super.get(\"emotes\", \"general\", id);\n }\n\n get MessageComponent() {\n return modules__WEBPACK_IMPORTED_MODULE_2__[\"WebpackModules\"].find(m => m.default && m.default.displayName && m.default.displayName == \"Message\");\n }\n\n get Emotes() {\n return Emotes;\n }\n\n get TwitchGlobal() {\n return Emotes.TwitchGlobal;\n }\n\n get TwitchSubscriber() {\n return Emotes.TwitchSubscriber;\n }\n\n get BTTV() {\n return Emotes.BTTV;\n }\n\n get FrankerFaceZ() {\n return Emotes.FrankerFaceZ;\n }\n\n get blacklist() {\n return blacklist;\n }\n\n get favorites() {\n return this.favoriteEmotes;\n }\n\n getUrl(category, name) {\n return EmoteURLs[category].format({\n id: Emotes[category][name]\n });\n }\n\n getCategory(category) {\n return Emotes[category];\n }\n\n getRemoteFile(category) {\n return modules__WEBPACK_IMPORTED_MODULE_2__[\"Utilities\"].repoUrl(`assets/emotes/${category.toLowerCase()}.json`);\n }\n\n initialize() {\n super.initialize();\n const storedFavorites = modules__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].getBDData(\"favoriteEmotes\");\n this.favoriteEmotes = storedFavorites || {};\n this.addFavorite = this.addFavorite.bind(this);\n this.removeFavorite = this.removeFavorite.bind(this);\n this.onCategoryToggle = this.onCategoryToggle.bind(this);\n this.resetEmotes = this.resetEmotes.bind(this);\n }\n\n async enabled() {\n modules__WEBPACK_IMPORTED_MODULE_2__[\"Settings\"].registerCollection(\"emotes\", \"Emotes\", data__WEBPACK_IMPORTED_MODULE_1__[\"EmoteConfig\"], {\n title: modules__WEBPACK_IMPORTED_MODULE_2__[\"Strings\"].Emotes.clearEmotes,\n onClick: this.resetEmotes\n });\n await this.getBlacklist();\n await this.loadEmoteData();\n modules__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].on(\"emotes-favorite-added\", this.addFavorite);\n modules__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].on(\"emotes-favorite-removed\", this.removeFavorite);\n modules__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].on(\"setting-updated\", this.onCategoryToggle);\n this.patchMessageContent();\n }\n\n disabled() {\n modules__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].off(\"setting-updated\", this.onCategoryToggle);\n modules__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].off(\"emotes-favorite-added\", this.addFavorite);\n modules__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].off(\"emotes-favorite-removed\", this.removeFavorite);\n modules__WEBPACK_IMPORTED_MODULE_2__[\"Settings\"].removeCollection(\"emotes\");\n this.emptyEmotes();\n if (!this.cancelEmoteRender) return;\n this.cancelEmoteRender();\n delete this.cancelEmoteRender;\n }\n\n onCategoryToggle(collection, cat, category, enabled) {\n if (collection != \"emotes\" || cat != \"categories\") return;\n if (enabled) return this.loadEmoteData(category);\n return this.unloadEmoteData(category);\n }\n\n addFavorite(name, url) {\n if (!this.favoriteEmotes.hasOwnProperty(name)) this.favoriteEmotes[name] = url;\n this.saveFavorites();\n }\n\n removeFavorite(name) {\n if (!this.favoriteEmotes.hasOwnProperty(name)) return;\n delete this.favoriteEmotes[name];\n this.saveFavorites();\n }\n\n isFavorite(name) {\n return this.favoriteEmotes.hasOwnProperty(name);\n }\n\n saveFavorites() {\n modules__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].setBDData(\"favoriteEmotes\", this.favoriteEmotes);\n }\n\n emptyEmotes() {\n for (const cat in Emotes) Object.assign(Emotes, {\n [cat]: {}\n });\n }\n\n patchMessageContent() {\n if (this.cancelEmoteRender) return;\n this.cancelEmoteRender = this.before(this.MessageComponent, \"default\", (thisObj, args) => {\n const nodes = args[0].childrenMessageContent.props.content;\n if (!nodes || !nodes.length) return;\n\n for (let n = 0; n < nodes.length; n++) {\n const node = nodes[n];\n if (typeof node !== \"string\") continue;\n const words = node.split(/([^\\s]+)([\\s]|$)/g);\n\n for (let c = 0, clen = this.categories.length; c < clen; c++) {\n for (let w = 0, wlen = words.length; w < wlen; w++) {\n const emote = words[w];\n const emoteSplit = emote.split(\":\");\n const emoteName = emoteSplit[0];\n let emoteModifier = emoteSplit[1] ? emoteSplit[1] : \"\";\n let emoteOverride = emoteModifier.slice(0);\n if (emoteName.length < 4 || blacklist.includes(emoteName)) continue;\n if (!modifiers.includes(emoteModifier) || !modules__WEBPACK_IMPORTED_MODULE_2__[\"Settings\"].get(\"emotes\", \"general\", \"modifiers\")) emoteModifier = \"\";\n if (!overrides.includes(emoteOverride)) emoteOverride = \"\";else emoteModifier = emoteOverride;\n let current = this.categories[c];\n\n if (emoteOverride === \"twitch\") {\n if (Emotes.TwitchGlobal[emoteName]) current = \"TwitchGlobal\";else if (Emotes.TwitchSubscriber[emoteName]) current = \"TwitchSubscriber\";\n } else if (emoteOverride === \"subscriber\") {\n if (Emotes.TwitchSubscriber[emoteName]) current = \"TwitchSubscriber\";\n } else if (emoteOverride === \"bttv\") {\n if (Emotes.BTTV[emoteName]) current = \"BTTV\";\n } else if (emoteOverride === \"ffz\") {\n if (Emotes.FrankerFaceZ[emoteName]) current = \"FrankerFaceZ\";\n }\n\n if (!Emotes[current][emoteName]) continue;\n const results = nodes[n].match(new RegExp(`([\\\\s]|^)${modules__WEBPACK_IMPORTED_MODULE_2__[\"Utilities\"].escape(emoteModifier ? emoteName + \":\" + emoteModifier : emoteName)}([\\\\s]|$)`));\n if (!results) continue;\n const pre = nodes[n].substring(0, results.index + results[1].length);\n const post = nodes[n].substring(results.index + results[0].length - results[2].length);\n nodes[n] = pre;\n const emoteComponent = modules__WEBPACK_IMPORTED_MODULE_2__[\"DiscordModules\"].React.createElement(_ui_emote__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n name: emoteName,\n url: EmoteURLs[current].format({\n id: Emotes[current][emoteName]\n }),\n modifier: emoteModifier,\n isFavorite: this.isFavorite(emoteName)\n });\n nodes.splice(n + 1, 0, post);\n nodes.splice(n + 1, 0, emoteComponent);\n }\n }\n }\n\n const onlyEmotes = nodes.every(r => {\n if (typeof r == \"string\" && r.replace(/\\s*/, \"\") == \"\") return true;else if (r.type && r.type.name == \"BDEmote\") return true;else if (r.props && r.props.children && r.props.children.props && r.props.children.props.emojiName) return true;\n return false;\n });\n if (!onlyEmotes) return;\n\n for (const node of nodes) {\n if (typeof node != \"object\") continue;\n if (node.type.name == \"BDEmote\") node.props.jumboable = true;else if (node.props && node.props.children && node.props.children.props && node.props.children.props.emojiName) node.props.children.props.jumboable = true;\n }\n });\n }\n\n async getBlacklist() {\n try {\n const category = \"Blacklist\";\n const exists = modules__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].emotesExist(category);\n const valid = await this.isCacheValid(category);\n const useCache = valid || !valid && exists && !this.shouldDownload;\n const list = useCache ? modules__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].getEmoteData(category) : await this.downloadEmotes(category);\n blacklist.push(...list);\n } catch (err) {// TODO: Log this\n }\n }\n\n isCacheValid(category) {\n return new Promise(resolve => {\n const etag = modules__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].getCacheHash(\"emotes\", category);\n if (!etag) return resolve(false);\n request.head({\n url: this.getRemoteFile(category),\n headers: {\n \"If-None-Match\": etag\n }\n }, (err, resp) => {\n resolve(resp.statusCode == 304);\n });\n });\n }\n\n async loadEmoteData(categories) {\n if (!categories) categories = this.categories;\n if (!Array.isArray(categories)) categories = [categories];\n const all = Object.keys(Emotes);\n categories = categories.map(k => all.find(c => c.toLowerCase() == k.toLowerCase()));\n _ui_toasts__WEBPACK_IMPORTED_MODULE_4__[\"default\"].show(modules__WEBPACK_IMPORTED_MODULE_2__[\"Strings\"].Emotes.loading, {\n type: \"info\"\n });\n this.emotesLoaded = false;\n\n for (const category of categories) {\n const exists = modules__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].emotesExist(category);\n const valid = await this.isCacheValid(category);\n const useCache = valid || !valid && exists && !this.shouldDownload;\n let data = null;\n\n if (useCache) {\n this.log(`Loading ${category} emotes from local cache.`);\n const cachedData = modules__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].getEmoteData(category);\n const hasData = Object.keys(cachedData).length > 0;\n if (hasData) data = cachedData;\n }\n\n if (!data) data = await this.downloadEmotes(category);\n Object.assign(Emotes[category], data);\n await new Promise(r => setTimeout(r, 1000));\n }\n\n this.emotesLoaded = true;\n modules__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].dispatch(\"emotes-loaded\");\n _ui_toasts__WEBPACK_IMPORTED_MODULE_4__[\"default\"].show(modules__WEBPACK_IMPORTED_MODULE_2__[\"Strings\"].Emotes.loaded, {\n type: \"success\"\n });\n }\n\n unloadEmoteData(categories) {\n if (!categories) categories = this.categories;\n if (!Array.isArray(categories)) categories = [categories];\n const all = Object.keys(Emotes);\n categories = categories.map(k => all.find(c => c.toLowerCase() == k.toLowerCase()));\n\n for (const category of categories) {\n delete Emotes[category];\n Emotes[category] = {};\n }\n }\n\n downloadEmotes(category) {\n const url = this.getRemoteFile(category);\n this.log(`Downloading ${category} from ${url}`);\n const options = {\n url: url,\n timeout: 10000,\n json: true\n };\n return new Promise(resolve => {\n request.get(options, (error, response, parsedData) => {\n if (error || response.statusCode != 200) {\n this.stacktrace(`Could not download ${category} emotes.`, error);\n return resolve({});\n }\n\n for (const emote in parsedData) {\n if (emote.length < 4 || blacklist.includes(emote) || !parsedData[emote]) {\n delete parsedData[emote];\n continue;\n } // parsedData[emote] = EmoteURLs[category].format({id: parsedData[emote]});\n\n }\n\n modules__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].saveEmoteData(category, parsedData);\n modules__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].setCacheHash(\"emotes\", category, response.headers.etag);\n resolve(parsedData);\n this.log(`Downloaded ${category}`);\n });\n });\n }\n\n resetEmotes() {\n const categories = Object.keys(Emotes);\n this.unloadEmoteData(categories);\n\n for (const cat of categories) modules__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].invalidateCache(\"emotes\", cat);\n\n this.loadEmoteData();\n }\n\n}()); // (async () => {\n// const emoteData = await new Promise(resolve => {\n// const req = require(\"request\");\n// req.get({url: \"https://twitchemotes.com/api_cache/v3/global.json\", json: true}, (err, resp, parsedData) => {\n// for (const emote in parsedData) {\n// if (emote.length < 4 || window.bemotes.includes(emote)) {\n// delete parsedData[emote];\n// continue;\n// }\n// parsedData[emote] = parsedData[emote].id;\n// }\n// resolve(parsedData);\n// });\n// });\n// const fs = require(\"fs\");\n// fs.writeFileSync(\"Z:\\\\Programming\\\\BetterDiscordStuff\\\\BetterDiscordApp\\\\data\\\\emotes\\\\global.json\", JSON.stringify(emoteData));\n// return emoteData;\n// })();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYnVpbHRpbnMvZW1vdGVzL2Vtb3Rlcy5qcz9jNGNjIl0sIm5hbWVzIjpbInJlcXVlc3QiLCJyZXF1aXJlIiwiRW1vdGVVUkxzIiwiVHdpdGNoR2xvYmFsIiwiRm9ybWF0dGFibGVTdHJpbmciLCJUd2l0Y2hTdWJzY3JpYmVyIiwiRnJhbmtlckZhY2VaIiwiQlRUViIsIkVtb3RlcyIsImJsYWNrbGlzdCIsIm92ZXJyaWRlcyIsIm1vZGlmaWVycyIsIkVtb3RlTW9kdWxlIiwiQnVpbHRpbiIsIm5hbWUiLCJjb2xsZWN0aW9uIiwiY2F0ZWdvcnkiLCJpZCIsImNhdGVnb3JpZXMiLCJPYmplY3QiLCJrZXlzIiwiZmlsdGVyIiwiayIsImlzQ2F0ZWdvcnlFbmFibGVkIiwic2hvdWxkRG93bmxvYWQiLCJTZXR0aW5ncyIsImdldCIsInRvTG93ZXJDYXNlIiwiTWVzc2FnZUNvbXBvbmVudCIsIldlYnBhY2tNb2R1bGVzIiwiZmluZCIsIm0iLCJkZWZhdWx0IiwiZGlzcGxheU5hbWUiLCJmYXZvcml0ZXMiLCJmYXZvcml0ZUVtb3RlcyIsImdldFVybCIsImZvcm1hdCIsImdldENhdGVnb3J5IiwiZ2V0UmVtb3RlRmlsZSIsIlV0aWxpdGllcyIsInJlcG9VcmwiLCJpbml0aWFsaXplIiwic3RvcmVkRmF2b3JpdGVzIiwiRGF0YVN0b3JlIiwiZ2V0QkREYXRhIiwiYWRkRmF2b3JpdGUiLCJiaW5kIiwicmVtb3ZlRmF2b3JpdGUiLCJvbkNhdGVnb3J5VG9nZ2xlIiwicmVzZXRFbW90ZXMiLCJlbmFibGVkIiwicmVnaXN0ZXJDb2xsZWN0aW9uIiwiRW1vdGVDb25maWciLCJ0aXRsZSIsIlN0cmluZ3MiLCJjbGVhckVtb3RlcyIsIm9uQ2xpY2siLCJnZXRCbGFja2xpc3QiLCJsb2FkRW1vdGVEYXRhIiwiRXZlbnRzIiwib24iLCJwYXRjaE1lc3NhZ2VDb250ZW50IiwiZGlzYWJsZWQiLCJvZmYiLCJyZW1vdmVDb2xsZWN0aW9uIiwiZW1wdHlFbW90ZXMiLCJjYW5jZWxFbW90ZVJlbmRlciIsImNhdCIsInVubG9hZEVtb3RlRGF0YSIsInVybCIsImhhc093blByb3BlcnR5Iiwic2F2ZUZhdm9yaXRlcyIsImlzRmF2b3JpdGUiLCJzZXRCRERhdGEiLCJhc3NpZ24iLCJiZWZvcmUiLCJ0aGlzT2JqIiwiYXJncyIsIm5vZGVzIiwiY2hpbGRyZW5NZXNzYWdlQ29udGVudCIsInByb3BzIiwiY29udGVudCIsImxlbmd0aCIsIm4iLCJub2RlIiwid29yZHMiLCJzcGxpdCIsImMiLCJjbGVuIiwidyIsIndsZW4iLCJlbW90ZSIsImVtb3RlU3BsaXQiLCJlbW90ZU5hbWUiLCJlbW90ZU1vZGlmaWVyIiwiZW1vdGVPdmVycmlkZSIsInNsaWNlIiwiaW5jbHVkZXMiLCJjdXJyZW50IiwicmVzdWx0cyIsIm1hdGNoIiwiUmVnRXhwIiwiZXNjYXBlIiwicHJlIiwic3Vic3RyaW5nIiwiaW5kZXgiLCJwb3N0IiwiZW1vdGVDb21wb25lbnQiLCJEaXNjb3JkTW9kdWxlcyIsIlJlYWN0IiwiY3JlYXRlRWxlbWVudCIsIkJERW1vdGUiLCJtb2RpZmllciIsInNwbGljZSIsIm9ubHlFbW90ZXMiLCJldmVyeSIsInIiLCJyZXBsYWNlIiwidHlwZSIsImNoaWxkcmVuIiwiZW1vamlOYW1lIiwianVtYm9hYmxlIiwiZXhpc3RzIiwiZW1vdGVzRXhpc3QiLCJ2YWxpZCIsImlzQ2FjaGVWYWxpZCIsInVzZUNhY2hlIiwibGlzdCIsImdldEVtb3RlRGF0YSIsImRvd25sb2FkRW1vdGVzIiwicHVzaCIsImVyciIsIlByb21pc2UiLCJyZXNvbHZlIiwiZXRhZyIsImdldENhY2hlSGFzaCIsImhlYWQiLCJoZWFkZXJzIiwicmVzcCIsInN0YXR1c0NvZGUiLCJBcnJheSIsImlzQXJyYXkiLCJhbGwiLCJtYXAiLCJUb2FzdHMiLCJzaG93IiwibG9hZGluZyIsImVtb3Rlc0xvYWRlZCIsImRhdGEiLCJsb2ciLCJjYWNoZWREYXRhIiwiaGFzRGF0YSIsInNldFRpbWVvdXQiLCJkaXNwYXRjaCIsImxvYWRlZCIsIm9wdGlvbnMiLCJ0aW1lb3V0IiwianNvbiIsImVycm9yIiwicmVzcG9uc2UiLCJwYXJzZWREYXRhIiwic3RhY2t0cmFjZSIsInNhdmVFbW90ZURhdGEiLCJzZXRDYWNoZUhhc2giLCJpbnZhbGlkYXRlQ2FjaGUiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUNBLE1BQU1BLE9BQU8sR0FBR0MsbUJBQU8sQ0FBQyx3QkFBRCxDQUF2Qjs7QUFFQSxNQUFNQyxTQUFTLEdBQUc7QUFDZEMsY0FBWSxFQUFFLElBQUlDLHVEQUFKLENBQXVCLHNEQUF2QixDQURBO0FBRWRDLGtCQUFnQixFQUFFLElBQUlELHVEQUFKLENBQXVCLHNEQUF2QixDQUZKO0FBR2RFLGNBQVksRUFBRSxJQUFJRix1REFBSixDQUF1QixnREFBdkIsQ0FIQTtBQUlkRyxNQUFJLEVBQUUsSUFBSUgsdURBQUosQ0FBdUIsMkNBQXZCO0FBSlEsQ0FBbEI7QUFPQSxNQUFNSSxNQUFNLEdBQUc7QUFDWEwsY0FBWSxFQUFFLEVBREg7QUFFWEUsa0JBQWdCLEVBQUUsRUFGUDtBQUdYRSxNQUFJLEVBQUUsRUFISztBQUlYRCxjQUFZLEVBQUU7QUFKSCxDQUFmO0FBT0EsTUFBTUcsU0FBUyxHQUFHLEVBQWxCO0FBQ0EsTUFBTUMsU0FBUyxHQUFHLENBQUMsUUFBRCxFQUFXLFlBQVgsRUFBeUIsTUFBekIsRUFBaUMsS0FBakMsQ0FBbEI7QUFDQSxNQUFNQyxTQUFTLEdBQUcsQ0FBQyxNQUFELEVBQVMsTUFBVCxFQUFpQixPQUFqQixFQUEwQixPQUExQixFQUFtQyxPQUFuQyxFQUE0QyxPQUE1QyxFQUFxRCxPQUFyRCxFQUE4RCxPQUE5RCxFQUF1RSxJQUF2RSxFQUE2RSxJQUE3RSxFQUFtRixJQUFuRixFQUF5RixPQUF6RixFQUFrRyxRQUFsRyxFQUE0RyxRQUE1RyxFQUFzSCxNQUF0SCxDQUFsQjtBQUVlLG1FQUFJLE1BQU1DLFdBQU4sU0FBMEJDLHdEQUExQixDQUFrQztBQUNqRCxNQUFJQyxJQUFKLEdBQVc7QUFBQyxXQUFPLFFBQVA7QUFBaUI7O0FBQzdCLE1BQUlDLFVBQUosR0FBaUI7QUFBQyxXQUFPLFVBQVA7QUFBbUI7O0FBQ3JDLE1BQUlDLFFBQUosR0FBZTtBQUFDLFdBQU8sU0FBUDtBQUFrQjs7QUFDbEMsTUFBSUMsRUFBSixHQUFTO0FBQUMsV0FBTyxRQUFQO0FBQWlCOztBQUMzQixNQUFJQyxVQUFKLEdBQWlCO0FBQUMsV0FBT0MsTUFBTSxDQUFDQyxJQUFQLENBQVlaLE1BQVosRUFBb0JhLE1BQXBCLENBQTJCQyxDQUFDLElBQUksS0FBS0MsaUJBQUwsQ0FBdUJELENBQXZCLENBQWhDLENBQVA7QUFBbUU7O0FBQ3JGLE1BQUlFLGNBQUosR0FBcUI7QUFBQyxXQUFPQyxnREFBUSxDQUFDQyxHQUFULENBQWEsUUFBYixFQUF1QixLQUFLVixRQUE1QixFQUFzQyxVQUF0QyxDQUFQO0FBQTBEOztBQUVoRk8sbUJBQWlCLENBQUNOLEVBQUQsRUFBSztBQUFDLFdBQU8sTUFBTVMsR0FBTixDQUFVLFFBQVYsRUFBb0IsWUFBcEIsRUFBa0NULEVBQUUsQ0FBQ1UsV0FBSCxFQUFsQyxDQUFQO0FBQTREOztBQUVuRkQsS0FBRyxDQUFDVCxFQUFELEVBQUs7QUFBQyxXQUFPLE1BQU1TLEdBQU4sQ0FBVSxRQUFWLEVBQW9CLFNBQXBCLEVBQStCVCxFQUEvQixDQUFQO0FBQTJDOztBQUVwRCxNQUFJVyxnQkFBSixHQUF1QjtBQUFDLFdBQU9DLHNEQUFjLENBQUNDLElBQWYsQ0FBb0JDLENBQUMsSUFBSUEsQ0FBQyxDQUFDQyxPQUFGLElBQWFELENBQUMsQ0FBQ0MsT0FBRixDQUFVQyxXQUF2QixJQUFzQ0YsQ0FBQyxDQUFDQyxPQUFGLENBQVVDLFdBQVYsSUFBeUIsU0FBeEYsQ0FBUDtBQUEyRzs7QUFFbkksTUFBSXpCLE1BQUosR0FBYTtBQUFDLFdBQU9BLE1BQVA7QUFBZTs7QUFDN0IsTUFBSUwsWUFBSixHQUFtQjtBQUFDLFdBQU9LLE1BQU0sQ0FBQ0wsWUFBZDtBQUE0Qjs7QUFDaEQsTUFBSUUsZ0JBQUosR0FBdUI7QUFBQyxXQUFPRyxNQUFNLENBQUNILGdCQUFkO0FBQWdDOztBQUN4RCxNQUFJRSxJQUFKLEdBQVc7QUFBQyxXQUFPQyxNQUFNLENBQUNELElBQWQ7QUFBb0I7O0FBQ2hDLE1BQUlELFlBQUosR0FBbUI7QUFBQyxXQUFPRSxNQUFNLENBQUNGLFlBQWQ7QUFBNEI7O0FBQ2hELE1BQUlHLFNBQUosR0FBZ0I7QUFBQyxXQUFPQSxTQUFQO0FBQWtCOztBQUNuQyxNQUFJeUIsU0FBSixHQUFnQjtBQUFDLFdBQU8sS0FBS0MsY0FBWjtBQUE0Qjs7QUFDN0NDLFFBQU0sQ0FBQ3BCLFFBQUQsRUFBV0YsSUFBWCxFQUFpQjtBQUFDLFdBQU9aLFNBQVMsQ0FBQ2MsUUFBRCxDQUFULENBQW9CcUIsTUFBcEIsQ0FBMkI7QUFBQ3BCLFFBQUUsRUFBRVQsTUFBTSxDQUFDUSxRQUFELENBQU4sQ0FBaUJGLElBQWpCO0FBQUwsS0FBM0IsQ0FBUDtBQUFpRTs7QUFFekZ3QixhQUFXLENBQUN0QixRQUFELEVBQVc7QUFBQyxXQUFPUixNQUFNLENBQUNRLFFBQUQsQ0FBYjtBQUF5Qjs7QUFDaER1QixlQUFhLENBQUN2QixRQUFELEVBQVc7QUFBQyxXQUFPd0IsaURBQVMsQ0FBQ0MsT0FBVixDQUFtQixpQkFBZ0J6QixRQUFRLENBQUNXLFdBQVQsRUFBdUIsT0FBMUQsQ0FBUDtBQUEwRTs7QUFFbkdlLFlBQVUsR0FBRztBQUNULFVBQU1BLFVBQU47QUFDQSxVQUFNQyxlQUFlLEdBQUdDLGlEQUFTLENBQUNDLFNBQVYsQ0FBb0IsZ0JBQXBCLENBQXhCO0FBQ0EsU0FBS1YsY0FBTCxHQUFzQlEsZUFBZSxJQUFJLEVBQXpDO0FBQ0EsU0FBS0csV0FBTCxHQUFtQixLQUFLQSxXQUFMLENBQWlCQyxJQUFqQixDQUFzQixJQUF0QixDQUFuQjtBQUNBLFNBQUtDLGNBQUwsR0FBc0IsS0FBS0EsY0FBTCxDQUFvQkQsSUFBcEIsQ0FBeUIsSUFBekIsQ0FBdEI7QUFDQSxTQUFLRSxnQkFBTCxHQUF3QixLQUFLQSxnQkFBTCxDQUFzQkYsSUFBdEIsQ0FBMkIsSUFBM0IsQ0FBeEI7QUFDQSxTQUFLRyxXQUFMLEdBQW1CLEtBQUtBLFdBQUwsQ0FBaUJILElBQWpCLENBQXNCLElBQXRCLENBQW5CO0FBQ0g7O0FBRUQsUUFBTUksT0FBTixHQUFnQjtBQUNaMUIsb0RBQVEsQ0FBQzJCLGtCQUFULENBQTRCLFFBQTVCLEVBQXNDLFFBQXRDLEVBQWdEQyxnREFBaEQsRUFBNkQ7QUFBQ0MsV0FBSyxFQUFFQywrQ0FBTyxDQUFDL0MsTUFBUixDQUFlZ0QsV0FBdkI7QUFBb0NDLGFBQU8sRUFBRSxLQUFLUDtBQUFsRCxLQUE3RDtBQUNBLFVBQU0sS0FBS1EsWUFBTCxFQUFOO0FBQ0EsVUFBTSxLQUFLQyxhQUFMLEVBQU47QUFFQUMsa0RBQU0sQ0FBQ0MsRUFBUCxDQUFVLHVCQUFWLEVBQW1DLEtBQUtmLFdBQXhDO0FBQ0FjLGtEQUFNLENBQUNDLEVBQVAsQ0FBVSx5QkFBVixFQUFxQyxLQUFLYixjQUExQztBQUNBWSxrREFBTSxDQUFDQyxFQUFQLENBQVUsaUJBQVYsRUFBNkIsS0FBS1osZ0JBQWxDO0FBQ0EsU0FBS2EsbUJBQUw7QUFDSDs7QUFFREMsVUFBUSxHQUFHO0FBQ1BILGtEQUFNLENBQUNJLEdBQVAsQ0FBVyxpQkFBWCxFQUE4QixLQUFLZixnQkFBbkM7QUFDQVcsa0RBQU0sQ0FBQ0ksR0FBUCxDQUFXLHVCQUFYLEVBQW9DLEtBQUtsQixXQUF6QztBQUNBYyxrREFBTSxDQUFDSSxHQUFQLENBQVcseUJBQVgsRUFBc0MsS0FBS2hCLGNBQTNDO0FBQ0F2QixvREFBUSxDQUFDd0MsZ0JBQVQsQ0FBMEIsUUFBMUI7QUFDQSxTQUFLQyxXQUFMO0FBQ0EsUUFBSSxDQUFDLEtBQUtDLGlCQUFWLEVBQTZCO0FBQzdCLFNBQUtBLGlCQUFMO0FBQ0EsV0FBTyxLQUFLQSxpQkFBWjtBQUNIOztBQUVEbEIsa0JBQWdCLENBQUNsQyxVQUFELEVBQWFxRCxHQUFiLEVBQWtCcEQsUUFBbEIsRUFBNEJtQyxPQUE1QixFQUFxQztBQUNqRCxRQUFJcEMsVUFBVSxJQUFJLFFBQWQsSUFBMEJxRCxHQUFHLElBQUksWUFBckMsRUFBbUQ7QUFDbkQsUUFBSWpCLE9BQUosRUFBYSxPQUFPLEtBQUtRLGFBQUwsQ0FBbUIzQyxRQUFuQixDQUFQO0FBQ2IsV0FBTyxLQUFLcUQsZUFBTCxDQUFxQnJELFFBQXJCLENBQVA7QUFDSDs7QUFFRDhCLGFBQVcsQ0FBQ2hDLElBQUQsRUFBT3dELEdBQVAsRUFBWTtBQUNuQixRQUFJLENBQUMsS0FBS25DLGNBQUwsQ0FBb0JvQyxjQUFwQixDQUFtQ3pELElBQW5DLENBQUwsRUFBK0MsS0FBS3FCLGNBQUwsQ0FBb0JyQixJQUFwQixJQUE0QndELEdBQTVCO0FBQy9DLFNBQUtFLGFBQUw7QUFDSDs7QUFFRHhCLGdCQUFjLENBQUNsQyxJQUFELEVBQU87QUFDakIsUUFBSSxDQUFDLEtBQUtxQixjQUFMLENBQW9Cb0MsY0FBcEIsQ0FBbUN6RCxJQUFuQyxDQUFMLEVBQStDO0FBQy9DLFdBQU8sS0FBS3FCLGNBQUwsQ0FBb0JyQixJQUFwQixDQUFQO0FBQ0EsU0FBSzBELGFBQUw7QUFDSDs7QUFFREMsWUFBVSxDQUFDM0QsSUFBRCxFQUFPO0FBQ2IsV0FBTyxLQUFLcUIsY0FBTCxDQUFvQm9DLGNBQXBCLENBQW1DekQsSUFBbkMsQ0FBUDtBQUNIOztBQUVEMEQsZUFBYSxHQUFHO0FBQ1o1QixxREFBUyxDQUFDOEIsU0FBVixDQUFvQixnQkFBcEIsRUFBc0MsS0FBS3ZDLGNBQTNDO0FBQ0g7O0FBRUQrQixhQUFXLEdBQUc7QUFDVixTQUFLLE1BQU1FLEdBQVgsSUFBa0I1RCxNQUFsQixFQUEwQlcsTUFBTSxDQUFDd0QsTUFBUCxDQUFjbkUsTUFBZCxFQUFzQjtBQUFDLE9BQUM0RCxHQUFELEdBQU87QUFBUixLQUF0QjtBQUM3Qjs7QUFFRE4scUJBQW1CLEdBQUc7QUFDbEIsUUFBSSxLQUFLSyxpQkFBVCxFQUE0QjtBQUM1QixTQUFLQSxpQkFBTCxHQUF5QixLQUFLUyxNQUFMLENBQVksS0FBS2hELGdCQUFqQixFQUFtQyxTQUFuQyxFQUE4QyxDQUFDaUQsT0FBRCxFQUFVQyxJQUFWLEtBQW1CO0FBQ3RGLFlBQU1DLEtBQUssR0FBR0QsSUFBSSxDQUFDLENBQUQsQ0FBSixDQUFRRSxzQkFBUixDQUErQkMsS0FBL0IsQ0FBcUNDLE9BQW5EO0FBQ0EsVUFBSSxDQUFDSCxLQUFELElBQVUsQ0FBQ0EsS0FBSyxDQUFDSSxNQUFyQixFQUE2Qjs7QUFDN0IsV0FBSyxJQUFJQyxDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHTCxLQUFLLENBQUNJLE1BQTFCLEVBQWtDQyxDQUFDLEVBQW5DLEVBQXVDO0FBQ25DLGNBQU1DLElBQUksR0FBR04sS0FBSyxDQUFDSyxDQUFELENBQWxCO0FBQ0EsWUFBSSxPQUFPQyxJQUFQLEtBQWlCLFFBQXJCLEVBQStCO0FBQy9CLGNBQU1DLEtBQUssR0FBR0QsSUFBSSxDQUFDRSxLQUFMLENBQVcsbUJBQVgsQ0FBZDs7QUFDQSxhQUFLLElBQUlDLENBQUMsR0FBRyxDQUFSLEVBQVdDLElBQUksR0FBRyxLQUFLdkUsVUFBTCxDQUFnQmlFLE1BQXZDLEVBQStDSyxDQUFDLEdBQUdDLElBQW5ELEVBQXlERCxDQUFDLEVBQTFELEVBQThEO0FBQzFELGVBQUssSUFBSUUsQ0FBQyxHQUFHLENBQVIsRUFBV0MsSUFBSSxHQUFHTCxLQUFLLENBQUNILE1BQTdCLEVBQXFDTyxDQUFDLEdBQUdDLElBQXpDLEVBQStDRCxDQUFDLEVBQWhELEVBQW9EO0FBQ2hELGtCQUFNRSxLQUFLLEdBQUdOLEtBQUssQ0FBQ0ksQ0FBRCxDQUFuQjtBQUNBLGtCQUFNRyxVQUFVLEdBQUdELEtBQUssQ0FBQ0wsS0FBTixDQUFZLEdBQVosQ0FBbkI7QUFDQSxrQkFBTU8sU0FBUyxHQUFHRCxVQUFVLENBQUMsQ0FBRCxDQUE1QjtBQUNBLGdCQUFJRSxhQUFhLEdBQUdGLFVBQVUsQ0FBQyxDQUFELENBQVYsR0FBZ0JBLFVBQVUsQ0FBQyxDQUFELENBQTFCLEdBQWdDLEVBQXBEO0FBQ0EsZ0JBQUlHLGFBQWEsR0FBR0QsYUFBYSxDQUFDRSxLQUFkLENBQW9CLENBQXBCLENBQXBCO0FBRUEsZ0JBQUlILFNBQVMsQ0FBQ1gsTUFBVixHQUFtQixDQUFuQixJQUF3QjFFLFNBQVMsQ0FBQ3lGLFFBQVYsQ0FBbUJKLFNBQW5CLENBQTVCLEVBQTJEO0FBQzNELGdCQUFJLENBQUNuRixTQUFTLENBQUN1RixRQUFWLENBQW1CSCxhQUFuQixDQUFELElBQXNDLENBQUN0RSxnREFBUSxDQUFDQyxHQUFULENBQWEsUUFBYixFQUF1QixTQUF2QixFQUFrQyxXQUFsQyxDQUEzQyxFQUEyRnFFLGFBQWEsR0FBRyxFQUFoQjtBQUMzRixnQkFBSSxDQUFDckYsU0FBUyxDQUFDd0YsUUFBVixDQUFtQkYsYUFBbkIsQ0FBTCxFQUF3Q0EsYUFBYSxHQUFHLEVBQWhCLENBQXhDLEtBQ0tELGFBQWEsR0FBR0MsYUFBaEI7QUFFTCxnQkFBSUcsT0FBTyxHQUFHLEtBQUtqRixVQUFMLENBQWdCc0UsQ0FBaEIsQ0FBZDs7QUFDQSxnQkFBSVEsYUFBYSxLQUFLLFFBQXRCLEVBQWdDO0FBQzVCLGtCQUFJeEYsTUFBTSxDQUFDTCxZQUFQLENBQW9CMkYsU0FBcEIsQ0FBSixFQUFvQ0ssT0FBTyxHQUFHLGNBQVYsQ0FBcEMsS0FDSyxJQUFJM0YsTUFBTSxDQUFDSCxnQkFBUCxDQUF3QnlGLFNBQXhCLENBQUosRUFBd0NLLE9BQU8sR0FBRyxrQkFBVjtBQUNoRCxhQUhELE1BSUssSUFBSUgsYUFBYSxLQUFLLFlBQXRCLEVBQW9DO0FBQ3JDLGtCQUFJeEYsTUFBTSxDQUFDSCxnQkFBUCxDQUF3QnlGLFNBQXhCLENBQUosRUFBd0NLLE9BQU8sR0FBRyxrQkFBVjtBQUMzQyxhQUZJLE1BR0EsSUFBSUgsYUFBYSxLQUFLLE1BQXRCLEVBQThCO0FBQy9CLGtCQUFJeEYsTUFBTSxDQUFDRCxJQUFQLENBQVl1RixTQUFaLENBQUosRUFBNEJLLE9BQU8sR0FBRyxNQUFWO0FBQy9CLGFBRkksTUFHQSxJQUFJSCxhQUFhLEtBQUssS0FBdEIsRUFBNkI7QUFDOUIsa0JBQUl4RixNQUFNLENBQUNGLFlBQVAsQ0FBb0J3RixTQUFwQixDQUFKLEVBQW9DSyxPQUFPLEdBQUcsY0FBVjtBQUN2Qzs7QUFFRCxnQkFBSSxDQUFDM0YsTUFBTSxDQUFDMkYsT0FBRCxDQUFOLENBQWdCTCxTQUFoQixDQUFMLEVBQWlDO0FBQ2pDLGtCQUFNTSxPQUFPLEdBQUdyQixLQUFLLENBQUNLLENBQUQsQ0FBTCxDQUFTaUIsS0FBVCxDQUFlLElBQUlDLE1BQUosQ0FBWSxZQUFXOUQsaURBQVMsQ0FBQytELE1BQVYsQ0FBaUJSLGFBQWEsR0FBR0QsU0FBUyxHQUFHLEdBQVosR0FBa0JDLGFBQXJCLEdBQXFDRCxTQUFuRSxDQUE4RSxXQUFyRyxDQUFmLENBQWhCO0FBQ0EsZ0JBQUksQ0FBQ00sT0FBTCxFQUFjO0FBQ2Qsa0JBQU1JLEdBQUcsR0FBR3pCLEtBQUssQ0FBQ0ssQ0FBRCxDQUFMLENBQVNxQixTQUFULENBQW1CLENBQW5CLEVBQXNCTCxPQUFPLENBQUNNLEtBQVIsR0FBZ0JOLE9BQU8sQ0FBQyxDQUFELENBQVAsQ0FBV2pCLE1BQWpELENBQVo7QUFDQSxrQkFBTXdCLElBQUksR0FBRzVCLEtBQUssQ0FBQ0ssQ0FBRCxDQUFMLENBQVNxQixTQUFULENBQW1CTCxPQUFPLENBQUNNLEtBQVIsR0FBZ0JOLE9BQU8sQ0FBQyxDQUFELENBQVAsQ0FBV2pCLE1BQTNCLEdBQW9DaUIsT0FBTyxDQUFDLENBQUQsQ0FBUCxDQUFXakIsTUFBbEUsQ0FBYjtBQUNBSixpQkFBSyxDQUFDSyxDQUFELENBQUwsR0FBV29CLEdBQVg7QUFDQSxrQkFBTUksY0FBYyxHQUFHQyxzREFBYyxDQUFDQyxLQUFmLENBQXFCQyxhQUFyQixDQUFtQ0MsaURBQW5DLEVBQTRDO0FBQUNsRyxrQkFBSSxFQUFFZ0YsU0FBUDtBQUFrQnhCLGlCQUFHLEVBQUVwRSxTQUFTLENBQUNpRyxPQUFELENBQVQsQ0FBbUI5RCxNQUFuQixDQUEwQjtBQUFDcEIsa0JBQUUsRUFBRVQsTUFBTSxDQUFDMkYsT0FBRCxDQUFOLENBQWdCTCxTQUFoQjtBQUFMLGVBQTFCLENBQXZCO0FBQW9GbUIsc0JBQVEsRUFBRWxCLGFBQTlGO0FBQTZHdEIsd0JBQVUsRUFBRSxLQUFLQSxVQUFMLENBQWdCcUIsU0FBaEI7QUFBekgsYUFBNUMsQ0FBdkI7QUFDQWYsaUJBQUssQ0FBQ21DLE1BQU4sQ0FBYTlCLENBQUMsR0FBRyxDQUFqQixFQUFvQixDQUFwQixFQUF1QnVCLElBQXZCO0FBQ0E1QixpQkFBSyxDQUFDbUMsTUFBTixDQUFhOUIsQ0FBQyxHQUFHLENBQWpCLEVBQW9CLENBQXBCLEVBQXVCd0IsY0FBdkI7QUFDSDtBQUNKO0FBQ0o7O0FBQ0QsWUFBTU8sVUFBVSxHQUFHcEMsS0FBSyxDQUFDcUMsS0FBTixDQUFZQyxDQUFDLElBQUk7QUFDaEMsWUFBSSxPQUFPQSxDQUFQLElBQWEsUUFBYixJQUF5QkEsQ0FBQyxDQUFDQyxPQUFGLENBQVUsS0FBVixFQUFpQixFQUFqQixLQUF3QixFQUFyRCxFQUF5RCxPQUFPLElBQVAsQ0FBekQsS0FDSyxJQUFJRCxDQUFDLENBQUNFLElBQUYsSUFBVUYsQ0FBQyxDQUFDRSxJQUFGLENBQU96RyxJQUFQLElBQWUsU0FBN0IsRUFBd0MsT0FBTyxJQUFQLENBQXhDLEtBQ0EsSUFBSXVHLENBQUMsQ0FBQ3BDLEtBQUYsSUFBV29DLENBQUMsQ0FBQ3BDLEtBQUYsQ0FBUXVDLFFBQW5CLElBQStCSCxDQUFDLENBQUNwQyxLQUFGLENBQVF1QyxRQUFSLENBQWlCdkMsS0FBaEQsSUFBeURvQyxDQUFDLENBQUNwQyxLQUFGLENBQVF1QyxRQUFSLENBQWlCdkMsS0FBakIsQ0FBdUJ3QyxTQUFwRixFQUErRixPQUFPLElBQVA7QUFDcEcsZUFBTyxLQUFQO0FBQ0gsT0FMa0IsQ0FBbkI7QUFNQSxVQUFJLENBQUNOLFVBQUwsRUFBaUI7O0FBRWpCLFdBQUssTUFBTTlCLElBQVgsSUFBbUJOLEtBQW5CLEVBQTBCO0FBQ3RCLFlBQUksT0FBT00sSUFBUCxJQUFnQixRQUFwQixFQUE4QjtBQUM5QixZQUFJQSxJQUFJLENBQUNrQyxJQUFMLENBQVV6RyxJQUFWLElBQWtCLFNBQXRCLEVBQWlDdUUsSUFBSSxDQUFDSixLQUFMLENBQVd5QyxTQUFYLEdBQXVCLElBQXZCLENBQWpDLEtBQ0ssSUFBSXJDLElBQUksQ0FBQ0osS0FBTCxJQUFjSSxJQUFJLENBQUNKLEtBQUwsQ0FBV3VDLFFBQXpCLElBQXFDbkMsSUFBSSxDQUFDSixLQUFMLENBQVd1QyxRQUFYLENBQW9CdkMsS0FBekQsSUFBa0VJLElBQUksQ0FBQ0osS0FBTCxDQUFXdUMsUUFBWCxDQUFvQnZDLEtBQXBCLENBQTBCd0MsU0FBaEcsRUFBMkdwQyxJQUFJLENBQUNKLEtBQUwsQ0FBV3VDLFFBQVgsQ0FBb0J2QyxLQUFwQixDQUEwQnlDLFNBQTFCLEdBQXNDLElBQXRDO0FBQ25IO0FBQ0osS0E1RHdCLENBQXpCO0FBNkRIOztBQUVELFFBQU1oRSxZQUFOLEdBQXFCO0FBQ2pCLFFBQUk7QUFDQSxZQUFNMUMsUUFBUSxHQUFHLFdBQWpCO0FBQ0EsWUFBTTJHLE1BQU0sR0FBRy9FLGlEQUFTLENBQUNnRixXQUFWLENBQXNCNUcsUUFBdEIsQ0FBZjtBQUNBLFlBQU02RyxLQUFLLEdBQUcsTUFBTSxLQUFLQyxZQUFMLENBQWtCOUcsUUFBbEIsQ0FBcEI7QUFDQSxZQUFNK0csUUFBUSxHQUFJRixLQUFELElBQVksQ0FBQ0EsS0FBRCxJQUFVRixNQUFWLElBQW9CLENBQUMsS0FBS25HLGNBQXZEO0FBQ0EsWUFBTXdHLElBQUksR0FBR0QsUUFBUSxHQUFHbkYsaURBQVMsQ0FBQ3FGLFlBQVYsQ0FBdUJqSCxRQUF2QixDQUFILEdBQXNDLE1BQU0sS0FBS2tILGNBQUwsQ0FBb0JsSCxRQUFwQixDQUFqRTtBQUNBUCxlQUFTLENBQUMwSCxJQUFWLENBQWUsR0FBR0gsSUFBbEI7QUFDSCxLQVBELENBUUEsT0FBT0ksR0FBUCxFQUFZLENBQ1I7QUFDSDtBQUNKOztBQUVETixjQUFZLENBQUM5RyxRQUFELEVBQVc7QUFDbkIsV0FBTyxJQUFJcUgsT0FBSixDQUFZQyxPQUFPLElBQUk7QUFDMUIsWUFBTUMsSUFBSSxHQUFHM0YsaURBQVMsQ0FBQzRGLFlBQVYsQ0FBdUIsUUFBdkIsRUFBaUN4SCxRQUFqQyxDQUFiO0FBQ0EsVUFBSSxDQUFDdUgsSUFBTCxFQUFXLE9BQU9ELE9BQU8sQ0FBQyxLQUFELENBQWQ7QUFDWHRJLGFBQU8sQ0FBQ3lJLElBQVIsQ0FBYTtBQUFDbkUsV0FBRyxFQUFFLEtBQUsvQixhQUFMLENBQW1CdkIsUUFBbkIsQ0FBTjtBQUFvQzBILGVBQU8sRUFBRTtBQUFDLDJCQUFpQkg7QUFBbEI7QUFBN0MsT0FBYixFQUFvRixDQUFDSCxHQUFELEVBQU1PLElBQU4sS0FBZTtBQUMvRkwsZUFBTyxDQUFDSyxJQUFJLENBQUNDLFVBQUwsSUFBbUIsR0FBcEIsQ0FBUDtBQUNILE9BRkQ7QUFHSCxLQU5NLENBQVA7QUFPSDs7QUFFRCxRQUFNakYsYUFBTixDQUFvQnpDLFVBQXBCLEVBQWdDO0FBQzVCLFFBQUksQ0FBQ0EsVUFBTCxFQUFpQkEsVUFBVSxHQUFHLEtBQUtBLFVBQWxCO0FBQ2pCLFFBQUksQ0FBQzJILEtBQUssQ0FBQ0MsT0FBTixDQUFjNUgsVUFBZCxDQUFMLEVBQWdDQSxVQUFVLEdBQUcsQ0FBQ0EsVUFBRCxDQUFiO0FBQ2hDLFVBQU02SCxHQUFHLEdBQUc1SCxNQUFNLENBQUNDLElBQVAsQ0FBWVosTUFBWixDQUFaO0FBQ0FVLGNBQVUsR0FBR0EsVUFBVSxDQUFDOEgsR0FBWCxDQUFlMUgsQ0FBQyxJQUFJeUgsR0FBRyxDQUFDakgsSUFBSixDQUFTMEQsQ0FBQyxJQUFJQSxDQUFDLENBQUM3RCxXQUFGLE1BQW1CTCxDQUFDLENBQUNLLFdBQUYsRUFBakMsQ0FBcEIsQ0FBYjtBQUNBc0gsc0RBQU0sQ0FBQ0MsSUFBUCxDQUFZM0YsK0NBQU8sQ0FBQy9DLE1BQVIsQ0FBZTJJLE9BQTNCLEVBQW9DO0FBQUM1QixVQUFJLEVBQUU7QUFBUCxLQUFwQztBQUNBLFNBQUs2QixZQUFMLEdBQW9CLEtBQXBCOztBQUVBLFNBQUssTUFBTXBJLFFBQVgsSUFBdUJFLFVBQXZCLEVBQW1DO0FBQy9CLFlBQU15RyxNQUFNLEdBQUcvRSxpREFBUyxDQUFDZ0YsV0FBVixDQUFzQjVHLFFBQXRCLENBQWY7QUFDQSxZQUFNNkcsS0FBSyxHQUFHLE1BQU0sS0FBS0MsWUFBTCxDQUFrQjlHLFFBQWxCLENBQXBCO0FBQ0EsWUFBTStHLFFBQVEsR0FBSUYsS0FBRCxJQUFZLENBQUNBLEtBQUQsSUFBVUYsTUFBVixJQUFvQixDQUFDLEtBQUtuRyxjQUF2RDtBQUNBLFVBQUk2SCxJQUFJLEdBQUcsSUFBWDs7QUFDQSxVQUFJdEIsUUFBSixFQUFjO0FBQ1YsYUFBS3VCLEdBQUwsQ0FBVSxXQUFVdEksUUFBUywyQkFBN0I7QUFDQSxjQUFNdUksVUFBVSxHQUFHM0csaURBQVMsQ0FBQ3FGLFlBQVYsQ0FBdUJqSCxRQUF2QixDQUFuQjtBQUNBLGNBQU13SSxPQUFPLEdBQUdySSxNQUFNLENBQUNDLElBQVAsQ0FBWW1JLFVBQVosRUFBd0JwRSxNQUF4QixHQUFpQyxDQUFqRDtBQUNBLFlBQUlxRSxPQUFKLEVBQWFILElBQUksR0FBR0UsVUFBUDtBQUNoQjs7QUFDRCxVQUFJLENBQUNGLElBQUwsRUFBV0EsSUFBSSxHQUFHLE1BQU0sS0FBS25CLGNBQUwsQ0FBb0JsSCxRQUFwQixDQUFiO0FBQ1hHLFlBQU0sQ0FBQ3dELE1BQVAsQ0FBY25FLE1BQU0sQ0FBQ1EsUUFBRCxDQUFwQixFQUFnQ3FJLElBQWhDO0FBQ0EsWUFBTSxJQUFJaEIsT0FBSixDQUFZaEIsQ0FBQyxJQUFJb0MsVUFBVSxDQUFDcEMsQ0FBRCxFQUFJLElBQUosQ0FBM0IsQ0FBTjtBQUNIOztBQUVELFNBQUsrQixZQUFMLEdBQW9CLElBQXBCO0FBQ0F4RixrREFBTSxDQUFDOEYsUUFBUCxDQUFnQixlQUFoQjtBQUNBVCxzREFBTSxDQUFDQyxJQUFQLENBQVkzRiwrQ0FBTyxDQUFDL0MsTUFBUixDQUFlbUosTUFBM0IsRUFBbUM7QUFBQ3BDLFVBQUksRUFBRTtBQUFQLEtBQW5DO0FBQ0g7O0FBRURsRCxpQkFBZSxDQUFDbkQsVUFBRCxFQUFhO0FBQ3hCLFFBQUksQ0FBQ0EsVUFBTCxFQUFpQkEsVUFBVSxHQUFHLEtBQUtBLFVBQWxCO0FBQ2pCLFFBQUksQ0FBQzJILEtBQUssQ0FBQ0MsT0FBTixDQUFjNUgsVUFBZCxDQUFMLEVBQWdDQSxVQUFVLEdBQUcsQ0FBQ0EsVUFBRCxDQUFiO0FBQ2hDLFVBQU02SCxHQUFHLEdBQUc1SCxNQUFNLENBQUNDLElBQVAsQ0FBWVosTUFBWixDQUFaO0FBQ0FVLGNBQVUsR0FBR0EsVUFBVSxDQUFDOEgsR0FBWCxDQUFlMUgsQ0FBQyxJQUFJeUgsR0FBRyxDQUFDakgsSUFBSixDQUFTMEQsQ0FBQyxJQUFJQSxDQUFDLENBQUM3RCxXQUFGLE1BQW1CTCxDQUFDLENBQUNLLFdBQUYsRUFBakMsQ0FBcEIsQ0FBYjs7QUFDQSxTQUFLLE1BQU1YLFFBQVgsSUFBdUJFLFVBQXZCLEVBQW1DO0FBQy9CLGFBQU9WLE1BQU0sQ0FBQ1EsUUFBRCxDQUFiO0FBQ0FSLFlBQU0sQ0FBQ1EsUUFBRCxDQUFOLEdBQW1CLEVBQW5CO0FBQ0g7QUFDSjs7QUFFRGtILGdCQUFjLENBQUNsSCxRQUFELEVBQVc7QUFDckIsVUFBTXNELEdBQUcsR0FBRyxLQUFLL0IsYUFBTCxDQUFtQnZCLFFBQW5CLENBQVo7QUFDQSxTQUFLc0ksR0FBTCxDQUFVLGVBQWN0SSxRQUFTLFNBQVFzRCxHQUFJLEVBQTdDO0FBQ0EsVUFBTXNGLE9BQU8sR0FBRztBQUFDdEYsU0FBRyxFQUFFQSxHQUFOO0FBQVd1RixhQUFPLEVBQUUsS0FBcEI7QUFBMkJDLFVBQUksRUFBRTtBQUFqQyxLQUFoQjtBQUNBLFdBQU8sSUFBSXpCLE9BQUosQ0FBWUMsT0FBTyxJQUFJO0FBQzFCdEksYUFBTyxDQUFDMEIsR0FBUixDQUFZa0ksT0FBWixFQUFxQixDQUFDRyxLQUFELEVBQVFDLFFBQVIsRUFBa0JDLFVBQWxCLEtBQWlDO0FBQ2xELFlBQUlGLEtBQUssSUFBSUMsUUFBUSxDQUFDcEIsVUFBVCxJQUF1QixHQUFwQyxFQUF5QztBQUNyQyxlQUFLc0IsVUFBTCxDQUFpQixzQkFBcUJsSixRQUFTLFVBQS9DLEVBQTBEK0ksS0FBMUQ7QUFDQSxpQkFBT3pCLE9BQU8sQ0FBQyxFQUFELENBQWQ7QUFDSDs7QUFFRCxhQUFLLE1BQU0xQyxLQUFYLElBQW9CcUUsVUFBcEIsRUFBZ0M7QUFDNUIsY0FBSXJFLEtBQUssQ0FBQ1QsTUFBTixHQUFlLENBQWYsSUFBb0IxRSxTQUFTLENBQUN5RixRQUFWLENBQW1CTixLQUFuQixDQUFwQixJQUFpRCxDQUFDcUUsVUFBVSxDQUFDckUsS0FBRCxDQUFoRSxFQUF5RTtBQUNyRSxtQkFBT3FFLFVBQVUsQ0FBQ3JFLEtBQUQsQ0FBakI7QUFDQTtBQUNILFdBSjJCLENBSzVCOztBQUNIOztBQUNEaEQseURBQVMsQ0FBQ3VILGFBQVYsQ0FBd0JuSixRQUF4QixFQUFrQ2lKLFVBQWxDO0FBQ0FySCx5REFBUyxDQUFDd0gsWUFBVixDQUF1QixRQUF2QixFQUFpQ3BKLFFBQWpDLEVBQTJDZ0osUUFBUSxDQUFDdEIsT0FBVCxDQUFpQkgsSUFBNUQ7QUFDQUQsZUFBTyxDQUFDMkIsVUFBRCxDQUFQO0FBQ0EsYUFBS1gsR0FBTCxDQUFVLGNBQWF0SSxRQUFTLEVBQWhDO0FBQ0gsT0FqQkQ7QUFrQkgsS0FuQk0sQ0FBUDtBQW9CSDs7QUFFRGtDLGFBQVcsR0FBRztBQUNWLFVBQU1oQyxVQUFVLEdBQUdDLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZWixNQUFaLENBQW5CO0FBQ0EsU0FBSzZELGVBQUwsQ0FBcUJuRCxVQUFyQjs7QUFDQSxTQUFLLE1BQU1rRCxHQUFYLElBQWtCbEQsVUFBbEIsRUFBOEIwQixpREFBUyxDQUFDeUgsZUFBVixDQUEwQixRQUExQixFQUFvQ2pHLEdBQXBDOztBQUM5QixTQUFLVCxhQUFMO0FBQ0g7O0FBdlBnRCxDQUF0QyxFQUFmLEUsQ0EyUEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vc3JjL2J1aWx0aW5zL2Vtb3Rlcy9lbW90ZXMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQnVpbHRpbiBmcm9tIFwiLi4vLi4vc3RydWN0cy9idWlsdGluXCI7XHJcblxyXG5pbXBvcnQge0Vtb3RlQ29uZmlnfSBmcm9tIFwiZGF0YVwiO1xyXG5pbXBvcnQge1V0aWxpdGllcywgV2VicGFja01vZHVsZXMsIERhdGFTdG9yZSwgRGlzY29yZE1vZHVsZXMsIEV2ZW50cywgU2V0dGluZ3MsIFN0cmluZ3N9IGZyb20gXCJtb2R1bGVzXCI7XHJcbmltcG9ydCBCREVtb3RlIGZyb20gXCIuLi8uLi91aS9lbW90ZVwiO1xyXG5pbXBvcnQgVG9hc3RzIGZyb20gXCIuLi8uLi91aS90b2FzdHNcIjtcclxuaW1wb3J0IEZvcm1hdHRhYmxlU3RyaW5nIGZyb20gXCIuLi8uLi9zdHJ1Y3RzL3N0cmluZ1wiO1xyXG5jb25zdCByZXF1ZXN0ID0gcmVxdWlyZShcInJlcXVlc3RcIik7XHJcblxyXG5jb25zdCBFbW90ZVVSTHMgPSB7XHJcbiAgICBUd2l0Y2hHbG9iYWw6IG5ldyBGb3JtYXR0YWJsZVN0cmluZyhgaHR0cHM6Ly9zdGF0aWMtY2RuLmp0dm53Lm5ldC9lbW90aWNvbnMvdjEve3tpZH19LzEuMGApLFxyXG4gICAgVHdpdGNoU3Vic2NyaWJlcjogbmV3IEZvcm1hdHRhYmxlU3RyaW5nKGBodHRwczovL3N0YXRpYy1jZG4uanR2bncubmV0L2Vtb3RpY29ucy92MS97e2lkfX0vMS4wYCksXHJcbiAgICBGcmFua2VyRmFjZVo6IG5ldyBGb3JtYXR0YWJsZVN0cmluZyhgaHR0cHM6Ly9jZG4uZnJhbmtlcmZhY2V6LmNvbS9lbW90aWNvbi97e2lkfX0vMWApLFxyXG4gICAgQlRUVjogbmV3IEZvcm1hdHRhYmxlU3RyaW5nKGBodHRwczovL2Nkbi5iZXR0ZXJ0dHYubmV0L2Vtb3RlL3t7aWR9fS8xeGApLFxyXG59O1xyXG5cclxuY29uc3QgRW1vdGVzID0ge1xyXG4gICAgVHdpdGNoR2xvYmFsOiB7fSxcclxuICAgIFR3aXRjaFN1YnNjcmliZXI6IHt9LFxyXG4gICAgQlRUVjoge30sXHJcbiAgICBGcmFua2VyRmFjZVo6IHt9XHJcbn07XHJcblxyXG5jb25zdCBibGFja2xpc3QgPSBbXTtcclxuY29uc3Qgb3ZlcnJpZGVzID0gW1widHdpdGNoXCIsIFwic3Vic2NyaWJlclwiLCBcImJ0dHZcIiwgXCJmZnpcIl07XHJcbmNvbnN0IG1vZGlmaWVycyA9IFtcImZsaXBcIiwgXCJzcGluXCIsIFwicHVsc2VcIiwgXCJzcGluMlwiLCBcInNwaW4zXCIsIFwiMXNwaW5cIiwgXCIyc3BpblwiLCBcIjNzcGluXCIsIFwidHJcIiwgXCJibFwiLCBcImJyXCIsIFwic2hha2VcIiwgXCJzaGFrZTJcIiwgXCJzaGFrZTNcIiwgXCJmbGFwXCJdO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgbmV3IGNsYXNzIEVtb3RlTW9kdWxlIGV4dGVuZHMgQnVpbHRpbiB7XHJcbiAgICBnZXQgbmFtZSgpIHtyZXR1cm4gXCJFbW90ZXNcIjt9XHJcbiAgICBnZXQgY29sbGVjdGlvbigpIHtyZXR1cm4gXCJzZXR0aW5nc1wiO31cclxuICAgIGdldCBjYXRlZ29yeSgpIHtyZXR1cm4gXCJnZW5lcmFsXCI7fVxyXG4gICAgZ2V0IGlkKCkge3JldHVybiBcImVtb3Rlc1wiO31cclxuICAgIGdldCBjYXRlZ29yaWVzKCkge3JldHVybiBPYmplY3Qua2V5cyhFbW90ZXMpLmZpbHRlcihrID0+IHRoaXMuaXNDYXRlZ29yeUVuYWJsZWQoaykpO31cclxuICAgIGdldCBzaG91bGREb3dubG9hZCgpIHtyZXR1cm4gU2V0dGluZ3MuZ2V0KFwiZW1vdGVzXCIsIHRoaXMuY2F0ZWdvcnksIFwiZG93bmxvYWRcIik7fVxyXG5cclxuICAgIGlzQ2F0ZWdvcnlFbmFibGVkKGlkKSB7cmV0dXJuIHN1cGVyLmdldChcImVtb3Rlc1wiLCBcImNhdGVnb3JpZXNcIiwgaWQudG9Mb3dlckNhc2UoKSk7fVxyXG5cclxuICAgIGdldChpZCkge3JldHVybiBzdXBlci5nZXQoXCJlbW90ZXNcIiwgXCJnZW5lcmFsXCIsIGlkKTt9XHJcblxyXG4gICAgZ2V0IE1lc3NhZ2VDb21wb25lbnQoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmZpbmQobSA9PiBtLmRlZmF1bHQgJiYgbS5kZWZhdWx0LmRpc3BsYXlOYW1lICYmIG0uZGVmYXVsdC5kaXNwbGF5TmFtZSA9PSBcIk1lc3NhZ2VcIik7fVxyXG5cclxuICAgIGdldCBFbW90ZXMoKSB7cmV0dXJuIEVtb3Rlczt9XHJcbiAgICBnZXQgVHdpdGNoR2xvYmFsKCkge3JldHVybiBFbW90ZXMuVHdpdGNoR2xvYmFsO31cclxuICAgIGdldCBUd2l0Y2hTdWJzY3JpYmVyKCkge3JldHVybiBFbW90ZXMuVHdpdGNoU3Vic2NyaWJlcjt9XHJcbiAgICBnZXQgQlRUVigpIHtyZXR1cm4gRW1vdGVzLkJUVFY7fVxyXG4gICAgZ2V0IEZyYW5rZXJGYWNlWigpIHtyZXR1cm4gRW1vdGVzLkZyYW5rZXJGYWNlWjt9XHJcbiAgICBnZXQgYmxhY2tsaXN0KCkge3JldHVybiBibGFja2xpc3Q7fVxyXG4gICAgZ2V0IGZhdm9yaXRlcygpIHtyZXR1cm4gdGhpcy5mYXZvcml0ZUVtb3Rlczt9XHJcbiAgICBnZXRVcmwoY2F0ZWdvcnksIG5hbWUpIHtyZXR1cm4gRW1vdGVVUkxzW2NhdGVnb3J5XS5mb3JtYXQoe2lkOiBFbW90ZXNbY2F0ZWdvcnldW25hbWVdfSk7fVxyXG5cclxuICAgIGdldENhdGVnb3J5KGNhdGVnb3J5KSB7cmV0dXJuIEVtb3Rlc1tjYXRlZ29yeV07fVxyXG4gICAgZ2V0UmVtb3RlRmlsZShjYXRlZ29yeSkge3JldHVybiBVdGlsaXRpZXMucmVwb1VybChgYXNzZXRzL2Vtb3Rlcy8ke2NhdGVnb3J5LnRvTG93ZXJDYXNlKCl9Lmpzb25gKTt9XHJcblxyXG4gICAgaW5pdGlhbGl6ZSgpIHtcclxuICAgICAgICBzdXBlci5pbml0aWFsaXplKCk7XHJcbiAgICAgICAgY29uc3Qgc3RvcmVkRmF2b3JpdGVzID0gRGF0YVN0b3JlLmdldEJERGF0YShcImZhdm9yaXRlRW1vdGVzXCIpO1xyXG4gICAgICAgIHRoaXMuZmF2b3JpdGVFbW90ZXMgPSBzdG9yZWRGYXZvcml0ZXMgfHwge307XHJcbiAgICAgICAgdGhpcy5hZGRGYXZvcml0ZSA9IHRoaXMuYWRkRmF2b3JpdGUuYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLnJlbW92ZUZhdm9yaXRlID0gdGhpcy5yZW1vdmVGYXZvcml0ZS5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMub25DYXRlZ29yeVRvZ2dsZSA9IHRoaXMub25DYXRlZ29yeVRvZ2dsZS5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMucmVzZXRFbW90ZXMgPSB0aGlzLnJlc2V0RW1vdGVzLmJpbmQodGhpcyk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZW5hYmxlZCgpIHtcclxuICAgICAgICBTZXR0aW5ncy5yZWdpc3RlckNvbGxlY3Rpb24oXCJlbW90ZXNcIiwgXCJFbW90ZXNcIiwgRW1vdGVDb25maWcsIHt0aXRsZTogU3RyaW5ncy5FbW90ZXMuY2xlYXJFbW90ZXMsIG9uQ2xpY2s6IHRoaXMucmVzZXRFbW90ZXN9KTtcclxuICAgICAgICBhd2FpdCB0aGlzLmdldEJsYWNrbGlzdCgpO1xyXG4gICAgICAgIGF3YWl0IHRoaXMubG9hZEVtb3RlRGF0YSgpO1xyXG5cclxuICAgICAgICBFdmVudHMub24oXCJlbW90ZXMtZmF2b3JpdGUtYWRkZWRcIiwgdGhpcy5hZGRGYXZvcml0ZSk7XHJcbiAgICAgICAgRXZlbnRzLm9uKFwiZW1vdGVzLWZhdm9yaXRlLXJlbW92ZWRcIiwgdGhpcy5yZW1vdmVGYXZvcml0ZSk7XHJcbiAgICAgICAgRXZlbnRzLm9uKFwic2V0dGluZy11cGRhdGVkXCIsIHRoaXMub25DYXRlZ29yeVRvZ2dsZSk7XHJcbiAgICAgICAgdGhpcy5wYXRjaE1lc3NhZ2VDb250ZW50KCk7XHJcbiAgICB9XHJcblxyXG4gICAgZGlzYWJsZWQoKSB7XHJcbiAgICAgICAgRXZlbnRzLm9mZihcInNldHRpbmctdXBkYXRlZFwiLCB0aGlzLm9uQ2F0ZWdvcnlUb2dnbGUpO1xyXG4gICAgICAgIEV2ZW50cy5vZmYoXCJlbW90ZXMtZmF2b3JpdGUtYWRkZWRcIiwgdGhpcy5hZGRGYXZvcml0ZSk7XHJcbiAgICAgICAgRXZlbnRzLm9mZihcImVtb3Rlcy1mYXZvcml0ZS1yZW1vdmVkXCIsIHRoaXMucmVtb3ZlRmF2b3JpdGUpO1xyXG4gICAgICAgIFNldHRpbmdzLnJlbW92ZUNvbGxlY3Rpb24oXCJlbW90ZXNcIik7XHJcbiAgICAgICAgdGhpcy5lbXB0eUVtb3RlcygpO1xyXG4gICAgICAgIGlmICghdGhpcy5jYW5jZWxFbW90ZVJlbmRlcikgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMuY2FuY2VsRW1vdGVSZW5kZXIoKTtcclxuICAgICAgICBkZWxldGUgdGhpcy5jYW5jZWxFbW90ZVJlbmRlcjtcclxuICAgIH1cclxuXHJcbiAgICBvbkNhdGVnb3J5VG9nZ2xlKGNvbGxlY3Rpb24sIGNhdCwgY2F0ZWdvcnksIGVuYWJsZWQpIHtcclxuICAgICAgICBpZiAoY29sbGVjdGlvbiAhPSBcImVtb3Rlc1wiIHx8IGNhdCAhPSBcImNhdGVnb3JpZXNcIikgcmV0dXJuO1xyXG4gICAgICAgIGlmIChlbmFibGVkKSByZXR1cm4gdGhpcy5sb2FkRW1vdGVEYXRhKGNhdGVnb3J5KTtcclxuICAgICAgICByZXR1cm4gdGhpcy51bmxvYWRFbW90ZURhdGEoY2F0ZWdvcnkpO1xyXG4gICAgfVxyXG5cclxuICAgIGFkZEZhdm9yaXRlKG5hbWUsIHVybCkge1xyXG4gICAgICAgIGlmICghdGhpcy5mYXZvcml0ZUVtb3Rlcy5oYXNPd25Qcm9wZXJ0eShuYW1lKSkgdGhpcy5mYXZvcml0ZUVtb3Rlc1tuYW1lXSA9IHVybDtcclxuICAgICAgICB0aGlzLnNhdmVGYXZvcml0ZXMoKTtcclxuICAgIH1cclxuXHJcbiAgICByZW1vdmVGYXZvcml0ZShuYW1lKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmZhdm9yaXRlRW1vdGVzLmhhc093blByb3BlcnR5KG5hbWUpKSByZXR1cm47XHJcbiAgICAgICAgZGVsZXRlIHRoaXMuZmF2b3JpdGVFbW90ZXNbbmFtZV07XHJcbiAgICAgICAgdGhpcy5zYXZlRmF2b3JpdGVzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaXNGYXZvcml0ZShuYW1lKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZmF2b3JpdGVFbW90ZXMuaGFzT3duUHJvcGVydHkobmFtZSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2F2ZUZhdm9yaXRlcygpIHtcclxuICAgICAgICBEYXRhU3RvcmUuc2V0QkREYXRhKFwiZmF2b3JpdGVFbW90ZXNcIiwgdGhpcy5mYXZvcml0ZUVtb3Rlcyk7XHJcbiAgICB9XHJcblxyXG4gICAgZW1wdHlFbW90ZXMoKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBjYXQgaW4gRW1vdGVzKSBPYmplY3QuYXNzaWduKEVtb3Rlcywge1tjYXRdOiB7fX0pO1xyXG4gICAgfVxyXG5cclxuICAgIHBhdGNoTWVzc2FnZUNvbnRlbnQoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuY2FuY2VsRW1vdGVSZW5kZXIpIHJldHVybjtcclxuICAgICAgICB0aGlzLmNhbmNlbEVtb3RlUmVuZGVyID0gdGhpcy5iZWZvcmUodGhpcy5NZXNzYWdlQ29tcG9uZW50LCBcImRlZmF1bHRcIiwgKHRoaXNPYmosIGFyZ3MpID0+IHtcclxuICAgICAgICAgICAgY29uc3Qgbm9kZXMgPSBhcmdzWzBdLmNoaWxkcmVuTWVzc2FnZUNvbnRlbnQucHJvcHMuY29udGVudDtcclxuICAgICAgICAgICAgaWYgKCFub2RlcyB8fCAhbm9kZXMubGVuZ3RoKSByZXR1cm47XHJcbiAgICAgICAgICAgIGZvciAobGV0IG4gPSAwOyBuIDwgbm9kZXMubGVuZ3RoOyBuKyspIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG5vZGUgPSBub2Rlc1tuXTtcclxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Yobm9kZSkgIT09IFwic3RyaW5nXCIpIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgd29yZHMgPSBub2RlLnNwbGl0KC8oW15cXHNdKykoW1xcc118JCkvZyk7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBjID0gMCwgY2xlbiA9IHRoaXMuY2F0ZWdvcmllcy5sZW5ndGg7IGMgPCBjbGVuOyBjKyspIHtcclxuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCB3ID0gMCwgd2xlbiA9IHdvcmRzLmxlbmd0aDsgdyA8IHdsZW47IHcrKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlbW90ZSA9IHdvcmRzW3ddO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlbW90ZVNwbGl0ID0gZW1vdGUuc3BsaXQoXCI6XCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlbW90ZU5hbWUgPSBlbW90ZVNwbGl0WzBdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgZW1vdGVNb2RpZmllciA9IGVtb3RlU3BsaXRbMV0gPyBlbW90ZVNwbGl0WzFdIDogXCJcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGVtb3RlT3ZlcnJpZGUgPSBlbW90ZU1vZGlmaWVyLnNsaWNlKDApO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVtb3RlTmFtZS5sZW5ndGggPCA0IHx8IGJsYWNrbGlzdC5pbmNsdWRlcyhlbW90ZU5hbWUpKSBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFtb2RpZmllcnMuaW5jbHVkZXMoZW1vdGVNb2RpZmllcikgfHwgIVNldHRpbmdzLmdldChcImVtb3Rlc1wiLCBcImdlbmVyYWxcIiwgXCJtb2RpZmllcnNcIikpIGVtb3RlTW9kaWZpZXIgPSBcIlwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW92ZXJyaWRlcy5pbmNsdWRlcyhlbW90ZU92ZXJyaWRlKSkgZW1vdGVPdmVycmlkZSA9IFwiXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgZW1vdGVNb2RpZmllciA9IGVtb3RlT3ZlcnJpZGU7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgY3VycmVudCA9IHRoaXMuY2F0ZWdvcmllc1tjXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVtb3RlT3ZlcnJpZGUgPT09IFwidHdpdGNoXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChFbW90ZXMuVHdpdGNoR2xvYmFsW2Vtb3RlTmFtZV0pIGN1cnJlbnQgPSBcIlR3aXRjaEdsb2JhbFwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoRW1vdGVzLlR3aXRjaFN1YnNjcmliZXJbZW1vdGVOYW1lXSkgY3VycmVudCA9IFwiVHdpdGNoU3Vic2NyaWJlclwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGVtb3RlT3ZlcnJpZGUgPT09IFwic3Vic2NyaWJlclwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoRW1vdGVzLlR3aXRjaFN1YnNjcmliZXJbZW1vdGVOYW1lXSkgY3VycmVudCA9IFwiVHdpdGNoU3Vic2NyaWJlclwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGVtb3RlT3ZlcnJpZGUgPT09IFwiYnR0dlwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoRW1vdGVzLkJUVFZbZW1vdGVOYW1lXSkgY3VycmVudCA9IFwiQlRUVlwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGVtb3RlT3ZlcnJpZGUgPT09IFwiZmZ6XCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChFbW90ZXMuRnJhbmtlckZhY2VaW2Vtb3RlTmFtZV0pIGN1cnJlbnQgPSBcIkZyYW5rZXJGYWNlWlwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIUVtb3Rlc1tjdXJyZW50XVtlbW90ZU5hbWVdKSBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0cyA9IG5vZGVzW25dLm1hdGNoKG5ldyBSZWdFeHAoYChbXFxcXHNdfF4pJHtVdGlsaXRpZXMuZXNjYXBlKGVtb3RlTW9kaWZpZXIgPyBlbW90ZU5hbWUgKyBcIjpcIiArIGVtb3RlTW9kaWZpZXIgOiBlbW90ZU5hbWUpfShbXFxcXHNdfCQpYCkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdHMpIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmUgPSBub2Rlc1tuXS5zdWJzdHJpbmcoMCwgcmVzdWx0cy5pbmRleCArIHJlc3VsdHNbMV0ubGVuZ3RoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcG9zdCA9IG5vZGVzW25dLnN1YnN0cmluZyhyZXN1bHRzLmluZGV4ICsgcmVzdWx0c1swXS5sZW5ndGggLSByZXN1bHRzWzJdLmxlbmd0aCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVzW25dID0gcHJlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlbW90ZUNvbXBvbmVudCA9IERpc2NvcmRNb2R1bGVzLlJlYWN0LmNyZWF0ZUVsZW1lbnQoQkRFbW90ZSwge25hbWU6IGVtb3RlTmFtZSwgdXJsOiBFbW90ZVVSTHNbY3VycmVudF0uZm9ybWF0KHtpZDogRW1vdGVzW2N1cnJlbnRdW2Vtb3RlTmFtZV19KSwgbW9kaWZpZXI6IGVtb3RlTW9kaWZpZXIsIGlzRmF2b3JpdGU6IHRoaXMuaXNGYXZvcml0ZShlbW90ZU5hbWUpfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVzLnNwbGljZShuICsgMSwgMCwgcG9zdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVzLnNwbGljZShuICsgMSwgMCwgZW1vdGVDb21wb25lbnQpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBvbmx5RW1vdGVzID0gbm9kZXMuZXZlcnkociA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mKHIpID09IFwic3RyaW5nXCIgJiYgci5yZXBsYWNlKC9cXHMqLywgXCJcIikgPT0gXCJcIikgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChyLnR5cGUgJiYgci50eXBlLm5hbWUgPT0gXCJCREVtb3RlXCIpIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoci5wcm9wcyAmJiByLnByb3BzLmNoaWxkcmVuICYmIHIucHJvcHMuY2hpbGRyZW4ucHJvcHMgJiYgci5wcm9wcy5jaGlsZHJlbi5wcm9wcy5lbW9qaU5hbWUpIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgaWYgKCFvbmx5RW1vdGVzKSByZXR1cm47XHJcblxyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IG5vZGUgb2Ygbm9kZXMpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Yobm9kZSkgIT0gXCJvYmplY3RcIikgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICBpZiAobm9kZS50eXBlLm5hbWUgPT0gXCJCREVtb3RlXCIpIG5vZGUucHJvcHMuanVtYm9hYmxlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUucHJvcHMgJiYgbm9kZS5wcm9wcy5jaGlsZHJlbiAmJiBub2RlLnByb3BzLmNoaWxkcmVuLnByb3BzICYmIG5vZGUucHJvcHMuY2hpbGRyZW4ucHJvcHMuZW1vamlOYW1lKSBub2RlLnByb3BzLmNoaWxkcmVuLnByb3BzLmp1bWJvYWJsZSA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBnZXRCbGFja2xpc3QoKSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgY29uc3QgY2F0ZWdvcnkgPSBcIkJsYWNrbGlzdFwiO1xyXG4gICAgICAgICAgICBjb25zdCBleGlzdHMgPSBEYXRhU3RvcmUuZW1vdGVzRXhpc3QoY2F0ZWdvcnkpO1xyXG4gICAgICAgICAgICBjb25zdCB2YWxpZCA9IGF3YWl0IHRoaXMuaXNDYWNoZVZhbGlkKGNhdGVnb3J5KTtcclxuICAgICAgICAgICAgY29uc3QgdXNlQ2FjaGUgPSAodmFsaWQpIHx8ICghdmFsaWQgJiYgZXhpc3RzICYmICF0aGlzLnNob3VsZERvd25sb2FkKTtcclxuICAgICAgICAgICAgY29uc3QgbGlzdCA9IHVzZUNhY2hlID8gRGF0YVN0b3JlLmdldEVtb3RlRGF0YShjYXRlZ29yeSkgOiBhd2FpdCB0aGlzLmRvd25sb2FkRW1vdGVzKGNhdGVnb3J5KTtcclxuICAgICAgICAgICAgYmxhY2tsaXN0LnB1c2goLi4ubGlzdCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChlcnIpIHtcclxuICAgICAgICAgICAgLy8gVE9ETzogTG9nIHRoaXNcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaXNDYWNoZVZhbGlkKGNhdGVnb3J5KSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBldGFnID0gRGF0YVN0b3JlLmdldENhY2hlSGFzaChcImVtb3Rlc1wiLCBjYXRlZ29yeSk7XHJcbiAgICAgICAgICAgIGlmICghZXRhZykgcmV0dXJuIHJlc29sdmUoZmFsc2UpO1xyXG4gICAgICAgICAgICByZXF1ZXN0LmhlYWQoe3VybDogdGhpcy5nZXRSZW1vdGVGaWxlKGNhdGVnb3J5KSwgaGVhZGVyczoge1wiSWYtTm9uZS1NYXRjaFwiOiBldGFnfX0sIChlcnIsIHJlc3ApID0+IHtcclxuICAgICAgICAgICAgICAgIHJlc29sdmUocmVzcC5zdGF0dXNDb2RlID09IDMwNCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGxvYWRFbW90ZURhdGEoY2F0ZWdvcmllcykge1xyXG4gICAgICAgIGlmICghY2F0ZWdvcmllcykgY2F0ZWdvcmllcyA9IHRoaXMuY2F0ZWdvcmllcztcclxuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoY2F0ZWdvcmllcykpIGNhdGVnb3JpZXMgPSBbY2F0ZWdvcmllc107XHJcbiAgICAgICAgY29uc3QgYWxsID0gT2JqZWN0LmtleXMoRW1vdGVzKTtcclxuICAgICAgICBjYXRlZ29yaWVzID0gY2F0ZWdvcmllcy5tYXAoayA9PiBhbGwuZmluZChjID0+IGMudG9Mb3dlckNhc2UoKSA9PSBrLnRvTG93ZXJDYXNlKCkpKTtcclxuICAgICAgICBUb2FzdHMuc2hvdyhTdHJpbmdzLkVtb3Rlcy5sb2FkaW5nLCB7dHlwZTogXCJpbmZvXCJ9KTtcclxuICAgICAgICB0aGlzLmVtb3Rlc0xvYWRlZCA9IGZhbHNlO1xyXG5cclxuICAgICAgICBmb3IgKGNvbnN0IGNhdGVnb3J5IG9mIGNhdGVnb3JpZXMpIHtcclxuICAgICAgICAgICAgY29uc3QgZXhpc3RzID0gRGF0YVN0b3JlLmVtb3Rlc0V4aXN0KGNhdGVnb3J5KTtcclxuICAgICAgICAgICAgY29uc3QgdmFsaWQgPSBhd2FpdCB0aGlzLmlzQ2FjaGVWYWxpZChjYXRlZ29yeSk7XHJcbiAgICAgICAgICAgIGNvbnN0IHVzZUNhY2hlID0gKHZhbGlkKSB8fCAoIXZhbGlkICYmIGV4aXN0cyAmJiAhdGhpcy5zaG91bGREb3dubG9hZCk7XHJcbiAgICAgICAgICAgIGxldCBkYXRhID0gbnVsbDtcclxuICAgICAgICAgICAgaWYgKHVzZUNhY2hlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvZyhgTG9hZGluZyAke2NhdGVnb3J5fSBlbW90ZXMgZnJvbSBsb2NhbCBjYWNoZS5gKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNhY2hlZERhdGEgPSBEYXRhU3RvcmUuZ2V0RW1vdGVEYXRhKGNhdGVnb3J5KTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGhhc0RhdGEgPSBPYmplY3Qua2V5cyhjYWNoZWREYXRhKS5sZW5ndGggPiAwO1xyXG4gICAgICAgICAgICAgICAgaWYgKGhhc0RhdGEpIGRhdGEgPSBjYWNoZWREYXRhO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICghZGF0YSkgZGF0YSA9IGF3YWl0IHRoaXMuZG93bmxvYWRFbW90ZXMoY2F0ZWdvcnkpO1xyXG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKEVtb3Rlc1tjYXRlZ29yeV0sIGRhdGEpO1xyXG4gICAgICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZShyID0+IHNldFRpbWVvdXQociwgMTAwMCkpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5lbW90ZXNMb2FkZWQgPSB0cnVlO1xyXG4gICAgICAgIEV2ZW50cy5kaXNwYXRjaChcImVtb3Rlcy1sb2FkZWRcIik7XHJcbiAgICAgICAgVG9hc3RzLnNob3coU3RyaW5ncy5FbW90ZXMubG9hZGVkLCB7dHlwZTogXCJzdWNjZXNzXCJ9KTtcclxuICAgIH1cclxuXHJcbiAgICB1bmxvYWRFbW90ZURhdGEoY2F0ZWdvcmllcykge1xyXG4gICAgICAgIGlmICghY2F0ZWdvcmllcykgY2F0ZWdvcmllcyA9IHRoaXMuY2F0ZWdvcmllcztcclxuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoY2F0ZWdvcmllcykpIGNhdGVnb3JpZXMgPSBbY2F0ZWdvcmllc107XHJcbiAgICAgICAgY29uc3QgYWxsID0gT2JqZWN0LmtleXMoRW1vdGVzKTtcclxuICAgICAgICBjYXRlZ29yaWVzID0gY2F0ZWdvcmllcy5tYXAoayA9PiBhbGwuZmluZChjID0+IGMudG9Mb3dlckNhc2UoKSA9PSBrLnRvTG93ZXJDYXNlKCkpKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGNhdGVnb3J5IG9mIGNhdGVnb3JpZXMpIHtcclxuICAgICAgICAgICAgZGVsZXRlIEVtb3Rlc1tjYXRlZ29yeV07XHJcbiAgICAgICAgICAgIEVtb3Rlc1tjYXRlZ29yeV0gPSB7fTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZG93bmxvYWRFbW90ZXMoY2F0ZWdvcnkpIHtcclxuICAgICAgICBjb25zdCB1cmwgPSB0aGlzLmdldFJlbW90ZUZpbGUoY2F0ZWdvcnkpO1xyXG4gICAgICAgIHRoaXMubG9nKGBEb3dubG9hZGluZyAke2NhdGVnb3J5fSBmcm9tICR7dXJsfWApO1xyXG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7dXJsOiB1cmwsIHRpbWVvdXQ6IDEwMDAwLCBqc29uOiB0cnVlfTtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XHJcbiAgICAgICAgICAgIHJlcXVlc3QuZ2V0KG9wdGlvbnMsIChlcnJvciwgcmVzcG9uc2UsIHBhcnNlZERhdGEpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChlcnJvciB8fCByZXNwb25zZS5zdGF0dXNDb2RlICE9IDIwMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhY2t0cmFjZShgQ291bGQgbm90IGRvd25sb2FkICR7Y2F0ZWdvcnl9IGVtb3Rlcy5gLCBlcnJvcik7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUoe30pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgZW1vdGUgaW4gcGFyc2VkRGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChlbW90ZS5sZW5ndGggPCA0IHx8IGJsYWNrbGlzdC5pbmNsdWRlcyhlbW90ZSkgfHwgIXBhcnNlZERhdGFbZW1vdGVdKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBwYXJzZWREYXRhW2Vtb3RlXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIC8vIHBhcnNlZERhdGFbZW1vdGVdID0gRW1vdGVVUkxzW2NhdGVnb3J5XS5mb3JtYXQoe2lkOiBwYXJzZWREYXRhW2Vtb3RlXX0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgRGF0YVN0b3JlLnNhdmVFbW90ZURhdGEoY2F0ZWdvcnksIHBhcnNlZERhdGEpO1xyXG4gICAgICAgICAgICAgICAgRGF0YVN0b3JlLnNldENhY2hlSGFzaChcImVtb3Rlc1wiLCBjYXRlZ29yeSwgcmVzcG9uc2UuaGVhZGVycy5ldGFnKTtcclxuICAgICAgICAgICAgICAgIHJlc29sdmUocGFyc2VkRGF0YSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvZyhgRG93bmxvYWRlZCAke2NhdGVnb3J5fWApO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICByZXNldEVtb3RlcygpIHtcclxuICAgICAgICBjb25zdCBjYXRlZ29yaWVzID0gT2JqZWN0LmtleXMoRW1vdGVzKTtcclxuICAgICAgICB0aGlzLnVubG9hZEVtb3RlRGF0YShjYXRlZ29yaWVzKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGNhdCBvZiBjYXRlZ29yaWVzKSBEYXRhU3RvcmUuaW52YWxpZGF0ZUNhY2hlKFwiZW1vdGVzXCIsIGNhdCk7XHJcbiAgICAgICAgdGhpcy5sb2FkRW1vdGVEYXRhKCk7XHJcbiAgICB9XHJcbn07XHJcblxyXG5cclxuLy8gKGFzeW5jICgpID0+IHtcclxuLy8gICAgIGNvbnN0IGVtb3RlRGF0YSA9IGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xyXG4vLyAgICAgICAgIGNvbnN0IHJlcSA9IHJlcXVpcmUoXCJyZXF1ZXN0XCIpO1xyXG4vLyAgICAgICAgIHJlcS5nZXQoe3VybDogXCJodHRwczovL3R3aXRjaGVtb3Rlcy5jb20vYXBpX2NhY2hlL3YzL2dsb2JhbC5qc29uXCIsIGpzb246IHRydWV9LCAoZXJyLCByZXNwLCBwYXJzZWREYXRhKSA9PiB7XHJcbi8vICAgICAgICAgICAgIGZvciAoY29uc3QgZW1vdGUgaW4gcGFyc2VkRGF0YSkge1xyXG4vLyAgICAgICAgICAgICAgICAgaWYgKGVtb3RlLmxlbmd0aCA8IDQgfHwgd2luZG93LmJlbW90ZXMuaW5jbHVkZXMoZW1vdGUpKSB7XHJcbi8vICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHBhcnNlZERhdGFbZW1vdGVdO1xyXG4vLyAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4vLyAgICAgICAgICAgICAgICAgfVxyXG4vLyAgICAgICAgICAgICAgICAgcGFyc2VkRGF0YVtlbW90ZV0gPSBwYXJzZWREYXRhW2Vtb3RlXS5pZDtcclxuLy8gICAgICAgICAgICAgfVxyXG4vLyAgICAgICAgICAgICByZXNvbHZlKHBhcnNlZERhdGEpO1xyXG4vLyAgICAgICAgIH0pO1xyXG4vLyAgICAgfSk7XHJcbi8vICAgICBjb25zdCBmcyA9IHJlcXVpcmUoXCJmc1wiKTtcclxuLy8gICAgIGZzLndyaXRlRmlsZVN5bmMoXCJaOlxcXFxQcm9ncmFtbWluZ1xcXFxCZXR0ZXJEaXNjb3JkU3R1ZmZcXFxcQmV0dGVyRGlzY29yZEFwcFxcXFxkYXRhXFxcXGVtb3Rlc1xcXFxnbG9iYWwuanNvblwiLCBKU09OLnN0cmluZ2lmeShlbW90ZURhdGEpKTtcclxuLy8gICAgIHJldHVybiBlbW90ZURhdGE7XHJcbi8vIH0pKCk7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/builtins/emotes/emotes.js\n"); /***/ }), @@ -227,7 +226,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _str /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _structs_builtin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../structs/builtin */ \"./src/structs/builtin.js\");\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class TwentyFourHour extends _structs_builtin__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n get name() {\n return \"24Hour\";\n }\n\n get category() {\n return \"general\";\n }\n\n get id() {\n return \"twentyFourHour\";\n }\n\n enabled() {\n this.inject24Hour();\n }\n\n disabled() {\n this.unpatchAll();\n }\n\n inject24Hour() {\n const twelveHour = new RegExp(`([0-9]{1,2}):([0-9]{1,2})\\\\s(AM|PM)`);\n\n const convert = (thisObject, args, returnValue) => {\n const matched = returnValue.match(twelveHour);\n if (!matched || matched.length !== 4) return;\n if (matched[3] === \"AM\") return returnValue = returnValue.replace(matched[0], `${matched[1] === \"12\" ? \"00\" : matched[1].padStart(2, \"0\")}:${matched[2]}`);\n return returnValue = returnValue.replace(matched[0], `${matched[1] === \"12\" ? \"12\" : parseInt(matched[1]) + 12}:${matched[2]}`);\n };\n\n this.after(modules__WEBPACK_IMPORTED_MODULE_1__[\"DiscordModules\"].TimeFormatter, \"calendarFormat\", convert); // Called in Cozy mode\n\n this.after(modules__WEBPACK_IMPORTED_MODULE_1__[\"DiscordModules\"].TimeFormatter, \"dateFormat\", convert); // Called in Compact mode\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL2J1aWx0aW5zL2dlbmVyYWwvMjRob3VyLmpzPzFmZTUiXSwibmFtZXMiOlsiVHdlbnR5Rm91ckhvdXIiLCJCdWlsdGluIiwibmFtZSIsImNhdGVnb3J5IiwiaWQiLCJlbmFibGVkIiwiaW5qZWN0MjRIb3VyIiwiZGlzYWJsZWQiLCJ1bnBhdGNoQWxsIiwidHdlbHZlSG91ciIsIlJlZ0V4cCIsImNvbnZlcnQiLCJ0aGlzT2JqZWN0IiwiYXJncyIsInJldHVyblZhbHVlIiwibWF0Y2hlZCIsIm1hdGNoIiwibGVuZ3RoIiwicmVwbGFjZSIsInBhZFN0YXJ0IiwicGFyc2VJbnQiLCJhZnRlciIsIkRpc2NvcmRNb2R1bGVzIiwiVGltZUZvcm1hdHRlciJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUVlLG1FQUFJLE1BQU1BLGNBQU4sU0FBNkJDLHdEQUE3QixDQUFxQztBQUNwRCxNQUFJQyxJQUFKLEdBQVc7QUFBQyxXQUFPLFFBQVA7QUFBaUI7O0FBQzdCLE1BQUlDLFFBQUosR0FBZTtBQUFDLFdBQU8sU0FBUDtBQUFrQjs7QUFDbEMsTUFBSUMsRUFBSixHQUFTO0FBQUMsV0FBTyxnQkFBUDtBQUF5Qjs7QUFFbkNDLFNBQU8sR0FBRztBQUNOLFNBQUtDLFlBQUw7QUFDSDs7QUFFREMsVUFBUSxHQUFHO0FBQ1AsU0FBS0MsVUFBTDtBQUNIOztBQUVERixjQUFZLEdBQUc7QUFDWCxVQUFNRyxVQUFVLEdBQUcsSUFBSUMsTUFBSixDQUFZLHFDQUFaLENBQW5COztBQUNBLFVBQU1DLE9BQU8sR0FBRyxDQUFDQyxVQUFELEVBQWFDLElBQWIsRUFBbUJDLFdBQW5CLEtBQW1DO0FBQy9DLFlBQU1DLE9BQU8sR0FBR0QsV0FBVyxDQUFDRSxLQUFaLENBQWtCUCxVQUFsQixDQUFoQjtBQUNBLFVBQUksQ0FBQ00sT0FBRCxJQUFZQSxPQUFPLENBQUNFLE1BQVIsS0FBbUIsQ0FBbkMsRUFBc0M7QUFDdEMsVUFBSUYsT0FBTyxDQUFDLENBQUQsQ0FBUCxLQUFlLElBQW5CLEVBQXlCLE9BQU9ELFdBQVcsR0FBR0EsV0FBVyxDQUFDSSxPQUFaLENBQW9CSCxPQUFPLENBQUMsQ0FBRCxDQUEzQixFQUFpQyxHQUFFQSxPQUFPLENBQUMsQ0FBRCxDQUFQLEtBQWUsSUFBZixHQUFzQixJQUF0QixHQUE2QkEsT0FBTyxDQUFDLENBQUQsQ0FBUCxDQUFXSSxRQUFYLENBQW9CLENBQXBCLEVBQXVCLEdBQXZCLENBQTRCLElBQUdKLE9BQU8sQ0FBQyxDQUFELENBQUksRUFBMUcsQ0FBckI7QUFDekIsYUFBT0QsV0FBVyxHQUFHQSxXQUFXLENBQUNJLE9BQVosQ0FBb0JILE9BQU8sQ0FBQyxDQUFELENBQTNCLEVBQWlDLEdBQUVBLE9BQU8sQ0FBQyxDQUFELENBQVAsS0FBZSxJQUFmLEdBQXNCLElBQXRCLEdBQTZCSyxRQUFRLENBQUNMLE9BQU8sQ0FBQyxDQUFELENBQVIsQ0FBUixHQUF1QixFQUFHLElBQUdBLE9BQU8sQ0FBQyxDQUFELENBQUksRUFBeEcsQ0FBckI7QUFDSCxLQUxEOztBQU9BLFNBQUtNLEtBQUwsQ0FBV0Msc0RBQWMsQ0FBQ0MsYUFBMUIsRUFBeUMsZ0JBQXpDLEVBQTJEWixPQUEzRCxFQVRXLENBUzBEOztBQUNyRSxTQUFLVSxLQUFMLENBQVdDLHNEQUFjLENBQUNDLGFBQTFCLEVBQXlDLFlBQXpDLEVBQXVEWixPQUF2RCxFQVZXLENBVXNEO0FBQ3BFOztBQXhCbUQsQ0FBekMsRUFBZiIsImZpbGUiOiIuL3NyYy9idWlsdGlucy9nZW5lcmFsLzI0aG91ci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCdWlsdGluIGZyb20gXCIuLi8uLi9zdHJ1Y3RzL2J1aWx0aW5cIjtcclxuaW1wb3J0IHtEaXNjb3JkTW9kdWxlc30gZnJvbSBcIm1vZHVsZXNcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IG5ldyBjbGFzcyBUd2VudHlGb3VySG91ciBleHRlbmRzIEJ1aWx0aW4ge1xyXG4gICAgZ2V0IG5hbWUoKSB7cmV0dXJuIFwiMjRIb3VyXCI7fVxyXG4gICAgZ2V0IGNhdGVnb3J5KCkge3JldHVybiBcImdlbmVyYWxcIjt9XHJcbiAgICBnZXQgaWQoKSB7cmV0dXJuIFwidHdlbnR5Rm91ckhvdXJcIjt9XHJcblxyXG4gICAgZW5hYmxlZCgpIHtcclxuICAgICAgICB0aGlzLmluamVjdDI0SG91cigpO1xyXG4gICAgfVxyXG5cclxuICAgIGRpc2FibGVkKCkge1xyXG4gICAgICAgIHRoaXMudW5wYXRjaEFsbCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGluamVjdDI0SG91cigpIHtcclxuICAgICAgICBjb25zdCB0d2VsdmVIb3VyID0gbmV3IFJlZ0V4cChgKFswLTldezEsMn0pOihbMC05XXsxLDJ9KVxcXFxzKEFNfFBNKWApO1xyXG4gICAgICAgIGNvbnN0IGNvbnZlcnQgPSAodGhpc09iamVjdCwgYXJncywgcmV0dXJuVmFsdWUpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgbWF0Y2hlZCA9IHJldHVyblZhbHVlLm1hdGNoKHR3ZWx2ZUhvdXIpO1xyXG4gICAgICAgICAgICBpZiAoIW1hdGNoZWQgfHwgbWF0Y2hlZC5sZW5ndGggIT09IDQpIHJldHVybjtcclxuICAgICAgICAgICAgaWYgKG1hdGNoZWRbM10gPT09IFwiQU1cIikgcmV0dXJuIHJldHVyblZhbHVlID0gcmV0dXJuVmFsdWUucmVwbGFjZShtYXRjaGVkWzBdLCBgJHttYXRjaGVkWzFdID09PSBcIjEyXCIgPyBcIjAwXCIgOiBtYXRjaGVkWzFdLnBhZFN0YXJ0KDIsIFwiMFwiKX06JHttYXRjaGVkWzJdfWApO1xyXG4gICAgICAgICAgICByZXR1cm4gcmV0dXJuVmFsdWUgPSByZXR1cm5WYWx1ZS5yZXBsYWNlKG1hdGNoZWRbMF0sIGAke21hdGNoZWRbMV0gPT09IFwiMTJcIiA/IFwiMTJcIiA6IHBhcnNlSW50KG1hdGNoZWRbMV0pICsgMTJ9OiR7bWF0Y2hlZFsyXX1gKTtcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB0aGlzLmFmdGVyKERpc2NvcmRNb2R1bGVzLlRpbWVGb3JtYXR0ZXIsIFwiY2FsZW5kYXJGb3JtYXRcIiwgY29udmVydCk7IC8vIENhbGxlZCBpbiBDb3p5IG1vZGVcclxuICAgICAgICB0aGlzLmFmdGVyKERpc2NvcmRNb2R1bGVzLlRpbWVGb3JtYXR0ZXIsIFwiZGF0ZUZvcm1hdFwiLCBjb252ZXJ0KTsgLy8gQ2FsbGVkIGluIENvbXBhY3QgbW9kZVxyXG4gICAgfVxyXG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/builtins/general/24hour.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _structs_builtin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../structs/builtin */ \"./src/structs/builtin.js\");\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class TwentyFourHour extends _structs_builtin__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n get name() {\n return \"24Hour\";\n }\n\n get category() {\n return \"general\";\n }\n\n get id() {\n return \"twentyFourHour\";\n }\n\n enabled() {\n this.inject24Hour();\n }\n\n disabled() {\n this.unpatchAll();\n }\n\n inject24Hour() {\n const twelveHour = new RegExp(`([0-9]{1,2}):([0-9]{1,2})\\\\s(AM|PM)`);\n\n const convert = (thisObject, args, returnValue) => {\n const matched = returnValue.match(twelveHour);\n if (!matched || matched.length !== 4) return;\n if (matched[3] === \"AM\") return returnValue = returnValue.replace(matched[0], `${matched[1] === \"12\" ? \"00\" : matched[1].padStart(2, \"0\")}:${matched[2]}`);\n return returnValue = returnValue.replace(matched[0], `${matched[1] === \"12\" ? \"12\" : parseInt(matched[1]) + 12}:${matched[2]}`);\n };\n\n this.after(modules__WEBPACK_IMPORTED_MODULE_1__[\"DiscordModules\"].TimeFormatter, \"calendarFormat\", convert); // Called in Cozy mode\n\n this.after(modules__WEBPACK_IMPORTED_MODULE_1__[\"DiscordModules\"].TimeFormatter, \"dateFormat\", convert); // Called in Compact mode\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYnVpbHRpbnMvZ2VuZXJhbC8yNGhvdXIuanM/MWZlNSJdLCJuYW1lcyI6WyJUd2VudHlGb3VySG91ciIsIkJ1aWx0aW4iLCJuYW1lIiwiY2F0ZWdvcnkiLCJpZCIsImVuYWJsZWQiLCJpbmplY3QyNEhvdXIiLCJkaXNhYmxlZCIsInVucGF0Y2hBbGwiLCJ0d2VsdmVIb3VyIiwiUmVnRXhwIiwiY29udmVydCIsInRoaXNPYmplY3QiLCJhcmdzIiwicmV0dXJuVmFsdWUiLCJtYXRjaGVkIiwibWF0Y2giLCJsZW5ndGgiLCJyZXBsYWNlIiwicGFkU3RhcnQiLCJwYXJzZUludCIsImFmdGVyIiwiRGlzY29yZE1vZHVsZXMiLCJUaW1lRm9ybWF0dGVyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBRWUsbUVBQUksTUFBTUEsY0FBTixTQUE2QkMsd0RBQTdCLENBQXFDO0FBQ3BELE1BQUlDLElBQUosR0FBVztBQUFDLFdBQU8sUUFBUDtBQUFpQjs7QUFDN0IsTUFBSUMsUUFBSixHQUFlO0FBQUMsV0FBTyxTQUFQO0FBQWtCOztBQUNsQyxNQUFJQyxFQUFKLEdBQVM7QUFBQyxXQUFPLGdCQUFQO0FBQXlCOztBQUVuQ0MsU0FBTyxHQUFHO0FBQ04sU0FBS0MsWUFBTDtBQUNIOztBQUVEQyxVQUFRLEdBQUc7QUFDUCxTQUFLQyxVQUFMO0FBQ0g7O0FBRURGLGNBQVksR0FBRztBQUNYLFVBQU1HLFVBQVUsR0FBRyxJQUFJQyxNQUFKLENBQVkscUNBQVosQ0FBbkI7O0FBQ0EsVUFBTUMsT0FBTyxHQUFHLENBQUNDLFVBQUQsRUFBYUMsSUFBYixFQUFtQkMsV0FBbkIsS0FBbUM7QUFDL0MsWUFBTUMsT0FBTyxHQUFHRCxXQUFXLENBQUNFLEtBQVosQ0FBa0JQLFVBQWxCLENBQWhCO0FBQ0EsVUFBSSxDQUFDTSxPQUFELElBQVlBLE9BQU8sQ0FBQ0UsTUFBUixLQUFtQixDQUFuQyxFQUFzQztBQUN0QyxVQUFJRixPQUFPLENBQUMsQ0FBRCxDQUFQLEtBQWUsSUFBbkIsRUFBeUIsT0FBT0QsV0FBVyxHQUFHQSxXQUFXLENBQUNJLE9BQVosQ0FBb0JILE9BQU8sQ0FBQyxDQUFELENBQTNCLEVBQWlDLEdBQUVBLE9BQU8sQ0FBQyxDQUFELENBQVAsS0FBZSxJQUFmLEdBQXNCLElBQXRCLEdBQTZCQSxPQUFPLENBQUMsQ0FBRCxDQUFQLENBQVdJLFFBQVgsQ0FBb0IsQ0FBcEIsRUFBdUIsR0FBdkIsQ0FBNEIsSUFBR0osT0FBTyxDQUFDLENBQUQsQ0FBSSxFQUExRyxDQUFyQjtBQUN6QixhQUFPRCxXQUFXLEdBQUdBLFdBQVcsQ0FBQ0ksT0FBWixDQUFvQkgsT0FBTyxDQUFDLENBQUQsQ0FBM0IsRUFBaUMsR0FBRUEsT0FBTyxDQUFDLENBQUQsQ0FBUCxLQUFlLElBQWYsR0FBc0IsSUFBdEIsR0FBNkJLLFFBQVEsQ0FBQ0wsT0FBTyxDQUFDLENBQUQsQ0FBUixDQUFSLEdBQXVCLEVBQUcsSUFBR0EsT0FBTyxDQUFDLENBQUQsQ0FBSSxFQUF4RyxDQUFyQjtBQUNILEtBTEQ7O0FBT0EsU0FBS00sS0FBTCxDQUFXQyxzREFBYyxDQUFDQyxhQUExQixFQUF5QyxnQkFBekMsRUFBMkRaLE9BQTNELEVBVFcsQ0FTMEQ7O0FBQ3JFLFNBQUtVLEtBQUwsQ0FBV0Msc0RBQWMsQ0FBQ0MsYUFBMUIsRUFBeUMsWUFBekMsRUFBdURaLE9BQXZELEVBVlcsQ0FVc0Q7QUFDcEU7O0FBeEJtRCxDQUF6QyxFQUFmIiwiZmlsZSI6Ii4vc3JjL2J1aWx0aW5zL2dlbmVyYWwvMjRob3VyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJ1aWx0aW4gZnJvbSBcIi4uLy4uL3N0cnVjdHMvYnVpbHRpblwiO1xyXG5pbXBvcnQge0Rpc2NvcmRNb2R1bGVzfSBmcm9tIFwibW9kdWxlc1wiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgbmV3IGNsYXNzIFR3ZW50eUZvdXJIb3VyIGV4dGVuZHMgQnVpbHRpbiB7XHJcbiAgICBnZXQgbmFtZSgpIHtyZXR1cm4gXCIyNEhvdXJcIjt9XHJcbiAgICBnZXQgY2F0ZWdvcnkoKSB7cmV0dXJuIFwiZ2VuZXJhbFwiO31cclxuICAgIGdldCBpZCgpIHtyZXR1cm4gXCJ0d2VudHlGb3VySG91clwiO31cclxuXHJcbiAgICBlbmFibGVkKCkge1xyXG4gICAgICAgIHRoaXMuaW5qZWN0MjRIb3VyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZGlzYWJsZWQoKSB7XHJcbiAgICAgICAgdGhpcy51bnBhdGNoQWxsKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaW5qZWN0MjRIb3VyKCkge1xyXG4gICAgICAgIGNvbnN0IHR3ZWx2ZUhvdXIgPSBuZXcgUmVnRXhwKGAoWzAtOV17MSwyfSk6KFswLTldezEsMn0pXFxcXHMoQU18UE0pYCk7XHJcbiAgICAgICAgY29uc3QgY29udmVydCA9ICh0aGlzT2JqZWN0LCBhcmdzLCByZXR1cm5WYWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBtYXRjaGVkID0gcmV0dXJuVmFsdWUubWF0Y2godHdlbHZlSG91cik7XHJcbiAgICAgICAgICAgIGlmICghbWF0Y2hlZCB8fCBtYXRjaGVkLmxlbmd0aCAhPT0gNCkgcmV0dXJuO1xyXG4gICAgICAgICAgICBpZiAobWF0Y2hlZFszXSA9PT0gXCJBTVwiKSByZXR1cm4gcmV0dXJuVmFsdWUgPSByZXR1cm5WYWx1ZS5yZXBsYWNlKG1hdGNoZWRbMF0sIGAke21hdGNoZWRbMV0gPT09IFwiMTJcIiA/IFwiMDBcIiA6IG1hdGNoZWRbMV0ucGFkU3RhcnQoMiwgXCIwXCIpfToke21hdGNoZWRbMl19YCk7XHJcbiAgICAgICAgICAgIHJldHVybiByZXR1cm5WYWx1ZSA9IHJldHVyblZhbHVlLnJlcGxhY2UobWF0Y2hlZFswXSwgYCR7bWF0Y2hlZFsxXSA9PT0gXCIxMlwiID8gXCIxMlwiIDogcGFyc2VJbnQobWF0Y2hlZFsxXSkgKyAxMn06JHttYXRjaGVkWzJdfWApO1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHRoaXMuYWZ0ZXIoRGlzY29yZE1vZHVsZXMuVGltZUZvcm1hdHRlciwgXCJjYWxlbmRhckZvcm1hdFwiLCBjb252ZXJ0KTsgLy8gQ2FsbGVkIGluIENvenkgbW9kZVxyXG4gICAgICAgIHRoaXMuYWZ0ZXIoRGlzY29yZE1vZHVsZXMuVGltZUZvcm1hdHRlciwgXCJkYXRlRm9ybWF0XCIsIGNvbnZlcnQpOyAvLyBDYWxsZWQgaW4gQ29tcGFjdCBtb2RlXHJcbiAgICB9XHJcbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/builtins/general/24hour.js\n"); /***/ }), @@ -239,7 +238,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _str /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _structs_builtin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../structs/builtin */ \"./src/structs/builtin.js\");\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\n\nconst normalizedPrefix = \"da\";\nconst randClass = new RegExp(`^(?!${normalizedPrefix}-)((?:[A-Za-z]|[0-9]|-)+)-(?:[A-Za-z]|[0-9]|-|_){6}$`);\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class ClassNormalizer extends _structs_builtin__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n get id() {\n return \"classNormalizer\";\n }\n\n get category() {\n return \"general\";\n }\n\n get name() {\n return \"ClassNormalizer\";\n }\n\n enabled() {\n if (this.hasPatched) return;\n this.patchClassModules(modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getModules(this.moduleFilter.bind(this)));\n this.normalizeElement(document.querySelector(\"#app-mount\"));\n this.hasPatched = true;\n this.patchDOMMethods();\n }\n\n disabled() {\n if (!this.hasPatched) return;\n this.unpatchClassModules(modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getModules(this.moduleFilter.bind(this)));\n this.revertElement(document.querySelector(\"#app-mount\"));\n this.hasPatched = false;\n }\n\n patchClassModules(modules) {\n for (const module of modules) {\n this.patchClassModule(normalizedPrefix, module);\n }\n }\n\n unpatchClassModules(modules) {\n for (const module of modules) {\n this.unpatchClassModule(normalizedPrefix, module);\n }\n }\n\n shouldIgnore(value) {\n if (!isNaN(value)) return true;\n if (value.endsWith(\"px\") || value.endsWith(\"ch\") || value.endsWith(\"em\") || value.endsWith(\"ms\")) return true;\n if (value.startsWith(\"layerContainer-\")) return true;\n if (value.startsWith(\"#\") && (value.length == 7 || value.length == 4)) return true;\n if (value.includes(\"calc(\") || value.includes(\"rgba\")) return true;\n return false;\n }\n\n moduleFilter(module) {\n if (typeof module !== \"object\" || Array.isArray(module)) return false;\n if (module.__esModule) return false;\n if (!Object.keys(module).length) return false;\n\n for (const baseClassName in module) {\n const value = module[baseClassName];\n if (typeof value !== \"string\") return false;\n if (this.shouldIgnore(value)) continue;\n if (value.split(\"-\").length === 1) return false;\n if (!randClass.test(value.split(\" \")[0])) return false;\n }\n\n return true;\n }\n\n patchClassModule(componentName, classNames) {\n for (const baseClassName in classNames) {\n const value = classNames[baseClassName];\n if (this.shouldIgnore(value)) continue;\n const classList = value.split(\" \");\n\n for (const normalClass of classList) {\n const match = normalClass.match(randClass);\n if (!match || !match.length || match.length < 2) continue; // Shouldn't ever happen since they passed the moduleFilter, but you never know\n\n const camelCase = match[1].split(\"-\").map((s, i) => i ? s[0].toUpperCase() + s.slice(1) : s).join(\"\");\n classNames[baseClassName] += ` ${componentName}-${camelCase}`;\n }\n }\n }\n\n unpatchClassModule(componentName, classNames) {\n for (const baseClassName in classNames) {\n const value = classNames[baseClassName];\n if (this.shouldIgnore(value)) continue;\n let newString = \"\";\n const classList = value.split(\" \");\n\n for (const normalClass of classList) {\n if (normalClass.startsWith(`${componentName}-`)) continue;\n newString += ` ${normalClass}`;\n }\n\n classNames[baseClassName] = newString.trim();\n }\n }\n\n normalizeElement(element) {\n if (!(element instanceof Element)) return;\n const classes = element.classList;\n\n for (let c = 0, clen = classes.length; c < clen; c++) {\n if (!randClass.test(classes[c])) continue;\n const match = classes[c].match(randClass)[1];\n const newClass = match.split(\"-\").map((s, i) => i ? s[0].toUpperCase() + s.slice(1) : s).join(\"\");\n element.classList.add(`${normalizedPrefix}-${newClass}`);\n }\n\n for (const child of element.children) this.normalizeElement(child);\n }\n\n revertElement(element) {\n if (!(element instanceof Element)) return;\n if (element.children && element.children.length) this.revertElement(element.children[0]);\n if (element.nextElementSibling) this.revertElement(element.nextElementSibling);\n const classes = element.classList;\n const toRemove = [];\n\n for (let c = 0; c < classes.length; c++) {\n if (classes[c].startsWith(`${normalizedPrefix}-`)) toRemove.push(classes[c]);\n }\n\n element.classList.remove(...toRemove);\n }\n\n patchDOMMethods() {\n const contains = DOMTokenList.prototype.contains;\n\n DOMTokenList.prototype.contains = function (token) {\n // const tokens = token.split(\" \");\n return Reflect.apply(contains, this, [token.split(\" \")[0]]); // return tokens.every(t => contains.call(this, t));\n };\n\n const add = DOMTokenList.prototype.add;\n\n DOMTokenList.prototype.add = function (...tokens) {\n for (let t = 0; t < tokens.length; t++) {\n tokens[t] = tokens[t].split(\" \")[0];\n }\n\n return Reflect.apply(add, this, tokens);\n };\n\n const remove = DOMTokenList.prototype.remove;\n\n DOMTokenList.prototype.remove = function (...tokens) {\n for (let t = 0; t < tokens.length; t++) {\n tokens[t] = tokens[t].split(\" \")[0];\n }\n\n return Reflect.apply(remove, this, tokens);\n };\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL2J1aWx0aW5zL2dlbmVyYWwvY2xhc3Nub3JtYWxpemVyLmpzPzJkYjYiXSwibmFtZXMiOlsibm9ybWFsaXplZFByZWZpeCIsInJhbmRDbGFzcyIsIlJlZ0V4cCIsIkNsYXNzTm9ybWFsaXplciIsIkJ1aWx0aW4iLCJpZCIsImNhdGVnb3J5IiwibmFtZSIsImVuYWJsZWQiLCJoYXNQYXRjaGVkIiwicGF0Y2hDbGFzc01vZHVsZXMiLCJXZWJwYWNrTW9kdWxlcyIsImdldE1vZHVsZXMiLCJtb2R1bGVGaWx0ZXIiLCJiaW5kIiwibm9ybWFsaXplRWxlbWVudCIsImRvY3VtZW50IiwicXVlcnlTZWxlY3RvciIsInBhdGNoRE9NTWV0aG9kcyIsImRpc2FibGVkIiwidW5wYXRjaENsYXNzTW9kdWxlcyIsInJldmVydEVsZW1lbnQiLCJtb2R1bGVzIiwibW9kdWxlIiwicGF0Y2hDbGFzc01vZHVsZSIsInVucGF0Y2hDbGFzc01vZHVsZSIsInNob3VsZElnbm9yZSIsInZhbHVlIiwiaXNOYU4iLCJlbmRzV2l0aCIsInN0YXJ0c1dpdGgiLCJsZW5ndGgiLCJpbmNsdWRlcyIsIkFycmF5IiwiaXNBcnJheSIsIl9fZXNNb2R1bGUiLCJPYmplY3QiLCJrZXlzIiwiYmFzZUNsYXNzTmFtZSIsInNwbGl0IiwidGVzdCIsImNvbXBvbmVudE5hbWUiLCJjbGFzc05hbWVzIiwiY2xhc3NMaXN0Iiwibm9ybWFsQ2xhc3MiLCJtYXRjaCIsImNhbWVsQ2FzZSIsIm1hcCIsInMiLCJpIiwidG9VcHBlckNhc2UiLCJzbGljZSIsImpvaW4iLCJuZXdTdHJpbmciLCJ0cmltIiwiZWxlbWVudCIsIkVsZW1lbnQiLCJjbGFzc2VzIiwiYyIsImNsZW4iLCJuZXdDbGFzcyIsImFkZCIsImNoaWxkIiwiY2hpbGRyZW4iLCJuZXh0RWxlbWVudFNpYmxpbmciLCJ0b1JlbW92ZSIsInB1c2giLCJyZW1vdmUiLCJjb250YWlucyIsIkRPTVRva2VuTGlzdCIsInBy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LGNBQU0sQ0FBQ0MsQ0FBRCxDQUFOLEdBQVlELE1BQU0sQ0FBQ0MsQ0FBRCxDQUFOLENBQVVwQyxLQUFWLENBQWdCLEdBQWhCLEVBQXFCLENBQXJCLENBQVo7QUFDSDs7QUFDRCxhQUFPaUMsT0FBTyxDQUFDQyxLQUFSLENBQWNaLEdBQWQsRUFBbUIsSUFBbkIsRUFBeUJhLE1BQXpCLENBQVA7QUFDSCxLQUxEOztBQU9BLFVBQU1QLE1BQU0sR0FBR0UsWUFBWSxDQUFDQyxTQUFiLENBQXVCSCxNQUF0Qzs7QUFDQUUsZ0JBQVksQ0FBQ0MsU0FBYixDQUF1QkgsTUFBdkIsR0FBZ0MsVUFBUyxHQUFHTyxNQUFaLEVBQW9CO0FBQ2hELFdBQUssSUFBSUMsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR0QsTUFBTSxDQUFDM0MsTUFBM0IsRUFBbUM0QyxDQUFDLEVBQXBDLEVBQXdDO0FBQ3BDRCxjQUFNLENBQUNDLENBQUQsQ0FBTixHQUFZRCxNQUFNLENBQUNDLENBQUQsQ0FBTixDQUFVcEMsS0FBVixDQUFnQixHQUFoQixFQUFxQixDQUFyQixDQUFaO0FBQ0g7O0FBQ0QsYUFBT2lDLE9BQU8sQ0FBQ0MsS0FBUixDQUFjTixNQUFkLEVBQXNCLElBQXRCLEVBQTRCTyxNQUE1QixDQUFQO0FBQ0gsS0FMRDtBQU1IOztBQW5Jb0QsQ0FBMUMsRUFBZiIsImZpbGUiOiIuL3NyYy9idWlsdGlucy9nZW5lcmFsL2NsYXNzbm9ybWFsaXplci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCdWlsdGluIGZyb20gXCIuLi8uLi9zdHJ1Y3RzL2J1aWx0aW5cIjtcclxuaW1wb3J0IHtXZWJwYWNrTW9kdWxlc30gZnJvbSBcIm1vZHVsZXNcIjtcclxuXHJcbmNvbnN0IG5vcm1hbGl6ZWRQcmVmaXggPSBcImRhXCI7XHJcbmNvbnN0IHJhbmRDbGFzcyA9IG5ldyBSZWdFeHAoYF4oPyEke25vcm1hbGl6ZWRQcmVmaXh9LSkoKD86W0EtWmEtel18WzAtOV18LSkrKS0oPzpbQS1aYS16XXxbMC05XXwtfF8pezZ9JGApO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgbmV3IGNsYXNzIENsYXNzTm9ybWFsaXplciBleHRlbmRzIEJ1aWx0aW4ge1xyXG4gICAgZ2V0IGlkKCkge3JldHVybiBcImNsYXNzTm9ybWFsaXplclwiO31cclxuICAgIGdldCBjYXRlZ29yeSgpIHtyZXR1cm4gXCJnZW5lcmFsXCI7fVxyXG4gICAgZ2V0IG5hbWUoKSB7cmV0dXJuIFwiQ2xhc3NOb3JtYWxpemVyXCI7fVxyXG5cclxuICAgIGVuYWJsZWQoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuaGFzUGF0Y2hlZCkgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMucGF0Y2hDbGFzc01vZHVsZXMoV2VicGFja01vZHVsZXMuZ2V0TW9kdWxlcyh0aGlzLm1vZHVsZUZpbHRlci5iaW5kKHRoaXMpKSk7XHJcbiAgICAgICAgdGhpcy5ub3JtYWxpemVFbGVtZW50KGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjYXBwLW1vdW50XCIpKTtcclxuICAgICAgICB0aGlzLmhhc1BhdGNoZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMucGF0Y2hET01NZXRob2RzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZGlzYWJsZWQoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmhhc1BhdGNoZWQpIHJldHVybjtcclxuICAgICAgICB0aGlzLnVucGF0Y2hDbGFzc01vZHVsZXMoV2VicGFja01vZHVsZXMuZ2V0TW9kdWxlcyh0aGlzLm1vZHVsZUZpbHRlci5iaW5kKHRoaXMpKSk7XHJcbiAgICAgICAgdGhpcy5yZXZlcnRFbGVtZW50KGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjYXBwLW1vdW50XCIpKTtcclxuICAgICAgICB0aGlzLmhhc1BhdGNoZWQgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBwYXRjaENsYXNzTW9kdWxlcyhtb2R1bGVzKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBtb2R1bGUgb2YgbW9kdWxlcykge1xyXG4gICAgICAgICAgICB0aGlzLnBhdGNoQ2xhc3NNb2R1bGUobm9ybWFsaXplZFByZWZpeCwgbW9kdWxlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdW5wYXRjaENsYXNzTW9kdWxlcyhtb2R1bGVzKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBtb2R1bGUgb2YgbW9kdWxlcykge1xyXG4gICAgICAgICAgICB0aGlzLnVucGF0Y2hDbGFzc01vZHVsZShub3JtYWxpemVkUHJlZml4LCBtb2R1bGUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzaG91bGRJZ25vcmUodmFsdWUpIHtcclxuICAgICAgICBpZiAoIWlzTmFOKHZhbHVlKSkgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgaWYgKHZhbHVlLmVuZHNXaXRoKFwicHhcIikgfHwgdmFsdWUuZW5kc1dpdGgoXCJjaFwiKSB8fCB2YWx1ZS5lbmRzV2l0aChcImVtXCIpIHx8IHZhbHVlLmVuZHNXaXRoKFwibXNcIikpIHJldHVybiB0cnVlO1xyXG4gICAgICAgIGlmICh2YWx1ZS5zdGFydHNXaXRoKFwibGF5ZXJDb250YWluZXItXCIpKSByZXR1cm4gdHJ1ZTtcclxuICAgICAgICBpZiAodmFsdWUuc3RhcnRzV2l0aChcIiNcIikgJiYgKHZhbHVlLmxlbmd0aCA9PSA3IHx8IHZhbHVlLmxlbmd0aCA9PSA0KSkgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgaWYgKHZhbHVlLmluY2x1ZGVzKFwiY2FsYyhcIikgfHwgdmFsdWUuaW5jbHVkZXMoXCJyZ2JhXCIpKSByZXR1cm4gdHJ1ZTtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgbW9kdWxlRmlsdGVyKG1vZHVsZSkge1xyXG4gICAgICAgIGlmICh0eXBlb2YgbW9kdWxlICE9PSBcIm9iamVjdFwiIHx8IEFycmF5LmlzQXJyYXkobW9kdWxlKSkgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIGlmIChtb2R1bGUuX19lc01vZHVsZSkgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIGlmICghT2JqZWN0LmtleXMobW9kdWxlKS5sZW5ndGgpIHJldHVybiBmYWxzZTtcclxuICAgICAgICBmb3IgKGNvbnN0IGJhc2VDbGFzc05hbWUgaW4gbW9kdWxlKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gbW9kdWxlW2Jhc2VDbGFzc05hbWVdO1xyXG4gICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSBcInN0cmluZ1wiKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnNob3VsZElnbm9yZSh2YWx1ZSkpIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICBpZiAodmFsdWUuc3BsaXQoXCItXCIpLmxlbmd0aCA9PT0gMSkgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICBpZiAoIXJhbmRDbGFzcy50ZXN0KHZhbHVlLnNwbGl0KFwiIFwiKVswXSkpIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHBhdGNoQ2xhc3NNb2R1bGUoY29tcG9uZW50TmFtZSwgY2xhc3NOYW1lcykge1xyXG4gICAgICAgIGZvciAoY29uc3QgYmFzZUNsYXNzTmFtZSBpbiBjbGFzc05hbWVzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gY2xhc3NOYW1lc1tiYXNlQ2xhc3NOYW1lXTtcclxuICAgICAgICAgICAgaWYgKHRoaXMuc2hvdWxkSWdub3JlKHZhbHVlKSkgY29udGludWU7XHJcbiAgICAgICAgICAgIGNvbnN0IGNsYXNzTGlzdCA9IHZhbHVlLnNwbGl0KFwiIFwiKTtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBub3JtYWxDbGFzcyBvZiBjbGFzc0xpc3QpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG1hdGNoID0gbm9ybWFsQ2xhc3MubWF0Y2gocmFuZENsYXNzKTtcclxuICAgICAgICAgICAgICAgIGlmICghbWF0Y2ggfHwgIW1hdGNoLmxlbmd0aCB8fCBtYXRjaC5sZW5ndGggPCAyKSBjb250aW51ZTsgLy8gU2hvdWxkbid0IGV2ZXIgaGFwcGVuIHNpbmNlIHRoZXkgcGFzc2VkIHRoZSBtb2R1bGVGaWx0ZXIsIGJ1dCB5b3UgbmV2ZXIga25vd1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY2FtZWxDYXNlID0gbWF0Y2hbMV0uc3BsaXQoXCItXCIpLm1hcCgocywgaSkgPT4gaSA/IHNbMF0udG9VcHBlckNhc2UoKSArIHMuc2xpY2UoMSkgOiBzKS5qb2luKFwiXCIpO1xyXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lc1tiYXNlQ2xhc3NOYW1lXSArPSBgICR7Y29tcG9uZW50TmFtZX0tJHtjYW1lbENhc2V9YDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB1bnBhdGNoQ2xhc3NNb2R1bGUoY29tcG9uZW50TmFtZSwgY2xhc3NOYW1lcykge1xyXG4gICAgICAgIGZvciAoY29uc3QgYmFzZUNsYXNzTmFtZSBpbiBjbGFzc05hbWVzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gY2xhc3NOYW1lc1tiYXNlQ2xhc3NOYW1lXTtcclxuICAgICAgICAgICAgaWYgKHRoaXMuc2hvdWxkSWdub3JlKHZhbHVlKSkgY29udGludWU7XHJcbiAgICAgICAgICAgIGxldCBuZXdTdHJpbmcgPSBcIlwiO1xyXG4gICAgICAgICAgICBjb25zdCBjbGFzc0xpc3QgPSB2YWx1ZS5zcGxpdChcIiBcIik7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3Qgbm9ybWFsQ2xhc3Mgb2YgY2xhc3NMaXN0KSB7XHJcbiAgICAgICAgICAgICAgICBpZiAobm9ybWFsQ2xhc3Muc3RhcnRzV2l0aChgJHtjb21wb25lbnROYW1lfS1gKSkgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICBuZXdTdHJpbmcgKz0gYCAke25vcm1hbENsYXNzfWA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2xhc3NOYW1lc1tiYXNlQ2xhc3NOYW1lXSA9IG5ld1N0cmluZy50cmltKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG5vcm1hbGl6ZUVsZW1lbnQoZWxlbWVudCkge1xyXG4gICAgICAgIGlmICghKGVsZW1lbnQgaW5zdGFuY2VvZiBFbGVtZW50KSkgcmV0dXJuO1xyXG4gICAgICAgIGNvbnN0IGNsYXNzZXMgPSBlbGVtZW50LmNsYXNzTGlzdDtcclxuICAgICAgICBmb3IgKGxldCBjID0gMCwgY2xlbiA9IGNsYXNzZXMubGVuZ3RoOyBjIDwgY2xlbjsgYysrKSB7XHJcbiAgICAgICAgICAgIGlmICghcmFuZENsYXNzLnRlc3QoY2xhc3Nlc1tjXSkpIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICBjb25zdCBtYXRjaCA9IGNsYXNzZXNbY10ubWF0Y2gocmFuZENsYXNzKVsxXTtcclxuICAgICAgICAgICAgY29uc3QgbmV3Q2xhc3MgPSBtYXRjaC5zcGxpdChcIi1cIikubWFwKChzLCBpKSA9PiBpID8gc1swXS50b1VwcGVyQ2FzZSgpICsgcy5zbGljZSgxKSA6IHMpLmpvaW4oXCJcIik7XHJcbiAgICAgICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LmFkZChgJHtub3JtYWxpemVkUHJlZml4fS0ke25ld0NsYXNzfWApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIGVsZW1lbnQuY2hpbGRyZW4pIHRoaXMubm9ybWFsaXplRWxlbWVudChjaGlsZCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV2ZXJ0RWxlbWVudChlbGVtZW50KSB7XHJcbiAgICAgICAgaWYgKCEoZWxlbWVudCBpbnN0YW5jZW9mIEVsZW1lbnQpKSByZXR1cm47XHJcbiAgICAgICAgaWYgKGVsZW1lbnQuY2hpbGRyZW4gJiYgZWxlbWVudC5jaGlsZHJlbi5sZW5ndGgpIHRoaXMucmV2ZXJ0RWxlbWVudChlbGVtZW50LmNoaWxkcmVuWzBdKTtcclxuICAgICAgICBpZiAoZWxlbWVudC5uZXh0RWxlbWVudFNpYmxpbmcpIHRoaXMucmV2ZXJ0RWxlbWVudChlbGVtZW50Lm5leHRFbGVtZW50U2libGluZyk7XHJcbiAgICAgICAgY29uc3QgY2xhc3NlcyA9IGVsZW1lbnQuY2xhc3NMaXN0O1xyXG4gICAgICAgIGNvbnN0IHRvUmVtb3ZlID0gW107XHJcbiAgICAgICAgZm9yIChsZXQgYyA9IDA7IGMgPCBjbGFzc2VzLmxlbmd0aDsgYysrKSB7XHJcbiAgICAgICAgICAgIGlmIChjbGFzc2VzW2NdLnN0YXJ0c1dpdGgoYCR7bm9ybWFsaXplZFByZWZpeH0tYCkpIHRvUmVtb3ZlLnB1c2goY2xhc3Nlc1tjXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSguLi50b1JlbW92ZSk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIHBhdGNoRE9NTWV0aG9kcygpIHtcclxuICAgICAgICBjb25zdCBjb250YWlucyA9IERPTVRva2VuTGlzdC5wcm90b3R5cGUuY29udGFpbnM7XHJcbiAgICAgICAgRE9NVG9rZW5MaXN0LnByb3RvdHlwZS5jb250YWlucyA9IGZ1bmN0aW9uKHRva2VuKSB7XHJcbiAgICAgICAgICAgIC8vIGNvbnN0IHRva2VucyA9IHRva2VuLnNwbGl0KFwiIFwiKTtcclxuICAgICAgICAgICAgcmV0dXJuIFJlZmxlY3QuYXBwbHkoY29udGFpbnMsIHRoaXMsIFt0b2tlbi5zcGxpdChcIiBcIilbMF1dKTtcclxuICAgICAgICAgICAgLy8gcmV0dXJuIHRva2Vucy5ldmVyeSh0ID0+IGNvbnRhaW5zLmNhbGwodGhpcywgdCkpO1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIGNvbnN0IGFkZCA9IERPTVRva2VuTGlzdC5wcm90b3R5cGUuYWRkO1xyXG4gICAgICAgIERPTVRva2VuTGlzdC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24oLi4udG9rZW5zKSB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IHQgPSAwOyB0IDwgdG9rZW5zLmxlbmd0aDsgdCsrKSB7XHJcbiAgICAgICAgICAgICAgICB0b2tlbnNbdF0gPSB0b2tlbnNbdF0uc3BsaXQoXCIgXCIpWzBdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBSZWZsZWN0LmFwcGx5KGFkZCwgdGhpcywgdG9rZW5zKTtcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBjb25zdCByZW1vdmUgPSBET01Ub2tlbkxpc3QucHJvdG90eXBlLnJlbW92ZTtcclxuICAgICAgICBET01Ub2tlbkxpc3QucHJvdG90eXBlLnJlbW92ZSA9IGZ1bmN0aW9uKC4uLnRva2Vucykge1xyXG4gICAgICAgICAgICBmb3IgKGxldCB0ID0gMDsgdCA8IHRva2Vucy5sZW5ndGg7IHQrKykge1xyXG4gICAgICAgICAgICAgICAgdG9rZW5zW3RdID0gdG9rZW5zW3RdLnNwbGl0KFwiIFwiKVswXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gUmVmbGVjdC5hcHBseShyZW1vdmUsIHRoaXMsIHRva2Vucyk7XHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/builtins/general/classnormalizer.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _structs_builtin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../structs/builtin */ \"./src/structs/builtin.js\");\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\n\nconst normalizedPrefix = \"da\";\nconst randClass = new RegExp(`^(?!${normalizedPrefix}-)((?:[A-Za-z]|[0-9]|-)+)-(?:[A-Za-z]|[0-9]|-|_){6}$`);\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class ClassNormalizer extends _structs_builtin__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n get id() {\n return \"classNormalizer\";\n }\n\n get category() {\n return \"general\";\n }\n\n get name() {\n return \"ClassNormalizer\";\n }\n\n enabled() {\n if (this.hasPatched) return;\n this.patchClassModules(modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getModules(this.moduleFilter.bind(this)));\n this.normalizeElement(document.querySelector(\"#app-mount\"));\n this.hasPatched = true;\n this.patchDOMMethods();\n }\n\n disabled() {\n if (!this.hasPatched) return;\n this.unpatchClassModules(modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getModules(this.moduleFilter.bind(this)));\n this.revertElement(document.querySelector(\"#app-mount\"));\n this.hasPatched = false;\n }\n\n patchClassModules(modules) {\n for (const module of modules) {\n this.patchClassModule(normalizedPrefix, module);\n }\n }\n\n unpatchClassModules(modules) {\n for (const module of modules) {\n this.unpatchClassModule(normalizedPrefix, module);\n }\n }\n\n shouldIgnore(value) {\n if (!isNaN(value)) return true;\n if (value.endsWith(\"px\") || value.endsWith(\"ch\") || value.endsWith(\"em\") || value.endsWith(\"ms\")) return true;\n if (value.startsWith(\"layerContainer-\")) return true;\n if (value.startsWith(\"#\") && (value.length == 7 || value.length == 4)) return true;\n if (value.includes(\"calc(\") || value.includes(\"rgba\")) return true;\n return false;\n }\n\n moduleFilter(module) {\n if (typeof module !== \"object\" || Array.isArray(module)) return false;\n if (module.__esModule) return false;\n if (!Object.keys(module).length) return false;\n\n for (const baseClassName in module) {\n const value = module[baseClassName];\n if (typeof value !== \"string\") return false;\n if (this.shouldIgnore(value)) continue;\n if (value.split(\"-\").length === 1) return false;\n if (!randClass.test(value.split(\" \")[0])) return false;\n }\n\n return true;\n }\n\n patchClassModule(componentName, classNames) {\n for (const baseClassName in classNames) {\n const value = classNames[baseClassName];\n if (this.shouldIgnore(value)) continue;\n const classList = value.split(\" \");\n\n for (const normalClass of classList) {\n const match = normalClass.match(randClass);\n if (!match || !match.length || match.length < 2) continue; // Shouldn't ever happen since they passed the moduleFilter, but you never know\n\n const camelCase = match[1].split(\"-\").map((s, i) => i ? s[0].toUpperCase() + s.slice(1) : s).join(\"\");\n classNames[baseClassName] += ` ${componentName}-${camelCase}`;\n }\n }\n }\n\n unpatchClassModule(componentName, classNames) {\n for (const baseClassName in classNames) {\n const value = classNames[baseClassName];\n if (this.shouldIgnore(value)) continue;\n let newString = \"\";\n const classList = value.split(\" \");\n\n for (const normalClass of classList) {\n if (normalClass.startsWith(`${componentName}-`)) continue;\n newString += ` ${normalClass}`;\n }\n\n classNames[baseClassName] = newString.trim();\n }\n }\n\n normalizeElement(element) {\n if (!(element instanceof Element)) return;\n const classes = element.classList;\n\n for (let c = 0, clen = classes.length; c < clen; c++) {\n if (!randClass.test(classes[c])) continue;\n const match = classes[c].match(randClass)[1];\n const newClass = match.split(\"-\").map((s, i) => i ? s[0].toUpperCase() + s.slice(1) : s).join(\"\");\n element.classList.add(`${normalizedPrefix}-${newClass}`);\n }\n\n for (const child of element.children) this.normalizeElement(child);\n }\n\n revertElement(element) {\n if (!(element instanceof Element)) return;\n if (element.children && element.children.length) this.revertElement(element.children[0]);\n if (element.nextElementSibling) this.revertElement(element.nextElementSibling);\n const classes = element.classList;\n const toRemove = [];\n\n for (let c = 0; c < classes.length; c++) {\n if (classes[c].startsWith(`${normalizedPrefix}-`)) toRemove.push(classes[c]);\n }\n\n element.classList.remove(...toRemove);\n }\n\n patchDOMMethods() {\n const contains = DOMTokenList.prototype.contains;\n\n DOMTokenList.prototype.contains = function (token) {\n // const tokens = token.split(\" \");\n return Reflect.apply(contains, this, [token.split(\" \")[0]]); // return tokens.every(t => contains.call(this, t));\n };\n\n const add = DOMTokenList.prototype.add;\n\n DOMTokenList.prototype.add = function (...tokens) {\n for (let t = 0; t < tokens.length; t++) {\n tokens[t] = tokens[t].split(\" \")[0];\n }\n\n return Reflect.apply(add, this, tokens);\n };\n\n const remove = DOMTokenList.prototype.remove;\n\n DOMTokenList.prototype.remove = function (...tokens) {\n for (let t = 0; t < tokens.length; t++) {\n tokens[t] = tokens[t].split(\" \")[0];\n }\n\n return Reflect.apply(remove, this, tokens);\n };\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYnVpbHRpbnMvZ2VuZXJhbC9jbGFzc25vcm1hbGl6ZXIuanM/MmRiNiJdLCJuYW1lcyI6WyJub3JtYWxpemVkUHJlZml4IiwicmFuZENsYXNzIiwiUmVnRXhwIiwiQ2xhc3NOb3JtYWxpemVyIiwiQnVpbHRpbiIsImlkIiwiY2F0ZWdvcnkiLCJuYW1lIiwiZW5hYmxlZCIsImhhc1BhdGNoZWQiLCJwYXRjaENsYXNzTW9kdWxlcyIsIldlYnBhY2tNb2R1bGVzIiwiZ2V0TW9kdWxlcyIsIm1vZHVsZUZpbHRlciIsImJpbmQiLCJub3JtYWxpemVFbGVtZW50IiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwicGF0Y2hET01NZXRob2RzIiwiZGlzYWJsZWQiLCJ1bnBhdGNoQ2xhc3NNb2R1bGVzIiwicmV2ZXJ0RWxlbWVudCIsIm1vZHVsZXMiLCJtb2R1bGUiLCJwYXRjaENsYXNzTW9kdWxlIiwidW5wYXRjaENsYXNzTW9kdWxlIiwic2hvdWxkSWdub3JlIiwidmFsdWUiLCJpc05hTiIsImVuZHNXaXRoIiwic3RhcnRzV2l0aCIsImxlbmd0aCIsImluY2x1ZGVzIiwiQXJyYXkiLCJpc0FycmF5IiwiX19lc01vZHVsZSIsIk9iamVjdCIsImtleXMiLCJiYXNlQ2xhc3NOYW1lIiwic3BsaXQiLCJ0ZXN0IiwiY29tcG9uZW50TmFtZSIsImNsYXNzTmFtZXMiLCJjbGFzc0xpc3QiLCJub3JtYWxDbGFzcyIsIm1hdGNoIiwiY2FtZWxDYXNlIiwibWFwIiwicyIsImkiLCJ0b1VwcGVyQ2FzZSIsInNsaWNlIiwiam9pbiIsIm5ld1N0cmluZyIsInRyaW0iLCJlbGVtZW50IiwiRWxlbWVudCIsImNsYXNzZXMiLCJjIiwiY2xlbiIsIm5ld0NsYXNzIiwiYWRkIiwiY2hpbGQiLCJjaGlsZHJlbiIsIm5leHRFbGVtZW50U2libGluZyIsInRvUmVtb3ZlIiwicHVzaCIsInJlbW92ZSIsImNvbnRhaW5zIiwiRE9NVG9rZW5MaXN0IiwicHJvdG90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TSxDQUFDQyxDQUFELENBQU4sR0FBWUQsTUFBTSxDQUFDQyxDQUFELENBQU4sQ0FBVXBDLEtBQVYsQ0FBZ0IsR0FBaEIsRUFBcUIsQ0FBckIsQ0FBWjtBQUNIOztBQUNELGFBQU9pQyxPQUFPLENBQUNDLEtBQVIsQ0FBY1osR0FBZCxFQUFtQixJQUFuQixFQUF5QmEsTUFBekIsQ0FBUDtBQUNILEtBTEQ7O0FBT0EsVUFBTVAsTUFBTSxHQUFHRSxZQUFZLENBQUNDLFNBQWIsQ0FBdUJILE1BQXRDOztBQUNBRSxnQkFBWSxDQUFDQyxTQUFiLENBQXVCSCxNQUF2QixHQUFnQyxVQUFTLEdBQUdPLE1BQVosRUFBb0I7QUFDaEQsV0FBSyxJQUFJQyxDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHRCxNQUFNLENBQUMzQyxNQUEzQixFQUFtQzRDLENBQUMsRUFBcEMsRUFBd0M7QUFDcENELGNBQU0sQ0FBQ0MsQ0FBRCxDQUFOLEdBQVlELE1BQU0sQ0FBQ0MsQ0FBRCxDQUFOLENBQVVwQyxLQUFWLENBQWdCLEdBQWhCLEVBQXFCLENBQXJCLENBQVo7QUFDSDs7QUFDRCxhQUFPaUMsT0FBTyxDQUFDQyxLQUFSLENBQWNOLE1BQWQsRUFBc0IsSUFBdEIsRUFBNEJPLE1BQTVCLENBQVA7QUFDSCxLQUxEO0FBTUg7O0FBbklvRCxDQUExQyxFQUFmIiwiZmlsZSI6Ii4vc3JjL2J1aWx0aW5zL2dlbmVyYWwvY2xhc3Nub3JtYWxpemVyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJ1aWx0aW4gZnJvbSBcIi4uLy4uL3N0cnVjdHMvYnVpbHRpblwiO1xyXG5pbXBvcnQge1dlYnBhY2tNb2R1bGVzfSBmcm9tIFwibW9kdWxlc1wiO1xyXG5cclxuY29uc3Qgbm9ybWFsaXplZFByZWZpeCA9IFwiZGFcIjtcclxuY29uc3QgcmFuZENsYXNzID0gbmV3IFJlZ0V4cChgXig/ISR7bm9ybWFsaXplZFByZWZpeH0tKSgoPzpbQS1aYS16XXxbMC05XXwtKSspLSg/OltBLVphLXpdfFswLTldfC18Xyl7Nn0kYCk7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBuZXcgY2xhc3MgQ2xhc3NOb3JtYWxpemVyIGV4dGVuZHMgQnVpbHRpbiB7XHJcbiAgICBnZXQgaWQoKSB7cmV0dXJuIFwiY2xhc3NOb3JtYWxpemVyXCI7fVxyXG4gICAgZ2V0IGNhdGVnb3J5KCkge3JldHVybiBcImdlbmVyYWxcIjt9XHJcbiAgICBnZXQgbmFtZSgpIHtyZXR1cm4gXCJDbGFzc05vcm1hbGl6ZXJcIjt9XHJcblxyXG4gICAgZW5hYmxlZCgpIHtcclxuICAgICAgICBpZiAodGhpcy5oYXNQYXRjaGVkKSByZXR1cm47XHJcbiAgICAgICAgdGhpcy5wYXRjaENsYXNzTW9kdWxlcyhXZWJwYWNrTW9kdWxlcy5nZXRNb2R1bGVzKHRoaXMubW9kdWxlRmlsdGVyLmJpbmQodGhpcykpKTtcclxuICAgICAgICB0aGlzLm5vcm1hbGl6ZUVsZW1lbnQoZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNhcHAtbW91bnRcIikpO1xyXG4gICAgICAgIHRoaXMuaGFzUGF0Y2hlZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5wYXRjaERPTU1ldGhvZHMoKTtcclxuICAgIH1cclxuXHJcbiAgICBkaXNhYmxlZCgpIHtcclxuICAgICAgICBpZiAoIXRoaXMuaGFzUGF0Y2hlZCkgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMudW5wYXRjaENsYXNzTW9kdWxlcyhXZWJwYWNrTW9kdWxlcy5nZXRNb2R1bGVzKHRoaXMubW9kdWxlRmlsdGVyLmJpbmQodGhpcykpKTtcclxuICAgICAgICB0aGlzLnJldmVydEVsZW1lbnQoZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNhcHAtbW91bnRcIikpO1xyXG4gICAgICAgIHRoaXMuaGFzUGF0Y2hlZCA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHBhdGNoQ2xhc3NNb2R1bGVzKG1vZHVsZXMpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IG1vZHVsZSBvZiBtb2R1bGVzKSB7XHJcbiAgICAgICAgICAgIHRoaXMucGF0Y2hDbGFzc01vZHVsZShub3JtYWxpemVkUHJlZml4LCBtb2R1bGUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB1bnBhdGNoQ2xhc3NNb2R1bGVzKG1vZHVsZXMpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IG1vZHVsZSBvZiBtb2R1bGVzKSB7XHJcbiAgICAgICAgICAgIHRoaXMudW5wYXRjaENsYXNzTW9kdWxlKG5vcm1hbGl6ZWRQcmVmaXgsIG1vZHVsZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHNob3VsZElnbm9yZSh2YWx1ZSkge1xyXG4gICAgICAgIGlmICghaXNOYU4odmFsdWUpKSByZXR1cm4gdHJ1ZTtcclxuICAgICAgICBpZiAodmFsdWUuZW5kc1dpdGgoXCJweFwiKSB8fCB2YWx1ZS5lbmRzV2l0aChcImNoXCIpIHx8IHZhbHVlLmVuZHNXaXRoKFwiZW1cIikgfHwgdmFsdWUuZW5kc1dpdGgoXCJtc1wiKSkgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgaWYgKHZhbHVlLnN0YXJ0c1dpdGgoXCJsYXllckNvbnRhaW5lci1cIikpIHJldHVybiB0cnVlO1xyXG4gICAgICAgIGlmICh2YWx1ZS5zdGFydHNXaXRoKFwiI1wiKSAmJiAodmFsdWUubGVuZ3RoID09IDcgfHwgdmFsdWUubGVuZ3RoID09IDQpKSByZXR1cm4gdHJ1ZTtcclxuICAgICAgICBpZiAodmFsdWUuaW5jbHVkZXMoXCJjYWxjKFwiKSB8fCB2YWx1ZS5pbmNsdWRlcyhcInJnYmFcIikpIHJldHVybiB0cnVlO1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBtb2R1bGVGaWx0ZXIobW9kdWxlKSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiBtb2R1bGUgIT09IFwib2JqZWN0XCIgfHwgQXJyYXkuaXNBcnJheShtb2R1bGUpKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgaWYgKG1vZHVsZS5fX2VzTW9kdWxlKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgaWYgKCFPYmplY3Qua2V5cyhtb2R1bGUpLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIGZvciAoY29uc3QgYmFzZUNsYXNzTmFtZSBpbiBtb2R1bGUpIHtcclxuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBtb2R1bGVbYmFzZUNsYXNzTmFtZV07XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IFwic3RyaW5nXCIpIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgaWYgKHRoaXMuc2hvdWxkSWdub3JlKHZhbHVlKSkgY29udGludWU7XHJcbiAgICAgICAgICAgIGlmICh2YWx1ZS5zcGxpdChcIi1cIikubGVuZ3RoID09PSAxKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIGlmICghcmFuZENsYXNzLnRlc3QodmFsdWUuc3BsaXQoXCIgXCIpWzBdKSkgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgcGF0Y2hDbGFzc01vZHVsZShjb21wb25lbnROYW1lLCBjbGFzc05hbWVzKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBiYXNlQ2xhc3NOYW1lIGluIGNsYXNzTmFtZXMpIHtcclxuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBjbGFzc05hbWVzW2Jhc2VDbGFzc05hbWVdO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5zaG91bGRJZ25vcmUodmFsdWUpKSBjb250aW51ZTtcclxuICAgICAgICAgICAgY29uc3QgY2xhc3NMaXN0ID0gdmFsdWUuc3BsaXQoXCIgXCIpO1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IG5vcm1hbENsYXNzIG9mIGNsYXNzTGlzdCkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSBub3JtYWxDbGFzcy5tYXRjaChyYW5kQ2xhc3MpO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFtYXRjaCB8fCAhbWF0Y2gubGVuZ3RoIHx8IG1hdGNoLmxlbmd0aCA8IDIpIGNvbnRpbnVlOyAvLyBTaG91bGRuJ3QgZXZlciBoYXBwZW4gc2luY2UgdGhleSBwYXNzZWQgdGhlIG1vZHVsZUZpbHRlciwgYnV0IHlvdSBuZXZlciBrbm93XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjYW1lbENhc2UgPSBtYXRjaFsxXS5zcGxpdChcIi1cIikubWFwKChzLCBpKSA9PiBpID8gc1swXS50b1VwcGVyQ2FzZSgpICsgcy5zbGljZSgxKSA6IHMpLmpvaW4oXCJcIik7XHJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWVzW2Jhc2VDbGFzc05hbWVdICs9IGAgJHtjb21wb25lbnROYW1lfS0ke2NhbWVsQ2FzZX1gO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHVucGF0Y2hDbGFzc01vZHVsZShjb21wb25lbnROYW1lLCBjbGFzc05hbWVzKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBiYXNlQ2xhc3NOYW1lIGluIGNsYXNzTmFtZXMpIHtcclxuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBjbGFzc05hbWVzW2Jhc2VDbGFzc05hbWVdO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5zaG91bGRJZ25vcmUodmFsdWUpKSBjb250aW51ZTtcclxuICAgICAgICAgICAgbGV0IG5ld1N0cmluZyA9IFwiXCI7XHJcbiAgICAgICAgICAgIGNvbnN0IGNsYXNzTGlzdCA9IHZhbHVlLnNwbGl0KFwiIFwiKTtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBub3JtYWxDbGFzcyBvZiBjbGFzc0xpc3QpIHtcclxuICAgICAgICAgICAgICAgIGlmIChub3JtYWxDbGFzcy5zdGFydHNXaXRoKGAke2NvbXBvbmVudE5hbWV9LWApKSBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIG5ld1N0cmluZyArPSBgICR7bm9ybWFsQ2xhc3N9YDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjbGFzc05hbWVzW2Jhc2VDbGFzc05hbWVdID0gbmV3U3RyaW5nLnRyaW0oKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgbm9ybWFsaXplRWxlbWVudChlbGVtZW50KSB7XHJcbiAgICAgICAgaWYgKCEoZWxlbWVudCBpbnN0YW5jZW9mIEVsZW1lbnQpKSByZXR1cm47XHJcbiAgICAgICAgY29uc3QgY2xhc3NlcyA9IGVsZW1lbnQuY2xhc3NMaXN0O1xyXG4gICAgICAgIGZvciAobGV0IGMgPSAwLCBjbGVuID0gY2xhc3Nlcy5sZW5ndGg7IGMgPCBjbGVuOyBjKyspIHtcclxuICAgICAgICAgICAgaWYgKCFyYW5kQ2xhc3MudGVzdChjbGFzc2VzW2NdKSkgY29udGludWU7XHJcbiAgICAgICAgICAgIGNvbnN0IG1hdGNoID0gY2xhc3Nlc1tjXS5tYXRjaChyYW5kQ2xhc3MpWzFdO1xyXG4gICAgICAgICAgICBjb25zdCBuZXdDbGFzcyA9IG1hdGNoLnNwbGl0KFwiLVwiKS5tYXAoKHMsIGkpID0+IGkgPyBzWzBdLnRvVXBwZXJDYXNlKCkgKyBzLnNsaWNlKDEpIDogcykuam9pbihcIlwiKTtcclxuICAgICAgICAgICAgZWxlbWVudC5jbGFzc0xpc3QuYWRkKGAke25vcm1hbGl6ZWRQcmVmaXh9LSR7bmV3Q2xhc3N9YCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZvciAoY29uc3QgY2hpbGQgb2YgZWxlbWVudC5jaGlsZHJlbikgdGhpcy5ub3JtYWxpemVFbGVtZW50KGNoaWxkKTtcclxuICAgIH1cclxuXHJcbiAgICByZXZlcnRFbGVtZW50KGVsZW1lbnQpIHtcclxuICAgICAgICBpZiAoIShlbGVtZW50IGluc3RhbmNlb2YgRWxlbWVudCkpIHJldHVybjtcclxuICAgICAgICBpZiAoZWxlbWVudC5jaGlsZHJlbiAmJiBlbGVtZW50LmNoaWxkcmVuLmxlbmd0aCkgdGhpcy5yZXZlcnRFbGVtZW50KGVsZW1lbnQuY2hpbGRyZW5bMF0pO1xyXG4gICAgICAgIGlmIChlbGVtZW50Lm5leHRFbGVtZW50U2libGluZykgdGhpcy5yZXZlcnRFbGVtZW50KGVsZW1lbnQubmV4dEVsZW1lbnRTaWJsaW5nKTtcclxuICAgICAgICBjb25zdCBjbGFzc2VzID0gZWxlbWVudC5jbGFzc0xpc3Q7XHJcbiAgICAgICAgY29uc3QgdG9SZW1vdmUgPSBbXTtcclxuICAgICAgICBmb3IgKGxldCBjID0gMDsgYyA8IGNsYXNzZXMubGVuZ3RoOyBjKyspIHtcclxuICAgICAgICAgICAgaWYgKGNsYXNzZXNbY10uc3RhcnRzV2l0aChgJHtub3JtYWxpemVkUHJlZml4fS1gKSkgdG9SZW1vdmUucHVzaChjbGFzc2VzW2NdKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKC4uLnRvUmVtb3ZlKTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgcGF0Y2hET01NZXRob2RzKCkge1xyXG4gICAgICAgIGNvbnN0IGNvbnRhaW5zID0gRE9NVG9rZW5MaXN0LnByb3RvdHlwZS5jb250YWlucztcclxuICAgICAgICBET01Ub2tlbkxpc3QucHJvdG90eXBlLmNvbnRhaW5zID0gZnVuY3Rpb24odG9rZW4pIHtcclxuICAgICAgICAgICAgLy8gY29uc3QgdG9rZW5zID0gdG9rZW4uc3BsaXQoXCIgXCIpO1xyXG4gICAgICAgICAgICByZXR1cm4gUmVmbGVjdC5hcHBseShjb250YWlucywgdGhpcywgW3Rva2VuLnNwbGl0KFwiIFwiKVswXV0pO1xyXG4gICAgICAgICAgICAvLyByZXR1cm4gdG9rZW5zLmV2ZXJ5KHQgPT4gY29udGFpbnMuY2FsbCh0aGlzLCB0KSk7XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgY29uc3QgYWRkID0gRE9NVG9rZW5MaXN0LnByb3RvdHlwZS5hZGQ7XHJcbiAgICAgICAgRE9NVG9rZW5MaXN0LnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiguLi50b2tlbnMpIHtcclxuICAgICAgICAgICAgZm9yIChsZXQgdCA9IDA7IHQgPCB0b2tlbnMubGVuZ3RoOyB0KyspIHtcclxuICAgICAgICAgICAgICAgIHRva2Vuc1t0XSA9IHRva2Vuc1t0XS5zcGxpdChcIiBcIilbMF07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIFJlZmxlY3QuYXBwbHkoYWRkLCB0aGlzLCB0b2tlbnMpO1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIGNvbnN0IHJlbW92ZSA9IERPTVRva2VuTGlzdC5wcm90b3R5cGUucmVtb3ZlO1xyXG4gICAgICAgIERPTVRva2VuTGlzdC5wcm90b3R5cGUucmVtb3ZlID0gZnVuY3Rpb24oLi4udG9rZW5zKSB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IHQgPSAwOyB0IDwgdG9rZW5zLmxlbmd0aDsgdCsrKSB7XHJcbiAgICAgICAgICAgICAgICB0b2tlbnNbdF0gPSB0b2tlbnNbdF0uc3BsaXQoXCIgXCIpWzBdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBSZWZsZWN0LmFwcGx5KHJlbW92ZSwgdGhpcywgdG9rZW5zKTtcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/builtins/general/classnormalizer.js\n"); /***/ }), @@ -251,7 +250,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _str /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _structs_builtin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../structs/builtin */ \"./src/structs/builtin.js\");\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _ui_publicservers_menu__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../ui/publicservers/menu */ \"./src/ui/publicservers/menu.js\");\n\n\n\nconst LayerStack = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"pushLayer\");\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class PublicServers extends _structs_builtin__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n get name() {\n return \"PublicServers\";\n }\n\n get category() {\n return \"general\";\n }\n\n get id() {\n return \"publicServers\";\n }\n\n enabled() {\n const GuildList = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].find(m => m.default && m.default.displayName == \"NavigableGuilds\");\n const GuildListOld = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].findByDisplayName(\"Guilds\");\n if (!GuildList && !GuildListOld) this.warn(\"Can't find GuildList component\");\n this.guildPatch = this.after(GuildList ? GuildList : GuildListOld.prototype, GuildList ? \"default\" : \"render\", this._appendButton);\n\n this._appendButton();\n }\n\n disabled() {\n this.unpatchAll();\n modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].query(\"#bd-pub-li\").remove();\n }\n\n _appendButton() {\n const wrapper = modules__WEBPACK_IMPORTED_MODULE_1__[\"DiscordModules\"].GuildClasses.wrapper.split(\" \")[0];\n const guilds = modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].query(`.${wrapper} .scroller-2TZvBN >:first-child`);\n modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].after(guilds, this.button);\n }\n\n openPublicServers() {\n LayerStack.pushLayer(() => modules__WEBPACK_IMPORTED_MODULE_1__[\"DiscordModules\"].React.createElement(_ui_publicservers_menu__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n close: LayerStack.popLayer\n }));\n }\n\n get button() {\n const btn = modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].createElement(`
`);\n const label = modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].createElement(`
${modules__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].PublicServers.button}
`);\n label.addEventListener(\"click\", () => {\n this.openPublicServers();\n });\n btn.append(label);\n return btn;\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL2J1aWx0aW5zL2dlbmVyYWwvcHVibGljc2VydmVycy5qcz84YjdlIl0sIm5hbWVzIjpbIkxheWVyU3RhY2siLCJXZWJwYWNrTW9kdWxlcyIsImdldEJ5UHJvcHMiLCJQdWJsaWNTZXJ2ZXJzIiwiQnVpbHRpbiIsIm5hbWUiLCJjYXRlZ29yeSIsImlkIiwiZW5hYmxlZCIsIkd1aWxkTGlzdCIsImZpbmQiLCJtIiwiZGVmYXVsdCIsImRpc3BsYXlOYW1lIiwiR3VpbGRMaXN0T2xkIiwiZmluZEJ5RGlzcGxheU5hbWUiLCJ3YXJuIiwiZ3VpbGRQYXRjaCIsImFmdGVyIiwicHJvdG90eXBlIiwiX2FwcGVuZEJ1dHRvbiIsImRpc2FibGVkIiwidW5wYXRjaEFsbCIsIkRPTSIsInF1ZXJ5IiwicmVtb3ZlIiwid3JhcHBlciIsIkRpc2NvcmRNb2R1bGVzIiwiR3VpbGRDbGFzc2VzIiwic3BsaXQiLCJndWlsZHMiLCJidXR0b24iLCJvcGVuUHVibGljU2VydmVycyIsInB1c2hMYXllciIsIlJlYWN0IiwiY3JlYXRlRWxlbWVudCIsIlB1YmxpY1NlcnZlcnNNZW51IiwiY2xvc2UiLCJwb3BMYXllciIsImJ0biIsImxpc3RJdGVtIiwibGFiZWwiLCJjaXJjbGVCdXR0b25NYXNrIiwiU3RyaW5ncyIsImFkZEV2ZW50TGlzdGVuZXIiLCJhcHBlbmQiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBRUEsTUFBTUEsVUFBVSxHQUFHQyxzREFBYyxDQUFDQyxVQUFmLENBQTBCLFdBQTFCLENBQW5CO0FBRWUsbUVBQUksTUFBTUMsYUFBTixTQUE0QkMsd0RBQTVCLENBQW9DO0FBQ25ELE1BQUlDLElBQUosR0FBVztBQUFDLFdBQU8sZUFBUDtBQUF3Qjs7QUFDcEMsTUFBSUMsUUFBSixHQUFlO0FBQUMsV0FBTyxTQUFQO0FBQWtCOztBQUNsQyxNQUFJQyxFQUFKLEdBQVM7QUFBQyxXQUFPLGVBQVA7QUFBd0I7O0FBRWxDQyxTQUFPLEdBQUc7QUFDTixVQUFNQyxTQUFTLEdBQUdSLHNEQUFjLENBQUNTLElBQWYsQ0FBb0JDLENBQUMsSUFBSUEsQ0FBQyxDQUFDQyxPQUFGLElBQWFELENBQUMsQ0FBQ0MsT0FBRixDQUFVQyxXQUFWLElBQXlCLGlCQUEvRCxDQUFsQjtBQUNBLFVBQU1DLFlBQVksR0FBR2Isc0RBQWMsQ0FBQ2MsaUJBQWYsQ0FBaUMsUUFBakMsQ0FBckI7QUFDQSxRQUFJLENBQUNOLFNBQUQsSUFBYyxDQUFDSyxZQUFuQixFQUFpQyxLQUFLRSxJQUFMLENBQVUsZ0NBQVY7QUFDakMsU0FBS0MsVUFBTCxHQUFrQixLQUFLQyxLQUFMLENBQVdULFNBQVMsR0FBR0EsU0FBSCxHQUFlSyxZQUFZLENBQUNLLFNBQWhELEVBQTJEVixTQUFTLEdBQUcsU0FBSCxHQUFlLFFBQW5GLEVBQTZGLEtBQUtXLGFBQWxHLENBQWxCOztBQUNBLFNBQUtBLGFBQUw7QUFDSDs7QUFFREMsVUFBUSxHQUFHO0FBQ1AsU0FBS0MsVUFBTDtBQUNBQywrQ0FBRyxDQUFDQyxLQUFKLENBQVUsWUFBVixFQUF3QkMsTUFBeEI7QUFDSDs7QUFFREwsZUFBYSxHQUFHO0FBQ1osVUFBTU0sT0FBTyxHQUFHQyxzREFBYyxDQUFDQyxZQUFmLENBQTRCRixPQUE1QixDQUFvQ0csS0FBcEMsQ0FBMEMsR0FBMUMsRUFBK0MsQ0FBL0MsQ0FBaEI7QUFDQSxVQUFNQyxNQUFNLEdBQUdQLDJDQUFHLENBQUNDLEtBQUosQ0FBVyxJQUFHRSxPQUFRLGlDQUF0QixDQUFmO0FBQ0FILCtDQUFHLENBQUNMLEtBQUosQ0FBVVksTUFBVixFQUFrQixLQUFLQyxNQUF2QjtBQUNIOztBQUVEQyxtQkFBaUIsR0FBRztBQUNoQmhDLGNBQVUsQ0FBQ2lDLFNBQVgsQ0FBcUIsTUFBTU4sc0RBQWMsQ0FBQ08sS0FBZixDQUFxQkMsYUFBckIsQ0FBbUNDLDhEQUFuQyxFQUFzRDtBQUFDQyxXQUFLLEVBQUVyQyxVQUFVLENBQUNzQztBQUFuQixLQUF0RCxDQUEzQjtBQUNIOztBQUVELE1BQUlQLE1BQUosR0FBYTtBQUNULFVBQU1RLEdBQUcsR0FBR2hCLDJDQUFHLENBQUNZLGFBQUosQ0FBbUIsOEJBQTZCUixzREFBYyxDQUFDQyxZQUFmLENBQTRCWSxRQUFTLElBQXJGLENBQVo7QUFDQSxVQUFNQyxLQUFLLEdBQUdsQiwyQ0FBRyxDQUFDWSxhQUFKLENBQW1CLGtDQUFpQyxvQkFBb0JSLHNEQUFjLENBQUNDLFlBQWYsQ0FBNEJjLGdCQUFpQixLQUFJQywrQ0FBTyxDQUFDeEMsYUFBUixDQUFzQjRCLE1BQU8sUUFBdEosQ0FBZDtBQUNBVSxTQUFLLENBQUNHLGdCQUFOLENBQXVCLE9BQXZCLEVBQWdDLE1BQU07QUFBQyxXQUFLWixpQkFBTDtBQUEwQixLQUFqRTtBQUNBTyxPQUFHLENBQUNNLE1BQUosQ0FBV0osS0FBWDtBQUNBLFdBQU9GLEdBQVA7QUFDSDs7QUFsQ2tELENBQXhDLEVBQWYiLCJmaWxlIjoiLi9zcmMvYnVpbHRpbnMvZ2VuZXJhbC9wdWJsaWNzZXJ2ZXJzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJ1aWx0aW4gZnJvbSBcIi4uLy4uL3N0cnVjdHMvYnVpbHRpblwiO1xyXG5pbXBvcnQge0Rpc2NvcmRNb2R1bGVzLCBXZWJwYWNrTW9kdWxlcywgU3RyaW5ncywgRE9NfSBmcm9tIFwibW9kdWxlc1wiO1xyXG5pbXBvcnQgUHVibGljU2VydmVyc01lbnUgZnJvbSBcIi4uLy4uL3VpL3B1YmxpY3NlcnZlcnMvbWVudVwiO1xyXG5cclxuY29uc3QgTGF5ZXJTdGFjayA9IFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJwdXNoTGF5ZXJcIik7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBuZXcgY2xhc3MgUHVibGljU2VydmVycyBleHRlbmRzIEJ1aWx0aW4ge1xyXG4gICAgZ2V0IG5hbWUoKSB7cmV0dXJuIFwiUHVibGljU2VydmVyc1wiO31cclxuICAgIGdldCBjYXRlZ29yeSgpIHtyZXR1cm4gXCJnZW5lcmFsXCI7fVxyXG4gICAgZ2V0IGlkKCkge3JldHVybiBcInB1YmxpY1NlcnZlcnNcIjt9XHJcblxyXG4gICAgZW5hYmxlZCgpIHtcclxuICAgICAgICBjb25zdCBHdWlsZExpc3QgPSBXZWJwYWNrTW9kdWxlcy5maW5kKG0gPT4gbS5kZWZhdWx0ICYmIG0uZGVmYXVsdC5kaXNwbGF5TmFtZSA9PSBcIk5hdmlnYWJsZUd1aWxkc1wiKTtcclxuICAgICAgICBjb25zdCBHdWlsZExpc3RPbGQgPSBXZWJwYWNrTW9kdWxlcy5maW5kQnlEaXNwbGF5TmFtZShcIkd1aWxkc1wiKTtcclxuICAgICAgICBpZiAoIUd1aWxkTGlzdCAmJiAhR3VpbGRMaXN0T2xkKSB0aGlzLndhcm4oXCJDYW4ndCBmaW5kIEd1aWxkTGlzdCBjb21wb25lbnRcIik7XHJcbiAgICAgICAgdGhpcy5ndWlsZFBhdGNoID0gdGhpcy5hZnRlcihHdWlsZExpc3QgPyBHdWlsZExpc3QgOiBHdWlsZExpc3RPbGQucHJvdG90eXBlLCBHdWlsZExpc3QgPyBcImRlZmF1bHRcIiA6IFwicmVuZGVyXCIsIHRoaXMuX2FwcGVuZEJ1dHRvbik7XHJcbiAgICAgICAgdGhpcy5fYXBwZW5kQnV0dG9uKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZGlzYWJsZWQoKSB7XHJcbiAgICAgICAgdGhpcy51bnBhdGNoQWxsKCk7XHJcbiAgICAgICAgRE9NLnF1ZXJ5KFwiI2JkLXB1Yi1saVwiKS5yZW1vdmUoKTtcclxuICAgIH1cclxuXHJcbiAgICBfYXBwZW5kQnV0dG9uKCkge1xyXG4gICAgICAgIGNvbnN0IHdyYXBwZXIgPSBEaXNjb3JkTW9kdWxlcy5HdWlsZENsYXNzZXMud3JhcHBlci5zcGxpdChcIiBcIilbMF07XHJcbiAgICAgICAgY29uc3QgZ3VpbGRzID0gRE9NLnF1ZXJ5KGAuJHt3cmFwcGVyfSAuc2Nyb2xsZXItMlRadkJOID46Zmlyc3QtY2hpbGRgKTtcclxuICAgICAgICBET00uYWZ0ZXIoZ3VpbGRzLCB0aGlzLmJ1dHRvbik7XHJcbiAgICB9XHJcblxyXG4gICAgb3BlblB1YmxpY1NlcnZlcnMoKSB7XHJcbiAgICAgICAgTGF5ZXJTdGFjay5wdXNoTGF5ZXIoKCkgPT4gRGlzY29yZE1vZHVsZXMuUmVhY3QuY3JlYXRlRWxlbWVudChQdWJsaWNTZXJ2ZXJzTWVudSwge2Nsb3NlOiBMYXllclN0YWNrLnBvcExheWVyfSkpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBidXR0b24oKSB7XHJcbiAgICAgICAgY29uc3QgYnRuID0gRE9NLmNyZWF0ZUVsZW1lbnQoYDxkaXYgaWQ9XCJiZC1wdWItbGlcIiBjbGFzcz1cIiR7RGlzY29yZE1vZHVsZXMuR3VpbGRDbGFzc2VzLmxpc3RJdGVtfVwiPmApO1xyXG4gICAgICAgIGNvbnN0IGxhYmVsID0gRE9NLmNyZWF0ZUVsZW1lbnQoYDxkaXYgaWQ9XCJiZC1wdWItYnV0dG9uXCIgY2xhc3M9XCIke1wid3JhcHBlci0yNWVWSW4gXCIgKyBEaXNjb3JkTW9kdWxlcy5HdWlsZENsYXNzZXMuY2lyY2xlQnV0dG9uTWFza31cIj4ke1N0cmluZ3MuUHVibGljU2VydmVycy5idXR0b259PC9kaXY+YCk7XHJcbiAgICAgICAgbGFiZWwuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsICgpID0+IHt0aGlzLm9wZW5QdWJsaWNTZXJ2ZXJzKCk7fSk7XHJcbiAgICAgICAgYnRuLmFwcGVuZChsYWJlbCk7XHJcbiAgICAgICAgcmV0dXJuIGJ0bjtcclxuICAgIH1cclxufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/builtins/general/publicservers.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _structs_builtin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../structs/builtin */ \"./src/structs/builtin.js\");\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _ui_publicservers_menu__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../ui/publicservers/menu */ \"./src/ui/publicservers/menu.js\");\n\n\n\nconst LayerStack = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"pushLayer\");\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class PublicServers extends _structs_builtin__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n get name() {\n return \"PublicServers\";\n }\n\n get category() {\n return \"general\";\n }\n\n get id() {\n return \"publicServers\";\n }\n\n enabled() {\n const GuildList = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].find(m => m.default && m.default.displayName == \"NavigableGuilds\");\n const GuildListOld = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].findByDisplayName(\"Guilds\");\n if (!GuildList && !GuildListOld) this.warn(\"Can't find GuildList component\");\n this.guildPatch = this.after(GuildList ? GuildList : GuildListOld.prototype, GuildList ? \"default\" : \"render\", this._appendButton);\n\n this._appendButton();\n }\n\n disabled() {\n this.unpatchAll();\n modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].query(\"#bd-pub-li\").remove();\n }\n\n _appendButton() {\n const wrapper = modules__WEBPACK_IMPORTED_MODULE_1__[\"DiscordModules\"].GuildClasses.wrapper.split(\" \")[0];\n const guilds = modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].query(`.${wrapper} .scroller-2TZvBN >:first-child`);\n modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].after(guilds, this.button);\n }\n\n openPublicServers() {\n LayerStack.pushLayer(() => modules__WEBPACK_IMPORTED_MODULE_1__[\"DiscordModules\"].React.createElement(_ui_publicservers_menu__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n close: LayerStack.popLayer\n }));\n }\n\n get button() {\n const btn = modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].createElement(`
`);\n const label = modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].createElement(`
${modules__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].PublicServers.button}
`);\n label.addEventListener(\"click\", () => {\n this.openPublicServers();\n });\n btn.append(label);\n return btn;\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYnVpbHRpbnMvZ2VuZXJhbC9wdWJsaWNzZXJ2ZXJzLmpzPzhiN2UiXSwibmFtZXMiOlsiTGF5ZXJTdGFjayIsIldlYnBhY2tNb2R1bGVzIiwiZ2V0QnlQcm9wcyIsIlB1YmxpY1NlcnZlcnMiLCJCdWlsdGluIiwibmFtZSIsImNhdGVnb3J5IiwiaWQiLCJlbmFibGVkIiwiR3VpbGRMaXN0IiwiZmluZCIsIm0iLCJkZWZhdWx0IiwiZGlzcGxheU5hbWUiLCJHdWlsZExpc3RPbGQiLCJmaW5kQnlEaXNwbGF5TmFtZSIsIndhcm4iLCJndWlsZFBhdGNoIiwiYWZ0ZXIiLCJwcm90b3R5cGUiLCJfYXBwZW5kQnV0dG9uIiwiZGlzYWJsZWQiLCJ1bnBhdGNoQWxsIiwiRE9NIiwicXVlcnkiLCJyZW1vdmUiLCJ3cmFwcGVyIiwiRGlzY29yZE1vZHVsZXMiLCJHdWlsZENsYXNzZXMiLCJzcGxpdCIsImd1aWxkcyIsImJ1dHRvbiIsIm9wZW5QdWJsaWNTZXJ2ZXJzIiwicHVzaExheWVyIiwiUmVhY3QiLCJjcmVhdGVFbGVtZW50IiwiUHVibGljU2VydmVyc01lbnUiLCJjbG9zZSIsInBvcExheWVyIiwiYnRuIiwibGlzdEl0ZW0iLCJsYWJlbCIsImNpcmNsZUJ1dHRvbk1hc2siLCJTdHJpbmdzIiwiYWRkRXZlbnRMaXN0ZW5lciIsImFwcGVuZCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFFQSxNQUFNQSxVQUFVLEdBQUdDLHNEQUFjLENBQUNDLFVBQWYsQ0FBMEIsV0FBMUIsQ0FBbkI7QUFFZSxtRUFBSSxNQUFNQyxhQUFOLFNBQTRCQyx3REFBNUIsQ0FBb0M7QUFDbkQsTUFBSUMsSUFBSixHQUFXO0FBQUMsV0FBTyxlQUFQO0FBQXdCOztBQUNwQyxNQUFJQyxRQUFKLEdBQWU7QUFBQyxXQUFPLFNBQVA7QUFBa0I7O0FBQ2xDLE1BQUlDLEVBQUosR0FBUztBQUFDLFdBQU8sZUFBUDtBQUF3Qjs7QUFFbENDLFNBQU8sR0FBRztBQUNOLFVBQU1DLFNBQVMsR0FBR1Isc0RBQWMsQ0FBQ1MsSUFBZixDQUFvQkMsQ0FBQyxJQUFJQSxDQUFDLENBQUNDLE9BQUYsSUFBYUQsQ0FBQyxDQUFDQyxPQUFGLENBQVVDLFdBQVYsSUFBeUIsaUJBQS9ELENBQWxCO0FBQ0EsVUFBTUMsWUFBWSxHQUFHYixzREFBYyxDQUFDYyxpQkFBZixDQUFpQyxRQUFqQyxDQUFyQjtBQUNBLFFBQUksQ0FBQ04sU0FBRCxJQUFjLENBQUNLLFlBQW5CLEVBQWlDLEtBQUtFLElBQUwsQ0FBVSxnQ0FBVjtBQUNqQyxTQUFLQyxVQUFMLEdBQWtCLEtBQUtDLEtBQUwsQ0FBV1QsU0FBUyxHQUFHQSxTQUFILEdBQWVLLFlBQVksQ0FBQ0ssU0FBaEQsRUFBMkRWLFNBQVMsR0FBRyxTQUFILEdBQWUsUUFBbkYsRUFBNkYsS0FBS1csYUFBbEcsQ0FBbEI7O0FBQ0EsU0FBS0EsYUFBTDtBQUNIOztBQUVEQyxVQUFRLEdBQUc7QUFDUCxTQUFLQyxVQUFMO0FBQ0FDLCtDQUFHLENBQUNDLEtBQUosQ0FBVSxZQUFWLEVBQXdCQyxNQUF4QjtBQUNIOztBQUVETCxlQUFhLEdBQUc7QUFDWixVQUFNTSxPQUFPLEdBQUdDLHNEQUFjLENBQUNDLFlBQWYsQ0FBNEJGLE9BQTVCLENBQW9DRyxLQUFwQyxDQUEwQyxHQUExQyxFQUErQyxDQUEvQyxDQUFoQjtBQUNBLFVBQU1DLE1BQU0sR0FBR1AsMkNBQUcsQ0FBQ0MsS0FBSixDQUFXLElBQUdFLE9BQVEsaUNBQXRCLENBQWY7QUFDQUgsK0NBQUcsQ0FBQ0wsS0FBSixDQUFVWSxNQUFWLEVBQWtCLEtBQUtDLE1BQXZCO0FBQ0g7O0FBRURDLG1CQUFpQixHQUFHO0FBQ2hCaEMsY0FBVSxDQUFDaUMsU0FBWCxDQUFxQixNQUFNTixzREFBYyxDQUFDTyxLQUFmLENBQXFCQyxhQUFyQixDQUFtQ0MsOERBQW5DLEVBQXNEO0FBQUNDLFdBQUssRUFBRXJDLFVBQVUsQ0FBQ3NDO0FBQW5CLEtBQXRELENBQTNCO0FBQ0g7O0FBRUQsTUFBSVAsTUFBSixHQUFhO0FBQ1QsVUFBTVEsR0FBRyxHQUFHaEIsMkNBQUcsQ0FBQ1ksYUFBSixDQUFtQiw4QkFBNkJSLHNEQUFjLENBQUNDLFlBQWYsQ0FBNEJZLFFBQVMsSUFBckYsQ0FBWjtBQUNBLFVBQU1DLEtBQUssR0FBR2xCLDJDQUFHLENBQUNZLGFBQUosQ0FBbUIsa0NBQWlDLG9CQUFvQlIsc0RBQWMsQ0FBQ0MsWUFBZixDQUE0QmMsZ0JBQWlCLEtBQUlDLCtDQUFPLENBQUN4QyxhQUFSLENBQXNCNEIsTUFBTyxRQUF0SixDQUFkO0FBQ0FVLFNBQUssQ0FBQ0csZ0JBQU4sQ0FBdUIsT0FBdkIsRUFBZ0MsTUFBTTtBQUFDLFdBQUtaLGlCQUFMO0FBQTBCLEtBQWpFO0FBQ0FPLE9BQUcsQ0FBQ00sTUFBSixDQUFXSixLQUFYO0FBQ0EsV0FBT0YsR0FBUDtBQUNIOztBQWxDa0QsQ0FBeEMsRUFBZiIsImZpbGUiOiIuL3NyYy9idWlsdGlucy9nZW5lcmFsL3B1YmxpY3NlcnZlcnMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQnVpbHRpbiBmcm9tIFwiLi4vLi4vc3RydWN0cy9idWlsdGluXCI7XHJcbmltcG9ydCB7RGlzY29yZE1vZHVsZXMsIFdlYnBhY2tNb2R1bGVzLCBTdHJpbmdzLCBET019IGZyb20gXCJtb2R1bGVzXCI7XHJcbmltcG9ydCBQdWJsaWNTZXJ2ZXJzTWVudSBmcm9tIFwiLi4vLi4vdWkvcHVibGljc2VydmVycy9tZW51XCI7XHJcblxyXG5jb25zdCBMYXllclN0YWNrID0gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcInB1c2hMYXllclwiKTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IG5ldyBjbGFzcyBQdWJsaWNTZXJ2ZXJzIGV4dGVuZHMgQnVpbHRpbiB7XHJcbiAgICBnZXQgbmFtZSgpIHtyZXR1cm4gXCJQdWJsaWNTZXJ2ZXJzXCI7fVxyXG4gICAgZ2V0IGNhdGVnb3J5KCkge3JldHVybiBcImdlbmVyYWxcIjt9XHJcbiAgICBnZXQgaWQoKSB7cmV0dXJuIFwicHVibGljU2VydmVyc1wiO31cclxuXHJcbiAgICBlbmFibGVkKCkge1xyXG4gICAgICAgIGNvbnN0IEd1aWxkTGlzdCA9IFdlYnBhY2tNb2R1bGVzLmZpbmQobSA9PiBtLmRlZmF1bHQgJiYgbS5kZWZhdWx0LmRpc3BsYXlOYW1lID09IFwiTmF2aWdhYmxlR3VpbGRzXCIpO1xyXG4gICAgICAgIGNvbnN0IEd1aWxkTGlzdE9sZCA9IFdlYnBhY2tNb2R1bGVzLmZpbmRCeURpc3BsYXlOYW1lKFwiR3VpbGRzXCIpO1xyXG4gICAgICAgIGlmICghR3VpbGRMaXN0ICYmICFHdWlsZExpc3RPbGQpIHRoaXMud2FybihcIkNhbid0IGZpbmQgR3VpbGRMaXN0IGNvbXBvbmVudFwiKTtcclxuICAgICAgICB0aGlzLmd1aWxkUGF0Y2ggPSB0aGlzLmFmdGVyKEd1aWxkTGlzdCA/IEd1aWxkTGlzdCA6IEd1aWxkTGlzdE9sZC5wcm90b3R5cGUsIEd1aWxkTGlzdCA/IFwiZGVmYXVsdFwiIDogXCJyZW5kZXJcIiwgdGhpcy5fYXBwZW5kQnV0dG9uKTtcclxuICAgICAgICB0aGlzLl9hcHBlbmRCdXR0b24oKTtcclxuICAgIH1cclxuXHJcbiAgICBkaXNhYmxlZCgpIHtcclxuICAgICAgICB0aGlzLnVucGF0Y2hBbGwoKTtcclxuICAgICAgICBET00ucXVlcnkoXCIjYmQtcHViLWxpXCIpLnJlbW92ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIF9hcHBlbmRCdXR0b24oKSB7XHJcbiAgICAgICAgY29uc3Qgd3JhcHBlciA9IERpc2NvcmRNb2R1bGVzLkd1aWxkQ2xhc3Nlcy53cmFwcGVyLnNwbGl0KFwiIFwiKVswXTtcclxuICAgICAgICBjb25zdCBndWlsZHMgPSBET00ucXVlcnkoYC4ke3dyYXBwZXJ9IC5zY3JvbGxlci0yVFp2Qk4gPjpmaXJzdC1jaGlsZGApO1xyXG4gICAgICAgIERPTS5hZnRlcihndWlsZHMsIHRoaXMuYnV0dG9uKTtcclxuICAgIH1cclxuXHJcbiAgICBvcGVuUHVibGljU2VydmVycygpIHtcclxuICAgICAgICBMYXllclN0YWNrLnB1c2hMYXllcigoKSA9PiBEaXNjb3JkTW9kdWxlcy5SZWFjdC5jcmVhdGVFbGVtZW50KFB1YmxpY1NlcnZlcnNNZW51LCB7Y2xvc2U6IExheWVyU3RhY2sucG9wTGF5ZXJ9KSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGJ1dHRvbigpIHtcclxuICAgICAgICBjb25zdCBidG4gPSBET00uY3JlYXRlRWxlbWVudChgPGRpdiBpZD1cImJkLXB1Yi1saVwiIGNsYXNzPVwiJHtEaXNjb3JkTW9kdWxlcy5HdWlsZENsYXNzZXMubGlzdEl0ZW19XCI+YCk7XHJcbiAgICAgICAgY29uc3QgbGFiZWwgPSBET00uY3JlYXRlRWxlbWVudChgPGRpdiBpZD1cImJkLXB1Yi1idXR0b25cIiBjbGFzcz1cIiR7XCJ3cmFwcGVyLTI1ZVZJbiBcIiArIERpc2NvcmRNb2R1bGVzLkd1aWxkQ2xhc3Nlcy5jaXJjbGVCdXR0b25NYXNrfVwiPiR7U3RyaW5ncy5QdWJsaWNTZXJ2ZXJzLmJ1dHRvbn08L2Rpdj5gKTtcclxuICAgICAgICBsYWJlbC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgKCkgPT4ge3RoaXMub3BlblB1YmxpY1NlcnZlcnMoKTt9KTtcclxuICAgICAgICBidG4uYXBwZW5kKGxhYmVsKTtcclxuICAgICAgICByZXR1cm4gYnRuO1xyXG4gICAgfVxyXG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/builtins/general/publicservers.js\n"); /***/ }), @@ -263,7 +262,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _str /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _structs_builtin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../structs/builtin */ \"./src/structs/builtin.js\");\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class DarkMode extends _structs_builtin__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n get name() {\n return \"VoiceDisconnect\";\n }\n\n get category() {\n return \"general\";\n }\n\n get id() {\n return \"voiceDisconnect\";\n }\n\n constructor() {\n super();\n this.beforeUnload = this.beforeUnload.bind(this);\n }\n\n enabled() {\n window.addEventListener(\"beforeunload\", this.beforeUnload);\n }\n\n disabled() {\n window.removeEventListener(\"beforeunload\", this.beforeUnload);\n }\n\n beforeUnload() {\n modules__WEBPACK_IMPORTED_MODULE_1__[\"DiscordModules\"].ChannelActions.selectVoiceChannel(null, null);\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL2J1aWx0aW5zL2dlbmVyYWwvdm9pY2VkaXNjb25uZWN0LmpzPzk4YWYiXSwibmFtZXMiOlsiRGFya01vZGUiLCJCdWlsdGluIiwibmFtZSIsImNhdGVnb3J5IiwiaWQiLCJjb25zdHJ1Y3RvciIsImJlZm9yZVVubG9hZCIsImJpbmQiLCJlbmFibGVkIiwid2luZG93IiwiYWRkRXZlbnRMaXN0ZW5lciIsImRpc2FibGVkIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsIkRpc2NvcmRNb2R1bGVzIiwiQ2hhbm5lbEFjdGlvbnMiLCJzZWxlY3RWb2ljZUNoYW5uZWwiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFFZSxtRUFBSSxNQUFNQSxRQUFOLFNBQXVCQyx3REFBdkIsQ0FBK0I7QUFDOUMsTUFBSUMsSUFBSixHQUFXO0FBQUMsV0FBTyxpQkFBUDtBQUEwQjs7QUFDdEMsTUFBSUMsUUFBSixHQUFlO0FBQUMsV0FBTyxTQUFQO0FBQWtCOztBQUNsQyxNQUFJQyxFQUFKLEdBQVM7QUFBQyxXQUFPLGlCQUFQO0FBQTBCOztBQUVwQ0MsYUFBVyxHQUFHO0FBQ1Y7QUFDQSxTQUFLQyxZQUFMLEdBQW9CLEtBQUtBLFlBQUwsQ0FBa0JDLElBQWxCLENBQXVCLElBQXZCLENBQXBCO0FBQ0g7O0FBRURDLFNBQU8sR0FBRztBQUNOQyxVQUFNLENBQUNDLGdCQUFQLENBQXdCLGNBQXhCLEVBQXdDLEtBQUtKLFlBQTdDO0FBQ0g7O0FBRURLLFVBQVEsR0FBRztBQUNQRixVQUFNLENBQUNHLG1CQUFQLENBQTJCLGNBQTNCLEVBQTJDLEtBQUtOLFlBQWhEO0FBQ0g7O0FBRURBLGNBQVksR0FBRztBQUNYTywwREFBYyxDQUFDQyxjQUFmLENBQThCQyxrQkFBOUIsQ0FBaUQsSUFBakQsRUFBdUQsSUFBdkQ7QUFDSDs7QUFwQjZDLENBQW5DLEVBQWYiLCJmaWxlIjoiLi9zcmMvYnVpbHRpbnMvZ2VuZXJhbC92b2ljZWRpc2Nvbm5lY3QuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQnVpbHRpbiBmcm9tIFwiLi4vLi4vc3RydWN0cy9idWlsdGluXCI7XHJcbmltcG9ydCB7RGlzY29yZE1vZHVsZXN9IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBuZXcgY2xhc3MgRGFya01vZGUgZXh0ZW5kcyBCdWlsdGluIHtcclxuICAgIGdldCBuYW1lKCkge3JldHVybiBcIlZvaWNlRGlzY29ubmVjdFwiO31cclxuICAgIGdldCBjYXRlZ29yeSgpIHtyZXR1cm4gXCJnZW5lcmFsXCI7fVxyXG4gICAgZ2V0IGlkKCkge3JldHVybiBcInZvaWNlRGlzY29ubmVjdFwiO31cclxuXHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIHRoaXMuYmVmb3JlVW5sb2FkID0gdGhpcy5iZWZvcmVVbmxvYWQuYmluZCh0aGlzKTtcclxuICAgIH1cclxuXHJcbiAgICBlbmFibGVkKCkge1xyXG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwiYmVmb3JldW5sb2FkXCIsIHRoaXMuYmVmb3JlVW5sb2FkKTtcclxuICAgIH1cclxuXHJcbiAgICBkaXNhYmxlZCgpIHtcclxuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImJlZm9yZXVubG9hZFwiLCB0aGlzLmJlZm9yZVVubG9hZCk7XHJcbiAgICB9XHJcblxyXG4gICAgYmVmb3JlVW5sb2FkKCkge1xyXG4gICAgICAgIERpc2NvcmRNb2R1bGVzLkNoYW5uZWxBY3Rpb25zLnNlbGVjdFZvaWNlQ2hhbm5lbChudWxsLCBudWxsKTtcclxuICAgIH1cclxufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/builtins/general/voicedisconnect.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _structs_builtin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../structs/builtin */ \"./src/structs/builtin.js\");\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class DarkMode extends _structs_builtin__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n get name() {\n return \"VoiceDisconnect\";\n }\n\n get category() {\n return \"general\";\n }\n\n get id() {\n return \"voiceDisconnect\";\n }\n\n constructor() {\n super();\n this.beforeUnload = this.beforeUnload.bind(this);\n }\n\n enabled() {\n window.addEventListener(\"beforeunload\", this.beforeUnload);\n }\n\n disabled() {\n window.removeEventListener(\"beforeunload\", this.beforeUnload);\n }\n\n beforeUnload() {\n modules__WEBPACK_IMPORTED_MODULE_1__[\"DiscordModules\"].ChannelActions.selectVoiceChannel(null, null);\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYnVpbHRpbnMvZ2VuZXJhbC92b2ljZWRpc2Nvbm5lY3QuanM/OThhZiJdLCJuYW1lcyI6WyJEYXJrTW9kZSIsIkJ1aWx0aW4iLCJuYW1lIiwiY2F0ZWdvcnkiLCJpZCIsImNvbnN0cnVjdG9yIiwiYmVmb3JlVW5sb2FkIiwiYmluZCIsImVuYWJsZWQiLCJ3aW5kb3ciLCJhZGRFdmVudExpc3RlbmVyIiwiZGlzYWJsZWQiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiRGlzY29yZE1vZHVsZXMiLCJDaGFubmVsQWN0aW9ucyIsInNlbGVjdFZvaWNlQ2hhbm5lbCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUVlLG1FQUFJLE1BQU1BLFFBQU4sU0FBdUJDLHdEQUF2QixDQUErQjtBQUM5QyxNQUFJQyxJQUFKLEdBQVc7QUFBQyxXQUFPLGlCQUFQO0FBQTBCOztBQUN0QyxNQUFJQyxRQUFKLEdBQWU7QUFBQyxXQUFPLFNBQVA7QUFBa0I7O0FBQ2xDLE1BQUlDLEVBQUosR0FBUztBQUFDLFdBQU8saUJBQVA7QUFBMEI7O0FBRXBDQyxhQUFXLEdBQUc7QUFDVjtBQUNBLFNBQUtDLFlBQUwsR0FBb0IsS0FBS0EsWUFBTCxDQUFrQkMsSUFBbEIsQ0FBdUIsSUFBdkIsQ0FBcEI7QUFDSDs7QUFFREMsU0FBTyxHQUFHO0FBQ05DLFVBQU0sQ0FBQ0MsZ0JBQVAsQ0FBd0IsY0FBeEIsRUFBd0MsS0FBS0osWUFBN0M7QUFDSDs7QUFFREssVUFBUSxHQUFHO0FBQ1BGLFVBQU0sQ0FBQ0csbUJBQVAsQ0FBMkIsY0FBM0IsRUFBMkMsS0FBS04sWUFBaEQ7QUFDSDs7QUFFREEsY0FBWSxHQUFHO0FBQ1hPLDBEQUFjLENBQUNDLGNBQWYsQ0FBOEJDLGtCQUE5QixDQUFpRCxJQUFqRCxFQUF1RCxJQUF2RDtBQUNIOztBQXBCNkMsQ0FBbkMsRUFBZiIsImZpbGUiOiIuL3NyYy9idWlsdGlucy9nZW5lcmFsL3ZvaWNlZGlzY29ubmVjdC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCdWlsdGluIGZyb20gXCIuLi8uLi9zdHJ1Y3RzL2J1aWx0aW5cIjtcclxuaW1wb3J0IHtEaXNjb3JkTW9kdWxlc30gZnJvbSBcIm1vZHVsZXNcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IG5ldyBjbGFzcyBEYXJrTW9kZSBleHRlbmRzIEJ1aWx0aW4ge1xyXG4gICAgZ2V0IG5hbWUoKSB7cmV0dXJuIFwiVm9pY2VEaXNjb25uZWN0XCI7fVxyXG4gICAgZ2V0IGNhdGVnb3J5KCkge3JldHVybiBcImdlbmVyYWxcIjt9XHJcbiAgICBnZXQgaWQoKSB7cmV0dXJuIFwidm9pY2VEaXNjb25uZWN0XCI7fVxyXG5cclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgdGhpcy5iZWZvcmVVbmxvYWQgPSB0aGlzLmJlZm9yZVVubG9hZC5iaW5kKHRoaXMpO1xyXG4gICAgfVxyXG5cclxuICAgIGVuYWJsZWQoKSB7XHJcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJiZWZvcmV1bmxvYWRcIiwgdGhpcy5iZWZvcmVVbmxvYWQpO1xyXG4gICAgfVxyXG5cclxuICAgIGRpc2FibGVkKCkge1xyXG4gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwiYmVmb3JldW5sb2FkXCIsIHRoaXMuYmVmb3JlVW5sb2FkKTtcclxuICAgIH1cclxuXHJcbiAgICBiZWZvcmVVbmxvYWQoKSB7XHJcbiAgICAgICAgRGlzY29yZE1vZHVsZXMuQ2hhbm5lbEFjdGlvbnMuc2VsZWN0Vm9pY2VDaGFubmVsKG51bGwsIG51bGwpO1xyXG4gICAgfVxyXG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/builtins/general/voicedisconnect.js\n"); /***/ }), @@ -275,7 +274,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _str /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _structs_builtin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../structs/builtin */ \"./src/structs/builtin.js\");\n/* harmony import */ var _ui_modals__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../ui/modals */ \"./src/ui/modals.js\");\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class WindowPrefs extends _structs_builtin__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n get name() {\n return \"WindowPrefs\";\n }\n\n get category() {\n return \"window\";\n }\n\n get id() {\n return \"transparency\";\n }\n\n enabled() {\n this.setWindowPreference(\"transparent\", true);\n this.setWindowPreference(\"backgroundColor\", \"#00000000\");\n this.showModal(modules__WEBPACK_IMPORTED_MODULE_2__[\"Strings\"].WindowPrefs.enabledInfo);\n }\n\n disabled() {\n this.deleteWindowPreference(\"transparent\");\n this.deleteWindowPreference(\"backgroundColor\");\n this.showModal(modules__WEBPACK_IMPORTED_MODULE_2__[\"Strings\"].WindowPrefs.disabledInfo);\n }\n\n showModal(info) {\n if (!this.initialized) return;\n _ui_modals__WEBPACK_IMPORTED_MODULE_1__[\"default\"].showConfirmationModal(modules__WEBPACK_IMPORTED_MODULE_2__[\"Strings\"].Modals.additionalInfo, info, {\n confirmText: modules__WEBPACK_IMPORTED_MODULE_2__[\"Strings\"].Modals.restartNow,\n cancelText: modules__WEBPACK_IMPORTED_MODULE_2__[\"Strings\"].Modals.restartLater,\n onConfirm: () => {\n const app = __webpack_require__(/*! electron */ \"electron\").remote.app;\n\n app.relaunch();\n app.exit();\n }\n });\n }\n\n getWindowPreference(key) {\n const prefs = modules__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].getData(\"windowprefs\") || {};\n return prefs[key];\n }\n\n setWindowPreference(key, value) {\n const prefs = modules__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].getData(\"windowprefs\") || {};\n prefs[key] = value;\n modules__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].setData(\"windowprefs\", prefs);\n }\n\n deleteWindowPreference(key) {\n const prefs = modules__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].getData(\"windowprefs\") || {};\n delete prefs[key];\n modules__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].setData(\"windowprefs\", prefs);\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL2J1aWx0aW5zL3dpbmRvd3ByZWZzLmpzP2I0YTciXSwibmFtZXMiOlsiV2luZG93UHJlZnMiLCJCdWlsdGluIiwibmFtZSIsImNhdGVnb3J5IiwiaWQiLCJlbmFibGVkIiwic2V0V2luZG93UHJlZmVyZW5jZSIsInNob3dNb2RhbCIsIlN0cmluZ3MiLCJlbmFibGVkSW5mbyIsImRpc2FibGVkIiwiZGVsZXRlV2luZG93UHJlZmVyZW5jZSIsImRpc2FibGVkSW5mbyIsImluZm8iLCJpbml0aWFsaXplZCIsIk1vZGFscyIsInNob3dDb25maXJtYXRpb25Nb2RhbCIsImFkZGl0aW9uYWxJbmZvIiwiY29uZmlybVRleHQiLCJyZXN0YXJ0Tm93IiwiY2FuY2VsVGV4dCIsInJlc3RhcnRMYXRlciIsIm9uQ29uZmlybSIsImFwcCIsInJlcXVpcmUiLCJyZW1vdGUiLCJyZWxhdW5jaCIsImV4aXQiLCJnZXRXaW5kb3dQcmVmZXJlbmNlIiwia2V5IiwicHJlZnMiLCJEYXRhU3RvcmUiLCJnZXREYXRhIiwidmFsdWUiLCJzZXREYXRhIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUVlLG1FQUFJLE1BQU1BLFdBQU4sU0FBMEJDLHdEQUExQixDQUFrQztBQUNqRCxNQUFJQyxJQUFKLEdBQVc7QUFBQyxXQUFPLGFBQVA7QUFBc0I7O0FBQ2xDLE1BQUlDLFFBQUosR0FBZTtBQUFDLFdBQU8sUUFBUDtBQUFpQjs7QUFDakMsTUFBSUMsRUFBSixHQUFTO0FBQUMsV0FBTyxjQUFQO0FBQXVCOztBQUVqQ0MsU0FBTyxHQUFHO0FBQ04sU0FBS0MsbUJBQUwsQ0FBeUIsYUFBekIsRUFBd0MsSUFBeEM7QUFDQSxTQUFLQSxtQkFBTCxDQUF5QixpQkFBekIsRUFBNEMsV0FBNUM7QUFDQSxTQUFLQyxTQUFMLENBQWVDLCtDQUFPLENBQUNSLFdBQVIsQ0FBb0JTLFdBQW5DO0FBQ0g7O0FBRURDLFVBQVEsR0FBRztBQUNQLFNBQUtDLHNCQUFMLENBQTRCLGFBQTVCO0FBQ0EsU0FBS0Esc0JBQUwsQ0FBNEIsaUJBQTVCO0FBQ0EsU0FBS0osU0FBTCxDQUFlQywrQ0FBTyxDQUFDUixXQUFSLENBQW9CWSxZQUFuQztBQUNIOztBQUVETCxXQUFTLENBQUNNLElBQUQsRUFBTztBQUNaLFFBQUksQ0FBQyxLQUFLQyxXQUFWLEVBQXVCO0FBQ3ZCQyxzREFBTSxDQUFDQyxxQkFBUCxDQUE2QlIsK0NBQU8sQ0FBQ08sTUFBUixDQUFlRSxjQUE1QyxFQUE0REosSUFBNUQsRUFBa0U7QUFDOURLLGlCQUFXLEVBQUVWLCtDQUFPLENBQUNPLE1BQVIsQ0FBZUksVUFEa0M7QUFFOURDLGdCQUFVLEVBQUVaLCtDQUFPLENBQUNPLE1BQVIsQ0FBZU0sWUFGbUM7QUFHOURDLGVBQVMsRUFBRSxNQUFNO0FBQ2IsY0FBTUMsR0FBRyxHQUFHQyxtQkFBTyxDQUFDLDBCQUFELENBQVAsQ0FBb0JDLE1BQXBCLENBQTJCRixHQUF2Qzs7QUFDQUEsV0FBRyxDQUFDRyxRQUFKO0FBQ0FILFdBQUcsQ0FBQ0ksSUFBSjtBQUNIO0FBUDZELEtBQWxFO0FBU0g7O0FBRURDLHFCQUFtQixDQUFDQyxHQUFELEVBQU07QUFDckIsVUFBTUMsS0FBSyxHQUFHQyxpREFBUyxDQUFDQyxPQUFWLENBQWtCLGFBQWxCLEtBQW9DLEVBQWxEO0FBQ0EsV0FBT0YsS0FBSyxDQUFDRCxHQUFELENBQVo7QUFDSDs7QUFFRHZCLHFCQUFtQixDQUFDdUIsR0FBRCxFQUFNSSxLQUFOLEVBQWE7QUFDNUIsVUFBTUgsS0FBSyxHQUFHQyxpREFBUyxDQUFDQyxPQUFWLENBQWtCLGFBQWxCLEtBQW9DLEVBQWxEO0FBQ0FGLFNBQUssQ0FBQ0QsR0FBRCxDQUFMLEdBQWFJLEtBQWI7QUFDQUYscURBQVMsQ0FBQ0csT0FBVixDQUFrQixhQUFsQixFQUFpQ0osS0FBakM7QUFDSDs7QUFFRG5CLHdCQUFzQixDQUFDa0IsR0FBRCxFQUFNO0FBQ3hCLFVBQU1DLEtBQUssR0FBR0MsaURBQVMsQ0FBQ0MsT0FBVixDQUFrQixhQUFsQixLQUFvQyxFQUFsRDtBQUNBLFdBQU9GLEtBQUssQ0FBQ0QsR0FBRCxDQUFaO0FBQ0FFLHFEQUFTLENBQUNHLE9BQVYsQ0FBa0IsYUFBbEIsRUFBaUNKLEtBQWpDO0FBQ0g7O0FBN0NnRCxDQUF0QyxFQUFmIiwiZmlsZSI6Ii4vc3JjL2J1aWx0aW5zL3dpbmRvd3ByZWZzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJ1aWx0aW4gZnJvbSBcIi4uL3N0cnVjdHMvYnVpbHRpblwiO1xyXG5pbXBvcnQgTW9kYWxzIGZyb20gXCIuLi91aS9tb2RhbHNcIjtcclxuaW1wb3J0IHtEYXRhU3RvcmUsIFN0cmluZ3N9IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBuZXcgY2xhc3MgV2luZG93UHJlZnMgZXh0ZW5kcyBCdWlsdGluIHtcclxuICAgIGdldCBuYW1lKCkge3JldHVybiBcIldpbmRvd1ByZWZzXCI7fVxyXG4gICAgZ2V0IGNhdGVnb3J5KCkge3JldHVybiBcIndpbmRvd1wiO31cclxuICAgIGdldCBpZCgpIHtyZXR1cm4gXCJ0cmFuc3BhcmVuY3lcIjt9XHJcblxyXG4gICAgZW5hYmxlZCgpIHtcclxuICAgICAgICB0aGlzLnNldFdpbmRvd1ByZWZlcmVuY2UoXCJ0cmFuc3BhcmVudFwiLCB0cnVlKTtcclxuICAgICAgICB0aGlzLnNldFdpbmRvd1ByZWZlcmVuY2UoXCJiYWNrZ3JvdW5kQ29sb3JcIiwgXCIjMDAwMDAwMDBcIik7XHJcbiAgICAgICAgdGhpcy5zaG93TW9kYWwoU3RyaW5ncy5XaW5kb3dQcmVmcy5lbmFibGVkSW5mbyk7XHJcbiAgICB9XHJcblxyXG4gICAgZGlzYWJsZWQoKSB7XHJcbiAgICAgICAgdGhpcy5kZWxldGVXaW5kb3dQcmVmZXJlbmNlKFwidHJhbnNwYXJlbnRcIik7XHJcbiAgICAgICAgdGhpcy5kZWxldGVXaW5kb3dQcmVmZXJlbmNlKFwiYmFja2dyb3VuZENvbG9yXCIpO1xyXG4gICAgICAgIHRoaXMuc2hvd01vZGFsKFN0cmluZ3MuV2luZG93UHJlZnMuZGlzYWJsZWRJbmZvKTtcclxuICAgIH1cclxuXHJcbiAgICBzaG93TW9kYWwoaW5mbykge1xyXG4gICAgICAgIGlmICghdGhpcy5pbml0aWFsaXplZCkgcmV0dXJuO1xyXG4gICAgICAgIE1vZGFscy5zaG93Q29uZmlybWF0aW9uTW9kYWwoU3RyaW5ncy5Nb2RhbHMuYWRkaXRpb25hbEluZm8sIGluZm8sIHtcclxuICAgICAgICAgICAgY29uZmlybVRleHQ6IFN0cmluZ3MuTW9kYWxzLnJlc3RhcnROb3csXHJcbiAgICAgICAgICAgIGNhbmNlbFRleHQ6IFN0cmluZ3MuTW9kYWxzLnJlc3RhcnRMYXRlcixcclxuICAgICAgICAgICAgb25Db25maXJtOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBhcHAgPSByZXF1aXJlKFwiZWxlY3Ryb25cIikucmVtb3RlLmFwcDtcclxuICAgICAgICAgICAgICAgIGFwcC5yZWxhdW5jaCgpO1xyXG4gICAgICAgICAgICAgICAgYXBwLmV4aXQoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFdpbmRvd1ByZWZlcmVuY2Uoa2V5KSB7XHJcbiAgICAgICAgY29uc3QgcHJlZnMgPSBEYXRhU3RvcmUuZ2V0RGF0YShcIndpbmRvd3ByZWZzXCIpIHx8IHt9O1xyXG4gICAgICAgIHJldHVybiBwcmVmc1trZXldO1xyXG4gICAgfVxyXG5cclxuICAgIHNldFdpbmRvd1ByZWZlcmVuY2Uoa2V5LCB2YWx1ZSkge1xyXG4gICAgICAgIGNvbnN0IHByZWZzID0gRGF0YVN0b3JlLmdldERhdGEoXCJ3aW5kb3dwcmVmc1wiKSB8fCB7fTtcclxuICAgICAgICBwcmVmc1trZXldID0gdmFsdWU7XHJcbiAgICAgICAgRGF0YVN0b3JlLnNldERhdGEoXCJ3aW5kb3dwcmVmc1wiLCBwcmVmcyk7XHJcbiAgICB9XHJcblxyXG4gICAgZGVsZXRlV2luZG93UHJlZmVyZW5jZShrZXkpIHtcclxuICAgICAgICBjb25zdCBwcmVmcyA9IERhdGFTdG9yZS5nZXREYXRhKFwid2luZG93cHJlZnNcIikgfHwge307XHJcbiAgICAgICAgZGVsZXRlIHByZWZzW2tleV07XHJcbiAgICAgICAgRGF0YVN0b3JlLnNldERhdGEoXCJ3aW5kb3dwcmVmc1wiLCBwcmVmcyk7XHJcbiAgICB9XHJcbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/builtins/windowprefs.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _structs_builtin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../structs/builtin */ \"./src/structs/builtin.js\");\n/* harmony import */ var _ui_modals__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../ui/modals */ \"./src/ui/modals.js\");\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class WindowPrefs extends _structs_builtin__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n get name() {\n return \"WindowPrefs\";\n }\n\n get category() {\n return \"window\";\n }\n\n get id() {\n return \"transparency\";\n }\n\n enabled() {\n this.setWindowPreference(\"transparent\", true);\n this.setWindowPreference(\"backgroundColor\", \"#00000000\");\n this.showModal(modules__WEBPACK_IMPORTED_MODULE_2__[\"Strings\"].WindowPrefs.enabledInfo);\n }\n\n disabled() {\n this.deleteWindowPreference(\"transparent\");\n this.deleteWindowPreference(\"backgroundColor\");\n this.showModal(modules__WEBPACK_IMPORTED_MODULE_2__[\"Strings\"].WindowPrefs.disabledInfo);\n }\n\n showModal(info) {\n if (!this.initialized) return;\n _ui_modals__WEBPACK_IMPORTED_MODULE_1__[\"default\"].showConfirmationModal(modules__WEBPACK_IMPORTED_MODULE_2__[\"Strings\"].Modals.additionalInfo, info, {\n confirmText: modules__WEBPACK_IMPORTED_MODULE_2__[\"Strings\"].Modals.restartNow,\n cancelText: modules__WEBPACK_IMPORTED_MODULE_2__[\"Strings\"].Modals.restartLater,\n onConfirm: () => {\n const app = __webpack_require__(/*! electron */ \"electron\").remote.app;\n\n app.relaunch();\n app.exit();\n }\n });\n }\n\n getWindowPreference(key) {\n const prefs = modules__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].getData(\"windowprefs\") || {};\n return prefs[key];\n }\n\n setWindowPreference(key, value) {\n const prefs = modules__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].getData(\"windowprefs\") || {};\n prefs[key] = value;\n modules__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].setData(\"windowprefs\", prefs);\n }\n\n deleteWindowPreference(key) {\n const prefs = modules__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].getData(\"windowprefs\") || {};\n delete prefs[key];\n modules__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].setData(\"windowprefs\", prefs);\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYnVpbHRpbnMvd2luZG93cHJlZnMuanM/YjRhNyJdLCJuYW1lcyI6WyJXaW5kb3dQcmVmcyIsIkJ1aWx0aW4iLCJuYW1lIiwiY2F0ZWdvcnkiLCJpZCIsImVuYWJsZWQiLCJzZXRXaW5kb3dQcmVmZXJlbmNlIiwic2hvd01vZGFsIiwiU3RyaW5ncyIsImVuYWJsZWRJbmZvIiwiZGlzYWJsZWQiLCJkZWxldGVXaW5kb3dQcmVmZXJlbmNlIiwiZGlzYWJsZWRJbmZvIiwiaW5mbyIsImluaXRpYWxpemVkIiwiTW9kYWxzIiwic2hvd0NvbmZpcm1hdGlvbk1vZGFsIiwiYWRkaXRpb25hbEluZm8iLCJjb25maXJtVGV4dCIsInJlc3RhcnROb3ciLCJjYW5jZWxUZXh0IiwicmVzdGFydExhdGVyIiwib25Db25maXJtIiwiYXBwIiwicmVxdWlyZSIsInJlbW90ZSIsInJlbGF1bmNoIiwiZXhpdCIsImdldFdpbmRvd1ByZWZlcmVuY2UiLCJrZXkiLCJwcmVmcyIsIkRhdGFTdG9yZSIsImdldERhdGEiLCJ2YWx1ZSIsInNldERhdGEiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBRWUsbUVBQUksTUFBTUEsV0FBTixTQUEwQkMsd0RBQTFCLENBQWtDO0FBQ2pELE1BQUlDLElBQUosR0FBVztBQUFDLFdBQU8sYUFBUDtBQUFzQjs7QUFDbEMsTUFBSUMsUUFBSixHQUFlO0FBQUMsV0FBTyxRQUFQO0FBQWlCOztBQUNqQyxNQUFJQyxFQUFKLEdBQVM7QUFBQyxXQUFPLGNBQVA7QUFBdUI7O0FBRWpDQyxTQUFPLEdBQUc7QUFDTixTQUFLQyxtQkFBTCxDQUF5QixhQUF6QixFQUF3QyxJQUF4QztBQUNBLFNBQUtBLG1CQUFMLENBQXlCLGlCQUF6QixFQUE0QyxXQUE1QztBQUNBLFNBQUtDLFNBQUwsQ0FBZUMsK0NBQU8sQ0FBQ1IsV0FBUixDQUFvQlMsV0FBbkM7QUFDSDs7QUFFREMsVUFBUSxHQUFHO0FBQ1AsU0FBS0Msc0JBQUwsQ0FBNEIsYUFBNUI7QUFDQSxTQUFLQSxzQkFBTCxDQUE0QixpQkFBNUI7QUFDQSxTQUFLSixTQUFMLENBQWVDLCtDQUFPLENBQUNSLFdBQVIsQ0FBb0JZLFlBQW5DO0FBQ0g7O0FBRURMLFdBQVMsQ0FBQ00sSUFBRCxFQUFPO0FBQ1osUUFBSSxDQUFDLEtBQUtDLFdBQVYsRUFBdUI7QUFDdkJDLHNEQUFNLENBQUNDLHFCQUFQLENBQTZCUiwrQ0FBTyxDQUFDTyxNQUFSLENBQWVFLGNBQTVDLEVBQTRESixJQUE1RCxFQUFrRTtBQUM5REssaUJBQVcsRUFBRVYsK0NBQU8sQ0FBQ08sTUFBUixDQUFlSSxVQURrQztBQUU5REMsZ0JBQVUsRUFBRVosK0NBQU8sQ0FBQ08sTUFBUixDQUFlTSxZQUZtQztBQUc5REMsZUFBUyxFQUFFLE1BQU07QUFDYixjQUFNQyxHQUFHLEdBQUdDLG1CQUFPLENBQUMsMEJBQUQsQ0FBUCxDQUFvQkMsTUFBcEIsQ0FBMkJGLEdBQXZDOztBQUNBQSxXQUFHLENBQUNHLFFBQUo7QUFDQUgsV0FBRyxDQUFDSSxJQUFKO0FBQ0g7QUFQNkQsS0FBbEU7QUFTSDs7QUFFREMscUJBQW1CLENBQUNDLEdBQUQsRUFBTTtBQUNyQixVQUFNQyxLQUFLLEdBQUdDLGlEQUFTLENBQUNDLE9BQVYsQ0FBa0IsYUFBbEIsS0FBb0MsRUFBbEQ7QUFDQSxXQUFPRixLQUFLLENBQUNELEdBQUQsQ0FBWjtBQUNIOztBQUVEdkIscUJBQW1CLENBQUN1QixHQUFELEVBQU1JLEtBQU4sRUFBYTtBQUM1QixVQUFNSCxLQUFLLEdBQUdDLGlEQUFTLENBQUNDLE9BQVYsQ0FBa0IsYUFBbEIsS0FBb0MsRUFBbEQ7QUFDQUYsU0FBSyxDQUFDRCxHQUFELENBQUwsR0FBYUksS0FBYjtBQUNBRixxREFBUyxDQUFDRyxPQUFWLENBQWtCLGFBQWxCLEVBQWlDSixLQUFqQztBQUNIOztBQUVEbkIsd0JBQXNCLENBQUNrQixHQUFELEVBQU07QUFDeEIsVUFBTUMsS0FBSyxHQUFHQyxpREFBUyxDQUFDQyxPQUFWLENBQWtCLGFBQWxCLEtBQW9DLEVBQWxEO0FBQ0EsV0FBT0YsS0FBSyxDQUFDRCxHQUFELENBQVo7QUFDQUUscURBQVMsQ0FBQ0csT0FBVixDQUFrQixhQUFsQixFQUFpQ0osS0FBakM7QUFDSDs7QUE3Q2dELENBQXRDLEVBQWYiLCJmaWxlIjoiLi9zcmMvYnVpbHRpbnMvd2luZG93cHJlZnMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQnVpbHRpbiBmcm9tIFwiLi4vc3RydWN0cy9idWlsdGluXCI7XHJcbmltcG9ydCBNb2RhbHMgZnJvbSBcIi4uL3VpL21vZGFsc1wiO1xyXG5pbXBvcnQge0RhdGFTdG9yZSwgU3RyaW5nc30gZnJvbSBcIm1vZHVsZXNcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IG5ldyBjbGFzcyBXaW5kb3dQcmVmcyBleHRlbmRzIEJ1aWx0aW4ge1xyXG4gICAgZ2V0IG5hbWUoKSB7cmV0dXJuIFwiV2luZG93UHJlZnNcIjt9XHJcbiAgICBnZXQgY2F0ZWdvcnkoKSB7cmV0dXJuIFwid2luZG93XCI7fVxyXG4gICAgZ2V0IGlkKCkge3JldHVybiBcInRyYW5zcGFyZW5jeVwiO31cclxuXHJcbiAgICBlbmFibGVkKCkge1xyXG4gICAgICAgIHRoaXMuc2V0V2luZG93UHJlZmVyZW5jZShcInRyYW5zcGFyZW50XCIsIHRydWUpO1xyXG4gICAgICAgIHRoaXMuc2V0V2luZG93UHJlZmVyZW5jZShcImJhY2tncm91bmRDb2xvclwiLCBcIiMwMDAwMDAwMFwiKTtcclxuICAgICAgICB0aGlzLnNob3dNb2RhbChTdHJpbmdzLldpbmRvd1ByZWZzLmVuYWJsZWRJbmZvKTtcclxuICAgIH1cclxuXHJcbiAgICBkaXNhYmxlZCgpIHtcclxuICAgICAgICB0aGlzLmRlbGV0ZVdpbmRvd1ByZWZlcmVuY2UoXCJ0cmFuc3BhcmVudFwiKTtcclxuICAgICAgICB0aGlzLmRlbGV0ZVdpbmRvd1ByZWZlcmVuY2UoXCJiYWNrZ3JvdW5kQ29sb3JcIik7XHJcbiAgICAgICAgdGhpcy5zaG93TW9kYWwoU3RyaW5ncy5XaW5kb3dQcmVmcy5kaXNhYmxlZEluZm8pO1xyXG4gICAgfVxyXG5cclxuICAgIHNob3dNb2RhbChpbmZvKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmluaXRpYWxpemVkKSByZXR1cm47XHJcbiAgICAgICAgTW9kYWxzLnNob3dDb25maXJtYXRpb25Nb2RhbChTdHJpbmdzLk1vZGFscy5hZGRpdGlvbmFsSW5mbywgaW5mbywge1xyXG4gICAgICAgICAgICBjb25maXJtVGV4dDogU3RyaW5ncy5Nb2RhbHMucmVzdGFydE5vdyxcclxuICAgICAgICAgICAgY2FuY2VsVGV4dDogU3RyaW5ncy5Nb2RhbHMucmVzdGFydExhdGVyLFxyXG4gICAgICAgICAgICBvbkNvbmZpcm06ICgpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGFwcCA9IHJlcXVpcmUoXCJlbGVjdHJvblwiKS5yZW1vdGUuYXBwO1xyXG4gICAgICAgICAgICAgICAgYXBwLnJlbGF1bmNoKCk7XHJcbiAgICAgICAgICAgICAgICBhcHAuZXhpdCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0V2luZG93UHJlZmVyZW5jZShrZXkpIHtcclxuICAgICAgICBjb25zdCBwcmVmcyA9IERhdGFTdG9yZS5nZXREYXRhKFwid2luZG93cHJlZnNcIikgfHwge307XHJcbiAgICAgICAgcmV0dXJuIHByZWZzW2tleV07XHJcbiAgICB9XHJcblxyXG4gICAgc2V0V2luZG93UHJlZmVyZW5jZShrZXksIHZhbHVlKSB7XHJcbiAgICAgICAgY29uc3QgcHJlZnMgPSBEYXRhU3RvcmUuZ2V0RGF0YShcIndpbmRvd3ByZWZzXCIpIHx8IHt9O1xyXG4gICAgICAgIHByZWZzW2tleV0gPSB2YWx1ZTtcclxuICAgICAgICBEYXRhU3RvcmUuc2V0RGF0YShcIndpbmRvd3ByZWZzXCIsIHByZWZzKTtcclxuICAgIH1cclxuXHJcbiAgICBkZWxldGVXaW5kb3dQcmVmZXJlbmNlKGtleSkge1xyXG4gICAgICAgIGNvbnN0IHByZWZzID0gRGF0YVN0b3JlLmdldERhdGEoXCJ3aW5kb3dwcmVmc1wiKSB8fCB7fTtcclxuICAgICAgICBkZWxldGUgcHJlZnNba2V5XTtcclxuICAgICAgICBEYXRhU3RvcmUuc2V0RGF0YShcIndpbmRvd3ByZWZzXCIsIHByZWZzKTtcclxuICAgIH1cclxufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/builtins/windowprefs.js\n"); /***/ }), @@ -287,7 +286,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _str /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n description: \"Don't be shocked, this modal is supposed to be here.\",\n changes: [{\n title: \"What's New?\",\n items: [\"**BandagedBD will now keep you updated with changelogs!** I will try to only show a changelog when there's more than a tiny or internal change.\", \"**Twitter (@BandagedBD)** I created a Twitter to try and provide support and such for those without access to the server. https://Twitter.com/BandagedBD\"]\n }, {\n title: \"Fixes\",\n type: \"fixed\",\n items: [\"**Colored Text** option should work again.\", \"**Emotes** should show up in chat.\", \"Fixed a bug where BBD attempted to patch the TabBar module incorrectly. (Thanks, DevilBro)\"]\n }, {\n title: \"Minor Stuff\",\n type: \"improved\",\n items: [\"**Colour->Color.** Swapped to using English-US spelling by default to be consistent, and to potentially be prepared for localization.\", \"**Versions simplified.** The BandagedBD version now integrates into Discord's at the bottom-left of settings instead of randomly being a part of the setting list.\"]\n }]\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL2RhdGEvY2hhbmdlbG9nLmpzP2Y4OWMiXSwibmFtZXMiOlsiZGVzY3JpcHRpb24iLCJjaGFuZ2VzIiwidGl0bGUiLCJpdGVtcyIsInR5cGUiXSwibWFwcGluZ3MiOiJBQUFBO0FBQWU7QUFDWEEsYUFBVyxFQUFFLHNEQURGO0FBRVhDLFNBQU8sRUFBRSxDQUNMO0FBQ0lDLFNBQUssRUFBRSxhQURYO0FBRUlDLFNBQUssRUFBRSxDQUNILGlKQURHLEVBRUgsMEpBRkc7QUFGWCxHQURLLEVBUUw7QUFDSUQsU0FBSyxFQUFFLE9BRFg7QUFFSUUsUUFBSSxFQUFFLE9BRlY7QUFHSUQsU0FBSyxFQUFFLENBQ0gsNENBREcsRUFFSCxvQ0FGRyxFQUdILDRGQUhHO0FBSFgsR0FSSyxFQWlCTDtBQUNJRCxTQUFLLEVBQUUsYUFEWDtBQUVJRSxRQUFJLEVBQUUsVUFGVjtBQUdJRCxTQUFLLEVBQUUsQ0FDSCx1SUFERyxFQUVILG9LQUZHO0FBSFgsR0FqQks7QUFGRSxDQUFmIiwiZmlsZSI6Ii4vc3JjL2RhdGEvY2hhbmdlbG9nLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQge1xyXG4gICAgZGVzY3JpcHRpb246IFwiRG9uJ3QgYmUgc2hvY2tlZCwgdGhpcyBtb2RhbCBpcyBzdXBwb3NlZCB0byBiZSBoZXJlLlwiLFxyXG4gICAgY2hhbmdlczogW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgdGl0bGU6IFwiV2hhdCdzIE5ldz9cIixcclxuICAgICAgICAgICAgaXRlbXM6IFtcclxuICAgICAgICAgICAgICAgIFwiKipCYW5kYWdlZEJEIHdpbGwgbm93IGtlZXAgeW91IHVwZGF0ZWQgd2l0aCBjaGFuZ2Vsb2dzISoqIEkgd2lsbCB0cnkgdG8gb25seSBzaG93IGEgY2hhbmdlbG9nIHdoZW4gdGhlcmUncyBtb3JlIHRoYW4gYSB0aW55IG9yIGludGVybmFsIGNoYW5nZS5cIixcclxuICAgICAgICAgICAgICAgIFwiKipUd2l0dGVyIChAQmFuZGFnZWRCRCkqKiBJIGNyZWF0ZWQgYSBUd2l0dGVyIHRvIHRyeSBhbmQgcHJvdmlkZSBzdXBwb3J0IGFuZCBzdWNoIGZvciB0aG9zZSB3aXRob3V0IGFjY2VzcyB0byB0aGUgc2VydmVyLiBodHRwczovL1R3aXR0ZXIuY29tL0JhbmRhZ2VkQkRcIlxyXG4gICAgICAgICAgICBdXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHRpdGxlOiBcIkZpeGVzXCIsXHJcbiAgICAgICAgICAgIHR5cGU6IFwiZml4ZWRcIixcclxuICAgICAgICAgICAgaXRlbXM6IFtcclxuICAgICAgICAgICAgICAgIFwiKipDb2xvcmVkIFRleHQqKiBvcHRpb24gc2hvdWxkIHdvcmsgYWdhaW4uXCIsXHJcbiAgICAgICAgICAgICAgICBcIioqRW1vdGVzKiogc2hvdWxkIHNob3cgdXAgaW4gY2hhdC5cIixcclxuICAgICAgICAgICAgICAgIFwiRml4ZWQgYSBidWcgd2hlcmUgQkJEIGF0dGVtcHRlZCB0byBwYXRjaCB0aGUgVGFiQmFyIG1vZHVsZSBpbmNvcnJlY3RseS4gKFRoYW5rcywgRGV2aWxCcm8pXCJcclxuICAgICAgICAgICAgXVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICB0aXRsZTogXCJNaW5vciBTdHVmZlwiLFxyXG4gICAgICAgICAgICB0eXBlOiBcImltcHJvdmVkXCIsXHJcbiAgICAgICAgICAgIGl0ZW1zOiBbXHJcbiAgICAgICAgICAgICAgICBcIioqQ29sb3VyLT5Db2xvci4qKiBTd2FwcGVkIHRvIHVzaW5nIEVuZ2xpc2gtVVMgc3BlbGxpbmcgYnkgZGVmYXVsdCB0byBiZSBjb25zaXN0ZW50LCBhbmQgdG8gcG90ZW50aWFsbHkgYmUgcHJlcGFyZWQgZm9yIGxvY2FsaXphdGlvbi5cIixcclxuICAgICAgICAgICAgICAgIFwiKipWZXJzaW9ucyBzaW1wbGlmaWVkLioqIFRoZSBCYW5kYWdlZEJEIHZlcnNpb24gbm93IGludGVncmF0ZXMgaW50byBEaXNjb3JkJ3MgYXQgdGhlIGJvdHRvbS1sZWZ0IG9mIHNldHRpbmdzIGluc3RlYWQgb2YgcmFuZG9tbHkgYmVpbmcgYSBwYXJ0IG9mIHRoZSBzZXR0aW5nIGxpc3QuXCJcclxuICAgICAgICAgICAgXVxyXG4gICAgICAgIH1cclxuICAgIF1cclxufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/data/changelog.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n description: \"Don't be shocked, this modal is supposed to be here.\",\n changes: [{\n title: \"What's New?\",\n items: [\"**BandagedBD will now keep you updated with changelogs!** I will try to only show a changelog when there's more than a tiny or internal change.\", \"**Twitter (@BandagedBD)** I created a Twitter to try and provide support and such for those without access to the server. https://Twitter.com/BandagedBD\"]\n }, {\n title: \"Fixes\",\n type: \"fixed\",\n items: [\"**Colored Text** option should work again.\", \"**Emotes** should show up in chat.\", \"Fixed a bug where BBD attempted to patch the TabBar module incorrectly. (Thanks, DevilBro)\"]\n }, {\n title: \"Minor Stuff\",\n type: \"improved\",\n items: [\"**Colour->Color.** Swapped to using English-US spelling by default to be consistent, and to potentially be prepared for localization.\", \"**Versions simplified.** The BandagedBD version now integrates into Discord's at the bottom-left of settings instead of randomly being a part of the setting list.\"]\n }]\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvZGF0YS9jaGFuZ2Vsb2cuanM/Zjg5YyJdLCJuYW1lcyI6WyJkZXNjcmlwdGlvbiIsImNoYW5nZXMiLCJ0aXRsZSIsIml0ZW1zIiwidHlwZSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBZTtBQUNYQSxhQUFXLEVBQUUsc0RBREY7QUFFWEMsU0FBTyxFQUFFLENBQ0w7QUFDSUMsU0FBSyxFQUFFLGFBRFg7QUFFSUMsU0FBSyxFQUFFLENBQ0gsaUpBREcsRUFFSCwwSkFGRztBQUZYLEdBREssRUFRTDtBQUNJRCxTQUFLLEVBQUUsT0FEWDtBQUVJRSxRQUFJLEVBQUUsT0FGVjtBQUdJRCxTQUFLLEVBQUUsQ0FDSCw0Q0FERyxFQUVILG9DQUZHLEVBR0gsNEZBSEc7QUFIWCxHQVJLLEVBaUJMO0FBQ0lELFNBQUssRUFBRSxhQURYO0FBRUlFLFFBQUksRUFBRSxVQUZWO0FBR0lELFNBQUssRUFBRSxDQUNILHVJQURHLEVBRUgsb0tBRkc7QUFIWCxHQWpCSztBQUZFLENBQWYiLCJmaWxlIjoiLi9zcmMvZGF0YS9jaGFuZ2Vsb2cuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCB7XHJcbiAgICBkZXNjcmlwdGlvbjogXCJEb24ndCBiZSBzaG9ja2VkLCB0aGlzIG1vZGFsIGlzIHN1cHBvc2VkIHRvIGJlIGhlcmUuXCIsXHJcbiAgICBjaGFuZ2VzOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICB0aXRsZTogXCJXaGF0J3MgTmV3P1wiLFxyXG4gICAgICAgICAgICBpdGVtczogW1xyXG4gICAgICAgICAgICAgICAgXCIqKkJhbmRhZ2VkQkQgd2lsbCBub3cga2VlcCB5b3UgdXBkYXRlZCB3aXRoIGNoYW5nZWxvZ3MhKiogSSB3aWxsIHRyeSB0byBvbmx5IHNob3cgYSBjaGFuZ2Vsb2cgd2hlbiB0aGVyZSdzIG1vcmUgdGhhbiBhIHRpbnkgb3IgaW50ZXJuYWwgY2hhbmdlLlwiLFxyXG4gICAgICAgICAgICAgICAgXCIqKlR3aXR0ZXIgKEBCYW5kYWdlZEJEKSoqIEkgY3JlYXRlZCBhIFR3aXR0ZXIgdG8gdHJ5IGFuZCBwcm92aWRlIHN1cHBvcnQgYW5kIHN1Y2ggZm9yIHRob3NlIHdpdGhvdXQgYWNjZXNzIHRvIHRoZSBzZXJ2ZXIuIGh0dHBzOi8vVHdpdHRlci5jb20vQmFuZGFnZWRCRFwiXHJcbiAgICAgICAgICAgIF1cclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgdGl0bGU6IFwiRml4ZXNcIixcclxuICAgICAgICAgICAgdHlwZTogXCJmaXhlZFwiLFxyXG4gICAgICAgICAgICBpdGVtczogW1xyXG4gICAgICAgICAgICAgICAgXCIqKkNvbG9yZWQgVGV4dCoqIG9wdGlvbiBzaG91bGQgd29yayBhZ2Fpbi5cIixcclxuICAgICAgICAgICAgICAgIFwiKipFbW90ZXMqKiBzaG91bGQgc2hvdyB1cCBpbiBjaGF0LlwiLFxyXG4gICAgICAgICAgICAgICAgXCJGaXhlZCBhIGJ1ZyB3aGVyZSBCQkQgYXR0ZW1wdGVkIHRvIHBhdGNoIHRoZSBUYWJCYXIgbW9kdWxlIGluY29ycmVjdGx5LiAoVGhhbmtzLCBEZXZpbEJybylcIlxyXG4gICAgICAgICAgICBdXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHRpdGxlOiBcIk1pbm9yIFN0dWZmXCIsXHJcbiAgICAgICAgICAgIHR5cGU6IFwiaW1wcm92ZWRcIixcclxuICAgICAgICAgICAgaXRlbXM6IFtcclxuICAgICAgICAgICAgICAgIFwiKipDb2xvdXItPkNvbG9yLioqIFN3YXBwZWQgdG8gdXNpbmcgRW5nbGlzaC1VUyBzcGVsbGluZyBieSBkZWZhdWx0IHRvIGJlIGNvbnNpc3RlbnQsIGFuZCB0byBwb3RlbnRpYWxseSBiZSBwcmVwYXJlZCBmb3IgbG9jYWxpemF0aW9uLlwiLFxyXG4gICAgICAgICAgICAgICAgXCIqKlZlcnNpb25zIHNpbXBsaWZpZWQuKiogVGhlIEJhbmRhZ2VkQkQgdmVyc2lvbiBub3cgaW50ZWdyYXRlcyBpbnRvIERpc2NvcmQncyBhdCB0aGUgYm90dG9tLWxlZnQgb2Ygc2V0dGluZ3MgaW5zdGVhZCBvZiByYW5kb21seSBiZWluZyBhIHBhcnQgb2YgdGhlIHNldHRpbmcgbGlzdC5cIlxyXG4gICAgICAgICAgICBdXHJcbiAgICAgICAgfVxyXG4gICAgXVxyXG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/data/changelog.js\n"); /***/ }), @@ -299,7 +298,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n local: false,\n localServer: \"//localhost:8080\",\n minified: true,\n version: \"0.3.0\",\n branch: \"master\",\n repo: \"rauenzi\",\n minSupportedVersion: \"0.3.0\",\n bbdVersion: \"1.0.0\"\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL2RhdGEvY29uZmlnLmpzPzRiYWEiXSwibmFtZXMiOlsibG9jYWwiLCJsb2NhbFNlcnZlciIsIm1pbmlmaWVkIiwidmVyc2lvbiIsImJyYW5jaCIsInJlcG8iLCJtaW5TdXBwb3J0ZWRWZXJzaW9uIiwiYmJkVmVyc2lvbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBZTtBQUNYQSxPQUFLLEVBQUUsS0FESTtBQUVYQyxhQUFXLEVBQUUsa0JBRkY7QUFHWEMsVUFBUSxFQUFFLElBSEM7QUFJWEMsU0FBTyxFQUFFLE9BSkU7QUFLWEMsUUFBTSxFQUFFLFFBTEc7QUFNWEMsTUFBSSxFQUFFLFNBTks7QUFPWEMscUJBQW1CLEVBQUUsT0FQVjtBQVFYQyxZQUFVLEVBQUU7QUFSRCxDQUFmIiwiZmlsZSI6Ii4vc3JjL2RhdGEvY29uZmlnLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQge1xyXG4gICAgbG9jYWw6IGZhbHNlLFxyXG4gICAgbG9jYWxTZXJ2ZXI6IFwiLy9sb2NhbGhvc3Q6ODA4MFwiLFxyXG4gICAgbWluaWZpZWQ6IHRydWUsXHJcbiAgICB2ZXJzaW9uOiBcIjAuMy4wXCIsXHJcbiAgICBicmFuY2g6IFwibWFzdGVyXCIsXHJcbiAgICByZXBvOiBcInJhdWVuemlcIixcclxuICAgIG1pblN1cHBvcnRlZFZlcnNpb246IFwiMC4zLjBcIixcclxuICAgIGJiZFZlcnNpb246IFwiMS4wLjBcIlxyXG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/data/config.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n local: false,\n localServer: \"//localhost:8080\",\n minified: true,\n version: \"0.3.0\",\n branch: \"master\",\n repo: \"rauenzi\",\n minSupportedVersion: \"0.3.0\",\n bbdVersion: \"1.0.0\"\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvZGF0YS9jb25maWcuanM/NGJhYSJdLCJuYW1lcyI6WyJsb2NhbCIsImxvY2FsU2VydmVyIiwibWluaWZpZWQiLCJ2ZXJzaW9uIiwiYnJhbmNoIiwicmVwbyIsIm1pblN1cHBvcnRlZFZlcnNpb24iLCJiYmRWZXJzaW9uIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFlO0FBQ1hBLE9BQUssRUFBRSxLQURJO0FBRVhDLGFBQVcsRUFBRSxrQkFGRjtBQUdYQyxVQUFRLEVBQUUsSUFIQztBQUlYQyxTQUFPLEVBQUUsT0FKRTtBQUtYQyxRQUFNLEVBQUUsUUFMRztBQU1YQyxNQUFJLEVBQUUsU0FOSztBQU9YQyxxQkFBbUIsRUFBRSxPQVBWO0FBUVhDLFlBQVUsRUFBRTtBQVJELENBQWYiLCJmaWxlIjoiLi9zcmMvZGF0YS9jb25maWcuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCB7XHJcbiAgICBsb2NhbDogZmFsc2UsXHJcbiAgICBsb2NhbFNlcnZlcjogXCIvL2xvY2FsaG9zdDo4MDgwXCIsXHJcbiAgICBtaW5pZmllZDogdHJ1ZSxcclxuICAgIHZlcnNpb246IFwiMC4zLjBcIixcclxuICAgIGJyYW5jaDogXCJtYXN0ZXJcIixcclxuICAgIHJlcG86IFwicmF1ZW56aVwiLFxyXG4gICAgbWluU3VwcG9ydGVkVmVyc2lvbjogXCIwLjMuMFwiLFxyXG4gICAgYmJkVmVyc2lvbjogXCIxLjAuMFwiXHJcbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/data/config.js\n"); /***/ }), @@ -311,7 +310,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./config */ \"./src/data/config.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Config\", function() { return _config__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _settings_emoteconfig__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./settings/emoteconfig */ \"./src/data/settings/emoteconfig.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"EmoteConfig\", function() { return _settings_emoteconfig__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _settings_config__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./settings/config */ \"./src/data/settings/config.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"SettingsConfig\", function() { return _settings_config__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _strings__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./strings */ \"./src/data/strings.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Strings\", function() { return _strings__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _changelog__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./changelog */ \"./src/data/changelog.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Changelog\", function() { return _changelog__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL2RhdGEvZGF0YS5qcz9kNWM3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9zcmMvZGF0YS9kYXRhLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHtkZWZhdWx0IGFzIENvbmZpZ30gZnJvbSBcIi4vY29uZmlnXCI7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBFbW90ZUNvbmZpZ30gZnJvbSBcIi4vc2V0dGluZ3MvZW1vdGVjb25maWdcIjtcclxuZXhwb3J0IHtkZWZhdWx0IGFzIFNldHRpbmdzQ29uZmlnfSBmcm9tIFwiLi9zZXR0aW5ncy9jb25maWdcIjtcclxuZXhwb3J0IHtkZWZhdWx0IGFzIFN0cmluZ3N9IGZyb20gXCIuL3N0cmluZ3NcIjtcclxuZXhwb3J0IHtkZWZhdWx0IGFzIENoYW5nZWxvZ30gZnJvbSBcIi4vY2hhbmdlbG9nXCI7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/data/data.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./config */ \"./src/data/config.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Config\", function() { return _config__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _settings_emoteconfig__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./settings/emoteconfig */ \"./src/data/settings/emoteconfig.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"EmoteConfig\", function() { return _settings_emoteconfig__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _settings_config__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./settings/config */ \"./src/data/settings/config.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"SettingsConfig\", function() { return _settings_config__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _strings__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./strings */ \"./src/data/strings.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Strings\", function() { return _strings__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _changelog__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./changelog */ \"./src/data/changelog.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Changelog\", function() { return _changelog__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvZGF0YS9kYXRhLmpzP2Q1YzciXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL3NyYy9kYXRhL2RhdGEuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQge2RlZmF1bHQgYXMgQ29uZmlnfSBmcm9tIFwiLi9jb25maWdcIjtcclxuZXhwb3J0IHtkZWZhdWx0IGFzIEVtb3RlQ29uZmlnfSBmcm9tIFwiLi9zZXR0aW5ncy9lbW90ZWNvbmZpZ1wiO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgU2V0dGluZ3NDb25maWd9IGZyb20gXCIuL3NldHRpbmdzL2NvbmZpZ1wiO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgU3RyaW5nc30gZnJvbSBcIi4vc3RyaW5nc1wiO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgQ2hhbmdlbG9nfSBmcm9tIFwiLi9jaGFuZ2Vsb2dcIjsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/data/data.js\n"); /***/ }), @@ -323,7 +322,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _con /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ([{\n type: \"category\",\n id: \"general\",\n collapsible: true,\n settings: [{\n type: \"switch\",\n id: \"emotes\",\n value: true\n }, {\n type: \"switch\",\n id: \"publicServers\",\n value: true\n }, {\n type: \"switch\",\n id: \"voiceDisconnect\",\n value: false\n }, {\n type: \"switch\",\n id: \"twentyFourHour\",\n value: false\n }, {\n type: \"switch\",\n id: \"classNormalizer\",\n value: true\n }, {\n type: \"switch\",\n id: \"showToasts\",\n value: true\n }]\n}, {\n type: \"category\",\n id: \"appearance\",\n collapsible: true,\n settings: [{\n type: \"switch\",\n id: \"voiceMode\",\n value: false\n }, {\n type: \"switch\",\n id: \"minimalMode\",\n value: false\n }, {\n type: \"switch\",\n id: \"hideChannels\",\n value: false,\n enableWith: \"minimalMode\"\n }, {\n type: \"switch\",\n id: \"darkMode\",\n value: true\n }, {\n type: \"switch\",\n id: \"coloredText\",\n value: false\n }]\n}, {\n type: \"category\",\n id: \"addons\",\n collapsible: true,\n shown: false,\n settings: [{\n type: \"switch\",\n id: \"addonErrors\",\n value: true\n }, {\n type: \"switch\",\n id: \"autoScroll\",\n value: true\n }, {\n type: \"switch\",\n id: \"autoReload\",\n value: true\n }, {\n type: \"dropdown\",\n id: \"editAction\",\n value: \"detached\",\n options: [{\n value: \"detached\"\n }, {\n value: \"system\"\n }]\n }]\n}, {\n type: \"category\",\n id: \"customcss\",\n collapsible: true,\n shown: false,\n settings: [{\n type: \"switch\",\n id: \"customcss\",\n value: true\n }, {\n type: \"switch\",\n id: \"liveUpdate\",\n value: false\n }, {\n type: \"dropdown\",\n id: \"openAction\",\n value: \"settings\",\n options: [{\n value: \"settings\"\n }, {\n value: \"detached\"\n }, {\n value: \"system\"\n }]\n }]\n}, {\n type: \"category\",\n id: \"developer\",\n collapsible: true,\n shown: false,\n settings: [{\n type: \"switch\",\n id: \"debuggerHotkey\",\n value: false\n }, {\n type: \"switch\",\n id: \"copySelector\",\n value: false\n }, {\n type: \"switch\",\n id: \"reactDevTools\",\n value: false\n }]\n}, {\n type: \"category\",\n id: \"window\",\n collapsible: true,\n shown: false,\n settings: [{\n type: \"switch\",\n id: \"transparency\",\n value: false\n }, {\n type: \"switch\",\n id: \"frame\",\n value: false,\n hidden: true\n }]\n}]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL2RhdGEvc2V0dGluZ3MvY29uZmlnLmpzP2ZmOGUiXSwibmFtZXMiOlsidHlwZSIsImlkIiwiY29sbGFwc2libGUiLCJzZXR0aW5ncyIsInZhbHVlIiwiZW5hYmxlV2l0aCIsInNob3duIiwib3B0aW9ucyIsImhpZGRlbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBZSxnRUFDWDtBQUNJQSxNQUFJLEVBQUUsVUFEVjtBQUVJQyxJQUFFLEVBQUUsU0FGUjtBQUdJQyxhQUFXLEVBQUUsSUFIakI7QUFJSUMsVUFBUSxFQUFFLENBQ047QUFBQ0gsUUFBSSxFQUFFLFFBQVA7QUFBaUJDLE1BQUUsRUFBRSxRQUFyQjtBQUErQkcsU0FBSyxFQUFFO0FBQXRDLEdBRE0sRUFFTjtBQUFDSixRQUFJLEVBQUUsUUFBUDtBQUFpQkMsTUFBRSxFQUFFLGVBQXJCO0FBQXNDRyxTQUFLLEVBQUU7QUFBN0MsR0FGTSxFQUdOO0FBQUNKLFFBQUksRUFBRSxRQUFQO0FBQWlCQyxNQUFFLEVBQUUsaUJBQXJCO0FBQXdDRyxTQUFLLEVBQUU7QUFBL0MsR0FITSxFQUlOO0FBQUNKLFFBQUksRUFBRSxRQUFQO0FBQWlCQyxNQUFFLEVBQUUsZ0JBQXJCO0FBQXVDRyxTQUFLLEVBQUU7QUFBOUMsR0FKTSxFQUtOO0FBQUNKLFFBQUksRUFBRSxRQUFQO0FBQWlCQyxNQUFFLEVBQUUsaUJBQXJCO0FBQXdDRyxTQUFLLEVBQUU7QUFBL0MsR0FMTSxFQU1OO0FBQUNKLFFBQUksRUFBRSxRQUFQO0FBQWlCQyxNQUFFLEVBQUUsWUFBckI7QUFBbUNHLFNBQUssRUFBRTtBQUExQyxHQU5NO0FBSmQsQ0FEVyxFQWNYO0FBQ0lKLE1BQUksRUFBRSxVQURWO0FBRUlDLElBQUUsRUFBRSxZQUZSO0FBR0lDLGFBQVcsRUFBRSxJQUhqQjtBQUlJQyxVQUFRLEVBQUUsQ0FDTjtBQUFDSCxRQUFJLEVBQUUsUUFBUDtBQUFpQkMsTUFBRSxFQUFFLFdBQXJCO0FBQWtDRyxTQUFL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TjtBQUFDSCxRQUFJLEVBQUUsUUFBUDtBQUFpQkMsTUFBRSxFQUFFLGNBQXJCO0FBQXFDRyxTQUFLLEVBQUU7QUFBNUMsR0FETSxFQUVOO0FBQUNKLFFBQUksRUFBRSxRQUFQO0FBQWlCQyxNQUFFLEVBQUUsT0FBckI7QUFBOEJHLFNBQUssRUFBRSxLQUFyQztBQUE0Q0ksVUFBTSxFQUFFO0FBQXBELEdBRk07QUFMZCxDQTVEVyxDQUFmIiwiZmlsZSI6Ii4vc3JjL2RhdGEvc2V0dGluZ3MvY29uZmlnLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgW1xyXG4gICAge1xyXG4gICAgICAgIHR5cGU6IFwiY2F0ZWdvcnlcIixcclxuICAgICAgICBpZDogXCJnZW5lcmFsXCIsXHJcbiAgICAgICAgY29sbGFwc2libGU6IHRydWUsXHJcbiAgICAgICAgc2V0dGluZ3M6IFtcclxuICAgICAgICAgICAge3R5cGU6IFwic3dpdGNoXCIsIGlkOiBcImVtb3Rlc1wiLCB2YWx1ZTogdHJ1ZX0sXHJcbiAgICAgICAgICAgIHt0eXBlOiBcInN3aXRjaFwiLCBpZDogXCJwdWJsaWNTZXJ2ZXJzXCIsIHZhbHVlOiB0cnVlfSxcclxuICAgICAgICAgICAge3R5cGU6IFwic3dpdGNoXCIsIGlkOiBcInZvaWNlRGlzY29ubmVjdFwiLCB2YWx1ZTogZmFsc2V9LFxyXG4gICAgICAgICAgICB7dHlwZTogXCJzd2l0Y2hcIiwgaWQ6IFwidHdlbnR5Rm91ckhvdXJcIiwgdmFsdWU6IGZhbHNlfSxcclxuICAgICAgICAgICAge3R5cGU6IFwic3dpdGNoXCIsIGlkOiBcImNsYXNzTm9ybWFsaXplclwiLCB2YWx1ZTogdHJ1ZX0sXHJcbiAgICAgICAgICAgIHt0eXBlOiBcInN3aXRjaFwiLCBpZDogXCJzaG93VG9hc3RzXCIsIHZhbHVlOiB0cnVlfVxyXG4gICAgICAgIF1cclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgdHlwZTogXCJjYXRlZ29yeVwiLFxyXG4gICAgICAgIGlkOiBcImFwcGVhcmFuY2VcIixcclxuICAgICAgICBjb2xsYXBzaWJsZTogdHJ1ZSxcclxuICAgICAgICBzZXR0aW5nczogW1xyXG4gICAgICAgICAgICB7dHlwZTogXCJzd2l0Y2hcIiwgaWQ6IFwidm9pY2VNb2RlXCIsIHZhbHVlOiBmYWxzZX0sXHJcbiAgICAgICAgICAgIHt0eXBlOiBcInN3aXRjaFwiLCBpZDogXCJtaW5pbWFsTW9kZVwiLCB2YWx1ZTogZmFsc2V9LFxyXG4gICAgICAgICAgICB7dHlwZTogXCJzd2l0Y2hcIiwgaWQ6IFwiaGlkZUNoYW5uZWxzXCIsIHZhbHVlOiBmYWxzZSwgZW5hYmxlV2l0aDogXCJtaW5pbWFsTW9kZVwifSxcclxuICAgICAgICAgICAge3R5cGU6IFwic3dpdGNoXCIsIGlkOiBcImRhcmtNb2RlXCIsIHZhbHVlOiB0cnVlfSxcclxuICAgICAgICAgICAge3R5cGU6IFwic3dpdGNoXCIsIGlkOiBcImNvbG9yZWRUZXh0XCIsIHZhbHVlOiBmYWxzZX1cclxuICAgICAgICBdXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIHR5cGU6IFwiY2F0ZWdvcnlcIixcclxuICAgICAgICBpZDogXCJhZGRvbnNcIixcclxuICAgICAgICBjb2xsYXBzaWJsZTogdHJ1ZSxcclxuICAgICAgICBzaG93bjogZmFsc2UsXHJcbiAgICAgICAgc2V0dGluZ3M6IFtcclxuICAgICAgICAgICAge3R5cGU6IFwic3dpdGNoXCIsIGlkOiBcImFkZG9uRXJyb3JzXCIsIHZhbHVlOiB0cnVlfSxcclxuICAgICAgICAgICAge3R5cGU6IFwic3dpdGNoXCIsIGlkOiBcImF1dG9TY3JvbGxcIiwgdmFsdWU6IHRydWV9LFxyXG4gICAgICAgICAgICB7dHlwZTogXCJzd2l0Y2hcIiwgaWQ6IFwiYXV0b1JlbG9hZFwiLCB2YWx1ZTogdHJ1ZX0sXHJcbiAgICAgICAgICAgIHt0eXBlOiBcImRyb3Bkb3duXCIsIGlkOiBcImVkaXRBY3Rpb25cIiwgdmFsdWU6IFwiZGV0YWNoZWRcIiwgb3B0aW9uczogW3t2YWx1ZTogXCJkZXRhY2hlZFwifSwge3ZhbHVlOiBcInN5c3RlbVwifV19XHJcbiAgICAgICAgXVxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICB0eXBlOiBcImNhdGVnb3J5XCIsXHJcbiAgICAgICAgaWQ6IFwiY3VzdG9tY3NzXCIsXHJcbiAgICAgICAgY29sbGFwc2libGU6IHRydWUsXHJcbiAgICAgICAgc2hvd246IGZhbHNlLFxyXG4gICAgICAgIHNldHRpbmdzOiBbXHJcbiAgICAgICAgICAgIHt0eXBlOiBcInN3aXRjaFwiLCBpZDogXCJjdXN0b21jc3NcIiwgdmFsdWU6IHRydWV9LFxyXG4gICAgICAgICAgICB7dHlwZTogXCJzd2l0Y2hcIiwgaWQ6IFwibGl2ZVVwZGF0ZVwiLCB2YWx1ZTogZmFsc2V9LFxyXG4gICAgICAgICAgICB7dHlwZTogXCJkcm9wZG93blwiLCBpZDogXCJvcGVuQWN0aW9uXCIsIHZhbHVlOiBcInNldHRpbmdzXCIsIG9wdGlvbnM6IFt7dmFsdWU6IFwic2V0dGluZ3NcIn0sIHt2YWx1ZTogXCJkZXRhY2hlZFwifSwge3ZhbHVlOiBcInN5c3RlbVwifV19XHJcbiAgICAgICAgXVxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICB0eXBlOiBcImNhdGVnb3J5XCIsXHJcbiAgICAgICAgaWQ6IFwiZGV2ZWxvcGVyXCIsXHJcbiAgICAgICAgY29sbGFwc2libGU6IHRydWUsXHJcbiAgICAgICAgc2hvd246IGZhbHNlLFxyXG4gICAgICAgIHNldHRpbmdzOiBbXHJcbiAgICAgICAgICAgIHt0eXBlOiBcInN3aXRjaFwiLCBpZDogXCJkZWJ1Z2dlckhvdGtleVwiLCB2YWx1ZTogZmFsc2V9LFxyXG4gICAgICAgICAgICB7dHlwZTogXCJzd2l0Y2hcIiwgaWQ6IFwiY29weVNlbGVjdG9yXCIsIHZhbHVlOiBmYWxzZX0sXHJcbiAgICAgICAgICAgIHt0eXBlOiBcInN3aXRjaFwiLCBpZDogXCJyZWFjdERldlRvb2xzXCIsIHZhbHVlOiBmYWxzZX1cclxuICAgICAgICBdXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIHR5cGU6IFwiY2F0ZWdvcnlcIixcclxuICAgICAgICBpZDogXCJ3aW5kb3dcIixcclxuICAgICAgICBjb2xsYXBzaWJsZTogdHJ1ZSxcclxuICAgICAgICBzaG93bjogZmFsc2UsXHJcbiAgICAgICAgc2V0dGluZ3M6IFtcclxuICAgICAgICAgICAge3R5cGU6IFwic3dpdGNoXCIsIGlkOiBcInRyYW5zcGFyZW5jeVwiLCB2YWx1ZTogZmFsc2V9LFxyXG4gICAgICAgICAgICB7dHlwZTogXCJzd2l0Y2hcIiwgaWQ6IFwiZnJhbWVcIiwgdmFsdWU6IGZhbHNlLCBoaWRkZW46IHRydWV9XHJcbiAgICAgICAgXVxyXG4gICAgfVxyXG5dOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/data/settings/config.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ([{\n type: \"category\",\n id: \"general\",\n collapsible: true,\n settings: [{\n type: \"switch\",\n id: \"emotes\",\n value: true\n }, {\n type: \"switch\",\n id: \"publicServers\",\n value: true\n }, {\n type: \"switch\",\n id: \"voiceDisconnect\",\n value: false\n }, {\n type: \"switch\",\n id: \"twentyFourHour\",\n value: false\n }, {\n type: \"switch\",\n id: \"classNormalizer\",\n value: true\n }, {\n type: \"switch\",\n id: \"showToasts\",\n value: true\n }]\n}, {\n type: \"category\",\n id: \"appearance\",\n collapsible: true,\n settings: [{\n type: \"switch\",\n id: \"voiceMode\",\n value: false\n }, {\n type: \"switch\",\n id: \"minimalMode\",\n value: false\n }, {\n type: \"switch\",\n id: \"hideChannels\",\n value: false,\n enableWith: \"minimalMode\"\n }, {\n type: \"switch\",\n id: \"darkMode\",\n value: true\n }, {\n type: \"switch\",\n id: \"coloredText\",\n value: false\n }]\n}, {\n type: \"category\",\n id: \"addons\",\n collapsible: true,\n shown: false,\n settings: [{\n type: \"switch\",\n id: \"addonErrors\",\n value: true\n }, {\n type: \"switch\",\n id: \"autoScroll\",\n value: true\n }, {\n type: \"switch\",\n id: \"autoReload\",\n value: true\n }, {\n type: \"dropdown\",\n id: \"editAction\",\n value: \"detached\",\n options: [{\n value: \"detached\"\n }, {\n value: \"system\"\n }]\n }]\n}, {\n type: \"category\",\n id: \"customcss\",\n collapsible: true,\n shown: false,\n settings: [{\n type: \"switch\",\n id: \"customcss\",\n value: true\n }, {\n type: \"switch\",\n id: \"liveUpdate\",\n value: false\n }, {\n type: \"dropdown\",\n id: \"openAction\",\n value: \"settings\",\n options: [{\n value: \"settings\"\n }, {\n value: \"detached\"\n }, {\n value: \"system\"\n }]\n }]\n}, {\n type: \"category\",\n id: \"developer\",\n collapsible: true,\n shown: false,\n settings: [{\n type: \"switch\",\n id: \"debuggerHotkey\",\n value: false\n }, {\n type: \"switch\",\n id: \"copySelector\",\n value: false\n }, {\n type: \"switch\",\n id: \"reactDevTools\",\n value: false\n }]\n}, {\n type: \"category\",\n id: \"window\",\n collapsible: true,\n shown: false,\n settings: [{\n type: \"switch\",\n id: \"transparency\",\n value: false\n }, {\n type: \"switch\",\n id: \"frame\",\n value: false,\n hidden: true\n }]\n}]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvZGF0YS9zZXR0aW5ncy9jb25maWcuanM/ZmY4ZSJdLCJuYW1lcyI6WyJ0eXBlIiwiaWQiLCJjb2xsYXBzaWJsZSIsInNldHRpbmdzIiwidmFsdWUiLCJlbmFibGVXaXRoIiwic2hvd24iLCJvcHRpb25zIiwiaGlkZGVuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFlLGdFQUNYO0FBQ0lBLE1BQUksRUFBRSxVQURWO0FBRUlDLElBQUUsRUFBRSxTQUZSO0FBR0lDLGFBQVcsRUFBRSxJQUhqQjtBQUlJQyxVQUFRLEVBQUUsQ0FDTjtBQUFDSCxRQUFJLEVBQUUsUUFBUDtBQUFpQkMsTUFBRSxFQUFFLFFBQXJCO0FBQStCRyxTQUFLLEVBQUU7QUFBdEMsR0FETSxFQUVOO0FBQUNKLFFBQUksRUFBRSxRQUFQO0FBQWlCQyxNQUFFLEVBQUUsZUFBckI7QUFBc0NHLFNBQUssRUFBRTtBQUE3QyxHQUZNLEVBR047QUFBQ0osUUFBSSxFQUFFLFFBQVA7QUFBaUJDLE1BQUUsRUFBRSxpQkFBckI7QUFBd0NHLFNBQUssRUFBRTtBQUEvQyxHQUhNLEVBSU47QUFBQ0osUUFBSSxFQUFFLFFBQVA7QUFBaUJDLE1BQUUsRUFBRSxnQkFBckI7QUFBdUNHLFNBQUssRUFBRTtBQUE5QyxHQUpNLEVBS047QUFBQ0osUUFBSSxFQUFFLFFBQVA7QUFBaUJDLE1BQUUsRUFBRSxpQkFBckI7QUFBd0NHLFNBQUssRUFBRTtBQUEvQyxHQUxNLEVBTU47QUFBQ0osUUFBSSxFQUFFLFFBQVA7QUFBaUJDLE1BQUUsRUFBRSxZQUFyQjtBQUFtQ0csU0FBSyxFQUFFO0FBQTFDLEdBTk07QUFKZCxDQURXLEVBY1g7QUFDSUosTUFBSSxFQUFFLFVBRFY7QUFFSUMsSUFBRSxFQUFFLFlBRlI7QUFHSUMsYUFBVyxFQUFFLElBSGpCO0FBSUlDLFVBQVEsRUFBRSxDQUNOO0FBQUNILFFBQUksRUFBRSxRQUFQO0FBQWlCQyxNQUFFLEVBQUUsV0FBckI7QUFBa0NHLFNBQUssRUFBRTtBQUF6QyxHQURNLEVBRU47QUFBQ0osUUFBSSxFQUFFLFFBQVA7QUFBaUJDLE1BQUUsRUFBRSxhQUFyQjtBQUFvQ0csU0FBSyxFQUFFO0FBQTNDLEdBRk0sRUFHTjtBQUFDSixRQUFJLEVBQUUsUUFBUDtBQUFpQkMsTUFBRSxFQUFFLGNBQXJCO0FBQXFDRyxTQUFLLEVBQUUsS0FBNUM7QUFBbURDLGNBQVUsRUFBRTtBQUEvRCxHQUhNLEVBSU47QUFBQ0wsUUFBSSxFQUFFLFFBQVA7QUFBaUJDLE1BQUUsRUFBRSxVQUFyQjtBQUFpQ0csU0FBSyxFQUFFO0FBQXhDLEdBSk0sRUFLTjtBQUFDSixRQUFJLEVBQUUsUUFBUDtBQUFpQkMsTUFBRSxFQUFFLGFBQXJCO0FBQW9DRyxTQUFLLEVBQUU7QUFBM0MsR0FMTTtBQUpkLENBZFcsRUEwQlg7QUFDSUosTUFBSSxFQUFFLFVBRFY7QUFFSUMsSUFBRSxFQUFFLFFBRlI7QUFHSUMsYUFBVyxFQUFFLElBSGpCO0FBSUlJLE9BQUssRUFBRSxLQUpYO0FBS0lILFVBQVEsRUFBRSxDQUNOO0FBQUNILFFBQUksRUFBRSxRQUFQO0FBQWlCQyxNQUFFLEVBQUUsYUFBckI7QUFBb0NHLFNBQUssRUFBRTtBQUEzQyxHQURNLEVBRU47QUFBQ0osUUFBSSxFQUFFLFFBQVA7QUFBaUJDLE1BQUUsRUFBRSxZQUFyQjtBQUFtQ0csU0FBSyxFQUFFO0FBQTFDLEdBRk0sRUFHTjtBQUFDSixRQUFJLEVBQUUsUUFBUDtBQUFpQkMsTUFBRSxFQUFFLFlBQXJCO0FBQW1DRyxTQUFLLEVBQUU7QUFBMUMsR0FITSxFQUlOO0FBQUNKLFFBQUksRUFBRSxVQUFQO0FBQW1CQyxNQUFFLEVBQUUsWUFBdkI7QUFBcUNHLFNBQUssRUFBRSxVQUE1QztBQUF3REcsV0FBTyxFQUFFLENBQUM7QUFBQ0gsV0FBSyxFQUFFO0FBQVIsS0FBRCxFQUFzQjtBQUFDQSxXQUFLLEVBQUU7QUFBUixLQUF0QjtBQUFqRSxHQUpNO0FBTGQsQ0ExQlcsRUFzQ1g7QUFDSUosTUFBSSxFQUFFLFVBRFY7QUFFSUMsSUFBRSxFQUFFLFdBRlI7QUFHSUMsYUFBVyxFQUFFLElBSGpCO0FBSUlJLE9BQUssRUFBRSxLQUpYO0FBS0lILFVBQVEsRUFBRSxDQUNOO0FBQUNILFFBQUksRUFBRSxRQUFQO0FBQWlCQyxNQUFFLEVBQUUsV0FBckI7QUFBa0NHLFNBQUssRUFBRTtBQUF6QyxHQURNLEVBRU47QUFBQ0osUUFBSSxFQUFFLFFBQVA7QUFBaUJDLE1BQUUsRUFBRSxZQUFyQjtBQUFtQ0csU0FBSyxFQUFFO0FBQTFDLEdBRk0sRUFHTjtBQUFDSixRQUFJLEVBQUUsVUFBUDtBQUFtQkMsTUFBRSxFQUFFLFlBQXZCO0FBQXFDRyxTQUFLLEVBQUUsVUFBNUM7QUFBd0RHLFdBQU8sRUFBRSxDQUFDO0FBQUNILFdBQUssRUFBRTtBQUFSLEtBQUQsRUFBc0I7QUFBQ0EsV0FBSyxFQUFFO0FBQVIsS0FBdEIsRUFBMkM7QUFBQ0EsV0FBSyxFQUFFO0FBQVIsS0FBM0M7QUFBakUsR0FITTtBQUxkLENBdENXLEVBaURYO0FBQ0lKLE1BQUksRUFBRSxVQURWO0FBRUlDLElBQUUsRUFBRSxXQUZSO0FBR0lDLGFBQVcsRUFBRSxJQUhqQjtBQUlJSSxPQUFLLEVBQUUsS0FKWDtBQUtJSCxVQUFRLEVBQUUsQ0FDTjtBQUFDSCxRQUFJLEVBQUUsUUFBUDtBQUFpQkMsTUFBRSxFQUFFLGdCQUFyQjtBQUF1Q0csU0FBSyxFQUFFO0FBQTlDLEdBRE0sRUFFTjtBQUFDSixRQUFJLEVBQUUsUUFBUDtBQUFpQkMsTUFBRSxFQUFFLGNBQXJCO0FBQXFDRyxTQUFLLEVBQUU7QUFBNUMsR0FGTSxFQUdOO0FBQUNKLFFBQUksRUFBRSxRQUFQO0FBQWlCQyxNQUFFLEVBQUUsZUFBckI7QUFBc0NHLFNBQUssRUFBRTtBQUE3QyxHQUhNO0FBTGQsQ0FqRFcsRUE0RFg7QUFDSUosTUFBSSxFQUFFLFVBRFY7QUFFSUMsSUFBRSxFQUFFLFFBRlI7QUFHSUMsYUFBVyxFQUFFLElBSGpCO0FBSUlJLE9BQUssRUFBRSxLQUpYO0FBS0lILFVBQVEsRUFBRSxDQUNOO0FBQUNILFFBQUksRUFBRSxRQUFQO0FBQWlCQyxNQUFFLEVBQUUsY0FBckI7QUFBcUNHLFNBQUssRUFBRTtBQUE1QyxHQURNLEVBRU47QUFBQ0osUUFBSSxFQUFFLFFBQVA7QUFBaUJDLE1BQUUsRUFBRSxPQUFyQjtBQUE4QkcsU0FBSyxFQUFFLEtBQXJDO0FBQTRDSSxVQUFNLEVBQUU7QUFBcEQsR0FGTTtBQUxkLENBNURXLENBQWYiLCJmaWxlIjoiLi9zcmMvZGF0YS9zZXR0aW5ncy9jb25maWcuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBbXHJcbiAgICB7XHJcbiAgICAgICAgdHlwZTogXCJjYXRlZ29yeVwiLFxyXG4gICAgICAgIGlkOiBcImdlbmVyYWxcIixcclxuICAgICAgICBjb2xsYXBzaWJsZTogdHJ1ZSxcclxuICAgICAgICBzZXR0aW5nczogW1xyXG4gICAgICAgICAgICB7dHlwZTogXCJzd2l0Y2hcIiwgaWQ6IFwiZW1vdGVzXCIsIHZhbHVlOiB0cnVlfSxcclxuICAgICAgICAgICAge3R5cGU6IFwic3dpdGNoXCIsIGlkOiBcInB1YmxpY1NlcnZlcnNcIiwgdmFsdWU6IHRydWV9LFxyXG4gICAgICAgICAgICB7dHlwZTogXCJzd2l0Y2hcIiwgaWQ6IFwidm9pY2VEaXNjb25uZWN0XCIsIHZhbHVlOiBmYWxzZX0sXHJcbiAgICAgICAgICAgIHt0eXBlOiBcInN3aXRjaFwiLCBpZDogXCJ0d2VudHlGb3VySG91clwiLCB2YWx1ZTogZmFsc2V9LFxyXG4gICAgICAgICAgICB7dHlwZTogXCJzd2l0Y2hcIiwgaWQ6IFwiY2xhc3NOb3JtYWxpemVyXCIsIHZhbHVlOiB0cnVlfSxcclxuICAgICAgICAgICAge3R5cGU6IFwic3dpdGNoXCIsIGlkOiBcInNob3dUb2FzdHNcIiwgdmFsdWU6IHRydWV9XHJcbiAgICAgICAgXVxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICB0eXBlOiBcImNhdGVnb3J5XCIsXHJcbiAgICAgICAgaWQ6IFwiYXBwZWFyYW5jZVwiLFxyXG4gICAgICAgIGNvbGxhcHNpYmxlOiB0cnVlLFxyXG4gICAgICAgIHNldHRpbmdzOiBbXHJcbiAgICAgICAgICAgIHt0eXBlOiBcInN3aXRjaFwiLCBpZDogXCJ2b2ljZU1vZGVcIiwgdmFsdWU6IGZhbHNlfSxcclxuICAgICAgICAgICAge3R5cGU6IFwic3dpdGNoXCIsIGlkOiBcIm1pbmltYWxNb2RlXCIsIHZhbHVlOiBmYWxzZX0sXHJcbiAgICAgICAgICAgIHt0eXBlOiBcInN3aXRjaFwiLCBpZDogXCJoaWRlQ2hhbm5lbHNcIiwgdmFsdWU6IGZhbHNlLCBlbmFibGVXaXRoOiBcIm1pbmltYWxNb2RlXCJ9LFxyXG4gICAgICAgICAgICB7dHlwZTogXCJzd2l0Y2hcIiwgaWQ6IFwiZGFya01vZGVcIiwgdmFsdWU6IHRydWV9LFxyXG4gICAgICAgICAgICB7dHlwZTogXCJzd2l0Y2hcIiwgaWQ6IFwiY29sb3JlZFRleHRcIiwgdmFsdWU6IGZhbHNlfVxyXG4gICAgICAgIF1cclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgdHlwZTogXCJjYXRlZ29yeVwiLFxyXG4gICAgICAgIGlkOiBcImFkZG9uc1wiLFxyXG4gICAgICAgIGNvbGxhcHNpYmxlOiB0cnVlLFxyXG4gICAgICAgIHNob3duOiBmYWxzZSxcclxuICAgICAgICBzZXR0aW5nczogW1xyXG4gICAgICAgICAgICB7dHlwZTogXCJzd2l0Y2hcIiwgaWQ6IFwiYWRkb25FcnJvcnNcIiwgdmFsdWU6IHRydWV9LFxyXG4gICAgICAgICAgICB7dHlwZTogXCJzd2l0Y2hcIiwgaWQ6IFwiYXV0b1Njcm9sbFwiLCB2YWx1ZTogdHJ1ZX0sXHJcbiAgICAgICAgICAgIHt0eXBlOiBcInN3aXRjaFwiLCBpZDogXCJhdXRvUmVsb2FkXCIsIHZhbHVlOiB0cnVlfSxcclxuICAgICAgICAgICAge3R5cGU6IFwiZHJvcGRvd25cIiwgaWQ6IFwiZWRpdEFjdGlvblwiLCB2YWx1ZTogXCJkZXRhY2hlZFwiLCBvcHRpb25zOiBbe3ZhbHVlOiBcImRldGFjaGVkXCJ9LCB7dmFsdWU6IFwic3lzdGVtXCJ9XX1cclxuICAgICAgICBdXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIHR5cGU6IFwiY2F0ZWdvcnlcIixcclxuICAgICAgICBpZDogXCJjdXN0b21jc3NcIixcclxuICAgICAgICBjb2xsYXBzaWJsZTogdHJ1ZSxcclxuICAgICAgICBzaG93bjogZmFsc2UsXHJcbiAgICAgICAgc2V0dGluZ3M6IFtcclxuICAgICAgICAgICAge3R5cGU6IFwic3dpdGNoXCIsIGlkOiBcImN1c3RvbWNzc1wiLCB2YWx1ZTogdHJ1ZX0sXHJcbiAgICAgICAgICAgIHt0eXBlOiBcInN3aXRjaFwiLCBpZDogXCJsaXZlVXBkYXRlXCIsIHZhbHVlOiBmYWxzZX0sXHJcbiAgICAgICAgICAgIHt0eXBlOiBcImRyb3Bkb3duXCIsIGlkOiBcIm9wZW5BY3Rpb25cIiwgdmFsdWU6IFwic2V0dGluZ3NcIiwgb3B0aW9uczogW3t2YWx1ZTogXCJzZXR0aW5nc1wifSwge3ZhbHVlOiBcImRldGFjaGVkXCJ9LCB7dmFsdWU6IFwic3lzdGVtXCJ9XX1cclxuICAgICAgICBdXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIHR5cGU6IFwiY2F0ZWdvcnlcIixcclxuICAgICAgICBpZDogXCJkZXZlbG9wZXJcIixcclxuICAgICAgICBjb2xsYXBzaWJsZTogdHJ1ZSxcclxuICAgICAgICBzaG93bjogZmFsc2UsXHJcbiAgICAgICAgc2V0dGluZ3M6IFtcclxuICAgICAgICAgICAge3R5cGU6IFwic3dpdGNoXCIsIGlkOiBcImRlYnVnZ2VySG90a2V5XCIsIHZhbHVlOiBmYWxzZX0sXHJcbiAgICAgICAgICAgIHt0eXBlOiBcInN3aXRjaFwiLCBpZDogXCJjb3B5U2VsZWN0b3JcIiwgdmFsdWU6IGZhbHNlfSxcclxuICAgICAgICAgICAge3R5cGU6IFwic3dpdGNoXCIsIGlkOiBcInJlYWN0RGV2VG9vbHNcIiwgdmFsdWU6IGZhbHNlfVxyXG4gICAgICAgIF1cclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgdHlwZTogXCJjYXRlZ29yeVwiLFxyXG4gICAgICAgIGlkOiBcIndpbmRvd1wiLFxyXG4gICAgICAgIGNvbGxhcHNpYmxlOiB0cnVlLFxyXG4gICAgICAgIHNob3duOiBmYWxzZSxcclxuICAgICAgICBzZXR0aW5nczogW1xyXG4gICAgICAgICAgICB7dHlwZTogXCJzd2l0Y2hcIiwgaWQ6IFwidHJhbnNwYXJlbmN5XCIsIHZhbHVlOiBmYWxzZX0sXHJcbiAgICAgICAgICAgIHt0eXBlOiBcInN3aXRjaFwiLCBpZDogXCJmcmFtZVwiLCB2YWx1ZTogZmFsc2UsIGhpZGRlbjogdHJ1ZX1cclxuICAgICAgICBdXHJcbiAgICB9XHJcbl07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/data/settings/config.js\n"); /***/ }), @@ -335,7 +334,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ([{\n type: \"category\",\n id: \"general\",\n name: \"General\",\n collapsible: true,\n settings: [{\n type: \"switch\",\n id: \"download\",\n value: true\n }, {\n type: \"switch\",\n id: \"emoteMenu\",\n value: true\n }, {\n type: \"switch\",\n id: \"hideEmojiMenu\",\n value: false,\n enableWith: \"emoteMenu\"\n }, {\n type: \"switch\",\n id: \"showNames\",\n value: true\n }, {\n type: \"switch\",\n id: \"modifiers\",\n value: true\n }, {\n type: \"switch\",\n id: \"animateOnHover\",\n value: false\n }]\n}, {\n type: \"category\",\n id: \"categories\",\n name: \"Categories\",\n collapsible: true,\n settings: [{\n type: \"switch\",\n id: \"twitchglobal\",\n value: true\n }, {\n type: \"switch\",\n id: \"twitchsubscriber\",\n value: false\n }, {\n type: \"switch\",\n id: \"frankerfacez\",\n value: true\n }, {\n type: \"switch\",\n id: \"bttv\",\n value: true\n }]\n}]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL2RhdGEvc2V0dGluZ3MvZW1vdGVjb25maWcuanM/ODU5NyJdLCJuYW1lcyI6WyJ0eXBlIiwiaWQiLCJuYW1lIiwiY29sbGFwc2libGUiLCJzZXR0aW5ncyIsInZhbHVlIiwiZW5hYmxlV2l0aCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBZSxnRUFDWDtBQUNJQSxNQUFJLEVBQUUsVUFEVjtBQUVJQyxJQUFFLEVBQUUsU0FGUjtBQUdJQyxNQUFJLEVBQUUsU0FIVjtBQUlJQyxhQUFXLEVBQUUsSUFKakI7QUFLSUMsVUFBUSxFQUFFLENBQ047QUFBQ0osUUFBSSxFQUFFLFFBQVA7QUFBaUJDLE1BQUUsRUFBRSxVQUFyQjtBQUFpQ0ksU0FBSyxFQUFFO0FBQXhDLEdBRE0sRUFFTjtBQUFDTCxRQUFJLEVBQUUsUUFBUDtBQUFpQkMsTUFBRSxFQUFFLFdBQXJCO0FBQWtDSSxTQUFLLEVBQUU7QUFBekMsR0FGTSxFQUdOO0FBQUNMLFFBQUksRUFBRSxRQUFQO0FBQWlCQyxNQUFFLEVBQUUsZUFBckI7QUFBc0NJLFNBQUssRUFBRSxLQUE3QztBQUFvREMsY0FBVSxFQUFFO0FBQWhFLEdBSE0sRUFJTjtBQUFDTixRQUFJLEVBQUUsUUFBUDtBQUFpQkMsTUFBRSxFQUFFLFdBQXJCO0FBQWtDSSxTQUFLLEVBQUU7QUFBekMsR0FKTSxFQUtOO0FBQUNMLFFBQUksRUFBRSxRQUFQO0FBQWlCQyxNQUFFLEVBQUUsV0FBckI7QUFBa0NJLFNBQUssRUFBRTtBQUF6QyxHQUxNLEVBTU47QUFBQ0wsUUFBSSxFQUFFLFFBQVA7QUFBaUJDLE1BQUUsRUFBRSxnQkFBckI7QUFBdUNJLFNBQUssRUFBRTtBQUE5QyxHQU5NO0FBTGQsQ0FEVyxFQWVYO0FBQ0lMLE1BQUksRUFBRSxVQURWO0FBRUlDLElBQUUsRUFBRSxZQUZSO0FBR0lDLE1BQUksRUFBRSxZQUhWO0FBSUlDLGFBQVcsRUFBRSxJQUpqQjtBQUtJQyxVQUFRLEVBQUUsQ0FDTjtBQUFDSixRQUFJLEVBQUUsUUFBUDtBQUFpQkMsTUFBRSxFQUFFLGNBQXJCO0FBQXFDSSxTQUFLLEVBQUU7QUFBNUMsR0FETSxFQUVOO0FBQUNMLFFBQUksRUFBRSxRQUFQO0FBQWlCQyxNQUFFLEVBQUUsa0JBQXJCO0FBQXlDSSxTQUFLLEVBQUU7QUFBaEQsR0FGTSxFQUdOO0FBQUNMLFFBQUksRUFBRSxRQUFQO0FBQWlCQyxNQUFFLEVBQUUsY0FBckI7QUFBcUNJLFNBQUssRUFBRTtBQUE1QyxHQUhNLEVBSU47QUFBQ0wsUUFBSSxFQUFFLFFBQVA7QUFBaUJDLE1BQUUsRUFBRSxNQUFyQjtBQUE2QkksU0FBSyxFQUFFO0FBQXBDLEdBSk07QUFMZCxDQWZXLENBQWYiLCJmaWxlIjoiLi9zcmMvZGF0YS9zZXR0aW5ncy9lbW90ZWNvbmZpZy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IFtcclxuICAgIHtcclxuICAgICAgICB0eXBlOiBcImNhdGVnb3J5XCIsXHJcbiAgICAgICAgaWQ6IFwiZ2VuZXJhbFwiLFxyXG4gICAgICAgIG5hbWU6IFwiR2VuZXJhbFwiLFxyXG4gICAgICAgIGNvbGxhcHNpYmxlOiB0cnVlLFxyXG4gICAgICAgIHNldHRpbmdzOiBbXHJcbiAgICAgICAgICAgIHt0eXBlOiBcInN3aXRjaFwiLCBpZDogXCJkb3dubG9hZFwiLCB2YWx1ZTogdHJ1ZX0sXHJcbiAgICAgICAgICAgIHt0eXBlOiBcInN3aXRjaFwiLCBpZDogXCJlbW90ZU1lbnVcIiwgdmFsdWU6IHRydWV9LFxyXG4gICAgICAgICAgICB7dHlwZTogXCJzd2l0Y2hcIiwgaWQ6IFwiaGlkZUVtb2ppTWVudVwiLCB2YWx1ZTogZmFsc2UsIGVuYWJsZVdpdGg6IFwiZW1vdGVNZW51XCJ9LFxyXG4gICAgICAgICAgICB7dHlwZTogXCJzd2l0Y2hcIiwgaWQ6IFwic2hvd05hbWVzXCIsIHZhbHVlOiB0cnVlfSxcclxuICAgICAgICAgICAge3R5cGU6IFwic3dpdGNoXCIsIGlkOiBcIm1vZGlmaWVyc1wiLCB2YWx1ZTogdHJ1ZX0sXHJcbiAgICAgICAgICAgIHt0eXBlOiBcInN3aXRjaFwiLCBpZDogXCJhbmltYXRlT25Ib3ZlclwiLCB2YWx1ZTogZmFsc2V9XHJcbiAgICAgICAgXVxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICB0eXBlOiBcImNhdGVnb3J5XCIsXHJcbiAgICAgICAgaWQ6IFwiY2F0ZWdvcmllc1wiLFxyXG4gICAgICAgIG5hbWU6IFwiQ2F0ZWdvcmllc1wiLFxyXG4gICAgICAgIGNvbGxhcHNpYmxlOiB0cnVlLFxyXG4gICAgICAgIHNldHRpbmdzOiBbXHJcbiAgICAgICAgICAgIHt0eXBlOiBcInN3aXRjaFwiLCBpZDogXCJ0d2l0Y2hnbG9iYWxcIiwgdmFsdWU6IHRydWV9LFxyXG4gICAgICAgICAgICB7dHlwZTogXCJzd2l0Y2hcIiwgaWQ6IFwidHdpdGNoc3Vic2NyaWJlclwiLCB2YWx1ZTogZmFsc2V9LFxyXG4gICAgICAgICAgICB7dHlwZTogXCJzd2l0Y2hcIiwgaWQ6IFwiZnJhbmtlcmZhY2V6XCIsIHZhbHVlOiB0cnVlfSxcclxuICAgICAgICAgICAge3R5cGU6IFwic3dpdGNoXCIsIGlkOiBcImJ0dHZcIiwgdmFsdWU6IHRydWV9XHJcbiAgICAgICAgXVxyXG4gICAgfVxyXG5dOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/data/settings/emoteconfig.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ([{\n type: \"category\",\n id: \"general\",\n name: \"General\",\n collapsible: true,\n settings: [{\n type: \"switch\",\n id: \"download\",\n value: true\n }, {\n type: \"switch\",\n id: \"emoteMenu\",\n value: true\n }, {\n type: \"switch\",\n id: \"hideEmojiMenu\",\n value: false,\n enableWith: \"emoteMenu\"\n }, {\n type: \"switch\",\n id: \"showNames\",\n value: true\n }, {\n type: \"switch\",\n id: \"modifiers\",\n value: true\n }, {\n type: \"switch\",\n id: \"animateOnHover\",\n value: false\n }]\n}, {\n type: \"category\",\n id: \"categories\",\n name: \"Categories\",\n collapsible: true,\n settings: [{\n type: \"switch\",\n id: \"twitchglobal\",\n value: true\n }, {\n type: \"switch\",\n id: \"twitchsubscriber\",\n value: false\n }, {\n type: \"switch\",\n id: \"frankerfacez\",\n value: true\n }, {\n type: \"switch\",\n id: \"bttv\",\n value: true\n }]\n}]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvZGF0YS9zZXR0aW5ncy9lbW90ZWNvbmZpZy5qcz84NTk3Il0sIm5hbWVzIjpbInR5cGUiLCJpZCIsIm5hbWUiLCJjb2xsYXBzaWJsZSIsInNldHRpbmdzIiwidmFsdWUiLCJlbmFibGVXaXRoIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFlLGdFQUNYO0FBQ0lBLE1BQUksRUFBRSxVQURWO0FBRUlDLElBQUUsRUFBRSxTQUZSO0FBR0lDLE1BQUksRUFBRSxTQUhWO0FBSUlDLGFBQVcsRUFBRSxJQUpqQjtBQUtJQyxVQUFRLEVBQUUsQ0FDTjtBQUFDSixRQUFJLEVBQUUsUUFBUDtBQUFpQkMsTUFBRSxFQUFFLFVBQXJCO0FBQWlDSSxTQUFLLEVBQUU7QUFBeEMsR0FETSxFQUVOO0FBQUNMLFFBQUksRUFBRSxRQUFQO0FBQWlCQyxNQUFFLEVBQUUsV0FBckI7QUFBa0NJLFNBQUssRUFBRTtBQUF6QyxHQUZNLEVBR047QUFBQ0wsUUFBSSxFQUFFLFFBQVA7QUFBaUJDLE1BQUUsRUFBRSxlQUFyQjtBQUFzQ0ksU0FBSyxFQUFFLEtBQTdDO0FBQW9EQyxjQUFVLEVBQUU7QUFBaEUsR0FITSxFQUlOO0FBQUNOLFFBQUksRUFBRSxRQUFQO0FBQWlCQyxNQUFFLEVBQUUsV0FBckI7QUFBa0NJLFNBQUssRUFBRTtBQUF6QyxHQUpNLEVBS047QUFBQ0wsUUFBSSxFQUFFLFFBQVA7QUFBaUJDLE1BQUUsRUFBRSxXQUFyQjtBQUFrQ0ksU0FBSyxFQUFFO0FBQXpDLEdBTE0sRUFNTjtBQUFDTCxRQUFJLEVBQUUsUUFBUDtBQUFpQkMsTUFBRSxFQUFFLGdCQUFyQjtBQUF1Q0ksU0FBSyxFQUFFO0FBQTlDLEdBTk07QUFMZCxDQURXLEVBZVg7QUFDSUwsTUFBSSxFQUFFLFVBRFY7QUFFSUMsSUFBRSxFQUFFLFlBRlI7QUFHSUMsTUFBSSxFQUFFLFlBSFY7QUFJSUMsYUFBVyxFQUFFLElBSmpCO0FBS0lDLFVBQVEsRUFBRSxDQUNOO0FBQUNKLFFBQUksRUFBRSxRQUFQO0FBQWlCQyxNQUFFLEVBQUUsY0FBckI7QUFBcUNJLFNBQUssRUFBRTtBQUE1QyxHQURNLEVBRU47QUFBQ0wsUUFBSSxFQUFFLFFBQVA7QUFBaUJDLE1BQUUsRUFBRSxrQkFBckI7QUFBeUNJLFNBQUssRUFBRTtBQUFoRCxHQUZNLEVBR047QUFBQ0wsUUFBSSxFQUFFLFFBQVA7QUFBaUJDLE1BQUUsRUFBRSxjQUFyQjtBQUFxQ0ksU0FBSyxFQUFFO0FBQTVDLEdBSE0sRUFJTjtBQUFDTCxRQUFJLEVBQUUsUUFBUDtBQUFpQkMsTUFBRSxFQUFFLE1BQXJCO0FBQTZCSSxTQUFLLEVBQUU7QUFBcEMsR0FKTTtBQUxkLENBZlcsQ0FBZiIsImZpbGUiOiIuL3NyYy9kYXRhL3NldHRpbmdzL2Vtb3RlY29uZmlnLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgW1xyXG4gICAge1xyXG4gICAgICAgIHR5cGU6IFwiY2F0ZWdvcnlcIixcclxuICAgICAgICBpZDogXCJnZW5lcmFsXCIsXHJcbiAgICAgICAgbmFtZTogXCJHZW5lcmFsXCIsXHJcbiAgICAgICAgY29sbGFwc2libGU6IHRydWUsXHJcbiAgICAgICAgc2V0dGluZ3M6IFtcclxuICAgICAgICAgICAge3R5cGU6IFwic3dpdGNoXCIsIGlkOiBcImRvd25sb2FkXCIsIHZhbHVlOiB0cnVlfSxcclxuICAgICAgICAgICAge3R5cGU6IFwic3dpdGNoXCIsIGlkOiBcImVtb3RlTWVudVwiLCB2YWx1ZTogdHJ1ZX0sXHJcbiAgICAgICAgICAgIHt0eXBlOiBcInN3aXRjaFwiLCBpZDogXCJoaWRlRW1vamlNZW51XCIsIHZhbHVlOiBmYWxzZSwgZW5hYmxlV2l0aDogXCJlbW90ZU1lbnVcIn0sXHJcbiAgICAgICAgICAgIHt0eXBlOiBcInN3aXRjaFwiLCBpZDogXCJzaG93TmFtZXNcIiwgdmFsdWU6IHRydWV9LFxyXG4gICAgICAgICAgICB7dHlwZTogXCJzd2l0Y2hcIiwgaWQ6IFwibW9kaWZpZXJzXCIsIHZhbHVlOiB0cnVlfSxcclxuICAgICAgICAgICAge3R5cGU6IFwic3dpdGNoXCIsIGlkOiBcImFuaW1hdGVPbkhvdmVyXCIsIHZhbHVlOiBmYWxzZX1cclxuICAgICAgICBdXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIHR5cGU6IFwiY2F0ZWdvcnlcIixcclxuICAgICAgICBpZDogXCJjYXRlZ29yaWVzXCIsXHJcbiAgICAgICAgbmFtZTogXCJDYXRlZ29yaWVzXCIsXHJcbiAgICAgICAgY29sbGFwc2libGU6IHRydWUsXHJcbiAgICAgICAgc2V0dGluZ3M6IFtcclxuICAgICAgICAgICAge3R5cGU6IFwic3dpdGNoXCIsIGlkOiBcInR3aXRjaGdsb2JhbFwiLCB2YWx1ZTogdHJ1ZX0sXHJcbiAgICAgICAgICAgIHt0eXBlOiBcInN3aXRjaFwiLCBpZDogXCJ0d2l0Y2hzdWJzY3JpYmVyXCIsIHZhbHVlOiBmYWxzZX0sXHJcbiAgICAgICAgICAgIHt0eXBlOiBcInN3aXRjaFwiLCBpZDogXCJmcmFua2VyZmFjZXpcIiwgdmFsdWU6IHRydWV9LFxyXG4gICAgICAgICAgICB7dHlwZTogXCJzd2l0Y2hcIiwgaWQ6IFwiYnR0dlwiLCB2YWx1ZTogdHJ1ZX1cclxuICAgICAgICBdXHJcbiAgICB9XHJcbl07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/data/settings/emoteconfig.js\n"); /***/ }), @@ -347,7 +346,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n Panels: {\n plugins: \"Plugins\",\n themes: \"Themes\",\n customcss: \"Custom CSS\"\n },\n Collections: {\n settings: {\n name: \"Settings\",\n general: {\n name: \"General\",\n emotes: {\n name: \"Emote System\",\n note: \"Enables BD's emote system\"\n },\n publicServers: {\n name: \"Public Servers\",\n note: \"Display public servers button\"\n },\n voiceDisconnect: {\n name: \"Voice Disconnect\",\n note: \"Disconnect from voice server when closing Discord\"\n },\n twentyFourHour: {\n name: \"24-Hour Timestamps\",\n note: \"Hides channels when in minimal mode\"\n },\n classNormalizer: {\n name: \"Normalize Classes\",\n note: \"Adds stable classes to elements to help themes. (e.g. adds .da-channels to .channels-Ie2l6A)\"\n },\n showToasts: {\n name: \"Show Toasts\",\n note: \"Shows a small notification for important information\"\n }\n },\n appearance: {\n name: \"Appearance\",\n voiceMode: {\n name: \"Voice Mode\",\n note: \"Hides everything that isn't voice chat\"\n },\n minimalMode: {\n name: \"Minimal Mode\",\n note: \"Hide elements and reduce the size of elements\"\n },\n hideChannels: {\n name: \"Hide Channels\",\n note: \"Hides channels when in minimal mode\"\n },\n darkMode: {\n name: \"Dark Mode\",\n note: \"Make certain elements dark by default\"\n },\n coloredText: {\n name: \"Colored Text\",\n note: \"Make text colour the same as role color\"\n }\n },\n addons: {\n name: \"Addon Manager\",\n addonErrors: {\n name: \"Show Addon Errors\",\n note: \"Shows a modal with plugin/theme errors\"\n },\n autoScroll: {\n name: \"Scroll To Settings\",\n note: \"Auto-scrolls to a plugin's settings when the button is clicked (only if out of view)\"\n },\n autoReload: {\n name: \"Automatic Loading\",\n note: \"Automatically loads, reloads, and unloads plugins and themes\"\n },\n editAction: {\n name: \"Edit Action\",\n note: \"Where plugins & themes appear when editing\",\n options: {\n detached: \"Detached Window\",\n system: \"System Editor\"\n }\n }\n },\n customcss: {\n name: \"Custom CSS\",\n customcss: {\n name: \"Custom CSS\",\n note: \"Enables the Custom CSS tab\"\n },\n liveUpdate: {\n name: \"Live Update\",\n note: \"Updates the css as you type\"\n },\n startDetached: {\n name: \"Start Detached\",\n note: \"Clicking the Custom CSS tab opens the editor in a separate window\"\n },\n nativeOpen: {\n name: \"Open in Native Editor\",\n note: \"Clicking the Custom CSS tab opens your custom css in your native editor\"\n },\n openAction: {\n name: \"Editor Location\",\n note: \"Where Custom CSS should open by default\",\n options: {\n settings: \"Settings Menu\",\n detached: \"Detached Window\",\n system: \"System Editor\"\n }\n }\n },\n developer: {\n name: \"Developer Settings\",\n debuggerHotkey: {\n name: \"Debugger Hotkey\",\n note: \"Allows activating debugger when pressing F8\"\n },\n copySelector: {\n name: \"Copy Selector\",\n note: \"Adds a \\\"Copy Selector\\\" option to context menus when developer mode is active\"\n },\n reactDevTools: {\n name: \"React Developer Tools\",\n note: \"Injects your local installation of React Developer Tools into Discord\"\n }\n },\n window: {\n name: \"Window Preferences\",\n transparency: {\n name: \"Enable Transparency\",\n note: \"Enables the main window to be see-through (requires restart)\"\n },\n frame: {\n name: \"Window Frame\",\n note: \"Adds the native os window frame to the main window\"\n }\n }\n },\n emotes: {\n name: \"Emotes\",\n general: {\n name: \"General\",\n download: {\n name: \"Download Emotes\",\n note: \"Download emotes whenever they are out of date\"\n },\n emoteMenu: {\n name: \"Emote Menu\",\n note: \"Show Twitch/Favourite emotes in emote menu\"\n },\n hideEmojiMenu: {\n name: \"Hide Emoji Menu\",\n note: \"Hides Discord's emoji menu when using emote menu\"\n },\n autoCaps: {\n name: \"Emote Autocapitalization\",\n note: \"Autocapitalize emote commands\"\n },\n showNames: {\n name: \"Show Names\",\n note: \"Show emote names on hover\"\n },\n modifiers: {\n name: \"Show Emote Modifiers\",\n note: \"Enable emote mods (flip, spin, pulse, spin2, spin3, 1spin, 2spin, 3spin, tr, bl, br, shake, shake2, shake3, flap)\"\n },\n animateOnHover: {\n name: \"Animate On Hover\",\n note: \"Only animate the emote modifiers on hover\"\n }\n },\n categories: {\n name: \"Categories\",\n twitchglobal: {\n name: \"Twitch Globals\",\n note: \"Show Twitch global emotes\"\n },\n twitchsubscriber: {\n name: \"Twitch Subscribers\",\n note: \"Show Twitch subscriber emotes\"\n },\n frankerfacez: {\n name: \"FrankerFaceZ\",\n note: \"Show emotes from FFZ\"\n },\n bttv: {\n name: \"BetterTTV\",\n note: \"Show emotes from BTTV\"\n }\n }\n }\n },\n Addons: {\n title: \"{{name}} v{{version}} by {{author}}\",\n openFolder: \"Open {{type}} Folder\",\n reload: \"Reload\",\n addonSettings: \"Settings\",\n website: \"Website\",\n source: \"Source\",\n invite: \"Support Server\",\n donate: \"Donate\",\n patreon: \"Patreon\",\n name: \"Name\",\n author: \"Author\",\n version: \"Version\",\n added: \"Date Added\",\n modified: \"Date Modified\",\n search: \"Search {{type}}\",\n editAddon: \"Edit\",\n deleteAddon: \"Delete\",\n confirmDelete: \"Are you sure you want to delete {{name}}?\",\n confirmationText: \"You have unsaved changes to {{name}}. Closing this window will lose all those changes.\",\n enabled: \"{{name}} has been enabled.\",\n disabled: \"{{name}} has been disabled.\",\n couldNotEnable: \"{{name}} could not be enabled.\",\n couldNotDisable: \"{{name}} could not be disabled.\",\n couldNotStart: \"{{name}} could not be started.\",\n couldNotStop: \"{{name}} could not be stopped.\",\n methodError: \"{{method}} could not be fired.\",\n unknownAuthor: \"Unknown Author\",\n noDescription: \"Description not provided.\"\n },\n CustomCSS: {\n confirmationText: \"You have unsaved changes to your Custom CSS. Closing this window will lose all those changes.\",\n update: \"Update\",\n save: \"Save\",\n openNative: \"Open in System Editor\",\n openDetached: \"Detach Window\",\n settings: \"Editor Settings\",\n editorTitle: \"Custom CSS Editor\"\n },\n Developer: {\n copySelector: \"Copy Selector\"\n },\n Emotes: {\n loading: \"Loading emotes in the background do not reload.\",\n loaded: \"All emotes successfully loaded.\",\n clearEmotes: \"Clear Emote Data\",\n favoriteAction: \"Favorite!\"\n },\n PublicServers: {\n button: \"public\",\n join: \"Join\",\n joining: \"Joining\",\n joined: \"Joined\",\n loading: \"Loading\",\n loadMore: \"Load More\",\n notConnected: \"Not connected to DiscordServers.com!\",\n search: \"Search\",\n connect: \"Connect\",\n reconnect: \"Reconnect\",\n categories: \"Categories\",\n connection: \"Connected as: {{username}}#{{discriminator}}\",\n results: \"Showing {{start}}-{{end}} of {{total}} results in {{category}}\",\n query: \"for {{query}}\"\n },\n Modals: {\n confirmAction: \"Are You Sure?\",\n okay: \"Okay\",\n cancel: \"Cancel\",\n close: \"Close\",\n name: \"Name\",\n message: \"Message\",\n error: \"Error\",\n addonErrors: \"Addon Errors\",\n restartRequired: \"Restart Required\",\n restartNow: \"Restart Now\",\n restartLater: \"Restart Later\",\n additionalInfo: \"Additional Info\"\n },\n ReactDevTools: {\n notFound: \"Extension Not Found\",\n notFoundDetails: \"Unable to find the React Developer Tools extension on your PC. Please install the extension on your local Chrome installation.\"\n },\n Sorting: {\n sortBy: \"Sort By\",\n order: \"Order\",\n ascending: \"Ascending\",\n descending: \"Descending\"\n },\n Startup: {\n notSupported: \"Not Supported\",\n versionMismatch: \"BandagedBD Injector v{{injector}} is not supported by the latest remote (v{{remote}}).\\n\\nPlease download the latest version from [GitHub](https://github.com/rauenzi/BetterDiscordApp/releases/latest)\",\n incompatibleApp: \"BandagedBD does not work with {{app}}. Please uninstall one of them.\",\n updateNow: \"Update Now\",\n maybeLater: \"Maybe Later\",\n updateAvailable: \"Update Available\",\n updateInfo: \"There is an update available for BandagedBD's Injector ({{version}}).\\n\\nYou can either update and restart now, or later.\",\n updateFailed: \"Could Not Update\",\n manualUpdate: \"Unable to update automatically, please download the installer and reinstall normally.\\n\\n[Download Installer](https://github.com/rauenzi/BetterDiscordApp/releases/latest)\",\n jqueryFailed: \"jQuery Failed To Load\",\n jqueryFailedDetails: \"jQuery could not be loaded, and some plugins may not work properly. Proceed at your own risk.\"\n },\n WindowPrefs: {\n enabledInfo: \"This option requires a transparent theme in order to work properly. On Windows this may break your aero snapping and maximizing.\\n\\nIn order to take effect, Discord needs to be restarted. Do you want to restart now?\",\n disabledInfo: \"In order to take effect, Discord needs to be restarted. Do you want to restart now?\"\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL2RhdGEvc3RyaW5ncy5qcz9iYzcxIl0sIm5hbWVzIjpbIlBhbmVscyIsInBsdWdpbnMiLCJ0aGVtZXMiLCJjdXN0b21jc3MiLCJDb2xsZWN0aW9ucyIsInNldHRpbmdzIiwibmFtZSIsImdlbmVyYWwiLCJlbW90ZXMiLCJub3RlIiwicHVibGljU2VydmVycyIsInZvaWNlRGlzY29ubmVjdCIsInR3ZW50eUZvdXJIb3VyIiwiY2xhc3NOb3JtYWxpemVyIiwic2hvd1RvYXN0cyIsImFwcGVhcmFuY2UiLCJ2b2ljZU1vZGUiLCJtaW5pbWFsTW9kZSIsImhpZGVDaGFubmVscyIsImRhcmtNb2RlIiwiY29sb3JlZFRleHQiLCJhZGRvbnMiLCJhZGRvbkVycm9ycyIsImF1dG9TY3JvbGwiLCJhdXRvUmVsb2FkIiwiZWRpdEFjdGlvbiIsIm9wdGlvbnMiLCJkZXRhY2hlZCIsInN5c3RlbSIsImxpdmVVcGRhdGUiLCJzdGFydERldGFjaGVkIiwibmF0aXZlT3BlbiIsIm9wZW5BY3Rpb24iLCJkZXZlbG9wZXIiLCJkZWJ1Z2dlckhvdGtleSIsImNvcHlTZWxlY3RvciIsInJlYWN0RGV2VG9vbHMiLCJ3aW5kb3ciLCJ0cmFuc3BhcmVuY3kiLCJmcmFtZSIsImRvd25sb2FkIiwiZW1vdGVNZW51IiwiaGlkZUVtb2ppTWVudSIsImF1dG9DYXBzIiwic2hvd05hbWVzIiwibW9kaWZpZXJzIiwiYW5pbWF0ZU9uSG92ZXIiLCJjYXRlZ29yaWVzIiwidHdpdGNoZ2xvYmFsIiwidHdpdGNoc3Vic2NyaWJlciIsImZyYW5rZXJmYWNleiIsImJ0dHYiLCJBZGRvbnMiLCJ0aXRsZSIsIm9wZW5Gb2xkZXIiLCJyZWxvYWQiLCJhZGRvblNldHRpbmdzIiwid2Vic2l0ZSIsInNvdXJjZSIsImludml0ZSIsImRvbmF0ZSIsInBhdHJlb24iLCJhdXRob3IiLCJ2ZXJzaW9uIiwiYWRkZWQiLCJtb2RpZmllZCIsInNlYXJjaCIsImVkaXRBZGRvbiIsImRlbGV0ZUFkZG9uIiwiY29uZmlybURlbGV0ZSIsImNvbmZpcm1hdGlvblRleHQiLCJlbmFibGVkIiwiZGlzYWJsZWQiLCJjb3VsZE5vdEVuYWJsZSIsImNvdWxkTm90RGlzYWJsZSIsImNvdWxkTm90U3RhcnQiLCJjb3VsZE5vdFN0b3AiLCJtZXRob2RFcnJvciIsInVua25vd25BdXRob3IiLCJub0Rlc2NyaXB0aW9uIiwiQ3VzdG9tQ1NTIiwidXBkYXRlIiwic2F2ZSIsIm9wZW5OYXRpdmUiLCJvcGVuRGV0YWNoZWQiLCJlZGl0b3JUaXRsZSIsIkRldmVsb3BlciIsIkVtb3RlcyIsImxvYWRpbmciLCJsb2FkZWQiLCJjbGVhckVtb3RlcyIsImZhdm9yaXRlQWN0aW9uIiwiUHVibGljU2VydmVycyIsImJ1dHRvbiIsImpvaW4iLCJqb2luaW5nIiwiam9pbmVkIiwibG9hZE1vcmUiLCJub3RDb25uZWN0ZWQiLCJjb25uZWN0IiwicmVjb25uZWN0IiwiY29ubmVjdGlvbiIsInJlc3VsdHMiLCJxdWVyeSIsIk1vZGFscyIsImNvbmZpcm1BY3Rpb24iLCJva2F5IiwiY2FuY2VsIiwiY2xvc2UiLCJtZXNzYWdlIiwiZXJyb3IiLCJyZXN0YXJ0UmVxdWlyZWQiLCJyZXN0YXJ0Tm93IiwicmVzdGFydExhdGVyIiwiYWRkaXRpb25hbEluZm8iLCJSZWFjdERldlRvb2xzIiwibm90Rm91bmQiLCJub3RGb3VuZERldGFpbHMiLCJTb3J0aW5nIiwic29ydEJ5Iiwib3JkZXIiLCJhc2NlbmRpbmciLCJkZXNjZW5kaW5nIiwiU3RhcnR1cCIsIm5vdFN1cHBvcnRlZCIsInZlcnNpb25NaXNtYXRjaCIsImluY29tcGF0aWJsZUFwcCIsInVwZGF0ZU5vdyIsIm1heWJlTGF0ZXIiLCJ1cGRhdGVBdmFpbGFibGUiLCJ1cGRhdGVJbmZvIiwidXBkYXRlRmFpbGVkIiwibWFudWFsVXBkYXRlIiwianF1ZXJ5RmFpbGVkIiwianF1ZXJ5RmFpbGVkRGV0YWlscyIsIldpbmRvd1ByZWZzIiwiZW5hYmxlZEluZm8iLCJkaXNhYmxlZElu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TUFGRjtBQUdKQyxVQUFNLEVBQUUsUUFISjtBQUlKQyxTQUFLLEVBQUUsT0FKSDtBQUtKdEcsUUFBSSxFQUFFLE1BTEY7QUFNSnVHLFdBQU8sRUFBRSxTQU5MO0FBT0pDLFNBQUssRUFBRSxPQVBIO0FBUUp4RixlQUFXLEVBQUUsY0FSVDtBQVNKeUYsbUJBQWUsRUFBRSxrQkFUYjtBQVVKQyxjQUFVLEVBQUUsYUFWUjtBQVdKQyxnQkFBWSxFQUFFLGVBWFY7QUFZSkMsa0JBQWMsRUFBRTtBQVpaLEdBL1BHO0FBNlFYQyxlQUFhLEVBQUU7QUFDYkMsWUFBUSxFQUFFLHFCQURHO0FBRWJDLG1CQUFlLEVBQUU7QUFGSixHQTdRSjtBQWlSWEMsU0FBTyxFQUFFO0FBQ0xDLFVBQU0sRUFBRSxTQURIO0FBRUxDLFNBQUssRUFBRSxPQUZGO0FBR0xDLGFBQVMsRUFBRSxXQUhOO0FBSUxDLGNBQVUsRUFBRTtBQUpQLEdBalJFO0FBdVJYQyxTQUFPLEVBQUU7QUFDTEMsZ0JBQVksRUFBRSxlQURUO0FBRUxDLG1CQUFlLEVBQUUseU1BRlo7QUFHTEMsbUJBQWUsRUFBRSxzRUFIWjtBQUlMQyxhQUFTLEVBQUUsWUFKTjtBQUtMQyxjQUFVLEVBQUUsYUFMUDtBQU1MQyxtQkFBZSxFQUFFLGtCQU5aO0FBT0xDLGNBQVUsRUFBRSwySEFQUDtBQVFMQyxnQkFBWSxFQUFFLGtCQVJUO0FBU0xDLGdCQUFZLEVBQUUsNEtBVFQ7QUFVTEMsZ0JBQVksRUFBRSx1QkFWVDtBQVdMQyx1QkFBbUIsRUFBRTtBQVhoQixHQXZSRTtBQW9TWEMsYUFBVyxFQUFFO0FBQ1RDLGVBQVcsRUFBRSx5TkFESjtBQUVUQyxnQkFBWSxFQUFFO0FBRkw7QUFwU0YsQ0FBZiIsImZpbGUiOiIuL3NyYy9kYXRhL3N0cmluZ3MuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCB7XHJcbiAgICBQYW5lbHM6IHtcclxuICAgICAgICBwbHVnaW5zOiBcIlBsdWdpbnNcIixcclxuICAgICAgICB0aGVtZXM6IFwiVGhlbWVzXCIsXHJcbiAgICAgICAgY3VzdG9tY3NzOiBcIkN1c3RvbSBDU1NcIlxyXG4gICAgfSxcclxuICAgIENvbGxlY3Rpb25zOiB7XHJcbiAgICAgICAgc2V0dGluZ3M6IHtcclxuICAgICAgICAgICAgbmFtZTogXCJTZXR0aW5nc1wiLFxyXG4gICAgICAgICAgICBnZW5lcmFsOiB7XHJcbiAgICAgICAgICAgICAgICBuYW1lOiBcIkdlbmVyYWxcIixcclxuICAgICAgICAgICAgICAgIGVtb3Rlczoge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiRW1vdGUgU3lzdGVtXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJFbmFibGVzIEJEJ3MgZW1vdGUgc3lzdGVtXCJcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBwdWJsaWNTZXJ2ZXJzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJQdWJsaWMgU2VydmVyc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiRGlzcGxheSBwdWJsaWMgc2VydmVycyBidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHZvaWNlRGlzY29ubmVjdDoge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiVm9pY2UgRGlzY29ubmVjdFwiLFxyXG4gICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiRGlzY29ubmVjdCBmcm9tIHZvaWNlIHNlcnZlciB3aGVuIGNsb3NpbmcgRGlzY29yZFwiXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgdHdlbnR5Rm91ckhvdXI6IHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIjI0LUhvdXIgVGltZXN0YW1wc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiSGlkZXMgY2hhbm5lbHMgd2hlbiBpbiBtaW5pbWFsIG1vZGVcIlxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGNsYXNzTm9ybWFsaXplcjoge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiTm9ybWFsaXplIENsYXNzZXNcIixcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkFkZHMgc3RhYmxlIGNsYXNzZXMgdG8gZWxlbWVudHMgdG8gaGVscCB0aGVtZXMuIChlLmcuIGFkZHMgLmRhLWNoYW5uZWxzIHRvIC5jaGFubmVscy1JZTJsNkEpXCJcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBzaG93VG9hc3RzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJTaG93IFRvYXN0c1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiU2hvd3MgYSBzbWFsbCBub3RpZmljYXRpb24gZm9yIGltcG9ydGFudCBpbmZvcm1hdGlvblwiXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGFwcGVhcmFuY2U6IHtcclxuICAgICAgICAgICAgICAgIG5hbWU6IFwiQXBwZWFyYW5jZVwiLFxyXG4gICAgICAgICAgICAgICAgdm9pY2VNb2RlOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJWb2ljZSBNb2RlXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJIaWRlcyBldmVyeXRoaW5nIHRoYXQgaXNuJ3Qgdm9pY2UgY2hhdFwiXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgbWluaW1hbE1vZGU6IHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIk1pbmltYWwgTW9kZVwiLFxyXG4gICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiSGlkZSBlbGVtZW50cyBhbmQgcmVkdWNlIHRoZSBzaXplIG9mIGVsZW1lbnRzXCJcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBoaWRlQ2hhbm5lbHM6IHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIkhpZGUgQ2hhbm5lbHNcIixcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkhpZGVzIGNoYW5uZWxzIHdoZW4gaW4gbWluaW1hbCBtb2RlXCJcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBkYXJrTW9kZToge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiRGFyayBNb2RlXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJNYWtlIGNlcnRhaW4gZWxlbWVudHMgZGFyayBieSBkZWZhdWx0XCJcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBjb2xvcmVkVGV4dDoge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiQ29sb3JlZCBUZXh0XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJNYWtlIHRleHQgY29sb3VyIHRoZSBzYW1lIGFzIHJvbGUgY29sb3JcIlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBhZGRvbnM6IHtcclxuICAgICAgICAgICAgICAgIG5hbWU6IFwiQWRkb24gTWFuYWdlclwiLFxyXG4gICAgICAgICAgICAgICAgYWRkb25FcnJvcnM6IHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIlNob3cgQWRkb24gRXJyb3JzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJTaG93cyBhIG1vZGFsIHdpdGggcGx1Z2luL3RoZW1lIGVycm9yc1wiXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgYXV0b1Njcm9sbDoge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiU2Nyb2xsIFRvIFNldHRpbmdzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJBdXRvLXNjcm9sbHMgdG8gYSBwbHVnaW4ncyBzZXR0aW5ncyB3aGVuIHRoZSBidXR0b24gaXMgY2xpY2tlZCAob25seSBpZiBvdXQgb2YgdmlldylcIlxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGF1dG9SZWxvYWQ6IHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIkF1dG9tYXRpYyBMb2FkaW5nXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJBdXRvbWF0aWNhbGx5IGxvYWRzLCByZWxvYWRzLCBhbmQgdW5sb2FkcyBwbHVnaW5zIGFuZCB0aGVtZXNcIlxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGVkaXRBY3Rpb246IHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIkVkaXQgQWN0aW9uXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJXaGVyZSBwbHVnaW5zICYgdGhlbWVzIGFwcGVhciB3aGVuIGVkaXRpbmdcIixcclxuICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRldGFjaGVkOiBcIkRldGFjaGVkIFdpbmRvd1wiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzeXN0ZW06IFwiU3lzdGVtIEVkaXRvclwiXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBjdXN0b21jc3M6IHtcclxuICAgICAgICAgICAgICAgIG5hbWU6IFwiQ3VzdG9tIENTU1wiLFxyXG4gICAgICAgICAgICAgICAgY3VzdG9tY3NzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJDdXN0b20gQ1NTXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJFbmFibGVzIHRoZSBDdXN0b20gQ1NTIHRhYlwiXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgbGl2ZVVwZGF0ZToge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiTGl2ZSBVcGRhdGVcIixcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBcIlVwZGF0ZXMgdGhlIGNzcyBhcyB5b3UgdHlwZVwiXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgc3RhcnREZXRhY2hlZDoge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiU3RhcnQgRGV0YWNoZWRcIixcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkNsaWNraW5nIHRoZSBDdXN0b20gQ1NTIHRhYiBvcGVucyB0aGUgZWRpdG9yIGluIGEgc2VwYXJhdGUgd2luZG93XCIsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgbmF0aXZlT3Blbjoge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiT3BlbiBpbiBOYXRpdmUgRWRpdG9yXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJDbGlja2luZyB0aGUgQ3VzdG9tIENTUyB0YWIgb3BlbnMgeW91ciBjdXN0b20gY3NzIGluIHlvdXIgbmF0aXZlIGVkaXRvclwiXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgb3BlbkFjdGlvbjoge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiRWRpdG9yIExvY2F0aW9uXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJXaGVyZSBDdXN0b20gQ1NTIHNob3VsZCBvcGVuIGJ5IGRlZmF1bHRcIixcclxuICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldHRpbmdzOiBcIlNldHRpbmdzIE1lbnVcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWNoZWQ6IFwiRGV0YWNoZWQgV2luZG93XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN5c3RlbTogXCJTeXN0ZW0gRWRpdG9yXCJcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGRldmVsb3Blcjoge1xyXG4gICAgICAgICAgICAgICAgbmFtZTogXCJEZXZlbG9wZXIgU2V0dGluZ3NcIixcclxuICAgICAgICAgICAgICAgIGRlYnVnZ2VySG90a2V5OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJEZWJ1Z2dlciBIb3RrZXlcIixcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkFsbG93cyBhY3RpdmF0aW5nIGRlYnVnZ2VyIHdoZW4gcHJlc3NpbmcgRjhcIlxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGNvcHlTZWxlY3Rvcjoge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiQ29weSBTZWxlY3RvclwiLFxyXG4gICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiQWRkcyBhIFxcXCJDb3B5IFNlbGVjdG9yXFxcIiBvcHRpb24gdG8gY29udGV4dCBtZW51cyB3aGVuIGRldmVsb3BlciBtb2RlIGlzIGFjdGl2ZVwiXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgcmVhY3REZXZUb29sczoge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiUmVhY3QgRGV2ZWxvcGVyIFRvb2xzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJJbmplY3RzIHlvdXIgbG9jYWwgaW5zdGFsbGF0aW9uIG9mIFJlYWN0IERldmVsb3BlciBUb29scyBpbnRvIERpc2NvcmRcIlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB3aW5kb3c6IHtcclxuICAgICAgICAgICAgICAgIG5hbWU6IFwiV2luZG93IFByZWZlcmVuY2VzXCIsXHJcbiAgICAgICAgICAgICAgICB0cmFuc3BhcmVuY3k6IHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIkVuYWJsZSBUcmFuc3BhcmVuY3lcIixcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkVuYWJsZXMgdGhlIG1haW4gd2luZG93IHRvIGJlIHNlZS10aHJvdWdoIChyZXF1aXJlcyByZXN0YXJ0KVwiXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgZnJhbWU6IHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIldpbmRvdyBGcmFtZVwiLFxyXG4gICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiQWRkcyB0aGUgbmF0aXZlIG9zIHdpbmRvdyBmcmFtZSB0byB0aGUgbWFpbiB3aW5kb3dcIlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlbW90ZXM6IHtcclxuICAgICAgICAgICAgbmFtZTogXCJFbW90ZXNcIixcclxuICAgICAgICAgICAgZ2VuZXJhbDoge1xyXG4gICAgICAgICAgICAgICAgbmFtZTogXCJHZW5lcmFsXCIsXHJcbiAgICAgICAgICAgICAgICBkb3dubG9hZDoge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiRG93bmxvYWQgRW1vdGVzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJEb3dubG9hZCBlbW90ZXMgd2hlbmV2ZXIgdGhleSBhcmUgb3V0IG9mIGRhdGVcIlxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGVtb3RlTWVudToge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiRW1vdGUgTWVudVwiLFxyXG4gICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiU2hvdyBUd2l0Y2gvRmF2b3VyaXRlIGVtb3RlcyBpbiBlbW90ZSBtZW51XCJcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBoaWRlRW1vamlNZW51OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJIaWRlIEVtb2ppIE1lbnVcIixcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkhpZGVzIERpc2NvcmQncyBlbW9qaSBtZW51IHdoZW4gdXNpbmcgZW1vdGUgbWVudVwiXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgYXV0b0NhcHM6IHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIkVtb3RlIEF1dG9jYXBpdGFsaXphdGlvblwiLFxyXG4gICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiQXV0b2NhcGl0YWxpemUgZW1vdGUgY29tbWFuZHNcIlxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHNob3dOYW1lczoge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiU2hvdyBOYW1lc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiU2hvdyBlbW90ZSBuYW1lcyBvbiBob3ZlclwiXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgbW9kaWZpZXJzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJTaG93IEVtb3RlIE1vZGlmaWVyc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiRW5hYmxlIGVtb3RlIG1vZHMgKGZsaXAsIHNwaW4sIHB1bHNlLCBzcGluMiwgc3BpbjMsIDFzcGluLCAyc3BpbiwgM3NwaW4sIHRyLCBibCwgYnIsIHNoYWtlLCBzaGFrZTIsIHNoYWtlMywgZmxhcClcIlxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGFuaW1hdGVPbkhvdmVyOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJBbmltYXRlIE9uIEhvdmVyXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJPbmx5IGFuaW1hdGUgdGhlIGVtb3RlIG1vZGlmaWVycyBvbiBob3ZlclwiXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGNhdGVnb3JpZXM6IHtcclxuICAgICAgICAgICAgICAgIG5hbWU6IFwiQ2F0ZWdvcmllc1wiLFxyXG4gICAgICAgICAgICAgICAgdHdpdGNoZ2xvYmFsOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJUd2l0Y2ggR2xvYmFsc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiU2hvdyBUd2l0Y2ggZ2xvYmFsIGVtb3Rlc1wiXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgdHdpdGNoc3Vic2NyaWJlcjoge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiVHdpdGNoIFN1YnNjcmliZXJzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJTaG93IFR3aXRjaCBzdWJzY3JpYmVyIGVtb3Rlc1wiXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgZnJhbmtlcmZhY2V6OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJGcmFua2VyRmFjZVpcIixcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBcIlNob3cgZW1vdGVzIGZyb20gRkZaXCJcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBidHR2OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJCZXR0ZXJUVFZcIixcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBcIlNob3cgZW1vdGVzIGZyb20gQlRUVlwiXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgQWRkb25zOiB7XHJcbiAgICAgICAgdGl0bGU6IFwie3tuYW1lfX0gdnt7dmVyc2lvbn19IGJ5IHt7YXV0aG9yfX1cIixcclxuICAgICAgICBvcGVuRm9sZGVyOiBcIk9wZW4ge3t0eXBlfX0gRm9sZGVyXCIsXHJcbiAgICAgICAgcmVsb2FkOiBcIlJlbG9hZFwiLFxyXG4gICAgICAgIGFkZG9uU2V0dGluZ3M6IFwiU2V0dGluZ3NcIixcclxuICAgICAgICB3ZWJzaXRlOiBcIldlYnNpdGVcIixcclxuICAgICAgICBzb3VyY2U6IFwiU291cmNlXCIsXHJcbiAgICAgICAgaW52aXRlOiBcIlN1cHBvcnQgU2VydmVyXCIsXHJcbiAgICAgICAgZG9uYXRlOiBcIkRvbmF0ZVwiLFxyXG4gICAgICAgIHBhdHJlb246IFwiUGF0cmVvblwiLFxyXG4gICAgICAgIG5hbWU6IFwiTmFtZVwiLFxyXG4gICAgICAgIGF1dGhvcjogXCJBdXRob3JcIixcclxuICAgICAgICB2ZXJzaW9uOiBcIlZlcnNpb25cIixcclxuICAgICAgICBhZGRlZDogXCJEYXRlIEFkZGVkXCIsXHJcbiAgICAgICAgbW9kaWZpZWQ6IFwiRGF0ZSBNb2RpZmllZFwiLFxyXG4gICAgICAgIHNlYXJjaDogXCJTZWFyY2gge3t0eXBlfX1cIixcclxuICAgICAgICBlZGl0QWRkb246IFwiRWRpdFwiLFxyXG4gICAgICAgIGRlbGV0ZUFkZG9uOiBcIkRlbGV0ZVwiLFxyXG4gICAgICAgIGNvbmZpcm1EZWxldGU6IFwiQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSB7e25hbWV9fT9cIixcclxuICAgICAgICBjb25maXJtYXRpb25UZXh0OiBcIllvdSBoYXZlIHVuc2F2ZWQgY2hhbmdlcyB0byB7e25hbWV9fS4gQ2xvc2luZyB0aGlzIHdpbmRvdyB3aWxsIGxvc2UgYWxsIHRob3NlIGNoYW5nZXMuXCIsXHJcbiAgICAgICAgZW5hYmxlZDogXCJ7e25hbWV9fSBoYXMgYmVlbiBlbmFibGVkLlwiLFxyXG4gICAgICAgIGRpc2FibGVkOiBcInt7bmFtZX19IGhhcyBiZWVuIGRpc2FibGVkLlwiLFxyXG4gICAgICAgIGNvdWxkTm90RW5hYmxlOiBcInt7bmFtZX19IGNvdWxkIG5vdCBiZSBlbmFibGVkLlwiLFxyXG4gICAgICAgIGNvdWxkTm90RGlzYWJsZTogXCJ7e25hbWV9fSBjb3VsZCBub3QgYmUgZGlzYWJsZWQuXCIsXHJcbiAgICAgICAgY291bGROb3RTdGFydDogXCJ7e25hbWV9fSBjb3VsZCBub3QgYmUgc3RhcnRlZC5cIixcclxuICAgICAgICBjb3VsZE5vdFN0b3A6IFwie3tuYW1lfX0gY291bGQgbm90IGJlIHN0b3BwZWQuXCIsXHJcbiAgICAgICAgbWV0aG9kRXJyb3I6IFwie3ttZXRob2R9fSBjb3VsZCBub3QgYmUgZmlyZWQuXCIsXHJcbiAgICAgICAgdW5rbm93bkF1dGhvcjogXCJVbmtub3duIEF1dGhvclwiLFxyXG4gICAgICAgIG5vRGVzY3JpcHRpb246IFwiRGVzY3JpcHRpb24gbm90IHByb3ZpZGVkLlwiXHJcbiAgICB9LFxyXG4gICAgQ3VzdG9tQ1NTOiB7XHJcbiAgICAgICAgY29uZmlybWF0aW9uVGV4dDogXCJZb3UgaGF2ZSB1bnNhdmVkIGNoYW5nZXMgdG8geW91ciBDdXN0b20gQ1NTLiBDbG9zaW5nIHRoaXMgd2luZG93IHdpbGwgbG9zZSBhbGwgdGhvc2UgY2hhbmdlcy5cIixcclxuICAgICAgICB1cGRhdGU6IFwiVXBkYXRlXCIsXHJcbiAgICAgICAgc2F2ZTogXCJTYXZlXCIsXHJcbiAgICAgICAgb3Blbk5hdGl2ZTogXCJPcGVuIGluIFN5c3RlbSBFZGl0b3JcIixcclxuICAgICAgICBvcGVuRGV0YWNoZWQ6IFwiRGV0YWNoIFdpbmRvd1wiLFxyXG4gICAgICAgIHNldHRpbmdzOiBcIkVkaXRvciBTZXR0aW5nc1wiLFxyXG4gICAgICAgIGVkaXRvclRpdGxlOiBcIkN1c3RvbSBDU1MgRWRpdG9yXCJcclxuICAgIH0sXHJcbiAgICBEZXZlbG9wZXI6IHtcclxuICAgICAgICBjb3B5U2VsZWN0b3I6IFwiQ29weSBTZWxlY3RvclwiXHJcbiAgICB9LFxyXG4gICAgRW1vdGVzOiB7XHJcbiAgICAgICAgbG9hZGluZzogXCJMb2FkaW5nIGVtb3RlcyBpbiB0aGUgYmFja2dyb3VuZCBkbyBub3QgcmVsb2FkLlwiLFxyXG4gICAgICAgIGxvYWRlZDogXCJBbGwgZW1vdGVzIHN1Y2Nlc3NmdWxseSBsb2FkZWQuXCIsXHJcbiAgICAgICAgY2xlYXJFbW90ZXM6IFwiQ2xlYXIgRW1vdGUgRGF0YVwiLFxyXG4gICAgICAgIGZhdm9yaXRlQWN0aW9uOiBcIkZhdm9yaXRlIVwiXHJcbiAgICB9LFxyXG4gICAgUHVibGljU2VydmVyczoge1xyXG4gICAgICAgIGJ1dHRvbjogXCJwdWJsaWNcIixcclxuICAgICAgICBqb2luOiBcIkpvaW5cIixcclxuICAgICAgICBqb2luaW5nOiBcIkpvaW5pbmdcIixcclxuICAgICAgICBqb2luZWQ6IFwiSm9pbmVkXCIsXHJcbiAgICAgICAgbG9hZGluZzogXCJMb2FkaW5nXCIsXHJcbiAgICAgICAgbG9hZE1vcmU6IFwiTG9hZCBNb3JlXCIsXHJcbiAgICAgICAgbm90Q29ubmVjdGVkOiBcIk5vdCBjb25uZWN0ZWQgdG8gRGlzY29yZFNlcnZlcnMuY29tIVwiLFxyXG4gICAgICAgIHNlYXJjaDogXCJTZWFyY2hcIixcclxuICAgICAgICBjb25uZWN0OiBcIkNvbm5lY3RcIixcclxuICAgICAgICByZWNvbm5lY3Q6IFwiUmVjb25uZWN0XCIsXHJcbiAgICAgICAgY2F0ZWdvcmllczogXCJDYXRlZ29yaWVzXCIsXHJcbiAgICAgICAgY29ubmVjdGlvbjogXCJDb25uZWN0ZWQgYXM6IHt7dXNlcm5hbWV9fSN7e2Rpc2NyaW1pbmF0b3J9fVwiLFxyXG4gICAgICAgIHJlc3VsdHM6IFwiU2hvd2luZyB7e3N0YXJ0fX0te3tlbmR9fSBvZiB7e3RvdGFsfX0gcmVzdWx0cyBpbiB7e2NhdGVnb3J5fX1cIixcclxuICAgICAgICBxdWVyeTogXCJmb3Ige3txdWVyeX19XCJcclxuICAgIH0sXHJcbiAgICBNb2RhbHM6IHtcclxuICAgICAgICBjb25maXJtQWN0aW9uOiBcIkFyZSBZb3UgU3VyZT9cIixcclxuICAgICAgICBva2F5OiBcIk9rYXlcIixcclxuICAgICAgICBjYW5jZWw6IFwiQ2FuY2VsXCIsXHJcbiAgICAgICAgY2xvc2U6IFwiQ2xvc2VcIixcclxuICAgICAgICBuYW1lOiBcIk5hbWVcIixcclxuICAgICAgICBtZXNzYWdlOiBcIk1lc3NhZ2VcIixcclxuICAgICAgICBlcnJvcjogXCJFcnJvclwiLFxyXG4gICAgICAgIGFkZG9uRXJyb3JzOiBcIkFkZG9uIEVycm9yc1wiLFxyXG4gICAgICAgIHJlc3RhcnRSZXF1aXJlZDogXCJSZXN0YXJ0IFJlcXVpcmVkXCIsXHJcbiAgICAgICAgcmVzdGFydE5vdzogXCJSZXN0YXJ0IE5vd1wiLFxyXG4gICAgICAgIHJlc3RhcnRMYXRlcjogXCJSZXN0YXJ0IExhdGVyXCIsXHJcbiAgICAgICAgYWRkaXRpb25hbEluZm86IFwiQWRkaXRpb25hbCBJbmZvXCJcclxuICAgIH0sXHJcbiAgICBSZWFjdERldlRvb2xzOiB7XHJcbiAgICAgIG5vdEZvdW5kOiBcIkV4dGVuc2lvbiBOb3QgRm91bmRcIixcclxuICAgICAgbm90Rm91bmREZXRhaWxzOiBcIlVuYWJsZSB0byBmaW5kIHRoZSBSZWFjdCBEZXZlbG9wZXIgVG9vbHMgZXh0ZW5zaW9uIG9uIHlvdXIgUEMuIFBsZWFzZSBpbnN0YWxsIHRoZSBleHRlbnNpb24gb24geW91ciBsb2NhbCBDaHJvbWUgaW5zdGFsbGF0aW9uLlwiICBcclxuICAgIH0sXHJcbiAgICBTb3J0aW5nOiB7XHJcbiAgICAgICAgc29ydEJ5OiBcIlNvcnQgQnlcIixcclxuICAgICAgICBvcmRlcjogXCJPcmRlclwiLFxyXG4gICAgICAgIGFzY2VuZGluZzogXCJBc2NlbmRpbmdcIixcclxuICAgICAgICBkZXNjZW5kaW5nOiBcIkRlc2NlbmRpbmdcIlxyXG4gICAgfSxcclxuICAgIFN0YXJ0dXA6IHtcclxuICAgICAgICBub3RTdXBwb3J0ZWQ6IFwiTm90IFN1cHBvcnRlZFwiLFxyXG4gICAgICAgIHZlcnNpb25NaXNtYXRjaDogXCJCYW5kYWdlZEJEIEluamVjdG9yIHZ7e2luamVjdG9yfX0gaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgbGF0ZXN0IHJlbW90ZSAodnt7cmVtb3RlfX0pLlxcblxcblBsZWFzZSBkb3dubG9hZCB0aGUgbGF0ZXN0IHZlcnNpb24gZnJvbSBbR2l0SHViXShodHRwczovL2dpdGh1Yi5jb20vcmF1ZW56aS9CZXR0ZXJEaXNjb3JkQXBwL3JlbGVhc2VzL2xhdGVzdClcIixcclxuICAgICAgICBpbmNvbXBhdGlibGVBcHA6IFwiQmFuZGFnZWRCRCBkb2VzIG5vdCB3b3JrIHdpdGgge3thcHB9fS4gUGxlYXNlIHVuaW5zdGFsbCBvbmUgb2YgdGhlbS5cIixcclxuICAgICAgICB1cGRhdGVOb3c6IFwiVXBkYXRlIE5vd1wiLFxyXG4gICAgICAgIG1heWJlTGF0ZXI6IFwiTWF5YmUgTGF0ZXJcIixcclxuICAgICAgICB1cGRhdGVBdmFpbGFibGU6IFwiVXBkYXRlIEF2YWlsYWJsZVwiLFxyXG4gICAgICAgIHVwZGF0ZUluZm86IFwiVGhlcmUgaXMgYW4gdXBkYXRlIGF2YWlsYWJsZSBmb3IgQmFuZGFnZWRCRCdzIEluamVjdG9yICh7e3ZlcnNpb259fSkuXFxuXFxuWW91IGNhbiBlaXRoZXIgdXBkYXRlIGFuZCByZXN0YXJ0IG5vdywgb3IgbGF0ZXIuXCIsXHJcbiAgICAgICAgdXBkYXRlRmFpbGVkOiBcIkNvdWxkIE5vdCBVcGRhdGVcIixcclxuICAgICAgICBtYW51YWxVcGRhdGU6IFwiVW5hYmxlIHRvIHVwZGF0ZSBhdXRvbWF0aWNhbGx5LCBwbGVhc2UgZG93bmxvYWQgdGhlIGluc3RhbGxlciBhbmQgcmVpbnN0YWxsIG5vcm1hbGx5LlxcblxcbltEb3dubG9hZCBJbnN0YWxsZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9yYXVlbnppL0JldHRlckRpc2NvcmRBcHAvcmVsZWFzZXMvbGF0ZXN0KVwiLFxyXG4gICAgICAgIGpxdWVyeUZhaWxlZDogXCJqUXVlcnkgRmFpbGVkIFRvIExvYWRcIixcclxuICAgICAgICBqcXVlcnlGYWlsZWREZXRhaWxzOiBcImpRdWVyeSBjb3VsZCBub3QgYmUgbG9hZGVkLCBhbmQgc29tZSBwbHVnaW5zIG1heSBub3Qgd29yayBwcm9wZXJseS4gUHJvY2VlZCBhdCB5b3VyIG93biByaXNrLlwiXHJcbiAgICB9LFxyXG4gICAgV2luZG93UHJlZnM6IHtcclxuICAgICAgICBlbmFibGVkSW5mbzogXCJUaGlzIG9wdGlvbiByZXF1aXJlcyBhIHRyYW5zcGFyZW50IHRoZW1lIGluIG9yZGVyIHRvIHdvcmsgcHJvcGVybHkuIE9uIFdpbmRvd3MgdGhpcyBtYXkgYnJlYWsgeW91ciBhZXJvIHNuYXBwaW5nIGFuZCBtYXhpbWl6aW5nLlxcblxcbkluIG9yZGVyIHRvIHRha2UgZWZmZWN0LCBEaXNjb3JkIG5lZWRzIHRvIGJlIHJlc3RhcnRlZC4gRG8geW91IHdhbnQgdG8gcmVzdGFydCBub3c/XCIsXHJcbiAgICAgICAgZGlzYWJsZWRJbmZvOiBcIkluIG9yZGVyIHRvIHRha2UgZWZmZWN0LCBEaXNjb3JkIG5lZWRzIHRvIGJlIHJlc3RhcnRlZC4gRG8geW91IHdhbnQgdG8gcmVzdGFydCBub3c/XCJcclxuICAgIH1cclxufTtcclxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/data/strings.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n Panels: {\n plugins: \"Plugins\",\n themes: \"Themes\",\n customcss: \"Custom CSS\"\n },\n Collections: {\n settings: {\n name: \"Settings\",\n general: {\n name: \"General\",\n emotes: {\n name: \"Emote System\",\n note: \"Enables BD's emote system\"\n },\n publicServers: {\n name: \"Public Servers\",\n note: \"Display public servers button\"\n },\n voiceDisconnect: {\n name: \"Voice Disconnect\",\n note: \"Disconnect from voice server when closing Discord\"\n },\n twentyFourHour: {\n name: \"24-Hour Timestamps\",\n note: \"Hides channels when in minimal mode\"\n },\n classNormalizer: {\n name: \"Normalize Classes\",\n note: \"Adds stable classes to elements to help themes. (e.g. adds .da-channels to .channels-Ie2l6A)\"\n },\n showToasts: {\n name: \"Show Toasts\",\n note: \"Shows a small notification for important information\"\n }\n },\n appearance: {\n name: \"Appearance\",\n voiceMode: {\n name: \"Voice Mode\",\n note: \"Hides everything that isn't voice chat\"\n },\n minimalMode: {\n name: \"Minimal Mode\",\n note: \"Hide elements and reduce the size of elements\"\n },\n hideChannels: {\n name: \"Hide Channels\",\n note: \"Hides channels when in minimal mode\"\n },\n darkMode: {\n name: \"Dark Mode\",\n note: \"Make certain elements dark by default\"\n },\n coloredText: {\n name: \"Colored Text\",\n note: \"Make text colour the same as role color\"\n }\n },\n addons: {\n name: \"Addon Manager\",\n addonErrors: {\n name: \"Show Addon Errors\",\n note: \"Shows a modal with plugin/theme errors\"\n },\n autoScroll: {\n name: \"Scroll To Settings\",\n note: \"Auto-scrolls to a plugin's settings when the button is clicked (only if out of view)\"\n },\n autoReload: {\n name: \"Automatic Loading\",\n note: \"Automatically loads, reloads, and unloads plugins and themes\"\n },\n editAction: {\n name: \"Edit Action\",\n note: \"Where plugins & themes appear when editing\",\n options: {\n detached: \"Detached Window\",\n system: \"System Editor\"\n }\n }\n },\n customcss: {\n name: \"Custom CSS\",\n customcss: {\n name: \"Custom CSS\",\n note: \"Enables the Custom CSS tab\"\n },\n liveUpdate: {\n name: \"Live Update\",\n note: \"Updates the css as you type\"\n },\n startDetached: {\n name: \"Start Detached\",\n note: \"Clicking the Custom CSS tab opens the editor in a separate window\"\n },\n nativeOpen: {\n name: \"Open in Native Editor\",\n note: \"Clicking the Custom CSS tab opens your custom css in your native editor\"\n },\n openAction: {\n name: \"Editor Location\",\n note: \"Where Custom CSS should open by default\",\n options: {\n settings: \"Settings Menu\",\n detached: \"Detached Window\",\n system: \"System Editor\"\n }\n }\n },\n developer: {\n name: \"Developer Settings\",\n debuggerHotkey: {\n name: \"Debugger Hotkey\",\n note: \"Allows activating debugger when pressing F8\"\n },\n copySelector: {\n name: \"Copy Selector\",\n note: \"Adds a \\\"Copy Selector\\\" option to context menus when developer mode is active\"\n },\n reactDevTools: {\n name: \"React Developer Tools\",\n note: \"Injects your local installation of React Developer Tools into Discord\"\n }\n },\n window: {\n name: \"Window Preferences\",\n transparency: {\n name: \"Enable Transparency\",\n note: \"Enables the main window to be see-through (requires restart)\"\n },\n frame: {\n name: \"Window Frame\",\n note: \"Adds the native os window frame to the main window\"\n }\n }\n },\n emotes: {\n name: \"Emotes\",\n general: {\n name: \"General\",\n download: {\n name: \"Download Emotes\",\n note: \"Download emotes whenever they are out of date\"\n },\n emoteMenu: {\n name: \"Emote Menu\",\n note: \"Show Twitch/Favourite emotes in emote menu\"\n },\n hideEmojiMenu: {\n name: \"Hide Emoji Menu\",\n note: \"Hides Discord's emoji menu when using emote menu\"\n },\n autoCaps: {\n name: \"Emote Autocapitalization\",\n note: \"Autocapitalize emote commands\"\n },\n showNames: {\n name: \"Show Names\",\n note: \"Show emote names on hover\"\n },\n modifiers: {\n name: \"Show Emote Modifiers\",\n note: \"Enable emote mods (flip, spin, pulse, spin2, spin3, 1spin, 2spin, 3spin, tr, bl, br, shake, shake2, shake3, flap)\"\n },\n animateOnHover: {\n name: \"Animate On Hover\",\n note: \"Only animate the emote modifiers on hover\"\n }\n },\n categories: {\n name: \"Categories\",\n twitchglobal: {\n name: \"Twitch Globals\",\n note: \"Show Twitch global emotes\"\n },\n twitchsubscriber: {\n name: \"Twitch Subscribers\",\n note: \"Show Twitch subscriber emotes\"\n },\n frankerfacez: {\n name: \"FrankerFaceZ\",\n note: \"Show emotes from FFZ\"\n },\n bttv: {\n name: \"BetterTTV\",\n note: \"Show emotes from BTTV\"\n }\n }\n }\n },\n Addons: {\n title: \"{{name}} v{{version}} by {{author}}\",\n openFolder: \"Open {{type}} Folder\",\n reload: \"Reload\",\n addonSettings: \"Settings\",\n website: \"Website\",\n source: \"Source\",\n invite: \"Support Server\",\n donate: \"Donate\",\n patreon: \"Patreon\",\n name: \"Name\",\n author: \"Author\",\n version: \"Version\",\n added: \"Date Added\",\n modified: \"Date Modified\",\n search: \"Search {{type}}\",\n editAddon: \"Edit\",\n deleteAddon: \"Delete\",\n confirmDelete: \"Are you sure you want to delete {{name}}?\",\n confirmationText: \"You have unsaved changes to {{name}}. Closing this window will lose all those changes.\",\n enabled: \"{{name}} has been enabled.\",\n disabled: \"{{name}} has been disabled.\",\n couldNotEnable: \"{{name}} could not be enabled.\",\n couldNotDisable: \"{{name}} could not be disabled.\",\n couldNotStart: \"{{name}} could not be started.\",\n couldNotStop: \"{{name}} could not be stopped.\",\n methodError: \"{{method}} could not be fired.\",\n unknownAuthor: \"Unknown Author\",\n noDescription: \"Description not provided.\"\n },\n CustomCSS: {\n confirmationText: \"You have unsaved changes to your Custom CSS. Closing this window will lose all those changes.\",\n update: \"Update\",\n save: \"Save\",\n openNative: \"Open in System Editor\",\n openDetached: \"Detach Window\",\n settings: \"Editor Settings\",\n editorTitle: \"Custom CSS Editor\"\n },\n Developer: {\n copySelector: \"Copy Selector\"\n },\n Emotes: {\n loading: \"Loading emotes in the background do not reload.\",\n loaded: \"All emotes successfully loaded.\",\n clearEmotes: \"Clear Emote Data\",\n favoriteAction: \"Favorite!\"\n },\n PublicServers: {\n button: \"public\",\n join: \"Join\",\n joining: \"Joining\",\n joined: \"Joined\",\n loading: \"Loading\",\n loadMore: \"Load More\",\n notConnected: \"Not connected to DiscordServers.com!\",\n search: \"Search\",\n connect: \"Connect\",\n reconnect: \"Reconnect\",\n categories: \"Categories\",\n connection: \"Connected as: {{username}}#{{discriminator}}\",\n results: \"Showing {{start}}-{{end}} of {{total}} results in {{category}}\",\n query: \"for {{query}}\"\n },\n Modals: {\n confirmAction: \"Are You Sure?\",\n okay: \"Okay\",\n cancel: \"Cancel\",\n close: \"Close\",\n name: \"Name\",\n message: \"Message\",\n error: \"Error\",\n addonErrors: \"Addon Errors\",\n restartRequired: \"Restart Required\",\n restartNow: \"Restart Now\",\n restartLater: \"Restart Later\",\n additionalInfo: \"Additional Info\"\n },\n ReactDevTools: {\n notFound: \"Extension Not Found\",\n notFoundDetails: \"Unable to find the React Developer Tools extension on your PC. Please install the extension on your local Chrome installation.\"\n },\n Sorting: {\n sortBy: \"Sort By\",\n order: \"Order\",\n ascending: \"Ascending\",\n descending: \"Descending\"\n },\n Startup: {\n notSupported: \"Not Supported\",\n versionMismatch: \"BandagedBD Injector v{{injector}} is not supported by the latest remote (v{{remote}}).\\n\\nPlease download the latest version from [GitHub](https://github.com/rauenzi/BetterDiscordApp/releases/latest)\",\n incompatibleApp: \"BandagedBD does not work with {{app}}. Please uninstall one of them.\",\n updateNow: \"Update Now\",\n maybeLater: \"Maybe Later\",\n updateAvailable: \"Update Available\",\n updateInfo: \"There is an update available for BandagedBD's Injector ({{version}}).\\n\\nYou can either update and restart now, or later.\",\n updateFailed: \"Could Not Update\",\n manualUpdate: \"Unable to update automatically, please download the installer and reinstall normally.\\n\\n[Download Installer](https://github.com/rauenzi/BetterDiscordApp/releases/latest)\",\n jqueryFailed: \"jQuery Failed To Load\",\n jqueryFailedDetails: \"jQuery could not be loaded, and some plugins may not work properly. Proceed at your own risk.\"\n },\n WindowPrefs: {\n enabledInfo: \"This option requires a transparent theme in order to work properly. On Windows this may break your aero snapping and maximizing.\\n\\nIn order to take effect, Discord needs to be restarted. Do you want to restart now?\",\n disabledInfo: \"In order to take effect, Discord needs to be restarted. Do you want to restart now?\"\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvZGF0YS9zdHJpbmdzLmpzP2JjNzEiXSwibmFtZXMiOlsiUGFuZWxzIiwicGx1Z2lucyIsInRoZW1lcyIsImN1c3RvbWNzcyIsIkNvbGxlY3Rpb25zIiwic2V0dGluZ3MiLCJuYW1lIiwiZ2VuZXJhbCIsImVtb3RlcyIsIm5vdGUiLCJwdWJsaWNTZXJ2ZXJzIiwidm9pY2VEaXNjb25uZWN0IiwidHdlbnR5Rm91ckhvdXIiLCJjbGFzc05vcm1hbGl6ZXIiLCJzaG93VG9hc3RzIiwiYXBwZWFyYW5jZSIsInZvaWNlTW9kZSIsIm1pbmltYWxNb2RlIiwiaGlkZUNoYW5uZWxzIiwiZGFya01vZGUiLCJjb2xvcmVkVGV4dCIsImFkZG9ucyIsImFkZG9uRXJyb3JzIiwiYXV0b1Njcm9sbCIsImF1dG9SZWxvYWQiLCJlZGl0QWN0aW9uIiwib3B0aW9ucyIsImRldGFjaGVkIiwic3lzdGVtIiwibGl2ZVVwZGF0ZSIsInN0YXJ0RGV0YWNoZWQiLCJuYXRpdmVPcGVuIiwib3BlbkFjdGlvbiIsImRldmVsb3BlciIsImRlYnVnZ2VySG90a2V5IiwiY29weVNlbGVjdG9yIiwicmVhY3REZXZUb29scyIsIndpbmRvdyIsInRyYW5zcGFyZW5jeSIsImZyYW1lIiwiZG93bmxvYWQiLCJlbW90ZU1lbnUiLCJoaWRlRW1vamlNZW51IiwiYXV0b0NhcHMiLCJzaG93TmFtZXMiLCJtb2RpZmllcnMiLCJhbmltYXRlT25Ib3ZlciIsImNhdGVnb3JpZXMiLCJ0d2l0Y2hnbG9iYWwiLCJ0d2l0Y2hzdWJzY3JpYmVyIiwiZnJhbmtlcmZhY2V6IiwiYnR0diIsIkFkZG9ucyIsInRpdGxlIiwib3BlbkZvbGRlciIsInJlbG9hZCIsImFkZG9uU2V0dGluZ3MiLCJ3ZWJzaXRlIiwic291cmNlIiwiaW52aXRlIiwiZG9uYXRlIiwicGF0cmVvbiIsImF1dGhvciIsInZlcnNpb24iLCJhZGRlZCIsIm1vZGlmaWVkIiwic2VhcmNoIiwiZWRpdEFkZG9uIiwiZGVsZXRlQWRkb24iLCJjb25maXJtRGVsZXRlIiwiY29uZmlybWF0aW9uVGV4dCIsImVuYWJsZWQiLCJkaXNhYmxlZCIsImNvdWxkTm90RW5hYmxlIiwiY291bGROb3REaXNhYmxlIiwiY291bGROb3RTdGFydCIsImNvdWxkTm90U3RvcCIsIm1ldGhvZEVycm9yIiwidW5rbm93bkF1dGhvciIsIm5vRGVzY3JpcHRpb24iLCJDdXN0b21DU1MiLCJ1cGRhdGUiLCJzYXZlIiwib3Blbk5hdGl2ZSIsIm9wZW5EZXRhY2hlZCIsImVkaXRvclRpdGxlIiwiRGV2ZWxvcGVyIiwiRW1vdGVzIiwibG9hZGluZyIsImxvYWRlZCIsImNsZWFyRW1vdGVzIiwiZmF2b3JpdGVBY3Rpb24iLCJQdWJsaWNTZXJ2ZXJzIiwiYnV0dG9uIiwiam9pbiIsImpvaW5pbmciLCJqb2luZWQiLCJsb2FkTW9yZSIsIm5vdENvbm5lY3RlZCIsImNvbm5lY3QiLCJyZWNvbm5lY3QiLCJjb25uZWN0aW9uIiwicmVzdWx0cyIsInF1ZXJ5IiwiTW9kYWxzIiwiY29uZmlybUFjdGlvbiIsIm9rYXkiLCJjYW5jZWwiLCJjbG9zZSIsIm1lc3NhZ2UiLCJlcnJvciIsInJlc3RhcnRSZXF1aXJlZCIsInJlc3RhcnROb3ciLCJyZXN0YXJ0TGF0ZXIiLCJhZGRpdGlvbmFsSW5mbyIsIlJlYWN0RGV2VG9vbHMiLCJub3RGb3VuZCIsIm5vdEZvdW5kRGV0YWlscyIsIlNvcnRpbmciLCJzb3J0QnkiLCJvcmRlciIsImFzY2VuZGluZyIsImRlc2NlbmRpbmciLCJTdGFydHVwIiwibm90U3VwcG9ydGVkIiwidmVyc2lvbk1pc21hdGNoIiwiaW5jb21wYXRpYmxlQXBwIiwidXBkYXRlTm93IiwibWF5YmVMYXRlciIsInVwZGF0ZUF2YWlsYWJsZSIsInVwZGF0ZUluZm8iLCJ1cGRhdGVGYWlsZWQiLCJtYW51YWxVcGRhdGUiLCJqcXVlcnlGYWlsZWQiLCJqcXVlcnlGYWlsZWREZXRhaWxzIiwiV2luZG93UHJlZnMiLCJlbmFibGVkSW5mbyIsImRpc2FibGVkSW5mbyJd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O0FBR0pDLFVBQU0sRUFBRSxRQUhKO0FBSUpDLFNBQUssRUFBRSxPQUpIO0FBS0p0RyxRQUFJLEVBQUUsTUFMRjtBQU1KdUcsV0FBTyxFQUFFLFNBTkw7QUFPSkMsU0FBSyxFQUFFLE9BUEg7QUFRSnhGLGVBQVcsRUFBRSxjQVJUO0FBU0p5RixtQkFBZSxFQUFFLGtCQVRiO0FBVUpDLGNBQVUsRUFBRSxhQVZSO0FBV0pDLGdCQUFZLEVBQUUsZUFYVjtBQVlKQyxrQkFBYyxFQUFFO0FBWlosR0EvUEc7QUE2UVhDLGVBQWEsRUFBRTtBQUNiQyxZQUFRLEVBQUUscUJBREc7QUFFYkMsbUJBQWUsRUFBRTtBQUZKLEdBN1FKO0FBaVJYQyxTQUFPLEVBQUU7QUFDTEMsVUFBTSxFQUFFLFNBREg7QUFFTEMsU0FBSyxFQUFFLE9BRkY7QUFHTEMsYUFBUyxFQUFFLFdBSE47QUFJTEMsY0FBVSxFQUFFO0FBSlAsR0FqUkU7QUF1UlhDLFNBQU8sRUFBRTtBQUNMQyxnQkFBWSxFQUFFLGVBRFQ7QUFFTEMsbUJBQWUsRUFBRSx5TUFGWjtBQUdMQyxtQkFBZSxFQUFFLHNFQUhaO0FBSUxDLGFBQVMsRUFBRSxZQUpOO0FBS0xDLGNBQVUsRUFBRSxhQUxQO0FBTUxDLG1CQUFlLEVBQUUsa0JBTlo7QUFPTEMsY0FBVSxFQUFFLDJIQVBQO0FBUUxDLGdCQUFZLEVBQUUsa0JBUlQ7QUFTTEMsZ0JBQVksRUFBRSw0S0FUVDtBQVVMQyxnQkFBWSxFQUFFLHVCQVZUO0FBV0xDLHVCQUFtQixFQUFFO0FBWGhCLEdBdlJFO0FBb1NYQyxhQUFXLEVBQUU7QUFDVEMsZUFBVyxFQUFFLHlOQURKO0FBRVRDLGdCQUFZLEVBQUU7QUFGTDtBQXBTRixDQUFmIiwiZmlsZSI6Ii4vc3JjL2RhdGEvc3RyaW5ncy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IHtcclxuICAgIFBhbmVsczoge1xyXG4gICAgICAgIHBsdWdpbnM6IFwiUGx1Z2luc1wiLFxyXG4gICAgICAgIHRoZW1lczogXCJUaGVtZXNcIixcclxuICAgICAgICBjdXN0b21jc3M6IFwiQ3VzdG9tIENTU1wiXHJcbiAgICB9LFxyXG4gICAgQ29sbGVjdGlvbnM6IHtcclxuICAgICAgICBzZXR0aW5nczoge1xyXG4gICAgICAgICAgICBuYW1lOiBcIlNldHRpbmdzXCIsXHJcbiAgICAgICAgICAgIGdlbmVyYWw6IHtcclxuICAgICAgICAgICAgICAgIG5hbWU6IFwiR2VuZXJhbFwiLFxyXG4gICAgICAgICAgICAgICAgZW1vdGVzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJFbW90ZSBTeXN0ZW1cIixcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkVuYWJsZXMgQkQncyBlbW90ZSBzeXN0ZW1cIlxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHB1YmxpY1NlcnZlcnM6IHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIlB1YmxpYyBTZXJ2ZXJzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJEaXNwbGF5IHB1YmxpYyBzZXJ2ZXJzIGJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgdm9pY2VEaXNjb25uZWN0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJWb2ljZSBEaXNjb25uZWN0XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJEaXNjb25uZWN0IGZyb20gdm9pY2Ugc2VydmVyIHdoZW4gY2xvc2luZyBEaXNjb3JkXCJcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB0d2VudHlGb3VySG91cjoge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiMjQtSG91ciBUaW1lc3RhbXBzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJIaWRlcyBjaGFubmVscyB3aGVuIGluIG1pbmltYWwgbW9kZVwiXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgY2xhc3NOb3JtYWxpemVyOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJOb3JtYWxpemUgQ2xhc3Nlc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiQWRkcyBzdGFibGUgY2xhc3NlcyB0byBlbGVtZW50cyB0byBoZWxwIHRoZW1lcy4gKGUuZy4gYWRkcyAuZGEtY2hhbm5lbHMgdG8gLmNoYW5uZWxzLUllMmw2QSlcIlxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHNob3dUb2FzdHM6IHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIlNob3cgVG9hc3RzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJTaG93cyBhIHNtYWxsIG5vdGlmaWNhdGlvbiBmb3IgaW1wb3J0YW50IGluZm9ybWF0aW9uXCJcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgYXBwZWFyYW5jZToge1xyXG4gICAgICAgICAgICAgICAgbmFtZTogXCJBcHBlYXJhbmNlXCIsXHJcbiAgICAgICAgICAgICAgICB2b2ljZU1vZGU6IHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIlZvaWNlIE1vZGVcIixcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkhpZGVzIGV2ZXJ5dGhpbmcgdGhhdCBpc24ndCB2b2ljZSBjaGF0XCJcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBtaW5pbWFsTW9kZToge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiTWluaW1hbCBNb2RlXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJIaWRlIGVsZW1lbnRzIGFuZCByZWR1Y2UgdGhlIHNpemUgb2YgZWxlbWVudHNcIlxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGhpZGVDaGFubmVsczoge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiSGlkZSBDaGFubmVsc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiSGlkZXMgY2hhbm5lbHMgd2hlbiBpbiBtaW5pbWFsIG1vZGVcIlxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGRhcmtNb2RlOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJEYXJrIE1vZGVcIixcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBcIk1ha2UgY2VydGFpbiBlbGVtZW50cyBkYXJrIGJ5IGRlZmF1bHRcIlxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGNvbG9yZWRUZXh0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJDb2xvcmVkIFRleHRcIixcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBcIk1ha2UgdGV4dCBjb2xvdXIgdGhlIHNhbWUgYXMgcm9sZSBjb2xvclwiXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGFkZG9uczoge1xyXG4gICAgICAgICAgICAgICAgbmFtZTogXCJBZGRvbiBNYW5hZ2VyXCIsXHJcbiAgICAgICAgICAgICAgICBhZGRvbkVycm9yczoge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiU2hvdyBBZGRvbiBFcnJvcnNcIixcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBcIlNob3dzIGEgbW9kYWwgd2l0aCBwbHVnaW4vdGhlbWUgZXJyb3JzXCJcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBhdXRvU2Nyb2xsOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJTY3JvbGwgVG8gU2V0dGluZ3NcIixcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkF1dG8tc2Nyb2xscyB0byBhIHBsdWdpbidzIHNldHRpbmdzIHdoZW4gdGhlIGJ1dHRvbiBpcyBjbGlja2VkIChvbmx5IGlmIG91dCBvZiB2aWV3KVwiXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgYXV0b1JlbG9hZDoge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiQXV0b21hdGljIExvYWRpbmdcIixcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkF1dG9tYXRpY2FsbHkgbG9hZHMsIHJlbG9hZHMsIGFuZCB1bmxvYWRzIHBsdWdpbnMgYW5kIHRoZW1lc1wiXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgZWRpdEFjdGlvbjoge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiRWRpdCBBY3Rpb25cIixcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBcIldoZXJlIHBsdWdpbnMgJiB0aGVtZXMgYXBwZWFyIHdoZW4gZWRpdGluZ1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWNoZWQ6IFwiRGV0YWNoZWQgV2luZG93XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN5c3RlbTogXCJTeXN0ZW0gRWRpdG9yXCJcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGN1c3RvbWNzczoge1xyXG4gICAgICAgICAgICAgICAgbmFtZTogXCJDdXN0b20gQ1NTXCIsXHJcbiAgICAgICAgICAgICAgICBjdXN0b21jc3M6IHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIkN1c3RvbSBDU1NcIixcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkVuYWJsZXMgdGhlIEN1c3RvbSBDU1MgdGFiXCJcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBsaXZlVXBkYXRlOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJMaXZlIFVwZGF0ZVwiLFxyXG4gICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiVXBkYXRlcyB0aGUgY3NzIGFzIHlvdSB0eXBlXCJcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBzdGFydERldGFjaGVkOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJTdGFydCBEZXRhY2hlZFwiLFxyXG4gICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiQ2xpY2tpbmcgdGhlIEN1c3RvbSBDU1MgdGFiIG9wZW5zIHRoZSBlZGl0b3IgaW4gYSBzZXBhcmF0ZSB3aW5kb3dcIixcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBuYXRpdmVPcGVuOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJPcGVuIGluIE5hdGl2ZSBFZGl0b3JcIixcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkNsaWNraW5nIHRoZSBDdXN0b20gQ1NTIHRhYiBvcGVucyB5b3VyIGN1c3RvbSBjc3MgaW4geW91ciBuYXRpdmUgZWRpdG9yXCJcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBvcGVuQWN0aW9uOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJFZGl0b3IgTG9jYXRpb25cIixcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBcIldoZXJlIEN1c3RvbSBDU1Mgc2hvdWxkIG9wZW4gYnkgZGVmYXVsdFwiLFxyXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3M6IFwiU2V0dGluZ3MgTWVudVwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXRhY2hlZDogXCJEZXRhY2hlZCBXaW5kb3dcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3lzdGVtOiBcIlN5c3RlbSBFZGl0b3JcIlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZGV2ZWxvcGVyOiB7XHJcbiAgICAgICAgICAgICAgICBuYW1lOiBcIkRldmVsb3BlciBTZXR0aW5nc1wiLFxyXG4gICAgICAgICAgICAgICAgZGVidWdnZXJIb3RrZXk6IHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIkRlYnVnZ2VyIEhvdGtleVwiLFxyXG4gICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiQWxsb3dzIGFjdGl2YXRpbmcgZGVidWdnZXIgd2hlbiBwcmVzc2luZyBGOFwiXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgY29weVNlbGVjdG9yOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJDb3B5IFNlbGVjdG9yXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJBZGRzIGEgXFxcIkNvcHkgU2VsZWN0b3JcXFwiIG9wdGlvbiB0byBjb250ZXh0IG1lbnVzIHdoZW4gZGV2ZWxvcGVyIG1vZGUgaXMgYWN0aXZlXCJcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICByZWFjdERldlRvb2xzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJSZWFjdCBEZXZlbG9wZXIgVG9vbHNcIixcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkluamVjdHMgeW91ciBsb2NhbCBpbnN0YWxsYXRpb24gb2YgUmVhY3QgRGV2ZWxvcGVyIFRvb2xzIGludG8gRGlzY29yZFwiXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHdpbmRvdzoge1xyXG4gICAgICAgICAgICAgICAgbmFtZTogXCJXaW5kb3cgUHJlZmVyZW5jZXNcIixcclxuICAgICAgICAgICAgICAgIHRyYW5zcGFyZW5jeToge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiRW5hYmxlIFRyYW5zcGFyZW5jeVwiLFxyXG4gICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiRW5hYmxlcyB0aGUgbWFpbiB3aW5kb3cgdG8gYmUgc2VlLXRocm91Z2ggKHJlcXVpcmVzIHJlc3RhcnQpXCJcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBmcmFtZToge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiV2luZG93IEZyYW1lXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJBZGRzIHRoZSBuYXRpdmUgb3Mgd2luZG93IGZyYW1lIHRvIHRoZSBtYWluIHdpbmRvd1wiXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVtb3Rlczoge1xyXG4gICAgICAgICAgICBuYW1lOiBcIkVtb3Rlc1wiLFxyXG4gICAgICAgICAgICBnZW5lcmFsOiB7XHJcbiAgICAgICAgICAgICAgICBuYW1lOiBcIkdlbmVyYWxcIixcclxuICAgICAgICAgICAgICAgIGRvd25sb2FkOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJEb3dubG9hZCBFbW90ZXNcIixcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkRvd25sb2FkIGVtb3RlcyB3aGVuZXZlciB0aGV5IGFyZSBvdXQgb2YgZGF0ZVwiXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgZW1vdGVNZW51OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJFbW90ZSBNZW51XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJTaG93IFR3aXRjaC9GYXZvdXJpdGUgZW1vdGVzIGluIGVtb3RlIG1lbnVcIlxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGhpZGVFbW9qaU1lbnU6IHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIkhpZGUgRW1vamkgTWVudVwiLFxyXG4gICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiSGlkZXMgRGlzY29yZCdzIGVtb2ppIG1lbnUgd2hlbiB1c2luZyBlbW90ZSBtZW51XCJcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBhdXRvQ2Fwczoge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiRW1vdGUgQXV0b2NhcGl0YWxpemF0aW9uXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJBdXRvY2FwaXRhbGl6ZSBlbW90ZSBjb21tYW5kc1wiXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgc2hvd05hbWVzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJTaG93IE5hbWVzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJTaG93IGVtb3RlIG5hbWVzIG9uIGhvdmVyXCJcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBtb2RpZmllcnM6IHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIlNob3cgRW1vdGUgTW9kaWZpZXJzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJFbmFibGUgZW1vdGUgbW9kcyAoZmxpcCwgc3BpbiwgcHVsc2UsIHNwaW4yLCBzcGluMywgMXNwaW4sIDJzcGluLCAzc3BpbiwgdHIsIGJsLCBiciwgc2hha2UsIHNoYWtlMiwgc2hha2UzLCBmbGFwKVwiXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgYW5pbWF0ZU9uSG92ZXI6IHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIkFuaW1hdGUgT24gSG92ZXJcIixcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBcIk9ubHkgYW5pbWF0ZSB0aGUgZW1vdGUgbW9kaWZpZXJzIG9uIGhvdmVyXCJcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgY2F0ZWdvcmllczoge1xyXG4gICAgICAgICAgICAgICAgbmFtZTogXCJDYXRlZ29yaWVzXCIsXHJcbiAgICAgICAgICAgICAgICB0d2l0Y2hnbG9iYWw6IHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIlR3aXRjaCBHbG9iYWxzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJTaG93IFR3aXRjaCBnbG9iYWwgZW1vdGVzXCJcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB0d2l0Y2hzdWJzY3JpYmVyOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJUd2l0Y2ggU3Vic2NyaWJlcnNcIixcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBcIlNob3cgVHdpdGNoIHN1YnNjcmliZXIgZW1vdGVzXCJcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBmcmFua2VyZmFjZXo6IHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIkZyYW5rZXJGYWNlWlwiLFxyXG4gICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiU2hvdyBlbW90ZXMgZnJvbSBGRlpcIlxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGJ0dHY6IHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIkJldHRlclRUVlwiLFxyXG4gICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiU2hvdyBlbW90ZXMgZnJvbSBCVFRWXCJcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH0sXHJcbiAgICBBZGRvbnM6IHtcclxuICAgICAgICB0aXRsZTogXCJ7e25hbWV9fSB2e3t2ZXJzaW9ufX0gYnkge3thdXRob3J9fVwiLFxyXG4gICAgICAgIG9wZW5Gb2xkZXI6IFwiT3BlbiB7e3R5cGV9fSBGb2xkZXJcIixcclxuICAgICAgICByZWxvYWQ6IFwiUmVsb2FkXCIsXHJcbiAgICAgICAgYWRkb25TZXR0aW5nczogXCJTZXR0aW5nc1wiLFxyXG4gICAgICAgIHdlYnNpdGU6IFwiV2Vic2l0ZVwiLFxyXG4gICAgICAgIHNvdXJjZTogXCJTb3VyY2VcIixcclxuICAgICAgICBpbnZpdGU6IFwiU3VwcG9ydCBTZXJ2ZXJcIixcclxuICAgICAgICBkb25hdGU6IFwiRG9uYXRlXCIsXHJcbiAgICAgICAgcGF0cmVvbjogXCJQYXRyZW9uXCIsXHJcbiAgICAgICAgbmFtZTogXCJOYW1lXCIsXHJcbiAgICAgICAgYXV0aG9yOiBcIkF1dGhvclwiLFxyXG4gICAgICAgIHZlcnNpb246IFwiVmVyc2lvblwiLFxyXG4gICAgICAgIGFkZGVkOiBcIkRhdGUgQWRkZWRcIixcclxuICAgICAgICBtb2RpZmllZDogXCJEYXRlIE1vZGlmaWVkXCIsXHJcbiAgICAgICAgc2VhcmNoOiBcIlNlYXJjaCB7e3R5cGV9fVwiLFxyXG4gICAgICAgIGVkaXRBZGRvbjogXCJFZGl0XCIsXHJcbiAgICAgICAgZGVsZXRlQWRkb246IFwiRGVsZXRlXCIsXHJcbiAgICAgICAgY29uZmlybURlbGV0ZTogXCJBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIHt7bmFtZX19P1wiLFxyXG4gICAgICAgIGNvbmZpcm1hdGlvblRleHQ6IFwiWW91IGhhdmUgdW5zYXZlZCBjaGFuZ2VzIHRvIHt7bmFtZX19LiBDbG9zaW5nIHRoaXMgd2luZG93IHdpbGwgbG9zZSBhbGwgdGhvc2UgY2hhbmdlcy5cIixcclxuICAgICAgICBlbmFibGVkOiBcInt7bmFtZX19IGhhcyBiZWVuIGVuYWJsZWQuXCIsXHJcbiAgICAgICAgZGlzYWJsZWQ6IFwie3tuYW1lfX0gaGFzIGJlZW4gZGlzYWJsZWQuXCIsXHJcbiAgICAgICAgY291bGROb3RFbmFibGU6IFwie3tuYW1lfX0gY291bGQgbm90IGJlIGVuYWJsZWQuXCIsXHJcbiAgICAgICAgY291bGROb3REaXNhYmxlOiBcInt7bmFtZX19IGNvdWxkIG5vdCBiZSBkaXNhYmxlZC5cIixcclxuICAgICAgICBjb3VsZE5vdFN0YXJ0OiBcInt7bmFtZX19IGNvdWxkIG5vdCBiZSBzdGFydGVkLlwiLFxyXG4gICAgICAgIGNvdWxkTm90U3RvcDogXCJ7e25hbWV9fSBjb3VsZCBub3QgYmUgc3RvcHBlZC5cIixcclxuICAgICAgICBtZXRob2RFcnJvcjogXCJ7e21ldGhvZH19IGNvdWxkIG5vdCBiZSBmaXJlZC5cIixcclxuICAgICAgICB1bmtub3duQXV0aG9yOiBcIlVua25vd24gQXV0aG9yXCIsXHJcbiAgICAgICAgbm9EZXNjcmlwdGlvbjogXCJEZXNjcmlwdGlvbiBub3QgcHJvdmlkZWQuXCJcclxuICAgIH0sXHJcbiAgICBDdXN0b21DU1M6IHtcclxuICAgICAgICBjb25maXJtYXRpb25UZXh0OiBcIllvdSBoYXZlIHVuc2F2ZWQgY2hhbmdlcyB0byB5b3VyIEN1c3RvbSBDU1MuIENsb3NpbmcgdGhpcyB3aW5kb3cgd2lsbCBsb3NlIGFsbCB0aG9zZSBjaGFuZ2VzLlwiLFxyXG4gICAgICAgIHVwZGF0ZTogXCJVcGRhdGVcIixcclxuICAgICAgICBzYXZlOiBcIlNhdmVcIixcclxuICAgICAgICBvcGVuTmF0aXZlOiBcIk9wZW4gaW4gU3lzdGVtIEVkaXRvclwiLFxyXG4gICAgICAgIG9wZW5EZXRhY2hlZDogXCJEZXRhY2ggV2luZG93XCIsXHJcbiAgICAgICAgc2V0dGluZ3M6IFwiRWRpdG9yIFNldHRpbmdzXCIsXHJcbiAgICAgICAgZWRpdG9yVGl0bGU6IFwiQ3VzdG9tIENTUyBFZGl0b3JcIlxyXG4gICAgfSxcclxuICAgIERldmVsb3Blcjoge1xyXG4gICAgICAgIGNvcHlTZWxlY3RvcjogXCJDb3B5IFNlbGVjdG9yXCJcclxuICAgIH0sXHJcbiAgICBFbW90ZXM6IHtcclxuICAgICAgICBsb2FkaW5nOiBcIkxvYWRpbmcgZW1vdGVzIGluIHRoZSBiYWNrZ3JvdW5kIGRvIG5vdCByZWxvYWQuXCIsXHJcbiAgICAgICAgbG9hZGVkOiBcIkFsbCBlbW90ZXMgc3VjY2Vzc2Z1bGx5IGxvYWRlZC5cIixcclxuICAgICAgICBjbGVhckVtb3RlczogXCJDbGVhciBFbW90ZSBEYXRhXCIsXHJcbiAgICAgICAgZmF2b3JpdGVBY3Rpb246IFwiRmF2b3JpdGUhXCJcclxuICAgIH0sXHJcbiAgICBQdWJsaWNTZXJ2ZXJzOiB7XHJcbiAgICAgICAgYnV0dG9uOiBcInB1YmxpY1wiLFxyXG4gICAgICAgIGpvaW46IFwiSm9pblwiLFxyXG4gICAgICAgIGpvaW5pbmc6IFwiSm9pbmluZ1wiLFxyXG4gICAgICAgIGpvaW5lZDogXCJKb2luZWRcIixcclxuICAgICAgICBsb2FkaW5nOiBcIkxvYWRpbmdcIixcclxuICAgICAgICBsb2FkTW9yZTogXCJMb2FkIE1vcmVcIixcclxuICAgICAgICBub3RDb25uZWN0ZWQ6IFwiTm90IGNvbm5lY3RlZCB0byBEaXNjb3JkU2VydmVycy5jb20hXCIsXHJcbiAgICAgICAgc2VhcmNoOiBcIlNlYXJjaFwiLFxyXG4gICAgICAgIGNvbm5lY3Q6IFwiQ29ubmVjdFwiLFxyXG4gICAgICAgIHJlY29ubmVjdDogXCJSZWNvbm5lY3RcIixcclxuICAgICAgICBjYXRlZ29yaWVzOiBcIkNhdGVnb3JpZXNcIixcclxuICAgICAgICBjb25uZWN0aW9uOiBcIkNvbm5lY3RlZCBhczoge3t1c2VybmFtZX19I3t7ZGlzY3JpbWluYXRvcn19XCIsXHJcbiAgICAgICAgcmVzdWx0czogXCJTaG93aW5nIHt7c3RhcnR9fS17e2VuZH19IG9mIHt7dG90YWx9fSByZXN1bHRzIGluIHt7Y2F0ZWdvcnl9fVwiLFxyXG4gICAgICAgIHF1ZXJ5OiBcImZvciB7e3F1ZXJ5fX1cIlxyXG4gICAgfSxcclxuICAgIE1vZGFsczoge1xyXG4gICAgICAgIGNvbmZpcm1BY3Rpb246IFwiQXJlIFlvdSBTdXJlP1wiLFxyXG4gICAgICAgIG9rYXk6IFwiT2theVwiLFxyXG4gICAgICAgIGNhbmNlbDogXCJDYW5jZWxcIixcclxuICAgICAgICBjbG9zZTogXCJDbG9zZVwiLFxyXG4gICAgICAgIG5hbWU6IFwiTmFtZVwiLFxyXG4gICAgICAgIG1lc3NhZ2U6IFwiTWVzc2FnZVwiLFxyXG4gICAgICAgIGVycm9yOiBcIkVycm9yXCIsXHJcbiAgICAgICAgYWRkb25FcnJvcnM6IFwiQWRkb24gRXJyb3JzXCIsXHJcbiAgICAgICAgcmVzdGFydFJlcXVpcmVkOiBcIlJlc3RhcnQgUmVxdWlyZWRcIixcclxuICAgICAgICByZXN0YXJ0Tm93OiBcIlJlc3RhcnQgTm93XCIsXHJcbiAgICAgICAgcmVzdGFydExhdGVyOiBcIlJlc3RhcnQgTGF0ZXJcIixcclxuICAgICAgICBhZGRpdGlvbmFsSW5mbzogXCJBZGRpdGlvbmFsIEluZm9cIlxyXG4gICAgfSxcclxuICAgIFJlYWN0RGV2VG9vbHM6IHtcclxuICAgICAgbm90Rm91bmQ6IFwiRXh0ZW5zaW9uIE5vdCBGb3VuZFwiLFxyXG4gICAgICBub3RGb3VuZERldGFpbHM6IFwiVW5hYmxlIHRvIGZpbmQgdGhlIFJlYWN0IERldmVsb3BlciBUb29scyBleHRlbnNpb24gb24geW91ciBQQy4gUGxlYXNlIGluc3RhbGwgdGhlIGV4dGVuc2lvbiBvbiB5b3VyIGxvY2FsIENocm9tZSBpbnN0YWxsYXRpb24uXCIgIFxyXG4gICAgfSxcclxuICAgIFNvcnRpbmc6IHtcclxuICAgICAgICBzb3J0Qnk6IFwiU29ydCBCeVwiLFxyXG4gICAgICAgIG9yZGVyOiBcIk9yZGVyXCIsXHJcbiAgICAgICAgYXNjZW5kaW5nOiBcIkFzY2VuZGluZ1wiLFxyXG4gICAgICAgIGRlc2NlbmRpbmc6IFwiRGVzY2VuZGluZ1wiXHJcbiAgICB9LFxyXG4gICAgU3RhcnR1cDoge1xyXG4gICAgICAgIG5vdFN1cHBvcnRlZDogXCJOb3QgU3VwcG9ydGVkXCIsXHJcbiAgICAgICAgdmVyc2lvbk1pc21hdGNoOiBcIkJhbmRhZ2VkQkQgSW5qZWN0b3Igdnt7aW5qZWN0b3J9fSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBsYXRlc3QgcmVtb3RlICh2e3tyZW1vdGV9fSkuXFxuXFxuUGxlYXNlIGRvd25sb2FkIHRoZSBsYXRlc3QgdmVyc2lvbiBmcm9tIFtHaXRIdWJdKGh0dHBzOi8vZ2l0aHViLmNvbS9yYXVlbnppL0JldHRlckRpc2NvcmRBcHAvcmVsZWFzZXMvbGF0ZXN0KVwiLFxyXG4gICAgICAgIGluY29tcGF0aWJsZUFwcDogXCJCYW5kYWdlZEJEIGRvZXMgbm90IHdvcmsgd2l0aCB7e2FwcH19LiBQbGVhc2UgdW5pbnN0YWxsIG9uZSBvZiB0aGVtLlwiLFxyXG4gICAgICAgIHVwZGF0ZU5vdzogXCJVcGRhdGUgTm93XCIsXHJcbiAgICAgICAgbWF5YmVMYXRlcjogXCJNYXliZSBMYXRlclwiLFxyXG4gICAgICAgIHVwZGF0ZUF2YWlsYWJsZTogXCJVcGRhdGUgQXZhaWxhYmxlXCIsXHJcbiAgICAgICAgdXBkYXRlSW5mbzogXCJUaGVyZSBpcyBhbiB1cGRhdGUgYXZhaWxhYmxlIGZvciBCYW5kYWdlZEJEJ3MgSW5qZWN0b3IgKHt7dmVyc2lvbn19KS5cXG5cXG5Zb3UgY2FuIGVpdGhlciB1cGRhdGUgYW5kIHJlc3RhcnQgbm93LCBvciBsYXRlci5cIixcclxuICAgICAgICB1cGRhdGVGYWlsZWQ6IFwiQ291bGQgTm90IFVwZGF0ZVwiLFxyXG4gICAgICAgIG1hbnVhbFVwZGF0ZTogXCJVbmFibGUgdG8gdXBkYXRlIGF1dG9tYXRpY2FsbHksIHBsZWFzZSBkb3dubG9hZCB0aGUgaW5zdGFsbGVyIGFuZCByZWluc3RhbGwgbm9ybWFsbHkuXFxuXFxuW0Rvd25sb2FkIEluc3RhbGxlcl0oaHR0cHM6Ly9naXRodWIuY29tL3JhdWVuemkvQmV0dGVyRGlzY29yZEFwcC9yZWxlYXNlcy9sYXRlc3QpXCIsXHJcbiAgICAgICAganF1ZXJ5RmFpbGVkOiBcImpRdWVyeSBGYWlsZWQgVG8gTG9hZFwiLFxyXG4gICAgICAgIGpxdWVyeUZhaWxlZERldGFpbHM6IFwialF1ZXJ5IGNvdWxkIG5vdCBiZSBsb2FkZWQsIGFuZCBzb21lIHBsdWdpbnMgbWF5IG5vdCB3b3JrIHByb3Blcmx5LiBQcm9jZWVkIGF0IHlvdXIgb3duIHJpc2suXCJcclxuICAgIH0sXHJcbiAgICBXaW5kb3dQcmVmczoge1xyXG4gICAgICAgIGVuYWJsZWRJbmZvOiBcIlRoaXMgb3B0aW9uIHJlcXVpcmVzIGEgdHJhbnNwYXJlbnQgdGhlbWUgaW4gb3JkZXIgdG8gd29yayBwcm9wZXJseS4gT24gV2luZG93cyB0aGlzIG1heSBicmVhayB5b3VyIGFlcm8gc25hcHBpbmcgYW5kIG1heGltaXppbmcuXFxuXFxuSW4gb3JkZXIgdG8gdGFrZSBlZmZlY3QsIERpc2NvcmQgbmVlZHMgdG8gYmUgcmVzdGFydGVkLiBEbyB5b3Ugd2FudCB0byByZXN0YXJ0IG5vdz9cIixcclxuICAgICAgICBkaXNhYmxlZEluZm86IFwiSW4gb3JkZXIgdG8gdGFrZSBlZmZlY3QsIERpc2NvcmQgbmVlZHMgdG8gYmUgcmVzdGFydGVkLiBEbyB5b3Ugd2FudCB0byByZXN0YXJ0IG5vdz9cIlxyXG4gICAgfVxyXG59O1xyXG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/data/strings.js\n"); /***/ }), @@ -359,7 +358,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _secure__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./secure */ \"./src/secure.js\");\n/* harmony import */ var _moduleloader__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./moduleloader */ \"./src/moduleloader.js\");\n/* harmony import */ var _modules_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./modules/core */ \"./src/modules/core.js\");\n/* harmony import */ var _modules_pluginapi__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./modules/pluginapi */ \"./src/modules/pluginapi.js\");\n/* harmony import */ var _loadingicon__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./loadingicon */ \"./src/loadingicon.js\");\n\n\n\n\n // Perform some setup\n\nObject(_secure__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\nObject(_moduleloader__WEBPACK_IMPORTED_MODULE_1__[\"default\"])();\nwindow.BdApi = _modules_pluginapi__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; // Add loading icon at the bottom right\n\n_loadingicon__WEBPACK_IMPORTED_MODULE_4__[\"default\"].show();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL2luZGV4LmpzP2I2MzUiXSwibmFtZXMiOlsic2VjdXJlIiwicGF0Y2hNb2R1bGVMb2FkIiwid2luZG93IiwiQmRBcGkiLCJMb2FkaW5nSWNvbiIsInNob3ciXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0NBR0E7O0FBQ0FBLHVEQUFNO0FBQ05DLDZEQUFlO0FBQ2ZDLE1BQU0sQ0FBQ0MsS0FBUCxHQUFlQSwwREFBZixDLENBRUE7O0FBQ0FDLG9EQUFXLENBQUNDLElBQVoiLCJmaWxlIjoiLi9zcmMvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgc2VjdXJlIGZyb20gXCIuL3NlY3VyZVwiO1xyXG5pbXBvcnQgcGF0Y2hNb2R1bGVMb2FkIGZyb20gXCIuL21vZHVsZWxvYWRlclwiO1xyXG5pbXBvcnQgQ29yZSBmcm9tIFwiLi9tb2R1bGVzL2NvcmVcIjtcclxuaW1wb3J0IEJkQXBpIGZyb20gXCIuL21vZHVsZXMvcGx1Z2luYXBpXCI7XHJcbmltcG9ydCBMb2FkaW5nSWNvbiBmcm9tIFwiLi9sb2FkaW5naWNvblwiO1xyXG5cclxuLy8gUGVyZm9ybSBzb21lIHNldHVwXHJcbnNlY3VyZSgpO1xyXG5wYXRjaE1vZHVsZUxvYWQoKTtcclxud2luZG93LkJkQXBpID0gQmRBcGk7XHJcblxyXG4vLyBBZGQgbG9hZGluZyBpY29uIGF0IHRoZSBib3R0b20gcmlnaHRcclxuTG9hZGluZ0ljb24uc2hvdygpOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/index.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _secure__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./secure */ \"./src/secure.js\");\n/* harmony import */ var _moduleloader__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./moduleloader */ \"./src/moduleloader.js\");\n/* harmony import */ var _loadingicon__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./loadingicon */ \"./src/loadingicon.js\");\n/* harmony import */ var _modules_core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./modules/core */ \"./src/modules/core.js\");\n/* harmony import */ var _modules_pluginapi__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./modules/pluginapi */ \"./src/modules/pluginapi.js\");\n\n\n\n\n // Perform some setup\n\nObject(_secure__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\nObject(_moduleloader__WEBPACK_IMPORTED_MODULE_1__[\"default\"])();\nwindow.BdApi = _modules_pluginapi__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; // Add loading icon at the bottom right\n\n_loadingicon__WEBPACK_IMPORTED_MODULE_2__[\"default\"].show();\nnew _modules_core__WEBPACK_IMPORTED_MODULE_3__[\"default\"]();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvaW5kZXguanM/YjYzNSJdLCJuYW1lcyI6WyJzZWN1cmUiLCJwYXRjaE1vZHVsZUxvYWQiLCJ3aW5kb3ciLCJCZEFwaSIsIkxvYWRpbmdJY29uIiwic2hvdyIsIkJldHRlckRpc2NvcmQiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0NBR0E7O0FBQ0FBLHVEQUFNO0FBQ05DLDZEQUFlO0FBQ2ZDLE1BQU0sQ0FBQ0MsS0FBUCxHQUFlQSwwREFBZixDLENBRUE7O0FBQ0FDLG9EQUFXLENBQUNDLElBQVo7QUFDQSxJQUFJQyxxREFBSiIsImZpbGUiOiIuL3NyYy9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBzZWN1cmUgZnJvbSBcIi4vc2VjdXJlXCI7XHJcbmltcG9ydCBwYXRjaE1vZHVsZUxvYWQgZnJvbSBcIi4vbW9kdWxlbG9hZGVyXCI7XHJcbmltcG9ydCBMb2FkaW5nSWNvbiBmcm9tIFwiLi9sb2FkaW5naWNvblwiO1xyXG5pbXBvcnQgQmV0dGVyRGlzY29yZCBmcm9tIFwiLi9tb2R1bGVzL2NvcmVcIjtcclxuaW1wb3J0IEJkQXBpIGZyb20gXCIuL21vZHVsZXMvcGx1Z2luYXBpXCI7XHJcblxyXG4vLyBQZXJmb3JtIHNvbWUgc2V0dXBcclxuc2VjdXJlKCk7XHJcbnBhdGNoTW9kdWxlTG9hZCgpO1xyXG53aW5kb3cuQmRBcGkgPSBCZEFwaTtcclxuXHJcbi8vIEFkZCBsb2FkaW5nIGljb24gYXQgdGhlIGJvdHRvbSByaWdodFxyXG5Mb2FkaW5nSWNvbi5zaG93KCk7XHJcbm5ldyBCZXR0ZXJEaXNjb3JkKCk7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/index.js\n"); /***/ }), @@ -371,7 +370,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _sec /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\nconst css = `/* BEGIN V2 LOADER */\n/* =============== */\n\n#bd-loading-icon {\n background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+IDwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyBoZWlnaHQ9IjEwMCUiIHN0eWxlPSJmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWw6c3BhY2U9InByZXNlcnZlIiB3aWR0aD0iMTAwJSIgdmVyc2lvbj0iMS4xIiB2aWV3Qm94PSIwIDAgMjAwMCAyMDAwIj4gICAgPG1ldGFkYXRhIC8+ICAgIDxkZWZzPiAgICAgICAgPGZpbHRlciBpZD0ic2hhZG93MSI+ICAgICAgICA8ZmVEcm9wU2hhZG93IGR4PSIyMCIgZHk9IjAiIHN0ZERldmlhdGlvbj0iMjAiIGZsb29kLWNvbG9yPSJyZ2JhKDAsMCwwLDAuMzUpIi8+ICAgICAgICA8L2ZpbHRlcj4gICAgICAgIDxmaWx0ZXIgaWQ9InNoYWRvdzIiPiAgICAgICAgPGZlRHJvcFNoYWRvdyBkeD0iMTUiIGR5PSIwIiBzdGREZXZpYXRpb249IjIwIiBmbG9vZC1jb2xvcj0icmdiYSgyNTUsMjU1LDI1NSwwLjE1KSIvPiAgICAgICAgPC9maWx0ZXI+ICAgICAgICA8ZmlsdGVyIGlkPSJzaGFkb3czIj4gICAgICAgIDxmZURyb3BTaGFkb3cgZHg9IjEwIiBkeT0iMCIgc3RkRGV2aWF0aW9uPSIyMCIgZmxvb2QtY29sb3I9InJnYmEoMCwwLDAsMC4zNSkiLz4gICAgICAgIDwvZmlsdGVyPiAgICA8L2RlZnM+ICAgIDxnPiAgICAgICAgPHBhdGggc3R5bGU9ImZpbHRlcjogdXJsKCNzaGFkb3czKSIgZD0iTTExOTUuNDQrMTM1LjQ0MkwxMTk1LjQ0KzEzNS40NDJMOTk3LjYrMTM2LjQ0MkMxMDI0LjIrMTQ5Ljc0MisxMTcwLjM0KzE2My41NDIrMTE5My42NCsxNzkuNzQyQzEyNjQuMzQrMjI4Ljg0MisxMzE5Ljc0KzI5MS4yNDIrMTM1OC4yNCszNjUuMDQyQzEzOTguMTQrNDQxLjY0MisxNDE5Ljc0KzUzMC42NDIrMTQyMi41NCs2MjkuNjQyTDE0MjIuNTQrNjMwLjg0MkwxNDIyLjU0KzYzMi4wNDJDMTQyMi41NCs3NzMuMTQyKzE0MjIuNTQrMTIyOC4xNCsxNDIyLjU0KzEzNjkuMTRMMTQyMi41NCsxMzcwLjM0TDE0MjIuNTQrMTM3MS41NEMxNDE5Ljg0KzE0NzAuNTQrMTM5OC4yNCsxNTU5LjU0KzEzNTguMjQrMTYzNi4xNEMxMzE5Ljc0KzE3MDkuOTQrMTI2NC40NCsxNzcyLjM0KzExOTMuNjQrMTgyMS40NEMxMTcxLjA0KzE4MzcuMTQrMTAyNS43KzE4NTAuNTQrMTAwMCsxODYzLjU0TDExOTMuNTQrMTg2NC41NEMxNTM5Ljc0KzE4NjYuNDQrMTg2NC41NCsxNjkzLjM0KzE4NjQuNTQrMTI5Ni42NEwxODY0LjU0KzcxNi45NDJDMTg2Ni40NCszMTIuNDQyKzE1NDEuNjQrMTM1LjQ0MisxMTk1LjQ0KzEzNS40NDJaIiBmaWxsPSIjMTcxNzE3IiBvcGFjaXR5PSIxIi8+ICAgICAgICA8cGF0aCBzdHlsZT0iZmlsdGVyOiB1cmwoI3NoYWRvdzIpIiBkPSJNMTY5NS41NCs2MzEuNDQyQzE2ODUuODQrMjc4LjA0MisxNDA5LjM0KzEzNS40NDIrMTA1Mi45NCsxMzUuNDQyTDM2MS43NCsxMzYuNDQyTDgwMy43NCs0OTAuNDQyTDEwNjAuNzQrNDkwLjQ0MkMxMzM1LjI0KzQ5MC40NDIrMTMzNS4yNCs4MzUuMzQyKzEwNjAuNzQrODM1LjM0MkwxMDYwLjc0KzExNjQuODRDMTE1MC4yMisxMTY0Ljg0KzEyMTAuNTMrMTIwMS40OCsxMjQxLjY4KzEyNTAuODdDMTMwNi4wNysxMzUzKzEyNDUuNzYrMTUwOS42NCsxMDYwLjc0KzE1MDkuNjRMMzYxLjc0KzE4NjMuNTRMMTA1Mi45NCsxODY0LjU0QzE0MDkuMjQrMTg2NC41NCsxNjg1Ljc0KzE3MjEuOTQrMTY5NS41NCsxMzY4LjU0QzE2OTUuNTQrMTIwNS45NCsxNjUxLjA0KzEwODQuNDQrMTU3Mi42NCs5OTkuOTQyQzE2NTEuMDQrOTE1LjU0MisxNjk1LjU0Kzc5NC4wNDIrMTY5NS41NCs2MzEuNDQyWiIgZmlsbD0iIzNFODJFNSIgb3BhY2l0eT0iMSIvPiAgICAgICAgPHBhdGggc3R5bGU9ImZpbHRlcjogdXJsKCNzaGFkb3cxKSIgZD0iTTE0NjkuMjUrNjMxLjQ0MkMxNDU5LjU1KzI3OC4wNDIrMTE4My4wNSsxMzUuNDQyKzgyNi42NSsxMzUuNDQyTDEzNS40NSsxMzUuNDQyTDEzNS40NSsxMDA0QzEzNS40NSsxMDA0KzEzNS40MjcrMTI1NS4yMSszNTUuNjI2KzEyNTUuMjFDNTc1LjgyNSsxMjU1LjIxKzU3NS44NDgrMTAwNCs1NzUuODQ4KzEwMDRMNTc3LjQ1KzQ5MC40NDJMODM0LjQ1KzQ5MC40NDJDMTEwOC45NSs0OTAuNDQyKzExMDguOTUrODM1LjM0Mis4MzQuNDUrODM1LjM0Mkw2NjQuNjUrODM1LjM0Mkw2NjQuNjUrMTE2NC44NEw4MzQuNDUrMTE2NC44NEM5MjMuOTMyKzExNjQuODQrOTg0LjI0NCsxMjAxLjQ4KzEwMTUuMzkrMTI1MC44N0MxMDc5Ljc4KzEzNTMrMTAxOS40NysxNTA5LjY0KzgzNC40NSsxNTA5LjY0TDEzNS40NSsxNTA5LjY0TDEzNS40NSsxODY0LjU0TDgyNi42NSsxODY0LjU0QzExODIuOTUrMTg2NC41NCsxNDU5LjQ1KzE3MjEuOTQrMTQ2OS4yNSsxMzY4LjU0QzE0NjkuMjUrMTIwNS45NCsxNDI0Ljc1KzEwODQuNDQrMTM0Ni4zNSs5OTkuOTQyQzE0MjQuNzUrOTE1LjU0MisxNDY5LjI1Kzc5NC4wNDIrMTQ2OS4yNSs2MzEuNDQyWiIgZmlsbD0iI0ZGRkZGRiIgb3BhY2l0eT0iMSIvPiAgICA8L2c+PC9zdmc+);\n}\n#bd-loading-icon {\n position: fixed;\n bottom:5px;\n right:5px;\n z-index: 2147483647;\n display: block;\n width: 20px;\n height: 20px;\n background-size: 100% 100%;\n animation: bd-loading-animation 1.5s ease-in-out infinite;\n}\n\n@keyframes bd-loading-animation {\n 0% { opacity: 0.05; }\n 50% { opacity: 0.6; }\n 100% { opacity: 0.05; }\n}\n/* =============== */\n/* END V2 LOADER */`;\nconst iconStyle = document.createElement(\"style\");\niconStyle.textContent = css;\nconst loadingIcon = document.createElement(\"div\");\nloadingIcon.id = \"bd-loading-icon\";\nloadingIcon.className = \"bd-loaderv2\";\nloadingIcon.title = \"BandagedBD is loading...\";\n/* harmony default export */ __webpack_exports__[\"default\"] = (class {\n static show() {\n document.body.appendChild(iconStyle);\n document.body.appendChild(loadingIcon);\n }\n\n static hide() {\n if (iconStyle) iconStyle.remove();\n if (loadingIcon) loadingIcon.remove();\n }\n\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL2xvYWRpbmdpY29uLmpzPzE5OTYiXSwibmFtZXMiOlsiY3NzIiwiaWNvblN0eWxlIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwidGV4dENvbnRlbnQiLCJsb2FkaW5nSWNvbiIsImlkIiwiY2xhc3NOYW1lIiwidGl0bGUiLCJzaG93IiwiYm9keSIsImFwcGVuZENoaWxkIiwiaGlkZSIsInJlbW92ZSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQSxNQUFNQSxHQUFHLEdBQUk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztzQkFBYjtBQTBCQSxNQUFNQyxTQUFTLEdBQUdDLFFBQVEsQ0FBQ0MsYUFBVCxDQUF1QixPQUF2QixDQUFsQjtBQUNBRixTQUFTLENBQUNHLFdBQVYsR0FBd0JKLEdBQXhCO0FBRUEsTUFBTUssV0FBVyxHQUFHSCxRQUFRLENBQUNDLGFBQVQsQ0FBdUIsS0FBdkIsQ0FBcEI7QUFDQUUsV0FBVyxDQUFDQyxFQUFaLEdBQWlCLGlCQUFqQjtBQUNBRCxXQUFXLENBQUNFLFNBQVosR0FBd0IsYUFBeEI7QUFDQUYsV0FBVyxDQUFDRyxLQUFaLEdBQW9CLDBCQUFwQjtBQUVlLHFFQUFNO0FBQ2pCLFNBQU9DLElBQVAsR0FBYztBQUNWUCxZQUFRLENBQUNRLElBQVQsQ0FBY0MsV0FBZCxDQUEwQlYsU0FBMUI7QUFDQUMsWUFBUSxDQUFDUSxJQUFULENBQWNDLFdBQWQsQ0FBMEJOLFdBQTFCO0FBQ0g7O0FBRUQsU0FBT08sSUFBUCxHQUFjO0FBQ1YsUUFBSVgsU0FBSixFQUFlQSxTQUFTLENBQUNZLE1BQVY7QUFDZixRQUFJUixXQUFKLEVBQWlCQSxXQUFXLENBQUNRLE1BQVo7QUFDcEI7O0FBVGdCLEMiLCJmaWxlIjoiLi9zcmMvbG9hZGluZ2ljb24uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBjc3MgPSBgLyogQkVHSU4gVjIgTE9BREVSICovXHJcbi8qID09PT09PT09PT09PT09PSAqL1xyXG5cclxuI2JkLWxvYWRpbmctaWNvbiB7XHJcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpSUhOMFlXNWtZV3h2Ym1VOUltNXZJajgrSUR3aFJFOURWRmxRUlNCemRtY2dVRlZDVEVsRElDSXRMeTlYTTBNdkwwUlVSQ0JUVmtjZ01TNHhMeTlGVGlJZ0ltaDBkSEE2THk5M2QzY3Vkek11YjNKbkwwZHlZWEJvYVdOekwxTldSeTh4TGpFdlJGUkVMM04yWnpFeExtUjBaQ0krUEhOMlp5Qm9aV2xuYUhROUlqRXdNQ1VpSUhOMGVXeGxQU0ptYVd4c0xYSjFiR1U2WlhabGJtOWtaRHRqYkdsd0xYSjFiR1U2WlhabGJtOWtaRHR6ZEhKdmEyVXRiR2x1WldOaGNEcHliM1Z1WkR0emRISnZhMlV0YkdsdVpXcHZhVzQ2Y205MWJtUTdJaUI0Yld4dWN6cDRiR2x1YXowaWFIUjBjRG92TDNkM2R5NTNNeTV2Y21jdk1UazVPUzk0YkdsdWF5SWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklpQjRiV3c2YzNCaFkyVTlJbkJ5WlhObGNuWmxJaUIzYVdSMGFEMGlNVEF3SlNJZ2RtVnljMmx2YmowaU1TNHhJaUIyYVdWM1FtOTRQU0l3SURBZ01qQXdNQ0F5TURBd0lqNGdJQ0FnUEcxbGRHRmtZWFJoSUM4K0lDQWdJRHhrWldaelBpQWdJQ0FnSUNBZ1BHWnBiSFJsY2lCcFpEMGljMmhoWkc5M01TSStJQ0FnSUNBZ0lDQThabVZFY205d1UyaGhaRzkzSUdSNFBTSXlNQ0lnWkhrOUlqQWlJSE4wWkVSbGRtbGhkR2x2YmowaU1qQWlJR1pzYjI5a0xXTnZiRzl5UFNKeVoySmhLREFzTUN3d0xEQXVNelVwSWk4K0lDQWdJQ0FnSUNBOEwyWnBiSFJsY2o0Z0lDQWdJQ0FnSUR4bWFXeDBaWElnYVdROUluTm9ZV1J2ZHpJaVBpQWdJQ0FnSUNBZ1BHWmxSSEp2Y0ZOb1lXUnZkeUJrZUQwaU1UVWlJR1I1UFNJd0lpQnpkR1JFWlhacFlYUnBiMjQ5SWpJd0lpQm1iRzl2WkMxamIyeHZjajBpY21kaVlTZ3lOVFVzTWpVMUxESTFOU3d3TGpFMUtTSXZQaUFnSUNBZ0lDQWdQQzltYVd4MFpYSStJQ0FnSUNBZ0lDQThabWxzZEdWeUlHbGtQU0p6YUdGa2IzY3pJajRnSUNBZ0lDQWdJRHhtWlVSeWIzQlRhR0ZrYjNjZ1pIZzlJakV3SWlCa2VUMGlNQ0lnYzNSa1JHVjJhV0YwYVc5dVBTSXlNQ0lnWm14dmIyUXRZMjlzYjNJOUluSm5ZbUVvTUN3d0xEQXNNQzR6TlNraUx6NGdJQ0FnSUNBZ0lEd3ZabWxzZEdWeVBpQWdJQ0E4TDJSbFpuTStJQ0FnSUR4blBpQWdJQ0FnSUNBZ1BIQmhkR2dnYzNSNWJHVTlJbVpwYkhSbGNqb2dkWEpzS0NOemFHRmtiM2N6S1NJZ1pEMGlUVEV4T1RVdU5EUXJNVE0xTGpRME1rd3hNVGsxTGpRMEt6RXpOUzQwTkRKTU9UazNMallyTVRNMkxqUTBNa014TURJMExqSXJNVFE1TGpjME1pc3hNVGN3TGpNMEt6RTJNeTQxTkRJck1URTVNeTQyTkNzeE56a3VOelF5UXpFeU5qUXVNelFyTWpJNExqZzBNaXN4TXpFNUxqYzBLekk1TVM0eU5ESXJNVE0xT0M0eU5Dc3pOalV1TURReVF6RXpPVGd1TVRRck5EUXhMalkwTWlzeE5ERTVMamMwS3pVek1DNDJORElyTVRReU1pNDFOQ3MyTWprdU5qUXlUREUwTWpJdU5UUXJOak13TGpnME1rd3hOREl5TGpVMEt6WXpNaTR3TkRKRE1UUXlNaTQxTkNzM056TXVNVFF5S3pFME1qSXVOVFFyTVRJeU9DNHhOQ3N4TkRJeUxqVTBLekV6TmprdU1UUk1NVFF5TWk0MU5Dc3hNemN3TGpNMFRERTBNakl1TlRRck1UTTNNUzQxTkVNeE5ERTVMamcwS3pFME56QXVOVFFyTVRNNU9DNHlOQ3N4TlRVNUxqVTBLekV6TlRndU1qUXJNVFl6Tmk0eE5FTXhNekU1TGpjMEt6RTNNRGt1T1RRck1USTJOQzQwTkNzeE56Y3lMak0wS3pFeE9UTXVOalFyTVRneU1TNDBORU14TVRjeExqQTBLekU0TXpjdU1UUXJNVEF5TlM0M0t6RTROVEF1TlRRck1UQXdNQ3N4T0RZekxqVTBUREV4T1RNdU5UUXJNVGcyTkM0MU5FTXhOVE01TGpjMEt6RTROall1TkRRck1UZzJOQzQxTkNzeE5qa3pMak0wS3pFNE5qUXVOVFFyTVRJNU5pNDJORXd4T0RZMExqVTBLemN4Tmk0NU5ESkRNVGcyTmk0ME5Dc3pNVEl1TkRReUt6RTFOREV1TmpRck1UTTFMalEwTWlzeE1UazFMalEwS3pFek5TNDBOREphSWlCbWFXeHNQU0lqTVRjeE56RTNJaUJ2Y0dGamFYUjVQU0l4SWk4K0lDQWdJQ0FnSUNBOGNHRjBhQ0J6ZEhsc1pUMGlabWxzZEdWeU9pQjFjbXdvSTNOb1lXUnZkeklwSWlCa1BTSk5NVFk1TlM0MU5DczJNekV1TkRReVF6RTJPRFV1T0RRck1qYzRMakEwTWlzeE5EQTVMak0wS3pFek5TNDBORElyTVRBMU1pNDVOQ3N4TXpVdU5EUXlURE0yTVM0M05Dc3hNell1TkRReVREZ3dNeTQzTkNzME9UQXVORFF5VERFd05qQXVOelFyTkRrd0xqUTBNa014TXpNMUxqSTBLelE1TUM0ME5ESXJNVE16TlM0eU5DczRNelV1TXpReUt6RXdOakF1TnpRck9ETTFMak0wTWt3eE1EWXdMamMwS3pFeE5qUXVPRFJETVRFMU1DNHlNaXN4TVRZMExqZzBLekV5TVRBdU5UTXJNVEl3TVM0ME9Dc3hNalF4TGpZNEt6RXlOVEF1T0RkRE1UTXdOaTR3TnlzeE16VXpLekV5TkRVdU56WXJNVFV3T1M0Mk5Dc3hNRFl3TGpjMEt6RTFNRGt1TmpSTU16WXhMamMwS3pFNE5qTXVOVFJNTVRBMU1pNDVOQ3N4T0RZMExqVTBRekUwTURrdU1qUXJNVGcyTkM0MU5Dc3hOamcxTGpjMEt6RTNNakV1T1RRck1UWTVOUzQxTkNzeE16WTRMalUwUXpFMk9UVXVOVFFyTVRJd05TNDVOQ3N4TmpVeExqQTBLekV3T0RRdU5EUXJNVFUzTWk0Mk5DczVPVGt1T1RReVF6RTJOVEV1TURRck9URTFMalUwTWlzeE5qazFMalUwS3pjNU5DNHdORElyTVRZNU5TNDFOQ3MyTXpFdU5EUXlXaUlnWm1sc2JEMGlJek5GT0RKRk5TSWdiM0JoWTJsMGVUMGlNU0l2UGlBZ0lDQWdJQ0FnUEhCaGRHZ2djM1I1YkdVOUltWnBiSFJsY2pvZ2RYSnNLQ056YUdGa2IzY3hLU0lnWkQwaVRURTBOamt1TWpVck5qTXhMalEwTWtNeE5EVTVMalUxS3pJM09DNHdORElyTVRFNE15NHdOU3N4TXpVdU5EUXlLemd5Tmk0Mk5Tc3hNelV1TkRReVRERXpOUzQwTlNzeE16VXVORFF5VERFek5TNDBOU3N4TURBMFF6RXpOUzQwTlNzeE1EQTBLekV6TlM0ME1qY3JNVEkxTlM0eU1Tc3pOVFV1TmpJMkt6RXlOVFV1TWpGRE5UYzFMamd5TlNzeE1qVTFMakl4S3pVM05TNDRORGdyTVRBd05DczFOelV1T0RRNEt6RXdNRFJNTlRjM0xqUTFLelE1TUM0ME5ESk1PRE0wTGpRMUt6UTVNQzQwTkRKRE1URXdPQzQ1TlNzME9UQXVORFF5S3pFeE1EZ3VPVFVyT0RNMUxqTTBNaXM0TXpRdU5EVXJPRE0xTGpNME1rdzJOalF1TmpVck9ETTFMak0wTWt3Mk5qUXVOalVyTVRFMk5DNDRORXc0TXpRdU5EVXJNVEUyTkM0NE5FTTVNak11T1RNeUt6RXhOalF1T0RRck9UZzBMakkwTkNzeE1qQXhMalE0S3pFd01UVXVNemtyTVRJMU1DNDROME14TURjNUxqYzRLekV6TlRNck1UQXhPUzQwTnlzeE5UQTVMalkwS3pnek5DNDBOU3N4TlRBNUxqWTBUREV6TlM0ME5Tc3hOVEE1TGpZMFRERXpOUzQwTlNzeE9EWTBMalUwVERneU5pNDJOU3N4T0RZMExqVTBRekV4T0RJdU9UVXJNVGcyTkM0MU5Dc3hORFU1TGpRMUt6RTNNakV1T1RRck1UUTJPUzR5TlNzeE16WTRMalUwUXpFME5qa3VNalVyTVRJd05TNDVOQ3N4TkRJMExqYzFLekV3T0RRdU5EUXJNVE0wTmk0ek5TczVPVGt1T1RReVF6RTBNalF1TnpVck9URTFMalUwTWlzeE5EWTVMakkxS3pjNU5DNHdORElyTVRRMk9TNHlOU3MyTXpFdU5EUXlXaUlnWm1sc2JEMGlJMFpHUmtaR1JpSWdiM0JoWTJsMGVUMGlNU0l2UGlBZ0lDQThMMmMrUEM5emRtYyspO1xyXG59XHJcbiNiZC1sb2FkaW5nLWljb24ge1xyXG4gIHBvc2l0aW9uOiBmaXhlZDtcclxuICBib3R0b206NXB4O1xyXG4gIHJpZ2h0OjVweDtcclxuICB6LWluZGV4OiAyMTQ3NDgzNjQ3O1xyXG4gIGRpc3BsYXk6IGJsb2NrO1xyXG4gIHdpZHRoOiAyMHB4O1xyXG4gIGhlaWdodDogMjBweDtcclxuICBiYWNrZ3JvdW5kLXNpemU6IDEwMCUgMTAwJTtcclxuICBhbmltYXRpb246IGJkLWxvYWRpbmctYW5pbWF0aW9uIDEuNXMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XHJcbn1cclxuXHJcbkBrZXlmcmFtZXMgYmQtbG9hZGluZy1hbmltYXRpb24ge1xyXG4gIDAlIHsgb3BhY2l0eTogMC4wNTsgfVxyXG4gIDUwJSB7IG9wYWNpdHk6IDAuNjsgfVxyXG4gIDEwMCUgeyBvcGFjaXR5OiAwLjA1OyB9XHJcbn1cclxuLyogPT09PT09PT09PT09PT09ICovXHJcbi8qICBFTkQgVjIgTE9BREVSICAqL2A7XHJcblxyXG5jb25zdCBpY29uU3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIik7XHJcbmljb25TdHlsZS50ZXh0Q29udGVudCA9IGNzcztcclxuXHJcbmNvbnN0IGxvYWRpbmdJY29uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcclxubG9hZGluZ0ljb24uaWQgPSBcImJkLWxvYWRpbmctaWNvblwiO1xyXG5sb2FkaW5nSWNvbi5jbGFzc05hbWUgPSBcImJkLWxvYWRlcnYyXCI7XHJcbmxvYWRpbmdJY29uLnRpdGxlID0gXCJCYW5kYWdlZEJEIGlzIGxvYWRpbmcuLi5cIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIHtcclxuICAgIHN0YXRpYyBzaG93KCkge1xyXG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaWNvblN0eWxlKTtcclxuICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxvYWRpbmdJY29uKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgaGlkZSgpIHtcclxuICAgICAgICBpZiAoaWNvblN0eWxlKSBpY29uU3R5bGUucmVtb3ZlKCk7XHJcbiAgICAgICAgaWYgKGxvYWRpbmdJY29uKSBsb2FkaW5nSWNvbi5yZW1vdmUoKTtcclxuICAgIH1cclxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/loadingicon.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\nconst css = `/* BEGIN V2 LOADER */\n/* =============== */\n\n#bd-loading-icon {\n background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+IDwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyBoZWlnaHQ9IjEwMCUiIHN0eWxlPSJmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWw6c3BhY2U9InByZXNlcnZlIiB3aWR0aD0iMTAwJSIgdmVyc2lvbj0iMS4xIiB2aWV3Qm94PSIwIDAgMjAwMCAyMDAwIj4gICAgPG1ldGFkYXRhIC8+ICAgIDxkZWZzPiAgICAgICAgPGZpbHRlciBpZD0ic2hhZG93MSI+ICAgICAgICA8ZmVEcm9wU2hhZG93IGR4PSIyMCIgZHk9IjAiIHN0ZERldmlhdGlvbj0iMjAiIGZsb29kLWNvbG9yPSJyZ2JhKDAsMCwwLDAuMzUpIi8+ICAgICAgICA8L2ZpbHRlcj4gICAgICAgIDxmaWx0ZXIgaWQ9InNoYWRvdzIiPiAgICAgICAgPGZlRHJvcFNoYWRvdyBkeD0iMTUiIGR5PSIwIiBzdGREZXZpYXRpb249IjIwIiBmbG9vZC1jb2xvcj0icmdiYSgyNTUsMjU1LDI1NSwwLjE1KSIvPiAgICAgICAgPC9maWx0ZXI+ICAgICAgICA8ZmlsdGVyIGlkPSJzaGFkb3czIj4gICAgICAgIDxmZURyb3BTaGFkb3cgZHg9IjEwIiBkeT0iMCIgc3RkRGV2aWF0aW9uPSIyMCIgZmxvb2QtY29sb3I9InJnYmEoMCwwLDAsMC4zNSkiLz4gICAgICAgIDwvZmlsdGVyPiAgICA8L2RlZnM+ICAgIDxnPiAgICAgICAgPHBhdGggc3R5bGU9ImZpbHRlcjogdXJsKCNzaGFkb3czKSIgZD0iTTExOTUuNDQrMTM1LjQ0MkwxMTk1LjQ0KzEzNS40NDJMOTk3LjYrMTM2LjQ0MkMxMDI0LjIrMTQ5Ljc0MisxMTcwLjM0KzE2My41NDIrMTE5My42NCsxNzkuNzQyQzEyNjQuMzQrMjI4Ljg0MisxMzE5Ljc0KzI5MS4yNDIrMTM1OC4yNCszNjUuMDQyQzEzOTguMTQrNDQxLjY0MisxNDE5Ljc0KzUzMC42NDIrMTQyMi41NCs2MjkuNjQyTDE0MjIuNTQrNjMwLjg0MkwxNDIyLjU0KzYzMi4wNDJDMTQyMi41NCs3NzMuMTQyKzE0MjIuNTQrMTIyOC4xNCsxNDIyLjU0KzEzNjkuMTRMMTQyMi41NCsxMzcwLjM0TDE0MjIuNTQrMTM3MS41NEMxNDE5Ljg0KzE0NzAuNTQrMTM5OC4yNCsxNTU5LjU0KzEzNTguMjQrMTYzNi4xNEMxMzE5Ljc0KzE3MDkuOTQrMTI2NC40NCsxNzcyLjM0KzExOTMuNjQrMTgyMS40NEMxMTcxLjA0KzE4MzcuMTQrMTAyNS43KzE4NTAuNTQrMTAwMCsxODYzLjU0TDExOTMuNTQrMTg2NC41NEMxNTM5Ljc0KzE4NjYuNDQrMTg2NC41NCsxNjkzLjM0KzE4NjQuNTQrMTI5Ni42NEwxODY0LjU0KzcxNi45NDJDMTg2Ni40NCszMTIuNDQyKzE1NDEuNjQrMTM1LjQ0MisxMTk1LjQ0KzEzNS40NDJaIiBmaWxsPSIjMTcxNzE3IiBvcGFjaXR5PSIxIi8+ICAgICAgICA8cGF0aCBzdHlsZT0iZmlsdGVyOiB1cmwoI3NoYWRvdzIpIiBkPSJNMTY5NS41NCs2MzEuNDQyQzE2ODUuODQrMjc4LjA0MisxNDA5LjM0KzEzNS40NDIrMTA1Mi45NCsxMzUuNDQyTDM2MS43NCsxMzYuNDQyTDgwMy43NCs0OTAuNDQyTDEwNjAuNzQrNDkwLjQ0MkMxMzM1LjI0KzQ5MC40NDIrMTMzNS4yNCs4MzUuMzQyKzEwNjAuNzQrODM1LjM0MkwxMDYwLjc0KzExNjQuODRDMTE1MC4yMisxMTY0Ljg0KzEyMTAuNTMrMTIwMS40OCsxMjQxLjY4KzEyNTAuODdDMTMwNi4wNysxMzUzKzEyNDUuNzYrMTUwOS42NCsxMDYwLjc0KzE1MDkuNjRMMzYxLjc0KzE4NjMuNTRMMTA1Mi45NCsxODY0LjU0QzE0MDkuMjQrMTg2NC41NCsxNjg1Ljc0KzE3MjEuOTQrMTY5NS41NCsxMzY4LjU0QzE2OTUuNTQrMTIwNS45NCsxNjUxLjA0KzEwODQuNDQrMTU3Mi42NCs5OTkuOTQyQzE2NTEuMDQrOTE1LjU0MisxNjk1LjU0Kzc5NC4wNDIrMTY5NS41NCs2MzEuNDQyWiIgZmlsbD0iIzNFODJFNSIgb3BhY2l0eT0iMSIvPiAgICAgICAgPHBhdGggc3R5bGU9ImZpbHRlcjogdXJsKCNzaGFkb3cxKSIgZD0iTTE0NjkuMjUrNjMxLjQ0MkMxNDU5LjU1KzI3OC4wNDIrMTE4My4wNSsxMzUuNDQyKzgyNi42NSsxMzUuNDQyTDEzNS40NSsxMzUuNDQyTDEzNS40NSsxMDA0QzEzNS40NSsxMDA0KzEzNS40MjcrMTI1NS4yMSszNTUuNjI2KzEyNTUuMjFDNTc1LjgyNSsxMjU1LjIxKzU3NS44NDgrMTAwNCs1NzUuODQ4KzEwMDRMNTc3LjQ1KzQ5MC40NDJMODM0LjQ1KzQ5MC40NDJDMTEwOC45NSs0OTAuNDQyKzExMDguOTUrODM1LjM0Mis4MzQuNDUrODM1LjM0Mkw2NjQuNjUrODM1LjM0Mkw2NjQuNjUrMTE2NC44NEw4MzQuNDUrMTE2NC44NEM5MjMuOTMyKzExNjQuODQrOTg0LjI0NCsxMjAxLjQ4KzEwMTUuMzkrMTI1MC44N0MxMDc5Ljc4KzEzNTMrMTAxOS40NysxNTA5LjY0KzgzNC40NSsxNTA5LjY0TDEzNS40NSsxNTA5LjY0TDEzNS40NSsxODY0LjU0TDgyNi42NSsxODY0LjU0QzExODIuOTUrMTg2NC41NCsxNDU5LjQ1KzE3MjEuOTQrMTQ2OS4yNSsxMzY4LjU0QzE0NjkuMjUrMTIwNS45NCsxNDI0Ljc1KzEwODQuNDQrMTM0Ni4zNSs5OTkuOTQyQzE0MjQuNzUrOTE1LjU0MisxNDY5LjI1Kzc5NC4wNDIrMTQ2OS4yNSs2MzEuNDQyWiIgZmlsbD0iI0ZGRkZGRiIgb3BhY2l0eT0iMSIvPiAgICA8L2c+PC9zdmc+);\n}\n#bd-loading-icon {\n position: fixed;\n bottom:5px;\n right:5px;\n z-index: 2147483647;\n display: block;\n width: 20px;\n height: 20px;\n background-size: 100% 100%;\n animation: bd-loading-animation 1.5s ease-in-out infinite;\n}\n\n@keyframes bd-loading-animation {\n 0% { opacity: 0.05; }\n 50% { opacity: 0.6; }\n 100% { opacity: 0.05; }\n}\n/* =============== */\n/* END V2 LOADER */`;\nconst iconStyle = document.createElement(\"style\");\niconStyle.textContent = css;\nconst loadingIcon = document.createElement(\"div\");\nloadingIcon.id = \"bd-loading-icon\";\nloadingIcon.className = \"bd-loaderv2\";\nloadingIcon.title = \"BandagedBD is loading...\";\n/* harmony default export */ __webpack_exports__[\"default\"] = (class {\n static show() {\n document.body.appendChild(iconStyle);\n document.body.appendChild(loadingIcon);\n }\n\n static hide() {\n if (iconStyle) iconStyle.remove();\n if (loadingIcon) loadingIcon.remove();\n }\n\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbG9hZGluZ2ljb24uanM/MTk5NiJdLCJuYW1lcyI6WyJjc3MiLCJpY29uU3R5bGUiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJ0ZXh0Q29udGVudCIsImxvYWRpbmdJY29uIiwiaWQiLCJjbGFzc05hbWUiLCJ0aXRsZSIsInNob3ciLCJib2R5IiwiYXBwZW5kQ2hpbGQiLCJoaWRlIiwicmVtb3ZlIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBLE1BQU1BLEdBQUcsR0FBSTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3NCQUFiO0FBMEJBLE1BQU1DLFNBQVMsR0FBR0MsUUFBUSxDQUFDQyxhQUFULENBQXVCLE9BQXZCLENBQWxCO0FBQ0FGLFNBQVMsQ0FBQ0csV0FBVixHQUF3QkosR0FBeEI7QUFFQSxNQUFNSyxXQUFXLEdBQUdILFFBQVEsQ0FBQ0MsYUFBVCxDQUF1QixLQUF2QixDQUFwQjtBQUNBRSxXQUFXLENBQUNDLEVBQVosR0FBaUIsaUJBQWpCO0FBQ0FELFdBQVcsQ0FBQ0UsU0FBWixHQUF3QixhQUF4QjtBQUNBRixXQUFXLENBQUNHLEtBQVosR0FBb0IsMEJBQXBCO0FBRWUscUVBQU07QUFDakIsU0FBT0MsSUFBUCxHQUFjO0FBQ1ZQLFlBQVEsQ0FBQ1EsSUFBVCxDQUFjQyxXQUFkLENBQTBCVixTQUExQjtBQUNBQyxZQUFRLENBQUNRLElBQVQsQ0FBY0MsV0FBZCxDQUEwQk4sV0FBMUI7QUFDSDs7QUFFRCxTQUFPTyxJQUFQLEdBQWM7QUFDVixRQUFJWCxTQUFKLEVBQWVBLFNBQVMsQ0FBQ1ksTUFBVjtBQUNmLFFBQUlSLFdBQUosRUFBaUJBLFdBQVcsQ0FBQ1EsTUFBWjtBQUNwQjs7QUFUZ0IsQyIsImZpbGUiOiIuL3NyYy9sb2FkaW5naWNvbi5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGNzcyA9IGAvKiBCRUdJTiBWMiBMT0FERVIgKi9cclxuLyogPT09PT09PT09PT09PT09ICovXHJcblxyXG4jYmQtbG9hZGluZy1pY29uIHtcclxuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lJSE4wWVc1a1lXeHZibVU5SW01dklqOCtJRHdoUkU5RFZGbFFSU0J6ZG1jZ1VGVkNURWxESUNJdEx5OVhNME12TDBSVVJDQlRWa2NnTVM0eEx5OUZUaUlnSW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTDBkeVlYQm9hV056TDFOV1J5OHhMakV2UkZSRUwzTjJaekV4TG1SMFpDSStQSE4yWnlCb1pXbG5hSFE5SWpFd01DVWlJSE4wZVd4bFBTSm1hV3hzTFhKMWJHVTZaWFpsYm05a1pEdGpiR2x3TFhKMWJHVTZaWFpsYm05a1pEdHpkSEp2YTJVdGJHbHVaV05oY0RweWIzVnVaRHR6ZEhKdmEyVXRiR2x1WldwdmFXNDZjbTkxYm1RN0lpQjRiV3h1Y3pwNGJHbHVhejBpYUhSMGNEb3ZMM2QzZHk1M015NXZjbWN2TVRrNU9TOTRiR2x1YXlJZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWlCNGJXdzZjM0JoWTJVOUluQnlaWE5sY25abElpQjNhV1IwYUQwaU1UQXdKU0lnZG1WeWMybHZiajBpTVM0eElpQjJhV1YzUW05NFBTSXdJREFnTWpBd01DQXlNREF3SWo0Z0lDQWdQRzFsZEdGa1lYUmhJQzgrSUNBZ0lEeGtaV1p6UGlBZ0lDQWdJQ0FnUEdacGJIUmxjaUJwWkQwaWMyaGhaRzkzTVNJK0lDQWdJQ0FnSUNBOFptVkVjbTl3VTJoaFpHOTNJR1I0UFNJeU1DSWdaSGs5SWpBaUlITjBaRVJsZG1saGRHbHZiajBpTWpBaUlHWnNiMjlrTFdOdmJHOXlQU0p5WjJKaEtEQXNNQ3d3TERBdU16VXBJaTgrSUNBZ0lDQWdJQ0E4TDJacGJIUmxjajRnSUNBZ0lDQWdJRHhtYVd4MFpYSWdhV1E5SW5Ob1lXUnZkeklpUGlBZ0lDQWdJQ0FnUEdabFJISnZjRk5vWVdSdmR5QmtlRDBpTVRVaUlHUjVQU0l3SWlCemRHUkVaWFpwWVhScGIyNDlJakl3SWlCbWJHOXZaQzFqYjJ4dmNqMGljbWRpWVNneU5UVXNNalUxTERJMU5Td3dMakUxS1NJdlBpQWdJQ0FnSUNBZ1BDOW1hV3gwWlhJK0lDQWdJQ0FnSUNBOFptbHNkR1Z5SUdsa1BTSnphR0ZrYjNjeklqNGdJQ0FnSUNBZ0lEeG1aVVJ5YjNCVGFHRmtiM2NnWkhnOUlqRXdJaUJrZVQwaU1DSWdjM1JrUkdWMmFXRjBhVzl1UFNJeU1DSWdabXh2YjJRdFkyOXNiM0k5SW5KblltRW9NQ3d3TERBc01DNHpOU2tpTHo0Z0lDQWdJQ0FnSUR3dlptbHNkR1Z5UGlBZ0lDQThMMlJsWm5NK0lDQWdJRHhuUGlBZ0lDQWdJQ0FnUEhCaGRHZ2djM1I1YkdVOUltWnBiSFJsY2pvZ2RYSnNLQ056YUdGa2IzY3pLU0lnWkQwaVRURXhPVFV1TkRRck1UTTFMalEwTWt3eE1UazFMalEwS3pFek5TNDBOREpNT1RrM0xqWXJNVE0yTGpRME1rTXhNREkwTGpJck1UUTVMamMwTWlzeE1UY3dMak0wS3pFMk15NDFORElyTVRFNU15NDJOQ3N4TnprdU56UXlRekV5TmpRdU16UXJNakk0TGpnME1pc3hNekU1TGpjMEt6STVNUzR5TkRJck1UTTFPQzR5TkNzek5qVXVNRFF5UXpFek9UZ3VNVFFyTkRReExqWTBNaXN4TkRFNUxqYzBLelV6TUM0Mk5ESXJNVFF5TWk0MU5DczJNamt1TmpReVRERTBNakl1TlRRck5qTXdMamcwTWt3eE5ESXlMalUwS3pZek1pNHdOREpETVRReU1pNDFOQ3MzTnpNdU1UUXlLekUwTWpJdU5UUXJNVEl5T0M0eE5Dc3hOREl5TGpVMEt6RXpOamt1TVRSTU1UUXlNaTQxTkNzeE16Y3dMak0wVERFME1qSXVOVFFyTVRNM01TNDFORU14TkRFNUxqZzBLekUwTnpBdU5UUXJNVE01T0M0eU5Dc3hOVFU1TGpVMEt6RXpOVGd1TWpRck1UWXpOaTR4TkVNeE16RTVMamMwS3pFM01Ea3VPVFFyTVRJMk5DNDBOQ3N4TnpjeUxqTTBLekV4T1RNdU5qUXJNVGd5TVM0ME5FTXhNVGN4TGpBMEt6RTRNemN1TVRRck1UQXlOUzQzS3pFNE5UQXVOVFFyTVRBd01Dc3hPRFl6TGpVMFRERXhPVE11TlRRck1UZzJOQzQxTkVNeE5UTTVMamMwS3pFNE5qWXVORFFyTVRnMk5DNDFOQ3N4TmprekxqTTBLekU0TmpRdU5UUXJNVEk1Tmk0Mk5Fd3hPRFkwTGpVMEt6Y3hOaTQ1TkRKRE1UZzJOaTQwTkNzek1USXVORFF5S3pFMU5ERXVOalFyTVRNMUxqUTBNaXN4TVRrMUxqUTBLekV6TlM0ME5ESmFJaUJtYVd4c1BTSWpNVGN4TnpFM0lpQnZjR0ZqYVhSNVBTSXhJaTgrSUNBZ0lDQWdJQ0E4Y0dGMGFDQnpkSGxzWlQwaVptbHNkR1Z5T2lCMWNtd29JM05vWVdSdmR6SXBJaUJrUFNKTk1UWTVOUzQxTkNzMk16RXVORFF5UXpFMk9EVXVPRFFyTWpjNExqQTBNaXN4TkRBNUxqTTBLekV6TlM0ME5ESXJNVEExTWk0NU5Dc3hNelV1TkRReVRETTJNUzQzTkNzeE16WXVORFF5VERnd015NDNOQ3MwT1RBdU5EUXlUREV3TmpBdU56UXJORGt3TGpRME1rTXhNek0xTGpJMEt6UTVNQzQwTkRJck1UTXpOUzR5TkNzNE16VXVNelF5S3pFd05qQXVOelFyT0RNMUxqTTBNa3d4TURZd0xqYzBLekV4TmpRdU9EUkRNVEUxTUM0eU1pc3hNVFkwTGpnMEt6RXlNVEF1TlRNck1USXdNUzQwT0NzeE1qUXhMalk0S3pFeU5UQXVPRGRETVRNd05pNHdOeXN4TXpVekt6RXlORFV1TnpZck1UVXdPUzQyTkNzeE1EWXdMamMwS3pFMU1Ea3VOalJNTXpZeExqYzBLekU0TmpNdU5UUk1NVEExTWk0NU5Dc3hPRFkwTGpVMFF6RTBNRGt1TWpRck1UZzJOQzQxTkNzeE5qZzFMamMwS3pFM01qRXVPVFFyTVRZNU5TNDFOQ3N4TXpZNExqVTBRekUyT1RVdU5UUXJNVEl3TlM0NU5Dc3hOalV4TGpBMEt6RXdPRFF1TkRRck1UVTNNaTQyTkNzNU9Ua3VPVFF5UXpFMk5URXVNRFFyT1RFMUxqVTBNaXN4TmprMUxqVTBLemM1TkM0d05ESXJNVFk1TlM0MU5DczJNekV1TkRReVdpSWdabWxzYkQwaUl6TkZPREpGTlNJZ2IzQmhZMmwwZVQwaU1TSXZQaUFnSUNBZ0lDQWdQSEJoZEdnZ2MzUjViR1U5SW1acGJIUmxjam9nZFhKc0tDTnphR0ZrYjNjeEtTSWdaRDBpVFRFME5qa3VNalVyTmpNeExqUTBNa014TkRVNUxqVTFLekkzT0M0d05ESXJNVEU0TXk0d05Tc3hNelV1TkRReUt6Z3lOaTQyTlNzeE16VXVORFF5VERFek5TNDBOU3N4TXpVdU5EUXlUREV6TlM0ME5Tc3hNREEwUXpFek5TNDBOU3N4TURBMEt6RXpOUzQwTWpjck1USTFOUzR5TVNzek5UVXVOakkyS3pFeU5UVXVNakZETlRjMUxqZ3lOU3N4TWpVMUxqSXhLelUzTlM0NE5EZ3JNVEF3TkNzMU56VXVPRFE0S3pFd01EUk1OVGMzTGpRMUt6UTVNQzQwTkRKTU9ETTBMalExS3pRNU1DNDBOREpETVRFd09DNDVOU3MwT1RBdU5EUXlLekV4TURndU9UVXJPRE0xTGpNME1pczRNelF1TkRVck9ETTFMak0wTWt3Mk5qUXVOalVyT0RNMUxqTTBNa3cyTmpRdU5qVXJNVEUyTkM0NE5FdzRNelF1TkRVck1URTJOQzQ0TkVNNU1qTXVPVE15S3pFeE5qUXVPRFFyT1RnMExqSTBOQ3N4TWpBeExqUTRLekV3TVRVdU16a3JNVEkxTUM0NE4wTXhNRGM1TGpjNEt6RXpOVE1yTVRBeE9TNDBOeXN4TlRBNUxqWTBLemd6TkM0ME5Tc3hOVEE1TGpZMFRERXpOUzQwTlNzeE5UQTVMalkwVERFek5TNDBOU3N4T0RZMExqVTBURGd5Tmk0Mk5Tc3hPRFkwTGpVMFF6RXhPREl1T1RVck1UZzJOQzQxTkNzeE5EVTVMalExS3pFM01qRXVPVFFyTVRRMk9TNHlOU3N4TXpZNExqVTBRekUwTmprdU1qVXJNVEl3TlM0NU5Dc3hOREkwTGpjMUt6RXdPRFF1TkRRck1UTTBOaTR6TlNzNU9Ua3VPVFF5UXpFME1qUXVOelVyT1RFMUxqVTBNaXN4TkRZNUxqSTFLemM1TkM0d05ESXJNVFEyT1M0eU5TczJNekV1TkRReVdpSWdabWxzYkQwaUkwWkdSa1pHUmlJZ2IzQmhZMmwwZVQwaU1TSXZQaUFnSUNBOEwyYytQQzl6ZG1jKyk7XHJcbn1cclxuI2JkLWxvYWRpbmctaWNvbiB7XHJcbiAgcG9zaXRpb246IGZpeGVkO1xyXG4gIGJvdHRvbTo1cHg7XHJcbiAgcmlnaHQ6NXB4O1xyXG4gIHotaW5kZXg6IDIxNDc0ODM2NDc7XHJcbiAgZGlzcGxheTogYmxvY2s7XHJcbiAgd2lkdGg6IDIwcHg7XHJcbiAgaGVpZ2h0OiAyMHB4O1xyXG4gIGJhY2tncm91bmQtc2l6ZTogMTAwJSAxMDAlO1xyXG4gIGFuaW1hdGlvbjogYmQtbG9hZGluZy1hbmltYXRpb24gMS41cyBlYXNlLWluLW91dCBpbmZpbml0ZTtcclxufVxyXG5cclxuQGtleWZyYW1lcyBiZC1sb2FkaW5nLWFuaW1hdGlvbiB7XHJcbiAgMCUgeyBvcGFjaXR5OiAwLjA1OyB9XHJcbiAgNTAlIHsgb3BhY2l0eTogMC42OyB9XHJcbiAgMTAwJSB7IG9wYWNpdHk6IDAuMDU7IH1cclxufVxyXG4vKiA9PT09PT09PT09PT09PT0gKi9cclxuLyogIEVORCBWMiBMT0FERVIgICovYDtcclxuXHJcbmNvbnN0IGljb25TdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiKTtcclxuaWNvblN0eWxlLnRleHRDb250ZW50ID0gY3NzO1xyXG5cclxuY29uc3QgbG9hZGluZ0ljb24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xyXG5sb2FkaW5nSWNvbi5pZCA9IFwiYmQtbG9hZGluZy1pY29uXCI7XHJcbmxvYWRpbmdJY29uLmNsYXNzTmFtZSA9IFwiYmQtbG9hZGVydjJcIjtcclxubG9hZGluZ0ljb24udGl0bGUgPSBcIkJhbmRhZ2VkQkQgaXMgbG9hZGluZy4uLlwiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3Mge1xyXG4gICAgc3RhdGljIHNob3coKSB7XHJcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpY29uU3R5bGUpO1xyXG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobG9hZGluZ0ljb24pO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBoaWRlKCkge1xyXG4gICAgICAgIGlmIChpY29uU3R5bGUpIGljb25TdHlsZS5yZW1vdmUoKTtcclxuICAgICAgICBpZiAobG9hZGluZ0ljb24pIGxvYWRpbmdJY29uLnJlbW92ZSgpO1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/loadingicon.js\n"); /***/ }), @@ -383,7 +382,7 @@ eval("__webpack_require__.r(__webpack_exports__);\nconst css = `/* BEGIN V2 LOAD /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _modules_pluginapi__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./modules/pluginapi */ \"./src/modules/pluginapi.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n const namespace = \"betterdiscord\";\n const prefix = `${namespace}/`;\n\n const Module = __webpack_require__(/*! module */ \"module\");\n\n const load = Module._load;\n\n Module._load = function (request) {\n if (request === namespace || request.startsWith(prefix)) {\n const requested = request.substr(prefix.length);\n if (requested == \"bdapi\") return _modules_pluginapi__WEBPACK_IMPORTED_MODULE_0__[\"default\"];\n }\n\n return load.apply(this, arguments);\n };\n\n return function () {\n Module._load = load;\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL21vZHVsZWxvYWRlci5qcz9iOWMzIl0sIm5hbWVzIjpbIm5hbWVzcGFjZSIsInByZWZpeCIsIk1vZHVsZSIsInJlcXVpcmUiLCJsb2FkIiwiX2xvYWQiLCJyZXF1ZXN0Iiwic3RhcnRzV2l0aCIsInJlcXVlc3RlZCIsInN1YnN0ciIsImxlbmd0aCIsIkJkQXBpIiwiYXBwbHkiLCJhcmd1bWVudHMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUVlLDJFQUFXO0FBQ3RCLFFBQU1BLFNBQVMsR0FBRyxlQUFsQjtBQUNBLFFBQU1DLE1BQU0sR0FBSSxHQUFFRCxTQUFVLEdBQTVCOztBQUNBLFFBQU1FLE1BQU0sR0FBR0MsbUJBQU8sQ0FBQyxzQkFBRCxDQUF0Qjs7QUFDQSxRQUFNQyxJQUFJLEdBQUdGLE1BQU0sQ0FBQ0csS0FBcEI7O0FBRUFILFFBQU0sQ0FBQ0csS0FBUCxHQUFlLFVBQVNDLE9BQVQsRUFBa0I7QUFDN0IsUUFBSUEsT0FBTyxLQUFLTixTQUFaLElBQXlCTSxPQUFPLENBQUNDLFVBQVIsQ0FBbUJOLE1BQW5CLENBQTdCLEVBQXlEO0FBQ3JELFlBQU1PLFNBQVMsR0FBR0YsT0FBTyxDQUFDRyxNQUFSLENBQWVSLE1BQU0sQ0FBQ1MsTUFBdEIsQ0FBbEI7QUFDQSxVQUFJRixTQUFTLElBQUksT0FBakIsRUFBMEIsT0FBT0csMERBQVA7QUFDN0I7O0FBRUQsV0FBT1AsSUFBSSxDQUFDUSxLQUFMLENBQVcsSUFBWCxFQUFpQkMsU0FBakIsQ0FBUDtBQUNILEdBUEQ7O0FBU0EsU0FBTyxZQUFXO0FBQ2RYLFVBQU0sQ0FBQ0csS0FBUCxHQUFlRCxJQUFmO0FBQ0gsR0FGRDtBQUdILEMiLCJmaWxlIjoiLi9zcmMvbW9kdWxlbG9hZGVyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJkQXBpIGZyb20gXCIuL21vZHVsZXMvcGx1Z2luYXBpXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcclxuICAgIGNvbnN0IG5hbWVzcGFjZSA9IFwiYmV0dGVyZGlzY29yZFwiO1xyXG4gICAgY29uc3QgcHJlZml4ID0gYCR7bmFtZXNwYWNlfS9gO1xyXG4gICAgY29uc3QgTW9kdWxlID0gcmVxdWlyZShcIm1vZHVsZVwiKTtcclxuICAgIGNvbnN0IGxvYWQgPSBNb2R1bGUuX2xvYWQ7XHJcblxyXG4gICAgTW9kdWxlLl9sb2FkID0gZnVuY3Rpb24ocmVxdWVzdCkge1xyXG4gICAgICAgIGlmIChyZXF1ZXN0ID09PSBuYW1lc3BhY2UgfHwgcmVxdWVzdC5zdGFydHNXaXRoKHByZWZpeCkpIHtcclxuICAgICAgICAgICAgY29uc3QgcmVxdWVzdGVkID0gcmVxdWVzdC5zdWJzdHIocHJlZml4Lmxlbmd0aCk7XHJcbiAgICAgICAgICAgIGlmIChyZXF1ZXN0ZWQgPT0gXCJiZGFwaVwiKSByZXR1cm4gQmRBcGk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gbG9hZC5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgTW9kdWxlLl9sb2FkID0gbG9hZDtcclxuICAgIH07XHJcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/moduleloader.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _modules_pluginapi__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./modules/pluginapi */ \"./src/modules/pluginapi.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n const namespace = \"betterdiscord\";\n const prefix = `${namespace}/`;\n\n const Module = __webpack_require__(/*! module */ \"module\");\n\n const load = Module._load;\n\n Module._load = function (request) {\n if (request === namespace || request.startsWith(prefix)) {\n const requested = request.substr(prefix.length);\n if (requested == \"bdapi\") return _modules_pluginapi__WEBPACK_IMPORTED_MODULE_0__[\"default\"];\n }\n\n return load.apply(this, arguments);\n };\n\n return function () {\n Module._load = load;\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlbG9hZGVyLmpzP2I5YzMiXSwibmFtZXMiOlsibmFtZXNwYWNlIiwicHJlZml4IiwiTW9kdWxlIiwicmVxdWlyZSIsImxvYWQiLCJfbG9hZCIsInJlcXVlc3QiLCJzdGFydHNXaXRoIiwicmVxdWVzdGVkIiwic3Vic3RyIiwibGVuZ3RoIiwiQmRBcGkiLCJhcHBseSIsImFyZ3VtZW50cyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBRWUsMkVBQVc7QUFDdEIsUUFBTUEsU0FBUyxHQUFHLGVBQWxCO0FBQ0EsUUFBTUMsTUFBTSxHQUFJLEdBQUVELFNBQVUsR0FBNUI7O0FBQ0EsUUFBTUUsTUFBTSxHQUFHQyxtQkFBTyxDQUFDLHNCQUFELENBQXRCOztBQUNBLFFBQU1DLElBQUksR0FBR0YsTUFBTSxDQUFDRyxLQUFwQjs7QUFFQUgsUUFBTSxDQUFDRyxLQUFQLEdBQWUsVUFBU0MsT0FBVCxFQUFrQjtBQUM3QixRQUFJQSxPQUFPLEtBQUtOLFNBQVosSUFBeUJNLE9BQU8sQ0FBQ0MsVUFBUixDQUFtQk4sTUFBbkIsQ0FBN0IsRUFBeUQ7QUFDckQsWUFBTU8sU0FBUyxHQUFHRixPQUFPLENBQUNHLE1BQVIsQ0FBZVIsTUFBTSxDQUFDUyxNQUF0QixDQUFsQjtBQUNBLFVBQUlGLFNBQVMsSUFBSSxPQUFqQixFQUEwQixPQUFPRywwREFBUDtBQUM3Qjs7QUFFRCxXQUFPUCxJQUFJLENBQUNRLEtBQUwsQ0FBVyxJQUFYLEVBQWlCQyxTQUFqQixDQUFQO0FBQ0gsR0FQRDs7QUFTQSxTQUFPLFlBQVc7QUFDZFgsVUFBTSxDQUFDRyxLQUFQLEdBQWVELElBQWY7QUFDSCxHQUZEO0FBR0gsQyIsImZpbGUiOiIuL3NyYy9tb2R1bGVsb2FkZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQmRBcGkgZnJvbSBcIi4vbW9kdWxlcy9wbHVnaW5hcGlcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xyXG4gICAgY29uc3QgbmFtZXNwYWNlID0gXCJiZXR0ZXJkaXNjb3JkXCI7XHJcbiAgICBjb25zdCBwcmVmaXggPSBgJHtuYW1lc3BhY2V9L2A7XHJcbiAgICBjb25zdCBNb2R1bGUgPSByZXF1aXJlKFwibW9kdWxlXCIpO1xyXG4gICAgY29uc3QgbG9hZCA9IE1vZHVsZS5fbG9hZDtcclxuXHJcbiAgICBNb2R1bGUuX2xvYWQgPSBmdW5jdGlvbihyZXF1ZXN0KSB7XHJcbiAgICAgICAgaWYgKHJlcXVlc3QgPT09IG5hbWVzcGFjZSB8fCByZXF1ZXN0LnN0YXJ0c1dpdGgocHJlZml4KSkge1xyXG4gICAgICAgICAgICBjb25zdCByZXF1ZXN0ZWQgPSByZXF1ZXN0LnN1YnN0cihwcmVmaXgubGVuZ3RoKTtcclxuICAgICAgICAgICAgaWYgKHJlcXVlc3RlZCA9PSBcImJkYXBpXCIpIHJldHVybiBCZEFwaTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBsb2FkLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiBmdW5jdGlvbigpIHtcclxuICAgICAgICBNb2R1bGUuX2xvYWQgPSBsb2FkO1xyXG4gICAgfTtcclxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/moduleloader.js\n"); /***/ }), @@ -395,7 +394,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _mod /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return AddonManager; });\n/* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utilities */ \"./src/modules/utilities.js\");\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./logger */ \"./src/modules/logger.js\");\n/* harmony import */ var _settingsmanager__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./settingsmanager */ \"./src/modules/settingsmanager.js\");\n/* harmony import */ var _emitter__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./emitter */ \"./src/modules/emitter.js\");\n/* harmony import */ var _datastore__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./datastore */ \"./src/modules/datastore.js\");\n/* harmony import */ var _structs_addonerror__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../structs/addonerror */ \"./src/structs/addonerror.js\");\n/* harmony import */ var _structs_metaerror__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../structs/metaerror */ \"./src/structs/metaerror.js\");\n/* harmony import */ var _ui_toasts__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../ui/toasts */ \"./src/ui/toasts.js\");\n/* harmony import */ var _discordmodules__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./discordmodules */ \"./src/modules/discordmodules.js\");\n/* harmony import */ var _strings__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./strings */ \"./src/modules/strings.js\");\n/* harmony import */ var _ui_misc_addoneditor__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../ui/misc/addoneditor */ \"./src/ui/misc/addoneditor.jsx\");\n/* harmony import */ var _ui_floatingwindows__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../ui/floatingwindows */ \"./src/ui/floatingwindows.js\");\n\n\n\n\n\n\n\n\n\n\n\n\nconst React = _discordmodules__WEBPACK_IMPORTED_MODULE_8__[\"default\"].React;\n\nconst path = __webpack_require__(/*! path */ \"path\");\n\nconst fs = __webpack_require__(/*! fs */ \"fs\");\n\nconst Module = __webpack_require__(/*! module */ \"module\").Module;\n\nModule.globalPaths.push(path.resolve(__webpack_require__(/*! electron */ \"electron\").remote.app.getAppPath(), \"node_modules\"));\nconst splitRegex = /[^\\S\\r\\n]*?\\r?(?:\\r\\n|\\n)[^\\S\\r\\n]*?\\*[^\\S\\r\\n]?/;\nconst escapedAtRegex = /^\\\\@/;\n\nconst stripBOM = function (fileContent) {\n if (fileContent.charCodeAt(0) === 0xFEFF) {\n fileContent = fileContent.slice(1);\n }\n\n return fileContent;\n};\n\nclass AddonManager {\n get name() {\n return \"\";\n }\n\n get moduleExtension() {\n return \"\";\n }\n\n get extension() {\n return \"\";\n }\n\n get addonFolder() {\n return \"\";\n }\n\n get language() {\n return \"\";\n }\n\n get prefix() {\n return \"addon\";\n }\n\n get collection() {\n return \"settings\";\n }\n\n get category() {\n return \"addons\";\n }\n\n get id() {\n return \"autoReload\";\n }\n\n emit(event, ...args) {\n return _emitter__WEBPACK_IMPORTED_MODULE_3__[\"default\"].emit(`${this.prefix}-${event}`, ...args);\n }\n\n constructor() {\n this.timeCache = {};\n this.addonList = [];\n this.state = {};\n }\n\n initialize() {\n this.originalRequire = Module._extensions[this.moduleExtension];\n Module._extensions[this.moduleExtension] = this.getAddonRequire();\n _settingsmanager__WEBPACK_IMPORTED_MODULE_2__[\"default\"].on(this.collection, this.category, this.id, enabled => {\n if (enabled) this.watchAddons();else this.unwatchAddons();\n });\n return this.loadAllAddons();\n } // Subclasses should overload this and modify the addon object as needed to fully load it\n\n\n initializeAddon() {\n return;\n } // Subclasses should overload this and modify the fileContent as needed to require() the file\n\n\n getFileModification(module, fileContent) {\n return fileContent;\n }\n\n startAddon() {\n return;\n }\n\n stopAddon() {\n return;\n }\n\n loadState() {\n const saved = _datastore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].getData(`${this.prefix}s`);\n if (!saved) return;\n Object.assign(this.state, saved);\n }\n\n saveState() {\n _datastore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].setData(`${this.prefix}s`, this.state);\n }\n\n watchAddons() {\n if (this.watcher) return _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].error(this.name, `Already watching ${this.prefix} addons.`);\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].log(this.name, `Starting to watch ${this.prefix} addons.`);\n this.watcher = fs.watch(this.addonFolder, {\n persistent: false\n }, async (eventType, filename) => {\n if (!eventType || !filename || !filename.endsWith(this.extension)) return;\n await new Promise(r => setTimeout(r, 100));\n\n try {\n const stats = fs.statSync(path.resolve(this.addonFolder, filename));\n if (!stats.isFile()) return;\n if (!stats || !stats.mtime || !stats.mtime.getTime()) return;\n if (typeof stats.mtime.getTime() !== \"number\") return;\n if (this.timeCache[filename] == stats.mtime.getTime()) return;\n this.timeCache[filename] = stats.mtime.getTime();\n if (eventType == \"rename\") this.loadAddon(filename, true);\n if (eventType == \"change\") this.reloadAddon(filename, true);\n } catch (err) {\n if (err.code !== \"ENOENT\") return;\n delete this.timeCache[filename];\n this.unloadAddon(filename, true);\n }\n });\n }\n\n unwatchAddons() {\n if (!this.watcher) return _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].error(this.name, `Was not watching ${this.prefix} addons.`);\n this.watcher.close();\n delete this.watcher;\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].log(this.name, `No longer watching ${this.prefix} addons.`);\n }\n\n extractMeta(fileContent) {\n const firstLine = fileContent.split(\"\\n\")[0];\n const hasOldMeta = firstLine.includes(\"//META\");\n if (hasOldMeta) return this.parseOldMeta(fileContent);\n const hasNewMeta = firstLine.includes(\"/**\");\n if (hasNewMeta) return this.parseNewMeta(fileContent);\n throw new _structs_metaerror__WEBPACK_IMPORTED_MODULE_6__[\"default\"](\"META was not found.\");\n }\n\n parseOldMeta(fileContent) {\n const meta = fileContent.split(\"\\n\")[0];\n const metaData = meta.substring(meta.lastIndexOf(\"//META\") + 6, meta.lastIndexOf(\"*//\"));\n const parsed = _utilities__WEBPACK_IMPORTED_MODULE_0__[\"default\"].testJSON(metaData);\n if (!parsed) throw new _structs_metaerror__WEBPACK_IMPORTED_MODULE_6__[\"default\"](\"META could not be parsed.\");\n if (!parsed.name) throw new _structs_metaerror__WEBPACK_IMPORTED_MODULE_6__[\"default\"](\"META missing name data.\");\n parsed.format = \"json\";\n return parsed;\n }\n\n parseNewMeta(fileContent) {\n const block = fileContent.split(\"/**\", 2)[1].split(\"*/\", 1)[0];\n const out = {};\n let field = \"\";\n let accum = \"\";\n\n for (const line of block.split(splitRegex)) {\n if (line.length === 0) continue;\n\n if (line.charAt(0) === \"@\" && line.charAt(1) !== \" \") {\n out[field] = accum;\n const l = line.indexOf(\" \");\n field = line.substr(1, l - 1);\n accum = line.substr(l + 1);\n } else {\n accum += \" \" + line.replace(\"\\\\n\", \"\\n\").replace(escapedAtRegex, \"@\");\n }\n }\n\n out[field] = accum.trim();\n delete out[\"\"];\n out.format = \"jsdoc\";\n return out;\n }\n\n getAddonRequire() {\n const self = this; // const baseFolder = this.addonFolder;\n\n const originalRequire = this.originalRequire;\n return function (module, filename) {\n const possiblePath = path.resolve(self.addonFolder, path.basename(filename));\n if (!fs.existsSync(possiblePath) || filename !== fs.realpathSync(possiblePath)) return Reflect.apply(originalRequire, this, arguments);\n let fileContent = fs.readFileSync(filename, \"utf8\");\n fileContent = stripBOM(fileContent);\n const stats = fs.statSync(filename);\n const meta = self.extractMeta(fileContent);\n if (!meta.author) meta.author = _strings__WEBPACK_IMPORTED_MODULE_9__[\"default\"].Addons.unknownAuthor;\n if (!meta.version) meta.version = \"???\";\n if (!meta.description) meta.description = _strings__WEBPACK_IMPORTED_MODULE_9__[\"default\"].Addons.noDescription;\n meta.id = meta.name;\n meta.filename = path.basename(filename);\n meta.added = stats.atimeMs;\n meta.modified = stats.mtimeMs;\n meta.size = stats.size;\n fileContent = self.getFileModification(module, fileContent, meta);\n\n module._compile(fileContent, filename);\n };\n } // Subclasses should use the return (if not AddonError) and push to this.addonList\n\n\n loadAddon(filename, shouldToast = false) {\n if (typeof filename === \"undefined\") return;\n\n try {\n require(path.resolve(this.addonFolder, filename));\n } catch (error) {\n return new _structs_addonerror__WEBPACK_IMPORTED_MODULE_5__[\"default\"](filename, filename, \"Could not be compiled.\", {\n message: error.message,\n stack: error.stack\n });\n }\n\n const addon = require(path.resolve(this.addonFolder, filename));\n\n if (this.addonList.find(c => c.id == addon.id)) return new _structs_addonerror__WEBPACK_IMPORTED_MODULE_5__[\"default\"](addon.name, filename, `There is already a plugin with name ${addon.name}`);\n const error = this.initializeAddon(addon);\n if (error) return error;\n this.addonList.push(addon);\n if (shouldToast) _ui_toasts__WEBPACK_IMPORTED_MODULE_7__[\"default\"].success(`${addon.name} v${addon.version} was loaded.`);\n this.emit(\"loaded\", addon.id);\n if (!this.state[addon.id]) return this.state[addon.id] = false;\n return this.startAddon(addon);\n }\n\n unloadAddon(idOrFileOrAddon, shouldToast = true, isReload = false) {\n const addon = typeof idOrFileOrAddon == \"string\" ? this.addonList.find(c => c.id == idOrFileOrAddon || c.filename == idOrFileOrAddon) : idOrFileOrAddon;\n if (!addon) return false;\n if (this.state[addon.id]) isReload ? this.stopAddon(addon) : this.disableAddon(addon);\n delete require.cache[require.resolve(path.resolve(this.addonFolder, addon.filename))];\n this.addonList.splice(this.addonList.indexOf(addon), 1);\n this.emit(\"unloaded\", addon.id);\n if (shouldToast) _ui_toasts__WEBPACK_IMPORTED_MODULE_7__[\"default\"].success(`${addon.name} was unloaded.`);\n return true;\n }\n\n reloadAddon(idOrFileOrAddon, shouldToast = true) {\n const addon = typeof idOrFileOrAddon == \"string\" ? this.addonList.find(c => c.id == idOrFileOrAddon || c.filename == idOrFileOrAddon) : idOrFileOrAddon;\n const didUnload = this.unloadAddon(addon, shouldToast, true);\n if (!didUnload) return didUnload;\n return this.loadAddon(addon.filename, shouldToast);\n }\n\n isLoaded(idOrFile) {\n const addon = this.addonList.find(c => c.id == idOrFile || c.filename == idOrFile);\n if (!addon) return false;\n return true;\n }\n\n isEnabled(idOrFile) {\n const addon = this.addonList.find(c => c.id == idOrFile || c.filename == idOrFile);\n if (!addon) return false;\n return this.state[addon.id];\n }\n\n getAddon(idOrFile) {\n return this.addonList.find(c => c.id == idOrFile || c.filename == idOrFile);\n }\n\n enableAddon(idOrAddon) {\n const addon = typeof idOrAddon == \"string\" ? this.addonList.find(p => p.id == idOrAddon) : idOrAddon;\n if (!addon) return;\n if (this.state[addon.id]) return;\n this.state[addon.id] = true;\n this.startAddon(addon);\n this.saveState();\n }\n\n disableAddon(idOrAddon) {\n const addon = typeof idOrAddon == \"string\" ? this.addonList.find(p => p.id == idOrAddon) : idOrAddon;\n if (!addon) return;\n if (!this.state[addon.id]) return;\n this.state[addon.id] = false;\n this.stopAddon(addon);\n this.saveState();\n }\n\n toggleAddon(id) {\n if (this.state[id]) this.disableAddon(id);else this.enableAddon(id);\n }\n\n loadNewAddons() {\n const files = fs.readdirSync(this.addonFolder);\n const removed = this.addonList.filter(t => !files.includes(t.filename)).map(c => c.id);\n const added = files.filter(f => !this.addonList.find(t => t.filename == f) && f.endsWith(this.extension) && fs.statSync(path.resolve(this.addonFolder, f)).isFile());\n return {\n added,\n removed\n };\n }\n\n updateList() {\n const results = this.loadNewAddons();\n\n for (const filename of results.added) this.loadAddon(filename);\n\n for (const name of results.removed) this.unloadAddon(name);\n }\n\n loadAllAddons() {\n this.loadState();\n const errors = [];\n const files = fs.readdirSync(this.addonFolder);\n\n for (const filename of files) {\n if (!fs.statSync(path.resolve(this.addonFolder, filename)).isFile() || !filename.endsWith(this.extension)) continue;\n const addon = this.loadAddon(filename, false);\n if (addon instanceof _structs_addonerror__WEBPACK_IMPORTED_MODULE_5__[\"default\"]) errors.push(addon);\n }\n\n this.saveState();\n if (_settingsmanager__WEBPACK_IMPORTED_MODULE_2__[\"default\"].get(this.collection, this.category, this.id)) this.watchAddons();\n return errors;\n }\n\n deleteAddon(idOrFileOrAddon) {\n const addon = typeof idOrFileOrAddon == \"string\" ? this.addonList.find(c => c.id == idOrFileOrAddon || c.filename == idOrFileOrAddon) : idOrFileOrAddon;\n return fs.unlinkSync(path.resolve(this.addonFolder, addon.filename));\n }\n\n saveAddon(idOrFileOrAddon, content) {\n const addon = typeof idOrFileOrAddon == \"string\" ? this.addonList.find(c => c.id == idOrFileOrAddon || c.filename == idOrFileOrAddon) : idOrFileOrAddon;\n return fs.writeFileSync(path.resolve(this.addonFolder, addon.filename), content);\n }\n\n editAddon(idOrFileOrAddon, system) {\n const addon = typeof idOrFileOrAddon == \"string\" ? this.addonList.find(c => c.id == idOrFileOrAddon || c.filename == idOrFileOrAddon) : idOrFileOrAddon;\n const fullPath = path.resolve(this.addonFolder, addon.filename);\n if (typeof system == \"undefined\") system = _settingsmanager__WEBPACK_IMPORTED_MODULE_2__[\"default\"].get(\"settings\", \"addons\", \"editAction\") == \"system\";\n if (system) return __webpack_require__(/*! electron */ \"electron\").shell.openItem(`${fullPath}`);\n return this.openDetached(addon);\n }\n\n openDetached(addon) {\n const fullPath = path.resolve(this.addonFolder, addon.filename);\n const content = fs.readFileSync(fullPath).toString();\n const editorRef = React.createRef();\n const editor = React.createElement(_ui_misc_addoneditor__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n id: \"bd-floating-editor-\" + addon.name,\n ref: editorRef,\n content: content,\n save: this.saveAddon.bind(this, addon),\n openNative: this.editAddon.bind(this, addon, true),\n language: this.language\n });\n _ui_floatingwindows__WEBPACK_IMPORTED_MODULE_11__[\"default\"].open({\n onClose: () => {\n this.isDetached = false;\n },\n onResize: () => {\n if (!editorRef || !editorRef.current || !editorRef.current.resize) return;\n editorRef.current.resize();\n },\n title: addon.name,\n id: content.id,\n className: \"floating-addon-window\",\n height: 470,\n width: 410,\n center: true,\n resizable: true,\n children: editor,\n confirmClose: () => {\n if (!editorRef || !editorRef.current) return false;\n return editorRef.current.hasUnsavedChanges;\n },\n confirmationText: _strings__WEBPACK_IMPORTED_MODULE_9__[\"default\"].Addons.confirmationText.format({\n name: addon.name\n })\n });\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL21vZHVsZXMvYWRkb25tYW5hZ2VyLmpzP2NlYTkiXSwibmFtZXMiOlsiUmVhY3QiLCJEaXNjb3JkTW9kdWxlcyIsInBhdGgiLCJyZXF1aXJlIiwiZnMiLCJNb2R1bGUiLCJnbG9iYWxQYXRocyIsInB1c2giLCJyZXNvbHZlIiwicmVtb3RlIiwiYXBwIiwiZ2V0QXBwUGF0aCIsInNwbGl0UmVnZXgiLCJlc2NhcGVkQXRSZWdleCIsInN0cmlwQk9NIiwiZmlsZUNvbnRlbnQiLCJjaGFyQ29kZUF0Iiwic2xpY2UiLCJBZGRvbk1hbmFnZXIiLCJuYW1lIiwibW9kdWxlRXh0ZW5zaW9uIiwiZXh0ZW5zaW9uIiwiYWRkb25Gb2xkZXIiLCJsYW5ndWFnZSIsInByZWZpeCIsImNvbGxlY3Rpb24iLCJjYXRlZ29yeSIsImlkIiwiZW1pdCIsImV2ZW50IiwiYXJncyIsIkV2ZW50cyIsImNvbnN0cnVjdG9yIiwidGltZUNhY2hlIiwiYWRkb25MaXN0Iiwic3RhdGUiLCJpbml0aWFsaXplIiwib3JpZ2luYWxSZXF1aXJlIiwiX2V4dGVuc2lvbnMiLCJnZXRBZGRvblJlcXVpcmUiLCJTZXR0aW5ncyIsIm9uIiwiZW5hYmxlZCIsIndhdGNoQWRkb25zIiwidW53YXRjaEFkZG9ucyIsImxvYWRBbGxBZGRvbnMiLCJpbml0aWFsaXplQWRkb24iLCJnZXRGaWxlTW9kaWZpY2F0aW9uIiwibW9kdWxlIiwic3RhcnRBZGRvbiIsInN0b3BBZGRvbiIsImxvYWRTdGF0ZSIsInNhdmVkIiwiRGF0YVN0b3JlIiwiZ2V0RGF0YSIsIk9iamVjdCIsImFzc2lnbiIsInNhdmVTdGF0ZSIsInNldERhdGEiLCJ3YXRjaGVyIiwiTG9nZ2VyIiwiZXJyb3IiLCJsb2ciLCJ3YXRjaCIsInBlcnNpc3RlbnQiLCJldmVudFR5cGUiLCJmaWxlbmFtZSIsImVuZHNXaXRoIiwiUHJvbWlzZSIsInIiLCJzZXRUaW1lb3V0Iiwic3RhdHMiLCJzdGF0U3luYyIsImlzRmlsZSIsIm10aW1lIiwiZ2V0VGltZSIsImxvYWRBZGRvbiIsInJlbG9hZEFkZG9uIiwiZXJyIiwiY29kZSIsInVubG9hZEFkZG9uIiwiY2xvc2UiLCJleHRyYWN0TWV0YSIsImZpcnN0TGluZSIsInNwbGl0IiwiaGFzT2xkTWV0YSIsImluY2x1ZGVzIiwicGFyc2VPbGRNZXRhIiwiaGFzTmV3TWV0YSIsInBhcnNlTmV3TWV0YSIsIk1ldGFFcnJvciIsIm1ldGEiLCJtZXRhRGF0YSIsInN1YnN0cmluZyIsImxhc3RJbmRleE9mIiwicGFyc2VkIiwiVXRpbGl0aWVzIiwidGVzdEpTT04iLCJmb3JtYXQiLCJibG9jayIsIm91dCIsImZpZWxkIiwiYWNjdW0iLCJsaW5lIiwibGVuZ3RoIiwiY2hhckF0IiwibCIsImluZGV4T2YiLCJzdWJzdHIiLCJyZXBsYWNlIiwidHJpbSIsInNlbGYiLCJwb3NzaWJsZVBhdGgiLCJiYXNlbmFtZSIsImV4aXN0c1N5bmMiLCJyZWFscGF0aFN5bmMiLCJSZWZsZWN0IiwiYXBwbHkiLCJhcmd1bWVudHMiLCJyZWFkRmlsZVN5bmMiLCJhdXRob3IiLCJTdHJpbmdzIiwiQWRkb25zIiwidW5rbm93bkF1dGhvciIsInZlcnNpb24iLCJkZXNjcmlwdGlvbiIsIm5vRGVzY3JpcHRpb24iLCJhZGRlZCIsImF0aW1lTXMiLCJtb2RpZmllZCIsIm10aW1lTXMiLCJzaXplIiwiX2NvbXBpbGUiLCJzaG91bGRUb2FzdCIsIl9fbm9uX3dlYnBhY2tfcmVxdWlyZV9fIiwiQWRkb25FcnJvciIsIm1lc3NhZ2UiLCJzdGFjayIsImFkZG9uIiwiZmluZCIsImMiLCJUb2FzdHMiLCJzdWNjZXNzIiwiaWRPckZpbGVPckFkZG9uIiwiaXNSZWxvYWQiLCJkaXNhYmxlQWRkb24iLCJjYWNoZSIsInNwbGljZSIsImRpZFVubG9hZCIsImlzTG9hZGVkIiwiaWRPckZpbGUiLCJpc0VuYWJsZWQiLCJnZXRBZGRvbiIsImVuYWJsZUFkZG9uIiwiaWRPckFkZG9uIiwicCIsInRvZ2dsZUFkZG9uIiwibG9hZE5ld0FkZG9ucyIsImZpbGVzIiwicmVhZGRpclN5bmMiLCJyZW1vdmVkIiwiZmlsdGVyIiwidCIsIm1hcCIsImYiLCJ1cGRhdGVMaXN0IiwicmVzdWx0cyIsImVycm9ycyIsImdldCIsImRlbGV0ZUFkZG9uIiwidW5saW5rU3luYyIsInNhdmVBZGRvbiIsImNvbnRlbnQiLCJ3cml0ZUZpbGVTeW5jIiwiZWRpdEFkZG9uIiwic3lzdGVtIiwiZnVsbFBhdGgiLCJzaGVsbCIsIm9wZW5JdGVtIiwib3BlbkRldGFjaGVkIiwidG9TdHJpbmciLCJlZGl0b3JSZWYiLCJjcmVhdGVSZWYiLCJlZGl0b3IiLCJjcmVhdGVFbGVtZW50IiwiQWRkb25FZGl0b3IiLCJyZWYiLCJzYXZlIiwiYmluZCIsIm9wZW5OYXRpdmUiLCJGbG9hdGluZ1dpbmRvd3MiLCJvcGVuIiwib25DbG9zZSIsImlzRGV0YWNoZWQiLCJvblJlc2l6ZSIsImN1cnJlbnQiLCJyZXNpemUiLCJ0aXRsZSIsImNsYXNzTmFtZSIsImhlaWdodCIsIndpZHRoIiwiY2VudGVyIiwicmVzaXphYmxlIiwiY2hpbGRyZW4iLCJjb25maXJtQ2xvc2UiLCJoYXNVbnNhdmVkQ2hhbmdlcyIsImNvbmZpcm1hdGlvblRleHQiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQSxNQUFNQSxLQUFLLEdBQUdDLHVEQUFjLENBQUNELEtBQTdCOztBQUVBLE1BQU1FLElBQUksR0FBR0MsbUJBQU8sQ0FBQyxrQkFBRCxDQUFwQjs7QUFDQSxNQUFNQyxFQUFFLEdBQUdELG1CQUFPLENBQUMsY0FBRCxDQUFsQjs7QUFDQSxNQUFNRSxNQUFNLEdBQUdGLG1CQUFPLENBQUMsc0JBQUQsQ0FBUCxDQUFrQkUsTUFBakM7O0FBQ0FBLE1BQU0sQ0FBQ0MsV0FBUCxDQUFt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ZHVsZXMvYWRkb25tYW5hZ2VyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFV0aWxpdGllcyBmcm9tIFwiLi91dGlsaXRpZXNcIjtcclxuaW1wb3J0IExvZ2dlciBmcm9tIFwiLi9sb2dnZXJcIjtcclxuaW1wb3J0IFNldHRpbmdzIGZyb20gXCIuL3NldHRpbmdzbWFuYWdlclwiO1xyXG5pbXBvcnQgRXZlbnRzIGZyb20gXCIuL2VtaXR0ZXJcIjtcclxuaW1wb3J0IERhdGFTdG9yZSBmcm9tIFwiLi9kYXRhc3RvcmVcIjtcclxuaW1wb3J0IEFkZG9uRXJyb3IgZnJvbSBcIi4uL3N0cnVjdHMvYWRkb25lcnJvclwiO1xyXG5pbXBvcnQgTWV0YUVycm9yIGZyb20gXCIuLi9zdHJ1Y3RzL21ldGFlcnJvclwiO1xyXG5pbXBvcnQgVG9hc3RzIGZyb20gXCIuLi91aS90b2FzdHNcIjtcclxuaW1wb3J0IERpc2NvcmRNb2R1bGVzIGZyb20gXCIuL2Rpc2NvcmRtb2R1bGVzXCI7XHJcbmltcG9ydCBTdHJpbmdzIGZyb20gXCIuL3N0cmluZ3NcIjtcclxuXHJcbmltcG9ydCBBZGRvbkVkaXRvciBmcm9tIFwiLi4vdWkvbWlzYy9hZGRvbmVkaXRvclwiO1xyXG5pbXBvcnQgRmxvYXRpbmdXaW5kb3dzIGZyb20gXCIuLi91aS9mbG9hdGluZ3dpbmRvd3NcIjtcclxuXHJcbmNvbnN0IFJlYWN0ID0gRGlzY29yZE1vZHVsZXMuUmVhY3Q7XHJcblxyXG5jb25zdCBwYXRoID0gcmVxdWlyZShcInBhdGhcIik7XHJcbmNvbnN0IGZzID0gcmVxdWlyZShcImZzXCIpO1xyXG5jb25zdCBNb2R1bGUgPSByZXF1aXJlKFwibW9kdWxlXCIpLk1vZHVsZTtcclxuTW9kdWxlLmdsb2JhbFBhdGhzLnB1c2gocGF0aC5yZXNvbHZlKHJlcXVpcmUoXCJlbGVjdHJvblwiKS5yZW1vdGUuYXBwLmdldEFwcFBhdGgoKSwgXCJub2RlX21vZHVsZXNcIikpO1xyXG5cclxuY29uc3Qgc3BsaXRSZWdleCA9IC9bXlxcU1xcclxcbl0qP1xccj8oPzpcXHJcXG58XFxuKVteXFxTXFxyXFxuXSo/XFwqW15cXFNcXHJcXG5dPy87XHJcbmNvbnN0IGVzY2FwZWRBdFJlZ2V4ID0gL15cXFxcQC87XHJcblxyXG5jb25zdCBzdHJpcEJPTSA9IGZ1bmN0aW9uKGZpbGVDb250ZW50KSB7XHJcbiAgICBpZiAoZmlsZUNvbnRlbnQuY2hhckNvZGVBdCgwKSA9PT0gMHhGRUZGKSB7XHJcbiAgICAgICAgZmlsZUNvbnRlbnQgPSBmaWxlQ29udGVudC5zbGljZSgxKTtcclxuICAgIH1cclxuICAgIHJldHVybiBmaWxlQ29udGVudDtcclxufTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEFkZG9uTWFuYWdlciB7XHJcblxyXG4gICAgZ2V0IG5hbWUoKSB7cmV0dXJuIFwiXCI7fVxyXG4gICAgZ2V0IG1vZHVsZUV4dGVuc2lvbigpIHtyZXR1cm4gXCJcIjt9XHJcbiAgICBnZXQgZXh0ZW5zaW9uKCkge3JldHVybiBcIlwiO31cclxuICAgIGdldCBhZGRvbkZvbGRlcigpIHtyZXR1cm4gXCJcIjt9XHJcbiAgICBnZXQgbGFuZ3VhZ2UoKSB7cmV0dXJuIFwiXCI7fVxyXG4gICAgZ2V0IHByZWZpeCgpIHtyZXR1cm4gXCJhZGRvblwiO31cclxuICAgIGdldCBjb2xsZWN0aW9uKCkge3JldHVybiBcInNldHRpbmdzXCI7fVxyXG4gICAgZ2V0IGNhdGVnb3J5KCkge3JldHVybiBcImFkZG9uc1wiO31cclxuICAgIGdldCBpZCgpIHtyZXR1cm4gXCJhdXRvUmVsb2FkXCI7fVxyXG4gICAgZW1pdChldmVudCwgLi4uYXJncykge3JldHVybiBFdmVudHMuZW1pdChgJHt0aGlzLnByZWZpeH0tJHtldmVudH1gLCAuLi5hcmdzKTt9XHJcblxyXG4gICAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAgICAgdGhpcy50aW1lQ2FjaGUgPSB7fTtcclxuICAgICAgICB0aGlzLmFkZG9uTGlzdCA9IFtdO1xyXG4gICAgICAgIHRoaXMuc3RhdGUgPSB7fTtcclxuICAgIH1cclxuXHJcbiAgICBpbml0aWFsaXplKCkge1xyXG4gICAgICAgIHRoaXMub3JpZ2luYWxSZXF1aXJlID0gTW9kdWxlLl9leHRlbnNpb25zW3RoaXMubW9kdWxlRXh0ZW5zaW9uXTtcclxuICAgICAgICBNb2R1bGUuX2V4dGVuc2lvbnNbdGhpcy5tb2R1bGVFeHRlbnNpb25dID0gdGhpcy5nZXRBZGRvblJlcXVpcmUoKTtcclxuICAgICAgICBTZXR0aW5ncy5vbih0aGlzLmNvbGxlY3Rpb24sIHRoaXMuY2F0ZWdvcnksIHRoaXMuaWQsIChlbmFibGVkKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChlbmFibGVkKSB0aGlzLndhdGNoQWRkb25zKCk7XHJcbiAgICAgICAgICAgIGVsc2UgdGhpcy51bndhdGNoQWRkb25zKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZEFsbEFkZG9ucygpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFN1YmNsYXNzZXMgc2hvdWxkIG92ZXJsb2FkIHRoaXMgYW5kIG1vZGlmeSB0aGUgYWRkb24gb2JqZWN0IGFzIG5lZWRlZCB0byBmdWxseSBsb2FkIGl0XHJcbiAgICBpbml0aWFsaXplQWRkb24oKSB7cmV0dXJuO31cclxuXHJcbiAgICAvLyBTdWJjbGFzc2VzIHNob3VsZCBvdmVybG9hZCB0aGlzIGFuZCBtb2RpZnkgdGhlIGZpbGVDb250ZW50IGFzIG5lZWRlZCB0byByZXF1aXJlKCkgdGhlIGZpbGVcclxuICAgIGdldEZpbGVNb2RpZmljYXRpb24obW9kdWxlLCBmaWxlQ29udGVudCkge3JldHVybiBmaWxlQ29udGVudDt9XHJcblxyXG4gICAgc3RhcnRBZGRvbigpIHtyZXR1cm47fVxyXG4gICAgc3RvcEFkZG9uKCkge3JldHVybjt9XHJcblxyXG4gICAgbG9hZFN0YXRlKCkge1xyXG4gICAgICAgIGNvbnN0IHNhdmVkID0gRGF0YVN0b3JlLmdldERhdGEoYCR7dGhpcy5wcmVmaXh9c2ApO1xyXG4gICAgICAgIGlmICghc2F2ZWQpIHJldHVybjtcclxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMuc3RhdGUsIHNhdmVkKTtcclxuICAgIH1cclxuXHJcbiAgICBzYXZlU3RhdGUoKSB7XHJcbiAgICAgICAgRGF0YVN0b3JlLnNldERhdGEoYCR7dGhpcy5wcmVmaXh9c2AsIHRoaXMuc3RhdGUpO1xyXG4gICAgfVxyXG5cclxuICAgIHdhdGNoQWRkb25zKCkge1xyXG4gICAgICAgIGlmICh0aGlzLndhdGNoZXIpIHJldHVybiBMb2dnZXIuZXJyb3IodGhpcy5uYW1lLCBgQWxyZWFkeSB3YXRjaGluZyAke3RoaXMucHJlZml4fSBhZGRvbnMuYCk7XHJcbiAgICAgICAgTG9nZ2VyLmxvZyh0aGlzLm5hbWUsIGBTdGFydGluZyB0byB3YXRjaCAke3RoaXMucHJlZml4fSBhZGRvbnMuYCk7XHJcbiAgICAgICAgdGhpcy53YXRjaGVyID0gZnMud2F0Y2godGhpcy5hZGRvbkZvbGRlciwge3BlcnNpc3RlbnQ6IGZhbHNlfSwgYXN5bmMgKGV2ZW50VHlwZSwgZmlsZW5hbWUpID0+IHtcclxuICAgICAgICAgICAgaWYgKCFldmVudFR5cGUgfHwgIWZpbGVuYW1lIHx8ICFmaWxlbmFtZS5lbmRzV2l0aCh0aGlzLmV4dGVuc2lvbikpIHJldHVybjtcclxuICAgICAgICAgICAgYXdhaXQgbmV3IFByb21pc2UociA9PiBzZXRUaW1lb3V0KHIsIDEwMCkpO1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgc3RhdHMgPSBmcy5zdGF0U3luYyhwYXRoLnJlc29sdmUodGhpcy5hZGRvbkZvbGRlciwgZmlsZW5hbWUpKTtcclxuICAgICAgICAgICAgICAgIGlmICghc3RhdHMuaXNGaWxlKCkpIHJldHVybjtcclxuICAgICAgICAgICAgICAgIGlmICghc3RhdHMgfHwgIXN0YXRzLm10aW1lIHx8ICFzdGF0cy5tdGltZS5nZXRUaW1lKCkpIHJldHVybjtcclxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Yoc3RhdHMubXRpbWUuZ2V0VGltZSgpKSAhPT0gXCJudW1iZXJcIikgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudGltZUNhY2hlW2ZpbGVuYW1lXSA9PSBzdGF0cy5tdGltZS5nZXRUaW1lKCkpIHJldHVybjtcclxuICAgICAgICAgICAgICAgIHRoaXMudGltZUNhY2hlW2ZpbGVuYW1lXSA9IHN0YXRzLm10aW1lLmdldFRpbWUoKTtcclxuICAgICAgICAgICAgICAgIGlmIChldmVudFR5cGUgPT0gXCJyZW5hbWVcIikgdGhpcy5sb2FkQWRkb24oZmlsZW5hbWUsIHRydWUpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50VHlwZSA9PSBcImNoYW5nZVwiKSB0aGlzLnJlbG9hZEFkZG9uKGZpbGVuYW1lLCB0cnVlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZXJyLmNvZGUgIT09IFwiRU5PRU5UXCIpIHJldHVybjtcclxuICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLnRpbWVDYWNoZVtmaWxlbmFtZV07XHJcbiAgICAgICAgICAgICAgICB0aGlzLnVubG9hZEFkZG9uKGZpbGVuYW1lLCB0cnVlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHVud2F0Y2hBZGRvbnMoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLndhdGNoZXIpIHJldHVybiBMb2dnZXIuZXJyb3IodGhpcy5uYW1lLCBgV2FzIG5vdCB3YXRjaGluZyAke3RoaXMucHJlZml4fSBhZGRvbnMuYCk7XHJcbiAgICAgICAgdGhpcy53YXRjaGVyLmNsb3NlKCk7XHJcbiAgICAgICAgZGVsZXRlIHRoaXMud2F0Y2hlcjtcclxuICAgICAgICBMb2dnZXIubG9nKHRoaXMubmFtZSwgYE5vIGxvbmdlciB3YXRjaGluZyAke3RoaXMucHJlZml4fSBhZGRvbnMuYCk7XHJcbiAgICB9XHJcblxyXG4gICAgZXh0cmFjdE1ldGEoZmlsZUNvbnRlbnQpIHtcclxuICAgICAgICBjb25zdCBmaXJzdExpbmUgPSBmaWxlQ29udGVudC5zcGxpdChcIlxcblwiKVswXTtcclxuICAgICAgICBjb25zdCBoYXNPbGRNZXRhID0gZmlyc3RMaW5lLmluY2x1ZGVzKFwiLy9NRVRBXCIpO1xyXG4gICAgICAgIGlmIChoYXNPbGRNZXRhKSByZXR1cm4gdGhpcy5wYXJzZU9sZE1ldGEoZmlsZUNvbnRlbnQpO1xyXG4gICAgICAgIGNvbnN0IGhhc05ld01ldGEgPSBmaXJzdExpbmUuaW5jbHVkZXMoXCIvKipcIik7XHJcbiAgICAgICAgaWYgKGhhc05ld01ldGEpIHJldHVybiB0aGlzLnBhcnNlTmV3TWV0YShmaWxlQ29udGVudCk7XHJcbiAgICAgICAgdGhyb3cgbmV3IE1ldGFFcnJvcihcIk1FVEEgd2FzIG5vdCBmb3VuZC5cIik7XHJcbiAgICB9XHJcblxyXG4gICAgcGFyc2VPbGRNZXRhKGZpbGVDb250ZW50KSB7XHJcbiAgICAgICAgY29uc3QgbWV0YSA9IGZpbGVDb250ZW50LnNwbGl0KFwiXFxuXCIpWzBdO1xyXG4gICAgICAgIGNvbnN0IG1ldGFEYXRhID0gbWV0YS5zdWJzdHJpbmcobWV0YS5sYXN0SW5kZXhPZihcIi8vTUVUQVwiKSArIDYsIG1ldGEubGFzdEluZGV4T2YoXCIqLy9cIikpO1xyXG4gICAgICAgIGNvbnN0IHBhcnNlZCA9IFV0aWxpdGllcy50ZXN0SlNPTihtZXRhRGF0YSk7XHJcbiAgICAgICAgaWYgKCFwYXJzZWQpIHRocm93IG5ldyBNZXRhRXJyb3IoXCJNRVRBIGNvdWxkIG5vdCBiZSBwYXJzZWQuXCIpO1xyXG4gICAgICAgIGlmICghcGFyc2VkLm5hbWUpIHRocm93IG5ldyBNZXRhRXJyb3IoXCJNRVRBIG1pc3NpbmcgbmFtZSBkYXRhLlwiKTtcclxuICAgICAgICBwYXJzZWQuZm9ybWF0ID0gXCJqc29uXCI7XHJcbiAgICAgICAgcmV0dXJuIHBhcnNlZDtcclxuICAgIH1cclxuXHJcbiAgICBwYXJzZU5ld01ldGEoZmlsZUNvbnRlbnQpIHtcclxuICAgICAgICBjb25zdCBibG9jayA9IGZpbGVDb250ZW50LnNwbGl0KFwiLyoqXCIsIDIpWzFdLnNwbGl0KFwiKi9cIiwgMSlbMF07XHJcbiAgICAgICAgY29uc3Qgb3V0ID0ge307XHJcbiAgICAgICAgbGV0IGZpZWxkID0gXCJcIjtcclxuICAgICAgICBsZXQgYWNjdW0gPSBcIlwiO1xyXG4gICAgICAgIGZvciAoY29uc3QgbGluZSBvZiBibG9jay5zcGxpdChzcGxpdFJlZ2V4KSkge1xyXG4gICAgICAgICAgICBpZiAobGluZS5sZW5ndGggPT09IDApIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICBpZiAobGluZS5jaGFyQXQoMCkgPT09IFwiQFwiICYmIGxpbmUuY2hhckF0KDEpICE9PSBcIiBcIikge1xyXG4gICAgICAgICAgICAgICAgb3V0W2ZpZWxkXSA9IGFjY3VtO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbCA9IGxpbmUuaW5kZXhPZihcIiBcIik7XHJcbiAgICAgICAgICAgICAgICBmaWVsZCA9IGxpbmUuc3Vic3RyKDEsIGwgLSAxKTtcclxuICAgICAgICAgICAgICAgIGFjY3VtID0gbGluZS5zdWJzdHIobCArIDEpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgYWNjdW0gKz0gXCIgXCIgKyBsaW5lLnJlcGxhY2UoXCJcXFxcblwiLCBcIlxcblwiKS5yZXBsYWNlKGVzY2FwZWRBdFJlZ2V4LCBcIkBcIik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgb3V0W2ZpZWxkXSA9IGFjY3VtLnRyaW0oKTtcclxuICAgICAgICBkZWxldGUgb3V0W1wiXCJdO1xyXG4gICAgICAgIG91dC5mb3JtYXQgPSBcImpzZG9jXCI7XHJcbiAgICAgICAgcmV0dXJuIG91dDtcclxuICAgIH1cclxuXHJcbiAgICBnZXRBZGRvblJlcXVpcmUoKSB7XHJcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XHJcbiAgICAgICAgLy8gY29uc3QgYmFzZUZvbGRlciA9IHRoaXMuYWRkb25Gb2xkZXI7XHJcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxSZXF1aXJlID0gdGhpcy5vcmlnaW5hbFJlcXVpcmU7XHJcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKG1vZHVsZSwgZmlsZW5hbWUpIHtcclxuICAgICAgICAgICAgY29uc3QgcG9zc2libGVQYXRoID0gcGF0aC5yZXNvbHZlKHNlbGYuYWRkb25Gb2xkZXIsIHBhdGguYmFzZW5hbWUoZmlsZW5hbWUpKTtcclxuICAgICAgICAgICAgaWYgKCFmcy5leGlzdHNTeW5jKHBvc3NpYmxlUGF0aCkgfHwgZmlsZW5hbWUgIT09IGZzLnJlYWxwYXRoU3luYyhwb3NzaWJsZVBhdGgpKSByZXR1cm4gUmVmbGVjdC5hcHBseShvcmlnaW5hbFJlcXVpcmUsIHRoaXMsIGFyZ3VtZW50cyk7XHJcbiAgICAgICAgICAgIGxldCBmaWxlQ29udGVudCA9IGZzLnJlYWRGaWxlU3luYyhmaWxlbmFtZSwgXCJ1dGY4XCIpO1xyXG4gICAgICAgICAgICBmaWxlQ29udGVudCA9IHN0cmlwQk9NKGZpbGVDb250ZW50KTtcclxuICAgICAgICAgICAgY29uc3Qgc3RhdHMgPSBmcy5zdGF0U3luYyhmaWxlbmFtZSk7XHJcbiAgICAgICAgICAgIGNvbnN0IG1ldGEgPSBzZWxmLmV4dHJhY3RNZXRhKGZpbGVDb250ZW50KTtcclxuICAgICAgICAgICAgaWYgKCFtZXRhLmF1dGhvcikgbWV0YS5hdXRob3IgPSBTdHJpbmdzLkFkZG9ucy51bmtub3duQXV0aG9yO1xyXG4gICAgICAgICAgICBpZiAoIW1ldGEudmVyc2lvbikgbWV0YS52ZXJzaW9uID0gXCI/Pz9cIjtcclxuICAgICAgICAgICAgaWYgKCFtZXRhLmRlc2NyaXB0aW9uKSBtZXRhLmRlc2NyaXB0aW9uID0gU3RyaW5ncy5BZGRvbnMubm9EZXNjcmlwdGlvbjtcclxuICAgICAgICAgICAgbWV0YS5pZCA9IG1ldGEubmFtZTtcclxuICAgICAgICAgICAgbWV0YS5maWxlbmFtZSA9IHBhdGguYmFzZW5hbWUoZmlsZW5hbWUpO1xyXG4gICAgICAgICAgICBtZXRhLmFkZGVkID0gc3RhdHMuYXRpbWVNcztcclxuICAgICAgICAgICAgbWV0YS5tb2RpZmllZCA9IHN0YXRzLm10aW1lTXM7XHJcbiAgICAgICAgICAgIG1ldGEuc2l6ZSA9IHN0YXRzLnNpemU7XHJcbiAgICAgICAgICAgIGZpbGVDb250ZW50ID0gc2VsZi5nZXRGaWxlTW9kaWZpY2F0aW9uKG1vZHVsZSwgZmlsZUNvbnRlbnQsIG1ldGEpO1xyXG4gICAgICAgICAgICBtb2R1bGUuX2NvbXBpbGUoZmlsZUNvbnRlbnQsIGZpbGVuYW1lKTtcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFN1YmNsYXNzZXMgc2hvdWxkIHVzZSB0aGUgcmV0dXJuIChpZiBub3QgQWRkb25FcnJvcikgYW5kIHB1c2ggdG8gdGhpcy5hZGRvbkxpc3RcclxuICAgIGxvYWRBZGRvbihmaWxlbmFtZSwgc2hvdWxkVG9hc3QgPSBmYWxzZSkge1xyXG4gICAgICAgIGlmICh0eXBlb2YoZmlsZW5hbWUpID09PSBcInVuZGVmaW5lZFwiKSByZXR1cm47XHJcbiAgICAgICAgdHJ5IHtfX25vbl93ZWJwYWNrX3JlcXVpcmVfXyhwYXRoLnJlc29sdmUodGhpcy5hZGRvbkZvbGRlciwgZmlsZW5hbWUpKTt9XHJcbiAgICAgICAgY2F0Y2ggKGVycm9yKSB7cmV0dXJuIG5ldyBBZGRvbkVycm9yKGZpbGVuYW1lLCBmaWxlbmFtZSwgXCJDb3VsZCBub3QgYmUgY29tcGlsZWQuXCIsIHttZXNzYWdlOiBlcnJvci5tZXNzYWdlLCBzdGFjazogZXJyb3Iuc3RhY2t9KTt9XHJcbiAgICAgICAgY29uc3QgYWRkb24gPSBfX25vbl93ZWJwYWNrX3JlcXVpcmVfXyhwYXRoLnJlc29sdmUodGhpcy5hZGRvbkZvbGRlciwgZmlsZW5hbWUpKTtcclxuICAgICAgICBpZiAodGhpcy5hZGRvbkxpc3QuZmluZChjID0+IGMuaWQgPT0gYWRkb24uaWQpKSByZXR1cm4gbmV3IEFkZG9uRXJyb3IoYWRkb24ubmFtZSwgZmlsZW5hbWUsIGBUaGVyZSBpcyBhbHJlYWR5IGEgcGx1Z2luIHdpdGggbmFtZSAke2FkZG9uLm5hbWV9YCk7XHJcbiAgICAgICAgY29uc3QgZXJyb3IgPSB0aGlzLmluaXRpYWxpemVBZGRvbihhZGRvbik7XHJcbiAgICAgICAgaWYgKGVycm9yKSByZXR1cm4gZXJyb3I7XHJcbiAgICAgICAgdGhpcy5hZGRvbkxpc3QucHVzaChhZGRvbik7XHJcbiAgICAgICAgaWYgKHNob3VsZFRvYXN0KSBUb2FzdHMuc3VjY2VzcyhgJHthZGRvbi5uYW1lfSB2JHthZGRvbi52ZXJzaW9ufSB3YXMgbG9hZGVkLmApO1xyXG4gICAgICAgIHRoaXMuZW1pdChcImxvYWRlZFwiLCBhZGRvbi5pZCk7XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5zdGF0ZVthZGRvbi5pZF0pIHJldHVybiB0aGlzLnN0YXRlW2FkZG9uLmlkXSA9IGZhbHNlO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnN0YXJ0QWRkb24oYWRkb24pO1xyXG4gICAgfVxyXG5cclxuICAgIHVubG9hZEFkZG9uKGlkT3JGaWxlT3JBZGRvbiwgc2hvdWxkVG9hc3QgPSB0cnVlLCBpc1JlbG9hZCA9IGZhbHNlKSB7XHJcbiAgICAgICAgY29uc3QgYWRkb24gPSB0eXBlb2YoaWRPckZpbGVPckFkZG9uKSA9PSBcInN0cmluZ1wiID8gdGhpcy5hZGRvbkxpc3QuZmluZChjID0+IGMuaWQgPT0gaWRPckZpbGVPckFkZG9uIHx8IGMuZmlsZW5hbWUgPT0gaWRPckZpbGVPckFkZG9uKSA6IGlkT3JGaWxlT3JBZGRvbjtcclxuICAgICAgICBpZiAoIWFkZG9uKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgaWYgKHRoaXMuc3RhdGVbYWRkb24uaWRdKSBpc1JlbG9hZCA/IHRoaXMuc3RvcEFkZG9uKGFkZG9uKSA6IHRoaXMuZGlzYWJsZUFkZG9uKGFkZG9uKTtcclxuICAgICAgICBkZWxldGUgX19ub25fd2VicGFja19yZXF1aXJlX18uY2FjaGVbX19ub25fd2VicGFja19yZXF1aXJlX18ucmVzb2x2ZShwYXRoLnJlc29sdmUodGhpcy5hZGRvbkZvbGRlciwgYWRkb24uZmlsZW5hbWUpKV07XHJcbiAgICAgICAgdGhpcy5hZGRvbkxpc3Quc3BsaWNlKHRoaXMuYWRkb25MaXN0LmluZGV4T2YoYWRkb24pLCAxKTtcclxuICAgICAgICB0aGlzLmVtaXQoXCJ1bmxvYWRlZFwiLCBhZGRvbi5pZCk7XHJcbiAgICAgICAgaWYgKHNob3VsZFRvYXN0KSBUb2FzdHMuc3VjY2VzcyhgJHthZGRvbi5uYW1lfSB3YXMgdW5sb2FkZWQuYCk7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgcmVsb2FkQWRkb24oaWRPckZpbGVPckFkZG9uLCBzaG91bGRUb2FzdCA9IHRydWUpIHtcclxuICAgICAgICBjb25zdCBhZGRvbiA9IHR5cGVvZihpZE9yRmlsZU9yQWRkb24pID09IFwic3RyaW5nXCIgPyB0aGlzLmFkZG9uTGlzdC5maW5kKGMgPT4gYy5pZCA9PSBpZE9yRmlsZU9yQWRkb24gfHwgYy5maWxlbmFtZSA9PSBpZE9yRmlsZU9yQWRkb24pIDogaWRPckZpbGVPckFkZG9uO1xyXG4gICAgICAgIGNvbnN0IGRpZFVubG9hZCA9IHRoaXMudW5sb2FkQWRkb24oYWRkb24sIHNob3VsZFRvYXN0LCB0cnVlKTtcclxuICAgICAgICBpZiAoIWRpZFVubG9hZCkgcmV0dXJuIGRpZFVubG9hZDtcclxuICAgICAgICByZXR1cm4gdGhpcy5sb2FkQWRkb24oYWRkb24uZmlsZW5hbWUsIHNob3VsZFRvYXN0KTtcclxuICAgIH1cclxuXHJcbiAgICBpc0xvYWRlZChpZE9yRmlsZSkge1xyXG4gICAgICAgIGNvbnN0IGFkZG9uID0gdGhpcy5hZGRvbkxpc3QuZmluZChjID0+IGMuaWQgPT0gaWRPckZpbGUgfHwgYy5maWxlbmFtZSA9PSBpZE9yRmlsZSk7XHJcbiAgICAgICAgaWYgKCFhZGRvbikgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGlzRW5hYmxlZChpZE9yRmlsZSkge1xyXG4gICAgICAgIGNvbnN0IGFkZG9uID0gdGhpcy5hZGRvbkxpc3QuZmluZChjID0+IGMuaWQgPT0gaWRPckZpbGUgfHwgYy5maWxlbmFtZSA9PSBpZE9yRmlsZSk7XHJcbiAgICAgICAgaWYgKCFhZGRvbikgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnN0YXRlW2FkZG9uLmlkXTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRBZGRvbihpZE9yRmlsZSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmFkZG9uTGlzdC5maW5kKGMgPT4gYy5pZCA9PSBpZE9yRmlsZSB8fCBjLmZpbGVuYW1lID09IGlkT3JGaWxlKTtcclxuICAgIH1cclxuXHJcbiAgICBlbmFibGVBZGRvbihpZE9yQWRkb24pIHtcclxuICAgICAgICBjb25zdCBhZGRvbiA9IHR5cGVvZihpZE9yQWRkb24pID09IFwic3RyaW5nXCIgPyB0aGlzLmFkZG9uTGlzdC5maW5kKHAgPT4gcC5pZCA9PSBpZE9yQWRkb24pIDogaWRPckFkZG9uO1xyXG4gICAgICAgIGlmICghYWRkb24pIHJldHVybjtcclxuICAgICAgICBpZiAodGhpcy5zdGF0ZVthZGRvbi5pZF0pIHJldHVybjtcclxuICAgICAgICB0aGlzLnN0YXRlW2FkZG9uLmlkXSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zdGFydEFkZG9uKGFkZG9uKTtcclxuICAgICAgICB0aGlzLnNhdmVTdGF0ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGRpc2FibGVBZGRvbihpZE9yQWRkb24pIHtcclxuICAgICAgICBjb25zdCBhZGRvbiA9IHR5cGVvZihpZE9yQWRkb24pID09IFwic3RyaW5nXCIgPyB0aGlzLmFkZG9uTGlzdC5maW5kKHAgPT4gcC5pZCA9PSBpZE9yQWRkb24pIDogaWRPckFkZG9uO1xyXG4gICAgICAgIGlmICghYWRkb24pIHJldHVybjtcclxuICAgICAgICBpZiAoIXRoaXMuc3RhdGVbYWRkb24uaWRdKSByZXR1cm47XHJcbiAgICAgICAgdGhpcy5zdGF0ZVthZGRvbi5pZF0gPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnN0b3BBZGRvbihhZGRvbik7XHJcbiAgICAgICAgdGhpcy5zYXZlU3RhdGUoKTtcclxuICAgIH1cclxuXHJcbiAgICB0b2dnbGVBZGRvbihpZCkge1xyXG4gICAgICAgIGlmICh0aGlzLnN0YXRlW2lkXSkgdGhpcy5kaXNhYmxlQWRkb24oaWQpO1xyXG4gICAgICAgIGVsc2UgdGhpcy5lbmFibGVBZGRvbihpZCk7XHJcbiAgICB9XHJcblxyXG4gICAgbG9hZE5ld0FkZG9ucygpIHtcclxuICAgICAgICBjb25zdCBmaWxlcyA9IGZzLnJlYWRkaXJTeW5jKHRoaXMuYWRkb25Gb2xkZXIpO1xyXG4gICAgICAgIGNvbnN0IHJlbW92ZWQgPSB0aGlzLmFkZG9uTGlzdC5maWx0ZXIodCA9PiAhZmlsZXMuaW5jbHVkZXModC5maWxlbmFtZSkpLm1hcChjID0+IGMuaWQpO1xyXG4gICAgICAgIGNvbnN0IGFkZGVkID0gZmlsZXMuZmlsdGVyKGYgPT4gIXRoaXMuYWRkb25MaXN0LmZpbmQodCA9PiB0LmZpbGVuYW1lID09IGYpICYmIGYuZW5kc1dpdGgodGhpcy5leHRlbnNpb24pICYmIGZzLnN0YXRTeW5jKHBhdGgucmVzb2x2ZSh0aGlzLmFkZG9uRm9sZGVyLCBmKSkuaXNGaWxlKCkpO1xyXG4gICAgICAgIHJldHVybiB7YWRkZWQsIHJlbW92ZWR9O1xyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZUxpc3QoKSB7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0cyA9IHRoaXMubG9hZE5ld0FkZG9ucygpO1xyXG4gICAgICAgIGZvciAoY29uc3QgZmlsZW5hbWUgb2YgcmVzdWx0cy5hZGRlZCkgdGhpcy5sb2FkQWRkb24oZmlsZW5hbWUpO1xyXG4gICAgICAgIGZvciAoY29uc3QgbmFtZSBvZiByZXN1bHRzLnJlbW92ZWQpIHRoaXMudW5sb2FkQWRkb24obmFtZSk7XHJcbiAgICB9XHJcblxyXG4gICAgbG9hZEFsbEFkZG9ucygpIHtcclxuICAgICAgICB0aGlzLmxvYWRTdGF0ZSgpO1xyXG4gICAgICAgIGNvbnN0IGVycm9ycyA9IFtdO1xyXG4gICAgICAgIGNvbnN0IGZpbGVzID0gZnMucmVhZGRpclN5bmModGhpcy5hZGRvbkZvbGRlcik7XHJcblxyXG4gICAgICAgIGZvciAoY29uc3QgZmlsZW5hbWUgb2YgZmlsZXMpIHtcclxuICAgICAgICAgICAgaWYgKCFmcy5zdGF0U3luYyhwYXRoLnJlc29sdmUodGhpcy5hZGRvbkZvbGRlciwgZmlsZW5hbWUpKS5pc0ZpbGUoKSB8fCAhZmlsZW5hbWUuZW5kc1dpdGgodGhpcy5leHRlbnNpb24pKSBjb250aW51ZTtcclxuICAgICAgICAgICAgY29uc3QgYWRkb24gPSB0aGlzLmxvYWRBZGRvbihmaWxlbmFtZSwgZmFsc2UpO1xyXG4gICAgICAgICAgICBpZiAoYWRkb24gaW5zdGFuY2VvZiBBZGRvbkVycm9yKSBlcnJvcnMucHVzaChhZGRvbik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnNhdmVTdGF0ZSgpO1xyXG4gICAgICAgIGlmIChTZXR0aW5ncy5nZXQodGhpcy5jb2xsZWN0aW9uLCB0aGlzLmNhdGVnb3J5LCB0aGlzLmlkKSkgdGhpcy53YXRjaEFkZG9ucygpO1xyXG4gICAgICAgIHJldHVybiBlcnJvcnM7XHJcbiAgICB9XHJcblxyXG4gICAgZGVsZXRlQWRkb24oaWRPckZpbGVPckFkZG9uKSB7XHJcbiAgICAgICAgY29uc3QgYWRkb24gPSB0eXBlb2YoaWRPckZpbGVPckFkZG9uKSA9PSBcInN0cmluZ1wiID8gdGhpcy5hZGRvbkxpc3QuZmluZChjID0+IGMuaWQgPT0gaWRPckZpbGVPckFkZG9uIHx8IGMuZmlsZW5hbWUgPT0gaWRPckZpbGVPckFkZG9uKSA6IGlkT3JGaWxlT3JBZGRvbjtcclxuICAgICAgICByZXR1cm4gZnMudW5saW5rU3luYyhwYXRoLnJlc29sdmUodGhpcy5hZGRvbkZvbGRlciwgYWRkb24uZmlsZW5hbWUpKTtcclxuICAgIH1cclxuXHJcbiAgICBzYXZlQWRkb24oaWRPckZpbGVPckFkZG9uLCBjb250ZW50KSB7XHJcbiAgICAgICAgY29uc3QgYWRkb24gPSB0eXBlb2YoaWRPckZpbGVPckFkZG9uKSA9PSBcInN0cmluZ1wiID8gdGhpcy5hZGRvbkxpc3QuZmluZChjID0+IGMuaWQgPT0gaWRPckZpbGVPckFkZG9uIHx8IGMuZmlsZW5hbWUgPT0gaWRPckZpbGVPckFkZG9uKSA6IGlkT3JGaWxlT3JBZGRvbjtcclxuICAgICAgICByZXR1cm4gZnMud3JpdGVGaWxlU3luYyhwYXRoLnJlc29sdmUodGhpcy5hZGRvbkZvbGRlciwgYWRkb24uZmlsZW5hbWUpLCBjb250ZW50KTtcclxuICAgIH1cclxuXHJcbiAgICBlZGl0QWRkb24oaWRPckZpbGVPckFkZG9uLCBzeXN0ZW0pIHtcclxuICAgICAgICBjb25zdCBhZGRvbiA9IHR5cGVvZihpZE9yRmlsZU9yQWRkb24pID09IFwic3RyaW5nXCIgPyB0aGlzLmFkZG9uTGlzdC5maW5kKGMgPT4gYy5pZCA9PSBpZE9yRmlsZU9yQWRkb24gfHwgYy5maWxlbmFtZSA9PSBpZE9yRmlsZU9yQWRkb24pIDogaWRPckZpbGVPckFkZG9uO1xyXG4gICAgICAgIGNvbnN0IGZ1bGxQYXRoID0gcGF0aC5yZXNvbHZlKHRoaXMuYWRkb25Gb2xkZXIsIGFkZG9uLmZpbGVuYW1lKTtcclxuICAgICAgICBpZiAodHlwZW9mKHN5c3RlbSkgPT0gXCJ1bmRlZmluZWRcIikgc3lzdGVtID0gU2V0dGluZ3MuZ2V0KFwic2V0dGluZ3NcIiwgXCJhZGRvbnNcIiwgXCJlZGl0QWN0aW9uXCIpID09IFwic3lzdGVtXCI7XHJcbiAgICAgICAgaWYgKHN5c3RlbSkgcmV0dXJuIHJlcXVpcmUoXCJlbGVjdHJvblwiKS5zaGVsbC5vcGVuSXRlbShgJHtmdWxsUGF0aH1gKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5vcGVuRGV0YWNoZWQoYWRkb24pO1xyXG4gICAgfVxyXG5cclxuICAgIG9wZW5EZXRhY2hlZChhZGRvbikge1xyXG4gICAgICAgIGNvbnN0IGZ1bGxQYXRoID0gcGF0aC5yZXNvbHZlKHRoaXMuYWRkb25Gb2xkZXIsIGFkZG9uLmZpbGVuYW1lKTtcclxuICAgICAgICBjb25zdCBjb250ZW50ID0gZnMucmVhZEZpbGVTeW5jKGZ1bGxQYXRoKS50b1N0cmluZygpO1xyXG5cclxuICAgICAgICBjb25zdCBlZGl0b3JSZWYgPSBSZWFjdC5jcmVhdGVSZWYoKTtcclxuICAgICAgICBjb25zdCBlZGl0b3IgPSBSZWFjdC5jcmVhdGVFbGVtZW50KEFkZG9uRWRpdG9yLCB7XHJcbiAgICAgICAgICAgIGlkOiBcImJkLWZsb2F0aW5nLWVkaXRvci1cIiArIGFkZG9uLm5hbWUsXHJcbiAgICAgICAgICAgIHJlZjogZWRpdG9yUmVmLFxyXG4gICAgICAgICAgICBjb250ZW50OiBjb250ZW50LFxyXG4gICAgICAgICAgICBzYXZlOiB0aGlzLnNhdmVBZGRvbi5iaW5kKHRoaXMsIGFkZG9uKSxcclxuICAgICAgICAgICAgb3Blbk5hdGl2ZTogdGhpcy5lZGl0QWRkb24uYmluZCh0aGlzLCBhZGRvbiwgdHJ1ZSksXHJcbiAgICAgICAgICAgIGxhbmd1YWdlOiB0aGlzLmxhbmd1YWdlXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIEZsb2F0aW5nV2luZG93cy5vcGVuKHtcclxuICAgICAgICAgICAgb25DbG9zZTogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pc0RldGFjaGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIG9uUmVzaXplOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWVkaXRvclJlZiB8fCAhZWRpdG9yUmVmLmN1cnJlbnQgfHwgIWVkaXRvclJlZi5jdXJyZW50LnJlc2l6ZSkgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgZWRpdG9yUmVmLmN1cnJlbnQucmVzaXplKCk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHRpdGxlOiBhZGRvbi5uYW1lLFxyXG4gICAgICAgICAgICBpZDogY29udGVudC5pZCxcclxuICAgICAgICAgICAgY2xhc3NOYW1lOiBcImZsb2F0aW5nLWFkZG9uLXdpbmRvd1wiLFxyXG4gICAgICAgICAgICBoZWlnaHQ6IDQ3MCxcclxuICAgICAgICAgICAgd2lkdGg6IDQxMCxcclxuICAgICAgICAgICAgY2VudGVyOiB0cnVlLFxyXG4gICAgICAgICAgICByZXNpemFibGU6IHRydWUsXHJcbiAgICAgICAgICAgIGNoaWxkcmVuOiBlZGl0b3IsXHJcbiAgICAgICAgICAgIGNvbmZpcm1DbG9zZTogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFlZGl0b3JSZWYgfHwgIWVkaXRvclJlZi5jdXJyZW50KSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZWRpdG9yUmVmLmN1cnJlbnQuaGFzVW5zYXZlZENoYW5nZXM7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGNvbmZpcm1hdGlvblRleHQ6IFN0cmluZ3MuQWRkb25zLmNvbmZpcm1hdGlvblRleHQuZm9ybWF0KHtuYW1lOiBhZGRvbi5uYW1lfSlcclxuICAgICAgICB9KTtcclxuICAgIH1cclxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/addonmanager.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return AddonManager; });\n/* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utilities */ \"./src/modules/utilities.js\");\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./logger */ \"./src/modules/logger.js\");\n/* harmony import */ var _settingsmanager__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./settingsmanager */ \"./src/modules/settingsmanager.js\");\n/* harmony import */ var _emitter__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./emitter */ \"./src/modules/emitter.js\");\n/* harmony import */ var _datastore__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./datastore */ \"./src/modules/datastore.js\");\n/* harmony import */ var _structs_addonerror__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../structs/addonerror */ \"./src/structs/addonerror.js\");\n/* harmony import */ var _structs_metaerror__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../structs/metaerror */ \"./src/structs/metaerror.js\");\n/* harmony import */ var _ui_toasts__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../ui/toasts */ \"./src/ui/toasts.js\");\n/* harmony import */ var _discordmodules__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./discordmodules */ \"./src/modules/discordmodules.js\");\n/* harmony import */ var _strings__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./strings */ \"./src/modules/strings.js\");\n/* harmony import */ var _ui_misc_addoneditor__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../ui/misc/addoneditor */ \"./src/ui/misc/addoneditor.jsx\");\n/* harmony import */ var _ui_floatingwindows__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../ui/floatingwindows */ \"./src/ui/floatingwindows.js\");\n\n\n\n\n\n\n\n\n\n\n\n\nconst React = _discordmodules__WEBPACK_IMPORTED_MODULE_8__[\"default\"].React;\n\nconst path = __webpack_require__(/*! path */ \"path\");\n\nconst fs = __webpack_require__(/*! fs */ \"fs\");\n\nconst Module = __webpack_require__(/*! module */ \"module\").Module;\n\nModule.globalPaths.push(path.resolve(__webpack_require__(/*! electron */ \"electron\").remote.app.getAppPath(), \"node_modules\"));\nconst splitRegex = /[^\\S\\r\\n]*?\\r?(?:\\r\\n|\\n)[^\\S\\r\\n]*?\\*[^\\S\\r\\n]?/;\nconst escapedAtRegex = /^\\\\@/;\n\nconst stripBOM = function (fileContent) {\n if (fileContent.charCodeAt(0) === 0xFEFF) {\n fileContent = fileContent.slice(1);\n }\n\n return fileContent;\n};\n\nclass AddonManager {\n get name() {\n return \"\";\n }\n\n get moduleExtension() {\n return \"\";\n }\n\n get extension() {\n return \"\";\n }\n\n get addonFolder() {\n return \"\";\n }\n\n get language() {\n return \"\";\n }\n\n get prefix() {\n return \"addon\";\n }\n\n get collection() {\n return \"settings\";\n }\n\n get category() {\n return \"addons\";\n }\n\n get id() {\n return \"autoReload\";\n }\n\n emit(event, ...args) {\n return _emitter__WEBPACK_IMPORTED_MODULE_3__[\"default\"].emit(`${this.prefix}-${event}`, ...args);\n }\n\n constructor() {\n this.timeCache = {};\n this.addonList = [];\n this.state = {};\n }\n\n initialize() {\n this.originalRequire = Module._extensions[this.moduleExtension];\n Module._extensions[this.moduleExtension] = this.getAddonRequire();\n _settingsmanager__WEBPACK_IMPORTED_MODULE_2__[\"default\"].on(this.collection, this.category, this.id, enabled => {\n if (enabled) this.watchAddons();else this.unwatchAddons();\n });\n return this.loadAllAddons();\n } // Subclasses should overload this and modify the addon object as needed to fully load it\n\n\n initializeAddon() {\n return;\n } // Subclasses should overload this and modify the fileContent as needed to require() the file\n\n\n getFileModification(module, fileContent) {\n return fileContent;\n }\n\n startAddon() {\n return;\n }\n\n stopAddon() {\n return;\n }\n\n loadState() {\n const saved = _datastore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].getData(`${this.prefix}s`);\n if (!saved) return;\n Object.assign(this.state, saved);\n }\n\n saveState() {\n _datastore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].setData(`${this.prefix}s`, this.state);\n }\n\n watchAddons() {\n if (this.watcher) return _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].error(this.name, `Already watching ${this.prefix} addons.`);\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].log(this.name, `Starting to watch ${this.prefix} addons.`);\n this.watcher = fs.watch(this.addonFolder, {\n persistent: false\n }, async (eventType, filename) => {\n if (!eventType || !filename || !filename.endsWith(this.extension)) return;\n await new Promise(r => setTimeout(r, 100));\n\n try {\n const stats = fs.statSync(path.resolve(this.addonFolder, filename));\n if (!stats.isFile()) return;\n if (!stats || !stats.mtime || !stats.mtime.getTime()) return;\n if (typeof stats.mtime.getTime() !== \"number\") return;\n if (this.timeCache[filename] == stats.mtime.getTime()) return;\n this.timeCache[filename] = stats.mtime.getTime();\n if (eventType == \"rename\") this.loadAddon(filename, true);\n if (eventType == \"change\") this.reloadAddon(filename, true);\n } catch (err) {\n if (err.code !== \"ENOENT\") return;\n delete this.timeCache[filename];\n this.unloadAddon(filename, true);\n }\n });\n }\n\n unwatchAddons() {\n if (!this.watcher) return _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].error(this.name, `Was not watching ${this.prefix} addons.`);\n this.watcher.close();\n delete this.watcher;\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].log(this.name, `No longer watching ${this.prefix} addons.`);\n }\n\n extractMeta(fileContent) {\n const firstLine = fileContent.split(\"\\n\")[0];\n const hasOldMeta = firstLine.includes(\"//META\");\n if (hasOldMeta) return this.parseOldMeta(fileContent);\n const hasNewMeta = firstLine.includes(\"/**\");\n if (hasNewMeta) return this.parseNewMeta(fileContent);\n throw new _structs_metaerror__WEBPACK_IMPORTED_MODULE_6__[\"default\"](\"META was not found.\");\n }\n\n parseOldMeta(fileContent) {\n const meta = fileContent.split(\"\\n\")[0];\n const metaData = meta.substring(meta.lastIndexOf(\"//META\") + 6, meta.lastIndexOf(\"*//\"));\n const parsed = _utilities__WEBPACK_IMPORTED_MODULE_0__[\"default\"].testJSON(metaData);\n if (!parsed) throw new _structs_metaerror__WEBPACK_IMPORTED_MODULE_6__[\"default\"](\"META could not be parsed.\");\n if (!parsed.name) throw new _structs_metaerror__WEBPACK_IMPORTED_MODULE_6__[\"default\"](\"META missing name data.\");\n parsed.format = \"json\";\n return parsed;\n }\n\n parseNewMeta(fileContent) {\n const block = fileContent.split(\"/**\", 2)[1].split(\"*/\", 1)[0];\n const out = {};\n let field = \"\";\n let accum = \"\";\n\n for (const line of block.split(splitRegex)) {\n if (line.length === 0) continue;\n\n if (line.charAt(0) === \"@\" && line.charAt(1) !== \" \") {\n out[field] = accum;\n const l = line.indexOf(\" \");\n field = line.substr(1, l - 1);\n accum = line.substr(l + 1);\n } else {\n accum += \" \" + line.replace(\"\\\\n\", \"\\n\").replace(escapedAtRegex, \"@\");\n }\n }\n\n out[field] = accum.trim();\n delete out[\"\"];\n out.format = \"jsdoc\";\n return out;\n }\n\n getAddonRequire() {\n const self = this; // const baseFolder = this.addonFolder;\n\n const originalRequire = this.originalRequire;\n return function (module, filename) {\n const possiblePath = path.resolve(self.addonFolder, path.basename(filename));\n if (!fs.existsSync(possiblePath) || filename !== fs.realpathSync(possiblePath)) return Reflect.apply(originalRequire, this, arguments);\n let fileContent = fs.readFileSync(filename, \"utf8\");\n fileContent = stripBOM(fileContent);\n const stats = fs.statSync(filename);\n const meta = self.extractMeta(fileContent);\n if (!meta.author) meta.author = _strings__WEBPACK_IMPORTED_MODULE_9__[\"default\"].Addons.unknownAuthor;\n if (!meta.version) meta.version = \"???\";\n if (!meta.description) meta.description = _strings__WEBPACK_IMPORTED_MODULE_9__[\"default\"].Addons.noDescription;\n meta.id = meta.name;\n meta.filename = path.basename(filename);\n meta.added = stats.atimeMs;\n meta.modified = stats.mtimeMs;\n meta.size = stats.size;\n fileContent = self.getFileModification(module, fileContent, meta);\n\n module._compile(fileContent, filename);\n };\n } // Subclasses should use the return (if not AddonError) and push to this.addonList\n\n\n loadAddon(filename, shouldToast = false) {\n if (typeof filename === \"undefined\") return;\n\n try {\n require(path.resolve(this.addonFolder, filename));\n } catch (error) {\n return new _structs_addonerror__WEBPACK_IMPORTED_MODULE_5__[\"default\"](filename, filename, \"Could not be compiled.\", {\n message: error.message,\n stack: error.stack\n });\n }\n\n const addon = require(path.resolve(this.addonFolder, filename));\n\n if (this.addonList.find(c => c.id == addon.id)) return new _structs_addonerror__WEBPACK_IMPORTED_MODULE_5__[\"default\"](addon.name, filename, `There is already a plugin with name ${addon.name}`);\n const error = this.initializeAddon(addon);\n if (error) return error;\n this.addonList.push(addon);\n if (shouldToast) _ui_toasts__WEBPACK_IMPORTED_MODULE_7__[\"default\"].success(`${addon.name} v${addon.version} was loaded.`);\n this.emit(\"loaded\", addon.id);\n if (!this.state[addon.id]) return this.state[addon.id] = false;\n return this.startAddon(addon);\n }\n\n unloadAddon(idOrFileOrAddon, shouldToast = true, isReload = false) {\n const addon = typeof idOrFileOrAddon == \"string\" ? this.addonList.find(c => c.id == idOrFileOrAddon || c.filename == idOrFileOrAddon) : idOrFileOrAddon;\n if (!addon) return false;\n if (this.state[addon.id]) isReload ? this.stopAddon(addon) : this.disableAddon(addon);\n delete require.cache[require.resolve(path.resolve(this.addonFolder, addon.filename))];\n this.addonList.splice(this.addonList.indexOf(addon), 1);\n this.emit(\"unloaded\", addon.id);\n if (shouldToast) _ui_toasts__WEBPACK_IMPORTED_MODULE_7__[\"default\"].success(`${addon.name} was unloaded.`);\n return true;\n }\n\n reloadAddon(idOrFileOrAddon, shouldToast = true) {\n const addon = typeof idOrFileOrAddon == \"string\" ? this.addonList.find(c => c.id == idOrFileOrAddon || c.filename == idOrFileOrAddon) : idOrFileOrAddon;\n const didUnload = this.unloadAddon(addon, shouldToast, true);\n if (!didUnload) return didUnload;\n return this.loadAddon(addon.filename, shouldToast);\n }\n\n isLoaded(idOrFile) {\n const addon = this.addonList.find(c => c.id == idOrFile || c.filename == idOrFile);\n if (!addon) return false;\n return true;\n }\n\n isEnabled(idOrFile) {\n const addon = this.addonList.find(c => c.id == idOrFile || c.filename == idOrFile);\n if (!addon) return false;\n return this.state[addon.id];\n }\n\n getAddon(idOrFile) {\n return this.addonList.find(c => c.id == idOrFile || c.filename == idOrFile);\n }\n\n enableAddon(idOrAddon) {\n const addon = typeof idOrAddon == \"string\" ? this.addonList.find(p => p.id == idOrAddon) : idOrAddon;\n if (!addon) return;\n if (this.state[addon.id]) return;\n this.state[addon.id] = true;\n this.startAddon(addon);\n this.saveState();\n }\n\n disableAddon(idOrAddon) {\n const addon = typeof idOrAddon == \"string\" ? this.addonList.find(p => p.id == idOrAddon) : idOrAddon;\n if (!addon) return;\n if (!this.state[addon.id]) return;\n this.state[addon.id] = false;\n this.stopAddon(addon);\n this.saveState();\n }\n\n toggleAddon(id) {\n if (this.state[id]) this.disableAddon(id);else this.enableAddon(id);\n }\n\n loadNewAddons() {\n const files = fs.readdirSync(this.addonFolder);\n const removed = this.addonList.filter(t => !files.includes(t.filename)).map(c => c.id);\n const added = files.filter(f => !this.addonList.find(t => t.filename == f) && f.endsWith(this.extension) && fs.statSync(path.resolve(this.addonFolder, f)).isFile());\n return {\n added,\n removed\n };\n }\n\n updateList() {\n const results = this.loadNewAddons();\n\n for (const filename of results.added) this.loadAddon(filename);\n\n for (const name of results.removed) this.unloadAddon(name);\n }\n\n loadAllAddons() {\n this.loadState();\n const errors = [];\n const files = fs.readdirSync(this.addonFolder);\n\n for (const filename of files) {\n if (!fs.statSync(path.resolve(this.addonFolder, filename)).isFile() || !filename.endsWith(this.extension)) continue;\n const addon = this.loadAddon(filename, false);\n if (addon instanceof _structs_addonerror__WEBPACK_IMPORTED_MODULE_5__[\"default\"]) errors.push(addon);\n }\n\n this.saveState();\n if (_settingsmanager__WEBPACK_IMPORTED_MODULE_2__[\"default\"].get(this.collection, this.category, this.id)) this.watchAddons();\n return errors;\n }\n\n deleteAddon(idOrFileOrAddon) {\n const addon = typeof idOrFileOrAddon == \"string\" ? this.addonList.find(c => c.id == idOrFileOrAddon || c.filename == idOrFileOrAddon) : idOrFileOrAddon;\n return fs.unlinkSync(path.resolve(this.addonFolder, addon.filename));\n }\n\n saveAddon(idOrFileOrAddon, content) {\n const addon = typeof idOrFileOrAddon == \"string\" ? this.addonList.find(c => c.id == idOrFileOrAddon || c.filename == idOrFileOrAddon) : idOrFileOrAddon;\n return fs.writeFileSync(path.resolve(this.addonFolder, addon.filename), content);\n }\n\n editAddon(idOrFileOrAddon, system) {\n const addon = typeof idOrFileOrAddon == \"string\" ? this.addonList.find(c => c.id == idOrFileOrAddon || c.filename == idOrFileOrAddon) : idOrFileOrAddon;\n const fullPath = path.resolve(this.addonFolder, addon.filename);\n if (typeof system == \"undefined\") system = _settingsmanager__WEBPACK_IMPORTED_MODULE_2__[\"default\"].get(\"settings\", \"addons\", \"editAction\") == \"system\";\n if (system) return __webpack_require__(/*! electron */ \"electron\").shell.openItem(`${fullPath}`);\n return this.openDetached(addon);\n }\n\n openDetached(addon) {\n const fullPath = path.resolve(this.addonFolder, addon.filename);\n const content = fs.readFileSync(fullPath).toString();\n const editorRef = React.createRef();\n const editor = React.createElement(_ui_misc_addoneditor__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n id: \"bd-floating-editor-\" + addon.name,\n ref: editorRef,\n content: content,\n save: this.saveAddon.bind(this, addon),\n openNative: this.editAddon.bind(this, addon, true),\n language: this.language\n });\n _ui_floatingwindows__WEBPACK_IMPORTED_MODULE_11__[\"default\"].open({\n onClose: () => {\n this.isDetached = false;\n },\n onResize: () => {\n if (!editorRef || !editorRef.current || !editorRef.current.resize) return;\n editorRef.current.resize();\n },\n title: addon.name,\n id: content.id,\n className: \"floating-addon-window\",\n height: 470,\n width: 410,\n center: true,\n resizable: true,\n children: editor,\n confirmClose: () => {\n if (!editorRef || !editorRef.current) return false;\n return editorRef.current.hasUnsavedChanges;\n },\n confirmationText: _strings__WEBPACK_IMPORTED_MODULE_9__[\"default\"].Addons.confirmationText.format({\n name: addon.name\n })\n });\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9hZGRvbm1hbmFnZXIuanM/Y2VhOSJdLCJuYW1lcyI6WyJSZWFjdCIsIkRpc2NvcmRNb2R1bGVzIiwicGF0aCIsInJlcXVpcmUiLCJmcyIsIk1vZHVsZSIsImdsb2JhbFBhdGhzIiwicHVzaCIsInJlc29sdmUiLCJyZW1vdGUiLCJhcHAiLCJnZXRBcHBQYXRoIiwic3BsaXRSZWdleCIsImVzY2FwZWRBdFJlZ2V4Iiwic3RyaXBCT00iLCJmaWxlQ29udGVudCIsImNoYXJDb2RlQXQiLCJzbGljZSIsIkFkZG9uTWFuYWdlciIsIm5hbWUiLCJtb2R1bGVFeHRlbnNpb24iLCJleHRlbnNpb24iLCJhZGRvbkZvbGRlciIsImxhbmd1YWdlIiwicHJlZml4IiwiY29sbGVjdGlvbiIsImNhdGVnb3J5IiwiaWQiLCJlbWl0IiwiZXZlbnQiLCJhcmdzIiwiRXZlbnRzIiwiY29uc3RydWN0b3IiLCJ0aW1lQ2FjaGUiLCJhZGRvbkxpc3QiLCJzdGF0ZSIsImluaXRpYWxpemUiLCJvcmlnaW5hbFJlcXVpcmUiLCJfZXh0ZW5zaW9ucyIsImdldEFkZG9uUmVxdWlyZSIsIlNldHRpbmdzIiwib24iLCJlbmFibGVkIiwid2F0Y2hBZGRvbnMiLCJ1bndhdGNoQWRkb25zIiwibG9hZEFsbEFkZG9ucyIsImluaXRpYWxpemVBZGRvbiIsImdldEZpbGVNb2RpZmljYXRpb24iLCJtb2R1bGUiLCJzdGFydEFkZG9uIiwic3RvcEFkZG9uIiwibG9hZFN0YXRlIiwic2F2ZWQiLCJEYXRhU3RvcmUiLCJnZXREYXRhIiwiT2JqZWN0IiwiYXNzaWduIiwic2F2ZVN0YXRlIiwic2V0RGF0YSIsIndhdGNoZXIiLCJMb2dnZXIiLCJlcnJvciIsImxvZyIsIndhdGNoIiwicGVyc2lzdGVudCIsImV2ZW50VHlwZSIsImZpbGVuYW1lIiwiZW5kc1dpdGgiLCJQcm9taXNlIiwiciIsInNldFRpbWVvdXQiLCJzdGF0cyIsInN0YXRTeW5jIiwiaXNGaWxlIiwibXRpbWUiLCJnZXRUaW1lIiwibG9hZEFkZG9uIiwicmVsb2FkQWRkb24iLCJlcnIiLCJjb2RlIiwidW5sb2FkQWRkb24iLCJjbG9zZSIsImV4dHJhY3RNZXRhIiwiZmlyc3RMaW5lIiwic3BsaXQiLCJoYXNPbGRNZXRhIiwiaW5jbHVkZXMiLCJwYXJzZU9sZE1ldGEiLCJoYXNOZXdNZXRhIiwicGFyc2VOZXdNZXRhIiwiTWV0YUVycm9yIiwibWV0YSIsIm1ldGFEYXRhIiwic3Vic3RyaW5nIiwibGFzdEluZGV4T2YiLCJwYXJzZWQiLCJVdGlsaXRpZXMiLCJ0ZXN0SlNPTiIsImZvcm1hdCIsImJsb2NrIiwib3V0IiwiZmllbGQiLCJhY2N1bSIsImxpbmUiLCJsZW5ndGgiLCJjaGFyQXQiLCJsIiwiaW5kZXhPZiIsInN1YnN0ciIsInJlcGxhY2UiLCJ0cmltIiwic2VsZiIsInBvc3NpYmxlUGF0aCIsImJhc2VuYW1lIiwiZXhpc3RzU3luYyIsInJlYWxwYXRoU3luYyIsIlJlZmxlY3QiLCJhcHBseSIsImFyZ3VtZW50cyIsInJlYWRGaWxlU3luYyIsImF1dGhvciIsIlN0cmluZ3MiLCJBZGRvbnMiLCJ1bmtub3duQXV0aG9yIiwidmVyc2lvbiIsImRlc2NyaXB0aW9uIiwibm9EZXNjcmlwdGlvbiIsImFkZGVkIiwiYXRpbWVNcyIsIm1vZGlmaWVkIiwibXRpbWVNcyIsInNpemUiLCJfY29tcGlsZSIsInNob3VsZFRvYXN0IiwiX19ub25fd2VicGFja19yZXF1aXJlX18iLCJBZGRvbkVycm9yIiwibWVzc2FnZSIsInN0YWNrIiwiYWRkb24iLCJmaW5kIiwiYyIsIlRvYXN0cyIsInN1Y2Nlc3MiLCJpZE9yRmlsZU9yQWRkb24iLCJpc1JlbG9hZCIsImRpc2FibGVBZGRvbiIsImNhY2hlIiwic3BsaWNlIiwiZGlkVW5sb2FkIiwiaXNMb2FkZWQiLCJpZE9yRmlsZSIsImlzRW5hYmxlZCIsImdldEFkZG9uIiwiZW5hYmxlQWRkb24iLCJpZE9yQWRkb24iLCJwIiwidG9nZ2xlQWRkb24iLCJsb2FkTmV3QWRkb25zIiwiZmlsZXMiLCJyZWFkZGlyU3luYyIsInJlbW92ZWQiLCJmaWx0ZXIiLCJ0IiwibWFwIiwiZiIsInVwZGF0ZUxpc3QiLCJyZXN1bHRzIiwiZXJyb3JzIiwiZ2V0IiwiZGVsZXRlQWRkb24iLCJ1bmxpbmtTeW5jIiwic2F2ZUFkZG9uIiwiY29udGVudCIsIndyaXRlRmlsZVN5bmMiLCJlZGl0QWRkb24iLCJzeXN0ZW0iLCJmdWxsUGF0aCIsInNoZWxsIiwib3Blbkl0ZW0iLCJvcGVuRGV0YWNoZWQiLCJ0b1N0cmluZyIsImVkaXRvclJlZiIsImNyZWF0ZVJlZiIsImVkaXRvciIsImNyZWF0ZUVsZW1lbnQiLCJBZGRvbkVkaXRvciIsInJlZiIsInNhdmUiLCJiaW5kIiwib3Blbk5hdGl2ZSIsIkZsb2F0aW5nV2luZG93cyIsIm9wZW4iLCJvbkNsb3NlIiwiaXNEZXRhY2hlZCIsIm9uUmVzaXplIiwiY3VycmVudCIsInJlc2l6ZSIsInRpdGxlIiwiY2xhc3NOYW1lIiwiaGVpZ2h0Iiwid2lkdGgiLCJjZW50ZXIiLCJyZXNpemFibGUiLCJjaGlsZHJlbiIsImNvbmZpcm1DbG9zZSIsImhhc1Vuc2F2ZWRDaGFuZ2VzIiwiY29uZmlybWF0aW9uVGV4dCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBLE1BQU1BLEtBQUssR0FBR0MsdURBQWMsQ0FBQ0QsS0FBN0I7O0FBRUEsTUFBTUUsSUFBSSxHQUFHQyxtQkFBTyxDQUFDLGtCQUFELENBQXBCOztBQUNBLE1BQU1DLEVBQUUsR0FBR0QsbUJBQU8sQ0FBQyxjQUFELENBQWxCOztBQUNBLE1BQU1FLE1BQU0sR0FBR0YsbUJBQU8sQ0FBQyxzQkFBRCxDQUFQLENBQWtCRSxNQUFqQzs7QUFDQUEsTUFBTSxDQUFDQyxXQUFQLENBQW1CQyxJ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cy9hZGRvbm1hbmFnZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgVXRpbGl0aWVzIGZyb20gXCIuL3V0aWxpdGllc1wiO1xyXG5pbXBvcnQgTG9nZ2VyIGZyb20gXCIuL2xvZ2dlclwiO1xyXG5pbXBvcnQgU2V0dGluZ3MgZnJvbSBcIi4vc2V0dGluZ3NtYW5hZ2VyXCI7XHJcbmltcG9ydCBFdmVudHMgZnJvbSBcIi4vZW1pdHRlclwiO1xyXG5pbXBvcnQgRGF0YVN0b3JlIGZyb20gXCIuL2RhdGFzdG9yZVwiO1xyXG5pbXBvcnQgQWRkb25FcnJvciBmcm9tIFwiLi4vc3RydWN0cy9hZGRvbmVycm9yXCI7XHJcbmltcG9ydCBNZXRhRXJyb3IgZnJvbSBcIi4uL3N0cnVjdHMvbWV0YWVycm9yXCI7XHJcbmltcG9ydCBUb2FzdHMgZnJvbSBcIi4uL3VpL3RvYXN0c1wiO1xyXG5pbXBvcnQgRGlzY29yZE1vZHVsZXMgZnJvbSBcIi4vZGlzY29yZG1vZHVsZXNcIjtcclxuaW1wb3J0IFN0cmluZ3MgZnJvbSBcIi4vc3RyaW5nc1wiO1xyXG5cclxuaW1wb3J0IEFkZG9uRWRpdG9yIGZyb20gXCIuLi91aS9taXNjL2FkZG9uZWRpdG9yXCI7XHJcbmltcG9ydCBGbG9hdGluZ1dpbmRvd3MgZnJvbSBcIi4uL3VpL2Zsb2F0aW5nd2luZG93c1wiO1xyXG5cclxuY29uc3QgUmVhY3QgPSBEaXNjb3JkTW9kdWxlcy5SZWFjdDtcclxuXHJcbmNvbnN0IHBhdGggPSByZXF1aXJlKFwicGF0aFwiKTtcclxuY29uc3QgZnMgPSByZXF1aXJlKFwiZnNcIik7XHJcbmNvbnN0IE1vZHVsZSA9IHJlcXVpcmUoXCJtb2R1bGVcIikuTW9kdWxlO1xyXG5Nb2R1bGUuZ2xvYmFsUGF0aHMucHVzaChwYXRoLnJlc29sdmUocmVxdWlyZShcImVsZWN0cm9uXCIpLnJlbW90ZS5hcHAuZ2V0QXBwUGF0aCgpLCBcIm5vZGVfbW9kdWxlc1wiKSk7XHJcblxyXG5jb25zdCBzcGxpdFJlZ2V4ID0gL1teXFxTXFxyXFxuXSo/XFxyPyg/OlxcclxcbnxcXG4pW15cXFNcXHJcXG5dKj9cXCpbXlxcU1xcclxcbl0/LztcclxuY29uc3QgZXNjYXBlZEF0UmVnZXggPSAvXlxcXFxALztcclxuXHJcbmNvbnN0IHN0cmlwQk9NID0gZnVuY3Rpb24oZmlsZUNvbnRlbnQpIHtcclxuICAgIGlmIChmaWxlQ29udGVudC5jaGFyQ29kZUF0KDApID09PSAweEZFRkYpIHtcclxuICAgICAgICBmaWxlQ29udGVudCA9IGZpbGVDb250ZW50LnNsaWNlKDEpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZpbGVDb250ZW50O1xyXG59O1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQWRkb25NYW5hZ2VyIHtcclxuXHJcbiAgICBnZXQgbmFtZSgpIHtyZXR1cm4gXCJcIjt9XHJcbiAgICBnZXQgbW9kdWxlRXh0ZW5zaW9uKCkge3JldHVybiBcIlwiO31cclxuICAgIGdldCBleHRlbnNpb24oKSB7cmV0dXJuIFwiXCI7fVxyXG4gICAgZ2V0IGFkZG9uRm9sZGVyKCkge3JldHVybiBcIlwiO31cclxuICAgIGdldCBsYW5ndWFnZSgpIHtyZXR1cm4gXCJcIjt9XHJcbiAgICBnZXQgcHJlZml4KCkge3JldHVybiBcImFkZG9uXCI7fVxyXG4gICAgZ2V0IGNvbGxlY3Rpb24oKSB7cmV0dXJuIFwic2V0dGluZ3NcIjt9XHJcbiAgICBnZXQgY2F0ZWdvcnkoKSB7cmV0dXJuIFwiYWRkb25zXCI7fVxyXG4gICAgZ2V0IGlkKCkge3JldHVybiBcImF1dG9SZWxvYWRcIjt9XHJcbiAgICBlbWl0KGV2ZW50LCAuLi5hcmdzKSB7cmV0dXJuIEV2ZW50cy5lbWl0KGAke3RoaXMucHJlZml4fS0ke2V2ZW50fWAsIC4uLmFyZ3MpO31cclxuXHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICB0aGlzLnRpbWVDYWNoZSA9IHt9O1xyXG4gICAgICAgIHRoaXMuYWRkb25MaXN0ID0gW107XHJcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHt9O1xyXG4gICAgfVxyXG5cclxuICAgIGluaXRpYWxpemUoKSB7XHJcbiAgICAgICAgdGhpcy5vcmlnaW5hbFJlcXVpcmUgPSBNb2R1bGUuX2V4dGVuc2lvbnNbdGhpcy5tb2R1bGVFeHRlbnNpb25dO1xyXG4gICAgICAgIE1vZHVsZS5fZXh0ZW5zaW9uc1t0aGlzLm1vZHVsZUV4dGVuc2lvbl0gPSB0aGlzLmdldEFkZG9uUmVxdWlyZSgpO1xyXG4gICAgICAgIFNldHRpbmdzLm9uKHRoaXMuY29sbGVjdGlvbiwgdGhpcy5jYXRlZ29yeSwgdGhpcy5pZCwgKGVuYWJsZWQpID0+IHtcclxuICAgICAgICAgICAgaWYgKGVuYWJsZWQpIHRoaXMud2F0Y2hBZGRvbnMoKTtcclxuICAgICAgICAgICAgZWxzZSB0aGlzLnVud2F0Y2hBZGRvbnMoKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gdGhpcy5sb2FkQWxsQWRkb25zKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gU3ViY2xhc3NlcyBzaG91bGQgb3ZlcmxvYWQgdGhpcyBhbmQgbW9kaWZ5IHRoZSBhZGRvbiBvYmplY3QgYXMgbmVlZGVkIHRvIGZ1bGx5IGxvYWQgaXRcclxuICAgIGluaXRpYWxpemVBZGRvbigpIHtyZXR1cm47fVxyXG5cclxuICAgIC8vIFN1YmNsYXNzZXMgc2hvdWxkIG92ZXJsb2FkIHRoaXMgYW5kIG1vZGlmeSB0aGUgZmlsZUNvbnRlbnQgYXMgbmVlZGVkIHRvIHJlcXVpcmUoKSB0aGUgZmlsZVxyXG4gICAgZ2V0RmlsZU1vZGlmaWNhdGlvbihtb2R1bGUsIGZpbGVDb250ZW50KSB7cmV0dXJuIGZpbGVDb250ZW50O31cclxuXHJcbiAgICBzdGFydEFkZG9uKCkge3JldHVybjt9XHJcbiAgICBzdG9wQWRkb24oKSB7cmV0dXJuO31cclxuXHJcbiAgICBsb2FkU3RhdGUoKSB7XHJcbiAgICAgICAgY29uc3Qgc2F2ZWQgPSBEYXRhU3RvcmUuZ2V0RGF0YShgJHt0aGlzLnByZWZpeH1zYCk7XHJcbiAgICAgICAgaWYgKCFzYXZlZCkgcmV0dXJuO1xyXG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5zdGF0ZSwgc2F2ZWQpO1xyXG4gICAgfVxyXG5cclxuICAgIHNhdmVTdGF0ZSgpIHtcclxuICAgICAgICBEYXRhU3RvcmUuc2V0RGF0YShgJHt0aGlzLnByZWZpeH1zYCwgdGhpcy5zdGF0ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgd2F0Y2hBZGRvbnMoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMud2F0Y2hlcikgcmV0dXJuIExvZ2dlci5lcnJvcih0aGlzLm5hbWUsIGBBbHJlYWR5IHdhdGNoaW5nICR7dGhpcy5wcmVmaXh9IGFkZG9ucy5gKTtcclxuICAgICAgICBMb2dnZXIubG9nKHRoaXMubmFtZSwgYFN0YXJ0aW5nIHRvIHdhdGNoICR7dGhpcy5wcmVmaXh9IGFkZG9ucy5gKTtcclxuICAgICAgICB0aGlzLndhdGNoZXIgPSBmcy53YXRjaCh0aGlzLmFkZG9uRm9sZGVyLCB7cGVyc2lzdGVudDogZmFsc2V9LCBhc3luYyAoZXZlbnRUeXBlLCBmaWxlbmFtZSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIWV2ZW50VHlwZSB8fCAhZmlsZW5hbWUgfHwgIWZpbGVuYW1lLmVuZHNXaXRoKHRoaXMuZXh0ZW5zaW9uKSkgcmV0dXJuO1xyXG4gICAgICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZShyID0+IHNldFRpbWVvdXQociwgMTAwKSk7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBzdGF0cyA9IGZzLnN0YXRTeW5jKHBhdGgucmVzb2x2ZSh0aGlzLmFkZG9uRm9sZGVyLCBmaWxlbmFtZSkpO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFzdGF0cy5pc0ZpbGUoKSkgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFzdGF0cyB8fCAhc3RhdHMubXRpbWUgfHwgIXN0YXRzLm10aW1lLmdldFRpbWUoKSkgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZihzdGF0cy5tdGltZS5nZXRUaW1lKCkpICE9PSBcIm51bWJlclwiKSByZXR1cm47XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy50aW1lQ2FjaGVbZmlsZW5hbWVdID09IHN0YXRzLm10aW1lLmdldFRpbWUoKSkgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgdGhpcy50aW1lQ2FjaGVbZmlsZW5hbWVdID0gc3RhdHMubXRpbWUuZ2V0VGltZSgpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50VHlwZSA9PSBcInJlbmFtZVwiKSB0aGlzLmxvYWRBZGRvbihmaWxlbmFtZSwgdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnRUeXBlID09IFwiY2hhbmdlXCIpIHRoaXMucmVsb2FkQWRkb24oZmlsZW5hbWUsIHRydWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcclxuICAgICAgICAgICAgICAgIGlmIChlcnIuY29kZSAhPT0gXCJFTk9FTlRcIikgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMudGltZUNhY2hlW2ZpbGVuYW1lXTtcclxuICAgICAgICAgICAgICAgIHRoaXMudW5sb2FkQWRkb24oZmlsZW5hbWUsIHRydWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdW53YXRjaEFkZG9ucygpIHtcclxuICAgICAgICBpZiAoIXRoaXMud2F0Y2hlcikgcmV0dXJuIExvZ2dlci5lcnJvcih0aGlzLm5hbWUsIGBXYXMgbm90IHdhdGNoaW5nICR7dGhpcy5wcmVmaXh9IGFkZG9ucy5gKTtcclxuICAgICAgICB0aGlzLndhdGNoZXIuY2xvc2UoKTtcclxuICAgICAgICBkZWxldGUgdGhpcy53YXRjaGVyO1xyXG4gICAgICAgIExvZ2dlci5sb2codGhpcy5uYW1lLCBgTm8gbG9uZ2VyIHdhdGNoaW5nICR7dGhpcy5wcmVmaXh9IGFkZG9ucy5gKTtcclxuICAgIH1cclxuXHJcbiAgICBleHRyYWN0TWV0YShmaWxlQ29udGVudCkge1xyXG4gICAgICAgIGNvbnN0IGZpcnN0TGluZSA9IGZpbGVDb250ZW50LnNwbGl0KFwiXFxuXCIpWzBdO1xyXG4gICAgICAgIGNvbnN0IGhhc09sZE1ldGEgPSBmaXJzdExpbmUuaW5jbHVkZXMoXCIvL01FVEFcIik7XHJcbiAgICAgICAgaWYgKGhhc09sZE1ldGEpIHJldHVybiB0aGlzLnBhcnNlT2xkTWV0YShmaWxlQ29udGVudCk7XHJcbiAgICAgICAgY29uc3QgaGFzTmV3TWV0YSA9IGZpcnN0TGluZS5pbmNsdWRlcyhcIi8qKlwiKTtcclxuICAgICAgICBpZiAoaGFzTmV3TWV0YSkgcmV0dXJuIHRoaXMucGFyc2VOZXdNZXRhKGZpbGVDb250ZW50KTtcclxuICAgICAgICB0aHJvdyBuZXcgTWV0YUVycm9yKFwiTUVUQSB3YXMgbm90IGZvdW5kLlwiKTtcclxuICAgIH1cclxuXHJcbiAgICBwYXJzZU9sZE1ldGEoZmlsZUNvbnRlbnQpIHtcclxuICAgICAgICBjb25zdCBtZXRhID0gZmlsZUNvbnRlbnQuc3BsaXQoXCJcXG5cIilbMF07XHJcbiAgICAgICAgY29uc3QgbWV0YURhdGEgPSBtZXRhLnN1YnN0cmluZyhtZXRhLmxhc3RJbmRleE9mKFwiLy9NRVRBXCIpICsgNiwgbWV0YS5sYXN0SW5kZXhPZihcIiovL1wiKSk7XHJcbiAgICAgICAgY29uc3QgcGFyc2VkID0gVXRpbGl0aWVzLnRlc3RKU09OKG1ldGFEYXRhKTtcclxuICAgICAgICBpZiAoIXBhcnNlZCkgdGhyb3cgbmV3IE1ldGFFcnJvcihcIk1FVEEgY291bGQgbm90IGJlIHBhcnNlZC5cIik7XHJcbiAgICAgICAgaWYgKCFwYXJzZWQubmFtZSkgdGhyb3cgbmV3IE1ldGFFcnJvcihcIk1FVEEgbWlzc2luZyBuYW1lIGRhdGEuXCIpO1xyXG4gICAgICAgIHBhcnNlZC5mb3JtYXQgPSBcImpzb25cIjtcclxuICAgICAgICByZXR1cm4gcGFyc2VkO1xyXG4gICAgfVxyXG5cclxuICAgIHBhcnNlTmV3TWV0YShmaWxlQ29udGVudCkge1xyXG4gICAgICAgIGNvbnN0IGJsb2NrID0gZmlsZUNvbnRlbnQuc3BsaXQoXCIvKipcIiwgMilbMV0uc3BsaXQoXCIqL1wiLCAxKVswXTtcclxuICAgICAgICBjb25zdCBvdXQgPSB7fTtcclxuICAgICAgICBsZXQgZmllbGQgPSBcIlwiO1xyXG4gICAgICAgIGxldCBhY2N1bSA9IFwiXCI7XHJcbiAgICAgICAgZm9yIChjb25zdCBsaW5lIG9mIGJsb2NrLnNwbGl0KHNwbGl0UmVnZXgpKSB7XHJcbiAgICAgICAgICAgIGlmIChsaW5lLmxlbmd0aCA9PT0gMCkgY29udGludWU7XHJcbiAgICAgICAgICAgIGlmIChsaW5lLmNoYXJBdCgwKSA9PT0gXCJAXCIgJiYgbGluZS5jaGFyQXQoMSkgIT09IFwiIFwiKSB7XHJcbiAgICAgICAgICAgICAgICBvdXRbZmllbGRdID0gYWNjdW07XHJcbiAgICAgICAgICAgICAgICBjb25zdCBsID0gbGluZS5pbmRleE9mKFwiIFwiKTtcclxuICAgICAgICAgICAgICAgIGZpZWxkID0gbGluZS5zdWJzdHIoMSwgbCAtIDEpO1xyXG4gICAgICAgICAgICAgICAgYWNjdW0gPSBsaW5lLnN1YnN0cihsICsgMSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBhY2N1bSArPSBcIiBcIiArIGxpbmUucmVwbGFjZShcIlxcXFxuXCIsIFwiXFxuXCIpLnJlcGxhY2UoZXNjYXBlZEF0UmVnZXgsIFwiQFwiKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBvdXRbZmllbGRdID0gYWNjdW0udHJpbSgpO1xyXG4gICAgICAgIGRlbGV0ZSBvdXRbXCJcIl07XHJcbiAgICAgICAgb3V0LmZvcm1hdCA9IFwianNkb2NcIjtcclxuICAgICAgICByZXR1cm4gb3V0O1xyXG4gICAgfVxyXG5cclxuICAgIGdldEFkZG9uUmVxdWlyZSgpIHtcclxuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcclxuICAgICAgICAvLyBjb25zdCBiYXNlRm9sZGVyID0gdGhpcy5hZGRvbkZvbGRlcjtcclxuICAgICAgICBjb25zdCBvcmlnaW5hbFJlcXVpcmUgPSB0aGlzLm9yaWdpbmFsUmVxdWlyZTtcclxuICAgICAgICByZXR1cm4gZnVuY3Rpb24obW9kdWxlLCBmaWxlbmFtZSkge1xyXG4gICAgICAgICAgICBjb25zdCBwb3NzaWJsZVBhdGggPSBwYXRoLnJlc29sdmUoc2VsZi5hZGRvbkZvbGRlciwgcGF0aC5iYXNlbmFtZShmaWxlbmFtZSkpO1xyXG4gICAgICAgICAgICBpZiAoIWZzLmV4aXN0c1N5bmMocG9zc2libGVQYXRoKSB8fCBmaWxlbmFtZSAhPT0gZnMucmVhbHBhdGhTeW5jKHBvc3NpYmxlUGF0aCkpIHJldHVybiBSZWZsZWN0LmFwcGx5KG9yaWdpbmFsUmVxdWlyZSwgdGhpcywgYXJndW1lbnRzKTtcclxuICAgICAgICAgICAgbGV0IGZpbGVDb250ZW50ID0gZnMucmVhZEZpbGVTeW5jKGZpbGVuYW1lLCBcInV0ZjhcIik7XHJcbiAgICAgICAgICAgIGZpbGVDb250ZW50ID0gc3RyaXBCT00oZmlsZUNvbnRlbnQpO1xyXG4gICAgICAgICAgICBjb25zdCBzdGF0cyA9IGZzLnN0YXRTeW5jKGZpbGVuYW1lKTtcclxuICAgICAgICAgICAgY29uc3QgbWV0YSA9IHNlbGYuZXh0cmFjdE1ldGEoZmlsZUNvbnRlbnQpO1xyXG4gICAgICAgICAgICBpZiAoIW1ldGEuYXV0aG9yKSBtZXRhLmF1dGhvciA9IFN0cmluZ3MuQWRkb25zLnVua25vd25BdXRob3I7XHJcbiAgICAgICAgICAgIGlmICghbWV0YS52ZXJzaW9uKSBtZXRhLnZlcnNpb24gPSBcIj8/P1wiO1xyXG4gICAgICAgICAgICBpZiAoIW1ldGEuZGVzY3JpcHRpb24pIG1ldGEuZGVzY3JpcHRpb24gPSBTdHJpbmdzLkFkZG9ucy5ub0Rlc2NyaXB0aW9uO1xyXG4gICAgICAgICAgICBtZXRhLmlkID0gbWV0YS5uYW1lO1xyXG4gICAgICAgICAgICBtZXRhLmZpbGVuYW1lID0gcGF0aC5iYXNlbmFtZShmaWxlbmFtZSk7XHJcbiAgICAgICAgICAgIG1ldGEuYWRkZWQgPSBzdGF0cy5hdGltZU1zO1xyXG4gICAgICAgICAgICBtZXRhLm1vZGlmaWVkID0gc3RhdHMubXRpbWVNcztcclxuICAgICAgICAgICAgbWV0YS5zaXplID0gc3RhdHMuc2l6ZTtcclxuICAgICAgICAgICAgZmlsZUNvbnRlbnQgPSBzZWxmLmdldEZpbGVNb2RpZmljYXRpb24obW9kdWxlLCBmaWxlQ29udGVudCwgbWV0YSk7XHJcbiAgICAgICAgICAgIG1vZHVsZS5fY29tcGlsZShmaWxlQ29udGVudCwgZmlsZW5hbWUpO1xyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgLy8gU3ViY2xhc3NlcyBzaG91bGQgdXNlIHRoZSByZXR1cm4gKGlmIG5vdCBBZGRvbkVycm9yKSBhbmQgcHVzaCB0byB0aGlzLmFkZG9uTGlzdFxyXG4gICAgbG9hZEFkZG9uKGZpbGVuYW1lLCBzaG91bGRUb2FzdCA9IGZhbHNlKSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZihmaWxlbmFtZSkgPT09IFwidW5kZWZpbmVkXCIpIHJldHVybjtcclxuICAgICAgICB0cnkge19fbm9uX3dlYnBhY2tfcmVxdWlyZV9fKHBhdGgucmVzb2x2ZSh0aGlzLmFkZG9uRm9sZGVyLCBmaWxlbmFtZSkpO31cclxuICAgICAgICBjYXRjaCAoZXJyb3IpIHtyZXR1cm4gbmV3IEFkZG9uRXJyb3IoZmlsZW5hbWUsIGZpbGVuYW1lLCBcIkNvdWxkIG5vdCBiZSBjb21waWxlZC5cIiwge21lc3NhZ2U6IGVycm9yLm1lc3NhZ2UsIHN0YWNrOiBlcnJvci5zdGFja30pO31cclxuICAgICAgICBjb25zdCBhZGRvbiA9IF9fbm9uX3dlYnBhY2tfcmVxdWlyZV9fKHBhdGgucmVzb2x2ZSh0aGlzLmFkZG9uRm9sZGVyLCBmaWxlbmFtZSkpO1xyXG4gICAgICAgIGlmICh0aGlzLmFkZG9uTGlzdC5maW5kKGMgPT4gYy5pZCA9PSBhZGRvbi5pZCkpIHJldHVybiBuZXcgQWRkb25FcnJvcihhZGRvbi5uYW1lLCBmaWxlbmFtZSwgYFRoZXJlIGlzIGFscmVhZHkgYSBwbHVnaW4gd2l0aCBuYW1lICR7YWRkb24ubmFtZX1gKTtcclxuICAgICAgICBjb25zdCBlcnJvciA9IHRoaXMuaW5pdGlhbGl6ZUFkZG9uKGFkZG9uKTtcclxuICAgICAgICBpZiAoZXJyb3IpIHJldHVybiBlcnJvcjtcclxuICAgICAgICB0aGlzLmFkZG9uTGlzdC5wdXNoKGFkZG9uKTtcclxuICAgICAgICBpZiAoc2hvdWxkVG9hc3QpIFRvYXN0cy5zdWNjZXNzKGAke2FkZG9uLm5hbWV9IHYke2FkZG9uLnZlcnNpb259IHdhcyBsb2FkZWQuYCk7XHJcbiAgICAgICAgdGhpcy5lbWl0KFwibG9hZGVkXCIsIGFkZG9uLmlkKTtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLnN0YXRlW2FkZG9uLmlkXSkgcmV0dXJuIHRoaXMuc3RhdGVbYWRkb24uaWRdID0gZmFsc2U7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhcnRBZGRvbihhZGRvbik7XHJcbiAgICB9XHJcblxyXG4gICAgdW5sb2FkQWRkb24oaWRPckZpbGVPckFkZG9uLCBzaG91bGRUb2FzdCA9IHRydWUsIGlzUmVsb2FkID0gZmFsc2UpIHtcclxuICAgICAgICBjb25zdCBhZGRvbiA9IHR5cGVvZihpZE9yRmlsZU9yQWRkb24pID09IFwic3RyaW5nXCIgPyB0aGlzLmFkZG9uTGlzdC5maW5kKGMgPT4gYy5pZCA9PSBpZE9yRmlsZU9yQWRkb24gfHwgYy5maWxlbmFtZSA9PSBpZE9yRmlsZU9yQWRkb24pIDogaWRPckZpbGVPckFkZG9uO1xyXG4gICAgICAgIGlmICghYWRkb24pIHJldHVybiBmYWxzZTtcclxuICAgICAgICBpZiAodGhpcy5zdGF0ZVthZGRvbi5pZF0pIGlzUmVsb2FkID8gdGhpcy5zdG9wQWRkb24oYWRkb24pIDogdGhpcy5kaXNhYmxlQWRkb24oYWRkb24pO1xyXG4gICAgICAgIGRlbGV0ZSBfX25vbl93ZWJwYWNrX3JlcXVpcmVfXy5jYWNoZVtfX25vbl93ZWJwYWNrX3JlcXVpcmVfXy5yZXNvbHZlKHBhdGgucmVzb2x2ZSh0aGlzLmFkZG9uRm9sZGVyLCBhZGRvbi5maWxlbmFtZSkpXTtcclxuICAgICAgICB0aGlzLmFkZG9uTGlzdC5zcGxpY2UodGhpcy5hZGRvbkxpc3QuaW5kZXhPZihhZGRvbiksIDEpO1xyXG4gICAgICAgIHRoaXMuZW1pdChcInVubG9hZGVkXCIsIGFkZG9uLmlkKTtcclxuICAgICAgICBpZiAoc2hvdWxkVG9hc3QpIFRvYXN0cy5zdWNjZXNzKGAke2FkZG9uLm5hbWV9IHdhcyB1bmxvYWRlZC5gKTtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICByZWxvYWRBZGRvbihpZE9yRmlsZU9yQWRkb24sIHNob3VsZFRvYXN0ID0gdHJ1ZSkge1xyXG4gICAgICAgIGNvbnN0IGFkZG9uID0gdHlwZW9mKGlkT3JGaWxlT3JBZGRvbikgPT0gXCJzdHJpbmdcIiA/IHRoaXMuYWRkb25MaXN0LmZpbmQoYyA9PiBjLmlkID09IGlkT3JGaWxlT3JBZGRvbiB8fCBjLmZpbGVuYW1lID09IGlkT3JGaWxlT3JBZGRvbikgOiBpZE9yRmlsZU9yQWRkb247XHJcbiAgICAgICAgY29uc3QgZGlkVW5sb2FkID0gdGhpcy51bmxvYWRBZGRvbihhZGRvbiwgc2hvdWxkVG9hc3QsIHRydWUpO1xyXG4gICAgICAgIGlmICghZGlkVW5sb2FkKSByZXR1cm4gZGlkVW5sb2FkO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmxvYWRBZGRvbihhZGRvbi5maWxlbmFtZSwgc2hvdWxkVG9hc3QpO1xyXG4gICAgfVxyXG5cclxuICAgIGlzTG9hZGVkKGlkT3JGaWxlKSB7XHJcbiAgICAgICAgY29uc3QgYWRkb24gPSB0aGlzLmFkZG9uTGlzdC5maW5kKGMgPT4gYy5pZCA9PSBpZE9yRmlsZSB8fCBjLmZpbGVuYW1lID09IGlkT3JGaWxlKTtcclxuICAgICAgICBpZiAoIWFkZG9uKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgaXNFbmFibGVkKGlkT3JGaWxlKSB7XHJcbiAgICAgICAgY29uc3QgYWRkb24gPSB0aGlzLmFkZG9uTGlzdC5maW5kKGMgPT4gYy5pZCA9PSBpZE9yRmlsZSB8fCBjLmZpbGVuYW1lID09IGlkT3JGaWxlKTtcclxuICAgICAgICBpZiAoIWFkZG9uKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhdGVbYWRkb24uaWRdO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEFkZG9uKGlkT3JGaWxlKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRkb25MaXN0LmZpbmQoYyA9PiBjLmlkID09IGlkT3JGaWxlIHx8IGMuZmlsZW5hbWUgPT0gaWRPckZpbGUpO1xyXG4gICAgfVxyXG5cclxuICAgIGVuYWJsZUFkZG9uKGlkT3JBZGRvbikge1xyXG4gICAgICAgIGNvbnN0IGFkZG9uID0gdHlwZW9mKGlkT3JBZGRvbikgPT0gXCJzdHJpbmdcIiA/IHRoaXMuYWRkb25MaXN0LmZpbmQocCA9PiBwLmlkID09IGlkT3JBZGRvbikgOiBpZE9yQWRkb247XHJcbiAgICAgICAgaWYgKCFhZGRvbikgcmV0dXJuO1xyXG4gICAgICAgIGlmICh0aGlzLnN0YXRlW2FkZG9uLmlkXSkgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMuc3RhdGVbYWRkb24uaWRdID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnN0YXJ0QWRkb24oYWRkb24pO1xyXG4gICAgICAgIHRoaXMuc2F2ZVN0YXRlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZGlzYWJsZUFkZG9uKGlkT3JBZGRvbikge1xyXG4gICAgICAgIGNvbnN0IGFkZG9uID0gdHlwZW9mKGlkT3JBZGRvbikgPT0gXCJzdHJpbmdcIiA/IHRoaXMuYWRkb25MaXN0LmZpbmQocCA9PiBwLmlkID09IGlkT3JBZGRvbikgOiBpZE9yQWRkb247XHJcbiAgICAgICAgaWYgKCFhZGRvbikgcmV0dXJuO1xyXG4gICAgICAgIGlmICghdGhpcy5zdGF0ZVthZGRvbi5pZF0pIHJldHVybjtcclxuICAgICAgICB0aGlzLnN0YXRlW2FkZG9uLmlkXSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc3RvcEFkZG9uKGFkZG9uKTtcclxuICAgICAgICB0aGlzLnNhdmVTdGF0ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHRvZ2dsZUFkZG9uKGlkKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc3RhdGVbaWRdKSB0aGlzLmRpc2FibGVBZGRvbihpZCk7XHJcbiAgICAgICAgZWxzZSB0aGlzLmVuYWJsZUFkZG9uKGlkKTtcclxuICAgIH1cclxuXHJcbiAgICBsb2FkTmV3QWRkb25zKCkge1xyXG4gICAgICAgIGNvbnN0IGZpbGVzID0gZnMucmVhZGRpclN5bmModGhpcy5hZGRvbkZvbGRlcik7XHJcbiAgICAgICAgY29uc3QgcmVtb3ZlZCA9IHRoaXMuYWRkb25MaXN0LmZpbHRlcih0ID0+ICFmaWxlcy5pbmNsdWRlcyh0LmZpbGVuYW1lKSkubWFwKGMgPT4gYy5pZCk7XHJcbiAgICAgICAgY29uc3QgYWRkZWQgPSBmaWxlcy5maWx0ZXIoZiA9PiAhdGhpcy5hZGRvbkxpc3QuZmluZCh0ID0+IHQuZmlsZW5hbWUgPT0gZikgJiYgZi5lbmRzV2l0aCh0aGlzLmV4dGVuc2lvbikgJiYgZnMuc3RhdFN5bmMocGF0aC5yZXNvbHZlKHRoaXMuYWRkb25Gb2xkZXIsIGYpKS5pc0ZpbGUoKSk7XHJcbiAgICAgICAgcmV0dXJuIHthZGRlZCwgcmVtb3ZlZH07XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlTGlzdCgpIHtcclxuICAgICAgICBjb25zdCByZXN1bHRzID0gdGhpcy5sb2FkTmV3QWRkb25zKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBmaWxlbmFtZSBvZiByZXN1bHRzLmFkZGVkKSB0aGlzLmxvYWRBZGRvbihmaWxlbmFtZSk7XHJcbiAgICAgICAgZm9yIChjb25zdCBuYW1lIG9mIHJlc3VsdHMucmVtb3ZlZCkgdGhpcy51bmxvYWRBZGRvbihuYW1lKTtcclxuICAgIH1cclxuXHJcbiAgICBsb2FkQWxsQWRkb25zKCkge1xyXG4gICAgICAgIHRoaXMubG9hZFN0YXRlKCk7XHJcbiAgICAgICAgY29uc3QgZXJyb3JzID0gW107XHJcbiAgICAgICAgY29uc3QgZmlsZXMgPSBmcy5yZWFkZGlyU3luYyh0aGlzLmFkZG9uRm9sZGVyKTtcclxuXHJcbiAgICAgICAgZm9yIChjb25zdCBmaWxlbmFtZSBvZiBmaWxlcykge1xyXG4gICAgICAgICAgICBpZiAoIWZzLnN0YXRTeW5jKHBhdGgucmVzb2x2ZSh0aGlzLmFkZG9uRm9sZGVyLCBmaWxlbmFtZSkpLmlzRmlsZSgpIHx8ICFmaWxlbmFtZS5lbmRzV2l0aCh0aGlzLmV4dGVuc2lvbikpIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICBjb25zdCBhZGRvbiA9IHRoaXMubG9hZEFkZG9uKGZpbGVuYW1lLCBmYWxzZSk7XHJcbiAgICAgICAgICAgIGlmIChhZGRvbiBpbnN0YW5jZW9mIEFkZG9uRXJyb3IpIGVycm9ycy5wdXNoKGFkZG9uKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuc2F2ZVN0YXRlKCk7XHJcbiAgICAgICAgaWYgKFNldHRpbmdzLmdldCh0aGlzLmNvbGxlY3Rpb24sIHRoaXMuY2F0ZWdvcnksIHRoaXMuaWQpKSB0aGlzLndhdGNoQWRkb25zKCk7XHJcbiAgICAgICAgcmV0dXJuIGVycm9ycztcclxuICAgIH1cclxuXHJcbiAgICBkZWxldGVBZGRvbihpZE9yRmlsZU9yQWRkb24pIHtcclxuICAgICAgICBjb25zdCBhZGRvbiA9IHR5cGVvZihpZE9yRmlsZU9yQWRkb24pID09IFwic3RyaW5nXCIgPyB0aGlzLmFkZG9uTGlzdC5maW5kKGMgPT4gYy5pZCA9PSBpZE9yRmlsZU9yQWRkb24gfHwgYy5maWxlbmFtZSA9PSBpZE9yRmlsZU9yQWRkb24pIDogaWRPckZpbGVPckFkZG9uO1xyXG4gICAgICAgIHJldHVybiBmcy51bmxpbmtTeW5jKHBhdGgucmVzb2x2ZSh0aGlzLmFkZG9uRm9sZGVyLCBhZGRvbi5maWxlbmFtZSkpO1xyXG4gICAgfVxyXG5cclxuICAgIHNhdmVBZGRvbihpZE9yRmlsZU9yQWRkb24sIGNvbnRlbnQpIHtcclxuICAgICAgICBjb25zdCBhZGRvbiA9IHR5cGVvZihpZE9yRmlsZU9yQWRkb24pID09IFwic3RyaW5nXCIgPyB0aGlzLmFkZG9uTGlzdC5maW5kKGMgPT4gYy5pZCA9PSBpZE9yRmlsZU9yQWRkb24gfHwgYy5maWxlbmFtZSA9PSBpZE9yRmlsZU9yQWRkb24pIDogaWRPckZpbGVPckFkZG9uO1xyXG4gICAgICAgIHJldHVybiBmcy53cml0ZUZpbGVTeW5jKHBhdGgucmVzb2x2ZSh0aGlzLmFkZG9uRm9sZGVyLCBhZGRvbi5maWxlbmFtZSksIGNvbnRlbnQpO1xyXG4gICAgfVxyXG5cclxuICAgIGVkaXRBZGRvbihpZE9yRmlsZU9yQWRkb24sIHN5c3RlbSkge1xyXG4gICAgICAgIGNvbnN0IGFkZG9uID0gdHlwZW9mKGlkT3JGaWxlT3JBZGRvbikgPT0gXCJzdHJpbmdcIiA/IHRoaXMuYWRkb25MaXN0LmZpbmQoYyA9PiBjLmlkID09IGlkT3JGaWxlT3JBZGRvbiB8fCBjLmZpbGVuYW1lID09IGlkT3JGaWxlT3JBZGRvbikgOiBpZE9yRmlsZU9yQWRkb247XHJcbiAgICAgICAgY29uc3QgZnVsbFBhdGggPSBwYXRoLnJlc29sdmUodGhpcy5hZGRvbkZvbGRlciwgYWRkb24uZmlsZW5hbWUpO1xyXG4gICAgICAgIGlmICh0eXBlb2Yoc3lzdGVtKSA9PSBcInVuZGVmaW5lZFwiKSBzeXN0ZW0gPSBTZXR0aW5ncy5nZXQoXCJzZXR0aW5nc1wiLCBcImFkZG9uc1wiLCBcImVkaXRBY3Rpb25cIikgPT0gXCJzeXN0ZW1cIjtcclxuICAgICAgICBpZiAoc3lzdGVtKSByZXR1cm4gcmVxdWlyZShcImVsZWN0cm9uXCIpLnNoZWxsLm9wZW5JdGVtKGAke2Z1bGxQYXRofWApO1xyXG4gICAgICAgIHJldHVybiB0aGlzLm9wZW5EZXRhY2hlZChhZGRvbik7XHJcbiAgICB9XHJcblxyXG4gICAgb3BlbkRldGFjaGVkKGFkZG9uKSB7XHJcbiAgICAgICAgY29uc3QgZnVsbFBhdGggPSBwYXRoLnJlc29sdmUodGhpcy5hZGRvbkZvbGRlciwgYWRkb24uZmlsZW5hbWUpO1xyXG4gICAgICAgIGNvbnN0IGNvbnRlbnQgPSBmcy5yZWFkRmlsZVN5bmMoZnVsbFBhdGgpLnRvU3RyaW5nKCk7XHJcblxyXG4gICAgICAgIGNvbnN0IGVkaXRvclJlZiA9IFJlYWN0LmNyZWF0ZVJlZigpO1xyXG4gICAgICAgIGNvbnN0IGVkaXRvciA9IFJlYWN0LmNyZWF0ZUVsZW1lbnQoQWRkb25FZGl0b3IsIHtcclxuICAgICAgICAgICAgaWQ6IFwiYmQtZmxvYXRpbmctZWRpdG9yLVwiICsgYWRkb24ubmFtZSxcclxuICAgICAgICAgICAgcmVmOiBlZGl0b3JSZWYsXHJcbiAgICAgICAgICAgIGNvbnRlbnQ6IGNvbnRlbnQsXHJcbiAgICAgICAgICAgIHNhdmU6IHRoaXMuc2F2ZUFkZG9uLmJpbmQodGhpcywgYWRkb24pLFxyXG4gICAgICAgICAgICBvcGVuTmF0aXZlOiB0aGlzLmVkaXRBZGRvbi5iaW5kKHRoaXMsIGFkZG9uLCB0cnVlKSxcclxuICAgICAgICAgICAgbGFuZ3VhZ2U6IHRoaXMubGFuZ3VhZ2VcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgRmxvYXRpbmdXaW5kb3dzLm9wZW4oe1xyXG4gICAgICAgICAgICBvbkNsb3NlOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmlzRGV0YWNoZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgb25SZXNpemU6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICghZWRpdG9yUmVmIHx8ICFlZGl0b3JSZWYuY3VycmVudCB8fCAhZWRpdG9yUmVmLmN1cnJlbnQucmVzaXplKSByZXR1cm47XHJcbiAgICAgICAgICAgICAgICBlZGl0b3JSZWYuY3VycmVudC5yZXNpemUoKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgdGl0bGU6IGFkZG9uLm5hbWUsXHJcbiAgICAgICAgICAgIGlkOiBjb250ZW50LmlkLFxyXG4gICAgICAgICAgICBjbGFzc05hbWU6IFwiZmxvYXRpbmctYWRkb24td2luZG93XCIsXHJcbiAgICAgICAgICAgIGhlaWdodDogNDcwLFxyXG4gICAgICAgICAgICB3aWR0aDogNDEwLFxyXG4gICAgICAgICAgICBjZW50ZXI6IHRydWUsXHJcbiAgICAgICAgICAgIHJlc2l6YWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgY2hpbGRyZW46IGVkaXRvcixcclxuICAgICAgICAgICAgY29uZmlybUNsb3NlOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWVkaXRvclJlZiB8fCAhZWRpdG9yUmVmLmN1cnJlbnQpIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBlZGl0b3JSZWYuY3VycmVudC5oYXNVbnNhdmVkQ2hhbmdlcztcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgY29uZmlybWF0aW9uVGV4dDogU3RyaW5ncy5BZGRvbnMuY29uZmlybWF0aW9uVGV4dC5mb3JtYXQoe25hbWU6IGFkZG9uLm5hbWV9KVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/addonmanager.js\n"); /***/ }), @@ -407,7 +406,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var data__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! data */ \"./src/data/data.js\");\n/* harmony import */ var _webpackmodules__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./webpackmodules */ \"./src/modules/webpackmodules.js\");\n/* harmony import */ var _discordmodules__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./discordmodules */ \"./src/modules/discordmodules.js\");\n/* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utilities */ \"./src/modules/utilities.js\");\n/* harmony import */ var _patcher__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./patcher */ \"./src/modules/patcher.js\");\n/* harmony import */ var _ui_icons_bdlogo__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../ui/icons/bdlogo */ \"./src/ui/icons/bdlogo.jsx\");\n\n\n\n\n\n\nconst React = _discordmodules__WEBPACK_IMPORTED_MODULE_2__[\"default\"].React;\nconst Tooltip = _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByDisplayName(\"Tooltip\");\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class ComponentPatcher {\n initialize() {\n _utilities__WEBPACK_IMPORTED_MODULE_3__[\"default\"].suppressErrors(this.patchSocial.bind(this), \"BD Social Patch\")();\n _utilities__WEBPACK_IMPORTED_MODULE_3__[\"default\"].suppressErrors(this.patchGuildPills.bind(this), \"BD Guild Pills Patch\")();\n _utilities__WEBPACK_IMPORTED_MODULE_3__[\"default\"].suppressErrors(this.patchGuildListItems.bind(this), \"BD Guild List Items Patch\")();\n _utilities__WEBPACK_IMPORTED_MODULE_3__[\"default\"].suppressErrors(this.patchGuildSeparator.bind(this), \"BD Guild Separator Patch\")();\n _utilities__WEBPACK_IMPORTED_MODULE_3__[\"default\"].suppressErrors(this.patchMessageHeader.bind(this), \"BD Message Header Patch\")();\n _utilities__WEBPACK_IMPORTED_MODULE_3__[\"default\"].suppressErrors(this.patchMemberList.bind(this), \"BD Member List Patch\")();\n }\n\n patchSocial() {\n if (this.socialPatch) return;\n const TabBar = _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByDisplayName(\"TabBar\");\n const Anchor = _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByDisplayName(\"Anchor\");\n if (!TabBar) return;\n this.socialPatch = _patcher__WEBPACK_IMPORTED_MODULE_4__[\"default\"].after(\"ComponentPatcher\", TabBar.prototype, \"render\", (thisObject, args, returnValue) => {\n const children = returnValue.props.children;\n if (!children || !children.length || children.length < 3) return;\n if (children[children.length - 3].type.displayName !== \"Separator\") return;\n if (!children[children.length - 2].type.toString().includes(\"socialLinks\")) return;\n\n if (Anchor) {\n const original = children[children.length - 2].type;\n\n const newOne = function () {\n const returnVal = original(...arguments);\n returnVal.props.children.push(_discordmodules__WEBPACK_IMPORTED_MODULE_2__[\"default\"].React.createElement(Anchor, {\n className: \"bd-social-link\",\n href: \"https://twitter.com/BandagedBD\",\n title: \"BandagedBD\",\n target: \"_blank\"\n }, _discordmodules__WEBPACK_IMPORTED_MODULE_2__[\"default\"].React.createElement(_ui_icons_bdlogo__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n size: \"16px\",\n className: \"bd-social-logo\"\n })));\n return returnVal;\n };\n\n children[children.length - 2].type = newOne;\n }\n\n const injector = _discordmodules__WEBPACK_IMPORTED_MODULE_2__[\"default\"].React.createElement(\"div\", {\n className: \"colorMuted-HdFt4q size12-3cLvbJ\"\n }, `Injector ${data__WEBPACK_IMPORTED_MODULE_0__[\"Config\"].version}`);\n const versionHash = `(${data__WEBPACK_IMPORTED_MODULE_0__[\"Config\"].hash ? data__WEBPACK_IMPORTED_MODULE_0__[\"Config\"].hash.substring(0, 7) : data__WEBPACK_IMPORTED_MODULE_0__[\"Config\"].branch})`;\n const additional = _discordmodules__WEBPACK_IMPORTED_MODULE_2__[\"default\"].React.createElement(\"div\", {\n className: \"colorMuted-HdFt4q size12-3cLvbJ\"\n }, `BBD ${data__WEBPACK_IMPORTED_MODULE_0__[\"Config\"].bbdVersion} `, _discordmodules__WEBPACK_IMPORTED_MODULE_2__[\"default\"].React.createElement(\"span\", {\n className: \"versionHash-2gXjIB da-versionHash\"\n }, versionHash));\n const originalVersions = children[children.length - 1].type;\n\n children[children.length - 1].type = function () {\n const returnVal = originalVersions(...arguments);\n returnVal.props.children.splice(returnVal.props.children.length - 1, 0, injector);\n returnVal.props.children.splice(1, 0, additional);\n return returnVal;\n };\n });\n }\n\n patchGuildListItems() {\n if (this.guildListItemsPatch) return;\n const listItemClass = _discordmodules__WEBPACK_IMPORTED_MODULE_2__[\"default\"].GuildClasses.listItem.split(\" \")[0];\n const blobClass = _discordmodules__WEBPACK_IMPORTED_MODULE_2__[\"default\"].GuildClasses.blobContainer.split(\" \")[0];\n const reactInstance = _utilities__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getReactInstance(document.querySelector(`.${listItemClass} .${blobClass}`).parentElement);\n const GuildComponent = reactInstance.return.type;\n if (!GuildComponent) return;\n this.guildListItemsPatch = _patcher__WEBPACK_IMPORTED_MODULE_4__[\"default\"].after(\"ComponentPatcher\", GuildComponent.prototype, \"render\", (thisObject, _, returnValue) => {\n if (!returnValue || !thisObject) return;\n const guildData = thisObject.props;\n returnValue.props.className += \" bd-guild\";\n if (guildData.unread) returnValue.props.className += \" bd-unread\";\n if (guildData.selected) returnValue.props.className += \" bd-selected\";\n if (guildData.audio) returnValue.props.className += \" bd-audio\";\n if (guildData.video) returnValue.props.className += \" bd-video\";\n if (guildData.badge) returnValue.props.className += \" bd-badge\";\n if (guildData.animatable) returnValue.props.className += \" bd-animatable\";\n return returnValue;\n });\n }\n\n patchGuildPills() {\n if (this.guildPillPatch) return;\n const guildPill = _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getModule(m => m.default && !m.default.displayName && m.default.toString && m.default.toString().includes(\"translate3d\"));\n if (!guildPill) return;\n this.guildPillPatch = _patcher__WEBPACK_IMPORTED_MODULE_4__[\"default\"].after(\"ComponentPatcher\", guildPill, \"default\", (_, args, returnValue) => {\n const props = args[0];\n if (props.unread) returnValue.props.className += \" bd-unread\";\n if (props.selected) returnValue.props.className += \" bd-selected\";\n if (props.hovered) returnValue.props.className += \" bd-hovered\";\n return returnValue;\n });\n }\n\n patchGuildSeparator() {\n if (this.guildSeparatorPatch) return;\n const Guilds = _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByDisplayName(\"Guilds\");\n const guildComponents = _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"renderListItem\");\n if (!guildComponents || !Guilds) return;\n\n const GuildSeparator = function () {\n const returnValue = guildComponents.Separator(...arguments);\n returnValue.props.className += \" bd-guild-separator\";\n return returnValue;\n };\n\n this.guildSeparatorPatch = _patcher__WEBPACK_IMPORTED_MODULE_4__[\"default\"].after(\"ComponentPatcher\", Guilds.prototype, \"render\", (_, __, returnValue) => {\n const Separator = _utilities__WEBPACK_IMPORTED_MODULE_3__[\"default\"].findInReactTree(returnValue, m => m.type && !m.type.displayName && typeof m.type == \"function\" && _utilities__WEBPACK_IMPORTED_MODULE_3__[\"default\"].isEmpty(m.props));\n if (!Separator) return;\n Separator.type = GuildSeparator;\n });\n }\n\n patchMessageHeader() {\n if (this.messageHeaderPatch) return;\n const MessageHeader = _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"MessageTimestamp\");\n const Anchor = _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].find(m => m.displayName == \"Anchor\");\n if (!Anchor || !MessageHeader || !MessageHeader.default) return;\n this.messageHeaderPatch = _patcher__WEBPACK_IMPORTED_MODULE_4__[\"default\"].after(\"ComponentPatcher\", MessageHeader, \"default\", (_, args, returnValue) => {\n const author = _utilities__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getNestedProp(args[0], \"message.author\");\n const children = _utilities__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getNestedProp(returnValue, \"props.children.1.props.children.1.props.children\");\n if (!children || !author || !author.id || author.id !== \"249746236008169473\") return;\n if (!Array.isArray(children)) return;\n children.push(React.createElement(Tooltip, {\n color: \"black\",\n position: \"top\",\n text: \"BandagedBD Developer\"\n }, props => React.createElement(Anchor, Object.assign({\n className: \"bd-chat-badge\",\n href: \"https://github.com/rauenzi/BetterDiscordApp\",\n title: \"BandagedBD\",\n target: \"_blank\"\n }, props), React.createElement(_ui_icons_bdlogo__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n size: \"16px\",\n className: \"bd-logo\"\n }))));\n });\n }\n\n patchMemberList() {\n if (this.memberListPatch) return;\n const MemberListItem = _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].findByDisplayName(\"MemberListItem\");\n const Anchor = _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].find(m => m.displayName == \"Anchor\");\n if (!Anchor || !MemberListItem || !MemberListItem.prototype || !MemberListItem.prototype.renderDecorators) return;\n this.memberListPatch = _patcher__WEBPACK_IMPORTED_MODULE_4__[\"default\"].after(\"ComponentPatcher\", MemberListItem.prototype, \"renderDecorators\", (thisObject, args, returnValue) => {\n const user = _utilities__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getNestedProp(thisObject, \"props.user\");\n const children = _utilities__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getNestedProp(returnValue, \"props.children\");\n if (!children || !user || !user.id || user.id !== \"249746236008169473\") return;\n if (!Array.isArray(children)) return;\n children.push(React.createElement(Tooltip, {\n color: \"black\",\n position: \"top\",\n text: \"BandagedBD Developer\"\n }, props => React.createElement(Anchor, Object.assign({\n className: \"bd-member-badge\",\n href: \"https://github.com/rauenzi/BetterDiscordApp\",\n title: \"BandagedBD\",\n target: \"_blank\"\n }, props), React.createElement(_ui_icons_bdlogo__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n size: \"16px\",\n className: \"bd-logo\"\n }))));\n });\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL21vZHVsZXMvY29tcG9uZW50cGF0Y2hlci5qcz8yZjAyIl0sIm5hbWVzIjpbIlJlYWN0IiwiRGlzY29yZE1vZHVsZXMiLCJUb29sdGlwIiwiV2VicGFja01vZHVsZXMiLCJnZXRCeURpc3BsYXlOYW1lIiwiQ29tcG9uZW50UGF0Y2hlciIsImluaXRpYWxpemUiLCJVdGlsaXRpZXMiLCJzdXBwcmVzc0Vycm9ycyIsInBhdGNoU29jaWFsIiwiYmluZCIsInBhdGNoR3VpbGRQaWxscyIsInBhdGNoR3VpbGRMaXN0SXRlbXMiLCJwYXRjaEd1aWxkU2VwYXJhdG9yIiwicGF0Y2hNZXNzYWdlSGVhZGVyIiwicGF0Y2hNZW1iZXJMaXN0Iiwic29jaWFsUGF0Y2giLCJUYWJCYXIiLCJBbmNob3IiLCJQYXRjaGVyIiwiYWZ0ZXIiLCJwcm90b3R5cGUiLCJ0aGlzT2JqZWN0IiwiYXJncyIsInJldHVyblZhbHVlIiwiY2hpbGRyZW4iLCJwcm9wcyIsImxlbmd0aCIsInR5cGUiLCJkaXNwbGF5TmFtZSIsInRvU3RyaW5nIiwiaW5jbHVkZXMiLCJvcmlnaW5hbCIsIm5ld09uZSIsInJldHVyblZhbCIsImFyZ3VtZW50cyIsInB1c2giLCJjcmVhdGVFbGVtZW50IiwiY2xhc3NOYW1lIiwiaHJlZiIsInRpdGxlIiwidGFyZ2V0IiwiQkRMb2dvIiwic2l6ZSIsImluamVjdG9yIiwiQ29uZmlnIiwidmVyc2lvbiIsInZlcnNpb25IYXNoIiwiaGFzaCIsInN1YnN0cmluZyIsImJyYW5jaCIsImFkZGl0aW9uYWwiLCJiYmRWZXJzaW9uIiwib3JpZ2luYWxWZXJzaW9ucyIsInNwbGljZSIsImd1aWxkTGlzdEl0ZW1zUGF0Y2giLCJsaXN0SXRlbUNsYXNzIiwiR3VpbGRDbGFzc2VzIiwibGlzdEl0ZW0iLCJzcGxpdCIsImJsb2JDbGFzcyIsImJsb2JDb250YWluZXIiLCJyZWFjdEluc3RhbmNlIiwiZ2V0UmVhY3RJbnN0YW5jZSIsImRvY3VtZW50IiwicXVlcnlTZWxlY3RvciIsInBhcmVudEVsZW1lbnQiLCJHdWlsZENvbXBvbmVudCIsInJldHVybiIsIl8iLCJndWlsZERhdGEiLCJ1bnJlYWQiLCJzZWxlY3RlZCIsImF1ZGlvIiwidmlkZW8iLCJiYWRnZSIsImFuaW1hdGFibGUiLCJndWlsZFBpbGxQYXRjaCIsImd1aWxkUGlsbCIsImdldE1vZHVsZSIsIm0iLCJkZWZhdWx0IiwiaG92ZXJlZCIsImd1aWxkU2VwYXJhdG9yUGF0Y2giLCJHdWlsZHMiLCJndWlsZENvbXBvbmVudHMiLCJnZXRCeVByb3BzIiwiR3VpbGRTZXBhcmF0b3IiLCJTZXBhcmF0b3IiLCJfXyIsImZpbmRJblJlYWN0VHJlZSIsImlzRW1wdHkiLCJtZXNzYWdlSGVhZGVyUGF0Y2giLCJNZXNzYWdlSGVhZGVyIiwiZmluZCIsImF1dGhvciIsImdldE5lc3RlZFByb3AiLCJpZCIsIkFycmF5IiwiaXNBcnJheSIsImNvbG9yIiwicG9zaXRpb24iLCJ0ZXh0IiwiT2JqZWN0IiwiYXNzaWduIiwibWVtYmVyTGlzdFBhdGNoIiwiTWVtYmVyTGlzdEl0ZW0iLCJmaW5kQnlEaXNwbGF5TmFtZSIsInJlbmRlckRlY29yYXRvcnMiLCJ1c2VyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBLE1BQU1BLEtBQUssR0FBR0MsdURBQWMsQ0FBQ0QsS0FBN0I7QUFDQSxNQUFNRSxPQUFPLEdBQUdDLHVEQUFjLENBQUNDLGdCQUFmLENBQWdDLFNBQWhDLENBQWhCO0FBRWUsbUVBQUksTUFBTUMsZ0JBQU4sQ0FBdUI7QUFFdENDLFlBQVUsR0FBRztBQUNUQyxzREFBUyxDQUFDQyxjQUFWLENBQXlCLEtBQUtDLFdBQUwsQ0FBaUJDLElBQWpCLENBQXNCLElBQXRCLENBQXpCLEVBQXNELGlCQUF0RDtBQUNBSCxzREFBUyxDQUFDQyxjQUFWLENBQXlCLEtBQUtHLGVBQUwsQ0FBcUJELElBQXJCLENB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QUFDeUYsYUFBVixDQUF3QjFFLFVBQXhCLEVBQW9DLFlBQXBDLENBQWI7QUFDQSxZQUFNRyxRQUFRLEdBQUdsQixrREFBUyxDQUFDeUYsYUFBVixDQUF3QnhFLFdBQXhCLEVBQXFDLGdCQUFyQyxDQUFqQjtBQUNBLFVBQUksQ0FBQ0MsUUFBRCxJQUFhLENBQUNvRixJQUFkLElBQXNCLENBQUNBLElBQUksQ0FBQ1osRUFBNUIsSUFBa0NZLElBQUksQ0FBQ1osRUFBTCxLQUFZLG9CQUFsRCxFQUF3RTtBQUN4RSxVQUFJLENBQUNDLEtBQUssQ0FBQ0MsT0FBTixDQUFjMUUsUUFBZCxDQUFMLEVBQThCO0FBQzlCQSxjQUFRLENBQUNXLElBQVQsQ0FDSXBDLEtBQUssQ0FBQ3FDLGFBQU4sQ0FBb0JuQyxPQUFwQixFQUE2QjtBQUFDa0csYUFBSyxFQUFFLE9BQVI7QUFBaUJDLGdCQUFRLEVBQUUsS0FBM0I7QUFBa0NDLFlBQUksRUFBRTtBQUF4QyxPQUE3QixFQUNJNUUsS0FBSyxJQUFJMUIsS0FBSyxDQUFDcUMsYUFBTixDQUFvQm5CLE1BQXBCLEVBQTRCcUYsTUFBTSxDQUFDQyxNQUFQLENBQWM7QUFBQ2xFLGlCQUFTLEVBQUUsaUJBQVo7QUFBK0JDLFlBQUksRUFBRSw2Q0FBckM7QUFBb0ZDLGFBQUssRUFBRSxZQUEzRjtBQUF5R0MsY0FBTSxFQUFFO0FBQWpILE9BQWQsRUFBMElmLEtBQTFJLENBQTVCLEVBQ0wxQixLQUFLLENBQUNxQyxhQUFOLENBQW9CSyx3REFBcEIsRUFBNEI7QUFBQ0MsWUFBSSxFQUFFLE1BQVA7QUFBZUwsaUJBQVMsRUFBRTtBQUExQixPQUE1QixDQURLLENBRGIsQ0FESjtBQU9ILEtBWnNCLENBQXZCO0FBYUg7O0FBM0lxQyxDQUEzQixFQUFmIiwiZmlsZSI6Ii4vc3JjL21vZHVsZXMvY29tcG9uZW50cGF0Y2hlci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29uZmlnfSBmcm9tIFwiZGF0YVwiO1xyXG5pbXBvcnQgV2VicGFja01vZHVsZXMgZnJvbSBcIi4vd2VicGFja21vZHVsZXNcIjtcclxuaW1wb3J0IERpc2NvcmRNb2R1bGVzIGZyb20gXCIuL2Rpc2NvcmRtb2R1bGVzXCI7XHJcbmltcG9ydCBVdGlsaXRpZXMgZnJvbSBcIi4vdXRpbGl0aWVzXCI7XHJcbmltcG9ydCBQYXRjaGVyIGZyb20gXCIuL3BhdGNoZXJcIjtcclxuaW1wb3J0IEJETG9nbyBmcm9tIFwiLi4vdWkvaWNvbnMvYmRsb2dvXCI7XHJcblxyXG5jb25zdCBSZWFjdCA9IERpc2NvcmRNb2R1bGVzLlJlYWN0O1xyXG5jb25zdCBUb29sdGlwID0gV2VicGFja01vZHVsZXMuZ2V0QnlEaXNwbGF5TmFtZShcIlRvb2x0aXBcIik7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBuZXcgY2xhc3MgQ29tcG9uZW50UGF0Y2hlciB7XHJcblxyXG4gICAgaW5pdGlhbGl6ZSgpIHtcclxuICAgICAgICBVdGlsaXRpZXMuc3VwcHJlc3NFcnJvcnModGhpcy5wYXRjaFNvY2lhbC5iaW5kKHRoaXMpLCBcIkJEIFNvY2lhbCBQYXRjaFwiKSgpO1xyXG4gICAgICAgIFV0aWxpdGllcy5zdXBwcmVzc0Vycm9ycyh0aGlzLnBhdGNoR3VpbGRQaWxscy5iaW5kKHRoaXMpLCBcIkJEIEd1aWxkIFBpbGxzIFBhdGNoXCIpKCk7XHJcbiAgICAgICAgVXRpbGl0aWVzLnN1cHByZXNzRXJyb3JzKHRoaXMucGF0Y2hHdWlsZExpc3RJdGVtcy5iaW5kKHRoaXMpLCBcIkJEIEd1aWxkIExpc3QgSXRlbXMgUGF0Y2hcIikoKTtcclxuICAgICAgICBVdGlsaXRpZXMuc3VwcHJlc3NFcnJvcnModGhpcy5wYXRjaEd1aWxkU2VwYXJhdG9yLmJpbmQodGhpcyksIFwiQkQgR3VpbGQgU2VwYXJhdG9yIFBhdGNoXCIpKCk7XHJcbiAgICAgICAgVXRpbGl0aWVzLnN1cHByZXNzRXJyb3JzKHRoaXMucGF0Y2hNZXNzYWdlSGVhZGVyLmJpbmQodGhpcyksIFwiQkQgTWVzc2FnZSBIZWFkZXIgUGF0Y2hcIikoKTtcclxuICAgICAgICBVdGlsaXRpZXMuc3VwcHJlc3NFcnJvcnModGhpcy5wYXRjaE1lbWJlckxpc3QuYmluZCh0aGlzKSwgXCJCRCBNZW1iZXIgTGlzdCBQYXRjaFwiKSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHBhdGNoU29jaWFsKCkge1xyXG4gICAgICAgIGlmICh0aGlzLnNvY2lhbFBhdGNoKSByZXR1cm47XHJcbiAgICAgICAgY29uc3QgVGFiQmFyID0gV2VicGFja01vZHVsZXMuZ2V0QnlEaXNwbGF5TmFtZShcIlRhYkJhclwiKTtcclxuICAgICAgICBjb25zdCBBbmNob3IgPSBXZWJwYWNrTW9kdWxlcy5nZXRCeURpc3BsYXlOYW1lKFwiQW5jaG9yXCIpO1xyXG4gICAgICAgIGlmICghVGFiQmFyKSByZXR1cm47XHJcbiAgICAgICAgdGhpcy5zb2NpYWxQYXRjaCA9IFBhdGNoZXIuYWZ0ZXIoXCJDb21wb25lbnRQYXRjaGVyXCIsIFRhYkJhci5wcm90b3R5cGUsIFwicmVuZGVyXCIsICh0aGlzT2JqZWN0LCBhcmdzLCByZXR1cm5WYWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBjaGlsZHJlbiA9IHJldHVyblZhbHVlLnByb3BzLmNoaWxkcmVuO1xyXG4gICAgICAgICAgICBpZiAoIWNoaWxkcmVuIHx8ICFjaGlsZHJlbi5sZW5ndGggfHwgY2hpbGRyZW4ubGVuZ3RoIDwgMykgcmV0dXJuO1xyXG4gICAgICAgICAgICBpZiAoY2hpbGRyZW5bY2hpbGRyZW4ubGVuZ3RoIC0gM10udHlwZS5kaXNwbGF5TmFtZSAhPT0gXCJTZXBhcmF0b3JcIikgcmV0dXJuO1xyXG4gICAgICAgICAgICBpZiAoIWNoaWxkcmVuW2NoaWxkcmVuLmxlbmd0aCAtIDJdLnR5cGUudG9TdHJpbmcoKS5pbmNsdWRlcyhcInNvY2lhbExpbmtzXCIpKSByZXR1cm47XHJcbiAgICAgICAgICAgIGlmIChBbmNob3IpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsID0gY2hpbGRyZW5bY2hpbGRyZW4ubGVuZ3RoIC0gMl0udHlwZTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG5ld09uZSA9IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJldHVyblZhbCA9IG9yaWdpbmFsKC4uLmFyZ3VtZW50cyk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuVmFsLnByb3BzLmNoaWxkcmVuLnB1c2goXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIERpc2NvcmRNb2R1bGVzLlJlYWN0LmNyZWF0ZUVsZW1lbnQoQW5jaG9yLCB7Y2xhc3NOYW1lOiBcImJkLXNvY2lhbC1saW5rXCIsIGhyZWY6IFwiaHR0cHM6Ly90d2l0dGVyLmNvbS9CYW5kYWdlZEJEXCIsIHRpdGxlOiBcIkJhbmRhZ2VkQkRcIiwgdGFyZ2V0OiBcIl9ibGFua1wifSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIERpc2NvcmRNb2R1bGVzLlJlYWN0LmNyZWF0ZUVsZW1lbnQoQkRMb2dvLCB7c2l6ZTogXCIxNnB4XCIsIGNsYXNzTmFtZTogXCJiZC1zb2NpYWwtbG9nb1wifSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJldHVyblZhbDtcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICBjaGlsZHJlbltjaGlsZHJlbi5sZW5ndGggLSAyXS50eXBlID0gbmV3T25lO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBjb25zdCBpbmplY3RvciA9IERpc2NvcmRNb2R1bGVzLlJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge2NsYXNzTmFtZTogXCJjb2xvck11dGVkLUhkRnQ0cSBzaXplMTItM2NMdmJKXCJ9LCBgSW5qZWN0b3IgJHtDb25maWcudmVyc2lvbn1gKTtcclxuICAgICAgICAgICAgY29uc3QgdmVyc2lvbkhhc2ggPSBgKCR7Q29uZmlnLmhhc2ggPyBDb25maWcuaGFzaC5zdWJzdHJpbmcoMCwgNykgOiBDb25maWcuYnJhbmNofSlgO1xyXG4gICAgICAgICAgICBjb25zdCBhZGRpdGlvbmFsID0gRGlzY29yZE1vZHVsZXMuUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7Y2xhc3NOYW1lOiBcImNvbG9yTXV0ZWQtSGRGdDRxIHNpemUxMi0zY0x2YkpcIn0sIGBCQkQgJHtDb25maWcuYmJkVmVyc2lvbn0gYCwgRGlzY29yZE1vZHVsZXMuUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwge2NsYXNzTmFtZTogXCJ2ZXJzaW9uSGFzaC0yZ1hqSUIgZGEtdmVyc2lvbkhhc2hcIn0sIHZlcnNpb25IYXNoKSk7XHJcbiAgICAgICAgICAgIFxyXG5cclxuICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxWZXJzaW9ucyA9IGNoaWxkcmVuW2NoaWxkcmVuLmxlbmd0aCAtIDFdLnR5cGU7XHJcbiAgICAgICAgICAgIGNoaWxkcmVuW2NoaWxkcmVuLmxlbmd0aCAtIDFdLnR5cGUgPSBmdW5jdGlvbigpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJldHVyblZhbCA9IG9yaWdpbmFsVmVyc2lvbnMoLi4uYXJndW1lbnRzKTtcclxuICAgICAgICAgICAgICAgIHJldHVyblZhbC5wcm9wcy5jaGlsZHJlbi5zcGxpY2UocmV0dXJuVmFsLnByb3BzLmNoaWxkcmVuLmxlbmd0aCAtIDEsIDAsIGluamVjdG9yKTtcclxuICAgICAgICAgICAgICAgIHJldHVyblZhbC5wcm9wcy5jaGlsZHJlbi5zcGxpY2UoMSwgMCwgYWRkaXRpb25hbCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcmV0dXJuVmFsO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHBhdGNoR3VpbGRMaXN0SXRlbXMoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZ3VpbGRMaXN0SXRlbXNQYXRjaCkgcmV0dXJuO1xyXG4gICAgICAgIGNvbnN0IGxpc3RJdGVtQ2xhc3MgPSBEaXNjb3JkTW9kdWxlcy5HdWlsZENsYXNzZXMubGlzdEl0ZW0uc3BsaXQoXCIgXCIpWzBdO1xyXG4gICAgICAgIGNvbnN0IGJsb2JDbGFzcyA9IERpc2NvcmRNb2R1bGVzLkd1aWxkQ2xhc3Nlcy5ibG9iQ29udGFpbmVyLnNwbGl0KFwiIFwiKVswXTtcclxuICAgICAgICBjb25zdCByZWFjdEluc3RhbmNlID0gVXRpbGl0aWVzLmdldFJlYWN0SW5zdGFuY2UoZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgLiR7bGlzdEl0ZW1DbGFzc30gLiR7YmxvYkNsYXNzfWApLnBhcmVudEVsZW1lbnQpO1xyXG4gICAgICAgIGNvbnN0IEd1aWxkQ29tcG9uZW50ID0gcmVhY3RJbnN0YW5jZS5yZXR1cm4udHlwZTtcclxuICAgICAgICBpZiAoIUd1aWxkQ29tcG9uZW50KSByZXR1cm47XHJcbiAgICAgICAgdGhpcy5ndWlsZExpc3RJdGVtc1BhdGNoID0gUGF0Y2hlci5hZnRlcihcIkNvbXBvbmVudFBhdGNoZXJcIiwgR3VpbGRDb21wb25lbnQucHJvdG90eXBlLCBcInJlbmRlclwiLCAodGhpc09iamVjdCwgXywgcmV0dXJuVmFsdWUpID0+IHtcclxuICAgICAgICAgICAgaWYgKCFyZXR1cm5WYWx1ZSB8fCAhdGhpc09iamVjdCkgcmV0dXJuO1xyXG4gICAgICAgICAgICBjb25zdCBndWlsZERhdGEgPSB0aGlzT2JqZWN0LnByb3BzO1xyXG4gICAgICAgICAgICByZXR1cm5WYWx1ZS5wcm9wcy5jbGFzc05hbWUgKz0gXCIgYmQtZ3VpbGRcIjtcclxuICAgICAgICAgICAgaWYgKGd1aWxkRGF0YS51bnJlYWQpIHJldHVyblZhbHVlLnByb3BzLmNsYXNzTmFtZSArPSBcIiBiZC11bnJlYWRcIjtcclxuICAgICAgICAgICAgaWYgKGd1aWxkRGF0YS5zZWxlY3RlZCkgcmV0dXJuVmFsdWUucHJvcHMuY2xhc3NOYW1lICs9IFwiIGJkLXNlbGVjdGVkXCI7XHJcbiAgICAgICAgICAgIGlmIChndWlsZERhdGEuYXVkaW8pIHJldHVyblZhbHVlLnByb3BzLmNsYXNzTmFtZSArPSBcIiBiZC1hdWRpb1wiO1xyXG4gICAgICAgICAgICBpZiAoZ3VpbGREYXRhLnZpZGVvKSByZXR1cm5WYWx1ZS5wcm9wcy5jbGFzc05hbWUgKz0gXCIgYmQtdmlkZW9cIjtcclxuICAgICAgICAgICAgaWYgKGd1aWxkRGF0YS5iYWRnZSkgcmV0dXJuVmFsdWUucHJvcHMuY2xhc3NOYW1lICs9IFwiIGJkLWJhZGdlXCI7XHJcbiAgICAgICAgICAgIGlmIChndWlsZERhdGEuYW5pbWF0YWJsZSkgcmV0dXJuVmFsdWUucHJvcHMuY2xhc3NOYW1lICs9IFwiIGJkLWFuaW1hdGFibGVcIjtcclxuICAgICAgICAgICAgcmV0dXJuIHJldHVyblZhbHVlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHBhdGNoR3VpbGRQaWxscygpIHtcclxuICAgICAgICBpZiAodGhpcy5ndWlsZFBpbGxQYXRjaCkgcmV0dXJuO1xyXG4gICAgICAgIGNvbnN0IGd1aWxkUGlsbCA9IFdlYnBhY2tNb2R1bGVzLmdldE1vZHVsZShtID0+IG0uZGVmYXVsdCAmJiAhbS5kZWZhdWx0LmRpc3BsYXlOYW1lICYmIG0uZGVmYXVsdC50b1N0cmluZyAmJiBtLmRlZmF1bHQudG9TdHJpbmcoKS5pbmNsdWRlcyhcInRyYW5zbGF0ZTNkXCIpKTtcclxuICAgICAgICBpZiAoIWd1aWxkUGlsbCkgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMuZ3VpbGRQaWxsUGF0Y2ggPSBQYXRjaGVyLmFmdGVyKFwiQ29tcG9uZW50UGF0Y2hlclwiLCBndWlsZFBpbGwsIFwiZGVmYXVsdFwiLCAoXywgYXJncywgcmV0dXJuVmFsdWUpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgcHJvcHMgPSBhcmdzWzBdO1xyXG4gICAgICAgICAgICBpZiAocHJvcHMudW5yZWFkKSByZXR1cm5WYWx1ZS5wcm9wcy5jbGFzc05hbWUgKz0gXCIgYmQtdW5yZWFkXCI7XHJcbiAgICAgICAgICAgIGlmIChwcm9wcy5zZWxlY3RlZCkgcmV0dXJuVmFsdWUucHJvcHMuY2xhc3NOYW1lICs9IFwiIGJkLXNlbGVjdGVkXCI7XHJcbiAgICAgICAgICAgIGlmIChwcm9wcy5ob3ZlcmVkKSByZXR1cm5WYWx1ZS5wcm9wcy5jbGFzc05hbWUgKz0gXCIgYmQtaG92ZXJlZFwiO1xyXG4gICAgICAgICAgICByZXR1cm4gcmV0dXJuVmFsdWU7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcGF0Y2hHdWlsZFNlcGFyYXRvcigpIHtcclxuICAgICAgICBpZiAodGhpcy5ndWlsZFNlcGFyYXRvclBhdGNoKSByZXR1cm47XHJcbiAgICAgICAgY29uc3QgR3VpbGRzID0gV2VicGFja01vZHVsZXMuZ2V0QnlEaXNwbGF5TmFtZShcIkd1aWxkc1wiKTtcclxuICAgICAgICBjb25zdCBndWlsZENvbXBvbmVudHMgPSBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwicmVuZGVyTGlzdEl0ZW1cIik7XHJcbiAgICAgICAgaWYgKCFndWlsZENvbXBvbmVudHMgfHwgIUd1aWxkcykgcmV0dXJuO1xyXG4gICAgICAgIGNvbnN0IEd1aWxkU2VwYXJhdG9yID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHJldHVyblZhbHVlID0gZ3VpbGRDb21wb25lbnRzLlNlcGFyYXRvciguLi5hcmd1bWVudHMpO1xyXG4gICAgICAgICAgICByZXR1cm5WYWx1ZS5wcm9wcy5jbGFzc05hbWUgKz0gXCIgYmQtZ3VpbGQtc2VwYXJhdG9yXCI7XHJcbiAgICAgICAgICAgIHJldHVybiByZXR1cm5WYWx1ZTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMuZ3VpbGRTZXBhcmF0b3JQYXRjaCA9IFBhdGNoZXIuYWZ0ZXIoXCJDb21wb25lbnRQYXRjaGVyXCIsIEd1aWxkcy5wcm90b3R5cGUsIFwicmVuZGVyXCIsIChfLCBfXywgcmV0dXJuVmFsdWUpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgU2VwYXJhdG9yID0gVXRpbGl0aWVzLmZpbmRJblJlYWN0VHJlZShyZXR1cm5WYWx1ZSwgbSA9PiBtLnR5cGUgJiYgIW0udHlwZS5kaXNwbGF5TmFtZSAmJiB0eXBlb2YobS50eXBlKSA9PSBcImZ1bmN0aW9uXCIgJiYgVXRpbGl0aWVzLmlzRW1wdHkobS5wcm9wcykpO1xyXG4gICAgICAgICAgICBpZiAoIVNlcGFyYXRvcikgcmV0dXJuO1xyXG4gICAgICAgICAgICBTZXBhcmF0b3IudHlwZSA9IEd1aWxkU2VwYXJhdG9yO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHBhdGNoTWVzc2FnZUhlYWRlcigpIHtcclxuICAgICAgICBpZiAodGhpcy5tZXNzYWdlSGVhZGVyUGF0Y2gpIHJldHVybjtcclxuICAgICAgICBjb25zdCBNZXNzYWdlSGVhZGVyID0gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcIk1lc3NhZ2VUaW1lc3RhbXBcIik7XHJcbiAgICAgICAgY29uc3QgQW5jaG9yID0gV2VicGFja01vZHVsZXMuZmluZChtID0+IG0uZGlzcGxheU5hbWUgPT0gXCJBbmNob3JcIik7XHJcbiAgICAgICAgaWYgKCFBbmNob3IgfHwgIU1lc3NhZ2VIZWFkZXIgfHwgIU1lc3NhZ2VIZWFkZXIuZGVmYXVsdCkgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMubWVzc2FnZUhlYWRlclBhdGNoID0gUGF0Y2hlci5hZnRlcihcIkNvbXBvbmVudFBhdGNoZXJcIiwgTWVzc2FnZUhlYWRlciwgXCJkZWZhdWx0XCIsIChfLCBhcmdzLCByZXR1cm5WYWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBhdXRob3IgPSBVdGlsaXRpZXMuZ2V0TmVzdGVkUHJvcChhcmdzWzBdLCBcIm1lc3NhZ2UuYXV0aG9yXCIpO1xyXG4gICAgICAgICAgICBjb25zdCBjaGlsZHJlbiA9IFV0aWxpdGllcy5nZXROZXN0ZWRQcm9wKHJldHVyblZhbHVlLCBcInByb3BzLmNoaWxkcmVuLjEucHJvcHMuY2hpbGRyZW4uMS5wcm9wcy5jaGlsZHJlblwiKTtcclxuICAgICAgICAgICAgaWYgKCFjaGlsZHJlbiB8fCAhYXV0aG9yIHx8ICFhdXRob3IuaWQgfHwgYXV0aG9yLmlkICE9PSBcIjI0OTc0NjIzNjAwODE2OTQ3M1wiKSByZXR1cm47XHJcbiAgICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShjaGlsZHJlbikpIHJldHVybjtcclxuICAgICAgICAgICAgY2hpbGRyZW4ucHVzaChcclxuICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoVG9vbHRpcCwge2NvbG9yOiBcImJsYWNrXCIsIHBvc2l0aW9uOiBcInRvcFwiLCB0ZXh0OiBcIkJhbmRhZ2VkQkQgRGV2ZWxvcGVyXCJ9LFxyXG4gICAgICAgICAgICAgICAgICAgIHByb3BzID0+IFJlYWN0LmNyZWF0ZUVsZW1lbnQoQW5jaG9yLCBPYmplY3QuYXNzaWduKHtjbGFzc05hbWU6IFwiYmQtY2hhdC1iYWRnZVwiLCBocmVmOiBcImh0dHBzOi8vZ2l0aHViLmNvbS9yYXVlbnppL0JldHRlckRpc2NvcmRBcHBcIiwgdGl0bGU6IFwiQmFuZGFnZWRCRFwiLCB0YXJnZXQ6IFwiX2JsYW5rXCJ9LCBwcm9wcyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoQkRMb2dvLCB7c2l6ZTogXCIxNnB4XCIsIGNsYXNzTmFtZTogXCJiZC1sb2dvXCJ9KVxyXG4gICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwYXRjaE1lbWJlckxpc3QoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMubWVtYmVyTGlzdFBhdGNoKSByZXR1cm47XHJcbiAgICAgICAgY29uc3QgTWVtYmVyTGlzdEl0ZW0gPSBXZWJwYWNrTW9kdWxlcy5maW5kQnlEaXNwbGF5TmFtZShcIk1lbWJlckxpc3RJdGVtXCIpO1xyXG4gICAgICAgIGNvbnN0IEFuY2hvciA9IFdlYnBhY2tNb2R1bGVzLmZpbmQobSA9PiBtLmRpc3BsYXlOYW1lID09IFwiQW5jaG9yXCIpO1xyXG4gICAgICAgIGlmICghQW5jaG9yIHx8ICFNZW1iZXJMaXN0SXRlbSB8fCAhTWVtYmVyTGlzdEl0ZW0ucHJvdG90eXBlIHx8ICFNZW1iZXJMaXN0SXRlbS5wcm90b3R5cGUucmVuZGVyRGVjb3JhdG9ycykgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMubWVtYmVyTGlzdFBhdGNoID0gUGF0Y2hlci5hZnRlcihcIkNvbXBvbmVudFBhdGNoZXJcIiwgTWVtYmVyTGlzdEl0ZW0ucHJvdG90eXBlLCBcInJlbmRlckRlY29yYXRvcnNcIiwgKHRoaXNPYmplY3QsIGFyZ3MsIHJldHVyblZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHVzZXIgPSBVdGlsaXRpZXMuZ2V0TmVzdGVkUHJvcCh0aGlzT2JqZWN0LCBcInByb3BzLnVzZXJcIik7XHJcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkcmVuID0gVXRpbGl0aWVzLmdldE5lc3RlZFByb3AocmV0dXJuVmFsdWUsIFwicHJvcHMuY2hpbGRyZW5cIik7XHJcbiAgICAgICAgICAgIGlmICghY2hpbGRyZW4gfHwgIXVzZXIgfHwgIXVzZXIuaWQgfHwgdXNlci5pZCAhPT0gXCIyNDk3NDYyMzYwMDgxNjk0NzNcIikgcmV0dXJuO1xyXG4gICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoY2hpbGRyZW4pKSByZXR1cm47XHJcbiAgICAgICAgICAgIGNoaWxkcmVuLnB1c2goXHJcbiAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFRvb2x0aXAsIHtjb2xvcjogXCJibGFja1wiLCBwb3NpdGlvbjogXCJ0b3BcIiwgdGV4dDogXCJCYW5kYWdlZEJEIERldmVsb3BlclwifSxcclxuICAgICAgICAgICAgICAgICAgICBwcm9wcyA9PiBSZWFjdC5jcmVhdGVFbGVtZW50KEFuY2hvciwgT2JqZWN0LmFzc2lnbih7Y2xhc3NOYW1lOiBcImJkLW1lbWJlci1iYWRnZVwiLCBocmVmOiBcImh0dHBzOi8vZ2l0aHViLmNvbS9yYXVlbnppL0JldHRlckRpc2NvcmRBcHBcIiwgdGl0bGU6IFwiQmFuZGFnZWRCRFwiLCB0YXJnZXQ6IFwiX2JsYW5rXCJ9LCBwcm9wcyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoQkRMb2dvLCB7c2l6ZTogXCIxNnB4XCIsIGNsYXNzTmFtZTogXCJiZC1sb2dvXCJ9KVxyXG4gICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/componentpatcher.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var data__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! data */ \"./src/data/data.js\");\n/* harmony import */ var _webpackmodules__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./webpackmodules */ \"./src/modules/webpackmodules.js\");\n/* harmony import */ var _discordmodules__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./discordmodules */ \"./src/modules/discordmodules.js\");\n/* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utilities */ \"./src/modules/utilities.js\");\n/* harmony import */ var _patcher__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./patcher */ \"./src/modules/patcher.js\");\n/* harmony import */ var _ui_icons_bdlogo__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../ui/icons/bdlogo */ \"./src/ui/icons/bdlogo.jsx\");\n\n\n\n\n\n\nconst React = _discordmodules__WEBPACK_IMPORTED_MODULE_2__[\"default\"].React;\nconst Tooltip = _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByDisplayName(\"Tooltip\");\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class ComponentPatcher {\n initialize() {\n _utilities__WEBPACK_IMPORTED_MODULE_3__[\"default\"].suppressErrors(this.patchSocial.bind(this), \"BD Social Patch\")();\n _utilities__WEBPACK_IMPORTED_MODULE_3__[\"default\"].suppressErrors(this.patchGuildPills.bind(this), \"BD Guild Pills Patch\")();\n _utilities__WEBPACK_IMPORTED_MODULE_3__[\"default\"].suppressErrors(this.patchGuildListItems.bind(this), \"BD Guild List Items Patch\")();\n _utilities__WEBPACK_IMPORTED_MODULE_3__[\"default\"].suppressErrors(this.patchGuildSeparator.bind(this), \"BD Guild Separator Patch\")();\n _utilities__WEBPACK_IMPORTED_MODULE_3__[\"default\"].suppressErrors(this.patchMessageHeader.bind(this), \"BD Message Header Patch\")();\n _utilities__WEBPACK_IMPORTED_MODULE_3__[\"default\"].suppressErrors(this.patchMemberList.bind(this), \"BD Member List Patch\")();\n }\n\n patchSocial() {\n if (this.socialPatch) return;\n const TabBar = _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByDisplayName(\"TabBar\");\n const Anchor = _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByDisplayName(\"Anchor\");\n if (!TabBar) return;\n this.socialPatch = _patcher__WEBPACK_IMPORTED_MODULE_4__[\"default\"].after(\"ComponentPatcher\", TabBar.prototype, \"render\", (thisObject, args, returnValue) => {\n const children = returnValue.props.children;\n if (!children || !children.length || children.length < 3) return;\n if (children[children.length - 3].type.displayName !== \"Separator\") return;\n if (!children[children.length - 2].type.toString().includes(\"socialLinks\")) return;\n\n if (Anchor) {\n const original = children[children.length - 2].type;\n\n const newOne = function () {\n const returnVal = original(...arguments);\n returnVal.props.children.push(_discordmodules__WEBPACK_IMPORTED_MODULE_2__[\"default\"].React.createElement(Anchor, {\n className: \"bd-social-link\",\n href: \"https://twitter.com/BandagedBD\",\n title: \"BandagedBD\",\n target: \"_blank\"\n }, _discordmodules__WEBPACK_IMPORTED_MODULE_2__[\"default\"].React.createElement(_ui_icons_bdlogo__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n size: \"16px\",\n className: \"bd-social-logo\"\n })));\n return returnVal;\n };\n\n children[children.length - 2].type = newOne;\n }\n\n const injector = _discordmodules__WEBPACK_IMPORTED_MODULE_2__[\"default\"].React.createElement(\"div\", {\n className: \"colorMuted-HdFt4q size12-3cLvbJ\"\n }, `Injector ${data__WEBPACK_IMPORTED_MODULE_0__[\"Config\"].version}`);\n const versionHash = `(${data__WEBPACK_IMPORTED_MODULE_0__[\"Config\"].hash ? data__WEBPACK_IMPORTED_MODULE_0__[\"Config\"].hash.substring(0, 7) : data__WEBPACK_IMPORTED_MODULE_0__[\"Config\"].branch})`;\n const additional = _discordmodules__WEBPACK_IMPORTED_MODULE_2__[\"default\"].React.createElement(\"div\", {\n className: \"colorMuted-HdFt4q size12-3cLvbJ\"\n }, `BBD ${data__WEBPACK_IMPORTED_MODULE_0__[\"Config\"].bbdVersion} `, _discordmodules__WEBPACK_IMPORTED_MODULE_2__[\"default\"].React.createElement(\"span\", {\n className: \"versionHash-2gXjIB da-versionHash\"\n }, versionHash));\n const originalVersions = children[children.length - 1].type;\n\n children[children.length - 1].type = function () {\n const returnVal = originalVersions(...arguments);\n returnVal.props.children.splice(returnVal.props.children.length - 1, 0, injector);\n returnVal.props.children.splice(1, 0, additional);\n return returnVal;\n };\n });\n }\n\n patchGuildListItems() {\n if (this.guildListItemsPatch) return;\n const listItemClass = _discordmodules__WEBPACK_IMPORTED_MODULE_2__[\"default\"].GuildClasses.listItem.split(\" \")[0];\n const blobClass = _discordmodules__WEBPACK_IMPORTED_MODULE_2__[\"default\"].GuildClasses.blobContainer.split(\" \")[0];\n const reactInstance = _utilities__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getReactInstance(document.querySelector(`.${listItemClass} .${blobClass}`).parentElement);\n const GuildComponent = reactInstance.return.type;\n if (!GuildComponent) return;\n this.guildListItemsPatch = _patcher__WEBPACK_IMPORTED_MODULE_4__[\"default\"].after(\"ComponentPatcher\", GuildComponent.prototype, \"render\", (thisObject, _, returnValue) => {\n if (!returnValue || !thisObject) return;\n const guildData = thisObject.props;\n returnValue.props.className += \" bd-guild\";\n if (guildData.unread) returnValue.props.className += \" bd-unread\";\n if (guildData.selected) returnValue.props.className += \" bd-selected\";\n if (guildData.audio) returnValue.props.className += \" bd-audio\";\n if (guildData.video) returnValue.props.className += \" bd-video\";\n if (guildData.badge) returnValue.props.className += \" bd-badge\";\n if (guildData.animatable) returnValue.props.className += \" bd-animatable\";\n return returnValue;\n });\n }\n\n patchGuildPills() {\n if (this.guildPillPatch) return;\n const guildPill = _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getModule(m => m.default && !m.default.displayName && m.default.toString && m.default.toString().includes(\"translate3d\"));\n if (!guildPill) return;\n this.guildPillPatch = _patcher__WEBPACK_IMPORTED_MODULE_4__[\"default\"].after(\"ComponentPatcher\", guildPill, \"default\", (_, args, returnValue) => {\n const props = args[0];\n if (props.unread) returnValue.props.className += \" bd-unread\";\n if (props.selected) returnValue.props.className += \" bd-selected\";\n if (props.hovered) returnValue.props.className += \" bd-hovered\";\n return returnValue;\n });\n }\n\n patchGuildSeparator() {\n if (this.guildSeparatorPatch) return;\n const Guilds = _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByDisplayName(\"Guilds\");\n const guildComponents = _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"renderListItem\");\n if (!guildComponents || !Guilds) return;\n\n const GuildSeparator = function () {\n const returnValue = guildComponents.Separator(...arguments);\n returnValue.props.className += \" bd-guild-separator\";\n return returnValue;\n };\n\n this.guildSeparatorPatch = _patcher__WEBPACK_IMPORTED_MODULE_4__[\"default\"].after(\"ComponentPatcher\", Guilds.prototype, \"render\", (_, __, returnValue) => {\n const Separator = _utilities__WEBPACK_IMPORTED_MODULE_3__[\"default\"].findInReactTree(returnValue, m => m.type && !m.type.displayName && typeof m.type == \"function\" && _utilities__WEBPACK_IMPORTED_MODULE_3__[\"default\"].isEmpty(m.props));\n if (!Separator) return;\n Separator.type = GuildSeparator;\n });\n }\n\n patchMessageHeader() {\n if (this.messageHeaderPatch) return;\n const MessageHeader = _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"MessageTimestamp\");\n const Anchor = _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].find(m => m.displayName == \"Anchor\");\n if (!Anchor || !MessageHeader || !MessageHeader.default) return;\n this.messageHeaderPatch = _patcher__WEBPACK_IMPORTED_MODULE_4__[\"default\"].after(\"ComponentPatcher\", MessageHeader, \"default\", (_, args, returnValue) => {\n const author = _utilities__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getNestedProp(args[0], \"message.author\");\n const children = _utilities__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getNestedProp(returnValue, \"props.children.1.props.children.1.props.children\");\n if (!children || !author || !author.id || author.id !== \"249746236008169473\") return;\n if (!Array.isArray(children)) return;\n children.push(React.createElement(Tooltip, {\n color: \"black\",\n position: \"top\",\n text: \"BandagedBD Developer\"\n }, props => React.createElement(Anchor, Object.assign({\n className: \"bd-chat-badge\",\n href: \"https://github.com/rauenzi/BetterDiscordApp\",\n title: \"BandagedBD\",\n target: \"_blank\"\n }, props), React.createElement(_ui_icons_bdlogo__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n size: \"16px\",\n className: \"bd-logo\"\n }))));\n });\n }\n\n patchMemberList() {\n if (this.memberListPatch) return;\n const MemberListItem = _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].findByDisplayName(\"MemberListItem\");\n const Anchor = _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].find(m => m.displayName == \"Anchor\");\n if (!Anchor || !MemberListItem || !MemberListItem.prototype || !MemberListItem.prototype.renderDecorators) return;\n this.memberListPatch = _patcher__WEBPACK_IMPORTED_MODULE_4__[\"default\"].after(\"ComponentPatcher\", MemberListItem.prototype, \"renderDecorators\", (thisObject, args, returnValue) => {\n const user = _utilities__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getNestedProp(thisObject, \"props.user\");\n const children = _utilities__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getNestedProp(returnValue, \"props.children\");\n if (!children || !user || !user.id || user.id !== \"249746236008169473\") return;\n if (!Array.isArray(children)) return;\n children.push(React.createElement(Tooltip, {\n color: \"black\",\n position: \"top\",\n text: \"BandagedBD Developer\"\n }, props => React.createElement(Anchor, Object.assign({\n className: \"bd-member-badge\",\n href: \"https://github.com/rauenzi/BetterDiscordApp\",\n title: \"BandagedBD\",\n target: \"_blank\"\n }, props), React.createElement(_ui_icons_bdlogo__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n size: \"16px\",\n className: \"bd-logo\"\n }))));\n });\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9jb21wb25lbnRwYXRjaGVyLmpzPzJmMDIiXSwibmFtZXMiOlsiUmVhY3QiLCJEaXNjb3JkTW9kdWxlcyIsIlRvb2x0aXAiLCJXZWJwYWNrTW9kdWxlcyIsImdldEJ5RGlzcGxheU5hbWUiLCJDb21wb25lbnRQYXRjaGVyIiwiaW5pdGlhbGl6ZSIsIlV0aWxpdGllcyIsInN1cHByZXNzRXJyb3JzIiwicGF0Y2hTb2NpYWwiLCJiaW5kIiwicGF0Y2hHdWlsZFBpbGxzIiwicGF0Y2hHdWlsZExpc3RJdGVtcyIsInBhdGNoR3VpbGRTZXBhcmF0b3IiLCJwYXRjaE1lc3NhZ2VIZWFkZXIiLCJwYXRjaE1lbWJlckxpc3QiLCJzb2NpYWxQYXRjaCIsIlRhYkJhciIsIkFuY2hvciIsIlBhdGNoZXIiLCJhZnRlciIsInByb3RvdHlwZSIsInRoaXNPYmplY3QiLCJhcmdzIiwicmV0dXJuVmFsdWUiLCJjaGlsZHJlbiIsInByb3BzIiwibGVuZ3RoIiwidHlwZSIsImRpc3BsYXlOYW1lIiwidG9TdHJpbmciLCJpbmNsdWRlcyIsIm9yaWdpbmFsIiwibmV3T25lIiwicmV0dXJuVmFsIiwiYXJndW1lbnRzIiwicHVzaCIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJocmVmIiwidGl0bGUiLCJ0YXJnZXQiLCJCRExvZ28iLCJzaXplIiwiaW5qZWN0b3IiLCJDb25maWciLCJ2ZXJzaW9uIiwidmVyc2lvbkhhc2giLCJoYXNoIiwic3Vic3RyaW5nIiwiYnJhbmNoIiwiYWRkaXRpb25hbCIsImJiZFZlcnNpb24iLCJvcmlnaW5hbFZlcnNpb25zIiwic3BsaWNlIiwiZ3VpbGRMaXN0SXRlbXNQYXRjaCIsImxpc3RJdGVtQ2xhc3MiLCJHdWlsZENsYXNzZXMiLCJsaXN0SXRlbSIsInNwbGl0IiwiYmxvYkNsYXNzIiwiYmxvYkNvbnRhaW5lciIsInJlYWN0SW5zdGFuY2UiLCJnZXRSZWFjdEluc3RhbmNlIiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwicGFyZW50RWxlbWVudCIsIkd1aWxkQ29tcG9uZW50IiwicmV0dXJuIiwiXyIsImd1aWxkRGF0YSIsInVucmVhZCIsInNlbGVjdGVkIiwiYXVkaW8iLCJ2aWRlbyIsImJhZGdlIiwiYW5pbWF0YWJsZSIsImd1aWxkUGlsbFBhdGNoIiwiZ3VpbGRQaWxsIiwiZ2V0TW9kdWxlIiwibSIsImRlZmF1bHQiLCJob3ZlcmVkIiwiZ3VpbGRTZXBhcmF0b3JQYXRjaCIsIkd1aWxkcyIsImd1aWxkQ29tcG9uZW50cyIsImdldEJ5UHJvcHMiLCJHdWlsZFNlcGFyYXRvciIsIlNlcGFyYXRvciIsIl9fIiwiZmluZEluUmVhY3RUcmVlIiwiaXNFbXB0eSIsIm1lc3NhZ2VIZWFkZXJQYXRjaCIsIk1lc3NhZ2VIZWFkZXIiLCJmaW5kIiwiYXV0aG9yIiwiZ2V0TmVzdGVkUHJvcCIsImlkIiwiQXJyYXkiLCJpc0FycmF5IiwiY29sb3IiLCJwb3NpdGlvbiIsInRleHQiLCJPYmplY3QiLCJhc3NpZ24iLCJtZW1iZXJMaXN0UGF0Y2giLCJNZW1iZXJMaXN0SXRlbSIsImZpbmRCeURpc3BsYXlOYW1lIiwicmVuZGVyRGVjb3JhdG9ycyIsInVzZXIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUEsTUFBTUEsS0FBSyxHQUFHQyx1REFBYyxDQUFDRCxLQUE3QjtBQUNBLE1BQU1FLE9BQU8sR0FBR0MsdURBQWMsQ0FBQ0MsZ0JBQWYsQ0FBZ0MsU0FBaEMsQ0FBaEI7QUFFZSxtRUFBSSxNQUFNQyxnQkFBTixDQUF1QjtBQUV0Q0MsWUFBVSxHQUFHO0FBQ1RDLHNEQUFTLENBQUNDLGNBQVYsQ0FBeUIsS0FBS0MsV0FBTCxDQUFpQkMsSUFBakIsQ0FBc0IsSUFBdEIsQ0FBekIsRUFBc0QsaUJBQXREO0FBQ0FILHNEQUFTLENBQUNDLGNBQVYsQ0FBeUIsS0FBS0csZUFBTCxDQUFxQkQsSUFBckIsQ0FBMEIs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RixhQUFWLENBQXdCMUUsVUFBeEIsRUFBb0MsWUFBcEMsQ0FBYjtBQUNBLFlBQU1HLFFBQVEsR0FBR2xCLGtEQUFTLENBQUN5RixhQUFWLENBQXdCeEUsV0FBeEIsRUFBcUMsZ0JBQXJDLENBQWpCO0FBQ0EsVUFBSSxDQUFDQyxRQUFELElBQWEsQ0FBQ29GLElBQWQsSUFBc0IsQ0FBQ0EsSUFBSSxDQUFDWixFQUE1QixJQUFrQ1ksSUFBSSxDQUFDWixFQUFMLEtBQVksb0JBQWxELEVBQXdFO0FBQ3hFLFVBQUksQ0FBQ0MsS0FBSyxDQUFDQyxPQUFOLENBQWMxRSxRQUFkLENBQUwsRUFBOEI7QUFDOUJBLGNBQVEsQ0FBQ1csSUFBVCxDQUNJcEMsS0FBSyxDQUFDcUMsYUFBTixDQUFvQm5DLE9BQXBCLEVBQTZCO0FBQUNrRyxhQUFLLEVBQUUsT0FBUjtBQUFpQkMsZ0JBQVEsRUFBRSxLQUEzQjtBQUFrQ0MsWUFBSSxFQUFFO0FBQXhDLE9BQTdCLEVBQ0k1RSxLQUFLLElBQUkxQixLQUFLLENBQUNxQyxhQUFOLENBQW9CbkIsTUFBcEIsRUFBNEJxRixNQUFNLENBQUNDLE1BQVAsQ0FBYztBQUFDbEUsaUJBQVMsRUFBRSxpQkFBWjtBQUErQkMsWUFBSSxFQUFFLDZDQUFyQztBQUFvRkMsYUFBSyxFQUFFLFlBQTNGO0FBQXlHQyxjQUFNLEVBQUU7QUFBakgsT0FBZCxFQUEwSWYsS0FBMUksQ0FBNUIsRUFDTDFCLEtBQUssQ0FBQ3FDLGFBQU4sQ0FBb0JLLHdEQUFwQixFQUE0QjtBQUFDQyxZQUFJLEVBQUUsTUFBUDtBQUFlTCxpQkFBUyxFQUFFO0FBQTFCLE9BQTVCLENBREssQ0FEYixDQURKO0FBT0gsS0Fac0IsQ0FBdkI7QUFhSDs7QUEzSXFDLENBQTNCLEVBQWYiLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jb21wb25lbnRwYXRjaGVyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb25maWd9IGZyb20gXCJkYXRhXCI7XHJcbmltcG9ydCBXZWJwYWNrTW9kdWxlcyBmcm9tIFwiLi93ZWJwYWNrbW9kdWxlc1wiO1xyXG5pbXBvcnQgRGlzY29yZE1vZHVsZXMgZnJvbSBcIi4vZGlzY29yZG1vZHVsZXNcIjtcclxuaW1wb3J0IFV0aWxpdGllcyBmcm9tIFwiLi91dGlsaXRpZXNcIjtcclxuaW1wb3J0IFBhdGNoZXIgZnJvbSBcIi4vcGF0Y2hlclwiO1xyXG5pbXBvcnQgQkRMb2dvIGZyb20gXCIuLi91aS9pY29ucy9iZGxvZ29cIjtcclxuXHJcbmNvbnN0IFJlYWN0ID0gRGlzY29yZE1vZHVsZXMuUmVhY3Q7XHJcbmNvbnN0IFRvb2x0aXAgPSBXZWJwYWNrTW9kdWxlcy5nZXRCeURpc3BsYXlOYW1lKFwiVG9vbHRpcFwiKTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IG5ldyBjbGFzcyBDb21wb25lbnRQYXRjaGVyIHtcclxuXHJcbiAgICBpbml0aWFsaXplKCkge1xyXG4gICAgICAgIFV0aWxpdGllcy5zdXBwcmVzc0Vycm9ycyh0aGlzLnBhdGNoU29jaWFsLmJpbmQodGhpcyksIFwiQkQgU29jaWFsIFBhdGNoXCIpKCk7XHJcbiAgICAgICAgVXRpbGl0aWVzLnN1cHByZXNzRXJyb3JzKHRoaXMucGF0Y2hHdWlsZFBpbGxzLmJpbmQodGhpcyksIFwiQkQgR3VpbGQgUGlsbHMgUGF0Y2hcIikoKTtcclxuICAgICAgICBVdGlsaXRpZXMuc3VwcHJlc3NFcnJvcnModGhpcy5wYXRjaEd1aWxkTGlzdEl0ZW1zLmJpbmQodGhpcyksIFwiQkQgR3VpbGQgTGlzdCBJdGVtcyBQYXRjaFwiKSgpO1xyXG4gICAgICAgIFV0aWxpdGllcy5zdXBwcmVzc0Vycm9ycyh0aGlzLnBhdGNoR3VpbGRTZXBhcmF0b3IuYmluZCh0aGlzKSwgXCJCRCBHdWlsZCBTZXBhcmF0b3IgUGF0Y2hcIikoKTtcclxuICAgICAgICBVdGlsaXRpZXMuc3VwcHJlc3NFcnJvcnModGhpcy5wYXRjaE1lc3NhZ2VIZWFkZXIuYmluZCh0aGlzKSwgXCJCRCBNZXNzYWdlIEhlYWRlciBQYXRjaFwiKSgpO1xyXG4gICAgICAgIFV0aWxpdGllcy5zdXBwcmVzc0Vycm9ycyh0aGlzLnBhdGNoTWVtYmVyTGlzdC5iaW5kKHRoaXMpLCBcIkJEIE1lbWJlciBMaXN0IFBhdGNoXCIpKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcGF0Y2hTb2NpYWwoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc29jaWFsUGF0Y2gpIHJldHVybjtcclxuICAgICAgICBjb25zdCBUYWJCYXIgPSBXZWJwYWNrTW9kdWxlcy5nZXRCeURpc3BsYXlOYW1lKFwiVGFiQmFyXCIpO1xyXG4gICAgICAgIGNvbnN0IEFuY2hvciA9IFdlYnBhY2tNb2R1bGVzLmdldEJ5RGlzcGxheU5hbWUoXCJBbmNob3JcIik7XHJcbiAgICAgICAgaWYgKCFUYWJCYXIpIHJldHVybjtcclxuICAgICAgICB0aGlzLnNvY2lhbFBhdGNoID0gUGF0Y2hlci5hZnRlcihcIkNvbXBvbmVudFBhdGNoZXJcIiwgVGFiQmFyLnByb3RvdHlwZSwgXCJyZW5kZXJcIiwgKHRoaXNPYmplY3QsIGFyZ3MsIHJldHVyblZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkcmVuID0gcmV0dXJuVmFsdWUucHJvcHMuY2hpbGRyZW47XHJcbiAgICAgICAgICAgIGlmICghY2hpbGRyZW4gfHwgIWNoaWxkcmVuLmxlbmd0aCB8fCBjaGlsZHJlbi5sZW5ndGggPCAzKSByZXR1cm47XHJcbiAgICAgICAgICAgIGlmIChjaGlsZHJlbltjaGlsZHJlbi5sZW5ndGggLSAzXS50eXBlLmRpc3BsYXlOYW1lICE9PSBcIlNlcGFyYXRvclwiKSByZXR1cm47XHJcbiAgICAgICAgICAgIGlmICghY2hpbGRyZW5bY2hpbGRyZW4ubGVuZ3RoIC0gMl0udHlwZS50b1N0cmluZygpLmluY2x1ZGVzKFwic29jaWFsTGlua3NcIikpIHJldHVybjtcclxuICAgICAgICAgICAgaWYgKEFuY2hvcikge1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWwgPSBjaGlsZHJlbltjaGlsZHJlbi5sZW5ndGggLSAyXS50eXBlO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbmV3T25lID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmV0dXJuVmFsID0gb3JpZ2luYWwoLi4uYXJndW1lbnRzKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm5WYWwucHJvcHMuY2hpbGRyZW4ucHVzaChcclxuICAgICAgICAgICAgICAgICAgICAgICAgRGlzY29yZE1vZHVsZXMuUmVhY3QuY3JlYXRlRWxlbWVudChBbmNob3IsIHtjbGFzc05hbWU6IFwiYmQtc29jaWFsLWxpbmtcIiwgaHJlZjogXCJodHRwczovL3R3aXR0ZXIuY29tL0JhbmRhZ2VkQkRcIiwgdGl0bGU6IFwiQmFuZGFnZWRCRFwiLCB0YXJnZXQ6IFwiX2JsYW5rXCJ9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRGlzY29yZE1vZHVsZXMuUmVhY3QuY3JlYXRlRWxlbWVudChCRExvZ28sIHtzaXplOiBcIjE2cHhcIiwgY2xhc3NOYW1lOiBcImJkLXNvY2lhbC1sb2dvXCJ9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0dXJuVmFsO1xyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIGNoaWxkcmVuW2NoaWxkcmVuLmxlbmd0aCAtIDJdLnR5cGUgPSBuZXdPbmU7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGNvbnN0IGluamVjdG9yID0gRGlzY29yZE1vZHVsZXMuUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7Y2xhc3NOYW1lOiBcImNvbG9yTXV0ZWQtSGRGdDRxIHNpemUxMi0zY0x2YkpcIn0sIGBJbmplY3RvciAke0NvbmZpZy52ZXJzaW9ufWApO1xyXG4gICAgICAgICAgICBjb25zdCB2ZXJzaW9uSGFzaCA9IGAoJHtDb25maWcuaGFzaCA/IENvbmZpZy5oYXNoLnN1YnN0cmluZygwLCA3KSA6IENvbmZpZy5icmFuY2h9KWA7XHJcbiAgICAgICAgICAgIGNvbnN0IGFkZGl0aW9uYWwgPSBEaXNjb3JkTW9kdWxlcy5SZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtjbGFzc05hbWU6IFwiY29sb3JNdXRlZC1IZEZ0NHEgc2l6ZTEyLTNjTHZiSlwifSwgYEJCRCAke0NvbmZpZy5iYmRWZXJzaW9ufSBgLCBEaXNjb3JkTW9kdWxlcy5SZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7Y2xhc3NOYW1lOiBcInZlcnNpb25IYXNoLTJnWGpJQiBkYS12ZXJzaW9uSGFzaFwifSwgdmVyc2lvbkhhc2gpKTtcclxuICAgICAgICAgICAgXHJcblxyXG4gICAgICAgICAgICBjb25zdCBvcmlnaW5hbFZlcnNpb25zID0gY2hpbGRyZW5bY2hpbGRyZW4ubGVuZ3RoIC0gMV0udHlwZTtcclxuICAgICAgICAgICAgY2hpbGRyZW5bY2hpbGRyZW4ubGVuZ3RoIC0gMV0udHlwZSA9IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcmV0dXJuVmFsID0gb3JpZ2luYWxWZXJzaW9ucyguLi5hcmd1bWVudHMpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuVmFsLnByb3BzLmNoaWxkcmVuLnNwbGljZShyZXR1cm5WYWwucHJvcHMuY2hpbGRyZW4ubGVuZ3RoIC0gMSwgMCwgaW5qZWN0b3IpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuVmFsLnByb3BzLmNoaWxkcmVuLnNwbGljZSgxLCAwLCBhZGRpdGlvbmFsKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiByZXR1cm5WYWw7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcGF0Y2hHdWlsZExpc3RJdGVtcygpIHtcclxuICAgICAgICBpZiAodGhpcy5ndWlsZExpc3RJdGVtc1BhdGNoKSByZXR1cm47XHJcbiAgICAgICAgY29uc3QgbGlzdEl0ZW1DbGFzcyA9IERpc2NvcmRNb2R1bGVzLkd1aWxkQ2xhc3Nlcy5saXN0SXRlbS5zcGxpdChcIiBcIilbMF07XHJcbiAgICAgICAgY29uc3QgYmxvYkNsYXNzID0gRGlzY29yZE1vZHVsZXMuR3VpbGRDbGFzc2VzLmJsb2JDb250YWluZXIuc3BsaXQoXCIgXCIpWzBdO1xyXG4gICAgICAgIGNvbnN0IHJlYWN0SW5zdGFuY2UgPSBVdGlsaXRpZXMuZ2V0UmVhY3RJbnN0YW5jZShkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAuJHtsaXN0SXRlbUNsYXNzfSAuJHtibG9iQ2xhc3N9YCkucGFyZW50RWxlbWVudCk7XHJcbiAgICAgICAgY29uc3QgR3VpbGRDb21wb25lbnQgPSByZWFjdEluc3RhbmNlLnJldHVybi50eXBlO1xyXG4gICAgICAgIGlmICghR3VpbGRDb21wb25lbnQpIHJldHVybjtcclxuICAgICAgICB0aGlzLmd1aWxkTGlzdEl0ZW1zUGF0Y2ggPSBQYXRjaGVyLmFmdGVyKFwiQ29tcG9uZW50UGF0Y2hlclwiLCBHdWlsZENvbXBvbmVudC5wcm90b3R5cGUsIFwicmVuZGVyXCIsICh0aGlzT2JqZWN0LCBfLCByZXR1cm5WYWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIXJldHVyblZhbHVlIHx8ICF0aGlzT2JqZWN0KSByZXR1cm47XHJcbiAgICAgICAgICAgIGNvbnN0IGd1aWxkRGF0YSA9IHRoaXNPYmplY3QucHJvcHM7XHJcbiAgICAgICAgICAgIHJldHVyblZhbHVlLnByb3BzLmNsYXNzTmFtZSArPSBcIiBiZC1ndWlsZFwiO1xyXG4gICAgICAgICAgICBpZiAoZ3VpbGREYXRhLnVucmVhZCkgcmV0dXJuVmFsdWUucHJvcHMuY2xhc3NOYW1lICs9IFwiIGJkLXVucmVhZFwiO1xyXG4gICAgICAgICAgICBpZiAoZ3VpbGREYXRhLnNlbGVjdGVkKSByZXR1cm5WYWx1ZS5wcm9wcy5jbGFzc05hbWUgKz0gXCIgYmQtc2VsZWN0ZWRcIjtcclxuICAgICAgICAgICAgaWYgKGd1aWxkRGF0YS5hdWRpbykgcmV0dXJuVmFsdWUucHJvcHMuY2xhc3NOYW1lICs9IFwiIGJkLWF1ZGlvXCI7XHJcbiAgICAgICAgICAgIGlmIChndWlsZERhdGEudmlkZW8pIHJldHVyblZhbHVlLnByb3BzLmNsYXNzTmFtZSArPSBcIiBiZC12aWRlb1wiO1xyXG4gICAgICAgICAgICBpZiAoZ3VpbGREYXRhLmJhZGdlKSByZXR1cm5WYWx1ZS5wcm9wcy5jbGFzc05hbWUgKz0gXCIgYmQtYmFkZ2VcIjtcclxuICAgICAgICAgICAgaWYgKGd1aWxkRGF0YS5hbmltYXRhYmxlKSByZXR1cm5WYWx1ZS5wcm9wcy5jbGFzc05hbWUgKz0gXCIgYmQtYW5pbWF0YWJsZVwiO1xyXG4gICAgICAgICAgICByZXR1cm4gcmV0dXJuVmFsdWU7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcGF0Y2hHdWlsZFBpbGxzKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmd1aWxkUGlsbFBhdGNoKSByZXR1cm47XHJcbiAgICAgICAgY29uc3QgZ3VpbGRQaWxsID0gV2VicGFja01vZHVsZXMuZ2V0TW9kdWxlKG0gPT4gbS5kZWZhdWx0ICYmICFtLmRlZmF1bHQuZGlzcGxheU5hbWUgJiYgbS5kZWZhdWx0LnRvU3RyaW5nICYmIG0uZGVmYXVsdC50b1N0cmluZygpLmluY2x1ZGVzKFwidHJhbnNsYXRlM2RcIikpO1xyXG4gICAgICAgIGlmICghZ3VpbGRQaWxsKSByZXR1cm47XHJcbiAgICAgICAgdGhpcy5ndWlsZFBpbGxQYXRjaCA9IFBhdGNoZXIuYWZ0ZXIoXCJDb21wb25lbnRQYXRjaGVyXCIsIGd1aWxkUGlsbCwgXCJkZWZhdWx0XCIsIChfLCBhcmdzLCByZXR1cm5WYWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBwcm9wcyA9IGFyZ3NbMF07XHJcbiAgICAgICAgICAgIGlmIChwcm9wcy51bnJlYWQpIHJldHVyblZhbHVlLnByb3BzLmNsYXNzTmFtZSArPSBcIiBiZC11bnJlYWRcIjtcclxuICAgICAgICAgICAgaWYgKHByb3BzLnNlbGVjdGVkKSByZXR1cm5WYWx1ZS5wcm9wcy5jbGFzc05hbWUgKz0gXCIgYmQtc2VsZWN0ZWRcIjtcclxuICAgICAgICAgICAgaWYgKHByb3BzLmhvdmVyZWQpIHJldHVyblZhbHVlLnByb3BzLmNsYXNzTmFtZSArPSBcIiBiZC1ob3ZlcmVkXCI7XHJcbiAgICAgICAgICAgIHJldHVybiByZXR1cm5WYWx1ZTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwYXRjaEd1aWxkU2VwYXJhdG9yKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmd1aWxkU2VwYXJhdG9yUGF0Y2gpIHJldHVybjtcclxuICAgICAgICBjb25zdCBHdWlsZHMgPSBXZWJwYWNrTW9kdWxlcy5nZXRCeURpc3BsYXlOYW1lKFwiR3VpbGRzXCIpO1xyXG4gICAgICAgIGNvbnN0IGd1aWxkQ29tcG9uZW50cyA9IFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJyZW5kZXJMaXN0SXRlbVwiKTtcclxuICAgICAgICBpZiAoIWd1aWxkQ29tcG9uZW50cyB8fCAhR3VpbGRzKSByZXR1cm47XHJcbiAgICAgICAgY29uc3QgR3VpbGRTZXBhcmF0b3IgPSBmdW5jdGlvbigpIHtcclxuICAgICAgICAgICAgY29uc3QgcmV0dXJuVmFsdWUgPSBndWlsZENvbXBvbmVudHMuU2VwYXJhdG9yKC4uLmFyZ3VtZW50cyk7XHJcbiAgICAgICAgICAgIHJldHVyblZhbHVlLnByb3BzLmNsYXNzTmFtZSArPSBcIiBiZC1ndWlsZC1zZXBhcmF0b3JcIjtcclxuICAgICAgICAgICAgcmV0dXJuIHJldHVyblZhbHVlO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy5ndWlsZFNlcGFyYXRvclBhdGNoID0gUGF0Y2hlci5hZnRlcihcIkNvbXBvbmVudFBhdGNoZXJcIiwgR3VpbGRzLnByb3RvdHlwZSwgXCJyZW5kZXJcIiwgKF8sIF9fLCByZXR1cm5WYWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBTZXBhcmF0b3IgPSBVdGlsaXRpZXMuZmluZEluUmVhY3RUcmVlKHJldHVyblZhbHVlLCBtID0+IG0udHlwZSAmJiAhbS50eXBlLmRpc3BsYXlOYW1lICYmIHR5cGVvZihtLnR5cGUpID09IFwiZnVuY3Rpb25cIiAmJiBVdGlsaXRpZXMuaXNFbXB0eShtLnByb3BzKSk7XHJcbiAgICAgICAgICAgIGlmICghU2VwYXJhdG9yKSByZXR1cm47XHJcbiAgICAgICAgICAgIFNlcGFyYXRvci50eXBlID0gR3VpbGRTZXBhcmF0b3I7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcGF0Y2hNZXNzYWdlSGVhZGVyKCkge1xyXG4gICAgICAgIGlmICh0aGlzLm1lc3NhZ2VIZWFkZXJQYXRjaCkgcmV0dXJuO1xyXG4gICAgICAgIGNvbnN0IE1lc3NhZ2VIZWFkZXIgPSBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiTWVzc2FnZVRpbWVzdGFtcFwiKTtcclxuICAgICAgICBjb25zdCBBbmNob3IgPSBXZWJwYWNrTW9kdWxlcy5maW5kKG0gPT4gbS5kaXNwbGF5TmFtZSA9PSBcIkFuY2hvclwiKTtcclxuICAgICAgICBpZiAoIUFuY2hvciB8fCAhTWVzc2FnZUhlYWRlciB8fCAhTWVzc2FnZUhlYWRlci5kZWZhdWx0KSByZXR1cm47XHJcbiAgICAgICAgdGhpcy5tZXNzYWdlSGVhZGVyUGF0Y2ggPSBQYXRjaGVyLmFmdGVyKFwiQ29tcG9uZW50UGF0Y2hlclwiLCBNZXNzYWdlSGVhZGVyLCBcImRlZmF1bHRcIiwgKF8sIGFyZ3MsIHJldHVyblZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGF1dGhvciA9IFV0aWxpdGllcy5nZXROZXN0ZWRQcm9wKGFyZ3NbMF0sIFwibWVzc2FnZS5hdXRob3JcIik7XHJcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkcmVuID0gVXRpbGl0aWVzLmdldE5lc3RlZFByb3AocmV0dXJuVmFsdWUsIFwicHJvcHMuY2hpbGRyZW4uMS5wcm9wcy5jaGlsZHJlbi4xLnByb3BzLmNoaWxkcmVuXCIpO1xyXG4gICAgICAgICAgICBpZiAoIWNoaWxkcmVuIHx8ICFhdXRob3IgfHwgIWF1dGhvci5pZCB8fCBhdXRob3IuaWQgIT09IFwiMjQ5NzQ2MjM2MDA4MTY5NDczXCIpIHJldHVybjtcclxuICAgICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGNoaWxkcmVuKSkgcmV0dXJuO1xyXG4gICAgICAgICAgICBjaGlsZHJlbi5wdXNoKFxyXG4gICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChUb29sdGlwLCB7Y29sb3I6IFwiYmxhY2tcIiwgcG9zaXRpb246IFwidG9wXCIsIHRleHQ6IFwiQmFuZGFnZWRCRCBEZXZlbG9wZXJcIn0sXHJcbiAgICAgICAgICAgICAgICAgICAgcHJvcHMgPT4gUmVhY3QuY3JlYXRlRWxlbWVudChBbmNob3IsIE9iamVjdC5hc3NpZ24oe2NsYXNzTmFtZTogXCJiZC1jaGF0LWJhZGdlXCIsIGhyZWY6IFwiaHR0cHM6Ly9naXRodWIuY29tL3JhdWVuemkvQmV0dGVyRGlzY29yZEFwcFwiLCB0aXRsZTogXCJCYW5kYWdlZEJEXCIsIHRhcmdldDogXCJfYmxhbmtcIn0sIHByb3BzKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChCRExvZ28sIHtzaXplOiBcIjE2cHhcIiwgY2xhc3NOYW1lOiBcImJkLWxvZ29cIn0pXHJcbiAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHBhdGNoTWVtYmVyTGlzdCgpIHtcclxuICAgICAgICBpZiAodGhpcy5tZW1iZXJMaXN0UGF0Y2gpIHJldHVybjtcclxuICAgICAgICBjb25zdCBNZW1iZXJMaXN0SXRlbSA9IFdlYnBhY2tNb2R1bGVzLmZpbmRCeURpc3BsYXlOYW1lKFwiTWVtYmVyTGlzdEl0ZW1cIik7XHJcbiAgICAgICAgY29uc3QgQW5jaG9yID0gV2VicGFja01vZHVsZXMuZmluZChtID0+IG0uZGlzcGxheU5hbWUgPT0gXCJBbmNob3JcIik7XHJcbiAgICAgICAgaWYgKCFBbmNob3IgfHwgIU1lbWJlckxpc3RJdGVtIHx8ICFNZW1iZXJMaXN0SXRlbS5wcm90b3R5cGUgfHwgIU1lbWJlckxpc3RJdGVtLnByb3RvdHlwZS5yZW5kZXJEZWNvcmF0b3JzKSByZXR1cm47XHJcbiAgICAgICAgdGhpcy5tZW1iZXJMaXN0UGF0Y2ggPSBQYXRjaGVyLmFmdGVyKFwiQ29tcG9uZW50UGF0Y2hlclwiLCBNZW1iZXJMaXN0SXRlbS5wcm90b3R5cGUsIFwicmVuZGVyRGVjb3JhdG9yc1wiLCAodGhpc09iamVjdCwgYXJncywgcmV0dXJuVmFsdWUpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgdXNlciA9IFV0aWxpdGllcy5nZXROZXN0ZWRQcm9wKHRoaXNPYmplY3QsIFwicHJvcHMudXNlclwiKTtcclxuICAgICAgICAgICAgY29uc3QgY2hpbGRyZW4gPSBVdGlsaXRpZXMuZ2V0TmVzdGVkUHJvcChyZXR1cm5WYWx1ZSwgXCJwcm9wcy5jaGlsZHJlblwiKTtcclxuICAgICAgICAgICAgaWYgKCFjaGlsZHJlbiB8fCAhdXNlciB8fCAhdXNlci5pZCB8fCB1c2VyLmlkICE9PSBcIjI0OTc0NjIzNjAwODE2OTQ3M1wiKSByZXR1cm47XHJcbiAgICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShjaGlsZHJlbikpIHJldHVybjtcclxuICAgICAgICAgICAgY2hpbGRyZW4ucHVzaChcclxuICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoVG9vbHRpcCwge2NvbG9yOiBcImJsYWNrXCIsIHBvc2l0aW9uOiBcInRvcFwiLCB0ZXh0OiBcIkJhbmRhZ2VkQkQgRGV2ZWxvcGVyXCJ9LFxyXG4gICAgICAgICAgICAgICAgICAgIHByb3BzID0+IFJlYWN0LmNyZWF0ZUVsZW1lbnQoQW5jaG9yLCBPYmplY3QuYXNzaWduKHtjbGFzc05hbWU6IFwiYmQtbWVtYmVyLWJhZGdlXCIsIGhyZWY6IFwiaHR0cHM6Ly9naXRodWIuY29tL3JhdWVuemkvQmV0dGVyRGlzY29yZEFwcFwiLCB0aXRsZTogXCJCYW5kYWdlZEJEXCIsIHRhcmdldDogXCJfYmxhbmtcIn0sIHByb3BzKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChCRExvZ28sIHtzaXplOiBcIjE2cHhcIiwgY2xhc3NOYW1lOiBcImJkLWxvZ29cIn0pXHJcbiAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/modules/componentpatcher.js\n"); /***/ }), @@ -419,7 +418,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var data /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _localemanager__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./localemanager */ \"./src/modules/localemanager.js\");\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./logger */ \"./src/modules/logger.js\");\n/* harmony import */ var data__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! data */ \"./src/data/data.js\");\n/* harmony import */ var _dommanager__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./dommanager */ \"./src/modules/dommanager.js\");\n/* harmony import */ var _pluginmanager__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./pluginmanager */ \"./src/modules/pluginmanager.js\");\n/* harmony import */ var _thememanager__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./thememanager */ \"./src/modules/thememanager.js\");\n/* harmony import */ var _settingsmanager__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./settingsmanager */ \"./src/modules/settingsmanager.js\");\n/* harmony import */ var builtins__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! builtins */ \"./src/builtins/builtins.js\");\n/* harmony import */ var _ui_modals__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../ui/modals */ \"./src/ui/modals.js\");\n/* harmony import */ var _reactcomponents__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./reactcomponents */ \"./src/modules/reactcomponents.js\");\n/* harmony import */ var _datastore__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./datastore */ \"./src/modules/datastore.js\");\n/* harmony import */ var _discordmodules__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./discordmodules */ \"./src/modules/discordmodules.js\");\n/* harmony import */ var _componentpatcher__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./componentpatcher */ \"./src/modules/componentpatcher.js\");\n/* harmony import */ var _strings__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./strings */ \"./src/modules/strings.js\");\n/* harmony import */ var _loadingicon__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../loadingicon */ \"./src/loadingicon.js\");\n/* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./utilities */ \"./src/modules/utilities.js\");\n\n\n // import EmoteModule from \"./emotes\";\n// import QuickEmoteMenu from \"../builtins/emotemenu\";\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst {\n ipcRenderer\n} = __webpack_require__(/*! electron */ \"electron\");\n\nconst GuildClasses = _discordmodules__WEBPACK_IMPORTED_MODULE_11__[\"default\"].GuildClasses;\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class Core {\n constructor() {\n ipcRenderer.invoke(\"bd-config\", \"get\").then(injectorConfig => {\n if (this.hasStarted) return;\n Object.assign(data__WEBPACK_IMPORTED_MODULE_2__[\"Config\"], injectorConfig);\n this.init();\n });\n }\n\n get dependencies() {\n return [{\n name: \"jquery\",\n type: \"script\",\n url: \"//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js\",\n backup: \"//cdn.jsdelivr.net/gh/jquery/jquery@2.0.0/jquery.min.js\",\n local: null\n }, {\n name: \"bd-stylesheet\",\n type: \"style\",\n url: \"//cdn.staticaly.com/gh/{{repo}}/BetterDiscordApp/{{hash}}/dist/style.css\",\n backup: \"//rauenzi.github.io/BetterDiscordApp/dist/style.css\",\n local: \"{{localServer}}/BetterDiscordApp/dist/style.css\"\n }];\n }\n\n setConfig(config) {\n if (this.hasStarted) return;\n Object.assign(data__WEBPACK_IMPORTED_MODULE_2__[\"Config\"], config);\n }\n\n async init() {\n if (this.hasStarted) return;\n this.hasStarted = true; // Load dependencies asynchronously if they don't exist\n\n let dependencyPromise = new Promise(r => r());\n if (!window.$ || !window.jQuery) dependencyPromise = this.loadDependencies();\n _datastore__WEBPACK_IMPORTED_MODULE_10__[\"default\"].initialize();\n await _localemanager__WEBPACK_IMPORTED_MODULE_0__[\"default\"].initialize();\n if (data__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].version < data__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].minSupportedVersion) return _ui_modals__WEBPACK_IMPORTED_MODULE_8__[\"default\"].alert(_strings__WEBPACK_IMPORTED_MODULE_13__[\"default\"].Startup.notSupported, _strings__WEBPACK_IMPORTED_MODULE_13__[\"default\"].Startup.versionMismatch.format({\n injector: data__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].version,\n remote: data__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].bbdVersion\n }));\n if (window.ED) return _ui_modals__WEBPACK_IMPORTED_MODULE_8__[\"default\"].alert(_strings__WEBPACK_IMPORTED_MODULE_13__[\"default\"].Startup.notSupported, _strings__WEBPACK_IMPORTED_MODULE_13__[\"default\"].Startup.incompatibleApp.format({\n app: \"EnhancedDiscord\"\n }));\n if (window.WebSocket && window.WebSocket.name && window.WebSocket.name.includes(\"Patched\")) return _ui_modals__WEBPACK_IMPORTED_MODULE_8__[\"default\"].alert(_strings__WEBPACK_IMPORTED_MODULE_13__[\"default\"].Startup.notSupported, _strings__WEBPACK_IMPORTED_MODULE_13__[\"default\"].Startup.incompatibleApp.format({\n app: \"Powercord\"\n }));\n const latestLocalVersion = data__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].updater ? data__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].updater.LatestVersion : data__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].latestVersion;\n\n if (latestLocalVersion > data__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].version) {\n _ui_modals__WEBPACK_IMPORTED_MODULE_8__[\"default\"].showConfirmationModal(_strings__WEBPACK_IMPORTED_MODULE_13__[\"default\"].Startup.updateAvailable, _strings__WEBPACK_IMPORTED_MODULE_13__[\"default\"].Startup.updateInfo.format({\n version: latestLocalVersion\n }), {\n confirmText: _strings__WEBPACK_IMPORTED_MODULE_13__[\"default\"].Startup.updateNow,\n cancelText: _strings__WEBPACK_IMPORTED_MODULE_13__[\"default\"].Startup.maybeLater,\n onConfirm: async () => {\n const onUpdateFailed = () => {\n _ui_modals__WEBPACK_IMPORTED_MODULE_8__[\"default\"].alert(_strings__WEBPACK_IMPORTED_MODULE_13__[\"default\"].Startup.updateFailed, _strings__WEBPACK_IMPORTED_MODULE_13__[\"default\"].Startup.manualUpdate);\n };\n\n try {\n const didUpdate = await this.updateInjector();\n if (!didUpdate) return onUpdateFailed();\n\n const app = __webpack_require__(/*! electron */ \"electron\").remote.app;\n\n app.relaunch();\n app.exit();\n } catch (err) {\n onUpdateFailed();\n }\n }\n });\n }\n\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].log(\"Startup\", \"Initializing Settings\");\n _settingsmanager__WEBPACK_IMPORTED_MODULE_6__[\"default\"].initialize(); // DOMManager.initialize();\n\n await this.waitForGuilds();\n _reactcomponents__WEBPACK_IMPORTED_MODULE_9__[\"default\"].initialize();\n _componentpatcher__WEBPACK_IMPORTED_MODULE_12__[\"default\"].initialize();\n\n for (const module in builtins__WEBPACK_IMPORTED_MODULE_7__) builtins__WEBPACK_IMPORTED_MODULE_7__[module].initialize();\n\n await dependencyPromise;\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].log(\"Startup\", \"Loading Plugins\");\n const pluginErrors = _pluginmanager__WEBPACK_IMPORTED_MODULE_4__[\"default\"].initialize();\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].log(\"Startup\", \"Loading Themes\");\n const themeErrors = _thememanager__WEBPACK_IMPORTED_MODULE_5__[\"default\"].initialize();\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].log(\"Startup\", \"Removing Loading Icon\");\n _loadingicon__WEBPACK_IMPORTED_MODULE_14__[\"default\"].hide(); // Show loading errors\n\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].log(\"Startup\", \"Collecting Startup Errors\");\n _ui_modals__WEBPACK_IMPORTED_MODULE_8__[\"default\"].showAddonErrors({\n plugins: pluginErrors,\n themes: themeErrors\n });\n const previousVersion = _datastore__WEBPACK_IMPORTED_MODULE_10__[\"default\"].getBDData(\"version\");\n\n if (data__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].bbdVersion > previousVersion) {\n _ui_modals__WEBPACK_IMPORTED_MODULE_8__[\"default\"].showChangelogModal(data__WEBPACK_IMPORTED_MODULE_2__[\"Changelog\"]);\n _datastore__WEBPACK_IMPORTED_MODULE_10__[\"default\"].setBDData(\"version\", data__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].bbdVersion);\n }\n }\n\n waitForGuilds() {\n let timesChecked = 0;\n return new Promise(resolve => {\n const checkForGuilds = function () {\n timesChecked++;\n if (document.readyState != \"complete\") setTimeout(checkForGuilds, 100);\n const wrapper = GuildClasses.wrapper.split(\" \")[0];\n const guild = GuildClasses.listItem.split(\" \")[0];\n const blob = GuildClasses.blobContainer.split(\" \")[0];\n if (document.querySelectorAll(`.${wrapper} .${guild} .${blob}`).length > 0) return resolve(data__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].deferLoaded = true);else if (timesChecked >= 50) return resolve(data__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].deferLoaded = true);\n setTimeout(checkForGuilds, 100);\n };\n\n checkForGuilds();\n });\n }\n\n async loadDependencies() {\n for (const data of this.dependencies) {\n const url = _utilities__WEBPACK_IMPORTED_MODULE_15__[\"default\"].formatString(data__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].local && data.local != null ? data.local : data.url, {\n repo: data__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].repo,\n hash: data__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].hash,\n localServer: data__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].localServer\n });\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].log(`Startup`, `Loading Resource (${url})`);\n const injector = (data.type == \"script\" ? _dommanager__WEBPACK_IMPORTED_MODULE_3__[\"default\"].injectScript : _dommanager__WEBPACK_IMPORTED_MODULE_3__[\"default\"].linkStyle).bind(_dommanager__WEBPACK_IMPORTED_MODULE_3__[\"default\"]);\n\n try {\n await injector(data.name, url);\n } catch (err) {\n const backup = _utilities__WEBPACK_IMPORTED_MODULE_15__[\"default\"].formatString(data.backup, {\n minified: data__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].minified ? \".min\" : \"\"\n });\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].stacktrace(`Startup`, `Could not load ${url}. Using backup ${backup}`, err);\n\n try {\n await injector(data.name, backup);\n } catch (e) {\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].stacktrace(`Startup`, `Could not load ${url}. Using backup ${backup}`, err);\n if (data.name === \"jquery\") _ui_modals__WEBPACK_IMPORTED_MODULE_8__[\"default\"].alert(_strings__WEBPACK_IMPORTED_MODULE_13__[\"default\"].Startup.jqueryFailed, _strings__WEBPACK_IMPORTED_MODULE_13__[\"default\"].Startup.jqueryFailedDetails);\n }\n }\n }\n }\n\n async updateInjector() {\n const injectionPath = _datastore__WEBPACK_IMPORTED_MODULE_10__[\"default\"].injectionPath;\n if (!injectionPath) return false;\n\n const fs = __webpack_require__(/*! fs */ \"fs\");\n\n const path = __webpack_require__(/*! path */ \"path\");\n\n const rmrf = __webpack_require__(/*! rimraf */ \"rimraf\");\n\n const yauzl = __webpack_require__(/*! yauzl */ \"yauzl\");\n\n const mkdirp = __webpack_require__(/*! mkdirp */ \"mkdirp\");\n\n const request = __webpack_require__(/*! request */ \"request\");\n\n const parentPath = path.resolve(injectionPath, \"..\");\n const folderName = path.basename(injectionPath);\n const zipLink = \"https://github.com/rauenzi/BetterDiscordApp/archive/injector.zip\";\n const savedZip = path.resolve(parentPath, \"injector.zip\");\n const extractedFolder = path.resolve(parentPath, \"BetterDiscordApp-injector\"); // Download the injector zip file\n\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].log(\"InjectorUpdate\", \"Downloading \" + zipLink);\n let success = await new Promise(resolve => {\n request.get({\n url: zipLink,\n encoding: null\n }, async (error, response, body) => {\n if (error || response.statusCode !== 200) return resolve(false); // Save a backup in case someone has their own copy\n\n const alreadyExists = await new Promise(res => fs.exists(savedZip, res));\n if (alreadyExists) await new Promise(res => fs.rename(savedZip, `${savedZip}.bak${Math.round(performance.now())}`, res));\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].log(\"InjectorUpdate\", \"Writing \" + savedZip);\n fs.writeFile(savedZip, body, err => resolve(!err));\n });\n });\n if (!success) return success; // Check and delete rename extraction\n\n const alreadyExists = await new Promise(res => fs.exists(extractedFolder, res));\n if (alreadyExists) await new Promise(res => fs.rename(extractedFolder, `${extractedFolder}.bak${Math.round(performance.now())}`, res)); // Unzip the downloaded zip file\n\n const zipfile = await new Promise(r => yauzl.open(savedZip, {\n lazyEntries: true\n }, (err, zip) => r(zip)));\n zipfile.on(\"entry\", function (entry) {\n // Skip directories, they are handled with mkdirp\n if (entry.fileName.endsWith(\"/\")) return zipfile.readEntry();\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].log(\"InjectorUpdate\", \"Extracting \" + entry.fileName); // Make any needed parent directories\n\n const fullPath = path.resolve(parentPath, entry.fileName);\n mkdirp.sync(path.dirname(fullPath));\n zipfile.openReadStream(entry, function (err, readStream) {\n if (err) return success = false;\n readStream.on(\"end\", function () {\n zipfile.readEntry();\n }); // Go to next file after this\n\n readStream.pipe(fs.createWriteStream(fullPath));\n });\n });\n zipfile.readEntry(); // Start reading\n // Wait for the final file to finish\n\n await new Promise(resolve => zipfile.once(\"end\", resolve)); // Save a backup in case something goes wrong during final step\n\n const backupFolder = path.resolve(parentPath, `${folderName}.bak${Math.round(performance.now())}`);\n await new Promise(resolve => fs.rename(injectionPath, backupFolder, resolve)); // Rename the extracted folder to what it should be\n\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].log(\"InjectorUpdate\", `Renaming ${path.basename(extractedFolder)} to ${folderName}`);\n success = await new Promise(resolve => fs.rename(extractedFolder, injectionPath, err => resolve(!err)));\n\n if (!success) {\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].err(\"InjectorUpdate\", \"Failed to rename the final directory\");\n return success;\n } // If rename had issues, delete what we tried to rename and restore backup\n\n\n if (!success) {\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].err(\"InjectorUpdate\", \"Something went wrong... restoring backups.\");\n await new Promise(resolve => rmrf(extractedFolder, resolve));\n await new Promise(resolve => fs.rename(backupFolder, injectionPath, resolve));\n return success;\n } // If we've gotten to this point, everything should have gone smoothly.\n // Cleanup the backup folder then remove the zip\n\n\n await new Promise(resolve => rmrf(backupFolder, resolve));\n await new Promise(resolve => fs.unlink(savedZip, resolve));\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].log(\"InjectorUpdate\", \"Injector Updated!\");\n return success;\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL21vZHVsZXMvY29yZS5qcz9iNmRlIl0sIm5hbWVzIjpbImlwY1JlbmRlcmVyIiwicmVxdWlyZSIsIkd1aWxkQ2xhc3NlcyIsIkRpc2NvcmRNb2R1bGVzIiwiQ29yZSIsImNvbnN0cnVjdG9yIiwiaW52b2tlIiwidGhlbiIsImluamVjdG9yQ29uZmlnIiwiaGFzU3RhcnRlZCIsIk9iamVjdCIsImFzc2lnbiIsIkNvbmZpZyIsImluaXQiLCJkZXBlbmRlbmNpZXMiLCJuYW1lIiwidHlwZSIsInVybCIsImJhY2t1cCIsImxvY2FsIiwic2V0Q29uZmlnIiwiY29uZmlnIiwiZGVwZW5kZW5jeVByb21pc2UiLCJQcm9taXNlIiwiciIsIndpbmRvdyIsIiQiLCJqUXVlcnkiLCJsb2FkRGVwZW5kZW5jaWVzIiwiRGF0YVN0b3JlIiwiaW5pdGlhbGl6ZSIsIkxvY2FsZU1hbmFnZXIiLCJ2ZXJzaW9uIiwibWluU3VwcG9ydGVkVmVyc2lvbiIsIk1vZGFscyIsImFsZXJ0IiwiU3RyaW5ncyIsIlN0YXJ0dXAiLCJub3RTdXBwb3J0ZWQiLCJ2ZXJzaW9uTWlzbWF0Y2giLCJmb3JtYXQiLCJpbmplY3RvciIsInJlbW90ZSIsImJiZFZlcnNpb24iLCJFRCIsImluY29tcGF0aWJsZUFwcCIsImFwcCIsIldlYlNvY2tldCIsImluY2x1ZGVzIiwibGF0ZXN0TG9jYWxWZXJzaW9uIiwidXBkYXRlciIsIkxhdGVzdFZlcnNpb24iLCJsYXRlc3RWZXJzaW9uIiwic2hvd0NvbmZpcm1hdGlvbk1vZGFsIiwidXBkYXRlQXZhaWxhYmxlIiwidXBkYXRlSW5mbyIsImNvbmZpcm1UZXh0IiwidXBkYXRlTm93IiwiY2FuY2VsVGV4dCIsIm1heWJlTGF0ZXIiLCJvbkNvbmZpcm0iLCJvblVwZGF0ZUZhaWxlZCIsInVwZGF0ZUZhaWxlZCIsIm1hbnVhbFVwZGF0ZSIsImRpZFVwZGF0ZSIsInVwZGF0ZUluamVjdG9yIiwicmVsYXVuY2giLCJleGl0IiwiZXJyIiwiTG9nZ2VyIiwibG9nIiwiU2V0dGluZ3MiLCJ3YWl0Rm9yR3VpbGRzIiwiUmVhY3RDb21wb25lbnRzIiwiQ29tcG9uZW50UGF0Y2hlciIsIm1vZHVsZSIsIkJ1aWx0aW5zIiwicGx1Z2luRXJyb3JzIiwiUGx1Z2luTWFuYWdlciIsInRoZW1lRXJyb3JzIiwiVGhlbWVNYW5hZ2VyIiwiTG9hZGluZ0ljb24iLCJoaWRlIiwic2hvd0FkZG9uRXJyb3JzIiwicGx1Z2lucyIsInRoZW1lcyIsInByZXZpb3VzVmVyc2lvbiIsImdldEJERGF0YSIsInNob3dDaGFuZ2Vsb2dNb2RhbCIsIkNoYW5nZWxvZyIsInNldEJERGF0YSIsInRpbWVzQ2hlY2tlZCIsInJlc29sdmUiLCJjaGVja0Zvckd1aWxkcyIsImRvY3VtZW50IiwicmVhZHlTdGF0ZSIsInNldFRpbWVvdXQiLCJ3cmFwcGVyIiwic3BsaXQiLCJndWlsZCIsImxpc3RJdGVtIiwiYmxvYiIsImJsb2JDb250YWluZXIiLCJxdWVyeVNlbGVjdG9yQWxsIiwibGVuZ3RoIiwiZGVmZXJMb2FkZWQiLCJkYXRhIiwiVXRpbGl0aWVzIiwiZm9ybWF0U3RyaW5nIiwicmVwbyIsImhhc2giLCJsb2NhbFNlcnZlciIsIkRPTU1hbmFnZXIiLCJpbmplY3RTY3JpcHQiLCJsaW5rU3R5bGUiLCJiaW5kIiwibWluaWZpZWQiLCJzdGFja3RyYWNlIiwiZSIsImpxdWVyeUZhaWxlZCIsImpxdWVyeUZhaWxlZERldGFpbHMiLCJpbmplY3Rpb25QYXRoIiwiZnMiLCJwYXRoIiwicm1yZiIsInlhdXpsIiwibWtkaXJwIiwicmVxdWVzdCIsInBhcmVudFBhdGgiLCJmb2xkZXJOYW1lIiwiYmFzZW5hbWUiLCJ6aXBMaW5rIiwic2F2ZWRaaXAiLCJleHRyYWN0ZWRGb2xkZXIiLCJzdWNjZXNzIiwiZ2V0IiwiZW5jb2RpbmciLCJlcnJvciIsInJlc3BvbnNlIiwiYm9keSIsInN0YXR1c0NvZGUiLCJhbHJlYWR5RXhpc3RzIiwicmVzIiwiZXhpc3RzIiwicmVuYW1lIiwiTWF0aCIsInJvdW5kIiwicGVyZm9ybWFuY2UiLCJub3ciLCJ3cml0ZUZpbGUiLCJ6aXBmaWxlIiwib3BlbiIsImxhenlFbnRyaWVzIiwiemlwIiwib24iLCJlbnRyeSIsImZpbGVOYW1lIiwiZW5kc1dpdGgiLCJyZWFkRW50cnkiLCJmdWxsUGF0aCIsInN5bmMiLCJkaXJuYW1lIiwib3BlblJlYWRTdHJlYW0iLCJyZWFkU3RyZWFtIiwicGlwZSIsImNyZWF0ZVdyaXRlU3RyZWFtIiwib25jZSIsImJhY2t1cEZvbGRlciIsInVubGluayJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7Q0FFQTtBQUNBOztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLE1BQU07QUFBQ0E7QUFBRCxJQUFnQkMsbUJBQU8sQ0FBQywwQkFBRCxDQUE3Qjs7QUFDQSxNQUFNQyxZQUFZLEdBQUdDLHdEQUFjLENBQUNELFlBQXBDO0FBRWUsbUVBQUksTUFBTUUsSUFBTixDQUFXO0FBQzFCQyxhQUFXLEdBQUc7QUFDVkwsZUFBVyxDQUFDTSxNQUFaLENBQW1CLFdBQW5CLEVBQWdDLEtBQWhDLEVBQXVDQyxJQUF2QyxDQUE0Q0MsY0FBYyxJQUFJO0FBQzFELFVBQUksS0FBS0MsVUFBVCxFQUFxQjtBQUNyQkMsWUFBTSxDQUFDQyxNQUFQLENBQWNDLDJDQUFkLEVBQXNCSixjQUF0QjtBQUNBLFdBQUtLLElBQUw7QUFDSCxLQUpEO0FBS0g7O0FBRUQsTUFBSUMsWUFBSixHQUFtQjtBQUNmLFdBQU8sQ0FDSDtBQUNJQyxVQUFJLEVBQUUsUUFEVjtBQUVJQyxVQUFJLEVBQUUsUUFGVjtBQUdJQyxTQUFHLEVBQUUsNERBSFQ7QUFJSUMsWUFBTSxFQUFFLHlEQUpaO0FBS0lDLFdBQUssRUFBRTtBQUxYLEtBREcsRUFRSDtB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QTNCLENBQU47QUFDQSxVQUFNLElBQUlyRSxPQUFKLENBQVlxRSxPQUFPLElBQUk4QixFQUFFLENBQUM4QyxNQUFILENBQVVwQyxRQUFWLEVBQW9CeEMsT0FBcEIsQ0FBdkIsQ0FBTjtBQUVBdkIsbURBQU0sQ0FBQ0MsR0FBUCxDQUFXLGdCQUFYLEVBQTZCLG1CQUE3QjtBQUNBLFdBQU9nRSxPQUFQO0FBQ0g7O0FBak95QixDQUFmLEVBQWYiLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jb3JlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExvY2FsZU1hbmFnZXIgZnJvbSBcIi4vbG9jYWxlbWFuYWdlclwiO1xyXG5cclxuaW1wb3J0IExvZ2dlciBmcm9tIFwiLi9sb2dnZXJcIjtcclxuaW1wb3J0IHtDb25maWcsIENoYW5nZWxvZ30gZnJvbSBcImRhdGFcIjtcclxuLy8gaW1wb3J0IEVtb3RlTW9kdWxlIGZyb20gXCIuL2Vtb3Rlc1wiO1xyXG4vLyBpbXBvcnQgUXVpY2tFbW90ZU1lbnUgZnJvbSBcIi4uL2J1aWx0aW5zL2Vtb3RlbWVudVwiO1xyXG5pbXBvcnQgRE9NTWFuYWdlciBmcm9tIFwiLi9kb21tYW5hZ2VyXCI7XHJcbmltcG9ydCBQbHVnaW5NYW5hZ2VyIGZyb20gXCIuL3BsdWdpbm1hbmFnZXJcIjtcclxuaW1wb3J0IFRoZW1lTWFuYWdlciBmcm9tIFwiLi90aGVtZW1hbmFnZXJcIjtcclxuaW1wb3J0IFNldHRpbmdzIGZyb20gXCIuL3NldHRpbmdzbWFuYWdlclwiO1xyXG5pbXBvcnQgKiBhcyBCdWlsdGlucyBmcm9tIFwiYnVpbHRpbnNcIjtcclxuaW1wb3J0IE1vZGFscyBmcm9tIFwiLi4vdWkvbW9kYWxzXCI7XHJcbmltcG9ydCBSZWFjdENvbXBvbmVudHMgZnJvbSBcIi4vcmVhY3Rjb21wb25lbnRzXCI7XHJcbmltcG9ydCBEYXRhU3RvcmUgZnJvbSBcIi4vZGF0YXN0b3JlXCI7XHJcbmltcG9ydCBEaXNjb3JkTW9kdWxlcyBmcm9tIFwiLi9kaXNjb3JkbW9kdWxlc1wiO1xyXG5pbXBvcnQgQ29tcG9uZW50UGF0Y2hlciBmcm9tIFwiLi9jb21wb25lbnRwYXRjaGVyXCI7XHJcbmltcG9ydCBTdHJpbmdzIGZyb20gXCIuL3N0cmluZ3NcIjtcclxuaW1wb3J0IExvYWRpbmdJY29uIGZyb20gXCIuLi9sb2FkaW5naWNvblwiO1xyXG5pbXBvcnQgVXRpbGl0aWVzIGZyb20gXCIuL3V0aWxpdGllc1wiO1xyXG5cclxuY29uc3Qge2lwY1JlbmRlcmVyfSA9IHJlcXVpcmUoXCJlbGVjdHJvblwiKTtcclxuY29uc3QgR3VpbGRDbGFzc2VzID0gRGlzY29yZE1vZHVsZXMuR3VpbGRDbGFzc2VzO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgbmV3IGNsYXNzIENvcmUge1xyXG4gICAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAgICAgaXBjUmVuZGVyZXIuaW52b2tlKFwiYmQtY29uZmlnXCIsIFwiZ2V0XCIpLnRoZW4oaW5qZWN0b3JDb25maWcgPT4ge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5oYXNTdGFydGVkKSByZXR1cm47XHJcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oQ29uZmlnLCBpbmplY3RvckNvbmZpZyk7XHJcbiAgICAgICAgICAgIHRoaXMuaW5pdCgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBkZXBlbmRlbmNpZXMoKSB7XHJcbiAgICAgICAgcmV0dXJuIFtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgbmFtZTogXCJqcXVlcnlcIixcclxuICAgICAgICAgICAgICAgIHR5cGU6IFwic2NyaXB0XCIsXHJcbiAgICAgICAgICAgICAgICB1cmw6IFwiLy9hamF4Lmdvb2dsZWFwaXMuY29tL2FqYXgvbGlicy9qcXVlcnkvMi4wLjAvanF1ZXJ5Lm1pbi5qc1wiLFxyXG4gICAgICAgICAgICAgICAgYmFja3VwOiBcIi8vY2RuLmpzZGVsaXZyLm5ldC9naC9qcXVlcnkvanF1ZXJ5QDIuMC4wL2pxdWVyeS5taW4uanNcIixcclxuICAgICAgICAgICAgICAgIGxvY2FsOiBudWxsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIG5hbWU6IFwiYmQtc3R5bGVzaGVldFwiLFxyXG4gICAgICAgICAgICAgICAgdHlwZTogXCJzdHlsZVwiLFxyXG4gICAgICAgICAgICAgICAgdXJsOiBcIi8vY2RuLnN0YXRpY2FseS5jb20vZ2gve3tyZXBvfX0vQmV0dGVyRGlzY29yZEFwcC97e2hhc2h9fS9kaXN0L3N0eWxlLmNzc1wiLFxyXG4gICAgICAgICAgICAgICAgYmFja3VwOiBcIi8vcmF1ZW56aS5naXRodWIuaW8vQmV0dGVyRGlzY29yZEFwcC9kaXN0L3N0eWxlLmNzc1wiLFxyXG4gICAgICAgICAgICAgICAgbG9jYWw6IFwie3tsb2NhbFNlcnZlcn19L0JldHRlckRpc2NvcmRBcHAvZGlzdC9zdHlsZS5jc3NcIlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgXTtcclxuICAgIH1cclxuXHJcbiAgICBzZXRDb25maWcoY29uZmlnKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuaGFzU3RhcnRlZCkgcmV0dXJuO1xyXG4gICAgICAgIE9iamVjdC5hc3NpZ24oQ29uZmlnLCBjb25maWcpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGluaXQoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuaGFzU3RhcnRlZCkgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMuaGFzU3RhcnRlZCA9IHRydWU7XHJcblxyXG4gICAgICAgIC8vIExvYWQgZGVwZW5kZW5jaWVzIGFzeW5jaHJvbm91c2x5IGlmIHRoZXkgZG9uJ3QgZXhpc3RcclxuICAgICAgICBsZXQgZGVwZW5kZW5jeVByb21pc2UgPSBuZXcgUHJvbWlzZShyID0+IHIoKSk7XHJcbiAgICAgICAgaWYgKCF3aW5kb3cuJCB8fCAhd2luZG93LmpRdWVyeSkgZGVwZW5kZW5jeVByb21pc2UgPSB0aGlzLmxvYWREZXBlbmRlbmNpZXMoKTtcclxuXHJcbiAgICAgICAgRGF0YVN0b3JlLmluaXRpYWxpemUoKTtcclxuICAgICAgICBhd2FpdCBMb2NhbGVNYW5hZ2VyLmluaXRpYWxpemUoKTtcclxuXHJcbiAgICAgICAgaWYgKENvbmZpZy52ZXJzaW9uIDwgQ29uZmlnLm1pblN1cHBvcnRlZFZlcnNpb24pIHJldHVybiBNb2RhbHMuYWxlcnQoU3RyaW5ncy5TdGFydHVwLm5vdFN1cHBvcnRlZCwgU3RyaW5ncy5TdGFydHVwLnZlcnNpb25NaXNtYXRjaC5mb3JtYXQoe2luamVjdG9yOiBDb25maWcudmVyc2lvbiwgcmVtb3RlOiBDb25maWcuYmJkVmVyc2lvbn0pKTtcclxuICAgICAgICBpZiAod2luZG93LkVEKSByZXR1cm4gTW9kYWxzLmFsZXJ0KFN0cmluZ3MuU3RhcnR1cC5ub3RTdXBwb3J0ZWQsIFN0cmluZ3MuU3RhcnR1cC5pbmNvbXBhdGlibGVBcHAuZm9ybWF0KHthcHA6IFwiRW5oYW5jZWREaXNjb3JkXCJ9KSk7XHJcbiAgICAgICAgaWYgKHdpbmRvdy5XZWJTb2NrZXQgJiYgd2luZG93LldlYlNvY2tldC5uYW1lICYmIHdpbmRvdy5XZWJTb2NrZXQubmFtZS5pbmNsdWRlcyhcIlBhdGNoZWRcIikpIHJldHVybiBNb2RhbHMuYWxlcnQoU3RyaW5ncy5TdGFydHVwLm5vdFN1cHBvcnRlZCwgU3RyaW5ncy5TdGFydHVwLmluY29tcGF0aWJsZUFwcC5mb3JtYXQoe2FwcDogXCJQb3dlcmNvcmRcIn0pKTtcclxuXHJcbiAgICAgICAgY29uc3QgbGF0ZXN0TG9jYWxWZXJzaW9uID0gQ29uZmlnLnVwZGF0ZXIgPyBDb25maWcudXBkYXRlci5MYXRlc3RWZXJzaW9uIDogQ29uZmlnLmxhdGVzdFZlcnNpb247XHJcbiAgICAgICAgaWYgKGxhdGVzdExvY2FsVmVyc2lvbiA+IENvbmZpZy52ZXJzaW9uKSB7XHJcbiAgICAgICAgICAgIE1vZGFscy5zaG93Q29uZmlybWF0aW9uTW9kYWwoU3RyaW5ncy5TdGFydHVwLnVwZGF0ZUF2YWlsYWJsZSwgU3RyaW5ncy5TdGFydHVwLnVwZGF0ZUluZm8uZm9ybWF0KHt2ZXJzaW9uOiBsYXRlc3RMb2NhbFZlcnNpb259KSwge1xyXG4gICAgICAgICAgICAgICAgY29uZmlybVRleHQ6IFN0cmluZ3MuU3RhcnR1cC51cGRhdGVOb3csXHJcbiAgICAgICAgICAgICAgICBjYW5jZWxUZXh0OiBTdHJpbmdzLlN0YXJ0dXAubWF5YmVMYXRlcixcclxuICAgICAgICAgICAgICAgIG9uQ29uZmlybTogYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG9uVXBkYXRlRmFpbGVkID0gKCkgPT4geyBNb2RhbHMuYWxlcnQoU3RyaW5ncy5TdGFydHVwLnVwZGF0ZUZhaWxlZCwgU3RyaW5ncy5TdGFydHVwLm1hbnVhbFVwZGF0ZSk7IH07XHJcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZGlkVXBkYXRlID0gYXdhaXQgdGhpcy51cGRhdGVJbmplY3RvcigpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWRpZFVwZGF0ZSkgcmV0dXJuIG9uVXBkYXRlRmFpbGVkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGFwcCA9IHJlcXVpcmUoXCJlbGVjdHJvblwiKS5yZW1vdGUuYXBwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBhcHAucmVsYXVuY2goKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXBwLmV4aXQoKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKGVycikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBvblVwZGF0ZUZhaWxlZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuXHJcbiAgICAgICAgTG9nZ2VyLmxvZyhcIlN0YXJ0dXBcIiwgXCJJbml0aWFsaXppbmcgU2V0dGluZ3NcIik7XHJcbiAgICAgICAgU2V0dGluZ3MuaW5pdGlhbGl6ZSgpO1xyXG5cclxuICAgICAgICAvLyBET01NYW5hZ2VyLmluaXRpYWxpemUoKTtcclxuICAgICAgICBhd2FpdCB0aGlzLndhaXRGb3JHdWlsZHMoKTtcclxuICAgICAgICBSZWFjdENvbXBvbmVudHMuaW5pdGlhbGl6ZSgpO1xyXG4gICAgICAgIENvbXBvbmVudFBhdGNoZXIuaW5pdGlhbGl6ZSgpO1xyXG4gICAgICAgIGZvciAoY29uc3QgbW9kdWxlIGluIEJ1aWx0aW5zKSBCdWlsdGluc1ttb2R1bGVdLmluaXRpYWxpemUoKTtcclxuXHJcbiAgICAgICAgYXdhaXQgZGVwZW5kZW5jeVByb21pc2U7XHJcbiAgICAgICAgTG9nZ2VyLmxvZyhcIlN0YXJ0dXBcIiwgXCJMb2FkaW5nIFBsdWdpbnNcIik7XHJcbiAgICAgICAgY29uc3QgcGx1Z2luRXJyb3JzID0gUGx1Z2luTWFuYWdlci5pbml0aWFsaXplKCk7XHJcblxyXG4gICAgICAgIExvZ2dlci5sb2coXCJTdGFydHVwXCIsIFwiTG9hZGluZyBUaGVtZXNcIik7XHJcbiAgICAgICAgY29uc3QgdGhlbWVFcnJvcnMgPSBUaGVtZU1hbmFnZXIuaW5pdGlhbGl6ZSgpO1xyXG5cclxuICAgICAgICBMb2dnZXIubG9nKFwiU3RhcnR1cFwiLCBcIlJlbW92aW5nIExvYWRpbmcgSWNvblwiKTtcclxuICAgICAgICBMb2FkaW5nSWNvbi5oaWRlKCk7XHJcblxyXG4gICAgICAgIC8vIFNob3cgbG9hZGluZyBlcnJvcnNcclxuICAgICAgICBMb2dnZXIubG9nKFwiU3RhcnR1cFwiLCBcIkNvbGxlY3RpbmcgU3RhcnR1cCBFcnJvcnNcIik7XHJcbiAgICAgICAgTW9kYWxzLnNob3dBZGRvbkVycm9ycyh7cGx1Z2luczogcGx1Z2luRXJyb3JzLCB0aGVtZXM6IHRoZW1lRXJyb3JzfSk7XHJcblxyXG4gICAgICAgIGNvbnN0IHByZXZpb3VzVmVyc2lvbiA9IERhdGFTdG9yZS5nZXRCRERhdGEoXCJ2ZXJzaW9uXCIpO1xyXG4gICAgICAgIGlmIChDb25maWcuYmJkVmVyc2lvbiA+IHByZXZpb3VzVmVyc2lvbikge1xyXG4gICAgICAgICAgICBNb2RhbHMuc2hvd0NoYW5nZWxvZ01vZGFsKENoYW5nZWxvZyk7XHJcbiAgICAgICAgICAgIERhdGFTdG9yZS5zZXRCRERhdGEoXCJ2ZXJzaW9uXCIsIENvbmZpZy5iYmRWZXJzaW9uKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgd2FpdEZvckd1aWxkcygpIHtcclxuICAgICAgICBsZXQgdGltZXNDaGVja2VkID0gMDtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNoZWNrRm9yR3VpbGRzID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgdGltZXNDaGVja2VkKys7XHJcbiAgICAgICAgICAgICAgICBpZiAoZG9jdW1lbnQucmVhZHlTdGF0ZSAhPSBcImNvbXBsZXRlXCIpIHNldFRpbWVvdXQoY2hlY2tGb3JHdWlsZHMsIDEwMCk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB3cmFwcGVyID0gR3VpbGRDbGFzc2VzLndyYXBwZXIuc3BsaXQoXCIgXCIpWzBdO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZ3VpbGQgPSBHdWlsZENsYXNzZXMubGlzdEl0ZW0uc3BsaXQoXCIgXCIpWzBdO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgYmxvYiA9IEd1aWxkQ2xhc3Nlcy5ibG9iQ29udGFpbmVyLnNwbGl0KFwiIFwiKVswXTtcclxuICAgICAgICAgICAgICAgIGlmIChkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGAuJHt3cmFwcGVyfSAuJHtndWlsZH0gLiR7YmxvYn1gKS5sZW5ndGggPiAwKSByZXR1cm4gcmVzb2x2ZShDb25maWcuZGVmZXJMb2FkZWQgPSB0cnVlKTtcclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRpbWVzQ2hlY2tlZCA+PSA1MCkgcmV0dXJuIHJlc29sdmUoQ29uZmlnLmRlZmVyTG9hZGVkID0gdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGNoZWNrRm9yR3VpbGRzLCAxMDApO1xyXG4gICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgY2hlY2tGb3JHdWlsZHMoKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBsb2FkRGVwZW5kZW5jaWVzKCkge1xyXG4gICAgICAgIGZvciAoY29uc3QgZGF0YSBvZiB0aGlzLmRlcGVuZGVuY2llcykge1xyXG4gICAgICAgICAgICBjb25zdCB1cmwgPSBVdGlsaXRpZXMuZm9ybWF0U3RyaW5nKChDb25maWcubG9jYWwgJiYgZGF0YS5sb2NhbCAhPSBudWxsKSA/IGRhdGEubG9jYWwgOiBkYXRhLnVybCwge3JlcG86IENvbmZpZy5yZXBvLCBoYXNoOiBDb25maWcuaGFzaCwgbG9jYWxTZXJ2ZXI6IENvbmZpZy5sb2NhbFNlcnZlcn0pO1xyXG4gICAgICAgICAgICBMb2dnZXIubG9nKGBTdGFydHVwYCwgYExvYWRpbmcgUmVzb3VyY2UgKCR7dXJsfSlgKTtcclxuXHRcdFx0Y29uc3QgaW5qZWN0b3IgPSAoZGF0YS50eXBlID09IFwic2NyaXB0XCIgPyBET01NYW5hZ2VyLmluamVjdFNjcmlwdCA6IERPTU1hbmFnZXIubGlua1N0eWxlKS5iaW5kKERPTU1hbmFnZXIpO1xyXG5cdFx0XHR0cnkge1xyXG5cdFx0XHRcdGF3YWl0IGluamVjdG9yKGRhdGEubmFtZSwgdXJsKTtcclxuXHRcdFx0fVxyXG5cdFx0XHRjYXRjaCAoZXJyKSB7XHJcblx0XHRcdFx0Y29uc3QgYmFja3VwID0gVXRpbGl0aWVzLmZvcm1hdFN0cmluZyhkYXRhLmJhY2t1cCwge21pbmlmaWVkOiBDb25maWcubWluaWZpZWQgPyBcIi5taW5cIiA6IFwiXCJ9KTtcclxuXHRcdFx0XHRMb2dnZXIuc3RhY2t0cmFjZShgU3RhcnR1cGAsIGBDb3VsZCBub3QgbG9hZCAke3VybH0uIFVzaW5nIGJhY2t1cCAke2JhY2t1cH1gLCBlcnIpO1xyXG5cdFx0XHRcdHRyeSB7XHJcblx0XHRcdFx0XHRhd2FpdCBpbmplY3RvcihkYXRhLm5hbWUsIGJhY2t1cCk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgTG9nZ2VyLnN0YWNrdHJhY2UoYFN0YXJ0dXBgLCBgQ291bGQgbm90IGxvYWQgJHt1cmx9LiBVc2luZyBiYWNrdXAgJHtiYWNrdXB9YCwgZXJyKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5uYW1lID09PSBcImpxdWVyeVwiKSAgTW9kYWxzLmFsZXJ0KFN0cmluZ3MuU3RhcnR1cC5qcXVlcnlGYWlsZWQsIFN0cmluZ3MuU3RhcnR1cC5qcXVlcnlGYWlsZWREZXRhaWxzKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgdXBkYXRlSW5qZWN0b3IoKSB7XHJcbiAgICAgICAgY29uc3QgaW5qZWN0aW9uUGF0aCA9IERhdGFTdG9yZS5pbmplY3Rpb25QYXRoO1xyXG4gICAgICAgIGlmICghaW5qZWN0aW9uUGF0aCkgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgICAgICBjb25zdCBmcyA9IHJlcXVpcmUoXCJmc1wiKTtcclxuICAgICAgICBjb25zdCBwYXRoID0gcmVxdWlyZShcInBhdGhcIik7XHJcbiAgICAgICAgY29uc3Qgcm1yZiA9IHJlcXVpcmUoXCJyaW1yYWZcIik7XHJcbiAgICAgICAgY29uc3QgeWF1emwgPSByZXF1aXJlKFwieWF1emxcIik7XHJcbiAgICAgICAgY29uc3QgbWtkaXJwID0gcmVxdWlyZShcIm1rZGlycFwiKTtcclxuICAgICAgICBjb25zdCByZXF1ZXN0ID0gcmVxdWlyZShcInJlcXVlc3RcIik7XHJcblxyXG4gICAgICAgIGNvbnN0IHBhcmVudFBhdGggPSBwYXRoLnJlc29sdmUoaW5qZWN0aW9uUGF0aCwgXCIuLlwiKTtcclxuICAgICAgICBjb25zdCBmb2xkZXJOYW1lID0gcGF0aC5iYXNlbmFtZShpbmplY3Rpb25QYXRoKTtcclxuICAgICAgICBjb25zdCB6aXBMaW5rID0gXCJodHRwczovL2dpdGh1Yi5jb20vcmF1ZW56aS9CZXR0ZXJEaXNjb3JkQXBwL2FyY2hpdmUvaW5qZWN0b3IuemlwXCI7XHJcbiAgICAgICAgY29uc3Qgc2F2ZWRaaXAgPSBwYXRoLnJlc29sdmUocGFyZW50UGF0aCwgXCJpbmplY3Rvci56aXBcIik7XHJcbiAgICAgICAgY29uc3QgZXh0cmFjdGVkRm9sZGVyID0gcGF0aC5yZXNvbHZlKHBhcmVudFBhdGgsIFwiQmV0dGVyRGlzY29yZEFwcC1pbmplY3RvclwiKTtcclxuXHJcbiAgICAgICAgLy8gRG93bmxvYWQgdGhlIGluamVjdG9yIHppcCBmaWxlXHJcbiAgICAgICAgTG9nZ2VyLmxvZyhcIkluamVjdG9yVXBkYXRlXCIsIFwiRG93bmxvYWRpbmcgXCIgKyB6aXBMaW5rKTtcclxuICAgICAgICBsZXQgc3VjY2VzcyA9IGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xyXG4gICAgICAgICAgICByZXF1ZXN0LmdldCh7dXJsOiB6aXBMaW5rLCBlbmNvZGluZzogbnVsbH0sIGFzeW5jIChlcnJvciwgcmVzcG9uc2UsIGJvZHkpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChlcnJvciB8fCByZXNwb25zZS5zdGF0dXNDb2RlICE9PSAyMDApIHJldHVybiByZXNvbHZlKGZhbHNlKTtcclxuICAgICAgICAgICAgICAgIC8vIFNhdmUgYSBiYWNrdXAgaW4gY2FzZSBzb21lb25lIGhhcyB0aGVpciBvd24gY29weVxyXG4gICAgICAgICAgICAgICAgY29uc3QgYWxyZWFkeUV4aXN0cyA9IGF3YWl0IG5ldyBQcm9taXNlKHJlcyA9PiBmcy5leGlzdHMoc2F2ZWRaaXAsIHJlcykpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGFscmVhZHlFeGlzdHMpIGF3YWl0IG5ldyBQcm9taXNlKHJlcyA9PiBmcy5yZW5hbWUoc2F2ZWRaaXAsIGAke3NhdmVkWmlwfS5iYWske01hdGgucm91bmQocGVyZm9ybWFuY2Uubm93KCkpfWAsIHJlcykpO1xyXG5cclxuICAgICAgICAgICAgICAgIExvZ2dlci5sb2coXCJJbmplY3RvclVwZGF0ZVwiLCBcIldyaXRpbmcgXCIgKyBzYXZlZFppcCk7XHJcbiAgICAgICAgICAgICAgICBmcy53cml0ZUZpbGUoc2F2ZWRaaXAsIGJvZHksIGVyciA9PiByZXNvbHZlKCFlcnIpKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaWYgKCFzdWNjZXNzKSByZXR1cm4gc3VjY2VzcztcclxuXHJcbiAgICAgICAgLy8gQ2hlY2sgYW5kIGRlbGV0ZSByZW5hbWUgZXh0cmFjdGlvblxyXG4gICAgICAgIGNvbnN0IGFscmVhZHlFeGlzdHMgPSBhd2FpdCBuZXcgUHJvbWlzZShyZXMgPT4gZnMuZXhpc3RzKGV4dHJhY3RlZEZvbGRlciwgcmVzKSk7XHJcbiAgICAgICAgaWYgKGFscmVhZHlFeGlzdHMpIGF3YWl0IG5ldyBQcm9taXNlKHJlcyA9PiBmcy5yZW5hbWUoZXh0cmFjdGVkRm9sZGVyLCBgJHtleHRyYWN0ZWRGb2xkZXJ9LmJhayR7TWF0aC5yb3VuZChwZXJmb3JtYW5jZS5ub3coKSl9YCwgcmVzKSk7XHJcblxyXG4gICAgICAgIC8vIFVuemlwIHRoZSBkb3dubG9hZGVkIHppcCBmaWxlXHJcbiAgICAgICAgY29uc3QgemlwZmlsZSA9IGF3YWl0IG5ldyBQcm9taXNlKHIgPT4geWF1emwub3BlbihzYXZlZFppcCwge2xhenlFbnRyaWVzOiB0cnVlfSwgKGVyciwgemlwKSA9PiByKHppcCkpKTtcclxuICAgICAgICB6aXBmaWxlLm9uKFwiZW50cnlcIiwgZnVuY3Rpb24gKGVudHJ5KSB7XHJcbiAgICAgICAgICAgIC8vIFNraXAgZGlyZWN0b3JpZXMsIHRoZXkgYXJlIGhhbmRsZWQgd2l0aCBta2RpcnBcclxuICAgICAgICAgICAgaWYgKGVudHJ5LmZpbGVOYW1lLmVuZHNXaXRoKFwiL1wiKSkgcmV0dXJuIHppcGZpbGUucmVhZEVudHJ5KCk7XHJcblxyXG4gICAgICAgICAgICBMb2dnZXIubG9nKFwiSW5qZWN0b3JVcGRhdGVcIiwgXCJFeHRyYWN0aW5nIFwiICsgZW50cnkuZmlsZU5hbWUpO1xyXG4gICAgICAgICAgICAvLyBNYWtlIGFueSBuZWVkZWQgcGFyZW50IGRpcmVjdG9yaWVzXHJcbiAgICAgICAgICAgIGNvbnN0IGZ1bGxQYXRoID0gcGF0aC5yZXNvbHZlKHBhcmVudFBhdGgsIGVudHJ5LmZpbGVOYW1lKTtcclxuICAgICAgICAgICAgbWtkaXJwLnN5bmMocGF0aC5kaXJuYW1lKGZ1bGxQYXRoKSk7XHJcbiAgICAgICAgICAgIHppcGZpbGUub3BlblJlYWRTdHJlYW0oZW50cnksIGZ1bmN0aW9uIChlcnIsIHJlYWRTdHJlYW0pIHtcclxuICAgICAgICAgICAgICAgIGlmIChlcnIpIHJldHVybiBzdWNjZXNzID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICByZWFkU3RyZWFtLm9uKFwiZW5kXCIsIGZ1bmN0aW9uICgpIHsgemlwZmlsZS5yZWFkRW50cnkoKTsgfSk7IC8vIEdvIHRvIG5leHQgZmlsZSBhZnRlciB0aGlzXHJcbiAgICAgICAgICAgICAgICByZWFkU3RyZWFtLnBpcGUoZnMuY3JlYXRlV3JpdGVTdHJlYW0oZnVsbFBhdGgpKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgemlwZmlsZS5yZWFkRW50cnkoKTsgLy8gU3RhcnQgcmVhZGluZ1xyXG5cclxuXHJcbiAgICAgICAgLy8gV2FpdCBmb3IgdGhlIGZpbmFsIGZpbGUgdG8gZmluaXNoXHJcbiAgICAgICAgYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiB6aXBmaWxlLm9uY2UoXCJlbmRcIiwgcmVzb2x2ZSkpO1xyXG5cclxuICAgICAgICAvLyBTYXZlIGEgYmFja3VwIGluIGNhc2Ugc29tZXRoaW5nIGdvZXMgd3JvbmcgZHVyaW5nIGZpbmFsIHN0ZXBcclxuICAgICAgICBjb25zdCBiYWNrdXBGb2xkZXIgPSBwYXRoLnJlc29sdmUocGFyZW50UGF0aCwgYCR7Zm9sZGVyTmFtZX0uYmFrJHtNYXRoLnJvdW5kKHBlcmZvcm1hbmNlLm5vdygpKX1gKTtcclxuICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IGZzLnJlbmFtZShpbmplY3Rpb25QYXRoLCBiYWNrdXBGb2xkZXIsIHJlc29sdmUpKTtcclxuXHJcbiAgICAgICAgLy8gUmVuYW1lIHRoZSBleHRyYWN0ZWQgZm9sZGVyIHRvIHdoYXQgaXQgc2hvdWxkIGJlXHJcbiAgICAgICAgTG9nZ2VyLmxvZyhcIkluamVjdG9yVXBkYXRlXCIsIGBSZW5hbWluZyAke3BhdGguYmFzZW5hbWUoZXh0cmFjdGVkRm9sZGVyKX0gdG8gJHtmb2xkZXJOYW1lfWApO1xyXG4gICAgICAgIHN1Y2Nlc3MgPSBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IGZzLnJlbmFtZShleHRyYWN0ZWRGb2xkZXIsIGluamVjdGlvblBhdGgsIGVyciA9PiByZXNvbHZlKCFlcnIpKSk7XHJcbiAgICAgICAgaWYgKCFzdWNjZXNzKSB7XHJcbiAgICAgICAgICAgIExvZ2dlci5lcnIoXCJJbmplY3RvclVwZGF0ZVwiLCBcIkZhaWxlZCB0byByZW5hbWUgdGhlIGZpbmFsIGRpcmVjdG9yeVwiKTtcclxuICAgICAgICAgICAgcmV0dXJuIHN1Y2Nlc3M7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBJZiByZW5hbWUgaGFkIGlzc3VlcywgZGVsZXRlIHdoYXQgd2UgdHJpZWQgdG8gcmVuYW1lIGFuZCByZXN0b3JlIGJhY2t1cFxyXG4gICAgICAgIGlmICghc3VjY2Vzcykge1xyXG4gICAgICAgICAgICBMb2dnZXIuZXJyKFwiSW5qZWN0b3JVcGRhdGVcIiwgXCJTb21ldGhpbmcgd2VudCB3cm9uZy4uLiByZXN0b3JpbmcgYmFja3Vwcy5cIik7XHJcbiAgICAgICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gcm1yZihleHRyYWN0ZWRGb2xkZXIsIHJlc29sdmUpKTtcclxuICAgICAgICAgICAgYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiBmcy5yZW5hbWUoYmFja3VwRm9sZGVyLCBpbmplY3Rpb25QYXRoLCByZXNvbHZlKSk7XHJcbiAgICAgICAgICAgIHJldHVybiBzdWNjZXNzO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gSWYgd2UndmUgZ290dGVuIHRvIHRoaXMgcG9pbnQsIGV2ZXJ5dGhpbmcgc2hvdWxkIGhhdmUgZ29uZSBzbW9vdGhseS5cclxuICAgICAgICAvLyBDbGVhbnVwIHRoZSBiYWNrdXAgZm9sZGVyIHRoZW4gcmVtb3ZlIHRoZSB6aXBcclxuICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHJtcmYoYmFja3VwRm9sZGVyLCByZXNvbHZlKSk7XHJcbiAgICAgICAgYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiBmcy51bmxpbmsoc2F2ZWRaaXAsIHJlc29sdmUpKTtcclxuXHJcbiAgICAgICAgTG9nZ2VyLmxvZyhcIkluamVjdG9yVXBkYXRlXCIsIFwiSW5qZWN0b3IgVXBkYXRlZCFcIik7XHJcbiAgICAgICAgcmV0dXJuIHN1Y2Nlc3M7XHJcbiAgICB9XHJcbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/core.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Core; });\n/* harmony import */ var _localemanager__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./localemanager */ \"./src/modules/localemanager.js\");\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./logger */ \"./src/modules/logger.js\");\n/* harmony import */ var data__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! data */ \"./src/data/data.js\");\n/* harmony import */ var _dommanager__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./dommanager */ \"./src/modules/dommanager.js\");\n/* harmony import */ var _pluginmanager__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./pluginmanager */ \"./src/modules/pluginmanager.js\");\n/* harmony import */ var _thememanager__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./thememanager */ \"./src/modules/thememanager.js\");\n/* harmony import */ var _settingsmanager__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./settingsmanager */ \"./src/modules/settingsmanager.js\");\n/* harmony import */ var builtins__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! builtins */ \"./src/builtins/builtins.js\");\n/* harmony import */ var _ui_modals__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../ui/modals */ \"./src/ui/modals.js\");\n/* harmony import */ var _reactcomponents__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./reactcomponents */ \"./src/modules/reactcomponents.js\");\n/* harmony import */ var _datastore__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./datastore */ \"./src/modules/datastore.js\");\n/* harmony import */ var _discordmodules__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./discordmodules */ \"./src/modules/discordmodules.js\");\n/* harmony import */ var _componentpatcher__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./componentpatcher */ \"./src/modules/componentpatcher.js\");\n/* harmony import */ var _strings__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./strings */ \"./src/modules/strings.js\");\n/* harmony import */ var _loadingicon__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../loadingicon */ \"./src/loadingicon.js\");\n/* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./utilities */ \"./src/modules/utilities.js\");\n\n\n // import EmoteModule from \"./emotes\";\n// import QuickEmoteMenu from \"../builtins/emotemenu\";\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst {\n ipcRenderer\n} = __webpack_require__(/*! electron */ \"electron\");\n\nconst GuildClasses = _discordmodules__WEBPACK_IMPORTED_MODULE_11__[\"default\"].GuildClasses;\nclass Core {\n constructor() {\n ipcRenderer.invoke(\"bd-config\", \"get\").then(injectorConfig => {\n if (this.hasStarted) return;\n Object.assign(data__WEBPACK_IMPORTED_MODULE_2__[\"Config\"], injectorConfig);\n this.init();\n });\n }\n\n get dependencies() {\n return [{\n name: \"jquery\",\n type: \"script\",\n url: \"//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js\",\n backup: \"//cdn.jsdelivr.net/gh/jquery/jquery@2.0.0/jquery.min.js\",\n local: null\n }, {\n name: \"bd-stylesheet\",\n type: \"style\",\n url: \"//cdn.staticaly.com/gh/{{repo}}/BetterDiscordApp/{{hash}}/dist/style.min.css\",\n backup: \"//rauenzi.github.io/BetterDiscordApp/dist/style.min.css\",\n local: \"{{localServer}}/BetterDiscordApp/dist/style.min.css\"\n }];\n }\n\n setConfig(config) {\n if (this.hasStarted) return;\n Object.assign(data__WEBPACK_IMPORTED_MODULE_2__[\"Config\"], config);\n }\n\n async init() {\n if (this.hasStarted) return;\n this.hasStarted = true; // Load dependencies asynchronously if they don't exist\n\n let dependencyPromise = new Promise(r => r());\n if (!window.$ || !window.jQuery) dependencyPromise = this.loadDependencies();\n _datastore__WEBPACK_IMPORTED_MODULE_10__[\"default\"].initialize();\n await _localemanager__WEBPACK_IMPORTED_MODULE_0__[\"default\"].initialize();\n if (data__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].version < data__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].minSupportedVersion) return _ui_modals__WEBPACK_IMPORTED_MODULE_8__[\"default\"].alert(_strings__WEBPACK_IMPORTED_MODULE_13__[\"default\"].Startup.notSupported, _strings__WEBPACK_IMPORTED_MODULE_13__[\"default\"].Startup.versionMismatch.format({\n injector: data__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].version,\n remote: data__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].bbdVersion\n }));\n if (window.ED) return _ui_modals__WEBPACK_IMPORTED_MODULE_8__[\"default\"].alert(_strings__WEBPACK_IMPORTED_MODULE_13__[\"default\"].Startup.notSupported, _strings__WEBPACK_IMPORTED_MODULE_13__[\"default\"].Startup.incompatibleApp.format({\n app: \"EnhancedDiscord\"\n }));\n if (window.WebSocket && window.WebSocket.name && window.WebSocket.name.includes(\"Patched\")) return _ui_modals__WEBPACK_IMPORTED_MODULE_8__[\"default\"].alert(_strings__WEBPACK_IMPORTED_MODULE_13__[\"default\"].Startup.notSupported, _strings__WEBPACK_IMPORTED_MODULE_13__[\"default\"].Startup.incompatibleApp.format({\n app: \"Powercord\"\n }));\n const latestLocalVersion = data__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].updater ? data__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].updater.LatestVersion : data__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].latestVersion;\n\n if (latestLocalVersion > data__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].version) {\n _ui_modals__WEBPACK_IMPORTED_MODULE_8__[\"default\"].showConfirmationModal(_strings__WEBPACK_IMPORTED_MODULE_13__[\"default\"].Startup.updateAvailable, _strings__WEBPACK_IMPORTED_MODULE_13__[\"default\"].Startup.updateInfo.format({\n version: latestLocalVersion\n }), {\n confirmText: _strings__WEBPACK_IMPORTED_MODULE_13__[\"default\"].Startup.updateNow,\n cancelText: _strings__WEBPACK_IMPORTED_MODULE_13__[\"default\"].Startup.maybeLater,\n onConfirm: async () => {\n const onUpdateFailed = () => {\n _ui_modals__WEBPACK_IMPORTED_MODULE_8__[\"default\"].alert(_strings__WEBPACK_IMPORTED_MODULE_13__[\"default\"].Startup.updateFailed, _strings__WEBPACK_IMPORTED_MODULE_13__[\"default\"].Startup.manualUpdate);\n };\n\n try {\n const didUpdate = await this.updateInjector();\n if (!didUpdate) return onUpdateFailed();\n\n const app = __webpack_require__(/*! electron */ \"electron\").remote.app;\n\n app.relaunch();\n app.exit();\n } catch (err) {\n onUpdateFailed();\n }\n }\n });\n }\n\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].log(\"Startup\", \"Initializing Settings\");\n _settingsmanager__WEBPACK_IMPORTED_MODULE_6__[\"default\"].initialize(); // DOMManager.initialize();\n\n await this.waitForGuilds();\n _reactcomponents__WEBPACK_IMPORTED_MODULE_9__[\"default\"].initialize();\n _componentpatcher__WEBPACK_IMPORTED_MODULE_12__[\"default\"].initialize();\n\n for (const module in builtins__WEBPACK_IMPORTED_MODULE_7__) builtins__WEBPACK_IMPORTED_MODULE_7__[module].initialize();\n\n await dependencyPromise;\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].log(\"Startup\", \"Loading Plugins\");\n const pluginErrors = _pluginmanager__WEBPACK_IMPORTED_MODULE_4__[\"default\"].initialize();\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].log(\"Startup\", \"Loading Themes\");\n const themeErrors = _thememanager__WEBPACK_IMPORTED_MODULE_5__[\"default\"].initialize();\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].log(\"Startup\", \"Removing Loading Icon\");\n _loadingicon__WEBPACK_IMPORTED_MODULE_14__[\"default\"].hide(); // Show loading errors\n\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].log(\"Startup\", \"Collecting Startup Errors\");\n _ui_modals__WEBPACK_IMPORTED_MODULE_8__[\"default\"].showAddonErrors({\n plugins: pluginErrors,\n themes: themeErrors\n });\n const previousVersion = _datastore__WEBPACK_IMPORTED_MODULE_10__[\"default\"].getBDData(\"version\");\n\n if (data__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].bbdVersion > previousVersion) {\n _ui_modals__WEBPACK_IMPORTED_MODULE_8__[\"default\"].showChangelogModal(data__WEBPACK_IMPORTED_MODULE_2__[\"Changelog\"]);\n _datastore__WEBPACK_IMPORTED_MODULE_10__[\"default\"].setBDData(\"version\", data__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].bbdVersion);\n }\n }\n\n waitForGuilds() {\n let timesChecked = 0;\n return new Promise(resolve => {\n const checkForGuilds = function () {\n timesChecked++;\n if (document.readyState != \"complete\") setTimeout(checkForGuilds, 100);\n const wrapper = GuildClasses.wrapper.split(\" \")[0];\n const guild = GuildClasses.listItem.split(\" \")[0];\n const blob = GuildClasses.blobContainer.split(\" \")[0];\n if (document.querySelectorAll(`.${wrapper} .${guild} .${blob}`).length > 0) return resolve(data__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].deferLoaded = true);else if (timesChecked >= 50) return resolve(data__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].deferLoaded = true);\n setTimeout(checkForGuilds, 100);\n };\n\n checkForGuilds();\n });\n }\n\n async loadDependencies() {\n for (const data of this.dependencies) {\n const url = _utilities__WEBPACK_IMPORTED_MODULE_15__[\"default\"].formatString(data__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].local && data.local != null ? data.local : data.url, {\n repo: data__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].repo,\n hash: data__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].hash,\n localServer: data__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].localServer\n });\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].log(`Startup`, `Loading Resource (${url})`);\n const injector = (data.type == \"script\" ? _dommanager__WEBPACK_IMPORTED_MODULE_3__[\"default\"].injectScript : _dommanager__WEBPACK_IMPORTED_MODULE_3__[\"default\"].linkStyle).bind(_dommanager__WEBPACK_IMPORTED_MODULE_3__[\"default\"]);\n\n try {\n await injector(data.name, url);\n } catch (err) {\n const backup = _utilities__WEBPACK_IMPORTED_MODULE_15__[\"default\"].formatString(data.backup, {\n minified: data__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].minified ? \".min\" : \"\"\n });\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].stacktrace(`Startup`, `Could not load ${url}. Using backup ${backup}`, err);\n\n try {\n await injector(data.name, backup);\n } catch (e) {\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].stacktrace(`Startup`, `Could not load ${url}. Using backup ${backup}`, err);\n if (data.name === \"jquery\") _ui_modals__WEBPACK_IMPORTED_MODULE_8__[\"default\"].alert(_strings__WEBPACK_IMPORTED_MODULE_13__[\"default\"].Startup.jqueryFailed, _strings__WEBPACK_IMPORTED_MODULE_13__[\"default\"].Startup.jqueryFailedDetails);\n }\n }\n }\n }\n\n async updateInjector() {\n const injectionPath = _datastore__WEBPACK_IMPORTED_MODULE_10__[\"default\"].injectionPath;\n if (!injectionPath) return false;\n\n const fs = __webpack_require__(/*! fs */ \"fs\");\n\n const path = __webpack_require__(/*! path */ \"path\");\n\n const rmrf = __webpack_require__(/*! rimraf */ \"rimraf\");\n\n const yauzl = __webpack_require__(/*! yauzl */ \"yauzl\");\n\n const mkdirp = __webpack_require__(/*! mkdirp */ \"mkdirp\");\n\n const request = __webpack_require__(/*! request */ \"request\");\n\n const parentPath = path.resolve(injectionPath, \"..\");\n const folderName = path.basename(injectionPath);\n const zipLink = \"https://github.com/rauenzi/BetterDiscordApp/archive/injector.zip\";\n const savedZip = path.resolve(parentPath, \"injector.zip\");\n const extractedFolder = path.resolve(parentPath, \"BetterDiscordApp-injector\"); // Download the injector zip file\n\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].log(\"InjectorUpdate\", \"Downloading \" + zipLink);\n let success = await new Promise(resolve => {\n request.get({\n url: zipLink,\n encoding: null\n }, async (error, response, body) => {\n if (error || response.statusCode !== 200) return resolve(false); // Save a backup in case someone has their own copy\n\n const alreadyExists = await new Promise(res => fs.exists(savedZip, res));\n if (alreadyExists) await new Promise(res => fs.rename(savedZip, `${savedZip}.bak${Math.round(performance.now())}`, res));\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].log(\"InjectorUpdate\", \"Writing \" + savedZip);\n fs.writeFile(savedZip, body, err => resolve(!err));\n });\n });\n if (!success) return success; // Check and delete rename extraction\n\n const alreadyExists = await new Promise(res => fs.exists(extractedFolder, res));\n if (alreadyExists) await new Promise(res => fs.rename(extractedFolder, `${extractedFolder}.bak${Math.round(performance.now())}`, res)); // Unzip the downloaded zip file\n\n const zipfile = await new Promise(r => yauzl.open(savedZip, {\n lazyEntries: true\n }, (err, zip) => r(zip)));\n zipfile.on(\"entry\", function (entry) {\n // Skip directories, they are handled with mkdirp\n if (entry.fileName.endsWith(\"/\")) return zipfile.readEntry();\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].log(\"InjectorUpdate\", \"Extracting \" + entry.fileName); // Make any needed parent directories\n\n const fullPath = path.resolve(parentPath, entry.fileName);\n mkdirp.sync(path.dirname(fullPath));\n zipfile.openReadStream(entry, function (err, readStream) {\n if (err) return success = false;\n readStream.on(\"end\", function () {\n zipfile.readEntry();\n }); // Go to next file after this\n\n readStream.pipe(fs.createWriteStream(fullPath));\n });\n });\n zipfile.readEntry(); // Start reading\n // Wait for the final file to finish\n\n await new Promise(resolve => zipfile.once(\"end\", resolve)); // Save a backup in case something goes wrong during final step\n\n const backupFolder = path.resolve(parentPath, `${folderName}.bak${Math.round(performance.now())}`);\n await new Promise(resolve => fs.rename(injectionPath, backupFolder, resolve)); // Rename the extracted folder to what it should be\n\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].log(\"InjectorUpdate\", `Renaming ${path.basename(extractedFolder)} to ${folderName}`);\n success = await new Promise(resolve => fs.rename(extractedFolder, injectionPath, err => resolve(!err)));\n\n if (!success) {\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].err(\"InjectorUpdate\", \"Failed to rename the final directory\");\n return success;\n } // If rename had issues, delete what we tried to rename and restore backup\n\n\n if (!success) {\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].err(\"InjectorUpdate\", \"Something went wrong... restoring backups.\");\n await new Promise(resolve => rmrf(extractedFolder, resolve));\n await new Promise(resolve => fs.rename(backupFolder, injectionPath, resolve));\n return success;\n } // If we've gotten to this point, everything should have gone smoothly.\n // Cleanup the backup folder then remove the zip\n\n\n await new Promise(resolve => rmrf(backupFolder, resolve));\n await new Promise(resolve => fs.unlink(savedZip, resolve));\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].log(\"InjectorUpdate\", \"Injector Updated!\");\n return success;\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9jb3JlLmpzP2I2ZGUiXSwibmFtZXMiOlsiaXBjUmVuZGVyZXIiLCJyZXF1aXJlIiwiR3VpbGRDbGFzc2VzIiwiRGlzY29yZE1vZHVsZXMiLCJDb3JlIiwiY29uc3RydWN0b3IiLCJpbnZva2UiLCJ0aGVuIiwiaW5qZWN0b3JDb25maWciLCJoYXNTdGFydGVkIiwiT2JqZWN0IiwiYXNzaWduIiwiQ29uZmlnIiwiaW5pdCIsImRlcGVuZGVuY2llcyIsIm5hbWUiLCJ0eXBlIiwidXJsIiwiYmFja3VwIiwibG9jYWwiLCJzZXRDb25maWciLCJjb25maWciLCJkZXBlbmRlbmN5UHJvbWlzZSIsIlByb21pc2UiLCJyIiwid2luZG93IiwiJCIsImpRdWVyeSIsImxvYWREZXBlbmRlbmNpZXMiLCJEYXRhU3RvcmUiLCJpbml0aWFsaXplIiwiTG9jYWxlTWFuYWdlciIsInZlcnNpb24iLCJtaW5TdXBwb3J0ZWRWZXJzaW9uIiwiTW9kYWxzIiwiYWxlcnQiLCJTdHJpbmdzIiwiU3RhcnR1cCIsIm5vdFN1cHBvcnRlZCIsInZlcnNpb25NaXNtYXRjaCIsImZvcm1hdCIsImluamVjdG9yIiwicmVtb3RlIiwiYmJkVmVyc2lvbiIsIkVEIiwiaW5jb21wYXRpYmxlQXBwIiwiYXBwIiwiV2ViU29ja2V0IiwiaW5jbHVkZXMiLCJsYXRlc3RMb2NhbFZlcnNpb24iLCJ1cGRhdGVyIiwiTGF0ZXN0VmVyc2lvbiIsImxhdGVzdFZlcnNpb24iLCJzaG93Q29uZmlybWF0aW9uTW9kYWwiLCJ1cGRhdGVBdmFpbGFibGUiLCJ1cGRhdGVJbmZvIiwiY29uZmlybVRleHQiLCJ1cGRhdGVOb3ciLCJjYW5jZWxUZXh0IiwibWF5YmVMYXRlciIsIm9uQ29uZmlybSIsIm9uVXBkYXRlRmFpbGVkIiwidXBkYXRlRmFpbGVkIiwibWFudWFsVXBkYXRlIiwiZGlkVXBkYXRlIiwidXBkYXRlSW5qZWN0b3IiLCJyZWxhdW5jaCIsImV4aXQiLCJlcnIiLCJMb2dnZXIiLCJsb2ciLCJTZXR0aW5ncyIsIndhaXRGb3JHdWlsZHMiLCJSZWFjdENvbXBvbmVudHMiLCJDb21wb25lbnRQYXRjaGVyIiwibW9kdWxlIiwiQnVpbHRpbnMiLCJwbHVnaW5FcnJvcnMiLCJQbHVnaW5NYW5hZ2VyIiwidGhlbWVFcnJvcnMiLCJUaGVtZU1hbmFnZXIiLCJMb2FkaW5nSWNvbiIsImhpZGUiLCJzaG93QWRkb25FcnJvcnMiLCJwbHVnaW5zIiwidGhlbWVzIiwicHJldmlvdXNWZXJzaW9uIiwiZ2V0QkREYXRhIiwic2hvd0NoYW5nZWxvZ01vZGFsIiwiQ2hhbmdlbG9nIiwic2V0QkREYXRhIiwidGltZXNDaGVja2VkIiwicmVzb2x2ZSIsImNoZWNrRm9yR3VpbGRzIiwiZG9jdW1lbnQiLCJyZWFkeVN0YXRlIiwic2V0VGltZW91dCIsIndyYXBwZXIiLCJzcGxpdCIsImd1aWxkIiwibGlzdEl0ZW0iLCJibG9iIiwiYmxvYkNvbnRhaW5lciIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJsZW5ndGgiLCJkZWZlckxvYWRlZCIsImRhdGEiLCJVdGlsaXRpZXMiLCJmb3JtYXRTdHJpbmciLCJyZXBvIiwiaGFzaCIsImxvY2FsU2VydmVyIiwiRE9NTWFuYWdlciIsImluamVjdFNjcmlwdCIsImxpbmtTdHlsZSIsImJpbmQiLCJtaW5pZmllZCIsInN0YWNrdHJhY2UiLCJlIiwianF1ZXJ5RmFpbGVkIiwianF1ZXJ5RmFpbGVkRGV0YWlscyIsImluamVjdGlvblBhdGgiLCJmcyIsInBhdGgiLCJybXJmIiwieWF1emwiLCJta2RpcnAiLCJyZXF1ZXN0IiwicGFyZW50UGF0aCIsImZvbGRlck5hbWUiLCJiYXNlbmFtZSIsInppcExpbmsiLCJzYXZlZFppcCIsImV4dHJhY3RlZEZvbGRlciIsInN1Y2Nlc3MiLCJnZXQiLCJlbmNvZGluZyIsImVycm9yIiwicmVzcG9uc2UiLCJib2R5Iiwic3RhdHVzQ29kZSIsImFscmVhZHlFeGlzdHMiLCJyZXMiLCJleGlzdHMiLCJyZW5hbWUiLCJNYXRoIiwicm91bmQiLCJwZXJmb3JtYW5jZSIsIm5vdyIsIndyaXRlRmlsZSIsInppcGZpbGUiLCJvcGVuIiwibGF6eUVudHJpZXMiLCJ6aXAiLCJvbiIsImVudHJ5IiwiZmlsZU5hbWUiLCJlbmRzV2l0aCIsInJlYWRFbnRyeSIsImZ1bGxQYXRoIiwic3luYyIsImRpcm5hbWUiLCJvcGVuUmVhZFN0cmVhbSIsInJlYWRTdHJlYW0iLCJwaXBlIiwiY3JlYXRlV3JpdGVTdHJlYW0iLCJvbmNlIiwiYmFja3VwRm9sZGVyIiwidW5saW5rIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0NBRUE7QUFDQTs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxNQUFNO0FBQUNBO0FBQUQsSUFBZ0JDLG1CQUFPLENBQUMsMEJBQUQsQ0FBN0I7O0FBQ0EsTUFBTUMsWUFBWSxHQUFHQyx3REFBYyxDQUFDRCxZQUFwQztBQUVlLE1BQU1FLElBQU4sQ0FBVztBQUN0QkMsYUFBVyxHQUFHO0FBQ1ZMLGVBQVcsQ0FBQ00sTUFBWixDQUFtQixXQUFuQixFQUFnQyxLQUFoQyxFQUF1Q0MsSUFBdkMsQ0FBNENDLGNBQWMsSUFBSTtBQUMxRCxVQUFJLEtBQUtDLFVBQVQsRUFBcUI7QUFDckJDLFlBQU0sQ0FBQ0MsTUFBUCxDQUFjQywyQ0FBZCxFQUFzQkosY0FBdEI7QUFDQSxXQUFLSyxJQUFMO0FBQ0gsS0FKRDtBQUtIOztBQUVELE1BQUlDLFlBQUosR0FBbUI7QUFDZixXQUFPLENBQ0g7QUFDSUMsVUFBSSxFQUFFLFFBRFY7QUFFSUMsVUFBSSxFQUFFLFFBRlY7QUFHSUMsU0FBRyxFQUFFLDREQUhUO0FBSUlDLFlBQU0sRUFBRSx5REFKWjtBQUtJQyxXQUFLLEVBQUU7QUFMWCxLQURHLEVBUUg7QUFDSUos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QUFOO0FBQ0EsVUFBTSxJQUFJckUsT0FBSixDQUFZcUUsT0FBTyxJQUFJOEIsRUFBRSxDQUFDOEMsTUFBSCxDQUFVcEMsUUFBVixFQUFvQnhDLE9BQXBCLENBQXZCLENBQU47QUFFQXZCLG1EQUFNLENBQUNDLEdBQVAsQ0FBVyxnQkFBWCxFQUE2QixtQkFBN0I7QUFDQSxXQUFPZ0UsT0FBUDtBQUNIOztBQWpPcUIiLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jb3JlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExvY2FsZU1hbmFnZXIgZnJvbSBcIi4vbG9jYWxlbWFuYWdlclwiO1xyXG5cclxuaW1wb3J0IExvZ2dlciBmcm9tIFwiLi9sb2dnZXJcIjtcclxuaW1wb3J0IHtDb25maWcsIENoYW5nZWxvZ30gZnJvbSBcImRhdGFcIjtcclxuLy8gaW1wb3J0IEVtb3RlTW9kdWxlIGZyb20gXCIuL2Vtb3Rlc1wiO1xyXG4vLyBpbXBvcnQgUXVpY2tFbW90ZU1lbnUgZnJvbSBcIi4uL2J1aWx0aW5zL2Vtb3RlbWVudVwiO1xyXG5pbXBvcnQgRE9NTWFuYWdlciBmcm9tIFwiLi9kb21tYW5hZ2VyXCI7XHJcbmltcG9ydCBQbHVnaW5NYW5hZ2VyIGZyb20gXCIuL3BsdWdpbm1hbmFnZXJcIjtcclxuaW1wb3J0IFRoZW1lTWFuYWdlciBmcm9tIFwiLi90aGVtZW1hbmFnZXJcIjtcclxuaW1wb3J0IFNldHRpbmdzIGZyb20gXCIuL3NldHRpbmdzbWFuYWdlclwiO1xyXG5pbXBvcnQgKiBhcyBCdWlsdGlucyBmcm9tIFwiYnVpbHRpbnNcIjtcclxuaW1wb3J0IE1vZGFscyBmcm9tIFwiLi4vdWkvbW9kYWxzXCI7XHJcbmltcG9ydCBSZWFjdENvbXBvbmVudHMgZnJvbSBcIi4vcmVhY3Rjb21wb25lbnRzXCI7XHJcbmltcG9ydCBEYXRhU3RvcmUgZnJvbSBcIi4vZGF0YXN0b3JlXCI7XHJcbmltcG9ydCBEaXNjb3JkTW9kdWxlcyBmcm9tIFwiLi9kaXNjb3JkbW9kdWxlc1wiO1xyXG5pbXBvcnQgQ29tcG9uZW50UGF0Y2hlciBmcm9tIFwiLi9jb21wb25lbnRwYXRjaGVyXCI7XHJcbmltcG9ydCBTdHJpbmdzIGZyb20gXCIuL3N0cmluZ3NcIjtcclxuaW1wb3J0IExvYWRpbmdJY29uIGZyb20gXCIuLi9sb2FkaW5naWNvblwiO1xyXG5pbXBvcnQgVXRpbGl0aWVzIGZyb20gXCIuL3V0aWxpdGllc1wiO1xyXG5cclxuY29uc3Qge2lwY1JlbmRlcmVyfSA9IHJlcXVpcmUoXCJlbGVjdHJvblwiKTtcclxuY29uc3QgR3VpbGRDbGFzc2VzID0gRGlzY29yZE1vZHVsZXMuR3VpbGRDbGFzc2VzO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29yZSB7XHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICBpcGNSZW5kZXJlci5pbnZva2UoXCJiZC1jb25maWdcIiwgXCJnZXRcIikudGhlbihpbmplY3RvckNvbmZpZyA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmhhc1N0YXJ0ZWQpIHJldHVybjtcclxuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihDb25maWcsIGluamVjdG9yQ29uZmlnKTtcclxuICAgICAgICAgICAgdGhpcy5pbml0KCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGRlcGVuZGVuY2llcygpIHtcclxuICAgICAgICByZXR1cm4gW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBuYW1lOiBcImpxdWVyeVwiLFxyXG4gICAgICAgICAgICAgICAgdHlwZTogXCJzY3JpcHRcIixcclxuICAgICAgICAgICAgICAgIHVybDogXCIvL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8yLjAuMC9qcXVlcnkubWluLmpzXCIsXHJcbiAgICAgICAgICAgICAgICBiYWNrdXA6IFwiLy9jZG4uanNkZWxpdnIubmV0L2doL2pxdWVyeS9qcXVlcnlAMi4wLjAvanF1ZXJ5Lm1pbi5qc1wiLFxyXG4gICAgICAgICAgICAgICAgbG9jYWw6IG51bGxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgbmFtZTogXCJiZC1zdHlsZXNoZWV0XCIsXHJcbiAgICAgICAgICAgICAgICB0eXBlOiBcInN0eWxlXCIsXHJcbiAgICAgICAgICAgICAgICB1cmw6IFwiLy9jZG4uc3RhdGljYWx5LmNvbS9naC97e3JlcG99fS9CZXR0ZXJEaXNjb3JkQXBwL3t7aGFzaH19L2Rpc3Qvc3R5bGUubWluLmNzc1wiLFxyXG4gICAgICAgICAgICAgICAgYmFja3VwOiBcIi8vcmF1ZW56aS5naXRodWIuaW8vQmV0dGVyRGlzY29yZEFwcC9kaXN0L3N0eWxlLm1pbi5jc3NcIixcclxuICAgICAgICAgICAgICAgIGxvY2FsOiBcInt7bG9jYWxTZXJ2ZXJ9fS9CZXR0ZXJEaXNjb3JkQXBwL2Rpc3Qvc3R5bGUubWluLmNzc1wiXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICBdO1xyXG4gICAgfVxyXG5cclxuICAgIHNldENvbmZpZyhjb25maWcpIHtcclxuICAgICAgICBpZiAodGhpcy5oYXNTdGFydGVkKSByZXR1cm47XHJcbiAgICAgICAgT2JqZWN0LmFzc2lnbihDb25maWcsIGNvbmZpZyk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgaW5pdCgpIHtcclxuICAgICAgICBpZiAodGhpcy5oYXNTdGFydGVkKSByZXR1cm47XHJcbiAgICAgICAgdGhpcy5oYXNTdGFydGVkID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgLy8gTG9hZCBkZXBlbmRlbmNpZXMgYXN5bmNocm9ub3VzbHkgaWYgdGhleSBkb24ndCBleGlzdFxyXG4gICAgICAgIGxldCBkZXBlbmRlbmN5UHJvbWlzZSA9IG5ldyBQcm9taXNlKHIgPT4gcigpKTtcclxuICAgICAgICBpZiAoIXdpbmRvdy4kIHx8ICF3aW5kb3cualF1ZXJ5KSBkZXBlbmRlbmN5UHJvbWlzZSA9IHRoaXMubG9hZERlcGVuZGVuY2llcygpO1xyXG5cclxuICAgICAgICBEYXRhU3RvcmUuaW5pdGlhbGl6ZSgpO1xyXG4gICAgICAgIGF3YWl0IExvY2FsZU1hbmFnZXIuaW5pdGlhbGl6ZSgpO1xyXG5cclxuICAgICAgICBpZiAoQ29uZmlnLnZlcnNpb24gPCBDb25maWcubWluU3VwcG9ydGVkVmVyc2lvbikgcmV0dXJuIE1vZGFscy5hbGVydChTdHJpbmdzLlN0YXJ0dXAubm90U3VwcG9ydGVkLCBTdHJpbmdzLlN0YXJ0dXAudmVyc2lvbk1pc21hdGNoLmZvcm1hdCh7aW5qZWN0b3I6IENvbmZpZy52ZXJzaW9uLCByZW1vdGU6IENvbmZpZy5iYmRWZXJzaW9ufSkpO1xyXG4gICAgICAgIGlmICh3aW5kb3cuRUQpIHJldHVybiBNb2RhbHMuYWxlcnQoU3RyaW5ncy5TdGFydHVwLm5vdFN1cHBvcnRlZCwgU3RyaW5ncy5TdGFydHVwLmluY29tcGF0aWJsZUFwcC5mb3JtYXQoe2FwcDogXCJFbmhhbmNlZERpc2NvcmRcIn0pKTtcclxuICAgICAgICBpZiAod2luZG93LldlYlNvY2tldCAmJiB3aW5kb3cuV2ViU29ja2V0Lm5hbWUgJiYgd2luZG93LldlYlNvY2tldC5uYW1lLmluY2x1ZGVzKFwiUGF0Y2hlZFwiKSkgcmV0dXJuIE1vZGFscy5hbGVydChTdHJpbmdzLlN0YXJ0dXAubm90U3VwcG9ydGVkLCBTdHJpbmdzLlN0YXJ0dXAuaW5jb21wYXRpYmxlQXBwLmZvcm1hdCh7YXBwOiBcIlBvd2VyY29yZFwifSkpO1xyXG5cclxuICAgICAgICBjb25zdCBsYXRlc3RMb2NhbFZlcnNpb24gPSBDb25maWcudXBkYXRlciA/IENvbmZpZy51cGRhdGVyLkxhdGVzdFZlcnNpb24gOiBDb25maWcubGF0ZXN0VmVyc2lvbjtcclxuICAgICAgICBpZiAobGF0ZXN0TG9jYWxWZXJzaW9uID4gQ29uZmlnLnZlcnNpb24pIHtcclxuICAgICAgICAgICAgTW9kYWxzLnNob3dDb25maXJtYXRpb25Nb2RhbChTdHJpbmdzLlN0YXJ0dXAudXBkYXRlQXZhaWxhYmxlLCBTdHJpbmdzLlN0YXJ0dXAudXBkYXRlSW5mby5mb3JtYXQoe3ZlcnNpb246IGxhdGVzdExvY2FsVmVyc2lvbn0pLCB7XHJcbiAgICAgICAgICAgICAgICBjb25maXJtVGV4dDogU3RyaW5ncy5TdGFydHVwLnVwZGF0ZU5vdyxcclxuICAgICAgICAgICAgICAgIGNhbmNlbFRleHQ6IFN0cmluZ3MuU3RhcnR1cC5tYXliZUxhdGVyLFxyXG4gICAgICAgICAgICAgICAgb25Db25maXJtOiBhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgb25VcGRhdGVGYWlsZWQgPSAoKSA9PiB7IE1vZGFscy5hbGVydChTdHJpbmdzLlN0YXJ0dXAudXBkYXRlRmFpbGVkLCBTdHJpbmdzLlN0YXJ0dXAubWFudWFsVXBkYXRlKTsgfTtcclxuICAgICAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkaWRVcGRhdGUgPSBhd2FpdCB0aGlzLnVwZGF0ZUluamVjdG9yKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZGlkVXBkYXRlKSByZXR1cm4gb25VcGRhdGVGYWlsZWQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYXBwID0gcmVxdWlyZShcImVsZWN0cm9uXCIpLnJlbW90ZS5hcHA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcC5yZWxhdW5jaCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBhcHAuZXhpdCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uVXBkYXRlRmFpbGVkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG5cclxuICAgICAgICBMb2dnZXIubG9nKFwiU3RhcnR1cFwiLCBcIkluaXRpYWxpemluZyBTZXR0aW5nc1wiKTtcclxuICAgICAgICBTZXR0aW5ncy5pbml0aWFsaXplKCk7XHJcblxyXG4gICAgICAgIC8vIERPTU1hbmFnZXIuaW5pdGlhbGl6ZSgpO1xyXG4gICAgICAgIGF3YWl0IHRoaXMud2FpdEZvckd1aWxkcygpO1xyXG4gICAgICAgIFJlYWN0Q29tcG9uZW50cy5pbml0aWFsaXplKCk7XHJcbiAgICAgICAgQ29tcG9uZW50UGF0Y2hlci5pbml0aWFsaXplKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBtb2R1bGUgaW4gQnVpbHRpbnMpIEJ1aWx0aW5zW21vZHVsZV0uaW5pdGlhbGl6ZSgpO1xyXG5cclxuICAgICAgICBhd2FpdCBkZXBlbmRlbmN5UHJvbWlzZTtcclxuICAgICAgICBMb2dnZXIubG9nKFwiU3RhcnR1cFwiLCBcIkxvYWRpbmcgUGx1Z2luc1wiKTtcclxuICAgICAgICBjb25zdCBwbHVnaW5FcnJvcnMgPSBQbHVnaW5NYW5hZ2VyLmluaXRpYWxpemUoKTtcclxuXHJcbiAgICAgICAgTG9nZ2VyLmxvZyhcIlN0YXJ0dXBcIiwgXCJMb2FkaW5nIFRoZW1lc1wiKTtcclxuICAgICAgICBjb25zdCB0aGVtZUVycm9ycyA9IFRoZW1lTWFuYWdlci5pbml0aWFsaXplKCk7XHJcblxyXG4gICAgICAgIExvZ2dlci5sb2coXCJTdGFydHVwXCIsIFwiUmVtb3ZpbmcgTG9hZGluZyBJY29uXCIpO1xyXG4gICAgICAgIExvYWRpbmdJY29uLmhpZGUoKTtcclxuXHJcbiAgICAgICAgLy8gU2hvdyBsb2FkaW5nIGVycm9yc1xyXG4gICAgICAgIExvZ2dlci5sb2coXCJTdGFydHVwXCIsIFwiQ29sbGVjdGluZyBTdGFydHVwIEVycm9yc1wiKTtcclxuICAgICAgICBNb2RhbHMuc2hvd0FkZG9uRXJyb3JzKHtwbHVnaW5zOiBwbHVnaW5FcnJvcnMsIHRoZW1lczogdGhlbWVFcnJvcnN9KTtcclxuXHJcbiAgICAgICAgY29uc3QgcHJldmlvdXNWZXJzaW9uID0gRGF0YVN0b3JlLmdldEJERGF0YShcInZlcnNpb25cIik7XHJcbiAgICAgICAgaWYgKENvbmZpZy5iYmRWZXJzaW9uID4gcHJldmlvdXNWZXJzaW9uKSB7XHJcbiAgICAgICAgICAgIE1vZGFscy5zaG93Q2hhbmdlbG9nTW9kYWwoQ2hhbmdlbG9nKTtcclxuICAgICAgICAgICAgRGF0YVN0b3JlLnNldEJERGF0YShcInZlcnNpb25cIiwgQ29uZmlnLmJiZFZlcnNpb24pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB3YWl0Rm9yR3VpbGRzKCkge1xyXG4gICAgICAgIGxldCB0aW1lc0NoZWNrZWQgPSAwO1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcclxuICAgICAgICAgICAgY29uc3QgY2hlY2tGb3JHdWlsZHMgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICB0aW1lc0NoZWNrZWQrKztcclxuICAgICAgICAgICAgICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlICE9IFwiY29tcGxldGVcIikgc2V0VGltZW91dChjaGVja0Zvckd1aWxkcywgMTAwKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHdyYXBwZXIgPSBHdWlsZENsYXNzZXMud3JhcHBlci5zcGxpdChcIiBcIilbMF07XHJcbiAgICAgICAgICAgICAgICBjb25zdCBndWlsZCA9IEd1aWxkQ2xhc3Nlcy5saXN0SXRlbS5zcGxpdChcIiBcIilbMF07XHJcbiAgICAgICAgICAgICAgICBjb25zdCBibG9iID0gR3VpbGRDbGFzc2VzLmJsb2JDb250YWluZXIuc3BsaXQoXCIgXCIpWzBdO1xyXG4gICAgICAgICAgICAgICAgaWYgKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYC4ke3dyYXBwZXJ9IC4ke2d1aWxkfSAuJHtibG9ifWApLmxlbmd0aCA+IDApIHJldHVybiByZXNvbHZlKENvbmZpZy5kZWZlckxvYWRlZCA9IHRydWUpO1xyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodGltZXNDaGVja2VkID49IDUwKSByZXR1cm4gcmVzb2x2ZShDb25maWcuZGVmZXJMb2FkZWQgPSB0cnVlKTtcclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoY2hlY2tGb3JHdWlsZHMsIDEwMCk7XHJcbiAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICBjaGVja0Zvckd1aWxkcygpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGxvYWREZXBlbmRlbmNpZXMoKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBkYXRhIG9mIHRoaXMuZGVwZW5kZW5jaWVzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHVybCA9IFV0aWxpdGllcy5mb3JtYXRTdHJpbmcoKENvbmZpZy5sb2NhbCAmJiBkYXRhLmxvY2FsICE9IG51bGwpID8gZGF0YS5sb2NhbCA6IGRhdGEudXJsLCB7cmVwbzogQ29uZmlnLnJlcG8sIGhhc2g6IENvbmZpZy5oYXNoLCBsb2NhbFNlcnZlcjogQ29uZmlnLmxvY2FsU2VydmVyfSk7XHJcbiAgICAgICAgICAgIExvZ2dlci5sb2coYFN0YXJ0dXBgLCBgTG9hZGluZyBSZXNvdXJjZSAoJHt1cmx9KWApO1xyXG5cdFx0XHRjb25zdCBpbmplY3RvciA9IChkYXRhLnR5cGUgPT0gXCJzY3JpcHRcIiA/IERPTU1hbmFnZXIuaW5qZWN0U2NyaXB0IDogRE9NTWFuYWdlci5saW5rU3R5bGUpLmJpbmQoRE9NTWFuYWdlcik7XHJcblx0XHRcdHRyeSB7XHJcblx0XHRcdFx0YXdhaXQgaW5qZWN0b3IoZGF0YS5uYW1lLCB1cmwpO1xyXG5cdFx0XHR9XHJcblx0XHRcdGNhdGNoIChlcnIpIHtcclxuXHRcdFx0XHRjb25zdCBiYWNrdXAgPSBVdGlsaXRpZXMuZm9ybWF0U3RyaW5nKGRhdGEuYmFja3VwLCB7bWluaWZpZWQ6IENvbmZpZy5taW5pZmllZCA/IFwiLm1pblwiIDogXCJcIn0pO1xyXG5cdFx0XHRcdExvZ2dlci5zdGFja3RyYWNlKGBTdGFydHVwYCwgYENvdWxkIG5vdCBsb2FkICR7dXJsfS4gVXNpbmcgYmFja3VwICR7YmFja3VwfWAsIGVycik7XHJcblx0XHRcdFx0dHJ5IHtcclxuXHRcdFx0XHRcdGF3YWl0IGluamVjdG9yKGRhdGEubmFtZSwgYmFja3VwKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0Y2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgICAgICBMb2dnZXIuc3RhY2t0cmFjZShgU3RhcnR1cGAsIGBDb3VsZCBub3QgbG9hZCAke3VybH0uIFVzaW5nIGJhY2t1cCAke2JhY2t1cH1gLCBlcnIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLm5hbWUgPT09IFwianF1ZXJ5XCIpICBNb2RhbHMuYWxlcnQoU3RyaW5ncy5TdGFydHVwLmpxdWVyeUZhaWxlZCwgU3RyaW5ncy5TdGFydHVwLmpxdWVyeUZhaWxlZERldGFpbHMpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhc3luYyB1cGRhdGVJbmplY3RvcigpIHtcclxuICAgICAgICBjb25zdCBpbmplY3Rpb25QYXRoID0gRGF0YVN0b3JlLmluamVjdGlvblBhdGg7XHJcbiAgICAgICAgaWYgKCFpbmplY3Rpb25QYXRoKSByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgICAgIGNvbnN0IGZzID0gcmVxdWlyZShcImZzXCIpO1xyXG4gICAgICAgIGNvbnN0IHBhdGggPSByZXF1aXJlKFwicGF0aFwiKTtcclxuICAgICAgICBjb25zdCBybXJmID0gcmVxdWlyZShcInJpbXJhZlwiKTtcclxuICAgICAgICBjb25zdCB5YXV6bCA9IHJlcXVpcmUoXCJ5YXV6bFwiKTtcclxuICAgICAgICBjb25zdCBta2RpcnAgPSByZXF1aXJlKFwibWtkaXJwXCIpO1xyXG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSByZXF1aXJlKFwicmVxdWVzdFwiKTtcclxuXHJcbiAgICAgICAgY29uc3QgcGFyZW50UGF0aCA9IHBhdGgucmVzb2x2ZShpbmplY3Rpb25QYXRoLCBcIi4uXCIpO1xyXG4gICAgICAgIGNvbnN0IGZvbGRlck5hbWUgPSBwYXRoLmJhc2VuYW1lKGluamVjdGlvblBhdGgpO1xyXG4gICAgICAgIGNvbnN0IHppcExpbmsgPSBcImh0dHBzOi8vZ2l0aHViLmNvbS9yYXVlbnppL0JldHRlckRpc2NvcmRBcHAvYXJjaGl2ZS9pbmplY3Rvci56aXBcIjtcclxuICAgICAgICBjb25zdCBzYXZlZFppcCA9IHBhdGgucmVzb2x2ZShwYXJlbnRQYXRoLCBcImluamVjdG9yLnppcFwiKTtcclxuICAgICAgICBjb25zdCBleHRyYWN0ZWRGb2xkZXIgPSBwYXRoLnJlc29sdmUocGFyZW50UGF0aCwgXCJCZXR0ZXJEaXNjb3JkQXBwLWluamVjdG9yXCIpO1xyXG5cclxuICAgICAgICAvLyBEb3dubG9hZCB0aGUgaW5qZWN0b3IgemlwIGZpbGVcclxuICAgICAgICBMb2dnZXIubG9nKFwiSW5qZWN0b3JVcGRhdGVcIiwgXCJEb3dubG9hZGluZyBcIiArIHppcExpbmspO1xyXG4gICAgICAgIGxldCBzdWNjZXNzID0gYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XHJcbiAgICAgICAgICAgIHJlcXVlc3QuZ2V0KHt1cmw6IHppcExpbmssIGVuY29kaW5nOiBudWxsfSwgYXN5bmMgKGVycm9yLCByZXNwb25zZSwgYm9keSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGVycm9yIHx8IHJlc3BvbnNlLnN0YXR1c0NvZGUgIT09IDIwMCkgcmV0dXJuIHJlc29sdmUoZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgLy8gU2F2ZSBhIGJhY2t1cCBpbiBjYXNlIHNvbWVvbmUgaGFzIHRoZWlyIG93biBjb3B5XHJcbiAgICAgICAgICAgICAgICBjb25zdCBhbHJlYWR5RXhpc3RzID0gYXdhaXQgbmV3IFByb21pc2UocmVzID0+IGZzLmV4aXN0cyhzYXZlZFppcCwgcmVzKSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoYWxyZWFkeUV4aXN0cykgYXdhaXQgbmV3IFByb21pc2UocmVzID0+IGZzLnJlbmFtZShzYXZlZFppcCwgYCR7c2F2ZWRaaXB9LmJhayR7TWF0aC5yb3VuZChwZXJmb3JtYW5jZS5ub3coKSl9YCwgcmVzKSk7XHJcblxyXG4gICAgICAgICAgICAgICAgTG9nZ2VyLmxvZyhcIkluamVjdG9yVXBkYXRlXCIsIFwiV3JpdGluZyBcIiArIHNhdmVkWmlwKTtcclxuICAgICAgICAgICAgICAgIGZzLndyaXRlRmlsZShzYXZlZFppcCwgYm9keSwgZXJyID0+IHJlc29sdmUoIWVycikpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBpZiAoIXN1Y2Nlc3MpIHJldHVybiBzdWNjZXNzO1xyXG5cclxuICAgICAgICAvLyBDaGVjayBhbmQgZGVsZXRlIHJlbmFtZSBleHRyYWN0aW9uXHJcbiAgICAgICAgY29uc3QgYWxyZWFkeUV4aXN0cyA9IGF3YWl0IG5ldyBQcm9taXNlKHJlcyA9PiBmcy5leGlzdHMoZXh0cmFjdGVkRm9sZGVyLCByZXMpKTtcclxuICAgICAgICBpZiAoYWxyZWFkeUV4aXN0cykgYXdhaXQgbmV3IFByb21pc2UocmVzID0+IGZzLnJlbmFtZShleHRyYWN0ZWRGb2xkZXIsIGAke2V4dHJhY3RlZEZvbGRlcn0uYmFrJHtNYXRoLnJvdW5kKHBlcmZvcm1hbmNlLm5vdygpKX1gLCByZXMpKTtcclxuXHJcbiAgICAgICAgLy8gVW56aXAgdGhlIGRvd25sb2FkZWQgemlwIGZpbGVcclxuICAgICAgICBjb25zdCB6aXBmaWxlID0gYXdhaXQgbmV3IFByb21pc2UociA9PiB5YXV6bC5vcGVuKHNhdmVkWmlwLCB7bGF6eUVudHJpZXM6IHRydWV9LCAoZXJyLCB6aXApID0+IHIoemlwKSkpO1xyXG4gICAgICAgIHppcGZpbGUub24oXCJlbnRyeVwiLCBmdW5jdGlvbiAoZW50cnkpIHtcclxuICAgICAgICAgICAgLy8gU2tpcCBkaXJlY3RvcmllcywgdGhleSBhcmUgaGFuZGxlZCB3aXRoIG1rZGlycFxyXG4gICAgICAgICAgICBpZiAoZW50cnkuZmlsZU5hbWUuZW5kc1dpdGgoXCIvXCIpKSByZXR1cm4gemlwZmlsZS5yZWFkRW50cnkoKTtcclxuXHJcbiAgICAgICAgICAgIExvZ2dlci5sb2coXCJJbmplY3RvclVwZGF0ZVwiLCBcIkV4dHJhY3RpbmcgXCIgKyBlbnRyeS5maWxlTmFtZSk7XHJcbiAgICAgICAgICAgIC8vIE1ha2UgYW55IG5lZWRlZCBwYXJlbnQgZGlyZWN0b3JpZXNcclxuICAgICAgICAgICAgY29uc3QgZnVsbFBhdGggPSBwYXRoLnJlc29sdmUocGFyZW50UGF0aCwgZW50cnkuZmlsZU5hbWUpO1xyXG4gICAgICAgICAgICBta2RpcnAuc3luYyhwYXRoLmRpcm5hbWUoZnVsbFBhdGgpKTtcclxuICAgICAgICAgICAgemlwZmlsZS5vcGVuUmVhZFN0cmVhbShlbnRyeSwgZnVuY3Rpb24gKGVyciwgcmVhZFN0cmVhbSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGVycikgcmV0dXJuIHN1Y2Nlc3MgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHJlYWRTdHJlYW0ub24oXCJlbmRcIiwgZnVuY3Rpb24gKCkgeyB6aXBmaWxlLnJlYWRFbnRyeSgpOyB9KTsgLy8gR28gdG8gbmV4dCBmaWxlIGFmdGVyIHRoaXNcclxuICAgICAgICAgICAgICAgIHJlYWRTdHJlYW0ucGlwZShmcy5jcmVhdGVXcml0ZVN0cmVhbShmdWxsUGF0aCkpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB6aXBmaWxlLnJlYWRFbnRyeSgpOyAvLyBTdGFydCByZWFkaW5nXHJcblxyXG5cclxuICAgICAgICAvLyBXYWl0IGZvciB0aGUgZmluYWwgZmlsZSB0byBmaW5pc2hcclxuICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHppcGZpbGUub25jZShcImVuZFwiLCByZXNvbHZlKSk7XHJcblxyXG4gICAgICAgIC8vIFNhdmUgYSBiYWNrdXAgaW4gY2FzZSBzb21ldGhpbmcgZ29lcyB3cm9uZyBkdXJpbmcgZmluYWwgc3RlcFxyXG4gICAgICAgIGNvbnN0IGJhY2t1cEZvbGRlciA9IHBhdGgucmVzb2x2ZShwYXJlbnRQYXRoLCBgJHtmb2xkZXJOYW1lfS5iYWske01hdGgucm91bmQocGVyZm9ybWFuY2Uubm93KCkpfWApO1xyXG4gICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gZnMucmVuYW1lKGluamVjdGlvblBhdGgsIGJhY2t1cEZvbGRlciwgcmVzb2x2ZSkpO1xyXG5cclxuICAgICAgICAvLyBSZW5hbWUgdGhlIGV4dHJhY3RlZCBmb2xkZXIgdG8gd2hhdCBpdCBzaG91bGQgYmVcclxuICAgICAgICBMb2dnZXIubG9nKFwiSW5qZWN0b3JVcGRhdGVcIiwgYFJlbmFtaW5nICR7cGF0aC5iYXNlbmFtZShleHRyYWN0ZWRGb2xkZXIpfSB0byAke2ZvbGRlck5hbWV9YCk7XHJcbiAgICAgICAgc3VjY2VzcyA9IGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gZnMucmVuYW1lKGV4dHJhY3RlZEZvbGRlciwgaW5qZWN0aW9uUGF0aCwgZXJyID0+IHJlc29sdmUoIWVycikpKTtcclxuICAgICAgICBpZiAoIXN1Y2Nlc3MpIHtcclxuICAgICAgICAgICAgTG9nZ2VyLmVycihcIkluamVjdG9yVXBkYXRlXCIsIFwiRmFpbGVkIHRvIHJlbmFtZSB0aGUgZmluYWwgZGlyZWN0b3J5XCIpO1xyXG4gICAgICAgICAgICByZXR1cm4gc3VjY2VzcztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIElmIHJlbmFtZSBoYWQgaXNzdWVzLCBkZWxldGUgd2hhdCB3ZSB0cmllZCB0byByZW5hbWUgYW5kIHJlc3RvcmUgYmFja3VwXHJcbiAgICAgICAgaWYgKCFzdWNjZXNzKSB7XHJcbiAgICAgICAgICAgIExvZ2dlci5lcnIoXCJJbmplY3RvclVwZGF0ZVwiLCBcIlNvbWV0aGluZyB3ZW50IHdyb25nLi4uIHJlc3RvcmluZyBiYWNrdXBzLlwiKTtcclxuICAgICAgICAgICAgYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiBybXJmKGV4dHJhY3RlZEZvbGRlciwgcmVzb2x2ZSkpO1xyXG4gICAgICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IGZzLnJlbmFtZShiYWNrdXBGb2xkZXIsIGluamVjdGlvblBhdGgsIHJlc29sdmUpKTtcclxuICAgICAgICAgICAgcmV0dXJuIHN1Y2Nlc3M7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBJZiB3ZSd2ZSBnb3R0ZW4gdG8gdGhpcyBwb2ludCwgZXZlcnl0aGluZyBzaG91bGQgaGF2ZSBnb25lIHNtb290aGx5LlxyXG4gICAgICAgIC8vIENsZWFudXAgdGhlIGJhY2t1cCBmb2xkZXIgdGhlbiByZW1vdmUgdGhlIHppcFxyXG4gICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gcm1yZihiYWNrdXBGb2xkZXIsIHJlc29sdmUpKTtcclxuICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IGZzLnVubGluayhzYXZlZFppcCwgcmVzb2x2ZSkpO1xyXG5cclxuICAgICAgICBMb2dnZXIubG9nKFwiSW5qZWN0b3JVcGRhdGVcIiwgXCJJbmplY3RvciBVcGRhdGVkIVwiKTtcclxuICAgICAgICByZXR1cm4gc3VjY2VzcztcclxuICAgIH1cclxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/core.js\n"); /***/ }), @@ -431,7 +430,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _loc /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var data__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! data */ \"./src/data/data.js\");\n/* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utilities */ \"./src/modules/utilities.js\");\n\n\n\nconst fs = __webpack_require__(/*! fs */ \"fs\");\n\nconst path = __webpack_require__(/*! path */ \"path\");\n\nconst releaseChannel = DiscordNative.globals ? DiscordNative.globals.releaseChannel : DiscordNative.app ? DiscordNative.app.getReleaseChannel() : \"stable\"; // Schema\n// =======================\n// %appdata%\\BetterDiscord\n// -> data\n// -> [releaseChannel]\\ (stable/canary/ptb)\n// -> settings.json\n// -> plugins.json\n// -> themes.json\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class DataStore {\n constructor() {\n this.data = {\n misc: {}\n };\n this.pluginData = {};\n this.cacheData = {};\n }\n\n initialize() {\n if (!fs.existsSync(this.baseFolder)) fs.mkdirSync(this.baseFolder);\n if (!fs.existsSync(this.dataFolder)) fs.mkdirSync(this.dataFolder);\n if (!fs.existsSync(this.localeFolder)) fs.mkdirSync(this.localeFolder);\n if (!fs.existsSync(this.emoteFolder)) fs.mkdirSync(this.emoteFolder);\n if (!fs.existsSync(this.cacheFile)) fs.writeFileSync(this.cacheFile, JSON.stringify({}));\n if (!fs.existsSync(this.customCSS)) fs.writeFileSync(this.customCSS, \"\");\n const dataFiles = fs.readdirSync(this.dataFolder).filter(f => !fs.statSync(path.resolve(this.dataFolder, f)).isDirectory() && f.endsWith(\".json\"));\n\n for (const file of dataFiles) {\n this.data[file.split(\".\")[0]] = require(path.resolve(this.dataFolder, file));\n }\n\n this.cacheData = _utilities__WEBPACK_IMPORTED_MODULE_1__[\"default\"].testJSON(fs.readFileSync(this.cacheFile).toString()) || {};\n }\n\n get injectionPath() {\n if (this._injectionPath) return this._injectionPath;\n\n const electron = __webpack_require__(/*! electron */ \"electron\").remote.app;\n\n const base = electron.getAppPath();\n const roamingBase = electron.getPath(\"userData\");\n const roamingLocation = path.resolve(roamingBase, electron.getVersion(), \"modules\", \"discord_desktop_core\", \"injector\");\n const location = path.resolve(base, \"..\", \"app\");\n const realLocation = fs.existsSync(location) ? location : fs.existsSync(roamingLocation) ? roamingLocation : null;\n if (!realLocation) return this._injectionPath = null;\n return this._injectionPath = realLocation;\n }\n\n get customCSS() {\n return this._customCSS || (this._customCSS = path.resolve(this.dataFolder, \"custom.css\"));\n }\n\n get baseFolder() {\n return this._baseFolder || (this._baseFolder = path.resolve(data__WEBPACK_IMPORTED_MODULE_0__[\"Config\"].dataPath, \"data\"));\n }\n\n get dataFolder() {\n return this._dataFolder || (this._dataFolder = path.resolve(this.baseFolder, `${releaseChannel}`));\n }\n\n get localeFolder() {\n return this._localeFolder || (this._localeFolder = path.resolve(this.baseFolder, `locales`));\n }\n\n get emoteFolder() {\n return this._emoteFolder || (this._emoteFolder = path.resolve(this.baseFolder, `emotes`));\n }\n\n get cacheFile() {\n return this._cacheFile || (this._cacheFile = path.resolve(this.baseFolder, `.cache`));\n }\n\n getPluginFile(pluginName) {\n return path.resolve(data__WEBPACK_IMPORTED_MODULE_0__[\"Config\"].dataPath, \"plugins\", pluginName + \".config.json\");\n }\n\n _getFile(key) {\n if (key == \"settings\" || key == \"plugins\" || key == \"themes\" || key == \"window\") return path.resolve(this.dataFolder, `${key}.json`);\n return path.resolve(this.dataFolder, `misc.json`);\n }\n\n getBDData(key) {\n return this.data.misc[key] || \"\";\n }\n\n setBDData(key, value) {\n this.data.misc[key] = value;\n fs.writeFileSync(path.resolve(this.dataFolder, `misc.json`), JSON.stringify(this.data.misc, null, 4));\n }\n\n getLocale(locale) {\n const file = path.resolve(this.localeFolder, `${locale}.json`);\n if (!fs.existsSync(file)) return null;\n return _utilities__WEBPACK_IMPORTED_MODULE_1__[\"default\"].testJSON(fs.readFileSync(file).toString());\n }\n\n saveLocale(locale, strings) {\n fs.writeFileSync(path.resolve(this.localeFolder, `${locale}.json`), JSON.stringify(strings, null, 4));\n }\n\n getCacheHash(category, key) {\n if (!this.cacheData[category]) return \"\";\n if (!fs.existsSync(path.resolve(this.baseFolder, category, `${key}.json`))) return \"\";\n return this.cacheData[category][key] || \"\";\n }\n\n setCacheHash(category, key, hash) {\n if (!this.cacheData[category]) this.cacheData[category] = {};\n this.cacheData[category][key] = hash;\n fs.writeFileSync(this.cacheFile, JSON.stringify(this.cacheData));\n }\n\n invalidateCache(category, key) {\n if (!this.cacheData[category]) return;\n delete this.cacheData[category][key];\n fs.writeFileSync(this.cacheFile, JSON.stringify(this.cacheData));\n }\n\n emotesExist(category) {\n return fs.existsSync(path.resolve(this.emoteFolder, `${category}.json`));\n }\n\n getEmoteData(category) {\n const file = path.resolve(this.emoteFolder, `${category}.json`);\n if (!fs.existsSync(file)) return null;\n return _utilities__WEBPACK_IMPORTED_MODULE_1__[\"default\"].testJSON(fs.readFileSync(file).toString());\n }\n\n saveEmoteData(category, data) {\n fs.writeFileSync(path.resolve(this.emoteFolder, `${category}.json`), JSON.stringify(data));\n }\n\n getData(key) {\n return this.data[key] || \"\";\n }\n\n setData(key, value) {\n this.data[key] = value;\n fs.writeFileSync(path.resolve(this.dataFolder, `${key}.json`), JSON.stringify(value, null, 4));\n }\n\n loadCustomCSS() {\n return fs.readFileSync(this.customCSS).toString();\n }\n\n saveCustomCSS(css) {\n return fs.writeFileSync(this.customCSS, css);\n }\n\n getPluginData(pluginName, key) {\n if (this.pluginData[pluginName] !== undefined) return this.pluginData[pluginName][key] || undefined;\n if (!fs.existsSync(this.getPluginFile(pluginName))) return undefined;\n this.pluginData[pluginName] = JSON.parse(fs.readFileSync(this.getPluginFile(pluginName)));\n return this.pluginData[pluginName][key] || undefined;\n }\n\n setPluginData(pluginName, key, value) {\n if (value === undefined) return;\n if (this.pluginData[pluginName] === undefined) this.pluginData[pluginName] = {};\n this.pluginData[pluginName][key] = value;\n fs.writeFileSync(this.getPluginFile(pluginName), JSON.stringify(this.pluginData[pluginName], null, 4));\n }\n\n deletePluginData(pluginName, key) {\n if (this.pluginData[pluginName] === undefined) this.pluginData[pluginName] = {};\n delete this.pluginData[pluginName][key];\n fs.writeFileSync(this.getPluginFile(pluginName), JSON.stringify(this.pluginData[pluginName], null, 4));\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL21vZHVsZXMvZGF0YXN0b3JlLmpzPzEwNTIiXSwibmFtZXMiOlsiZnMiLCJyZXF1aXJlIiwicGF0aCIsInJlbGVhc2VDaGFubmVsIiwiRGlzY29yZE5hdGl2ZSIsImdsb2JhbHMiLCJhcHAiLCJnZXRSZWxlYXNlQ2hhbm5lbCIsIkRhdGFTdG9yZSIsImNvbnN0cnVjdG9yIiwiZGF0YSIsIm1pc2MiLCJwbHVnaW5EYXRhIiwiY2FjaGVEYXRhIiwiaW5pdGlhbGl6ZSIsImV4aXN0c1N5bmMiLCJiYXNlRm9sZGVyIiwibWtkaXJTeW5jIiwiZGF0YUZvbGRlciIsImxvY2FsZUZvbGRlciIsImVtb3RlRm9sZGVyIiwiY2FjaGVGaWxlIiwid3JpdGVGaWxlU3luYyIsIkpTT04iLCJzdHJpbmdpZnkiLCJjdXN0b21DU1MiLCJkYXRhRmlsZXMiLCJyZWFkZGlyU3luYyIsImZpbHRlciIsImYiLCJzdGF0U3luYyIsInJlc29sdmUiLCJpc0RpcmVjdG9yeSIsImVuZHNXaXRoIiwiZmlsZSIsInNwbGl0IiwiX19ub25fd2VicGFja19yZXF1aXJlX18iLCJVdGlsaXRpZXMiLCJ0ZXN0SlNPTiIsInJlYWRGaWxlU3luYyIsInRvU3RyaW5nIiwiaW5qZWN0aW9uUGF0aCIsIl9pbmplY3Rpb25QYXRoIiwiZWxlY3Ryb24iLCJyZW1vdGUiLCJiYXNlIiwiZ2V0QXBwUGF0aCIsInJvYW1pbmdCYXNlIiwiZ2V0UGF0aCIsInJvYW1pbmdMb2NhdGlvbiIsImdldFZlcnNpb24iLCJsb2NhdGlvbiIsInJlYWxMb2NhdGlvbiIsIl9jdXN0b21DU1MiLCJfYmFzZUZvbGRlciIsIkNvbmZpZyIsImRhdGFQYXRoIiwiX2RhdGFGb2xkZXIiLCJfbG9jYWxlRm9sZGVyIiwiX2Vtb3RlRm9sZGVyIiwiX2NhY2hlRmlsZSIsImdldFBsdWdpbkZpbGUiLCJwbHVnaW5OYW1lIiwiX2dldEZpbGUiLCJrZXkiLCJnZXRCRERhdGEiLCJzZXRCRERhdGEiLCJ2YWx1ZSIsImdldExvY2FsZSIsImxvY2FsZSIsInNhdmVMb2NhbGUiLCJzdHJpbmdzIiwiZ2V0Q2FjaGVIYXNoIiwiY2F0ZWdvcnkiLCJzZXRDYWNoZUhhc2giLCJoYXNoIiwiaW52YWxpZGF0ZUNhY2hlIiwiZW1vdGVzRXhpc3QiLCJnZXRFbW90ZURhdGEiLCJzYXZlRW1vdGVEYXRhIiwiZ2V0RGF0YSIsInNldERhdGEiLCJsb2FkQ3VzdG9tQ1NTIiwic2F2ZUN1c3RvbUNTUyIsImNzcyIsImdldFBsdWdpbkRhdGEiLCJ1bmRlZmluZWQiLCJwYXJzZSIsInNldFBsdWdpbkRhdGEiLCJkZWxldGVQbHVnaW5EYXRhIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBOztBQUNBLE1BQU1BLEVBQUUsR0FBR0MsbUJBQU8sQ0FBQyxjQUFELENBQWxCOztBQUNBLE1BQU1DLElBQUksR0FBR0QsbUJBQU8sQ0FBQyxrQkFBRCxDQUFwQjs7QUFDQSxNQUFNRSxjQUFjLEdBQUdDLGFBQWEsQ0FBQ0MsT0FBZCxHQUF3QkQsYUFBYSxDQUFDQyxPQUFkLENBQXNCRixjQUE5QyxHQUErREMsYUFBYSxDQUFDRSxHQUFkLEdBQW9CRixhQUFhLENBQUNFLEdBQWQsQ0FBa0JDLGlCQUFsQixFQUFwQixHQUE0RCxRQUFsSixDLENBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFZSxtRUFBSSxNQUFNQyxTQUFOLENBQWdCO0FBQy9CQyxhQUFXLEdBQUc7QUFDVixTQUFLQyxJQUFMLEdBQVk7QUFBQ0MsVUFBSSxFQUFFO0FBQVAsS0FBWjtBQUNBLFNBQUtDLFVBQUwsR0FBa0IsRUFBbEI7QUFDQSxTQUFLQyxTQUFMLEdBQWlCLEVBQWpCO0FBQ0g7O0FBRURDLFlBQVUsR0FBRztBQUNULFFBQUksQ0FBQ2QsRUFBRSxDQUFDZSxVQUFILENBQWMsS0FBS0MsVUFBbkIsQ0FBTCxFQUFxQ2hCLEVBQUUsQ0FBQ2lCLFNBQUgsQ0FBYSxLQUFLRCxVQUFsQjtBQUNyQyxRQUFJLENBQUNoQixFQUFF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QUFLMUUsVUFBTCxDQUFnQmtELFVBQWhCLE1BQWdDd0IsU0FBcEMsRUFBK0MsS0FBSzFFLFVBQUwsQ0FBZ0JrRCxVQUFoQixJQUE4QixFQUE5QjtBQUMvQyxTQUFLbEQsVUFBTCxDQUFnQmtELFVBQWhCLEVBQTRCRSxHQUE1QixJQUFtQ0csS0FBbkM7QUFDQW5FLE1BQUUsQ0FBQ3NCLGFBQUgsQ0FBaUIsS0FBS3VDLGFBQUwsQ0FBbUJDLFVBQW5CLENBQWpCLEVBQWlEdkMsSUFBSSxDQUFDQyxTQUFMLENBQWUsS0FBS1osVUFBTCxDQUFnQmtELFVBQWhCLENBQWYsRUFBNEMsSUFBNUMsRUFBa0QsQ0FBbEQsQ0FBakQ7QUFDSDs7QUFFRDJCLGtCQUFnQixDQUFDM0IsVUFBRCxFQUFhRSxHQUFiLEVBQWtCO0FBQzlCLFFBQUksS0FBS3BELFVBQUwsQ0FBZ0JrRCxVQUFoQixNQUFnQ3dCLFNBQXBDLEVBQStDLEtBQUsxRSxVQUFMLENBQWdCa0QsVUFBaEIsSUFBOEIsRUFBOUI7QUFDL0MsV0FBTyxLQUFLbEQsVUFBTCxDQUFnQmtELFVBQWhCLEVBQTRCRSxHQUE1QixDQUFQO0FBQ0FoRSxNQUFFLENBQUNzQixhQUFILENBQWlCLEtBQUt1QyxhQUFMLENBQW1CQyxVQUFuQixDQUFqQixFQUFpRHZDLElBQUksQ0FBQ0MsU0FBTCxDQUFlLEtBQUtaLFVBQUwsQ0FBZ0JrRCxVQUFoQixDQUFmLEVBQTRDLElBQTVDLEVBQWtELENBQWxELENBQWpEO0FBQ0g7O0FBckk4QixDQUFwQixFQUFmIiwiZmlsZSI6Ii4vc3JjL21vZHVsZXMvZGF0YXN0b3JlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb25maWd9IGZyb20gXCJkYXRhXCI7XHJcbmltcG9ydCBVdGlsaXRpZXMgZnJvbSBcIi4vdXRpbGl0aWVzXCI7XHJcbmNvbnN0IGZzID0gcmVxdWlyZShcImZzXCIpO1xyXG5jb25zdCBwYXRoID0gcmVxdWlyZShcInBhdGhcIik7XHJcbmNvbnN0IHJlbGVhc2VDaGFubmVsID0gRGlzY29yZE5hdGl2ZS5nbG9iYWxzID8gRGlzY29yZE5hdGl2ZS5nbG9iYWxzLnJlbGVhc2VDaGFubmVsIDogRGlzY29yZE5hdGl2ZS5hcHAgPyBEaXNjb3JkTmF0aXZlLmFwcC5nZXRSZWxlYXNlQ2hhbm5lbCgpIDogXCJzdGFibGVcIjtcclxuXHJcbi8vIFNjaGVtYVxyXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PVxyXG4vLyAlYXBwZGF0YSVcXEJldHRlckRpc2NvcmRcclxuLy8gICAgIC0+IGRhdGFcclxuLy8gICAgICAgICAtPiBbcmVsZWFzZUNoYW5uZWxdXFwgKHN0YWJsZS9jYW5hcnkvcHRiKVxyXG4vLyAgICAgICAgICAgICAtPiBzZXR0aW5ncy5qc29uXHJcbi8vICAgICAgICAgICAgIC0+IHBsdWdpbnMuanNvblxyXG4vLyAgICAgICAgICAgICAtPiB0aGVtZXMuanNvblxyXG5cclxuZXhwb3J0IGRlZmF1bHQgbmV3IGNsYXNzIERhdGFTdG9yZSB7XHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICB0aGlzLmRhdGEgPSB7bWlzYzoge319O1xyXG4gICAgICAgIHRoaXMucGx1Z2luRGF0YSA9IHt9O1xyXG4gICAgICAgIHRoaXMuY2FjaGVEYXRhID0ge307XHJcbiAgICB9XHJcblxyXG4gICAgaW5pdGlhbGl6ZSgpIHtcclxuICAgICAgICBpZiAoIWZzLmV4aXN0c1N5bmModGhpcy5iYXNlRm9sZGVyKSkgZnMubWtkaXJTeW5jKHRoaXMuYmFzZUZvbGRlcik7XHJcbiAgICAgICAgaWYgKCFmcy5leGlzdHNTeW5jKHRoaXMuZGF0YUZvbGRlcikpIGZzLm1rZGlyU3luYyh0aGlzLmRhdGFGb2xkZXIpO1xyXG4gICAgICAgIGlmICghZnMuZXhpc3RzU3luYyh0aGlzLmxvY2FsZUZvbGRlcikpIGZzLm1rZGlyU3luYyh0aGlzLmxvY2FsZUZvbGRlcik7XHJcbiAgICAgICAgaWYgKCFmcy5leGlzdHNTeW5jKHRoaXMuZW1vdGVGb2xkZXIpKSBmcy5ta2RpclN5bmModGhpcy5lbW90ZUZvbGRlcik7XHJcbiAgICAgICAgaWYgKCFmcy5leGlzdHNTeW5jKHRoaXMuY2FjaGVGaWxlKSkgZnMud3JpdGVGaWxlU3luYyh0aGlzLmNhY2hlRmlsZSwgSlNPTi5zdHJpbmdpZnkoe30pKTtcclxuICAgICAgICBpZiAoIWZzLmV4aXN0c1N5bmModGhpcy5jdXN0b21DU1MpKSBmcy53cml0ZUZpbGVTeW5jKHRoaXMuY3VzdG9tQ1NTLCBcIlwiKTtcclxuICAgICAgICBjb25zdCBkYXRhRmlsZXMgPSBmcy5yZWFkZGlyU3luYyh0aGlzLmRhdGFGb2xkZXIpLmZpbHRlcihmID0+ICFmcy5zdGF0U3luYyhwYXRoLnJlc29sdmUodGhpcy5kYXRhRm9sZGVyLCBmKSkuaXNEaXJlY3RvcnkoKSAmJiBmLmVuZHNXaXRoKFwiLmpzb25cIikpO1xyXG4gICAgICAgIGZvciAoY29uc3QgZmlsZSBvZiBkYXRhRmlsZXMpIHtcclxuICAgICAgICAgICAgdGhpcy5kYXRhW2ZpbGUuc3BsaXQoXCIuXCIpWzBdXSA9IF9fbm9uX3dlYnBhY2tfcmVxdWlyZV9fKHBhdGgucmVzb2x2ZSh0aGlzLmRhdGFGb2xkZXIsIGZpbGUpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jYWNoZURhdGEgPSBVdGlsaXRpZXMudGVzdEpTT04oZnMucmVhZEZpbGVTeW5jKHRoaXMuY2FjaGVGaWxlKS50b1N0cmluZygpKSB8fCB7fTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgaW5qZWN0aW9uUGF0aCgpIHtcclxuICAgICAgICBpZiAodGhpcy5faW5qZWN0aW9uUGF0aCkgcmV0dXJuIHRoaXMuX2luamVjdGlvblBhdGg7XHJcbiAgICAgICAgY29uc3QgZWxlY3Ryb24gPSByZXF1aXJlKFwiZWxlY3Ryb25cIikucmVtb3RlLmFwcDtcclxuICAgICAgICBjb25zdCBiYXNlID0gZWxlY3Ryb24uZ2V0QXBwUGF0aCgpO1xyXG4gICAgICAgIGNvbnN0IHJvYW1pbmdCYXNlID0gZWxlY3Ryb24uZ2V0UGF0aChcInVzZXJEYXRhXCIpO1xyXG4gICAgICAgIGNvbnN0IHJvYW1pbmdMb2NhdGlvbiA9IHBhdGgucmVzb2x2ZShyb2FtaW5nQmFzZSwgZWxlY3Ryb24uZ2V0VmVyc2lvbigpLCBcIm1vZHVsZXNcIiwgXCJkaXNjb3JkX2Rlc2t0b3BfY29yZVwiLCBcImluamVjdG9yXCIpO1xyXG4gICAgICAgIGNvbnN0IGxvY2F0aW9uID0gcGF0aC5yZXNvbHZlKGJhc2UsIFwiLi5cIiwgXCJhcHBcIik7XHJcbiAgICAgICAgY29uc3QgcmVhbExvY2F0aW9uID0gZnMuZXhpc3RzU3luYyhsb2NhdGlvbikgPyBsb2NhdGlvbiA6IGZzLmV4aXN0c1N5bmMocm9hbWluZ0xvY2F0aW9uKSA/IHJvYW1pbmdMb2NhdGlvbiA6IG51bGw7XHJcbiAgICAgICAgaWYgKCFyZWFsTG9jYXRpb24pIHJldHVybiB0aGlzLl9pbmplY3Rpb25QYXRoID0gbnVsbDtcclxuICAgICAgICByZXR1cm4gdGhpcy5faW5qZWN0aW9uUGF0aCA9IHJlYWxMb2NhdGlvbjtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgY3VzdG9tQ1NTKCkge3JldHVybiB0aGlzLl9jdXN0b21DU1MgfHwgKHRoaXMuX2N1c3RvbUNTUyA9IHBhdGgucmVzb2x2ZSh0aGlzLmRhdGFGb2xkZXIsIFwiY3VzdG9tLmNzc1wiKSk7fVxyXG4gICAgZ2V0IGJhc2VGb2xkZXIoKSB7cmV0dXJuIHRoaXMuX2Jhc2VGb2xkZXIgfHwgKHRoaXMuX2Jhc2VGb2xkZXIgPSBwYXRoLnJlc29sdmUoQ29uZmlnLmRhdGFQYXRoLCBcImRhdGFcIikpO31cclxuICAgIGdldCBkYXRhRm9sZGVyKCkge3JldHVybiB0aGlzLl9kYXRhRm9sZGVyIHx8ICh0aGlzLl9kYXRhRm9sZGVyID0gcGF0aC5yZXNvbHZlKHRoaXMuYmFzZUZvbGRlciwgYCR7cmVsZWFzZUNoYW5uZWx9YCkpO31cclxuICAgIGdldCBsb2NhbGVGb2xkZXIoKSB7cmV0dXJuIHRoaXMuX2xvY2FsZUZvbGRlciB8fCAodGhpcy5fbG9jYWxlRm9sZGVyID0gcGF0aC5yZXNvbHZlKHRoaXMuYmFzZUZvbGRlciwgYGxvY2FsZXNgKSk7fVxyXG4gICAgZ2V0IGVtb3RlRm9sZGVyKCkge3JldHVybiB0aGlzLl9lbW90ZUZvbGRlciB8fCAodGhpcy5fZW1vdGVGb2xkZXIgPSBwYXRoLnJlc29sdmUodGhpcy5iYXNlRm9sZGVyLCBgZW1vdGVzYCkpO31cclxuICAgIGdldCBjYWNoZUZpbGUoKSB7cmV0dXJuIHRoaXMuX2NhY2hlRmlsZSB8fCAodGhpcy5fY2FjaGVGaWxlID0gcGF0aC5yZXNvbHZlKHRoaXMuYmFzZUZvbGRlciwgYC5jYWNoZWApKTt9XHJcbiAgICBnZXRQbHVnaW5GaWxlKHBsdWdpbk5hbWUpIHtyZXR1cm4gcGF0aC5yZXNvbHZlKENvbmZpZy5kYXRhUGF0aCwgXCJwbHVnaW5zXCIsIHBsdWdpbk5hbWUgKyBcIi5jb25maWcuanNvblwiKTt9XHJcblxyXG5cclxuICAgIF9nZXRGaWxlKGtleSkge1xyXG4gICAgICAgIGlmIChrZXkgPT0gXCJzZXR0aW5nc1wiIHx8IGtleSA9PSBcInBsdWdpbnNcIiB8fCBrZXkgPT0gXCJ0aGVtZXNcIiB8fCBrZXkgPT0gXCJ3aW5kb3dcIikgcmV0dXJuIHBhdGgucmVzb2x2ZSh0aGlzLmRhdGFGb2xkZXIsIGAke2tleX0uanNvbmApO1xyXG4gICAgICAgIHJldHVybiBwYXRoLnJlc29sdmUodGhpcy5kYXRhRm9sZGVyLCBgbWlzYy5qc29uYCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0QkREYXRhKGtleSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRhdGEubWlzY1trZXldIHx8IFwiXCI7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0QkREYXRhKGtleSwgdmFsdWUpIHtcclxuICAgICAgICB0aGlzLmRhdGEubWlzY1trZXldID0gdmFsdWU7XHJcbiAgICAgICAgZnMud3JpdGVGaWxlU3luYyhwYXRoLnJlc29sdmUodGhpcy5kYXRhRm9sZGVyLCBgbWlzYy5qc29uYCksIEpTT04uc3RyaW5naWZ5KHRoaXMuZGF0YS5taXNjLCBudWxsLCA0KSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0TG9jYWxlKGxvY2FsZSkge1xyXG4gICAgICAgIGNvbnN0IGZpbGUgPSBwYXRoLnJlc29sdmUodGhpcy5sb2NhbGVGb2xkZXIsIGAke2xvY2FsZX0uanNvbmApO1xyXG4gICAgICAgIGlmICghZnMuZXhpc3RzU3luYyhmaWxlKSkgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgcmV0dXJuIFV0aWxpdGllcy50ZXN0SlNPTihmcy5yZWFkRmlsZVN5bmMoZmlsZSkudG9TdHJpbmcoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2F2ZUxvY2FsZShsb2NhbGUsIHN0cmluZ3MpIHtcclxuICAgICAgICBmcy53cml0ZUZpbGVTeW5jKHBhdGgucmVzb2x2ZSh0aGlzLmxvY2FsZUZvbGRlciwgYCR7bG9jYWxlfS5qc29uYCksIEpTT04uc3RyaW5naWZ5KHN0cmluZ3MsIG51bGwsIDQpKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRDYWNoZUhhc2goY2F0ZWdvcnksIGtleSkge1xyXG4gICAgICAgIGlmICghdGhpcy5jYWNoZURhdGFbY2F0ZWdvcnldKSByZXR1cm4gXCJcIjtcclxuICAgICAgICBpZiAoIWZzLmV4aXN0c1N5bmMocGF0aC5yZXNvbHZlKHRoaXMuYmFzZUZvbGRlciwgY2F0ZWdvcnksIGAke2tleX0uanNvbmApKSkgcmV0dXJuIFwiXCI7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY2FjaGVEYXRhW2NhdGVnb3J5XVtrZXldIHx8IFwiXCI7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0Q2FjaGVIYXNoKGNhdGVnb3J5LCBrZXksIGhhc2gpIHtcclxuICAgICAgICBpZiAoIXRoaXMuY2FjaGVEYXRhW2NhdGVnb3J5XSkgdGhpcy5jYWNoZURhdGFbY2F0ZWdvcnldID0ge307XHJcbiAgICAgICAgdGhpcy5jYWNoZURhdGFbY2F0ZWdvcnldW2tleV0gPSBoYXNoO1xyXG4gICAgICAgIGZzLndyaXRlRmlsZVN5bmModGhpcy5jYWNoZUZpbGUsIEpTT04uc3RyaW5naWZ5KHRoaXMuY2FjaGVEYXRhKSk7XHJcbiAgICB9XHJcblxyXG4gICAgaW52YWxpZGF0ZUNhY2hlKGNhdGVnb3J5LCBrZXkpIHtcclxuICAgICAgICBpZiAoIXRoaXMuY2FjaGVEYXRhW2NhdGVnb3J5XSkgcmV0dXJuO1xyXG4gICAgICAgIGRlbGV0ZSB0aGlzLmNhY2hlRGF0YVtjYXRlZ29yeV1ba2V5XTtcclxuICAgICAgICBmcy53cml0ZUZpbGVTeW5jKHRoaXMuY2FjaGVGaWxlLCBKU09OLnN0cmluZ2lmeSh0aGlzLmNhY2hlRGF0YSkpO1xyXG4gICAgfVxyXG5cclxuICAgIGVtb3Rlc0V4aXN0KGNhdGVnb3J5KSB7XHJcbiAgICAgICAgcmV0dXJuIGZzLmV4aXN0c1N5bmMocGF0aC5yZXNvbHZlKHRoaXMuZW1vdGVGb2xkZXIsIGAke2NhdGVnb3J5fS5qc29uYCkpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEVtb3RlRGF0YShjYXRlZ29yeSkge1xyXG4gICAgICAgIGNvbnN0IGZpbGUgPSBwYXRoLnJlc29sdmUodGhpcy5lbW90ZUZvbGRlciwgYCR7Y2F0ZWdvcnl9Lmpzb25gKTtcclxuICAgICAgICBpZiAoIWZzLmV4aXN0c1N5bmMoZmlsZSkpIHJldHVybiBudWxsO1xyXG4gICAgICAgIHJldHVybiBVdGlsaXRpZXMudGVzdEpTT04oZnMucmVhZEZpbGVTeW5jKGZpbGUpLnRvU3RyaW5nKCkpO1xyXG4gICAgfVxyXG5cclxuICAgIHNhdmVFbW90ZURhdGEoY2F0ZWdvcnksIGRhdGEpIHtcclxuICAgICAgICBmcy53cml0ZUZpbGVTeW5jKHBhdGgucmVzb2x2ZSh0aGlzLmVtb3RlRm9sZGVyLCBgJHtjYXRlZ29yeX0uanNvbmApLCBKU09OLnN0cmluZ2lmeShkYXRhKSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0RGF0YShrZXkpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5kYXRhW2tleV0gfHwgXCJcIjtcclxuICAgIH1cclxuXHJcbiAgICBzZXREYXRhKGtleSwgdmFsdWUpIHtcclxuICAgICAgICB0aGlzLmRhdGFba2V5XSA9IHZhbHVlO1xyXG4gICAgICAgIGZzLndyaXRlRmlsZVN5bmMocGF0aC5yZXNvbHZlKHRoaXMuZGF0YUZvbGRlciwgYCR7a2V5fS5qc29uYCksIEpTT04uc3RyaW5naWZ5KHZhbHVlLCBudWxsLCA0KSk7XHJcbiAgICB9XHJcblxyXG4gICAgbG9hZEN1c3RvbUNTUygpIHtcclxuICAgICAgICByZXR1cm4gZnMucmVhZEZpbGVTeW5jKHRoaXMuY3VzdG9tQ1NTKS50b1N0cmluZygpO1xyXG4gICAgfVxyXG5cclxuICAgIHNhdmVDdXN0b21DU1MoY3NzKSB7XHJcbiAgICAgICAgcmV0dXJuIGZzLndyaXRlRmlsZVN5bmModGhpcy5jdXN0b21DU1MsIGNzcyk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0UGx1Z2luRGF0YShwbHVnaW5OYW1lLCBrZXkpIHtcclxuICAgICAgICBpZiAodGhpcy5wbHVnaW5EYXRhW3BsdWdpbk5hbWVdICE9PSB1bmRlZmluZWQpIHJldHVybiB0aGlzLnBsdWdpbkRhdGFbcGx1Z2luTmFtZV1ba2V5XSB8fCB1bmRlZmluZWQ7XHJcbiAgICAgICAgaWYgKCFmcy5leGlzdHNTeW5jKHRoaXMuZ2V0UGx1Z2luRmlsZShwbHVnaW5OYW1lKSkpIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgdGhpcy5wbHVnaW5EYXRhW3BsdWdpbk5hbWVdID0gSlNPTi5wYXJzZShmcy5yZWFkRmlsZVN5bmModGhpcy5nZXRQbHVnaW5GaWxlKHBsdWdpbk5hbWUpKSk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucGx1Z2luRGF0YVtwbHVnaW5OYW1lXVtrZXldIHx8IHVuZGVmaW5lZDtcclxuICAgIH1cclxuXHJcbiAgICBzZXRQbHVnaW5EYXRhKHBsdWdpbk5hbWUsIGtleSwgdmFsdWUpIHtcclxuICAgICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkgcmV0dXJuO1xyXG4gICAgICAgIGlmICh0aGlzLnBsdWdpbkRhdGFbcGx1Z2luTmFtZV0gPT09IHVuZGVmaW5lZCkgdGhpcy5wbHVnaW5EYXRhW3BsdWdpbk5hbWVdID0ge307XHJcbiAgICAgICAgdGhpcy5wbHVnaW5EYXRhW3BsdWdpbk5hbWVdW2tleV0gPSB2YWx1ZTtcclxuICAgICAgICBmcy53cml0ZUZpbGVTeW5jKHRoaXMuZ2V0UGx1Z2luRmlsZShwbHVnaW5OYW1lKSwgSlNPTi5zdHJpbmdpZnkodGhpcy5wbHVnaW5EYXRhW3BsdWdpbk5hbWVdLCBudWxsLCA0KSk7XHJcbiAgICB9XHJcblxyXG4gICAgZGVsZXRlUGx1Z2luRGF0YShwbHVnaW5OYW1lLCBrZXkpIHtcclxuICAgICAgICBpZiAodGhpcy5wbHVnaW5EYXRhW3BsdWdpbk5hbWVdID09PSB1bmRlZmluZWQpIHRoaXMucGx1Z2luRGF0YVtwbHVnaW5OYW1lXSA9IHt9O1xyXG4gICAgICAgIGRlbGV0ZSB0aGlzLnBsdWdpbkRhdGFbcGx1Z2luTmFtZV1ba2V5XTtcclxuICAgICAgICBmcy53cml0ZUZpbGVTeW5jKHRoaXMuZ2V0UGx1Z2luRmlsZShwbHVnaW5OYW1lKSwgSlNPTi5zdHJpbmdpZnkodGhpcy5wbHVnaW5EYXRhW3BsdWdpbk5hbWVdLCBudWxsLCA0KSk7XHJcbiAgICB9XHJcbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/datastore.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var data__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! data */ \"./src/data/data.js\");\n/* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utilities */ \"./src/modules/utilities.js\");\n\n\n\nconst fs = __webpack_require__(/*! fs */ \"fs\");\n\nconst path = __webpack_require__(/*! path */ \"path\");\n\nconst releaseChannel = DiscordNative.globals ? DiscordNative.globals.releaseChannel : DiscordNative.app ? DiscordNative.app.getReleaseChannel() : \"stable\"; // Schema\n// =======================\n// %appdata%\\BetterDiscord\n// -> data\n// -> [releaseChannel]\\ (stable/canary/ptb)\n// -> settings.json\n// -> plugins.json\n// -> themes.json\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class DataStore {\n constructor() {\n this.data = {\n misc: {}\n };\n this.pluginData = {};\n this.cacheData = {};\n }\n\n initialize() {\n if (!fs.existsSync(this.baseFolder)) fs.mkdirSync(this.baseFolder);\n if (!fs.existsSync(this.dataFolder)) fs.mkdirSync(this.dataFolder);\n if (!fs.existsSync(this.localeFolder)) fs.mkdirSync(this.localeFolder);\n if (!fs.existsSync(this.emoteFolder)) fs.mkdirSync(this.emoteFolder);\n if (!fs.existsSync(this.cacheFile)) fs.writeFileSync(this.cacheFile, JSON.stringify({}));\n if (!fs.existsSync(this.customCSS)) fs.writeFileSync(this.customCSS, \"\");\n const dataFiles = fs.readdirSync(this.dataFolder).filter(f => !fs.statSync(path.resolve(this.dataFolder, f)).isDirectory() && f.endsWith(\".json\"));\n\n for (const file of dataFiles) {\n this.data[file.split(\".\")[0]] = require(path.resolve(this.dataFolder, file));\n }\n\n this.cacheData = _utilities__WEBPACK_IMPORTED_MODULE_1__[\"default\"].testJSON(fs.readFileSync(this.cacheFile).toString()) || {};\n }\n\n get injectionPath() {\n if (this._injectionPath) return this._injectionPath;\n\n const electron = __webpack_require__(/*! electron */ \"electron\").remote.app;\n\n const base = electron.getAppPath();\n const roamingBase = electron.getPath(\"userData\");\n const roamingLocation = path.resolve(roamingBase, electron.getVersion(), \"modules\", \"discord_desktop_core\", \"injector\");\n const location = path.resolve(base, \"..\", \"app\");\n const realLocation = fs.existsSync(location) ? location : fs.existsSync(roamingLocation) ? roamingLocation : null;\n if (!realLocation) return this._injectionPath = null;\n return this._injectionPath = realLocation;\n }\n\n get customCSS() {\n return this._customCSS || (this._customCSS = path.resolve(this.dataFolder, \"custom.css\"));\n }\n\n get baseFolder() {\n return this._baseFolder || (this._baseFolder = path.resolve(data__WEBPACK_IMPORTED_MODULE_0__[\"Config\"].dataPath, \"data\"));\n }\n\n get dataFolder() {\n return this._dataFolder || (this._dataFolder = path.resolve(this.baseFolder, `${releaseChannel}`));\n }\n\n get localeFolder() {\n return this._localeFolder || (this._localeFolder = path.resolve(this.baseFolder, `locales`));\n }\n\n get emoteFolder() {\n return this._emoteFolder || (this._emoteFolder = path.resolve(this.baseFolder, `emotes`));\n }\n\n get cacheFile() {\n return this._cacheFile || (this._cacheFile = path.resolve(this.baseFolder, `.cache`));\n }\n\n getPluginFile(pluginName) {\n return path.resolve(data__WEBPACK_IMPORTED_MODULE_0__[\"Config\"].dataPath, \"plugins\", pluginName + \".config.json\");\n }\n\n _getFile(key) {\n if (key == \"settings\" || key == \"plugins\" || key == \"themes\" || key == \"window\") return path.resolve(this.dataFolder, `${key}.json`);\n return path.resolve(this.dataFolder, `misc.json`);\n }\n\n getBDData(key) {\n return this.data.misc[key] || \"\";\n }\n\n setBDData(key, value) {\n this.data.misc[key] = value;\n fs.writeFileSync(path.resolve(this.dataFolder, `misc.json`), JSON.stringify(this.data.misc, null, 4));\n }\n\n getLocale(locale) {\n const file = path.resolve(this.localeFolder, `${locale}.json`);\n if (!fs.existsSync(file)) return null;\n return _utilities__WEBPACK_IMPORTED_MODULE_1__[\"default\"].testJSON(fs.readFileSync(file).toString());\n }\n\n saveLocale(locale, strings) {\n fs.writeFileSync(path.resolve(this.localeFolder, `${locale}.json`), JSON.stringify(strings, null, 4));\n }\n\n getCacheHash(category, key) {\n if (!this.cacheData[category]) return \"\";\n if (!fs.existsSync(path.resolve(this.baseFolder, category, `${key}.json`))) return \"\";\n return this.cacheData[category][key] || \"\";\n }\n\n setCacheHash(category, key, hash) {\n if (!this.cacheData[category]) this.cacheData[category] = {};\n this.cacheData[category][key] = hash;\n fs.writeFileSync(this.cacheFile, JSON.stringify(this.cacheData));\n }\n\n invalidateCache(category, key) {\n if (!this.cacheData[category]) return;\n delete this.cacheData[category][key];\n fs.writeFileSync(this.cacheFile, JSON.stringify(this.cacheData));\n }\n\n emotesExist(category) {\n return fs.existsSync(path.resolve(this.emoteFolder, `${category}.json`));\n }\n\n getEmoteData(category) {\n const file = path.resolve(this.emoteFolder, `${category}.json`);\n if (!fs.existsSync(file)) return null;\n return _utilities__WEBPACK_IMPORTED_MODULE_1__[\"default\"].testJSON(fs.readFileSync(file).toString());\n }\n\n saveEmoteData(category, data) {\n fs.writeFileSync(path.resolve(this.emoteFolder, `${category}.json`), JSON.stringify(data));\n }\n\n getData(key) {\n return this.data[key] || \"\";\n }\n\n setData(key, value) {\n this.data[key] = value;\n fs.writeFileSync(path.resolve(this.dataFolder, `${key}.json`), JSON.stringify(value, null, 4));\n }\n\n loadCustomCSS() {\n return fs.readFileSync(this.customCSS).toString();\n }\n\n saveCustomCSS(css) {\n return fs.writeFileSync(this.customCSS, css);\n }\n\n getPluginData(pluginName, key) {\n if (this.pluginData[pluginName] !== undefined) return this.pluginData[pluginName][key] || undefined;\n if (!fs.existsSync(this.getPluginFile(pluginName))) return undefined;\n this.pluginData[pluginName] = JSON.parse(fs.readFileSync(this.getPluginFile(pluginName)));\n return this.pluginData[pluginName][key] || undefined;\n }\n\n setPluginData(pluginName, key, value) {\n if (value === undefined) return;\n if (this.pluginData[pluginName] === undefined) this.pluginData[pluginName] = {};\n this.pluginData[pluginName][key] = value;\n fs.writeFileSync(this.getPluginFile(pluginName), JSON.stringify(this.pluginData[pluginName], null, 4));\n }\n\n deletePluginData(pluginName, key) {\n if (this.pluginData[pluginName] === undefined) this.pluginData[pluginName] = {};\n delete this.pluginData[pluginName][key];\n fs.writeFileSync(this.getPluginFile(pluginName), JSON.stringify(this.pluginData[pluginName], null, 4));\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9kYXRhc3RvcmUuanM/MTA1MiJdLCJuYW1lcyI6WyJmcyIsInJlcXVpcmUiLCJwYXRoIiwicmVsZWFzZUNoYW5uZWwiLCJEaXNjb3JkTmF0aXZlIiwiZ2xvYmFscyIsImFwcCIsImdldFJlbGVhc2VDaGFubmVsIiwiRGF0YVN0b3JlIiwiY29uc3RydWN0b3IiLCJkYXRhIiwibWlzYyIsInBsdWdpbkRhdGEiLCJjYWNoZURhdGEiLCJpbml0aWFsaXplIiwiZXhpc3RzU3luYyIsImJhc2VGb2xkZXIiLCJta2RpclN5bmMiLCJkYXRhRm9sZGVyIiwibG9jYWxlRm9sZGVyIiwiZW1vdGVGb2xkZXIiLCJjYWNoZUZpbGUiLCJ3cml0ZUZpbGVTeW5jIiwiSlNPTiIsInN0cmluZ2lmeSIsImN1c3RvbUNTUyIsImRhdGFGaWxlcyIsInJlYWRkaXJTeW5jIiwiZmlsdGVyIiwiZiIsInN0YXRTeW5jIiwicmVzb2x2ZSIsImlzRGlyZWN0b3J5IiwiZW5kc1dpdGgiLCJmaWxlIiwic3BsaXQiLCJfX25vbl93ZWJwYWNrX3JlcXVpcmVfXyIsIlV0aWxpdGllcyIsInRlc3RKU09OIiwicmVhZEZpbGVTeW5jIiwidG9TdHJpbmciLCJpbmplY3Rpb25QYXRoIiwiX2luamVjdGlvblBhdGgiLCJlbGVjdHJvbiIsInJlbW90ZSIsImJhc2UiLCJnZXRBcHBQYXRoIiwicm9hbWluZ0Jhc2UiLCJnZXRQYXRoIiwicm9hbWluZ0xvY2F0aW9uIiwiZ2V0VmVyc2lvbiIsImxvY2F0aW9uIiwicmVhbExvY2F0aW9uIiwiX2N1c3RvbUNTUyIsIl9iYXNlRm9sZGVyIiwiQ29uZmlnIiwiZGF0YVBhdGgiLCJfZGF0YUZvbGRlciIsIl9sb2NhbGVGb2xkZXIiLCJfZW1vdGVGb2xkZXIiLCJfY2FjaGVGaWxlIiwiZ2V0UGx1Z2luRmlsZSIsInBsdWdpbk5hbWUiLCJfZ2V0RmlsZSIsImtleSIsImdldEJERGF0YSIsInNldEJERGF0YSIsInZhbHVlIiwiZ2V0TG9jYWxlIiwibG9jYWxlIiwic2F2ZUxvY2FsZSIsInN0cmluZ3MiLCJnZXRDYWNoZUhhc2giLCJjYXRlZ29yeSIsInNldENhY2hlSGFzaCIsImhhc2giLCJpbnZhbGlkYXRlQ2FjaGUiLCJlbW90ZXNFeGlzdCIsImdldEVtb3RlRGF0YSIsInNhdmVFbW90ZURhdGEiLCJnZXREYXRhIiwic2V0RGF0YSIsImxvYWRDdXN0b21DU1MiLCJzYXZlQ3VzdG9tQ1NTIiwiY3NzIiwiZ2V0UGx1Z2luRGF0YSIsInVuZGVmaW5lZCIsInBhcnNlIiwic2V0UGx1Z2luRGF0YSIsImRlbGV0ZVBsdWdpbkRhdGEiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7O0FBQ0EsTUFBTUEsRUFBRSxHQUFHQyxtQkFBTyxDQUFDLGNBQUQsQ0FBbEI7O0FBQ0EsTUFBTUMsSUFBSSxHQUFHRCxtQkFBTyxDQUFDLGtCQUFELENBQXBCOztBQUNBLE1BQU1FLGNBQWMsR0FBR0MsYUFBYSxDQUFDQyxPQUFkLEdBQXdCRCxhQUFhLENBQUNDLE9BQWQsQ0FBc0JGLGNBQTlDLEdBQStEQyxhQUFhLENBQUNFLEdBQWQsR0FBb0JGLGFBQWEsQ0FBQ0UsR0FBZCxDQUFrQkMsaUJBQWxCLEVBQXBCLEdBQTRELFFBQWxKLEMsQ0FFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVlLG1FQUFJLE1BQU1DLFNBQU4sQ0FBZ0I7QUFDL0JDLGFBQVcsR0FBRztBQUNWLFNBQUtDLElBQUwsR0FBWTtBQUFDQyxVQUFJLEVBQUU7QUFBUCxLQUFaO0FBQ0EsU0FBS0MsVUFBTCxHQUFrQixFQUFsQjtBQUNBLFNBQUtDLFNBQUwsR0FBaUIsRUFBakI7QUFDSDs7QUFFREMsWUFBVSxHQUFHO0FBQ1QsUUFBSSxDQUFDZCxFQUFFLENBQUNlLFVBQUgsQ0FBYyxLQUFLQyxVQUFuQixDQUFMLEVBQXFDaEIsRUFBRSxDQUFDaUIsU0FBSCxDQUFhLEtBQUtELFVBQWxCO0FBQ3JDLFFBQUksQ0FBQ2hCLEVBQUUsQ0FB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RSxVQUFMLENBQWdCa0QsVUFBaEIsTUFBZ0N3QixTQUFwQyxFQUErQyxLQUFLMUUsVUFBTCxDQUFnQmtELFVBQWhCLElBQThCLEVBQTlCO0FBQy9DLFNBQUtsRCxVQUFMLENBQWdCa0QsVUFBaEIsRUFBNEJFLEdBQTVCLElBQW1DRyxLQUFuQztBQUNBbkUsTUFBRSxDQUFDc0IsYUFBSCxDQUFpQixLQUFLdUMsYUFBTCxDQUFtQkMsVUFBbkIsQ0FBakIsRUFBaUR2QyxJQUFJLENBQUNDLFNBQUwsQ0FBZSxLQUFLWixVQUFMLENBQWdCa0QsVUFBaEIsQ0FBZixFQUE0QyxJQUE1QyxFQUFrRCxDQUFsRCxDQUFqRDtBQUNIOztBQUVEMkIsa0JBQWdCLENBQUMzQixVQUFELEVBQWFFLEdBQWIsRUFBa0I7QUFDOUIsUUFBSSxLQUFLcEQsVUFBTCxDQUFnQmtELFVBQWhCLE1BQWdDd0IsU0FBcEMsRUFBK0MsS0FBSzFFLFVBQUwsQ0FBZ0JrRCxVQUFoQixJQUE4QixFQUE5QjtBQUMvQyxXQUFPLEtBQUtsRCxVQUFMLENBQWdCa0QsVUFBaEIsRUFBNEJFLEdBQTVCLENBQVA7QUFDQWhFLE1BQUUsQ0FBQ3NCLGFBQUgsQ0FBaUIsS0FBS3VDLGFBQUwsQ0FBbUJDLFVBQW5CLENBQWpCLEVBQWlEdkMsSUFBSSxDQUFDQyxTQUFMLENBQWUsS0FBS1osVUFBTCxDQUFnQmtELFVBQWhCLENBQWYsRUFBNEMsSUFBNUMsRUFBa0QsQ0FBbEQsQ0FBakQ7QUFDSDs7QUFySThCLENBQXBCLEVBQWYiLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9kYXRhc3RvcmUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbmZpZ30gZnJvbSBcImRhdGFcIjtcclxuaW1wb3J0IFV0aWxpdGllcyBmcm9tIFwiLi91dGlsaXRpZXNcIjtcclxuY29uc3QgZnMgPSByZXF1aXJlKFwiZnNcIik7XHJcbmNvbnN0IHBhdGggPSByZXF1aXJlKFwicGF0aFwiKTtcclxuY29uc3QgcmVsZWFzZUNoYW5uZWwgPSBEaXNjb3JkTmF0aXZlLmdsb2JhbHMgPyBEaXNjb3JkTmF0aXZlLmdsb2JhbHMucmVsZWFzZUNoYW5uZWwgOiBEaXNjb3JkTmF0aXZlLmFwcCA/IERpc2NvcmROYXRpdmUuYXBwLmdldFJlbGVhc2VDaGFubmVsKCkgOiBcInN0YWJsZVwiO1xyXG5cclxuLy8gU2NoZW1hXHJcbi8vID09PT09PT09PT09PT09PT09PT09PT09XHJcbi8vICVhcHBkYXRhJVxcQmV0dGVyRGlzY29yZFxyXG4vLyAgICAgLT4gZGF0YVxyXG4vLyAgICAgICAgIC0+IFtyZWxlYXNlQ2hhbm5lbF1cXCAoc3RhYmxlL2NhbmFyeS9wdGIpXHJcbi8vICAgICAgICAgICAgIC0+IHNldHRpbmdzLmpzb25cclxuLy8gICAgICAgICAgICAgLT4gcGx1Z2lucy5qc29uXHJcbi8vICAgICAgICAgICAgIC0+IHRoZW1lcy5qc29uXHJcblxyXG5leHBvcnQgZGVmYXVsdCBuZXcgY2xhc3MgRGF0YVN0b3JlIHtcclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIHRoaXMuZGF0YSA9IHttaXNjOiB7fX07XHJcbiAgICAgICAgdGhpcy5wbHVnaW5EYXRhID0ge307XHJcbiAgICAgICAgdGhpcy5jYWNoZURhdGEgPSB7fTtcclxuICAgIH1cclxuXHJcbiAgICBpbml0aWFsaXplKCkge1xyXG4gICAgICAgIGlmICghZnMuZXhpc3RzU3luYyh0aGlzLmJhc2VGb2xkZXIpKSBmcy5ta2RpclN5bmModGhpcy5iYXNlRm9sZGVyKTtcclxuICAgICAgICBpZiAoIWZzLmV4aXN0c1N5bmModGhpcy5kYXRhRm9sZGVyKSkgZnMubWtkaXJTeW5jKHRoaXMuZGF0YUZvbGRlcik7XHJcbiAgICAgICAgaWYgKCFmcy5leGlzdHNTeW5jKHRoaXMubG9jYWxlRm9sZGVyKSkgZnMubWtkaXJTeW5jKHRoaXMubG9jYWxlRm9sZGVyKTtcclxuICAgICAgICBpZiAoIWZzLmV4aXN0c1N5bmModGhpcy5lbW90ZUZvbGRlcikpIGZzLm1rZGlyU3luYyh0aGlzLmVtb3RlRm9sZGVyKTtcclxuICAgICAgICBpZiAoIWZzLmV4aXN0c1N5bmModGhpcy5jYWNoZUZpbGUpKSBmcy53cml0ZUZpbGVTeW5jKHRoaXMuY2FjaGVGaWxlLCBKU09OLnN0cmluZ2lmeSh7fSkpO1xyXG4gICAgICAgIGlmICghZnMuZXhpc3RzU3luYyh0aGlzLmN1c3RvbUNTUykpIGZzLndyaXRlRmlsZVN5bmModGhpcy5jdXN0b21DU1MsIFwiXCIpO1xyXG4gICAgICAgIGNvbnN0IGRhdGFGaWxlcyA9IGZzLnJlYWRkaXJTeW5jKHRoaXMuZGF0YUZvbGRlcikuZmlsdGVyKGYgPT4gIWZzLnN0YXRTeW5jKHBhdGgucmVzb2x2ZSh0aGlzLmRhdGFGb2xkZXIsIGYpKS5pc0RpcmVjdG9yeSgpICYmIGYuZW5kc1dpdGgoXCIuanNvblwiKSk7XHJcbiAgICAgICAgZm9yIChjb25zdCBmaWxlIG9mIGRhdGFGaWxlcykge1xyXG4gICAgICAgICAgICB0aGlzLmRhdGFbZmlsZS5zcGxpdChcIi5cIilbMF1dID0gX19ub25fd2VicGFja19yZXF1aXJlX18ocGF0aC5yZXNvbHZlKHRoaXMuZGF0YUZvbGRlciwgZmlsZSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNhY2hlRGF0YSA9IFV0aWxpdGllcy50ZXN0SlNPTihmcy5yZWFkRmlsZVN5bmModGhpcy5jYWNoZUZpbGUpLnRvU3RyaW5nKCkpIHx8IHt9O1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBpbmplY3Rpb25QYXRoKCkge1xyXG4gICAgICAgIGlmICh0aGlzLl9pbmplY3Rpb25QYXRoKSByZXR1cm4gdGhpcy5faW5qZWN0aW9uUGF0aDtcclxuICAgICAgICBjb25zdCBlbGVjdHJvbiA9IHJlcXVpcmUoXCJlbGVjdHJvblwiKS5yZW1vdGUuYXBwO1xyXG4gICAgICAgIGNvbnN0IGJhc2UgPSBlbGVjdHJvbi5nZXRBcHBQYXRoKCk7XHJcbiAgICAgICAgY29uc3Qgcm9hbWluZ0Jhc2UgPSBlbGVjdHJvbi5nZXRQYXRoKFwidXNlckRhdGFcIik7XHJcbiAgICAgICAgY29uc3Qgcm9hbWluZ0xvY2F0aW9uID0gcGF0aC5yZXNvbHZlKHJvYW1pbmdCYXNlLCBlbGVjdHJvbi5nZXRWZXJzaW9uKCksIFwibW9kdWxlc1wiLCBcImRpc2NvcmRfZGVza3RvcF9jb3JlXCIsIFwiaW5qZWN0b3JcIik7XHJcbiAgICAgICAgY29uc3QgbG9jYXRpb24gPSBwYXRoLnJlc29sdmUoYmFzZSwgXCIuLlwiLCBcImFwcFwiKTtcclxuICAgICAgICBjb25zdCByZWFsTG9jYXRpb24gPSBmcy5leGlzdHNTeW5jKGxvY2F0aW9uKSA/IGxvY2F0aW9uIDogZnMuZXhpc3RzU3luYyhyb2FtaW5nTG9jYXRpb24pID8gcm9hbWluZ0xvY2F0aW9uIDogbnVsbDtcclxuICAgICAgICBpZiAoIXJlYWxMb2NhdGlvbikgcmV0dXJuIHRoaXMuX2luamVjdGlvblBhdGggPSBudWxsO1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9pbmplY3Rpb25QYXRoID0gcmVhbExvY2F0aW9uO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBjdXN0b21DU1MoKSB7cmV0dXJuIHRoaXMuX2N1c3RvbUNTUyB8fCAodGhpcy5fY3VzdG9tQ1NTID0gcGF0aC5yZXNvbHZlKHRoaXMuZGF0YUZvbGRlciwgXCJjdXN0b20uY3NzXCIpKTt9XHJcbiAgICBnZXQgYmFzZUZvbGRlcigpIHtyZXR1cm4gdGhpcy5fYmFzZUZvbGRlciB8fCAodGhpcy5fYmFzZUZvbGRlciA9IHBhdGgucmVzb2x2ZShDb25maWcuZGF0YVBhdGgsIFwiZGF0YVwiKSk7fVxyXG4gICAgZ2V0IGRhdGFGb2xkZXIoKSB7cmV0dXJuIHRoaXMuX2RhdGFGb2xkZXIgfHwgKHRoaXMuX2RhdGFGb2xkZXIgPSBwYXRoLnJlc29sdmUodGhpcy5iYXNlRm9sZGVyLCBgJHtyZWxlYXNlQ2hhbm5lbH1gKSk7fVxyXG4gICAgZ2V0IGxvY2FsZUZvbGRlcigpIHtyZXR1cm4gdGhpcy5fbG9jYWxlRm9sZGVyIHx8ICh0aGlzLl9sb2NhbGVGb2xkZXIgPSBwYXRoLnJlc29sdmUodGhpcy5iYXNlRm9sZGVyLCBgbG9jYWxlc2ApKTt9XHJcbiAgICBnZXQgZW1vdGVGb2xkZXIoKSB7cmV0dXJuIHRoaXMuX2Vtb3RlRm9sZGVyIHx8ICh0aGlzLl9lbW90ZUZvbGRlciA9IHBhdGgucmVzb2x2ZSh0aGlzLmJhc2VGb2xkZXIsIGBlbW90ZXNgKSk7fVxyXG4gICAgZ2V0IGNhY2hlRmlsZSgpIHtyZXR1cm4gdGhpcy5fY2FjaGVGaWxlIHx8ICh0aGlzLl9jYWNoZUZpbGUgPSBwYXRoLnJlc29sdmUodGhpcy5iYXNlRm9sZGVyLCBgLmNhY2hlYCkpO31cclxuICAgIGdldFBsdWdpbkZpbGUocGx1Z2luTmFtZSkge3JldHVybiBwYXRoLnJlc29sdmUoQ29uZmlnLmRhdGFQYXRoLCBcInBsdWdpbnNcIiwgcGx1Z2luTmFtZSArIFwiLmNvbmZpZy5qc29uXCIpO31cclxuXHJcblxyXG4gICAgX2dldEZpbGUoa2V5KSB7XHJcbiAgICAgICAgaWYgKGtleSA9PSBcInNldHRpbmdzXCIgfHwga2V5ID09IFwicGx1Z2luc1wiIHx8IGtleSA9PSBcInRoZW1lc1wiIHx8IGtleSA9PSBcIndpbmRvd1wiKSByZXR1cm4gcGF0aC5yZXNvbHZlKHRoaXMuZGF0YUZvbGRlciwgYCR7a2V5fS5qc29uYCk7XHJcbiAgICAgICAgcmV0dXJuIHBhdGgucmVzb2x2ZSh0aGlzLmRhdGFGb2xkZXIsIGBtaXNjLmpzb25gKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRCRERhdGEoa2V5KSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YS5taXNjW2tleV0gfHwgXCJcIjtcclxuICAgIH1cclxuXHJcbiAgICBzZXRCRERhdGEoa2V5LCB2YWx1ZSkge1xyXG4gICAgICAgIHRoaXMuZGF0YS5taXNjW2tleV0gPSB2YWx1ZTtcclxuICAgICAgICBmcy53cml0ZUZpbGVTeW5jKHBhdGgucmVzb2x2ZSh0aGlzLmRhdGFGb2xkZXIsIGBtaXNjLmpzb25gKSwgSlNPTi5zdHJpbmdpZnkodGhpcy5kYXRhLm1pc2MsIG51bGwsIDQpKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRMb2NhbGUobG9jYWxlKSB7XHJcbiAgICAgICAgY29uc3QgZmlsZSA9IHBhdGgucmVzb2x2ZSh0aGlzLmxvY2FsZUZvbGRlciwgYCR7bG9jYWxlfS5qc29uYCk7XHJcbiAgICAgICAgaWYgKCFmcy5leGlzdHNTeW5jKGZpbGUpKSByZXR1cm4gbnVsbDtcclxuICAgICAgICByZXR1cm4gVXRpbGl0aWVzLnRlc3RKU09OKGZzLnJlYWRGaWxlU3luYyhmaWxlKS50b1N0cmluZygpKTtcclxuICAgIH1cclxuXHJcbiAgICBzYXZlTG9jYWxlKGxvY2FsZSwgc3RyaW5ncykge1xyXG4gICAgICAgIGZzLndyaXRlRmlsZVN5bmMocGF0aC5yZXNvbHZlKHRoaXMubG9jYWxlRm9sZGVyLCBgJHtsb2NhbGV9Lmpzb25gKSwgSlNPTi5zdHJpbmdpZnkoc3RyaW5ncywgbnVsbCwgNCkpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldENhY2hlSGFzaChjYXRlZ29yeSwga2V5KSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmNhY2hlRGF0YVtjYXRlZ29yeV0pIHJldHVybiBcIlwiO1xyXG4gICAgICAgIGlmICghZnMuZXhpc3RzU3luYyhwYXRoLnJlc29sdmUodGhpcy5iYXNlRm9sZGVyLCBjYXRlZ29yeSwgYCR7a2V5fS5qc29uYCkpKSByZXR1cm4gXCJcIjtcclxuICAgICAgICByZXR1cm4gdGhpcy5jYWNoZURhdGFbY2F0ZWdvcnldW2tleV0gfHwgXCJcIjtcclxuICAgIH1cclxuXHJcbiAgICBzZXRDYWNoZUhhc2goY2F0ZWdvcnksIGtleSwgaGFzaCkge1xyXG4gICAgICAgIGlmICghdGhpcy5jYWNoZURhdGFbY2F0ZWdvcnldKSB0aGlzLmNhY2hlRGF0YVtjYXRlZ29yeV0gPSB7fTtcclxuICAgICAgICB0aGlzLmNhY2hlRGF0YVtjYXRlZ29yeV1ba2V5XSA9IGhhc2g7XHJcbiAgICAgICAgZnMud3JpdGVGaWxlU3luYyh0aGlzLmNhY2hlRmlsZSwgSlNPTi5zdHJpbmdpZnkodGhpcy5jYWNoZURhdGEpKTtcclxuICAgIH1cclxuXHJcbiAgICBpbnZhbGlkYXRlQ2FjaGUoY2F0ZWdvcnksIGtleSkge1xyXG4gICAgICAgIGlmICghdGhpcy5jYWNoZURhdGFbY2F0ZWdvcnldKSByZXR1cm47XHJcbiAgICAgICAgZGVsZXRlIHRoaXMuY2FjaGVEYXRhW2NhdGVnb3J5XVtrZXldO1xyXG4gICAgICAgIGZzLndyaXRlRmlsZVN5bmModGhpcy5jYWNoZUZpbGUsIEpTT04uc3RyaW5naWZ5KHRoaXMuY2FjaGVEYXRhKSk7XHJcbiAgICB9XHJcblxyXG4gICAgZW1vdGVzRXhpc3QoY2F0ZWdvcnkpIHtcclxuICAgICAgICByZXR1cm4gZnMuZXhpc3RzU3luYyhwYXRoLnJlc29sdmUodGhpcy5lbW90ZUZvbGRlciwgYCR7Y2F0ZWdvcnl9Lmpzb25gKSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0RW1vdGVEYXRhKGNhdGVnb3J5KSB7XHJcbiAgICAgICAgY29uc3QgZmlsZSA9IHBhdGgucmVzb2x2ZSh0aGlzLmVtb3RlRm9sZGVyLCBgJHtjYXRlZ29yeX0uanNvbmApO1xyXG4gICAgICAgIGlmICghZnMuZXhpc3RzU3luYyhmaWxlKSkgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgcmV0dXJuIFV0aWxpdGllcy50ZXN0SlNPTihmcy5yZWFkRmlsZVN5bmMoZmlsZSkudG9TdHJpbmcoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2F2ZUVtb3RlRGF0YShjYXRlZ29yeSwgZGF0YSkge1xyXG4gICAgICAgIGZzLndyaXRlRmlsZVN5bmMocGF0aC5yZXNvbHZlKHRoaXMuZW1vdGVGb2xkZXIsIGAke2NhdGVnb3J5fS5qc29uYCksIEpTT04uc3RyaW5naWZ5KGRhdGEpKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXREYXRhKGtleSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRhdGFba2V5XSB8fCBcIlwiO1xyXG4gICAgfVxyXG5cclxuICAgIHNldERhdGEoa2V5LCB2YWx1ZSkge1xyXG4gICAgICAgIHRoaXMuZGF0YVtrZXldID0gdmFsdWU7XHJcbiAgICAgICAgZnMud3JpdGVGaWxlU3luYyhwYXRoLnJlc29sdmUodGhpcy5kYXRhRm9sZGVyLCBgJHtrZXl9Lmpzb25gKSwgSlNPTi5zdHJpbmdpZnkodmFsdWUsIG51bGwsIDQpKTtcclxuICAgIH1cclxuXHJcbiAgICBsb2FkQ3VzdG9tQ1NTKCkge1xyXG4gICAgICAgIHJldHVybiBmcy5yZWFkRmlsZVN5bmModGhpcy5jdXN0b21DU1MpLnRvU3RyaW5nKCk7XHJcbiAgICB9XHJcblxyXG4gICAgc2F2ZUN1c3RvbUNTUyhjc3MpIHtcclxuICAgICAgICByZXR1cm4gZnMud3JpdGVGaWxlU3luYyh0aGlzLmN1c3RvbUNTUywgY3NzKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRQbHVnaW5EYXRhKHBsdWdpbk5hbWUsIGtleSkge1xyXG4gICAgICAgIGlmICh0aGlzLnBsdWdpbkRhdGFbcGx1Z2luTmFtZV0gIT09IHVuZGVmaW5lZCkgcmV0dXJuIHRoaXMucGx1Z2luRGF0YVtwbHVnaW5OYW1lXVtrZXldIHx8IHVuZGVmaW5lZDtcclxuICAgICAgICBpZiAoIWZzLmV4aXN0c1N5bmModGhpcy5nZXRQbHVnaW5GaWxlKHBsdWdpbk5hbWUpKSkgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgICAgICB0aGlzLnBsdWdpbkRhdGFbcGx1Z2luTmFtZV0gPSBKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3luYyh0aGlzLmdldFBsdWdpbkZpbGUocGx1Z2luTmFtZSkpKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5wbHVnaW5EYXRhW3BsdWdpbk5hbWVdW2tleV0gfHwgdW5kZWZpbmVkO1xyXG4gICAgfVxyXG5cclxuICAgIHNldFBsdWdpbkRhdGEocGx1Z2luTmFtZSwga2V5LCB2YWx1ZSkge1xyXG4gICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSByZXR1cm47XHJcbiAgICAgICAgaWYgKHRoaXMucGx1Z2luRGF0YVtwbHVnaW5OYW1lXSA9PT0gdW5kZWZpbmVkKSB0aGlzLnBsdWdpbkRhdGFbcGx1Z2luTmFtZV0gPSB7fTtcclxuICAgICAgICB0aGlzLnBsdWdpbkRhdGFbcGx1Z2luTmFtZV1ba2V5XSA9IHZhbHVlO1xyXG4gICAgICAgIGZzLndyaXRlRmlsZVN5bmModGhpcy5nZXRQbHVnaW5GaWxlKHBsdWdpbk5hbWUpLCBKU09OLnN0cmluZ2lmeSh0aGlzLnBsdWdpbkRhdGFbcGx1Z2luTmFtZV0sIG51bGwsIDQpKTtcclxuICAgIH1cclxuXHJcbiAgICBkZWxldGVQbHVnaW5EYXRhKHBsdWdpbk5hbWUsIGtleSkge1xyXG4gICAgICAgIGlmICh0aGlzLnBsdWdpbkRhdGFbcGx1Z2luTmFtZV0gPT09IHVuZGVmaW5lZCkgdGhpcy5wbHVnaW5EYXRhW3BsdWdpbk5hbWVdID0ge307XHJcbiAgICAgICAgZGVsZXRlIHRoaXMucGx1Z2luRGF0YVtwbHVnaW5OYW1lXVtrZXldO1xyXG4gICAgICAgIGZzLndyaXRlRmlsZVN5bmModGhpcy5nZXRQbHVnaW5GaWxlKHBsdWdpbk5hbWUpLCBKU09OLnN0cmluZ2lmeSh0aGlzLnBsdWdpbkRhdGFbcGx1Z2luTmFtZV0sIG51bGwsIDQpKTtcclxuICAgIH1cclxufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/modules/datastore.js\n"); /***/ }), @@ -443,7 +442,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var data /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utilities */ \"./src/modules/utilities.js\");\n/* harmony import */ var _webpackmodules__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./webpackmodules */ \"./src/modules/webpackmodules.js\");\n/**\r\n * A large list of known and useful webpack modules internal to Discord.\r\n *\r\n * @module DiscordModules\r\n * @version 0.0.3\r\n */\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_utilities__WEBPACK_IMPORTED_MODULE_0__[\"default\"].memoizeObject({\n get React() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"createElement\", \"cloneElement\");\n },\n\n get ReactDOM() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"render\", \"findDOMNode\");\n },\n\n get Flux() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"connectStores\");\n },\n\n get Events() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByPrototypes(\"setMaxListeners\", \"emit\");\n },\n\n /* Guild Info, Stores, and Utilities */\n get GuildStore() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"getGuild\");\n },\n\n get SortedGuildStore() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"getSortedGuilds\");\n },\n\n get SelectedGuildStore() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"getLastSelectedGuildId\");\n },\n\n get GuildSync() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"getSyncedGuilds\");\n },\n\n get GuildInfo() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"getAcronym\");\n },\n\n get GuildChannelsStore() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"getChannels\", \"getDefaultChannel\");\n },\n\n get GuildMemberStore() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"getMember\");\n },\n\n get MemberCountStore() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"getMemberCounts\");\n },\n\n get GuildEmojiStore() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"getEmojis\");\n },\n\n get GuildActions() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"markGuildAsRead\");\n },\n\n get GuildPermissions() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"getGuildPermissions\");\n },\n\n /* Channel Store & Actions */\n get ChannelStore() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"getChannels\", \"getDMFromUserId\");\n },\n\n get SelectedChannelStore() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"getLastSelectedChannelId\");\n },\n\n get ChannelActions() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"selectChannel\");\n },\n\n get PrivateChannelActions() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"openPrivateChannel\");\n },\n\n get ChannelSelector() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"selectGuild\", \"selectChannel\");\n },\n\n /* Current User Info, State and Settings */\n get UserInfoStore() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"getToken\");\n },\n\n get UserSettingsStore() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"guildPositions\");\n },\n\n get AccountManager() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"register\", \"login\");\n },\n\n get UserSettingsUpdater() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"updateRemoteSettings\");\n },\n\n get OnlineWatcher() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"isOnline\");\n },\n\n get CurrentUserIdle() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"getIdleTime\");\n },\n\n get RelationshipStore() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"isBlocked\", \"getFriendIDs\");\n },\n\n get RelationshipManager() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"addRelationship\");\n },\n\n get MentionStore() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"getMentions\");\n },\n\n /* User Stores and Utils */\n get UserStore() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"getCurrentUser\");\n },\n\n get UserStatusStore() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"getStatus\", \"getState\");\n },\n\n get UserTypingStore() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"isTyping\");\n },\n\n get UserActivityStore() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"getActivity\");\n },\n\n get UserNameResolver() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"getName\");\n },\n\n get UserNoteStore() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"getNote\");\n },\n\n get UserNoteActions() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"updateNote\");\n },\n\n /* Emoji Store and Utils */\n get EmojiInfo() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"isEmojiDisabled\");\n },\n\n get EmojiUtils() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"getGuildEmoji\");\n },\n\n get EmojiStore() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"getByCategory\", \"EMOJI_NAME_RE\");\n },\n\n /* Invite Store and Utils */\n get InviteStore() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"getInvites\");\n },\n\n get InviteResolver() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"findInvite\");\n },\n\n get InviteActions() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"acceptInvite\");\n },\n\n /* Discord Objects & Utils */\n get DiscordConstants() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"Permissions\", \"ActivityTypes\", \"StatusTypes\");\n },\n\n get DiscordPermissions() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"Permissions\", \"ActivityTypes\", \"StatusTypes\").Permissions;\n },\n\n get PermissionUtils() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"getHighestRole\");\n },\n\n get ColorConverter() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"hex2int\");\n },\n\n get ColorShader() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"darken\");\n },\n\n get TinyColor() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByPrototypes(\"toRgb\");\n },\n\n get ClassResolver() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"getClass\");\n },\n\n get ButtonData() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"ButtonSizes\");\n },\n\n get IconNames() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"IconNames\");\n },\n\n get NavigationUtils() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"transitionTo\", \"replaceWith\", \"getHistory\");\n },\n\n /* Discord Messages */\n get MessageStore() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"getMessages\");\n },\n\n get MessageActions() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"jumpToMessage\", \"_sendMessage\");\n },\n\n get MessageQueue() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"enqueue\");\n },\n\n get MessageParser() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"createMessage\", \"parse\", \"unparse\");\n },\n\n /* Text Processing */\n get hljs() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"highlight\", \"highlightBlock\");\n },\n\n get SimpleMarkdown() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"parseBlock\", \"parseInline\", \"defaultOutput\");\n },\n\n /* Experiments */\n get ExperimentStore() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"getExperimentOverrides\");\n },\n\n get ExperimentsManager() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"isDeveloper\");\n },\n\n get CurrentExperiment() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"getExperimentId\");\n },\n\n /* Images, Avatars and Utils */\n get ImageResolver() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"getUserAvatarURL\", \"getGuildIconURL\");\n },\n\n get ImageUtils() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"getSizedImageSrc\");\n },\n\n get AvatarDefaults() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"getUserAvatarURL\", \"DEFAULT_AVATARS\");\n },\n\n /* Window, DOM, HTML */\n get WindowInfo() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"isFocused\", \"windowSize\");\n },\n\n get TagInfo() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"VALID_TAG_NAMES\");\n },\n\n get DOMInfo() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"canUseDOM\");\n },\n\n /* Locale/Location and Time */\n get LocaleManager() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"setLocale\");\n },\n\n get Moment() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"parseZone\");\n },\n\n get LocationManager() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"createLocation\");\n },\n\n get Timestamps() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"fromTimestamp\");\n },\n\n get TimeFormatter() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"dateFormat\");\n },\n\n /* Strings and Utils */\n get Strings() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"Messages\").Messages;\n },\n\n get StringFormats() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"a\", \"z\");\n },\n\n get StringUtils() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"toASCII\");\n },\n\n /* URLs and Utils */\n get URLParser() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"Url\", \"parse\");\n },\n\n get ExtraURLs() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"getArticleURL\");\n },\n\n /* Drag & Drop */\n get DNDActions() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"beginDrag\");\n },\n\n get DNDSources() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"addTarget\");\n },\n\n get DNDObjects() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"DragSource\");\n },\n\n /* Media Stuff (Audio/Video) */\n get MediaDeviceInfo() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"Codecs\", \"SUPPORTED_BROWSERS\");\n },\n\n get MediaInfo() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"getOutputVolume\");\n },\n\n get MediaEngineInfo() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"MediaEngineFeatures\");\n },\n\n get VoiceInfo() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"EchoCancellation\");\n },\n\n get VideoStream() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"getVideoStream\");\n },\n\n get SoundModule() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"playSound\");\n },\n\n /* Electron & Other Internals with Utils*/\n get ElectronModule() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"setBadge\");\n },\n\n get Dispatcher() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"dirtyDispatch\");\n },\n\n get PathUtils() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"hasBasename\");\n },\n\n get NotificationModule() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"showNotification\");\n },\n\n get RouterModule() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"Router\");\n },\n\n get APIModule() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"getAPIBaseURL\");\n },\n\n get AnalyticEvents() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"AnalyticEventConfigs\");\n },\n\n get KeyGenerator() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByRegex(/\"binary\"/);\n },\n\n get Buffers() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"Buffer\", \"kMaxLength\");\n },\n\n get DeviceStore() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"getDevices\");\n },\n\n get SoftwareInfo() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"os\");\n },\n\n get CurrentContext() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"setTagsContext\");\n },\n\n /* Commonly Used Classes */\n get GuildClasses() {\n const guildsWrapper = _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"wrapper\", \"unreadMentionsBar\");\n const guilds = _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"guildsError\", \"selected\");\n const pill = _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"blobContainer\");\n return Object.assign({}, guildsWrapper, guilds, pill);\n },\n\n get LayerStack() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"pushLayer\");\n }\n\n}));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL21vZHVsZXMvZGlzY29yZG1vZHVsZXMuanM/YTU0ZCJdLCJuYW1lcyI6WyJVdGlsaXRpZXMiLCJtZW1vaXplT2JqZWN0IiwiUmVhY3QiLCJXZWJwYWNrTW9kdWxlcyIsImdldEJ5UHJvcHMiLCJSZWFjdERPTSIsIkZsdXgiLCJFdmVudHMiLCJnZXRCeVByb3RvdHlwZXMiLCJHdWlsZFN0b3JlIiwiU29ydGVkR3VpbGRTdG9yZSIsIlNlbGVjdGVkR3VpbGRTdG9yZSIsIkd1aWxkU3luYyIsIkd1aWxkSW5mbyIsIkd1aWxkQ2hhbm5lbHNTdG9yZSIsIkd1aWxkTWVtYmVyU3RvcmUiLCJNZW1iZXJDb3VudFN0b3JlIiwiR3VpbGRFbW9qaVN0b3JlIiwiR3VpbGRBY3Rpb25zIiwiR3VpbGRQZXJtaXNzaW9ucyIsIkNoYW5uZWxTdG9yZSIsIlNlbGVjdGVkQ2hhbm5lbFN0b3JlIiwiQ2hhbm5lbEFjdGlvbnMiLCJQcml2YXRlQ2hhbm5lbEFjdGlvbnMiLCJDaGFubmVsU2VsZWN0b3IiLCJVc2VySW5mb1N0b3JlIiwiVXNlclNldHRpbmdzU3RvcmUiLCJBY2NvdW50TWFuYWdlciIsIlVzZXJTZXR0aW5nc1VwZGF0ZXIiLCJPbmxpbmVXYXRjaGVyIiwiQ3VycmVudFVzZXJJZGxlIiwiUmVsYXRpb25zaGlwU3RvcmUiLCJSZWxhdGlvbnNoaXBNYW5hZ2VyIiwiTWVudGlvblN0b3JlIiwiVXNlclN0b3JlIiwiVXNlclN0YXR1c1N0b3JlIiwiVXNlclR5cGluZ1N0b3JlIiwiVXNlckFjdGl2aXR5U3RvcmUiLCJVc2VyTmFtZVJlc29sdmVyIiwiVXNlck5vdGVTdG9yZSIsIlVzZXJOb3RlQWN0aW9ucyIsIkVtb2ppSW5mbyIsIkVtb2ppVXRpbHMiLCJFbW9qaVN0b3JlIiwiSW52aXRlU3RvcmUiLCJJbnZpdGVSZXNvbHZlciIsIkludml0ZUFjdGlvbnMiLCJEaXNjb3JkQ29uc3RhbnRzIiwiRGlzY29yZFBlcm1pc3Npb25zIiwiUGVybWlzc2lvbnMiLCJQZXJtaXNzaW9uVXRpbHMiLCJDb2xvckNvbnZlcnRlciIsIkNvbG9yU2hhZGVyIiwiVGlueUNvbG9yIiwiQ2xhc3NSZXNvbHZlciIsIkJ1dHRvbkRhdGEiLCJJY29uTmFtZXMiLCJOYXZpZ2F0aW9uVXRpbHMiLCJNZXNzYWdlU3RvcmUiLCJNZXNzYWdlQWN0aW9ucyIsIk1lc3NhZ2VRdWV1ZSIsIk1lc3NhZ2VQYXJzZXIiLCJobGpzIiwiU2ltcGxlTWFya2Rvd24iLCJFeHBlcmltZW50U3RvcmUiLCJFeHBlcmltZW50c01hbmFnZXIiLCJDdXJyZW50RXhwZXJpbWVudCIsIkltYWdlUmVzb2x2ZXIiLCJJbWFnZVV0aWxzIiwiQXZhdGFyRGVmYXVsdHMiLCJXaW5kb3dJbmZvIiwiVGFnSW5mbyIsIkRPTUluZm8iLCJMb2NhbGVNYW5hZ2VyIiwiTW9tZW50IiwiTG9jYXRpb25NYW5hZ2VyIiwiVGltZXN0YW1wcyIsIlRpbWVGb3JtYXR0ZXIiLCJTdHJpbmdzIiwiTWVzc2FnZXMiLCJTdHJpbmdGb3JtYXRzIiwiU3RyaW5nVXRpbHMiLCJVUkxQYXJzZXIiLCJFeHRyYVVSTHMiLCJETkRBY3Rpb25zIiwiRE5EU291cmNlcyIsIkRORE9iamVjdHMiLCJNZWRpYURldmljZUluZm8iLCJNZWRpYUluZm8iLCJNZWRpYUVuZ2luZUluZm8iLCJWb2ljZUluZm8iLCJWaWRlb1N0cmVhbSIsIlNvdW5kTW9kdWxlIiwiRWxlY3Ryb25Nb2R1bGUiLCJEaXNwYXRjaGVyIiwiUGF0aFV0aWxzIiwiTm90aWZpY2F0aW9uTW9kdWxlIiwiUm91dGVyTW9kdWxlIiwiQVBJTW9kdWxlIiwiQW5hbHl0aWNFdmVudHMiLCJLZXlHZW5lcmF0b3IiLCJnZXRCeVJlZ2V4IiwiQnVmZmVycyIsIkRldmljZVN0b3JlIiwiU29mdHdhcmVJbmZvIiwiQ3VycmVudENvbnRleHQiLCJHdWlsZENsYXNzZXMiLCJndWlsZHNXcmFwcGVyIiwiZ3VpbGRzIiwicGlsbCIsIk9iamVjdCIsImFzc2lnbiIsIkxheWVyU3RhY2siXSwi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QixFQUF5QyxVQUF6QyxDQUFmO0FBQ0EsVUFBTXlHLElBQUksR0FBRzFHLHVEQUFjLENBQUNDLFVBQWYsQ0FBMEIsZUFBMUIsQ0FBYjtBQUNBLFdBQU8wRyxNQUFNLENBQUNDLE1BQVAsQ0FBYyxFQUFkLEVBQWtCSixhQUFsQixFQUFpQ0MsTUFBakMsRUFBeUNDLElBQXpDLENBQVA7QUFDSCxHQTlJa0M7O0FBZ0puQyxNQUFJRyxVQUFKLEdBQWlCO0FBQUMsV0FBTzdHLHVEQUFjLENBQUNDLFVBQWYsQ0FBMEIsV0FBMUIsQ0FBUDtBQUErQzs7QUFoSjlCLENBQXhCLENBQWYiLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9kaXNjb3JkbW9kdWxlcy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBBIGxhcmdlIGxpc3Qgb2Yga25vd24gYW5kIHVzZWZ1bCB3ZWJwYWNrIG1vZHVsZXMgaW50ZXJuYWwgdG8gRGlzY29yZC5cclxuICpcclxuICogQG1vZHVsZSBEaXNjb3JkTW9kdWxlc1xyXG4gKiBAdmVyc2lvbiAwLjAuM1xyXG4gKi9cclxuXHJcbmltcG9ydCBVdGlsaXRpZXMgZnJvbSBcIi4vdXRpbGl0aWVzXCI7XHJcbmltcG9ydCBXZWJwYWNrTW9kdWxlcyBmcm9tIFwiLi93ZWJwYWNrbW9kdWxlc1wiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgVXRpbGl0aWVzLm1lbW9pemVPYmplY3Qoe1xyXG4gICAgZ2V0IFJlYWN0KCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiY3JlYXRlRWxlbWVudFwiLCBcImNsb25lRWxlbWVudFwiKTt9LFxyXG4gICAgZ2V0IFJlYWN0RE9NKCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwicmVuZGVyXCIsIFwiZmluZERPTU5vZGVcIik7fSxcclxuICAgIGdldCBGbHV4KCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiY29ubmVjdFN0b3Jlc1wiKTt9LFxyXG4gICAgZ2V0IEV2ZW50cygpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm90b3R5cGVzKFwic2V0TWF4TGlzdGVuZXJzXCIsIFwiZW1pdFwiKTt9LFxyXG5cclxuICAgIC8qIEd1aWxkIEluZm8sIFN0b3JlcywgYW5kIFV0aWxpdGllcyAqL1xyXG4gICAgZ2V0IEd1aWxkU3RvcmUoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJnZXRHdWlsZFwiKTt9LFxyXG4gICAgZ2V0IFNvcnRlZEd1aWxkU3RvcmUoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJnZXRTb3J0ZWRHdWlsZHNcIik7fSxcclxuICAgIGdldCBTZWxlY3RlZEd1aWxkU3RvcmUoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJnZXRMYXN0U2VsZWN0ZWRHdWlsZElkXCIpO30sXHJcbiAgICBnZXQgR3VpbGRTeW5jKCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiZ2V0U3luY2VkR3VpbGRzXCIpO30sXHJcbiAgICBnZXQgR3VpbGRJbmZvKCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiZ2V0QWNyb255bVwiKTt9LFxyXG4gICAgZ2V0IEd1aWxkQ2hhbm5lbHNTdG9yZSgpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcImdldENoYW5uZWxzXCIsIFwiZ2V0RGVmYXVsdENoYW5uZWxcIik7fSxcclxuICAgIGdldCBHdWlsZE1lbWJlclN0b3JlKCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiZ2V0TWVtYmVyXCIpO30sXHJcbiAgICBnZXQgTWVtYmVyQ291bnRTdG9yZSgpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcImdldE1lbWJlckNvdW50c1wiKTt9LFxyXG4gICAgZ2V0IEd1aWxkRW1vamlTdG9yZSgpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcImdldEVtb2ppc1wiKTt9LFxyXG4gICAgZ2V0IEd1aWxkQWN0aW9ucygpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcIm1hcmtHdWlsZEFzUmVhZFwiKTt9LFxyXG4gICAgZ2V0IEd1aWxkUGVybWlzc2lvbnMoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJnZXRHdWlsZFBlcm1pc3Npb25zXCIpO30sXHJcblxyXG4gICAgLyogQ2hhbm5lbCBTdG9yZSAmIEFjdGlvbnMgKi9cclxuICAgIGdldCBDaGFubmVsU3RvcmUoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJnZXRDaGFubmVsc1wiLCBcImdldERNRnJvbVVzZXJJZFwiKTt9LFxyXG4gICAgZ2V0IFNlbGVjdGVkQ2hhbm5lbFN0b3JlKCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiZ2V0TGFzdFNlbGVjdGVkQ2hhbm5lbElkXCIpO30sXHJcbiAgICBnZXQgQ2hhbm5lbEFjdGlvbnMoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJzZWxlY3RDaGFubmVsXCIpO30sXHJcbiAgICBnZXQgUHJpdmF0ZUNoYW5uZWxBY3Rpb25zKCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwib3BlblByaXZhdGVDaGFubmVsXCIpO30sXHJcbiAgICBnZXQgQ2hhbm5lbFNlbGVjdG9yKCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwic2VsZWN0R3VpbGRcIiwgXCJzZWxlY3RDaGFubmVsXCIpO30sXHJcblxyXG4gICAgLyogQ3VycmVudCBVc2VyIEluZm8sIFN0YXRlIGFuZCBTZXR0aW5ncyAqL1xyXG4gICAgZ2V0IFVzZXJJbmZvU3RvcmUoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJnZXRUb2tlblwiKTt9LFxyXG4gICAgZ2V0IFVzZXJTZXR0aW5nc1N0b3JlKCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiZ3VpbGRQb3NpdGlvbnNcIik7fSxcclxuICAgIGdldCBBY2NvdW50TWFuYWdlcigpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcInJlZ2lzdGVyXCIsIFwibG9naW5cIik7fSxcclxuICAgIGdldCBVc2VyU2V0dGluZ3NVcGRhdGVyKCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwidXBkYXRlUmVtb3RlU2V0dGluZ3NcIik7fSxcclxuICAgIGdldCBPbmxpbmVXYXRjaGVyKCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiaXNPbmxpbmVcIik7fSxcclxuICAgIGdldCBDdXJyZW50VXNlcklkbGUoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJnZXRJZGxlVGltZVwiKTt9LFxyXG4gICAgZ2V0IFJlbGF0aW9uc2hpcFN0b3JlKCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiaXNCbG9ja2VkXCIsIFwiZ2V0RnJpZW5kSURzXCIpO30sXHJcbiAgICBnZXQgUmVsYXRpb25zaGlwTWFuYWdlcigpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcImFkZFJlbGF0aW9uc2hpcFwiKTt9LFxyXG4gICAgZ2V0IE1lbnRpb25TdG9yZSgpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcImdldE1lbnRpb25zXCIpO30sXHJcblxyXG4gICAgLyogVXNlciBTdG9yZXMgYW5kIFV0aWxzICovXHJcbiAgICBnZXQgVXNlclN0b3JlKCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiZ2V0Q3VycmVudFVzZXJcIik7fSxcclxuICAgIGdldCBVc2VyU3RhdHVzU3RvcmUoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJnZXRTdGF0dXNcIiwgXCJnZXRTdGF0ZVwiKTt9LFxyXG4gICAgZ2V0IFVzZXJUeXBpbmdTdG9yZSgpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcImlzVHlwaW5nXCIpO30sXHJcbiAgICBnZXQgVXNlckFjdGl2aXR5U3RvcmUoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJnZXRBY3Rpdml0eVwiKTt9LFxyXG4gICAgZ2V0IFVzZXJOYW1lUmVzb2x2ZXIoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJnZXROYW1lXCIpO30sXHJcbiAgICBnZXQgVXNlck5vdGVTdG9yZSgpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcImdldE5vdGVcIik7fSxcclxuICAgIGdldCBVc2VyTm90ZUFjdGlvbnMoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJ1cGRhdGVOb3RlXCIpO30sXHJcblxyXG4gICAgLyogRW1vamkgU3RvcmUgYW5kIFV0aWxzICovXHJcbiAgICBnZXQgRW1vamlJbmZvKCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiaXNFbW9qaURpc2FibGVkXCIpO30sXHJcbiAgICBnZXQgRW1vamlVdGlscygpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcImdldEd1aWxkRW1vamlcIik7fSxcclxuICAgIGdldCBFbW9qaVN0b3JlKCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiZ2V0QnlDYXRlZ29yeVwiLCBcIkVNT0pJX05BTUVfUkVcIik7fSxcclxuXHJcbiAgICAvKiBJbnZpdGUgU3RvcmUgYW5kIFV0aWxzICovXHJcbiAgICBnZXQgSW52aXRlU3RvcmUoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJnZXRJbnZpdGVzXCIpO30sXHJcbiAgICBnZXQgSW52aXRlUmVzb2x2ZXIoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJmaW5kSW52aXRlXCIpO30sXHJcbiAgICBnZXQgSW52aXRlQWN0aW9ucygpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcImFjY2VwdEludml0ZVwiKTt9LFxyXG5cclxuICAgIC8qIERpc2NvcmQgT2JqZWN0cyAmIFV0aWxzICovXHJcbiAgICBnZXQgRGlzY29yZENvbnN0YW50cygpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcIlBlcm1pc3Npb25zXCIsIFwiQWN0aXZpdHlUeXBlc1wiLCBcIlN0YXR1c1R5cGVzXCIpO30sXHJcbiAgICBnZXQgRGlzY29yZFBlcm1pc3Npb25zKCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiUGVybWlzc2lvbnNcIiwgXCJBY3Rpdml0eVR5cGVzXCIsIFwiU3RhdHVzVHlwZXNcIikuUGVybWlzc2lvbnM7fSxcclxuICAgIGdldCBQZXJtaXNzaW9uVXRpbHMoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJnZXRIaWdoZXN0Um9sZVwiKTt9LFxyXG4gICAgZ2V0IENvbG9yQ29udmVydGVyKCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiaGV4MmludFwiKTt9LFxyXG4gICAgZ2V0IENvbG9yU2hhZGVyKCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiZGFya2VuXCIpO30sXHJcbiAgICBnZXQgVGlueUNvbG9yKCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3RvdHlwZXMoXCJ0b1JnYlwiKTt9LFxyXG4gICAgZ2V0IENsYXNzUmVzb2x2ZXIoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJnZXRDbGFzc1wiKTt9LFxyXG4gICAgZ2V0IEJ1dHRvbkRhdGEoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJCdXR0b25TaXplc1wiKTt9LFxyXG4gICAgZ2V0IEljb25OYW1lcygpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcIkljb25OYW1lc1wiKTt9LFxyXG4gICAgZ2V0IE5hdmlnYXRpb25VdGlscygpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcInRyYW5zaXRpb25Ub1wiLCBcInJlcGxhY2VXaXRoXCIsIFwiZ2V0SGlzdG9yeVwiKTt9LFxyXG5cclxuICAgIC8qIERpc2NvcmQgTWVzc2FnZXMgKi9cclxuICAgIGdldCBNZXNzYWdlU3RvcmUoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJnZXRNZXNzYWdlc1wiKTt9LFxyXG4gICAgZ2V0IE1lc3NhZ2VBY3Rpb25zKCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwianVtcFRvTWVzc2FnZVwiLCBcIl9zZW5kTWVzc2FnZVwiKTt9LFxyXG4gICAgZ2V0IE1lc3NhZ2VRdWV1ZSgpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcImVucXVldWVcIik7fSxcclxuICAgIGdldCBNZXNzYWdlUGFyc2VyKCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiY3JlYXRlTWVzc2FnZVwiLCBcInBhcnNlXCIsIFwidW5wYXJzZVwiKTt9LFxyXG5cclxuICAgIC8qIFRleHQgUHJvY2Vzc2luZyAqL1xyXG4gICAgZ2V0IGhsanMoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJoaWdobGlnaHRcIiwgXCJoaWdobGlnaHRCbG9ja1wiKTt9LFxyXG4gICAgZ2V0IFNpbXBsZU1hcmtkb3duKCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwicGFyc2VCbG9ja1wiLCBcInBhcnNlSW5saW5lXCIsIFwiZGVmYXVsdE91dHB1dFwiKTt9LFxyXG5cclxuICAgIC8qIEV4cGVyaW1lbnRzICovXHJcbiAgICBnZXQgRXhwZXJpbWVudFN0b3JlKCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiZ2V0RXhwZXJpbWVudE92ZXJyaWRlc1wiKTt9LFxyXG4gICAgZ2V0IEV4cGVyaW1lbnRzTWFuYWdlcigpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcImlzRGV2ZWxvcGVyXCIpO30sXHJcbiAgICBnZXQgQ3VycmVudEV4cGVyaW1lbnQoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJnZXRFeHBlcmltZW50SWRcIik7fSxcclxuXHJcbiAgICAvKiBJbWFnZXMsIEF2YXRhcnMgYW5kIFV0aWxzICovXHJcbiAgICBnZXQgSW1hZ2VSZXNvbHZlcigpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcImdldFVzZXJBdmF0YXJVUkxcIiwgXCJnZXRHdWlsZEljb25VUkxcIik7fSxcclxuICAgIGdldCBJbWFnZVV0aWxzKCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiZ2V0U2l6ZWRJbWFnZVNyY1wiKTt9LFxyXG4gICAgZ2V0IEF2YXRhckRlZmF1bHRzKCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiZ2V0VXNlckF2YXRhclVSTFwiLCBcIkRFRkFVTFRfQVZBVEFSU1wiKTt9LFxyXG5cclxuICAgIC8qIFdpbmRvdywgRE9NLCBIVE1MICovXHJcbiAgICBnZXQgV2luZG93SW5mbygpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcImlzRm9jdXNlZFwiLCBcIndpbmRvd1NpemVcIik7fSxcclxuICAgIGdldCBUYWdJbmZvKCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiVkFMSURfVEFHX05BTUVTXCIpO30sXHJcbiAgICBnZXQgRE9NSW5mbygpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcImNhblVzZURPTVwiKTt9LFxyXG5cclxuICAgIC8qIExvY2FsZS9Mb2NhdGlvbiBhbmQgVGltZSAqL1xyXG4gICAgZ2V0IExvY2FsZU1hbmFnZXIoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJzZXRMb2NhbGVcIik7fSxcclxuICAgIGdldCBNb21lbnQoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJwYXJzZVpvbmVcIik7fSxcclxuICAgIGdldCBMb2NhdGlvbk1hbmFnZXIoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJjcmVhdGVMb2NhdGlvblwiKTt9LFxyXG4gICAgZ2V0IFRpbWVzdGFtcHMoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJmcm9tVGltZXN0YW1wXCIpO30sXHJcbiAgICBnZXQgVGltZUZvcm1hdHRlcigpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcImRhdGVGb3JtYXRcIik7fSxcclxuXHJcbiAgICAvKiBTdHJpbmdzIGFuZCBVdGlscyAqL1xyXG4gICAgZ2V0IFN0cmluZ3MoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJNZXNzYWdlc1wiKS5NZXNzYWdlczt9LFxyXG4gICAgZ2V0IFN0cmluZ0Zvcm1hdHMoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJhXCIsIFwielwiKTt9LFxyXG4gICAgZ2V0IFN0cmluZ1V0aWxzKCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwidG9BU0NJSVwiKTt9LFxyXG5cclxuICAgIC8qIFVSTHMgYW5kIFV0aWxzICovXHJcbiAgICBnZXQgVVJMUGFyc2VyKCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiVXJsXCIsIFwicGFyc2VcIik7fSxcclxuICAgIGdldCBFeHRyYVVSTHMoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJnZXRBcnRpY2xlVVJMXCIpO30sXHJcblxyXG4gICAgLyogRHJhZyAmIERyb3AgKi9cclxuICAgIGdldCBETkRBY3Rpb25zKCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiYmVnaW5EcmFnXCIpO30sXHJcbiAgICBnZXQgRE5EU291cmNlcygpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcImFkZFRhcmdldFwiKTt9LFxyXG4gICAgZ2V0IERORE9iamVjdHMoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJEcmFnU291cmNlXCIpO30sXHJcblxyXG4gICAgLyogTWVkaWEgU3R1ZmYgKEF1ZGlvL1ZpZGVvKSAqL1xyXG4gICAgZ2V0IE1lZGlhRGV2aWNlSW5mbygpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcIkNvZGVjc1wiLCBcIlNVUFBPUlRFRF9CUk9XU0VSU1wiKTt9LFxyXG4gICAgZ2V0IE1lZGlhSW5mbygpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcImdldE91dHB1dFZvbHVtZVwiKTt9LFxyXG4gICAgZ2V0IE1lZGlhRW5naW5lSW5mbygpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcIk1lZGlhRW5naW5lRmVhdHVyZXNcIik7fSxcclxuICAgIGdldCBWb2ljZUluZm8oKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJFY2hvQ2FuY2VsbGF0aW9uXCIpO30sXHJcbiAgICBnZXQgVmlkZW9TdHJlYW0oKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJnZXRWaWRlb1N0cmVhbVwiKTt9LFxyXG4gICAgZ2V0IFNvdW5kTW9kdWxlKCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwicGxheVNvdW5kXCIpO30sXHJcblxyXG4gICAgLyogRWxlY3Ryb24gJiBPdGhlciBJbnRlcm5hbHMgd2l0aCBVdGlscyovXHJcbiAgICBnZXQgRWxlY3Ryb25Nb2R1bGUoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJzZXRCYWRnZVwiKTt9LFxyXG4gICAgZ2V0IERpc3BhdGNoZXIoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJkaXJ0eURpc3BhdGNoXCIpO30sXHJcbiAgICBnZXQgUGF0aFV0aWxzKCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiaGFzQmFzZW5hbWVcIik7fSxcclxuICAgIGdldCBOb3RpZmljYXRpb25Nb2R1bGUoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJzaG93Tm90aWZpY2F0aW9uXCIpO30sXHJcbiAgICBnZXQgUm91dGVyTW9kdWxlKCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiUm91dGVyXCIpO30sXHJcbiAgICBnZXQgQVBJTW9kdWxlKCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiZ2V0QVBJQmFzZVVSTFwiKTt9LFxyXG4gICAgZ2V0IEFuYWx5dGljRXZlbnRzKCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiQW5hbHl0aWNFdmVudENvbmZpZ3NcIik7fSxcclxuICAgIGdldCBLZXlHZW5lcmF0b3IoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UmVnZXgoL1wiYmluYXJ5XCIvKTt9LFxyXG4gICAgZ2V0IEJ1ZmZlcnMoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJCdWZmZXJcIiwgXCJrTWF4TGVuZ3RoXCIpO30sXHJcbiAgICBnZXQgRGV2aWNlU3RvcmUoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJnZXREZXZpY2VzXCIpO30sXHJcbiAgICBnZXQgU29mdHdhcmVJbmZvKCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwib3NcIik7fSxcclxuICAgIGdldCBDdXJyZW50Q29udGV4dCgpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcInNldFRhZ3NDb250ZXh0XCIpO30sXHJcblxyXG4gICAgLyogQ29tbW9ubHkgVXNlZCBDbGFzc2VzICovXHJcbiAgICBnZXQgR3VpbGRDbGFzc2VzKCkge1xyXG4gICAgICAgIGNvbnN0IGd1aWxkc1dyYXBwZXIgPSBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwid3JhcHBlclwiLCBcInVucmVhZE1lbnRpb25zQmFyXCIpO1xyXG4gICAgICAgIGNvbnN0IGd1aWxkcyA9IFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJndWlsZHNFcnJvclwiLCBcInNlbGVjdGVkXCIpO1xyXG4gICAgICAgIGNvbnN0IHBpbGwgPSBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiYmxvYkNvbnRhaW5lclwiKTtcclxuICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgZ3VpbGRzV3JhcHBlciwgZ3VpbGRzLCBwaWxsKTtcclxuICAgIH0sXHJcblxyXG4gICAgZ2V0IExheWVyU3RhY2soKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJwdXNoTGF5ZXJcIik7fVxyXG59KTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/modules/discordmodules.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utilities */ \"./src/modules/utilities.js\");\n/* harmony import */ var _webpackmodules__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./webpackmodules */ \"./src/modules/webpackmodules.js\");\n/**\r\n * A large list of known and useful webpack modules internal to Discord.\r\n *\r\n * @module DiscordModules\r\n * @version 0.0.3\r\n */\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_utilities__WEBPACK_IMPORTED_MODULE_0__[\"default\"].memoizeObject({\n get React() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"createElement\", \"cloneElement\");\n },\n\n get ReactDOM() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"render\", \"findDOMNode\");\n },\n\n get Flux() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"connectStores\");\n },\n\n get Events() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByPrototypes(\"setMaxListeners\", \"emit\");\n },\n\n /* Guild Info, Stores, and Utilities */\n get GuildStore() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"getGuild\");\n },\n\n get SortedGuildStore() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"getSortedGuilds\");\n },\n\n get SelectedGuildStore() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"getLastSelectedGuildId\");\n },\n\n get GuildSync() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"getSyncedGuilds\");\n },\n\n get GuildInfo() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"getAcronym\");\n },\n\n get GuildChannelsStore() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"getChannels\", \"getDefaultChannel\");\n },\n\n get GuildMemberStore() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"getMember\");\n },\n\n get MemberCountStore() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"getMemberCounts\");\n },\n\n get GuildEmojiStore() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"getEmojis\");\n },\n\n get GuildActions() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"markGuildAsRead\");\n },\n\n get GuildPermissions() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"getGuildPermissions\");\n },\n\n /* Channel Store & Actions */\n get ChannelStore() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"getChannels\", \"getDMFromUserId\");\n },\n\n get SelectedChannelStore() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"getLastSelectedChannelId\");\n },\n\n get ChannelActions() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"selectChannel\");\n },\n\n get PrivateChannelActions() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"openPrivateChannel\");\n },\n\n get ChannelSelector() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"selectGuild\", \"selectChannel\");\n },\n\n /* Current User Info, State and Settings */\n get UserInfoStore() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"getToken\");\n },\n\n get UserSettingsStore() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"guildPositions\");\n },\n\n get AccountManager() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"register\", \"login\");\n },\n\n get UserSettingsUpdater() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"updateRemoteSettings\");\n },\n\n get OnlineWatcher() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"isOnline\");\n },\n\n get CurrentUserIdle() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"getIdleTime\");\n },\n\n get RelationshipStore() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"isBlocked\", \"getFriendIDs\");\n },\n\n get RelationshipManager() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"addRelationship\");\n },\n\n get MentionStore() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"getMentions\");\n },\n\n /* User Stores and Utils */\n get UserStore() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"getCurrentUser\");\n },\n\n get UserStatusStore() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"getStatus\", \"getState\");\n },\n\n get UserTypingStore() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"isTyping\");\n },\n\n get UserActivityStore() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"getActivity\");\n },\n\n get UserNameResolver() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"getName\");\n },\n\n get UserNoteStore() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"getNote\");\n },\n\n get UserNoteActions() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"updateNote\");\n },\n\n /* Emoji Store and Utils */\n get EmojiInfo() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"isEmojiDisabled\");\n },\n\n get EmojiUtils() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"getGuildEmoji\");\n },\n\n get EmojiStore() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"getByCategory\", \"EMOJI_NAME_RE\");\n },\n\n /* Invite Store and Utils */\n get InviteStore() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"getInvites\");\n },\n\n get InviteResolver() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"findInvite\");\n },\n\n get InviteActions() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"acceptInvite\");\n },\n\n /* Discord Objects & Utils */\n get DiscordConstants() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"Permissions\", \"ActivityTypes\", \"StatusTypes\");\n },\n\n get DiscordPermissions() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"Permissions\", \"ActivityTypes\", \"StatusTypes\").Permissions;\n },\n\n get PermissionUtils() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"getHighestRole\");\n },\n\n get ColorConverter() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"hex2int\");\n },\n\n get ColorShader() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"darken\");\n },\n\n get TinyColor() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByPrototypes(\"toRgb\");\n },\n\n get ClassResolver() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"getClass\");\n },\n\n get ButtonData() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"ButtonSizes\");\n },\n\n get IconNames() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"IconNames\");\n },\n\n get NavigationUtils() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"transitionTo\", \"replaceWith\", \"getHistory\");\n },\n\n /* Discord Messages */\n get MessageStore() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"getMessages\");\n },\n\n get MessageActions() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"jumpToMessage\", \"_sendMessage\");\n },\n\n get MessageQueue() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"enqueue\");\n },\n\n get MessageParser() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"createMessage\", \"parse\", \"unparse\");\n },\n\n /* Text Processing */\n get hljs() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"highlight\", \"highlightBlock\");\n },\n\n get SimpleMarkdown() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"parseBlock\", \"parseInline\", \"defaultOutput\");\n },\n\n /* Experiments */\n get ExperimentStore() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"getExperimentOverrides\");\n },\n\n get ExperimentsManager() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"isDeveloper\");\n },\n\n get CurrentExperiment() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"getExperimentId\");\n },\n\n /* Images, Avatars and Utils */\n get ImageResolver() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"getUserAvatarURL\", \"getGuildIconURL\");\n },\n\n get ImageUtils() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"getSizedImageSrc\");\n },\n\n get AvatarDefaults() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"getUserAvatarURL\", \"DEFAULT_AVATARS\");\n },\n\n /* Window, DOM, HTML */\n get WindowInfo() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"isFocused\", \"windowSize\");\n },\n\n get TagInfo() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"VALID_TAG_NAMES\");\n },\n\n get DOMInfo() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"canUseDOM\");\n },\n\n /* Locale/Location and Time */\n get LocaleManager() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"setLocale\");\n },\n\n get Moment() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"parseZone\");\n },\n\n get LocationManager() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"createLocation\");\n },\n\n get Timestamps() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"fromTimestamp\");\n },\n\n get TimeFormatter() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"dateFormat\");\n },\n\n /* Strings and Utils */\n get Strings() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"Messages\").Messages;\n },\n\n get StringFormats() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"a\", \"z\");\n },\n\n get StringUtils() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"toASCII\");\n },\n\n /* URLs and Utils */\n get URLParser() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"Url\", \"parse\");\n },\n\n get ExtraURLs() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"getArticleURL\");\n },\n\n /* Drag & Drop */\n get DNDActions() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"beginDrag\");\n },\n\n get DNDSources() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"addTarget\");\n },\n\n get DNDObjects() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"DragSource\");\n },\n\n /* Media Stuff (Audio/Video) */\n get MediaDeviceInfo() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"Codecs\", \"SUPPORTED_BROWSERS\");\n },\n\n get MediaInfo() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"getOutputVolume\");\n },\n\n get MediaEngineInfo() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"MediaEngineFeatures\");\n },\n\n get VoiceInfo() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"EchoCancellation\");\n },\n\n get VideoStream() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"getVideoStream\");\n },\n\n get SoundModule() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"playSound\");\n },\n\n /* Electron & Other Internals with Utils*/\n get ElectronModule() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"setBadge\");\n },\n\n get Dispatcher() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"dirtyDispatch\");\n },\n\n get PathUtils() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"hasBasename\");\n },\n\n get NotificationModule() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"showNotification\");\n },\n\n get RouterModule() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"Router\");\n },\n\n get APIModule() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"getAPIBaseURL\");\n },\n\n get AnalyticEvents() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"AnalyticEventConfigs\");\n },\n\n get KeyGenerator() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByRegex(/\"binary\"/);\n },\n\n get Buffers() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"Buffer\", \"kMaxLength\");\n },\n\n get DeviceStore() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"getDevices\");\n },\n\n get SoftwareInfo() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"os\");\n },\n\n get CurrentContext() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"setTagsContext\");\n },\n\n /* Commonly Used Classes */\n get GuildClasses() {\n const guildsWrapper = _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"wrapper\", \"unreadMentionsBar\");\n const guilds = _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"guildsError\", \"selected\");\n const pill = _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"blobContainer\");\n return Object.assign({}, guildsWrapper, guilds, pill);\n },\n\n get LayerStack() {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getByProps(\"pushLayer\");\n }\n\n}));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9kaXNjb3JkbW9kdWxlcy5qcz9hNTRkIl0sIm5hbWVzIjpbIlV0aWxpdGllcyIsIm1lbW9pemVPYmplY3QiLCJSZWFjdCIsIldlYnBhY2tNb2R1bGVzIiwiZ2V0QnlQcm9wcyIsIlJlYWN0RE9NIiwiRmx1eCIsIkV2ZW50cyIsImdldEJ5UHJvdG90eXBlcyIsIkd1aWxkU3RvcmUiLCJTb3J0ZWRHdWlsZFN0b3JlIiwiU2VsZWN0ZWRHdWlsZFN0b3JlIiwiR3VpbGRTeW5jIiwiR3VpbGRJbmZvIiwiR3VpbGRDaGFubmVsc1N0b3JlIiwiR3VpbGRNZW1iZXJTdG9yZSIsIk1lbWJlckNvdW50U3RvcmUiLCJHdWlsZEVtb2ppU3RvcmUiLCJHdWlsZEFjdGlvbnMiLCJHdWlsZFBlcm1pc3Npb25zIiwiQ2hhbm5lbFN0b3JlIiwiU2VsZWN0ZWRDaGFubmVsU3RvcmUiLCJDaGFubmVsQWN0aW9ucyIsIlByaXZhdGVDaGFubmVsQWN0aW9ucyIsIkNoYW5uZWxTZWxlY3RvciIsIlVzZXJJbmZvU3RvcmUiLCJVc2VyU2V0dGluZ3NTdG9yZSIsIkFjY291bnRNYW5hZ2VyIiwiVXNlclNldHRpbmdzVXBkYXRlciIsIk9ubGluZVdhdGNoZXIiLCJDdXJyZW50VXNlcklkbGUiLCJSZWxhdGlvbnNoaXBTdG9yZSIsIlJlbGF0aW9uc2hpcE1hbmFnZXIiLCJNZW50aW9uU3RvcmUiLCJVc2VyU3RvcmUiLCJVc2VyU3RhdHVzU3RvcmUiLCJVc2VyVHlwaW5nU3RvcmUiLCJVc2VyQWN0aXZpdHlTdG9yZSIsIlVzZXJOYW1lUmVzb2x2ZXIiLCJVc2VyTm90ZVN0b3JlIiwiVXNlck5vdGVBY3Rpb25zIiwiRW1vamlJbmZvIiwiRW1vamlVdGlscyIsIkVtb2ppU3RvcmUiLCJJbnZpdGVTdG9yZSIsIkludml0ZVJlc29sdmVyIiwiSW52aXRlQWN0aW9ucyIsIkRpc2NvcmRDb25zdGFudHMiLCJEaXNjb3JkUGVybWlzc2lvbnMiLCJQZXJtaXNzaW9ucyIsIlBlcm1pc3Npb25VdGlscyIsIkNvbG9yQ29udmVydGVyIiwiQ29sb3JTaGFkZXIiLCJUaW55Q29sb3IiLCJDbGFzc1Jlc29sdmVyIiwiQnV0dG9uRGF0YSIsIkljb25OYW1lcyIsIk5hdmlnYXRpb25VdGlscyIsIk1lc3NhZ2VTdG9yZSIsIk1lc3NhZ2VBY3Rpb25zIiwiTWVzc2FnZVF1ZXVlIiwiTWVzc2FnZVBhcnNlciIsImhsanMiLCJTaW1wbGVNYXJrZG93biIsIkV4cGVyaW1lbnRTdG9yZSIsIkV4cGVyaW1lbnRzTWFuYWdlciIsIkN1cnJlbnRFeHBlcmltZW50IiwiSW1hZ2VSZXNvbHZlciIsIkltYWdlVXRpbHMiLCJBdmF0YXJEZWZhdWx0cyIsIldpbmRvd0luZm8iLCJUYWdJbmZvIiwiRE9NSW5mbyIsIkxvY2FsZU1hbmFnZXIiLCJNb21lbnQiLCJMb2NhdGlvbk1hbmFnZXIiLCJUaW1lc3RhbXBzIiwiVGltZUZvcm1hdHRlciIsIlN0cmluZ3MiLCJNZXNzYWdlcyIsIlN0cmluZ0Zvcm1hdHMiLCJTdHJpbmdVdGlscyIsIlVSTFBhcnNlciIsIkV4dHJhVVJMcyIsIkROREFjdGlvbnMiLCJETkRTb3VyY2VzIiwiRE5ET2JqZWN0cyIsIk1lZGlhRGV2aWNlSW5mbyIsIk1lZGlhSW5mbyIsIk1lZGlhRW5naW5lSW5mbyIsIlZvaWNlSW5mbyIsIlZpZGVvU3RyZWFtIiwiU291bmRNb2R1bGUiLCJFbGVjdHJvbk1vZHVsZSIsIkRpc3BhdGNoZXIiLCJQYXRoVXRpbHMiLCJOb3RpZmljYXRpb25Nb2R1bGUiLCJSb3V0ZXJNb2R1bGUiLCJBUElNb2R1bGUiLCJBbmFseXRpY0V2ZW50cyIsIktleUdlbmVyYXRvciIsImdldEJ5UmVnZXgiLCJCdWZmZXJzIiwiRGV2aWNlU3RvcmUiLCJTb2Z0d2FyZUluZm8iLCJDdXJyZW50Q29udGV4dCIsIkd1aWxkQ2xhc3NlcyIsImd1aWxkc1dyYXBwZXIiLCJndWlsZHMiLCJwaWxsIiwiT2JqZWN0IiwiYXNzaWduIiwiTGF5ZXJTdGFjayJdLCJtYXBw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QXlDLFVBQXpDLENBQWY7QUFDQSxVQUFNeUcsSUFBSSxHQUFHMUcsdURBQWMsQ0FBQ0MsVUFBZixDQUEwQixlQUExQixDQUFiO0FBQ0EsV0FBTzBHLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjLEVBQWQsRUFBa0JKLGFBQWxCLEVBQWlDQyxNQUFqQyxFQUF5Q0MsSUFBekMsQ0FBUDtBQUNILEdBOUlrQzs7QUFnSm5DLE1BQUlHLFVBQUosR0FBaUI7QUFBQyxXQUFPN0csdURBQWMsQ0FBQ0MsVUFBZixDQUEwQixXQUExQixDQUFQO0FBQStDOztBQWhKOUIsQ0FBeEIsQ0FBZiIsImZpbGUiOiIuL3NyYy9tb2R1bGVzL2Rpc2NvcmRtb2R1bGVzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIEEgbGFyZ2UgbGlzdCBvZiBrbm93biBhbmQgdXNlZnVsIHdlYnBhY2sgbW9kdWxlcyBpbnRlcm5hbCB0byBEaXNjb3JkLlxyXG4gKlxyXG4gKiBAbW9kdWxlIERpc2NvcmRNb2R1bGVzXHJcbiAqIEB2ZXJzaW9uIDAuMC4zXHJcbiAqL1xyXG5cclxuaW1wb3J0IFV0aWxpdGllcyBmcm9tIFwiLi91dGlsaXRpZXNcIjtcclxuaW1wb3J0IFdlYnBhY2tNb2R1bGVzIGZyb20gXCIuL3dlYnBhY2ttb2R1bGVzXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBVdGlsaXRpZXMubWVtb2l6ZU9iamVjdCh7XHJcbiAgICBnZXQgUmVhY3QoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJjcmVhdGVFbGVtZW50XCIsIFwiY2xvbmVFbGVtZW50XCIpO30sXHJcbiAgICBnZXQgUmVhY3RET00oKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJyZW5kZXJcIiwgXCJmaW5kRE9NTm9kZVwiKTt9LFxyXG4gICAgZ2V0IEZsdXgoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJjb25uZWN0U3RvcmVzXCIpO30sXHJcbiAgICBnZXQgRXZlbnRzKCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3RvdHlwZXMoXCJzZXRNYXhMaXN0ZW5lcnNcIiwgXCJlbWl0XCIpO30sXHJcblxyXG4gICAgLyogR3VpbGQgSW5mbywgU3RvcmVzLCBhbmQgVXRpbGl0aWVzICovXHJcbiAgICBnZXQgR3VpbGRTdG9yZSgpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcImdldEd1aWxkXCIpO30sXHJcbiAgICBnZXQgU29ydGVkR3VpbGRTdG9yZSgpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcImdldFNvcnRlZEd1aWxkc1wiKTt9LFxyXG4gICAgZ2V0IFNlbGVjdGVkR3VpbGRTdG9yZSgpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcImdldExhc3RTZWxlY3RlZEd1aWxkSWRcIik7fSxcclxuICAgIGdldCBHdWlsZFN5bmMoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJnZXRTeW5jZWRHdWlsZHNcIik7fSxcclxuICAgIGdldCBHdWlsZEluZm8oKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJnZXRBY3JvbnltXCIpO30sXHJcbiAgICBnZXQgR3VpbGRDaGFubmVsc1N0b3JlKCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiZ2V0Q2hhbm5lbHNcIiwgXCJnZXREZWZhdWx0Q2hhbm5lbFwiKTt9LFxyXG4gICAgZ2V0IEd1aWxkTWVtYmVyU3RvcmUoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJnZXRNZW1iZXJcIik7fSxcclxuICAgIGdldCBNZW1iZXJDb3VudFN0b3JlKCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiZ2V0TWVtYmVyQ291bnRzXCIpO30sXHJcbiAgICBnZXQgR3VpbGRFbW9qaVN0b3JlKCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiZ2V0RW1vamlzXCIpO30sXHJcbiAgICBnZXQgR3VpbGRBY3Rpb25zKCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwibWFya0d1aWxkQXNSZWFkXCIpO30sXHJcbiAgICBnZXQgR3VpbGRQZXJtaXNzaW9ucygpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcImdldEd1aWxkUGVybWlzc2lvbnNcIik7fSxcclxuXHJcbiAgICAvKiBDaGFubmVsIFN0b3JlICYgQWN0aW9ucyAqL1xyXG4gICAgZ2V0IENoYW5uZWxTdG9yZSgpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcImdldENoYW5uZWxzXCIsIFwiZ2V0RE1Gcm9tVXNlcklkXCIpO30sXHJcbiAgICBnZXQgU2VsZWN0ZWRDaGFubmVsU3RvcmUoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJnZXRMYXN0U2VsZWN0ZWRDaGFubmVsSWRcIik7fSxcclxuICAgIGdldCBDaGFubmVsQWN0aW9ucygpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcInNlbGVjdENoYW5uZWxcIik7fSxcclxuICAgIGdldCBQcml2YXRlQ2hhbm5lbEFjdGlvbnMoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJvcGVuUHJpdmF0ZUNoYW5uZWxcIik7fSxcclxuICAgIGdldCBDaGFubmVsU2VsZWN0b3IoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJzZWxlY3RHdWlsZFwiLCBcInNlbGVjdENoYW5uZWxcIik7fSxcclxuXHJcbiAgICAvKiBDdXJyZW50IFVzZXIgSW5mbywgU3RhdGUgYW5kIFNldHRpbmdzICovXHJcbiAgICBnZXQgVXNlckluZm9TdG9yZSgpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcImdldFRva2VuXCIpO30sXHJcbiAgICBnZXQgVXNlclNldHRpbmdzU3RvcmUoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJndWlsZFBvc2l0aW9uc1wiKTt9LFxyXG4gICAgZ2V0IEFjY291bnRNYW5hZ2VyKCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwicmVnaXN0ZXJcIiwgXCJsb2dpblwiKTt9LFxyXG4gICAgZ2V0IFVzZXJTZXR0aW5nc1VwZGF0ZXIoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJ1cGRhdGVSZW1vdGVTZXR0aW5nc1wiKTt9LFxyXG4gICAgZ2V0IE9ubGluZVdhdGNoZXIoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJpc09ubGluZVwiKTt9LFxyXG4gICAgZ2V0IEN1cnJlbnRVc2VySWRsZSgpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcImdldElkbGVUaW1lXCIpO30sXHJcbiAgICBnZXQgUmVsYXRpb25zaGlwU3RvcmUoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJpc0Jsb2NrZWRcIiwgXCJnZXRGcmllbmRJRHNcIik7fSxcclxuICAgIGdldCBSZWxhdGlvbnNoaXBNYW5hZ2VyKCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiYWRkUmVsYXRpb25zaGlwXCIpO30sXHJcbiAgICBnZXQgTWVudGlvblN0b3JlKCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiZ2V0TWVudGlvbnNcIik7fSxcclxuXHJcbiAgICAvKiBVc2VyIFN0b3JlcyBhbmQgVXRpbHMgKi9cclxuICAgIGdldCBVc2VyU3RvcmUoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJnZXRDdXJyZW50VXNlclwiKTt9LFxyXG4gICAgZ2V0IFVzZXJTdGF0dXNTdG9yZSgpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcImdldFN0YXR1c1wiLCBcImdldFN0YXRlXCIpO30sXHJcbiAgICBnZXQgVXNlclR5cGluZ1N0b3JlKCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiaXNUeXBpbmdcIik7fSxcclxuICAgIGdldCBVc2VyQWN0aXZpdHlTdG9yZSgpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcImdldEFjdGl2aXR5XCIpO30sXHJcbiAgICBnZXQgVXNlck5hbWVSZXNvbHZlcigpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcImdldE5hbWVcIik7fSxcclxuICAgIGdldCBVc2VyTm90ZVN0b3JlKCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiZ2V0Tm90ZVwiKTt9LFxyXG4gICAgZ2V0IFVzZXJOb3RlQWN0aW9ucygpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcInVwZGF0ZU5vdGVcIik7fSxcclxuXHJcbiAgICAvKiBFbW9qaSBTdG9yZSBhbmQgVXRpbHMgKi9cclxuICAgIGdldCBFbW9qaUluZm8oKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJpc0Vtb2ppRGlzYWJsZWRcIik7fSxcclxuICAgIGdldCBFbW9qaVV0aWxzKCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiZ2V0R3VpbGRFbW9qaVwiKTt9LFxyXG4gICAgZ2V0IEVtb2ppU3RvcmUoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJnZXRCeUNhdGVnb3J5XCIsIFwiRU1PSklfTkFNRV9SRVwiKTt9LFxyXG5cclxuICAgIC8qIEludml0ZSBTdG9yZSBhbmQgVXRpbHMgKi9cclxuICAgIGdldCBJbnZpdGVTdG9yZSgpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcImdldEludml0ZXNcIik7fSxcclxuICAgIGdldCBJbnZpdGVSZXNvbHZlcigpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcImZpbmRJbnZpdGVcIik7fSxcclxuICAgIGdldCBJbnZpdGVBY3Rpb25zKCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiYWNjZXB0SW52aXRlXCIpO30sXHJcblxyXG4gICAgLyogRGlzY29yZCBPYmplY3RzICYgVXRpbHMgKi9cclxuICAgIGdldCBEaXNjb3JkQ29uc3RhbnRzKCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiUGVybWlzc2lvbnNcIiwgXCJBY3Rpdml0eVR5cGVzXCIsIFwiU3RhdHVzVHlwZXNcIik7fSxcclxuICAgIGdldCBEaXNjb3JkUGVybWlzc2lvbnMoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJQZXJtaXNzaW9uc1wiLCBcIkFjdGl2aXR5VHlwZXNcIiwgXCJTdGF0dXNUeXBlc1wiKS5QZXJtaXNzaW9uczt9LFxyXG4gICAgZ2V0IFBlcm1pc3Npb25VdGlscygpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcImdldEhpZ2hlc3RSb2xlXCIpO30sXHJcbiAgICBnZXQgQ29sb3JDb252ZXJ0ZXIoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJoZXgyaW50XCIpO30sXHJcbiAgICBnZXQgQ29sb3JTaGFkZXIoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJkYXJrZW5cIik7fSxcclxuICAgIGdldCBUaW55Q29sb3IoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvdG90eXBlcyhcInRvUmdiXCIpO30sXHJcbiAgICBnZXQgQ2xhc3NSZXNvbHZlcigpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcImdldENsYXNzXCIpO30sXHJcbiAgICBnZXQgQnV0dG9uRGF0YSgpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcIkJ1dHRvblNpemVzXCIpO30sXHJcbiAgICBnZXQgSWNvbk5hbWVzKCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiSWNvbk5hbWVzXCIpO30sXHJcbiAgICBnZXQgTmF2aWdhdGlvblV0aWxzKCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwidHJhbnNpdGlvblRvXCIsIFwicmVwbGFjZVdpdGhcIiwgXCJnZXRIaXN0b3J5XCIpO30sXHJcblxyXG4gICAgLyogRGlzY29yZCBNZXNzYWdlcyAqL1xyXG4gICAgZ2V0IE1lc3NhZ2VTdG9yZSgpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcImdldE1lc3NhZ2VzXCIpO30sXHJcbiAgICBnZXQgTWVzc2FnZUFjdGlvbnMoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJqdW1wVG9NZXNzYWdlXCIsIFwiX3NlbmRNZXNzYWdlXCIpO30sXHJcbiAgICBnZXQgTWVzc2FnZVF1ZXVlKCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiZW5xdWV1ZVwiKTt9LFxyXG4gICAgZ2V0IE1lc3NhZ2VQYXJzZXIoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJjcmVhdGVNZXNzYWdlXCIsIFwicGFyc2VcIiwgXCJ1bnBhcnNlXCIpO30sXHJcblxyXG4gICAgLyogVGV4dCBQcm9jZXNzaW5nICovXHJcbiAgICBnZXQgaGxqcygpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcImhpZ2hsaWdodFwiLCBcImhpZ2hsaWdodEJsb2NrXCIpO30sXHJcbiAgICBnZXQgU2ltcGxlTWFya2Rvd24oKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJwYXJzZUJsb2NrXCIsIFwicGFyc2VJbmxpbmVcIiwgXCJkZWZhdWx0T3V0cHV0XCIpO30sXHJcblxyXG4gICAgLyogRXhwZXJpbWVudHMgKi9cclxuICAgIGdldCBFeHBlcmltZW50U3RvcmUoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJnZXRFeHBlcmltZW50T3ZlcnJpZGVzXCIpO30sXHJcbiAgICBnZXQgRXhwZXJpbWVudHNNYW5hZ2VyKCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiaXNEZXZlbG9wZXJcIik7fSxcclxuICAgIGdldCBDdXJyZW50RXhwZXJpbWVudCgpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcImdldEV4cGVyaW1lbnRJZFwiKTt9LFxyXG5cclxuICAgIC8qIEltYWdlcywgQXZhdGFycyBhbmQgVXRpbHMgKi9cclxuICAgIGdldCBJbWFnZVJlc29sdmVyKCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiZ2V0VXNlckF2YXRhclVSTFwiLCBcImdldEd1aWxkSWNvblVSTFwiKTt9LFxyXG4gICAgZ2V0IEltYWdlVXRpbHMoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJnZXRTaXplZEltYWdlU3JjXCIpO30sXHJcbiAgICBnZXQgQXZhdGFyRGVmYXVsdHMoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJnZXRVc2VyQXZhdGFyVVJMXCIsIFwiREVGQVVMVF9BVkFUQVJTXCIpO30sXHJcblxyXG4gICAgLyogV2luZG93LCBET00sIEhUTUwgKi9cclxuICAgIGdldCBXaW5kb3dJbmZvKCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiaXNGb2N1c2VkXCIsIFwid2luZG93U2l6ZVwiKTt9LFxyXG4gICAgZ2V0IFRhZ0luZm8oKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJWQUxJRF9UQUdfTkFNRVNcIik7fSxcclxuICAgIGdldCBET01JbmZvKCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiY2FuVXNlRE9NXCIpO30sXHJcblxyXG4gICAgLyogTG9jYWxlL0xvY2F0aW9uIGFuZCBUaW1lICovXHJcbiAgICBnZXQgTG9jYWxlTWFuYWdlcigpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcInNldExvY2FsZVwiKTt9LFxyXG4gICAgZ2V0IE1vbWVudCgpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcInBhcnNlWm9uZVwiKTt9LFxyXG4gICAgZ2V0IExvY2F0aW9uTWFuYWdlcigpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcImNyZWF0ZUxvY2F0aW9uXCIpO30sXHJcbiAgICBnZXQgVGltZXN0YW1wcygpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcImZyb21UaW1lc3RhbXBcIik7fSxcclxuICAgIGdldCBUaW1lRm9ybWF0dGVyKCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiZGF0ZUZvcm1hdFwiKTt9LFxyXG5cclxuICAgIC8qIFN0cmluZ3MgYW5kIFV0aWxzICovXHJcbiAgICBnZXQgU3RyaW5ncygpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcIk1lc3NhZ2VzXCIpLk1lc3NhZ2VzO30sXHJcbiAgICBnZXQgU3RyaW5nRm9ybWF0cygpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcImFcIiwgXCJ6XCIpO30sXHJcbiAgICBnZXQgU3RyaW5nVXRpbHMoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJ0b0FTQ0lJXCIpO30sXHJcblxyXG4gICAgLyogVVJMcyBhbmQgVXRpbHMgKi9cclxuICAgIGdldCBVUkxQYXJzZXIoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJVcmxcIiwgXCJwYXJzZVwiKTt9LFxyXG4gICAgZ2V0IEV4dHJhVVJMcygpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcImdldEFydGljbGVVUkxcIik7fSxcclxuXHJcbiAgICAvKiBEcmFnICYgRHJvcCAqL1xyXG4gICAgZ2V0IEROREFjdGlvbnMoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJiZWdpbkRyYWdcIik7fSxcclxuICAgIGdldCBETkRTb3VyY2VzKCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiYWRkVGFyZ2V0XCIpO30sXHJcbiAgICBnZXQgRE5ET2JqZWN0cygpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcIkRyYWdTb3VyY2VcIik7fSxcclxuXHJcbiAgICAvKiBNZWRpYSBTdHVmZiAoQXVkaW8vVmlkZW8pICovXHJcbiAgICBnZXQgTWVkaWFEZXZpY2VJbmZvKCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiQ29kZWNzXCIsIFwiU1VQUE9SVEVEX0JST1dTRVJTXCIpO30sXHJcbiAgICBnZXQgTWVkaWFJbmZvKCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiZ2V0T3V0cHV0Vm9sdW1lXCIpO30sXHJcbiAgICBnZXQgTWVkaWFFbmdpbmVJbmZvKCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiTWVkaWFFbmdpbmVGZWF0dXJlc1wiKTt9LFxyXG4gICAgZ2V0IFZvaWNlSW5mbygpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcIkVjaG9DYW5jZWxsYXRpb25cIik7fSxcclxuICAgIGdldCBWaWRlb1N0cmVhbSgpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcImdldFZpZGVvU3RyZWFtXCIpO30sXHJcbiAgICBnZXQgU291bmRNb2R1bGUoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJwbGF5U291bmRcIik7fSxcclxuXHJcbiAgICAvKiBFbGVjdHJvbiAmIE90aGVyIEludGVybmFscyB3aXRoIFV0aWxzKi9cclxuICAgIGdldCBFbGVjdHJvbk1vZHVsZSgpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcInNldEJhZGdlXCIpO30sXHJcbiAgICBnZXQgRGlzcGF0Y2hlcigpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcImRpcnR5RGlzcGF0Y2hcIik7fSxcclxuICAgIGdldCBQYXRoVXRpbHMoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJoYXNCYXNlbmFtZVwiKTt9LFxyXG4gICAgZ2V0IE5vdGlmaWNhdGlvbk1vZHVsZSgpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcInNob3dOb3RpZmljYXRpb25cIik7fSxcclxuICAgIGdldCBSb3V0ZXJNb2R1bGUoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJSb3V0ZXJcIik7fSxcclxuICAgIGdldCBBUElNb2R1bGUoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJnZXRBUElCYXNlVVJMXCIpO30sXHJcbiAgICBnZXQgQW5hbHl0aWNFdmVudHMoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJBbmFseXRpY0V2ZW50Q29uZmlnc1wiKTt9LFxyXG4gICAgZ2V0IEtleUdlbmVyYXRvcigpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlSZWdleCgvXCJiaW5hcnlcIi8pO30sXHJcbiAgICBnZXQgQnVmZmVycygpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcIkJ1ZmZlclwiLCBcImtNYXhMZW5ndGhcIik7fSxcclxuICAgIGdldCBEZXZpY2VTdG9yZSgpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcImdldERldmljZXNcIik7fSxcclxuICAgIGdldCBTb2Z0d2FyZUluZm8oKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJvc1wiKTt9LFxyXG4gICAgZ2V0IEN1cnJlbnRDb250ZXh0KCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwic2V0VGFnc0NvbnRleHRcIik7fSxcclxuXHJcbiAgICAvKiBDb21tb25seSBVc2VkIENsYXNzZXMgKi9cclxuICAgIGdldCBHdWlsZENsYXNzZXMoKSB7XHJcbiAgICAgICAgY29uc3QgZ3VpbGRzV3JhcHBlciA9IFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJ3cmFwcGVyXCIsIFwidW5yZWFkTWVudGlvbnNCYXJcIik7XHJcbiAgICAgICAgY29uc3QgZ3VpbGRzID0gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcImd1aWxkc0Vycm9yXCIsIFwic2VsZWN0ZWRcIik7XHJcbiAgICAgICAgY29uc3QgcGlsbCA9IFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJibG9iQ29udGFpbmVyXCIpO1xyXG4gICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBndWlsZHNXcmFwcGVyLCBndWlsZHMsIHBpbGwpO1xyXG4gICAgfSxcclxuXHJcbiAgICBnZXQgTGF5ZXJTdGFjaygpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcInB1c2hMYXllclwiKTt9XHJcbn0pOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/discordmodules.js\n"); /***/ }), @@ -455,7 +454,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _uti /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return DOMManager; });\nclass DOMManager {\n static get bdHead() {\n return this.getElement(\"bd-head\");\n }\n\n static get bdBody() {\n return this.getElement(\"bd-body\");\n }\n\n static get bdScripts() {\n return this.getElement(\"bd-scripts\");\n }\n\n static get bdStyles() {\n return this.getElement(\"bd-styles\");\n }\n\n static get bdThemes() {\n return this.getElement(\"bd-themes\");\n }\n\n static get bdCustomCSS() {\n return this.getElement(\"#customcss\");\n } // static get bdTooltips() { return this.getElement(\"bd-tooltips\") || this.createElement(\"bd-tooltips\").appendTo(this.bdBody); }\n // static get bdModals() { return this.getElement(\"bd-modals\") || this.createElement(\"bd-modals\").appendTo(this.bdBody); }\n // static get bdToasts() { return this.getElement(\"bd-toasts\") || this.createElement(\"bd-toasts\").appendTo(this.bdBody); }\n // static initialize() {\n // this.createElement(\"bd-head\", {target: document.head});\n // this.createElement(\"bd-body\", {target: document.body});\n // this.createElement(\"bd-scripts\", {target: this.bdHead});\n // this.createElement(\"bd-styles\", {target: this.bdHead});\n // this.createElement(\"bd-themes\", {target: this.bdHead});\n // this.createElement(\"style\", {id: \"customcss\", target: this.bdHead});\n // }\n\n\n static escapeID(id) {\n return id.replace(/^[^a-z]+|[^\\w-]+/gi, \"-\");\n }\n\n static getElement(e, baseElement = document) {\n if (e instanceof Node) return e;\n return baseElement.querySelector(e);\n }\n\n static createElement(tag, options = {}) {\n const {\n className,\n id,\n target\n } = options;\n const element = document.createElement(tag);\n if (className) element.className = className;\n if (id) element.id = id;\n if (target) this.getElement(target).append(element);\n return element;\n }\n\n static removeStyle(id) {\n id = this.escapeID(id);\n const exists = this.getElement(`#${id}`, this.bdStyles);\n if (exists) exists.remove();\n }\n\n static injectStyle(id, css) {\n id = this.escapeID(id);\n const style = this.getElement(`#${id}`, this.bdStyles) || this.createElement(\"style\", {\n id\n });\n style.textContent = css;\n this.bdStyles.append(style);\n }\n\n static unlinkStyle(id) {\n return this.removeStyle(id);\n }\n\n static linkStyle(id, url) {\n id = this.escapeID(id);\n return new Promise(resolve => {\n const link = this.getElement(`#${id}`, this.bdStyles) || this.createElement(\"link\", {\n id\n });\n link.rel = \"stylesheet\";\n link.href = url;\n link.onload = resolve;\n this.bdStyles.append(link);\n });\n }\n\n static removeTheme(id) {\n id = this.escapeID(id);\n const exists = this.getElement(`#${id}`, this.bdThemes);\n if (exists) exists.remove();\n }\n\n static injectTheme(id, css) {\n id = this.escapeID(id);\n const style = this.getElement(`#${id}`, this.bdThemes) || this.createElement(\"style\", {\n id\n });\n style.textContent = css;\n this.bdThemes.append(style);\n }\n\n static updateCustomCSS(css) {\n this.bdCustomCSS.textContent = css;\n }\n\n static removeScript(id) {\n id = this.escapeID(id);\n const exists = this.getElement(`#${id}`, this.bdScripts);\n if (exists) exists.remove();\n }\n\n static injectScript(id, url) {\n id = this.escapeID(id);\n return new Promise(resolve => {\n const script = this.getElement(`#${id}`, this.bdScripts) || this.createElement(\"script\", {\n id\n });\n script.src = url;\n script.onload = resolve;\n this.bdScripts.append(script);\n });\n }\n\n}\nDOMManager.createElement(\"bd-head\", {\n target: document.head\n});\nDOMManager.createElement(\"bd-body\", {\n target: document.body\n});\nDOMManager.createElement(\"bd-scripts\", {\n target: DOMManager.bdHead\n});\nDOMManager.createElement(\"bd-styles\", {\n target: DOMManager.bdHead\n});\nDOMManager.createElement(\"bd-themes\", {\n target: DOMManager.bdHead\n});\nDOMManager.createElement(\"style\", {\n id: \"customcss\",\n target: DOMManager.bdHead\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL21vZHVsZXMvZG9tbWFuYWdlci5qcz9jZDVjIl0sIm5hbWVzIjpbIkRPTU1hbmFnZXIiLCJiZEhlYWQiLCJnZXRFbGVtZW50IiwiYmRCb2R5IiwiYmRTY3JpcHRzIiwiYmRTdHlsZXMiLCJiZFRoZW1lcyIsImJkQ3VzdG9tQ1NTIiwiZXNjYXBlSUQiLCJpZCIsInJlcGxhY2UiLCJlIiwiYmFzZUVsZW1lbnQiLCJkb2N1bWVudCIsIk5vZGUiLCJxdWVyeVNlbGVjdG9yIiwiY3JlYXRlRWxlbWVudCIsInRhZyIsIm9wdGlvbnMiLCJjbGFzc05hbWUiLCJ0YXJnZXQiLCJlbGVtZW50IiwiYXBwZW5kIiwicmVtb3ZlU3R5bGUiLCJleGlzdHMiLCJyZW1vdmUiLCJpbmplY3RTdHlsZSIsImNzcyIsInN0eWxlIiwidGV4dENvbnRlbnQiLCJ1bmxpbmtTdHlsZSIsImxpbmtTdHlsZSIsInVybCIsIlByb21pc2UiLCJyZXNvbHZlIiwibGluayIsInJlbCIsImhyZWYiLCJvbmxvYWQiLCJyZW1vdmVUaGVtZSIsImluamVjdFRoZW1lIiwidXBkYXRlQ3VzdG9tQ1NTIiwicmVtb3ZlU2NyaXB0IiwiaW5qZWN0U2NyaXB0Iiwic2NyaXB0Iiwic3JjIiwiaGVhZCIsImJvZHkiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBZSxNQUFNQSxVQUFOLENBQWlCO0FBRTVCLGFBQVdDLE1BQVgsR0FBb0I7QUFBQyxXQUFPLEtBQUtDLFVBQUwsQ0FBZ0IsU0FBaEIsQ0FBUDtBQUFtQzs7QUFDeEQsYUFBV0MsTUFBWCxHQUFvQjtBQUFDLFdBQU8sS0FBS0QsVUFBTCxDQUFnQixTQUFoQixDQUFQO0FBQW1DOztBQUN4RCxhQUFXRSxTQUFYLEdBQXVCO0FBQUMsV0FBTyxLQUFLRixVQUFMLENBQWdCLFlBQWhCLENBQVA7QUFBc0M7O0FBQzlELGFBQVdHLFFBQVgsR0FBc0I7QUFBQyxXQUFPLEtBQUtILFVBQUwsQ0FBZ0IsV0FBaEIsQ0FBUDtBQUFx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ZHVsZXMvZG9tbWFuYWdlci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGNsYXNzIERPTU1hbmFnZXIge1xyXG5cclxuICAgIHN0YXRpYyBnZXQgYmRIZWFkKCkge3JldHVybiB0aGlzLmdldEVsZW1lbnQoXCJiZC1oZWFkXCIpO31cclxuICAgIHN0YXRpYyBnZXQgYmRCb2R5KCkge3JldHVybiB0aGlzLmdldEVsZW1lbnQoXCJiZC1ib2R5XCIpO31cclxuICAgIHN0YXRpYyBnZXQgYmRTY3JpcHRzKCkge3JldHVybiB0aGlzLmdldEVsZW1lbnQoXCJiZC1zY3JpcHRzXCIpO31cclxuICAgIHN0YXRpYyBnZXQgYmRTdHlsZXMoKSB7cmV0dXJuIHRoaXMuZ2V0RWxlbWVudChcImJkLXN0eWxlc1wiKTt9XHJcbiAgICBzdGF0aWMgZ2V0IGJkVGhlbWVzKCkge3JldHVybiB0aGlzLmdldEVsZW1lbnQoXCJiZC10aGVtZXNcIik7fVxyXG4gICAgc3RhdGljIGdldCBiZEN1c3RvbUNTUygpIHtyZXR1cm4gdGhpcy5nZXRFbGVtZW50KFwiI2N1c3RvbWNzc1wiKTt9XHJcbiAgICAvLyBzdGF0aWMgZ2V0IGJkVG9vbHRpcHMoKSB7IHJldHVybiB0aGlzLmdldEVsZW1lbnQoXCJiZC10b29sdGlwc1wiKSB8fCB0aGlzLmNyZWF0ZUVsZW1lbnQoXCJiZC10b29sdGlwc1wiKS5hcHBlbmRUbyh0aGlzLmJkQm9keSk7IH1cclxuICAgIC8vIHN0YXRpYyBnZXQgYmRNb2RhbHMoKSB7IHJldHVybiB0aGlzLmdldEVsZW1lbnQoXCJiZC1tb2RhbHNcIikgfHwgdGhpcy5jcmVhdGVFbGVtZW50KFwiYmQtbW9kYWxzXCIpLmFwcGVuZFRvKHRoaXMuYmRCb2R5KTsgfVxyXG4gICAgLy8gc3RhdGljIGdldCBiZFRvYXN0cygpIHsgcmV0dXJuIHRoaXMuZ2V0RWxlbWVudChcImJkLXRvYXN0c1wiKSB8fCB0aGlzLmNyZWF0ZUVsZW1lbnQoXCJiZC10b2FzdHNcIikuYXBwZW5kVG8odGhpcy5iZEJvZHkpOyB9XHJcblxyXG4gICAgLy8gc3RhdGljIGluaXRpYWxpemUoKSB7XHJcbiAgICAvLyAgICAgdGhpcy5jcmVhdGVFbGVtZW50KFwiYmQtaGVhZFwiLCB7dGFyZ2V0OiBkb2N1bWVudC5oZWFkfSk7XHJcbiAgICAvLyAgICAgdGhpcy5jcmVhdGVFbGVtZW50KFwiYmQtYm9keVwiLCB7dGFyZ2V0OiBkb2N1bWVudC5ib2R5fSk7XHJcbiAgICAvLyAgICAgdGhpcy5jcmVhdGVFbGVtZW50KFwiYmQtc2NyaXB0c1wiLCB7dGFyZ2V0OiB0aGlzLmJkSGVhZH0pO1xyXG4gICAgLy8gICAgIHRoaXMuY3JlYXRlRWxlbWVudChcImJkLXN0eWxlc1wiLCB7dGFyZ2V0OiB0aGlzLmJkSGVhZH0pO1xyXG4gICAgLy8gICAgIHRoaXMuY3JlYXRlRWxlbWVudChcImJkLXRoZW1lc1wiLCB7dGFyZ2V0OiB0aGlzLmJkSGVhZH0pO1xyXG4gICAgLy8gICAgIHRoaXMuY3JlYXRlRWxlbWVudChcInN0eWxlXCIsIHtpZDogXCJjdXN0b21jc3NcIiwgdGFyZ2V0OiB0aGlzLmJkSGVhZH0pO1xyXG4gICAgLy8gfVxyXG5cclxuICAgIHN0YXRpYyBlc2NhcGVJRChpZCkge1xyXG4gICAgICAgIHJldHVybiBpZC5yZXBsYWNlKC9eW15hLXpdK3xbXlxcdy1dKy9naSwgXCItXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBnZXRFbGVtZW50KGUsIGJhc2VFbGVtZW50ID0gZG9jdW1lbnQpIHtcclxuICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIE5vZGUpIHJldHVybiBlO1xyXG4gICAgICAgIHJldHVybiBiYXNlRWxlbWVudC5xdWVyeVNlbGVjdG9yKGUpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBjcmVhdGVFbGVtZW50KHRhZywgb3B0aW9ucyA9IHt9KSB7XHJcbiAgICAgICAgY29uc3Qge2NsYXNzTmFtZSwgaWQsIHRhcmdldH0gPSBvcHRpb25zO1xyXG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHRhZyk7XHJcbiAgICAgICAgaWYgKGNsYXNzTmFtZSkgZWxlbWVudC5jbGFzc05hbWUgPSBjbGFzc05hbWU7XHJcbiAgICAgICAgaWYgKGlkKSBlbGVtZW50LmlkID0gaWQ7XHJcbiAgICAgICAgaWYgKHRhcmdldCkgdGhpcy5nZXRFbGVtZW50KHRhcmdldCkuYXBwZW5kKGVsZW1lbnQpO1xyXG4gICAgICAgIHJldHVybiBlbGVtZW50O1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyByZW1vdmVTdHlsZShpZCkge1xyXG4gICAgICAgIGlkID0gdGhpcy5lc2NhcGVJRChpZCk7XHJcbiAgICAgICAgY29uc3QgZXhpc3RzID0gdGhpcy5nZXRFbGVtZW50KGAjJHtpZH1gLCB0aGlzLmJkU3R5bGVzKTtcclxuICAgICAgICBpZiAoZXhpc3RzKSBleGlzdHMucmVtb3ZlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGluamVjdFN0eWxlKGlkLCBjc3MpIHtcclxuICAgICAgICBpZCA9IHRoaXMuZXNjYXBlSUQoaWQpO1xyXG4gICAgICAgIGNvbnN0IHN0eWxlID0gdGhpcy5nZXRFbGVtZW50KGAjJHtpZH1gLCB0aGlzLmJkU3R5bGVzKSB8fCB0aGlzLmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiLCB7aWR9KTtcclxuICAgICAgICBzdHlsZS50ZXh0Q29udGVudCA9IGNzcztcclxuICAgICAgICB0aGlzLmJkU3R5bGVzLmFwcGVuZChzdHlsZSk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIHVubGlua1N0eWxlKGlkKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucmVtb3ZlU3R5bGUoaWQpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBsaW5rU3R5bGUoaWQsIHVybCkge1xyXG4gICAgICAgIGlkID0gdGhpcy5lc2NhcGVJRChpZCk7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBsaW5rID0gdGhpcy5nZXRFbGVtZW50KGAjJHtpZH1gLCB0aGlzLmJkU3R5bGVzKSB8fCB0aGlzLmNyZWF0ZUVsZW1lbnQoXCJsaW5rXCIsIHtpZH0pO1xyXG4gICAgICAgICAgICBsaW5rLnJlbCA9IFwic3R5bGVzaGVldFwiO1xyXG4gICAgICAgICAgICBsaW5rLmhyZWYgPSB1cmw7XHJcbiAgICAgICAgICAgIGxpbmsub25sb2FkID0gcmVzb2x2ZTtcclxuICAgICAgICAgICAgdGhpcy5iZFN0eWxlcy5hcHBlbmQobGluayk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIHJlbW92ZVRoZW1lKGlkKSB7XHJcbiAgICAgICAgaWQgPSB0aGlzLmVzY2FwZUlEKGlkKTtcclxuICAgICAgICBjb25zdCBleGlzdHMgPSB0aGlzLmdldEVsZW1lbnQoYCMke2lkfWAsIHRoaXMuYmRUaGVtZXMpO1xyXG4gICAgICAgIGlmIChleGlzdHMpIGV4aXN0cy5yZW1vdmUoKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgaW5qZWN0VGhlbWUoaWQsIGNzcykge1xyXG4gICAgICAgIGlkID0gdGhpcy5lc2NhcGVJRChpZCk7XHJcbiAgICAgICAgY29uc3Qgc3R5bGUgPSB0aGlzLmdldEVsZW1lbnQoYCMke2lkfWAsIHRoaXMuYmRUaGVtZXMpIHx8IHRoaXMuY3JlYXRlRWxlbWVudChcInN0eWxlXCIsIHtpZH0pO1xyXG4gICAgICAgIHN0eWxlLnRleHRDb250ZW50ID0gY3NzO1xyXG4gICAgICAgIHRoaXMuYmRUaGVtZXMuYXBwZW5kKHN0eWxlKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgdXBkYXRlQ3VzdG9tQ1NTKGNzcykge1xyXG4gICAgICAgIHRoaXMuYmRDdXN0b21DU1MudGV4dENvbnRlbnQgPSBjc3M7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIHJlbW92ZVNjcmlwdChpZCkge1xyXG4gICAgICAgIGlkID0gdGhpcy5lc2NhcGVJRChpZCk7XHJcbiAgICAgICAgY29uc3QgZXhpc3RzID0gdGhpcy5nZXRFbGVtZW50KGAjJHtpZH1gLCB0aGlzLmJkU2NyaXB0cyk7XHJcbiAgICAgICAgaWYgKGV4aXN0cykgZXhpc3RzLnJlbW92ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBpbmplY3RTY3JpcHQoaWQsIHVybCkge1xyXG4gICAgICAgIGlkID0gdGhpcy5lc2NhcGVJRChpZCk7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBzY3JpcHQgPSB0aGlzLmdldEVsZW1lbnQoYCMke2lkfWAsIHRoaXMuYmRTY3JpcHRzKSB8fCB0aGlzLmNyZWF0ZUVsZW1lbnQoXCJzY3JpcHRcIiwge2lkfSk7XHJcbiAgICAgICAgICAgIHNjcmlwdC5zcmMgPSB1cmw7XHJcbiAgICAgICAgICAgIHNjcmlwdC5vbmxvYWQgPSByZXNvbHZlO1xyXG4gICAgICAgICAgICB0aGlzLmJkU2NyaXB0cy5hcHBlbmQoc2NyaXB0KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxufVxyXG5cclxuRE9NTWFuYWdlci5jcmVhdGVFbGVtZW50KFwiYmQtaGVhZFwiLCB7dGFyZ2V0OiBkb2N1bWVudC5oZWFkfSk7XHJcbkRPTU1hbmFnZXIuY3JlYXRlRWxlbWVudChcImJkLWJvZHlcIiwge3RhcmdldDogZG9jdW1lbnQuYm9keX0pO1xyXG5ET01NYW5hZ2VyLmNyZWF0ZUVsZW1lbnQoXCJiZC1zY3JpcHRzXCIsIHt0YXJnZXQ6IERPTU1hbmFnZXIuYmRIZWFkfSk7XHJcbkRPTU1hbmFnZXIuY3JlYXRlRWxlbWVudChcImJkLXN0eWxlc1wiLCB7dGFyZ2V0OiBET01NYW5hZ2VyLmJkSGVhZH0pO1xyXG5ET01NYW5hZ2VyLmNyZWF0ZUVsZW1lbnQoXCJiZC10aGVtZXNcIiwge3RhcmdldDogRE9NTWFuYWdlci5iZEhlYWR9KTtcclxuRE9NTWFuYWdlci5jcmVhdGVFbGVtZW50KFwic3R5bGVcIiwge2lkOiBcImN1c3RvbWNzc1wiLCB0YXJnZXQ6IERPTU1hbmFnZXIuYmRIZWFkfSk7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/dommanager.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return DOMManager; });\nclass DOMManager {\n static get bdHead() {\n return this.getElement(\"bd-head\");\n }\n\n static get bdBody() {\n return this.getElement(\"bd-body\");\n }\n\n static get bdScripts() {\n return this.getElement(\"bd-scripts\");\n }\n\n static get bdStyles() {\n return this.getElement(\"bd-styles\");\n }\n\n static get bdThemes() {\n return this.getElement(\"bd-themes\");\n }\n\n static get bdCustomCSS() {\n return this.getElement(\"#customcss\");\n } // static get bdTooltips() { return this.getElement(\"bd-tooltips\") || this.createElement(\"bd-tooltips\").appendTo(this.bdBody); }\n // static get bdModals() { return this.getElement(\"bd-modals\") || this.createElement(\"bd-modals\").appendTo(this.bdBody); }\n // static get bdToasts() { return this.getElement(\"bd-toasts\") || this.createElement(\"bd-toasts\").appendTo(this.bdBody); }\n // static initialize() {\n // this.createElement(\"bd-head\", {target: document.head});\n // this.createElement(\"bd-body\", {target: document.body});\n // this.createElement(\"bd-scripts\", {target: this.bdHead});\n // this.createElement(\"bd-styles\", {target: this.bdHead});\n // this.createElement(\"bd-themes\", {target: this.bdHead});\n // this.createElement(\"style\", {id: \"customcss\", target: this.bdHead});\n // }\n\n\n static escapeID(id) {\n return id.replace(/^[^a-z]+|[^\\w-]+/gi, \"-\");\n }\n\n static getElement(e, baseElement = document) {\n if (e instanceof Node) return e;\n return baseElement.querySelector(e);\n }\n\n static createElement(tag, options = {}) {\n const {\n className,\n id,\n target\n } = options;\n const element = document.createElement(tag);\n if (className) element.className = className;\n if (id) element.id = id;\n if (target) this.getElement(target).append(element);\n return element;\n }\n\n static removeStyle(id) {\n id = this.escapeID(id);\n const exists = this.getElement(`#${id}`, this.bdStyles);\n if (exists) exists.remove();\n }\n\n static injectStyle(id, css) {\n id = this.escapeID(id);\n const style = this.getElement(`#${id}`, this.bdStyles) || this.createElement(\"style\", {\n id\n });\n style.textContent = css;\n this.bdStyles.append(style);\n }\n\n static unlinkStyle(id) {\n return this.removeStyle(id);\n }\n\n static linkStyle(id, url) {\n id = this.escapeID(id);\n return new Promise(resolve => {\n const link = this.getElement(`#${id}`, this.bdStyles) || this.createElement(\"link\", {\n id\n });\n link.rel = \"stylesheet\";\n link.href = url;\n link.onload = resolve;\n this.bdStyles.append(link);\n });\n }\n\n static removeTheme(id) {\n id = this.escapeID(id);\n const exists = this.getElement(`#${id}`, this.bdThemes);\n if (exists) exists.remove();\n }\n\n static injectTheme(id, css) {\n id = this.escapeID(id);\n const style = this.getElement(`#${id}`, this.bdThemes) || this.createElement(\"style\", {\n id\n });\n style.textContent = css;\n this.bdThemes.append(style);\n }\n\n static updateCustomCSS(css) {\n this.bdCustomCSS.textContent = css;\n }\n\n static removeScript(id) {\n id = this.escapeID(id);\n const exists = this.getElement(`#${id}`, this.bdScripts);\n if (exists) exists.remove();\n }\n\n static injectScript(id, url) {\n id = this.escapeID(id);\n return new Promise(resolve => {\n const script = this.getElement(`#${id}`, this.bdScripts) || this.createElement(\"script\", {\n id\n });\n script.src = url;\n script.onload = resolve;\n this.bdScripts.append(script);\n });\n }\n\n}\nDOMManager.createElement(\"bd-head\", {\n target: document.head\n});\nDOMManager.createElement(\"bd-body\", {\n target: document.body\n});\nDOMManager.createElement(\"bd-scripts\", {\n target: DOMManager.bdHead\n});\nDOMManager.createElement(\"bd-styles\", {\n target: DOMManager.bdHead\n});\nDOMManager.createElement(\"bd-themes\", {\n target: DOMManager.bdHead\n});\nDOMManager.createElement(\"style\", {\n id: \"customcss\",\n target: DOMManager.bdHead\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9kb21tYW5hZ2VyLmpzP2NkNWMiXSwibmFtZXMiOlsiRE9NTWFuYWdlciIsImJkSGVhZCIsImdldEVsZW1lbnQiLCJiZEJvZHkiLCJiZFNjcmlwdHMiLCJiZFN0eWxlcyIsImJkVGhlbWVzIiwiYmRDdXN0b21DU1MiLCJlc2NhcGVJRCIsImlkIiwicmVwbGFjZSIsImUiLCJiYXNlRWxlbWVudCIsImRvY3VtZW50IiwiTm9kZSIsInF1ZXJ5U2VsZWN0b3IiLCJjcmVhdGVFbGVtZW50IiwidGFnIiwib3B0aW9ucyIsImNsYXNzTmFtZSIsInRhcmdldCIsImVsZW1lbnQiLCJhcHBlbmQiLCJyZW1vdmVTdHlsZSIsImV4aXN0cyIsInJlbW92ZSIsImluamVjdFN0eWxlIiwiY3NzIiwic3R5bGUiLCJ0ZXh0Q29udGVudCIsInVubGlua1N0eWxlIiwibGlua1N0eWxlIiwidXJsIiwiUHJvbWlzZSIsInJlc29sdmUiLCJsaW5rIiwicmVsIiwiaHJlZiIsIm9ubG9hZCIsInJlbW92ZVRoZW1lIiwiaW5qZWN0VGhlbWUiLCJ1cGRhdGVDdXN0b21DU1MiLCJyZW1vdmVTY3JpcHQiLCJpbmplY3RTY3JpcHQiLCJzY3JpcHQiLCJzcmMiLCJoZWFkIiwiYm9keSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFlLE1BQU1BLFVBQU4sQ0FBaUI7QUFFNUIsYUFBV0MsTUFBWCxHQUFvQjtBQUFDLFdBQU8sS0FBS0MsVUFBTCxDQUFnQixTQUFoQixDQUFQO0FBQW1DOztBQUN4RCxhQUFXQyxNQUFYLEdBQW9CO0FBQUMsV0FBTyxLQUFLRCxVQUFMLENBQWdCLFNBQWhCLENBQVA7QUFBbUM7O0FBQ3hELGFBQVdFLFNBQVgsR0FBdUI7QUFBQyxXQUFPLEtBQUtGLFVBQUwsQ0FBZ0IsWUFBaEIsQ0FBUDtBQUFzQzs7QUFDOUQsYUFBV0csUUFBWCxHQUFzQjtBQUFDLFdBQU8sS0FBS0gsVUFBTCxDQUFnQixXQUFoQixDQUFQO0FBQXFDOztB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cy9kb21tYW5hZ2VyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgY2xhc3MgRE9NTWFuYWdlciB7XHJcblxyXG4gICAgc3RhdGljIGdldCBiZEhlYWQoKSB7cmV0dXJuIHRoaXMuZ2V0RWxlbWVudChcImJkLWhlYWRcIik7fVxyXG4gICAgc3RhdGljIGdldCBiZEJvZHkoKSB7cmV0dXJuIHRoaXMuZ2V0RWxlbWVudChcImJkLWJvZHlcIik7fVxyXG4gICAgc3RhdGljIGdldCBiZFNjcmlwdHMoKSB7cmV0dXJuIHRoaXMuZ2V0RWxlbWVudChcImJkLXNjcmlwdHNcIik7fVxyXG4gICAgc3RhdGljIGdldCBiZFN0eWxlcygpIHtyZXR1cm4gdGhpcy5nZXRFbGVtZW50KFwiYmQtc3R5bGVzXCIpO31cclxuICAgIHN0YXRpYyBnZXQgYmRUaGVtZXMoKSB7cmV0dXJuIHRoaXMuZ2V0RWxlbWVudChcImJkLXRoZW1lc1wiKTt9XHJcbiAgICBzdGF0aWMgZ2V0IGJkQ3VzdG9tQ1NTKCkge3JldHVybiB0aGlzLmdldEVsZW1lbnQoXCIjY3VzdG9tY3NzXCIpO31cclxuICAgIC8vIHN0YXRpYyBnZXQgYmRUb29sdGlwcygpIHsgcmV0dXJuIHRoaXMuZ2V0RWxlbWVudChcImJkLXRvb2x0aXBzXCIpIHx8IHRoaXMuY3JlYXRlRWxlbWVudChcImJkLXRvb2x0aXBzXCIpLmFwcGVuZFRvKHRoaXMuYmRCb2R5KTsgfVxyXG4gICAgLy8gc3RhdGljIGdldCBiZE1vZGFscygpIHsgcmV0dXJuIHRoaXMuZ2V0RWxlbWVudChcImJkLW1vZGFsc1wiKSB8fCB0aGlzLmNyZWF0ZUVsZW1lbnQoXCJiZC1tb2RhbHNcIikuYXBwZW5kVG8odGhpcy5iZEJvZHkpOyB9XHJcbiAgICAvLyBzdGF0aWMgZ2V0IGJkVG9hc3RzKCkgeyByZXR1cm4gdGhpcy5nZXRFbGVtZW50KFwiYmQtdG9hc3RzXCIpIHx8IHRoaXMuY3JlYXRlRWxlbWVudChcImJkLXRvYXN0c1wiKS5hcHBlbmRUbyh0aGlzLmJkQm9keSk7IH1cclxuXHJcbiAgICAvLyBzdGF0aWMgaW5pdGlhbGl6ZSgpIHtcclxuICAgIC8vICAgICB0aGlzLmNyZWF0ZUVsZW1lbnQoXCJiZC1oZWFkXCIsIHt0YXJnZXQ6IGRvY3VtZW50LmhlYWR9KTtcclxuICAgIC8vICAgICB0aGlzLmNyZWF0ZUVsZW1lbnQoXCJiZC1ib2R5XCIsIHt0YXJnZXQ6IGRvY3VtZW50LmJvZHl9KTtcclxuICAgIC8vICAgICB0aGlzLmNyZWF0ZUVsZW1lbnQoXCJiZC1zY3JpcHRzXCIsIHt0YXJnZXQ6IHRoaXMuYmRIZWFkfSk7XHJcbiAgICAvLyAgICAgdGhpcy5jcmVhdGVFbGVtZW50KFwiYmQtc3R5bGVzXCIsIHt0YXJnZXQ6IHRoaXMuYmRIZWFkfSk7XHJcbiAgICAvLyAgICAgdGhpcy5jcmVhdGVFbGVtZW50KFwiYmQtdGhlbWVzXCIsIHt0YXJnZXQ6IHRoaXMuYmRIZWFkfSk7XHJcbiAgICAvLyAgICAgdGhpcy5jcmVhdGVFbGVtZW50KFwic3R5bGVcIiwge2lkOiBcImN1c3RvbWNzc1wiLCB0YXJnZXQ6IHRoaXMuYmRIZWFkfSk7XHJcbiAgICAvLyB9XHJcblxyXG4gICAgc3RhdGljIGVzY2FwZUlEKGlkKSB7XHJcbiAgICAgICAgcmV0dXJuIGlkLnJlcGxhY2UoL15bXmEtel0rfFteXFx3LV0rL2dpLCBcIi1cIik7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGdldEVsZW1lbnQoZSwgYmFzZUVsZW1lbnQgPSBkb2N1bWVudCkge1xyXG4gICAgICAgIGlmIChlIGluc3RhbmNlb2YgTm9kZSkgcmV0dXJuIGU7XHJcbiAgICAgICAgcmV0dXJuIGJhc2VFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoZSk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGNyZWF0ZUVsZW1lbnQodGFnLCBvcHRpb25zID0ge30pIHtcclxuICAgICAgICBjb25zdCB7Y2xhc3NOYW1lLCBpZCwgdGFyZ2V0fSA9IG9wdGlvbnM7XHJcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGFnKTtcclxuICAgICAgICBpZiAoY2xhc3NOYW1lKSBlbGVtZW50LmNsYXNzTmFtZSA9IGNsYXNzTmFtZTtcclxuICAgICAgICBpZiAoaWQpIGVsZW1lbnQuaWQgPSBpZDtcclxuICAgICAgICBpZiAodGFyZ2V0KSB0aGlzLmdldEVsZW1lbnQodGFyZ2V0KS5hcHBlbmQoZWxlbWVudCk7XHJcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIHJlbW92ZVN0eWxlKGlkKSB7XHJcbiAgICAgICAgaWQgPSB0aGlzLmVzY2FwZUlEKGlkKTtcclxuICAgICAgICBjb25zdCBleGlzdHMgPSB0aGlzLmdldEVsZW1lbnQoYCMke2lkfWAsIHRoaXMuYmRTdHlsZXMpO1xyXG4gICAgICAgIGlmIChleGlzdHMpIGV4aXN0cy5yZW1vdmUoKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgaW5qZWN0U3R5bGUoaWQsIGNzcykge1xyXG4gICAgICAgIGlkID0gdGhpcy5lc2NhcGVJRChpZCk7XHJcbiAgICAgICAgY29uc3Qgc3R5bGUgPSB0aGlzLmdldEVsZW1lbnQoYCMke2lkfWAsIHRoaXMuYmRTdHlsZXMpIHx8IHRoaXMuY3JlYXRlRWxlbWVudChcInN0eWxlXCIsIHtpZH0pO1xyXG4gICAgICAgIHN0eWxlLnRleHRDb250ZW50ID0gY3NzO1xyXG4gICAgICAgIHRoaXMuYmRTdHlsZXMuYXBwZW5kKHN0eWxlKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgdW5saW5rU3R5bGUoaWQpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5yZW1vdmVTdHlsZShpZCk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGxpbmtTdHlsZShpZCwgdXJsKSB7XHJcbiAgICAgICAgaWQgPSB0aGlzLmVzY2FwZUlEKGlkKTtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGxpbmsgPSB0aGlzLmdldEVsZW1lbnQoYCMke2lkfWAsIHRoaXMuYmRTdHlsZXMpIHx8IHRoaXMuY3JlYXRlRWxlbWVudChcImxpbmtcIiwge2lkfSk7XHJcbiAgICAgICAgICAgIGxpbmsucmVsID0gXCJzdHlsZXNoZWV0XCI7XHJcbiAgICAgICAgICAgIGxpbmsuaHJlZiA9IHVybDtcclxuICAgICAgICAgICAgbGluay5vbmxvYWQgPSByZXNvbHZlO1xyXG4gICAgICAgICAgICB0aGlzLmJkU3R5bGVzLmFwcGVuZChsaW5rKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgcmVtb3ZlVGhlbWUoaWQpIHtcclxuICAgICAgICBpZCA9IHRoaXMuZXNjYXBlSUQoaWQpO1xyXG4gICAgICAgIGNvbnN0IGV4aXN0cyA9IHRoaXMuZ2V0RWxlbWVudChgIyR7aWR9YCwgdGhpcy5iZFRoZW1lcyk7XHJcbiAgICAgICAgaWYgKGV4aXN0cykgZXhpc3RzLnJlbW92ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBpbmplY3RUaGVtZShpZCwgY3NzKSB7XHJcbiAgICAgICAgaWQgPSB0aGlzLmVzY2FwZUlEKGlkKTtcclxuICAgICAgICBjb25zdCBzdHlsZSA9IHRoaXMuZ2V0RWxlbWVudChgIyR7aWR9YCwgdGhpcy5iZFRoZW1lcykgfHwgdGhpcy5jcmVhdGVFbGVtZW50KFwic3R5bGVcIiwge2lkfSk7XHJcbiAgICAgICAgc3R5bGUudGV4dENvbnRlbnQgPSBjc3M7XHJcbiAgICAgICAgdGhpcy5iZFRoZW1lcy5hcHBlbmQoc3R5bGUpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyB1cGRhdGVDdXN0b21DU1MoY3NzKSB7XHJcbiAgICAgICAgdGhpcy5iZEN1c3RvbUNTUy50ZXh0Q29udGVudCA9IGNzcztcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgcmVtb3ZlU2NyaXB0KGlkKSB7XHJcbiAgICAgICAgaWQgPSB0aGlzLmVzY2FwZUlEKGlkKTtcclxuICAgICAgICBjb25zdCBleGlzdHMgPSB0aGlzLmdldEVsZW1lbnQoYCMke2lkfWAsIHRoaXMuYmRTY3JpcHRzKTtcclxuICAgICAgICBpZiAoZXhpc3RzKSBleGlzdHMucmVtb3ZlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGluamVjdFNjcmlwdChpZCwgdXJsKSB7XHJcbiAgICAgICAgaWQgPSB0aGlzLmVzY2FwZUlEKGlkKTtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHNjcmlwdCA9IHRoaXMuZ2V0RWxlbWVudChgIyR7aWR9YCwgdGhpcy5iZFNjcmlwdHMpIHx8IHRoaXMuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiLCB7aWR9KTtcclxuICAgICAgICAgICAgc2NyaXB0LnNyYyA9IHVybDtcclxuICAgICAgICAgICAgc2NyaXB0Lm9ubG9hZCA9IHJlc29sdmU7XHJcbiAgICAgICAgICAgIHRoaXMuYmRTY3JpcHRzLmFwcGVuZChzY3JpcHQpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59XHJcblxyXG5ET01NYW5hZ2VyLmNyZWF0ZUVsZW1lbnQoXCJiZC1oZWFkXCIsIHt0YXJnZXQ6IGRvY3VtZW50LmhlYWR9KTtcclxuRE9NTWFuYWdlci5jcmVhdGVFbGVtZW50KFwiYmQtYm9keVwiLCB7dGFyZ2V0OiBkb2N1bWVudC5ib2R5fSk7XHJcbkRPTU1hbmFnZXIuY3JlYXRlRWxlbWVudChcImJkLXNjcmlwdHNcIiwge3RhcmdldDogRE9NTWFuYWdlci5iZEhlYWR9KTtcclxuRE9NTWFuYWdlci5jcmVhdGVFbGVtZW50KFwiYmQtc3R5bGVzXCIsIHt0YXJnZXQ6IERPTU1hbmFnZXIuYmRIZWFkfSk7XHJcbkRPTU1hbmFnZXIuY3JlYXRlRWxlbWVudChcImJkLXRoZW1lc1wiLCB7dGFyZ2V0OiBET01NYW5hZ2VyLmJkSGVhZH0pO1xyXG5ET01NYW5hZ2VyLmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiLCB7aWQ6IFwiY3VzdG9tY3NzXCIsIHRhcmdldDogRE9NTWFuYWdlci5iZEhlYWR9KTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/modules/dommanager.js\n"); /***/ }), @@ -467,7 +466,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return DOMTools; });\n/**\r\n * Copyright 2018 Zachary Rauen\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining\r\n * a copy of this software and associated documentation files (the \"Software\"),\r\n * to deal in the Software without restriction, including without limitation the\r\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is furnished\r\n * to do so, subject to the following conditions:\r\n *\r\n * The above copyright notice and this permission notice shall be included in all\r\n * copies or substantial portions of the Software.\r\n *\r\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\r\n * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A\r\n * PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\r\n * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\r\n * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE\r\n * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r\n * \r\n * From: https://github.com/rauenzi/BDPluginLibrary\r\n */\n\n/**\r\n * @interface\r\n * @name Offset\r\n * @property {number} top - Top offset of the target element.\r\n * @property {number} right - Right offset of the target element.\r\n * @property {number} bottom - Bottom offset of the target element.\r\n * @property {number} left - Left offset of the target element.\r\n * @property {number} height - Outer height of the target element.\r\n * @property {number} width - Outer width of the target element.\r\n */\n\n/**\r\n* Function that automatically removes added listener.\r\n* @callback module:DOMTools~CancelListener\r\n*/\nclass DOMTools {\n static escapeID(id) {\n return id.replace(/^[^a-z]+|[^\\w-]+/gi, \"-\");\n }\n /**\r\n * Adds a style to the document.\r\n * @param {string} id - identifier to use as the element id\r\n * @param {string} css - css to add to the document\r\n */\n\n\n static addStyle(id, css) {\n document.head.append(DOMTools.createElement(``));\n }\n /**\r\n * Removes a style from the document.\r\n * @param {string} id - original identifier used\r\n */\n\n\n static removeStyle(id) {\n const element = document.getElementById(id);\n if (element) element.remove();\n }\n /**\r\n * Adds/requires a remote script to be loaded\r\n * @param {string} id - identifier to use for this script\r\n * @param {string} url - url from which to load the script\r\n * @returns {Promise} promise that resolves when the script is loaded\r\n */\n\n\n static addScript(id, url) {\n return new Promise(resolve => {\n const script = document.createElement(\"script\");\n script.id = id;\n script.src = url;\n script.type = \"text/javascript\";\n script.onload = resolve;\n document.head.append(script);\n });\n }\n /**\r\n * Removes a remote script from the document.\r\n * @param {string} id - original identifier used\r\n */\n\n\n static removeScript(id) {\n id = this.escapeID(id);\n const element = document.getElementById(id);\n if (element) element.remove();\n } // https://javascript.info/js-animation\n\n\n static animate({\n timing = _ => _,\n update,\n duration\n }) {\n const start = performance.now();\n requestAnimationFrame(function animate(time) {\n // timeFraction goes from 0 to 1\n let timeFraction = (time - start) / duration;\n if (timeFraction > 1) timeFraction = 1; // calculate the current animation state\n\n const progress = timing(timeFraction);\n update(progress); // draw it\n\n if (timeFraction < 1) {\n requestAnimationFrame(animate);\n }\n });\n }\n /**\r\n * This is my shit version of not having to use `$` from jQuery. Meaning\r\n * that you can pass a selector and it will automatically run {@link module:DOMTools.query}.\r\n * It also means that you can pass a string of html and it will perform and return `parseHTML`.\r\n * @see module:DOMTools.parseHTML\r\n * @see module:DOMTools.query\r\n * @param {string} selector - Selector to query or HTML to parse\r\n * @returns {(DocumentFragment|NodeList|HTMLElement)} - Either the result of `parseHTML` or `query`\r\n */\n\n\n static Q(selector) {\n const element = this.parseHTML(selector);\n const isHTML = element instanceof NodeList ? Array.from(element).some(n => n.nodeType === 1) : element.nodeType === 1;\n if (isHTML) return element;\n return this.query(selector);\n }\n /**\r\n * Essentially a shorthand for `document.querySelector`. If the `baseElement` is not provided\r\n * `document` is used by default.\r\n * @param {string} selector - Selector to query\r\n * @param {Element} [baseElement] - Element to base the query from\r\n * @returns {(Element|null)} - The found element or null if not found\r\n */\n\n\n static query(selector, baseElement) {\n if (!baseElement) baseElement = document;\n return baseElement.querySelector(selector);\n }\n /**\r\n * Essentially a shorthand for `document.querySelectorAll`. If the `baseElement` is not provided\r\n * `document` is used by default.\r\n * @param {string} selector - Selector to query\r\n * @param {Element} [baseElement] - Element to base the query from\r\n * @returns {Array} - Array of all found elements\r\n */\n\n\n static queryAll(selector, baseElement) {\n if (!baseElement) baseElement = document;\n return baseElement.querySelectorAll(selector);\n }\n /**\r\n * Parses a string of HTML and returns the results. If the second parameter is true,\r\n * the parsed HTML will be returned as a document fragment {@see https://developer.mozilla.org/en-US/docs/Web/API/DocumentFragment}.\r\n * This is extremely useful if you have a list of elements at the top level, they can then be appended all at once to another node.\r\n * \r\n * If the second parameter is false, then the return value will be the list of parsed\r\n * nodes and there were multiple top level nodes, otherwise the single node is returned.\r\n * @param {string} html - HTML to be parsed\r\n * @param {boolean} [fragment=false] - Whether or not the return should be the raw `DocumentFragment`\r\n * @returns {(DocumentFragment|NodeList|HTMLElement)} - The result of HTML parsing\r\n */\n\n\n static parseHTML(html, fragment = false) {\n const template = document.createElement(\"template\");\n template.innerHTML = html;\n const node = template.content.cloneNode(true);\n if (fragment) return node;\n return node.childNodes.length > 1 ? node.childNodes : node.childNodes[0];\n }\n /** Alternate name for {@link module:DOMTools.parseHTML} */\n\n\n static createElement(html, fragment = false) {\n return this.parseHTML(html, fragment);\n }\n /**\r\n * Takes a string of html and escapes it using the brower's own escaping mechanism.\r\n * @param {String} html - html to be escaped\r\n */\n\n\n static escapeHTML(html) {\n const textNode = document.createTextNode(\"\");\n const spanElement = document.createElement(\"span\");\n spanElement.append(textNode);\n textNode.nodeValue = html;\n return spanElement.innerHTML;\n }\n /**\r\n * Adds a list of classes from the target element.\r\n * @param {Element} element - Element to edit classes of\r\n * @param {...string} classes - Names of classes to add\r\n * @returns {Element} - `element` to allow for chaining\r\n */\n\n\n static addClass(element, ...classes) {\n classes = classes.flat().filter(c => c);\n\n for (let c = 0; c < classes.length; c++) classes[c] = classes[c].toString().split(\" \");\n\n classes = classes.flat().filter(c => c);\n element.classList.add(...classes);\n return element;\n }\n /**\r\n * Removes a list of classes from the target element.\r\n * @param {Element} element - Element to edit classes of\r\n * @param {...string} classes - Names of classes to remove\r\n * @returns {Element} - `element` to allow for chaining\r\n */\n\n\n static removeClass(element, ...classes) {\n for (let c = 0; c < classes.length; c++) classes[c] = classes[c].toString().split(\" \");\n\n classes = classes.flat().filter(c => c);\n element.classList.remove(...classes);\n return element;\n }\n /**\r\n * When only one argument is present: Toggle class value;\r\n * i.e., if class exists then remove it and return false, if not, then add it and return true.\r\n * When a second argument is present:\r\n * If the second argument evaluates to true, add specified class value, and if it evaluates to false, remove it.\r\n * @param {Element} element - Element to edit classes of\r\n * @param {string} classname - Name of class to toggle\r\n * @param {boolean} [indicator] - Optional indicator for if the class should be toggled\r\n * @returns {Element} - `element` to allow for chaining\r\n */\n\n\n static toggleClass(element, classname, indicator) {\n classname = classname.toString().split(\" \").filter(c => c);\n if (typeof indicator !== \"undefined\") classname.forEach(c => element.classList.toggle(c, indicator));else classname.forEach(c => element.classList.toggle(c));\n return element;\n }\n /**\r\n * Checks if an element has a specific class\r\n * @param {Element} element - Element to edit classes of\r\n * @param {string} classname - Name of class to check\r\n * @returns {boolean} - `true` if the element has the class, `false` otherwise.\r\n */\n\n\n static hasClass(element, classname) {\n return classname.toString().split(\" \").filter(c => c).every(c => element.classList.contains(c));\n }\n /**\r\n * Replaces one class with another\r\n * @param {Element} element - Element to edit classes of\r\n * @param {string} oldName - Name of class to replace\r\n * @param {string} newName - New name for the class\r\n * @returns {Element} - `element` to allow for chaining\r\n */\n\n\n static replaceClass(element, oldName, newName) {\n element.classList.replace(oldName, newName);\n return element;\n }\n /**\r\n * Appends `thisNode` to `thatNode`\r\n * @param {Node} thisNode - Node to be appended to another node\r\n * @param {Node} thatNode - Node for `thisNode` to be appended to\r\n * @returns {Node} - `thisNode` to allow for chaining\r\n */\n\n\n static appendTo(thisNode, thatNode) {\n if (typeof thatNode == \"string\") thatNode = this.query(thatNode);\n if (!thatNode) return null;\n thatNode.append(thisNode);\n return thisNode;\n }\n /**\r\n * Prepends `thisNode` to `thatNode`\r\n * @param {Node} thisNode - Node to be prepended to another node\r\n * @param {Node} thatNode - Node for `thisNode` to be prepended to\r\n * @returns {Node} - `thisNode` to allow for chaining\r\n */\n\n\n static prependTo(thisNode, thatNode) {\n if (typeof thatNode == \"string\") thatNode = this.query(thatNode);\n if (!thatNode) return null;\n thatNode.prepend(thisNode);\n return thisNode;\n }\n /**\r\n * Insert after a specific element, similar to jQuery's `thisElement.insertAfter(otherElement)`.\r\n * @param {Node} thisNode - The node to insert\r\n * @param {Node} targetNode - Node to insert after in the tree\r\n * @returns {Node} - `thisNode` to allow for chaining\r\n */\n\n\n static insertAfter(thisNode, targetNode) {\n targetNode.parentNode.insertBefore(thisNode, targetNode.nextSibling);\n return thisNode;\n }\n /**\r\n * Insert after a specific element, similar to jQuery's `thisElement.after(newElement)`.\r\n * @param {Node} thisNode - The node to insert\r\n * @param {Node} newNode - Node to insert after in the tree\r\n * @returns {Node} - `thisNode` to allow for chaining\r\n */\n\n\n static after(thisNode, newNode) {\n thisNode.parentNode.insertBefore(newNode, thisNode.nextSibling);\n return thisNode;\n }\n /**\r\n * Gets the next sibling element that matches the selector.\r\n * @param {Element} element - Element to get the next sibling of\r\n * @param {string} [selector=\"\"] - Optional selector\r\n * @returns {Element} - The sibling element\r\n */\n\n\n static next(element, selector = \"\") {\n return selector ? element.querySelector(\"+ \" + selector) : element.nextElementSibling;\n }\n /**\r\n * Gets all subsequent siblings.\r\n * @param {Element} element - Element to get next siblings of\r\n * @returns {NodeList} - The list of siblings\r\n */\n\n\n static nextAll(element) {\n return element.querySelectorAll(\"~ *\");\n }\n /**\r\n * Gets the subsequent siblings until an element matches the selector.\r\n * @param {Element} element - Element to get the following siblings of\r\n * @param {string} selector - Selector to stop at\r\n * @returns {Array} - The list of siblings\r\n */\n\n\n static nextUntil(element, selector) {\n const next = [];\n\n while (element.nextElementSibling && !element.nextElementSibling.matches(selector)) next.push(element = element.nextElementSibling);\n\n return next;\n }\n /**\r\n * Gets the previous sibling element that matches the selector.\r\n * @param {Element} element - Element to get the previous sibling of\r\n * @param {string} [selector=\"\"] - Optional selector\r\n * @returns {Element} - The sibling element\r\n */\n\n\n static previous(element, selector = \"\") {\n const previous = element.previousElementSibling;\n if (selector) return previous && previous.matches(selector) ? previous : null;\n return previous;\n }\n /**\r\n * Gets all preceeding siblings.\r\n * @param {Element} element - Element to get preceeding siblings of\r\n * @returns {NodeList} - The list of siblings\r\n */\n\n\n static previousAll(element) {\n const previous = [];\n\n while (element.previousElementSibling) previous.push(element = element.previousElementSibling);\n\n return previous;\n }\n /**\r\n * Gets the preceeding siblings until an element matches the selector.\r\n * @param {Element} element - Element to get the preceeding siblings of\r\n * @param {string} selector - Selector to stop at\r\n * @returns {Array} - The list of siblings\r\n */\n\n\n static previousUntil(element, selector) {\n const previous = [];\n\n while (element.previousElementSibling && !element.previousElementSibling.matches(selector)) previous.push(element = element.previousElementSibling);\n\n return previous;\n }\n /**\r\n * Find which index in children a certain node is. Similar to jQuery's `$.index()`\r\n * @param {HTMLElement} node - The node to find its index in parent\r\n * @returns {number} Index of the node\r\n */\n\n\n static indexInParent(node) {\n const children = node.parentNode.childNodes;\n let num = 0;\n\n for (let i = 0; i < children.length; i++) {\n if (children[i] == node) return num;\n if (children[i].nodeType == 1) num++;\n }\n\n return -1;\n }\n /** Shorthand for {@link module:DOMTools.indexInParent} */\n\n\n static index(node) {\n return this.indexInParent(node);\n }\n /**\r\n * Gets the parent of the element if it matches the selector,\r\n * otherwise returns null.\r\n * @param {Element} element - Element to get parent of\r\n * @param {string} [selector=\"\"] - Selector to match parent\r\n * @returns {(Element|null)} - The sibling element or null\r\n */\n\n\n static parent(element, selector = \"\") {\n return !selector || element.parentElement.matches(selector) ? element.parentElement : null;\n }\n /**\r\n * Gets all children of Element that match the selector if provided.\r\n * @param {Element} element - Element to get all children of\r\n * @param {string} selector - Selector to match the children to\r\n * @returns {Array} - The list of children\r\n */\n\n\n static findChild(element, selector) {\n return element.querySelector(\":scope > \" + selector);\n }\n /**\r\n * Gets all children of Element that match the selector if provided.\r\n * @param {Element} element - Element to get all children of\r\n * @param {string} selector - Selector to match the children to\r\n * @returns {Array} - The list of children\r\n */\n\n\n static findChildren(element, selector) {\n return element.querySelectorAll(\":scope > \" + selector);\n }\n /**\r\n * Gets all ancestors of Element that match the selector if provided.\r\n * @param {Element} element - Element to get all parents of\r\n * @param {string} [selector=\"\"] - Selector to match the parents to\r\n * @returns {Array} - The list of parents\r\n */\n\n\n static parents(element, selector = \"\") {\n const parents = [];\n if (selector) while (element.parentElement && element.parentElement.closest(selector)) parents.push(element = element.parentElement.closest(selector));else while (element.parentElement) parents.push(element = element.parentElement);\n return parents;\n }\n /**\r\n * Gets the ancestors until an element matches the selector.\r\n * @param {Element} element - Element to get the ancestors of\r\n * @param {string} selector - Selector to stop at\r\n * @returns {Array} - The list of parents\r\n */\n\n\n static parentsUntil(element, selector) {\n const parents = [];\n\n while (element.parentElement && !element.parentElement.matches(selector)) parents.push(element = element.parentElement);\n\n return parents;\n }\n /**\r\n * Gets all siblings of the element that match the selector.\r\n * @param {Element} element - Element to get all siblings of\r\n * @param {string} [selector=\"*\"] - Selector to match the siblings to\r\n * @returns {Array} - The list of siblings\r\n */\n\n\n static siblings(element, selector = \"*\") {\n return Array.from(element.parentElement.children).filter(e => e != element && e.matches(selector));\n }\n /**\r\n * Sets or gets css styles for a specific element. If `value` is provided\r\n * then it sets the style and returns the element to allow for chaining,\r\n * otherwise returns the style. \r\n * @param {Element} element - Element to set the CSS of\r\n * @param {string} attribute - Attribute to get or set\r\n * @param {string} [value] - Value to set for attribute\r\n * @returns {Element|string} - When setting a value, element is returned for chaining, otherwise the value is returned.\r\n */\n\n\n static css(element, attribute, value) {\n if (typeof value == \"undefined\") return global.getComputedStyle(element)[attribute];\n element.style[attribute] = value;\n return element;\n }\n /**\r\n * Sets or gets the width for a specific element. If `value` is provided\r\n * then it sets the width and returns the element to allow for chaining,\r\n * otherwise returns the width. \r\n * @param {Element} element - Element to set the CSS of\r\n * @param {string} [value] - Width to set\r\n * @returns {Element|string} - When setting a value, element is returned for chaining, otherwise the value is returned.\r\n */\n\n\n static width(element, value) {\n if (typeof value == \"undefined\") return parseInt(getComputedStyle(element).width);\n element.style.width = value;\n return element;\n }\n /**\r\n * Sets or gets the height for a specific element. If `value` is provided\r\n * then it sets the height and returns the element to allow for chaining,\r\n * otherwise returns the height. \r\n * @param {Element} element - Element to set the CSS of\r\n * @param {string} [value] - Height to set\r\n * @returns {Element|string} - When setting a value, element is returned for chaining, otherwise the value is returned.\r\n */\n\n\n static height(element, value) {\n if (typeof value == \"undefined\") return parseInt(getComputedStyle(element).height);\n element.style.height = value;\n return element;\n }\n /**\r\n * Sets the inner text of an element if given a value, otherwise returns it.\r\n * @param {Element} element - Element to set the text of\r\n * @param {string} [text] - Content to set\r\n * @returns {string} - Either the string set by this call or the current text content of the node.\r\n */\n\n\n static text(element, text) {\n if (typeof text == \"undefined\") return element.textContent;\n return element.textContent = text;\n }\n /**\r\n * Returns the innerWidth of the element.\r\n * @param {Element} element - Element to retrieve inner width of\r\n * @return {number} - The inner width of the element.\r\n */\n\n\n static innerWidth(element) {\n return element.clientWidth;\n }\n /**\r\n * Returns the innerHeight of the element.\r\n * @param {Element} element - Element to retrieve inner height of\r\n * @return {number} - The inner height of the element.\r\n */\n\n\n static innerHeight(element) {\n return element.clientHeight;\n }\n /**\r\n * Returns the outerWidth of the element.\r\n * @param {Element} element - Element to retrieve outer width of\r\n * @return {number} - The outer width of the element.\r\n */\n\n\n static outerWidth(element) {\n return element.offsetWidth;\n }\n /**\r\n * Returns the outerHeight of the element.\r\n * @param {Element} element - Element to retrieve outer height of\r\n * @return {number} - The outer height of the element.\r\n */\n\n\n static outerHeight(element) {\n return element.offsetHeight;\n }\n /**\r\n * Gets the offset of the element in the page.\r\n * @param {Element} element - Element to get offset of\r\n * @return {Offset} - The offset of the element\r\n */\n\n\n static offset(element) {\n return element.getBoundingClientRect();\n }\n\n static get listeners() {\n return this._listeners || (this._listeners = {});\n }\n /**\r\n * This is similar to jQuery's `on` function and can *hopefully* be used in the same way.\r\n * \r\n * Rather than attempt to explain, I'll show some example usages.\r\n * \r\n * The following will add a click listener (in the `myPlugin` namespace) to `element`.\r\n * `DOMTools.on(element, \"click.myPlugin\", () => {console.log(\"clicked!\");});`\r\n * \r\n * The following will add a click listener (in the `myPlugin` namespace) to `element` that only fires when the target is a `.block` element.\r\n * `DOMTools.on(element, \"click.myPlugin\", \".block\", () => {console.log(\"clicked!\");});`\r\n * \r\n * The following will add a click listener (without namespace) to `element`.\r\n * `DOMTools.on(element, \"click\", () => {console.log(\"clicked!\");});`\r\n * \r\n * The following will add a click listener (without namespace) to `element` that only fires once.\r\n * `const cancel = DOMTools.on(element, \"click\", () => {console.log(\"fired!\"); cancel();});`\r\n * \r\n * @param {Element} element - Element to add listener to\r\n * @param {string} event - Event to listen to with option namespace (e.g. \"event.namespace\")\r\n * @param {(string|callable)} delegate - Selector to run on element to listen to\r\n * @param {callable} [callback] - Function to fire on event\r\n * @returns {module:DOMTools~CancelListener} - A function that will undo the listener\r\n */\n\n\n static on(element, event, delegate, callback) {\n const [type, namespace] = event.split(\".\");\n const hasDelegate = delegate && callback;\n if (!callback) callback = delegate;\n const eventFunc = !hasDelegate ? callback : function (ev) {\n if (ev.target.matches(delegate)) {\n callback(ev);\n }\n };\n element.addEventListener(type, eventFunc);\n\n const cancel = () => {\n element.removeEventListener(type, eventFunc);\n };\n\n if (namespace) {\n if (!this.listeners[namespace]) this.listeners[namespace] = [];\n\n const newCancel = () => {\n cancel();\n this.listeners[namespace].splice(this.listeners[namespace].findIndex(l => l.event == type && l.element == element), 1);\n };\n\n this.listeners[namespace].push({\n event: type,\n element: element,\n cancel: newCancel\n });\n return newCancel;\n }\n\n return cancel;\n }\n /**\r\n * Functionality for this method matches {@link module:DOMTools.on} but automatically cancels itself\r\n * and removes the listener upon the first firing of the desired event.\r\n * \r\n * @param {Element} element - Element to add listener to\r\n * @param {string} event - Event to listen to with option namespace (e.g. \"event.namespace\")\r\n * @param {(string|callable)} delegate - Selector to run on element to listen to\r\n * @param {callable} [callback] - Function to fire on event\r\n * @returns {module:DOMTools~CancelListener} - A function that will undo the listener\r\n */\n\n\n static once(element, event, delegate, callback) {\n const [type, namespace] = event.split(\".\");\n const hasDelegate = delegate && callback;\n if (!callback) callback = delegate;\n const eventFunc = !hasDelegate ? function (ev) {\n callback(ev);\n element.removeEventListener(type, eventFunc);\n } : function (ev) {\n if (!ev.target.matches(delegate)) return;\n callback(ev);\n element.removeEventListener(type, eventFunc);\n };\n element.addEventListener(type, eventFunc);\n\n const cancel = () => {\n element.removeEventListener(type, eventFunc);\n };\n\n if (namespace) {\n if (!this.listeners[namespace]) this.listeners[namespace] = [];\n\n const newCancel = () => {\n cancel();\n this.listeners[namespace].splice(this.listeners[namespace].findIndex(l => l.event == type && l.element == element), 1);\n };\n\n this.listeners[namespace].push({\n event: type,\n element: element,\n cancel: newCancel\n });\n return newCancel;\n }\n\n return cancel;\n }\n\n static __offAll(event, element) {\n const [type, namespace] = event.split(\".\");\n\n let matchFilter = listener => listener.event == type,\n defaultFilter = _ => _;\n\n if (element) matchFilter = l => l.event == type && l.element == element, defaultFilter = l => l.element == element;\n const listeners = this.listeners[namespace] || [];\n const list = type ? listeners.filter(matchFilter) : listeners.filter(defaultFilter);\n\n for (let c = 0; c < list.length; c++) list[c].cancel();\n }\n /**\r\n * This is similar to jQuery's `off` function and can *hopefully* be used in the same way.\r\n * \r\n * Rather than attempt to explain, I'll show some example usages.\r\n * \r\n * The following will remove a click listener called `onClick` (in the `myPlugin` namespace) from `element`.\r\n * `DOMTools.off(element, \"click.myPlugin\", onClick);`\r\n * \r\n * The following will remove a click listener called `onClick` (in the `myPlugin` namespace) from `element` that only fired when the target is a `.block` element.\r\n * `DOMTools.off(element, \"click.myPlugin\", \".block\", onClick);`\r\n * \r\n * The following will remove a click listener (without namespace) from `element`.\r\n * `DOMTools.off(element, \"click\", onClick);`\r\n * \r\n * The following will remove all listeners in namespace `myPlugin` from `element`.\r\n * `DOMTools.off(element, \".myPlugin\");`\r\n * \r\n * The following will remove all click listeners in namespace `myPlugin` from *all elements*.\r\n * `DOMTools.off(\"click.myPlugin\");`\r\n * \r\n * The following will remove all listeners in namespace `myPlugin` from *all elements*.\r\n * `DOMTools.off(\".myPlugin\");`\r\n * \r\n * @param {(Element|string)} element - Element to remove listener from\r\n * @param {string} [event] - Event to listen to with option namespace (e.g. \"event.namespace\")\r\n * @param {(string|callable)} [delegate] - Selector to run on element to listen to\r\n * @param {callable} [callback] - Function to fire on event\r\n * @returns {Element} - The original element to allow for chaining\r\n */\n\n\n static off(element, event, delegate, callback) {\n if (typeof element == \"string\") return this.__offAll(element);\n const [type, namespace] = event.split(\".\");\n if (namespace) return this.__offAll(event, element);\n const hasDelegate = delegate && callback;\n if (!callback) callback = delegate;\n const eventFunc = !hasDelegate ? callback : function (ev) {\n if (ev.target.matches(delegate)) {\n callback(ev);\n }\n };\n element.removeEventListener(type, eventFunc);\n return element;\n }\n /**\r\n * Adds a listener for when the node is added/removed from the document body.\r\n * The listener is automatically removed upon firing.\r\n * @param {HTMLElement} node - node to wait for\r\n * @param {callable} callback - function to be performed on event\r\n * @param {boolean} onMount - determines if it should fire on Mount or on Unmount\r\n */\n\n\n static onMountChange(node, callback, onMount = true) {\n const wrappedCallback = () => {\n this.observer.unsubscribe(wrappedCallback);\n callback();\n };\n\n this.observer.subscribe(wrappedCallback, mutation => {\n const nodes = Array.from(onMount ? mutation.addedNodes : mutation.removedNodes);\n const directMatch = nodes.indexOf(node) > -1;\n const parentMatch = nodes.some(parent => parent.contains(node));\n return directMatch || parentMatch;\n });\n return node;\n }\n /** Shorthand for {@link module:DOMTools.onMountChange} with third parameter `true` */\n\n\n static onMount(node, callback) {\n return this.onMountChange(node, callback);\n }\n /** Shorthand for {@link module:DOMTools.onMountChange} with third parameter `false` */\n\n\n static onUnmount(node, callback) {\n return this.onMountChange(node, callback, false);\n }\n /** Alias for {@link module:DOMTools.onMount} */\n\n\n static onAdded(node, callback) {\n return this.onMount(node, callback);\n }\n /** Alias for {@link module:DOMTools.onUnmount} */\n\n\n static onRemoved(node, callback) {\n return this.onUnmount(node, callback, false);\n }\n /**\r\n * Helper function which combines multiple elements into one parent element\r\n * @param {Array} elements - array of elements to put into a single parent\r\n */\n\n\n static wrap(elements) {\n const domWrapper = this.parseHTML(`
`);\n\n for (let e = 0; e < elements.length; e++) domWrapper.appendChild(elements[e]);\n\n return domWrapper;\n }\n /**\r\n * Resolves the node to an HTMLElement. This is mainly used by library modules.\r\n * @param {(jQuery|Element)} node - node to resolve\r\n */\n\n\n static resolveElement(node) {\n if (!(node instanceof jQuery) && !(node instanceof Element)) return undefined;\n return node instanceof jQuery ? node[0] : node;\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL21vZHVsZXMvZG9tdG9vbHMuanM/MTNkZCJdLCJuYW1lcyI6WyJET01Ub29scyIsImVzY2FwZUlEIiwiaWQiLCJyZXBsYWNlIiwiYWRkU3R5bGUiLCJjc3MiLCJkb2N1bWVudCIsImhlYWQiLCJhcHBlbmQiLCJjcmVhdGVFbGVtZW50IiwicmVtb3ZlU3R5bGUiLCJlbGVtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJyZW1vdmUiLCJhZGRTY3JpcHQiLCJ1cmwiLCJQcm9taXNlIiwicmVzb2x2ZSIsInNjcmlwdCIsInNyYyIsInR5cGUiLCJvbmxvYWQiLCJyZW1vdmVTY3JpcHQiLCJhbmltYXRlIiwidGltaW5nIiwiXyIsInVwZGF0ZSIsImR1cmF0aW9uIiwic3RhcnQiLCJwZXJmb3JtYW5jZSIsIm5vdyIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsInRpbWUiLCJ0aW1lRnJhY3Rpb24iLCJwcm9ncmVzcyIsIlEiLCJzZWxlY3RvciIsInBhcnNlSFRNTCIsImlzSFRNTCIsIk5vZGVMaXN0IiwiQXJyYXkiLCJmcm9tIiwic29tZSIsIm4iLCJub2RlVHlwZSIsInF1ZXJ5IiwiYmFzZUVsZW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwicXVlcnlBbGwiLCJxdWVyeVNlbGVjdG9yQWxsIiwiaHRtbCIsImZyYWdtZW50IiwidGVtcGxhdGUiLCJpbm5lckhUTUwiLCJub2RlIiwiY29udGVudCIsImNsb25lTm9kZSIsImNoaWxkTm9kZXMiLCJsZW5ndGgiLCJlc2NhcGVIVE1MIiwidGV4dE5vZGUiLCJjcmVhdGVUZXh0Tm9kZSIsInNwYW5FbGVtZW50Iiwibm9kZVZhbHVlIiwiYWRkQ2xhc3MiLCJjbGFzc2VzIiwiZmxhdCIsImZpbHRlciIsImMiLCJ0b1N0cmluZyIsInNwbGl0IiwiY2xhc3NMaXN0IiwiYWRkIiwicmVtb3ZlQ2xhc3MiLCJ0b2dnbGVDbGFzcyIsImNsYXNzbmFtZSIsImluZGljYXRvciIsImZvckVhY2giLCJ0b2dnbGUiLCJoYXNDbGFzcyIsImV2ZXJ5IiwiY29udGFpbnMiLCJyZXBsYWNlQ2xhc3MiLCJvbGROYW1lIiwibmV3TmFtZSIsImFwcGVuZFRvIiwidGhpc05vZGUiLCJ0aGF0Tm9kZSIsInByZXBlbmRUbyIsInByZXBlbmQiLCJpbnNlcnRBZnRlciIsInRhcmdldE5vZGUiLCJwYXJlbnROb2RlIiwiaW5zZXJ0QmVmb3JlIiwibmV4dFNpYmxpbmciLCJhZnRlciIsIm5ld05vZGUiLCJuZXh0IiwibmV4dEVsZW1lbnRTaWJsaW5nIiwibmV4dEFsbCIsIm5leHRVbnRpbCIsIm1hdGNoZXMiLCJwdXNoIiwicHJldmlvdXMiLCJwcmV2aW91c0VsZW1lbnRTaWJsaW5nIiwicHJldmlvdXNBbGwiLCJwcmV2aW91c1VudGlsIiwiaW5kZXhJblBhcmVudCIsImNoaWxkcmVuIiwibnVtIiwiaSIsImluZGV4IiwicGFyZW50IiwicGFyZW50RWxlbWVudCIsImZpbmRDaGlsZCIsImZpbmRDaGlsZHJlbiIsInBhcmVudHMiLCJjbG9zZXN0IiwicGFyZW50c1VudGlsIiwic2libGluZ3MiLCJlIiwiYXR0cmlidXRlIiwidmFsdWUiLCJnbG9iYWwiLCJnZXRDb21wdXRlZFN0eWxlIiwic3R5bGUiLCJ3aWR0aCIsInBhcnNlSW50IiwiaGVpZ2h0IiwidGV4dCIsInRleHRDb250ZW50IiwiaW5uZXJXaWR0aCIsImNsaWVudFdpZHRoIiwiaW5uZXJIZWlnaHQiLCJjbGllbnRIZWlnaHQiLCJvdXRlcldpZHRoIiwib2Zmc2V0V2lkdGgiLCJvdXRlckhlaWdodCIsIm9mZnNldEhlaWdodCIsIm9mZnNldCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsImxpc3RlbmVycyIsIl9saXN0ZW5lcnMiLCJvbiIsImV2ZW50IiwiZGVsZWdhdGUiLCJjYWxsYmFjayIsIm5hbWVzcGFjZSIsImhhc0RlbGVnYXRlIiwiZXZlbnRGdW5jIiwiZXYiLCJ0YXJnZXQiLCJhZGRFdmVudExpc3RlbmVyIiwiY2FuY2VsIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsIm5ld0NhbmNlbCIsInNwbGljZSIsImZpbmRJbmRleCIsImwiLCJvbmNlIiwiX19vZmZBbGwiLCJtYXRjaEZpbHRlciIsImxpc3RlbmVyIiwiZGVmYXVsdEZpbHRlciIsImxpc3QiLCJvZmYiLCJvbk1vdW50Q2hhbmdlIiwib25Nb3VudCIsIndyYXBwZWRDYWxsYmFjayIsIm9ic2VydmVyIiwidW5zdWJzY3JpYmUiLCJzdWJzY3JpYmUiLCJtdXRhdGlvbiIsIm5vZGVzIiwiYWRkZWROb2RlcyIsInJlbW92ZWROb2RlcyIsImRpcmVjdE1hdGNoIiwiaW5kZXhPZiIsInBhcmVudE1hdGNoIiwib25Vbm1vdW50Iiwib25BZGRlZCIsIm9uUmVtb3ZlZCIsIndyYXAiLCJlbGVtZW50cyIsImRvbVdyYXBwZXIiLCJhcHBlbmRDaGlsZCIsInJlc29sdmVFbGVtZW50IiwialF1ZXJ5IiwiRWxlbWVudCIsInVuZGVmaW5lZCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXVCQTs7Ozs7Ozs7Ozs7QUFXQzs7OztBQUtjLE1BQU1BLFFBQU4sQ0FBZTtBQUUxQixTQUFPQyxRQUFQLENBQWdCQyxFQUFoQixFQUFvQjtBQUNoQixXQUFPQSxFQUFFLENBQUNDLE9BQUgsQ0FBVyxvQkFBWCxFQUFpQyxHQUFqQyxDQUFQO0FBQ0g7QUFFRDs7Ozs7OztBQUtILFNBQU9DLFFBQVAsQ0FBZ0JGLEVBQWhCLEVBQW9CRyxHQUFwQixFQUF5QjtBQUN4QkMsWUFBUSxDQUFDQyxJQUFULENBQWNDLE1BQWQsQ0FBcUJSLFFBQVEsQ0FBQ1MsYUFBVCxDQUF3QixjQUFhUCxFQUFHLEtBQUlHLEdBQUksVUFBaEQsQ0FBckI7QUFDQTtBQUVEOzs7Ozs7QUFJQSxTQUFPSyxXQUFQLENBQW1CUixFQUFuQixFQUF1QjtBQUN0QixVQUFNUyxPQUFPLEdBQUdMLFFBQVEsQ0FBQ00sY0FBVCxDQUF3QlYsRUFBeEIsQ0FBaEI7QUFDQSxRQUFJUyxPQUFKLEVBQWFBLE9BQU8sQ0FBQ0UsTUFBUjtBQUNi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Q0FBdUJGLFFBQVEsQ0FBQy9ELENBQUQsQ0FBL0I7O0FBQzFDLFdBQU9nRSxVQUFQO0FBQ0g7QUFFRDs7Ozs7O0FBSUEsU0FBT0UsY0FBUCxDQUFzQnBJLElBQXRCLEVBQTRCO0FBQ3hCLFFBQUksRUFBRUEsSUFBSSxZQUFZcUksTUFBbEIsS0FBNkIsRUFBRXJJLElBQUksWUFBWXNJLE9BQWxCLENBQWpDLEVBQTZELE9BQU9DLFNBQVA7QUFDN0QsV0FBT3ZJLElBQUksWUFBWXFJLE1BQWhCLEdBQXlCckksSUFBSSxDQUFDLENBQUQsQ0FBN0IsR0FBbUNBLElBQTFDO0FBQ0g7O0FBeHNCeUIiLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9kb210b29scy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBDb3B5cmlnaHQgMjAxOCBaYWNoYXJ5IFJhdWVuXHJcbiAqXHJcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZ1xyXG4gKiBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSxcclxuICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGVcclxuICogcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcclxuICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZFxyXG4gKiB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XHJcbiAqXHJcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbFxyXG4gKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxyXG4gKlxyXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SIElNUExJRUQsXHJcbiAqIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBXHJcbiAqIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFRcclxuICogSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GXHJcbiAqIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRVxyXG4gKiBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cclxuICogXHJcbiAqIEZyb206IGh0dHBzOi8vZ2l0aHViLmNvbS9yYXVlbnppL0JEUGx1Z2luTGlicmFyeVxyXG4gKi9cclxuXHJcbi8qKlxyXG4gKiBAaW50ZXJmYWNlXHJcbiAqIEBuYW1lIE9mZnNldFxyXG4gKiBAcHJvcGVydHkge251bWJlcn0gdG9wIC0gVG9wIG9mZnNldCBvZiB0aGUgdGFyZ2V0IGVsZW1lbnQuXHJcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSByaWdodCAtIFJpZ2h0IG9mZnNldCBvZiB0aGUgdGFyZ2V0IGVsZW1lbnQuXHJcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBib3R0b20gLSBCb3R0b20gb2Zmc2V0IG9mIHRoZSB0YXJnZXQgZWxlbWVudC5cclxuICogQHByb3BlcnR5IHtudW1iZXJ9IGxlZnQgLSBMZWZ0IG9mZnNldCBvZiB0aGUgdGFyZ2V0IGVsZW1lbnQuXHJcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBoZWlnaHQgLSBPdXRlciBoZWlnaHQgb2YgdGhlIHRhcmdldCBlbGVtZW50LlxyXG4gKiBAcHJvcGVydHkge251bWJlcn0gd2lkdGggLSBPdXRlciB3aWR0aCBvZiB0aGUgdGFyZ2V0IGVsZW1lbnQuXHJcbiAqL1xyXG5cclxuIC8qKlxyXG4gKiBGdW5jdGlvbiB0aGF0IGF1dG9tYXRpY2FsbHkgcmVtb3ZlcyBhZGRlZCBsaXN0ZW5lci5cclxuICogQGNhbGxiYWNrIG1vZHVsZTpET01Ub29sc35DYW5jZWxMaXN0ZW5lclxyXG4gKi9cclxuIFxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBET01Ub29scyB7XHJcblxyXG4gICAgc3RhdGljIGVzY2FwZUlEKGlkKSB7XHJcbiAgICAgICAgcmV0dXJuIGlkLnJlcGxhY2UoL15bXmEtel0rfFteXFx3LV0rL2dpLCBcIi1cIik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcblx0ICogQWRkcyBhIHN0eWxlIHRvIHRoZSBkb2N1bWVudC5cclxuXHQgKiBAcGFyYW0ge3N0cmluZ30gaWQgLSBpZGVudGlmaWVyIHRvIHVzZSBhcyB0aGUgZWxlbWVudCBpZFxyXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBjc3MgLSBjc3MgdG8gYWRkIHRvIHRoZSBkb2N1bWVudFxyXG5cdCAqL1xyXG5cdHN0YXRpYyBhZGRTdHlsZShpZCwgY3NzKSB7XHJcblx0XHRkb2N1bWVudC5oZWFkLmFwcGVuZChET01Ub29scy5jcmVhdGVFbGVtZW50KGA8c3R5bGUgaWQ9XCIke2lkfVwiPiR7Y3NzfTwvc3R5bGU+YCkpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogUmVtb3ZlcyBhIHN0eWxlIGZyb20gdGhlIGRvY3VtZW50LlxyXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBpZCAtIG9yaWdpbmFsIGlkZW50aWZpZXIgdXNlZFxyXG5cdCAqL1xyXG5cdHN0YXRpYyByZW1vdmVTdHlsZShpZCkge1xyXG5cdFx0Y29uc3QgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTtcclxuXHRcdGlmIChlbGVtZW50KSBlbGVtZW50LnJlbW92ZSgpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQWRkcy9yZXF1aXJlcyBhIHJlbW90ZSBzY3JpcHQgdG8gYmUgbG9hZGVkXHJcblx0ICogQHBhcmFtIHtzdHJpbmd9IGlkIC0gaWRlbnRpZmllciB0byB1c2UgZm9yIHRoaXMgc2NyaXB0XHJcblx0ICogQHBhcmFtIHtzdHJpbmd9IHVybCAtIHVybCBmcm9tIHdoaWNoIHRvIGxvYWQgdGhlIHNjcmlwdFxyXG5cdCAqIEByZXR1cm5zIHtQcm9taXNlfSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgc2NyaXB0IGlzIGxvYWRlZFxyXG5cdCAqL1xyXG5cdHN0YXRpYyBhZGRTY3JpcHQoaWQsIHVybCkge1xyXG5cdFx0cmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xyXG5cdFx0XHRjb25zdCBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic2NyaXB0XCIpO1xyXG5cdFx0XHRzY3JpcHQuaWQgPSBpZDtcclxuXHRcdFx0c2NyaXB0LnNyYyA9IHVybDtcclxuXHRcdFx0c2NyaXB0LnR5cGUgPSBcInRleHQvamF2YXNjcmlwdFwiO1xyXG5cdFx0XHRzY3JpcHQub25sb2FkID0gcmVzb2x2ZTtcclxuXHRcdFx0ZG9jdW1lbnQuaGVhZC5hcHBlbmQoc2NyaXB0KTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogUmVtb3ZlcyBhIHJlbW90ZSBzY3JpcHQgZnJvbSB0aGUgZG9jdW1lbnQuXHJcblx0ICogQHBhcmFtIHtzdHJpbmd9IGlkIC0gb3JpZ2luYWwgaWRlbnRpZmllciB1c2VkXHJcblx0ICovXHJcblx0c3RhdGljIHJlbW92ZVNjcmlwdChpZCkge1xyXG4gICAgICAgIGlkID0gdGhpcy5lc2NhcGVJRChpZCk7XHJcblx0XHRjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpO1xyXG5cdFx0aWYgKGVsZW1lbnQpIGVsZW1lbnQucmVtb3ZlKCk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIC8vIGh0dHBzOi8vamF2YXNjcmlwdC5pbmZvL2pzLWFuaW1hdGlvblxyXG4gICAgc3RhdGljIGFuaW1hdGUoe3RpbWluZyA9IF8gPT4gXywgdXBkYXRlLCBkdXJhdGlvbn0pIHtcclxuICAgICAgICBjb25zdCBzdGFydCA9IHBlcmZvcm1hbmNlLm5vdygpO1xyXG4gICAgICBcclxuICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24gYW5pbWF0ZSh0aW1lKSB7XHJcbiAgICAgICAgICAvLyB0aW1lRnJhY3Rpb24gZ29lcyBmcm9tIDAgdG8gMVxyXG4gICAgICAgICAgbGV0IHRpbWVGcmFjdGlvbiA9ICh0aW1lIC0gc3RhcnQpIC8gZHVyYXRpb247XHJcbiAgICAgICAgICBpZiAodGltZUZyYWN0aW9uID4gMSkgdGltZUZyYWN0aW9uID0gMTtcclxuICAgICAgXHJcbiAgICAgICAgICAvLyBjYWxjdWxhdGUgdGhlIGN1cnJlbnQgYW5pbWF0aW9uIHN0YXRlXHJcbiAgICAgICAgICBjb25zdCBwcm9ncmVzcyA9IHRpbWluZyh0aW1lRnJhY3Rpb24pO1xyXG4gICAgICBcclxuICAgICAgICAgIHVwZGF0ZShwcm9ncmVzcyk7IC8vIGRyYXcgaXRcclxuICAgICAgXHJcbiAgICAgICAgICBpZiAodGltZUZyYWN0aW9uIDwgMSkge1xyXG4gICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoYW5pbWF0ZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgIFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGlzIGlzIG15IHNoaXQgdmVyc2lvbiBvZiBub3QgaGF2aW5nIHRvIHVzZSBgJGAgZnJvbSBqUXVlcnkuIE1lYW5pbmdcclxuICAgICAqIHRoYXQgeW91IGNhbiBwYXNzIGEgc2VsZWN0b3IgYW5kIGl0IHdpbGwgYXV0b21hdGljYWxseSBydW4ge0BsaW5rIG1vZHVsZTpET01Ub29scy5xdWVyeX0uXHJcbiAgICAgKiBJdCBhbHNvIG1lYW5zIHRoYXQgeW91IGNhbiBwYXNzIGEgc3RyaW5nIG9mIGh0bWwgYW5kIGl0IHdpbGwgcGVyZm9ybSBhbmQgcmV0dXJuIGBwYXJzZUhUTUxgLlxyXG4gICAgICogQHNlZSBtb2R1bGU6RE9NVG9vbHMucGFyc2VIVE1MXHJcbiAgICAgKiBAc2VlIG1vZHVsZTpET01Ub29scy5xdWVyeVxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHNlbGVjdG9yIC0gU2VsZWN0b3IgdG8gcXVlcnkgb3IgSFRNTCB0byBwYXJzZVxyXG4gICAgICogQHJldHVybnMgeyhEb2N1bWVudEZyYWdtZW50fE5vZGVMaXN0fEhUTUxFbGVtZW50KX0gLSBFaXRoZXIgdGhlIHJlc3VsdCBvZiBgcGFyc2VIVE1MYCBvciBgcXVlcnlgXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBRKHNlbGVjdG9yKSB7XHJcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMucGFyc2VIVE1MKHNlbGVjdG9yKTtcclxuICAgICAgICBjb25zdCBpc0hUTUwgPSBlbGVtZW50IGluc3RhbmNlb2YgTm9kZUxpc3QgPyBBcnJheS5mcm9tKGVsZW1lbnQpLnNvbWUobiA9PiBuLm5vZGVUeXBlID09PSAxKSA6IGVsZW1lbnQubm9kZVR5cGUgPT09IDE7XHJcbiAgICAgICAgaWYgKGlzSFRNTCkgcmV0dXJuIGVsZW1lbnQ7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucXVlcnkoc2VsZWN0b3IpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRXNzZW50aWFsbHkgYSBzaG9ydGhhbmQgZm9yIGBkb2N1bWVudC5xdWVyeVNlbGVjdG9yYC4gSWYgdGhlIGBiYXNlRWxlbWVudGAgaXMgbm90IHByb3ZpZGVkXHJcbiAgICAgKiBgZG9jdW1lbnRgIGlzIHVzZWQgYnkgZGVmYXVsdC5cclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzZWxlY3RvciAtIFNlbGVjdG9yIHRvIHF1ZXJ5XHJcbiAgICAgKiBAcGFyYW0ge0VsZW1lbnR9IFtiYXNlRWxlbWVudF0gLSBFbGVtZW50IHRvIGJhc2UgdGhlIHF1ZXJ5IGZyb21cclxuICAgICAqIEByZXR1cm5zIHsoRWxlbWVudHxudWxsKX0gLSBUaGUgZm91bmQgZWxlbWVudCBvciBudWxsIGlmIG5vdCBmb3VuZFxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgcXVlcnkoc2VsZWN0b3IsIGJhc2VFbGVtZW50KSB7XHJcbiAgICAgICAgaWYgKCFiYXNlRWxlbWVudCkgYmFzZUVsZW1lbnQgPSBkb2N1bWVudDtcclxuICAgICAgICByZXR1cm4gYmFzZUVsZW1lbnQucXVlcnlTZWxlY3RvcihzZWxlY3Rvcik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBFc3NlbnRpYWxseSBhIHNob3J0aGFuZCBmb3IgYGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGxgLiBJZiB0aGUgYGJhc2VFbGVtZW50YCBpcyBub3QgcHJvdmlkZWRcclxuICAgICAqIGBkb2N1bWVudGAgaXMgdXNlZCBieSBkZWZhdWx0LlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHNlbGVjdG9yIC0gU2VsZWN0b3IgdG8gcXVlcnlcclxuICAgICAqIEBwYXJhbSB7RWxlbWVudH0gW2Jhc2VFbGVtZW50XSAtIEVsZW1lbnQgdG8gYmFzZSB0aGUgcXVlcnkgZnJvbVxyXG4gICAgICogQHJldHVybnMge0FycmF5PEVsZW1lbnQ+fSAtIEFycmF5IG9mIGFsbCBmb3VuZCBlbGVtZW50c1xyXG4gICAgICovXHJcbiAgICBzdGF0aWMgcXVlcnlBbGwoc2VsZWN0b3IsIGJhc2VFbGVtZW50KSB7XHJcbiAgICAgICAgaWYgKCFiYXNlRWxlbWVudCkgYmFzZUVsZW1lbnQgPSBkb2N1bWVudDtcclxuICAgICAgICByZXR1cm4gYmFzZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbChzZWxlY3Rvcik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQYXJzZXMgYSBzdHJpbmcgb2YgSFRNTCBhbmQgcmV0dXJucyB0aGUgcmVzdWx0cy4gSWYgdGhlIHNlY29uZCBwYXJhbWV0ZXIgaXMgdHJ1ZSxcclxuICAgICAqIHRoZSBwYXJzZWQgSFRNTCB3aWxsIGJlIHJldHVybmVkIGFzIGEgZG9jdW1lbnQgZnJhZ21lbnQge0BzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0RvY3VtZW50RnJhZ21lbnR9LlxyXG4gICAgICogVGhpcyBpcyBleHRyZW1lbHkgdXNlZnVsIGlmIHlvdSBoYXZlIGEgbGlzdCBvZiBlbGVtZW50cyBhdCB0aGUgdG9wIGxldmVsLCB0aGV5IGNhbiB0aGVuIGJlIGFwcGVuZGVkIGFsbCBhdCBvbmNlIHRvIGFub3RoZXIgbm9kZS5cclxuICAgICAqIFxyXG4gICAgICogSWYgdGhlIHNlY29uZCBwYXJhbWV0ZXIgaXMgZmFsc2UsIHRoZW4gdGhlIHJldHVybiB2YWx1ZSB3aWxsIGJlIHRoZSBsaXN0IG9mIHBhcnNlZFxyXG4gICAgICogbm9kZXMgYW5kIHRoZXJlIHdlcmUgbXVsdGlwbGUgdG9wIGxldmVsIG5vZGVzLCBvdGhlcndpc2UgdGhlIHNpbmdsZSBub2RlIGlzIHJldHVybmVkLlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGh0bWwgLSBIVE1MIHRvIGJlIHBhcnNlZFxyXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbZnJhZ21lbnQ9ZmFsc2VdIC0gV2hldGhlciBvciBub3QgdGhlIHJldHVybiBzaG91bGQgYmUgdGhlIHJhdyBgRG9jdW1lbnRGcmFnbWVudGBcclxuICAgICAqIEByZXR1cm5zIHsoRG9jdW1lbnRGcmFnbWVudHxOb2RlTGlzdHxIVE1MRWxlbWVudCl9IC0gVGhlIHJlc3VsdCBvZiBIVE1MIHBhcnNpbmdcclxuICAgICAqL1xyXG4gICAgc3RhdGljIHBhcnNlSFRNTChodG1sLCBmcmFnbWVudCA9IGZhbHNlKSB7XHJcbiAgICAgICAgY29uc3QgdGVtcGxhdGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwidGVtcGxhdGVcIik7XHJcbiAgICAgICAgdGVtcGxhdGUuaW5uZXJIVE1MID0gaHRtbDtcclxuICAgICAgICBjb25zdCBub2RlID0gdGVtcGxhdGUuY29udGVudC5jbG9uZU5vZGUodHJ1ZSk7XHJcbiAgICAgICAgaWYgKGZyYWdtZW50KSByZXR1cm4gbm9kZTtcclxuICAgICAgICByZXR1cm4gbm9kZS5jaGlsZE5vZGVzLmxlbmd0aCA+IDEgPyBub2RlLmNoaWxkTm9kZXMgOiBub2RlLmNoaWxkTm9kZXNbMF07XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEFsdGVybmF0ZSBuYW1lIGZvciB7QGxpbmsgbW9kdWxlOkRPTVRvb2xzLnBhcnNlSFRNTH0gKi9cclxuICAgIHN0YXRpYyBjcmVhdGVFbGVtZW50KGh0bWwsIGZyYWdtZW50ID0gZmFsc2UpIHtyZXR1cm4gdGhpcy5wYXJzZUhUTUwoaHRtbCwgZnJhZ21lbnQpO31cclxuICAgIFxyXG4gICAgLyoqXHJcbiAgICAgKiBUYWtlcyBhIHN0cmluZyBvZiBodG1sIGFuZCBlc2NhcGVzIGl0IHVzaW5nIHRoZSBicm93ZXIncyBvd24gZXNjYXBpbmcgbWVjaGFuaXNtLlxyXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IGh0bWwgLSBodG1sIHRvIGJlIGVzY2FwZWRcclxuICAgICAqL1xyXG4gICAgc3RhdGljIGVzY2FwZUhUTUwoaHRtbCkge1xyXG4gICAgICAgIGNvbnN0IHRleHROb2RlID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoXCJcIik7XHJcbiAgICAgICAgY29uc3Qgc3BhbkVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3BhblwiKTtcclxuICAgICAgICBzcGFuRWxlbWVudC5hcHBlbmQodGV4dE5vZGUpO1xyXG4gICAgICAgIHRleHROb2RlLm5vZGVWYWx1ZSA9IGh0bWw7XHJcbiAgICAgICAgcmV0dXJuIHNwYW5FbGVtZW50LmlubmVySFRNTDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFkZHMgYSBsaXN0IG9mIGNsYXNzZXMgZnJvbSB0aGUgdGFyZ2V0IGVsZW1lbnQuXHJcbiAgICAgKiBAcGFyYW0ge0VsZW1lbnR9IGVsZW1lbnQgLSBFbGVtZW50IHRvIGVkaXQgY2xhc3NlcyBvZlxyXG4gICAgICogQHBhcmFtIHsuLi5zdHJpbmd9IGNsYXNzZXMgLSBOYW1lcyBvZiBjbGFzc2VzIHRvIGFkZFxyXG4gICAgICogQHJldHVybnMge0VsZW1lbnR9IC0gYGVsZW1lbnRgIHRvIGFsbG93IGZvciBjaGFpbmluZ1xyXG4gICAgICovXHJcbiAgICBzdGF0aWMgYWRkQ2xhc3MoZWxlbWVudCwgLi4uY2xhc3Nlcykge1xyXG4gICAgICAgIGNsYXNzZXMgPSBjbGFzc2VzLmZsYXQoKS5maWx0ZXIoYyA9PiBjKTtcclxuICAgICAgICBmb3IgKGxldCBjID0gMDsgYyA8IGNsYXNzZXMubGVuZ3RoOyBjKyspIGNsYXNzZXNbY10gPSBjbGFzc2VzW2NdLnRvU3RyaW5nKCkuc3BsaXQoXCIgXCIpO1xyXG4gICAgICAgIGNsYXNzZXMgPSBjbGFzc2VzLmZsYXQoKS5maWx0ZXIoYyA9PiBjKTtcclxuICAgICAgICBlbGVtZW50LmNsYXNzTGlzdC5hZGQoLi4uY2xhc3Nlcyk7XHJcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZW1vdmVzIGEgbGlzdCBvZiBjbGFzc2VzIGZyb20gdGhlIHRhcmdldCBlbGVtZW50LlxyXG4gICAgICogQHBhcmFtIHtFbGVtZW50fSBlbGVtZW50IC0gRWxlbWVudCB0byBlZGl0IGNsYXNzZXMgb2ZcclxuICAgICAqIEBwYXJhbSB7Li4uc3RyaW5nfSBjbGFzc2VzIC0gTmFtZXMgb2YgY2xhc3NlcyB0byByZW1vdmVcclxuICAgICAqIEByZXR1cm5zIHtFbGVtZW50fSAtIGBlbGVtZW50YCB0byBhbGxvdyBmb3IgY2hhaW5pbmdcclxuICAgICAqL1xyXG4gICAgc3RhdGljIHJlbW92ZUNsYXNzKGVsZW1lbnQsIC4uLmNsYXNzZXMpIHtcclxuICAgICAgICBmb3IgKGxldCBjID0gMDsgYyA8IGNsYXNzZXMubGVuZ3RoOyBjKyspIGNsYXNzZXNbY10gPSBjbGFzc2VzW2NdLnRvU3RyaW5nKCkuc3BsaXQoXCIgXCIpO1xyXG4gICAgICAgIGNsYXNzZXMgPSBjbGFzc2VzLmZsYXQoKS5maWx0ZXIoYyA9PiBjKTtcclxuICAgICAgICBlbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoLi4uY2xhc3Nlcyk7XHJcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBXaGVuIG9ubHkgb25lIGFyZ3VtZW50IGlzIHByZXNlbnQ6IFRvZ2dsZSBjbGFzcyB2YWx1ZTtcclxuICAgICAqIGkuZS4sIGlmIGNsYXNzIGV4aXN0cyB0aGVuIHJlbW92ZSBpdCBhbmQgcmV0dXJuIGZhbHNlLCBpZiBub3QsIHRoZW4gYWRkIGl0IGFuZCByZXR1cm4gdHJ1ZS5cclxuICAgICAqIFdoZW4gYSBzZWNvbmQgYXJndW1lbnQgaXMgcHJlc2VudDpcclxuICAgICAqIElmIHRoZSBzZWNvbmQgYXJndW1lbnQgZXZhbHVhdGVzIHRvIHRydWUsIGFkZCBzcGVjaWZpZWQgY2xhc3MgdmFsdWUsIGFuZCBpZiBpdCBldmFsdWF0ZXMgdG8gZmFsc2UsIHJlbW92ZSBpdC5cclxuICAgICAqIEBwYXJhbSB7RWxlbWVudH0gZWxlbWVudCAtIEVsZW1lbnQgdG8gZWRpdCBjbGFzc2VzIG9mXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gY2xhc3NuYW1lIC0gTmFtZSBvZiBjbGFzcyB0byB0b2dnbGVcclxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2luZGljYXRvcl0gLSBPcHRpb25hbCBpbmRpY2F0b3IgZm9yIGlmIHRoZSBjbGFzcyBzaG91bGQgYmUgdG9nZ2xlZFxyXG4gICAgICogQHJldHVybnMge0VsZW1lbnR9IC0gYGVsZW1lbnRgIHRvIGFsbG93IGZvciBjaGFpbmluZ1xyXG4gICAgICovXHJcbiAgICBzdGF0aWMgdG9nZ2xlQ2xhc3MoZWxlbWVudCwgY2xhc3NuYW1lLCBpbmRpY2F0b3IpIHtcclxuICAgICAgICBjbGFzc25hbWUgPSBjbGFzc25hbWUudG9TdHJpbmcoKS5zcGxpdChcIiBcIikuZmlsdGVyKGMgPT4gYyk7XHJcbiAgICAgICAgaWYgKHR5cGVvZihpbmRpY2F0b3IpICE9PSBcInVuZGVmaW5lZFwiKSBjbGFzc25hbWUuZm9yRWFjaChjID0+IGVsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZShjLCBpbmRpY2F0b3IpKTtcclxuICAgICAgICBlbHNlIGNsYXNzbmFtZS5mb3JFYWNoKGMgPT4gZWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKGMpKTtcclxuICAgICAgICByZXR1cm4gZWxlbWVudDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENoZWNrcyBpZiBhbiBlbGVtZW50IGhhcyBhIHNwZWNpZmljIGNsYXNzXHJcbiAgICAgKiBAcGFyYW0ge0VsZW1lbnR9IGVsZW1lbnQgLSBFbGVtZW50IHRvIGVkaXQgY2xhc3NlcyBvZlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGNsYXNzbmFtZSAtIE5hbWUgb2YgY2xhc3MgdG8gY2hlY2tcclxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSAtIGB0cnVlYCBpZiB0aGUgZWxlbWVudCBoYXMgdGhlIGNsYXNzLCBgZmFsc2VgIG90aGVyd2lzZS5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGhhc0NsYXNzKGVsZW1lbnQsIGNsYXNzbmFtZSkge1xyXG4gICAgICAgIHJldHVybiBjbGFzc25hbWUudG9TdHJpbmcoKS5zcGxpdChcIiBcIikuZmlsdGVyKGMgPT4gYykuZXZlcnkoYyA9PiBlbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhjKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXBsYWNlcyBvbmUgY2xhc3Mgd2l0aCBhbm90aGVyXHJcbiAgICAgKiBAcGFyYW0ge0VsZW1lbnR9IGVsZW1lbnQgLSBFbGVtZW50IHRvIGVkaXQgY2xhc3NlcyBvZlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG9sZE5hbWUgLSBOYW1lIG9mIGNsYXNzIHRvIHJlcGxhY2VcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuZXdOYW1lIC0gTmV3IG5hbWUgZm9yIHRoZSBjbGFzc1xyXG4gICAgICogQHJldHVybnMge0VsZW1lbnR9IC0gYGVsZW1lbnRgIHRvIGFsbG93IGZvciBjaGFpbmluZ1xyXG4gICAgICovXHJcbiAgICBzdGF0aWMgcmVwbGFjZUNsYXNzKGVsZW1lbnQsIG9sZE5hbWUsIG5ld05hbWUpIHtcclxuICAgICAgICBlbGVtZW50LmNsYXNzTGlzdC5yZXBsYWNlKG9sZE5hbWUsIG5ld05hbWUpO1xyXG4gICAgICAgIHJldHVybiBlbGVtZW50O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQXBwZW5kcyBgdGhpc05vZGVgIHRvIGB0aGF0Tm9kZWBcclxuICAgICAqIEBwYXJhbSB7Tm9kZX0gdGhpc05vZGUgLSBOb2RlIHRvIGJlIGFwcGVuZGVkIHRvIGFub3RoZXIgbm9kZVxyXG4gICAgICogQHBhcmFtIHtOb2RlfSB0aGF0Tm9kZSAtIE5vZGUgZm9yIGB0aGlzTm9kZWAgdG8gYmUgYXBwZW5kZWQgdG9cclxuICAgICAqIEByZXR1cm5zIHtOb2RlfSAtIGB0aGlzTm9kZWAgdG8gYWxsb3cgZm9yIGNoYWluaW5nXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBhcHBlbmRUbyh0aGlzTm9kZSwgdGhhdE5vZGUpIHtcclxuICAgICAgICBpZiAodHlwZW9mKHRoYXROb2RlKSA9PSBcInN0cmluZ1wiKSB0aGF0Tm9kZSA9IHRoaXMucXVlcnkodGhhdE5vZGUpO1xyXG4gICAgICAgIGlmICghdGhhdE5vZGUpIHJldHVybiBudWxsO1xyXG4gICAgICAgIHRoYXROb2RlLmFwcGVuZCh0aGlzTm9kZSk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXNOb2RlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUHJlcGVuZHMgYHRoaXNOb2RlYCB0byBgdGhhdE5vZGVgXHJcbiAgICAgKiBAcGFyYW0ge05vZGV9IHRoaXNOb2RlIC0gTm9kZSB0byBiZSBwcmVwZW5kZWQgdG8gYW5vdGhlciBub2RlXHJcbiAgICAgKiBAcGFyYW0ge05vZGV9IHRoYXROb2RlIC0gTm9kZSBmb3IgYHRoaXNOb2RlYCB0byBiZSBwcmVwZW5kZWQgdG9cclxuICAgICAqIEByZXR1cm5zIHtOb2RlfSAtIGB0aGlzTm9kZWAgdG8gYWxsb3cgZm9yIGNoYWluaW5nXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBwcmVwZW5kVG8odGhpc05vZGUsIHRoYXROb2RlKSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZih0aGF0Tm9kZSkgPT0gXCJzdHJpbmdcIikgdGhhdE5vZGUgPSB0aGlzLnF1ZXJ5KHRoYXROb2RlKTtcclxuICAgICAgICBpZiAoIXRoYXROb2RlKSByZXR1cm4gbnVsbDtcclxuICAgICAgICB0aGF0Tm9kZS5wcmVwZW5kKHRoaXNOb2RlKTtcclxuICAgICAgICByZXR1cm4gdGhpc05vZGU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbnNlcnQgYWZ0ZXIgYSBzcGVjaWZpYyBlbGVtZW50LCBzaW1pbGFyIHRvIGpRdWVyeSdzIGB0aGlzRWxlbWVudC5pbnNlcnRBZnRlcihvdGhlckVsZW1lbnQpYC5cclxuICAgICAqIEBwYXJhbSB7Tm9kZX0gdGhpc05vZGUgLSBUaGUgbm9kZSB0byBpbnNlcnRcclxuICAgICAqIEBwYXJhbSB7Tm9kZX0gdGFyZ2V0Tm9kZSAtIE5vZGUgdG8gaW5zZXJ0IGFmdGVyIGluIHRoZSB0cmVlXHJcbiAgICAgKiBAcmV0dXJucyB7Tm9kZX0gLSBgdGhpc05vZGVgIHRvIGFsbG93IGZvciBjaGFpbmluZ1xyXG4gICAgICovXHJcbiAgICBzdGF0aWMgaW5zZXJ0QWZ0ZXIodGhpc05vZGUsIHRhcmdldE5vZGUpIHtcclxuICAgICAgICB0YXJnZXROb2RlLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHRoaXNOb2RlLCB0YXJnZXROb2RlLm5leHRTaWJsaW5nKTtcclxuICAgICAgICByZXR1cm4gdGhpc05vZGU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbnNlcnQgYWZ0ZXIgYSBzcGVjaWZpYyBlbGVtZW50LCBzaW1pbGFyIHRvIGpRdWVyeSdzIGB0aGlzRWxlbWVudC5hZnRlcihuZXdFbGVtZW50KWAuXHJcbiAgICAgKiBAcGFyYW0ge05vZGV9IHRoaXNOb2RlIC0gVGhlIG5vZGUgdG8gaW5zZXJ0XHJcbiAgICAgKiBAcGFyYW0ge05vZGV9IG5ld05vZGUgLSBOb2RlIHRvIGluc2VydCBhZnRlciBpbiB0aGUgdHJlZVxyXG4gICAgICogQHJldHVybnMge05vZGV9IC0gYHRoaXNOb2RlYCB0byBhbGxvdyBmb3IgY2hhaW5pbmdcclxuICAgICAqL1xyXG4gICAgc3RhdGljIGFmdGVyKHRoaXNOb2RlLCBuZXdOb2RlKSB7XHJcbiAgICAgICAgdGhpc05vZGUucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUobmV3Tm9kZSwgdGhpc05vZGUubmV4dFNpYmxpbmcpO1xyXG4gICAgICAgIHJldHVybiB0aGlzTm9kZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgdGhlIG5leHQgc2libGluZyBlbGVtZW50IHRoYXQgbWF0Y2hlcyB0aGUgc2VsZWN0b3IuXHJcbiAgICAgKiBAcGFyYW0ge0VsZW1lbnR9IGVsZW1lbnQgLSBFbGVtZW50IHRvIGdldCB0aGUgbmV4dCBzaWJsaW5nIG9mXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3NlbGVjdG9yPVwiXCJdIC0gT3B0aW9uYWwgc2VsZWN0b3JcclxuICAgICAqIEByZXR1cm5zIHtFbGVtZW50fSAtIFRoZSBzaWJsaW5nIGVsZW1lbnRcclxuICAgICAqL1xyXG4gICAgc3RhdGljIG5leHQoZWxlbWVudCwgc2VsZWN0b3IgPSBcIlwiKSB7XHJcbiAgICAgICAgcmV0dXJuIHNlbGVjdG9yID8gZWxlbWVudC5xdWVyeVNlbGVjdG9yKFwiKyBcIiArIHNlbGVjdG9yKSA6IGVsZW1lbnQubmV4dEVsZW1lbnRTaWJsaW5nO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyBhbGwgc3Vic2VxdWVudCBzaWJsaW5ncy5cclxuICAgICAqIEBwYXJhbSB7RWxlbWVudH0gZWxlbWVudCAtIEVsZW1lbnQgdG8gZ2V0IG5leHQgc2libGluZ3Mgb2ZcclxuICAgICAqIEByZXR1cm5zIHtOb2RlTGlzdH0gLSBUaGUgbGlzdCBvZiBzaWJsaW5nc1xyXG4gICAgICovXHJcbiAgICBzdGF0aWMgbmV4dEFsbChlbGVtZW50KSB7XHJcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQucXVlcnlTZWxlY3RvckFsbChcIn4gKlwiKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgdGhlIHN1YnNlcXVlbnQgc2libGluZ3MgdW50aWwgYW4gZWxlbWVudCBtYXRjaGVzIHRoZSBzZWxlY3Rvci5cclxuICAgICAqIEBwYXJhbSB7RWxlbWVudH0gZWxlbWVudCAtIEVsZW1lbnQgdG8gZ2V0IHRoZSBmb2xsb3dpbmcgc2libGluZ3Mgb2ZcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzZWxlY3RvciAtIFNlbGVjdG9yIHRvIHN0b3AgYXRcclxuICAgICAqIEByZXR1cm5zIHtBcnJheTxFbGVtZW50Pn0gLSBUaGUgbGlzdCBvZiBzaWJsaW5nc1xyXG4gICAgICovXHJcbiAgICBzdGF0aWMgbmV4dFVudGlsKGVsZW1lbnQsIHNlbGVjdG9yKSB7XHJcbiAgICAgICAgY29uc3QgbmV4dCA9IFtdOyBcclxuICAgICAgICB3aGlsZSAoZWxlbWVudC5uZXh0RWxlbWVudFNpYmxpbmcgJiYgIWVsZW1lbnQubmV4dEVsZW1lbnRTaWJsaW5nLm1hdGNoZXMoc2VsZWN0b3IpKSBuZXh0LnB1c2goZWxlbWVudCA9IGVsZW1lbnQubmV4dEVsZW1lbnRTaWJsaW5nKTtcclxuICAgICAgICByZXR1cm4gbmV4dDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgdGhlIHByZXZpb3VzIHNpYmxpbmcgZWxlbWVudCB0aGF0IG1hdGNoZXMgdGhlIHNlbGVjdG9yLlxyXG4gICAgICogQHBhcmFtIHtFbGVtZW50fSBlbGVtZW50IC0gRWxlbWVudCB0byBnZXQgdGhlIHByZXZpb3VzIHNpYmxpbmcgb2ZcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc2VsZWN0b3I9XCJcIl0gLSBPcHRpb25hbCBzZWxlY3RvclxyXG4gICAgICogQHJldHVybnMge0VsZW1lbnR9IC0gVGhlIHNpYmxpbmcgZWxlbWVudFxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgcHJldmlvdXMoZWxlbWVudCwgc2VsZWN0b3IgPSBcIlwiKSB7XHJcbiAgICAgICAgY29uc3QgcHJldmlvdXMgPSBlbGVtZW50LnByZXZpb3VzRWxlbWVudFNpYmxpbmc7XHJcbiAgICAgICAgaWYgKHNlbGVjdG9yKSByZXR1cm4gcHJldmlvdXMgJiYgcHJldmlvdXMubWF0Y2hlcyhzZWxlY3RvcikgPyBwcmV2aW91cyA6IG51bGw7XHJcbiAgICAgICAgcmV0dXJuIHByZXZpb3VzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyBhbGwgcHJlY2VlZGluZyBzaWJsaW5ncy5cclxuICAgICAqIEBwYXJhbSB7RWxlbWVudH0gZWxlbWVudCAtIEVsZW1lbnQgdG8gZ2V0IHByZWNlZWRpbmcgc2libGluZ3Mgb2ZcclxuICAgICAqIEByZXR1cm5zIHtOb2RlTGlzdH0gLSBUaGUgbGlzdCBvZiBzaWJsaW5nc1xyXG4gICAgICovXHJcbiAgICBzdGF0aWMgcHJldmlvdXNBbGwoZWxlbWVudCkge1xyXG4gICAgICAgIGNvbnN0IHByZXZpb3VzID0gW107XHJcbiAgICAgICAgd2hpbGUgKGVsZW1lbnQucHJldmlvdXNFbGVtZW50U2libGluZykgcHJldmlvdXMucHVzaChlbGVtZW50ID0gZWxlbWVudC5wcmV2aW91c0VsZW1lbnRTaWJsaW5nKTtcclxuICAgICAgICByZXR1cm4gcHJldmlvdXM7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIHRoZSBwcmVjZWVkaW5nIHNpYmxpbmdzIHVudGlsIGFuIGVsZW1lbnQgbWF0Y2hlcyB0aGUgc2VsZWN0b3IuXHJcbiAgICAgKiBAcGFyYW0ge0VsZW1lbnR9IGVsZW1lbnQgLSBFbGVtZW50IHRvIGdldCB0aGUgcHJlY2VlZGluZyBzaWJsaW5ncyBvZlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHNlbGVjdG9yIC0gU2VsZWN0b3IgdG8gc3RvcCBhdFxyXG4gICAgICogQHJldHVybnMge0FycmF5PEVsZW1lbnQ+fSAtIFRoZSBsaXN0IG9mIHNpYmxpbmdzXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBwcmV2aW91c1VudGlsKGVsZW1lbnQsIHNlbGVjdG9yKSB7XHJcbiAgICAgICAgY29uc3QgcHJldmlvdXMgPSBbXTsgXHJcbiAgICAgICAgd2hpbGUgKGVsZW1lbnQucHJldmlvdXNFbGVtZW50U2libGluZyAmJiAhZWxlbWVudC5wcmV2aW91c0VsZW1lbnRTaWJsaW5nLm1hdGNoZXMoc2VsZWN0b3IpKSBwcmV2aW91cy5wdXNoKGVsZW1lbnQgPSBlbGVtZW50LnByZXZpb3VzRWxlbWVudFNpYmxpbmcpO1xyXG4gICAgICAgIHJldHVybiBwcmV2aW91cztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEZpbmQgd2hpY2ggaW5kZXggaW4gY2hpbGRyZW4gYSBjZXJ0YWluIG5vZGUgaXMuIFNpbWlsYXIgdG8galF1ZXJ5J3MgYCQuaW5kZXgoKWBcclxuICAgICAqIEBwYXJhbSB7SFRNTEVsZW1lbnR9IG5vZGUgLSBUaGUgbm9kZSB0byBmaW5kIGl0cyBpbmRleCBpbiBwYXJlbnRcclxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IEluZGV4IG9mIHRoZSBub2RlXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBpbmRleEluUGFyZW50KG5vZGUpIHtcclxuICAgICAgICBjb25zdCBjaGlsZHJlbiA9IG5vZGUucGFyZW50Tm9kZS5jaGlsZE5vZGVzO1xyXG4gICAgICAgIGxldCBudW0gPSAwO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKGNoaWxkcmVuW2ldID09IG5vZGUpIHJldHVybiBudW07XHJcbiAgICAgICAgICAgIGlmIChjaGlsZHJlbltpXS5ub2RlVHlwZSA9PSAxKSBudW0rKztcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIC0xO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBTaG9ydGhhbmQgZm9yIHtAbGluayBtb2R1bGU6RE9NVG9vbHMuaW5kZXhJblBhcmVudH0gKi9cclxuICAgIHN0YXRpYyBpbmRleChub2RlKSB7cmV0dXJuIHRoaXMuaW5kZXhJblBhcmVudChub2RlKTt9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIHRoZSBwYXJlbnQgb2YgdGhlIGVsZW1lbnQgaWYgaXQgbWF0Y2hlcyB0aGUgc2VsZWN0b3IsXHJcbiAgICAgKiBvdGhlcndpc2UgcmV0dXJucyBudWxsLlxyXG4gICAgICogQHBhcmFtIHtFbGVtZW50fSBlbGVtZW50IC0gRWxlbWVudCB0byBnZXQgcGFyZW50IG9mXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3NlbGVjdG9yPVwiXCJdIC0gU2VsZWN0b3IgdG8gbWF0Y2ggcGFyZW50XHJcbiAgICAgKiBAcmV0dXJucyB7KEVsZW1lbnR8bnVsbCl9IC0gVGhlIHNpYmxpbmcgZWxlbWVudCBvciBudWxsXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBwYXJlbnQoZWxlbWVudCwgc2VsZWN0b3IgPSBcIlwiKSB7XHJcbiAgICAgICAgcmV0dXJuICFzZWxlY3RvciB8fCBlbGVtZW50LnBhcmVudEVsZW1lbnQubWF0Y2hlcyhzZWxlY3RvcikgPyBlbGVtZW50LnBhcmVudEVsZW1lbnQgOiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyBhbGwgY2hpbGRyZW4gb2YgRWxlbWVudCB0aGF0IG1hdGNoIHRoZSBzZWxlY3RvciBpZiBwcm92aWRlZC5cclxuICAgICAqIEBwYXJhbSB7RWxlbWVudH0gZWxlbWVudCAtIEVsZW1lbnQgdG8gZ2V0IGFsbCBjaGlsZHJlbiBvZlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHNlbGVjdG9yIC0gU2VsZWN0b3IgdG8gbWF0Y2ggdGhlIGNoaWxkcmVuIHRvXHJcbiAgICAgKiBAcmV0dXJucyB7QXJyYXk8RWxlbWVudD59IC0gVGhlIGxpc3Qgb2YgY2hpbGRyZW5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGZpbmRDaGlsZChlbGVtZW50LCBzZWxlY3Rvcikge1xyXG4gICAgICAgIHJldHVybiBlbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXCI6c2NvcGUgPiBcIiArIHNlbGVjdG9yKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgYWxsIGNoaWxkcmVuIG9mIEVsZW1lbnQgdGhhdCBtYXRjaCB0aGUgc2VsZWN0b3IgaWYgcHJvdmlkZWQuXHJcbiAgICAgKiBAcGFyYW0ge0VsZW1lbnR9IGVsZW1lbnQgLSBFbGVtZW50IHRvIGdldCBhbGwgY2hpbGRyZW4gb2ZcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzZWxlY3RvciAtIFNlbGVjdG9yIHRvIG1hdGNoIHRoZSBjaGlsZHJlbiB0b1xyXG4gICAgICogQHJldHVybnMge0FycmF5PEVsZW1lbnQ+fSAtIFRoZSBsaXN0IG9mIGNoaWxkcmVuXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBmaW5kQ2hpbGRyZW4oZWxlbWVudCwgc2VsZWN0b3IpIHtcclxuICAgICAgICByZXR1cm4gZWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiOnNjb3BlID4gXCIgKyBzZWxlY3Rvcik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIGFsbCBhbmNlc3RvcnMgb2YgRWxlbWVudCB0aGF0IG1hdGNoIHRoZSBzZWxlY3RvciBpZiBwcm92aWRlZC5cclxuICAgICAqIEBwYXJhbSB7RWxlbWVudH0gZWxlbWVudCAtIEVsZW1lbnQgdG8gZ2V0IGFsbCBwYXJlbnRzIG9mXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3NlbGVjdG9yPVwiXCJdIC0gU2VsZWN0b3IgdG8gbWF0Y2ggdGhlIHBhcmVudHMgdG9cclxuICAgICAqIEByZXR1cm5zIHtBcnJheTxFbGVtZW50Pn0gLSBUaGUgbGlzdCBvZiBwYXJlbnRzXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBwYXJlbnRzKGVsZW1lbnQsIHNlbGVjdG9yID0gXCJcIikge1xyXG4gICAgICAgIGNvbnN0IHBhcmVudHMgPSBbXTtcclxuICAgICAgICBpZiAoc2VsZWN0b3IpIHdoaWxlIChlbGVtZW50LnBhcmVudEVsZW1lbnQgJiYgZWxlbWVudC5wYXJlbnRFbGVtZW50LmNsb3Nlc3Qoc2VsZWN0b3IpKSBwYXJlbnRzLnB1c2goZWxlbWVudCA9IGVsZW1lbnQucGFyZW50RWxlbWVudC5jbG9zZXN0KHNlbGVjdG9yKSk7XHJcbiAgICAgICAgZWxzZSB3aGlsZSAoZWxlbWVudC5wYXJlbnRFbGVtZW50KSBwYXJlbnRzLnB1c2goZWxlbWVudCA9IGVsZW1lbnQucGFyZW50RWxlbWVudCk7XHJcbiAgICAgICAgcmV0dXJuIHBhcmVudHM7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIHRoZSBhbmNlc3RvcnMgdW50aWwgYW4gZWxlbWVudCBtYXRjaGVzIHRoZSBzZWxlY3Rvci5cclxuICAgICAqIEBwYXJhbSB7RWxlbWVudH0gZWxlbWVudCAtIEVsZW1lbnQgdG8gZ2V0IHRoZSBhbmNlc3RvcnMgb2ZcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzZWxlY3RvciAtIFNlbGVjdG9yIHRvIHN0b3AgYXRcclxuICAgICAqIEByZXR1cm5zIHtBcnJheTxFbGVtZW50Pn0gLSBUaGUgbGlzdCBvZiBwYXJlbnRzXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBwYXJlbnRzVW50aWwoZWxlbWVudCwgc2VsZWN0b3IpIHtcclxuICAgICAgICBjb25zdCBwYXJlbnRzID0gW107XHJcbiAgICAgICAgd2hpbGUgKGVsZW1lbnQucGFyZW50RWxlbWVudCAmJiAhZWxlbWVudC5wYXJlbnRFbGVtZW50Lm1hdGNoZXMoc2VsZWN0b3IpKSBwYXJlbnRzLnB1c2goZWxlbWVudCA9IGVsZW1lbnQucGFyZW50RWxlbWVudCk7XHJcbiAgICAgICAgcmV0dXJuIHBhcmVudHM7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIGFsbCBzaWJsaW5ncyBvZiB0aGUgZWxlbWVudCB0aGF0IG1hdGNoIHRoZSBzZWxlY3Rvci5cclxuICAgICAqIEBwYXJhbSB7RWxlbWVudH0gZWxlbWVudCAtIEVsZW1lbnQgdG8gZ2V0IGFsbCBzaWJsaW5ncyBvZlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzZWxlY3Rvcj1cIipcIl0gLSBTZWxlY3RvciB0byBtYXRjaCB0aGUgc2libGluZ3MgdG9cclxuICAgICAqIEByZXR1cm5zIHtBcnJheTxFbGVtZW50Pn0gLSBUaGUgbGlzdCBvZiBzaWJsaW5nc1xyXG4gICAgICovXHJcbiAgICBzdGF0aWMgc2libGluZ3MoZWxlbWVudCwgc2VsZWN0b3IgPSBcIipcIikge1xyXG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKGVsZW1lbnQucGFyZW50RWxlbWVudC5jaGlsZHJlbikuZmlsdGVyKGUgPT4gZSAhPSBlbGVtZW50ICYmIGUubWF0Y2hlcyhzZWxlY3RvcikpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2V0cyBvciBnZXRzIGNzcyBzdHlsZXMgZm9yIGEgc3BlY2lmaWMgZWxlbWVudC4gSWYgYHZhbHVlYCBpcyBwcm92aWRlZFxyXG4gICAgICogdGhlbiBpdCBzZXRzIHRoZSBzdHlsZSBhbmQgcmV0dXJucyB0aGUgZWxlbWVudCB0byBhbGxvdyBmb3IgY2hhaW5pbmcsXHJcbiAgICAgKiBvdGhlcndpc2UgcmV0dXJucyB0aGUgc3R5bGUuICBcclxuICAgICAqIEBwYXJhbSB7RWxlbWVudH0gZWxlbWVudCAtIEVsZW1lbnQgdG8gc2V0IHRoZSBDU1Mgb2ZcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBhdHRyaWJ1dGUgLSBBdHRyaWJ1dGUgdG8gZ2V0IG9yIHNldFxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFt2YWx1ZV0gLSBWYWx1ZSB0byBzZXQgZm9yIGF0dHJpYnV0ZVxyXG4gICAgICogQHJldHVybnMge0VsZW1lbnR8c3RyaW5nfSAtIFdoZW4gc2V0dGluZyBhIHZhbHVlLCBlbGVtZW50IGlzIHJldHVybmVkIGZvciBjaGFpbmluZywgb3RoZXJ3aXNlIHRoZSB2YWx1ZSBpcyByZXR1cm5lZC5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGNzcyhlbGVtZW50LCBhdHRyaWJ1dGUsIHZhbHVlKSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZih2YWx1ZSkgPT0gXCJ1bmRlZmluZWRcIikgcmV0dXJuIGdsb2JhbC5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpW2F0dHJpYnV0ZV07XHJcbiAgICAgICAgZWxlbWVudC5zdHlsZVthdHRyaWJ1dGVdID0gdmFsdWU7XHJcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTZXRzIG9yIGdldHMgdGhlIHdpZHRoIGZvciBhIHNwZWNpZmljIGVsZW1lbnQuIElmIGB2YWx1ZWAgaXMgcHJvdmlkZWRcclxuICAgICAqIHRoZW4gaXQgc2V0cyB0aGUgd2lkdGggYW5kIHJldHVybnMgdGhlIGVsZW1lbnQgdG8gYWxsb3cgZm9yIGNoYWluaW5nLFxyXG4gICAgICogb3RoZXJ3aXNlIHJldHVybnMgdGhlIHdpZHRoLiAgXHJcbiAgICAgKiBAcGFyYW0ge0VsZW1lbnR9IGVsZW1lbnQgLSBFbGVtZW50IHRvIHNldCB0aGUgQ1NTIG9mXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3ZhbHVlXSAtIFdpZHRoIHRvIHNldFxyXG4gICAgICogQHJldHVybnMge0VsZW1lbnR8c3RyaW5nfSAtIFdoZW4gc2V0dGluZyBhIHZhbHVlLCBlbGVtZW50IGlzIHJldHVybmVkIGZvciBjaGFpbmluZywgb3RoZXJ3aXNlIHRoZSB2YWx1ZSBpcyByZXR1cm5lZC5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIHdpZHRoKGVsZW1lbnQsIHZhbHVlKSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZih2YWx1ZSkgPT0gXCJ1bmRlZmluZWRcIikgcmV0dXJuIHBhcnNlSW50KGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkud2lkdGgpO1xyXG4gICAgICAgIGVsZW1lbnQuc3R5bGUud2lkdGggPSB2YWx1ZTtcclxuICAgICAgICByZXR1cm4gZWxlbWVudDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldHMgb3IgZ2V0cyB0aGUgaGVpZ2h0IGZvciBhIHNwZWNpZmljIGVsZW1lbnQuIElmIGB2YWx1ZWAgaXMgcHJvdmlkZWRcclxuICAgICAqIHRoZW4gaXQgc2V0cyB0aGUgaGVpZ2h0IGFuZCByZXR1cm5zIHRoZSBlbGVtZW50IHRvIGFsbG93IGZvciBjaGFpbmluZyxcclxuICAgICAqIG90aGVyd2lzZSByZXR1cm5zIHRoZSBoZWlnaHQuICBcclxuICAgICAqIEBwYXJhbSB7RWxlbWVudH0gZWxlbWVudCAtIEVsZW1lbnQgdG8gc2V0IHRoZSBDU1Mgb2ZcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbdmFsdWVdIC0gSGVpZ2h0IHRvIHNldFxyXG4gICAgICogQHJldHVybnMge0VsZW1lbnR8c3RyaW5nfSAtIFdoZW4gc2V0dGluZyBhIHZhbHVlLCBlbGVtZW50IGlzIHJldHVybmVkIGZvciBjaGFpbmluZywgb3RoZXJ3aXNlIHRoZSB2YWx1ZSBpcyByZXR1cm5lZC5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGhlaWdodChlbGVtZW50LCB2YWx1ZSkge1xyXG4gICAgICAgIGlmICh0eXBlb2YodmFsdWUpID09IFwidW5kZWZpbmVkXCIpIHJldHVybiBwYXJzZUludChnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLmhlaWdodCk7XHJcbiAgICAgICAgZWxlbWVudC5zdHlsZS5oZWlnaHQgPSB2YWx1ZTtcclxuICAgICAgICByZXR1cm4gZWxlbWVudDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldHMgdGhlIGlubmVyIHRleHQgb2YgYW4gZWxlbWVudCBpZiBnaXZlbiBhIHZhbHVlLCBvdGhlcndpc2UgcmV0dXJucyBpdC5cclxuICAgICAqIEBwYXJhbSB7RWxlbWVudH0gZWxlbWVudCAtIEVsZW1lbnQgdG8gc2V0IHRoZSB0ZXh0IG9mXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3RleHRdIC0gQ29udGVudCB0byBzZXRcclxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IC0gRWl0aGVyIHRoZSBzdHJpbmcgc2V0IGJ5IHRoaXMgY2FsbCBvciB0aGUgY3VycmVudCB0ZXh0IGNvbnRlbnQgb2YgdGhlIG5vZGUuXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyB0ZXh0KGVsZW1lbnQsIHRleHQpIHtcclxuICAgICAgICBpZiAodHlwZW9mKHRleHQpID09IFwidW5kZWZpbmVkXCIpIHJldHVybiBlbGVtZW50LnRleHRDb250ZW50O1xyXG4gICAgICAgIHJldHVybiBlbGVtZW50LnRleHRDb250ZW50ID0gdGV4dDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHVybnMgdGhlIGlubmVyV2lkdGggb2YgdGhlIGVsZW1lbnQuXHJcbiAgICAgKiBAcGFyYW0ge0VsZW1lbnR9IGVsZW1lbnQgLSBFbGVtZW50IHRvIHJldHJpZXZlIGlubmVyIHdpZHRoIG9mXHJcbiAgICAgKiBAcmV0dXJuIHtudW1iZXJ9IC0gVGhlIGlubmVyIHdpZHRoIG9mIHRoZSBlbGVtZW50LlxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgaW5uZXJXaWR0aChlbGVtZW50KSB7XHJcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQuY2xpZW50V2lkdGg7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXR1cm5zIHRoZSBpbm5lckhlaWdodCBvZiB0aGUgZWxlbWVudC5cclxuICAgICAqIEBwYXJhbSB7RWxlbWVudH0gZWxlbWVudCAtIEVsZW1lbnQgdG8gcmV0cmlldmUgaW5uZXIgaGVpZ2h0IG9mXHJcbiAgICAgKiBAcmV0dXJuIHtudW1iZXJ9IC0gVGhlIGlubmVyIGhlaWdodCBvZiB0aGUgZWxlbWVudC5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGlubmVySGVpZ2h0KGVsZW1lbnQpIHtcclxuICAgICAgICByZXR1cm4gZWxlbWVudC5jbGllbnRIZWlnaHQ7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXR1cm5zIHRoZSBvdXRlcldpZHRoIG9mIHRoZSBlbGVtZW50LlxyXG4gICAgICogQHBhcmFtIHtFbGVtZW50fSBlbGVtZW50IC0gRWxlbWVudCB0byByZXRyaWV2ZSBvdXRlciB3aWR0aCBvZlxyXG4gICAgICogQHJldHVybiB7bnVtYmVyfSAtIFRoZSBvdXRlciB3aWR0aCBvZiB0aGUgZWxlbWVudC5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIG91dGVyV2lkdGgoZWxlbWVudCkge1xyXG4gICAgICAgIHJldHVybiBlbGVtZW50Lm9mZnNldFdpZHRoO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0dXJucyB0aGUgb3V0ZXJIZWlnaHQgb2YgdGhlIGVsZW1lbnQuXHJcbiAgICAgKiBAcGFyYW0ge0VsZW1lbnR9IGVsZW1lbnQgLSBFbGVtZW50IHRvIHJldHJpZXZlIG91dGVyIGhlaWdodCBvZlxyXG4gICAgICogQHJldHVybiB7bnVtYmVyfSAtIFRoZSBvdXRlciBoZWlnaHQgb2YgdGhlIGVsZW1lbnQuXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBvdXRlckhlaWdodChlbGVtZW50KSB7XHJcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQub2Zmc2V0SGVpZ2h0O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyB0aGUgb2Zmc2V0IG9mIHRoZSBlbGVtZW50IGluIHRoZSBwYWdlLlxyXG4gICAgICogQHBhcmFtIHtFbGVtZW50fSBlbGVtZW50IC0gRWxlbWVudCB0byBnZXQgb2Zmc2V0IG9mXHJcbiAgICAgKiBAcmV0dXJuIHtPZmZzZXR9IC0gVGhlIG9mZnNldCBvZiB0aGUgZWxlbWVudFxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgb2Zmc2V0KGVsZW1lbnQpIHtcclxuICAgICAgICByZXR1cm4gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgZ2V0IGxpc3RlbmVycygpIHsgcmV0dXJuIHRoaXMuX2xpc3RlbmVycyB8fCAodGhpcy5fbGlzdGVuZXJzID0ge30pOyB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGlzIGlzIHNpbWlsYXIgdG8galF1ZXJ5J3MgYG9uYCBmdW5jdGlvbiBhbmQgY2FuICpob3BlZnVsbHkqIGJlIHVzZWQgaW4gdGhlIHNhbWUgd2F5LlxyXG4gICAgICogXHJcbiAgICAgKiBSYXRoZXIgdGhhbiBhdHRlbXB0IHRvIGV4cGxhaW4sIEknbGwgc2hvdyBzb21lIGV4YW1wbGUgdXNhZ2VzLlxyXG4gICAgICogXHJcbiAgICAgKiBUaGUgZm9sbG93aW5nIHdpbGwgYWRkIGEgY2xpY2sgbGlzdGVuZXIgKGluIHRoZSBgbXlQbHVnaW5gIG5hbWVzcGFjZSkgdG8gYGVsZW1lbnRgLlxyXG4gICAgICogYERPTVRvb2xzLm9uKGVsZW1lbnQsIFwiY2xpY2subXlQbHVnaW5cIiwgKCkgPT4ge2NvbnNvbGUubG9nKFwiY2xpY2tlZCFcIik7fSk7YFxyXG4gICAgICogXHJcbiAgICAgKiBUaGUgZm9sbG93aW5nIHdpbGwgYWRkIGEgY2xpY2sgbGlzdGVuZXIgKGluIHRoZSBgbXlQbHVnaW5gIG5hbWVzcGFjZSkgdG8gYGVsZW1lbnRgIHRoYXQgb25seSBmaXJlcyB3aGVuIHRoZSB0YXJnZXQgaXMgYSBgLmJsb2NrYCBlbGVtZW50LlxyXG4gICAgICogYERPTVRvb2xzLm9uKGVsZW1lbnQsIFwiY2xpY2subXlQbHVnaW5cIiwgXCIuYmxvY2tcIiwgKCkgPT4ge2NvbnNvbGUubG9nKFwiY2xpY2tlZCFcIik7fSk7YFxyXG4gICAgICogXHJcbiAgICAgKiBUaGUgZm9sbG93aW5nIHdpbGwgYWRkIGEgY2xpY2sgbGlzdGVuZXIgKHdpdGhvdXQgbmFtZXNwYWNlKSB0byBgZWxlbWVudGAuXHJcbiAgICAgKiBgRE9NVG9vbHMub24oZWxlbWVudCwgXCJjbGlja1wiLCAoKSA9PiB7Y29uc29sZS5sb2coXCJjbGlja2VkIVwiKTt9KTtgXHJcbiAgICAgKiBcclxuICAgICAqIFRoZSBmb2xsb3dpbmcgd2lsbCBhZGQgYSBjbGljayBsaXN0ZW5lciAod2l0aG91dCBuYW1lc3BhY2UpIHRvIGBlbGVtZW50YCB0aGF0IG9ubHkgZmlyZXMgb25jZS5cclxuICAgICAqIGBjb25zdCBjYW5jZWwgPSBET01Ub29scy5vbihlbGVtZW50LCBcImNsaWNrXCIsICgpID0+IHtjb25zb2xlLmxvZyhcImZpcmVkIVwiKTsgY2FuY2VsKCk7fSk7YFxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge0VsZW1lbnR9IGVsZW1lbnQgLSBFbGVtZW50IHRvIGFkZCBsaXN0ZW5lciB0b1xyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGV2ZW50IC0gRXZlbnQgdG8gbGlzdGVuIHRvIHdpdGggb3B0aW9uIG5hbWVzcGFjZSAoZS5nLiBcImV2ZW50Lm5hbWVzcGFjZVwiKVxyXG4gICAgICogQHBhcmFtIHsoc3RyaW5nfGNhbGxhYmxlKX0gZGVsZWdhdGUgLSBTZWxlY3RvciB0byBydW4gb24gZWxlbWVudCB0byBsaXN0ZW4gdG9cclxuICAgICAqIEBwYXJhbSB7Y2FsbGFibGV9IFtjYWxsYmFja10gLSBGdW5jdGlvbiB0byBmaXJlIG9uIGV2ZW50XHJcbiAgICAgKiBAcmV0dXJucyB7bW9kdWxlOkRPTVRvb2xzfkNhbmNlbExpc3RlbmVyfSAtIEEgZnVuY3Rpb24gdGhhdCB3aWxsIHVuZG8gdGhlIGxpc3RlbmVyXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBvbihlbGVtZW50LCBldmVudCwgZGVsZWdhdGUsIGNhbGxiYWNrKSB7XHJcbiAgICAgICAgY29uc3QgW3R5cGUsIG5hbWVzcGFjZV0gPSBldmVudC5zcGxpdChcIi5cIik7XHJcbiAgICAgICAgY29uc3QgaGFzRGVsZWdhdGUgPSBkZWxlZ2F0ZSAmJiBjYWxsYmFjaztcclxuICAgICAgICBpZiAoIWNhbGxiYWNrKSBjYWxsYmFjayA9IGRlbGVnYXRlO1xyXG4gICAgICAgIGNvbnN0IGV2ZW50RnVuYyA9ICFoYXNEZWxlZ2F0ZSA/IGNhbGxiYWNrIDogZnVuY3Rpb24oZXYpIHtcclxuICAgICAgICAgICAgaWYgKGV2LnRhcmdldC5tYXRjaGVzKGRlbGVnYXRlKSkge1xyXG4gICAgICAgICAgICAgICAgY2FsbGJhY2soZXYpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKHR5cGUsIGV2ZW50RnVuYyk7XHJcbiAgICAgICAgY29uc3QgY2FuY2VsID0gKCkgPT4ge1xyXG4gICAgICAgICAgICBlbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZSwgZXZlbnRGdW5jKTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIGlmIChuYW1lc3BhY2UpIHtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLmxpc3RlbmVyc1tuYW1lc3BhY2VdKSB0aGlzLmxpc3RlbmVyc1tuYW1lc3BhY2VdID0gW107XHJcbiAgICAgICAgICAgIGNvbnN0IG5ld0NhbmNlbCA9ICgpID0+IHtcclxuICAgICAgICAgICAgICAgIGNhbmNlbCgpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5saXN0ZW5lcnNbbmFtZXNwYWNlXS5zcGxpY2UodGhpcy5saXN0ZW5lcnNbbmFtZXNwYWNlXS5maW5kSW5kZXgobCA9PiBsLmV2ZW50ID09IHR5cGUgJiYgbC5lbGVtZW50ID09IGVsZW1lbnQpLCAxKTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgdGhpcy5saXN0ZW5lcnNbbmFtZXNwYWNlXS5wdXNoKHtcclxuICAgICAgICAgICAgICAgIGV2ZW50OiB0eXBlLFxyXG4gICAgICAgICAgICAgICAgZWxlbWVudDogZWxlbWVudCxcclxuICAgICAgICAgICAgICAgIGNhbmNlbDogbmV3Q2FuY2VsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3Q2FuY2VsO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gY2FuY2VsO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRnVuY3Rpb25hbGl0eSBmb3IgdGhpcyBtZXRob2QgbWF0Y2hlcyB7QGxpbmsgbW9kdWxlOkRPTVRvb2xzLm9ufSBidXQgYXV0b21hdGljYWxseSBjYW5jZWxzIGl0c2VsZlxyXG4gICAgICogYW5kIHJlbW92ZXMgdGhlIGxpc3RlbmVyIHVwb24gdGhlIGZpcnN0IGZpcmluZyBvZiB0aGUgZGVzaXJlZCBldmVudC5cclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtFbGVtZW50fSBlbGVtZW50IC0gRWxlbWVudCB0byBhZGQgbGlzdGVuZXIgdG9cclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBldmVudCAtIEV2ZW50IHRvIGxpc3RlbiB0byB3aXRoIG9wdGlvbiBuYW1lc3BhY2UgKGUuZy4gXCJldmVudC5uYW1lc3BhY2VcIilcclxuICAgICAqIEBwYXJhbSB7KHN0cmluZ3xjYWxsYWJsZSl9IGRlbGVnYXRlIC0gU2VsZWN0b3IgdG8gcnVuIG9uIGVsZW1lbnQgdG8gbGlzdGVuIHRvXHJcbiAgICAgKiBAcGFyYW0ge2NhbGxhYmxlfSBbY2FsbGJhY2tdIC0gRnVuY3Rpb24gdG8gZmlyZSBvbiBldmVudFxyXG4gICAgICogQHJldHVybnMge21vZHVsZTpET01Ub29sc35DYW5jZWxMaXN0ZW5lcn0gLSBBIGZ1bmN0aW9uIHRoYXQgd2lsbCB1bmRvIHRoZSBsaXN0ZW5lclxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgb25jZShlbGVtZW50LCBldmVudCwgZGVsZWdhdGUsIGNhbGxiYWNrKSB7XHJcbiAgICAgICAgY29uc3QgW3R5cGUsIG5hbWVzcGFjZV0gPSBldmVudC5zcGxpdChcIi5cIik7XHJcbiAgICAgICAgY29uc3QgaGFzRGVsZWdhdGUgPSBkZWxlZ2F0ZSAmJiBjYWxsYmFjaztcclxuICAgICAgICBpZiAoIWNhbGxiYWNrKSBjYWxsYmFjayA9IGRlbGVnYXRlO1xyXG4gICAgICAgIGNvbnN0IGV2ZW50RnVuYyA9ICFoYXNEZWxlZ2F0ZSA/IGZ1bmN0aW9uKGV2KSB7XHJcbiAgICAgICAgICAgIGNhbGxiYWNrKGV2KTtcclxuICAgICAgICAgICAgZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKHR5cGUsIGV2ZW50RnVuYyk7XHJcbiAgICAgICAgfSA6IGZ1bmN0aW9uKGV2KSB7XHJcbiAgICAgICAgICAgIGlmICghZXYudGFyZ2V0Lm1hdGNoZXMoZGVsZWdhdGUpKSByZXR1cm47XHJcbiAgICAgICAgICAgIGNhbGxiYWNrKGV2KTtcclxuICAgICAgICAgICAgZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKHR5cGUsIGV2ZW50RnVuYyk7XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKHR5cGUsIGV2ZW50RnVuYyk7XHJcbiAgICAgICAgY29uc3QgY2FuY2VsID0gKCkgPT4ge1xyXG4gICAgICAgICAgICBlbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZSwgZXZlbnRGdW5jKTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIGlmIChuYW1lc3BhY2UpIHtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLmxpc3RlbmVyc1tuYW1lc3BhY2VdKSB0aGlzLmxpc3RlbmVyc1tuYW1lc3BhY2VdID0gW107XHJcbiAgICAgICAgICAgIGNvbnN0IG5ld0NhbmNlbCA9ICgpID0+IHtcclxuICAgICAgICAgICAgICAgIGNhbmNlbCgpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5saXN0ZW5lcnNbbmFtZXNwYWNlXS5zcGxpY2UodGhpcy5saXN0ZW5lcnNbbmFtZXNwYWNlXS5maW5kSW5kZXgobCA9PiBsLmV2ZW50ID09IHR5cGUgJiYgbC5lbGVtZW50ID09IGVsZW1lbnQpLCAxKTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgdGhpcy5saXN0ZW5lcnNbbmFtZXNwYWNlXS5wdXNoKHtcclxuICAgICAgICAgICAgICAgIGV2ZW50OiB0eXBlLFxyXG4gICAgICAgICAgICAgICAgZWxlbWVudDogZWxlbWVudCxcclxuICAgICAgICAgICAgICAgIGNhbmNlbDogbmV3Q2FuY2VsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3Q2FuY2VsO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gY2FuY2VsO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBfX29mZkFsbChldmVudCwgZWxlbWVudCkge1xyXG4gICAgICAgIGNvbnN0IFt0eXBlLCBuYW1lc3BhY2VdID0gZXZlbnQuc3BsaXQoXCIuXCIpO1xyXG4gICAgICAgIGxldCBtYXRjaEZpbHRlciA9IGxpc3RlbmVyID0+IGxpc3RlbmVyLmV2ZW50ID09IHR5cGUsIGRlZmF1bHRGaWx0ZXIgPSBfID0+IF87XHJcbiAgICAgICAgaWYgKGVsZW1lbnQpIG1hdGNoRmlsdGVyID0gbCA9PiBsLmV2ZW50ID09IHR5cGUgJiYgbC5lbGVtZW50ID09IGVsZW1lbnQsIGRlZmF1bHRGaWx0ZXIgPSBsID0+IGwuZWxlbWVudCA9PSBlbGVtZW50O1xyXG4gICAgICAgIGNvbnN0IGxpc3RlbmVycyA9IHRoaXMubGlzdGVuZXJzW25hbWVzcGFjZV0gfHwgW107XHJcbiAgICAgICAgY29uc3QgbGlzdCA9IHR5cGUgPyBsaXN0ZW5lcnMuZmlsdGVyKG1hdGNoRmlsdGVyKSA6IGxpc3RlbmVycy5maWx0ZXIoZGVmYXVsdEZpbHRlcik7XHJcbiAgICAgICAgZm9yIChsZXQgYyA9IDA7IGMgPCBsaXN0Lmxlbmd0aDsgYysrKSBsaXN0W2NdLmNhbmNlbCgpO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICAvKipcclxuICAgICAqIFRoaXMgaXMgc2ltaWxhciB0byBqUXVlcnkncyBgb2ZmYCBmdW5jdGlvbiBhbmQgY2FuICpob3BlZnVsbHkqIGJlIHVzZWQgaW4gdGhlIHNhbWUgd2F5LlxyXG4gICAgICogXHJcbiAgICAgKiBSYXRoZXIgdGhhbiBhdHRlbXB0IHRvIGV4cGxhaW4sIEknbGwgc2hvdyBzb21lIGV4YW1wbGUgdXNhZ2VzLlxyXG4gICAgICogXHJcbiAgICAgKiBUaGUgZm9sbG93aW5nIHdpbGwgcmVtb3ZlIGEgY2xpY2sgbGlzdGVuZXIgY2FsbGVkIGBvbkNsaWNrYCAoaW4gdGhlIGBteVBsdWdpbmAgbmFtZXNwYWNlKSBmcm9tIGBlbGVtZW50YC5cclxuICAgICAqIGBET01Ub29scy5vZmYoZWxlbWVudCwgXCJjbGljay5teVBsdWdpblwiLCBvbkNsaWNrKTtgXHJcbiAgICAgKiBcclxuICAgICAqIFRoZSBmb2xsb3dpbmcgd2lsbCByZW1vdmUgYSBjbGljayBsaXN0ZW5lciBjYWxsZWQgYG9uQ2xpY2tgIChpbiB0aGUgYG15UGx1Z2luYCBuYW1lc3BhY2UpIGZyb20gYGVsZW1lbnRgIHRoYXQgb25seSBmaXJlZCB3aGVuIHRoZSB0YXJnZXQgaXMgYSBgLmJsb2NrYCBlbGVtZW50LlxyXG4gICAgICogYERPTVRvb2xzLm9mZihlbGVtZW50LCBcImNsaWNrLm15UGx1Z2luXCIsIFwiLmJsb2NrXCIsIG9uQ2xpY2spO2BcclxuICAgICAqIFxyXG4gICAgICogVGhlIGZvbGxvd2luZyB3aWxsIHJlbW92ZSBhIGNsaWNrIGxpc3RlbmVyICh3aXRob3V0IG5hbWVzcGFjZSkgZnJvbSBgZWxlbWVudGAuXHJcbiAgICAgKiBgRE9NVG9vbHMub2ZmKGVsZW1lbnQsIFwiY2xpY2tcIiwgb25DbGljayk7YFxyXG4gICAgICogXHJcbiAgICAgKiBUaGUgZm9sbG93aW5nIHdpbGwgcmVtb3ZlIGFsbCBsaXN0ZW5lcnMgaW4gbmFtZXNwYWNlIGBteVBsdWdpbmAgZnJvbSBgZWxlbWVudGAuXHJcbiAgICAgKiBgRE9NVG9vbHMub2ZmKGVsZW1lbnQsIFwiLm15UGx1Z2luXCIpO2BcclxuICAgICAqIFxyXG4gICAgICogVGhlIGZvbGxvd2luZyB3aWxsIHJlbW92ZSBhbGwgY2xpY2sgbGlzdGVuZXJzIGluIG5hbWVzcGFjZSBgbXlQbHVnaW5gIGZyb20gKmFsbCBlbGVtZW50cyouXHJcbiAgICAgKiBgRE9NVG9vbHMub2ZmKFwiY2xpY2subXlQbHVnaW5cIik7YFxyXG4gICAgICogXHJcbiAgICAgKiBUaGUgZm9sbG93aW5nIHdpbGwgcmVtb3ZlIGFsbCBsaXN0ZW5lcnMgaW4gbmFtZXNwYWNlIGBteVBsdWdpbmAgZnJvbSAqYWxsIGVsZW1lbnRzKi5cclxuICAgICAqIGBET01Ub29scy5vZmYoXCIubXlQbHVnaW5cIik7YFxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0geyhFbGVtZW50fHN0cmluZyl9IGVsZW1lbnQgLSBFbGVtZW50IHRvIHJlbW92ZSBsaXN0ZW5lciBmcm9tXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2V2ZW50XSAtIEV2ZW50IHRvIGxpc3RlbiB0byB3aXRoIG9wdGlvbiBuYW1lc3BhY2UgKGUuZy4gXCJldmVudC5uYW1lc3BhY2VcIilcclxuICAgICAqIEBwYXJhbSB7KHN0cmluZ3xjYWxsYWJsZSl9IFtkZWxlZ2F0ZV0gLSBTZWxlY3RvciB0byBydW4gb24gZWxlbWVudCB0byBsaXN0ZW4gdG9cclxuICAgICAqIEBwYXJhbSB7Y2FsbGFibGV9IFtjYWxsYmFja10gLSBGdW5jdGlvbiB0byBmaXJlIG9uIGV2ZW50XHJcbiAgICAgKiBAcmV0dXJucyB7RWxlbWVudH0gLSBUaGUgb3JpZ2luYWwgZWxlbWVudCB0byBhbGxvdyBmb3IgY2hhaW5pbmdcclxuICAgICAqL1xyXG4gICAgc3RhdGljIG9mZihlbGVtZW50LCBldmVudCwgZGVsZWdhdGUsIGNhbGxiYWNrKSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZihlbGVtZW50KSA9PSBcInN0cmluZ1wiKSByZXR1cm4gdGhpcy5fX29mZkFsbChlbGVtZW50KTtcclxuICAgICAgICBjb25zdCBbdHlwZSwgbmFtZXNwYWNlXSA9IGV2ZW50LnNwbGl0KFwiLlwiKTtcclxuICAgICAgICBpZiAobmFtZXNwYWNlKSByZXR1cm4gdGhpcy5fX29mZkFsbChldmVudCwgZWxlbWVudCk7XHJcblxyXG4gICAgICAgIGNvbnN0IGhhc0RlbGVnYXRlID0gZGVsZWdhdGUgJiYgY2FsbGJhY2s7XHJcbiAgICAgICAgaWYgKCFjYWxsYmFjaykgY2FsbGJhY2sgPSBkZWxlZ2F0ZTtcclxuICAgICAgICBjb25zdCBldmVudEZ1bmMgPSAhaGFzRGVsZWdhdGUgPyBjYWxsYmFjayA6IGZ1bmN0aW9uKGV2KSB7XHJcbiAgICAgICAgICAgIGlmIChldi50YXJnZXQubWF0Y2hlcyhkZWxlZ2F0ZSkpIHtcclxuICAgICAgICAgICAgICAgIGNhbGxiYWNrKGV2KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIGVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlLCBldmVudEZ1bmMpO1xyXG4gICAgICAgIHJldHVybiBlbGVtZW50O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQWRkcyBhIGxpc3RlbmVyIGZvciB3aGVuIHRoZSBub2RlIGlzIGFkZGVkL3JlbW92ZWQgZnJvbSB0aGUgZG9jdW1lbnQgYm9keS5cclxuICAgICAqIFRoZSBsaXN0ZW5lciBpcyBhdXRvbWF0aWNhbGx5IHJlbW92ZWQgdXBvbiBmaXJpbmcuXHJcbiAgICAgKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBub2RlIC0gbm9kZSB0byB3YWl0IGZvclxyXG4gICAgICogQHBhcmFtIHtjYWxsYWJsZX0gY2FsbGJhY2sgLSBmdW5jdGlvbiB0byBiZSBwZXJmb3JtZWQgb24gZXZlbnRcclxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gb25Nb3VudCAtIGRldGVybWluZXMgaWYgaXQgc2hvdWxkIGZpcmUgb24gTW91bnQgb3Igb24gVW5tb3VudFxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgb25Nb3VudENoYW5nZShub2RlLCBjYWxsYmFjaywgb25Nb3VudCA9IHRydWUpIHtcclxuICAgICAgICBjb25zdCB3cmFwcGVkQ2FsbGJhY2sgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMub2JzZXJ2ZXIudW5zdWJzY3JpYmUod3JhcHBlZENhbGxiYWNrKTtcclxuICAgICAgICAgICAgY2FsbGJhY2soKTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMub2JzZXJ2ZXIuc3Vic2NyaWJlKHdyYXBwZWRDYWxsYmFjaywgbXV0YXRpb24gPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBub2RlcyA9IEFycmF5LmZyb20ob25Nb3VudCA/IG11dGF0aW9uLmFkZGVkTm9kZXMgOiBtdXRhdGlvbi5yZW1vdmVkTm9kZXMpO1xyXG4gICAgICAgICAgICBjb25zdCBkaXJlY3RNYXRjaCA9IG5vZGVzLmluZGV4T2Yobm9kZSkgPiAtMTtcclxuICAgICAgICAgICAgY29uc3QgcGFyZW50TWF0Y2ggPSBub2Rlcy5zb21lKHBhcmVudCA9PiBwYXJlbnQuY29udGFpbnMobm9kZSkpO1xyXG4gICAgICAgICAgICByZXR1cm4gZGlyZWN0TWF0Y2ggfHwgcGFyZW50TWF0Y2g7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIG5vZGU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIFNob3J0aGFuZCBmb3Ige0BsaW5rIG1vZHVsZTpET01Ub29scy5vbk1vdW50Q2hhbmdlfSB3aXRoIHRoaXJkIHBhcmFtZXRlciBgdHJ1ZWAgKi9cclxuICAgIHN0YXRpYyBvbk1vdW50KG5vZGUsIGNhbGxiYWNrKSB7IHJldHVybiB0aGlzLm9uTW91bnRDaGFuZ2Uobm9kZSwgY2FsbGJhY2spOyB9XHJcblxyXG4gICAgLyoqIFNob3J0aGFuZCBmb3Ige0BsaW5rIG1vZHVsZTpET01Ub29scy5vbk1vdW50Q2hhbmdlfSB3aXRoIHRoaXJkIHBhcmFtZXRlciBgZmFsc2VgICovXHJcbiAgICBzdGF0aWMgb25Vbm1vdW50KG5vZGUsIGNhbGxiYWNrKSB7IHJldHVybiB0aGlzLm9uTW91bnRDaGFuZ2Uobm9kZSwgY2FsbGJhY2ssIGZhbHNlKTsgfVxyXG5cclxuICAgIC8qKiBBbGlhcyBmb3Ige0BsaW5rIG1vZHVsZTpET01Ub29scy5vbk1vdW50fSAqL1xyXG4gICAgc3RhdGljIG9uQWRkZWQobm9kZSwgY2FsbGJhY2spIHsgcmV0dXJuIHRoaXMub25Nb3VudChub2RlLCBjYWxsYmFjayk7IH1cclxuXHJcbiAgICAvKiogQWxpYXMgZm9yIHtAbGluayBtb2R1bGU6RE9NVG9vbHMub25Vbm1vdW50fSAqL1xyXG4gICAgc3RhdGljIG9uUmVtb3ZlZChub2RlLCBjYWxsYmFjaykgeyByZXR1cm4gdGhpcy5vblVubW91bnQobm9kZSwgY2FsbGJhY2ssIGZhbHNlKTsgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSGVscGVyIGZ1bmN0aW9uIHdoaWNoIGNvbWJpbmVzIG11bHRpcGxlIGVsZW1lbnRzIGludG8gb25lIHBhcmVudCBlbGVtZW50XHJcbiAgICAgKiBAcGFyYW0ge0FycmF5PEhUTUxFbGVtZW50Pn0gZWxlbWVudHMgLSBhcnJheSBvZiBlbGVtZW50cyB0byBwdXQgaW50byBhIHNpbmdsZSBwYXJlbnRcclxuICAgICAqL1xyXG4gICAgc3RhdGljIHdyYXAoZWxlbWVudHMpIHtcclxuICAgICAgICBjb25zdCBkb21XcmFwcGVyID0gdGhpcy5wYXJzZUhUTUwoYDxkaXYgY2xhc3M9XCJkb20td3JhcHBlclwiPjwvZGl2PmApO1xyXG4gICAgICAgIGZvciAobGV0IGUgPSAwOyBlIDwgZWxlbWVudHMubGVuZ3RoOyBlKyspIGRvbVdyYXBwZXIuYXBwZW5kQ2hpbGQoZWxlbWVudHNbZV0pO1xyXG4gICAgICAgIHJldHVybiBkb21XcmFwcGVyO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVzb2x2ZXMgdGhlIG5vZGUgdG8gYW4gSFRNTEVsZW1lbnQuIFRoaXMgaXMgbWFpbmx5IHVzZWQgYnkgbGlicmFyeSBtb2R1bGVzLlxyXG4gICAgICogQHBhcmFtIHsoalF1ZXJ5fEVsZW1lbnQpfSBub2RlIC0gbm9kZSB0byByZXNvbHZlXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyByZXNvbHZlRWxlbWVudChub2RlKSB7XHJcbiAgICAgICAgaWYgKCEobm9kZSBpbnN0YW5jZW9mIGpRdWVyeSkgJiYgIShub2RlIGluc3RhbmNlb2YgRWxlbWVudCkpIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgcmV0dXJuIG5vZGUgaW5zdGFuY2VvZiBqUXVlcnkgPyBub2RlWzBdIDogbm9kZTtcclxuICAgIH1cclxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/domtools.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return DOMTools; });\n/**\r\n * Copyright 2018 Zachary Rauen\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining\r\n * a copy of this software and associated documentation files (the \"Software\"),\r\n * to deal in the Software without restriction, including without limitation the\r\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is furnished\r\n * to do so, subject to the following conditions:\r\n *\r\n * The above copyright notice and this permission notice shall be included in all\r\n * copies or substantial portions of the Software.\r\n *\r\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\r\n * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A\r\n * PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\r\n * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\r\n * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE\r\n * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r\n * \r\n * From: https://github.com/rauenzi/BDPluginLibrary\r\n */\n\n/**\r\n * @interface\r\n * @name Offset\r\n * @property {number} top - Top offset of the target element.\r\n * @property {number} right - Right offset of the target element.\r\n * @property {number} bottom - Bottom offset of the target element.\r\n * @property {number} left - Left offset of the target element.\r\n * @property {number} height - Outer height of the target element.\r\n * @property {number} width - Outer width of the target element.\r\n */\n\n/**\r\n* Function that automatically removes added listener.\r\n* @callback module:DOMTools~CancelListener\r\n*/\nclass DOMTools {\n static escapeID(id) {\n return id.replace(/^[^a-z]+|[^\\w-]+/gi, \"-\");\n }\n /**\r\n * Adds a style to the document.\r\n * @param {string} id - identifier to use as the element id\r\n * @param {string} css - css to add to the document\r\n */\n\n\n static addStyle(id, css) {\n document.head.append(DOMTools.createElement(``));\n }\n /**\r\n * Removes a style from the document.\r\n * @param {string} id - original identifier used\r\n */\n\n\n static removeStyle(id) {\n const element = document.getElementById(id);\n if (element) element.remove();\n }\n /**\r\n * Adds/requires a remote script to be loaded\r\n * @param {string} id - identifier to use for this script\r\n * @param {string} url - url from which to load the script\r\n * @returns {Promise} promise that resolves when the script is loaded\r\n */\n\n\n static addScript(id, url) {\n return new Promise(resolve => {\n const script = document.createElement(\"script\");\n script.id = id;\n script.src = url;\n script.type = \"text/javascript\";\n script.onload = resolve;\n document.head.append(script);\n });\n }\n /**\r\n * Removes a remote script from the document.\r\n * @param {string} id - original identifier used\r\n */\n\n\n static removeScript(id) {\n id = this.escapeID(id);\n const element = document.getElementById(id);\n if (element) element.remove();\n } // https://javascript.info/js-animation\n\n\n static animate({\n timing = _ => _,\n update,\n duration\n }) {\n const start = performance.now();\n requestAnimationFrame(function animate(time) {\n // timeFraction goes from 0 to 1\n let timeFraction = (time - start) / duration;\n if (timeFraction > 1) timeFraction = 1; // calculate the current animation state\n\n const progress = timing(timeFraction);\n update(progress); // draw it\n\n if (timeFraction < 1) {\n requestAnimationFrame(animate);\n }\n });\n }\n /**\r\n * This is my shit version of not having to use `$` from jQuery. Meaning\r\n * that you can pass a selector and it will automatically run {@link module:DOMTools.query}.\r\n * It also means that you can pass a string of html and it will perform and return `parseHTML`.\r\n * @see module:DOMTools.parseHTML\r\n * @see module:DOMTools.query\r\n * @param {string} selector - Selector to query or HTML to parse\r\n * @returns {(DocumentFragment|NodeList|HTMLElement)} - Either the result of `parseHTML` or `query`\r\n */\n\n\n static Q(selector) {\n const element = this.parseHTML(selector);\n const isHTML = element instanceof NodeList ? Array.from(element).some(n => n.nodeType === 1) : element.nodeType === 1;\n if (isHTML) return element;\n return this.query(selector);\n }\n /**\r\n * Essentially a shorthand for `document.querySelector`. If the `baseElement` is not provided\r\n * `document` is used by default.\r\n * @param {string} selector - Selector to query\r\n * @param {Element} [baseElement] - Element to base the query from\r\n * @returns {(Element|null)} - The found element or null if not found\r\n */\n\n\n static query(selector, baseElement) {\n if (!baseElement) baseElement = document;\n return baseElement.querySelector(selector);\n }\n /**\r\n * Essentially a shorthand for `document.querySelectorAll`. If the `baseElement` is not provided\r\n * `document` is used by default.\r\n * @param {string} selector - Selector to query\r\n * @param {Element} [baseElement] - Element to base the query from\r\n * @returns {Array} - Array of all found elements\r\n */\n\n\n static queryAll(selector, baseElement) {\n if (!baseElement) baseElement = document;\n return baseElement.querySelectorAll(selector);\n }\n /**\r\n * Parses a string of HTML and returns the results. If the second parameter is true,\r\n * the parsed HTML will be returned as a document fragment {@see https://developer.mozilla.org/en-US/docs/Web/API/DocumentFragment}.\r\n * This is extremely useful if you have a list of elements at the top level, they can then be appended all at once to another node.\r\n * \r\n * If the second parameter is false, then the return value will be the list of parsed\r\n * nodes and there were multiple top level nodes, otherwise the single node is returned.\r\n * @param {string} html - HTML to be parsed\r\n * @param {boolean} [fragment=false] - Whether or not the return should be the raw `DocumentFragment`\r\n * @returns {(DocumentFragment|NodeList|HTMLElement)} - The result of HTML parsing\r\n */\n\n\n static parseHTML(html, fragment = false) {\n const template = document.createElement(\"template\");\n template.innerHTML = html;\n const node = template.content.cloneNode(true);\n if (fragment) return node;\n return node.childNodes.length > 1 ? node.childNodes : node.childNodes[0];\n }\n /** Alternate name for {@link module:DOMTools.parseHTML} */\n\n\n static createElement(html, fragment = false) {\n return this.parseHTML(html, fragment);\n }\n /**\r\n * Takes a string of html and escapes it using the brower's own escaping mechanism.\r\n * @param {String} html - html to be escaped\r\n */\n\n\n static escapeHTML(html) {\n const textNode = document.createTextNode(\"\");\n const spanElement = document.createElement(\"span\");\n spanElement.append(textNode);\n textNode.nodeValue = html;\n return spanElement.innerHTML;\n }\n /**\r\n * Adds a list of classes from the target element.\r\n * @param {Element} element - Element to edit classes of\r\n * @param {...string} classes - Names of classes to add\r\n * @returns {Element} - `element` to allow for chaining\r\n */\n\n\n static addClass(element, ...classes) {\n classes = classes.flat().filter(c => c);\n\n for (let c = 0; c < classes.length; c++) classes[c] = classes[c].toString().split(\" \");\n\n classes = classes.flat().filter(c => c);\n element.classList.add(...classes);\n return element;\n }\n /**\r\n * Removes a list of classes from the target element.\r\n * @param {Element} element - Element to edit classes of\r\n * @param {...string} classes - Names of classes to remove\r\n * @returns {Element} - `element` to allow for chaining\r\n */\n\n\n static removeClass(element, ...classes) {\n for (let c = 0; c < classes.length; c++) classes[c] = classes[c].toString().split(\" \");\n\n classes = classes.flat().filter(c => c);\n element.classList.remove(...classes);\n return element;\n }\n /**\r\n * When only one argument is present: Toggle class value;\r\n * i.e., if class exists then remove it and return false, if not, then add it and return true.\r\n * When a second argument is present:\r\n * If the second argument evaluates to true, add specified class value, and if it evaluates to false, remove it.\r\n * @param {Element} element - Element to edit classes of\r\n * @param {string} classname - Name of class to toggle\r\n * @param {boolean} [indicator] - Optional indicator for if the class should be toggled\r\n * @returns {Element} - `element` to allow for chaining\r\n */\n\n\n static toggleClass(element, classname, indicator) {\n classname = classname.toString().split(\" \").filter(c => c);\n if (typeof indicator !== \"undefined\") classname.forEach(c => element.classList.toggle(c, indicator));else classname.forEach(c => element.classList.toggle(c));\n return element;\n }\n /**\r\n * Checks if an element has a specific class\r\n * @param {Element} element - Element to edit classes of\r\n * @param {string} classname - Name of class to check\r\n * @returns {boolean} - `true` if the element has the class, `false` otherwise.\r\n */\n\n\n static hasClass(element, classname) {\n return classname.toString().split(\" \").filter(c => c).every(c => element.classList.contains(c));\n }\n /**\r\n * Replaces one class with another\r\n * @param {Element} element - Element to edit classes of\r\n * @param {string} oldName - Name of class to replace\r\n * @param {string} newName - New name for the class\r\n * @returns {Element} - `element` to allow for chaining\r\n */\n\n\n static replaceClass(element, oldName, newName) {\n element.classList.replace(oldName, newName);\n return element;\n }\n /**\r\n * Appends `thisNode` to `thatNode`\r\n * @param {Node} thisNode - Node to be appended to another node\r\n * @param {Node} thatNode - Node for `thisNode` to be appended to\r\n * @returns {Node} - `thisNode` to allow for chaining\r\n */\n\n\n static appendTo(thisNode, thatNode) {\n if (typeof thatNode == \"string\") thatNode = this.query(thatNode);\n if (!thatNode) return null;\n thatNode.append(thisNode);\n return thisNode;\n }\n /**\r\n * Prepends `thisNode` to `thatNode`\r\n * @param {Node} thisNode - Node to be prepended to another node\r\n * @param {Node} thatNode - Node for `thisNode` to be prepended to\r\n * @returns {Node} - `thisNode` to allow for chaining\r\n */\n\n\n static prependTo(thisNode, thatNode) {\n if (typeof thatNode == \"string\") thatNode = this.query(thatNode);\n if (!thatNode) return null;\n thatNode.prepend(thisNode);\n return thisNode;\n }\n /**\r\n * Insert after a specific element, similar to jQuery's `thisElement.insertAfter(otherElement)`.\r\n * @param {Node} thisNode - The node to insert\r\n * @param {Node} targetNode - Node to insert after in the tree\r\n * @returns {Node} - `thisNode` to allow for chaining\r\n */\n\n\n static insertAfter(thisNode, targetNode) {\n targetNode.parentNode.insertBefore(thisNode, targetNode.nextSibling);\n return thisNode;\n }\n /**\r\n * Insert after a specific element, similar to jQuery's `thisElement.after(newElement)`.\r\n * @param {Node} thisNode - The node to insert\r\n * @param {Node} newNode - Node to insert after in the tree\r\n * @returns {Node} - `thisNode` to allow for chaining\r\n */\n\n\n static after(thisNode, newNode) {\n thisNode.parentNode.insertBefore(newNode, thisNode.nextSibling);\n return thisNode;\n }\n /**\r\n * Gets the next sibling element that matches the selector.\r\n * @param {Element} element - Element to get the next sibling of\r\n * @param {string} [selector=\"\"] - Optional selector\r\n * @returns {Element} - The sibling element\r\n */\n\n\n static next(element, selector = \"\") {\n return selector ? element.querySelector(\"+ \" + selector) : element.nextElementSibling;\n }\n /**\r\n * Gets all subsequent siblings.\r\n * @param {Element} element - Element to get next siblings of\r\n * @returns {NodeList} - The list of siblings\r\n */\n\n\n static nextAll(element) {\n return element.querySelectorAll(\"~ *\");\n }\n /**\r\n * Gets the subsequent siblings until an element matches the selector.\r\n * @param {Element} element - Element to get the following siblings of\r\n * @param {string} selector - Selector to stop at\r\n * @returns {Array} - The list of siblings\r\n */\n\n\n static nextUntil(element, selector) {\n const next = [];\n\n while (element.nextElementSibling && !element.nextElementSibling.matches(selector)) next.push(element = element.nextElementSibling);\n\n return next;\n }\n /**\r\n * Gets the previous sibling element that matches the selector.\r\n * @param {Element} element - Element to get the previous sibling of\r\n * @param {string} [selector=\"\"] - Optional selector\r\n * @returns {Element} - The sibling element\r\n */\n\n\n static previous(element, selector = \"\") {\n const previous = element.previousElementSibling;\n if (selector) return previous && previous.matches(selector) ? previous : null;\n return previous;\n }\n /**\r\n * Gets all preceeding siblings.\r\n * @param {Element} element - Element to get preceeding siblings of\r\n * @returns {NodeList} - The list of siblings\r\n */\n\n\n static previousAll(element) {\n const previous = [];\n\n while (element.previousElementSibling) previous.push(element = element.previousElementSibling);\n\n return previous;\n }\n /**\r\n * Gets the preceeding siblings until an element matches the selector.\r\n * @param {Element} element - Element to get the preceeding siblings of\r\n * @param {string} selector - Selector to stop at\r\n * @returns {Array} - The list of siblings\r\n */\n\n\n static previousUntil(element, selector) {\n const previous = [];\n\n while (element.previousElementSibling && !element.previousElementSibling.matches(selector)) previous.push(element = element.previousElementSibling);\n\n return previous;\n }\n /**\r\n * Find which index in children a certain node is. Similar to jQuery's `$.index()`\r\n * @param {HTMLElement} node - The node to find its index in parent\r\n * @returns {number} Index of the node\r\n */\n\n\n static indexInParent(node) {\n const children = node.parentNode.childNodes;\n let num = 0;\n\n for (let i = 0; i < children.length; i++) {\n if (children[i] == node) return num;\n if (children[i].nodeType == 1) num++;\n }\n\n return -1;\n }\n /** Shorthand for {@link module:DOMTools.indexInParent} */\n\n\n static index(node) {\n return this.indexInParent(node);\n }\n /**\r\n * Gets the parent of the element if it matches the selector,\r\n * otherwise returns null.\r\n * @param {Element} element - Element to get parent of\r\n * @param {string} [selector=\"\"] - Selector to match parent\r\n * @returns {(Element|null)} - The sibling element or null\r\n */\n\n\n static parent(element, selector = \"\") {\n return !selector || element.parentElement.matches(selector) ? element.parentElement : null;\n }\n /**\r\n * Gets all children of Element that match the selector if provided.\r\n * @param {Element} element - Element to get all children of\r\n * @param {string} selector - Selector to match the children to\r\n * @returns {Array} - The list of children\r\n */\n\n\n static findChild(element, selector) {\n return element.querySelector(\":scope > \" + selector);\n }\n /**\r\n * Gets all children of Element that match the selector if provided.\r\n * @param {Element} element - Element to get all children of\r\n * @param {string} selector - Selector to match the children to\r\n * @returns {Array} - The list of children\r\n */\n\n\n static findChildren(element, selector) {\n return element.querySelectorAll(\":scope > \" + selector);\n }\n /**\r\n * Gets all ancestors of Element that match the selector if provided.\r\n * @param {Element} element - Element to get all parents of\r\n * @param {string} [selector=\"\"] - Selector to match the parents to\r\n * @returns {Array} - The list of parents\r\n */\n\n\n static parents(element, selector = \"\") {\n const parents = [];\n if (selector) while (element.parentElement && element.parentElement.closest(selector)) parents.push(element = element.parentElement.closest(selector));else while (element.parentElement) parents.push(element = element.parentElement);\n return parents;\n }\n /**\r\n * Gets the ancestors until an element matches the selector.\r\n * @param {Element} element - Element to get the ancestors of\r\n * @param {string} selector - Selector to stop at\r\n * @returns {Array} - The list of parents\r\n */\n\n\n static parentsUntil(element, selector) {\n const parents = [];\n\n while (element.parentElement && !element.parentElement.matches(selector)) parents.push(element = element.parentElement);\n\n return parents;\n }\n /**\r\n * Gets all siblings of the element that match the selector.\r\n * @param {Element} element - Element to get all siblings of\r\n * @param {string} [selector=\"*\"] - Selector to match the siblings to\r\n * @returns {Array} - The list of siblings\r\n */\n\n\n static siblings(element, selector = \"*\") {\n return Array.from(element.parentElement.children).filter(e => e != element && e.matches(selector));\n }\n /**\r\n * Sets or gets css styles for a specific element. If `value` is provided\r\n * then it sets the style and returns the element to allow for chaining,\r\n * otherwise returns the style. \r\n * @param {Element} element - Element to set the CSS of\r\n * @param {string} attribute - Attribute to get or set\r\n * @param {string} [value] - Value to set for attribute\r\n * @returns {Element|string} - When setting a value, element is returned for chaining, otherwise the value is returned.\r\n */\n\n\n static css(element, attribute, value) {\n if (typeof value == \"undefined\") return global.getComputedStyle(element)[attribute];\n element.style[attribute] = value;\n return element;\n }\n /**\r\n * Sets or gets the width for a specific element. If `value` is provided\r\n * then it sets the width and returns the element to allow for chaining,\r\n * otherwise returns the width. \r\n * @param {Element} element - Element to set the CSS of\r\n * @param {string} [value] - Width to set\r\n * @returns {Element|string} - When setting a value, element is returned for chaining, otherwise the value is returned.\r\n */\n\n\n static width(element, value) {\n if (typeof value == \"undefined\") return parseInt(getComputedStyle(element).width);\n element.style.width = value;\n return element;\n }\n /**\r\n * Sets or gets the height for a specific element. If `value` is provided\r\n * then it sets the height and returns the element to allow for chaining,\r\n * otherwise returns the height. \r\n * @param {Element} element - Element to set the CSS of\r\n * @param {string} [value] - Height to set\r\n * @returns {Element|string} - When setting a value, element is returned for chaining, otherwise the value is returned.\r\n */\n\n\n static height(element, value) {\n if (typeof value == \"undefined\") return parseInt(getComputedStyle(element).height);\n element.style.height = value;\n return element;\n }\n /**\r\n * Sets the inner text of an element if given a value, otherwise returns it.\r\n * @param {Element} element - Element to set the text of\r\n * @param {string} [text] - Content to set\r\n * @returns {string} - Either the string set by this call or the current text content of the node.\r\n */\n\n\n static text(element, text) {\n if (typeof text == \"undefined\") return element.textContent;\n return element.textContent = text;\n }\n /**\r\n * Returns the innerWidth of the element.\r\n * @param {Element} element - Element to retrieve inner width of\r\n * @return {number} - The inner width of the element.\r\n */\n\n\n static innerWidth(element) {\n return element.clientWidth;\n }\n /**\r\n * Returns the innerHeight of the element.\r\n * @param {Element} element - Element to retrieve inner height of\r\n * @return {number} - The inner height of the element.\r\n */\n\n\n static innerHeight(element) {\n return element.clientHeight;\n }\n /**\r\n * Returns the outerWidth of the element.\r\n * @param {Element} element - Element to retrieve outer width of\r\n * @return {number} - The outer width of the element.\r\n */\n\n\n static outerWidth(element) {\n return element.offsetWidth;\n }\n /**\r\n * Returns the outerHeight of the element.\r\n * @param {Element} element - Element to retrieve outer height of\r\n * @return {number} - The outer height of the element.\r\n */\n\n\n static outerHeight(element) {\n return element.offsetHeight;\n }\n /**\r\n * Gets the offset of the element in the page.\r\n * @param {Element} element - Element to get offset of\r\n * @return {Offset} - The offset of the element\r\n */\n\n\n static offset(element) {\n return element.getBoundingClientRect();\n }\n\n static get listeners() {\n return this._listeners || (this._listeners = {});\n }\n /**\r\n * This is similar to jQuery's `on` function and can *hopefully* be used in the same way.\r\n * \r\n * Rather than attempt to explain, I'll show some example usages.\r\n * \r\n * The following will add a click listener (in the `myPlugin` namespace) to `element`.\r\n * `DOMTools.on(element, \"click.myPlugin\", () => {console.log(\"clicked!\");});`\r\n * \r\n * The following will add a click listener (in the `myPlugin` namespace) to `element` that only fires when the target is a `.block` element.\r\n * `DOMTools.on(element, \"click.myPlugin\", \".block\", () => {console.log(\"clicked!\");});`\r\n * \r\n * The following will add a click listener (without namespace) to `element`.\r\n * `DOMTools.on(element, \"click\", () => {console.log(\"clicked!\");});`\r\n * \r\n * The following will add a click listener (without namespace) to `element` that only fires once.\r\n * `const cancel = DOMTools.on(element, \"click\", () => {console.log(\"fired!\"); cancel();});`\r\n * \r\n * @param {Element} element - Element to add listener to\r\n * @param {string} event - Event to listen to with option namespace (e.g. \"event.namespace\")\r\n * @param {(string|callable)} delegate - Selector to run on element to listen to\r\n * @param {callable} [callback] - Function to fire on event\r\n * @returns {module:DOMTools~CancelListener} - A function that will undo the listener\r\n */\n\n\n static on(element, event, delegate, callback) {\n const [type, namespace] = event.split(\".\");\n const hasDelegate = delegate && callback;\n if (!callback) callback = delegate;\n const eventFunc = !hasDelegate ? callback : function (ev) {\n if (ev.target.matches(delegate)) {\n callback(ev);\n }\n };\n element.addEventListener(type, eventFunc);\n\n const cancel = () => {\n element.removeEventListener(type, eventFunc);\n };\n\n if (namespace) {\n if (!this.listeners[namespace]) this.listeners[namespace] = [];\n\n const newCancel = () => {\n cancel();\n this.listeners[namespace].splice(this.listeners[namespace].findIndex(l => l.event == type && l.element == element), 1);\n };\n\n this.listeners[namespace].push({\n event: type,\n element: element,\n cancel: newCancel\n });\n return newCancel;\n }\n\n return cancel;\n }\n /**\r\n * Functionality for this method matches {@link module:DOMTools.on} but automatically cancels itself\r\n * and removes the listener upon the first firing of the desired event.\r\n * \r\n * @param {Element} element - Element to add listener to\r\n * @param {string} event - Event to listen to with option namespace (e.g. \"event.namespace\")\r\n * @param {(string|callable)} delegate - Selector to run on element to listen to\r\n * @param {callable} [callback] - Function to fire on event\r\n * @returns {module:DOMTools~CancelListener} - A function that will undo the listener\r\n */\n\n\n static once(element, event, delegate, callback) {\n const [type, namespace] = event.split(\".\");\n const hasDelegate = delegate && callback;\n if (!callback) callback = delegate;\n const eventFunc = !hasDelegate ? function (ev) {\n callback(ev);\n element.removeEventListener(type, eventFunc);\n } : function (ev) {\n if (!ev.target.matches(delegate)) return;\n callback(ev);\n element.removeEventListener(type, eventFunc);\n };\n element.addEventListener(type, eventFunc);\n\n const cancel = () => {\n element.removeEventListener(type, eventFunc);\n };\n\n if (namespace) {\n if (!this.listeners[namespace]) this.listeners[namespace] = [];\n\n const newCancel = () => {\n cancel();\n this.listeners[namespace].splice(this.listeners[namespace].findIndex(l => l.event == type && l.element == element), 1);\n };\n\n this.listeners[namespace].push({\n event: type,\n element: element,\n cancel: newCancel\n });\n return newCancel;\n }\n\n return cancel;\n }\n\n static __offAll(event, element) {\n const [type, namespace] = event.split(\".\");\n\n let matchFilter = listener => listener.event == type,\n defaultFilter = _ => _;\n\n if (element) matchFilter = l => l.event == type && l.element == element, defaultFilter = l => l.element == element;\n const listeners = this.listeners[namespace] || [];\n const list = type ? listeners.filter(matchFilter) : listeners.filter(defaultFilter);\n\n for (let c = 0; c < list.length; c++) list[c].cancel();\n }\n /**\r\n * This is similar to jQuery's `off` function and can *hopefully* be used in the same way.\r\n * \r\n * Rather than attempt to explain, I'll show some example usages.\r\n * \r\n * The following will remove a click listener called `onClick` (in the `myPlugin` namespace) from `element`.\r\n * `DOMTools.off(element, \"click.myPlugin\", onClick);`\r\n * \r\n * The following will remove a click listener called `onClick` (in the `myPlugin` namespace) from `element` that only fired when the target is a `.block` element.\r\n * `DOMTools.off(element, \"click.myPlugin\", \".block\", onClick);`\r\n * \r\n * The following will remove a click listener (without namespace) from `element`.\r\n * `DOMTools.off(element, \"click\", onClick);`\r\n * \r\n * The following will remove all listeners in namespace `myPlugin` from `element`.\r\n * `DOMTools.off(element, \".myPlugin\");`\r\n * \r\n * The following will remove all click listeners in namespace `myPlugin` from *all elements*.\r\n * `DOMTools.off(\"click.myPlugin\");`\r\n * \r\n * The following will remove all listeners in namespace `myPlugin` from *all elements*.\r\n * `DOMTools.off(\".myPlugin\");`\r\n * \r\n * @param {(Element|string)} element - Element to remove listener from\r\n * @param {string} [event] - Event to listen to with option namespace (e.g. \"event.namespace\")\r\n * @param {(string|callable)} [delegate] - Selector to run on element to listen to\r\n * @param {callable} [callback] - Function to fire on event\r\n * @returns {Element} - The original element to allow for chaining\r\n */\n\n\n static off(element, event, delegate, callback) {\n if (typeof element == \"string\") return this.__offAll(element);\n const [type, namespace] = event.split(\".\");\n if (namespace) return this.__offAll(event, element);\n const hasDelegate = delegate && callback;\n if (!callback) callback = delegate;\n const eventFunc = !hasDelegate ? callback : function (ev) {\n if (ev.target.matches(delegate)) {\n callback(ev);\n }\n };\n element.removeEventListener(type, eventFunc);\n return element;\n }\n /**\r\n * Adds a listener for when the node is added/removed from the document body.\r\n * The listener is automatically removed upon firing.\r\n * @param {HTMLElement} node - node to wait for\r\n * @param {callable} callback - function to be performed on event\r\n * @param {boolean} onMount - determines if it should fire on Mount or on Unmount\r\n */\n\n\n static onMountChange(node, callback, onMount = true) {\n const wrappedCallback = () => {\n this.observer.unsubscribe(wrappedCallback);\n callback();\n };\n\n this.observer.subscribe(wrappedCallback, mutation => {\n const nodes = Array.from(onMount ? mutation.addedNodes : mutation.removedNodes);\n const directMatch = nodes.indexOf(node) > -1;\n const parentMatch = nodes.some(parent => parent.contains(node));\n return directMatch || parentMatch;\n });\n return node;\n }\n /** Shorthand for {@link module:DOMTools.onMountChange} with third parameter `true` */\n\n\n static onMount(node, callback) {\n return this.onMountChange(node, callback);\n }\n /** Shorthand for {@link module:DOMTools.onMountChange} with third parameter `false` */\n\n\n static onUnmount(node, callback) {\n return this.onMountChange(node, callback, false);\n }\n /** Alias for {@link module:DOMTools.onMount} */\n\n\n static onAdded(node, callback) {\n return this.onMount(node, callback);\n }\n /** Alias for {@link module:DOMTools.onUnmount} */\n\n\n static onRemoved(node, callback) {\n return this.onUnmount(node, callback, false);\n }\n /**\r\n * Helper function which combines multiple elements into one parent element\r\n * @param {Array} elements - array of elements to put into a single parent\r\n */\n\n\n static wrap(elements) {\n const domWrapper = this.parseHTML(`
`);\n\n for (let e = 0; e < elements.length; e++) domWrapper.appendChild(elements[e]);\n\n return domWrapper;\n }\n /**\r\n * Resolves the node to an HTMLElement. This is mainly used by library modules.\r\n * @param {(jQuery|Element)} node - node to resolve\r\n */\n\n\n static resolveElement(node) {\n if (!(node instanceof jQuery) && !(node instanceof Element)) return undefined;\n return node instanceof jQuery ? node[0] : node;\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9kb210b29scy5qcz8xM2RkIl0sIm5hbWVzIjpbIkRPTVRvb2xzIiwiZXNjYXBlSUQiLCJpZCIsInJlcGxhY2UiLCJhZGRTdHlsZSIsImNzcyIsImRvY3VtZW50IiwiaGVhZCIsImFwcGVuZCIsImNyZWF0ZUVsZW1lbnQiLCJyZW1vdmVTdHlsZSIsImVsZW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsInJlbW92ZSIsImFkZFNjcmlwdCIsInVybCIsIlByb21pc2UiLCJyZXNvbHZlIiwic2NyaXB0Iiwic3JjIiwidHlwZSIsIm9ubG9hZCIsInJlbW92ZVNjcmlwdCIsImFuaW1hdGUiLCJ0aW1pbmciLCJfIiwidXBkYXRlIiwiZHVyYXRpb24iLCJzdGFydCIsInBlcmZvcm1hbmNlIiwibm93IiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwidGltZSIsInRpbWVGcmFjdGlvbiIsInByb2dyZXNzIiwiUSIsInNlbGVjdG9yIiwicGFyc2VIVE1MIiwiaXNIVE1MIiwiTm9kZUxpc3QiLCJBcnJheSIsImZyb20iLCJzb21lIiwibiIsIm5vZGVUeXBlIiwicXVlcnkiLCJiYXNlRWxlbWVudCIsInF1ZXJ5U2VsZWN0b3IiLCJxdWVyeUFsbCIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJodG1sIiwiZnJhZ21lbnQiLCJ0ZW1wbGF0ZSIsImlubmVySFRNTCIsIm5vZGUiLCJjb250ZW50IiwiY2xvbmVOb2RlIiwiY2hpbGROb2RlcyIsImxlbmd0aCIsImVzY2FwZUhUTUwiLCJ0ZXh0Tm9kZSIsImNyZWF0ZVRleHROb2RlIiwic3BhbkVsZW1lbnQiLCJub2RlVmFsdWUiLCJhZGRDbGFzcyIsImNsYXNzZXMiLCJmbGF0IiwiZmlsdGVyIiwiYyIsInRvU3RyaW5nIiwic3BsaXQiLCJjbGFzc0xpc3QiLCJhZGQiLCJyZW1vdmVDbGFzcyIsInRvZ2dsZUNsYXNzIiwiY2xhc3NuYW1lIiwiaW5kaWNhdG9yIiwiZm9yRWFjaCIsInRvZ2dsZSIsImhhc0NsYXNzIiwiZXZlcnkiLCJjb250YWlucyIsInJlcGxhY2VDbGFzcyIsIm9sZE5hbWUiLCJuZXdOYW1lIiwiYXBwZW5kVG8iLCJ0aGlzTm9kZSIsInRoYXROb2RlIiwicHJlcGVuZFRvIiwicHJlcGVuZCIsImluc2VydEFmdGVyIiwidGFyZ2V0Tm9kZSIsInBhcmVudE5vZGUiLCJpbnNlcnRCZWZvcmUiLCJuZXh0U2libGluZyIsImFmdGVyIiwibmV3Tm9kZSIsIm5leHQiLCJuZXh0RWxlbWVudFNpYmxpbmciLCJuZXh0QWxsIiwibmV4dFVudGlsIiwibWF0Y2hlcyIsInB1c2giLCJwcmV2aW91cyIsInByZXZpb3VzRWxlbWVudFNpYmxpbmciLCJwcmV2aW91c0FsbCIsInByZXZpb3VzVW50aWwiLCJpbmRleEluUGFyZW50IiwiY2hpbGRyZW4iLCJudW0iLCJpIiwiaW5kZXgiLCJwYXJlbnQiLCJwYXJlbnRFbGVtZW50IiwiZmluZENoaWxkIiwiZmluZENoaWxkcmVuIiwicGFyZW50cyIsImNsb3Nlc3QiLCJwYXJlbnRzVW50aWwiLCJzaWJsaW5ncyIsImUiLCJhdHRyaWJ1dGUiLCJ2YWx1ZSIsImdsb2JhbCIsImdldENvbXB1dGVkU3R5bGUiLCJzdHlsZSIsIndpZHRoIiwicGFyc2VJbnQiLCJoZWlnaHQiLCJ0ZXh0IiwidGV4dENvbnRlbnQiLCJpbm5lcldpZHRoIiwiY2xpZW50V2lkdGgiLCJpbm5lckhlaWdodCIsImNsaWVudEhlaWdodCIsIm91dGVyV2lkdGgiLCJvZmZzZXRXaWR0aCIsIm91dGVySGVpZ2h0Iiwib2Zmc2V0SGVpZ2h0Iiwib2Zmc2V0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwibGlzdGVuZXJzIiwiX2xpc3RlbmVycyIsIm9uIiwiZXZlbnQiLCJkZWxlZ2F0ZSIsImNhbGxiYWNrIiwibmFtZXNwYWNlIiwiaGFzRGVsZWdhdGUiLCJldmVudEZ1bmMiLCJldiIsInRhcmdldCIsImFkZEV2ZW50TGlzdGVuZXIiLCJjYW5jZWwiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwibmV3Q2FuY2VsIiwic3BsaWNlIiwiZmluZEluZGV4IiwibCIsIm9uY2UiLCJfX29mZkFsbCIsIm1hdGNoRmlsdGVyIiwibGlzdGVuZXIiLCJkZWZhdWx0RmlsdGVyIiwibGlzdCIsIm9mZiIsIm9uTW91bnRDaGFuZ2UiLCJvbk1vdW50Iiwid3JhcHBlZENhbGxiYWNrIiwib2JzZXJ2ZXIiLCJ1bnN1YnNjcmliZSIsInN1YnNjcmliZSIsIm11dGF0aW9uIiwibm9kZXMiLCJhZGRlZE5vZGVzIiwicmVtb3ZlZE5vZGVzIiwiZGlyZWN0TWF0Y2giLCJpbmRleE9mIiwicGFyZW50TWF0Y2giLCJvblVubW91bnQiLCJvbkFkZGVkIiwib25SZW1vdmVkIiwid3JhcCIsImVsZW1lbnRzIiwiZG9tV3JhcHBlciIsImFwcGVuZENoaWxkIiwicmVzb2x2ZUVsZW1lbnQiLCJqUXVlcnkiLCJFbGVtZW50IiwidW5kZWZpbmVkIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBdUJBOzs7Ozs7Ozs7OztBQVdDOzs7O0FBS2MsTUFBTUEsUUFBTixDQUFlO0FBRTFCLFNBQU9DLFFBQVAsQ0FBZ0JDLEVBQWhCLEVBQW9CO0FBQ2hCLFdBQU9BLEVBQUUsQ0FBQ0MsT0FBSCxDQUFXLG9CQUFYLEVBQWlDLEdBQWpDLENBQVA7QUFDSDtBQUVEOzs7Ozs7O0FBS0gsU0FBT0MsUUFBUCxDQUFnQkYsRUFBaEIsRUFBb0JHLEdBQXBCLEVBQXlCO0FBQ3hCQyxZQUFRLENBQUNDLElBQVQsQ0FBY0MsTUFBZCxDQUFxQlIsUUFBUSxDQUFDUyxhQUFULENBQXdCLGNBQWFQLEVBQUcsS0FBSUcsR0FBSSxVQUFoRCxDQUFyQjtBQUNBO0FBRUQ7Ozs7OztBQUlBLFNBQU9LLFdBQVAsQ0FBbUJSLEVBQW5CLEVBQXVCO0FBQ3RCLFVBQU1TLE9BQU8sR0FBR0wsUUFBUSxDQUFDTSxjQUFULENBQXdCVixFQUF4QixDQUFoQjtBQUNBLFFBQUlTLE9BQUosRUFBYUEsT0FBTyxDQUFDRSxNQUFSO0FBQ2I7QUFF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QkYsUUFBUSxDQUFDL0QsQ0FBRCxDQUEvQjs7QUFDMUMsV0FBT2dFLFVBQVA7QUFDSDtBQUVEOzs7Ozs7QUFJQSxTQUFPRSxjQUFQLENBQXNCcEksSUFBdEIsRUFBNEI7QUFDeEIsUUFBSSxFQUFFQSxJQUFJLFlBQVlxSSxNQUFsQixLQUE2QixFQUFFckksSUFBSSxZQUFZc0ksT0FBbEIsQ0FBakMsRUFBNkQsT0FBT0MsU0FBUDtBQUM3RCxXQUFPdkksSUFBSSxZQUFZcUksTUFBaEIsR0FBeUJySSxJQUFJLENBQUMsQ0FBRCxDQUE3QixHQUFtQ0EsSUFBMUM7QUFDSDs7QUF4c0J5QiIsImZpbGUiOiIuL3NyYy9tb2R1bGVzL2RvbXRvb2xzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIENvcHlyaWdodCAyMDE4IFphY2hhcnkgUmF1ZW5cclxuICpcclxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nXHJcbiAqIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLFxyXG4gKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZVxyXG4gKiByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxyXG4gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkXHJcbiAqIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcclxuICpcclxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsXHJcbiAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXHJcbiAqXHJcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IgSU1QTElFRCxcclxuICogSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEFcclxuICogUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVFxyXG4gKiBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0ZcclxuICogQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFXHJcbiAqIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxyXG4gKiBcclxuICogRnJvbTogaHR0cHM6Ly9naXRodWIuY29tL3JhdWVuemkvQkRQbHVnaW5MaWJyYXJ5XHJcbiAqL1xyXG5cclxuLyoqXHJcbiAqIEBpbnRlcmZhY2VcclxuICogQG5hbWUgT2Zmc2V0XHJcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSB0b3AgLSBUb3Agb2Zmc2V0IG9mIHRoZSB0YXJnZXQgZWxlbWVudC5cclxuICogQHByb3BlcnR5IHtudW1iZXJ9IHJpZ2h0IC0gUmlnaHQgb2Zmc2V0IG9mIHRoZSB0YXJnZXQgZWxlbWVudC5cclxuICogQHByb3BlcnR5IHtudW1iZXJ9IGJvdHRvbSAtIEJvdHRvbSBvZmZzZXQgb2YgdGhlIHRhcmdldCBlbGVtZW50LlxyXG4gKiBAcHJvcGVydHkge251bWJlcn0gbGVmdCAtIExlZnQgb2Zmc2V0IG9mIHRoZSB0YXJnZXQgZWxlbWVudC5cclxuICogQHByb3BlcnR5IHtudW1iZXJ9IGhlaWdodCAtIE91dGVyIGhlaWdodCBvZiB0aGUgdGFyZ2V0IGVsZW1lbnQuXHJcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSB3aWR0aCAtIE91dGVyIHdpZHRoIG9mIHRoZSB0YXJnZXQgZWxlbWVudC5cclxuICovXHJcblxyXG4gLyoqXHJcbiAqIEZ1bmN0aW9uIHRoYXQgYXV0b21hdGljYWxseSByZW1vdmVzIGFkZGVkIGxpc3RlbmVyLlxyXG4gKiBAY2FsbGJhY2sgbW9kdWxlOkRPTVRvb2xzfkNhbmNlbExpc3RlbmVyXHJcbiAqL1xyXG4gXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERPTVRvb2xzIHtcclxuXHJcbiAgICBzdGF0aWMgZXNjYXBlSUQoaWQpIHtcclxuICAgICAgICByZXR1cm4gaWQucmVwbGFjZSgvXlteYS16XSt8W15cXHctXSsvZ2ksIFwiLVwiKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuXHQgKiBBZGRzIGEgc3R5bGUgdG8gdGhlIGRvY3VtZW50LlxyXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBpZCAtIGlkZW50aWZpZXIgdG8gdXNlIGFzIHRoZSBlbGVtZW50IGlkXHJcblx0ICogQHBhcmFtIHtzdHJpbmd9IGNzcyAtIGNzcyB0byBhZGQgdG8gdGhlIGRvY3VtZW50XHJcblx0ICovXHJcblx0c3RhdGljIGFkZFN0eWxlKGlkLCBjc3MpIHtcclxuXHRcdGRvY3VtZW50LmhlYWQuYXBwZW5kKERPTVRvb2xzLmNyZWF0ZUVsZW1lbnQoYDxzdHlsZSBpZD1cIiR7aWR9XCI+JHtjc3N9PC9zdHlsZT5gKSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBSZW1vdmVzIGEgc3R5bGUgZnJvbSB0aGUgZG9jdW1lbnQuXHJcblx0ICogQHBhcmFtIHtzdHJpbmd9IGlkIC0gb3JpZ2luYWwgaWRlbnRpZmllciB1c2VkXHJcblx0ICovXHJcblx0c3RhdGljIHJlbW92ZVN0eWxlKGlkKSB7XHJcblx0XHRjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpO1xyXG5cdFx0aWYgKGVsZW1lbnQpIGVsZW1lbnQucmVtb3ZlKCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBBZGRzL3JlcXVpcmVzIGEgcmVtb3RlIHNjcmlwdCB0byBiZSBsb2FkZWRcclxuXHQgKiBAcGFyYW0ge3N0cmluZ30gaWQgLSBpZGVudGlmaWVyIHRvIHVzZSBmb3IgdGhpcyBzY3JpcHRcclxuXHQgKiBAcGFyYW0ge3N0cmluZ30gdXJsIC0gdXJsIGZyb20gd2hpY2ggdG8gbG9hZCB0aGUgc2NyaXB0XHJcblx0ICogQHJldHVybnMge1Byb21pc2V9IHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBzY3JpcHQgaXMgbG9hZGVkXHJcblx0ICovXHJcblx0c3RhdGljIGFkZFNjcmlwdChpZCwgdXJsKSB7XHJcblx0XHRyZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XHJcblx0XHRcdGNvbnN0IHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzY3JpcHRcIik7XHJcblx0XHRcdHNjcmlwdC5pZCA9IGlkO1xyXG5cdFx0XHRzY3JpcHQuc3JjID0gdXJsO1xyXG5cdFx0XHRzY3JpcHQudHlwZSA9IFwidGV4dC9qYXZhc2NyaXB0XCI7XHJcblx0XHRcdHNjcmlwdC5vbmxvYWQgPSByZXNvbHZlO1xyXG5cdFx0XHRkb2N1bWVudC5oZWFkLmFwcGVuZChzY3JpcHQpO1xyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBSZW1vdmVzIGEgcmVtb3RlIHNjcmlwdCBmcm9tIHRoZSBkb2N1bWVudC5cclxuXHQgKiBAcGFyYW0ge3N0cmluZ30gaWQgLSBvcmlnaW5hbCBpZGVudGlmaWVyIHVzZWRcclxuXHQgKi9cclxuXHRzdGF0aWMgcmVtb3ZlU2NyaXB0KGlkKSB7XHJcbiAgICAgICAgaWQgPSB0aGlzLmVzY2FwZUlEKGlkKTtcclxuXHRcdGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7XHJcblx0XHRpZiAoZWxlbWVudCkgZWxlbWVudC5yZW1vdmUoKTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgLy8gaHR0cHM6Ly9qYXZhc2NyaXB0LmluZm8vanMtYW5pbWF0aW9uXHJcbiAgICBzdGF0aWMgYW5pbWF0ZSh7dGltaW5nID0gXyA9PiBfLCB1cGRhdGUsIGR1cmF0aW9ufSkge1xyXG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gcGVyZm9ybWFuY2Uubm93KCk7XHJcbiAgICAgIFxyXG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbiBhbmltYXRlKHRpbWUpIHtcclxuICAgICAgICAgIC8vIHRpbWVGcmFjdGlvbiBnb2VzIGZyb20gMCB0byAxXHJcbiAgICAgICAgICBsZXQgdGltZUZyYWN0aW9uID0gKHRpbWUgLSBzdGFydCkgLyBkdXJhdGlvbjtcclxuICAgICAgICAgIGlmICh0aW1lRnJhY3Rpb24gPiAxKSB0aW1lRnJhY3Rpb24gPSAxO1xyXG4gICAgICBcclxuICAgICAgICAgIC8vIGNhbGN1bGF0ZSB0aGUgY3VycmVudCBhbmltYXRpb24gc3RhdGVcclxuICAgICAgICAgIGNvbnN0IHByb2dyZXNzID0gdGltaW5nKHRpbWVGcmFjdGlvbik7XHJcbiAgICAgIFxyXG4gICAgICAgICAgdXBkYXRlKHByb2dyZXNzKTsgLy8gZHJhdyBpdFxyXG4gICAgICBcclxuICAgICAgICAgIGlmICh0aW1lRnJhY3Rpb24gPCAxKSB7XHJcbiAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShhbmltYXRlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoaXMgaXMgbXkgc2hpdCB2ZXJzaW9uIG9mIG5vdCBoYXZpbmcgdG8gdXNlIGAkYCBmcm9tIGpRdWVyeS4gTWVhbmluZ1xyXG4gICAgICogdGhhdCB5b3UgY2FuIHBhc3MgYSBzZWxlY3RvciBhbmQgaXQgd2lsbCBhdXRvbWF0aWNhbGx5IHJ1biB7QGxpbmsgbW9kdWxlOkRPTVRvb2xzLnF1ZXJ5fS5cclxuICAgICAqIEl0IGFsc28gbWVhbnMgdGhhdCB5b3UgY2FuIHBhc3MgYSBzdHJpbmcgb2YgaHRtbCBhbmQgaXQgd2lsbCBwZXJmb3JtIGFuZCByZXR1cm4gYHBhcnNlSFRNTGAuXHJcbiAgICAgKiBAc2VlIG1vZHVsZTpET01Ub29scy5wYXJzZUhUTUxcclxuICAgICAqIEBzZWUgbW9kdWxlOkRPTVRvb2xzLnF1ZXJ5XHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gc2VsZWN0b3IgLSBTZWxlY3RvciB0byBxdWVyeSBvciBIVE1MIHRvIHBhcnNlXHJcbiAgICAgKiBAcmV0dXJucyB7KERvY3VtZW50RnJhZ21lbnR8Tm9kZUxpc3R8SFRNTEVsZW1lbnQpfSAtIEVpdGhlciB0aGUgcmVzdWx0IG9mIGBwYXJzZUhUTUxgIG9yIGBxdWVyeWBcclxuICAgICAqL1xyXG4gICAgc3RhdGljIFEoc2VsZWN0b3IpIHtcclxuICAgICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5wYXJzZUhUTUwoc2VsZWN0b3IpO1xyXG4gICAgICAgIGNvbnN0IGlzSFRNTCA9IGVsZW1lbnQgaW5zdGFuY2VvZiBOb2RlTGlzdCA/IEFycmF5LmZyb20oZWxlbWVudCkuc29tZShuID0+IG4ubm9kZVR5cGUgPT09IDEpIDogZWxlbWVudC5ub2RlVHlwZSA9PT0gMTtcclxuICAgICAgICBpZiAoaXNIVE1MKSByZXR1cm4gZWxlbWVudDtcclxuICAgICAgICByZXR1cm4gdGhpcy5xdWVyeShzZWxlY3Rvcik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBFc3NlbnRpYWxseSBhIHNob3J0aGFuZCBmb3IgYGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JgLiBJZiB0aGUgYGJhc2VFbGVtZW50YCBpcyBub3QgcHJvdmlkZWRcclxuICAgICAqIGBkb2N1bWVudGAgaXMgdXNlZCBieSBkZWZhdWx0LlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHNlbGVjdG9yIC0gU2VsZWN0b3IgdG8gcXVlcnlcclxuICAgICAqIEBwYXJhbSB7RWxlbWVudH0gW2Jhc2VFbGVtZW50XSAtIEVsZW1lbnQgdG8gYmFzZSB0aGUgcXVlcnkgZnJvbVxyXG4gICAgICogQHJldHVybnMgeyhFbGVtZW50fG51bGwpfSAtIFRoZSBmb3VuZCBlbGVtZW50IG9yIG51bGwgaWYgbm90IGZvdW5kXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBxdWVyeShzZWxlY3RvciwgYmFzZUVsZW1lbnQpIHtcclxuICAgICAgICBpZiAoIWJhc2VFbGVtZW50KSBiYXNlRWxlbWVudCA9IGRvY3VtZW50O1xyXG4gICAgICAgIHJldHVybiBiYXNlRWxlbWVudC5xdWVyeVNlbGVjdG9yKHNlbGVjdG9yKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEVzc2VudGlhbGx5IGEgc2hvcnRoYW5kIGZvciBgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbGAuIElmIHRoZSBgYmFzZUVsZW1lbnRgIGlzIG5vdCBwcm92aWRlZFxyXG4gICAgICogYGRvY3VtZW50YCBpcyB1c2VkIGJ5IGRlZmF1bHQuXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gc2VsZWN0b3IgLSBTZWxlY3RvciB0byBxdWVyeVxyXG4gICAgICogQHBhcmFtIHtFbGVtZW50fSBbYmFzZUVsZW1lbnRdIC0gRWxlbWVudCB0byBiYXNlIHRoZSBxdWVyeSBmcm9tXHJcbiAgICAgKiBAcmV0dXJucyB7QXJyYXk8RWxlbWVudD59IC0gQXJyYXkgb2YgYWxsIGZvdW5kIGVsZW1lbnRzXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBxdWVyeUFsbChzZWxlY3RvciwgYmFzZUVsZW1lbnQpIHtcclxuICAgICAgICBpZiAoIWJhc2VFbGVtZW50KSBiYXNlRWxlbWVudCA9IGRvY3VtZW50O1xyXG4gICAgICAgIHJldHVybiBiYXNlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFBhcnNlcyBhIHN0cmluZyBvZiBIVE1MIGFuZCByZXR1cm5zIHRoZSByZXN1bHRzLiBJZiB0aGUgc2Vjb25kIHBhcmFtZXRlciBpcyB0cnVlLFxyXG4gICAgICogdGhlIHBhcnNlZCBIVE1MIHdpbGwgYmUgcmV0dXJuZWQgYXMgYSBkb2N1bWVudCBmcmFnbWVudCB7QHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRG9jdW1lbnRGcmFnbWVudH0uXHJcbiAgICAgKiBUaGlzIGlzIGV4dHJlbWVseSB1c2VmdWwgaWYgeW91IGhhdmUgYSBsaXN0IG9mIGVsZW1lbnRzIGF0IHRoZSB0b3AgbGV2ZWwsIHRoZXkgY2FuIHRoZW4gYmUgYXBwZW5kZWQgYWxsIGF0IG9uY2UgdG8gYW5vdGhlciBub2RlLlxyXG4gICAgICogXHJcbiAgICAgKiBJZiB0aGUgc2Vjb25kIHBhcmFtZXRlciBpcyBmYWxzZSwgdGhlbiB0aGUgcmV0dXJuIHZhbHVlIHdpbGwgYmUgdGhlIGxpc3Qgb2YgcGFyc2VkXHJcbiAgICAgKiBub2RlcyBhbmQgdGhlcmUgd2VyZSBtdWx0aXBsZSB0b3AgbGV2ZWwgbm9kZXMsIG90aGVyd2lzZSB0aGUgc2luZ2xlIG5vZGUgaXMgcmV0dXJuZWQuXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gaHRtbCAtIEhUTUwgdG8gYmUgcGFyc2VkXHJcbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtmcmFnbWVudD1mYWxzZV0gLSBXaGV0aGVyIG9yIG5vdCB0aGUgcmV0dXJuIHNob3VsZCBiZSB0aGUgcmF3IGBEb2N1bWVudEZyYWdtZW50YFxyXG4gICAgICogQHJldHVybnMgeyhEb2N1bWVudEZyYWdtZW50fE5vZGVMaXN0fEhUTUxFbGVtZW50KX0gLSBUaGUgcmVzdWx0IG9mIEhUTUwgcGFyc2luZ1xyXG4gICAgICovXHJcbiAgICBzdGF0aWMgcGFyc2VIVE1MKGh0bWwsIGZyYWdtZW50ID0gZmFsc2UpIHtcclxuICAgICAgICBjb25zdCB0ZW1wbGF0ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJ0ZW1wbGF0ZVwiKTtcclxuICAgICAgICB0ZW1wbGF0ZS5pbm5lckhUTUwgPSBodG1sO1xyXG4gICAgICAgIGNvbnN0IG5vZGUgPSB0ZW1wbGF0ZS5jb250ZW50LmNsb25lTm9kZSh0cnVlKTtcclxuICAgICAgICBpZiAoZnJhZ21lbnQpIHJldHVybiBub2RlO1xyXG4gICAgICAgIHJldHVybiBub2RlLmNoaWxkTm9kZXMubGVuZ3RoID4gMSA/IG5vZGUuY2hpbGROb2RlcyA6IG5vZGUuY2hpbGROb2Rlc1swXTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogQWx0ZXJuYXRlIG5hbWUgZm9yIHtAbGluayBtb2R1bGU6RE9NVG9vbHMucGFyc2VIVE1MfSAqL1xyXG4gICAgc3RhdGljIGNyZWF0ZUVsZW1lbnQoaHRtbCwgZnJhZ21lbnQgPSBmYWxzZSkge3JldHVybiB0aGlzLnBhcnNlSFRNTChodG1sLCBmcmFnbWVudCk7fVxyXG4gICAgXHJcbiAgICAvKipcclxuICAgICAqIFRha2VzIGEgc3RyaW5nIG9mIGh0bWwgYW5kIGVzY2FwZXMgaXQgdXNpbmcgdGhlIGJyb3dlcidzIG93biBlc2NhcGluZyBtZWNoYW5pc20uXHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gaHRtbCAtIGh0bWwgdG8gYmUgZXNjYXBlZFxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgZXNjYXBlSFRNTChodG1sKSB7XHJcbiAgICAgICAgY29uc3QgdGV4dE5vZGUgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShcIlwiKTtcclxuICAgICAgICBjb25zdCBzcGFuRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIpO1xyXG4gICAgICAgIHNwYW5FbGVtZW50LmFwcGVuZCh0ZXh0Tm9kZSk7XHJcbiAgICAgICAgdGV4dE5vZGUubm9kZVZhbHVlID0gaHRtbDtcclxuICAgICAgICByZXR1cm4gc3BhbkVsZW1lbnQuaW5uZXJIVE1MO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQWRkcyBhIGxpc3Qgb2YgY2xhc3NlcyBmcm9tIHRoZSB0YXJnZXQgZWxlbWVudC5cclxuICAgICAqIEBwYXJhbSB7RWxlbWVudH0gZWxlbWVudCAtIEVsZW1lbnQgdG8gZWRpdCBjbGFzc2VzIG9mXHJcbiAgICAgKiBAcGFyYW0gey4uLnN0cmluZ30gY2xhc3NlcyAtIE5hbWVzIG9mIGNsYXNzZXMgdG8gYWRkXHJcbiAgICAgKiBAcmV0dXJucyB7RWxlbWVudH0gLSBgZWxlbWVudGAgdG8gYWxsb3cgZm9yIGNoYWluaW5nXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBhZGRDbGFzcyhlbGVtZW50LCAuLi5jbGFzc2VzKSB7XHJcbiAgICAgICAgY2xhc3NlcyA9IGNsYXNzZXMuZmxhdCgpLmZpbHRlcihjID0+IGMpO1xyXG4gICAgICAgIGZvciAobGV0IGMgPSAwOyBjIDwgY2xhc3Nlcy5sZW5ndGg7IGMrKykgY2xhc3Nlc1tjXSA9IGNsYXNzZXNbY10udG9TdHJpbmcoKS5zcGxpdChcIiBcIik7XHJcbiAgICAgICAgY2xhc3NlcyA9IGNsYXNzZXMuZmxhdCgpLmZpbHRlcihjID0+IGMpO1xyXG4gICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LmFkZCguLi5jbGFzc2VzKTtcclxuICAgICAgICByZXR1cm4gZWxlbWVudDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlbW92ZXMgYSBsaXN0IG9mIGNsYXNzZXMgZnJvbSB0aGUgdGFyZ2V0IGVsZW1lbnQuXHJcbiAgICAgKiBAcGFyYW0ge0VsZW1lbnR9IGVsZW1lbnQgLSBFbGVtZW50IHRvIGVkaXQgY2xhc3NlcyBvZlxyXG4gICAgICogQHBhcmFtIHsuLi5zdHJpbmd9IGNsYXNzZXMgLSBOYW1lcyBvZiBjbGFzc2VzIHRvIHJlbW92ZVxyXG4gICAgICogQHJldHVybnMge0VsZW1lbnR9IC0gYGVsZW1lbnRgIHRvIGFsbG93IGZvciBjaGFpbmluZ1xyXG4gICAgICovXHJcbiAgICBzdGF0aWMgcmVtb3ZlQ2xhc3MoZWxlbWVudCwgLi4uY2xhc3Nlcykge1xyXG4gICAgICAgIGZvciAobGV0IGMgPSAwOyBjIDwgY2xhc3Nlcy5sZW5ndGg7IGMrKykgY2xhc3Nlc1tjXSA9IGNsYXNzZXNbY10udG9TdHJpbmcoKS5zcGxpdChcIiBcIik7XHJcbiAgICAgICAgY2xhc3NlcyA9IGNsYXNzZXMuZmxhdCgpLmZpbHRlcihjID0+IGMpO1xyXG4gICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSguLi5jbGFzc2VzKTtcclxuICAgICAgICByZXR1cm4gZWxlbWVudDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFdoZW4gb25seSBvbmUgYXJndW1lbnQgaXMgcHJlc2VudDogVG9nZ2xlIGNsYXNzIHZhbHVlO1xyXG4gICAgICogaS5lLiwgaWYgY2xhc3MgZXhpc3RzIHRoZW4gcmVtb3ZlIGl0IGFuZCByZXR1cm4gZmFsc2UsIGlmIG5vdCwgdGhlbiBhZGQgaXQgYW5kIHJldHVybiB0cnVlLlxyXG4gICAgICogV2hlbiBhIHNlY29uZCBhcmd1bWVudCBpcyBwcmVzZW50OlxyXG4gICAgICogSWYgdGhlIHNlY29uZCBhcmd1bWVudCBldmFsdWF0ZXMgdG8gdHJ1ZSwgYWRkIHNwZWNpZmllZCBjbGFzcyB2YWx1ZSwgYW5kIGlmIGl0IGV2YWx1YXRlcyB0byBmYWxzZSwgcmVtb3ZlIGl0LlxyXG4gICAgICogQHBhcmFtIHtFbGVtZW50fSBlbGVtZW50IC0gRWxlbWVudCB0byBlZGl0IGNsYXNzZXMgb2ZcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBjbGFzc25hbWUgLSBOYW1lIG9mIGNsYXNzIHRvIHRvZ2dsZVxyXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbaW5kaWNhdG9yXSAtIE9wdGlvbmFsIGluZGljYXRvciBmb3IgaWYgdGhlIGNsYXNzIHNob3VsZCBiZSB0b2dnbGVkXHJcbiAgICAgKiBAcmV0dXJucyB7RWxlbWVudH0gLSBgZWxlbWVudGAgdG8gYWxsb3cgZm9yIGNoYWluaW5nXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyB0b2dnbGVDbGFzcyhlbGVtZW50LCBjbGFzc25hbWUsIGluZGljYXRvcikge1xyXG4gICAgICAgIGNsYXNzbmFtZSA9IGNsYXNzbmFtZS50b1N0cmluZygpLnNwbGl0KFwiIFwiKS5maWx0ZXIoYyA9PiBjKTtcclxuICAgICAgICBpZiAodHlwZW9mKGluZGljYXRvcikgIT09IFwidW5kZWZpbmVkXCIpIGNsYXNzbmFtZS5mb3JFYWNoKGMgPT4gZWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKGMsIGluZGljYXRvcikpO1xyXG4gICAgICAgIGVsc2UgY2xhc3NuYW1lLmZvckVhY2goYyA9PiBlbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoYykpO1xyXG4gICAgICAgIHJldHVybiBlbGVtZW50O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2hlY2tzIGlmIGFuIGVsZW1lbnQgaGFzIGEgc3BlY2lmaWMgY2xhc3NcclxuICAgICAqIEBwYXJhbSB7RWxlbWVudH0gZWxlbWVudCAtIEVsZW1lbnQgdG8gZWRpdCBjbGFzc2VzIG9mXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gY2xhc3NuYW1lIC0gTmFtZSBvZiBjbGFzcyB0byBjaGVja1xyXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IC0gYHRydWVgIGlmIHRoZSBlbGVtZW50IGhhcyB0aGUgY2xhc3MsIGBmYWxzZWAgb3RoZXJ3aXNlLlxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgaGFzQ2xhc3MoZWxlbWVudCwgY2xhc3NuYW1lKSB7XHJcbiAgICAgICAgcmV0dXJuIGNsYXNzbmFtZS50b1N0cmluZygpLnNwbGl0KFwiIFwiKS5maWx0ZXIoYyA9PiBjKS5ldmVyeShjID0+IGVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKGMpKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlcGxhY2VzIG9uZSBjbGFzcyB3aXRoIGFub3RoZXJcclxuICAgICAqIEBwYXJhbSB7RWxlbWVudH0gZWxlbWVudCAtIEVsZW1lbnQgdG8gZWRpdCBjbGFzc2VzIG9mXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb2xkTmFtZSAtIE5hbWUgb2YgY2xhc3MgdG8gcmVwbGFjZVxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG5ld05hbWUgLSBOZXcgbmFtZSBmb3IgdGhlIGNsYXNzXHJcbiAgICAgKiBAcmV0dXJucyB7RWxlbWVudH0gLSBgZWxlbWVudGAgdG8gYWxsb3cgZm9yIGNoYWluaW5nXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyByZXBsYWNlQ2xhc3MoZWxlbWVudCwgb2xkTmFtZSwgbmV3TmFtZSkge1xyXG4gICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LnJlcGxhY2Uob2xkTmFtZSwgbmV3TmFtZSk7XHJcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBcHBlbmRzIGB0aGlzTm9kZWAgdG8gYHRoYXROb2RlYFxyXG4gICAgICogQHBhcmFtIHtOb2RlfSB0aGlzTm9kZSAtIE5vZGUgdG8gYmUgYXBwZW5kZWQgdG8gYW5vdGhlciBub2RlXHJcbiAgICAgKiBAcGFyYW0ge05vZGV9IHRoYXROb2RlIC0gTm9kZSBmb3IgYHRoaXNOb2RlYCB0byBiZSBhcHBlbmRlZCB0b1xyXG4gICAgICogQHJldHVybnMge05vZGV9IC0gYHRoaXNOb2RlYCB0byBhbGxvdyBmb3IgY2hhaW5pbmdcclxuICAgICAqL1xyXG4gICAgc3RhdGljIGFwcGVuZFRvKHRoaXNOb2RlLCB0aGF0Tm9kZSkge1xyXG4gICAgICAgIGlmICh0eXBlb2YodGhhdE5vZGUpID09IFwic3RyaW5nXCIpIHRoYXROb2RlID0gdGhpcy5xdWVyeSh0aGF0Tm9kZSk7XHJcbiAgICAgICAgaWYgKCF0aGF0Tm9kZSkgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgdGhhdE5vZGUuYXBwZW5kKHRoaXNOb2RlKTtcclxuICAgICAgICByZXR1cm4gdGhpc05vZGU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQcmVwZW5kcyBgdGhpc05vZGVgIHRvIGB0aGF0Tm9kZWBcclxuICAgICAqIEBwYXJhbSB7Tm9kZX0gdGhpc05vZGUgLSBOb2RlIHRvIGJlIHByZXBlbmRlZCB0byBhbm90aGVyIG5vZGVcclxuICAgICAqIEBwYXJhbSB7Tm9kZX0gdGhhdE5vZGUgLSBOb2RlIGZvciBgdGhpc05vZGVgIHRvIGJlIHByZXBlbmRlZCB0b1xyXG4gICAgICogQHJldHVybnMge05vZGV9IC0gYHRoaXNOb2RlYCB0byBhbGxvdyBmb3IgY2hhaW5pbmdcclxuICAgICAqL1xyXG4gICAgc3RhdGljIHByZXBlbmRUbyh0aGlzTm9kZSwgdGhhdE5vZGUpIHtcclxuICAgICAgICBpZiAodHlwZW9mKHRoYXROb2RlKSA9PSBcInN0cmluZ1wiKSB0aGF0Tm9kZSA9IHRoaXMucXVlcnkodGhhdE5vZGUpO1xyXG4gICAgICAgIGlmICghdGhhdE5vZGUpIHJldHVybiBudWxsO1xyXG4gICAgICAgIHRoYXROb2RlLnByZXBlbmQodGhpc05vZGUpO1xyXG4gICAgICAgIHJldHVybiB0aGlzTm9kZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEluc2VydCBhZnRlciBhIHNwZWNpZmljIGVsZW1lbnQsIHNpbWlsYXIgdG8galF1ZXJ5J3MgYHRoaXNFbGVtZW50Lmluc2VydEFmdGVyKG90aGVyRWxlbWVudClgLlxyXG4gICAgICogQHBhcmFtIHtOb2RlfSB0aGlzTm9kZSAtIFRoZSBub2RlIHRvIGluc2VydFxyXG4gICAgICogQHBhcmFtIHtOb2RlfSB0YXJnZXROb2RlIC0gTm9kZSB0byBpbnNlcnQgYWZ0ZXIgaW4gdGhlIHRyZWVcclxuICAgICAqIEByZXR1cm5zIHtOb2RlfSAtIGB0aGlzTm9kZWAgdG8gYWxsb3cgZm9yIGNoYWluaW5nXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBpbnNlcnRBZnRlcih0aGlzTm9kZSwgdGFyZ2V0Tm9kZSkge1xyXG4gICAgICAgIHRhcmdldE5vZGUucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodGhpc05vZGUsIHRhcmdldE5vZGUubmV4dFNpYmxpbmcpO1xyXG4gICAgICAgIHJldHVybiB0aGlzTm9kZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEluc2VydCBhZnRlciBhIHNwZWNpZmljIGVsZW1lbnQsIHNpbWlsYXIgdG8galF1ZXJ5J3MgYHRoaXNFbGVtZW50LmFmdGVyKG5ld0VsZW1lbnQpYC5cclxuICAgICAqIEBwYXJhbSB7Tm9kZX0gdGhpc05vZGUgLSBUaGUgbm9kZSB0byBpbnNlcnRcclxuICAgICAqIEBwYXJhbSB7Tm9kZX0gbmV3Tm9kZSAtIE5vZGUgdG8gaW5zZXJ0IGFmdGVyIGluIHRoZSB0cmVlXHJcbiAgICAgKiBAcmV0dXJucyB7Tm9kZX0gLSBgdGhpc05vZGVgIHRvIGFsbG93IGZvciBjaGFpbmluZ1xyXG4gICAgICovXHJcbiAgICBzdGF0aWMgYWZ0ZXIodGhpc05vZGUsIG5ld05vZGUpIHtcclxuICAgICAgICB0aGlzTm9kZS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShuZXdOb2RlLCB0aGlzTm9kZS5uZXh0U2libGluZyk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXNOb2RlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyB0aGUgbmV4dCBzaWJsaW5nIGVsZW1lbnQgdGhhdCBtYXRjaGVzIHRoZSBzZWxlY3Rvci5cclxuICAgICAqIEBwYXJhbSB7RWxlbWVudH0gZWxlbWVudCAtIEVsZW1lbnQgdG8gZ2V0IHRoZSBuZXh0IHNpYmxpbmcgb2ZcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc2VsZWN0b3I9XCJcIl0gLSBPcHRpb25hbCBzZWxlY3RvclxyXG4gICAgICogQHJldHVybnMge0VsZW1lbnR9IC0gVGhlIHNpYmxpbmcgZWxlbWVudFxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgbmV4dChlbGVtZW50LCBzZWxlY3RvciA9IFwiXCIpIHtcclxuICAgICAgICByZXR1cm4gc2VsZWN0b3IgPyBlbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXCIrIFwiICsgc2VsZWN0b3IpIDogZWxlbWVudC5uZXh0RWxlbWVudFNpYmxpbmc7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIGFsbCBzdWJzZXF1ZW50IHNpYmxpbmdzLlxyXG4gICAgICogQHBhcmFtIHtFbGVtZW50fSBlbGVtZW50IC0gRWxlbWVudCB0byBnZXQgbmV4dCBzaWJsaW5ncyBvZlxyXG4gICAgICogQHJldHVybnMge05vZGVMaXN0fSAtIFRoZSBsaXN0IG9mIHNpYmxpbmdzXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBuZXh0QWxsKGVsZW1lbnQpIHtcclxuICAgICAgICByZXR1cm4gZWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKFwifiAqXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyB0aGUgc3Vic2VxdWVudCBzaWJsaW5ncyB1bnRpbCBhbiBlbGVtZW50IG1hdGNoZXMgdGhlIHNlbGVjdG9yLlxyXG4gICAgICogQHBhcmFtIHtFbGVtZW50fSBlbGVtZW50IC0gRWxlbWVudCB0byBnZXQgdGhlIGZvbGxvd2luZyBzaWJsaW5ncyBvZlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHNlbGVjdG9yIC0gU2VsZWN0b3IgdG8gc3RvcCBhdFxyXG4gICAgICogQHJldHVybnMge0FycmF5PEVsZW1lbnQ+fSAtIFRoZSBsaXN0IG9mIHNpYmxpbmdzXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBuZXh0VW50aWwoZWxlbWVudCwgc2VsZWN0b3IpIHtcclxuICAgICAgICBjb25zdCBuZXh0ID0gW107IFxyXG4gICAgICAgIHdoaWxlIChlbGVtZW50Lm5leHRFbGVtZW50U2libGluZyAmJiAhZWxlbWVudC5uZXh0RWxlbWVudFNpYmxpbmcubWF0Y2hlcyhzZWxlY3RvcikpIG5leHQucHVzaChlbGVtZW50ID0gZWxlbWVudC5uZXh0RWxlbWVudFNpYmxpbmcpO1xyXG4gICAgICAgIHJldHVybiBuZXh0O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyB0aGUgcHJldmlvdXMgc2libGluZyBlbGVtZW50IHRoYXQgbWF0Y2hlcyB0aGUgc2VsZWN0b3IuXHJcbiAgICAgKiBAcGFyYW0ge0VsZW1lbnR9IGVsZW1lbnQgLSBFbGVtZW50IHRvIGdldCB0aGUgcHJldmlvdXMgc2libGluZyBvZlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzZWxlY3Rvcj1cIlwiXSAtIE9wdGlvbmFsIHNlbGVjdG9yXHJcbiAgICAgKiBAcmV0dXJucyB7RWxlbWVudH0gLSBUaGUgc2libGluZyBlbGVtZW50XHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBwcmV2aW91cyhlbGVtZW50LCBzZWxlY3RvciA9IFwiXCIpIHtcclxuICAgICAgICBjb25zdCBwcmV2aW91cyA9IGVsZW1lbnQucHJldmlvdXNFbGVtZW50U2libGluZztcclxuICAgICAgICBpZiAoc2VsZWN0b3IpIHJldHVybiBwcmV2aW91cyAmJiBwcmV2aW91cy5tYXRjaGVzKHNlbGVjdG9yKSA/IHByZXZpb3VzIDogbnVsbDtcclxuICAgICAgICByZXR1cm4gcHJldmlvdXM7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIGFsbCBwcmVjZWVkaW5nIHNpYmxpbmdzLlxyXG4gICAgICogQHBhcmFtIHtFbGVtZW50fSBlbGVtZW50IC0gRWxlbWVudCB0byBnZXQgcHJlY2VlZGluZyBzaWJsaW5ncyBvZlxyXG4gICAgICogQHJldHVybnMge05vZGVMaXN0fSAtIFRoZSBsaXN0IG9mIHNpYmxpbmdzXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBwcmV2aW91c0FsbChlbGVtZW50KSB7XHJcbiAgICAgICAgY29uc3QgcHJldmlvdXMgPSBbXTtcclxuICAgICAgICB3aGlsZSAoZWxlbWVudC5wcmV2aW91c0VsZW1lbnRTaWJsaW5nKSBwcmV2aW91cy5wdXNoKGVsZW1lbnQgPSBlbGVtZW50LnByZXZpb3VzRWxlbWVudFNpYmxpbmcpO1xyXG4gICAgICAgIHJldHVybiBwcmV2aW91cztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgdGhlIHByZWNlZWRpbmcgc2libGluZ3MgdW50aWwgYW4gZWxlbWVudCBtYXRjaGVzIHRoZSBzZWxlY3Rvci5cclxuICAgICAqIEBwYXJhbSB7RWxlbWVudH0gZWxlbWVudCAtIEVsZW1lbnQgdG8gZ2V0IHRoZSBwcmVjZWVkaW5nIHNpYmxpbmdzIG9mXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gc2VsZWN0b3IgLSBTZWxlY3RvciB0byBzdG9wIGF0XHJcbiAgICAgKiBAcmV0dXJucyB7QXJyYXk8RWxlbWVudD59IC0gVGhlIGxpc3Qgb2Ygc2libGluZ3NcclxuICAgICAqL1xyXG4gICAgc3RhdGljIHByZXZpb3VzVW50aWwoZWxlbWVudCwgc2VsZWN0b3IpIHtcclxuICAgICAgICBjb25zdCBwcmV2aW91cyA9IFtdOyBcclxuICAgICAgICB3aGlsZSAoZWxlbWVudC5wcmV2aW91c0VsZW1lbnRTaWJsaW5nICYmICFlbGVtZW50LnByZXZpb3VzRWxlbWVudFNpYmxpbmcubWF0Y2hlcyhzZWxlY3RvcikpIHByZXZpb3VzLnB1c2goZWxlbWVudCA9IGVsZW1lbnQucHJldmlvdXNFbGVtZW50U2libGluZyk7XHJcbiAgICAgICAgcmV0dXJuIHByZXZpb3VzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRmluZCB3aGljaCBpbmRleCBpbiBjaGlsZHJlbiBhIGNlcnRhaW4gbm9kZSBpcy4gU2ltaWxhciB0byBqUXVlcnkncyBgJC5pbmRleCgpYFxyXG4gICAgICogQHBhcmFtIHtIVE1MRWxlbWVudH0gbm9kZSAtIFRoZSBub2RlIHRvIGZpbmQgaXRzIGluZGV4IGluIHBhcmVudFxyXG4gICAgICogQHJldHVybnMge251bWJlcn0gSW5kZXggb2YgdGhlIG5vZGVcclxuICAgICAqL1xyXG4gICAgc3RhdGljIGluZGV4SW5QYXJlbnQobm9kZSkge1xyXG4gICAgICAgIGNvbnN0IGNoaWxkcmVuID0gbm9kZS5wYXJlbnROb2RlLmNoaWxkTm9kZXM7XHJcbiAgICAgICAgbGV0IG51bSA9IDA7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAoY2hpbGRyZW5baV0gPT0gbm9kZSkgcmV0dXJuIG51bTtcclxuICAgICAgICAgICAgaWYgKGNoaWxkcmVuW2ldLm5vZGVUeXBlID09IDEpIG51bSsrO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gLTE7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIFNob3J0aGFuZCBmb3Ige0BsaW5rIG1vZHVsZTpET01Ub29scy5pbmRleEluUGFyZW50fSAqL1xyXG4gICAgc3RhdGljIGluZGV4KG5vZGUpIHtyZXR1cm4gdGhpcy5pbmRleEluUGFyZW50KG5vZGUpO31cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgdGhlIHBhcmVudCBvZiB0aGUgZWxlbWVudCBpZiBpdCBtYXRjaGVzIHRoZSBzZWxlY3RvcixcclxuICAgICAqIG90aGVyd2lzZSByZXR1cm5zIG51bGwuXHJcbiAgICAgKiBAcGFyYW0ge0VsZW1lbnR9IGVsZW1lbnQgLSBFbGVtZW50IHRvIGdldCBwYXJlbnQgb2ZcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc2VsZWN0b3I9XCJcIl0gLSBTZWxlY3RvciB0byBtYXRjaCBwYXJlbnRcclxuICAgICAqIEByZXR1cm5zIHsoRWxlbWVudHxudWxsKX0gLSBUaGUgc2libGluZyBlbGVtZW50IG9yIG51bGxcclxuICAgICAqL1xyXG4gICAgc3RhdGljIHBhcmVudChlbGVtZW50LCBzZWxlY3RvciA9IFwiXCIpIHtcclxuICAgICAgICByZXR1cm4gIXNlbGVjdG9yIHx8IGVsZW1lbnQucGFyZW50RWxlbWVudC5tYXRjaGVzKHNlbGVjdG9yKSA/IGVsZW1lbnQucGFyZW50RWxlbWVudCA6IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIGFsbCBjaGlsZHJlbiBvZiBFbGVtZW50IHRoYXQgbWF0Y2ggdGhlIHNlbGVjdG9yIGlmIHByb3ZpZGVkLlxyXG4gICAgICogQHBhcmFtIHtFbGVtZW50fSBlbGVtZW50IC0gRWxlbWVudCB0byBnZXQgYWxsIGNoaWxkcmVuIG9mXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gc2VsZWN0b3IgLSBTZWxlY3RvciB0byBtYXRjaCB0aGUgY2hpbGRyZW4gdG9cclxuICAgICAqIEByZXR1cm5zIHtBcnJheTxFbGVtZW50Pn0gLSBUaGUgbGlzdCBvZiBjaGlsZHJlblxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgZmluZENoaWxkKGVsZW1lbnQsIHNlbGVjdG9yKSB7XHJcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQucXVlcnlTZWxlY3RvcihcIjpzY29wZSA+IFwiICsgc2VsZWN0b3IpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyBhbGwgY2hpbGRyZW4gb2YgRWxlbWVudCB0aGF0IG1hdGNoIHRoZSBzZWxlY3RvciBpZiBwcm92aWRlZC5cclxuICAgICAqIEBwYXJhbSB7RWxlbWVudH0gZWxlbWVudCAtIEVsZW1lbnQgdG8gZ2V0IGFsbCBjaGlsZHJlbiBvZlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHNlbGVjdG9yIC0gU2VsZWN0b3IgdG8gbWF0Y2ggdGhlIGNoaWxkcmVuIHRvXHJcbiAgICAgKiBAcmV0dXJucyB7QXJyYXk8RWxlbWVudD59IC0gVGhlIGxpc3Qgb2YgY2hpbGRyZW5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGZpbmRDaGlsZHJlbihlbGVtZW50LCBzZWxlY3Rvcikge1xyXG4gICAgICAgIHJldHVybiBlbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCI6c2NvcGUgPiBcIiArIHNlbGVjdG9yKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgYWxsIGFuY2VzdG9ycyBvZiBFbGVtZW50IHRoYXQgbWF0Y2ggdGhlIHNlbGVjdG9yIGlmIHByb3ZpZGVkLlxyXG4gICAgICogQHBhcmFtIHtFbGVtZW50fSBlbGVtZW50IC0gRWxlbWVudCB0byBnZXQgYWxsIHBhcmVudHMgb2ZcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc2VsZWN0b3I9XCJcIl0gLSBTZWxlY3RvciB0byBtYXRjaCB0aGUgcGFyZW50cyB0b1xyXG4gICAgICogQHJldHVybnMge0FycmF5PEVsZW1lbnQ+fSAtIFRoZSBsaXN0IG9mIHBhcmVudHNcclxuICAgICAqL1xyXG4gICAgc3RhdGljIHBhcmVudHMoZWxlbWVudCwgc2VsZWN0b3IgPSBcIlwiKSB7XHJcbiAgICAgICAgY29uc3QgcGFyZW50cyA9IFtdO1xyXG4gICAgICAgIGlmIChzZWxlY3Rvcikgd2hpbGUgKGVsZW1lbnQucGFyZW50RWxlbWVudCAmJiBlbGVtZW50LnBhcmVudEVsZW1lbnQuY2xvc2VzdChzZWxlY3RvcikpIHBhcmVudHMucHVzaChlbGVtZW50ID0gZWxlbWVudC5wYXJlbnRFbGVtZW50LmNsb3Nlc3Qoc2VsZWN0b3IpKTtcclxuICAgICAgICBlbHNlIHdoaWxlIChlbGVtZW50LnBhcmVudEVsZW1lbnQpIHBhcmVudHMucHVzaChlbGVtZW50ID0gZWxlbWVudC5wYXJlbnRFbGVtZW50KTtcclxuICAgICAgICByZXR1cm4gcGFyZW50cztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgdGhlIGFuY2VzdG9ycyB1bnRpbCBhbiBlbGVtZW50IG1hdGNoZXMgdGhlIHNlbGVjdG9yLlxyXG4gICAgICogQHBhcmFtIHtFbGVtZW50fSBlbGVtZW50IC0gRWxlbWVudCB0byBnZXQgdGhlIGFuY2VzdG9ycyBvZlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHNlbGVjdG9yIC0gU2VsZWN0b3IgdG8gc3RvcCBhdFxyXG4gICAgICogQHJldHVybnMge0FycmF5PEVsZW1lbnQ+fSAtIFRoZSBsaXN0IG9mIHBhcmVudHNcclxuICAgICAqL1xyXG4gICAgc3RhdGljIHBhcmVudHNVbnRpbChlbGVtZW50LCBzZWxlY3Rvcikge1xyXG4gICAgICAgIGNvbnN0IHBhcmVudHMgPSBbXTtcclxuICAgICAgICB3aGlsZSAoZWxlbWVudC5wYXJlbnRFbGVtZW50ICYmICFlbGVtZW50LnBhcmVudEVsZW1lbnQubWF0Y2hlcyhzZWxlY3RvcikpIHBhcmVudHMucHVzaChlbGVtZW50ID0gZWxlbWVudC5wYXJlbnRFbGVtZW50KTtcclxuICAgICAgICByZXR1cm4gcGFyZW50cztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgYWxsIHNpYmxpbmdzIG9mIHRoZSBlbGVtZW50IHRoYXQgbWF0Y2ggdGhlIHNlbGVjdG9yLlxyXG4gICAgICogQHBhcmFtIHtFbGVtZW50fSBlbGVtZW50IC0gRWxlbWVudCB0byBnZXQgYWxsIHNpYmxpbmdzIG9mXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3NlbGVjdG9yPVwiKlwiXSAtIFNlbGVjdG9yIHRvIG1hdGNoIHRoZSBzaWJsaW5ncyB0b1xyXG4gICAgICogQHJldHVybnMge0FycmF5PEVsZW1lbnQ+fSAtIFRoZSBsaXN0IG9mIHNpYmxpbmdzXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBzaWJsaW5ncyhlbGVtZW50LCBzZWxlY3RvciA9IFwiKlwiKSB7XHJcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20oZWxlbWVudC5wYXJlbnRFbGVtZW50LmNoaWxkcmVuKS5maWx0ZXIoZSA9PiBlICE9IGVsZW1lbnQgJiYgZS5tYXRjaGVzKHNlbGVjdG9yKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTZXRzIG9yIGdldHMgY3NzIHN0eWxlcyBmb3IgYSBzcGVjaWZpYyBlbGVtZW50LiBJZiBgdmFsdWVgIGlzIHByb3ZpZGVkXHJcbiAgICAgKiB0aGVuIGl0IHNldHMgdGhlIHN0eWxlIGFuZCByZXR1cm5zIHRoZSBlbGVtZW50IHRvIGFsbG93IGZvciBjaGFpbmluZyxcclxuICAgICAqIG90aGVyd2lzZSByZXR1cm5zIHRoZSBzdHlsZS4gIFxyXG4gICAgICogQHBhcmFtIHtFbGVtZW50fSBlbGVtZW50IC0gRWxlbWVudCB0byBzZXQgdGhlIENTUyBvZlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGF0dHJpYnV0ZSAtIEF0dHJpYnV0ZSB0byBnZXQgb3Igc2V0XHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3ZhbHVlXSAtIFZhbHVlIHRvIHNldCBmb3IgYXR0cmlidXRlXHJcbiAgICAgKiBAcmV0dXJucyB7RWxlbWVudHxzdHJpbmd9IC0gV2hlbiBzZXR0aW5nIGEgdmFsdWUsIGVsZW1lbnQgaXMgcmV0dXJuZWQgZm9yIGNoYWluaW5nLCBvdGhlcndpc2UgdGhlIHZhbHVlIGlzIHJldHVybmVkLlxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgY3NzKGVsZW1lbnQsIGF0dHJpYnV0ZSwgdmFsdWUpIHtcclxuICAgICAgICBpZiAodHlwZW9mKHZhbHVlKSA9PSBcInVuZGVmaW5lZFwiKSByZXR1cm4gZ2xvYmFsLmdldENvbXB1dGVkU3R5bGUoZWxlbWVudClbYXR0cmlidXRlXTtcclxuICAgICAgICBlbGVtZW50LnN0eWxlW2F0dHJpYnV0ZV0gPSB2YWx1ZTtcclxuICAgICAgICByZXR1cm4gZWxlbWVudDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldHMgb3IgZ2V0cyB0aGUgd2lkdGggZm9yIGEgc3BlY2lmaWMgZWxlbWVudC4gSWYgYHZhbHVlYCBpcyBwcm92aWRlZFxyXG4gICAgICogdGhlbiBpdCBzZXRzIHRoZSB3aWR0aCBhbmQgcmV0dXJucyB0aGUgZWxlbWVudCB0byBhbGxvdyBmb3IgY2hhaW5pbmcsXHJcbiAgICAgKiBvdGhlcndpc2UgcmV0dXJucyB0aGUgd2lkdGguICBcclxuICAgICAqIEBwYXJhbSB7RWxlbWVudH0gZWxlbWVudCAtIEVsZW1lbnQgdG8gc2V0IHRoZSBDU1Mgb2ZcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbdmFsdWVdIC0gV2lkdGggdG8gc2V0XHJcbiAgICAgKiBAcmV0dXJucyB7RWxlbWVudHxzdHJpbmd9IC0gV2hlbiBzZXR0aW5nIGEgdmFsdWUsIGVsZW1lbnQgaXMgcmV0dXJuZWQgZm9yIGNoYWluaW5nLCBvdGhlcndpc2UgdGhlIHZhbHVlIGlzIHJldHVybmVkLlxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgd2lkdGgoZWxlbWVudCwgdmFsdWUpIHtcclxuICAgICAgICBpZiAodHlwZW9mKHZhbHVlKSA9PSBcInVuZGVmaW5lZFwiKSByZXR1cm4gcGFyc2VJbnQoZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KS53aWR0aCk7XHJcbiAgICAgICAgZWxlbWVudC5zdHlsZS53aWR0aCA9IHZhbHVlO1xyXG4gICAgICAgIHJldHVybiBlbGVtZW50O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2V0cyBvciBnZXRzIHRoZSBoZWlnaHQgZm9yIGEgc3BlY2lmaWMgZWxlbWVudC4gSWYgYHZhbHVlYCBpcyBwcm92aWRlZFxyXG4gICAgICogdGhlbiBpdCBzZXRzIHRoZSBoZWlnaHQgYW5kIHJldHVybnMgdGhlIGVsZW1lbnQgdG8gYWxsb3cgZm9yIGNoYWluaW5nLFxyXG4gICAgICogb3RoZXJ3aXNlIHJldHVybnMgdGhlIGhlaWdodC4gIFxyXG4gICAgICogQHBhcmFtIHtFbGVtZW50fSBlbGVtZW50IC0gRWxlbWVudCB0byBzZXQgdGhlIENTUyBvZlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFt2YWx1ZV0gLSBIZWlnaHQgdG8gc2V0XHJcbiAgICAgKiBAcmV0dXJucyB7RWxlbWVudHxzdHJpbmd9IC0gV2hlbiBzZXR0aW5nIGEgdmFsdWUsIGVsZW1lbnQgaXMgcmV0dXJuZWQgZm9yIGNoYWluaW5nLCBvdGhlcndpc2UgdGhlIHZhbHVlIGlzIHJldHVybmVkLlxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgaGVpZ2h0KGVsZW1lbnQsIHZhbHVlKSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZih2YWx1ZSkgPT0gXCJ1bmRlZmluZWRcIikgcmV0dXJuIHBhcnNlSW50KGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkuaGVpZ2h0KTtcclxuICAgICAgICBlbGVtZW50LnN0eWxlLmhlaWdodCA9IHZhbHVlO1xyXG4gICAgICAgIHJldHVybiBlbGVtZW50O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2V0cyB0aGUgaW5uZXIgdGV4dCBvZiBhbiBlbGVtZW50IGlmIGdpdmVuIGEgdmFsdWUsIG90aGVyd2lzZSByZXR1cm5zIGl0LlxyXG4gICAgICogQHBhcmFtIHtFbGVtZW50fSBlbGVtZW50IC0gRWxlbWVudCB0byBzZXQgdGhlIHRleHQgb2ZcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbdGV4dF0gLSBDb250ZW50IHRvIHNldFxyXG4gICAgICogQHJldHVybnMge3N0cmluZ30gLSBFaXRoZXIgdGhlIHN0cmluZyBzZXQgYnkgdGhpcyBjYWxsIG9yIHRoZSBjdXJyZW50IHRleHQgY29udGVudCBvZiB0aGUgbm9kZS5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIHRleHQoZWxlbWVudCwgdGV4dCkge1xyXG4gICAgICAgIGlmICh0eXBlb2YodGV4dCkgPT0gXCJ1bmRlZmluZWRcIikgcmV0dXJuIGVsZW1lbnQudGV4dENvbnRlbnQ7XHJcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQudGV4dENvbnRlbnQgPSB0ZXh0O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0dXJucyB0aGUgaW5uZXJXaWR0aCBvZiB0aGUgZWxlbWVudC5cclxuICAgICAqIEBwYXJhbSB7RWxlbWVudH0gZWxlbWVudCAtIEVsZW1lbnQgdG8gcmV0cmlldmUgaW5uZXIgd2lkdGggb2ZcclxuICAgICAqIEByZXR1cm4ge251bWJlcn0gLSBUaGUgaW5uZXIgd2lkdGggb2YgdGhlIGVsZW1lbnQuXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBpbm5lcldpZHRoKGVsZW1lbnQpIHtcclxuICAgICAgICByZXR1cm4gZWxlbWVudC5jbGllbnRXaWR0aDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHVybnMgdGhlIGlubmVySGVpZ2h0IG9mIHRoZSBlbGVtZW50LlxyXG4gICAgICogQHBhcmFtIHtFbGVtZW50fSBlbGVtZW50IC0gRWxlbWVudCB0byByZXRyaWV2ZSBpbm5lciBoZWlnaHQgb2ZcclxuICAgICAqIEByZXR1cm4ge251bWJlcn0gLSBUaGUgaW5uZXIgaGVpZ2h0IG9mIHRoZSBlbGVtZW50LlxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgaW5uZXJIZWlnaHQoZWxlbWVudCkge1xyXG4gICAgICAgIHJldHVybiBlbGVtZW50LmNsaWVudEhlaWdodDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHVybnMgdGhlIG91dGVyV2lkdGggb2YgdGhlIGVsZW1lbnQuXHJcbiAgICAgKiBAcGFyYW0ge0VsZW1lbnR9IGVsZW1lbnQgLSBFbGVtZW50IHRvIHJldHJpZXZlIG91dGVyIHdpZHRoIG9mXHJcbiAgICAgKiBAcmV0dXJuIHtudW1iZXJ9IC0gVGhlIG91dGVyIHdpZHRoIG9mIHRoZSBlbGVtZW50LlxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgb3V0ZXJXaWR0aChlbGVtZW50KSB7XHJcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQub2Zmc2V0V2lkdGg7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXR1cm5zIHRoZSBvdXRlckhlaWdodCBvZiB0aGUgZWxlbWVudC5cclxuICAgICAqIEBwYXJhbSB7RWxlbWVudH0gZWxlbWVudCAtIEVsZW1lbnQgdG8gcmV0cmlldmUgb3V0ZXIgaGVpZ2h0IG9mXHJcbiAgICAgKiBAcmV0dXJuIHtudW1iZXJ9IC0gVGhlIG91dGVyIGhlaWdodCBvZiB0aGUgZWxlbWVudC5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIG91dGVySGVpZ2h0KGVsZW1lbnQpIHtcclxuICAgICAgICByZXR1cm4gZWxlbWVudC5vZmZzZXRIZWlnaHQ7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIHRoZSBvZmZzZXQgb2YgdGhlIGVsZW1lbnQgaW4gdGhlIHBhZ2UuXHJcbiAgICAgKiBAcGFyYW0ge0VsZW1lbnR9IGVsZW1lbnQgLSBFbGVtZW50IHRvIGdldCBvZmZzZXQgb2ZcclxuICAgICAqIEByZXR1cm4ge09mZnNldH0gLSBUaGUgb2Zmc2V0IG9mIHRoZSBlbGVtZW50XHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBvZmZzZXQoZWxlbWVudCkge1xyXG4gICAgICAgIHJldHVybiBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBnZXQgbGlzdGVuZXJzKCkgeyByZXR1cm4gdGhpcy5fbGlzdGVuZXJzIHx8ICh0aGlzLl9saXN0ZW5lcnMgPSB7fSk7IH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoaXMgaXMgc2ltaWxhciB0byBqUXVlcnkncyBgb25gIGZ1bmN0aW9uIGFuZCBjYW4gKmhvcGVmdWxseSogYmUgdXNlZCBpbiB0aGUgc2FtZSB3YXkuXHJcbiAgICAgKiBcclxuICAgICAqIFJhdGhlciB0aGFuIGF0dGVtcHQgdG8gZXhwbGFpbiwgSSdsbCBzaG93IHNvbWUgZXhhbXBsZSB1c2FnZXMuXHJcbiAgICAgKiBcclxuICAgICAqIFRoZSBmb2xsb3dpbmcgd2lsbCBhZGQgYSBjbGljayBsaXN0ZW5lciAoaW4gdGhlIGBteVBsdWdpbmAgbmFtZXNwYWNlKSB0byBgZWxlbWVudGAuXHJcbiAgICAgKiBgRE9NVG9vbHMub24oZWxlbWVudCwgXCJjbGljay5teVBsdWdpblwiLCAoKSA9PiB7Y29uc29sZS5sb2coXCJjbGlja2VkIVwiKTt9KTtgXHJcbiAgICAgKiBcclxuICAgICAqIFRoZSBmb2xsb3dpbmcgd2lsbCBhZGQgYSBjbGljayBsaXN0ZW5lciAoaW4gdGhlIGBteVBsdWdpbmAgbmFtZXNwYWNlKSB0byBgZWxlbWVudGAgdGhhdCBvbmx5IGZpcmVzIHdoZW4gdGhlIHRhcmdldCBpcyBhIGAuYmxvY2tgIGVsZW1lbnQuXHJcbiAgICAgKiBgRE9NVG9vbHMub24oZWxlbWVudCwgXCJjbGljay5teVBsdWdpblwiLCBcIi5ibG9ja1wiLCAoKSA9PiB7Y29uc29sZS5sb2coXCJjbGlja2VkIVwiKTt9KTtgXHJcbiAgICAgKiBcclxuICAgICAqIFRoZSBmb2xsb3dpbmcgd2lsbCBhZGQgYSBjbGljayBsaXN0ZW5lciAod2l0aG91dCBuYW1lc3BhY2UpIHRvIGBlbGVtZW50YC5cclxuICAgICAqIGBET01Ub29scy5vbihlbGVtZW50LCBcImNsaWNrXCIsICgpID0+IHtjb25zb2xlLmxvZyhcImNsaWNrZWQhXCIpO30pO2BcclxuICAgICAqIFxyXG4gICAgICogVGhlIGZvbGxvd2luZyB3aWxsIGFkZCBhIGNsaWNrIGxpc3RlbmVyICh3aXRob3V0IG5hbWVzcGFjZSkgdG8gYGVsZW1lbnRgIHRoYXQgb25seSBmaXJlcyBvbmNlLlxyXG4gICAgICogYGNvbnN0IGNhbmNlbCA9IERPTVRvb2xzLm9uKGVsZW1lbnQsIFwiY2xpY2tcIiwgKCkgPT4ge2NvbnNvbGUubG9nKFwiZmlyZWQhXCIpOyBjYW5jZWwoKTt9KTtgXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7RWxlbWVudH0gZWxlbWVudCAtIEVsZW1lbnQgdG8gYWRkIGxpc3RlbmVyIHRvXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZXZlbnQgLSBFdmVudCB0byBsaXN0ZW4gdG8gd2l0aCBvcHRpb24gbmFtZXNwYWNlIChlLmcuIFwiZXZlbnQubmFtZXNwYWNlXCIpXHJcbiAgICAgKiBAcGFyYW0geyhzdHJpbmd8Y2FsbGFibGUpfSBkZWxlZ2F0ZSAtIFNlbGVjdG9yIHRvIHJ1biBvbiBlbGVtZW50IHRvIGxpc3RlbiB0b1xyXG4gICAgICogQHBhcmFtIHtjYWxsYWJsZX0gW2NhbGxiYWNrXSAtIEZ1bmN0aW9uIHRvIGZpcmUgb24gZXZlbnRcclxuICAgICAqIEByZXR1cm5zIHttb2R1bGU6RE9NVG9vbHN+Q2FuY2VsTGlzdGVuZXJ9IC0gQSBmdW5jdGlvbiB0aGF0IHdpbGwgdW5kbyB0aGUgbGlzdGVuZXJcclxuICAgICAqL1xyXG4gICAgc3RhdGljIG9uKGVsZW1lbnQsIGV2ZW50LCBkZWxlZ2F0ZSwgY2FsbGJhY2spIHtcclxuICAgICAgICBjb25zdCBbdHlwZSwgbmFtZXNwYWNlXSA9IGV2ZW50LnNwbGl0KFwiLlwiKTtcclxuICAgICAgICBjb25zdCBoYXNEZWxlZ2F0ZSA9IGRlbGVnYXRlICYmIGNhbGxiYWNrO1xyXG4gICAgICAgIGlmICghY2FsbGJhY2spIGNhbGxiYWNrID0gZGVsZWdhdGU7XHJcbiAgICAgICAgY29uc3QgZXZlbnRGdW5jID0gIWhhc0RlbGVnYXRlID8gY2FsbGJhY2sgOiBmdW5jdGlvbihldikge1xyXG4gICAgICAgICAgICBpZiAoZXYudGFyZ2V0Lm1hdGNoZXMoZGVsZWdhdGUpKSB7XHJcbiAgICAgICAgICAgICAgICBjYWxsYmFjayhldik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIodHlwZSwgZXZlbnRGdW5jKTtcclxuICAgICAgICBjb25zdCBjYW5jZWwgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgIGVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlLCBldmVudEZ1bmMpO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgaWYgKG5hbWVzcGFjZSkge1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMubGlzdGVuZXJzW25hbWVzcGFjZV0pIHRoaXMubGlzdGVuZXJzW25hbWVzcGFjZV0gPSBbXTtcclxuICAgICAgICAgICAgY29uc3QgbmV3Q2FuY2VsID0gKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY2FuY2VsKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxpc3RlbmVyc1tuYW1lc3BhY2VdLnNwbGljZSh0aGlzLmxpc3RlbmVyc1tuYW1lc3BhY2VdLmZpbmRJbmRleChsID0+IGwuZXZlbnQgPT0gdHlwZSAmJiBsLmVsZW1lbnQgPT0gZWxlbWVudCksIDEpO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB0aGlzLmxpc3RlbmVyc1tuYW1lc3BhY2VdLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgZXZlbnQ6IHR5cGUsXHJcbiAgICAgICAgICAgICAgICBlbGVtZW50OiBlbGVtZW50LFxyXG4gICAgICAgICAgICAgICAgY2FuY2VsOiBuZXdDYW5jZWxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXdDYW5jZWw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBjYW5jZWw7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGdW5jdGlvbmFsaXR5IGZvciB0aGlzIG1ldGhvZCBtYXRjaGVzIHtAbGluayBtb2R1bGU6RE9NVG9vbHMub259IGJ1dCBhdXRvbWF0aWNhbGx5IGNhbmNlbHMgaXRzZWxmXHJcbiAgICAgKiBhbmQgcmVtb3ZlcyB0aGUgbGlzdGVuZXIgdXBvbiB0aGUgZmlyc3QgZmlyaW5nIG9mIHRoZSBkZXNpcmVkIGV2ZW50LlxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge0VsZW1lbnR9IGVsZW1lbnQgLSBFbGVtZW50IHRvIGFkZCBsaXN0ZW5lciB0b1xyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGV2ZW50IC0gRXZlbnQgdG8gbGlzdGVuIHRvIHdpdGggb3B0aW9uIG5hbWVzcGFjZSAoZS5nLiBcImV2ZW50Lm5hbWVzcGFjZVwiKVxyXG4gICAgICogQHBhcmFtIHsoc3RyaW5nfGNhbGxhYmxlKX0gZGVsZWdhdGUgLSBTZWxlY3RvciB0byBydW4gb24gZWxlbWVudCB0byBsaXN0ZW4gdG9cclxuICAgICAqIEBwYXJhbSB7Y2FsbGFibGV9IFtjYWxsYmFja10gLSBGdW5jdGlvbiB0byBmaXJlIG9uIGV2ZW50XHJcbiAgICAgKiBAcmV0dXJucyB7bW9kdWxlOkRPTVRvb2xzfkNhbmNlbExpc3RlbmVyfSAtIEEgZnVuY3Rpb24gdGhhdCB3aWxsIHVuZG8gdGhlIGxpc3RlbmVyXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBvbmNlKGVsZW1lbnQsIGV2ZW50LCBkZWxlZ2F0ZSwgY2FsbGJhY2spIHtcclxuICAgICAgICBjb25zdCBbdHlwZSwgbmFtZXNwYWNlXSA9IGV2ZW50LnNwbGl0KFwiLlwiKTtcclxuICAgICAgICBjb25zdCBoYXNEZWxlZ2F0ZSA9IGRlbGVnYXRlICYmIGNhbGxiYWNrO1xyXG4gICAgICAgIGlmICghY2FsbGJhY2spIGNhbGxiYWNrID0gZGVsZWdhdGU7XHJcbiAgICAgICAgY29uc3QgZXZlbnRGdW5jID0gIWhhc0RlbGVnYXRlID8gZnVuY3Rpb24oZXYpIHtcclxuICAgICAgICAgICAgY2FsbGJhY2soZXYpO1xyXG4gICAgICAgICAgICBlbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZSwgZXZlbnRGdW5jKTtcclxuICAgICAgICB9IDogZnVuY3Rpb24oZXYpIHtcclxuICAgICAgICAgICAgaWYgKCFldi50YXJnZXQubWF0Y2hlcyhkZWxlZ2F0ZSkpIHJldHVybjtcclxuICAgICAgICAgICAgY2FsbGJhY2soZXYpO1xyXG4gICAgICAgICAgICBlbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZSwgZXZlbnRGdW5jKTtcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIodHlwZSwgZXZlbnRGdW5jKTtcclxuICAgICAgICBjb25zdCBjYW5jZWwgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgIGVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlLCBldmVudEZ1bmMpO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgaWYgKG5hbWVzcGFjZSkge1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMubGlzdGVuZXJzW25hbWVzcGFjZV0pIHRoaXMubGlzdGVuZXJzW25hbWVzcGFjZV0gPSBbXTtcclxuICAgICAgICAgICAgY29uc3QgbmV3Q2FuY2VsID0gKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY2FuY2VsKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxpc3RlbmVyc1tuYW1lc3BhY2VdLnNwbGljZSh0aGlzLmxpc3RlbmVyc1tuYW1lc3BhY2VdLmZpbmRJbmRleChsID0+IGwuZXZlbnQgPT0gdHlwZSAmJiBsLmVsZW1lbnQgPT0gZWxlbWVudCksIDEpO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB0aGlzLmxpc3RlbmVyc1tuYW1lc3BhY2VdLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgZXZlbnQ6IHR5cGUsXHJcbiAgICAgICAgICAgICAgICBlbGVtZW50OiBlbGVtZW50LFxyXG4gICAgICAgICAgICAgICAgY2FuY2VsOiBuZXdDYW5jZWxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXdDYW5jZWw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBjYW5jZWw7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIF9fb2ZmQWxsKGV2ZW50LCBlbGVtZW50KSB7XHJcbiAgICAgICAgY29uc3QgW3R5cGUsIG5hbWVzcGFjZV0gPSBldmVudC5zcGxpdChcIi5cIik7XHJcbiAgICAgICAgbGV0IG1hdGNoRmlsdGVyID0gbGlzdGVuZXIgPT4gbGlzdGVuZXIuZXZlbnQgPT0gdHlwZSwgZGVmYXVsdEZpbHRlciA9IF8gPT4gXztcclxuICAgICAgICBpZiAoZWxlbWVudCkgbWF0Y2hGaWx0ZXIgPSBsID0+IGwuZXZlbnQgPT0gdHlwZSAmJiBsLmVsZW1lbnQgPT0gZWxlbWVudCwgZGVmYXVsdEZpbHRlciA9IGwgPT4gbC5lbGVtZW50ID09IGVsZW1lbnQ7XHJcbiAgICAgICAgY29uc3QgbGlzdGVuZXJzID0gdGhpcy5saXN0ZW5lcnNbbmFtZXNwYWNlXSB8fCBbXTtcclxuICAgICAgICBjb25zdCBsaXN0ID0gdHlwZSA/IGxpc3RlbmVycy5maWx0ZXIobWF0Y2hGaWx0ZXIpIDogbGlzdGVuZXJzLmZpbHRlcihkZWZhdWx0RmlsdGVyKTtcclxuICAgICAgICBmb3IgKGxldCBjID0gMDsgYyA8IGxpc3QubGVuZ3RoOyBjKyspIGxpc3RbY10uY2FuY2VsKCk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIC8qKlxyXG4gICAgICogVGhpcyBpcyBzaW1pbGFyIHRvIGpRdWVyeSdzIGBvZmZgIGZ1bmN0aW9uIGFuZCBjYW4gKmhvcGVmdWxseSogYmUgdXNlZCBpbiB0aGUgc2FtZSB3YXkuXHJcbiAgICAgKiBcclxuICAgICAqIFJhdGhlciB0aGFuIGF0dGVtcHQgdG8gZXhwbGFpbiwgSSdsbCBzaG93IHNvbWUgZXhhbXBsZSB1c2FnZXMuXHJcbiAgICAgKiBcclxuICAgICAqIFRoZSBmb2xsb3dpbmcgd2lsbCByZW1vdmUgYSBjbGljayBsaXN0ZW5lciBjYWxsZWQgYG9uQ2xpY2tgIChpbiB0aGUgYG15UGx1Z2luYCBuYW1lc3BhY2UpIGZyb20gYGVsZW1lbnRgLlxyXG4gICAgICogYERPTVRvb2xzLm9mZihlbGVtZW50LCBcImNsaWNrLm15UGx1Z2luXCIsIG9uQ2xpY2spO2BcclxuICAgICAqIFxyXG4gICAgICogVGhlIGZvbGxvd2luZyB3aWxsIHJlbW92ZSBhIGNsaWNrIGxpc3RlbmVyIGNhbGxlZCBgb25DbGlja2AgKGluIHRoZSBgbXlQbHVnaW5gIG5hbWVzcGFjZSkgZnJvbSBgZWxlbWVudGAgdGhhdCBvbmx5IGZpcmVkIHdoZW4gdGhlIHRhcmdldCBpcyBhIGAuYmxvY2tgIGVsZW1lbnQuXHJcbiAgICAgKiBgRE9NVG9vbHMub2ZmKGVsZW1lbnQsIFwiY2xpY2subXlQbHVnaW5cIiwgXCIuYmxvY2tcIiwgb25DbGljayk7YFxyXG4gICAgICogXHJcbiAgICAgKiBUaGUgZm9sbG93aW5nIHdpbGwgcmVtb3ZlIGEgY2xpY2sgbGlzdGVuZXIgKHdpdGhvdXQgbmFtZXNwYWNlKSBmcm9tIGBlbGVtZW50YC5cclxuICAgICAqIGBET01Ub29scy5vZmYoZWxlbWVudCwgXCJjbGlja1wiLCBvbkNsaWNrKTtgXHJcbiAgICAgKiBcclxuICAgICAqIFRoZSBmb2xsb3dpbmcgd2lsbCByZW1vdmUgYWxsIGxpc3RlbmVycyBpbiBuYW1lc3BhY2UgYG15UGx1Z2luYCBmcm9tIGBlbGVtZW50YC5cclxuICAgICAqIGBET01Ub29scy5vZmYoZWxlbWVudCwgXCIubXlQbHVnaW5cIik7YFxyXG4gICAgICogXHJcbiAgICAgKiBUaGUgZm9sbG93aW5nIHdpbGwgcmVtb3ZlIGFsbCBjbGljayBsaXN0ZW5lcnMgaW4gbmFtZXNwYWNlIGBteVBsdWdpbmAgZnJvbSAqYWxsIGVsZW1lbnRzKi5cclxuICAgICAqIGBET01Ub29scy5vZmYoXCJjbGljay5teVBsdWdpblwiKTtgXHJcbiAgICAgKiBcclxuICAgICAqIFRoZSBmb2xsb3dpbmcgd2lsbCByZW1vdmUgYWxsIGxpc3RlbmVycyBpbiBuYW1lc3BhY2UgYG15UGx1Z2luYCBmcm9tICphbGwgZWxlbWVudHMqLlxyXG4gICAgICogYERPTVRvb2xzLm9mZihcIi5teVBsdWdpblwiKTtgXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7KEVsZW1lbnR8c3RyaW5nKX0gZWxlbWVudCAtIEVsZW1lbnQgdG8gcmVtb3ZlIGxpc3RlbmVyIGZyb21cclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbZXZlbnRdIC0gRXZlbnQgdG8gbGlzdGVuIHRvIHdpdGggb3B0aW9uIG5hbWVzcGFjZSAoZS5nLiBcImV2ZW50Lm5hbWVzcGFjZVwiKVxyXG4gICAgICogQHBhcmFtIHsoc3RyaW5nfGNhbGxhYmxlKX0gW2RlbGVnYXRlXSAtIFNlbGVjdG9yIHRvIHJ1biBvbiBlbGVtZW50IHRvIGxpc3RlbiB0b1xyXG4gICAgICogQHBhcmFtIHtjYWxsYWJsZX0gW2NhbGxiYWNrXSAtIEZ1bmN0aW9uIHRvIGZpcmUgb24gZXZlbnRcclxuICAgICAqIEByZXR1cm5zIHtFbGVtZW50fSAtIFRoZSBvcmlnaW5hbCBlbGVtZW50IHRvIGFsbG93IGZvciBjaGFpbmluZ1xyXG4gICAgICovXHJcbiAgICBzdGF0aWMgb2ZmKGVsZW1lbnQsIGV2ZW50LCBkZWxlZ2F0ZSwgY2FsbGJhY2spIHtcclxuICAgICAgICBpZiAodHlwZW9mKGVsZW1lbnQpID09IFwic3RyaW5nXCIpIHJldHVybiB0aGlzLl9fb2ZmQWxsKGVsZW1lbnQpO1xyXG4gICAgICAgIGNvbnN0IFt0eXBlLCBuYW1lc3BhY2VdID0gZXZlbnQuc3BsaXQoXCIuXCIpO1xyXG4gICAgICAgIGlmIChuYW1lc3BhY2UpIHJldHVybiB0aGlzLl9fb2ZmQWxsKGV2ZW50LCBlbGVtZW50KTtcclxuXHJcbiAgICAgICAgY29uc3QgaGFzRGVsZWdhdGUgPSBkZWxlZ2F0ZSAmJiBjYWxsYmFjaztcclxuICAgICAgICBpZiAoIWNhbGxiYWNrKSBjYWxsYmFjayA9IGRlbGVnYXRlO1xyXG4gICAgICAgIGNvbnN0IGV2ZW50RnVuYyA9ICFoYXNEZWxlZ2F0ZSA/IGNhbGxiYWNrIDogZnVuY3Rpb24oZXYpIHtcclxuICAgICAgICAgICAgaWYgKGV2LnRhcmdldC5tYXRjaGVzKGRlbGVnYXRlKSkge1xyXG4gICAgICAgICAgICAgICAgY2FsbGJhY2soZXYpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKHR5cGUsIGV2ZW50RnVuYyk7XHJcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBZGRzIGEgbGlzdGVuZXIgZm9yIHdoZW4gdGhlIG5vZGUgaXMgYWRkZWQvcmVtb3ZlZCBmcm9tIHRoZSBkb2N1bWVudCBib2R5LlxyXG4gICAgICogVGhlIGxpc3RlbmVyIGlzIGF1dG9tYXRpY2FsbHkgcmVtb3ZlZCB1cG9uIGZpcmluZy5cclxuICAgICAqIEBwYXJhbSB7SFRNTEVsZW1lbnR9IG5vZGUgLSBub2RlIHRvIHdhaXQgZm9yXHJcbiAgICAgKiBAcGFyYW0ge2NhbGxhYmxlfSBjYWxsYmFjayAtIGZ1bmN0aW9uIHRvIGJlIHBlcmZvcm1lZCBvbiBldmVudFxyXG4gICAgICogQHBhcmFtIHtib29sZWFufSBvbk1vdW50IC0gZGV0ZXJtaW5lcyBpZiBpdCBzaG91bGQgZmlyZSBvbiBNb3VudCBvciBvbiBVbm1vdW50XHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBvbk1vdW50Q2hhbmdlKG5vZGUsIGNhbGxiYWNrLCBvbk1vdW50ID0gdHJ1ZSkge1xyXG4gICAgICAgIGNvbnN0IHdyYXBwZWRDYWxsYmFjayA9ICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5vYnNlcnZlci51bnN1YnNjcmliZSh3cmFwcGVkQ2FsbGJhY2spO1xyXG4gICAgICAgICAgICBjYWxsYmFjaygpO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy5vYnNlcnZlci5zdWJzY3JpYmUod3JhcHBlZENhbGxiYWNrLCBtdXRhdGlvbiA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IG5vZGVzID0gQXJyYXkuZnJvbShvbk1vdW50ID8gbXV0YXRpb24uYWRkZWROb2RlcyA6IG11dGF0aW9uLnJlbW92ZWROb2Rlcyk7XHJcbiAgICAgICAgICAgIGNvbnN0IGRpcmVjdE1hdGNoID0gbm9kZXMuaW5kZXhPZihub2RlKSA+IC0xO1xyXG4gICAgICAgICAgICBjb25zdCBwYXJlbnRNYXRjaCA9IG5vZGVzLnNvbWUocGFyZW50ID0+IHBhcmVudC5jb250YWlucyhub2RlKSk7XHJcbiAgICAgICAgICAgIHJldHVybiBkaXJlY3RNYXRjaCB8fCBwYXJlbnRNYXRjaDtcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gbm9kZTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogU2hvcnRoYW5kIGZvciB7QGxpbmsgbW9kdWxlOkRPTVRvb2xzLm9uTW91bnRDaGFuZ2V9IHdpdGggdGhpcmQgcGFyYW1ldGVyIGB0cnVlYCAqL1xyXG4gICAgc3RhdGljIG9uTW91bnQobm9kZSwgY2FsbGJhY2spIHsgcmV0dXJuIHRoaXMub25Nb3VudENoYW5nZShub2RlLCBjYWxsYmFjayk7IH1cclxuXHJcbiAgICAvKiogU2hvcnRoYW5kIGZvciB7QGxpbmsgbW9kdWxlOkRPTVRvb2xzLm9uTW91bnRDaGFuZ2V9IHdpdGggdGhpcmQgcGFyYW1ldGVyIGBmYWxzZWAgKi9cclxuICAgIHN0YXRpYyBvblVubW91bnQobm9kZSwgY2FsbGJhY2spIHsgcmV0dXJuIHRoaXMub25Nb3VudENoYW5nZShub2RlLCBjYWxsYmFjaywgZmFsc2UpOyB9XHJcblxyXG4gICAgLyoqIEFsaWFzIGZvciB7QGxpbmsgbW9kdWxlOkRPTVRvb2xzLm9uTW91bnR9ICovXHJcbiAgICBzdGF0aWMgb25BZGRlZChub2RlLCBjYWxsYmFjaykgeyByZXR1cm4gdGhpcy5vbk1vdW50KG5vZGUsIGNhbGxiYWNrKTsgfVxyXG5cclxuICAgIC8qKiBBbGlhcyBmb3Ige0BsaW5rIG1vZHVsZTpET01Ub29scy5vblVubW91bnR9ICovXHJcbiAgICBzdGF0aWMgb25SZW1vdmVkKG5vZGUsIGNhbGxiYWNrKSB7IHJldHVybiB0aGlzLm9uVW5tb3VudChub2RlLCBjYWxsYmFjaywgZmFsc2UpOyB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBIZWxwZXIgZnVuY3Rpb24gd2hpY2ggY29tYmluZXMgbXVsdGlwbGUgZWxlbWVudHMgaW50byBvbmUgcGFyZW50IGVsZW1lbnRcclxuICAgICAqIEBwYXJhbSB7QXJyYXk8SFRNTEVsZW1lbnQ+fSBlbGVtZW50cyAtIGFycmF5IG9mIGVsZW1lbnRzIHRvIHB1dCBpbnRvIGEgc2luZ2xlIHBhcmVudFxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgd3JhcChlbGVtZW50cykge1xyXG4gICAgICAgIGNvbnN0IGRvbVdyYXBwZXIgPSB0aGlzLnBhcnNlSFRNTChgPGRpdiBjbGFzcz1cImRvbS13cmFwcGVyXCI+PC9kaXY+YCk7XHJcbiAgICAgICAgZm9yIChsZXQgZSA9IDA7IGUgPCBlbGVtZW50cy5sZW5ndGg7IGUrKykgZG9tV3JhcHBlci5hcHBlbmRDaGlsZChlbGVtZW50c1tlXSk7XHJcbiAgICAgICAgcmV0dXJuIGRvbVdyYXBwZXI7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXNvbHZlcyB0aGUgbm9kZSB0byBhbiBIVE1MRWxlbWVudC4gVGhpcyBpcyBtYWlubHkgdXNlZCBieSBsaWJyYXJ5IG1vZHVsZXMuXHJcbiAgICAgKiBAcGFyYW0geyhqUXVlcnl8RWxlbWVudCl9IG5vZGUgLSBub2RlIHRvIHJlc29sdmVcclxuICAgICAqL1xyXG4gICAgc3RhdGljIHJlc29sdmVFbGVtZW50KG5vZGUpIHtcclxuICAgICAgICBpZiAoIShub2RlIGluc3RhbmNlb2YgalF1ZXJ5KSAmJiAhKG5vZGUgaW5zdGFuY2VvZiBFbGVtZW50KSkgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgICAgICByZXR1cm4gbm9kZSBpbnN0YW5jZW9mIGpRdWVyeSA/IG5vZGVbMF0gOiBub2RlO1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/domtools.js\n"); /***/ }), @@ -479,7 +478,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\nconst EventEmitter = __webpack_require__(/*! events */ \"events\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class BDEvents extends EventEmitter {\n constructor() {\n super();\n this.setMaxListeners(20);\n }\n\n dispatch(eventName, ...args) {\n this.emit(eventName, ...args);\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL21vZHVsZXMvZW1pdHRlci5qcz9lOTNhIl0sIm5hbWVzIjpbIkV2ZW50RW1pdHRlciIsInJlcXVpcmUiLCJCREV2ZW50cyIsImNvbnN0cnVjdG9yIiwic2V0TWF4TGlzdGVuZXJzIiwiZGlzcGF0Y2giLCJldmVudE5hbWUiLCJhcmdzIiwiZW1pdCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQSxNQUFNQSxZQUFZLEdBQUdDLG1CQUFPLENBQUMsc0JBQUQsQ0FBNUI7O0FBQ2UsbUVBQUksTUFBTUMsUUFBTixTQUF1QkYsWUFBdkIsQ0FBb0M7QUFDbkRHLGFBQVcsR0FBRztBQUNWO0FBQ0EsU0FBS0MsZUFBTCxDQUFxQixFQUFyQjtBQUNIOztBQUNEQyxVQUFRLENBQUNDLFNBQUQsRUFBWSxHQUFHQyxJQUFmLEVBQXFCO0FBQ3pCLFNBQUtDLElBQUwsQ0FBVUYsU0FBVixFQUFxQixHQUFHQyxJQUF4QjtBQUNIOztBQVBrRCxDQUF4QyxFQUFmIiwiZmlsZSI6Ii4vc3JjL21vZHVsZXMvZW1pdHRlci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IEV2ZW50RW1pdHRlciA9IHJlcXVpcmUoXCJldmVudHNcIik7XHJcbmV4cG9ydCBkZWZhdWx0IG5ldyBjbGFzcyBCREV2ZW50cyBleHRlbmRzIEV2ZW50RW1pdHRlciB7XHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIHRoaXMuc2V0TWF4TGlzdGVuZXJzKDIwKTtcclxuICAgIH1cclxuICAgIGRpc3BhdGNoKGV2ZW50TmFtZSwgLi4uYXJncykge1xyXG4gICAgICAgIHRoaXMuZW1pdChldmVudE5hbWUsIC4uLmFyZ3MpO1xyXG4gICAgfVxyXG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/emitter.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\nconst EventEmitter = __webpack_require__(/*! events */ \"events\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class BDEvents extends EventEmitter {\n constructor() {\n super();\n this.setMaxListeners(20);\n }\n\n dispatch(eventName, ...args) {\n this.emit(eventName, ...args);\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9lbWl0dGVyLmpzP2U5M2EiXSwibmFtZXMiOlsiRXZlbnRFbWl0dGVyIiwicmVxdWlyZSIsIkJERXZlbnRzIiwiY29uc3RydWN0b3IiLCJzZXRNYXhMaXN0ZW5lcnMiLCJkaXNwYXRjaCIsImV2ZW50TmFtZSIsImFyZ3MiLCJlbWl0Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBLE1BQU1BLFlBQVksR0FBR0MsbUJBQU8sQ0FBQyxzQkFBRCxDQUE1Qjs7QUFDZSxtRUFBSSxNQUFNQyxRQUFOLFNBQXVCRixZQUF2QixDQUFvQztBQUNuREcsYUFBVyxHQUFHO0FBQ1Y7QUFDQSxTQUFLQyxlQUFMLENBQXFCLEVBQXJCO0FBQ0g7O0FBQ0RDLFVBQVEsQ0FBQ0MsU0FBRCxFQUFZLEdBQUdDLElBQWYsRUFBcUI7QUFDekIsU0FBS0MsSUFBTCxDQUFVRixTQUFWLEVBQXFCLEdBQUdDLElBQXhCO0FBQ0g7O0FBUGtELENBQXhDLEVBQWYiLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9lbWl0dGVyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgRXZlbnRFbWl0dGVyID0gcmVxdWlyZShcImV2ZW50c1wiKTtcclxuZXhwb3J0IGRlZmF1bHQgbmV3IGNsYXNzIEJERXZlbnRzIGV4dGVuZHMgRXZlbnRFbWl0dGVyIHtcclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgdGhpcy5zZXRNYXhMaXN0ZW5lcnMoMjApO1xyXG4gICAgfVxyXG4gICAgZGlzcGF0Y2goZXZlbnROYW1lLCAuLi5hcmdzKSB7XHJcbiAgICAgICAgdGhpcy5lbWl0KGV2ZW50TmFtZSwgLi4uYXJncyk7XHJcbiAgICB9XHJcbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/emitter.js\n"); /***/ }), @@ -491,7 +490,7 @@ eval("__webpack_require__.r(__webpack_exports__);\nconst EventEmitter = __webpac /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _data_strings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../data/strings */ \"./src/data/strings.js\");\n/* harmony import */ var _discordmodules__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./discordmodules */ \"./src/modules/discordmodules.js\");\n/* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utilities */ \"./src/modules/utilities.js\");\n/* harmony import */ var _emitter__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./emitter */ \"./src/modules/emitter.js\");\n/* harmony import */ var _datastore__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./datastore */ \"./src/modules/datastore.js\");\n\n\n\n\n\n\nconst request = __webpack_require__(/*! request */ \"request\");\n\nconst {\n Dispatcher,\n DiscordConstants,\n UserSettingsStore\n} = _discordmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class LocaleManager {\n get discordLocale() {\n return UserSettingsStore.locale.split(\"-\")[0];\n }\n\n get defaultLocale() {\n return \"en\";\n }\n\n constructor() {\n this.locale = \"\";\n this.strings = {};\n }\n\n async initialize() {\n await this.setLocale(this.discordLocale);\n Dispatcher.subscribe(DiscordConstants.ActionTypes.USER_SETTINGS_UPDATE, ({\n settings\n }) => {\n const newLocale = settings.locale;\n if (newLocale && newLocale != this.locale) this.setLocale(newLocale.split(\"-\")[0]);\n });\n }\n\n async setLocale(newLocale) {\n let newStrings;\n\n if (newLocale != this.defaultLocale) {\n newStrings = await this.getLocaleStrings(newLocale);\n if (!newStrings) return this.setLocale(this.defaultLocale);\n } else {\n newStrings = _data_strings__WEBPACK_IMPORTED_MODULE_0__[\"default\"];\n }\n\n this.locale = newLocale;\n _utilities__WEBPACK_IMPORTED_MODULE_2__[\"default\"].extend(this.strings, newStrings);\n _emitter__WEBPACK_IMPORTED_MODULE_3__[\"default\"].emit(\"strings-updated\");\n }\n\n async getLocaleStrings(locale) {\n const hash = _datastore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].getCacheHash(\"locales\", locale);\n if (!hash) return await this.downloadLocale(locale);\n const invalid = await this.downloadLocale(locale, hash);\n if (!invalid) return _datastore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].getLocale(locale);\n return invalid;\n }\n\n downloadLocale(locale, hash = \"\") {\n return new Promise(resolve => {\n const options = {\n url: _utilities__WEBPACK_IMPORTED_MODULE_2__[\"default\"].repoUrl(`assets/locales/${locale}.json`),\n timeout: 2000,\n json: true\n };\n if (hash) options.headers = {\n \"If-None-Match\": hash\n };\n request.get(options, (err, resp, newStrings) => {\n if (err || resp.statusCode !== 200) return resolve(null);\n _datastore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].saveLocale(locale, newStrings);\n _datastore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].setCacheHash(\"locales\", locale, resp.headers.etag);\n resolve(newStrings);\n });\n });\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL21vZHVsZXMvbG9jYWxlbWFuYWdlci5qcz8yMzlkIl0sIm5hbWVzIjpbInJlcXVlc3QiLCJyZXF1aXJlIiwiRGlzcGF0Y2hlciIsIkRpc2NvcmRDb25zdGFudHMiLCJVc2VyU2V0dGluZ3NTdG9yZSIsIkRpc2NvcmRNb2R1bGVzIiwiTG9jYWxlTWFuYWdlciIsImRpc2NvcmRMb2NhbGUiLCJsb2NhbGUiLCJzcGxpdCIsImRlZmF1bHRMb2NhbGUiLCJjb25zdHJ1Y3RvciIsInN0cmluZ3MiLCJpbml0aWFsaXplIiwic2V0TG9jYWxlIiwic3Vic2NyaWJlIiwiQWN0aW9uVHlwZXMiLCJVU0VSX1NFVFRJTkdTX1VQREFURSIsInNldHRpbmdzIiwibmV3TG9jYWxlIiwibmV3U3RyaW5ncyIsImdldExvY2FsZVN0cmluZ3MiLCJEZWZhdWx0U3RyaW5ncyIsIlV0aWxpdGllcyIsImV4dGVuZCIsIkV2ZW50cyIsImVtaXQiLCJoYXNoIiwiRGF0YVN0b3JlIiwiZ2V0Q2FjaGVIYXNoIiwiZG93bmxvYWRMb2NhbGUiLCJpbnZhbGlkIiwiZ2V0TG9jYWxlIiwiUHJvbWlzZSIsInJlc29sdmUiLCJvcHRpb25zIiwidXJsIiwicmVwb1VybCIsInRpbWVvdXQiLCJqc29uIiwiaGVhZGVycyIsImdldCIsImVyciIsInJlc3AiLCJzdGF0dXNDb2RlIiwic2F2ZUxvY2FsZSIsInNldENhY2hlSGFzaCIsImV0YWciXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBQ0EsTUFBTUEsT0FBTyxHQUFHQyxtQkFBTyxDQUFDLHdCQUFELENBQXZCOztBQUVBLE1BQU07QUFBQ0MsWUFBRDtBQUFhQyxrQkFBYjtBQUErQkM7QUFBL0IsSUFBb0RDLHVEQUExRDtBQUVlLG1FQUFJLE1BQU1DLGFBQU4sQ0FBb0I7QUFDdEMsTUFBSUMsYUFBSixHQUFvQjtBQUFDLFdBQU9ILGlC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LElBQUksQ0FBQ0gsT0FBTCxDQUFhTyxJQUF2RDtBQUNBYixlQUFPLENBQUNkLFVBQUQsQ0FBUDtBQUNBLE9BTEQ7QUFNQSxLQWJNLENBQVA7QUFjQTs7QUF0RHFDLENBQXhCLEVBQWYiLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9sb2NhbGVtYW5hZ2VyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERlZmF1bHRTdHJpbmdzIGZyb20gXCIuLi9kYXRhL3N0cmluZ3NcIjtcclxuaW1wb3J0IERpc2NvcmRNb2R1bGVzIGZyb20gXCIuL2Rpc2NvcmRtb2R1bGVzXCI7XHJcbmltcG9ydCBVdGlsaXRpZXMgZnJvbSBcIi4vdXRpbGl0aWVzXCI7XHJcbmltcG9ydCBFdmVudHMgZnJvbSBcIi4vZW1pdHRlclwiO1xyXG5pbXBvcnQgRGF0YVN0b3JlIGZyb20gXCIuL2RhdGFzdG9yZVwiO1xyXG5jb25zdCByZXF1ZXN0ID0gcmVxdWlyZShcInJlcXVlc3RcIik7XHJcblxyXG5jb25zdCB7RGlzcGF0Y2hlciwgRGlzY29yZENvbnN0YW50cywgVXNlclNldHRpbmdzU3RvcmV9ID0gRGlzY29yZE1vZHVsZXM7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBuZXcgY2xhc3MgTG9jYWxlTWFuYWdlciB7XHJcblx0Z2V0IGRpc2NvcmRMb2NhbGUoKSB7cmV0dXJuIFVzZXJTZXR0aW5nc1N0b3JlLmxvY2FsZS5zcGxpdChcIi1cIilbMF07fVxyXG5cdGdldCBkZWZhdWx0TG9jYWxlKCkge3JldHVybiBcImVuXCI7fVxyXG5cclxuXHRjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICB0aGlzLmxvY2FsZSA9IFwiXCI7XHJcbiAgICAgICAgdGhpcy5zdHJpbmdzID0ge307XHJcblx0fVxyXG5cclxuXHRhc3luYyBpbml0aWFsaXplKCkge1xyXG4gICAgICAgIGF3YWl0IHRoaXMuc2V0TG9jYWxlKHRoaXMuZGlzY29yZExvY2FsZSk7XHJcbiAgICAgICAgRGlzcGF0Y2hlci5zdWJzY3JpYmUoRGlzY29yZENvbnN0YW50cy5BY3Rpb25UeXBlcy5VU0VSX1NFVFRJTkdTX1VQREFURSwgKHtzZXR0aW5nc30pID0+IHtcclxuICAgICAgICAgICAgY29uc3QgbmV3TG9jYWxlID0gc2V0dGluZ3MubG9jYWxlO1xyXG4gICAgICAgICAgICBpZiAobmV3TG9jYWxlICYmIG5ld0xvY2FsZSAhPSB0aGlzLmxvY2FsZSkgdGhpcy5zZXRMb2NhbGUobmV3TG9jYWxlLnNwbGl0KFwiLVwiKVswXSk7XHJcbiAgICAgICAgfSk7XHJcblx0fVxyXG5cclxuXHRhc3luYyBzZXRMb2NhbGUobmV3TG9jYWxlKSB7XHJcbiAgICAgICAgbGV0IG5ld1N0cmluZ3M7XHJcbiAgICAgICAgaWYgKG5ld0xvY2FsZSAhPSB0aGlzLmRlZmF1bHRMb2NhbGUpIHtcclxuXHRcdFx0bmV3U3RyaW5ncyA9IGF3YWl0IHRoaXMuZ2V0TG9jYWxlU3RyaW5ncyhuZXdMb2NhbGUpO1xyXG4gICAgICAgICAgICBpZiAoIW5ld1N0cmluZ3MpIHJldHVybiB0aGlzLnNldExvY2FsZSh0aGlzLmRlZmF1bHRMb2NhbGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgbmV3U3RyaW5ncyA9IERlZmF1bHRTdHJpbmdzO1xyXG4gICAgICAgIH1cclxuXHRcdHRoaXMubG9jYWxlID0gbmV3TG9jYWxlO1xyXG5cdFx0VXRpbGl0aWVzLmV4dGVuZCh0aGlzLnN0cmluZ3MsIG5ld1N0cmluZ3MpO1xyXG5cdFx0RXZlbnRzLmVtaXQoXCJzdHJpbmdzLXVwZGF0ZWRcIik7XHJcblx0fVxyXG5cclxuXHRhc3luYyBnZXRMb2NhbGVTdHJpbmdzKGxvY2FsZSkge1xyXG5cdFx0Y29uc3QgaGFzaCA9IERhdGFTdG9yZS5nZXRDYWNoZUhhc2goXCJsb2NhbGVzXCIsIGxvY2FsZSk7XHJcblx0XHRpZiAoIWhhc2gpIHJldHVybiBhd2FpdCB0aGlzLmRvd25sb2FkTG9jYWxlKGxvY2FsZSk7XHJcblx0XHRjb25zdCBpbnZhbGlkID0gYXdhaXQgdGhpcy5kb3dubG9hZExvY2FsZShsb2NhbGUsIGhhc2gpO1xyXG5cdFx0aWYgKCFpbnZhbGlkKSByZXR1cm4gRGF0YVN0b3JlLmdldExvY2FsZShsb2NhbGUpO1xyXG5cdFx0cmV0dXJuIGludmFsaWQ7XHJcblx0fVxyXG5cclxuXHRkb3dubG9hZExvY2FsZShsb2NhbGUsIGhhc2ggPSBcIlwiKSB7XHJcblx0XHRyZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XHJcblx0XHRcdGNvbnN0IG9wdGlvbnMgPSB7XHJcblx0XHRcdFx0dXJsOiBVdGlsaXRpZXMucmVwb1VybChgYXNzZXRzL2xvY2FsZXMvJHtsb2NhbGV9Lmpzb25gKSxcclxuXHRcdFx0XHR0aW1lb3V0OiAyMDAwLFxyXG5cdFx0XHRcdGpzb246IHRydWVcclxuXHRcdFx0fTtcclxuXHRcdFx0aWYgKGhhc2gpIG9wdGlvbnMuaGVhZGVycyA9IHtcIklmLU5vbmUtTWF0Y2hcIjogaGFzaH07XHJcblx0XHRcdHJlcXVlc3QuZ2V0KG9wdGlvbnMsIChlcnIsIHJlc3AsIG5ld1N0cmluZ3MpID0+IHtcclxuXHRcdFx0XHRpZiAoZXJyIHx8IHJlc3Auc3RhdHVzQ29kZSAhPT0gMjAwKSByZXR1cm4gcmVzb2x2ZShudWxsKTtcclxuXHRcdFx0XHREYXRhU3RvcmUuc2F2ZUxvY2FsZShsb2NhbGUsIG5ld1N0cmluZ3MpO1xyXG5cdFx0XHRcdERhdGFTdG9yZS5zZXRDYWNoZUhhc2goXCJsb2NhbGVzXCIsIGxvY2FsZSwgcmVzcC5oZWFkZXJzLmV0YWcpO1xyXG5cdFx0XHRcdHJlc29sdmUobmV3U3RyaW5ncyk7XHJcblx0XHRcdH0pO1xyXG5cdFx0fSk7XHJcblx0fVxyXG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/localemanager.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _data_strings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../data/strings */ \"./src/data/strings.js\");\n/* harmony import */ var _discordmodules__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./discordmodules */ \"./src/modules/discordmodules.js\");\n/* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utilities */ \"./src/modules/utilities.js\");\n/* harmony import */ var _emitter__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./emitter */ \"./src/modules/emitter.js\");\n/* harmony import */ var _datastore__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./datastore */ \"./src/modules/datastore.js\");\n\n\n\n\n\n\nconst request = __webpack_require__(/*! request */ \"request\");\n\nconst {\n Dispatcher,\n DiscordConstants,\n UserSettingsStore\n} = _discordmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class LocaleManager {\n get discordLocale() {\n return UserSettingsStore.locale.split(\"-\")[0];\n }\n\n get defaultLocale() {\n return \"en\";\n }\n\n constructor() {\n this.locale = \"\";\n this.strings = {};\n }\n\n async initialize() {\n await this.setLocale(this.discordLocale);\n Dispatcher.subscribe(DiscordConstants.ActionTypes.USER_SETTINGS_UPDATE, ({\n settings\n }) => {\n const newLocale = settings.locale;\n if (newLocale && newLocale != this.locale) this.setLocale(newLocale.split(\"-\")[0]);\n });\n }\n\n async setLocale(newLocale) {\n let newStrings;\n\n if (newLocale != this.defaultLocale) {\n newStrings = await this.getLocaleStrings(newLocale);\n if (!newStrings) return this.setLocale(this.defaultLocale);\n } else {\n newStrings = _data_strings__WEBPACK_IMPORTED_MODULE_0__[\"default\"];\n }\n\n this.locale = newLocale;\n _utilities__WEBPACK_IMPORTED_MODULE_2__[\"default\"].extend(this.strings, newStrings);\n _emitter__WEBPACK_IMPORTED_MODULE_3__[\"default\"].emit(\"strings-updated\");\n }\n\n async getLocaleStrings(locale) {\n const hash = _datastore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].getCacheHash(\"locales\", locale);\n if (!hash) return await this.downloadLocale(locale);\n const invalid = await this.downloadLocale(locale, hash);\n if (!invalid) return _datastore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].getLocale(locale);\n return invalid;\n }\n\n downloadLocale(locale, hash = \"\") {\n return new Promise(resolve => {\n const options = {\n url: _utilities__WEBPACK_IMPORTED_MODULE_2__[\"default\"].repoUrl(`assets/locales/${locale}.json`),\n timeout: 2000,\n json: true\n };\n if (hash) options.headers = {\n \"If-None-Match\": hash\n };\n request.get(options, (err, resp, newStrings) => {\n if (err || resp.statusCode !== 200) return resolve(null);\n _datastore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].saveLocale(locale, newStrings);\n _datastore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].setCacheHash(\"locales\", locale, resp.headers.etag);\n resolve(newStrings);\n });\n });\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9sb2NhbGVtYW5hZ2VyLmpzPzIzOWQiXSwibmFtZXMiOlsicmVxdWVzdCIsInJlcXVpcmUiLCJEaXNwYXRjaGVyIiwiRGlzY29yZENvbnN0YW50cyIsIlVzZXJTZXR0aW5nc1N0b3JlIiwiRGlzY29yZE1vZHVsZXMiLCJMb2NhbGVNYW5hZ2VyIiwiZGlzY29yZExvY2FsZSIsImxvY2FsZSIsInNwbGl0IiwiZGVmYXVsdExvY2FsZSIsImNvbnN0cnVjdG9yIiwic3RyaW5ncyIsImluaXRpYWxpemUiLCJzZXRMb2NhbGUiLCJzdWJzY3JpYmUiLCJBY3Rpb25UeXBlcyIsIlVTRVJfU0VUVElOR1NfVVBEQVRFIiwic2V0dGluZ3MiLCJuZXdMb2NhbGUiLCJuZXdTdHJpbmdzIiwiZ2V0TG9jYWxlU3RyaW5ncyIsIkRlZmF1bHRTdHJpbmdzIiwiVXRpbGl0aWVzIiwiZXh0ZW5kIiwiRXZlbnRzIiwiZW1pdCIsImhhc2giLCJEYXRhU3RvcmUiLCJnZXRDYWNoZUhhc2giLCJkb3dubG9hZExvY2FsZSIsImludmFsaWQiLCJnZXRMb2NhbGUiLCJQcm9taXNlIiwicmVzb2x2ZSIsIm9wdGlvbnMiLCJ1cmwiLCJyZXBvVXJsIiwidGltZW91dCIsImpzb24iLCJoZWFkZXJzIiwiZ2V0IiwiZXJyIiwicmVzcCIsInN0YXR1c0NvZGUiLCJzYXZlTG9jYWxlIiwic2V0Q2FjaGVIYXNoIiwiZXRhZyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFDQSxNQUFNQSxPQUFPLEdBQUdDLG1CQUFPLENBQUMsd0JBQUQsQ0FBdkI7O0FBRUEsTUFBTTtBQUFDQyxZQUFEO0FBQWFDLGtCQUFiO0FBQStCQztBQUEvQixJQUFvREMsdURBQTFEO0FBRWUsbUVBQUksTUFBTUMsYUFBTixDQUFvQjtBQUN0QyxNQUFJQyxhQUFKLEdBQW9CO0FBQUMsV0FBT0gsaUJBQWlC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SSxDQUFDSCxPQUFMLENBQWFPLElBQXZEO0FBQ0FiLGVBQU8sQ0FBQ2QsVUFBRCxDQUFQO0FBQ0EsT0FMRDtBQU1BLEtBYk0sQ0FBUDtBQWNBOztBQXREcUMsQ0FBeEIsRUFBZiIsImZpbGUiOiIuL3NyYy9tb2R1bGVzL2xvY2FsZW1hbmFnZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRGVmYXVsdFN0cmluZ3MgZnJvbSBcIi4uL2RhdGEvc3RyaW5nc1wiO1xyXG5pbXBvcnQgRGlzY29yZE1vZHVsZXMgZnJvbSBcIi4vZGlzY29yZG1vZHVsZXNcIjtcclxuaW1wb3J0IFV0aWxpdGllcyBmcm9tIFwiLi91dGlsaXRpZXNcIjtcclxuaW1wb3J0IEV2ZW50cyBmcm9tIFwiLi9lbWl0dGVyXCI7XHJcbmltcG9ydCBEYXRhU3RvcmUgZnJvbSBcIi4vZGF0YXN0b3JlXCI7XHJcbmNvbnN0IHJlcXVlc3QgPSByZXF1aXJlKFwicmVxdWVzdFwiKTtcclxuXHJcbmNvbnN0IHtEaXNwYXRjaGVyLCBEaXNjb3JkQ29uc3RhbnRzLCBVc2VyU2V0dGluZ3NTdG9yZX0gPSBEaXNjb3JkTW9kdWxlcztcclxuXHJcbmV4cG9ydCBkZWZhdWx0IG5ldyBjbGFzcyBMb2NhbGVNYW5hZ2VyIHtcclxuXHRnZXQgZGlzY29yZExvY2FsZSgpIHtyZXR1cm4gVXNlclNldHRpbmdzU3RvcmUubG9jYWxlLnNwbGl0KFwiLVwiKVswXTt9XHJcblx0Z2V0IGRlZmF1bHRMb2NhbGUoKSB7cmV0dXJuIFwiZW5cIjt9XHJcblxyXG5cdGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIHRoaXMubG9jYWxlID0gXCJcIjtcclxuICAgICAgICB0aGlzLnN0cmluZ3MgPSB7fTtcclxuXHR9XHJcblxyXG5cdGFzeW5jIGluaXRpYWxpemUoKSB7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5zZXRMb2NhbGUodGhpcy5kaXNjb3JkTG9jYWxlKTtcclxuICAgICAgICBEaXNwYXRjaGVyLnN1YnNjcmliZShEaXNjb3JkQ29uc3RhbnRzLkFjdGlvblR5cGVzLlVTRVJfU0VUVElOR1NfVVBEQVRFLCAoe3NldHRpbmdzfSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBuZXdMb2NhbGUgPSBzZXR0aW5ncy5sb2NhbGU7XHJcbiAgICAgICAgICAgIGlmIChuZXdMb2NhbGUgJiYgbmV3TG9jYWxlICE9IHRoaXMubG9jYWxlKSB0aGlzLnNldExvY2FsZShuZXdMb2NhbGUuc3BsaXQoXCItXCIpWzBdKTtcclxuICAgICAgICB9KTtcclxuXHR9XHJcblxyXG5cdGFzeW5jIHNldExvY2FsZShuZXdMb2NhbGUpIHtcclxuICAgICAgICBsZXQgbmV3U3RyaW5ncztcclxuICAgICAgICBpZiAobmV3TG9jYWxlICE9IHRoaXMuZGVmYXVsdExvY2FsZSkge1xyXG5cdFx0XHRuZXdTdHJpbmdzID0gYXdhaXQgdGhpcy5nZXRMb2NhbGVTdHJpbmdzKG5ld0xvY2FsZSk7XHJcbiAgICAgICAgICAgIGlmICghbmV3U3RyaW5ncykgcmV0dXJuIHRoaXMuc2V0TG9jYWxlKHRoaXMuZGVmYXVsdExvY2FsZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBuZXdTdHJpbmdzID0gRGVmYXVsdFN0cmluZ3M7XHJcbiAgICAgICAgfVxyXG5cdFx0dGhpcy5sb2NhbGUgPSBuZXdMb2NhbGU7XHJcblx0XHRVdGlsaXRpZXMuZXh0ZW5kKHRoaXMuc3RyaW5ncywgbmV3U3RyaW5ncyk7XHJcblx0XHRFdmVudHMuZW1pdChcInN0cmluZ3MtdXBkYXRlZFwiKTtcclxuXHR9XHJcblxyXG5cdGFzeW5jIGdldExvY2FsZVN0cmluZ3MobG9jYWxlKSB7XHJcblx0XHRjb25zdCBoYXNoID0gRGF0YVN0b3JlLmdldENhY2hlSGFzaChcImxvY2FsZXNcIiwgbG9jYWxlKTtcclxuXHRcdGlmICghaGFzaCkgcmV0dXJuIGF3YWl0IHRoaXMuZG93bmxvYWRMb2NhbGUobG9jYWxlKTtcclxuXHRcdGNvbnN0IGludmFsaWQgPSBhd2FpdCB0aGlzLmRvd25sb2FkTG9jYWxlKGxvY2FsZSwgaGFzaCk7XHJcblx0XHRpZiAoIWludmFsaWQpIHJldHVybiBEYXRhU3RvcmUuZ2V0TG9jYWxlKGxvY2FsZSk7XHJcblx0XHRyZXR1cm4gaW52YWxpZDtcclxuXHR9XHJcblxyXG5cdGRvd25sb2FkTG9jYWxlKGxvY2FsZSwgaGFzaCA9IFwiXCIpIHtcclxuXHRcdHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcclxuXHRcdFx0Y29uc3Qgb3B0aW9ucyA9IHtcclxuXHRcdFx0XHR1cmw6IFV0aWxpdGllcy5yZXBvVXJsKGBhc3NldHMvbG9jYWxlcy8ke2xvY2FsZX0uanNvbmApLFxyXG5cdFx0XHRcdHRpbWVvdXQ6IDIwMDAsXHJcblx0XHRcdFx0anNvbjogdHJ1ZVxyXG5cdFx0XHR9O1xyXG5cdFx0XHRpZiAoaGFzaCkgb3B0aW9ucy5oZWFkZXJzID0ge1wiSWYtTm9uZS1NYXRjaFwiOiBoYXNofTtcclxuXHRcdFx0cmVxdWVzdC5nZXQob3B0aW9ucywgKGVyciwgcmVzcCwgbmV3U3RyaW5ncykgPT4ge1xyXG5cdFx0XHRcdGlmIChlcnIgfHwgcmVzcC5zdGF0dXNDb2RlICE9PSAyMDApIHJldHVybiByZXNvbHZlKG51bGwpO1xyXG5cdFx0XHRcdERhdGFTdG9yZS5zYXZlTG9jYWxlKGxvY2FsZSwgbmV3U3RyaW5ncyk7XHJcblx0XHRcdFx0RGF0YVN0b3JlLnNldENhY2hlSGFzaChcImxvY2FsZXNcIiwgbG9jYWxlLCByZXNwLmhlYWRlcnMuZXRhZyk7XHJcblx0XHRcdFx0cmVzb2x2ZShuZXdTdHJpbmdzKTtcclxuXHRcdFx0fSk7XHJcblx0XHR9KTtcclxuXHR9XHJcbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/localemanager.js\n"); /***/ }), @@ -503,7 +502,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _dat /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LogTypes\", function() { return LogTypes; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Logger; });\n/**\r\n * Simple logger for the lib and plugins.\r\n *\r\n * @module Logger\r\n * @version 0.1.0\r\n */\n\n/* eslint-disable no-console */\n\n/**\r\n * List of logging types.\r\n */\nconst LogTypes = {\n /** Alias for error */\n err: \"error\",\n error: \"error\",\n\n /** Alias for debug */\n dbg: \"debug\",\n debug: \"debug\",\n log: \"log\",\n warn: \"warn\",\n info: \"info\"\n};\nclass Logger {\n /**\r\n * Logs an error using a collapsed error group with stacktrace.\r\n *\r\n * @param {string} module - Name of the calling module.\r\n * @param {string} message - Message or error to have logged.\r\n * @param {Error} error - Error object to log with the message.\r\n */\n static stacktrace(module, message, error) {\n console.error(`%c[${module}]%c ${message}\\n\\n%c`, \"color: #3a71c1; font-weight: 700;\", \"color: red; font-weight: 700;\", \"color: red;\", error);\n }\n /**\r\n * Logs using error formatting. For logging an actual error object consider {@link module:Logger.stacktrace}\r\n *\r\n * @param {string} module - Name of the calling module.\r\n * @param {string} message - Messages to have logged.\r\n */\n\n\n static err(module, ...message) {\n Logger._log(module, message, \"error\");\n }\n /**\r\n * Logs a warning message.\r\n *\r\n * @param {string} module - Name of the calling module.\r\n * @param {...any} message - Messages to have logged.\r\n */\n\n\n static warn(module, ...message) {\n Logger._log(module, message, \"warn\");\n }\n /**\r\n * Logs an informational message.\r\n *\r\n * @param {string} module - Name of the calling module.\r\n * @param {...any} message - Messages to have logged.\r\n */\n\n\n static info(module, ...message) {\n Logger._log(module, message, \"info\");\n }\n /**\r\n * Logs used for debugging purposes.\r\n *\r\n * @param {string} module - Name of the calling module.\r\n * @param {...any} message - Messages to have logged.\r\n */\n\n\n static debug(module, ...message) {\n Logger._log(module, message, \"debug\");\n }\n /**\r\n * Logs used for basic loggin.\r\n *\r\n * @param {string} module - Name of the calling module.\r\n * @param {...any} message - Messages to have logged.\r\n */\n\n\n static log(module, ...message) {\n Logger._log(module, message);\n }\n /**\r\n * Logs strings using different console levels and a module label.\r\n *\r\n * @param {string} module - Name of the calling module.\r\n * @param {any|Array} message - Messages to have logged.\r\n * @param {module:Logger.LogTypes} type - Type of log to use in console.\r\n */\n\n\n static _log(module, message, type = \"log\") {\n type = Logger.parseType(type);\n if (!Array.isArray(message)) message = [message];\n console[type](`%c[BandagedBD]%c [${module}]%c`, \"color: #3E82E5; font-weight: 700;\", \"color: #3a71c1;\", \"\", ...message); //console.log(`%c[BandagedBD]%c [${moduleName}]%c ${message}`, \"color: #3a71c1; font-weight: 700;\", \"color: #3a71c1;\", \"\");\n }\n\n static parseType(type) {\n return LogTypes.hasOwnProperty(type) ? LogTypes[type] : \"log\";\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL21vZHVsZXMvbG9nZ2VyLmpzPzk5OGUiXSwibmFtZXMiOlsiTG9nVHlwZXMiLCJlcnIiLCJlcnJvciIsImRiZyIsImRlYnVnIiwibG9nIiwid2FybiIsImluZm8iLCJMb2dnZXIiLCJzdGFja3RyYWNlIiwibW9kdWxlIiwibWVzc2FnZSIsImNvbnNvbGUiLCJfbG9nIiwidHlwZSIsInBhcnNlVHlwZSIsIkFycmF5IiwiaXNBcnJheSIsImhhc093blByb3BlcnR5Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTs7Ozs7OztBQU9BOztBQUVBOzs7QUFHTyxNQUFNQSxRQUFRLEdBQUc7QUFDcEI7QUFDQUMsS0FBRyxFQUFFLE9BRmU7QUFHcEJDLE9BQUssRUFBRSxPQUhhOztBQUlwQjtBQUNBQyxLQUFHLEVBQUUsT0FMZTtBQU1wQkMsT0FBSyxFQUFFLE9BTmE7QUFPcEJDLEtBQUcsRUFBRSxLQVBlO0FBUXBCQyxNQUFJLEVBQUUsTUFSYztBQVNwQkMsTUFBSSxFQUFFO0FBVGMsQ0FBakI7QUFZUSxNQUFNQyxNQUFOLENBQWE7QUFFeEI7Ozs7Ozs7QUFPQSxTQUFPQyxVQUFQLENBQWtCQyxNQUFsQixFQUEwQkMsT0FBMUIsRUFBbUNULEtBQW5DLEVBQTBDO0FBQzVDVSxXQUFPLENBQUNWLEtBQVIsQ0FBZSxNQUFLUSxNQUFPLE9BQU1DLE9BQVEsUUFBekMsRUFBa0QsbUNBQWxELEVBQXVGLCtCQUF2RixFQUF3SCxhQUF4SCxFQUF1SVQsS0FBdkk7QUFDRztBQUVEOzs7Ozs7OztBQU1BLFNBQU9ELEdBQVAsQ0FBV1MsTUFBWCxFQUFtQixHQUFHQyxPQUF0QixFQUErQjtBQUFFSCxVQUFNLENBQUNLLElBQVAsQ0FBWUgsTUFBWixFQUFvQkMsT0FBcEIsRUFBNkIsT0FBN0I7QUFBd0M7QUFFekU7Ozs7Ozs7O0FBTUEsU0FBT0wsSUFBUCxDQUFZSSxNQUFaLEVBQW9CLEdBQUdDLE9BQXZCLEVBQWdDO0FBQUVILFVBQU0sQ0FBQ0ssSUFBUCxDQUFZSCxNQUFaLEVBQW9CQyxPQUFwQixFQUE2QixNQUE3QjtBQUF1QztBQUV6RTs7Ozs7Ozs7QUFNQSxTQUFPSixJQUFQLENBQVlHLE1BQVosRUFBb0IsR0FBR0MsT0FBdkIsRUFBZ0M7QUFBRUgsVUFBTSxDQUFDSyxJQUFQLENBQVlILE1BQVosRUFBb0JDLE9BQXBCLEVBQTZCLE1BQTdCO0FBQXVDO0FBRXpFOzs7Ozs7OztBQU1BLFNBQU9QLEtBQVAsQ0FBYU0sTUFBYixFQUFxQixHQUFHQyxPQUF4QixFQUFpQztBQUFFSCxVQUFNLENBQUNLLElBQVAsQ0FBWUgsTUFBWixFQUFvQkMsT0FBcEIsRUFBNkIsT0FBN0I7QUFBd0M7QUFFM0U7Ozs7Ozs7O0FBTUEsU0FBT04sR0FBUCxDQUFXSyxNQUFYLEVBQW1CLEdBQUdDLE9BQXRCLEVBQStCO0FBQUVILFVBQU0sQ0FBQ0ssSUFBUCxDQUFZSCxNQUFaLEVBQW9CQyxPQUFwQjtBQUErQjtBQUVoRTs7Ozs7Ozs7O0FBT0EsU0FBT0UsSUFBUCxDQUFZSCxNQUFaLEVBQW9CQyxPQUFwQixFQUE2QkcsSUFBSSxHQUFHLEtBQXBDLEVBQTJDO0FBQ3ZDQSxRQUFJLEdBQUdOLE1BQU0sQ0FBQ08sU0FBUCxDQUFpQkQsSUFBakIsQ0FBUDtBQUNBLFFBQUksQ0FBQ0UsS0FBSyxDQUFDQyxPQUFOLENBQWNOLE9BQWQsQ0FBTCxFQUE2QkEsT0FBTyxHQUFHLENBQUNBLE9BQUQsQ0FBVjtBQUM3QkMsV0FBTyxDQUFDRSxJQUFELENBQVAsQ0FBZSxxQkFBb0JKLE1BQU8sS0FBMUMsRUFBZ0QsbUNBQWhELEVBQXFGLGlCQUFyRixFQUF3RyxFQUF4RyxFQUE0RyxHQUFHQyxPQUEvRyxFQUh1QyxDQUl2QztBQUNIOztBQUVELFNBQU9JLFNBQVAsQ0FBaUJELElBQWpCLEVBQXVCO0FBQ25CLFdBQU9kLFFBQVEsQ0FBQ2tCLGNBQVQsQ0FBd0JKLElBQXhCLElBQWdDZCxRQUFRLENBQUNjLElBQUQsQ0FBeEMsR0FBaUQsS0FBeEQ7QUFDSDs7QUFyRXVCIiwiZmlsZSI6Ii4vc3JjL21vZHVsZXMvbG9nZ2VyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIFNpbXBsZSBsb2dnZXIgZm9yIHRoZSBsaWIgYW5kIHBsdWdpbnMuXHJcbiAqXHJcbiAqIEBtb2R1bGUgTG9nZ2VyXHJcbiAqIEB2ZXJzaW9uIDAuMS4wXHJcbiAqL1xyXG5cclxuLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xyXG5cclxuLyoqXHJcbiAqIExpc3Qgb2YgbG9nZ2luZyB0eXBlcy5cclxuICovXHJcbmV4cG9ydCBjb25zdCBMb2dUeXBlcyA9IHtcclxuICAgIC8qKiBBbGlhcyBmb3IgZXJyb3IgKi9cclxuICAgIGVycjogXCJlcnJvclwiLFxyXG4gICAgZXJyb3I6IFwiZXJyb3JcIixcclxuICAgIC8qKiBBbGlhcyBmb3IgZGVidWcgKi9cclxuICAgIGRiZzogXCJkZWJ1Z1wiLFxyXG4gICAgZGVidWc6IFwiZGVidWdcIixcclxuICAgIGxvZzogXCJsb2dcIixcclxuICAgIHdhcm46IFwid2FyblwiLFxyXG4gICAgaW5mbzogXCJpbmZvXCJcclxufTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIExvZ2dlciB7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBMb2dzIGFuIGVycm9yIHVzaW5nIGEgY29sbGFwc2VkIGVycm9yIGdyb3VwIHdpdGggc3RhY2t0cmFjZS5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbW9kdWxlIC0gTmFtZSBvZiB0aGUgY2FsbGluZyBtb2R1bGUuXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZSAtIE1lc3NhZ2Ugb3IgZXJyb3IgdG8gaGF2ZSBsb2dnZWQuXHJcblx0ICogQHBhcmFtIHtFcnJvcn0gZXJyb3IgLSBFcnJvciBvYmplY3QgdG8gbG9nIHdpdGggdGhlIG1lc3NhZ2UuXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBzdGFja3RyYWNlKG1vZHVsZSwgbWVzc2FnZSwgZXJyb3IpIHtcclxuXHRcdGNvbnNvbGUuZXJyb3IoYCVjWyR7bW9kdWxlfV0lYyAke21lc3NhZ2V9XFxuXFxuJWNgLCBcImNvbG9yOiAjM2E3MWMxOyBmb250LXdlaWdodDogNzAwO1wiLCBcImNvbG9yOiByZWQ7IGZvbnQtd2VpZ2h0OiA3MDA7XCIsIFwiY29sb3I6IHJlZDtcIiwgZXJyb3IpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTG9ncyB1c2luZyBlcnJvciBmb3JtYXR0aW5nLiBGb3IgbG9nZ2luZyBhbiBhY3R1YWwgZXJyb3Igb2JqZWN0IGNvbnNpZGVyIHtAbGluayBtb2R1bGU6TG9nZ2VyLnN0YWNrdHJhY2V9XHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG1vZHVsZSAtIE5hbWUgb2YgdGhlIGNhbGxpbmcgbW9kdWxlLlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG1lc3NhZ2UgLSBNZXNzYWdlcyB0byBoYXZlIGxvZ2dlZC5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGVycihtb2R1bGUsIC4uLm1lc3NhZ2UpIHsgTG9nZ2VyLl9sb2cobW9kdWxlLCBtZXNzYWdlLCBcImVycm9yXCIpOyB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBMb2dzIGEgd2FybmluZyBtZXNzYWdlLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBtb2R1bGUgLSBOYW1lIG9mIHRoZSBjYWxsaW5nIG1vZHVsZS5cclxuICAgICAqIEBwYXJhbSB7Li4uYW55fSBtZXNzYWdlIC0gTWVzc2FnZXMgdG8gaGF2ZSBsb2dnZWQuXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyB3YXJuKG1vZHVsZSwgLi4ubWVzc2FnZSkgeyBMb2dnZXIuX2xvZyhtb2R1bGUsIG1lc3NhZ2UsIFwid2FyblwiKTsgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTG9ncyBhbiBpbmZvcm1hdGlvbmFsIG1lc3NhZ2UuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG1vZHVsZSAtIE5hbWUgb2YgdGhlIGNhbGxpbmcgbW9kdWxlLlxyXG4gICAgICogQHBhcmFtIHsuLi5hbnl9IG1lc3NhZ2UgLSBNZXNzYWdlcyB0byBoYXZlIGxvZ2dlZC5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGluZm8obW9kdWxlLCAuLi5tZXNzYWdlKSB7IExvZ2dlci5fbG9nKG1vZHVsZSwgbWVzc2FnZSwgXCJpbmZvXCIpOyB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBMb2dzIHVzZWQgZm9yIGRlYnVnZ2luZyBwdXJwb3Nlcy5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbW9kdWxlIC0gTmFtZSBvZiB0aGUgY2FsbGluZyBtb2R1bGUuXHJcbiAgICAgKiBAcGFyYW0gey4uLmFueX0gbWVzc2FnZSAtIE1lc3NhZ2VzIHRvIGhhdmUgbG9nZ2VkLlxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgZGVidWcobW9kdWxlLCAuLi5tZXNzYWdlKSB7IExvZ2dlci5fbG9nKG1vZHVsZSwgbWVzc2FnZSwgXCJkZWJ1Z1wiKTsgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTG9ncyB1c2VkIGZvciBiYXNpYyBsb2dnaW4uXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG1vZHVsZSAtIE5hbWUgb2YgdGhlIGNhbGxpbmcgbW9kdWxlLlxyXG4gICAgICogQHBhcmFtIHsuLi5hbnl9IG1lc3NhZ2UgLSBNZXNzYWdlcyB0byBoYXZlIGxvZ2dlZC5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGxvZyhtb2R1bGUsIC4uLm1lc3NhZ2UpIHsgTG9nZ2VyLl9sb2cobW9kdWxlLCBtZXNzYWdlKTsgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTG9ncyBzdHJpbmdzIHVzaW5nIGRpZmZlcmVudCBjb25zb2xlIGxldmVscyBhbmQgYSBtb2R1bGUgbGFiZWwuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG1vZHVsZSAtIE5hbWUgb2YgdGhlIGNhbGxpbmcgbW9kdWxlLlxyXG4gICAgICogQHBhcmFtIHthbnl8QXJyYXk8YW55Pn0gbWVzc2FnZSAtIE1lc3NhZ2VzIHRvIGhhdmUgbG9nZ2VkLlxyXG4gICAgICogQHBhcmFtIHttb2R1bGU6TG9nZ2VyLkxvZ1R5cGVzfSB0eXBlIC0gVHlwZSBvZiBsb2cgdG8gdXNlIGluIGNvbnNvbGUuXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBfbG9nKG1vZHVsZSwgbWVzc2FnZSwgdHlwZSA9IFwibG9nXCIpIHtcclxuICAgICAgICB0eXBlID0gTG9nZ2VyLnBhcnNlVHlwZSh0eXBlKTtcclxuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkobWVzc2FnZSkpIG1lc3NhZ2UgPSBbbWVzc2FnZV07XHJcbiAgICAgICAgY29uc29sZVt0eXBlXShgJWNbQmFuZGFnZWRCRF0lYyBbJHttb2R1bGV9XSVjYCwgXCJjb2xvcjogIzNFODJFNTsgZm9udC13ZWlnaHQ6IDcwMDtcIiwgXCJjb2xvcjogIzNhNzFjMTtcIiwgXCJcIiwgLi4ubWVzc2FnZSk7XHJcbiAgICAgICAgLy9jb25zb2xlLmxvZyhgJWNbQmFuZGFnZWRCRF0lYyBbJHttb2R1bGVOYW1lfV0lYyAke21lc3NhZ2V9YCwgXCJjb2xvcjogIzNhNzFjMTsgZm9udC13ZWlnaHQ6IDcwMDtcIiwgXCJjb2xvcjogIzNhNzFjMTtcIiwgXCJcIik7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIHBhcnNlVHlwZSh0eXBlKSB7XHJcbiAgICAgICAgcmV0dXJuIExvZ1R5cGVzLmhhc093blByb3BlcnR5KHR5cGUpID8gTG9nVHlwZXNbdHlwZV0gOiBcImxvZ1wiO1xyXG4gICAgfVxyXG5cclxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/logger.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LogTypes\", function() { return LogTypes; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Logger; });\n/**\r\n * Simple logger for the lib and plugins.\r\n *\r\n * @module Logger\r\n * @version 0.1.0\r\n */\n\n/* eslint-disable no-console */\n\n/**\r\n * List of logging types.\r\n */\nconst LogTypes = {\n /** Alias for error */\n err: \"error\",\n error: \"error\",\n\n /** Alias for debug */\n dbg: \"debug\",\n debug: \"debug\",\n log: \"log\",\n warn: \"warn\",\n info: \"info\"\n};\nclass Logger {\n /**\r\n * Logs an error using a collapsed error group with stacktrace.\r\n *\r\n * @param {string} module - Name of the calling module.\r\n * @param {string} message - Message or error to have logged.\r\n * @param {Error} error - Error object to log with the message.\r\n */\n static stacktrace(module, message, error) {\n console.error(`%c[${module}]%c ${message}\\n\\n%c`, \"color: #3a71c1; font-weight: 700;\", \"color: red; font-weight: 700;\", \"color: red;\", error);\n }\n /**\r\n * Logs using error formatting. For logging an actual error object consider {@link module:Logger.stacktrace}\r\n *\r\n * @param {string} module - Name of the calling module.\r\n * @param {string} message - Messages to have logged.\r\n */\n\n\n static err(module, ...message) {\n Logger._log(module, message, \"error\");\n }\n /**\r\n * Logs a warning message.\r\n *\r\n * @param {string} module - Name of the calling module.\r\n * @param {...any} message - Messages to have logged.\r\n */\n\n\n static warn(module, ...message) {\n Logger._log(module, message, \"warn\");\n }\n /**\r\n * Logs an informational message.\r\n *\r\n * @param {string} module - Name of the calling module.\r\n * @param {...any} message - Messages to have logged.\r\n */\n\n\n static info(module, ...message) {\n Logger._log(module, message, \"info\");\n }\n /**\r\n * Logs used for debugging purposes.\r\n *\r\n * @param {string} module - Name of the calling module.\r\n * @param {...any} message - Messages to have logged.\r\n */\n\n\n static debug(module, ...message) {\n Logger._log(module, message, \"debug\");\n }\n /**\r\n * Logs used for basic loggin.\r\n *\r\n * @param {string} module - Name of the calling module.\r\n * @param {...any} message - Messages to have logged.\r\n */\n\n\n static log(module, ...message) {\n Logger._log(module, message);\n }\n /**\r\n * Logs strings using different console levels and a module label.\r\n *\r\n * @param {string} module - Name of the calling module.\r\n * @param {any|Array} message - Messages to have logged.\r\n * @param {module:Logger.LogTypes} type - Type of log to use in console.\r\n */\n\n\n static _log(module, message, type = \"log\") {\n type = Logger.parseType(type);\n if (!Array.isArray(message)) message = [message];\n console[type](`%c[BandagedBD]%c [${module}]%c`, \"color: #3E82E5; font-weight: 700;\", \"color: #3a71c1;\", \"\", ...message); //console.log(`%c[BandagedBD]%c [${moduleName}]%c ${message}`, \"color: #3a71c1; font-weight: 700;\", \"color: #3a71c1;\", \"\");\n }\n\n static parseType(type) {\n return LogTypes[type] || \"log\";\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9sb2dnZXIuanM/OTk4ZSJdLCJuYW1lcyI6WyJMb2dUeXBlcyIsImVyciIsImVycm9yIiwiZGJnIiwiZGVidWciLCJsb2ciLCJ3YXJuIiwiaW5mbyIsIkxvZ2dlciIsInN0YWNrdHJhY2UiLCJtb2R1bGUiLCJtZXNzYWdlIiwiY29uc29sZSIsIl9sb2ciLCJ0eXBlIiwicGFyc2VUeXBlIiwiQXJyYXkiLCJpc0FycmF5Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTs7Ozs7OztBQU9BOztBQUVBOzs7QUFHTyxNQUFNQSxRQUFRLEdBQUc7QUFDcEI7QUFDQUMsS0FBRyxFQUFFLE9BRmU7QUFHcEJDLE9BQUssRUFBRSxPQUhhOztBQUlwQjtBQUNBQyxLQUFHLEVBQUUsT0FMZTtBQU1wQkMsT0FBSyxFQUFFLE9BTmE7QUFPcEJDLEtBQUcsRUFBRSxLQVBlO0FBUXBCQyxNQUFJLEVBQUUsTUFSYztBQVNwQkMsTUFBSSxFQUFFO0FBVGMsQ0FBakI7QUFZUSxNQUFNQyxNQUFOLENBQWE7QUFFeEI7Ozs7Ozs7QUFPQSxTQUFPQyxVQUFQLENBQWtCQyxNQUFsQixFQUEwQkMsT0FBMUIsRUFBbUNULEtBQW5DLEVBQTBDO0FBQzVDVSxXQUFPLENBQUNWLEtBQVIsQ0FBZSxNQUFLUSxNQUFPLE9BQU1DLE9BQVEsUUFBekMsRUFBa0QsbUNBQWxELEVBQXVGLCtCQUF2RixFQUF3SCxhQUF4SCxFQUF1SVQsS0FBdkk7QUFDRztBQUVEOzs7Ozs7OztBQU1BLFNBQU9ELEdBQVAsQ0FBV1MsTUFBWCxFQUFtQixHQUFHQyxPQUF0QixFQUErQjtBQUFFSCxVQUFNLENBQUNLLElBQVAsQ0FBWUgsTUFBWixFQUFvQkMsT0FBcEIsRUFBNkIsT0FBN0I7QUFBd0M7QUFFekU7Ozs7Ozs7O0FBTUEsU0FBT0wsSUFBUCxDQUFZSSxNQUFaLEVBQW9CLEdBQUdDLE9BQXZCLEVBQWdDO0FBQUVILFVBQU0sQ0FBQ0ssSUFBUCxDQUFZSCxNQUFaLEVBQW9CQyxPQUFwQixFQUE2QixNQUE3QjtBQUF1QztBQUV6RTs7Ozs7Ozs7QUFNQSxTQUFPSixJQUFQLENBQVlHLE1BQVosRUFBb0IsR0FBR0MsT0FBdkIsRUFBZ0M7QUFBRUgsVUFBTSxDQUFDSyxJQUFQLENBQVlILE1BQVosRUFBb0JDLE9BQXBCLEVBQTZCLE1BQTdCO0FBQXVDO0FBRXpFOzs7Ozs7OztBQU1BLFNBQU9QLEtBQVAsQ0FBYU0sTUFBYixFQUFxQixHQUFHQyxPQUF4QixFQUFpQztBQUFFSCxVQUFNLENBQUNLLElBQVAsQ0FBWUgsTUFBWixFQUFvQkMsT0FBcEIsRUFBNkIsT0FBN0I7QUFBd0M7QUFFM0U7Ozs7Ozs7O0FBTUEsU0FBT04sR0FBUCxDQUFXSyxNQUFYLEVBQW1CLEdBQUdDLE9BQXRCLEVBQStCO0FBQUVILFVBQU0sQ0FBQ0ssSUFBUCxDQUFZSCxNQUFaLEVBQW9CQyxPQUFwQjtBQUErQjtBQUVoRTs7Ozs7Ozs7O0FBT0EsU0FBT0UsSUFBUCxDQUFZSCxNQUFaLEVBQW9CQyxPQUFwQixFQUE2QkcsSUFBSSxHQUFHLEtBQXBDLEVBQTJDO0FBQ3ZDQSxRQUFJLEdBQUdOLE1BQU0sQ0FBQ08sU0FBUCxDQUFpQkQsSUFBakIsQ0FBUDtBQUNBLFFBQUksQ0FBQ0UsS0FBSyxDQUFDQyxPQUFOLENBQWNOLE9BQWQsQ0FBTCxFQUE2QkEsT0FBTyxHQUFHLENBQUNBLE9BQUQsQ0FBVjtBQUM3QkMsV0FBTyxDQUFDRSxJQUFELENBQVAsQ0FBZSxxQkFBb0JKLE1BQU8sS0FBMUMsRUFBZ0QsbUNBQWhELEVBQXFGLGlCQUFyRixFQUF3RyxFQUF4RyxFQUE0RyxHQUFHQyxPQUEvRyxFQUh1QyxDQUl2QztBQUNIOztBQUVELFNBQU9JLFNBQVAsQ0FBaUJELElBQWpCLEVBQXVCO0FBQ25CLFdBQU9kLFFBQVEsQ0FBQ2MsSUFBRCxDQUFSLElBQWtCLEtBQXpCO0FBQ0g7O0FBckV1QiIsImZpbGUiOiIuL3NyYy9tb2R1bGVzL2xvZ2dlci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBTaW1wbGUgbG9nZ2VyIGZvciB0aGUgbGliIGFuZCBwbHVnaW5zLlxyXG4gKlxyXG4gKiBAbW9kdWxlIExvZ2dlclxyXG4gKiBAdmVyc2lvbiAwLjEuMFxyXG4gKi9cclxuXHJcbi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cclxuXHJcbi8qKlxyXG4gKiBMaXN0IG9mIGxvZ2dpbmcgdHlwZXMuXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgTG9nVHlwZXMgPSB7XHJcbiAgICAvKiogQWxpYXMgZm9yIGVycm9yICovXHJcbiAgICBlcnI6IFwiZXJyb3JcIixcclxuICAgIGVycm9yOiBcImVycm9yXCIsXHJcbiAgICAvKiogQWxpYXMgZm9yIGRlYnVnICovXHJcbiAgICBkYmc6IFwiZGVidWdcIixcclxuICAgIGRlYnVnOiBcImRlYnVnXCIsXHJcbiAgICBsb2c6IFwibG9nXCIsXHJcbiAgICB3YXJuOiBcIndhcm5cIixcclxuICAgIGluZm86IFwiaW5mb1wiXHJcbn07XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMb2dnZXIge1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogTG9ncyBhbiBlcnJvciB1c2luZyBhIGNvbGxhcHNlZCBlcnJvciBncm91cCB3aXRoIHN0YWNrdHJhY2UuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG1vZHVsZSAtIE5hbWUgb2YgdGhlIGNhbGxpbmcgbW9kdWxlLlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG1lc3NhZ2UgLSBNZXNzYWdlIG9yIGVycm9yIHRvIGhhdmUgbG9nZ2VkLlxyXG5cdCAqIEBwYXJhbSB7RXJyb3J9IGVycm9yIC0gRXJyb3Igb2JqZWN0IHRvIGxvZyB3aXRoIHRoZSBtZXNzYWdlLlxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgc3RhY2t0cmFjZShtb2R1bGUsIG1lc3NhZ2UsIGVycm9yKSB7XHJcblx0XHRjb25zb2xlLmVycm9yKGAlY1ske21vZHVsZX1dJWMgJHttZXNzYWdlfVxcblxcbiVjYCwgXCJjb2xvcjogIzNhNzFjMTsgZm9udC13ZWlnaHQ6IDcwMDtcIiwgXCJjb2xvcjogcmVkOyBmb250LXdlaWdodDogNzAwO1wiLCBcImNvbG9yOiByZWQ7XCIsIGVycm9yKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIExvZ3MgdXNpbmcgZXJyb3IgZm9ybWF0dGluZy4gRm9yIGxvZ2dpbmcgYW4gYWN0dWFsIGVycm9yIG9iamVjdCBjb25zaWRlciB7QGxpbmsgbW9kdWxlOkxvZ2dlci5zdGFja3RyYWNlfVxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBtb2R1bGUgLSBOYW1lIG9mIHRoZSBjYWxsaW5nIG1vZHVsZS5cclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlIC0gTWVzc2FnZXMgdG8gaGF2ZSBsb2dnZWQuXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBlcnIobW9kdWxlLCAuLi5tZXNzYWdlKSB7IExvZ2dlci5fbG9nKG1vZHVsZSwgbWVzc2FnZSwgXCJlcnJvclwiKTsgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTG9ncyBhIHdhcm5pbmcgbWVzc2FnZS5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbW9kdWxlIC0gTmFtZSBvZiB0aGUgY2FsbGluZyBtb2R1bGUuXHJcbiAgICAgKiBAcGFyYW0gey4uLmFueX0gbWVzc2FnZSAtIE1lc3NhZ2VzIHRvIGhhdmUgbG9nZ2VkLlxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgd2Fybihtb2R1bGUsIC4uLm1lc3NhZ2UpIHsgTG9nZ2VyLl9sb2cobW9kdWxlLCBtZXNzYWdlLCBcIndhcm5cIik7IH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIExvZ3MgYW4gaW5mb3JtYXRpb25hbCBtZXNzYWdlLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBtb2R1bGUgLSBOYW1lIG9mIHRoZSBjYWxsaW5nIG1vZHVsZS5cclxuICAgICAqIEBwYXJhbSB7Li4uYW55fSBtZXNzYWdlIC0gTWVzc2FnZXMgdG8gaGF2ZSBsb2dnZWQuXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBpbmZvKG1vZHVsZSwgLi4ubWVzc2FnZSkgeyBMb2dnZXIuX2xvZyhtb2R1bGUsIG1lc3NhZ2UsIFwiaW5mb1wiKTsgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTG9ncyB1c2VkIGZvciBkZWJ1Z2dpbmcgcHVycG9zZXMuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG1vZHVsZSAtIE5hbWUgb2YgdGhlIGNhbGxpbmcgbW9kdWxlLlxyXG4gICAgICogQHBhcmFtIHsuLi5hbnl9IG1lc3NhZ2UgLSBNZXNzYWdlcyB0byBoYXZlIGxvZ2dlZC5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGRlYnVnKG1vZHVsZSwgLi4ubWVzc2FnZSkgeyBMb2dnZXIuX2xvZyhtb2R1bGUsIG1lc3NhZ2UsIFwiZGVidWdcIik7IH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIExvZ3MgdXNlZCBmb3IgYmFzaWMgbG9nZ2luLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBtb2R1bGUgLSBOYW1lIG9mIHRoZSBjYWxsaW5nIG1vZHVsZS5cclxuICAgICAqIEBwYXJhbSB7Li4uYW55fSBtZXNzYWdlIC0gTWVzc2FnZXMgdG8gaGF2ZSBsb2dnZWQuXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBsb2cobW9kdWxlLCAuLi5tZXNzYWdlKSB7IExvZ2dlci5fbG9nKG1vZHVsZSwgbWVzc2FnZSk7IH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIExvZ3Mgc3RyaW5ncyB1c2luZyBkaWZmZXJlbnQgY29uc29sZSBsZXZlbHMgYW5kIGEgbW9kdWxlIGxhYmVsLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBtb2R1bGUgLSBOYW1lIG9mIHRoZSBjYWxsaW5nIG1vZHVsZS5cclxuICAgICAqIEBwYXJhbSB7YW55fEFycmF5PGFueT59IG1lc3NhZ2UgLSBNZXNzYWdlcyB0byBoYXZlIGxvZ2dlZC5cclxuICAgICAqIEBwYXJhbSB7bW9kdWxlOkxvZ2dlci5Mb2dUeXBlc30gdHlwZSAtIFR5cGUgb2YgbG9nIHRvIHVzZSBpbiBjb25zb2xlLlxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgX2xvZyhtb2R1bGUsIG1lc3NhZ2UsIHR5cGUgPSBcImxvZ1wiKSB7XHJcbiAgICAgICAgdHlwZSA9IExvZ2dlci5wYXJzZVR5cGUodHlwZSk7XHJcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KG1lc3NhZ2UpKSBtZXNzYWdlID0gW21lc3NhZ2VdO1xyXG4gICAgICAgIGNvbnNvbGVbdHlwZV0oYCVjW0JhbmRhZ2VkQkRdJWMgWyR7bW9kdWxlfV0lY2AsIFwiY29sb3I6ICMzRTgyRTU7IGZvbnQtd2VpZ2h0OiA3MDA7XCIsIFwiY29sb3I6ICMzYTcxYzE7XCIsIFwiXCIsIC4uLm1lc3NhZ2UpO1xyXG4gICAgICAgIC8vY29uc29sZS5sb2coYCVjW0JhbmRhZ2VkQkRdJWMgWyR7bW9kdWxlTmFtZX1dJWMgJHttZXNzYWdlfWAsIFwiY29sb3I6ICMzYTcxYzE7IGZvbnQtd2VpZ2h0OiA3MDA7XCIsIFwiY29sb3I6ICMzYTcxYzE7XCIsIFwiXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBwYXJzZVR5cGUodHlwZSkge1xyXG4gICAgICAgIHJldHVybiBMb2dUeXBlc1t0eXBlXSB8fCBcImxvZ1wiO1xyXG4gICAgfVxyXG5cclxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/logger.js\n"); /***/ }), @@ -515,7 +514,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"React\", function() { return React; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ReactDOM\", function() { return ReactDOM; });\n/* harmony import */ var _webpackmodules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./webpackmodules */ \"./src/modules/webpackmodules.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"WebpackModules\", function() { return _webpackmodules__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _discordmodules__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./discordmodules */ \"./src/modules/discordmodules.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"DiscordModules\", function() { return _discordmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utilities */ \"./src/modules/utilities.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Utilities\", function() { return _utilities__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _datastore__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./datastore */ \"./src/modules/datastore.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"DataStore\", function() { return _datastore__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _emitter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./emitter */ \"./src/modules/emitter.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Events\", function() { return _emitter__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _settingsmanager__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./settingsmanager */ \"./src/modules/settingsmanager.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Settings\", function() { return _settingsmanager__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _dommanager__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./dommanager */ \"./src/modules/dommanager.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"DOMManager\", function() { return _dommanager__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _domtools__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./domtools */ \"./src/modules/domtools.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"DOM\", function() { return _domtools__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./logger */ \"./src/modules/logger.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Logger\", function() { return _logger__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; });\n\n/* harmony import */ var _patcher__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./patcher */ \"./src/modules/patcher.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Patcher\", function() { return _patcher__WEBPACK_IMPORTED_MODULE_9__[\"default\"]; });\n\n/* harmony import */ var _reactcomponents__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./reactcomponents */ \"./src/modules/reactcomponents.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ReactComponents\", function() { return _reactcomponents__WEBPACK_IMPORTED_MODULE_10__[\"default\"]; });\n\n/* harmony import */ var _localemanager__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./localemanager */ \"./src/modules/localemanager.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"LocaleManager\", function() { return _localemanager__WEBPACK_IMPORTED_MODULE_11__[\"default\"]; });\n\n/* harmony import */ var _strings__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./strings */ \"./src/modules/strings.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Strings\", function() { return _strings__WEBPACK_IMPORTED_MODULE_12__[\"default\"]; });\n\n\n\nconst React = _discordmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].React;\nconst ReactDOM = _discordmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ReactDOM;\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL21vZHVsZXMvbW9kdWxlcy5qcz8xNGRiIl0sIm5hbWVzIjpbIlJlYWN0IiwiRGlzY29yZE1vZHVsZXMiLCJSZWFjdERPTSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNPLE1BQU1BLEtBQUssR0FBR0MsdURBQWMsQ0FBQ0QsS0FBN0I7QUFDQSxNQUFNRSxRQUFRLEdBQUdELHVEQUFjLENBQUNDLFFBQWhDO0FBQ1A7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL3NyYy9tb2R1bGVzL21vZHVsZXMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQge2RlZmF1bHQgYXMgV2VicGFja01vZHVsZXN9IGZyb20gXCIuL3dlYnBhY2ttb2R1bGVzXCI7XHJcblxyXG5pbXBvcnQgRGlzY29yZE1vZHVsZXMgZnJvbSBcIi4vZGlzY29yZG1vZHVsZXNcIjtcclxuZXhwb3J0IGNvbnN0IFJlYWN0ID0gRGlzY29yZE1vZHVsZXMuUmVhY3Q7XHJcbmV4cG9ydCBjb25zdCBSZWFjdERPTSA9IERpc2NvcmRNb2R1bGVzLlJlYWN0RE9NO1xyXG5leHBvcnQge0Rpc2NvcmRNb2R1bGVzfTtcclxuXHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBVdGlsaXRpZXN9IGZyb20gXCIuL3V0aWxpdGllc1wiO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgRGF0YVN0b3JlfSBmcm9tIFwiLi9kYXRhc3RvcmVcIjtcclxuZXhwb3J0IHtkZWZhdWx0IGFzIEV2ZW50c30gZnJvbSBcIi4vZW1pdHRlclwiO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgU2V0dGluZ3N9IGZyb20gXCIuL3NldHRpbmdzbWFuYWdlclwiO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgRE9NTWFuYWdlcn0gZnJvbSBcIi4vZG9tbWFuYWdlclwiO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgRE9NfSBmcm9tIFwiLi9kb210b29sc1wiO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgTG9nZ2VyfSBmcm9tIFwiLi9sb2dnZXJcIjtcclxuZXhwb3J0IHtkZWZhdWx0IGFzIFBhdGNoZXJ9IGZyb20gXCIuL3BhdGNoZXJcIjtcclxuZXhwb3J0IHtkZWZhdWx0IGFzIFJlYWN0Q29tcG9uZW50c30gZnJvbSBcIi4vcmVhY3Rjb21wb25lbnRzXCI7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBMb2NhbGVNYW5hZ2VyfSBmcm9tIFwiLi9sb2NhbGVtYW5hZ2VyXCI7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBTdHJpbmdzfSBmcm9tIFwiLi9zdHJpbmdzXCI7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/modules.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"React\", function() { return React; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ReactDOM\", function() { return ReactDOM; });\n/* harmony import */ var _webpackmodules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./webpackmodules */ \"./src/modules/webpackmodules.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"WebpackModules\", function() { return _webpackmodules__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _discordmodules__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./discordmodules */ \"./src/modules/discordmodules.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"DiscordModules\", function() { return _discordmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utilities */ \"./src/modules/utilities.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Utilities\", function() { return _utilities__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _datastore__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./datastore */ \"./src/modules/datastore.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"DataStore\", function() { return _datastore__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _emitter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./emitter */ \"./src/modules/emitter.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Events\", function() { return _emitter__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _settingsmanager__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./settingsmanager */ \"./src/modules/settingsmanager.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Settings\", function() { return _settingsmanager__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _dommanager__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./dommanager */ \"./src/modules/dommanager.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"DOMManager\", function() { return _dommanager__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _domtools__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./domtools */ \"./src/modules/domtools.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"DOM\", function() { return _domtools__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./logger */ \"./src/modules/logger.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Logger\", function() { return _logger__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; });\n\n/* harmony import */ var _patcher__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./patcher */ \"./src/modules/patcher.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Patcher\", function() { return _patcher__WEBPACK_IMPORTED_MODULE_9__[\"default\"]; });\n\n/* harmony import */ var _reactcomponents__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./reactcomponents */ \"./src/modules/reactcomponents.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ReactComponents\", function() { return _reactcomponents__WEBPACK_IMPORTED_MODULE_10__[\"default\"]; });\n\n/* harmony import */ var _localemanager__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./localemanager */ \"./src/modules/localemanager.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"LocaleManager\", function() { return _localemanager__WEBPACK_IMPORTED_MODULE_11__[\"default\"]; });\n\n/* harmony import */ var _strings__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./strings */ \"./src/modules/strings.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Strings\", function() { return _strings__WEBPACK_IMPORTED_MODULE_12__[\"default\"]; });\n\n\n\nconst React = _discordmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].React;\nconst ReactDOM = _discordmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ReactDOM;\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9tb2R1bGVzLmpzPzE0ZGIiXSwibmFtZXMiOlsiUmVhY3QiLCJEaXNjb3JkTW9kdWxlcyIsIlJlYWN0RE9NIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ08sTUFBTUEsS0FBSyxHQUFHQyx1REFBYyxDQUFDRCxLQUE3QjtBQUNBLE1BQU1FLFFBQVEsR0FBR0QsdURBQWMsQ0FBQ0MsUUFBaEM7QUFDUDtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vc3JjL21vZHVsZXMvbW9kdWxlcy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7ZGVmYXVsdCBhcyBXZWJwYWNrTW9kdWxlc30gZnJvbSBcIi4vd2VicGFja21vZHVsZXNcIjtcclxuXHJcbmltcG9ydCBEaXNjb3JkTW9kdWxlcyBmcm9tIFwiLi9kaXNjb3JkbW9kdWxlc1wiO1xyXG5leHBvcnQgY29uc3QgUmVhY3QgPSBEaXNjb3JkTW9kdWxlcy5SZWFjdDtcclxuZXhwb3J0IGNvbnN0IFJlYWN0RE9NID0gRGlzY29yZE1vZHVsZXMuUmVhY3RET007XHJcbmV4cG9ydCB7RGlzY29yZE1vZHVsZXN9O1xyXG5cclxuZXhwb3J0IHtkZWZhdWx0IGFzIFV0aWxpdGllc30gZnJvbSBcIi4vdXRpbGl0aWVzXCI7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBEYXRhU3RvcmV9IGZyb20gXCIuL2RhdGFzdG9yZVwiO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgRXZlbnRzfSBmcm9tIFwiLi9lbWl0dGVyXCI7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBTZXR0aW5nc30gZnJvbSBcIi4vc2V0dGluZ3NtYW5hZ2VyXCI7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBET01NYW5hZ2VyfSBmcm9tIFwiLi9kb21tYW5hZ2VyXCI7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBET019IGZyb20gXCIuL2RvbXRvb2xzXCI7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBMb2dnZXJ9IGZyb20gXCIuL2xvZ2dlclwiO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgUGF0Y2hlcn0gZnJvbSBcIi4vcGF0Y2hlclwiO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgUmVhY3RDb21wb25lbnRzfSBmcm9tIFwiLi9yZWFjdGNvbXBvbmVudHNcIjtcclxuZXhwb3J0IHtkZWZhdWx0IGFzIExvY2FsZU1hbmFnZXJ9IGZyb20gXCIuL2xvY2FsZW1hbmFnZXJcIjtcclxuZXhwb3J0IHtkZWZhdWx0IGFzIFN0cmluZ3N9IGZyb20gXCIuL3N0cmluZ3NcIjsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/modules/modules.js\n"); /***/ }), @@ -527,7 +526,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Patcher; });\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./logger */ \"./src/modules/logger.js\");\n/* harmony import */ var _discordmodules__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./discordmodules */ \"./src/modules/discordmodules.js\");\n/* harmony import */ var _webpackmodules__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./webpackmodules */ \"./src/modules/webpackmodules.js\");\n/**\r\n * Patcher that can patch other functions allowing you to run code before, after or\r\n * instead of the original function. Can also alter arguments and return values.\r\n *\r\n * This is from Zerebos' library {@link https://github.com/JsSucks/BetterDiscordApp/blob/master/client/src/modules/patcher.js}\r\n *\r\n * @module Patcher\r\n * @version 0.0.2\r\n */\n\n\n\nclass Patcher {\n static get patches() {\n return this._patches || (this._patches = []);\n }\n /**\r\n * Returns all the patches done by a specific caller\r\n * @param {string} name - Name of the patch caller\r\n * @method\r\n */\n\n\n static getPatchesByCaller(name) {\n if (!name) return [];\n const patches = [];\n\n for (const patch of this.patches) {\n for (const childPatch of patch.children) {\n if (childPatch.caller === name) patches.push(childPatch);\n }\n }\n\n return patches;\n }\n /**\r\n * Unpatches all patches passed, or when a string is passed unpatches all\r\n * patches done by that specific caller.\r\n * @param {Array|string} patches - Either an array of patches to unpatch or a caller name\r\n */\n\n\n static unpatchAll(patches) {\n if (typeof patches === \"string\") patches = this.getPatchesByCaller(patches);\n\n for (const patch of patches) {\n patch.unpatch();\n }\n }\n\n static resolveModule(module) {\n if (module instanceof Function || module instanceof Object && !(module instanceof Array)) return module;\n if (typeof module === \"string\") return _discordmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"][module];\n if (module instanceof Array) return _webpackmodules__WEBPACK_IMPORTED_MODULE_2__[\"default\"].findByUniqueProperties(module);\n return null;\n }\n\n static makeOverride(patch) {\n return function () {\n let returnValue = undefined;\n if (!patch.children || !patch.children.length) return patch.originalFunction.apply(this, arguments);\n\n for (const superPatch of patch.children.filter(c => c.type === \"before\")) {\n try {\n superPatch.callback(this, arguments);\n } catch (err) {\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"default\"].err(\"Patcher\", `Could not fire before callback of ${patch.functionName} for ${superPatch.caller}`, err);\n }\n }\n\n const insteads = patch.children.filter(c => c.type === \"instead\");\n\n if (!insteads.length) {\n returnValue = patch.originalFunction.apply(this, arguments);\n } else {\n for (const insteadPatch of insteads) {\n try {\n const tempReturn = insteadPatch.callback(this, arguments, patch.originalFunction.bind(this));\n if (typeof tempReturn !== \"undefined\") returnValue = tempReturn;\n } catch (err) {\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"default\"].err(\"Patcher\", `Could not fire instead callback of ${patch.functionName} for ${insteadPatch.caller}`, err);\n }\n }\n }\n\n for (const slavePatch of patch.children.filter(c => c.type === \"after\")) {\n try {\n const tempReturn = slavePatch.callback(this, arguments, returnValue);\n if (typeof tempReturn !== \"undefined\") returnValue = tempReturn;\n } catch (err) {\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"default\"].err(\"Patcher\", `Could not fire after callback of ${patch.functionName} for ${slavePatch.caller}`, err);\n }\n }\n\n return returnValue;\n };\n }\n\n static rePatch(patch) {\n patch.proxyFunction = patch.module[patch.functionName] = this.makeOverride(patch);\n }\n\n static makePatch(module, functionName, name) {\n const patch = {\n name,\n module,\n functionName,\n originalFunction: module[functionName],\n proxyFunction: null,\n revert: () => {\n // Calling revert will destroy any patches added to the same module after this\n patch.module[patch.functionName] = patch.originalFunction;\n patch.proxyFunction = null;\n patch.children = [];\n },\n counter: 0,\n children: []\n };\n patch.proxyFunction = module[functionName] = this.makeOverride(patch);\n return this.patches.push(patch), patch;\n }\n /**\r\n * Function with no arguments and no return value that may be called to revert changes made by {@link module:Patcher}, restoring (unpatching) original method.\r\n * @callback module:Patcher~unpatch\r\n */\n\n /**\r\n * A callback that modifies method logic. This callback is called on each call of the original method and is provided all data about original call. Any of the data can be modified if necessary, but do so wisely.\r\n *\r\n * The third argument for the callback will be `undefined` for `before` patches. `originalFunction` for `instead` patches and `returnValue` for `after` patches.\r\n *\r\n * @callback module:Patcher~patchCallback\r\n * @param {object} thisObject - `this` in the context of the original function.\r\n * @param {arguments} arguments - The original arguments of the original function.\r\n * @param {(function|*)} extraValue - For `instead` patches, this is the original function from the module. For `after` patches, this is the return value of the function.\r\n * @return {*} Makes sense only when using an `instead` or `after` patch. If something other than `undefined` is returned, the returned value replaces the value of `returnValue`. If used for `before` the return value is ignored.\r\n */\n\n /**\r\n * This method patches onto another function, allowing your code to run beforehand.\r\n * Using this, you are also able to modify the incoming arguments before the original method is run.\r\n *\r\n * @param {string} caller - Name of the caller of the patch function. Using this you can undo all patches with the same name using {@link module:Patcher.unpatchAll}. Use `\"\"` if you don't care.\r\n * @param {object} moduleToPatch - Object with the function to be patched. Can also patch an object's prototype.\r\n * @param {string} functionName - Name of the method to be patched\r\n * @param {module:Patcher~patchCallback} callback - Function to run before the original method\r\n * @param {object} options - Object used to pass additional options.\r\n * @param {string} [options.displayName] You can provide meaningful name for class/object provided in `what` param for logging purposes. By default, this function will try to determine name automatically.\r\n * @param {boolean} [options.forcePatch=true] Set to `true` to patch even if the function doesnt exist. (Adds noop function in place).\r\n * @return {module:Patcher~unpatch} Function with no arguments and no return value that should be called to cancel (unpatch) this patch. You should save and run it when your plugin is stopped.\r\n */\n\n\n static before(caller, moduleToPatch, functionName, callback, options = {}) {\n return this.pushChildPatch(caller, moduleToPatch, functionName, callback, Object.assign(options, {\n type: \"before\"\n }));\n }\n /**\r\n * This method patches onto another function, allowing your code to run after.\r\n * Using this, you are also able to modify the return value, using the return of your code instead.\r\n *\r\n * @param {string} caller - Name of the caller of the patch function. Using this you can undo all patches with the same name using {@link module:Patcher.unpatchAll}. Use `\"\"` if you don't care.\r\n * @param {object} moduleToPatch - Object with the function to be patched. Can also patch an object's prototype.\r\n * @param {string} functionName - Name of the method to be patched\r\n * @param {module:Patcher~patchCallback} callback - Function to run instead of the original method\r\n * @param {object} options - Object used to pass additional options.\r\n * @param {string} [options.displayName] You can provide meaningful name for class/object provided in `what` param for logging purposes. By default, this function will try to determine name automatically.\r\n * @param {boolean} [options.forcePatch=true] Set to `true` to patch even if the function doesnt exist. (Adds noop function in place).\r\n * @return {module:Patcher~unpatch} Function with no arguments and no return value that should be called to cancel (unpatch) this patch. You should save and run it when your plugin is stopped.\r\n */\n\n\n static after(caller, moduleToPatch, functionName, callback, options = {}) {\n return this.pushChildPatch(caller, moduleToPatch, functionName, callback, Object.assign(options, {\n type: \"after\"\n }));\n }\n /**\r\n * This method patches onto another function, allowing your code to run instead.\r\n * Using this, you are also able to modify the return value, using the return of your code instead.\r\n *\r\n * @param {string} caller - Name of the caller of the patch function. Using this you can undo all patches with the same name using {@link module:Patcher.unpatchAll}. Use `\"\"` if you don't care.\r\n * @param {object} moduleToPatch - Object with the function to be patched. Can also patch an object's prototype.\r\n * @param {string} functionName - Name of the method to be patched\r\n * @param {module:Patcher~patchCallback} callback - Function to run after the original method\r\n * @param {object} options - Object used to pass additional options.\r\n * @param {string} [options.displayName] You can provide meaningful name for class/object provided in `what` param for logging purposes. By default, this function will try to determine name automatically.\r\n * @param {boolean} [options.forcePatch=true] Set to `true` to patch even if the function doesnt exist. (Adds noop function in place).\r\n * @return {module:Patcher~unpatch} Function with no arguments and no return value that should be called to cancel (unpatch) this patch. You should save and run it when your plugin is stopped.\r\n */\n\n\n static instead(caller, moduleToPatch, functionName, callback, options = {}) {\n return this.pushChildPatch(caller, moduleToPatch, functionName, callback, Object.assign(options, {\n type: \"instead\"\n }));\n }\n /**\r\n * This method patches onto another function, allowing your code to run before, instead or after the original function.\r\n * Using this you are able to modify the incoming arguments before the original function is run as well as the return\r\n * value before the original function actually returns.\r\n *\r\n * @param {string} caller - Name of the caller of the patch function. Using this you can undo all patches with the same name using {@link module:Patcher.unpatchAll}. Use `\"\"` if you don't care.\r\n * @param {object} moduleToPatch - Object with the function to be patched. Can also patch an object's prototype.\r\n * @param {string} functionName - Name of the method to be patched\r\n * @param {module:Patcher~patchCallback} callback - Function to run after the original method\r\n * @param {object} options - Object used to pass additional options.\r\n * @param {string} [options.type=after] - Determines whether to run the function `before`, `instead`, or `after` the original.\r\n * @param {string} [options.displayName] You can provide meaningful name for class/object provided in `what` param for logging purposes. By default, this function will try to determine name automatically.\r\n * @param {boolean} [options.forcePatch=true] Set to `true` to patch even if the function doesnt exist. (Adds noop function in place).\r\n * @return {module:Patcher~unpatch} Function with no arguments and no return value that should be called to cancel (unpatch) this patch. You should save and run it when your plugin is stopped.\r\n */\n\n\n static pushChildPatch(caller, moduleToPatch, functionName, callback, options = {}) {\n const {\n type = \"after\",\n forcePatch = true\n } = options;\n const module = this.resolveModule(moduleToPatch);\n if (!module) return null;\n if (!module[functionName] && forcePatch) module[functionName] = function () {};\n if (!(module[functionName] instanceof Function)) return null;\n if (typeof moduleToPatch === \"string\") options.displayName = moduleToPatch;\n const displayName = options.displayName || module.displayName || module.name || module.constructor.displayName || module.constructor.name;\n const patchId = `${displayName}.${functionName}`;\n const patch = this.patches.find(p => p.module == module && p.functionName == functionName) || this.makePatch(module, functionName, patchId);\n if (!patch.proxyFunction) this.rePatch(patch);\n const child = {\n caller,\n type,\n id: patch.counter,\n callback,\n unpatch: () => {\n patch.children.splice(patch.children.findIndex(cpatch => cpatch.id === child.id && cpatch.type === type), 1);\n\n if (patch.children.length <= 0) {\n const patchNum = this.patches.findIndex(p => p.module == module && p.functionName == functionName);\n this.patches[patchNum].revert();\n this.patches.splice(patchNum, 1);\n }\n }\n };\n patch.children.push(child);\n patch.counter++;\n return child.unpatch;\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL21vZHVsZXMvcGF0Y2hlci5qcz8yNTUwIl0sIm5hbWVzIjpbIlBhdGNoZXIiLCJwYXRjaGVzIiwiX3BhdGNoZXMiLCJnZXRQYXRjaGVzQnlDYWxsZXIiLCJuYW1lIiwicGF0Y2giLCJjaGlsZFBhdGNoIiwiY2hpbGRyZW4iLCJjYWxsZXIiLCJwdXNoIiwidW5wYXRjaEFsbCIsInVucGF0Y2giLCJyZXNvbHZlTW9kdWxlIiwibW9kdWxlIiwiRnVuY3Rpb24iLCJPYmplY3QiLCJBcnJheSIsIkRpc2NvcmRNb2R1bGVzIiwiV2VicGFja01vZHVsZXMiLCJmaW5kQnlVbmlxdWVQcm9wZXJ0aWVzIiwibWFrZU92ZXJyaWRlIiwicmV0dXJuVmFsdWUiLCJ1bmRlZmluZWQiLCJsZW5ndGgiLCJvcmlnaW5hbEZ1bmN0aW9uIiwiYXBwbHkiLCJhcmd1bWVudHMiLCJzdXBlclBhdGNoIiwiZmlsdGVyIiwiYyIsInR5cGUiLCJjYWxsYmFjayIsImVyciIsIkxvZ2dlciIsImZ1bmN0aW9uTmFtZSIsImluc3RlYWRzIiwiaW5zdGVhZFBhdGNoIiwidGVtcFJldHVybiIsImJpbmQiLCJzbGF2ZVBhdGNoIiwicmVQYXRjaCIsInByb3h5RnVuY3Rpb24iLCJtYWtlUGF0Y2giLCJyZXZlcnQiLCJjb3VudGVyIiwiYmVmb3JlIiwibW9kdWxlVG9QYXRjaCIsIm9wdGlvbnMiLCJwdXNoQ2hpbGRQYXRjaCIsImFzc2lnbiIsImFmdGVyIiwiaW5zdGVhZCIsImZvcmNlUGF0Y2giLCJkaXNwbGF5TmFtZSIsImNvbnN0cnVjdG9yIiwicGF0Y2hJZCIsImZpbmQiLCJwIiwiY2hpbGQiLCJpZCIsInNwbGljZSIsImZpbmRJbmRleCIsImNwYXRjaCIsInBhdGNoTnVtIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7OztBQVVBO0FBQ0E7QUFDQTtBQUVlLE1BQU1BLE9BQU4sQ0FBYztBQUV6QixhQUFXQyxPQUFY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QUE3RSxDQUF0QixFQUEwRyxDQUExRzs7QUFDQSxZQUFJekIsS0FBSyxDQUFDRSxRQUFOLENBQWVnQixNQUFmLElBQXlCLENBQTdCLEVBQWdDO0FBQzNDLGdCQUFNd0MsUUFBUSxHQUFHLEtBQUs5RCxPQUFMLENBQWE0RCxTQUFiLENBQXVCSixDQUFDLElBQUlBLENBQUMsQ0FBQzVDLE1BQUYsSUFBWUEsTUFBWixJQUFzQjRDLENBQUMsQ0FBQ3ZCLFlBQUYsSUFBa0JBLFlBQXBFLENBQWpCO0FBQ0EsZUFBS2pDLE9BQUwsQ0FBYThELFFBQWIsRUFBdUJwQixNQUF2QjtBQUNBLGVBQUsxQyxPQUFMLENBQWEyRCxNQUFiLENBQW9CRyxRQUFwQixFQUE4QixDQUE5QjtBQUNBO0FBQ1E7QUFaUyxLQUFkO0FBY0ExRCxTQUFLLENBQUNFLFFBQU4sQ0FBZUUsSUFBZixDQUFvQmlELEtBQXBCO0FBQ0FyRCxTQUFLLENBQUN1QyxPQUFOO0FBQ0EsV0FBT2MsS0FBSyxDQUFDL0MsT0FBYjtBQUNIOztBQWxOd0IiLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9wYXRjaGVyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIFBhdGNoZXIgdGhhdCBjYW4gcGF0Y2ggb3RoZXIgZnVuY3Rpb25zIGFsbG93aW5nIHlvdSB0byBydW4gY29kZSBiZWZvcmUsIGFmdGVyIG9yXHJcbiAqIGluc3RlYWQgb2YgdGhlIG9yaWdpbmFsIGZ1bmN0aW9uLiBDYW4gYWxzbyBhbHRlciBhcmd1bWVudHMgYW5kIHJldHVybiB2YWx1ZXMuXHJcbiAqXHJcbiAqIFRoaXMgaXMgZnJvbSBaZXJlYm9zJyBsaWJyYXJ5IHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vSnNTdWNrcy9CZXR0ZXJEaXNjb3JkQXBwL2Jsb2IvbWFzdGVyL2NsaWVudC9zcmMvbW9kdWxlcy9wYXRjaGVyLmpzfVxyXG4gKlxyXG4gKiBAbW9kdWxlIFBhdGNoZXJcclxuICogQHZlcnNpb24gMC4wLjJcclxuICovXHJcblxyXG5pbXBvcnQgTG9nZ2VyIGZyb20gXCIuL2xvZ2dlclwiO1xyXG5pbXBvcnQgRGlzY29yZE1vZHVsZXMgZnJvbSBcIi4vZGlzY29yZG1vZHVsZXNcIjtcclxuaW1wb3J0IFdlYnBhY2tNb2R1bGVzIGZyb20gXCIuL3dlYnBhY2ttb2R1bGVzXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQYXRjaGVyIHtcclxuXHJcbiAgICBzdGF0aWMgZ2V0IHBhdGNoZXMoKSB7IHJldHVybiB0aGlzLl9wYXRjaGVzIHx8ICh0aGlzLl9wYXRjaGVzID0gW10pOyB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXR1cm5zIGFsbCB0aGUgcGF0Y2hlcyBkb25lIGJ5IGEgc3BlY2lmaWMgY2FsbGVyXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIE5hbWUgb2YgdGhlIHBhdGNoIGNhbGxlclxyXG4gICAgICogQG1ldGhvZFxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgZ2V0UGF0Y2hlc0J5Q2FsbGVyKG5hbWUpIHtcclxuXHRcdGlmICghbmFtZSkgcmV0dXJuIFtdO1xyXG4gICAgICAgIGNvbnN0IHBhdGNoZXMgPSBbXTtcclxuICAgICAgICBmb3IgKGNvbnN0IHBhdGNoIG9mIHRoaXMucGF0Y2hlcykge1xyXG5cdFx0XHRmb3IgKGNvbnN0IGNoaWxkUGF0Y2ggb2YgcGF0Y2guY2hpbGRyZW4pIHtcclxuXHRcdFx0XHRpZiAoY2hpbGRQYXRjaC5jYWxsZXIgPT09IG5hbWUpIHBhdGNoZXMucHVzaChjaGlsZFBhdGNoKTtcclxuXHRcdFx0fVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcGF0Y2hlcztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFVucGF0Y2hlcyBhbGwgcGF0Y2hlcyBwYXNzZWQsIG9yIHdoZW4gYSBzdHJpbmcgaXMgcGFzc2VkIHVucGF0Y2hlcyBhbGxcclxuICAgICAqIHBhdGNoZXMgZG9uZSBieSB0aGF0IHNwZWNpZmljIGNhbGxlci5cclxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRjaGVzIC0gRWl0aGVyIGFuIGFycmF5IG9mIHBhdGNoZXMgdG8gdW5wYXRjaCBvciBhIGNhbGxlciBuYW1lXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyB1bnBhdGNoQWxsKHBhdGNoZXMpIHtcclxuICAgICAgICBpZiAodHlwZW9mIHBhdGNoZXMgPT09IFwic3RyaW5nXCIpIHBhdGNoZXMgPSB0aGlzLmdldFBhdGNoZXNCeUNhbGxlcihwYXRjaGVzKTtcclxuXHJcbiAgICAgICAgZm9yIChjb25zdCBwYXRjaCBvZiBwYXRjaGVzKSB7XHJcblx0XHRcdHBhdGNoLnVucGF0Y2goKTtcclxuICAgICAgICB9XHJcblx0fVxyXG5cclxuXHRzdGF0aWMgcmVzb2x2ZU1vZHVsZShtb2R1bGUpIHtcclxuICAgICAgICBpZiAobW9kdWxlIGluc3RhbmNlb2YgRnVuY3Rpb24gfHwgKG1vZHVsZSBpbnN0YW5jZW9mIE9iamVjdCAmJiAhKG1vZHVsZSBpbnN0YW5jZW9mIEFycmF5KSkpIHJldHVybiBtb2R1bGU7XHJcbiAgICAgICAgaWYgKHR5cGVvZiBtb2R1bGUgPT09IFwic3RyaW5nXCIpIHJldHVybiBEaXNjb3JkTW9kdWxlc1ttb2R1bGVdO1xyXG4gICAgICAgIGlmIChtb2R1bGUgaW5zdGFuY2VvZiBBcnJheSkgcmV0dXJuIFdlYnBhY2tNb2R1bGVzLmZpbmRCeVVuaXF1ZVByb3BlcnRpZXMobW9kdWxlKTtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuXHR9XHJcblxyXG4gICAgc3RhdGljIG1ha2VPdmVycmlkZShwYXRjaCkge1xyXG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIGxldCByZXR1cm5WYWx1ZSA9IHVuZGVmaW5lZDtcclxuICAgICAgICAgICAgaWYgKCFwYXRjaC5jaGlsZHJlbiB8fCAhcGF0Y2guY2hpbGRyZW4ubGVuZ3RoKSByZXR1cm4gcGF0Y2gub3JpZ2luYWxGdW5jdGlvbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHN1cGVyUGF0Y2ggb2YgcGF0Y2guY2hpbGRyZW4uZmlsdGVyKGMgPT4gYy50eXBlID09PSBcImJlZm9yZVwiKSkge1xyXG4gICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICBzdXBlclBhdGNoLmNhbGxiYWNrKHRoaXMsIGFyZ3VtZW50cyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgTG9nZ2VyLmVycihcIlBhdGNoZXJcIiwgYENvdWxkIG5vdCBmaXJlIGJlZm9yZSBjYWxsYmFjayBvZiAke3BhdGNoLmZ1bmN0aW9uTmFtZX0gZm9yICR7c3VwZXJQYXRjaC5jYWxsZXJ9YCwgZXJyKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgY29uc3QgaW5zdGVhZHMgPSBwYXRjaC5jaGlsZHJlbi5maWx0ZXIoYyA9PiBjLnR5cGUgPT09IFwiaW5zdGVhZFwiKTtcclxuICAgICAgICAgICAgaWYgKCFpbnN0ZWFkcy5sZW5ndGgpIHtyZXR1cm5WYWx1ZSA9IHBhdGNoLm9yaWdpbmFsRnVuY3Rpb24uYXBwbHkodGhpcywgYXJndW1lbnRzKTt9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBpbnN0ZWFkUGF0Y2ggb2YgaW5zdGVhZHMpIHtcclxuICAgICAgICAgICAgICAgICAgICB0cnkge1xyXG5cdFx0XHRcdFx0XHRjb25zdCB0ZW1wUmV0dXJuID0gaW5zdGVhZFBhdGNoLmNhbGxiYWNrKHRoaXMsIGFyZ3VtZW50cywgcGF0Y2gub3JpZ2luYWxGdW5jdGlvbi5iaW5kKHRoaXMpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZih0ZW1wUmV0dXJuKSAhPT0gXCJ1bmRlZmluZWRcIikgcmV0dXJuVmFsdWUgPSB0ZW1wUmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlci5lcnIoXCJQYXRjaGVyXCIsIGBDb3VsZCBub3QgZmlyZSBpbnN0ZWFkIGNhbGxiYWNrIG9mICR7cGF0Y2guZnVuY3Rpb25OYW1lfSBmb3IgJHtpbnN0ZWFkUGF0Y2guY2FsbGVyfWAsIGVycik7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHNsYXZlUGF0Y2ggb2YgcGF0Y2guY2hpbGRyZW4uZmlsdGVyKGMgPT4gYy50eXBlID09PSBcImFmdGVyXCIpKSB7XHJcbiAgICAgICAgICAgICAgICB0cnkge1xyXG5cdFx0XHRcdFx0Y29uc3QgdGVtcFJldHVybiA9IHNsYXZlUGF0Y2guY2FsbGJhY2sodGhpcywgYXJndW1lbnRzLCByZXR1cm5WYWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZih0ZW1wUmV0dXJuKSAhPT0gXCJ1bmRlZmluZWRcIikgcmV0dXJuVmFsdWUgPSB0ZW1wUmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY2F0Y2ggKGVycikge1xyXG4gICAgICAgICAgICAgICAgICAgIExvZ2dlci5lcnIoXCJQYXRjaGVyXCIsIGBDb3VsZCBub3QgZmlyZSBhZnRlciBjYWxsYmFjayBvZiAke3BhdGNoLmZ1bmN0aW9uTmFtZX0gZm9yICR7c2xhdmVQYXRjaC5jYWxsZXJ9YCwgZXJyKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gcmV0dXJuVmFsdWU7XHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgcmVQYXRjaChwYXRjaCkge1xyXG4gICAgICAgIHBhdGNoLnByb3h5RnVuY3Rpb24gPSBwYXRjaC5tb2R1bGVbcGF0Y2guZnVuY3Rpb25OYW1lXSA9IHRoaXMubWFrZU92ZXJyaWRlKHBhdGNoKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgbWFrZVBhdGNoKG1vZHVsZSwgZnVuY3Rpb25OYW1lLCBuYW1lKSB7XHJcbiAgICAgICAgY29uc3QgcGF0Y2ggPSB7XHJcblx0XHRcdG5hbWUsXHJcbiAgICAgICAgICAgIG1vZHVsZSxcclxuICAgICAgICAgICAgZnVuY3Rpb25OYW1lLFxyXG4gICAgICAgICAgICBvcmlnaW5hbEZ1bmN0aW9uOiBtb2R1bGVbZnVuY3Rpb25OYW1lXSxcclxuICAgICAgICAgICAgcHJveHlGdW5jdGlvbjogbnVsbCxcclxuICAgICAgICAgICAgcmV2ZXJ0OiAoKSA9PiB7IC8vIENhbGxpbmcgcmV2ZXJ0IHdpbGwgZGVzdHJveSBhbnkgcGF0Y2hlcyBhZGRlZCB0byB0aGUgc2FtZSBtb2R1bGUgYWZ0ZXIgdGhpc1xyXG4gICAgICAgICAgICAgICAgcGF0Y2gubW9kdWxlW3BhdGNoLmZ1bmN0aW9uTmFtZV0gPSBwYXRjaC5vcmlnaW5hbEZ1bmN0aW9uO1xyXG4gICAgICAgICAgICAgICAgcGF0Y2gucHJveHlGdW5jdGlvbiA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICBwYXRjaC5jaGlsZHJlbiA9IFtdO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBjb3VudGVyOiAwLFxyXG4gICAgICAgICAgICBjaGlsZHJlbjogW11cclxuICAgICAgICB9O1xyXG4gICAgICAgIHBhdGNoLnByb3h5RnVuY3Rpb24gPSBtb2R1bGVbZnVuY3Rpb25OYW1lXSA9IHRoaXMubWFrZU92ZXJyaWRlKHBhdGNoKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5wYXRjaGVzLnB1c2gocGF0Y2gpLCBwYXRjaDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEZ1bmN0aW9uIHdpdGggbm8gYXJndW1lbnRzIGFuZCBubyByZXR1cm4gdmFsdWUgdGhhdCBtYXkgYmUgY2FsbGVkIHRvIHJldmVydCBjaGFuZ2VzIG1hZGUgYnkge0BsaW5rIG1vZHVsZTpQYXRjaGVyfSwgcmVzdG9yaW5nICh1bnBhdGNoaW5nKSBvcmlnaW5hbCBtZXRob2QuXHJcbiAgICAgKiBAY2FsbGJhY2sgbW9kdWxlOlBhdGNoZXJ+dW5wYXRjaFxyXG4gICAgICovXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBIGNhbGxiYWNrIHRoYXQgbW9kaWZpZXMgbWV0aG9kIGxvZ2ljLiBUaGlzIGNhbGxiYWNrIGlzIGNhbGxlZCBvbiBlYWNoIGNhbGwgb2YgdGhlIG9yaWdpbmFsIG1ldGhvZCBhbmQgaXMgcHJvdmlkZWQgYWxsIGRhdGEgYWJvdXQgb3JpZ2luYWwgY2FsbC4gQW55IG9mIHRoZSBkYXRhIGNhbiBiZSBtb2RpZmllZCBpZiBuZWNlc3NhcnksIGJ1dCBkbyBzbyB3aXNlbHkuXHJcbiAgICAgKlxyXG4gICAgICogVGhlIHRoaXJkIGFyZ3VtZW50IGZvciB0aGUgY2FsbGJhY2sgd2lsbCBiZSBgdW5kZWZpbmVkYCBmb3IgYGJlZm9yZWAgcGF0Y2hlcy4gYG9yaWdpbmFsRnVuY3Rpb25gIGZvciBgaW5zdGVhZGAgcGF0Y2hlcyBhbmQgYHJldHVyblZhbHVlYCBmb3IgYGFmdGVyYCBwYXRjaGVzLlxyXG4gICAgICpcclxuICAgICAqIEBjYWxsYmFjayBtb2R1bGU6UGF0Y2hlcn5wYXRjaENhbGxiYWNrXHJcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gdGhpc09iamVjdCAtIGB0aGlzYCBpbiB0aGUgY29udGV4dCBvZiB0aGUgb3JpZ2luYWwgZnVuY3Rpb24uXHJcbiAgICAgKiBAcGFyYW0ge2FyZ3VtZW50c30gYXJndW1lbnRzIC0gVGhlIG9yaWdpbmFsIGFyZ3VtZW50cyBvZiB0aGUgb3JpZ2luYWwgZnVuY3Rpb24uXHJcbiAgICAgKiBAcGFyYW0geyhmdW5jdGlvbnwqKX0gZXh0cmFWYWx1ZSAtIEZvciBgaW5zdGVhZGAgcGF0Y2hlcywgdGhpcyBpcyB0aGUgb3JpZ2luYWwgZnVuY3Rpb24gZnJvbSB0aGUgbW9kdWxlLiBGb3IgYGFmdGVyYCBwYXRjaGVzLCB0aGlzIGlzIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIGZ1bmN0aW9uLlxyXG4gICAgICogQHJldHVybiB7Kn0gTWFrZXMgc2Vuc2Ugb25seSB3aGVuIHVzaW5nIGFuIGBpbnN0ZWFkYCBvciBgYWZ0ZXJgIHBhdGNoLiBJZiBzb21ldGhpbmcgb3RoZXIgdGhhbiBgdW5kZWZpbmVkYCBpcyByZXR1cm5lZCwgdGhlIHJldHVybmVkIHZhbHVlIHJlcGxhY2VzIHRoZSB2YWx1ZSBvZiBgcmV0dXJuVmFsdWVgLiBJZiB1c2VkIGZvciBgYmVmb3JlYCB0aGUgcmV0dXJuIHZhbHVlIGlzIGlnbm9yZWQuXHJcbiAgICAgKi9cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoaXMgbWV0aG9kIHBhdGNoZXMgb250byBhbm90aGVyIGZ1bmN0aW9uLCBhbGxvd2luZyB5b3VyIGNvZGUgdG8gcnVuIGJlZm9yZWhhbmQuXHJcbiAgICAgKiBVc2luZyB0aGlzLCB5b3UgYXJlIGFsc28gYWJsZSB0byBtb2RpZnkgdGhlIGluY29taW5nIGFyZ3VtZW50cyBiZWZvcmUgdGhlIG9yaWdpbmFsIG1ldGhvZCBpcyBydW4uXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGNhbGxlciAtIE5hbWUgb2YgdGhlIGNhbGxlciBvZiB0aGUgcGF0Y2ggZnVuY3Rpb24uIFVzaW5nIHRoaXMgeW91IGNhbiB1bmRvIGFsbCBwYXRjaGVzIHdpdGggdGhlIHNhbWUgbmFtZSB1c2luZyB7QGxpbmsgbW9kdWxlOlBhdGNoZXIudW5wYXRjaEFsbH0uIFVzZSBgXCJcImAgaWYgeW91IGRvbid0IGNhcmUuXHJcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gbW9kdWxlVG9QYXRjaCAtIE9iamVjdCB3aXRoIHRoZSBmdW5jdGlvbiB0byBiZSBwYXRjaGVkLiBDYW4gYWxzbyBwYXRjaCBhbiBvYmplY3QncyBwcm90b3R5cGUuXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZnVuY3Rpb25OYW1lIC0gTmFtZSBvZiB0aGUgbWV0aG9kIHRvIGJlIHBhdGNoZWRcclxuICAgICAqIEBwYXJhbSB7bW9kdWxlOlBhdGNoZXJ+cGF0Y2hDYWxsYmFja30gY2FsbGJhY2sgLSBGdW5jdGlvbiB0byBydW4gYmVmb3JlIHRoZSBvcmlnaW5hbCBtZXRob2RcclxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBvcHRpb25zIC0gT2JqZWN0IHVzZWQgdG8gcGFzcyBhZGRpdGlvbmFsIG9wdGlvbnMuXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMuZGlzcGxheU5hbWVdIFlvdSBjYW4gcHJvdmlkZSBtZWFuaW5nZnVsIG5hbWUgZm9yIGNsYXNzL29iamVjdCBwcm92aWRlZCBpbiBgd2hhdGAgcGFyYW0gZm9yIGxvZ2dpbmcgcHVycG9zZXMuIEJ5IGRlZmF1bHQsIHRoaXMgZnVuY3Rpb24gd2lsbCB0cnkgdG8gZGV0ZXJtaW5lIG5hbWUgYXV0b21hdGljYWxseS5cclxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMuZm9yY2VQYXRjaD10cnVlXSBTZXQgdG8gYHRydWVgIHRvIHBhdGNoIGV2ZW4gaWYgdGhlIGZ1bmN0aW9uIGRvZXNudCBleGlzdC4gKEFkZHMgbm9vcCBmdW5jdGlvbiBpbiBwbGFjZSkuXHJcbiAgICAgKiBAcmV0dXJuIHttb2R1bGU6UGF0Y2hlcn51bnBhdGNofSBGdW5jdGlvbiB3aXRoIG5vIGFyZ3VtZW50cyBhbmQgbm8gcmV0dXJuIHZhbHVlIHRoYXQgc2hvdWxkIGJlIGNhbGxlZCB0byBjYW5jZWwgKHVucGF0Y2gpIHRoaXMgcGF0Y2guIFlvdSBzaG91bGQgc2F2ZSBhbmQgcnVuIGl0IHdoZW4geW91ciBwbHVnaW4gaXMgc3RvcHBlZC5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGJlZm9yZShjYWxsZXIsIG1vZHVsZVRvUGF0Y2gsIGZ1bmN0aW9uTmFtZSwgY2FsbGJhY2ssIG9wdGlvbnMgPSB7fSkgeyByZXR1cm4gdGhpcy5wdXNoQ2hpbGRQYXRjaChjYWxsZXIsIG1vZHVsZVRvUGF0Y2gsIGZ1bmN0aW9uTmFtZSwgY2FsbGJhY2ssIE9iamVjdC5hc3NpZ24ob3B0aW9ucywge3R5cGU6IFwiYmVmb3JlXCJ9KSk7IH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoaXMgbWV0aG9kIHBhdGNoZXMgb250byBhbm90aGVyIGZ1bmN0aW9uLCBhbGxvd2luZyB5b3VyIGNvZGUgdG8gcnVuIGFmdGVyLlxyXG4gICAgICogVXNpbmcgdGhpcywgeW91IGFyZSBhbHNvIGFibGUgdG8gbW9kaWZ5IHRoZSByZXR1cm4gdmFsdWUsIHVzaW5nIHRoZSByZXR1cm4gb2YgeW91ciBjb2RlIGluc3RlYWQuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGNhbGxlciAtIE5hbWUgb2YgdGhlIGNhbGxlciBvZiB0aGUgcGF0Y2ggZnVuY3Rpb24uIFVzaW5nIHRoaXMgeW91IGNhbiB1bmRvIGFsbCBwYXRjaGVzIHdpdGggdGhlIHNhbWUgbmFtZSB1c2luZyB7QGxpbmsgbW9kdWxlOlBhdGNoZXIudW5wYXRjaEFsbH0uIFVzZSBgXCJcImAgaWYgeW91IGRvbid0IGNhcmUuXHJcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gbW9kdWxlVG9QYXRjaCAtIE9iamVjdCB3aXRoIHRoZSBmdW5jdGlvbiB0byBiZSBwYXRjaGVkLiBDYW4gYWxzbyBwYXRjaCBhbiBvYmplY3QncyBwcm90b3R5cGUuXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZnVuY3Rpb25OYW1lIC0gTmFtZSBvZiB0aGUgbWV0aG9kIHRvIGJlIHBhdGNoZWRcclxuICAgICAqIEBwYXJhbSB7bW9kdWxlOlBhdGNoZXJ+cGF0Y2hDYWxsYmFja30gY2FsbGJhY2sgLSBGdW5jdGlvbiB0byBydW4gaW5zdGVhZCBvZiB0aGUgb3JpZ2luYWwgbWV0aG9kXHJcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gb3B0aW9ucyAtIE9iamVjdCB1c2VkIHRvIHBhc3MgYWRkaXRpb25hbCBvcHRpb25zLlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLmRpc3BsYXlOYW1lXSBZb3UgY2FuIHByb3ZpZGUgbWVhbmluZ2Z1bCBuYW1lIGZvciBjbGFzcy9vYmplY3QgcHJvdmlkZWQgaW4gYHdoYXRgIHBhcmFtIGZvciBsb2dnaW5nIHB1cnBvc2VzLiBCeSBkZWZhdWx0LCB0aGlzIGZ1bmN0aW9uIHdpbGwgdHJ5IHRvIGRldGVybWluZSBuYW1lIGF1dG9tYXRpY2FsbHkuXHJcbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLmZvcmNlUGF0Y2g9dHJ1ZV0gU2V0IHRvIGB0cnVlYCB0byBwYXRjaCBldmVuIGlmIHRoZSBmdW5jdGlvbiBkb2VzbnQgZXhpc3QuIChBZGRzIG5vb3AgZnVuY3Rpb24gaW4gcGxhY2UpLlxyXG4gICAgICogQHJldHVybiB7bW9kdWxlOlBhdGNoZXJ+dW5wYXRjaH0gRnVuY3Rpb24gd2l0aCBubyBhcmd1bWVudHMgYW5kIG5vIHJldHVybiB2YWx1ZSB0aGF0IHNob3VsZCBiZSBjYWxsZWQgdG8gY2FuY2VsICh1bnBhdGNoKSB0aGlzIHBhdGNoLiBZb3Ugc2hvdWxkIHNhdmUgYW5kIHJ1biBpdCB3aGVuIHlvdXIgcGx1Z2luIGlzIHN0b3BwZWQuXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBhZnRlcihjYWxsZXIsIG1vZHVsZVRvUGF0Y2gsIGZ1bmN0aW9uTmFtZSwgY2FsbGJhY2ssIG9wdGlvbnMgPSB7fSkgeyByZXR1cm4gdGhpcy5wdXNoQ2hpbGRQYXRjaChjYWxsZXIsIG1vZHVsZVRvUGF0Y2gsIGZ1bmN0aW9uTmFtZSwgY2FsbGJhY2ssIE9iamVjdC5hc3NpZ24ob3B0aW9ucywge3R5cGU6IFwiYWZ0ZXJcIn0pKTsgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhpcyBtZXRob2QgcGF0Y2hlcyBvbnRvIGFub3RoZXIgZnVuY3Rpb24sIGFsbG93aW5nIHlvdXIgY29kZSB0byBydW4gaW5zdGVhZC5cclxuICAgICAqIFVzaW5nIHRoaXMsIHlvdSBhcmUgYWxzbyBhYmxlIHRvIG1vZGlmeSB0aGUgcmV0dXJuIHZhbHVlLCB1c2luZyB0aGUgcmV0dXJuIG9mIHlvdXIgY29kZSBpbnN0ZWFkLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBjYWxsZXIgLSBOYW1lIG9mIHRoZSBjYWxsZXIgb2YgdGhlIHBhdGNoIGZ1bmN0aW9uLiBVc2luZyB0aGlzIHlvdSBjYW4gdW5kbyBhbGwgcGF0Y2hlcyB3aXRoIHRoZSBzYW1lIG5hbWUgdXNpbmcge0BsaW5rIG1vZHVsZTpQYXRjaGVyLnVucGF0Y2hBbGx9LiBVc2UgYFwiXCJgIGlmIHlvdSBkb24ndCBjYXJlLlxyXG4gICAgICogQHBhcmFtIHtvYmplY3R9IG1vZHVsZVRvUGF0Y2ggLSBPYmplY3Qgd2l0aCB0aGUgZnVuY3Rpb24gdG8gYmUgcGF0Y2hlZC4gQ2FuIGFsc28gcGF0Y2ggYW4gb2JqZWN0J3MgcHJvdG90eXBlLlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGZ1bmN0aW9uTmFtZSAtIE5hbWUgb2YgdGhlIG1ldGhvZCB0byBiZSBwYXRjaGVkXHJcbiAgICAgKiBAcGFyYW0ge21vZHVsZTpQYXRjaGVyfnBhdGNoQ2FsbGJhY2t9IGNhbGxiYWNrIC0gRnVuY3Rpb24gdG8gcnVuIGFmdGVyIHRoZSBvcmlnaW5hbCBtZXRob2RcclxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBvcHRpb25zIC0gT2JqZWN0IHVzZWQgdG8gcGFzcyBhZGRpdGlvbmFsIG9wdGlvbnMuXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMuZGlzcGxheU5hbWVdIFlvdSBjYW4gcHJvdmlkZSBtZWFuaW5nZnVsIG5hbWUgZm9yIGNsYXNzL29iamVjdCBwcm92aWRlZCBpbiBgd2hhdGAgcGFyYW0gZm9yIGxvZ2dpbmcgcHVycG9zZXMuIEJ5IGRlZmF1bHQsIHRoaXMgZnVuY3Rpb24gd2lsbCB0cnkgdG8gZGV0ZXJtaW5lIG5hbWUgYXV0b21hdGljYWxseS5cclxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMuZm9yY2VQYXRjaD10cnVlXSBTZXQgdG8gYHRydWVgIHRvIHBhdGNoIGV2ZW4gaWYgdGhlIGZ1bmN0aW9uIGRvZXNudCBleGlzdC4gKEFkZHMgbm9vcCBmdW5jdGlvbiBpbiBwbGFjZSkuXHJcbiAgICAgKiBAcmV0dXJuIHttb2R1bGU6UGF0Y2hlcn51bnBhdGNofSBGdW5jdGlvbiB3aXRoIG5vIGFyZ3VtZW50cyBhbmQgbm8gcmV0dXJuIHZhbHVlIHRoYXQgc2hvdWxkIGJlIGNhbGxlZCB0byBjYW5jZWwgKHVucGF0Y2gpIHRoaXMgcGF0Y2guIFlvdSBzaG91bGQgc2F2ZSBhbmQgcnVuIGl0IHdoZW4geW91ciBwbHVnaW4gaXMgc3RvcHBlZC5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGluc3RlYWQoY2FsbGVyLCBtb2R1bGVUb1BhdGNoLCBmdW5jdGlvbk5hbWUsIGNhbGxiYWNrLCBvcHRpb25zID0ge30pIHsgcmV0dXJuIHRoaXMucHVzaENoaWxkUGF0Y2goY2FsbGVyLCBtb2R1bGVUb1BhdGNoLCBmdW5jdGlvbk5hbWUsIGNhbGxiYWNrLCBPYmplY3QuYXNzaWduKG9wdGlvbnMsIHt0eXBlOiBcImluc3RlYWRcIn0pKTsgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhpcyBtZXRob2QgcGF0Y2hlcyBvbnRvIGFub3RoZXIgZnVuY3Rpb24sIGFsbG93aW5nIHlvdXIgY29kZSB0byBydW4gYmVmb3JlLCBpbnN0ZWFkIG9yIGFmdGVyIHRoZSBvcmlnaW5hbCBmdW5jdGlvbi5cclxuICAgICAqIFVzaW5nIHRoaXMgeW91IGFyZSBhYmxlIHRvIG1vZGlmeSB0aGUgaW5jb21pbmcgYXJndW1lbnRzIGJlZm9yZSB0aGUgb3JpZ2luYWwgZnVuY3Rpb24gaXMgcnVuIGFzIHdlbGwgYXMgdGhlIHJldHVyblxyXG4gICAgICogdmFsdWUgYmVmb3JlIHRoZSBvcmlnaW5hbCBmdW5jdGlvbiBhY3R1YWxseSByZXR1cm5zLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBjYWxsZXIgLSBOYW1lIG9mIHRoZSBjYWxsZXIgb2YgdGhlIHBhdGNoIGZ1bmN0aW9uLiBVc2luZyB0aGlzIHlvdSBjYW4gdW5kbyBhbGwgcGF0Y2hlcyB3aXRoIHRoZSBzYW1lIG5hbWUgdXNpbmcge0BsaW5rIG1vZHVsZTpQYXRjaGVyLnVucGF0Y2hBbGx9LiBVc2UgYFwiXCJgIGlmIHlvdSBkb24ndCBjYXJlLlxyXG4gICAgICogQHBhcmFtIHtvYmplY3R9IG1vZHVsZVRvUGF0Y2ggLSBPYmplY3Qgd2l0aCB0aGUgZnVuY3Rpb24gdG8gYmUgcGF0Y2hlZC4gQ2FuIGFsc28gcGF0Y2ggYW4gb2JqZWN0J3MgcHJvdG90eXBlLlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGZ1bmN0aW9uTmFtZSAtIE5hbWUgb2YgdGhlIG1ldGhvZCB0byBiZSBwYXRjaGVkXHJcbiAgICAgKiBAcGFyYW0ge21vZHVsZTpQYXRjaGVyfnBhdGNoQ2FsbGJhY2t9IGNhbGxiYWNrIC0gRnVuY3Rpb24gdG8gcnVuIGFmdGVyIHRoZSBvcmlnaW5hbCBtZXRob2RcclxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBvcHRpb25zIC0gT2JqZWN0IHVzZWQgdG8gcGFzcyBhZGRpdGlvbmFsIG9wdGlvbnMuXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMudHlwZT1hZnRlcl0gLSBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gcnVuIHRoZSBmdW5jdGlvbiBgYmVmb3JlYCwgYGluc3RlYWRgLCBvciBgYWZ0ZXJgIHRoZSBvcmlnaW5hbC5cclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5kaXNwbGF5TmFtZV0gWW91IGNhbiBwcm92aWRlIG1lYW5pbmdmdWwgbmFtZSBmb3IgY2xhc3Mvb2JqZWN0IHByb3ZpZGVkIGluIGB3aGF0YCBwYXJhbSBmb3IgbG9nZ2luZyBwdXJwb3Nlcy4gQnkgZGVmYXVsdCwgdGhpcyBmdW5jdGlvbiB3aWxsIHRyeSB0byBkZXRlcm1pbmUgbmFtZSBhdXRvbWF0aWNhbGx5LlxyXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5mb3JjZVBhdGNoPXRydWVdIFNldCB0byBgdHJ1ZWAgdG8gcGF0Y2ggZXZlbiBpZiB0aGUgZnVuY3Rpb24gZG9lc250IGV4aXN0LiAoQWRkcyBub29wIGZ1bmN0aW9uIGluIHBsYWNlKS5cclxuICAgICAqIEByZXR1cm4ge21vZHVsZTpQYXRjaGVyfnVucGF0Y2h9IEZ1bmN0aW9uIHdpdGggbm8gYXJndW1lbnRzIGFuZCBubyByZXR1cm4gdmFsdWUgdGhhdCBzaG91bGQgYmUgY2FsbGVkIHRvIGNhbmNlbCAodW5wYXRjaCkgdGhpcyBwYXRjaC4gWW91IHNob3VsZCBzYXZlIGFuZCBydW4gaXQgd2hlbiB5b3VyIHBsdWdpbiBpcyBzdG9wcGVkLlxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgcHVzaENoaWxkUGF0Y2goY2FsbGVyLCBtb2R1bGVUb1BhdGNoLCBmdW5jdGlvbk5hbWUsIGNhbGxiYWNrLCBvcHRpb25zID0ge30pIHtcclxuXHRcdGNvbnN0IHt0eXBlID0gXCJhZnRlclwiLCBmb3JjZVBhdGNoID0gdHJ1ZX0gPSBvcHRpb25zO1xyXG5cdFx0Y29uc3QgbW9kdWxlID0gdGhpcy5yZXNvbHZlTW9kdWxlKG1vZHVsZVRvUGF0Y2gpO1xyXG5cdFx0aWYgKCFtb2R1bGUpIHJldHVybiBudWxsO1xyXG5cdFx0aWYgKCFtb2R1bGVbZnVuY3Rpb25OYW1lXSAmJiBmb3JjZVBhdGNoKSBtb2R1bGVbZnVuY3Rpb25OYW1lXSA9IGZ1bmN0aW9uKCkge307XHJcblx0XHRpZiAoIShtb2R1bGVbZnVuY3Rpb25OYW1lXSBpbnN0YW5jZW9mIEZ1bmN0aW9uKSkgcmV0dXJuIG51bGw7XHJcblxyXG5cdFx0aWYgKHR5cGVvZiBtb2R1bGVUb1BhdGNoID09PSBcInN0cmluZ1wiKSBvcHRpb25zLmRpc3BsYXlOYW1lID0gbW9kdWxlVG9QYXRjaDtcclxuICAgICAgICBjb25zdCBkaXNwbGF5TmFtZSA9IG9wdGlvbnMuZGlzcGxheU5hbWUgfHwgbW9kdWxlLmRpc3BsYXlOYW1lIHx8IG1vZHVsZS5uYW1lIHx8IG1vZHVsZS5jb25zdHJ1Y3Rvci5kaXNwbGF5TmFtZSB8fCBtb2R1bGUuY29uc3RydWN0b3IubmFtZTtcclxuXHJcblx0XHRjb25zdCBwYXRjaElkID0gYCR7ZGlzcGxheU5hbWV9LiR7ZnVuY3Rpb25OYW1lfWA7XHJcbiAgICAgICAgY29uc3QgcGF0Y2ggPSB0aGlzLnBhdGNoZXMuZmluZChwID0+IHAubW9kdWxlID09IG1vZHVsZSAmJiBwLmZ1bmN0aW9uTmFtZSA9PSBmdW5jdGlvbk5hbWUpIHx8IHRoaXMubWFrZVBhdGNoKG1vZHVsZSwgZnVuY3Rpb25OYW1lLCBwYXRjaElkKTtcclxuICAgICAgICBpZiAoIXBhdGNoLnByb3h5RnVuY3Rpb24pIHRoaXMucmVQYXRjaChwYXRjaCk7XHJcbiAgICAgICAgY29uc3QgY2hpbGQgPSB7XHJcbiAgICAgICAgICAgIGNhbGxlcixcclxuICAgICAgICAgICAgdHlwZSxcclxuICAgICAgICAgICAgaWQ6IHBhdGNoLmNvdW50ZXIsXHJcbiAgICAgICAgICAgIGNhbGxiYWNrLFxyXG4gICAgICAgICAgICB1bnBhdGNoOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBwYXRjaC5jaGlsZHJlbi5zcGxpY2UocGF0Y2guY2hpbGRyZW4uZmluZEluZGV4KGNwYXRjaCA9PiBjcGF0Y2guaWQgPT09IGNoaWxkLmlkICYmIGNwYXRjaC50eXBlID09PSB0eXBlKSwgMSk7XHJcbiAgICAgICAgICAgICAgICBpZiAocGF0Y2guY2hpbGRyZW4ubGVuZ3RoIDw9IDApIHtcclxuXHRcdFx0XHRcdGNvbnN0IHBhdGNoTnVtID0gdGhpcy5wYXRjaGVzLmZpbmRJbmRleChwID0+IHAubW9kdWxlID09IG1vZHVsZSAmJiBwLmZ1bmN0aW9uTmFtZSA9PSBmdW5jdGlvbk5hbWUpO1xyXG5cdFx0XHRcdFx0dGhpcy5wYXRjaGVzW3BhdGNoTnVtXS5yZXZlcnQoKTtcclxuXHRcdFx0XHRcdHRoaXMucGF0Y2hlcy5zcGxpY2UocGF0Y2hOdW0sIDEpO1xyXG5cdFx0XHRcdH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgcGF0Y2guY2hpbGRyZW4ucHVzaChjaGlsZCk7XHJcbiAgICAgICAgcGF0Y2guY291bnRlcisrO1xyXG4gICAgICAgIHJldHVybiBjaGlsZC51bnBhdGNoO1xyXG4gICAgfVxyXG5cclxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/patcher.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Patcher; });\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./logger */ \"./src/modules/logger.js\");\n/* harmony import */ var _discordmodules__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./discordmodules */ \"./src/modules/discordmodules.js\");\n/* harmony import */ var _webpackmodules__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./webpackmodules */ \"./src/modules/webpackmodules.js\");\n/**\r\n * Patcher that can patch other functions allowing you to run code before, after or\r\n * instead of the original function. Can also alter arguments and return values.\r\n *\r\n * This is from Zerebos' library {@link https://github.com/JsSucks/BetterDiscordApp/blob/master/client/src/modules/patcher.js}\r\n *\r\n * @module Patcher\r\n * @version 0.0.2\r\n */\n\n\n\nclass Patcher {\n static get patches() {\n return this._patches || (this._patches = []);\n }\n /**\r\n * Returns all the patches done by a specific caller\r\n * @param {string} name - Name of the patch caller\r\n * @method\r\n */\n\n\n static getPatchesByCaller(name) {\n if (!name) return [];\n const patches = [];\n\n for (const patch of this.patches) {\n for (const childPatch of patch.children) {\n if (childPatch.caller === name) patches.push(childPatch);\n }\n }\n\n return patches;\n }\n /**\r\n * Unpatches all patches passed, or when a string is passed unpatches all\r\n * patches done by that specific caller.\r\n * @param {Array|string} patches - Either an array of patches to unpatch or a caller name\r\n */\n\n\n static unpatchAll(patches) {\n if (typeof patches === \"string\") patches = this.getPatchesByCaller(patches);\n\n for (const patch of patches) {\n patch.unpatch();\n }\n }\n\n static resolveModule(module) {\n if (module instanceof Function || module instanceof Object && !(module instanceof Array)) return module;\n if (typeof module === \"string\") return _discordmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"][module];\n if (module instanceof Array) return _webpackmodules__WEBPACK_IMPORTED_MODULE_2__[\"default\"].findByUniqueProperties(module);\n return null;\n }\n\n static makeOverride(patch) {\n return function () {\n let returnValue = undefined;\n if (!patch.children || !patch.children.length) return patch.originalFunction.apply(this, arguments);\n\n for (const superPatch of patch.children.filter(c => c.type === \"before\")) {\n try {\n superPatch.callback(this, arguments);\n } catch (err) {\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"default\"].err(\"Patcher\", `Could not fire before callback of ${patch.functionName} for ${superPatch.caller}`, err);\n }\n }\n\n const insteads = patch.children.filter(c => c.type === \"instead\");\n\n if (!insteads.length) {\n returnValue = patch.originalFunction.apply(this, arguments);\n } else {\n for (const insteadPatch of insteads) {\n try {\n const tempReturn = insteadPatch.callback(this, arguments, patch.originalFunction.bind(this));\n if (typeof tempReturn !== \"undefined\") returnValue = tempReturn;\n } catch (err) {\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"default\"].err(\"Patcher\", `Could not fire instead callback of ${patch.functionName} for ${insteadPatch.caller}`, err);\n }\n }\n }\n\n for (const slavePatch of patch.children.filter(c => c.type === \"after\")) {\n try {\n const tempReturn = slavePatch.callback(this, arguments, returnValue);\n if (typeof tempReturn !== \"undefined\") returnValue = tempReturn;\n } catch (err) {\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"default\"].err(\"Patcher\", `Could not fire after callback of ${patch.functionName} for ${slavePatch.caller}`, err);\n }\n }\n\n return returnValue;\n };\n }\n\n static rePatch(patch) {\n patch.proxyFunction = patch.module[patch.functionName] = this.makeOverride(patch);\n }\n\n static makePatch(module, functionName, name) {\n const patch = {\n name,\n module,\n functionName,\n originalFunction: module[functionName],\n proxyFunction: null,\n revert: () => {\n // Calling revert will destroy any patches added to the same module after this\n patch.module[patch.functionName] = patch.originalFunction;\n patch.proxyFunction = null;\n patch.children = [];\n },\n counter: 0,\n children: []\n };\n patch.proxyFunction = module[functionName] = this.makeOverride(patch);\n return this.patches.push(patch), patch;\n }\n /**\r\n * Function with no arguments and no return value that may be called to revert changes made by {@link module:Patcher}, restoring (unpatching) original method.\r\n * @callback module:Patcher~unpatch\r\n */\n\n /**\r\n * A callback that modifies method logic. This callback is called on each call of the original method and is provided all data about original call. Any of the data can be modified if necessary, but do so wisely.\r\n *\r\n * The third argument for the callback will be `undefined` for `before` patches. `originalFunction` for `instead` patches and `returnValue` for `after` patches.\r\n *\r\n * @callback module:Patcher~patchCallback\r\n * @param {object} thisObject - `this` in the context of the original function.\r\n * @param {arguments} arguments - The original arguments of the original function.\r\n * @param {(function|*)} extraValue - For `instead` patches, this is the original function from the module. For `after` patches, this is the return value of the function.\r\n * @return {*} Makes sense only when using an `instead` or `after` patch. If something other than `undefined` is returned, the returned value replaces the value of `returnValue`. If used for `before` the return value is ignored.\r\n */\n\n /**\r\n * This method patches onto another function, allowing your code to run beforehand.\r\n * Using this, you are also able to modify the incoming arguments before the original method is run.\r\n *\r\n * @param {string} caller - Name of the caller of the patch function. Using this you can undo all patches with the same name using {@link module:Patcher.unpatchAll}. Use `\"\"` if you don't care.\r\n * @param {object} moduleToPatch - Object with the function to be patched. Can also patch an object's prototype.\r\n * @param {string} functionName - Name of the method to be patched\r\n * @param {module:Patcher~patchCallback} callback - Function to run before the original method\r\n * @param {object} options - Object used to pass additional options.\r\n * @param {string} [options.displayName] You can provide meaningful name for class/object provided in `what` param for logging purposes. By default, this function will try to determine name automatically.\r\n * @param {boolean} [options.forcePatch=true] Set to `true` to patch even if the function doesnt exist. (Adds noop function in place).\r\n * @return {module:Patcher~unpatch} Function with no arguments and no return value that should be called to cancel (unpatch) this patch. You should save and run it when your plugin is stopped.\r\n */\n\n\n static before(caller, moduleToPatch, functionName, callback, options = {}) {\n return this.pushChildPatch(caller, moduleToPatch, functionName, callback, Object.assign(options, {\n type: \"before\"\n }));\n }\n /**\r\n * This method patches onto another function, allowing your code to run after.\r\n * Using this, you are also able to modify the return value, using the return of your code instead.\r\n *\r\n * @param {string} caller - Name of the caller of the patch function. Using this you can undo all patches with the same name using {@link module:Patcher.unpatchAll}. Use `\"\"` if you don't care.\r\n * @param {object} moduleToPatch - Object with the function to be patched. Can also patch an object's prototype.\r\n * @param {string} functionName - Name of the method to be patched\r\n * @param {module:Patcher~patchCallback} callback - Function to run instead of the original method\r\n * @param {object} options - Object used to pass additional options.\r\n * @param {string} [options.displayName] You can provide meaningful name for class/object provided in `what` param for logging purposes. By default, this function will try to determine name automatically.\r\n * @param {boolean} [options.forcePatch=true] Set to `true` to patch even if the function doesnt exist. (Adds noop function in place).\r\n * @return {module:Patcher~unpatch} Function with no arguments and no return value that should be called to cancel (unpatch) this patch. You should save and run it when your plugin is stopped.\r\n */\n\n\n static after(caller, moduleToPatch, functionName, callback, options = {}) {\n return this.pushChildPatch(caller, moduleToPatch, functionName, callback, Object.assign(options, {\n type: \"after\"\n }));\n }\n /**\r\n * This method patches onto another function, allowing your code to run instead.\r\n * Using this, you are also able to modify the return value, using the return of your code instead.\r\n *\r\n * @param {string} caller - Name of the caller of the patch function. Using this you can undo all patches with the same name using {@link module:Patcher.unpatchAll}. Use `\"\"` if you don't care.\r\n * @param {object} moduleToPatch - Object with the function to be patched. Can also patch an object's prototype.\r\n * @param {string} functionName - Name of the method to be patched\r\n * @param {module:Patcher~patchCallback} callback - Function to run after the original method\r\n * @param {object} options - Object used to pass additional options.\r\n * @param {string} [options.displayName] You can provide meaningful name for class/object provided in `what` param for logging purposes. By default, this function will try to determine name automatically.\r\n * @param {boolean} [options.forcePatch=true] Set to `true` to patch even if the function doesnt exist. (Adds noop function in place).\r\n * @return {module:Patcher~unpatch} Function with no arguments and no return value that should be called to cancel (unpatch) this patch. You should save and run it when your plugin is stopped.\r\n */\n\n\n static instead(caller, moduleToPatch, functionName, callback, options = {}) {\n return this.pushChildPatch(caller, moduleToPatch, functionName, callback, Object.assign(options, {\n type: \"instead\"\n }));\n }\n /**\r\n * This method patches onto another function, allowing your code to run before, instead or after the original function.\r\n * Using this you are able to modify the incoming arguments before the original function is run as well as the return\r\n * value before the original function actually returns.\r\n *\r\n * @param {string} caller - Name of the caller of the patch function. Using this you can undo all patches with the same name using {@link module:Patcher.unpatchAll}. Use `\"\"` if you don't care.\r\n * @param {object} moduleToPatch - Object with the function to be patched. Can also patch an object's prototype.\r\n * @param {string} functionName - Name of the method to be patched\r\n * @param {module:Patcher~patchCallback} callback - Function to run after the original method\r\n * @param {object} options - Object used to pass additional options.\r\n * @param {string} [options.type=after] - Determines whether to run the function `before`, `instead`, or `after` the original.\r\n * @param {string} [options.displayName] You can provide meaningful name for class/object provided in `what` param for logging purposes. By default, this function will try to determine name automatically.\r\n * @param {boolean} [options.forcePatch=true] Set to `true` to patch even if the function doesnt exist. (Adds noop function in place).\r\n * @return {module:Patcher~unpatch} Function with no arguments and no return value that should be called to cancel (unpatch) this patch. You should save and run it when your plugin is stopped.\r\n */\n\n\n static pushChildPatch(caller, moduleToPatch, functionName, callback, options = {}) {\n const {\n type = \"after\",\n forcePatch = true\n } = options;\n const module = this.resolveModule(moduleToPatch);\n if (!module) return null;\n if (!module[functionName] && forcePatch) module[functionName] = function () {};\n if (!(module[functionName] instanceof Function)) return null;\n if (typeof moduleToPatch === \"string\") options.displayName = moduleToPatch;\n const displayName = options.displayName || module.displayName || module.name || module.constructor.displayName || module.constructor.name;\n const patchId = `${displayName}.${functionName}`;\n const patch = this.patches.find(p => p.module == module && p.functionName == functionName) || this.makePatch(module, functionName, patchId);\n if (!patch.proxyFunction) this.rePatch(patch);\n const child = {\n caller,\n type,\n id: patch.counter,\n callback,\n unpatch: () => {\n patch.children.splice(patch.children.findIndex(cpatch => cpatch.id === child.id && cpatch.type === type), 1);\n\n if (patch.children.length <= 0) {\n const patchNum = this.patches.findIndex(p => p.module == module && p.functionName == functionName);\n this.patches[patchNum].revert();\n this.patches.splice(patchNum, 1);\n }\n }\n };\n patch.children.push(child);\n patch.counter++;\n return child.unpatch;\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9wYXRjaGVyLmpzPzI1NTAiXSwibmFtZXMiOlsiUGF0Y2hlciIsInBhdGNoZXMiLCJfcGF0Y2hlcyIsImdldFBhdGNoZXNCeUNhbGxlciIsIm5hbWUiLCJwYXRjaCIsImNoaWxkUGF0Y2giLCJjaGlsZHJlbiIsImNhbGxlciIsInB1c2giLCJ1bnBhdGNoQWxsIiwidW5wYXRjaCIsInJlc29sdmVNb2R1bGUiLCJtb2R1bGUiLCJGdW5jdGlvbiIsIk9iamVjdCIsIkFycmF5IiwiRGlzY29yZE1vZHVsZXMiLCJXZWJwYWNrTW9kdWxlcyIsImZpbmRCeVVuaXF1ZVByb3BlcnRpZXMiLCJtYWtlT3ZlcnJpZGUiLCJyZXR1cm5WYWx1ZSIsInVuZGVmaW5lZCIsImxlbmd0aCIsIm9yaWdpbmFsRnVuY3Rpb24iLCJhcHBseSIsImFyZ3VtZW50cyIsInN1cGVyUGF0Y2giLCJmaWx0ZXIiLCJjIiwidHlwZSIsImNhbGxiYWNrIiwiZXJyIiwiTG9nZ2VyIiwiZnVuY3Rpb25OYW1lIiwiaW5zdGVhZHMiLCJpbnN0ZWFkUGF0Y2giLCJ0ZW1wUmV0dXJuIiwiYmluZCIsInNsYXZlUGF0Y2giLCJyZVBhdGNoIiwicHJveHlGdW5jdGlvbiIsIm1ha2VQYXRjaCIsInJldmVydCIsImNvdW50ZXIiLCJiZWZvcmUiLCJtb2R1bGVUb1BhdGNoIiwib3B0aW9ucyIsInB1c2hDaGlsZFBhdGNoIiwiYXNzaWduIiwiYWZ0ZXIiLCJpbnN0ZWFkIiwiZm9yY2VQYXRjaCIsImRpc3BsYXlOYW1lIiwiY29uc3RydWN0b3IiLCJwYXRjaElkIiwiZmluZCIsInAiLCJjaGlsZCIsImlkIiwic3BsaWNlIiwiZmluZEluZGV4IiwiY3BhdGNoIiwicGF0Y2hOdW0iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7Ozs7Ozs7O0FBVUE7QUFDQTtBQUNBO0FBRWUsTUFBTUEsT0FBTixDQUFjO0FBRXpCLGFBQVdDLE9BQVgsR0FB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LENBQXRCLEVBQTBHLENBQTFHOztBQUNBLFlBQUl6QixLQUFLLENBQUNFLFFBQU4sQ0FBZWdCLE1BQWYsSUFBeUIsQ0FBN0IsRUFBZ0M7QUFDM0MsZ0JBQU13QyxRQUFRLEdBQUcsS0FBSzlELE9BQUwsQ0FBYTRELFNBQWIsQ0FBdUJKLENBQUMsSUFBSUEsQ0FBQyxDQUFDNUMsTUFBRixJQUFZQSxNQUFaLElBQXNCNEMsQ0FBQyxDQUFDdkIsWUFBRixJQUFrQkEsWUFBcEUsQ0FBakI7QUFDQSxlQUFLakMsT0FBTCxDQUFhOEQsUUFBYixFQUF1QnBCLE1BQXZCO0FBQ0EsZUFBSzFDLE9BQUwsQ0FBYTJELE1BQWIsQ0FBb0JHLFFBQXBCLEVBQThCLENBQTlCO0FBQ0E7QUFDUTtBQVpTLEtBQWQ7QUFjQTFELFNBQUssQ0FBQ0UsUUFBTixDQUFlRSxJQUFmLENBQW9CaUQsS0FBcEI7QUFDQXJELFNBQUssQ0FBQ3VDLE9BQU47QUFDQSxXQUFPYyxLQUFLLENBQUMvQyxPQUFiO0FBQ0g7O0FBbE53QiIsImZpbGUiOiIuL3NyYy9tb2R1bGVzL3BhdGNoZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogUGF0Y2hlciB0aGF0IGNhbiBwYXRjaCBvdGhlciBmdW5jdGlvbnMgYWxsb3dpbmcgeW91IHRvIHJ1biBjb2RlIGJlZm9yZSwgYWZ0ZXIgb3JcclxuICogaW5zdGVhZCBvZiB0aGUgb3JpZ2luYWwgZnVuY3Rpb24uIENhbiBhbHNvIGFsdGVyIGFyZ3VtZW50cyBhbmQgcmV0dXJuIHZhbHVlcy5cclxuICpcclxuICogVGhpcyBpcyBmcm9tIFplcmVib3MnIGxpYnJhcnkge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9Kc1N1Y2tzL0JldHRlckRpc2NvcmRBcHAvYmxvYi9tYXN0ZXIvY2xpZW50L3NyYy9tb2R1bGVzL3BhdGNoZXIuanN9XHJcbiAqXHJcbiAqIEBtb2R1bGUgUGF0Y2hlclxyXG4gKiBAdmVyc2lvbiAwLjAuMlxyXG4gKi9cclxuXHJcbmltcG9ydCBMb2dnZXIgZnJvbSBcIi4vbG9nZ2VyXCI7XHJcbmltcG9ydCBEaXNjb3JkTW9kdWxlcyBmcm9tIFwiLi9kaXNjb3JkbW9kdWxlc1wiO1xyXG5pbXBvcnQgV2VicGFja01vZHVsZXMgZnJvbSBcIi4vd2VicGFja21vZHVsZXNcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBhdGNoZXIge1xyXG5cclxuICAgIHN0YXRpYyBnZXQgcGF0Y2hlcygpIHsgcmV0dXJuIHRoaXMuX3BhdGNoZXMgfHwgKHRoaXMuX3BhdGNoZXMgPSBbXSk7IH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHVybnMgYWxsIHRoZSBwYXRjaGVzIGRvbmUgYnkgYSBzcGVjaWZpYyBjYWxsZXJcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIC0gTmFtZSBvZiB0aGUgcGF0Y2ggY2FsbGVyXHJcbiAgICAgKiBAbWV0aG9kXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBnZXRQYXRjaGVzQnlDYWxsZXIobmFtZSkge1xyXG5cdFx0aWYgKCFuYW1lKSByZXR1cm4gW107XHJcbiAgICAgICAgY29uc3QgcGF0Y2hlcyA9IFtdO1xyXG4gICAgICAgIGZvciAoY29uc3QgcGF0Y2ggb2YgdGhpcy5wYXRjaGVzKSB7XHJcblx0XHRcdGZvciAoY29uc3QgY2hpbGRQYXRjaCBvZiBwYXRjaC5jaGlsZHJlbikge1xyXG5cdFx0XHRcdGlmIChjaGlsZFBhdGNoLmNhbGxlciA9PT0gbmFtZSkgcGF0Y2hlcy5wdXNoKGNoaWxkUGF0Y2gpO1xyXG5cdFx0XHR9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBwYXRjaGVzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVW5wYXRjaGVzIGFsbCBwYXRjaGVzIHBhc3NlZCwgb3Igd2hlbiBhIHN0cmluZyBpcyBwYXNzZWQgdW5wYXRjaGVzIGFsbFxyXG4gICAgICogcGF0Y2hlcyBkb25lIGJ5IHRoYXQgc3BlY2lmaWMgY2FsbGVyLlxyXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGNoZXMgLSBFaXRoZXIgYW4gYXJyYXkgb2YgcGF0Y2hlcyB0byB1bnBhdGNoIG9yIGEgY2FsbGVyIG5hbWVcclxuICAgICAqL1xyXG4gICAgc3RhdGljIHVucGF0Y2hBbGwocGF0Y2hlcykge1xyXG4gICAgICAgIGlmICh0eXBlb2YgcGF0Y2hlcyA9PT0gXCJzdHJpbmdcIikgcGF0Y2hlcyA9IHRoaXMuZ2V0UGF0Y2hlc0J5Q2FsbGVyKHBhdGNoZXMpO1xyXG5cclxuICAgICAgICBmb3IgKGNvbnN0IHBhdGNoIG9mIHBhdGNoZXMpIHtcclxuXHRcdFx0cGF0Y2gudW5wYXRjaCgpO1xyXG4gICAgICAgIH1cclxuXHR9XHJcblxyXG5cdHN0YXRpYyByZXNvbHZlTW9kdWxlKG1vZHVsZSkge1xyXG4gICAgICAgIGlmIChtb2R1bGUgaW5zdGFuY2VvZiBGdW5jdGlvbiB8fCAobW9kdWxlIGluc3RhbmNlb2YgT2JqZWN0ICYmICEobW9kdWxlIGluc3RhbmNlb2YgQXJyYXkpKSkgcmV0dXJuIG1vZHVsZTtcclxuICAgICAgICBpZiAodHlwZW9mIG1vZHVsZSA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIERpc2NvcmRNb2R1bGVzW21vZHVsZV07XHJcbiAgICAgICAgaWYgKG1vZHVsZSBpbnN0YW5jZW9mIEFycmF5KSByZXR1cm4gV2VicGFja01vZHVsZXMuZmluZEJ5VW5pcXVlUHJvcGVydGllcyhtb2R1bGUpO1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG5cdH1cclxuXHJcbiAgICBzdGF0aWMgbWFrZU92ZXJyaWRlKHBhdGNoKSB7XHJcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgbGV0IHJldHVyblZhbHVlID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICBpZiAoIXBhdGNoLmNoaWxkcmVuIHx8ICFwYXRjaC5jaGlsZHJlbi5sZW5ndGgpIHJldHVybiBwYXRjaC5vcmlnaW5hbEZ1bmN0aW9uLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3Qgc3VwZXJQYXRjaCBvZiBwYXRjaC5jaGlsZHJlbi5maWx0ZXIoYyA9PiBjLnR5cGUgPT09IFwiYmVmb3JlXCIpKSB7XHJcbiAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgIHN1cGVyUGF0Y2guY2FsbGJhY2sodGhpcywgYXJndW1lbnRzKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcclxuICAgICAgICAgICAgICAgICAgICBMb2dnZXIuZXJyKFwiUGF0Y2hlclwiLCBgQ291bGQgbm90IGZpcmUgYmVmb3JlIGNhbGxiYWNrIG9mICR7cGF0Y2guZnVuY3Rpb25OYW1lfSBmb3IgJHtzdXBlclBhdGNoLmNhbGxlcn1gLCBlcnIpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBjb25zdCBpbnN0ZWFkcyA9IHBhdGNoLmNoaWxkcmVuLmZpbHRlcihjID0+IGMudHlwZSA9PT0gXCJpbnN0ZWFkXCIpO1xyXG4gICAgICAgICAgICBpZiAoIWluc3RlYWRzLmxlbmd0aCkge3JldHVyblZhbHVlID0gcGF0Y2gub3JpZ2luYWxGdW5jdGlvbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO31cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGluc3RlYWRQYXRjaCBvZiBpbnN0ZWFkcykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XHJcblx0XHRcdFx0XHRcdGNvbnN0IHRlbXBSZXR1cm4gPSBpbnN0ZWFkUGF0Y2guY2FsbGJhY2sodGhpcywgYXJndW1lbnRzLCBwYXRjaC5vcmlnaW5hbEZ1bmN0aW9uLmJpbmQodGhpcykpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mKHRlbXBSZXR1cm4pICE9PSBcInVuZGVmaW5lZFwiKSByZXR1cm5WYWx1ZSA9IHRlbXBSZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2VyLmVycihcIlBhdGNoZXJcIiwgYENvdWxkIG5vdCBmaXJlIGluc3RlYWQgY2FsbGJhY2sgb2YgJHtwYXRjaC5mdW5jdGlvbk5hbWV9IGZvciAke2luc3RlYWRQYXRjaC5jYWxsZXJ9YCwgZXJyKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGZvciAoY29uc3Qgc2xhdmVQYXRjaCBvZiBwYXRjaC5jaGlsZHJlbi5maWx0ZXIoYyA9PiBjLnR5cGUgPT09IFwiYWZ0ZXJcIikpIHtcclxuICAgICAgICAgICAgICAgIHRyeSB7XHJcblx0XHRcdFx0XHRjb25zdCB0ZW1wUmV0dXJuID0gc2xhdmVQYXRjaC5jYWxsYmFjayh0aGlzLCBhcmd1bWVudHMsIHJldHVyblZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mKHRlbXBSZXR1cm4pICE9PSBcInVuZGVmaW5lZFwiKSByZXR1cm5WYWx1ZSA9IHRlbXBSZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgTG9nZ2VyLmVycihcIlBhdGNoZXJcIiwgYENvdWxkIG5vdCBmaXJlIGFmdGVyIGNhbGxiYWNrIG9mICR7cGF0Y2guZnVuY3Rpb25OYW1lfSBmb3IgJHtzbGF2ZVBhdGNoLmNhbGxlcn1gLCBlcnIpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiByZXR1cm5WYWx1ZTtcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyByZVBhdGNoKHBhdGNoKSB7XHJcbiAgICAgICAgcGF0Y2gucHJveHlGdW5jdGlvbiA9IHBhdGNoLm1vZHVsZVtwYXRjaC5mdW5jdGlvbk5hbWVdID0gdGhpcy5tYWtlT3ZlcnJpZGUocGF0Y2gpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBtYWtlUGF0Y2gobW9kdWxlLCBmdW5jdGlvbk5hbWUsIG5hbWUpIHtcclxuICAgICAgICBjb25zdCBwYXRjaCA9IHtcclxuXHRcdFx0bmFtZSxcclxuICAgICAgICAgICAgbW9kdWxlLFxyXG4gICAgICAgICAgICBmdW5jdGlvbk5hbWUsXHJcbiAgICAgICAgICAgIG9yaWdpbmFsRnVuY3Rpb246IG1vZHVsZVtmdW5jdGlvbk5hbWVdLFxyXG4gICAgICAgICAgICBwcm94eUZ1bmN0aW9uOiBudWxsLFxyXG4gICAgICAgICAgICByZXZlcnQ6ICgpID0+IHsgLy8gQ2FsbGluZyByZXZlcnQgd2lsbCBkZXN0cm95IGFueSBwYXRjaGVzIGFkZGVkIHRvIHRoZSBzYW1lIG1vZHVsZSBhZnRlciB0aGlzXHJcbiAgICAgICAgICAgICAgICBwYXRjaC5tb2R1bGVbcGF0Y2guZnVuY3Rpb25OYW1lXSA9IHBhdGNoLm9yaWdpbmFsRnVuY3Rpb247XHJcbiAgICAgICAgICAgICAgICBwYXRjaC5wcm94eUZ1bmN0aW9uID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIHBhdGNoLmNoaWxkcmVuID0gW107XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGNvdW50ZXI6IDAsXHJcbiAgICAgICAgICAgIGNoaWxkcmVuOiBbXVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgcGF0Y2gucHJveHlGdW5jdGlvbiA9IG1vZHVsZVtmdW5jdGlvbk5hbWVdID0gdGhpcy5tYWtlT3ZlcnJpZGUocGF0Y2gpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnBhdGNoZXMucHVzaChwYXRjaCksIHBhdGNoO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRnVuY3Rpb24gd2l0aCBubyBhcmd1bWVudHMgYW5kIG5vIHJldHVybiB2YWx1ZSB0aGF0IG1heSBiZSBjYWxsZWQgdG8gcmV2ZXJ0IGNoYW5nZXMgbWFkZSBieSB7QGxpbmsgbW9kdWxlOlBhdGNoZXJ9LCByZXN0b3JpbmcgKHVucGF0Y2hpbmcpIG9yaWdpbmFsIG1ldGhvZC5cclxuICAgICAqIEBjYWxsYmFjayBtb2R1bGU6UGF0Y2hlcn51bnBhdGNoXHJcbiAgICAgKi9cclxuXHJcbiAgICAvKipcclxuICAgICAqIEEgY2FsbGJhY2sgdGhhdCBtb2RpZmllcyBtZXRob2QgbG9naWMuIFRoaXMgY2FsbGJhY2sgaXMgY2FsbGVkIG9uIGVhY2ggY2FsbCBvZiB0aGUgb3JpZ2luYWwgbWV0aG9kIGFuZCBpcyBwcm92aWRlZCBhbGwgZGF0YSBhYm91dCBvcmlnaW5hbCBjYWxsLiBBbnkgb2YgdGhlIGRhdGEgY2FuIGJlIG1vZGlmaWVkIGlmIG5lY2Vzc2FyeSwgYnV0IGRvIHNvIHdpc2VseS5cclxuICAgICAqXHJcbiAgICAgKiBUaGUgdGhpcmQgYXJndW1lbnQgZm9yIHRoZSBjYWxsYmFjayB3aWxsIGJlIGB1bmRlZmluZWRgIGZvciBgYmVmb3JlYCBwYXRjaGVzLiBgb3JpZ2luYWxGdW5jdGlvbmAgZm9yIGBpbnN0ZWFkYCBwYXRjaGVzIGFuZCBgcmV0dXJuVmFsdWVgIGZvciBgYWZ0ZXJgIHBhdGNoZXMuXHJcbiAgICAgKlxyXG4gICAgICogQGNhbGxiYWNrIG1vZHVsZTpQYXRjaGVyfnBhdGNoQ2FsbGJhY2tcclxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSB0aGlzT2JqZWN0IC0gYHRoaXNgIGluIHRoZSBjb250ZXh0IG9mIHRoZSBvcmlnaW5hbCBmdW5jdGlvbi5cclxuICAgICAqIEBwYXJhbSB7YXJndW1lbnRzfSBhcmd1bWVudHMgLSBUaGUgb3JpZ2luYWwgYXJndW1lbnRzIG9mIHRoZSBvcmlnaW5hbCBmdW5jdGlvbi5cclxuICAgICAqIEBwYXJhbSB7KGZ1bmN0aW9ufCopfSBleHRyYVZhbHVlIC0gRm9yIGBpbnN0ZWFkYCBwYXRjaGVzLCB0aGlzIGlzIHRoZSBvcmlnaW5hbCBmdW5jdGlvbiBmcm9tIHRoZSBtb2R1bGUuIEZvciBgYWZ0ZXJgIHBhdGNoZXMsIHRoaXMgaXMgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgZnVuY3Rpb24uXHJcbiAgICAgKiBAcmV0dXJuIHsqfSBNYWtlcyBzZW5zZSBvbmx5IHdoZW4gdXNpbmcgYW4gYGluc3RlYWRgIG9yIGBhZnRlcmAgcGF0Y2guIElmIHNvbWV0aGluZyBvdGhlciB0aGFuIGB1bmRlZmluZWRgIGlzIHJldHVybmVkLCB0aGUgcmV0dXJuZWQgdmFsdWUgcmVwbGFjZXMgdGhlIHZhbHVlIG9mIGByZXR1cm5WYWx1ZWAuIElmIHVzZWQgZm9yIGBiZWZvcmVgIHRoZSByZXR1cm4gdmFsdWUgaXMgaWdub3JlZC5cclxuICAgICAqL1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhpcyBtZXRob2QgcGF0Y2hlcyBvbnRvIGFub3RoZXIgZnVuY3Rpb24sIGFsbG93aW5nIHlvdXIgY29kZSB0byBydW4gYmVmb3JlaGFuZC5cclxuICAgICAqIFVzaW5nIHRoaXMsIHlvdSBhcmUgYWxzbyBhYmxlIHRvIG1vZGlmeSB0aGUgaW5jb21pbmcgYXJndW1lbnRzIGJlZm9yZSB0aGUgb3JpZ2luYWwgbWV0aG9kIGlzIHJ1bi5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gY2FsbGVyIC0gTmFtZSBvZiB0aGUgY2FsbGVyIG9mIHRoZSBwYXRjaCBmdW5jdGlvbi4gVXNpbmcgdGhpcyB5b3UgY2FuIHVuZG8gYWxsIHBhdGNoZXMgd2l0aCB0aGUgc2FtZSBuYW1lIHVzaW5nIHtAbGluayBtb2R1bGU6UGF0Y2hlci51bnBhdGNoQWxsfS4gVXNlIGBcIlwiYCBpZiB5b3UgZG9uJ3QgY2FyZS5cclxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBtb2R1bGVUb1BhdGNoIC0gT2JqZWN0IHdpdGggdGhlIGZ1bmN0aW9uIHRvIGJlIHBhdGNoZWQuIENhbiBhbHNvIHBhdGNoIGFuIG9iamVjdCdzIHByb3RvdHlwZS5cclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBmdW5jdGlvbk5hbWUgLSBOYW1lIG9mIHRoZSBtZXRob2QgdG8gYmUgcGF0Y2hlZFxyXG4gICAgICogQHBhcmFtIHttb2R1bGU6UGF0Y2hlcn5wYXRjaENhbGxiYWNrfSBjYWxsYmFjayAtIEZ1bmN0aW9uIHRvIHJ1biBiZWZvcmUgdGhlIG9yaWdpbmFsIG1ldGhvZFxyXG4gICAgICogQHBhcmFtIHtvYmplY3R9IG9wdGlvbnMgLSBPYmplY3QgdXNlZCB0byBwYXNzIGFkZGl0aW9uYWwgb3B0aW9ucy5cclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5kaXNwbGF5TmFtZV0gWW91IGNhbiBwcm92aWRlIG1lYW5pbmdmdWwgbmFtZSBmb3IgY2xhc3Mvb2JqZWN0IHByb3ZpZGVkIGluIGB3aGF0YCBwYXJhbSBmb3IgbG9nZ2luZyBwdXJwb3Nlcy4gQnkgZGVmYXVsdCwgdGhpcyBmdW5jdGlvbiB3aWxsIHRyeSB0byBkZXRlcm1pbmUgbmFtZSBhdXRvbWF0aWNhbGx5LlxyXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5mb3JjZVBhdGNoPXRydWVdIFNldCB0byBgdHJ1ZWAgdG8gcGF0Y2ggZXZlbiBpZiB0aGUgZnVuY3Rpb24gZG9lc250IGV4aXN0LiAoQWRkcyBub29wIGZ1bmN0aW9uIGluIHBsYWNlKS5cclxuICAgICAqIEByZXR1cm4ge21vZHVsZTpQYXRjaGVyfnVucGF0Y2h9IEZ1bmN0aW9uIHdpdGggbm8gYXJndW1lbnRzIGFuZCBubyByZXR1cm4gdmFsdWUgdGhhdCBzaG91bGQgYmUgY2FsbGVkIHRvIGNhbmNlbCAodW5wYXRjaCkgdGhpcyBwYXRjaC4gWW91IHNob3VsZCBzYXZlIGFuZCBydW4gaXQgd2hlbiB5b3VyIHBsdWdpbiBpcyBzdG9wcGVkLlxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgYmVmb3JlKGNhbGxlciwgbW9kdWxlVG9QYXRjaCwgZnVuY3Rpb25OYW1lLCBjYWxsYmFjaywgb3B0aW9ucyA9IHt9KSB7IHJldHVybiB0aGlzLnB1c2hDaGlsZFBhdGNoKGNhbGxlciwgbW9kdWxlVG9QYXRjaCwgZnVuY3Rpb25OYW1lLCBjYWxsYmFjaywgT2JqZWN0LmFzc2lnbihvcHRpb25zLCB7dHlwZTogXCJiZWZvcmVcIn0pKTsgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhpcyBtZXRob2QgcGF0Y2hlcyBvbnRvIGFub3RoZXIgZnVuY3Rpb24sIGFsbG93aW5nIHlvdXIgY29kZSB0byBydW4gYWZ0ZXIuXHJcbiAgICAgKiBVc2luZyB0aGlzLCB5b3UgYXJlIGFsc28gYWJsZSB0byBtb2RpZnkgdGhlIHJldHVybiB2YWx1ZSwgdXNpbmcgdGhlIHJldHVybiBvZiB5b3VyIGNvZGUgaW5zdGVhZC5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gY2FsbGVyIC0gTmFtZSBvZiB0aGUgY2FsbGVyIG9mIHRoZSBwYXRjaCBmdW5jdGlvbi4gVXNpbmcgdGhpcyB5b3UgY2FuIHVuZG8gYWxsIHBhdGNoZXMgd2l0aCB0aGUgc2FtZSBuYW1lIHVzaW5nIHtAbGluayBtb2R1bGU6UGF0Y2hlci51bnBhdGNoQWxsfS4gVXNlIGBcIlwiYCBpZiB5b3UgZG9uJ3QgY2FyZS5cclxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBtb2R1bGVUb1BhdGNoIC0gT2JqZWN0IHdpdGggdGhlIGZ1bmN0aW9uIHRvIGJlIHBhdGNoZWQuIENhbiBhbHNvIHBhdGNoIGFuIG9iamVjdCdzIHByb3RvdHlwZS5cclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBmdW5jdGlvbk5hbWUgLSBOYW1lIG9mIHRoZSBtZXRob2QgdG8gYmUgcGF0Y2hlZFxyXG4gICAgICogQHBhcmFtIHttb2R1bGU6UGF0Y2hlcn5wYXRjaENhbGxiYWNrfSBjYWxsYmFjayAtIEZ1bmN0aW9uIHRvIHJ1biBpbnN0ZWFkIG9mIHRoZSBvcmlnaW5hbCBtZXRob2RcclxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBvcHRpb25zIC0gT2JqZWN0IHVzZWQgdG8gcGFzcyBhZGRpdGlvbmFsIG9wdGlvbnMuXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMuZGlzcGxheU5hbWVdIFlvdSBjYW4gcHJvdmlkZSBtZWFuaW5nZnVsIG5hbWUgZm9yIGNsYXNzL29iamVjdCBwcm92aWRlZCBpbiBgd2hhdGAgcGFyYW0gZm9yIGxvZ2dpbmcgcHVycG9zZXMuIEJ5IGRlZmF1bHQsIHRoaXMgZnVuY3Rpb24gd2lsbCB0cnkgdG8gZGV0ZXJtaW5lIG5hbWUgYXV0b21hdGljYWxseS5cclxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMuZm9yY2VQYXRjaD10cnVlXSBTZXQgdG8gYHRydWVgIHRvIHBhdGNoIGV2ZW4gaWYgdGhlIGZ1bmN0aW9uIGRvZXNudCBleGlzdC4gKEFkZHMgbm9vcCBmdW5jdGlvbiBpbiBwbGFjZSkuXHJcbiAgICAgKiBAcmV0dXJuIHttb2R1bGU6UGF0Y2hlcn51bnBhdGNofSBGdW5jdGlvbiB3aXRoIG5vIGFyZ3VtZW50cyBhbmQgbm8gcmV0dXJuIHZhbHVlIHRoYXQgc2hvdWxkIGJlIGNhbGxlZCB0byBjYW5jZWwgKHVucGF0Y2gpIHRoaXMgcGF0Y2guIFlvdSBzaG91bGQgc2F2ZSBhbmQgcnVuIGl0IHdoZW4geW91ciBwbHVnaW4gaXMgc3RvcHBlZC5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGFmdGVyKGNhbGxlciwgbW9kdWxlVG9QYXRjaCwgZnVuY3Rpb25OYW1lLCBjYWxsYmFjaywgb3B0aW9ucyA9IHt9KSB7IHJldHVybiB0aGlzLnB1c2hDaGlsZFBhdGNoKGNhbGxlciwgbW9kdWxlVG9QYXRjaCwgZnVuY3Rpb25OYW1lLCBjYWxsYmFjaywgT2JqZWN0LmFzc2lnbihvcHRpb25zLCB7dHlwZTogXCJhZnRlclwifSkpOyB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGlzIG1ldGhvZCBwYXRjaGVzIG9udG8gYW5vdGhlciBmdW5jdGlvbiwgYWxsb3dpbmcgeW91ciBjb2RlIHRvIHJ1biBpbnN0ZWFkLlxyXG4gICAgICogVXNpbmcgdGhpcywgeW91IGFyZSBhbHNvIGFibGUgdG8gbW9kaWZ5IHRoZSByZXR1cm4gdmFsdWUsIHVzaW5nIHRoZSByZXR1cm4gb2YgeW91ciBjb2RlIGluc3RlYWQuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGNhbGxlciAtIE5hbWUgb2YgdGhlIGNhbGxlciBvZiB0aGUgcGF0Y2ggZnVuY3Rpb24uIFVzaW5nIHRoaXMgeW91IGNhbiB1bmRvIGFsbCBwYXRjaGVzIHdpdGggdGhlIHNhbWUgbmFtZSB1c2luZyB7QGxpbmsgbW9kdWxlOlBhdGNoZXIudW5wYXRjaEFsbH0uIFVzZSBgXCJcImAgaWYgeW91IGRvbid0IGNhcmUuXHJcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gbW9kdWxlVG9QYXRjaCAtIE9iamVjdCB3aXRoIHRoZSBmdW5jdGlvbiB0byBiZSBwYXRjaGVkLiBDYW4gYWxzbyBwYXRjaCBhbiBvYmplY3QncyBwcm90b3R5cGUuXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZnVuY3Rpb25OYW1lIC0gTmFtZSBvZiB0aGUgbWV0aG9kIHRvIGJlIHBhdGNoZWRcclxuICAgICAqIEBwYXJhbSB7bW9kdWxlOlBhdGNoZXJ+cGF0Y2hDYWxsYmFja30gY2FsbGJhY2sgLSBGdW5jdGlvbiB0byBydW4gYWZ0ZXIgdGhlIG9yaWdpbmFsIG1ldGhvZFxyXG4gICAgICogQHBhcmFtIHtvYmplY3R9IG9wdGlvbnMgLSBPYmplY3QgdXNlZCB0byBwYXNzIGFkZGl0aW9uYWwgb3B0aW9ucy5cclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5kaXNwbGF5TmFtZV0gWW91IGNhbiBwcm92aWRlIG1lYW5pbmdmdWwgbmFtZSBmb3IgY2xhc3Mvb2JqZWN0IHByb3ZpZGVkIGluIGB3aGF0YCBwYXJhbSBmb3IgbG9nZ2luZyBwdXJwb3Nlcy4gQnkgZGVmYXVsdCwgdGhpcyBmdW5jdGlvbiB3aWxsIHRyeSB0byBkZXRlcm1pbmUgbmFtZSBhdXRvbWF0aWNhbGx5LlxyXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5mb3JjZVBhdGNoPXRydWVdIFNldCB0byBgdHJ1ZWAgdG8gcGF0Y2ggZXZlbiBpZiB0aGUgZnVuY3Rpb24gZG9lc250IGV4aXN0LiAoQWRkcyBub29wIGZ1bmN0aW9uIGluIHBsYWNlKS5cclxuICAgICAqIEByZXR1cm4ge21vZHVsZTpQYXRjaGVyfnVucGF0Y2h9IEZ1bmN0aW9uIHdpdGggbm8gYXJndW1lbnRzIGFuZCBubyByZXR1cm4gdmFsdWUgdGhhdCBzaG91bGQgYmUgY2FsbGVkIHRvIGNhbmNlbCAodW5wYXRjaCkgdGhpcyBwYXRjaC4gWW91IHNob3VsZCBzYXZlIGFuZCBydW4gaXQgd2hlbiB5b3VyIHBsdWdpbiBpcyBzdG9wcGVkLlxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgaW5zdGVhZChjYWxsZXIsIG1vZHVsZVRvUGF0Y2gsIGZ1bmN0aW9uTmFtZSwgY2FsbGJhY2ssIG9wdGlvbnMgPSB7fSkgeyByZXR1cm4gdGhpcy5wdXNoQ2hpbGRQYXRjaChjYWxsZXIsIG1vZHVsZVRvUGF0Y2gsIGZ1bmN0aW9uTmFtZSwgY2FsbGJhY2ssIE9iamVjdC5hc3NpZ24ob3B0aW9ucywge3R5cGU6IFwiaW5zdGVhZFwifSkpOyB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGlzIG1ldGhvZCBwYXRjaGVzIG9udG8gYW5vdGhlciBmdW5jdGlvbiwgYWxsb3dpbmcgeW91ciBjb2RlIHRvIHJ1biBiZWZvcmUsIGluc3RlYWQgb3IgYWZ0ZXIgdGhlIG9yaWdpbmFsIGZ1bmN0aW9uLlxyXG4gICAgICogVXNpbmcgdGhpcyB5b3UgYXJlIGFibGUgdG8gbW9kaWZ5IHRoZSBpbmNvbWluZyBhcmd1bWVudHMgYmVmb3JlIHRoZSBvcmlnaW5hbCBmdW5jdGlvbiBpcyBydW4gYXMgd2VsbCBhcyB0aGUgcmV0dXJuXHJcbiAgICAgKiB2YWx1ZSBiZWZvcmUgdGhlIG9yaWdpbmFsIGZ1bmN0aW9uIGFjdHVhbGx5IHJldHVybnMuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGNhbGxlciAtIE5hbWUgb2YgdGhlIGNhbGxlciBvZiB0aGUgcGF0Y2ggZnVuY3Rpb24uIFVzaW5nIHRoaXMgeW91IGNhbiB1bmRvIGFsbCBwYXRjaGVzIHdpdGggdGhlIHNhbWUgbmFtZSB1c2luZyB7QGxpbmsgbW9kdWxlOlBhdGNoZXIudW5wYXRjaEFsbH0uIFVzZSBgXCJcImAgaWYgeW91IGRvbid0IGNhcmUuXHJcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gbW9kdWxlVG9QYXRjaCAtIE9iamVjdCB3aXRoIHRoZSBmdW5jdGlvbiB0byBiZSBwYXRjaGVkLiBDYW4gYWxzbyBwYXRjaCBhbiBvYmplY3QncyBwcm90b3R5cGUuXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZnVuY3Rpb25OYW1lIC0gTmFtZSBvZiB0aGUgbWV0aG9kIHRvIGJlIHBhdGNoZWRcclxuICAgICAqIEBwYXJhbSB7bW9kdWxlOlBhdGNoZXJ+cGF0Y2hDYWxsYmFja30gY2FsbGJhY2sgLSBGdW5jdGlvbiB0byBydW4gYWZ0ZXIgdGhlIG9yaWdpbmFsIG1ldGhvZFxyXG4gICAgICogQHBhcmFtIHtvYmplY3R9IG9wdGlvbnMgLSBPYmplY3QgdXNlZCB0byBwYXNzIGFkZGl0aW9uYWwgb3B0aW9ucy5cclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy50eXBlPWFmdGVyXSAtIERldGVybWluZXMgd2hldGhlciB0byBydW4gdGhlIGZ1bmN0aW9uIGBiZWZvcmVgLCBgaW5zdGVhZGAsIG9yIGBhZnRlcmAgdGhlIG9yaWdpbmFsLlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLmRpc3BsYXlOYW1lXSBZb3UgY2FuIHByb3ZpZGUgbWVhbmluZ2Z1bCBuYW1lIGZvciBjbGFzcy9vYmplY3QgcHJvdmlkZWQgaW4gYHdoYXRgIHBhcmFtIGZvciBsb2dnaW5nIHB1cnBvc2VzLiBCeSBkZWZhdWx0LCB0aGlzIGZ1bmN0aW9uIHdpbGwgdHJ5IHRvIGRldGVybWluZSBuYW1lIGF1dG9tYXRpY2FsbHkuXHJcbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLmZvcmNlUGF0Y2g9dHJ1ZV0gU2V0IHRvIGB0cnVlYCB0byBwYXRjaCBldmVuIGlmIHRoZSBmdW5jdGlvbiBkb2VzbnQgZXhpc3QuIChBZGRzIG5vb3AgZnVuY3Rpb24gaW4gcGxhY2UpLlxyXG4gICAgICogQHJldHVybiB7bW9kdWxlOlBhdGNoZXJ+dW5wYXRjaH0gRnVuY3Rpb24gd2l0aCBubyBhcmd1bWVudHMgYW5kIG5vIHJldHVybiB2YWx1ZSB0aGF0IHNob3VsZCBiZSBjYWxsZWQgdG8gY2FuY2VsICh1bnBhdGNoKSB0aGlzIHBhdGNoLiBZb3Ugc2hvdWxkIHNhdmUgYW5kIHJ1biBpdCB3aGVuIHlvdXIgcGx1Z2luIGlzIHN0b3BwZWQuXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBwdXNoQ2hpbGRQYXRjaChjYWxsZXIsIG1vZHVsZVRvUGF0Y2gsIGZ1bmN0aW9uTmFtZSwgY2FsbGJhY2ssIG9wdGlvbnMgPSB7fSkge1xyXG5cdFx0Y29uc3Qge3R5cGUgPSBcImFmdGVyXCIsIGZvcmNlUGF0Y2ggPSB0cnVlfSA9IG9wdGlvbnM7XHJcblx0XHRjb25zdCBtb2R1bGUgPSB0aGlzLnJlc29sdmVNb2R1bGUobW9kdWxlVG9QYXRjaCk7XHJcblx0XHRpZiAoIW1vZHVsZSkgcmV0dXJuIG51bGw7XHJcblx0XHRpZiAoIW1vZHVsZVtmdW5jdGlvbk5hbWVdICYmIGZvcmNlUGF0Y2gpIG1vZHVsZVtmdW5jdGlvbk5hbWVdID0gZnVuY3Rpb24oKSB7fTtcclxuXHRcdGlmICghKG1vZHVsZVtmdW5jdGlvbk5hbWVdIGluc3RhbmNlb2YgRnVuY3Rpb24pKSByZXR1cm4gbnVsbDtcclxuXHJcblx0XHRpZiAodHlwZW9mIG1vZHVsZVRvUGF0Y2ggPT09IFwic3RyaW5nXCIpIG9wdGlvbnMuZGlzcGxheU5hbWUgPSBtb2R1bGVUb1BhdGNoO1xyXG4gICAgICAgIGNvbnN0IGRpc3BsYXlOYW1lID0gb3B0aW9ucy5kaXNwbGF5TmFtZSB8fCBtb2R1bGUuZGlzcGxheU5hbWUgfHwgbW9kdWxlLm5hbWUgfHwgbW9kdWxlLmNvbnN0cnVjdG9yLmRpc3BsYXlOYW1lIHx8IG1vZHVsZS5jb25zdHJ1Y3Rvci5uYW1lO1xyXG5cclxuXHRcdGNvbnN0IHBhdGNoSWQgPSBgJHtkaXNwbGF5TmFtZX0uJHtmdW5jdGlvbk5hbWV9YDtcclxuICAgICAgICBjb25zdCBwYXRjaCA9IHRoaXMucGF0Y2hlcy5maW5kKHAgPT4gcC5tb2R1bGUgPT0gbW9kdWxlICYmIHAuZnVuY3Rpb25OYW1lID09IGZ1bmN0aW9uTmFtZSkgfHwgdGhpcy5tYWtlUGF0Y2gobW9kdWxlLCBmdW5jdGlvbk5hbWUsIHBhdGNoSWQpO1xyXG4gICAgICAgIGlmICghcGF0Y2gucHJveHlGdW5jdGlvbikgdGhpcy5yZVBhdGNoKHBhdGNoKTtcclxuICAgICAgICBjb25zdCBjaGlsZCA9IHtcclxuICAgICAgICAgICAgY2FsbGVyLFxyXG4gICAgICAgICAgICB0eXBlLFxyXG4gICAgICAgICAgICBpZDogcGF0Y2guY291bnRlcixcclxuICAgICAgICAgICAgY2FsbGJhY2ssXHJcbiAgICAgICAgICAgIHVucGF0Y2g6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgIHBhdGNoLmNoaWxkcmVuLnNwbGljZShwYXRjaC5jaGlsZHJlbi5maW5kSW5kZXgoY3BhdGNoID0+IGNwYXRjaC5pZCA9PT0gY2hpbGQuaWQgJiYgY3BhdGNoLnR5cGUgPT09IHR5cGUpLCAxKTtcclxuICAgICAgICAgICAgICAgIGlmIChwYXRjaC5jaGlsZHJlbi5sZW5ndGggPD0gMCkge1xyXG5cdFx0XHRcdFx0Y29uc3QgcGF0Y2hOdW0gPSB0aGlzLnBhdGNoZXMuZmluZEluZGV4KHAgPT4gcC5tb2R1bGUgPT0gbW9kdWxlICYmIHAuZnVuY3Rpb25OYW1lID09IGZ1bmN0aW9uTmFtZSk7XHJcblx0XHRcdFx0XHR0aGlzLnBhdGNoZXNbcGF0Y2hOdW1dLnJldmVydCgpO1xyXG5cdFx0XHRcdFx0dGhpcy5wYXRjaGVzLnNwbGljZShwYXRjaE51bSwgMSk7XHJcblx0XHRcdFx0fVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgICAgICBwYXRjaC5jaGlsZHJlbi5wdXNoKGNoaWxkKTtcclxuICAgICAgICBwYXRjaC5jb3VudGVyKys7XHJcbiAgICAgICAgcmV0dXJuIGNoaWxkLnVucGF0Y2g7XHJcbiAgICB9XHJcblxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/patcher.js\n"); /***/ }), @@ -539,7 +538,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var data__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! data */ \"./src/data/data.js\");\n/* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utilities */ \"./src/modules/utilities.js\");\n/* harmony import */ var _webpackmodules__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./webpackmodules */ \"./src/modules/webpackmodules.js\");\n/* harmony import */ var _discordmodules__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./discordmodules */ \"./src/modules/discordmodules.js\");\n/* harmony import */ var _datastore__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./datastore */ \"./src/modules/datastore.js\");\n/* harmony import */ var _dommanager__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./dommanager */ \"./src/modules/dommanager.js\");\n/* harmony import */ var _ui_toasts__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../ui/toasts */ \"./src/ui/toasts.js\");\n/* harmony import */ var _ui_modals__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../ui/modals */ \"./src/ui/modals.js\");\n/* harmony import */ var _pluginmanager__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./pluginmanager */ \"./src/modules/pluginmanager.js\");\n/* harmony import */ var _thememanager__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./thememanager */ \"./src/modules/thememanager.js\");\n/* harmony import */ var _settingsmanager__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./settingsmanager */ \"./src/modules/settingsmanager.js\");\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./logger */ \"./src/modules/logger.js\");\n/* harmony import */ var _patcher__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./patcher */ \"./src/modules/patcher.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst BdApi = {\n get React() {\n return _discordmodules__WEBPACK_IMPORTED_MODULE_3__[\"default\"].React;\n },\n\n get ReactDOM() {\n return _discordmodules__WEBPACK_IMPORTED_MODULE_3__[\"default\"].ReactDOM;\n },\n\n get WindowConfigFile() {\n return \"\";\n },\n\n get settings() {\n return _settingsmanager__WEBPACK_IMPORTED_MODULE_10__[\"default\"].collections;\n },\n\n get emotes() {\n return {};\n },\n\n get version() {\n return data__WEBPACK_IMPORTED_MODULE_0__[\"Config\"].version;\n }\n\n};\n\nBdApi.getAllWindowPreferences = function () {\n return _datastore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].getData(\"windowprefs\") || {};\n};\n\nBdApi.getWindowPreference = function (key) {\n return this.getAllWindowPreferences()[key];\n};\n\nBdApi.setWindowPreference = function (key, value) {\n const prefs = this.getAllWindowPreferences();\n prefs[key] = value;\n return _datastore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].setData(\"windowprefs\", prefs);\n}; //Inject CSS to document head\n//id = id of element\n//css = custom css\n\n\nBdApi.injectCSS = function (id, css) {\n _dommanager__WEBPACK_IMPORTED_MODULE_5__[\"default\"].injectStyle(id, css);\n}; //Clear css/remove any element\n//id = id of element\n\n\nBdApi.clearCSS = function (id) {\n _dommanager__WEBPACK_IMPORTED_MODULE_5__[\"default\"].removeStyle(id);\n}; //Inject CSS to document head\n//id = id of element\n//css = custom css\n\n\nBdApi.linkJS = function (id, url) {\n return _dommanager__WEBPACK_IMPORTED_MODULE_5__[\"default\"].injectScript(id, url);\n}; //Clear css/remove any element\n//id = id of element\n\n\nBdApi.unlinkJS = function (id) {\n _dommanager__WEBPACK_IMPORTED_MODULE_5__[\"default\"].removeScript(id);\n};\n/**\r\n * Shows a generic but very customizable modal.\r\n * @param {string} title - title of the modal\r\n * @param {string} content - a string of text to display in the modal\r\n */\n\n\nBdApi.alert = function (title, content) {\n _ui_modals__WEBPACK_IMPORTED_MODULE_7__[\"default\"].alert(title, content);\n};\n/**\r\n * Shows a generic but very customizable confirmation modal with optional confirm and cancel callbacks.\r\n * @param {string} title - title of the modal\r\n * @param {(string|ReactElement|Array)} children - a single or mixed array of react elements and strings. Everything is wrapped in Discord's `TextElement` component so strings will show and render properly.\r\n * @param {object} [options] - options to modify the modal\r\n * @param {boolean} [options.danger=false] - whether the main button should be red or not\r\n * @param {string} [options.confirmText=Okay] - text for the confirmation/submit button\r\n * @param {string} [options.cancelText=Cancel] - text for the cancel button\r\n * @param {callable} [options.onConfirm=NOOP] - callback to occur when clicking the submit button\r\n * @param {callable} [options.onCancel=NOOP] - callback to occur when clicking the cancel button\r\n */\n\n\nBdApi.showConfirmationModal = function (title, content, options = {}) {\n return _ui_modals__WEBPACK_IMPORTED_MODULE_7__[\"default\"].showConfirmationModal(title, content, options);\n};\n/**\r\n * This shows a toast similar to android towards the bottom of the screen.\r\n *\r\n * @param {string} content The string to show in the toast.\r\n * @param {object} options Options object. Optional parameter.\r\n * @param {string} [options.type=\"\"] Changes the type of the toast stylistically and semantically. Choices: \"\", \"info\", \"success\", \"danger\"/\"error\", \"warning\"/\"warn\". Default: \"\"\r\n * @param {boolean} [options.icon=true] Determines whether the icon should show corresponding to the type. A toast without type will always have no icon. Default: true\r\n * @param {number} [options.timeout=3000] Adjusts the time (in ms) the toast should be shown for before disappearing automatically. Default: 3000\r\n * @param {boolean} [options.forceShow=false] Whether to force showing the toast and ignore the bd setting\r\n */\n\n\nBdApi.showToast = function (content, options = {}) {\n _ui_toasts__WEBPACK_IMPORTED_MODULE_6__[\"default\"].show(content, options);\n}; // Finds module\n\n\nBdApi.findModule = function (filter) {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getModule(filter);\n}; // Finds module\n\n\nBdApi.findAllModules = function (filter) {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getModule(filter, false);\n}; // Finds module\n\n\nBdApi.findModuleByProps = function (...props) {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getByProps(...props);\n};\n\nBdApi.findModuleByPrototypes = function (...protos) {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getByPrototypes(...protos);\n};\n\nBdApi.findModuleByDisplayName = function (name) {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getByDisplayName(name);\n}; // Gets react instance\n\n\nBdApi.getInternalInstance = function (node) {\n if (!(node instanceof window.jQuery) && !(node instanceof Element)) return undefined;\n if (node instanceof jQuery) node = node[0];\n return _utilities__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getReactInstance(node);\n}; // Gets data\n\n\nBdApi.loadData = function (pluginName, key) {\n return _datastore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].getPluginData(pluginName, key);\n};\n\nBdApi.getData = BdApi.loadData; // Sets data\n\nBdApi.saveData = function (pluginName, key, data) {\n return _datastore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].setPluginData(pluginName, key, data);\n};\n\nBdApi.setData = BdApi.saveData; // Deletes data\n\nBdApi.deleteData = function (pluginName, key) {\n return _datastore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].deletePluginData(pluginName, key);\n}; // Patches other functions\n// BdApi.monkeyPatch = function(what, methodName, options) {\n// const {before, after, instead, once = false, silent = false, force = false} = options;\n// const displayName = options.displayName || what.displayName || what.name || what.constructor.displayName || what.constructor.name;\n// if (!silent) console.log(\"patch\", methodName, \"of\", displayName); // eslint-disable-line no-console\n// if (!what[methodName]) {\n// if (force) what[methodName] = function() {};\n// else return console.error(methodName, \"does not exist for\", displayName); // eslint-disable-line no-console\n// }\n// const origMethod = what[methodName];\n// const cancel = () => {\n// if (!silent) console.log(\"unpatch\", methodName, \"of\", displayName); // eslint-disable-line no-console\n// what[methodName] = origMethod;\n// };\n// what[methodName] = function() {\n// const data = {\n// thisObject: this,\n// methodArguments: arguments,\n// cancelPatch: cancel,\n// originalMethod: origMethod,\n// callOriginalMethod: () => data.returnValue = data.originalMethod.apply(data.thisObject, data.methodArguments)\n// };\n// if (instead) {\n// const tempRet = Utilities.suppressErrors(instead, \"`instead` callback of \" + what[methodName].displayName)(data);\n// if (tempRet !== undefined) data.returnValue = tempRet;\n// }\n// else {\n// if (before) Utilities.suppressErrors(before, \"`before` callback of \" + what[methodName].displayName)(data);\n// data.callOriginalMethod();\n// if (after) Utilities.suppressErrors(after, \"`after` callback of \" + what[methodName].displayName)(data);\n// }\n// if (once) cancel();\n// return data.returnValue;\n// };\n// what[methodName].__monkeyPatched = true;\n// if (!what[methodName].__originalMethod) what[methodName].__originalMethod = origMethod;\n// what[methodName].displayName = \"patched \" + (what[methodName].displayName || methodName);\n// return cancel;\n// };\n\n\nBdApi.monkeyPatch = function (what, methodName, options) {\n const {\n before,\n after,\n instead,\n once = false\n } = options;\n const patchType = before ? \"before\" : after ? \"after\" : instead ? \"instead\" : \"\";\n if (!patchType) return _logger__WEBPACK_IMPORTED_MODULE_11__[\"default\"].err(\"BdApi\", \"Must provide one of: after, before, instead\");\n const originalMethod = what[methodName];\n const data = {\n originalMethod: originalMethod,\n callOriginalMethod: () => data.originalMethod.apply(data.thisObject, data.methodArguments)\n };\n data.cancelPatch = _patcher__WEBPACK_IMPORTED_MODULE_12__[\"default\"][patchType](\"BdApi\", what, methodName, (thisObject, args, returnValue) => {\n data.thisObject = thisObject;\n data.methodArguments = args;\n data.returnValue = returnValue;\n\n try {\n Reflect.apply(options[patchType], null, [data]);\n if (once) data.cancelPatch();\n } catch (err) {// Logger.err(\"monkeyPatch\", `Error in the ${patchType} of ${methodName}`);\n }\n });\n}; // Event when element is removed\n\n\nBdApi.onRemoved = function (node, callback) {\n return _utilities__WEBPACK_IMPORTED_MODULE_1__[\"default\"].onRemoved(node, callback);\n}; // Wraps function in try..catch\n\n\nBdApi.suppressErrors = function (method, message) {\n return _utilities__WEBPACK_IMPORTED_MODULE_1__[\"default\"].suppressErrors(method, message);\n}; // Tests for valid JSON\n\n\nBdApi.testJSON = function (data) {\n return _utilities__WEBPACK_IMPORTED_MODULE_1__[\"default\"].testJSON(data);\n}; //Get another plugin\n//name = name of plugin\n\n\nBdApi.getPlugin = function (name) {\n _logger__WEBPACK_IMPORTED_MODULE_11__[\"default\"].warn(\"BdApi\", \"getPlugin is deprecated. Please make use of the addon api (BdApi.Plugins)\");\n return _pluginmanager__WEBPACK_IMPORTED_MODULE_8__[\"default\"].addonList.find(a => a.name == name);\n};\n\nBdApi.isPluginEnabled = function (name) {\n _logger__WEBPACK_IMPORTED_MODULE_11__[\"default\"].warn(\"BdApi\", \"isPluginEnabled is deprecated. Please make use of the addon api (BdApi.Plugins)\");\n const plugin = this.getPlugin(name);\n if (!plugin) return false;\n return _pluginmanager__WEBPACK_IMPORTED_MODULE_8__[\"default\"].isEnabled(plugin.id);\n};\n\nBdApi.isThemeEnabled = function (name) {\n _logger__WEBPACK_IMPORTED_MODULE_11__[\"default\"].warn(\"BdApi\", \"isThemeEnabled is deprecated. Please make use of the addon api (BdApi.Themes)\");\n const theme = _thememanager__WEBPACK_IMPORTED_MODULE_9__[\"default\"].addonList.find(a => a.name == name);\n if (!theme) return false;\n return _thememanager__WEBPACK_IMPORTED_MODULE_9__[\"default\"].isEnabled(theme.id);\n};\n\nBdApi.isSettingEnabled = function (collection, category, id) {\n return _settingsmanager__WEBPACK_IMPORTED_MODULE_10__[\"default\"].get(collection, category, id);\n};\n\nBdApi.enableSetting = function (collection, category, id) {\n return _settingsmanager__WEBPACK_IMPORTED_MODULE_10__[\"default\"].set(collection, category, id, true);\n};\n\nBdApi.disableSetting = function (collection, category, id) {\n return _settingsmanager__WEBPACK_IMPORTED_MODULE_10__[\"default\"].set(collection, category, id, false);\n};\n\nBdApi.toggleSetting = function (collection, category, id) {\n return _settingsmanager__WEBPACK_IMPORTED_MODULE_10__[\"default\"].set(collection, category, id, !_settingsmanager__WEBPACK_IMPORTED_MODULE_10__[\"default\"].get(collection, category, id));\n}; // Gets data\n\n\nBdApi.getBDData = function (key) {\n return _datastore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].getBDData(key);\n}; // Sets data\n\n\nBdApi.setBDData = function (key, data) {\n return _datastore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].setBDData(key, data);\n};\n\nconst makeAddonAPI = manager => new class AddonAPI {\n get folder() {\n return manager.addonFolder;\n }\n\n isEnabled(idOrFile) {\n return manager.isEnabled(idOrFile);\n }\n\n enable(idOrAddon) {\n return manager.enableAddon(idOrAddon);\n }\n\n disable(idOrAddon) {\n return manager.disableAddon(idOrAddon);\n }\n\n toggle(idOrAddon) {\n return manager.toggleAddon(idOrAddon);\n }\n\n reload(idOrFileOrAddon) {\n return manager.reloadAddon(idOrFileOrAddon);\n }\n\n get(idOrFile) {\n return manager.getAddon(idOrFile);\n }\n\n getAll() {\n return manager.addonList.map(a => manager.getAddon(a.id));\n }\n\n}();\n\nBdApi.Plugins = makeAddonAPI(_pluginmanager__WEBPACK_IMPORTED_MODULE_8__[\"default\"]);\nBdApi.Themes = makeAddonAPI(_thememanager__WEBPACK_IMPORTED_MODULE_9__[\"default\"]);\nBdApi.Patcher = {\n patch: (caller, moduleToPatch, functionName, callback, options = {}) => {\n if (typeof caller !== \"string\") return _logger__WEBPACK_IMPORTED_MODULE_11__[\"default\"].err(\"BdApi.Patcher\", \"Parameter 0 of patch must be a string representing the caller\");\n if (options.type !== \"before\" && options.type !== \"instead\" && options.type !== \"after\") return _logger__WEBPACK_IMPORTED_MODULE_11__[\"default\"].err(\"BdApi.Patcher\", \"options.type must be one of: before, instead, after\");\n return _patcher__WEBPACK_IMPORTED_MODULE_12__[\"default\"].pushChildPatch(caller, moduleToPatch, functionName, callback, options);\n },\n before: (caller, moduleToPatch, functionName, callback, options = {}) => BdApi.Patcher.patch(caller, moduleToPatch, functionName, callback, Object.assign(options, {\n type: \"before\"\n })),\n instead: (caller, moduleToPatch, functionName, callback, options = {}) => BdApi.Patcher.patch(caller, moduleToPatch, functionName, callback, Object.assign(options, {\n type: \"instead\"\n })),\n after: (caller, moduleToPatch, functionName, callback, options = {}) => BdApi.Patcher.patch(caller, moduleToPatch, functionName, callback, Object.assign(options, {\n type: \"after\"\n })),\n unpatchAll: caller => {\n if (typeof caller !== \"string\") return _logger__WEBPACK_IMPORTED_MODULE_11__[\"default\"].err(\"BdApi.Patcher\", \"Parameter 0 of unpatchAll must be a string representing the caller\");\n return _patcher__WEBPACK_IMPORTED_MODULE_12__[\"default\"].unpatchAll(caller);\n }\n};\nObject.freeze(BdApi);\nObject.freeze(BdApi.Plugins);\nObject.freeze(BdApi.Themes);\nObject.freeze(BdApi.Patcher);\n/* harmony default export */ __webpack_exports__[\"default\"] = (BdApi);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL21vZHVsZXMvcGx1Z2luYXBpLmpzPzZhOTMiXSwibmFtZXMiOlsiQmRBcGkiLCJSZWFjdCIsIkRpc2NvcmRNb2R1bGVzIiwiUmVhY3RET00iLCJXaW5kb3dDb25maWdGaWxlIiwic2V0dGluZ3MiLCJTZXR0aW5ncyIsImNvbGxlY3Rpb25zIiwiZW1vdGVzIiwidmVyc2lvbiIsIkNvbmZpZyIsImdldEFsbFdpbmRvd1ByZWZlcmVuY2VzIiwiRGF0YVN0b3JlIiwiZ2V0RGF0YSIsImdldFdpbmRvd1ByZWZlcmVuY2UiLCJrZXkiLCJzZXRXaW5kb3dQcmVmZXJlbmNlIiwidmFsdWUiLCJwcmVmcyIsInNldERhdGEiLCJpbmplY3RDU1MiLCJpZCIsImNzcyIsIkRPTU1hbmFnZXIiLCJpbmplY3RTdHlsZSIsImNsZWFyQ1NTIiwicmVtb3ZlU3R5bGUiLCJsaW5rSlMiLCJ1cmwiLCJpbmplY3RTY3JpcHQiLCJ1bmxpbmtKUyIsInJlbW92ZVNjcmlwdCIsImFsZXJ0IiwidGl0bGUiLCJjb250ZW50IiwiTW9kYWxzIiwic2hvd0NvbmZpcm1hdGlvbk1vZGFsIiwib3B0aW9ucyIsInNob3dUb2FzdCIsIlRvYXN0cyIsInNob3ciLCJmaW5kTW9kdWxlIiwiZmlsdGVyIiwiV2VicGFja01vZHVsZXMiLCJnZXRNb2R1bGUiLCJmaW5kQWxsTW9kdWxlcyIsImZpbmRNb2R1bGVCeVByb3BzIiwicHJvcHMiLCJnZXRCeVByb3BzIiwiZmluZE1vZHVsZUJ5UHJvdG90eXBlcyIsInByb3RvcyIsImdldEJ5UHJvdG90eXBlcyIsImZpbmRNb2R1bGVCeURpc3BsYXlOYW1lIiwibmFtZSIsImdldEJ5RGlzcGxheU5hbWUiLCJnZXRJbnRlcm5hbEluc3RhbmNlIiwibm9kZSIsIndpbmRvdyIsImpRdWVyeSIsIkVsZW1lbnQiLCJ1bmRlZmluZWQiLCJVdGlsaXRpZXMiLCJnZXRSZWFjdEluc3RhbmNlIiwibG9hZERhdGEiLCJwbHVnaW5OYW1lIiwiZ2V0UGx1Z2luRGF0YSIsInNhdmVEYXRhIiwiZGF0YSIsInNldFBsdWdpbkRhdGEiLCJkZWxldGVEYXRhIiwiZGVsZXRlUGx1Z2luRGF0YSIsIm1vbmtleVBhdGNoIiwid2hhdCIsIm1ldGhvZE5hbWUiLCJiZWZvcmUiLCJhZnRlciIsImluc3RlYWQiLCJvbmNlIiwicGF0Y2hUeXBlIiwiTG9nZ2VyIiwiZXJyIiwib3JpZ2luYWxNZXRob2QiLCJjYWxsT3JpZ2luYWxNZXRob2QiLCJhcHBseSIsInRoaXNPYmplY3QiLCJtZXRob2RBcmd1bWVudHMiLCJjYW5jZWxQYXRjaCIsIlBhdGNoZXIiLCJhcmdzIiwicmV0dXJuVmFsdWUiLCJSZWZsZWN0Iiwib25SZW1vdmVkIiwiY2FsbGJhY2siLCJzdXBwcmVzc0Vycm9ycyIsIm1ldGhvZCIsIm1lc3NhZ2UiLCJ0ZXN0SlNPTiIsImdldFBsdWdpbiIsIndhcm4iLCJQbHVnaW5NYW5hZ2VyIiwiYWRkb25MaXN0IiwiZmluZCIsImEiLCJpc1BsdWdpbkVuYWJsZWQiLCJwbHVnaW4iLCJpc0VuYWJsZWQiLCJpc1RoZW1lRW5hYmxlZCIsInRoZW1lIiwiVGhlbWVNYW5hZ2VyIiwiaXNTZXR0aW5nRW5hYmxlZCIsImNvbGxlY3Rpb24iLCJjYXRlZ29yeSIsImdldCIsImVuYWJsZVNldHRpbmciLCJzZXQiLCJkaXNhYmxlU2V0dGluZyIsInRvZ2dsZVNldHRpbmciLCJnZXRCRERhdGEiLCJzZXRCRERhdGEiLCJtYWtlQWRkb25BUEkiLCJtYW5hZ2VyIiwiQWRkb25BUEkiLCJmb2xkZXIiLCJhZGRvbkZvbGRlciIsImlkT3JGaWxlIiwiZW5hYmxlIiwiaWRPckFkZG9uIiwiZW5hYmxlQWRkb24iLCJkaXNhYmxlIiwiZGlzYWJsZUFkZG9uIiwidG9nZ2xlIiwidG9nZ2xlQWRkb24iLCJyZWxvYWQiLCJpZE9yRmlsZU9yQWRkb24iLCJyZWxvYWRBZGRvbiIsImdldEFkZG9uIiwiZ2V0QWxsIiwibWFwIiwiUGx1Z2lucyIsIlRoZW1lcyIsInBhdGNoIiwiY2FsbGVyIiwibW9kdWxlVG9QYXRjaCIsImZ1bmN0aW9uTmFtZSIsInR5cGUiLCJwdXNoQ2hpbGRQYXRjaCIsIk9iamVjdCIsImFzc2lnbiIsInVucGF0Y2hBbGwiLCJmcmVlemUiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBLE1BQU1BLEtBQUssR0FBRztBQUNWLE1BQUlDLEtBQUosR0FBWTtBQUFFLFdBQU9DLHVEQUFjLENBQUNELEtBQXRCO0FBQThCLEdBRGxDOztBQUVWLE1BQUlFLFFBQUosR0FBZTtBQUFFLFdBQU9ELHVEQUFjLENBQUNDLFFBQXRCO0FBQWlDLEdBRnhDOztBQUdWLE1BQUlDLGdCQUFKLEdBQXVCO0FBQUMsV0FBTyxFQUFQO0FBQVcsR0FIekI7O0FBSVYsTUFBSUMsUUFBSixHQUFlO0FBQUMsV0FBT0MseURBQVEsQ0FBQ0MsV0FBaEI7QUFBNkIsR0FKbkM7O0FBS1YsTUFBSUMsTUFBSixHQUFhO0FBQUMsV0FBTyxFQUFQO0FBQVcsR0FMZjs7QUFNVixNQUFJQyxPQUFKLEdBQWM7QUFBQyxXQUFPQywyQ0FBTSxDQUFDRCxPQUFkO0FBQXVCOztBQU41QixDQUFkOztBQVNBVCxLQUFLLENBQUNXLHVCQUFOLEdBQWdDLFlBQVc7QUFDdkMsU0FBT0Msa0RBQVMsQ0FBQ0MsT0FBVixDQUFrQixhQUFsQixLQUFvQyxFQUEzQztBQUNILENBRkQ7O0FBSUFiLEtBQUssQ0FBQ2MsbUJBQU4sR0FBNEIsVUFBU0MsR0FBVCxFQUFjO0FBQ3RDLFNBQU8sS0FBS0osdUJBQUwsR0FBK0JJLEdBQS9CLENBQVA7QUFDSCxDQUZEOztBQUlBZixLQUFLLENBQUNnQixtQkFBTixHQUE0QixVQUFTRCxHQUFULEVBQWNFLEtBQWQsRUFBcUI7QUFDN0MsUUFBTUMsS0FBSyxHQUFHLEtBQUtQLHVC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Q0FBUDtBQUNqQyxXQUFPTyxpREFBTyxDQUFDNkQsVUFBUixDQUFtQlAsTUFBbkIsQ0FBUDtBQUNIO0FBWlcsQ0FBaEI7QUFlQUssTUFBTSxDQUFDRyxNQUFQLENBQWNySixLQUFkO0FBQ0FrSixNQUFNLENBQUNHLE1BQVAsQ0FBY3JKLEtBQUssQ0FBQzBJLE9BQXBCO0FBQ0FRLE1BQU0sQ0FBQ0csTUFBUCxDQUFjckosS0FBSyxDQUFDMkksTUFBcEI7QUFDQU8sTUFBTSxDQUFDRyxNQUFQLENBQWNySixLQUFLLENBQUN1RixPQUFwQjtBQUVldkYsb0VBQWYiLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9wbHVnaW5hcGkuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbmZpZ30gZnJvbSBcImRhdGFcIjtcclxuaW1wb3J0IFV0aWxpdGllcyBmcm9tIFwiLi91dGlsaXRpZXNcIjtcclxuaW1wb3J0IFdlYnBhY2tNb2R1bGVzIGZyb20gXCIuL3dlYnBhY2ttb2R1bGVzXCI7XHJcbmltcG9ydCBEaXNjb3JkTW9kdWxlcyBmcm9tIFwiLi9kaXNjb3JkbW9kdWxlc1wiO1xyXG5pbXBvcnQgRGF0YVN0b3JlIGZyb20gXCIuL2RhdGFzdG9yZVwiO1xyXG5pbXBvcnQgRE9NTWFuYWdlciBmcm9tIFwiLi9kb21tYW5hZ2VyXCI7XHJcbmltcG9ydCBUb2FzdHMgZnJvbSBcIi4uL3VpL3RvYXN0c1wiO1xyXG5pbXBvcnQgTW9kYWxzIGZyb20gXCIuLi91aS9tb2RhbHNcIjtcclxuaW1wb3J0IFBsdWdpbk1hbmFnZXIgZnJvbSBcIi4vcGx1Z2lubWFuYWdlclwiO1xyXG5pbXBvcnQgVGhlbWVNYW5hZ2VyIGZyb20gXCIuL3RoZW1lbWFuYWdlclwiO1xyXG5pbXBvcnQgU2V0dGluZ3MgZnJvbSBcIi4vc2V0dGluZ3NtYW5hZ2VyXCI7XHJcbmltcG9ydCBMb2dnZXIgZnJvbSBcIi4vbG9nZ2VyXCI7XHJcbmltcG9ydCBQYXRjaGVyIGZyb20gXCIuL3BhdGNoZXJcIjtcclxuXHJcbmNvbnN0IEJkQXBpID0ge1xyXG4gICAgZ2V0IFJlYWN0KCkgeyByZXR1cm4gRGlzY29yZE1vZHVsZXMuUmVhY3Q7IH0sXHJcbiAgICBnZXQgUmVhY3RET00oKSB7IHJldHVybiBEaXNjb3JkTW9kdWxlcy5SZWFjdERPTTsgfSxcclxuICAgIGdldCBXaW5kb3dDb25maWdGaWxlKCkge3JldHVybiBcIlwiO30sXHJcbiAgICBnZXQgc2V0dGluZ3MoKSB7cmV0dXJuIFNldHRpbmdzLmNvbGxlY3Rpb25zO30sXHJcbiAgICBnZXQgZW1vdGVzKCkge3JldHVybiB7fTt9LFxyXG4gICAgZ2V0IHZlcnNpb24oKSB7cmV0dXJuIENvbmZpZy52ZXJzaW9uO31cclxufTtcclxuXHJcbkJkQXBpLmdldEFsbFdpbmRvd1ByZWZlcmVuY2VzID0gZnVuY3Rpb24oKSB7XHJcbiAgICByZXR1cm4gRGF0YVN0b3JlLmdldERhdGEoXCJ3aW5kb3dwcmVmc1wiKSB8fCB7fTtcclxufTtcclxuXHJcbkJkQXBpLmdldFdpbmRvd1ByZWZlcmVuY2UgPSBmdW5jdGlvbihrZXkpIHtcclxuICAgIHJldHVybiB0aGlzLmdldEFsbFdpbmRvd1ByZWZlcmVuY2VzKClba2V5XTtcclxufTtcclxuXHJcbkJkQXBpLnNldFdpbmRvd1ByZWZlcmVuY2UgPSBmdW5jdGlvbihrZXksIHZhbHVlKSB7XHJcbiAgICBjb25zdCBwcmVmcyA9IHRoaXMuZ2V0QWxsV2luZG93UHJlZmVyZW5jZXMoKTtcclxuICAgIHByZWZzW2tleV0gPSB2YWx1ZTtcclxuICAgIHJldHVybiBEYXRhU3RvcmUuc2V0RGF0YShcIndpbmRvd3ByZWZzXCIsIHByZWZzKTtcclxufTtcclxuXHJcbi8vSW5qZWN0IENTUyB0byBkb2N1bWVudCBoZWFkXHJcbi8vaWQgPSBpZCBvZiBlbGVtZW50XHJcbi8vY3NzID0gY3VzdG9tIGNzc1xyXG5CZEFwaS5pbmplY3RDU1MgPSBmdW5jdGlvbiAoaWQsIGNzcykge1xyXG4gICAgRE9NTWFuYWdlci5pbmplY3RTdHlsZShpZCwgY3NzKTtcclxufTtcclxuXHJcbi8vQ2xlYXIgY3NzL3JlbW92ZSBhbnkgZWxlbWVudFxyXG4vL2lkID0gaWQgb2YgZWxlbWVudFxyXG5CZEFwaS5jbGVhckNTUyA9IGZ1bmN0aW9uIChpZCkge1xyXG4gICAgRE9NTWFuYWdlci5yZW1vdmVTdHlsZShpZCk7XHJcbn07XHJcblxyXG4vL0luamVjdCBDU1MgdG8gZG9jdW1lbnQgaGVhZFxyXG4vL2lkID0gaWQgb2YgZWxlbWVudFxyXG4vL2NzcyA9IGN1c3RvbSBjc3NcclxuQmRBcGkubGlua0pTID0gZnVuY3Rpb24gKGlkLCB1cmwpIHtcclxuICAgIHJldHVybiBET01NYW5hZ2VyLmluamVjdFNjcmlwdChpZCwgdXJsKTtcclxufTtcclxuXHJcbi8vQ2xlYXIgY3NzL3JlbW92ZSBhbnkgZWxlbWVudFxyXG4vL2lkID0gaWQgb2YgZWxlbWVudFxyXG5CZEFwaS51bmxpbmtKUyA9IGZ1bmN0aW9uIChpZCkge1xyXG4gICAgRE9NTWFuYWdlci5yZW1vdmVTY3JpcHQoaWQpO1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIFNob3dzIGEgZ2VuZXJpYyBidXQgdmVyeSBjdXN0b21pemFibGUgbW9kYWwuXHJcbiAqIEBwYXJhbSB7c3RyaW5nfSB0aXRsZSAtIHRpdGxlIG9mIHRoZSBtb2RhbFxyXG4gKiBAcGFyYW0ge3N0cmluZ30gY29udGVudCAtIGEgc3RyaW5nIG9mIHRleHQgdG8gZGlzcGxheSBpbiB0aGUgbW9kYWxcclxuICovXHJcbkJkQXBpLmFsZXJ0ID0gZnVuY3Rpb24gKHRpdGxlLCBjb250ZW50KSB7XHJcbiAgICBNb2RhbHMuYWxlcnQodGl0bGUsIGNvbnRlbnQpO1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIFNob3dzIGEgZ2VuZXJpYyBidXQgdmVyeSBjdXN0b21pemFibGUgY29uZmlybWF0aW9uIG1vZGFsIHdpdGggb3B0aW9uYWwgY29uZmlybSBhbmQgY2FuY2VsIGNhbGxiYWNrcy5cclxuICogQHBhcmFtIHtzdHJpbmd9IHRpdGxlIC0gdGl0bGUgb2YgdGhlIG1vZGFsXHJcbiAqIEBwYXJhbSB7KHN0cmluZ3xSZWFjdEVsZW1lbnR8QXJyYXk8c3RyaW5nfFJlYWN0RWxlbWVudD4pfSBjaGlsZHJlbiAtIGEgc2luZ2xlIG9yIG1peGVkIGFycmF5IG9mIHJlYWN0IGVsZW1lbnRzIGFuZCBzdHJpbmdzLiBFdmVyeXRoaW5nIGlzIHdyYXBwZWQgaW4gRGlzY29yZCdzIGBUZXh0RWxlbWVudGAgY29tcG9uZW50IHNvIHN0cmluZ3Mgd2lsbCBzaG93IGFuZCByZW5kZXIgcHJvcGVybHkuXHJcbiAqIEBwYXJhbSB7b2JqZWN0fSBbb3B0aW9uc10gLSBvcHRpb25zIHRvIG1vZGlmeSB0aGUgbW9kYWxcclxuICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5kYW5nZXI9ZmFsc2VdIC0gd2hldGhlciB0aGUgbWFpbiBidXR0b24gc2hvdWxkIGJlIHJlZCBvciBub3RcclxuICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLmNvbmZpcm1UZXh0PU9rYXldIC0gdGV4dCBmb3IgdGhlIGNvbmZpcm1hdGlvbi9zdWJtaXQgYnV0dG9uXHJcbiAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5jYW5jZWxUZXh0PUNhbmNlbF0gLSB0ZXh0IGZvciB0aGUgY2FuY2VsIGJ1dHRvblxyXG4gKiBAcGFyYW0ge2NhbGxhYmxlfSBbb3B0aW9ucy5vbkNvbmZpcm09Tk9PUF0gLSBjYWxsYmFjayB0byBvY2N1ciB3aGVuIGNsaWNraW5nIHRoZSBzdWJtaXQgYnV0dG9uXHJcbiAqIEBwYXJhbSB7Y2FsbGFibGV9IFtvcHRpb25zLm9uQ2FuY2VsPU5PT1BdIC0gY2FsbGJhY2sgdG8gb2NjdXIgd2hlbiBjbGlja2luZyB0aGUgY2FuY2VsIGJ1dHRvblxyXG4gKi9cclxuQmRBcGkuc2hvd0NvbmZpcm1hdGlvbk1vZGFsID0gZnVuY3Rpb24gKHRpdGxlLCBjb250ZW50LCBvcHRpb25zID0ge30pIHtcclxuICAgIHJldHVybiBNb2RhbHMuc2hvd0NvbmZpcm1hdGlvbk1vZGFsKHRpdGxlLCBjb250ZW50LCBvcHRpb25zKTtcclxufTtcclxuXHJcbi8qKlxyXG4gKiBUaGlzIHNob3dzIGEgdG9hc3Qgc2ltaWxhciB0byBhbmRyb2lkIHRvd2FyZHMgdGhlIGJvdHRvbSBvZiB0aGUgc2NyZWVuLlxyXG4gKlxyXG4gKiBAcGFyYW0ge3N0cmluZ30gY29udGVudCBUaGUgc3RyaW5nIHRvIHNob3cgaW4gdGhlIHRvYXN0LlxyXG4gKiBAcGFyYW0ge29iamVjdH0gb3B0aW9ucyBPcHRpb25zIG9iamVjdC4gT3B0aW9uYWwgcGFyYW1ldGVyLlxyXG4gKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMudHlwZT1cIlwiXSBDaGFuZ2VzIHRoZSB0eXBlIG9mIHRoZSB0b2FzdCBzdHlsaXN0aWNhbGx5IGFuZCBzZW1hbnRpY2FsbHkuIENob2ljZXM6IFwiXCIsIFwiaW5mb1wiLCBcInN1Y2Nlc3NcIiwgXCJkYW5nZXJcIi9cImVycm9yXCIsIFwid2FybmluZ1wiL1wid2FyblwiLiBEZWZhdWx0OiBcIlwiXHJcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMuaWNvbj10cnVlXSBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGljb24gc2hvdWxkIHNob3cgY29ycmVzcG9uZGluZyB0byB0aGUgdHlwZS4gQSB0b2FzdCB3aXRob3V0IHR5cGUgd2lsbCBhbHdheXMgaGF2ZSBubyBpY29uLiBEZWZhdWx0OiB0cnVlXHJcbiAqIEBwYXJhbSB7bnVtYmVyfSBbb3B0aW9ucy50aW1lb3V0PTMwMDBdIEFkanVzdHMgdGhlIHRpbWUgKGluIG1zKSB0aGUgdG9hc3Qgc2hvdWxkIGJlIHNob3duIGZvciBiZWZvcmUgZGlzYXBwZWFyaW5nIGF1dG9tYXRpY2FsbHkuIERlZmF1bHQ6IDMwMDBcclxuICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5mb3JjZVNob3c9ZmFsc2VdIFdoZXRoZXIgdG8gZm9yY2Ugc2hvd2luZyB0aGUgdG9hc3QgYW5kIGlnbm9yZSB0aGUgYmQgc2V0dGluZ1xyXG4gKi9cclxuQmRBcGkuc2hvd1RvYXN0ID0gZnVuY3Rpb24oY29udGVudCwgb3B0aW9ucyA9IHt9KSB7XHJcbiAgICBUb2FzdHMuc2hvdyhjb250ZW50LCBvcHRpb25zKTtcclxufTtcclxuXHJcbi8vIEZpbmRzIG1vZHVsZVxyXG5CZEFwaS5maW5kTW9kdWxlID0gZnVuY3Rpb24oZmlsdGVyKSB7XHJcbiAgICByZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0TW9kdWxlKGZpbHRlcik7XHJcbn07XHJcblxyXG4vLyBGaW5kcyBtb2R1bGVcclxuQmRBcGkuZmluZEFsbE1vZHVsZXMgPSBmdW5jdGlvbihmaWx0ZXIpIHtcclxuICAgIHJldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRNb2R1bGUoZmlsdGVyLCBmYWxzZSk7XHJcbn07XHJcblxyXG4vLyBGaW5kcyBtb2R1bGVcclxuQmRBcGkuZmluZE1vZHVsZUJ5UHJvcHMgPSBmdW5jdGlvbiguLi5wcm9wcykge1xyXG4gICAgcmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoLi4ucHJvcHMpO1xyXG59O1xyXG5cclxuQmRBcGkuZmluZE1vZHVsZUJ5UHJvdG90eXBlcyA9IGZ1bmN0aW9uKC4uLnByb3Rvcykge1xyXG4gICAgcmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvdG90eXBlcyguLi5wcm90b3MpO1xyXG59O1xyXG5cclxuQmRBcGkuZmluZE1vZHVsZUJ5RGlzcGxheU5hbWUgPSBmdW5jdGlvbihuYW1lKSB7XHJcbiAgICByZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlEaXNwbGF5TmFtZShuYW1lKTtcclxufTtcclxuXHJcbi8vIEdldHMgcmVhY3QgaW5zdGFuY2VcclxuQmRBcGkuZ2V0SW50ZXJuYWxJbnN0YW5jZSA9IGZ1bmN0aW9uKG5vZGUpIHtcclxuICAgIGlmICghKG5vZGUgaW5zdGFuY2VvZiB3aW5kb3cualF1ZXJ5KSAmJiAhKG5vZGUgaW5zdGFuY2VvZiBFbGVtZW50KSkgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgIGlmIChub2RlIGluc3RhbmNlb2YgalF1ZXJ5KSBub2RlID0gbm9kZVswXTtcclxuICAgIHJldHVybiBVdGlsaXRpZXMuZ2V0UmVhY3RJbnN0YW5jZShub2RlKTtcclxufTtcclxuXHJcbi8vIEdldHMgZGF0YVxyXG5CZEFwaS5sb2FkRGF0YSA9IGZ1bmN0aW9uKHBsdWdpbk5hbWUsIGtleSkge1xyXG4gICAgcmV0dXJuIERhdGFTdG9yZS5nZXRQbHVnaW5EYXRhKHBsdWdpbk5hbWUsIGtleSk7XHJcbn07XHJcblxyXG5CZEFwaS5nZXREYXRhID0gQmRBcGkubG9hZERhdGE7XHJcblxyXG4vLyBTZXRzIGRhdGFcclxuQmRBcGkuc2F2ZURhdGEgPSBmdW5jdGlvbihwbHVnaW5OYW1lLCBrZXksIGRhdGEpIHtcclxuICAgIHJldHVybiBEYXRhU3RvcmUuc2V0UGx1Z2luRGF0YShwbHVnaW5OYW1lLCBrZXksIGRhdGEpO1xyXG59O1xyXG5cclxuQmRBcGkuc2V0RGF0YSA9IEJkQXBpLnNhdmVEYXRhO1xyXG5cclxuLy8gRGVsZXRlcyBkYXRhXHJcbkJkQXBpLmRlbGV0ZURhdGEgPSBmdW5jdGlvbihwbHVnaW5OYW1lLCBrZXkpIHtcclxuICAgIHJldHVybiBEYXRhU3RvcmUuZGVsZXRlUGx1Z2luRGF0YShwbHVnaW5OYW1lLCBrZXkpO1xyXG59O1xyXG5cclxuLy8gUGF0Y2hlcyBvdGhlciBmdW5jdGlvbnNcclxuLy8gQmRBcGkubW9ua2V5UGF0Y2ggPSBmdW5jdGlvbih3aGF0LCBtZXRob2ROYW1lLCBvcHRpb25zKSB7XHJcbi8vICAgICBjb25zdCB7YmVmb3JlLCBhZnRlciwgaW5zdGVhZCwgb25jZSA9IGZhbHNlLCBzaWxlbnQgPSBmYWxzZSwgZm9yY2UgPSBmYWxzZX0gPSBvcHRpb25zO1xyXG4vLyAgICAgY29uc3QgZGlzcGxheU5hbWUgPSBvcHRpb25zLmRpc3BsYXlOYW1lIHx8IHdoYXQuZGlzcGxheU5hbWUgfHwgd2hhdC5uYW1lIHx8IHdoYXQuY29uc3RydWN0b3IuZGlzcGxheU5hbWUgfHwgd2hhdC5jb25zdHJ1Y3Rvci5uYW1lO1xyXG4vLyAgICAgaWYgKCFzaWxlbnQpIGNvbnNvbGUubG9nKFwicGF0Y2hcIiwgbWV0aG9kTmFtZSwgXCJvZlwiLCBkaXNwbGF5TmFtZSk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tY29uc29sZVxyXG4vLyAgICAgaWYgKCF3aGF0W21ldGhvZE5hbWVdKSB7XHJcbi8vICAgICAgICAgaWYgKGZvcmNlKSB3aGF0W21ldGhvZE5hbWVdID0gZnVuY3Rpb24oKSB7fTtcclxuLy8gICAgICAgICBlbHNlIHJldHVybiBjb25zb2xlLmVycm9yKG1ldGhvZE5hbWUsIFwiZG9lcyBub3QgZXhpc3QgZm9yXCIsIGRpc3BsYXlOYW1lKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1jb25zb2xlXHJcbi8vICAgICB9XHJcbi8vICAgICBjb25zdCBvcmlnTWV0aG9kID0gd2hhdFttZXRob2ROYW1lXTtcclxuLy8gICAgIGNvbnN0IGNhbmNlbCA9ICgpID0+IHtcclxuLy8gICAgICAgICBpZiAoIXNpbGVudCkgY29uc29sZS5sb2coXCJ1bnBhdGNoXCIsIG1ldGhvZE5hbWUsIFwib2ZcIiwgZGlzcGxheU5hbWUpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWNvbnNvbGVcclxuLy8gICAgICAgICB3aGF0W21ldGhvZE5hbWVdID0gb3JpZ01ldGhvZDtcclxuLy8gICAgIH07XHJcbi8vICAgICB3aGF0W21ldGhvZE5hbWVdID0gZnVuY3Rpb24oKSB7XHJcbi8vICAgICAgICAgY29uc3QgZGF0YSA9IHtcclxuLy8gICAgICAgICAgICAgdGhpc09iamVjdDogdGhpcyxcclxuLy8gICAgICAgICAgICAgbWV0aG9kQXJndW1lbnRzOiBhcmd1bWVudHMsXHJcbi8vICAgICAgICAgICAgIGNhbmNlbFBhdGNoOiBjYW5jZWwsXHJcbi8vICAgICAgICAgICAgIG9yaWdpbmFsTWV0aG9kOiBvcmlnTWV0aG9kLFxyXG4vLyAgICAgICAgICAgICBjYWxsT3JpZ2luYWxNZXRob2Q6ICgpID0+IGRhdGEucmV0dXJuVmFsdWUgPSBkYXRhLm9yaWdpbmFsTWV0aG9kLmFwcGx5KGRhdGEudGhpc09iamVjdCwgZGF0YS5tZXRob2RBcmd1bWVudHMpXHJcbi8vICAgICAgICAgfTtcclxuLy8gICAgICAgICBpZiAoaW5zdGVhZCkge1xyXG4vLyAgICAgICAgICAgICBjb25zdCB0ZW1wUmV0ID0gVXRpbGl0aWVzLnN1cHByZXNzRXJyb3JzKGluc3RlYWQsIFwiYGluc3RlYWRgIGNhbGxiYWNrIG9mIFwiICsgd2hhdFttZXRob2ROYW1lXS5kaXNwbGF5TmFtZSkoZGF0YSk7XHJcbi8vICAgICAgICAgICAgIGlmICh0ZW1wUmV0ICE9PSB1bmRlZmluZWQpIGRhdGEucmV0dXJuVmFsdWUgPSB0ZW1wUmV0O1xyXG4vLyAgICAgICAgIH1cclxuLy8gICAgICAgICBlbHNlIHtcclxuLy8gICAgICAgICAgICAgaWYgKGJlZm9yZSkgVXRpbGl0aWVzLnN1cHByZXNzRXJyb3JzKGJlZm9yZSwgXCJgYmVmb3JlYCBjYWxsYmFjayBvZiBcIiArIHdoYXRbbWV0aG9kTmFtZV0uZGlzcGxheU5hbWUpKGRhdGEpO1xyXG4vLyAgICAgICAgICAgICBkYXRhLmNhbGxPcmlnaW5hbE1ldGhvZCgpO1xyXG4vLyAgICAgICAgICAgICBpZiAoYWZ0ZXIpIFV0aWxpdGllcy5zdXBwcmVzc0Vycm9ycyhhZnRlciwgXCJgYWZ0ZXJgIGNhbGxiYWNrIG9mIFwiICsgd2hhdFttZXRob2ROYW1lXS5kaXNwbGF5TmFtZSkoZGF0YSk7XHJcbi8vICAgICAgICAgfVxyXG4vLyAgICAgICAgIGlmIChvbmNlKSBjYW5jZWwoKTtcclxuLy8gICAgICAgICByZXR1cm4gZGF0YS5yZXR1cm5WYWx1ZTtcclxuLy8gICAgIH07XHJcbi8vICAgICB3aGF0W21ldGhvZE5hbWVdLl9fbW9ua2V5UGF0Y2hlZCA9IHRydWU7XHJcbi8vICAgICBpZiAoIXdoYXRbbWV0aG9kTmFtZV0uX19vcmlnaW5hbE1ldGhvZCkgd2hhdFttZXRob2ROYW1lXS5fX29yaWdpbmFsTWV0aG9kID0gb3JpZ01ldGhvZDtcclxuLy8gICAgIHdoYXRbbWV0aG9kTmFtZV0uZGlzcGxheU5hbWUgPSBcInBhdGNoZWQgXCIgKyAod2hhdFttZXRob2ROYW1lXS5kaXNwbGF5TmFtZSB8fCBtZXRob2ROYW1lKTtcclxuLy8gICAgIHJldHVybiBjYW5jZWw7XHJcbi8vIH07XHJcbkJkQXBpLm1vbmtleVBhdGNoID0gZnVuY3Rpb24od2hhdCwgbWV0aG9kTmFtZSwgb3B0aW9ucykge1xyXG4gICAgY29uc3Qge2JlZm9yZSwgYWZ0ZXIsIGluc3RlYWQsIG9uY2UgPSBmYWxzZX0gPSBvcHRpb25zO1xyXG4gICAgY29uc3QgcGF0Y2hUeXBlID0gYmVmb3JlID8gXCJiZWZvcmVcIiA6IGFmdGVyID8gXCJhZnRlclwiIDogaW5zdGVhZCA/IFwiaW5zdGVhZFwiIDogXCJcIjtcclxuICAgIGlmICghcGF0Y2hUeXBlKSByZXR1cm4gTG9nZ2VyLmVycihcIkJkQXBpXCIsIFwiTXVzdCBwcm92aWRlIG9uZSBvZjogYWZ0ZXIsIGJlZm9yZSwgaW5zdGVhZFwiKTtcclxuICAgIGNvbnN0IG9yaWdpbmFsTWV0aG9kID0gd2hhdFttZXRob2ROYW1lXTtcclxuICAgIGNvbnN0IGRhdGEgPSB7XHJcbiAgICAgICAgb3JpZ2luYWxNZXRob2Q6IG9yaWdpbmFsTWV0aG9kLFxyXG4gICAgICAgIGNhbGxPcmlnaW5hbE1ldGhvZDogKCkgPT4gZGF0YS5vcmlnaW5hbE1ldGhvZC5hcHBseShkYXRhLnRoaXNPYmplY3QsIGRhdGEubWV0aG9kQXJndW1lbnRzKVxyXG4gICAgfTtcclxuICAgIGRhdGEuY2FuY2VsUGF0Y2ggPSBQYXRjaGVyW3BhdGNoVHlwZV0oXCJCZEFwaVwiLCB3aGF0LCBtZXRob2ROYW1lLCAodGhpc09iamVjdCwgYXJncywgcmV0dXJuVmFsdWUpID0+IHtcclxuICAgICAgICBkYXRhLnRoaXNPYmplY3QgPSB0aGlzT2JqZWN0O1xyXG4gICAgICAgIGRhdGEubWV0aG9kQXJndW1lbnRzID0gYXJncztcclxuICAgICAgICBkYXRhLnJldHVyblZhbHVlID0gcmV0dXJuVmFsdWU7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgUmVmbGVjdC5hcHBseShvcHRpb25zW3BhdGNoVHlwZV0sIG51bGwsIFtkYXRhXSk7XHJcbiAgICAgICAgICAgIGlmIChvbmNlKSBkYXRhLmNhbmNlbFBhdGNoKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChlcnIpIHtcclxuICAgICAgICAgICAgLy8gTG9nZ2VyLmVycihcIm1vbmtleVBhdGNoXCIsIGBFcnJvciBpbiB0aGUgJHtwYXRjaFR5cGV9IG9mICR7bWV0aG9kTmFtZX1gKTtcclxuICAgICAgICB9XHJcbiAgICB9KTtcclxufTtcclxuLy8gRXZlbnQgd2hlbiBlbGVtZW50IGlzIHJlbW92ZWRcclxuQmRBcGkub25SZW1vdmVkID0gZnVuY3Rpb24obm9kZSwgY2FsbGJhY2spIHtcclxuICAgIHJldHVybiBVdGlsaXRpZXMub25SZW1vdmVkKG5vZGUsIGNhbGxiYWNrKTtcclxufTtcclxuXHJcbi8vIFdyYXBzIGZ1bmN0aW9uIGluIHRyeS4uY2F0Y2hcclxuQmRBcGkuc3VwcHJlc3NFcnJvcnMgPSBmdW5jdGlvbihtZXRob2QsIG1lc3NhZ2UpIHtcclxuICAgIHJldHVybiBVdGlsaXRpZXMuc3VwcHJlc3NFcnJvcnMobWV0aG9kLCBtZXNzYWdlKTtcclxufTtcclxuXHJcbi8vIFRlc3RzIGZvciB2YWxpZCBKU09OXHJcbkJkQXBpLnRlc3RKU09OID0gZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgcmV0dXJuIFV0aWxpdGllcy50ZXN0SlNPTihkYXRhKTtcclxufTtcclxuXHJcbi8vR2V0IGFub3RoZXIgcGx1Z2luXHJcbi8vbmFtZSA9IG5hbWUgb2YgcGx1Z2luXHJcbkJkQXBpLmdldFBsdWdpbiA9IGZ1bmN0aW9uIChuYW1lKSB7XHJcbiAgICBMb2dnZXIud2FybihcIkJkQXBpXCIsIFwiZ2V0UGx1Z2luIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSBtYWtlIHVzZSBvZiB0aGUgYWRkb24gYXBpIChCZEFwaS5QbHVnaW5zKVwiKTtcclxuICAgIHJldHVybiBQbHVnaW5NYW5hZ2VyLmFkZG9uTGlzdC5maW5kKGEgPT4gYS5uYW1lID09IG5hbWUpO1xyXG59O1xyXG5cclxuQmRBcGkuaXNQbHVnaW5FbmFibGVkID0gZnVuY3Rpb24obmFtZSkge1xyXG4gICAgTG9nZ2VyLndhcm4oXCJCZEFwaVwiLCBcImlzUGx1Z2luRW5hYmxlZCBpcyBkZXByZWNhdGVkLiBQbGVhc2UgbWFrZSB1c2Ugb2YgdGhlIGFkZG9uIGFwaSAoQmRBcGkuUGx1Z2lucylcIik7XHJcbiAgICBjb25zdCBwbHVnaW4gPSB0aGlzLmdldFBsdWdpbihuYW1lKTtcclxuICAgIGlmICghcGx1Z2luKSByZXR1cm4gZmFsc2U7XHJcbiAgICByZXR1cm4gUGx1Z2luTWFuYWdlci5pc0VuYWJsZWQocGx1Z2luLmlkKTtcclxufTtcclxuXHJcbkJkQXBpLmlzVGhlbWVFbmFibGVkID0gZnVuY3Rpb24obmFtZSkge1xyXG4gICAgTG9nZ2VyLndhcm4oXCJCZEFwaVwiLCBcImlzVGhlbWVFbmFibGVkIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSBtYWtlIHVzZSBvZiB0aGUgYWRkb24gYXBpIChCZEFwaS5UaGVtZXMpXCIpO1xyXG4gICAgY29uc3QgdGhlbWUgPSBUaGVtZU1hbmFnZXIuYWRkb25MaXN0LmZpbmQoYSA9PiBhLm5hbWUgPT0gbmFtZSk7XHJcbiAgICBpZiAoIXRoZW1lKSByZXR1cm4gZmFsc2U7XHJcbiAgICByZXR1cm4gVGhlbWVNYW5hZ2VyLmlzRW5hYmxlZCh0aGVtZS5pZCk7XHJcbn07XHJcblxyXG5CZEFwaS5pc1NldHRpbmdFbmFibGVkID0gZnVuY3Rpb24oY29sbGVjdGlvbiwgY2F0ZWdvcnksIGlkKSB7XHJcbiAgICByZXR1cm4gU2V0dGluZ3MuZ2V0KGNvbGxlY3Rpb24sIGNhdGVnb3J5LCBpZCk7XHJcbn07XHJcblxyXG5CZEFwaS5lbmFibGVTZXR0aW5nID0gZnVuY3Rpb24oY29sbGVjdGlvbiwgY2F0ZWdvcnksIGlkKSB7XHJcbiAgICByZXR1cm4gU2V0dGluZ3Muc2V0KGNvbGxlY3Rpb24sIGNhdGVnb3J5LCBpZCwgdHJ1ZSk7XHJcbn07XHJcblxyXG5CZEFwaS5kaXNhYmxlU2V0dGluZyA9IGZ1bmN0aW9uKGNvbGxlY3Rpb24sIGNhdGVnb3J5LCBpZCkge1xyXG4gICAgcmV0dXJuIFNldHRpbmdzLnNldChjb2xsZWN0aW9uLCBjYXRlZ29yeSwgaWQsIGZhbHNlKTtcclxufTtcclxuXHJcbkJkQXBpLnRvZ2dsZVNldHRpbmcgPSBmdW5jdGlvbihjb2xsZWN0aW9uLCBjYXRlZ29yeSwgaWQpIHtcclxuICAgIHJldHVybiBTZXR0aW5ncy5zZXQoY29sbGVjdGlvbiwgY2F0ZWdvcnksIGlkLCAhU2V0dGluZ3MuZ2V0KGNvbGxlY3Rpb24sIGNhdGVnb3J5LCBpZCkpO1xyXG59O1xyXG5cclxuLy8gR2V0cyBkYXRhXHJcbkJkQXBpLmdldEJERGF0YSA9IGZ1bmN0aW9uKGtleSkge1xyXG4gICAgcmV0dXJuIERhdGFTdG9yZS5nZXRCRERhdGEoa2V5KTtcclxufTtcclxuXHJcbi8vIFNldHMgZGF0YVxyXG5CZEFwaS5zZXRCRERhdGEgPSBmdW5jdGlvbihrZXksIGRhdGEpIHtcclxuICAgIHJldHVybiBEYXRhU3RvcmUuc2V0QkREYXRhKGtleSwgZGF0YSk7XHJcbn07XHJcblxyXG5jb25zdCBtYWtlQWRkb25BUEkgPSAobWFuYWdlcikgPT4gbmV3IGNsYXNzIEFkZG9uQVBJIHtcclxuICAgIGdldCBmb2xkZXIoKSB7cmV0dXJuIG1hbmFnZXIuYWRkb25Gb2xkZXI7fVxyXG4gICAgaXNFbmFibGVkKGlkT3JGaWxlKSB7cmV0dXJuIG1hbmFnZXIuaXNFbmFibGVkKGlkT3JGaWxlKTt9XHJcbiAgICBlbmFibGUoaWRPckFkZG9uKSB7cmV0dXJuIG1hbmFnZXIuZW5hYmxlQWRkb24oaWRPckFkZG9uKTt9XHJcbiAgICBkaXNhYmxlKGlkT3JBZGRvbikge3JldHVybiBtYW5hZ2VyLmRpc2FibGVBZGRvbihpZE9yQWRkb24pO31cclxuICAgIHRvZ2dsZShpZE9yQWRkb24pIHtyZXR1cm4gbWFuYWdlci50b2dnbGVBZGRvbihpZE9yQWRkb24pO31cclxuICAgIHJlbG9hZChpZE9yRmlsZU9yQWRkb24pIHtyZXR1cm4gbWFuYWdlci5yZWxvYWRBZGRvbihpZE9yRmlsZU9yQWRkb24pO31cclxuICAgIGdldChpZE9yRmlsZSkge3JldHVybiBtYW5hZ2VyLmdldEFkZG9uKGlkT3JGaWxlKTt9XHJcbiAgICBnZXRBbGwoKSB7cmV0dXJuIG1hbmFnZXIuYWRkb25MaXN0Lm1hcChhID0+IG1hbmFnZXIuZ2V0QWRkb24oYS5pZCkpO31cclxufTtcclxuXHJcbkJkQXBpLlBsdWdpbnMgPSBtYWtlQWRkb25BUEkoUGx1Z2luTWFuYWdlcik7XHJcbkJkQXBpLlRoZW1lcyA9IG1ha2VBZGRvbkFQSShUaGVtZU1hbmFnZXIpO1xyXG5CZEFwaS5QYXRjaGVyID0ge1xyXG4gICAgcGF0Y2g6IChjYWxsZXIsIG1vZHVsZVRvUGF0Y2gsIGZ1bmN0aW9uTmFtZSwgY2FsbGJhY2ssIG9wdGlvbnMgPSB7fSkgPT4ge1xyXG4gICAgICAgIGlmICh0eXBlb2YoY2FsbGVyKSAhPT0gXCJzdHJpbmdcIikgcmV0dXJuIExvZ2dlci5lcnIoXCJCZEFwaS5QYXRjaGVyXCIsIFwiUGFyYW1ldGVyIDAgb2YgcGF0Y2ggbXVzdCBiZSBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGNhbGxlclwiKTtcclxuICAgICAgICBpZiAob3B0aW9ucy50eXBlICE9PSBcImJlZm9yZVwiICYmIG9wdGlvbnMudHlwZSAhPT0gXCJpbnN0ZWFkXCIgJiYgb3B0aW9ucy50eXBlICE9PSBcImFmdGVyXCIpIHJldHVybiBMb2dnZXIuZXJyKFwiQmRBcGkuUGF0Y2hlclwiLCBcIm9wdGlvbnMudHlwZSBtdXN0IGJlIG9uZSBvZjogYmVmb3JlLCBpbnN0ZWFkLCBhZnRlclwiKTtcclxuICAgICAgICByZXR1cm4gUGF0Y2hlci5wdXNoQ2hpbGRQYXRjaChjYWxsZXIsIG1vZHVsZVRvUGF0Y2gsIGZ1bmN0aW9uTmFtZSwgY2FsbGJhY2ssIG9wdGlvbnMpO1xyXG4gICAgfSxcclxuICAgIGJlZm9yZTogKGNhbGxlciwgbW9kdWxlVG9QYXRjaCwgZnVuY3Rpb25OYW1lLCBjYWxsYmFjaywgb3B0aW9ucyA9IHt9KSA9PiBCZEFwaS5QYXRjaGVyLnBhdGNoKGNhbGxlciwgbW9kdWxlVG9QYXRjaCwgZnVuY3Rpb25OYW1lLCBjYWxsYmFjaywgT2JqZWN0LmFzc2lnbihvcHRpb25zLCB7dHlwZTogXCJiZWZvcmVcIn0pKSxcclxuICAgIGluc3RlYWQ6IChjYWxsZXIsIG1vZHVsZVRvUGF0Y2gsIGZ1bmN0aW9uTmFtZSwgY2FsbGJhY2ssIG9wdGlvbnMgPSB7fSkgPT4gQmRBcGkuUGF0Y2hlci5wYXRjaChjYWxsZXIsIG1vZHVsZVRvUGF0Y2gsIGZ1bmN0aW9uTmFtZSwgY2FsbGJhY2ssIE9iamVjdC5hc3NpZ24ob3B0aW9ucywge3R5cGU6IFwiaW5zdGVhZFwifSkpLFxyXG4gICAgYWZ0ZXI6IChjYWxsZXIsIG1vZHVsZVRvUGF0Y2gsIGZ1bmN0aW9uTmFtZSwgY2FsbGJhY2ssIG9wdGlvbnMgPSB7fSkgPT4gQmRBcGkuUGF0Y2hlci5wYXRjaChjYWxsZXIsIG1vZHVsZVRvUGF0Y2gsIGZ1bmN0aW9uTmFtZSwgY2FsbGJhY2ssIE9iamVjdC5hc3NpZ24ob3B0aW9ucywge3R5cGU6IFwiYWZ0ZXJcIn0pKSxcclxuICAgIHVucGF0Y2hBbGw6IChjYWxsZXIpID0+IHtcclxuICAgICAgICBpZiAodHlwZW9mKGNhbGxlcikgIT09IFwic3RyaW5nXCIpIHJldHVybiBMb2dnZXIuZXJyKFwiQmRBcGkuUGF0Y2hlclwiLCBcIlBhcmFtZXRlciAwIG9mIHVucGF0Y2hBbGwgbXVzdCBiZSBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGNhbGxlclwiKTtcclxuICAgICAgICByZXR1cm4gUGF0Y2hlci51bnBhdGNoQWxsKGNhbGxlcik7XHJcbiAgICB9XHJcbn07XHJcblxyXG5PYmplY3QuZnJlZXplKEJkQXBpKTtcclxuT2JqZWN0LmZyZWV6ZShCZEFwaS5QbHVnaW5zKTtcclxuT2JqZWN0LmZyZWV6ZShCZEFwaS5UaGVtZXMpO1xyXG5PYmplY3QuZnJlZXplKEJkQXBpLlBhdGNoZXIpO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgQmRBcGk7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/pluginapi.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var data__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! data */ \"./src/data/data.js\");\n/* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utilities */ \"./src/modules/utilities.js\");\n/* harmony import */ var _webpackmodules__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./webpackmodules */ \"./src/modules/webpackmodules.js\");\n/* harmony import */ var _discordmodules__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./discordmodules */ \"./src/modules/discordmodules.js\");\n/* harmony import */ var _datastore__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./datastore */ \"./src/modules/datastore.js\");\n/* harmony import */ var _dommanager__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./dommanager */ \"./src/modules/dommanager.js\");\n/* harmony import */ var _ui_toasts__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../ui/toasts */ \"./src/ui/toasts.js\");\n/* harmony import */ var _ui_modals__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../ui/modals */ \"./src/ui/modals.js\");\n/* harmony import */ var _pluginmanager__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./pluginmanager */ \"./src/modules/pluginmanager.js\");\n/* harmony import */ var _thememanager__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./thememanager */ \"./src/modules/thememanager.js\");\n/* harmony import */ var _settingsmanager__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./settingsmanager */ \"./src/modules/settingsmanager.js\");\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./logger */ \"./src/modules/logger.js\");\n/* harmony import */ var _patcher__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./patcher */ \"./src/modules/patcher.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst BdApi = {\n get React() {\n return _discordmodules__WEBPACK_IMPORTED_MODULE_3__[\"default\"].React;\n },\n\n get ReactDOM() {\n return _discordmodules__WEBPACK_IMPORTED_MODULE_3__[\"default\"].ReactDOM;\n },\n\n get WindowConfigFile() {\n return \"\";\n },\n\n get settings() {\n return _settingsmanager__WEBPACK_IMPORTED_MODULE_10__[\"default\"].collections;\n },\n\n get emotes() {\n return {};\n },\n\n get version() {\n return data__WEBPACK_IMPORTED_MODULE_0__[\"Config\"].version;\n }\n\n};\n\nBdApi.getAllWindowPreferences = function () {\n return _datastore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].getData(\"windowprefs\") || {};\n};\n\nBdApi.getWindowPreference = function (key) {\n return this.getAllWindowPreferences()[key];\n};\n\nBdApi.setWindowPreference = function (key, value) {\n const prefs = this.getAllWindowPreferences();\n prefs[key] = value;\n return _datastore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].setData(\"windowprefs\", prefs);\n}; //Inject CSS to document head\n//id = id of element\n//css = custom css\n\n\nBdApi.injectCSS = function (id, css) {\n _dommanager__WEBPACK_IMPORTED_MODULE_5__[\"default\"].injectStyle(id, css);\n}; //Clear css/remove any element\n//id = id of element\n\n\nBdApi.clearCSS = function (id) {\n _dommanager__WEBPACK_IMPORTED_MODULE_5__[\"default\"].removeStyle(id);\n}; //Inject CSS to document head\n//id = id of element\n//css = custom css\n\n\nBdApi.linkJS = function (id, url) {\n return _dommanager__WEBPACK_IMPORTED_MODULE_5__[\"default\"].injectScript(id, url);\n}; //Clear css/remove any element\n//id = id of element\n\n\nBdApi.unlinkJS = function (id) {\n _dommanager__WEBPACK_IMPORTED_MODULE_5__[\"default\"].removeScript(id);\n};\n/**\r\n * Shows a generic but very customizable modal.\r\n * @param {string} title - title of the modal\r\n * @param {string} content - a string of text to display in the modal\r\n */\n\n\nBdApi.alert = function (title, content) {\n _ui_modals__WEBPACK_IMPORTED_MODULE_7__[\"default\"].alert(title, content);\n};\n/**\r\n * Shows a generic but very customizable confirmation modal with optional confirm and cancel callbacks.\r\n * @param {string} title - title of the modal\r\n * @param {(string|ReactElement|Array)} children - a single or mixed array of react elements and strings. Everything is wrapped in Discord's `TextElement` component so strings will show and render properly.\r\n * @param {object} [options] - options to modify the modal\r\n * @param {boolean} [options.danger=false] - whether the main button should be red or not\r\n * @param {string} [options.confirmText=Okay] - text for the confirmation/submit button\r\n * @param {string} [options.cancelText=Cancel] - text for the cancel button\r\n * @param {callable} [options.onConfirm=NOOP] - callback to occur when clicking the submit button\r\n * @param {callable} [options.onCancel=NOOP] - callback to occur when clicking the cancel button\r\n */\n\n\nBdApi.showConfirmationModal = function (title, content, options = {}) {\n return _ui_modals__WEBPACK_IMPORTED_MODULE_7__[\"default\"].showConfirmationModal(title, content, options);\n};\n/**\r\n * This shows a toast similar to android towards the bottom of the screen.\r\n *\r\n * @param {string} content The string to show in the toast.\r\n * @param {object} options Options object. Optional parameter.\r\n * @param {string} [options.type=\"\"] Changes the type of the toast stylistically and semantically. Choices: \"\", \"info\", \"success\", \"danger\"/\"error\", \"warning\"/\"warn\". Default: \"\"\r\n * @param {boolean} [options.icon=true] Determines whether the icon should show corresponding to the type. A toast without type will always have no icon. Default: true\r\n * @param {number} [options.timeout=3000] Adjusts the time (in ms) the toast should be shown for before disappearing automatically. Default: 3000\r\n * @param {boolean} [options.forceShow=false] Whether to force showing the toast and ignore the bd setting\r\n */\n\n\nBdApi.showToast = function (content, options = {}) {\n _ui_toasts__WEBPACK_IMPORTED_MODULE_6__[\"default\"].show(content, options);\n}; // Finds module\n\n\nBdApi.findModule = function (filter) {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getModule(filter);\n}; // Finds module\n\n\nBdApi.findAllModules = function (filter) {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getModule(filter, false);\n}; // Finds module\n\n\nBdApi.findModuleByProps = function (...props) {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getByProps(...props);\n};\n\nBdApi.findModuleByPrototypes = function (...protos) {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getByPrototypes(...protos);\n};\n\nBdApi.findModuleByDisplayName = function (name) {\n return _webpackmodules__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getByDisplayName(name);\n}; // Gets react instance\n\n\nBdApi.getInternalInstance = function (node) {\n if (!(node instanceof window.jQuery) && !(node instanceof Element)) return undefined;\n if (node instanceof jQuery) node = node[0];\n return _utilities__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getReactInstance(node);\n}; // Gets data\n\n\nBdApi.loadData = function (pluginName, key) {\n return _datastore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].getPluginData(pluginName, key);\n};\n\nBdApi.getData = BdApi.loadData; // Sets data\n\nBdApi.saveData = function (pluginName, key, data) {\n return _datastore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].setPluginData(pluginName, key, data);\n};\n\nBdApi.setData = BdApi.saveData; // Deletes data\n\nBdApi.deleteData = function (pluginName, key) {\n return _datastore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].deletePluginData(pluginName, key);\n}; // Patches other functions\n// BdApi.monkeyPatch = function(what, methodName, options) {\n// const {before, after, instead, once = false, silent = false, force = false} = options;\n// const displayName = options.displayName || what.displayName || what.name || what.constructor.displayName || what.constructor.name;\n// if (!silent) console.log(\"patch\", methodName, \"of\", displayName); // eslint-disable-line no-console\n// if (!what[methodName]) {\n// if (force) what[methodName] = function() {};\n// else return console.error(methodName, \"does not exist for\", displayName); // eslint-disable-line no-console\n// }\n// const origMethod = what[methodName];\n// const cancel = () => {\n// if (!silent) console.log(\"unpatch\", methodName, \"of\", displayName); // eslint-disable-line no-console\n// what[methodName] = origMethod;\n// };\n// what[methodName] = function() {\n// const data = {\n// thisObject: this,\n// methodArguments: arguments,\n// cancelPatch: cancel,\n// originalMethod: origMethod,\n// callOriginalMethod: () => data.returnValue = data.originalMethod.apply(data.thisObject, data.methodArguments)\n// };\n// if (instead) {\n// const tempRet = Utilities.suppressErrors(instead, \"`instead` callback of \" + what[methodName].displayName)(data);\n// if (tempRet !== undefined) data.returnValue = tempRet;\n// }\n// else {\n// if (before) Utilities.suppressErrors(before, \"`before` callback of \" + what[methodName].displayName)(data);\n// data.callOriginalMethod();\n// if (after) Utilities.suppressErrors(after, \"`after` callback of \" + what[methodName].displayName)(data);\n// }\n// if (once) cancel();\n// return data.returnValue;\n// };\n// what[methodName].__monkeyPatched = true;\n// if (!what[methodName].__originalMethod) what[methodName].__originalMethod = origMethod;\n// what[methodName].displayName = \"patched \" + (what[methodName].displayName || methodName);\n// return cancel;\n// };\n\n\nBdApi.monkeyPatch = function (what, methodName, options) {\n const {\n before,\n after,\n instead,\n once = false\n } = options;\n const patchType = before ? \"before\" : after ? \"after\" : instead ? \"instead\" : \"\";\n if (!patchType) return _logger__WEBPACK_IMPORTED_MODULE_11__[\"default\"].err(\"BdApi\", \"Must provide one of: after, before, instead\");\n const originalMethod = what[methodName];\n const data = {\n originalMethod: originalMethod,\n callOriginalMethod: () => data.originalMethod.apply(data.thisObject, data.methodArguments)\n };\n data.cancelPatch = _patcher__WEBPACK_IMPORTED_MODULE_12__[\"default\"][patchType](\"BdApi\", what, methodName, (thisObject, args, returnValue) => {\n data.thisObject = thisObject;\n data.methodArguments = args;\n data.returnValue = returnValue;\n\n try {\n Reflect.apply(options[patchType], null, [data]);\n if (once) data.cancelPatch();\n } catch (err) {// Logger.err(\"monkeyPatch\", `Error in the ${patchType} of ${methodName}`);\n }\n });\n}; // Event when element is removed\n\n\nBdApi.onRemoved = function (node, callback) {\n return _utilities__WEBPACK_IMPORTED_MODULE_1__[\"default\"].onRemoved(node, callback);\n}; // Wraps function in try..catch\n\n\nBdApi.suppressErrors = function (method, message) {\n return _utilities__WEBPACK_IMPORTED_MODULE_1__[\"default\"].suppressErrors(method, message);\n}; // Tests for valid JSON\n\n\nBdApi.testJSON = function (data) {\n return _utilities__WEBPACK_IMPORTED_MODULE_1__[\"default\"].testJSON(data);\n}; //Get another plugin\n//name = name of plugin\n\n\nBdApi.getPlugin = function (name) {\n _logger__WEBPACK_IMPORTED_MODULE_11__[\"default\"].warn(\"BdApi\", \"getPlugin is deprecated. Please make use of the addon api (BdApi.Plugins)\");\n return _pluginmanager__WEBPACK_IMPORTED_MODULE_8__[\"default\"].addonList.find(a => a.name == name);\n};\n\nBdApi.isPluginEnabled = function (name) {\n _logger__WEBPACK_IMPORTED_MODULE_11__[\"default\"].warn(\"BdApi\", \"isPluginEnabled is deprecated. Please make use of the addon api (BdApi.Plugins)\");\n const plugin = this.getPlugin(name);\n if (!plugin) return false;\n return _pluginmanager__WEBPACK_IMPORTED_MODULE_8__[\"default\"].isEnabled(plugin.id);\n};\n\nBdApi.isThemeEnabled = function (name) {\n _logger__WEBPACK_IMPORTED_MODULE_11__[\"default\"].warn(\"BdApi\", \"isThemeEnabled is deprecated. Please make use of the addon api (BdApi.Themes)\");\n const theme = _thememanager__WEBPACK_IMPORTED_MODULE_9__[\"default\"].addonList.find(a => a.name == name);\n if (!theme) return false;\n return _thememanager__WEBPACK_IMPORTED_MODULE_9__[\"default\"].isEnabled(theme.id);\n};\n\nBdApi.isSettingEnabled = function (collection, category, id) {\n return _settingsmanager__WEBPACK_IMPORTED_MODULE_10__[\"default\"].get(collection, category, id);\n};\n\nBdApi.enableSetting = function (collection, category, id) {\n return _settingsmanager__WEBPACK_IMPORTED_MODULE_10__[\"default\"].set(collection, category, id, true);\n};\n\nBdApi.disableSetting = function (collection, category, id) {\n return _settingsmanager__WEBPACK_IMPORTED_MODULE_10__[\"default\"].set(collection, category, id, false);\n};\n\nBdApi.toggleSetting = function (collection, category, id) {\n return _settingsmanager__WEBPACK_IMPORTED_MODULE_10__[\"default\"].set(collection, category, id, !_settingsmanager__WEBPACK_IMPORTED_MODULE_10__[\"default\"].get(collection, category, id));\n}; // Gets data\n\n\nBdApi.getBDData = function (key) {\n return _datastore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].getBDData(key);\n}; // Sets data\n\n\nBdApi.setBDData = function (key, data) {\n return _datastore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].setBDData(key, data);\n};\n\nconst makeAddonAPI = manager => new class AddonAPI {\n get folder() {\n return manager.addonFolder;\n }\n\n isEnabled(idOrFile) {\n return manager.isEnabled(idOrFile);\n }\n\n enable(idOrAddon) {\n return manager.enableAddon(idOrAddon);\n }\n\n disable(idOrAddon) {\n return manager.disableAddon(idOrAddon);\n }\n\n toggle(idOrAddon) {\n return manager.toggleAddon(idOrAddon);\n }\n\n reload(idOrFileOrAddon) {\n return manager.reloadAddon(idOrFileOrAddon);\n }\n\n get(idOrFile) {\n return manager.getAddon(idOrFile);\n }\n\n getAll() {\n return manager.addonList.map(a => manager.getAddon(a.id));\n }\n\n}();\n\nBdApi.Plugins = makeAddonAPI(_pluginmanager__WEBPACK_IMPORTED_MODULE_8__[\"default\"]);\nBdApi.Themes = makeAddonAPI(_thememanager__WEBPACK_IMPORTED_MODULE_9__[\"default\"]);\nBdApi.Patcher = {\n patch: (caller, moduleToPatch, functionName, callback, options = {}) => {\n if (typeof caller !== \"string\") return _logger__WEBPACK_IMPORTED_MODULE_11__[\"default\"].err(\"BdApi.Patcher\", \"Parameter 0 of patch must be a string representing the caller\");\n if (options.type !== \"before\" && options.type !== \"instead\" && options.type !== \"after\") return _logger__WEBPACK_IMPORTED_MODULE_11__[\"default\"].err(\"BdApi.Patcher\", \"options.type must be one of: before, instead, after\");\n return _patcher__WEBPACK_IMPORTED_MODULE_12__[\"default\"].pushChildPatch(caller, moduleToPatch, functionName, callback, options);\n },\n before: (caller, moduleToPatch, functionName, callback, options = {}) => BdApi.Patcher.patch(caller, moduleToPatch, functionName, callback, Object.assign(options, {\n type: \"before\"\n })),\n instead: (caller, moduleToPatch, functionName, callback, options = {}) => BdApi.Patcher.patch(caller, moduleToPatch, functionName, callback, Object.assign(options, {\n type: \"instead\"\n })),\n after: (caller, moduleToPatch, functionName, callback, options = {}) => BdApi.Patcher.patch(caller, moduleToPatch, functionName, callback, Object.assign(options, {\n type: \"after\"\n })),\n unpatchAll: caller => {\n if (typeof caller !== \"string\") return _logger__WEBPACK_IMPORTED_MODULE_11__[\"default\"].err(\"BdApi.Patcher\", \"Parameter 0 of unpatchAll must be a string representing the caller\");\n return _patcher__WEBPACK_IMPORTED_MODULE_12__[\"default\"].unpatchAll(caller);\n }\n};\nObject.freeze(BdApi);\nObject.freeze(BdApi.Plugins);\nObject.freeze(BdApi.Themes);\nObject.freeze(BdApi.Patcher);\n/* harmony default export */ __webpack_exports__[\"default\"] = (BdApi);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9wbHVnaW5hcGkuanM/NmE5MyJdLCJuYW1lcyI6WyJCZEFwaSIsIlJlYWN0IiwiRGlzY29yZE1vZHVsZXMiLCJSZWFjdERPTSIsIldpbmRvd0NvbmZpZ0ZpbGUiLCJzZXR0aW5ncyIsIlNldHRpbmdzIiwiY29sbGVjdGlvbnMiLCJlbW90ZXMiLCJ2ZXJzaW9uIiwiQ29uZmlnIiwiZ2V0QWxsV2luZG93UHJlZmVyZW5jZXMiLCJEYXRhU3RvcmUiLCJnZXREYXRhIiwiZ2V0V2luZG93UHJlZmVyZW5jZSIsImtleSIsInNldFdpbmRvd1ByZWZlcmVuY2UiLCJ2YWx1ZSIsInByZWZzIiwic2V0RGF0YSIsImluamVjdENTUyIsImlkIiwiY3NzIiwiRE9NTWFuYWdlciIsImluamVjdFN0eWxlIiwiY2xlYXJDU1MiLCJyZW1vdmVTdHlsZSIsImxpbmtKUyIsInVybCIsImluamVjdFNjcmlwdCIsInVubGlua0pTIiwicmVtb3ZlU2NyaXB0IiwiYWxlcnQiLCJ0aXRsZSIsImNvbnRlbnQiLCJNb2RhbHMiLCJzaG93Q29uZmlybWF0aW9uTW9kYWwiLCJvcHRpb25zIiwic2hvd1RvYXN0IiwiVG9hc3RzIiwic2hvdyIsImZpbmRNb2R1bGUiLCJmaWx0ZXIiLCJXZWJwYWNrTW9kdWxlcyIsImdldE1vZHVsZSIsImZpbmRBbGxNb2R1bGVzIiwiZmluZE1vZHVsZUJ5UHJvcHMiLCJwcm9wcyIsImdldEJ5UHJvcHMiLCJmaW5kTW9kdWxlQnlQcm90b3R5cGVzIiwicHJvdG9zIiwiZ2V0QnlQcm90b3R5cGVzIiwiZmluZE1vZHVsZUJ5RGlzcGxheU5hbWUiLCJuYW1lIiwiZ2V0QnlEaXNwbGF5TmFtZSIsImdldEludGVybmFsSW5zdGFuY2UiLCJub2RlIiwid2luZG93IiwialF1ZXJ5IiwiRWxlbWVudCIsInVuZGVmaW5lZCIsIlV0aWxpdGllcyIsImdldFJlYWN0SW5zdGFuY2UiLCJsb2FkRGF0YSIsInBsdWdpbk5hbWUiLCJnZXRQbHVnaW5EYXRhIiwic2F2ZURhdGEiLCJkYXRhIiwic2V0UGx1Z2luRGF0YSIsImRlbGV0ZURhdGEiLCJkZWxldGVQbHVnaW5EYXRhIiwibW9ua2V5UGF0Y2giLCJ3aGF0IiwibWV0aG9kTmFtZSIsImJlZm9yZSIsImFmdGVyIiwiaW5zdGVhZCIsIm9uY2UiLCJwYXRjaFR5cGUiLCJMb2dnZXIiLCJlcnIiLCJvcmlnaW5hbE1ldGhvZCIsImNhbGxPcmlnaW5hbE1ldGhvZCIsImFwcGx5IiwidGhpc09iamVjdCIsIm1ldGhvZEFyZ3VtZW50cyIsImNhbmNlbFBhdGNoIiwiUGF0Y2hlciIsImFyZ3MiLCJyZXR1cm5WYWx1ZSIsIlJlZmxlY3QiLCJvblJlbW92ZWQiLCJjYWxsYmFjayIsInN1cHByZXNzRXJyb3JzIiwibWV0aG9kIiwibWVzc2FnZSIsInRlc3RKU09OIiwiZ2V0UGx1Z2luIiwid2FybiIsIlBsdWdpbk1hbmFnZXIiLCJhZGRvbkxpc3QiLCJmaW5kIiwiYSIsImlzUGx1Z2luRW5hYmxlZCIsInBsdWdpbiIsImlzRW5hYmxlZCIsImlzVGhlbWVFbmFibGVkIiwidGhlbWUiLCJUaGVtZU1hbmFnZXIiLCJpc1NldHRpbmdFbmFibGVkIiwiY29sbGVjdGlvbiIsImNhdGVnb3J5IiwiZ2V0IiwiZW5hYmxlU2V0dGluZyIsInNldCIsImRpc2FibGVTZXR0aW5nIiwidG9nZ2xlU2V0dGluZyIsImdldEJERGF0YSIsInNldEJERGF0YSIsIm1ha2VBZGRvbkFQSSIsIm1hbmFnZXIiLCJBZGRvbkFQSSIsImZvbGRlciIsImFkZG9uRm9sZGVyIiwiaWRPckZpbGUiLCJlbmFibGUiLCJpZE9yQWRkb24iLCJlbmFibGVBZGRvbiIsImRpc2FibGUiLCJkaXNhYmxlQWRkb24iLCJ0b2dnbGUiLCJ0b2dnbGVBZGRvbiIsInJlbG9hZCIsImlkT3JGaWxlT3JBZGRvbiIsInJlbG9hZEFkZG9uIiwiZ2V0QWRkb24iLCJnZXRBbGwiLCJtYXAiLCJQbHVnaW5zIiwiVGhlbWVzIiwicGF0Y2giLCJjYWxsZXIiLCJtb2R1bGVUb1BhdGNoIiwiZnVuY3Rpb25OYW1lIiwidHlwZSIsInB1c2hDaGlsZFBhdGNoIiwiT2JqZWN0IiwiYXNzaWduIiwidW5wYXRjaEFsbCIsImZyZWV6ZSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUEsTUFBTUEsS0FBSyxHQUFHO0FBQ1YsTUFBSUMsS0FBSixHQUFZO0FBQUUsV0FBT0MsdURBQWMsQ0FBQ0QsS0FBdEI7QUFBOEIsR0FEbEM7O0FBRVYsTUFBSUUsUUFBSixHQUFlO0FBQUUsV0FBT0QsdURBQWMsQ0FBQ0MsUUFBdEI7QUFBaUMsR0FGeEM7O0FBR1YsTUFBSUMsZ0JBQUosR0FBdUI7QUFBQyxXQUFPLEVBQVA7QUFBVyxHQUh6Qjs7QUFJVixNQUFJQyxRQUFKLEdBQWU7QUFBQyxXQUFPQyx5REFBUSxDQUFDQyxXQUFoQjtBQUE2QixHQUpuQzs7QUFLVixNQUFJQyxNQUFKLEdBQWE7QUFBQyxXQUFPLEVBQVA7QUFBVyxHQUxmOztBQU1WLE1BQUlDLE9BQUosR0FBYztBQUFDLFdBQU9DLDJDQUFNLENBQUNELE9BQWQ7QUFBdUI7O0FBTjVCLENBQWQ7O0FBU0FULEtBQUssQ0FBQ1csdUJBQU4sR0FBZ0MsWUFBVztBQUN2QyxTQUFPQyxrREFBUyxDQUFDQyxPQUFWLENBQWtCLGFBQWxCLEtBQW9DLEVBQTNDO0FBQ0gsQ0FGRDs7QUFJQWIsS0FBSyxDQUFDYyxtQkFBTixHQUE0QixVQUFTQyxHQUFULEVBQWM7QUFDdEMsU0FBTyxLQUFLSix1QkFBTCxHQUErQkksR0FBL0IsQ0FBUDtBQUNILENBRkQ7O0FBSUFmLEtBQUssQ0FBQ2dCLG1CQUFOLEdBQTRCLFVBQVNELEdBQVQsRUFBY0UsS0FBZCxFQUFxQjtBQUM3QyxRQUFNQyxLQUFLLEdBQUcsS0FBS1AsdUJBQUws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O0FBQ2pDLFdBQU9PLGlEQUFPLENBQUM2RCxVQUFSLENBQW1CUCxNQUFuQixDQUFQO0FBQ0g7QUFaVyxDQUFoQjtBQWVBSyxNQUFNLENBQUNHLE1BQVAsQ0FBY3JKLEtBQWQ7QUFDQWtKLE1BQU0sQ0FBQ0csTUFBUCxDQUFjckosS0FBSyxDQUFDMEksT0FBcEI7QUFDQVEsTUFBTSxDQUFDRyxNQUFQLENBQWNySixLQUFLLENBQUMySSxNQUFwQjtBQUNBTyxNQUFNLENBQUNHLE1BQVAsQ0FBY3JKLEtBQUssQ0FBQ3VGLE9BQXBCO0FBRWV2RixvRUFBZiIsImZpbGUiOiIuL3NyYy9tb2R1bGVzL3BsdWdpbmFwaS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29uZmlnfSBmcm9tIFwiZGF0YVwiO1xyXG5pbXBvcnQgVXRpbGl0aWVzIGZyb20gXCIuL3V0aWxpdGllc1wiO1xyXG5pbXBvcnQgV2VicGFja01vZHVsZXMgZnJvbSBcIi4vd2VicGFja21vZHVsZXNcIjtcclxuaW1wb3J0IERpc2NvcmRNb2R1bGVzIGZyb20gXCIuL2Rpc2NvcmRtb2R1bGVzXCI7XHJcbmltcG9ydCBEYXRhU3RvcmUgZnJvbSBcIi4vZGF0YXN0b3JlXCI7XHJcbmltcG9ydCBET01NYW5hZ2VyIGZyb20gXCIuL2RvbW1hbmFnZXJcIjtcclxuaW1wb3J0IFRvYXN0cyBmcm9tIFwiLi4vdWkvdG9hc3RzXCI7XHJcbmltcG9ydCBNb2RhbHMgZnJvbSBcIi4uL3VpL21vZGFsc1wiO1xyXG5pbXBvcnQgUGx1Z2luTWFuYWdlciBmcm9tIFwiLi9wbHVnaW5tYW5hZ2VyXCI7XHJcbmltcG9ydCBUaGVtZU1hbmFnZXIgZnJvbSBcIi4vdGhlbWVtYW5hZ2VyXCI7XHJcbmltcG9ydCBTZXR0aW5ncyBmcm9tIFwiLi9zZXR0aW5nc21hbmFnZXJcIjtcclxuaW1wb3J0IExvZ2dlciBmcm9tIFwiLi9sb2dnZXJcIjtcclxuaW1wb3J0IFBhdGNoZXIgZnJvbSBcIi4vcGF0Y2hlclwiO1xyXG5cclxuY29uc3QgQmRBcGkgPSB7XHJcbiAgICBnZXQgUmVhY3QoKSB7IHJldHVybiBEaXNjb3JkTW9kdWxlcy5SZWFjdDsgfSxcclxuICAgIGdldCBSZWFjdERPTSgpIHsgcmV0dXJuIERpc2NvcmRNb2R1bGVzLlJlYWN0RE9NOyB9LFxyXG4gICAgZ2V0IFdpbmRvd0NvbmZpZ0ZpbGUoKSB7cmV0dXJuIFwiXCI7fSxcclxuICAgIGdldCBzZXR0aW5ncygpIHtyZXR1cm4gU2V0dGluZ3MuY29sbGVjdGlvbnM7fSxcclxuICAgIGdldCBlbW90ZXMoKSB7cmV0dXJuIHt9O30sXHJcbiAgICBnZXQgdmVyc2lvbigpIHtyZXR1cm4gQ29uZmlnLnZlcnNpb247fVxyXG59O1xyXG5cclxuQmRBcGkuZ2V0QWxsV2luZG93UHJlZmVyZW5jZXMgPSBmdW5jdGlvbigpIHtcclxuICAgIHJldHVybiBEYXRhU3RvcmUuZ2V0RGF0YShcIndpbmRvd3ByZWZzXCIpIHx8IHt9O1xyXG59O1xyXG5cclxuQmRBcGkuZ2V0V2luZG93UHJlZmVyZW5jZSA9IGZ1bmN0aW9uKGtleSkge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0QWxsV2luZG93UHJlZmVyZW5jZXMoKVtrZXldO1xyXG59O1xyXG5cclxuQmRBcGkuc2V0V2luZG93UHJlZmVyZW5jZSA9IGZ1bmN0aW9uKGtleSwgdmFsdWUpIHtcclxuICAgIGNvbnN0IHByZWZzID0gdGhpcy5nZXRBbGxXaW5kb3dQcmVmZXJlbmNlcygpO1xyXG4gICAgcHJlZnNba2V5XSA9IHZhbHVlO1xyXG4gICAgcmV0dXJuIERhdGFTdG9yZS5zZXREYXRhKFwid2luZG93cHJlZnNcIiwgcHJlZnMpO1xyXG59O1xyXG5cclxuLy9JbmplY3QgQ1NTIHRvIGRvY3VtZW50IGhlYWRcclxuLy9pZCA9IGlkIG9mIGVsZW1lbnRcclxuLy9jc3MgPSBjdXN0b20gY3NzXHJcbkJkQXBpLmluamVjdENTUyA9IGZ1bmN0aW9uIChpZCwgY3NzKSB7XHJcbiAgICBET01NYW5hZ2VyLmluamVjdFN0eWxlKGlkLCBjc3MpO1xyXG59O1xyXG5cclxuLy9DbGVhciBjc3MvcmVtb3ZlIGFueSBlbGVtZW50XHJcbi8vaWQgPSBpZCBvZiBlbGVtZW50XHJcbkJkQXBpLmNsZWFyQ1NTID0gZnVuY3Rpb24gKGlkKSB7XHJcbiAgICBET01NYW5hZ2VyLnJlbW92ZVN0eWxlKGlkKTtcclxufTtcclxuXHJcbi8vSW5qZWN0IENTUyB0byBkb2N1bWVudCBoZWFkXHJcbi8vaWQgPSBpZCBvZiBlbGVtZW50XHJcbi8vY3NzID0gY3VzdG9tIGNzc1xyXG5CZEFwaS5saW5rSlMgPSBmdW5jdGlvbiAoaWQsIHVybCkge1xyXG4gICAgcmV0dXJuIERPTU1hbmFnZXIuaW5qZWN0U2NyaXB0KGlkLCB1cmwpO1xyXG59O1xyXG5cclxuLy9DbGVhciBjc3MvcmVtb3ZlIGFueSBlbGVtZW50XHJcbi8vaWQgPSBpZCBvZiBlbGVtZW50XHJcbkJkQXBpLnVubGlua0pTID0gZnVuY3Rpb24gKGlkKSB7XHJcbiAgICBET01NYW5hZ2VyLnJlbW92ZVNjcmlwdChpZCk7XHJcbn07XHJcblxyXG4vKipcclxuICogU2hvd3MgYSBnZW5lcmljIGJ1dCB2ZXJ5IGN1c3RvbWl6YWJsZSBtb2RhbC5cclxuICogQHBhcmFtIHtzdHJpbmd9IHRpdGxlIC0gdGl0bGUgb2YgdGhlIG1vZGFsXHJcbiAqIEBwYXJhbSB7c3RyaW5nfSBjb250ZW50IC0gYSBzdHJpbmcgb2YgdGV4dCB0byBkaXNwbGF5IGluIHRoZSBtb2RhbFxyXG4gKi9cclxuQmRBcGkuYWxlcnQgPSBmdW5jdGlvbiAodGl0bGUsIGNvbnRlbnQpIHtcclxuICAgIE1vZGFscy5hbGVydCh0aXRsZSwgY29udGVudCk7XHJcbn07XHJcblxyXG4vKipcclxuICogU2hvd3MgYSBnZW5lcmljIGJ1dCB2ZXJ5IGN1c3RvbWl6YWJsZSBjb25maXJtYXRpb24gbW9kYWwgd2l0aCBvcHRpb25hbCBjb25maXJtIGFuZCBjYW5jZWwgY2FsbGJhY2tzLlxyXG4gKiBAcGFyYW0ge3N0cmluZ30gdGl0bGUgLSB0aXRsZSBvZiB0aGUgbW9kYWxcclxuICogQHBhcmFtIHsoc3RyaW5nfFJlYWN0RWxlbWVudHxBcnJheTxzdHJpbmd8UmVhY3RFbGVtZW50Pil9IGNoaWxkcmVuIC0gYSBzaW5nbGUgb3IgbWl4ZWQgYXJyYXkgb2YgcmVhY3QgZWxlbWVudHMgYW5kIHN0cmluZ3MuIEV2ZXJ5dGhpbmcgaXMgd3JhcHBlZCBpbiBEaXNjb3JkJ3MgYFRleHRFbGVtZW50YCBjb21wb25lbnQgc28gc3RyaW5ncyB3aWxsIHNob3cgYW5kIHJlbmRlciBwcm9wZXJseS5cclxuICogQHBhcmFtIHtvYmplY3R9IFtvcHRpb25zXSAtIG9wdGlvbnMgdG8gbW9kaWZ5IHRoZSBtb2RhbFxyXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLmRhbmdlcj1mYWxzZV0gLSB3aGV0aGVyIHRoZSBtYWluIGJ1dHRvbiBzaG91bGQgYmUgcmVkIG9yIG5vdFxyXG4gKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMuY29uZmlybVRleHQ9T2theV0gLSB0ZXh0IGZvciB0aGUgY29uZmlybWF0aW9uL3N1Ym1pdCBidXR0b25cclxuICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLmNhbmNlbFRleHQ9Q2FuY2VsXSAtIHRleHQgZm9yIHRoZSBjYW5jZWwgYnV0dG9uXHJcbiAqIEBwYXJhbSB7Y2FsbGFibGV9IFtvcHRpb25zLm9uQ29uZmlybT1OT09QXSAtIGNhbGxiYWNrIHRvIG9jY3VyIHdoZW4gY2xpY2tpbmcgdGhlIHN1Ym1pdCBidXR0b25cclxuICogQHBhcmFtIHtjYWxsYWJsZX0gW29wdGlvbnMub25DYW5jZWw9Tk9PUF0gLSBjYWxsYmFjayB0byBvY2N1ciB3aGVuIGNsaWNraW5nIHRoZSBjYW5jZWwgYnV0dG9uXHJcbiAqL1xyXG5CZEFwaS5zaG93Q29uZmlybWF0aW9uTW9kYWwgPSBmdW5jdGlvbiAodGl0bGUsIGNvbnRlbnQsIG9wdGlvbnMgPSB7fSkge1xyXG4gICAgcmV0dXJuIE1vZGFscy5zaG93Q29uZmlybWF0aW9uTW9kYWwodGl0bGUsIGNvbnRlbnQsIG9wdGlvbnMpO1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIFRoaXMgc2hvd3MgYSB0b2FzdCBzaW1pbGFyIHRvIGFuZHJvaWQgdG93YXJkcyB0aGUgYm90dG9tIG9mIHRoZSBzY3JlZW4uXHJcbiAqXHJcbiAqIEBwYXJhbSB7c3RyaW5nfSBjb250ZW50IFRoZSBzdHJpbmcgdG8gc2hvdyBpbiB0aGUgdG9hc3QuXHJcbiAqIEBwYXJhbSB7b2JqZWN0fSBvcHRpb25zIE9wdGlvbnMgb2JqZWN0LiBPcHRpb25hbCBwYXJhbWV0ZXIuXHJcbiAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy50eXBlPVwiXCJdIENoYW5nZXMgdGhlIHR5cGUgb2YgdGhlIHRvYXN0IHN0eWxpc3RpY2FsbHkgYW5kIHNlbWFudGljYWxseS4gQ2hvaWNlczogXCJcIiwgXCJpbmZvXCIsIFwic3VjY2Vzc1wiLCBcImRhbmdlclwiL1wiZXJyb3JcIiwgXCJ3YXJuaW5nXCIvXCJ3YXJuXCIuIERlZmF1bHQ6IFwiXCJcclxuICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5pY29uPXRydWVdIERldGVybWluZXMgd2hldGhlciB0aGUgaWNvbiBzaG91bGQgc2hvdyBjb3JyZXNwb25kaW5nIHRvIHRoZSB0eXBlLiBBIHRvYXN0IHdpdGhvdXQgdHlwZSB3aWxsIGFsd2F5cyBoYXZlIG5vIGljb24uIERlZmF1bHQ6IHRydWVcclxuICogQHBhcmFtIHtudW1iZXJ9IFtvcHRpb25zLnRpbWVvdXQ9MzAwMF0gQWRqdXN0cyB0aGUgdGltZSAoaW4gbXMpIHRoZSB0b2FzdCBzaG91bGQgYmUgc2hvd24gZm9yIGJlZm9yZSBkaXNhcHBlYXJpbmcgYXV0b21hdGljYWxseS4gRGVmYXVsdDogMzAwMFxyXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLmZvcmNlU2hvdz1mYWxzZV0gV2hldGhlciB0byBmb3JjZSBzaG93aW5nIHRoZSB0b2FzdCBhbmQgaWdub3JlIHRoZSBiZCBzZXR0aW5nXHJcbiAqL1xyXG5CZEFwaS5zaG93VG9hc3QgPSBmdW5jdGlvbihjb250ZW50LCBvcHRpb25zID0ge30pIHtcclxuICAgIFRvYXN0cy5zaG93KGNvbnRlbnQsIG9wdGlvbnMpO1xyXG59O1xyXG5cclxuLy8gRmluZHMgbW9kdWxlXHJcbkJkQXBpLmZpbmRNb2R1bGUgPSBmdW5jdGlvbihmaWx0ZXIpIHtcclxuICAgIHJldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRNb2R1bGUoZmlsdGVyKTtcclxufTtcclxuXHJcbi8vIEZpbmRzIG1vZHVsZVxyXG5CZEFwaS5maW5kQWxsTW9kdWxlcyA9IGZ1bmN0aW9uKGZpbHRlcikge1xyXG4gICAgcmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldE1vZHVsZShmaWx0ZXIsIGZhbHNlKTtcclxufTtcclxuXHJcbi8vIEZpbmRzIG1vZHVsZVxyXG5CZEFwaS5maW5kTW9kdWxlQnlQcm9wcyA9IGZ1bmN0aW9uKC4uLnByb3BzKSB7XHJcbiAgICByZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyguLi5wcm9wcyk7XHJcbn07XHJcblxyXG5CZEFwaS5maW5kTW9kdWxlQnlQcm90b3R5cGVzID0gZnVuY3Rpb24oLi4ucHJvdG9zKSB7XHJcbiAgICByZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm90b3R5cGVzKC4uLnByb3Rvcyk7XHJcbn07XHJcblxyXG5CZEFwaS5maW5kTW9kdWxlQnlEaXNwbGF5TmFtZSA9IGZ1bmN0aW9uKG5hbWUpIHtcclxuICAgIHJldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeURpc3BsYXlOYW1lKG5hbWUpO1xyXG59O1xyXG5cclxuLy8gR2V0cyByZWFjdCBpbnN0YW5jZVxyXG5CZEFwaS5nZXRJbnRlcm5hbEluc3RhbmNlID0gZnVuY3Rpb24obm9kZSkge1xyXG4gICAgaWYgKCEobm9kZSBpbnN0YW5jZW9mIHdpbmRvdy5qUXVlcnkpICYmICEobm9kZSBpbnN0YW5jZW9mIEVsZW1lbnQpKSByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgaWYgKG5vZGUgaW5zdGFuY2VvZiBqUXVlcnkpIG5vZGUgPSBub2RlWzBdO1xyXG4gICAgcmV0dXJuIFV0aWxpdGllcy5nZXRSZWFjdEluc3RhbmNlKG5vZGUpO1xyXG59O1xyXG5cclxuLy8gR2V0cyBkYXRhXHJcbkJkQXBpLmxvYWREYXRhID0gZnVuY3Rpb24ocGx1Z2luTmFtZSwga2V5KSB7XHJcbiAgICByZXR1cm4gRGF0YVN0b3JlLmdldFBsdWdpbkRhdGEocGx1Z2luTmFtZSwga2V5KTtcclxufTtcclxuXHJcbkJkQXBpLmdldERhdGEgPSBCZEFwaS5sb2FkRGF0YTtcclxuXHJcbi8vIFNldHMgZGF0YVxyXG5CZEFwaS5zYXZlRGF0YSA9IGZ1bmN0aW9uKHBsdWdpbk5hbWUsIGtleSwgZGF0YSkge1xyXG4gICAgcmV0dXJuIERhdGFTdG9yZS5zZXRQbHVnaW5EYXRhKHBsdWdpbk5hbWUsIGtleSwgZGF0YSk7XHJcbn07XHJcblxyXG5CZEFwaS5zZXREYXRhID0gQmRBcGkuc2F2ZURhdGE7XHJcblxyXG4vLyBEZWxldGVzIGRhdGFcclxuQmRBcGkuZGVsZXRlRGF0YSA9IGZ1bmN0aW9uKHBsdWdpbk5hbWUsIGtleSkge1xyXG4gICAgcmV0dXJuIERhdGFTdG9yZS5kZWxldGVQbHVnaW5EYXRhKHBsdWdpbk5hbWUsIGtleSk7XHJcbn07XHJcblxyXG4vLyBQYXRjaGVzIG90aGVyIGZ1bmN0aW9uc1xyXG4vLyBCZEFwaS5tb25rZXlQYXRjaCA9IGZ1bmN0aW9uKHdoYXQsIG1ldGhvZE5hbWUsIG9wdGlvbnMpIHtcclxuLy8gICAgIGNvbnN0IHtiZWZvcmUsIGFmdGVyLCBpbnN0ZWFkLCBvbmNlID0gZmFsc2UsIHNpbGVudCA9IGZhbHNlLCBmb3JjZSA9IGZhbHNlfSA9IG9wdGlvbnM7XHJcbi8vICAgICBjb25zdCBkaXNwbGF5TmFtZSA9IG9wdGlvbnMuZGlzcGxheU5hbWUgfHwgd2hhdC5kaXNwbGF5TmFtZSB8fCB3aGF0Lm5hbWUgfHwgd2hhdC5jb25zdHJ1Y3Rvci5kaXNwbGF5TmFtZSB8fCB3aGF0LmNvbnN0cnVjdG9yLm5hbWU7XHJcbi8vICAgICBpZiAoIXNpbGVudCkgY29uc29sZS5sb2coXCJwYXRjaFwiLCBtZXRob2ROYW1lLCBcIm9mXCIsIGRpc3BsYXlOYW1lKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1jb25zb2xlXHJcbi8vICAgICBpZiAoIXdoYXRbbWV0aG9kTmFtZV0pIHtcclxuLy8gICAgICAgICBpZiAoZm9yY2UpIHdoYXRbbWV0aG9kTmFtZV0gPSBmdW5jdGlvbigpIHt9O1xyXG4vLyAgICAgICAgIGVsc2UgcmV0dXJuIGNvbnNvbGUuZXJyb3IobWV0aG9kTmFtZSwgXCJkb2VzIG5vdCBleGlzdCBmb3JcIiwgZGlzcGxheU5hbWUpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWNvbnNvbGVcclxuLy8gICAgIH1cclxuLy8gICAgIGNvbnN0IG9yaWdNZXRob2QgPSB3aGF0W21ldGhvZE5hbWVdO1xyXG4vLyAgICAgY29uc3QgY2FuY2VsID0gKCkgPT4ge1xyXG4vLyAgICAgICAgIGlmICghc2lsZW50KSBjb25zb2xlLmxvZyhcInVucGF0Y2hcIiwgbWV0aG9kTmFtZSwgXCJvZlwiLCBkaXNwbGF5TmFtZSk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tY29uc29sZVxyXG4vLyAgICAgICAgIHdoYXRbbWV0aG9kTmFtZV0gPSBvcmlnTWV0aG9kO1xyXG4vLyAgICAgfTtcclxuLy8gICAgIHdoYXRbbWV0aG9kTmFtZV0gPSBmdW5jdGlvbigpIHtcclxuLy8gICAgICAgICBjb25zdCBkYXRhID0ge1xyXG4vLyAgICAgICAgICAgICB0aGlzT2JqZWN0OiB0aGlzLFxyXG4vLyAgICAgICAgICAgICBtZXRob2RBcmd1bWVudHM6IGFyZ3VtZW50cyxcclxuLy8gICAgICAgICAgICAgY2FuY2VsUGF0Y2g6IGNhbmNlbCxcclxuLy8gICAgICAgICAgICAgb3JpZ2luYWxNZXRob2Q6IG9yaWdNZXRob2QsXHJcbi8vICAgICAgICAgICAgIGNhbGxPcmlnaW5hbE1ldGhvZDogKCkgPT4gZGF0YS5yZXR1cm5WYWx1ZSA9IGRhdGEub3JpZ2luYWxNZXRob2QuYXBwbHkoZGF0YS50aGlzT2JqZWN0LCBkYXRhLm1ldGhvZEFyZ3VtZW50cylcclxuLy8gICAgICAgICB9O1xyXG4vLyAgICAgICAgIGlmIChpbnN0ZWFkKSB7XHJcbi8vICAgICAgICAgICAgIGNvbnN0IHRlbXBSZXQgPSBVdGlsaXRpZXMuc3VwcHJlc3NFcnJvcnMoaW5zdGVhZCwgXCJgaW5zdGVhZGAgY2FsbGJhY2sgb2YgXCIgKyB3aGF0W21ldGhvZE5hbWVdLmRpc3BsYXlOYW1lKShkYXRhKTtcclxuLy8gICAgICAgICAgICAgaWYgKHRlbXBSZXQgIT09IHVuZGVmaW5lZCkgZGF0YS5yZXR1cm5WYWx1ZSA9IHRlbXBSZXQ7XHJcbi8vICAgICAgICAgfVxyXG4vLyAgICAgICAgIGVsc2Uge1xyXG4vLyAgICAgICAgICAgICBpZiAoYmVmb3JlKSBVdGlsaXRpZXMuc3VwcHJlc3NFcnJvcnMoYmVmb3JlLCBcImBiZWZvcmVgIGNhbGxiYWNrIG9mIFwiICsgd2hhdFttZXRob2ROYW1lXS5kaXNwbGF5TmFtZSkoZGF0YSk7XHJcbi8vICAgICAgICAgICAgIGRhdGEuY2FsbE9yaWdpbmFsTWV0aG9kKCk7XHJcbi8vICAgICAgICAgICAgIGlmIChhZnRlcikgVXRpbGl0aWVzLnN1cHByZXNzRXJyb3JzKGFmdGVyLCBcImBhZnRlcmAgY2FsbGJhY2sgb2YgXCIgKyB3aGF0W21ldGhvZE5hbWVdLmRpc3BsYXlOYW1lKShkYXRhKTtcclxuLy8gICAgICAgICB9XHJcbi8vICAgICAgICAgaWYgKG9uY2UpIGNhbmNlbCgpO1xyXG4vLyAgICAgICAgIHJldHVybiBkYXRhLnJldHVyblZhbHVlO1xyXG4vLyAgICAgfTtcclxuLy8gICAgIHdoYXRbbWV0aG9kTmFtZV0uX19tb25rZXlQYXRjaGVkID0gdHJ1ZTtcclxuLy8gICAgIGlmICghd2hhdFttZXRob2ROYW1lXS5fX29yaWdpbmFsTWV0aG9kKSB3aGF0W21ldGhvZE5hbWVdLl9fb3JpZ2luYWxNZXRob2QgPSBvcmlnTWV0aG9kO1xyXG4vLyAgICAgd2hhdFttZXRob2ROYW1lXS5kaXNwbGF5TmFtZSA9IFwicGF0Y2hlZCBcIiArICh3aGF0W21ldGhvZE5hbWVdLmRpc3BsYXlOYW1lIHx8IG1ldGhvZE5hbWUpO1xyXG4vLyAgICAgcmV0dXJuIGNhbmNlbDtcclxuLy8gfTtcclxuQmRBcGkubW9ua2V5UGF0Y2ggPSBmdW5jdGlvbih3aGF0LCBtZXRob2ROYW1lLCBvcHRpb25zKSB7XHJcbiAgICBjb25zdCB7YmVmb3JlLCBhZnRlciwgaW5zdGVhZCwgb25jZSA9IGZhbHNlfSA9IG9wdGlvbnM7XHJcbiAgICBjb25zdCBwYXRjaFR5cGUgPSBiZWZvcmUgPyBcImJlZm9yZVwiIDogYWZ0ZXIgPyBcImFmdGVyXCIgOiBpbnN0ZWFkID8gXCJpbnN0ZWFkXCIgOiBcIlwiO1xyXG4gICAgaWYgKCFwYXRjaFR5cGUpIHJldHVybiBMb2dnZXIuZXJyKFwiQmRBcGlcIiwgXCJNdXN0IHByb3ZpZGUgb25lIG9mOiBhZnRlciwgYmVmb3JlLCBpbnN0ZWFkXCIpO1xyXG4gICAgY29uc3Qgb3JpZ2luYWxNZXRob2QgPSB3aGF0W21ldGhvZE5hbWVdO1xyXG4gICAgY29uc3QgZGF0YSA9IHtcclxuICAgICAgICBvcmlnaW5hbE1ldGhvZDogb3JpZ2luYWxNZXRob2QsXHJcbiAgICAgICAgY2FsbE9yaWdpbmFsTWV0aG9kOiAoKSA9PiBkYXRhLm9yaWdpbmFsTWV0aG9kLmFwcGx5KGRhdGEudGhpc09iamVjdCwgZGF0YS5tZXRob2RBcmd1bWVudHMpXHJcbiAgICB9O1xyXG4gICAgZGF0YS5jYW5jZWxQYXRjaCA9IFBhdGNoZXJbcGF0Y2hUeXBlXShcIkJkQXBpXCIsIHdoYXQsIG1ldGhvZE5hbWUsICh0aGlzT2JqZWN0LCBhcmdzLCByZXR1cm5WYWx1ZSkgPT4ge1xyXG4gICAgICAgIGRhdGEudGhpc09iamVjdCA9IHRoaXNPYmplY3Q7XHJcbiAgICAgICAgZGF0YS5tZXRob2RBcmd1bWVudHMgPSBhcmdzO1xyXG4gICAgICAgIGRhdGEucmV0dXJuVmFsdWUgPSByZXR1cm5WYWx1ZTtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBSZWZsZWN0LmFwcGx5KG9wdGlvbnNbcGF0Y2hUeXBlXSwgbnVsbCwgW2RhdGFdKTtcclxuICAgICAgICAgICAgaWYgKG9uY2UpIGRhdGEuY2FuY2VsUGF0Y2goKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGVycikge1xyXG4gICAgICAgICAgICAvLyBMb2dnZXIuZXJyKFwibW9ua2V5UGF0Y2hcIiwgYEVycm9yIGluIHRoZSAke3BhdGNoVHlwZX0gb2YgJHttZXRob2ROYW1lfWApO1xyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG59O1xyXG4vLyBFdmVudCB3aGVuIGVsZW1lbnQgaXMgcmVtb3ZlZFxyXG5CZEFwaS5vblJlbW92ZWQgPSBmdW5jdGlvbihub2RlLCBjYWxsYmFjaykge1xyXG4gICAgcmV0dXJuIFV0aWxpdGllcy5vblJlbW92ZWQobm9kZSwgY2FsbGJhY2spO1xyXG59O1xyXG5cclxuLy8gV3JhcHMgZnVuY3Rpb24gaW4gdHJ5Li5jYXRjaFxyXG5CZEFwaS5zdXBwcmVzc0Vycm9ycyA9IGZ1bmN0aW9uKG1ldGhvZCwgbWVzc2FnZSkge1xyXG4gICAgcmV0dXJuIFV0aWxpdGllcy5zdXBwcmVzc0Vycm9ycyhtZXRob2QsIG1lc3NhZ2UpO1xyXG59O1xyXG5cclxuLy8gVGVzdHMgZm9yIHZhbGlkIEpTT05cclxuQmRBcGkudGVzdEpTT04gPSBmdW5jdGlvbihkYXRhKSB7XHJcbiAgICByZXR1cm4gVXRpbGl0aWVzLnRlc3RKU09OKGRhdGEpO1xyXG59O1xyXG5cclxuLy9HZXQgYW5vdGhlciBwbHVnaW5cclxuLy9uYW1lID0gbmFtZSBvZiBwbHVnaW5cclxuQmRBcGkuZ2V0UGx1Z2luID0gZnVuY3Rpb24gKG5hbWUpIHtcclxuICAgIExvZ2dlci53YXJuKFwiQmRBcGlcIiwgXCJnZXRQbHVnaW4gaXMgZGVwcmVjYXRlZC4gUGxlYXNlIG1ha2UgdXNlIG9mIHRoZSBhZGRvbiBhcGkgKEJkQXBpLlBsdWdpbnMpXCIpO1xyXG4gICAgcmV0dXJuIFBsdWdpbk1hbmFnZXIuYWRkb25MaXN0LmZpbmQoYSA9PiBhLm5hbWUgPT0gbmFtZSk7XHJcbn07XHJcblxyXG5CZEFwaS5pc1BsdWdpbkVuYWJsZWQgPSBmdW5jdGlvbihuYW1lKSB7XHJcbiAgICBMb2dnZXIud2FybihcIkJkQXBpXCIsIFwiaXNQbHVnaW5FbmFibGVkIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSBtYWtlIHVzZSBvZiB0aGUgYWRkb24gYXBpIChCZEFwaS5QbHVnaW5zKVwiKTtcclxuICAgIGNvbnN0IHBsdWdpbiA9IHRoaXMuZ2V0UGx1Z2luKG5hbWUpO1xyXG4gICAgaWYgKCFwbHVnaW4pIHJldHVybiBmYWxzZTtcclxuICAgIHJldHVybiBQbHVnaW5NYW5hZ2VyLmlzRW5hYmxlZChwbHVnaW4uaWQpO1xyXG59O1xyXG5cclxuQmRBcGkuaXNUaGVtZUVuYWJsZWQgPSBmdW5jdGlvbihuYW1lKSB7XHJcbiAgICBMb2dnZXIud2FybihcIkJkQXBpXCIsIFwiaXNUaGVtZUVuYWJsZWQgaXMgZGVwcmVjYXRlZC4gUGxlYXNlIG1ha2UgdXNlIG9mIHRoZSBhZGRvbiBhcGkgKEJkQXBpLlRoZW1lcylcIik7XHJcbiAgICBjb25zdCB0aGVtZSA9IFRoZW1lTWFuYWdlci5hZGRvbkxpc3QuZmluZChhID0+IGEubmFtZSA9PSBuYW1lKTtcclxuICAgIGlmICghdGhlbWUpIHJldHVybiBmYWxzZTtcclxuICAgIHJldHVybiBUaGVtZU1hbmFnZXIuaXNFbmFibGVkKHRoZW1lLmlkKTtcclxufTtcclxuXHJcbkJkQXBpLmlzU2V0dGluZ0VuYWJsZWQgPSBmdW5jdGlvbihjb2xsZWN0aW9uLCBjYXRlZ29yeSwgaWQpIHtcclxuICAgIHJldHVybiBTZXR0aW5ncy5nZXQoY29sbGVjdGlvbiwgY2F0ZWdvcnksIGlkKTtcclxufTtcclxuXHJcbkJkQXBpLmVuYWJsZVNldHRpbmcgPSBmdW5jdGlvbihjb2xsZWN0aW9uLCBjYXRlZ29yeSwgaWQpIHtcclxuICAgIHJldHVybiBTZXR0aW5ncy5zZXQoY29sbGVjdGlvbiwgY2F0ZWdvcnksIGlkLCB0cnVlKTtcclxufTtcclxuXHJcbkJkQXBpLmRpc2FibGVTZXR0aW5nID0gZnVuY3Rpb24oY29sbGVjdGlvbiwgY2F0ZWdvcnksIGlkKSB7XHJcbiAgICByZXR1cm4gU2V0dGluZ3Muc2V0KGNvbGxlY3Rpb24sIGNhdGVnb3J5LCBpZCwgZmFsc2UpO1xyXG59O1xyXG5cclxuQmRBcGkudG9nZ2xlU2V0dGluZyA9IGZ1bmN0aW9uKGNvbGxlY3Rpb24sIGNhdGVnb3J5LCBpZCkge1xyXG4gICAgcmV0dXJuIFNldHRpbmdzLnNldChjb2xsZWN0aW9uLCBjYXRlZ29yeSwgaWQsICFTZXR0aW5ncy5nZXQoY29sbGVjdGlvbiwgY2F0ZWdvcnksIGlkKSk7XHJcbn07XHJcblxyXG4vLyBHZXRzIGRhdGFcclxuQmRBcGkuZ2V0QkREYXRhID0gZnVuY3Rpb24oa2V5KSB7XHJcbiAgICByZXR1cm4gRGF0YVN0b3JlLmdldEJERGF0YShrZXkpO1xyXG59O1xyXG5cclxuLy8gU2V0cyBkYXRhXHJcbkJkQXBpLnNldEJERGF0YSA9IGZ1bmN0aW9uKGtleSwgZGF0YSkge1xyXG4gICAgcmV0dXJuIERhdGFTdG9yZS5zZXRCRERhdGEoa2V5LCBkYXRhKTtcclxufTtcclxuXHJcbmNvbnN0IG1ha2VBZGRvbkFQSSA9IChtYW5hZ2VyKSA9PiBuZXcgY2xhc3MgQWRkb25BUEkge1xyXG4gICAgZ2V0IGZvbGRlcigpIHtyZXR1cm4gbWFuYWdlci5hZGRvbkZvbGRlcjt9XHJcbiAgICBpc0VuYWJsZWQoaWRPckZpbGUpIHtyZXR1cm4gbWFuYWdlci5pc0VuYWJsZWQoaWRPckZpbGUpO31cclxuICAgIGVuYWJsZShpZE9yQWRkb24pIHtyZXR1cm4gbWFuYWdlci5lbmFibGVBZGRvbihpZE9yQWRkb24pO31cclxuICAgIGRpc2FibGUoaWRPckFkZG9uKSB7cmV0dXJuIG1hbmFnZXIuZGlzYWJsZUFkZG9uKGlkT3JBZGRvbik7fVxyXG4gICAgdG9nZ2xlKGlkT3JBZGRvbikge3JldHVybiBtYW5hZ2VyLnRvZ2dsZUFkZG9uKGlkT3JBZGRvbik7fVxyXG4gICAgcmVsb2FkKGlkT3JGaWxlT3JBZGRvbikge3JldHVybiBtYW5hZ2VyLnJlbG9hZEFkZG9uKGlkT3JGaWxlT3JBZGRvbik7fVxyXG4gICAgZ2V0KGlkT3JGaWxlKSB7cmV0dXJuIG1hbmFnZXIuZ2V0QWRkb24oaWRPckZpbGUpO31cclxuICAgIGdldEFsbCgpIHtyZXR1cm4gbWFuYWdlci5hZGRvbkxpc3QubWFwKGEgPT4gbWFuYWdlci5nZXRBZGRvbihhLmlkKSk7fVxyXG59O1xyXG5cclxuQmRBcGkuUGx1Z2lucyA9IG1ha2VBZGRvbkFQSShQbHVnaW5NYW5hZ2VyKTtcclxuQmRBcGkuVGhlbWVzID0gbWFrZUFkZG9uQVBJKFRoZW1lTWFuYWdlcik7XHJcbkJkQXBpLlBhdGNoZXIgPSB7XHJcbiAgICBwYXRjaDogKGNhbGxlciwgbW9kdWxlVG9QYXRjaCwgZnVuY3Rpb25OYW1lLCBjYWxsYmFjaywgb3B0aW9ucyA9IHt9KSA9PiB7XHJcbiAgICAgICAgaWYgKHR5cGVvZihjYWxsZXIpICE9PSBcInN0cmluZ1wiKSByZXR1cm4gTG9nZ2VyLmVycihcIkJkQXBpLlBhdGNoZXJcIiwgXCJQYXJhbWV0ZXIgMCBvZiBwYXRjaCBtdXN0IGJlIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgY2FsbGVyXCIpO1xyXG4gICAgICAgIGlmIChvcHRpb25zLnR5cGUgIT09IFwiYmVmb3JlXCIgJiYgb3B0aW9ucy50eXBlICE9PSBcImluc3RlYWRcIiAmJiBvcHRpb25zLnR5cGUgIT09IFwiYWZ0ZXJcIikgcmV0dXJuIExvZ2dlci5lcnIoXCJCZEFwaS5QYXRjaGVyXCIsIFwib3B0aW9ucy50eXBlIG11c3QgYmUgb25lIG9mOiBiZWZvcmUsIGluc3RlYWQsIGFmdGVyXCIpO1xyXG4gICAgICAgIHJldHVybiBQYXRjaGVyLnB1c2hDaGlsZFBhdGNoKGNhbGxlciwgbW9kdWxlVG9QYXRjaCwgZnVuY3Rpb25OYW1lLCBjYWxsYmFjaywgb3B0aW9ucyk7XHJcbiAgICB9LFxyXG4gICAgYmVmb3JlOiAoY2FsbGVyLCBtb2R1bGVUb1BhdGNoLCBmdW5jdGlvbk5hbWUsIGNhbGxiYWNrLCBvcHRpb25zID0ge30pID0+IEJkQXBpLlBhdGNoZXIucGF0Y2goY2FsbGVyLCBtb2R1bGVUb1BhdGNoLCBmdW5jdGlvbk5hbWUsIGNhbGxiYWNrLCBPYmplY3QuYXNzaWduKG9wdGlvbnMsIHt0eXBlOiBcImJlZm9yZVwifSkpLFxyXG4gICAgaW5zdGVhZDogKGNhbGxlciwgbW9kdWxlVG9QYXRjaCwgZnVuY3Rpb25OYW1lLCBjYWxsYmFjaywgb3B0aW9ucyA9IHt9KSA9PiBCZEFwaS5QYXRjaGVyLnBhdGNoKGNhbGxlciwgbW9kdWxlVG9QYXRjaCwgZnVuY3Rpb25OYW1lLCBjYWxsYmFjaywgT2JqZWN0LmFzc2lnbihvcHRpb25zLCB7dHlwZTogXCJpbnN0ZWFkXCJ9KSksXHJcbiAgICBhZnRlcjogKGNhbGxlciwgbW9kdWxlVG9QYXRjaCwgZnVuY3Rpb25OYW1lLCBjYWxsYmFjaywgb3B0aW9ucyA9IHt9KSA9PiBCZEFwaS5QYXRjaGVyLnBhdGNoKGNhbGxlciwgbW9kdWxlVG9QYXRjaCwgZnVuY3Rpb25OYW1lLCBjYWxsYmFjaywgT2JqZWN0LmFzc2lnbihvcHRpb25zLCB7dHlwZTogXCJhZnRlclwifSkpLFxyXG4gICAgdW5wYXRjaEFsbDogKGNhbGxlcikgPT4ge1xyXG4gICAgICAgIGlmICh0eXBlb2YoY2FsbGVyKSAhPT0gXCJzdHJpbmdcIikgcmV0dXJuIExvZ2dlci5lcnIoXCJCZEFwaS5QYXRjaGVyXCIsIFwiUGFyYW1ldGVyIDAgb2YgdW5wYXRjaEFsbCBtdXN0IGJlIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgY2FsbGVyXCIpO1xyXG4gICAgICAgIHJldHVybiBQYXRjaGVyLnVucGF0Y2hBbGwoY2FsbGVyKTtcclxuICAgIH1cclxufTtcclxuXHJcbk9iamVjdC5mcmVlemUoQmRBcGkpO1xyXG5PYmplY3QuZnJlZXplKEJkQXBpLlBsdWdpbnMpO1xyXG5PYmplY3QuZnJlZXplKEJkQXBpLlRoZW1lcyk7XHJcbk9iamVjdC5mcmVlemUoQmRBcGkuUGF0Y2hlcik7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBCZEFwaTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/modules/pluginapi.js\n"); /***/ }), @@ -551,7 +550,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var data /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var data__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! data */ \"./src/data/data.js\");\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./logger */ \"./src/modules/logger.js\");\n/* harmony import */ var _addonmanager__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./addonmanager */ \"./src/modules/addonmanager.js\");\n/* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utilities */ \"./src/modules/utilities.js\");\n/* harmony import */ var _structs_addonerror__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../structs/addonerror */ \"./src/structs/addonerror.js\");\n/* harmony import */ var _settingsmanager__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./settingsmanager */ \"./src/modules/settingsmanager.js\");\n/* harmony import */ var _strings__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./strings */ \"./src/modules/strings.js\");\n/* harmony import */ var _ui_toasts__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../ui/toasts */ \"./src/ui/toasts.js\");\n/* harmony import */ var _ui_modals__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../ui/modals */ \"./src/ui/modals.js\");\n/* harmony import */ var _ui_settings__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../ui/settings */ \"./src/ui/settings.js\");\n\n\n\n\n\n\n\n\n\n\n\nconst path = __webpack_require__(/*! path */ \"path\");\n\nconst electronRemote = __webpack_require__(/*! electron */ \"electron\").remote;\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class PluginManager extends _addonmanager__WEBPACK_IMPORTED_MODULE_2__[\"default\"] {\n get name() {\n return \"PluginManager\";\n }\n\n get moduleExtension() {\n return \".js\";\n }\n\n get extension() {\n return \".plugin.js\";\n }\n\n get addonFolder() {\n return path.resolve(data__WEBPACK_IMPORTED_MODULE_0__[\"Config\"].dataPath, \"plugins\");\n }\n\n get prefix() {\n return \"plugin\";\n }\n\n get language() {\n return \"javascript\";\n }\n\n constructor() {\n super();\n this.onSwitch = this.onSwitch.bind(this);\n this.observer = new MutationObserver(mutations => {\n for (let i = 0, mlen = mutations.length; i < mlen; i++) {\n this.onMutation(mutations[i]);\n }\n });\n }\n\n initialize() {\n const errors = super.initialize();\n this.setupFunctions();\n _settingsmanager__WEBPACK_IMPORTED_MODULE_5__[\"default\"].registerPanel(\"plugins\", _strings__WEBPACK_IMPORTED_MODULE_6__[\"default\"].Panels.plugins, {\n element: () => _ui_settings__WEBPACK_IMPORTED_MODULE_9__[\"default\"].getAddonPanel(_strings__WEBPACK_IMPORTED_MODULE_6__[\"default\"].Panels.plugins, this.addonList, this.state, {\n folder: this.addonFolder,\n onChange: this.togglePlugin.bind(this),\n reload: this.reloadPlugin.bind(this),\n refreshList: this.updatePluginList.bind(this),\n saveAddon: this.saveAddon.bind(this),\n editAddon: this.editAddon.bind(this),\n deleteAddon: this.deleteAddon.bind(this),\n prefix: this.prefix\n })\n });\n return errors;\n }\n /* Aliases */\n\n\n updatePluginList() {\n return this.updateList();\n }\n\n loadAllPlugins() {\n return this.loadAllAddons();\n }\n\n enablePlugin(idOrAddon) {\n return this.enableAddon(idOrAddon);\n }\n\n disablePlugin(idOrAddon) {\n return this.disableAddon(idOrAddon);\n }\n\n togglePlugin(id) {\n return this.toggleAddon(id);\n }\n\n unloadPlugin(idOrFileOrAddon) {\n return this.unloadAddon(idOrFileOrAddon);\n }\n\n loadPlugin(filename) {\n const error = this.loadAddon(filename);\n if (error) _ui_modals__WEBPACK_IMPORTED_MODULE_8__[\"default\"].showAddonErrors({\n themes: [error]\n });\n }\n\n reloadPlugin(idOrFileOrAddon) {\n const error = this.reloadAddon(idOrFileOrAddon);\n if (error) _ui_modals__WEBPACK_IMPORTED_MODULE_8__[\"default\"].showAddonErrors({\n plugins: [error]\n });\n return typeof idOrFileOrAddon == \"string\" ? this.addonList.find(c => c.id == idOrFileOrAddon || c.filename == idOrFileOrAddon) : idOrFileOrAddon;\n }\n /* Overrides */\n\n\n initializeAddon(addon) {\n if (!addon.type) return new _structs_addonerror__WEBPACK_IMPORTED_MODULE_4__[\"default\"](addon.name, addon.filename, \"Plugin had no exports\", {\n message: \"Plugin had no exports or no name property.\",\n stack: \"\"\n });\n\n try {\n const thePlugin = new addon.type();\n addon.plugin = thePlugin;\n addon.name = thePlugin.getName() || addon.name;\n addon.author = thePlugin.getAuthor() || addon.author || \"No author\";\n addon.description = thePlugin.getDescription() || addon.description || \"No description\";\n addon.version = thePlugin.getVersion() || addon.version || \"No version\";\n\n try {\n if (typeof addon.plugin.load == \"function\") addon.plugin.load();\n } catch (error) {\n this.state[addon.id] = false;\n return new _structs_addonerror__WEBPACK_IMPORTED_MODULE_4__[\"default\"](addon.name, addon.filename, \"load() could not be fired.\", {\n message: error.message,\n stack: error.stack\n });\n }\n } catch (error) {\n return new _structs_addonerror__WEBPACK_IMPORTED_MODULE_4__[\"default\"](addon.name, addon.filename, \"Could not be constructed.\", {\n message: error.message,\n stack: error.stack\n });\n }\n }\n\n getFileModification(module, fileContent, meta) {\n module._compile(fileContent, module.filename);\n\n const didExport = !_utilities__WEBPACK_IMPORTED_MODULE_3__[\"default\"].isEmpty(module.exports);\n\n if (didExport) {\n meta.type = module.exports;\n module.exports = meta;\n return \"\";\n }\n\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].warn(this.name, `${meta.name}, please start assigning module.exports`);\n fileContent += `\\nmodule.exports = ${JSON.stringify(meta)};\\nmodule.exports.type = ${meta.exports || meta.name};`;\n return fileContent;\n }\n\n startAddon(id) {\n return this.startPlugin(id);\n }\n\n stopAddon(id) {\n return this.stopPlugin(id);\n }\n\n getAddon(id) {\n return this.getPlugin(id);\n }\n\n startPlugin(idOrAddon) {\n const addon = typeof idOrAddon == \"string\" ? this.addonList.find(p => p.id == idOrAddon) : idOrAddon;\n if (!addon) return;\n const plugin = addon.plugin;\n\n try {\n plugin.start();\n } catch (err) {\n this.state[addon.id] = false;\n _ui_toasts__WEBPACK_IMPORTED_MODULE_7__[\"default\"].error(_strings__WEBPACK_IMPORTED_MODULE_6__[\"default\"].Addons.couldNotStart.format({\n name: addon.name,\n version: addon.version\n }));\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].stacktrace(this.name, addon.name + \" could not be started.\", err);\n return new _structs_addonerror__WEBPACK_IMPORTED_MODULE_4__[\"default\"](addon.name, addon.filename, _strings__WEBPACK_IMPORTED_MODULE_6__[\"default\"].Addons.enabled.format({\n method: \"start()\"\n }), {\n message: err.message,\n stack: err.stack\n });\n }\n\n this.emit(\"started\", addon.id);\n _ui_toasts__WEBPACK_IMPORTED_MODULE_7__[\"default\"].show(_strings__WEBPACK_IMPORTED_MODULE_6__[\"default\"].Addons.enabled.format({\n name: addon.name,\n version: addon.version\n }));\n }\n\n stopPlugin(idOrAddon) {\n const addon = typeof idOrAddon == \"string\" ? this.addonList.find(p => p.id == idOrAddon) : idOrAddon;\n if (!addon) return;\n const plugin = addon.plugin;\n\n try {\n plugin.stop();\n } catch (err) {\n this.state[addon.id] = false;\n _ui_toasts__WEBPACK_IMPORTED_MODULE_7__[\"default\"].error(_strings__WEBPACK_IMPORTED_MODULE_6__[\"default\"].Addons.couldNotStop.format({\n name: addon.name,\n version: addon.version\n }));\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].stacktrace(this.name, addon.name + \" could not be stopped.\", err);\n return new _structs_addonerror__WEBPACK_IMPORTED_MODULE_4__[\"default\"](addon.name, addon.filename, _strings__WEBPACK_IMPORTED_MODULE_6__[\"default\"].Addons.enabled.format({\n method: \"stop()\"\n }), {\n message: err.message,\n stack: err.stack\n });\n }\n\n this.emit(\"stopped\", addon.id);\n _ui_toasts__WEBPACK_IMPORTED_MODULE_7__[\"default\"].show(_strings__WEBPACK_IMPORTED_MODULE_6__[\"default\"].Addons.disabled.format({\n name: addon.name,\n version: addon.version\n }));\n }\n\n getPlugin(idOrFile) {\n const addon = this.addonList.find(c => c.id == idOrFile || c.filename == idOrFile);\n if (!addon) return;\n return addon.plugin;\n }\n\n setupFunctions() {\n electronRemote.getCurrentWebContents().on(\"did-navigate-in-page\", this.onSwitch.bind(this));\n this.observer.observe(document, {\n childList: true,\n subtree: true\n });\n }\n\n onSwitch() {\n this.emit(\"page-switch\");\n\n for (let i = 0; i < this.addonList.length; i++) {\n const plugin = this.addonList[i].plugin;\n if (!this.state[this.addonList[i].id]) continue;\n\n if (typeof plugin.onSwitch === \"function\") {\n try {\n plugin.onSwitch();\n } catch (err) {\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].stacktrace(this.name, \"Unable to fire onSwitch for \" + this.addonList[i].name + \".\", err);\n }\n }\n }\n }\n\n onMutation(mutation) {\n for (let i = 0; i < this.addonList.length; i++) {\n const plugin = this.addonList[i].plugin;\n if (!this.state[this.addonList[i].id]) continue;\n\n if (typeof plugin.observer === \"function\") {\n try {\n plugin.observer(mutation);\n } catch (err) {\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].stacktrace(this.name, \"Unable to fire observer for \" + this.addonList[i].name + \".\", err);\n }\n }\n }\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL21vZHVsZXMvcGx1Z2lubWFuYWdlci5qcz9kMTczIl0sIm5hbWVzIjpbInBhdGgiLCJyZXF1aXJlIiwiZWxlY3Ryb25SZW1vdGUiLCJyZW1vdGUiLCJQbHVnaW5NYW5hZ2VyIiwiQWRkb25NYW5hZ2VyIiwibmFtZSIsIm1vZHVsZUV4dGVuc2lvbiIsImV4dGVuc2lvbiIsImFkZG9uRm9sZGVyIiwicmVzb2x2ZSIsIkNvbmZpZyIsImRhdGFQYXRoIiwicHJlZml4IiwibGFuZ3VhZ2UiLCJjb25zdHJ1Y3RvciIsIm9uU3dpdGNoIiwiYmluZCIsIm9ic2VydmVyIiwiTXV0YXRpb25PYnNlcnZlciIsIm11dGF0aW9ucyIsImkiLCJtbGVuIiwibGVuZ3RoIiwib25NdXRhdGlvbiIsImluaXRpYWxpemUiLCJlcnJvcnMiLCJzZXR1cEZ1bmN0aW9ucyIsIlNldHRpbmdzIiwicmVnaXN0ZXJQYW5lbCIsIlN0cmluZ3MiLCJQYW5lbHMiLCJwbHVnaW5zIiwiZWxlbWVudCIsIlNldHRpbmdzUmVuZGVyZXIiLCJnZXRBZGRvblBhbmVsIiwiYWRkb25MaXN0Iiwic3RhdGUiLCJmb2xkZXIiLCJvbkNoYW5nZSIsInRvZ2dsZVBsdWdpbiIsInJlbG9hZCIsInJlbG9hZFBsdWdpbiIsInJlZnJlc2hMaXN0IiwidXBkYXRlUGx1Z2luTGlzdCIsInNhdmVBZGRvbiIsImVkaXRBZGRvbiIsImRlbGV0ZUFkZG9uIiwidXBkYXRlTGlzdCIsImxvYWRBbGxQbHVnaW5zIiwibG9hZEFsbEFkZG9ucyIsImVuYWJsZVBsdWdpbiIsImlkT3JBZGRvbiIsImVuYWJsZUFkZG9uIiwiZGlzYWJsZVBsdWdpbiIsImRpc2FibGVBZGRvbiIsImlkIiwidG9nZ2xlQWRkb24iLCJ1bmxvYWRQbHVnaW4iLCJpZE9yRmlsZU9yQWRkb24iLCJ1bmxvYWRBZGRvbiIsImxvYWRQbHVnaW4iLCJmaWxlbmFtZSIsImVycm9yIiwibG9hZEFkZG9uIiwiTW9kYWxzIiwic2hvd0FkZG9uRXJyb3JzIiwidGhlbWVzIiwicmVsb2FkQWRkb24iLCJmaW5kIiwiYyIsImluaXRpYWxpemVBZGRvbiIsImFkZG9uIiwidHlwZSIsIkFkZG9uRXJyb3IiLCJtZXNzYWdlIiwic3RhY2siLCJ0aGVQbHVnaW4iLCJwbHVnaW4iLCJnZXROYW1lIiwiYXV0aG9yIiwiZ2V0QXV0aG9yIiwiZGVzY3JpcHRpb24iLCJnZXREZXNjcmlwdGlvbiIsInZlcnNpb24iLCJnZXRWZXJzaW9uIiwibG9hZCIsImdldEZpbGVNb2RpZmljYXRpb24iLCJtb2R1bGUiLCJmaWxlQ29udGVudCIsIm1ldGEiLCJfY29tcGlsZSIsImRpZEV4cG9ydCIsIlV0aWxpdGllcyIsImlzRW1wdHkiLCJleHBvcnRzIiwiTG9nZ2VyIiwid2FybiIsIkpTT04iLCJzdHJpbmdpZnkiLCJzdGFydEFkZG9uIiwic3RhcnRQbHVnaW4iLCJzdG9wQWRkb24iLCJzdG9wUGx1Z2luIiwiZ2V0QWRkb24iLCJnZXRQbHVnaW4iLCJwIiwic3RhcnQiLCJlcnIiLCJUb2FzdHMiLCJBZGRvbnMiLCJjb3VsZE5vdFN0YXJ0IiwiZm9ybWF0Iiwic3RhY2t0cmFjZSIsImVuYWJsZWQiLCJtZXRob2QiLCJlbWl0Iiwic2hvdyIsInN0b3AiLCJjb3VsZE5vdFN0b3AiLCJkaXNhYmxlZCIsImlkT3JGaWxlIiwiZ2V0Q3VycmVudFdlYkNvbnRlbnRzIiwib24iLCJvYnNlcnZlIiwiZG9jdW1lbnQiLCJjaGlsZExpc3QiLCJzdWJ0cmVlIiwibXV0YXRpb24iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTs7QUFFQSxNQUFNQSxJQUFJLEdBQUdDLG1CQUFPLENBQUMsa0JBQUQsQ0FBcEI7O0FBQ0EsTUFBTUMsY0FBYyxHQUFHRCxtQkFBTyxDQUFDLDBCQUFELENBQVAsQ0FBb0JFLE1BQTNDOztB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LFVBQUksT0FBT3NCLE1BQU0sQ0FBQzlELFFBQWQsS0FBNEIsVUFBaEMsRUFBNEM7QUFDeEMsWUFBSTtBQUFFOEQsZ0JBQU0sQ0FBQzlELFFBQVA7QUFBb0IsU0FBMUIsQ0FDQSxPQUFPNEYsR0FBUCxFQUFZO0FBQUVaLHlEQUFNLENBQUNpQixVQUFQLENBQWtCLEtBQUszRyxJQUF2QixFQUE2QixpQ0FBaUMsS0FBSzhCLFNBQUwsQ0FBZWYsQ0FBZixFQUFrQmYsSUFBbkQsR0FBMEQsR0FBdkYsRUFBNEZzRyxHQUE1RjtBQUFtRztBQUNwSDtBQUNKO0FBQ0o7O0FBRURwRixZQUFVLENBQUN3RyxRQUFELEVBQVc7QUFDakIsU0FBSyxJQUFJM0csQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBRyxLQUFLZSxTQUFMLENBQWViLE1BQW5DLEVBQTJDRixDQUFDLEVBQTVDLEVBQWdEO0FBQzVDLFlBQU15RCxNQUFNLEdBQUcsS0FBSzFDLFNBQUwsQ0FBZWYsQ0FBZixFQUFrQnlELE1BQWpDO0FBQ0EsVUFBSSxDQUFDLEtBQUt6QyxLQUFMLENBQVcsS0FBS0QsU0FBTCxDQUFlZixDQUFmLEVBQWtCbUMsRUFBN0IsQ0FBTCxFQUF1Qzs7QUFDdkMsVUFBSSxPQUFPc0IsTUFBTSxDQUFDNUQsUUFBZCxLQUEyQixVQUEvQixFQUEyQztBQUN2QyxZQUFJO0FBQUU0RCxnQkFBTSxDQUFDNUQsUUFBUCxDQUFnQjhHLFFBQWhCO0FBQTRCLFNBQWxDLENBQ0EsT0FBT3BCLEdBQVAsRUFBWTtBQUFFWix5REFBTSxDQUFDaUIsVUFBUCxDQUFrQixLQUFLM0csSUFBdkIsRUFBNkIsaUNBQWlDLEtBQUs4QixTQUFMLENBQWVmLENBQWYsRUFBa0JmLElBQW5ELEdBQTBELEdBQXZGLEVBQTRGc0csR0FBNUY7QUFBbUc7QUFDcEg7QUFDSjtBQUNKOztBQWxLdUQsQ0FBN0MsRUFBZiIsImZpbGUiOiIuL3NyYy9tb2R1bGVzL3BsdWdpbm1hbmFnZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbmZpZ30gZnJvbSBcImRhdGFcIjtcclxuaW1wb3J0IExvZ2dlciBmcm9tIFwiLi9sb2dnZXJcIjtcclxuaW1wb3J0IEFkZG9uTWFuYWdlciBmcm9tIFwiLi9hZGRvbm1hbmFnZXJcIjtcclxuaW1wb3J0IFV0aWxpdGllcyBmcm9tIFwiLi91dGlsaXRpZXNcIjtcclxuaW1wb3J0IEFkZG9uRXJyb3IgZnJvbSBcIi4uL3N0cnVjdHMvYWRkb25lcnJvclwiO1xyXG5pbXBvcnQgU2V0dGluZ3MgZnJvbSBcIi4vc2V0dGluZ3NtYW5hZ2VyXCI7XHJcbmltcG9ydCBTdHJpbmdzIGZyb20gXCIuL3N0cmluZ3NcIjtcclxuXHJcbmltcG9ydCBUb2FzdHMgZnJvbSBcIi4uL3VpL3RvYXN0c1wiO1xyXG5pbXBvcnQgTW9kYWxzIGZyb20gXCIuLi91aS9tb2RhbHNcIjtcclxuaW1wb3J0IFNldHRpbmdzUmVuZGVyZXIgZnJvbSBcIi4uL3VpL3NldHRpbmdzXCI7XHJcblxyXG5jb25zdCBwYXRoID0gcmVxdWlyZShcInBhdGhcIik7XHJcbmNvbnN0IGVsZWN0cm9uUmVtb3RlID0gcmVxdWlyZShcImVsZWN0cm9uXCIpLnJlbW90ZTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IG5ldyBjbGFzcyBQbHVnaW5NYW5hZ2VyIGV4dGVuZHMgQWRkb25NYW5hZ2VyIHtcclxuICAgIGdldCBuYW1lKCkge3JldHVybiBcIlBsdWdpbk1hbmFnZXJcIjt9XHJcbiAgICBnZXQgbW9kdWxlRXh0ZW5zaW9uKCkge3JldHVybiBcIi5qc1wiO31cclxuICAgIGdldCBleHRlbnNpb24oKSB7cmV0dXJuIFwiLnBsdWdpbi5qc1wiO31cclxuICAgIGdldCBhZGRvbkZvbGRlcigpIHtyZXR1cm4gcGF0aC5yZXNvbHZlKENvbmZpZy5kYXRhUGF0aCwgXCJwbHVnaW5zXCIpO31cclxuICAgIGdldCBwcmVmaXgoKSB7cmV0dXJuIFwicGx1Z2luXCI7fVxyXG4gICAgZ2V0IGxhbmd1YWdlKCkge3JldHVybiBcImphdmFzY3JpcHRcIjt9XHJcblxyXG4gICAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICB0aGlzLm9uU3dpdGNoID0gdGhpcy5vblN3aXRjaC5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMub2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwLCBtbGVuID0gbXV0YXRpb25zLmxlbmd0aDsgaSA8IG1sZW47IGkrKykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vbk11dGF0aW9uKG11dGF0aW9uc1tpXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBpbml0aWFsaXplKCkge1xyXG4gICAgICAgIGNvbnN0IGVycm9ycyA9IHN1cGVyLmluaXRpYWxpemUoKTtcclxuICAgICAgICB0aGlzLnNldHVwRnVuY3Rpb25zKCk7XHJcbiAgICAgICAgU2V0dGluZ3MucmVnaXN0ZXJQYW5lbChcInBsdWdpbnNcIiwgU3RyaW5ncy5QYW5lbHMucGx1Z2lucywge2VsZW1lbnQ6ICgpID0+IFNldHRpbmdzUmVuZGVyZXIuZ2V0QWRkb25QYW5lbChTdHJpbmdzLlBhbmVscy5wbHVnaW5zLCB0aGlzLmFkZG9uTGlzdCwgdGhpcy5zdGF0ZSwge1xyXG4gICAgICAgICAgICBmb2xkZXI6IHRoaXMuYWRkb25Gb2xkZXIsXHJcbiAgICAgICAgICAgIG9uQ2hhbmdlOiB0aGlzLnRvZ2dsZVBsdWdpbi5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgICByZWxvYWQ6IHRoaXMucmVsb2FkUGx1Z2luLmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgIHJlZnJlc2hMaXN0OiB0aGlzLnVwZGF0ZVBsdWdpbkxpc3QuYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgc2F2ZUFkZG9uOiB0aGlzLnNhdmVBZGRvbi5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgICBlZGl0QWRkb246IHRoaXMuZWRpdEFkZG9uLmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgIGRlbGV0ZUFkZG9uOiB0aGlzLmRlbGV0ZUFkZG9uLmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgIHByZWZpeDogdGhpcy5wcmVmaXhcclxuICAgICAgICB9KX0pO1xyXG4gICAgICAgIHJldHVybiBlcnJvcnM7XHJcbiAgICB9XHJcblxyXG4gICAgLyogQWxpYXNlcyAqL1xyXG4gICAgdXBkYXRlUGx1Z2luTGlzdCgpIHtyZXR1cm4gdGhpcy51cGRhdGVMaXN0KCk7fVxyXG4gICAgbG9hZEFsbFBsdWdpbnMoKSB7cmV0dXJuIHRoaXMubG9hZEFsbEFkZG9ucygpO31cclxuXHJcbiAgICBlbmFibGVQbHVnaW4oaWRPckFkZG9uKSB7cmV0dXJuIHRoaXMuZW5hYmxlQWRkb24oaWRPckFkZG9uKTt9XHJcbiAgICBkaXNhYmxlUGx1Z2luKGlkT3JBZGRvbikge3JldHVybiB0aGlzLmRpc2FibGVBZGRvbihpZE9yQWRkb24pO31cclxuICAgIHRvZ2dsZVBsdWdpbihpZCkge3JldHVybiB0aGlzLnRvZ2dsZUFkZG9uKGlkKTt9XHJcblxyXG4gICAgdW5sb2FkUGx1Z2luKGlkT3JGaWxlT3JBZGRvbikge3JldHVybiB0aGlzLnVubG9hZEFkZG9uKGlkT3JGaWxlT3JBZGRvbik7fVxyXG5cclxuICAgIGxvYWRQbHVnaW4oZmlsZW5hbWUpIHtcclxuICAgICAgICBjb25zdCBlcnJvciA9IHRoaXMubG9hZEFkZG9uKGZpbGVuYW1lKTtcclxuICAgICAgICBpZiAoZXJyb3IpIE1vZGFscy5zaG93QWRkb25FcnJvcnMoe3RoZW1lczogW2Vycm9yXX0pO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbG9hZFBsdWdpbihpZE9yRmlsZU9yQWRkb24pIHtcclxuICAgICAgICBjb25zdCBlcnJvciA9IHRoaXMucmVsb2FkQWRkb24oaWRPckZpbGVPckFkZG9uKTtcclxuICAgICAgICBpZiAoZXJyb3IpIE1vZGFscy5zaG93QWRkb25FcnJvcnMoe3BsdWdpbnM6IFtlcnJvcl19KTtcclxuICAgICAgICByZXR1cm4gdHlwZW9mKGlkT3JGaWxlT3JBZGRvbikgPT0gXCJzdHJpbmdcIiA/IHRoaXMuYWRkb25MaXN0LmZpbmQoYyA9PiBjLmlkID09IGlkT3JGaWxlT3JBZGRvbiB8fCBjLmZpbGVuYW1lID09IGlkT3JGaWxlT3JBZGRvbikgOiBpZE9yRmlsZU9yQWRkb247XHJcbiAgICB9XHJcblxyXG4gICAgLyogT3ZlcnJpZGVzICovXHJcbiAgICBpbml0aWFsaXplQWRkb24oYWRkb24pIHtcclxuICAgICAgICBpZiAoIWFkZG9uLnR5cGUpIHJldHVybiBuZXcgQWRkb25FcnJvcihhZGRvbi5uYW1lLCBhZGRvbi5maWxlbmFtZSwgXCJQbHVnaW4gaGFkIG5vIGV4cG9ydHNcIiwge21lc3NhZ2U6IFwiUGx1Z2luIGhhZCBubyBleHBvcnRzIG9yIG5vIG5hbWUgcHJvcGVydHkuXCIsIHN0YWNrOiBcIlwifSk7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgY29uc3QgdGhlUGx1Z2luID0gbmV3IGFkZG9uLnR5cGUoKTtcclxuICAgICAgICAgICAgYWRkb24ucGx1Z2luID0gdGhlUGx1Z2luO1xyXG4gICAgICAgICAgICBhZGRvbi5uYW1lID0gdGhlUGx1Z2luLmdldE5hbWUoKSB8fCBhZGRvbi5uYW1lO1xyXG4gICAgICAgICAgICBhZGRvbi5hdXRob3IgPSB0aGVQbHVnaW4uZ2V0QXV0aG9yKCkgfHwgYWRkb24uYXV0aG9yIHx8IFwiTm8gYXV0aG9yXCI7XHJcbiAgICAgICAgICAgIGFkZG9uLmRlc2NyaXB0aW9uID0gdGhlUGx1Z2luLmdldERlc2NyaXB0aW9uKCkgfHwgYWRkb24uZGVzY3JpcHRpb24gfHwgXCJObyBkZXNjcmlwdGlvblwiO1xyXG4gICAgICAgICAgICBhZGRvbi52ZXJzaW9uID0gdGhlUGx1Z2luLmdldFZlcnNpb24oKSB8fCBhZGRvbi52ZXJzaW9uIHx8IFwiTm8gdmVyc2lvblwiO1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZihhZGRvbi5wbHVnaW4ubG9hZCkgPT0gXCJmdW5jdGlvblwiKSBhZGRvbi5wbHVnaW4ubG9hZCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZVthZGRvbi5pZF0gPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQWRkb25FcnJvcihhZGRvbi5uYW1lLCBhZGRvbi5maWxlbmFtZSwgXCJsb2FkKCkgY291bGQgbm90IGJlIGZpcmVkLlwiLCB7bWVzc2FnZTogZXJyb3IubWVzc2FnZSwgc3RhY2s6IGVycm9yLnN0YWNrfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGVycm9yKSB7cmV0dXJuIG5ldyBBZGRvbkVycm9yKGFkZG9uLm5hbWUsIGFkZG9uLmZpbGVuYW1lLCBcIkNvdWxkIG5vdCBiZSBjb25zdHJ1Y3RlZC5cIiwge21lc3NhZ2U6IGVycm9yLm1lc3NhZ2UsIHN0YWNrOiBlcnJvci5zdGFja30pO31cclxuICAgIH1cclxuXHJcbiAgICBnZXRGaWxlTW9kaWZpY2F0aW9uKG1vZHVsZSwgZmlsZUNvbnRlbnQsIG1ldGEpIHtcclxuICAgICAgICBtb2R1bGUuX2NvbXBpbGUoZmlsZUNvbnRlbnQsIG1vZHVsZS5maWxlbmFtZSk7XHJcbiAgICAgICAgY29uc3QgZGlkRXhwb3J0ID0gIVV0aWxpdGllcy5pc0VtcHR5KG1vZHVsZS5leHBvcnRzKTtcclxuICAgICAgICBpZiAoZGlkRXhwb3J0KSB7XHJcbiAgICAgICAgICAgIG1ldGEudHlwZSA9IG1vZHVsZS5leHBvcnRzO1xyXG4gICAgICAgICAgICBtb2R1bGUuZXhwb3J0cyA9IG1ldGE7XHJcbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgICAgIH1cclxuICAgICAgICBMb2dnZXIud2Fybih0aGlzLm5hbWUsIGAke21ldGEubmFtZX0sIHBsZWFzZSBzdGFydCBhc3NpZ25pbmcgbW9kdWxlLmV4cG9ydHNgKTtcclxuICAgICAgICBmaWxlQ29udGVudCArPSBgXFxubW9kdWxlLmV4cG9ydHMgPSAke0pTT04uc3RyaW5naWZ5KG1ldGEpfTtcXG5tb2R1bGUuZXhwb3J0cy50eXBlID0gJHttZXRhLmV4cG9ydHMgfHwgbWV0YS5uYW1lfTtgO1xyXG4gICAgICAgIHJldHVybiBmaWxlQ29udGVudDtcclxuICAgIH1cclxuXHJcbiAgICBzdGFydEFkZG9uKGlkKSB7cmV0dXJuIHRoaXMuc3RhcnRQbHVnaW4oaWQpO31cclxuICAgIHN0b3BBZGRvbihpZCkge3JldHVybiB0aGlzLnN0b3BQbHVnaW4oaWQpO31cclxuICAgIGdldEFkZG9uKGlkKSB7cmV0dXJuIHRoaXMuZ2V0UGx1Z2luKGlkKTt9XHJcblxyXG4gICAgc3RhcnRQbHVnaW4oaWRPckFkZG9uKSB7XHJcbiAgICAgICAgY29uc3QgYWRkb24gPSB0eXBlb2YoaWRPckFkZG9uKSA9PSBcInN0cmluZ1wiID8gdGhpcy5hZGRvbkxpc3QuZmluZChwID0+IHAuaWQgPT0gaWRPckFkZG9uKSA6IGlkT3JBZGRvbjtcclxuICAgICAgICBpZiAoIWFkZG9uKSByZXR1cm47XHJcbiAgICAgICAgY29uc3QgcGx1Z2luID0gYWRkb24ucGx1Z2luO1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHBsdWdpbi5zdGFydCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3RhdGVbYWRkb24uaWRdID0gZmFsc2U7XHJcbiAgICAgICAgICAgIFRvYXN0cy5lcnJvcihTdHJpbmdzLkFkZG9ucy5jb3VsZE5vdFN0YXJ0LmZvcm1hdCh7bmFtZTogYWRkb24ubmFtZSwgdmVyc2lvbjogYWRkb24udmVyc2lvbn0pKTtcclxuICAgICAgICAgICAgTG9nZ2VyLnN0YWNrdHJhY2UodGhpcy5uYW1lLCBhZGRvbi5uYW1lICsgXCIgY291bGQgbm90IGJlIHN0YXJ0ZWQuXCIsIGVycik7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgQWRkb25FcnJvcihhZGRvbi5uYW1lLCBhZGRvbi5maWxlbmFtZSwgU3RyaW5ncy5BZGRvbnMuZW5hYmxlZC5mb3JtYXQoe21ldGhvZDogXCJzdGFydCgpXCJ9KSwge21lc3NhZ2U6IGVyci5tZXNzYWdlLCBzdGFjazogZXJyLnN0YWNrfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZW1pdChcInN0YXJ0ZWRcIiwgYWRkb24uaWQpO1xyXG4gICAgICAgIFRvYXN0cy5zaG93KFN0cmluZ3MuQWRkb25zLmVuYWJsZWQuZm9ybWF0KHtuYW1lOiBhZGRvbi5uYW1lLCB2ZXJzaW9uOiBhZGRvbi52ZXJzaW9ufSkpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0b3BQbHVnaW4oaWRPckFkZG9uKSB7XHJcbiAgICAgICAgY29uc3QgYWRkb24gPSB0eXBlb2YoaWRPckFkZG9uKSA9PSBcInN0cmluZ1wiID8gdGhpcy5hZGRvbkxpc3QuZmluZChwID0+IHAuaWQgPT0gaWRPckFkZG9uKSA6IGlkT3JBZGRvbjtcclxuICAgICAgICBpZiAoIWFkZG9uKSByZXR1cm47XHJcbiAgICAgICAgY29uc3QgcGx1Z2luID0gYWRkb24ucGx1Z2luO1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHBsdWdpbi5zdG9wKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChlcnIpIHtcclxuICAgICAgICAgICAgdGhpcy5zdGF0ZVthZGRvbi5pZF0gPSBmYWxzZTtcclxuICAgICAgICAgICAgVG9hc3RzLmVycm9yKFN0cmluZ3MuQWRkb25zLmNvdWxkTm90U3RvcC5mb3JtYXQoe25hbWU6IGFkZG9uLm5hbWUsIHZlcnNpb246IGFkZG9uLnZlcnNpb259KSk7XHJcbiAgICAgICAgICAgIExvZ2dlci5zdGFja3RyYWNlKHRoaXMubmFtZSwgYWRkb24ubmFtZSArIFwiIGNvdWxkIG5vdCBiZSBzdG9wcGVkLlwiLCBlcnIpO1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IEFkZG9uRXJyb3IoYWRkb24ubmFtZSwgYWRkb24uZmlsZW5hbWUsIFN0cmluZ3MuQWRkb25zLmVuYWJsZWQuZm9ybWF0KHttZXRob2Q6IFwic3RvcCgpXCJ9KSwge21lc3NhZ2U6IGVyci5tZXNzYWdlLCBzdGFjazogZXJyLnN0YWNrfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZW1pdChcInN0b3BwZWRcIiwgYWRkb24uaWQpO1xyXG4gICAgICAgIFRvYXN0cy5zaG93KFN0cmluZ3MuQWRkb25zLmRpc2FibGVkLmZvcm1hdCh7bmFtZTogYWRkb24ubmFtZSwgdmVyc2lvbjogYWRkb24udmVyc2lvbn0pKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRQbHVnaW4oaWRPckZpbGUpIHtcclxuICAgICAgICBjb25zdCBhZGRvbiA9IHRoaXMuYWRkb25MaXN0LmZpbmQoYyA9PiBjLmlkID09IGlkT3JGaWxlIHx8IGMuZmlsZW5hbWUgPT0gaWRPckZpbGUpO1xyXG4gICAgICAgIGlmICghYWRkb24pIHJldHVybjtcclxuICAgICAgICByZXR1cm4gYWRkb24ucGx1Z2luO1xyXG4gICAgfVxyXG5cclxuICAgIHNldHVwRnVuY3Rpb25zKCkge1xyXG4gICAgICAgIGVsZWN0cm9uUmVtb3RlLmdldEN1cnJlbnRXZWJDb250ZW50cygpLm9uKFwiZGlkLW5hdmlnYXRlLWluLXBhZ2VcIiwgdGhpcy5vblN3aXRjaC5iaW5kKHRoaXMpKTtcclxuICAgICAgICB0aGlzLm9ic2VydmVyLm9ic2VydmUoZG9jdW1lbnQsIHtcclxuICAgICAgICAgICAgY2hpbGRMaXN0OiB0cnVlLFxyXG4gICAgICAgICAgICBzdWJ0cmVlOiB0cnVlXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgb25Td2l0Y2goKSB7XHJcbiAgICAgICAgdGhpcy5lbWl0KFwicGFnZS1zd2l0Y2hcIik7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmFkZG9uTGlzdC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBjb25zdCBwbHVnaW4gPSB0aGlzLmFkZG9uTGlzdFtpXS5wbHVnaW47XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5zdGF0ZVt0aGlzLmFkZG9uTGlzdFtpXS5pZF0pIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICBpZiAodHlwZW9mKHBsdWdpbi5vblN3aXRjaCkgPT09IFwiZnVuY3Rpb25cIikge1xyXG4gICAgICAgICAgICAgICAgdHJ5IHsgcGx1Z2luLm9uU3dpdGNoKCk7IH1cclxuICAgICAgICAgICAgICAgIGNhdGNoIChlcnIpIHsgTG9nZ2VyLnN0YWNrdHJhY2UodGhpcy5uYW1lLCBcIlVuYWJsZSB0byBmaXJlIG9uU3dpdGNoIGZvciBcIiArIHRoaXMuYWRkb25MaXN0W2ldLm5hbWUgKyBcIi5cIiwgZXJyKTsgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG9uTXV0YXRpb24obXV0YXRpb24pIHtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuYWRkb25MaXN0Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHBsdWdpbiA9IHRoaXMuYWRkb25MaXN0W2ldLnBsdWdpbjtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLnN0YXRlW3RoaXMuYWRkb25MaXN0W2ldLmlkXSkgY29udGludWU7XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2YgcGx1Z2luLm9ic2VydmVyID09PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgICAgICAgICAgIHRyeSB7IHBsdWdpbi5vYnNlcnZlcihtdXRhdGlvbik7IH1cclxuICAgICAgICAgICAgICAgIGNhdGNoIChlcnIpIHsgTG9nZ2VyLnN0YWNrdHJhY2UodGhpcy5uYW1lLCBcIlVuYWJsZSB0byBmaXJlIG9ic2VydmVyIGZvciBcIiArIHRoaXMuYWRkb25MaXN0W2ldLm5hbWUgKyBcIi5cIiwgZXJyKTsgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/pluginmanager.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var data__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! data */ \"./src/data/data.js\");\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./logger */ \"./src/modules/logger.js\");\n/* harmony import */ var _addonmanager__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./addonmanager */ \"./src/modules/addonmanager.js\");\n/* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utilities */ \"./src/modules/utilities.js\");\n/* harmony import */ var _structs_addonerror__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../structs/addonerror */ \"./src/structs/addonerror.js\");\n/* harmony import */ var _settingsmanager__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./settingsmanager */ \"./src/modules/settingsmanager.js\");\n/* harmony import */ var _strings__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./strings */ \"./src/modules/strings.js\");\n/* harmony import */ var _ui_toasts__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../ui/toasts */ \"./src/ui/toasts.js\");\n/* harmony import */ var _ui_modals__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../ui/modals */ \"./src/ui/modals.js\");\n/* harmony import */ var _ui_settings__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../ui/settings */ \"./src/ui/settings.js\");\n\n\n\n\n\n\n\n\n\n\n\nconst path = __webpack_require__(/*! path */ \"path\");\n\nconst electronRemote = __webpack_require__(/*! electron */ \"electron\").remote;\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class PluginManager extends _addonmanager__WEBPACK_IMPORTED_MODULE_2__[\"default\"] {\n get name() {\n return \"PluginManager\";\n }\n\n get moduleExtension() {\n return \".js\";\n }\n\n get extension() {\n return \".plugin.js\";\n }\n\n get addonFolder() {\n return path.resolve(data__WEBPACK_IMPORTED_MODULE_0__[\"Config\"].dataPath, \"plugins\");\n }\n\n get prefix() {\n return \"plugin\";\n }\n\n get language() {\n return \"javascript\";\n }\n\n constructor() {\n super();\n this.onSwitch = this.onSwitch.bind(this);\n this.observer = new MutationObserver(mutations => {\n for (let i = 0, mlen = mutations.length; i < mlen; i++) {\n this.onMutation(mutations[i]);\n }\n });\n }\n\n initialize() {\n const errors = super.initialize();\n this.setupFunctions();\n _settingsmanager__WEBPACK_IMPORTED_MODULE_5__[\"default\"].registerPanel(\"plugins\", _strings__WEBPACK_IMPORTED_MODULE_6__[\"default\"].Panels.plugins, {\n element: () => _ui_settings__WEBPACK_IMPORTED_MODULE_9__[\"default\"].getAddonPanel(_strings__WEBPACK_IMPORTED_MODULE_6__[\"default\"].Panels.plugins, this.addonList, this.state, {\n folder: this.addonFolder,\n onChange: this.togglePlugin.bind(this),\n reload: this.reloadPlugin.bind(this),\n refreshList: this.updatePluginList.bind(this),\n saveAddon: this.saveAddon.bind(this),\n editAddon: this.editAddon.bind(this),\n deleteAddon: this.deleteAddon.bind(this),\n prefix: this.prefix\n })\n });\n return errors;\n }\n /* Aliases */\n\n\n updatePluginList() {\n return this.updateList();\n }\n\n loadAllPlugins() {\n return this.loadAllAddons();\n }\n\n enablePlugin(idOrAddon) {\n return this.enableAddon(idOrAddon);\n }\n\n disablePlugin(idOrAddon) {\n return this.disableAddon(idOrAddon);\n }\n\n togglePlugin(id) {\n return this.toggleAddon(id);\n }\n\n unloadPlugin(idOrFileOrAddon) {\n return this.unloadAddon(idOrFileOrAddon);\n }\n\n loadPlugin(filename) {\n const error = this.loadAddon(filename);\n if (error) _ui_modals__WEBPACK_IMPORTED_MODULE_8__[\"default\"].showAddonErrors({\n themes: [error]\n });\n }\n\n reloadPlugin(idOrFileOrAddon) {\n const error = this.reloadAddon(idOrFileOrAddon);\n if (error) _ui_modals__WEBPACK_IMPORTED_MODULE_8__[\"default\"].showAddonErrors({\n plugins: [error]\n });\n return typeof idOrFileOrAddon == \"string\" ? this.addonList.find(c => c.id == idOrFileOrAddon || c.filename == idOrFileOrAddon) : idOrFileOrAddon;\n }\n /* Overrides */\n\n\n initializeAddon(addon) {\n if (!addon.type) return new _structs_addonerror__WEBPACK_IMPORTED_MODULE_4__[\"default\"](addon.name, addon.filename, \"Plugin had no exports\", {\n message: \"Plugin had no exports or no name property.\",\n stack: \"\"\n });\n\n try {\n const thePlugin = new addon.type();\n addon.plugin = thePlugin;\n addon.name = thePlugin.getName() || addon.name;\n addon.author = thePlugin.getAuthor() || addon.author || \"No author\";\n addon.description = thePlugin.getDescription() || addon.description || \"No description\";\n addon.version = thePlugin.getVersion() || addon.version || \"No version\";\n\n try {\n if (typeof addon.plugin.load == \"function\") addon.plugin.load();\n } catch (error) {\n this.state[addon.id] = false;\n return new _structs_addonerror__WEBPACK_IMPORTED_MODULE_4__[\"default\"](addon.name, addon.filename, \"load() could not be fired.\", {\n message: error.message,\n stack: error.stack\n });\n }\n } catch (error) {\n return new _structs_addonerror__WEBPACK_IMPORTED_MODULE_4__[\"default\"](addon.name, addon.filename, \"Could not be constructed.\", {\n message: error.message,\n stack: error.stack\n });\n }\n }\n\n getFileModification(module, fileContent, meta) {\n module._compile(fileContent, module.filename);\n\n const didExport = !_utilities__WEBPACK_IMPORTED_MODULE_3__[\"default\"].isEmpty(module.exports);\n\n if (didExport) {\n meta.type = module.exports;\n module.exports = meta;\n return \"\";\n }\n\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].warn(this.name, `${meta.name}, please start assigning module.exports`);\n fileContent += `\\nmodule.exports = ${JSON.stringify(meta)};\\nmodule.exports.type = ${meta.exports || meta.name};`;\n return fileContent;\n }\n\n startAddon(id) {\n return this.startPlugin(id);\n }\n\n stopAddon(id) {\n return this.stopPlugin(id);\n }\n\n getAddon(id) {\n return this.getPlugin(id);\n }\n\n startPlugin(idOrAddon) {\n const addon = typeof idOrAddon == \"string\" ? this.addonList.find(p => p.id == idOrAddon) : idOrAddon;\n if (!addon) return;\n const plugin = addon.plugin;\n\n try {\n plugin.start();\n } catch (err) {\n this.state[addon.id] = false;\n _ui_toasts__WEBPACK_IMPORTED_MODULE_7__[\"default\"].error(_strings__WEBPACK_IMPORTED_MODULE_6__[\"default\"].Addons.couldNotStart.format({\n name: addon.name,\n version: addon.version\n }));\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].stacktrace(this.name, addon.name + \" could not be started.\", err);\n return new _structs_addonerror__WEBPACK_IMPORTED_MODULE_4__[\"default\"](addon.name, addon.filename, _strings__WEBPACK_IMPORTED_MODULE_6__[\"default\"].Addons.enabled.format({\n method: \"start()\"\n }), {\n message: err.message,\n stack: err.stack\n });\n }\n\n this.emit(\"started\", addon.id);\n _ui_toasts__WEBPACK_IMPORTED_MODULE_7__[\"default\"].show(_strings__WEBPACK_IMPORTED_MODULE_6__[\"default\"].Addons.enabled.format({\n name: addon.name,\n version: addon.version\n }));\n }\n\n stopPlugin(idOrAddon) {\n const addon = typeof idOrAddon == \"string\" ? this.addonList.find(p => p.id == idOrAddon) : idOrAddon;\n if (!addon) return;\n const plugin = addon.plugin;\n\n try {\n plugin.stop();\n } catch (err) {\n this.state[addon.id] = false;\n _ui_toasts__WEBPACK_IMPORTED_MODULE_7__[\"default\"].error(_strings__WEBPACK_IMPORTED_MODULE_6__[\"default\"].Addons.couldNotStop.format({\n name: addon.name,\n version: addon.version\n }));\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].stacktrace(this.name, addon.name + \" could not be stopped.\", err);\n return new _structs_addonerror__WEBPACK_IMPORTED_MODULE_4__[\"default\"](addon.name, addon.filename, _strings__WEBPACK_IMPORTED_MODULE_6__[\"default\"].Addons.enabled.format({\n method: \"stop()\"\n }), {\n message: err.message,\n stack: err.stack\n });\n }\n\n this.emit(\"stopped\", addon.id);\n _ui_toasts__WEBPACK_IMPORTED_MODULE_7__[\"default\"].show(_strings__WEBPACK_IMPORTED_MODULE_6__[\"default\"].Addons.disabled.format({\n name: addon.name,\n version: addon.version\n }));\n }\n\n getPlugin(idOrFile) {\n const addon = this.addonList.find(c => c.id == idOrFile || c.filename == idOrFile);\n if (!addon) return;\n return addon.plugin;\n }\n\n setupFunctions() {\n electronRemote.getCurrentWebContents().on(\"did-navigate-in-page\", this.onSwitch.bind(this));\n this.observer.observe(document, {\n childList: true,\n subtree: true\n });\n }\n\n onSwitch() {\n this.emit(\"page-switch\");\n\n for (let i = 0; i < this.addonList.length; i++) {\n const plugin = this.addonList[i].plugin;\n if (!this.state[this.addonList[i].id]) continue;\n\n if (typeof plugin.onSwitch === \"function\") {\n try {\n plugin.onSwitch();\n } catch (err) {\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].stacktrace(this.name, \"Unable to fire onSwitch for \" + this.addonList[i].name + \".\", err);\n }\n }\n }\n }\n\n onMutation(mutation) {\n for (let i = 0; i < this.addonList.length; i++) {\n const plugin = this.addonList[i].plugin;\n if (!this.state[this.addonList[i].id]) continue;\n\n if (typeof plugin.observer === \"function\") {\n try {\n plugin.observer(mutation);\n } catch (err) {\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].stacktrace(this.name, \"Unable to fire observer for \" + this.addonList[i].name + \".\", err);\n }\n }\n }\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9wbHVnaW5tYW5hZ2VyLmpzP2QxNzMiXSwibmFtZXMiOlsicGF0aCIsInJlcXVpcmUiLCJlbGVjdHJvblJlbW90ZSIsInJlbW90ZSIsIlBsdWdpbk1hbmFnZXIiLCJBZGRvbk1hbmFnZXIiLCJuYW1lIiwibW9kdWxlRXh0ZW5zaW9uIiwiZXh0ZW5zaW9uIiwiYWRkb25Gb2xkZXIiLCJyZXNvbHZlIiwiQ29uZmlnIiwiZGF0YVBhdGgiLCJwcmVmaXgiLCJsYW5ndWFnZSIsImNvbnN0cnVjdG9yIiwib25Td2l0Y2giLCJiaW5kIiwib2JzZXJ2ZXIiLCJNdXRhdGlvbk9ic2VydmVyIiwibXV0YXRpb25zIiwiaSIsIm1sZW4iLCJsZW5ndGgiLCJvbk11dGF0aW9uIiwiaW5pdGlhbGl6ZSIsImVycm9ycyIsInNldHVwRnVuY3Rpb25zIiwiU2V0dGluZ3MiLCJyZWdpc3RlclBhbmVsIiwiU3RyaW5ncyIsIlBhbmVscyIsInBsdWdpbnMiLCJlbGVtZW50IiwiU2V0dGluZ3NSZW5kZXJlciIsImdldEFkZG9uUGFuZWwiLCJhZGRvbkxpc3QiLCJzdGF0ZSIsImZvbGRlciIsIm9uQ2hhbmdlIiwidG9nZ2xlUGx1Z2luIiwicmVsb2FkIiwicmVsb2FkUGx1Z2luIiwicmVmcmVzaExpc3QiLCJ1cGRhdGVQbHVnaW5MaXN0Iiwic2F2ZUFkZG9uIiwiZWRpdEFkZG9uIiwiZGVsZXRlQWRkb24iLCJ1cGRhdGVMaXN0IiwibG9hZEFsbFBsdWdpbnMiLCJsb2FkQWxsQWRkb25zIiwiZW5hYmxlUGx1Z2luIiwiaWRPckFkZG9uIiwiZW5hYmxlQWRkb24iLCJkaXNhYmxlUGx1Z2luIiwiZGlzYWJsZUFkZG9uIiwiaWQiLCJ0b2dnbGVBZGRvbiIsInVubG9hZFBsdWdpbiIsImlkT3JGaWxlT3JBZGRvbiIsInVubG9hZEFkZG9uIiwibG9hZFBsdWdpbiIsImZpbGVuYW1lIiwiZXJyb3IiLCJsb2FkQWRkb24iLCJNb2RhbHMiLCJzaG93QWRkb25FcnJvcnMiLCJ0aGVtZXMiLCJyZWxvYWRBZGRvbiIsImZpbmQiLCJjIiwiaW5pdGlhbGl6ZUFkZG9uIiwiYWRkb24iLCJ0eXBlIiwiQWRkb25FcnJvciIsIm1lc3NhZ2UiLCJzdGFjayIsInRoZVBsdWdpbiIsInBsdWdpbiIsImdldE5hbWUiLCJhdXRob3IiLCJnZXRBdXRob3IiLCJkZXNjcmlwdGlvbiIsImdldERlc2NyaXB0aW9uIiwidmVyc2lvbiIsImdldFZlcnNpb24iLCJsb2FkIiwiZ2V0RmlsZU1vZGlmaWNhdGlvbiIsIm1vZHVsZSIsImZpbGVDb250ZW50IiwibWV0YSIsIl9jb21waWxlIiwiZGlkRXhwb3J0IiwiVXRpbGl0aWVzIiwiaXNFbXB0eSIsImV4cG9ydHMiLCJMb2dnZXIiLCJ3YXJuIiwiSlNPTiIsInN0cmluZ2lmeSIsInN0YXJ0QWRkb24iLCJzdGFydFBsdWdpbiIsInN0b3BBZGRvbiIsInN0b3BQbHVnaW4iLCJnZXRBZGRvbiIsImdldFBsdWdpbiIsInAiLCJzdGFydCIsImVyciIsIlRvYXN0cyIsIkFkZG9ucyIsImNvdWxkTm90U3RhcnQiLCJmb3JtYXQiLCJzdGFja3RyYWNlIiwiZW5hYmxlZCIsIm1ldGhvZCIsImVtaXQiLCJzaG93Iiwic3RvcCIsImNvdWxkTm90U3RvcCIsImRpc2FibGVkIiwiaWRPckZpbGUiLCJnZXRDdXJyZW50V2ViQ29udGVudHMiLCJvbiIsIm9ic2VydmUiLCJkb2N1bWVudCIsImNoaWxkTGlzdCIsInN1YnRyZWUiLCJtdXRhdGlvbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBOztBQUVBLE1BQU1BLElBQUksR0FBR0MsbUJBQU8sQ0FBQyxrQkFBRCxDQUFwQjs7QUFDQSxNQUFNQyxjQUFjLEdBQUdELG1CQUFPLENBQUMsMEJBQUQsQ0FBUCxDQUFvQkUsTUFBM0M7O0FBRWUsbUVBQUksTUFBTUMsYUFBTixTQUE0QkMscURBQTVCLENBQXlDO0FBQ3hELE1BQUlDLElBQUosR0FBVztBQUFDLFdBQU8sZUFBUDtBQUF3Qjs7QUFDcEMsTUFBSUMsZUFBSixHQUFzQjtBQUFDLFdBQU8sS0FBUDtBQUFjOztBQUNyQyxNQUFJQyxTQUFKLEdBQWdCO0FBQUMsV0FBTyxZQUFQO0FBQXFCOztBQUN0QyxNQUFJQyxXQUFKLEdBQWtCO0FBQUMsV0FBT1QsSUFBSSxDQUFDVSxPQUFMLENBQWFDLDJDQUFNLENBQUNDLFFBQXBCLEVBQThCLFNBQTlCLENBQVA7QUFBaUQ7O0FBQ3BFLE1BQUlDLE1BQUosR0FBYTtBQUFDLFdBQU8sUUFBUDtBQUFpQjs7QUFDL0IsTUFBSUMsUUFBSixHQUFlO0FBQUMsV0FBTyxZQUFQO0FBQXFCOztBQUVyQ0MsYUFBVyxHQUFHO0FBQ1Y7QUFDQSxTQUFLQyxRQUFMLEdBQWdCLEtBQUtBLFFBQUwsQ0FBY0MsSUFBZCxDQUFtQixJQUFuQixDQUFoQjtBQUNBLFNBQUtDLFFBQUwsR0FBZ0IsSUFBSUMsZ0JBQUosQ0FBc0JDLFNBQUQsSUFBZTtBQUNoRCxXQUFLLElBQUlDLENBQUMsR0FBRyxDQUFSLEVBQVdDLElBQUksR0FBR0YsU0FBUyxDQUFDRyxNQUFqQyxFQUF5Q0YsQ0FBQyxHQUFHQyxJQUE3QyxFQUFtREQsQ0FBQyxFQUFwRCxFQUF3RDtBQUNwRCxhQUFLRyxVQUFMLENBQWdCSixTQUFTLENBQUNDLENBQUQsQ0FBekI7QUFDSDtBQUNKLEtBSmUsQ0FBaEI7QUFLSDs7QUFFREksWUFBVSxHQUFHO0FBQ1QsVUFBTUMsTUFBTSxHQUFHLE1BQU1ELFVBQU4sRUFBZjtBQUNBLFNBQUtFLGNBQUw7QUFDQUMsNERBQVEsQ0FBQ0MsYUFBVCxDQUF1QixTQUF2QixFQUFrQ0MsZ0RBQU8sQ0FBQ0MsTUFBUixDQUFlQyxPQUFqRCxFQUEwRDtBQUFDQyxhQUFPLEVBQUUsTUFBTUMsb0RBQWdCLENBQUNDLGFBQWpCLENBQStCTCxnREFBTyxDQUFDQyxNQUFSLENBQWVDLE9BQTlDLEVBQXVELEtBQUtJLFNBQTVELEVBQXVFLEtBQUtDLEtBQTVFLEVBQW1GO0FBQ3pKQyxjQUFNLEVBQUUsS0FBSzdCLFdBRDRJO0FBRXpKOEIsZ0JBQVEsRUFBRSxLQUFLQyxZQUFMLENBQWtCdkIsSUFBbEIsQ0FBdUIsSUFBdkIsQ0FGK0k7QUFHekp3QixjQUFNLEVBQUUsS0FBS0MsWUFBTCxDQUFrQnpCLElBQWxCLENBQXVCLElBQXZCLENBSGlKO0FBSXpKMEIsbUJBQVcsRUFBRSxLQUFLQyxnQkFBTCxDQUFzQjNCLElBQXRCLENBQTJCLElBQTNCLENBSjRJO0FBS3pKNEIsaUJBQVMsRUFBRSxLQUFLQSxTQUFMLENBQWU1QixJQUFmLENBQW9CLElBQXBCLENBTDhJO0FBTXpKNkIsaUJBQVMsRUFBRSxLQUFLQSxTQUFMLENBQWU3QixJQUFmLENBQW9CLElBQXBCLENBTjhJO0FBT3pKOEIsbUJBQVcsRUFBRSxLQUFLQSxXQUFMLENBQWlCOUIsSUFBakIsQ0FBc0IsSUFBdEIsQ0FQNEk7QUFRekpKLGNBQU0sRUFBRSxLQUFLQTtBQVI0SSxPQUFuRjtBQUFoQixLQUExRDtBQVVBLFdBQU9hLE1BQVA7QUFDSDtBQUVEOzs7QUFDQWtCLGtCQUFnQixHQUFHO0FBQUMsV0FBTyxLQUFLSSxVQUFMLEVBQVA7QUFBMEI7O0FBQzlDQyxnQkFBYyxHQUFHO0FBQUMsV0FBTyxLQUFLQyxhQUFMLEVBQVA7QUFBNkI7O0FBRS9DQyxjQUFZLENBQUNDLFNBQUQsRUFBWTtBQUFDLFdBQU8sS0FBS0MsV0FBTCxDQUFpQkQsU0FBakIsQ0FBUDtBQUFvQzs7QUFDN0RFLGVBQWEsQ0FBQ0YsU0FBRCxFQUFZO0FBQUMsV0FBTyxLQUFLRyxZQUFMLENBQWtCSCxTQUFsQixDQUFQO0FBQXFDOztBQUMvRFosY0FBWSxDQUFDZ0IsRUFBRCxFQUFLO0FBQUMsV0FBTyxLQUFLQyxXQUFMLENBQWlCRCxFQUFqQixDQUFQO0FBQTZCOztBQUUvQ0UsY0FBWSxDQUFDQyxlQUFELEVBQWtCO0FBQUMsV0FBTyxLQUFLQyxXQUFMLENBQWlCRCxlQUFqQixDQUFQO0FBQTBDOztBQUV6RUUsWUFBVSxDQUFDQyxRQUFELEVBQVc7QUFDakIsVUFBTUMsS0FBSyxHQUFHLEtBQUtDLFNBQUwsQ0FBZUYsUUFBZixDQUFkO0FBQ0EsUUFBSUMsS0FBSixFQUFXRSxrREFBTSxDQUFDQyxlQUFQLENBQXVCO0FBQUNDLFlBQU0sRUFBRSxDQUFDSixLQUFEO0FBQVQsS0FBdkI7QUFDZDs7QUFFRHJCLGNBQVksQ0FBQ2lCLGVBQUQsRUFBa0I7QUFDMUIsVUFBTUksS0FBSyxHQUFHLEtBQUtLLFdBQUwsQ0FBaUJULGVBQWpCLENBQWQ7QUFDQSxRQUFJSSxLQUFKLEVBQVdFLGtEQUFNLENBQUNDLGVBQVAsQ0FBdUI7QUFBQ2xDLGFBQU8sRUFBRSxDQUFDK0IsS0FBRDtBQUFWLEtBQXZCO0FBQ1gsV0FBTyxPQUFPSixlQUFQLElBQTJCLFFBQTNCLEdBQXNDLEtBQUt2QixTQUFMLENBQWVpQyxJQUFmLENBQW9CQyxDQUFDLElBQUlBLENBQUMsQ0FBQ2QsRUFBRixJQUFRRyxlQUFSLElBQTJCVyxDQUFDLENBQUNSLFFBQUYsSUFBY0gsZUFBbEUsQ0FBdEMsR0FBMkhBLGVBQWxJO0FBQ0g7QUFFRDs7O0FBQ0FZLGlCQUFlLENBQUNDLEtBQUQsRUFBUTtBQUNuQixRQUFJLENBQUNBLEtBQUssQ0FBQ0MsSUFBWCxFQUFpQixPQUFPLElBQUlDLDJEQUFKLENBQWVGLEtBQUssQ0FBQ2xFLElBQXJCLEVBQTJCa0UsS0FBSyxDQUFDVixRQUFqQyxFQUEyQyx1QkFBM0MsRUFBb0U7QUFBQ2EsYUFBTyxFQUFFLDRDQUFWO0FBQXdEQyxXQUFLLEVBQUU7QUFBL0QsS0FBcEUsQ0FBUDs7QUFDakIsUUFBSTtBQUNBLFlBQU1DLFNBQVMsR0FBRyxJQUFJTCxLQUFLLENBQUNDLElBQVYsRUFBbEI7QUFDQUQsV0FBSyxDQUFDTSxNQUFOLEdBQWVELFNBQWY7QUFDQUwsV0FBSyxDQUFDbEUsSUFBTixHQUFhdUUsU0FBUyxDQUFDRSxPQUFWLE1BQXVCUCxLQUFLLENBQUNsRSxJQUExQztBQUNBa0UsV0FBSyxDQUFDUSxNQUFOLEdBQWVILFNBQVMsQ0FBQ0ksU0FBVixNQUF5QlQsS0FBSyxDQUFDUSxNQUEvQixJQUF5QyxXQUF4RDtBQUNBUixXQUFLLENBQUNVLFdBQU4sR0FBb0JMLFNBQVMsQ0FBQ00sY0FBVixNQUE4QlgsS0FBSyxDQUFDVSxXQUFwQyxJQUFtRCxnQkFBdkU7QUFDQVYsV0FBSyxDQUFDWSxPQUFOLEdBQWdCUCxTQUFTLENBQUNRLFVBQVYsTUFBMEJiLEtBQUssQ0FBQ1ksT0FBaEMsSUFBMkMsWUFBM0Q7O0FBQ0EsVUFBSTtBQUNBLFlBQUksT0FBT1osS0FBSyxDQUFDTSxNQUFOLENBQWFRLElBQXBCLElBQTZCLFVBQWpDLEVBQTZDZCxLQUFLLENBQUNNLE1BQU4sQ0FBYVEsSUFBYjtBQUNoRCxPQUZELENBR0EsT0FBT3ZCLEtBQVAsRUFBYztBQUNWLGFBQUsxQixLQUFMLENBQVdtQyxLQUFLLENBQUNoQixFQUFqQixJQUF1QixLQUF2QjtBQUNBLGVBQU8sSUFBSWtCLDJEQUFKLENBQWVGLEtBQUssQ0FBQ2xFLElBQXJCLEVBQTJCa0UsS0FBSyxDQUFDVixRQUFqQyxFQUEyQyw0QkFBM0MsRUFBeUU7QUFBQ2EsaUJBQU8sRUFBRVosS0FBSyxDQUFDWSxPQUFoQjtBQUF5QkMsZUFBSyxFQUFFYixLQUFLLENBQUNhO0FBQXRDLFNBQXpFLENBQVA7QUFDSDtBQUNKLEtBZEQsQ0FlQSxPQUFPYixLQUFQLEVBQWM7QUFBQyxhQUFPLElBQUlXLDJEQUFKLENBQWVGLEtBQUssQ0FBQ2xFLElBQXJCLEVBQTJCa0UsS0FBSyxDQUFDVixRQUFqQyxFQUEyQywyQkFBM0MsRUFBd0U7QUFBQ2EsZUFBTyxFQUFFWixLQUFLLENBQUNZLE9BQWhCO0FBQXlCQyxhQUFLLEVBQUViLEtBQUssQ0FBQ2E7QUFBdEMsT0FBeEUsQ0FBUDtBQUE4SDtBQUNoSjs7QUFFRFcscUJBQW1CLENBQUNDLE1BQUQsRUFBU0MsV0FBVCxFQUFzQkMsSUFBdEIsRUFBNEI7QUFDM0NGLFVBQU0sQ0FBQ0csUUFBUCxDQUFnQkYsV0FBaEIsRUFBNkJELE1BQU0sQ0FBQzFCLFFBQXBDOztBQUNBLFVBQU04QixTQUFTLEdBQUcsQ0FBQ0Msa0RBQVMsQ0FBQ0MsT0FBVixDQUFrQk4sTUFBTSxDQUFDTyxPQUF6QixDQUFuQjs7QUFDQSxRQUFJSCxTQUFKLEVBQWU7QUFDWEYsVUFBSSxDQUFDakIsSUFBTCxHQUFZZSxNQUFNLENBQUNPLE9BQW5CO0FBQ0FQLFlBQU0sQ0FBQ08sT0FBUCxHQUFpQkwsSUFBakI7QUFDQSxhQUFPLEVBQVA7QUFDSDs7QUFDRE0sbURBQU0sQ0FBQ0MsSUFBUCxDQUFZLEtBQUszRixJQUFqQixFQUF3QixHQUFFb0YsSUFBSSxDQUFDcEYsSUFBSyx5Q0FBcEM7QUFDQW1GLGVBQVcsSUFBSyxzQkFBcUJTLElBQUksQ0FBQ0MsU0FBTCxDQUFlVCxJQUFmLENBQXFCLDRCQUEyQkEsSUFBSSxDQUFDSyxPQUFMLElBQWdCTCxJQUFJLENBQUNwRixJQUFLLEdBQS9HO0FBQ0EsV0FBT21GLFdBQVA7QUFDSDs7QUFFRFcsWUFBVSxDQUFDNUMsRUFBRCxFQUFLO0FBQUMsV0FBTyxLQUFLNkMsV0FBTCxDQUFpQjdDLEVBQWpCLENBQVA7QUFBNkI7O0FBQzdDOEMsV0FBUyxDQUFDOUMsRUFBRCxFQUFLO0FBQUMsV0FBTyxLQUFLK0MsVUFBTCxDQUFnQi9DLEVBQWhCLENBQVA7QUFBNEI7O0FBQzNDZ0QsVUFBUSxDQUFDaEQsRUFBRCxFQUFLO0FBQUMsV0FBTyxLQUFLaUQsU0FBTCxDQUFlakQsRUFBZixDQUFQO0FBQTJCOztBQUV6QzZDLGFBQVcsQ0FBQ2pELFNBQUQsRUFBWTtBQUNuQixVQUFNb0IsS0FBSyxHQUFHLE9BQU9wQixTQUFQLElBQXFCLFFBQXJCLEdBQWdDLEtBQUtoQixTQUFMLENBQWVpQyxJQUFmLENBQW9CcUMsQ0FBQyxJQUFJQSxDQUFDLENBQUNsRCxFQUFGLElBQVFKLFNBQWpDLENBQWhDLEdBQThFQSxTQUE1RjtBQUNBLFFBQUksQ0FBQ29CLEtBQUwsRUFBWTtBQUNaLFVBQU1NLE1BQU0sR0FBR04sS0FBSyxDQUFDTSxNQUFyQjs7QUFDQSxRQUFJO0FBQ0FBLFlBQU0sQ0FBQzZCLEtBQVA7QUFDSCxLQUZELENBR0EsT0FBT0MsR0FBUCxFQUFZO0FBQ1IsV0FBS3ZFLEtBQUwsQ0FBV21DLEtBQUssQ0FBQ2hCLEVBQWpCLElBQXVCLEtBQXZCO0FBQ0FxRCx3REFBTSxDQUFDOUMsS0FBUCxDQUFhakMsZ0RBQU8sQ0FBQ2dGLE1BQVIsQ0FBZUMsYUFBZixDQUE2QkMsTUFBN0IsQ0FBb0M7QUFBQzFHLFlBQUksRUFBRWtFLEtBQUssQ0FBQ2xFLElBQWI7QUFBbUI4RSxlQUFPLEVBQUVaLEtBQUssQ0FBQ1k7QUFBbEMsT0FBcEMsQ0FBYjtBQUNBWSxxREFBTSxDQUFDaUIsVUFBUCxDQUFrQixLQUFLM0csSUFBdkIsRUFBNkJrRSxLQUFLLENBQUNsRSxJQUFOLEdBQWEsd0JBQTFDLEVBQW9Fc0csR0FBcEU7QUFDQSxhQUFPLElBQUlsQywyREFBSixDQUFlRixLQUFLLENBQUNsRSxJQUFyQixFQUEyQmtFLEtBQUssQ0FBQ1YsUUFBakMsRUFBMkNoQyxnREFBTyxDQUFDZ0YsTUFBUixDQUFlSSxPQUFmLENBQXVCRixNQUF2QixDQUE4QjtBQUFDRyxjQUFNLEVBQUU7QUFBVCxPQUE5QixDQUEzQyxFQUErRjtBQUFDeEMsZUFBTyxFQUFFaUMsR0FBRyxDQUFDakMsT0FBZDtBQUF1QkMsYUFBSyxFQUFFZ0MsR0FBRyxDQUFDaEM7QUFBbEMsT0FBL0YsQ0FBUDtBQUNIOztBQUNELFNBQUt3QyxJQUFMLENBQVUsU0FBVixFQUFxQjVDLEtBQUssQ0FBQ2hCLEVBQTNCO0FBQ0FxRCxzREFBTSxDQUFDUSxJQUFQLENBQVl2RixnREFBTyxDQUFDZ0YsTUFBUixDQUFlSSxPQUFmLENBQXVCRixNQUF2QixDQUE4QjtBQUFDMUcsVUFBSSxFQUFFa0UsS0FBSyxDQUFDbEUsSUFBYjtBQUFtQjhFLGFBQU8sRUFBRVosS0FBSyxDQUFDWTtBQUFsQyxLQUE5QixDQUFaO0FBQ0g7O0FBRURtQixZQUFVLENBQUNuRCxTQUFELEVBQVk7QUFDbEIsVUFBTW9CLEtBQUssR0FBRyxPQUFPcEIsU0FBUCxJQUFxQixRQUFyQixHQUFnQyxLQUFLaEIsU0FBTCxDQUFlaUMsSUFBZixDQUFvQnFDLENBQUMsSUFBSUEsQ0FBQyxDQUFDbEQsRUFBRixJQUFRSixTQUFqQyxDQUFoQyxHQUE4RUEsU0FBNUY7QUFDQSxRQUFJLENBQUNvQixLQUFMLEVBQVk7QUFDWixVQUFNTSxNQUFNLEdBQUdOLEtBQUssQ0FBQ00sTUFBckI7O0FBQ0EsUUFBSTtBQUNBQSxZQUFNLENBQUN3QyxJQUFQO0FBQ0gsS0FGRCxDQUdBLE9BQU9WLEdBQVAsRUFBWTtBQUNSLFdBQUt2RSxLQUFMLENBQVdtQyxLQUFLLENBQUNoQixFQUFqQixJQUF1QixLQUF2QjtBQUNBcUQsd0RBQU0sQ0FBQzlDLEtBQVAsQ0FBYWpDLGdEQUFPLENBQUNnRixNQUFSLENBQWVTLFlBQWYsQ0FBNEJQLE1BQTVCLENBQW1DO0FBQUMxRyxZQUFJLEVBQUVrRSxLQUFLLENBQUNsRSxJQUFiO0FBQW1COEUsZUFBTyxFQUFFWixLQUFLLENBQUNZO0FBQWxDLE9BQW5DLENBQWI7QUFDQVkscURBQU0sQ0FBQ2lCLFVBQVAsQ0FBa0IsS0FBSzNHLElBQXZCLEVBQTZCa0UsS0FBSyxDQUFDbEUsSUFBTixHQUFhLHdCQUExQyxFQUFvRXNHLEdBQXBFO0FBQ0EsYUFBTyxJQUFJbEMsMkRBQUosQ0FBZUYsS0FBSyxDQUFDbEUsSUFBckIsRUFBMkJrRSxLQUFLLENBQUNWLFFBQWpDLEVBQTJDaEMsZ0RBQU8sQ0FBQ2dGLE1BQVIsQ0FBZUksT0FBZixDQUF1QkYsTUFBdkIsQ0FBOEI7QUFBQ0csY0FBTSxFQUFFO0FBQVQsT0FBOUIsQ0FBM0MsRUFBOEY7QUFBQ3hDLGVBQU8sRUFBRWlDLEdBQUcsQ0FBQ2pDLE9BQWQ7QUFBdUJDLGFBQUssRUFBRWdDLEdBQUcsQ0FBQ2hDO0FBQWxDLE9BQTlGLENBQVA7QUFDSDs7QUFDRCxTQUFLd0MsSUFBTCxDQUFVLFNBQVYsRUFBcUI1QyxLQUFLLENBQUNoQixFQUEzQjtBQUNBcUQsc0RBQU0sQ0FBQ1EsSUFBUCxDQUFZdkYsZ0RBQU8sQ0FBQ2dGLE1BQVIsQ0FBZVUsUUFBZixDQUF3QlIsTUFBeEIsQ0FBK0I7QUFBQzFHLFVBQUksRUFBRWtFLEtBQUssQ0FBQ2xFLElBQWI7QUFBbUI4RSxhQUFPLEVBQUVaLEtBQUssQ0FBQ1k7QUFBbEMsS0FBL0IsQ0FBWjtBQUNIOztBQUVEcUIsV0FBUyxDQUFDZ0IsUUFBRCxFQUFXO0FBQ2hCLFVBQU1qRCxLQUFLLEdBQUcsS0FBS3BDLFNBQUwsQ0FBZWlDLElBQWYsQ0FBb0JDLENBQUMsSUFBSUEsQ0FBQyxDQUFDZCxFQUFGLElBQVFpRSxRQUFSLElBQW9CbkQsQ0FBQyxDQUFDUixRQUFGLElBQWMyRCxRQUEzRCxDQUFkO0FBQ0EsUUFBSSxDQUFDakQsS0FBTCxFQUFZO0FBQ1osV0FBT0EsS0FBSyxDQUFDTSxNQUFiO0FBQ0g7O0FBRURuRCxnQkFBYyxHQUFHO0FBQ2J6QixrQkFBYyxDQUFDd0gscUJBQWYsR0FBdUNDLEVBQXZDLENBQTBDLHNCQUExQyxFQUFrRSxLQUFLM0csUUFBTCxDQUFjQyxJQUFkLENBQW1CLElBQW5CLENBQWxFO0FBQ0EsU0FBS0MsUUFBTCxDQUFjMEcsT0FBZCxDQUFzQkMsUUFBdEIsRUFBZ0M7QUFDNUJDLGVBQVMsRUFBRSxJQURpQjtBQUU1QkMsYUFBTyxFQUFFO0FBRm1CLEtBQWhDO0FBSUg7O0FBRUQvRyxVQUFRLEdBQUc7QUFDUCxTQUFLb0csSUFBTCxDQUFVLGFBQVY7O0FBQ0EsU0FBSyxJQUFJL0YsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBRyxLQUFLZSxTQUFMLENBQWViLE1BQW5DLEVBQTJDRixDQUFDLEVBQTVDLEVBQWdEO0FBQzVDLFlBQU15RCxNQUFNLEdBQUcsS0FBSzFDLFNBQUwsQ0FBZWYsQ0FBZixFQUFrQnlELE1BQWpDO0FBQ0EsVUFBSSxDQUFDLEtBQUt6QyxLQUFMLENBQVcsS0FBS0QsU0FBTCxDQUFlZixDQUFmLEVBQWtCbUMsRUFBN0IsQ0FBTCxFQUF1Qzs7QUFDdkMsVUFBSSxPQUFPc0IsTUFBTSxDQUFDOUQsUUFBZCxLQUE0QixVQUFoQyxFQUE0QztBQUN4QyxZQUFJO0FBQUU4RCxnQkFBTSxDQUFDOUQsUUFBUDtBQUFvQixTQUExQixDQUNBLE9BQU80RixHQUFQLEVBQVk7QUFBRVoseURBQU0sQ0FBQ2lCLFVBQVAsQ0FBa0IsS0FBSzNHLElBQXZCLEVBQTZCLGlDQUFpQyxLQUFLOEIsU0FBTCxDQUFlZixDQUFmLEVBQWtCZixJQUFuRCxHQUEwRCxHQUF2RixFQUE0RnNHLEdBQTVGO0FBQW1HO0FBQ3BIO0FBQ0o7QUFDSjs7QUFFRHBGLFlBQVUsQ0FBQ3dHLFFBQUQsRUFBVztBQUNqQixTQUFLLElBQUkzRyxDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHLEtBQUtlLFNBQUwsQ0FBZWIsTUFBbkMsRUFBMkNGLENBQUMsRUFBNUMsRUFBZ0Q7QUFDNUMsWUFBTXlELE1BQU0sR0FBRyxLQUFLMUMsU0FBTCxDQUFlZixDQUFmLEVBQWtCeUQsTUFBakM7QUFDQSxVQUFJLENBQUMsS0FBS3pDLEtBQUwsQ0FBVyxLQUFLRCxTQUFMLENBQWVmLENBQWYsRUFBa0JtQyxFQUE3QixDQUFMLEVBQXVDOztBQUN2QyxVQUFJLE9BQU9zQixNQUFNLENBQUM1RCxRQUFkLEtBQTJCLFVBQS9CLEVBQTJDO0FBQ3ZDLFlBQUk7QUFBRTRELGdCQUFNLENBQUM1RCxRQUFQLENBQWdCOEcsUUFBaEI7QUFBNEIsU0FBbEMsQ0FDQSxPQUFPcEIsR0FBUCxFQUFZO0FBQUVaLHlEQUFNLENBQUNpQixVQUFQLENBQWtCLEtBQUszRyxJQUF2QixFQUE2QixpQ0FBaUMsS0FBSzhCLFNBQUwsQ0FBZWYsQ0FBZixFQUFrQmYsSUFBbkQsR0FBMEQsR0FBdkYsRUFBNEZzRyxHQUE1RjtBQUFtRztBQUNwSDtBQUNKO0FBQ0o7O0FBbEt1RCxDQUE3QyxFQUFmIiwiZmlsZSI6Ii4vc3JjL21vZHVsZXMvcGx1Z2lubWFuYWdlci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29uZmlnfSBmcm9tIFwiZGF0YVwiO1xyXG5pbXBvcnQgTG9nZ2VyIGZyb20gXCIuL2xvZ2dlclwiO1xyXG5pbXBvcnQgQWRkb25NYW5hZ2VyIGZyb20gXCIuL2FkZG9ubWFuYWdlclwiO1xyXG5pbXBvcnQgVXRpbGl0aWVzIGZyb20gXCIuL3V0aWxpdGllc1wiO1xyXG5pbXBvcnQgQWRkb25FcnJvciBmcm9tIFwiLi4vc3RydWN0cy9hZGRvbmVycm9yXCI7XHJcbmltcG9ydCBTZXR0aW5ncyBmcm9tIFwiLi9zZXR0aW5nc21hbmFnZXJcIjtcclxuaW1wb3J0IFN0cmluZ3MgZnJvbSBcIi4vc3RyaW5nc1wiO1xyXG5cclxuaW1wb3J0IFRvYXN0cyBmcm9tIFwiLi4vdWkvdG9hc3RzXCI7XHJcbmltcG9ydCBNb2RhbHMgZnJvbSBcIi4uL3VpL21vZGFsc1wiO1xyXG5pbXBvcnQgU2V0dGluZ3NSZW5kZXJlciBmcm9tIFwiLi4vdWkvc2V0dGluZ3NcIjtcclxuXHJcbmNvbnN0IHBhdGggPSByZXF1aXJlKFwicGF0aFwiKTtcclxuY29uc3QgZWxlY3Ryb25SZW1vdGUgPSByZXF1aXJlKFwiZWxlY3Ryb25cIikucmVtb3RlO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgbmV3IGNsYXNzIFBsdWdpbk1hbmFnZXIgZXh0ZW5kcyBBZGRvbk1hbmFnZXIge1xyXG4gICAgZ2V0IG5hbWUoKSB7cmV0dXJuIFwiUGx1Z2luTWFuYWdlclwiO31cclxuICAgIGdldCBtb2R1bGVFeHRlbnNpb24oKSB7cmV0dXJuIFwiLmpzXCI7fVxyXG4gICAgZ2V0IGV4dGVuc2lvbigpIHtyZXR1cm4gXCIucGx1Z2luLmpzXCI7fVxyXG4gICAgZ2V0IGFkZG9uRm9sZGVyKCkge3JldHVybiBwYXRoLnJlc29sdmUoQ29uZmlnLmRhdGFQYXRoLCBcInBsdWdpbnNcIik7fVxyXG4gICAgZ2V0IHByZWZpeCgpIHtyZXR1cm4gXCJwbHVnaW5cIjt9XHJcbiAgICBnZXQgbGFuZ3VhZ2UoKSB7cmV0dXJuIFwiamF2YXNjcmlwdFwiO31cclxuXHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIHRoaXMub25Td2l0Y2ggPSB0aGlzLm9uU3dpdGNoLmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy5vYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKChtdXRhdGlvbnMpID0+IHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDAsIG1sZW4gPSBtdXRhdGlvbnMubGVuZ3RoOyBpIDwgbWxlbjsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9uTXV0YXRpb24obXV0YXRpb25zW2ldKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGluaXRpYWxpemUoKSB7XHJcbiAgICAgICAgY29uc3QgZXJyb3JzID0gc3VwZXIuaW5pdGlhbGl6ZSgpO1xyXG4gICAgICAgIHRoaXMuc2V0dXBGdW5jdGlvbnMoKTtcclxuICAgICAgICBTZXR0aW5ncy5yZWdpc3RlclBhbmVsKFwicGx1Z2luc1wiLCBTdHJpbmdzLlBhbmVscy5wbHVnaW5zLCB7ZWxlbWVudDogKCkgPT4gU2V0dGluZ3NSZW5kZXJlci5nZXRBZGRvblBhbmVsKFN0cmluZ3MuUGFuZWxzLnBsdWdpbnMsIHRoaXMuYWRkb25MaXN0LCB0aGlzLnN0YXRlLCB7XHJcbiAgICAgICAgICAgIGZvbGRlcjogdGhpcy5hZGRvbkZvbGRlcixcclxuICAgICAgICAgICAgb25DaGFuZ2U6IHRoaXMudG9nZ2xlUGx1Z2luLmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgIHJlbG9hZDogdGhpcy5yZWxvYWRQbHVnaW4uYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgcmVmcmVzaExpc3Q6IHRoaXMudXBkYXRlUGx1Z2luTGlzdC5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgICBzYXZlQWRkb246IHRoaXMuc2F2ZUFkZG9uLmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgIGVkaXRBZGRvbjogdGhpcy5lZGl0QWRkb24uYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgZGVsZXRlQWRkb246IHRoaXMuZGVsZXRlQWRkb24uYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgcHJlZml4OiB0aGlzLnByZWZpeFxyXG4gICAgICAgIH0pfSk7XHJcbiAgICAgICAgcmV0dXJuIGVycm9ycztcclxuICAgIH1cclxuXHJcbiAgICAvKiBBbGlhc2VzICovXHJcbiAgICB1cGRhdGVQbHVnaW5MaXN0KCkge3JldHVybiB0aGlzLnVwZGF0ZUxpc3QoKTt9XHJcbiAgICBsb2FkQWxsUGx1Z2lucygpIHtyZXR1cm4gdGhpcy5sb2FkQWxsQWRkb25zKCk7fVxyXG5cclxuICAgIGVuYWJsZVBsdWdpbihpZE9yQWRkb24pIHtyZXR1cm4gdGhpcy5lbmFibGVBZGRvbihpZE9yQWRkb24pO31cclxuICAgIGRpc2FibGVQbHVnaW4oaWRPckFkZG9uKSB7cmV0dXJuIHRoaXMuZGlzYWJsZUFkZG9uKGlkT3JBZGRvbik7fVxyXG4gICAgdG9nZ2xlUGx1Z2luKGlkKSB7cmV0dXJuIHRoaXMudG9nZ2xlQWRkb24oaWQpO31cclxuXHJcbiAgICB1bmxvYWRQbHVnaW4oaWRPckZpbGVPckFkZG9uKSB7cmV0dXJuIHRoaXMudW5sb2FkQWRkb24oaWRPckZpbGVPckFkZG9uKTt9XHJcblxyXG4gICAgbG9hZFBsdWdpbihmaWxlbmFtZSkge1xyXG4gICAgICAgIGNvbnN0IGVycm9yID0gdGhpcy5sb2FkQWRkb24oZmlsZW5hbWUpO1xyXG4gICAgICAgIGlmIChlcnJvcikgTW9kYWxzLnNob3dBZGRvbkVycm9ycyh7dGhlbWVzOiBbZXJyb3JdfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVsb2FkUGx1Z2luKGlkT3JGaWxlT3JBZGRvbikge1xyXG4gICAgICAgIGNvbnN0IGVycm9yID0gdGhpcy5yZWxvYWRBZGRvbihpZE9yRmlsZU9yQWRkb24pO1xyXG4gICAgICAgIGlmIChlcnJvcikgTW9kYWxzLnNob3dBZGRvbkVycm9ycyh7cGx1Z2luczogW2Vycm9yXX0pO1xyXG4gICAgICAgIHJldHVybiB0eXBlb2YoaWRPckZpbGVPckFkZG9uKSA9PSBcInN0cmluZ1wiID8gdGhpcy5hZGRvbkxpc3QuZmluZChjID0+IGMuaWQgPT0gaWRPckZpbGVPckFkZG9uIHx8IGMuZmlsZW5hbWUgPT0gaWRPckZpbGVPckFkZG9uKSA6IGlkT3JGaWxlT3JBZGRvbjtcclxuICAgIH1cclxuXHJcbiAgICAvKiBPdmVycmlkZXMgKi9cclxuICAgIGluaXRpYWxpemVBZGRvbihhZGRvbikge1xyXG4gICAgICAgIGlmICghYWRkb24udHlwZSkgcmV0dXJuIG5ldyBBZGRvbkVycm9yKGFkZG9uLm5hbWUsIGFkZG9uLmZpbGVuYW1lLCBcIlBsdWdpbiBoYWQgbm8gZXhwb3J0c1wiLCB7bWVzc2FnZTogXCJQbHVnaW4gaGFkIG5vIGV4cG9ydHMgb3Igbm8gbmFtZSBwcm9wZXJ0eS5cIiwgc3RhY2s6IFwiXCJ9KTtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBjb25zdCB0aGVQbHVnaW4gPSBuZXcgYWRkb24udHlwZSgpO1xyXG4gICAgICAgICAgICBhZGRvbi5wbHVnaW4gPSB0aGVQbHVnaW47XHJcbiAgICAgICAgICAgIGFkZG9uLm5hbWUgPSB0aGVQbHVnaW4uZ2V0TmFtZSgpIHx8IGFkZG9uLm5hbWU7XHJcbiAgICAgICAgICAgIGFkZG9uLmF1dGhvciA9IHRoZVBsdWdpbi5nZXRBdXRob3IoKSB8fCBhZGRvbi5hdXRob3IgfHwgXCJObyBhdXRob3JcIjtcclxuICAgICAgICAgICAgYWRkb24uZGVzY3JpcHRpb24gPSB0aGVQbHVnaW4uZ2V0RGVzY3JpcHRpb24oKSB8fCBhZGRvbi5kZXNjcmlwdGlvbiB8fCBcIk5vIGRlc2NyaXB0aW9uXCI7XHJcbiAgICAgICAgICAgIGFkZG9uLnZlcnNpb24gPSB0aGVQbHVnaW4uZ2V0VmVyc2lvbigpIHx8IGFkZG9uLnZlcnNpb24gfHwgXCJObyB2ZXJzaW9uXCI7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mKGFkZG9uLnBsdWdpbi5sb2FkKSA9PSBcImZ1bmN0aW9uXCIpIGFkZG9uLnBsdWdpbi5sb2FkKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlW2FkZG9uLmlkXSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBBZGRvbkVycm9yKGFkZG9uLm5hbWUsIGFkZG9uLmZpbGVuYW1lLCBcImxvYWQoKSBjb3VsZCBub3QgYmUgZmlyZWQuXCIsIHttZXNzYWdlOiBlcnJvci5tZXNzYWdlLCBzdGFjazogZXJyb3Iuc3RhY2t9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBjYXRjaCAoZXJyb3IpIHtyZXR1cm4gbmV3IEFkZG9uRXJyb3IoYWRkb24ubmFtZSwgYWRkb24uZmlsZW5hbWUsIFwiQ291bGQgbm90IGJlIGNvbnN0cnVjdGVkLlwiLCB7bWVzc2FnZTogZXJyb3IubWVzc2FnZSwgc3RhY2s6IGVycm9yLnN0YWNrfSk7fVxyXG4gICAgfVxyXG5cclxuICAgIGdldEZpbGVNb2RpZmljYXRpb24obW9kdWxlLCBmaWxlQ29udGVudCwgbWV0YSkge1xyXG4gICAgICAgIG1vZHVsZS5fY29tcGlsZShmaWxlQ29udGVudCwgbW9kdWxlLmZpbGVuYW1lKTtcclxuICAgICAgICBjb25zdCBkaWRFeHBvcnQgPSAhVXRpbGl0aWVzLmlzRW1wdHkobW9kdWxlLmV4cG9ydHMpO1xyXG4gICAgICAgIGlmIChkaWRFeHBvcnQpIHtcclxuICAgICAgICAgICAgbWV0YS50eXBlID0gbW9kdWxlLmV4cG9ydHM7XHJcbiAgICAgICAgICAgIG1vZHVsZS5leHBvcnRzID0gbWV0YTtcclxuICAgICAgICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIExvZ2dlci53YXJuKHRoaXMubmFtZSwgYCR7bWV0YS5uYW1lfSwgcGxlYXNlIHN0YXJ0IGFzc2lnbmluZyBtb2R1bGUuZXhwb3J0c2ApO1xyXG4gICAgICAgIGZpbGVDb250ZW50ICs9IGBcXG5tb2R1bGUuZXhwb3J0cyA9ICR7SlNPTi5zdHJpbmdpZnkobWV0YSl9O1xcbm1vZHVsZS5leHBvcnRzLnR5cGUgPSAke21ldGEuZXhwb3J0cyB8fCBtZXRhLm5hbWV9O2A7XHJcbiAgICAgICAgcmV0dXJuIGZpbGVDb250ZW50O1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXJ0QWRkb24oaWQpIHtyZXR1cm4gdGhpcy5zdGFydFBsdWdpbihpZCk7fVxyXG4gICAgc3RvcEFkZG9uKGlkKSB7cmV0dXJuIHRoaXMuc3RvcFBsdWdpbihpZCk7fVxyXG4gICAgZ2V0QWRkb24oaWQpIHtyZXR1cm4gdGhpcy5nZXRQbHVnaW4oaWQpO31cclxuXHJcbiAgICBzdGFydFBsdWdpbihpZE9yQWRkb24pIHtcclxuICAgICAgICBjb25zdCBhZGRvbiA9IHR5cGVvZihpZE9yQWRkb24pID09IFwic3RyaW5nXCIgPyB0aGlzLmFkZG9uTGlzdC5maW5kKHAgPT4gcC5pZCA9PSBpZE9yQWRkb24pIDogaWRPckFkZG9uO1xyXG4gICAgICAgIGlmICghYWRkb24pIHJldHVybjtcclxuICAgICAgICBjb25zdCBwbHVnaW4gPSBhZGRvbi5wbHVnaW47XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgcGx1Z2luLnN0YXJ0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChlcnIpIHtcclxuICAgICAgICAgICAgdGhpcy5zdGF0ZVthZGRvbi5pZF0gPSBmYWxzZTtcclxuICAgICAgICAgICAgVG9hc3RzLmVycm9yKFN0cmluZ3MuQWRkb25zLmNvdWxkTm90U3RhcnQuZm9ybWF0KHtuYW1lOiBhZGRvbi5uYW1lLCB2ZXJzaW9uOiBhZGRvbi52ZXJzaW9ufSkpO1xyXG4gICAgICAgICAgICBMb2dnZXIuc3RhY2t0cmFjZSh0aGlzLm5hbWUsIGFkZG9uLm5hbWUgKyBcIiBjb3VsZCBub3QgYmUgc3RhcnRlZC5cIiwgZXJyKTtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBBZGRvbkVycm9yKGFkZG9uLm5hbWUsIGFkZG9uLmZpbGVuYW1lLCBTdHJpbmdzLkFkZG9ucy5lbmFibGVkLmZvcm1hdCh7bWV0aG9kOiBcInN0YXJ0KClcIn0pLCB7bWVzc2FnZTogZXJyLm1lc3NhZ2UsIHN0YWNrOiBlcnIuc3RhY2t9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5lbWl0KFwic3RhcnRlZFwiLCBhZGRvbi5pZCk7XHJcbiAgICAgICAgVG9hc3RzLnNob3coU3RyaW5ncy5BZGRvbnMuZW5hYmxlZC5mb3JtYXQoe25hbWU6IGFkZG9uLm5hbWUsIHZlcnNpb246IGFkZG9uLnZlcnNpb259KSk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RvcFBsdWdpbihpZE9yQWRkb24pIHtcclxuICAgICAgICBjb25zdCBhZGRvbiA9IHR5cGVvZihpZE9yQWRkb24pID09IFwic3RyaW5nXCIgPyB0aGlzLmFkZG9uTGlzdC5maW5kKHAgPT4gcC5pZCA9PSBpZE9yQWRkb24pIDogaWRPckFkZG9uO1xyXG4gICAgICAgIGlmICghYWRkb24pIHJldHVybjtcclxuICAgICAgICBjb25zdCBwbHVnaW4gPSBhZGRvbi5wbHVnaW47XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgcGx1Z2luLnN0b3AoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGVycikge1xyXG4gICAgICAgICAgICB0aGlzLnN0YXRlW2FkZG9uLmlkXSA9IGZhbHNlO1xyXG4gICAgICAgICAgICBUb2FzdHMuZXJyb3IoU3RyaW5ncy5BZGRvbnMuY291bGROb3RTdG9wLmZvcm1hdCh7bmFtZTogYWRkb24ubmFtZSwgdmVyc2lvbjogYWRkb24udmVyc2lvbn0pKTtcclxuICAgICAgICAgICAgTG9nZ2VyLnN0YWNrdHJhY2UodGhpcy5uYW1lLCBhZGRvbi5uYW1lICsgXCIgY291bGQgbm90IGJlIHN0b3BwZWQuXCIsIGVycik7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgQWRkb25FcnJvcihhZGRvbi5uYW1lLCBhZGRvbi5maWxlbmFtZSwgU3RyaW5ncy5BZGRvbnMuZW5hYmxlZC5mb3JtYXQoe21ldGhvZDogXCJzdG9wKClcIn0pLCB7bWVzc2FnZTogZXJyLm1lc3NhZ2UsIHN0YWNrOiBlcnIuc3RhY2t9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5lbWl0KFwic3RvcHBlZFwiLCBhZGRvbi5pZCk7XHJcbiAgICAgICAgVG9hc3RzLnNob3coU3RyaW5ncy5BZGRvbnMuZGlzYWJsZWQuZm9ybWF0KHtuYW1lOiBhZGRvbi5uYW1lLCB2ZXJzaW9uOiBhZGRvbi52ZXJzaW9ufSkpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFBsdWdpbihpZE9yRmlsZSkge1xyXG4gICAgICAgIGNvbnN0IGFkZG9uID0gdGhpcy5hZGRvbkxpc3QuZmluZChjID0+IGMuaWQgPT0gaWRPckZpbGUgfHwgYy5maWxlbmFtZSA9PSBpZE9yRmlsZSk7XHJcbiAgICAgICAgaWYgKCFhZGRvbikgcmV0dXJuO1xyXG4gICAgICAgIHJldHVybiBhZGRvbi5wbHVnaW47XHJcbiAgICB9XHJcblxyXG4gICAgc2V0dXBGdW5jdGlvbnMoKSB7XHJcbiAgICAgICAgZWxlY3Ryb25SZW1vdGUuZ2V0Q3VycmVudFdlYkNvbnRlbnRzKCkub24oXCJkaWQtbmF2aWdhdGUtaW4tcGFnZVwiLCB0aGlzLm9uU3dpdGNoLmJpbmQodGhpcykpO1xyXG4gICAgICAgIHRoaXMub2JzZXJ2ZXIub2JzZXJ2ZShkb2N1bWVudCwge1xyXG4gICAgICAgICAgICBjaGlsZExpc3Q6IHRydWUsXHJcbiAgICAgICAgICAgIHN1YnRyZWU6IHRydWVcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBvblN3aXRjaCgpIHtcclxuICAgICAgICB0aGlzLmVtaXQoXCJwYWdlLXN3aXRjaFwiKTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuYWRkb25MaXN0Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHBsdWdpbiA9IHRoaXMuYWRkb25MaXN0W2ldLnBsdWdpbjtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLnN0YXRlW3RoaXMuYWRkb25MaXN0W2ldLmlkXSkgY29udGludWU7XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2YocGx1Z2luLm9uU3dpdGNoKSA9PT0gXCJmdW5jdGlvblwiKSB7XHJcbiAgICAgICAgICAgICAgICB0cnkgeyBwbHVnaW4ub25Td2l0Y2goKTsgfVxyXG4gICAgICAgICAgICAgICAgY2F0Y2ggKGVycikgeyBMb2dnZXIuc3RhY2t0cmFjZSh0aGlzLm5hbWUsIFwiVW5hYmxlIHRvIGZpcmUgb25Td2l0Y2ggZm9yIFwiICsgdGhpcy5hZGRvbkxpc3RbaV0ubmFtZSArIFwiLlwiLCBlcnIpOyB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgb25NdXRhdGlvbihtdXRhdGlvbikge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5hZGRvbkxpc3QubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgY29uc3QgcGx1Z2luID0gdGhpcy5hZGRvbkxpc3RbaV0ucGx1Z2luO1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuc3RhdGVbdGhpcy5hZGRvbkxpc3RbaV0uaWRdKSBjb250aW51ZTtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiBwbHVnaW4ub2JzZXJ2ZXIgPT09IFwiZnVuY3Rpb25cIikge1xyXG4gICAgICAgICAgICAgICAgdHJ5IHsgcGx1Z2luLm9ic2VydmVyKG11dGF0aW9uKTsgfVxyXG4gICAgICAgICAgICAgICAgY2F0Y2ggKGVycikgeyBMb2dnZXIuc3RhY2t0cmFjZSh0aGlzLm5hbWUsIFwiVW5hYmxlIHRvIGZpcmUgb2JzZXJ2ZXIgZm9yIFwiICsgdGhpcy5hZGRvbkxpc3RbaV0ubmFtZSArIFwiLlwiLCBlcnIpOyB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/pluginmanager.js\n"); /***/ }), @@ -563,7 +562,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var data /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _discordmodules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./discordmodules */ \"./src/modules/discordmodules.js\");\n/* harmony import */ var _patcher__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./patcher */ \"./src/modules/patcher.js\");\n\n\nconst React = _discordmodules__WEBPACK_IMPORTED_MODULE_0__[\"default\"].React;\nconst components = {};\nconst unknownComponents = new Set();\nconst listeners = new Set();\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class ReactComponents {\n get named() {\n return components;\n }\n\n get unknown() {\n return unknownComponents;\n }\n\n get listeners() {\n return listeners;\n }\n\n constructor() {\n _patcher__WEBPACK_IMPORTED_MODULE_1__[\"default\"].after(\"ReactComponents\", React, \"createElement\", (_, __, returnValue) => {\n this.walkRenderTree(returnValue);\n });\n _patcher__WEBPACK_IMPORTED_MODULE_1__[\"default\"].instead(\"ReactComponents\", React.Component.prototype, \"componentWillMount\", thisObject => {\n this.addComponent(thisObject.constructor);\n });\n _patcher__WEBPACK_IMPORTED_MODULE_1__[\"default\"].instead(\"ReactComponents\", React.Component.prototype, \"UNSAFE_componentWillMount\", thisObject => {\n this.addComponent(thisObject.constructor);\n });\n _patcher__WEBPACK_IMPORTED_MODULE_1__[\"default\"].instead(\"ReactComponents\", React.PureComponent.prototype, \"componentWillMount\", thisObject => {\n this.addComponent(thisObject.constructor);\n });\n _patcher__WEBPACK_IMPORTED_MODULE_1__[\"default\"].instead(\"ReactComponents\", React.PureComponent.prototype, \"UNSAFE_componentWillMount\", thisObject => {\n this.addComponent(thisObject.constructor);\n });\n }\n\n initialize() {\n this.walkReactTree(document.querySelector(\"#app-mount\")._reactRootContainer._internalRoot.current);\n }\n\n get(name, filter) {\n return new Promise(resolve => {\n if (components[name]) return resolve(components[name]);\n listeners.add({\n name,\n filter,\n resolve\n });\n if (!filter) return;\n\n for (const component of unknownComponents) {\n if (!filter(component)) continue;\n component.displayName = name;\n unknownComponents.delete(component);\n this.addNamedComponent(component);\n }\n });\n }\n\n addNamedComponent(component) {\n const name = component.displayName;\n\n if (!components[name]) {\n components[name] = component;\n\n for (const listener of listeners) {\n if (listener.name !== name) continue;\n listener.resolve(component);\n listeners.delete(listener);\n }\n }\n }\n\n addUnknownComponent(component) {\n if (unknownComponents.has(component)) return;\n\n for (const listener of listeners) {\n if (!listener.filter || !listener.filter(component)) continue;\n component.displayName = listener.name;\n this.addNamedComponent(component);\n }\n\n if (!component.displayName) unknownComponents.add(component);\n }\n\n addComponent(component) {\n if (component.displayName) return this.addNamedComponent(component);\n return this.addUnknownComponent(component);\n }\n\n walkRenderTree(tree) {\n if (!tree) return;\n if (typeof tree.type == \"function\") this.addComponent(tree.type);\n if (Array.isArray(tree)) for (const value of tree) this.walkRenderTree(value);\n if (tree.props && tree.props.children) this.walkRenderTree(tree.props.children);\n }\n\n walkReactTree(tree) {\n if (!tree) return;\n if (typeof tree.type == \"function\") this.addComponent(tree.type);\n if (tree.child) this.walkReactTree(tree.child);\n if (tree.sibling) this.walkReactTree(tree.sibling);\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL21vZHVsZXMvcmVhY3Rjb21wb25lbnRzLmpzPzY5NTQiXSwibmFtZXMiOlsiUmVhY3QiLCJEaXNjb3JkTW9kdWxlcyIsImNvbXBvbmVudHMiLCJ1bmtub3duQ29tcG9uZW50cyIsIlNldCIsImxpc3RlbmVycyIsIlJlYWN0Q29tcG9uZW50cyIsIm5hbWVkIiwidW5rbm93biIsImNvbnN0cnVjdG9yIiwiUGF0Y2hlciIsImFmdGVyIiwiXyIsIl9fIiwicmV0dXJuVmFsdWUiLCJ3YWxrUmVuZGVyVHJlZSIsImluc3RlYWQiLCJDb21wb25lbnQiLCJwcm90b3R5cGUiLCJ0aGlzT2JqZWN0IiwiYWRkQ29tcG9uZW50IiwiUHVyZUNvbXBvbmVudCIsImluaXRpYWxpemUiLCJ3YWxrUmVhY3RUcmVlIiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwiX3JlYWN0Um9vdENvbnRhaW5lciIsIl9pbnRlcm5hbFJvb3QiLCJjdXJyZW50IiwiZ2V0IiwibmFtZSIsImZpbHRlciIsIlByb21pc2UiLCJyZXNvbHZlIiwiYWRkIiwiY29tcG9uZW50IiwiZGlzcGxheU5hbWUiLCJkZWxldGUiLCJhZGROYW1lZENvbXBvbmVudCIsImxpc3RlbmVyIiwiYWRkVW5rbm93bkNvbXBvbmVudCIsImhhcyIsInRyZWUiLCJ0eXBlIiwiQXJyYXkiLCJpc0FycmF5IiwidmFsdWUiLCJwcm9wcyIsImNoaWxkcmVuIiwiY2hpbGQiLCJzaWJsaW5nIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBRUEsTUFBTUEsS0FBSyxHQUFHQyx1REFBYyxDQUFDRCxLQUE3QjtBQUNBLE1BQU1FLFVBQVUsR0FBRyxFQUFuQjtBQUNBLE1BQU1DLGlCQUFpQixHQUFHLElBQUlDLEdBQUosRUFBMUI7QUFDQSxNQUFNQyxTQUFTLEdBQUcsSUFBSUQsR0FBSixFQUFsQjtBQUVlLG1FQUFJLE1BQU1FLGVBQU4sQ0FBc0I7QUFFckMsTUFBSUMsS0FB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QUFvQjJCLElBQUksQ0FBQ0ssS0FBTCxDQUFXQyxRQUEvQjtBQUMxQzs7QUFFRHpCLGVBQWEsQ0FBQ21CLElBQUQsRUFBTztBQUNoQixRQUFJLENBQUNBLElBQUwsRUFBVztBQUNYLFFBQUksT0FBT0EsSUFBSSxDQUFDQyxJQUFaLElBQXFCLFVBQXpCLEVBQXFDLEtBQUt2QixZQUFMLENBQWtCc0IsSUFBSSxDQUFDQyxJQUF2QjtBQUNyQyxRQUFJRCxJQUFJLENBQUNPLEtBQVQsRUFBZ0IsS0FBSzFCLGFBQUwsQ0FBbUJtQixJQUFJLENBQUNPLEtBQXhCO0FBQ2hCLFFBQUlQLElBQUksQ0FBQ1EsT0FBVCxFQUFrQixLQUFLM0IsYUFBTCxDQUFtQm1CLElBQUksQ0FBQ1EsT0FBeEI7QUFDckI7O0FBbEZvQyxDQUExQixFQUFmIiwiZmlsZSI6Ii4vc3JjL21vZHVsZXMvcmVhY3Rjb21wb25lbnRzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERpc2NvcmRNb2R1bGVzIGZyb20gXCIuL2Rpc2NvcmRtb2R1bGVzXCI7XHJcbmltcG9ydCBQYXRjaGVyIGZyb20gXCIuL3BhdGNoZXJcIjtcclxuXHJcbmNvbnN0IFJlYWN0ID0gRGlzY29yZE1vZHVsZXMuUmVhY3Q7XHJcbmNvbnN0IGNvbXBvbmVudHMgPSB7fTtcclxuY29uc3QgdW5rbm93bkNvbXBvbmVudHMgPSBuZXcgU2V0KCk7XHJcbmNvbnN0IGxpc3RlbmVycyA9IG5ldyBTZXQoKTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IG5ldyBjbGFzcyBSZWFjdENvbXBvbmVudHMge1xyXG5cclxuICAgIGdldCBuYW1lZCgpIHtyZXR1cm4gY29tcG9uZW50czt9XHJcbiAgICBnZXQgdW5rbm93bigpIHtyZXR1cm4gdW5rbm93bkNvbXBvbmVudHM7fVxyXG4gICAgZ2V0IGxpc3RlbmVycygpIHtyZXR1cm4gbGlzdGVuZXJzO31cclxuXHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICBQYXRjaGVyLmFmdGVyKFwiUmVhY3RDb21wb25lbnRzXCIsIFJlYWN0LCBcImNyZWF0ZUVsZW1lbnRcIiwgKF8sIF9fLCByZXR1cm5WYWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLndhbGtSZW5kZXJUcmVlKHJldHVyblZhbHVlKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBQYXRjaGVyLmluc3RlYWQoXCJSZWFjdENvbXBvbmVudHNcIiwgUmVhY3QuQ29tcG9uZW50LnByb3RvdHlwZSwgXCJjb21wb25lbnRXaWxsTW91bnRcIiwgKHRoaXNPYmplY3QpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5hZGRDb21wb25lbnQodGhpc09iamVjdC5jb25zdHJ1Y3Rvcik7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgUGF0Y2hlci5pbnN0ZWFkKFwiUmVhY3RDb21wb25lbnRzXCIsIFJlYWN0LkNvbXBvbmVudC5wcm90b3R5cGUsIFwiVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudFwiLCAodGhpc09iamVjdCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmFkZENvbXBvbmVudCh0aGlzT2JqZWN0LmNvbnN0cnVjdG9yKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgUGF0Y2hlci5pbnN0ZWFkKFwiUmVhY3RDb21wb25lbnRzXCIsIFJlYWN0LlB1cmVDb21wb25lbnQucHJvdG90eXBlLCBcImNvbXBvbmVudFdpbGxNb3VudFwiLCAodGhpc09iamVjdCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmFkZENvbXBvbmVudCh0aGlzT2JqZWN0LmNvbnN0cnVjdG9yKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBQYXRjaGVyLmluc3RlYWQoXCJSZWFjdENvbXBvbmVudHNcIiwgUmVhY3QuUHVyZUNvbXBvbmVudC5wcm90b3R5cGUsIFwiVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudFwiLCAodGhpc09iamVjdCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmFkZENvbXBvbmVudCh0aGlzT2JqZWN0LmNvbnN0cnVjdG9yKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBpbml0aWFsaXplKCkge1xyXG4gICAgICAgIHRoaXMud2Fsa1JlYWN0VHJlZShkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI2FwcC1tb3VudFwiKS5fcmVhY3RSb290Q29udGFpbmVyLl9pbnRlcm5hbFJvb3QuY3VycmVudCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0KG5hbWUsIGZpbHRlcikge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcclxuICAgICAgICAgICAgaWYgKGNvbXBvbmVudHNbbmFtZV0pIHJldHVybiByZXNvbHZlKGNvbXBvbmVudHNbbmFtZV0pO1xyXG4gICAgICAgICAgICBsaXN0ZW5lcnMuYWRkKHtuYW1lLCBmaWx0ZXIsIHJlc29sdmV9KTtcclxuICAgICAgICAgICAgaWYgKCFmaWx0ZXIpIHJldHVybjtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBjb21wb25lbnQgb2YgdW5rbm93bkNvbXBvbmVudHMpIHtcclxuICAgICAgICAgICAgICAgIGlmICghZmlsdGVyKGNvbXBvbmVudCkpIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgY29tcG9uZW50LmRpc3BsYXlOYW1lID0gbmFtZTtcclxuICAgICAgICAgICAgICAgIHVua25vd25Db21wb25lbnRzLmRlbGV0ZShjb21wb25lbnQpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hZGROYW1lZENvbXBvbmVudChjb21wb25lbnQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgYWRkTmFtZWRDb21wb25lbnQoY29tcG9uZW50KSB7XHJcbiAgICAgICAgY29uc3QgbmFtZSA9IGNvbXBvbmVudC5kaXNwbGF5TmFtZTtcclxuICAgICAgICBpZiAoIWNvbXBvbmVudHNbbmFtZV0pIHtcclxuICAgICAgICAgICAgY29tcG9uZW50c1tuYW1lXSA9IGNvbXBvbmVudDtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBsaXN0ZW5lciBvZiBsaXN0ZW5lcnMpIHtcclxuICAgICAgICAgICAgICAgIGlmIChsaXN0ZW5lci5uYW1lICE9PSBuYW1lKSBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIGxpc3RlbmVyLnJlc29sdmUoY29tcG9uZW50KTtcclxuICAgICAgICAgICAgICAgIGxpc3RlbmVycy5kZWxldGUobGlzdGVuZXIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGFkZFVua25vd25Db21wb25lbnQoY29tcG9uZW50KSB7XHJcbiAgICAgICAgaWYgKHVua25vd25Db21wb25lbnRzLmhhcyhjb21wb25lbnQpKSByZXR1cm47XHJcbiAgICAgICAgZm9yIChjb25zdCBsaXN0ZW5lciBvZiBsaXN0ZW5lcnMpIHtcclxuICAgICAgICAgICAgaWYgKCFsaXN0ZW5lci5maWx0ZXIgfHwgIWxpc3RlbmVyLmZpbHRlcihjb21wb25lbnQpKSBjb250aW51ZTtcclxuICAgICAgICAgICAgY29tcG9uZW50LmRpc3BsYXlOYW1lID0gbGlzdGVuZXIubmFtZTtcclxuICAgICAgICAgICAgdGhpcy5hZGROYW1lZENvbXBvbmVudChjb21wb25lbnQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIWNvbXBvbmVudC5kaXNwbGF5TmFtZSkgdW5rbm93bkNvbXBvbmVudHMuYWRkKGNvbXBvbmVudCk7XHJcbiAgICB9XHJcblxyXG4gICAgYWRkQ29tcG9uZW50KGNvbXBvbmVudCkge1xyXG4gICAgICAgIGlmIChjb21wb25lbnQuZGlzcGxheU5hbWUpIHJldHVybiB0aGlzLmFkZE5hbWVkQ29tcG9uZW50KGNvbXBvbmVudCk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRkVW5rbm93bkNvbXBvbmVudChjb21wb25lbnQpO1xyXG4gICAgfVxyXG5cclxuICAgIHdhbGtSZW5kZXJUcmVlKHRyZWUpIHtcclxuICAgICAgICBpZiAoIXRyZWUpIHJldHVybjtcclxuICAgICAgICBpZiAodHlwZW9mKHRyZWUudHlwZSkgPT0gXCJmdW5jdGlvblwiKSB0aGlzLmFkZENvbXBvbmVudCh0cmVlLnR5cGUpO1xyXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHRyZWUpKSBmb3IgKGNvbnN0IHZhbHVlIG9mIHRyZWUpIHRoaXMud2Fsa1JlbmRlclRyZWUodmFsdWUpO1xyXG4gICAgICAgIGlmICh0cmVlLnByb3BzICYmIHRyZWUucHJvcHMuY2hpbGRyZW4pIHRoaXMud2Fsa1JlbmRlclRyZWUodHJlZS5wcm9wcy5jaGlsZHJlbik7XHJcbiAgICB9XHJcblxyXG4gICAgd2Fsa1JlYWN0VHJlZSh0cmVlKSB7XHJcbiAgICAgICAgaWYgKCF0cmVlKSByZXR1cm47XHJcbiAgICAgICAgaWYgKHR5cGVvZih0cmVlLnR5cGUpID09IFwiZnVuY3Rpb25cIikgdGhpcy5hZGRDb21wb25lbnQodHJlZS50eXBlKTtcclxuICAgICAgICBpZiAodHJlZS5jaGlsZCkgdGhpcy53YWxrUmVhY3RUcmVlKHRyZWUuY2hpbGQpO1xyXG4gICAgICAgIGlmICh0cmVlLnNpYmxpbmcpIHRoaXMud2Fsa1JlYWN0VHJlZSh0cmVlLnNpYmxpbmcpO1xyXG4gICAgfVxyXG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/reactcomponents.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _discordmodules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./discordmodules */ \"./src/modules/discordmodules.js\");\n/* harmony import */ var _patcher__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./patcher */ \"./src/modules/patcher.js\");\n\n\nconst React = _discordmodules__WEBPACK_IMPORTED_MODULE_0__[\"default\"].React;\nconst components = {};\nconst unknownComponents = new Set();\nconst listeners = new Set();\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class ReactComponents {\n get named() {\n return components;\n }\n\n get unknown() {\n return unknownComponents;\n }\n\n get listeners() {\n return listeners;\n }\n\n constructor() {\n _patcher__WEBPACK_IMPORTED_MODULE_1__[\"default\"].after(\"ReactComponents\", React, \"createElement\", (_, __, returnValue) => {\n this.walkRenderTree(returnValue);\n });\n _patcher__WEBPACK_IMPORTED_MODULE_1__[\"default\"].instead(\"ReactComponents\", React.Component.prototype, \"componentWillMount\", thisObject => {\n this.addComponent(thisObject.constructor);\n });\n _patcher__WEBPACK_IMPORTED_MODULE_1__[\"default\"].instead(\"ReactComponents\", React.Component.prototype, \"UNSAFE_componentWillMount\", thisObject => {\n this.addComponent(thisObject.constructor);\n });\n _patcher__WEBPACK_IMPORTED_MODULE_1__[\"default\"].instead(\"ReactComponents\", React.PureComponent.prototype, \"componentWillMount\", thisObject => {\n this.addComponent(thisObject.constructor);\n });\n _patcher__WEBPACK_IMPORTED_MODULE_1__[\"default\"].instead(\"ReactComponents\", React.PureComponent.prototype, \"UNSAFE_componentWillMount\", thisObject => {\n this.addComponent(thisObject.constructor);\n });\n }\n\n initialize() {\n this.walkReactTree(document.querySelector(\"#app-mount\")._reactRootContainer._internalRoot.current);\n }\n\n get(name, filter) {\n return new Promise(resolve => {\n if (components[name]) return resolve(components[name]);\n listeners.add({\n name,\n filter,\n resolve\n });\n if (!filter) return;\n\n for (const component of unknownComponents) {\n if (!filter(component)) continue;\n component.displayName = name;\n unknownComponents.delete(component);\n this.addNamedComponent(component);\n }\n });\n }\n\n addNamedComponent(component) {\n const name = component.displayName;\n\n if (!components[name]) {\n components[name] = component;\n\n for (const listener of listeners) {\n if (listener.name !== name) continue;\n listener.resolve(component);\n listeners.delete(listener);\n }\n }\n }\n\n addUnknownComponent(component) {\n if (unknownComponents.has(component)) return;\n\n for (const listener of listeners) {\n if (!listener.filter || !listener.filter(component)) continue;\n component.displayName = listener.name;\n this.addNamedComponent(component);\n }\n\n if (!component.displayName) unknownComponents.add(component);\n }\n\n addComponent(component) {\n if (component.displayName) return this.addNamedComponent(component);\n return this.addUnknownComponent(component);\n }\n\n walkRenderTree(tree) {\n if (!tree) return;\n if (typeof tree.type == \"function\") this.addComponent(tree.type);\n if (Array.isArray(tree)) for (const value of tree) this.walkRenderTree(value);\n if (tree.props && tree.props.children) this.walkRenderTree(tree.props.children);\n }\n\n walkReactTree(tree) {\n if (!tree) return;\n if (typeof tree.type == \"function\") this.addComponent(tree.type);\n if (tree.child) this.walkReactTree(tree.child);\n if (tree.sibling) this.walkReactTree(tree.sibling);\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9yZWFjdGNvbXBvbmVudHMuanM/Njk1NCJdLCJuYW1lcyI6WyJSZWFjdCIsIkRpc2NvcmRNb2R1bGVzIiwiY29tcG9uZW50cyIsInVua25vd25Db21wb25lbnRzIiwiU2V0IiwibGlzdGVuZXJzIiwiUmVhY3RDb21wb25lbnRzIiwibmFtZWQiLCJ1bmtub3duIiwiY29uc3RydWN0b3IiLCJQYXRjaGVyIiwiYWZ0ZXIiLCJfIiwiX18iLCJyZXR1cm5WYWx1ZSIsIndhbGtSZW5kZXJUcmVlIiwiaW5zdGVhZCIsIkNvbXBvbmVudCIsInByb3RvdHlwZSIsInRoaXNPYmplY3QiLCJhZGRDb21wb25lbnQiLCJQdXJlQ29tcG9uZW50IiwiaW5pdGlhbGl6ZSIsIndhbGtSZWFjdFRyZWUiLCJkb2N1bWVudCIsInF1ZXJ5U2VsZWN0b3IiLCJfcmVhY3RSb290Q29udGFpbmVyIiwiX2ludGVybmFsUm9vdCIsImN1cnJlbnQiLCJnZXQiLCJuYW1lIiwiZmlsdGVyIiwiUHJvbWlzZSIsInJlc29sdmUiLCJhZGQiLCJjb21wb25lbnQiLCJkaXNwbGF5TmFtZSIsImRlbGV0ZSIsImFkZE5hbWVkQ29tcG9uZW50IiwibGlzdGVuZXIiLCJhZGRVbmtub3duQ29tcG9uZW50IiwiaGFzIiwidHJlZSIsInR5cGUiLCJBcnJheSIsImlzQXJyYXkiLCJ2YWx1ZSIsInByb3BzIiwiY2hpbGRyZW4iLCJjaGlsZCIsInNpYmxpbmciXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFFQSxNQUFNQSxLQUFLLEdBQUdDLHVEQUFjLENBQUNELEtBQTdCO0FBQ0EsTUFBTUUsVUFBVSxHQUFHLEVBQW5CO0FBQ0EsTUFBTUMsaUJBQWlCLEdBQUcsSUFBSUMsR0FBSixFQUExQjtBQUNBLE1BQU1DLFNBQVMsR0FBRyxJQUFJRCxHQUFKLEVBQWxCO0FBRWUsbUVBQUksTUFBTUUsZUFBTixDQUFzQjtBQUVyQyxNQUFJQyxLQUFKLEdB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MkIsSUFBSSxDQUFDSyxLQUFMLENBQVdDLFFBQS9CO0FBQzFDOztBQUVEekIsZUFBYSxDQUFDbUIsSUFBRCxFQUFPO0FBQ2hCLFFBQUksQ0FBQ0EsSUFBTCxFQUFXO0FBQ1gsUUFBSSxPQUFPQSxJQUFJLENBQUNDLElBQVosSUFBcUIsVUFBekIsRUFBcUMsS0FBS3ZCLFlBQUwsQ0FBa0JzQixJQUFJLENBQUNDLElBQXZCO0FBQ3JDLFFBQUlELElBQUksQ0FBQ08sS0FBVCxFQUFnQixLQUFLMUIsYUFBTCxDQUFtQm1CLElBQUksQ0FBQ08sS0FBeEI7QUFDaEIsUUFBSVAsSUFBSSxDQUFDUSxPQUFULEVBQWtCLEtBQUszQixhQUFMLENBQW1CbUIsSUFBSSxDQUFDUSxPQUF4QjtBQUNyQjs7QUFsRm9DLENBQTFCLEVBQWYiLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9yZWFjdGNvbXBvbmVudHMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRGlzY29yZE1vZHVsZXMgZnJvbSBcIi4vZGlzY29yZG1vZHVsZXNcIjtcclxuaW1wb3J0IFBhdGNoZXIgZnJvbSBcIi4vcGF0Y2hlclwiO1xyXG5cclxuY29uc3QgUmVhY3QgPSBEaXNjb3JkTW9kdWxlcy5SZWFjdDtcclxuY29uc3QgY29tcG9uZW50cyA9IHt9O1xyXG5jb25zdCB1bmtub3duQ29tcG9uZW50cyA9IG5ldyBTZXQoKTtcclxuY29uc3QgbGlzdGVuZXJzID0gbmV3IFNldCgpO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgbmV3IGNsYXNzIFJlYWN0Q29tcG9uZW50cyB7XHJcblxyXG4gICAgZ2V0IG5hbWVkKCkge3JldHVybiBjb21wb25lbnRzO31cclxuICAgIGdldCB1bmtub3duKCkge3JldHVybiB1bmtub3duQ29tcG9uZW50czt9XHJcbiAgICBnZXQgbGlzdGVuZXJzKCkge3JldHVybiBsaXN0ZW5lcnM7fVxyXG5cclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIFBhdGNoZXIuYWZ0ZXIoXCJSZWFjdENvbXBvbmVudHNcIiwgUmVhY3QsIFwiY3JlYXRlRWxlbWVudFwiLCAoXywgX18sIHJldHVyblZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMud2Fsa1JlbmRlclRyZWUocmV0dXJuVmFsdWUpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIFBhdGNoZXIuaW5zdGVhZChcIlJlYWN0Q29tcG9uZW50c1wiLCBSZWFjdC5Db21wb25lbnQucHJvdG90eXBlLCBcImNvbXBvbmVudFdpbGxNb3VudFwiLCAodGhpc09iamVjdCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmFkZENvbXBvbmVudCh0aGlzT2JqZWN0LmNvbnN0cnVjdG9yKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBQYXRjaGVyLmluc3RlYWQoXCJSZWFjdENvbXBvbmVudHNcIiwgUmVhY3QuQ29tcG9uZW50LnByb3RvdHlwZSwgXCJVTlNBRkVfY29tcG9uZW50V2lsbE1vdW50XCIsICh0aGlzT2JqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuYWRkQ29tcG9uZW50KHRoaXNPYmplY3QuY29uc3RydWN0b3IpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBQYXRjaGVyLmluc3RlYWQoXCJSZWFjdENvbXBvbmVudHNcIiwgUmVhY3QuUHVyZUNvbXBvbmVudC5wcm90b3R5cGUsIFwiY29tcG9uZW50V2lsbE1vdW50XCIsICh0aGlzT2JqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuYWRkQ29tcG9uZW50KHRoaXNPYmplY3QuY29uc3RydWN0b3IpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIFBhdGNoZXIuaW5zdGVhZChcIlJlYWN0Q29tcG9uZW50c1wiLCBSZWFjdC5QdXJlQ29tcG9uZW50LnByb3RvdHlwZSwgXCJVTlNBRkVfY29tcG9uZW50V2lsbE1vdW50XCIsICh0aGlzT2JqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuYWRkQ29tcG9uZW50KHRoaXNPYmplY3QuY29uc3RydWN0b3IpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGluaXRpYWxpemUoKSB7XHJcbiAgICAgICAgdGhpcy53YWxrUmVhY3RUcmVlKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjYXBwLW1vdW50XCIpLl9yZWFjdFJvb3RDb250YWluZXIuX2ludGVybmFsUm9vdC5jdXJyZW50KTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQobmFtZSwgZmlsdGVyKSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xyXG4gICAgICAgICAgICBpZiAoY29tcG9uZW50c1tuYW1lXSkgcmV0dXJuIHJlc29sdmUoY29tcG9uZW50c1tuYW1lXSk7XHJcbiAgICAgICAgICAgIGxpc3RlbmVycy5hZGQoe25hbWUsIGZpbHRlciwgcmVzb2x2ZX0pO1xyXG4gICAgICAgICAgICBpZiAoIWZpbHRlcikgcmV0dXJuO1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNvbXBvbmVudCBvZiB1bmtub3duQ29tcG9uZW50cykge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFmaWx0ZXIoY29tcG9uZW50KSkgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICBjb21wb25lbnQuZGlzcGxheU5hbWUgPSBuYW1lO1xyXG4gICAgICAgICAgICAgICAgdW5rbm93bkNvbXBvbmVudHMuZGVsZXRlKGNvbXBvbmVudCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFkZE5hbWVkQ29tcG9uZW50KGNvbXBvbmVudCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBhZGROYW1lZENvbXBvbmVudChjb21wb25lbnQpIHtcclxuICAgICAgICBjb25zdCBuYW1lID0gY29tcG9uZW50LmRpc3BsYXlOYW1lO1xyXG4gICAgICAgIGlmICghY29tcG9uZW50c1tuYW1lXSkge1xyXG4gICAgICAgICAgICBjb21wb25lbnRzW25hbWVdID0gY29tcG9uZW50O1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGxpc3RlbmVyIG9mIGxpc3RlbmVycykge1xyXG4gICAgICAgICAgICAgICAgaWYgKGxpc3RlbmVyLm5hbWUgIT09IG5hbWUpIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgbGlzdGVuZXIucmVzb2x2ZShjb21wb25lbnQpO1xyXG4gICAgICAgICAgICAgICAgbGlzdGVuZXJzLmRlbGV0ZShsaXN0ZW5lcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgYWRkVW5rbm93bkNvbXBvbmVudChjb21wb25lbnQpIHtcclxuICAgICAgICBpZiAodW5rbm93bkNvbXBvbmVudHMuaGFzKGNvbXBvbmVudCkpIHJldHVybjtcclxuICAgICAgICBmb3IgKGNvbnN0IGxpc3RlbmVyIG9mIGxpc3RlbmVycykge1xyXG4gICAgICAgICAgICBpZiAoIWxpc3RlbmVyLmZpbHRlciB8fCAhbGlzdGVuZXIuZmlsdGVyKGNvbXBvbmVudCkpIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICBjb21wb25lbnQuZGlzcGxheU5hbWUgPSBsaXN0ZW5lci5uYW1lO1xyXG4gICAgICAgICAgICB0aGlzLmFkZE5hbWVkQ29tcG9uZW50KGNvbXBvbmVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghY29tcG9uZW50LmRpc3BsYXlOYW1lKSB1bmtub3duQ29tcG9uZW50cy5hZGQoY29tcG9uZW50KTtcclxuICAgIH1cclxuXHJcbiAgICBhZGRDb21wb25lbnQoY29tcG9uZW50KSB7XHJcbiAgICAgICAgaWYgKGNvbXBvbmVudC5kaXNwbGF5TmFtZSkgcmV0dXJuIHRoaXMuYWRkTmFtZWRDb21wb25lbnQoY29tcG9uZW50KTtcclxuICAgICAgICByZXR1cm4gdGhpcy5hZGRVbmtub3duQ29tcG9uZW50KGNvbXBvbmVudCk7XHJcbiAgICB9XHJcblxyXG4gICAgd2Fsa1JlbmRlclRyZWUodHJlZSkge1xyXG4gICAgICAgIGlmICghdHJlZSkgcmV0dXJuO1xyXG4gICAgICAgIGlmICh0eXBlb2YodHJlZS50eXBlKSA9PSBcImZ1bmN0aW9uXCIpIHRoaXMuYWRkQ29tcG9uZW50KHRyZWUudHlwZSk7XHJcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodHJlZSkpIGZvciAoY29uc3QgdmFsdWUgb2YgdHJlZSkgdGhpcy53YWxrUmVuZGVyVHJlZSh2YWx1ZSk7XHJcbiAgICAgICAgaWYgKHRyZWUucHJvcHMgJiYgdHJlZS5wcm9wcy5jaGlsZHJlbikgdGhpcy53YWxrUmVuZGVyVHJlZSh0cmVlLnByb3BzLmNoaWxkcmVuKTtcclxuICAgIH1cclxuXHJcbiAgICB3YWxrUmVhY3RUcmVlKHRyZWUpIHtcclxuICAgICAgICBpZiAoIXRyZWUpIHJldHVybjtcclxuICAgICAgICBpZiAodHlwZW9mKHRyZWUudHlwZSkgPT0gXCJmdW5jdGlvblwiKSB0aGlzLmFkZENvbXBvbmVudCh0cmVlLnR5cGUpO1xyXG4gICAgICAgIGlmICh0cmVlLmNoaWxkKSB0aGlzLndhbGtSZWFjdFRyZWUodHJlZS5jaGlsZCk7XHJcbiAgICAgICAgaWYgKHRyZWUuc2libGluZykgdGhpcy53YWxrUmVhY3RUcmVlKHRyZWUuc2libGluZyk7XHJcbiAgICB9XHJcbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/reactcomponents.js\n"); /***/ }), @@ -575,7 +574,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _dis /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var data__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! data */ \"./src/data/data.js\");\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./logger */ \"./src/modules/logger.js\");\n/* harmony import */ var _datastore__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./datastore */ \"./src/modules/datastore.js\");\n/* harmony import */ var _emitter__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./emitter */ \"./src/modules/emitter.js\");\n/* harmony import */ var _discordmodules__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./discordmodules */ \"./src/modules/discordmodules.js\");\n/* harmony import */ var _strings__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./strings */ \"./src/modules/strings.js\");\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class SettingsManager {\n constructor() {\n this.state = {};\n this.collections = [];\n this.panels = [];\n this.updateStrings = this.updateStrings.bind(this);\n }\n\n initialize() {\n this.registerCollection(\"settings\", \"Settings\", data__WEBPACK_IMPORTED_MODULE_0__[\"SettingsConfig\"]);\n _emitter__WEBPACK_IMPORTED_MODULE_3__[\"default\"].on(\"strings-updated\", this.updateStrings); // this.patchSections();\n }\n\n registerCollection(id, name, settings, button = null) {\n if (this.collections.find(c => c.id == id)) return _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].error(\"Settings\", \"Already have a collection with id \" + id);\n this.collections.push({\n type: \"collection\",\n id: id,\n name: name,\n settings: settings,\n button: button\n });\n this.setupCollection(id);\n this.loadCollection(id);\n this.updateStrings();\n }\n\n removeCollection(id) {\n const location = this.collections.findIndex(c => c.id == id);\n if (!location < 0) return _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].error(\"Settings\", \"No collection with id \" + id);\n this.collections.splice(location, 1);\n } // TODO: Move this to SettingsRenderer and also add a registerContentPanel\n\n\n registerPanel(id, name, options) {\n if (this.panels.find(p => p.id == id)) return _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].error(\"Settings\", \"Already have a panel with id \" + id);\n const {\n element,\n onClick,\n order = 1\n } = options;\n const section = {\n id,\n order,\n label: name,\n section: id\n };\n if (onClick) section.clickListener = onClick;\n if (element) section.element = element instanceof _discordmodules__WEBPACK_IMPORTED_MODULE_4__[\"default\"].React.Component ? () => _discordmodules__WEBPACK_IMPORTED_MODULE_4__[\"default\"].React.createElement(element, {}) : typeof element == \"function\" ? element : () => element;\n this.panels.push(section);\n }\n\n removePanel(id) {\n const location = this.panels.findIndex(c => c.id == id);\n if (!location < 0) return _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].error(\"Settings\", \"No collection with id \" + id);\n this.panels.splice(location, 1);\n }\n\n getPath(path, collectionId = \"\", categoryId = \"\") {\n const collection = path.length == 3 ? path[0] : collectionId;\n const category = path.length == 3 ? path[1] : path.length == 2 ? path[0] : categoryId;\n const setting = path[path.length - 1];\n return {\n collection,\n category,\n setting\n };\n }\n\n setupCollection(id) {\n const collection = this.collections.find(c => c.id == id);\n if (!collection) return;\n const categories = collection.settings;\n if (!this.state[collection.id]) this.state[collection.id] = {};\n\n for (let cc = 0; cc < categories.length; cc++) {\n const category = categories[cc];\n\n if (category.type != \"category\") {\n if (!this.state[collection.id].hasOwnProperty(category.id)) this.state[collection.id][category.id] = category.value;\n } else {\n if (!this.state[collection.id].hasOwnProperty(category.id)) this.state[collection.id][category.id] = {};\n\n for (let s = 0; s < category.settings.length; s++) {\n const setting = category.settings[s];\n if (!this.state[collection.id][category.id].hasOwnProperty(setting.id)) this.state[collection.id][category.id][setting.id] = setting.value;\n if (setting.hasOwnProperty(\"disabled\")) continue;\n if (!setting.enableWith && !setting.disableWith) continue;\n const pathString = setting.enableWith || setting.disableWith;\n const path = this.getPath(pathString.split(\".\"), collection.id, category.id);\n Object.defineProperty(setting, \"disabled\", {\n get: () => {\n const other = this.state[path.collection][path.category][path.setting];\n return setting.enableWith ? !other : other;\n }\n });\n }\n }\n }\n }\n\n saveSettings() {\n for (const collection in this.state) this.saveCollection(collection);\n }\n\n loadSettings() {\n for (const collection in this.state) this.loadCollection(collection);\n }\n\n saveCollection(collection) {\n _datastore__WEBPACK_IMPORTED_MODULE_2__[\"default\"].setData(collection, this.state[collection]);\n }\n\n loadCollection(id) {\n const previousState = _datastore__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getData(id);\n if (!previousState) return this.saveCollection(id);\n\n for (const category in this.state[id]) {\n if (!previousState[category]) Object.assign(previousState, {\n [category]: this.state[id][category]\n });\n\n for (const setting in this.state[id][category]) {\n if (previousState[category][setting] == undefined) continue;\n const settingObj = this.getSetting(id, category, setting);\n if (settingObj.type == \"switch\") this.state[id][category][setting] = previousState[category][setting];\n\n if (settingObj.type == \"dropdown\") {\n const exists = settingObj.options.some(o => o.value == previousState[category][setting]);\n if (exists) this.state[id][category][setting] = previousState[category][setting];\n }\n }\n }\n\n this.saveCollection(id); // in case new things were added\n }\n\n onSettingChange(collection, category, id, value) {\n this.state[collection][category][id] = value;\n _emitter__WEBPACK_IMPORTED_MODULE_3__[\"default\"].dispatch(\"setting-updated\", collection, category, id, value);\n this.saveCollection(collection);\n }\n\n getSetting(collection, category, id) {\n if (arguments.length == 2) return this.collections[0].find(c => c.id == arguments[0]).settings.find(s => s.id == arguments[1]);\n return this.collections.find(c => c.id == collection).settings.find(c => c.id == category).settings.find(s => s.id == id);\n }\n\n get(collection, category, id) {\n if (arguments.length == 2) {\n id = category;\n category = collection;\n collection = \"settings\";\n }\n\n if (!this.state[collection] || !this.state[collection][category]) return false;\n return this.state[collection][category][id];\n }\n\n set(collection, category, id, value) {\n if (arguments.length == 3) {\n value = id;\n id = category;\n category = collection;\n collection = \"settings\";\n }\n\n return this.onSettingChange(collection, category, id, value);\n }\n\n on(collection, category, identifier, callback) {\n const handler = (col, cat, id, value) => {\n if (col !== collection || cat !== category || id !== identifier) return;\n callback(value);\n };\n\n _emitter__WEBPACK_IMPORTED_MODULE_3__[\"default\"].on(\"setting-updated\", handler);\n return () => {\n _emitter__WEBPACK_IMPORTED_MODULE_3__[\"default\"].off(\"setting-updated\", handler);\n };\n }\n\n updateStrings() {\n // Update settings collections\n for (let c = 0; c < this.collections.length; c++) {\n const collection = this.collections[c];\n const CS = _strings__WEBPACK_IMPORTED_MODULE_5__[\"default\"].Collections[collection.id];\n if (!CS) continue;\n collection.name = CS.name || collection.name;\n const categories = this.collections[c].settings;\n\n for (let cat = 0; cat < categories.length; cat++) {\n const category = categories[cat];\n const CatStr = CS[category.id];\n if (!CatStr) continue;\n category.name = CatStr.name || category.name;\n\n for (let s = 0; s < category.settings.length; s++) {\n const setting = category.settings[s];\n const SetStr = CatStr[setting.id];\n if (!SetStr) continue;\n setting.name = SetStr.name || setting.name;\n setting.note = SetStr.note || setting.note;\n if (!setting.options) continue;\n\n for (const opt of setting.options) {\n opt.label = SetStr.options[opt.id] || SetStr.options[opt.value] || opt.label;\n }\n }\n }\n } // Update panel labels\n\n\n for (let p = 0; p < this.panels.length; p++) {\n const panel = this.panels[p];\n const Str = _strings__WEBPACK_IMPORTED_MODULE_5__[\"default\"].Panels[panel.id];\n panel.label = Str || panel.label;\n }\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL21vZHVsZXMvc2V0dGluZ3NtYW5hZ2VyLmpzP2IyZjkiXSwibmFtZXMiOlsiU2V0dGluZ3NNYW5hZ2VyIiwiY29uc3RydWN0b3IiLCJzdGF0ZSIsImNvbGxlY3Rpb25zIiwicGFuZWxzIiwidXBkYXRlU3RyaW5ncyIsImJpbmQiLCJpbml0aWFsaXplIiwicmVnaXN0ZXJDb2xsZWN0aW9uIiwiU2V0dGluZ3NDb25maWciLCJFdmVudHMiLCJvbiIsImlkIiwibmFtZSIsInNldHRpbmdzIiwiYnV0dG9uIiwiZmluZCIsImMiLCJMb2dnZXIiLCJlcnJvciIsInB1c2giLCJ0eXBlIiwic2V0dXBDb2xsZWN0aW9uIiwibG9hZENvbGxlY3Rpb24iLCJyZW1vdmVDb2xsZWN0aW9uIiwibG9jYXRpb24iLCJmaW5kSW5kZXgiLCJzcGxpY2UiLCJyZWdpc3RlclBhbmVsIiwib3B0aW9ucyIsInAiLCJlbGVtZW50Iiwib25DbGljayIsIm9yZGVyIiwic2VjdGlvbiIsImxhYmVsIiwiY2xpY2tMaXN0ZW5lciIsIkRpc2NvcmRNb2R1bGVzIiwiUmVhY3QiLCJDb21wb25lbnQiLCJjcmVhdGVFbGVtZW50IiwicmVtb3ZlUGFuZWwiLCJnZXRQYXRoIiwicGF0aCIsImNvbGxlY3Rpb25JZCIsImNhdGVnb3J5SWQiLCJjb2xsZWN0aW9uIiwibGVuZ3RoIiwiY2F0ZWdvcnkiLCJzZXR0aW5nIiwiY2F0ZWdvcmllcyIsImNjIiwiaGFzT3duUHJvcGVydHkiLCJ2YWx1ZSIsInMiLCJlbmFibGVXaXRoIiwiZGlzYWJsZVdpdGgiLCJwYXRoU3RyaW5nIiwic3BsaXQiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldCIsIm90aGVyIiwic2F2ZVNldHRpbmdzIiwic2F2ZUNvbGxlY3Rpb24iLCJsb2FkU2V0dGluZ3MiLCJEYXRhU3RvcmUiLCJzZXREYXRhIiwicHJldmlvdXNTdGF0ZSIsImdldERhdGEiLCJhc3NpZ24iLCJ1bmRlZmluZWQiLCJzZXR0aW5nT2JqIiwiZ2V0U2V0dGluZyIsImV4aXN0cyIsInNvbWUiLCJvIiwib25TZXR0aW5nQ2hhbmdlIiwiZGlzcGF0Y2giLCJhcmd1bWVudHMiLCJzZXQiLCJpZGVudGlmaWVyIiwiY2FsbGJhY2siLCJoYW5kbGVyIiwiY29sIiwiY2F0Iiwib2ZmIiwiQ1MiLCJTdHJpbmdzIiwiQ29sbGVjdGlvbnMiLCJDYXRTdHIiLCJTZXRTdHIiLCJub3RlIiwib3B0IiwicGFuZWwiLCJTdHIiLCJQYW5lbHMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRWUsbUVBQUksTUFBTUEsZUFBTixDQUFzQjtBQUVyQ0MsYUFBVyxHQUFHO0FBQ1YsU0FBS0MsS0FBTCxHQUFhLEVBQWI7QUFDQSxTQUFLQyxXQUFMLEdBQW1CLEVBQW5CO0FBQ0EsU0FBS0MsTUFBTCxHQUFjLEVBQWQ7QUFDQSxTQUFLQyxhQUFMLEdBQXFCLEtBQUtBLGFBQUwsQ0FBbUJDLElBQW5CLENBQXdCLElBQXhCLENBQXJCO0FBQ0g7O0FBRURDLFlBQVUsR0FBRztBQUNULFNBQUtDLGtCQUFMLENBQXdCLFVBQXhCLEVBQW9DLFVBQXBDLEVBQWdEQyxtREFBaEQ7QUFDQUMsb0RBQU0sQ0FBQ0MsRUFBUCxDQUFVLGlCQUFWLEVBQTZCLEtBQUtOLGFBQWxDLEVBRlMsQ0FHVDtBQUNIOztBQUVERyxvQkFBa0IsQ0FBQ0ksRUFBRCxFQUFLQyxJQUFMLEVBQVdDLFFBQVgsRUFBcUJDLE1BQU0sR0FBRyxJQUE5QixFQUFvQztBQUNsRCxRQUFJLEtBQUtaLFdBQUwsQ0FBaUJhLElBQWpCLENBQXNCQyxDQUFDLElBQUlBLENBQUMsQ0FBQ0wsRUFBRixJQUFRQSxFQUFuQyxDQUFKLEVBQTRDLE9BQU9NLCtDQUFNLENBQUNDLEtBQVAsQ0FBYSxVQUFiLEVBQXlCLHVDQUF1Q1AsRUFBaEUsQ0FBUDtBQUM1QyxTQUFLVCxXQUFMLENBQWlCaUIsSUFBakIsQ0FBc0I7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QWVvQyxPQUFPLENBQUNwQyxJQUF0QztBQUNBb0MsaUJBQU8sQ0FBQzJDLElBQVIsR0FBZUQsTUFBTSxDQUFDQyxJQUFQLElBQWUzQyxPQUFPLENBQUMyQyxJQUF0QztBQUNBLGNBQUksQ0FBQzNDLE9BQU8sQ0FBQ3BCLE9BQWIsRUFBc0I7O0FBQ3RCLGVBQUssTUFBTWdFLEdBQVgsSUFBa0I1QyxPQUFPLENBQUNwQixPQUExQixFQUFtQztBQUMvQmdFLGVBQUcsQ0FBQzFELEtBQUosR0FBWXdELE1BQU0sQ0FBQzlELE9BQVAsQ0FBZWdFLEdBQUcsQ0FBQ2pGLEVBQW5CLEtBQTBCK0UsTUFBTSxDQUFDOUQsT0FBUCxDQUFlZ0UsR0FBRyxDQUFDeEMsS0FBbkIsQ0FBMUIsSUFBdUR3QyxHQUFHLENBQUMxRCxLQUF2RTtBQUNIO0FBQ0o7QUFDSjtBQUNKLEtBekJXLENBMkJaOzs7QUFDQSxTQUFLLElBQUlMLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUcsS0FBSzFCLE1BQUwsQ0FBWTJDLE1BQWhDLEVBQXdDakIsQ0FBQyxFQUF6QyxFQUE2QztBQUN6QyxZQUFNZ0UsS0FBSyxHQUFHLEtBQUsxRixNQUFMLENBQVkwQixDQUFaLENBQWQ7QUFDQSxZQUFNaUUsR0FBRyxHQUFHUCxnREFBTyxDQUFDUSxNQUFSLENBQWVGLEtBQUssQ0FBQ2xGLEVBQXJCLENBQVo7QUFDQWtGLFdBQUssQ0FBQzNELEtBQU4sR0FBYzRELEdBQUcsSUFBSUQsS0FBSyxDQUFDM0QsS0FBM0I7QUFDSDtBQUNKOztBQTlMb0MsQ0FBMUIsRUFBZiIsImZpbGUiOiIuL3NyYy9tb2R1bGVzL3NldHRpbmdzbWFuYWdlci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7U2V0dGluZ3NDb25maWd9IGZyb20gXCJkYXRhXCI7XHJcbmltcG9ydCBMb2dnZXIgZnJvbSBcIi4vbG9nZ2VyXCI7XHJcbmltcG9ydCBEYXRhU3RvcmUgZnJvbSBcIi4vZGF0YXN0b3JlXCI7XHJcbmltcG9ydCBFdmVudHMgZnJvbSBcIi4vZW1pdHRlclwiO1xyXG5pbXBvcnQgRGlzY29yZE1vZHVsZXMgZnJvbSBcIi4vZGlzY29yZG1vZHVsZXNcIjtcclxuaW1wb3J0IFN0cmluZ3MgZnJvbSBcIi4vc3RyaW5nc1wiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgbmV3IGNsYXNzIFNldHRpbmdzTWFuYWdlciB7XHJcblxyXG4gICAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHt9O1xyXG4gICAgICAgIHRoaXMuY29sbGVjdGlvbnMgPSBbXTtcclxuICAgICAgICB0aGlzLnBhbmVscyA9IFtdO1xyXG4gICAgICAgIHRoaXMudXBkYXRlU3RyaW5ncyA9IHRoaXMudXBkYXRlU3RyaW5ncy5iaW5kKHRoaXMpO1xyXG4gICAgfVxyXG5cclxuICAgIGluaXRpYWxpemUoKSB7XHJcbiAgICAgICAgdGhpcy5yZWdpc3RlckNvbGxlY3Rpb24oXCJzZXR0aW5nc1wiLCBcIlNldHRpbmdzXCIsIFNldHRpbmdzQ29uZmlnKTtcclxuICAgICAgICBFdmVudHMub24oXCJzdHJpbmdzLXVwZGF0ZWRcIiwgdGhpcy51cGRhdGVTdHJpbmdzKTtcclxuICAgICAgICAvLyB0aGlzLnBhdGNoU2VjdGlvbnMoKTtcclxuICAgIH1cclxuXHJcbiAgICByZWdpc3RlckNvbGxlY3Rpb24oaWQsIG5hbWUsIHNldHRpbmdzLCBidXR0b24gPSBudWxsKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuY29sbGVjdGlvbnMuZmluZChjID0+IGMuaWQgPT0gaWQpKSByZXR1cm4gTG9nZ2VyLmVycm9yKFwiU2V0dGluZ3NcIiwgXCJBbHJlYWR5IGhhdmUgYSBjb2xsZWN0aW9uIHdpdGggaWQgXCIgKyBpZCk7XHJcbiAgICAgICAgdGhpcy5jb2xsZWN0aW9ucy5wdXNoKHtcclxuICAgICAgICAgICAgdHlwZTogXCJjb2xsZWN0aW9uXCIsXHJcbiAgICAgICAgICAgIGlkOiBpZCxcclxuICAgICAgICAgICAgbmFtZTogbmFtZSxcclxuICAgICAgICAgICAgc2V0dGluZ3M6IHNldHRpbmdzLFxyXG4gICAgICAgICAgICBidXR0b246IGJ1dHRvblxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuc2V0dXBDb2xsZWN0aW9uKGlkKTtcclxuICAgICAgICB0aGlzLmxvYWRDb2xsZWN0aW9uKGlkKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZVN0cmluZ3MoKTtcclxuICAgIH1cclxuXHJcbiAgICByZW1vdmVDb2xsZWN0aW9uKGlkKSB7XHJcbiAgICAgICAgY29uc3QgbG9jYXRpb24gPSB0aGlzLmNvbGxlY3Rpb25zLmZpbmRJbmRleChjID0+IGMuaWQgPT0gaWQpO1xyXG4gICAgICAgIGlmICghbG9jYXRpb24gPCAwKSByZXR1cm4gTG9nZ2VyLmVycm9yKFwiU2V0dGluZ3NcIiwgXCJObyBjb2xsZWN0aW9uIHdpdGggaWQgXCIgKyBpZCk7XHJcbiAgICAgICAgdGhpcy5jb2xsZWN0aW9ucy5zcGxpY2UobG9jYXRpb24sIDEpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFRPRE86IE1vdmUgdGhpcyB0byBTZXR0aW5nc1JlbmRlcmVyIGFuZCBhbHNvIGFkZCBhIHJlZ2lzdGVyQ29udGVudFBhbmVsXHJcbiAgICByZWdpc3RlclBhbmVsKGlkLCBuYW1lLCBvcHRpb25zKSB7XHJcbiAgICAgICAgaWYgKHRoaXMucGFuZWxzLmZpbmQocCA9PiBwLmlkID09IGlkKSkgcmV0dXJuIExvZ2dlci5lcnJvcihcIlNldHRpbmdzXCIsIFwiQWxyZWFkeSBoYXZlIGEgcGFuZWwgd2l0aCBpZCBcIiArIGlkKTtcclxuICAgICAgICBjb25zdCB7ZWxlbWVudCwgb25DbGljaywgb3JkZXIgPSAxfSA9IG9wdGlvbnM7XHJcbiAgICAgICAgY29uc3Qgc2VjdGlvbiA9IHtpZCwgb3JkZXIsIGxhYmVsOiBuYW1lLCBzZWN0aW9uOiBpZH07XHJcbiAgICAgICAgaWYgKG9uQ2xpY2spIHNlY3Rpb24uY2xpY2tMaXN0ZW5lciA9IG9uQ2xpY2s7XHJcbiAgICAgICAgaWYgKGVsZW1lbnQpIHNlY3Rpb24uZWxlbWVudCA9IGVsZW1lbnQgaW5zdGFuY2VvZiBEaXNjb3JkTW9kdWxlcy5SZWFjdC5Db21wb25lbnQgPyAoKSA9PiBEaXNjb3JkTW9kdWxlcy5SZWFjdC5jcmVhdGVFbGVtZW50KGVsZW1lbnQsIHt9KSA6IHR5cGVvZihlbGVtZW50KSA9PSBcImZ1bmN0aW9uXCIgPyBlbGVtZW50IDogKCkgPT4gZWxlbWVudDtcclxuICAgICAgICB0aGlzLnBhbmVscy5wdXNoKHNlY3Rpb24pO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbW92ZVBhbmVsKGlkKSB7XHJcbiAgICAgICAgY29uc3QgbG9jYXRpb24gPSB0aGlzLnBhbmVscy5maW5kSW5kZXgoYyA9PiBjLmlkID09IGlkKTtcclxuICAgICAgICBpZiAoIWxvY2F0aW9uIDwgMCkgcmV0dXJuIExvZ2dlci5lcnJvcihcIlNldHRpbmdzXCIsIFwiTm8gY29sbGVjdGlvbiB3aXRoIGlkIFwiICsgaWQpO1xyXG4gICAgICAgIHRoaXMucGFuZWxzLnNwbGljZShsb2NhdGlvbiwgMSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0UGF0aChwYXRoLCBjb2xsZWN0aW9uSWQgPSBcIlwiLCBjYXRlZ29yeUlkID0gXCJcIikge1xyXG4gICAgICAgIGNvbnN0IGNvbGxlY3Rpb24gPSBwYXRoLmxlbmd0aCA9PSAzID8gcGF0aFswXSA6IGNvbGxlY3Rpb25JZDtcclxuICAgICAgICBjb25zdCBjYXRlZ29yeSA9IHBhdGgubGVuZ3RoID09IDMgPyBwYXRoWzFdIDogcGF0aC5sZW5ndGggPT0gMiA/IHBhdGhbMF0gOiBjYXRlZ29yeUlkO1xyXG4gICAgICAgIGNvbnN0IHNldHRpbmcgPSBwYXRoW3BhdGgubGVuZ3RoIC0gMV07XHJcbiAgICAgICAgcmV0dXJuIHtjb2xsZWN0aW9uLCBjYXRlZ29yeSwgc2V0dGluZ307XHJcbiAgICB9XHJcblxyXG4gICAgc2V0dXBDb2xsZWN0aW9uKGlkKSB7XHJcbiAgICAgICAgY29uc3QgY29sbGVjdGlvbiA9IHRoaXMuY29sbGVjdGlvbnMuZmluZChjID0+IGMuaWQgPT0gaWQpO1xyXG4gICAgICAgIGlmICghY29sbGVjdGlvbikgcmV0dXJuO1xyXG4gICAgICAgIGNvbnN0IGNhdGVnb3JpZXMgPSBjb2xsZWN0aW9uLnNldHRpbmdzO1xyXG4gICAgICAgIGlmICghdGhpcy5zdGF0ZVtjb2xsZWN0aW9uLmlkXSkgdGhpcy5zdGF0ZVtjb2xsZWN0aW9uLmlkXSA9IHt9O1xyXG4gICAgICAgIGZvciAobGV0IGNjID0gMDsgY2MgPCBjYXRlZ29yaWVzLmxlbmd0aDsgY2MrKykge1xyXG4gICAgICAgICAgICBjb25zdCBjYXRlZ29yeSA9IGNhdGVnb3JpZXNbY2NdO1xyXG4gICAgICAgICAgICBpZiAoY2F0ZWdvcnkudHlwZSAhPSBcImNhdGVnb3J5XCIpIHtpZiAoIXRoaXMuc3RhdGVbY29sbGVjdGlvbi5pZF0uaGFzT3duUHJvcGVydHkoY2F0ZWdvcnkuaWQpKSB0aGlzLnN0YXRlW2NvbGxlY3Rpb24uaWRdW2NhdGVnb3J5LmlkXSA9IGNhdGVnb3J5LnZhbHVlO31cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuc3RhdGVbY29sbGVjdGlvbi5pZF0uaGFzT3duUHJvcGVydHkoY2F0ZWdvcnkuaWQpKSB0aGlzLnN0YXRlW2NvbGxlY3Rpb24uaWRdW2NhdGVnb3J5LmlkXSA9IHt9O1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgcyA9IDA7IHMgPCBjYXRlZ29yeS5zZXR0aW5ncy5sZW5ndGg7IHMrKykge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNldHRpbmcgPSBjYXRlZ29yeS5zZXR0aW5nc1tzXTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuc3RhdGVbY29sbGVjdGlvbi5pZF1bY2F0ZWdvcnkuaWRdLmhhc093blByb3BlcnR5KHNldHRpbmcuaWQpKSB0aGlzLnN0YXRlW2NvbGxlY3Rpb24uaWRdW2NhdGVnb3J5LmlkXVtzZXR0aW5nLmlkXSA9IHNldHRpbmcudmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmcuaGFzT3duUHJvcGVydHkoXCJkaXNhYmxlZFwiKSkgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFzZXR0aW5nLmVuYWJsZVdpdGggJiYgIXNldHRpbmcuZGlzYWJsZVdpdGgpIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhdGhTdHJpbmcgPSBzZXR0aW5nLmVuYWJsZVdpdGggfHwgc2V0dGluZy5kaXNhYmxlV2l0aDtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXRoID0gdGhpcy5nZXRQYXRoKHBhdGhTdHJpbmcuc3BsaXQoXCIuXCIpLCBjb2xsZWN0aW9uLmlkLCBjYXRlZ29yeS5pZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHNldHRpbmcsIFwiZGlzYWJsZWRcIiwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBnZXQ6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG90aGVyID0gdGhpcy5zdGF0ZVtwYXRoLmNvbGxlY3Rpb25dW3BhdGguY2F0ZWdvcnldW3BhdGguc2V0dGluZ107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2V0dGluZy5lbmFibGVXaXRoID8gIW90aGVyIDogb3RoZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzYXZlU2V0dGluZ3MoKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBjb2xsZWN0aW9uIGluIHRoaXMuc3RhdGUpIHRoaXMuc2F2ZUNvbGxlY3Rpb24oY29sbGVjdGlvbik7XHJcbiAgICB9XHJcblxyXG4gICAgbG9hZFNldHRpbmdzKCkge1xyXG4gICAgICAgIGZvciAoY29uc3QgY29sbGVjdGlvbiBpbiB0aGlzLnN0YXRlKSB0aGlzLmxvYWRDb2xsZWN0aW9uKGNvbGxlY3Rpb24pO1xyXG4gICAgfVxyXG5cclxuICAgIHNhdmVDb2xsZWN0aW9uKGNvbGxlY3Rpb24pIHtcclxuICAgICAgICBEYXRhU3RvcmUuc2V0RGF0YShjb2xsZWN0aW9uLCB0aGlzLnN0YXRlW2NvbGxlY3Rpb25dKTtcclxuICAgIH1cclxuXHJcbiAgICBsb2FkQ29sbGVjdGlvbihpZCkge1xyXG4gICAgICAgIGNvbnN0IHByZXZpb3VzU3RhdGUgPSBEYXRhU3RvcmUuZ2V0RGF0YShpZCk7XHJcbiAgICAgICAgaWYgKCFwcmV2aW91c1N0YXRlKSByZXR1cm4gdGhpcy5zYXZlQ29sbGVjdGlvbihpZCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBjYXRlZ29yeSBpbiB0aGlzLnN0YXRlW2lkXSkge1xyXG4gICAgICAgICAgICBpZiAoIXByZXZpb3VzU3RhdGVbY2F0ZWdvcnldKSBPYmplY3QuYXNzaWduKHByZXZpb3VzU3RhdGUsIHtbY2F0ZWdvcnldOiB0aGlzLnN0YXRlW2lkXVtjYXRlZ29yeV19KTtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBzZXR0aW5nIGluIHRoaXMuc3RhdGVbaWRdW2NhdGVnb3J5XSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHByZXZpb3VzU3RhdGVbY2F0ZWdvcnldW3NldHRpbmddID09IHVuZGVmaW5lZCkgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBzZXR0aW5nT2JqID0gdGhpcy5nZXRTZXR0aW5nKGlkLCBjYXRlZ29yeSwgc2V0dGluZyk7XHJcbiAgICAgICAgICAgICAgICBpZiAoc2V0dGluZ09iai50eXBlID09IFwic3dpdGNoXCIpIHRoaXMuc3RhdGVbaWRdW2NhdGVnb3J5XVtzZXR0aW5nXSA9IHByZXZpb3VzU3RhdGVbY2F0ZWdvcnldW3NldHRpbmddO1xyXG4gICAgICAgICAgICAgICAgaWYgKHNldHRpbmdPYmoudHlwZSA9PSBcImRyb3Bkb3duXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBleGlzdHMgPSBzZXR0aW5nT2JqLm9wdGlvbnMuc29tZShvID0+IG8udmFsdWUgPT0gcHJldmlvdXNTdGF0ZVtjYXRlZ29yeV1bc2V0dGluZ10pO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChleGlzdHMpIHRoaXMuc3RhdGVbaWRdW2NhdGVnb3J5XVtzZXR0aW5nXSA9IHByZXZpb3VzU3RhdGVbY2F0ZWdvcnldW3NldHRpbmddO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnNhdmVDb2xsZWN0aW9uKGlkKTsgLy8gaW4gY2FzZSBuZXcgdGhpbmdzIHdlcmUgYWRkZWRcclxuICAgIH1cclxuXHJcbiAgICBvblNldHRpbmdDaGFuZ2UoY29sbGVjdGlvbiwgY2F0ZWdvcnksIGlkLCB2YWx1ZSkge1xyXG4gICAgICAgIHRoaXMuc3RhdGVbY29sbGVjdGlvbl1bY2F0ZWdvcnldW2lkXSA9IHZhbHVlO1xyXG4gICAgICAgIEV2ZW50cy5kaXNwYXRjaChcInNldHRpbmctdXBkYXRlZFwiLCBjb2xsZWN0aW9uLCBjYXRlZ29yeSwgaWQsIHZhbHVlKTtcclxuICAgICAgICB0aGlzLnNhdmVDb2xsZWN0aW9uKGNvbGxlY3Rpb24pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFNldHRpbmcoY29sbGVjdGlvbiwgY2F0ZWdvcnksIGlkKSB7XHJcbiAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT0gMikgcmV0dXJuIHRoaXMuY29sbGVjdGlvbnNbMF0uZmluZChjID0+IGMuaWQgPT0gYXJndW1lbnRzWzBdKS5zZXR0aW5ncy5maW5kKHMgPT4gcy5pZCA9PSBhcmd1bWVudHNbMV0pO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNvbGxlY3Rpb25zLmZpbmQoYyA9PiBjLmlkID09IGNvbGxlY3Rpb24pLnNldHRpbmdzLmZpbmQoYyA9PiBjLmlkID09IGNhdGVnb3J5KS5zZXR0aW5ncy5maW5kKHMgPT4gcy5pZCA9PSBpZCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0KGNvbGxlY3Rpb24sIGNhdGVnb3J5LCBpZCkge1xyXG4gICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09IDIpIHtcclxuICAgICAgICAgICAgaWQgPSBjYXRlZ29yeTtcclxuICAgICAgICAgICAgY2F0ZWdvcnkgPSBjb2xsZWN0aW9uO1xyXG4gICAgICAgICAgICBjb2xsZWN0aW9uID0gXCJzZXR0aW5nc1wiO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIXRoaXMuc3RhdGVbY29sbGVjdGlvbl0gfHwgIXRoaXMuc3RhdGVbY29sbGVjdGlvbl1bY2F0ZWdvcnldKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhdGVbY29sbGVjdGlvbl1bY2F0ZWdvcnldW2lkXTtcclxuICAgIH1cclxuXHJcbiAgICBzZXQoY29sbGVjdGlvbiwgY2F0ZWdvcnksIGlkLCB2YWx1ZSkge1xyXG4gICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09IDMpIHtcclxuICAgICAgICAgICAgdmFsdWUgPSBpZDtcclxuICAgICAgICAgICAgaWQgPSBjYXRlZ29yeTtcclxuICAgICAgICAgICAgY2F0ZWdvcnkgPSBjb2xsZWN0aW9uO1xyXG4gICAgICAgICAgICBjb2xsZWN0aW9uID0gXCJzZXR0aW5nc1wiO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy5vblNldHRpbmdDaGFuZ2UoY29sbGVjdGlvbiwgY2F0ZWdvcnksIGlkLCB2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgb24oY29sbGVjdGlvbiwgY2F0ZWdvcnksIGlkZW50aWZpZXIsIGNhbGxiYWNrKSB7XHJcbiAgICAgICAgY29uc3QgaGFuZGxlciA9IChjb2wsIGNhdCwgaWQsIHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChjb2wgIT09IGNvbGxlY3Rpb24gfHwgY2F0ICE9PSBjYXRlZ29yeSB8fCBpZCAhPT0gaWRlbnRpZmllcikgcmV0dXJuO1xyXG4gICAgICAgICAgICBjYWxsYmFjayh2YWx1ZSk7XHJcbiAgICAgICAgfTtcclxuICAgICAgICBFdmVudHMub24oXCJzZXR0aW5nLXVwZGF0ZWRcIiwgaGFuZGxlcik7XHJcbiAgICAgICAgcmV0dXJuICgpID0+IHtFdmVudHMub2ZmKFwic2V0dGluZy11cGRhdGVkXCIsIGhhbmRsZXIpO307XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlU3RyaW5ncygpIHtcclxuICAgICAgICAvLyBVcGRhdGUgc2V0dGluZ3MgY29sbGVjdGlvbnNcclxuICAgICAgICBmb3IgKGxldCBjID0gMDsgYyA8IHRoaXMuY29sbGVjdGlvbnMubGVuZ3RoOyBjKyspIHtcclxuICAgICAgICAgICAgY29uc3QgY29sbGVjdGlvbiA9IHRoaXMuY29sbGVjdGlvbnNbY107XHJcbiAgICAgICAgICAgIGNvbnN0IENTID0gU3RyaW5ncy5Db2xsZWN0aW9uc1tjb2xsZWN0aW9uLmlkXTtcclxuICAgICAgICAgICAgaWYgKCFDUykgY29udGludWU7XHJcbiAgICAgICAgICAgIGNvbGxlY3Rpb24ubmFtZSA9IENTLm5hbWUgfHwgY29sbGVjdGlvbi5uYW1lO1xyXG4gICAgICAgICAgICBjb25zdCBjYXRlZ29yaWVzID0gdGhpcy5jb2xsZWN0aW9uc1tjXS5zZXR0aW5ncztcclxuICAgICAgICAgICAgZm9yIChsZXQgY2F0ID0gMDsgY2F0IDwgY2F0ZWdvcmllcy5sZW5ndGg7IGNhdCsrKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjYXRlZ29yeSA9IGNhdGVnb3JpZXNbY2F0XTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IENhdFN0ciA9IENTW2NhdGVnb3J5LmlkXTtcclxuICAgICAgICAgICAgICAgIGlmICghQ2F0U3RyKSBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIGNhdGVnb3J5Lm5hbWUgPSBDYXRTdHIubmFtZSB8fCBjYXRlZ29yeS5uYW1lO1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgcyA9IDA7IHMgPCBjYXRlZ29yeS5zZXR0aW5ncy5sZW5ndGg7IHMrKykge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNldHRpbmcgPSBjYXRlZ29yeS5zZXR0aW5nc1tzXTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBTZXRTdHIgPSBDYXRTdHJbc2V0dGluZy5pZF07XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFTZXRTdHIpIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIHNldHRpbmcubmFtZSA9IFNldFN0ci5uYW1lIHx8IHNldHRpbmcubmFtZTtcclxuICAgICAgICAgICAgICAgICAgICBzZXR0aW5nLm5vdGUgPSBTZXRTdHIubm90ZSB8fCBzZXR0aW5nLm5vdGU7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFzZXR0aW5nLm9wdGlvbnMpIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3Qgb3B0IG9mIHNldHRpbmcub3B0aW9ucykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHQubGFiZWwgPSBTZXRTdHIub3B0aW9uc1tvcHQuaWRdIHx8IFNldFN0ci5vcHRpb25zW29wdC52YWx1ZV0gfHwgb3B0LmxhYmVsO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gVXBkYXRlIHBhbmVsIGxhYmVsc1xyXG4gICAgICAgIGZvciAobGV0IHAgPSAwOyBwIDwgdGhpcy5wYW5lbHMubGVuZ3RoOyBwKyspIHtcclxuICAgICAgICAgICAgY29uc3QgcGFuZWwgPSB0aGlzLnBhbmVsc1twXTtcclxuICAgICAgICAgICAgY29uc3QgU3RyID0gU3RyaW5ncy5QYW5lbHNbcGFuZWwuaWRdO1xyXG4gICAgICAgICAgICBwYW5lbC5sYWJlbCA9IFN0ciB8fCBwYW5lbC5sYWJlbDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/settingsmanager.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var data__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! data */ \"./src/data/data.js\");\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./logger */ \"./src/modules/logger.js\");\n/* harmony import */ var _datastore__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./datastore */ \"./src/modules/datastore.js\");\n/* harmony import */ var _emitter__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./emitter */ \"./src/modules/emitter.js\");\n/* harmony import */ var _discordmodules__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./discordmodules */ \"./src/modules/discordmodules.js\");\n/* harmony import */ var _strings__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./strings */ \"./src/modules/strings.js\");\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class SettingsManager {\n constructor() {\n this.state = {};\n this.collections = [];\n this.panels = [];\n this.updateStrings = this.updateStrings.bind(this);\n }\n\n initialize() {\n this.registerCollection(\"settings\", \"Settings\", data__WEBPACK_IMPORTED_MODULE_0__[\"SettingsConfig\"]);\n _emitter__WEBPACK_IMPORTED_MODULE_3__[\"default\"].on(\"strings-updated\", this.updateStrings); // this.patchSections();\n }\n\n registerCollection(id, name, settings, button = null) {\n if (this.collections.find(c => c.id == id)) return _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].error(\"Settings\", \"Already have a collection with id \" + id);\n this.collections.push({\n type: \"collection\",\n id: id,\n name: name,\n settings: settings,\n button: button\n });\n this.setupCollection(id);\n this.loadCollection(id);\n this.updateStrings();\n }\n\n removeCollection(id) {\n const location = this.collections.findIndex(c => c.id == id);\n if (!location < 0) return _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].error(\"Settings\", \"No collection with id \" + id);\n this.collections.splice(location, 1);\n } // TODO: Move this to SettingsRenderer and also add a registerContentPanel\n\n\n registerPanel(id, name, options) {\n if (this.panels.find(p => p.id == id)) return _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].error(\"Settings\", \"Already have a panel with id \" + id);\n const {\n element,\n onClick,\n order = 1\n } = options;\n const section = {\n id,\n order,\n label: name,\n section: id\n };\n if (onClick) section.clickListener = onClick;\n if (element) section.element = element instanceof _discordmodules__WEBPACK_IMPORTED_MODULE_4__[\"default\"].React.Component ? () => _discordmodules__WEBPACK_IMPORTED_MODULE_4__[\"default\"].React.createElement(element, {}) : typeof element == \"function\" ? element : () => element;\n this.panels.push(section);\n }\n\n removePanel(id) {\n const location = this.panels.findIndex(c => c.id == id);\n if (!location < 0) return _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].error(\"Settings\", \"No collection with id \" + id);\n this.panels.splice(location, 1);\n }\n\n getPath(path, collectionId = \"\", categoryId = \"\") {\n const collection = path.length == 3 ? path[0] : collectionId;\n const category = path.length == 3 ? path[1] : path.length == 2 ? path[0] : categoryId;\n const setting = path[path.length - 1];\n return {\n collection,\n category,\n setting\n };\n }\n\n setupCollection(id) {\n const collection = this.collections.find(c => c.id == id);\n if (!collection) return;\n const categories = collection.settings;\n if (!this.state[collection.id]) this.state[collection.id] = {};\n\n for (let cc = 0; cc < categories.length; cc++) {\n const category = categories[cc];\n\n if (category.type != \"category\") {\n if (!this.state[collection.id].hasOwnProperty(category.id)) this.state[collection.id][category.id] = category.value;\n } else {\n if (!this.state[collection.id].hasOwnProperty(category.id)) this.state[collection.id][category.id] = {};\n\n for (let s = 0; s < category.settings.length; s++) {\n const setting = category.settings[s];\n if (!this.state[collection.id][category.id].hasOwnProperty(setting.id)) this.state[collection.id][category.id][setting.id] = setting.value;\n if (setting.hasOwnProperty(\"disabled\")) continue;\n if (!setting.enableWith && !setting.disableWith) continue;\n const pathString = setting.enableWith || setting.disableWith;\n const path = this.getPath(pathString.split(\".\"), collection.id, category.id);\n Object.defineProperty(setting, \"disabled\", {\n get: () => {\n const other = this.state[path.collection][path.category][path.setting];\n return setting.enableWith ? !other : other;\n }\n });\n }\n }\n }\n }\n\n saveSettings() {\n for (const collection in this.state) this.saveCollection(collection);\n }\n\n loadSettings() {\n for (const collection in this.state) this.loadCollection(collection);\n }\n\n saveCollection(collection) {\n _datastore__WEBPACK_IMPORTED_MODULE_2__[\"default\"].setData(collection, this.state[collection]);\n }\n\n loadCollection(id) {\n const previousState = _datastore__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getData(id);\n if (!previousState) return this.saveCollection(id);\n\n for (const category in this.state[id]) {\n if (!previousState[category]) Object.assign(previousState, {\n [category]: this.state[id][category]\n });\n\n for (const setting in this.state[id][category]) {\n if (previousState[category][setting] == undefined) continue;\n const settingObj = this.getSetting(id, category, setting);\n if (settingObj.type == \"switch\") this.state[id][category][setting] = previousState[category][setting];\n\n if (settingObj.type == \"dropdown\") {\n const exists = settingObj.options.some(o => o.value == previousState[category][setting]);\n if (exists) this.state[id][category][setting] = previousState[category][setting];\n }\n }\n }\n\n this.saveCollection(id); // in case new things were added\n }\n\n onSettingChange(collection, category, id, value) {\n this.state[collection][category][id] = value;\n _emitter__WEBPACK_IMPORTED_MODULE_3__[\"default\"].dispatch(\"setting-updated\", collection, category, id, value);\n this.saveCollection(collection);\n }\n\n getSetting(collection, category, id) {\n if (arguments.length == 2) return this.collections[0].find(c => c.id == arguments[0]).settings.find(s => s.id == arguments[1]);\n return this.collections.find(c => c.id == collection).settings.find(c => c.id == category).settings.find(s => s.id == id);\n }\n\n get(collection, category, id) {\n if (arguments.length == 2) {\n id = category;\n category = collection;\n collection = \"settings\";\n }\n\n if (!this.state[collection] || !this.state[collection][category]) return false;\n return this.state[collection][category][id];\n }\n\n set(collection, category, id, value) {\n if (arguments.length == 3) {\n value = id;\n id = category;\n category = collection;\n collection = \"settings\";\n }\n\n return this.onSettingChange(collection, category, id, value);\n }\n\n on(collection, category, identifier, callback) {\n const handler = (col, cat, id, value) => {\n if (col !== collection || cat !== category || id !== identifier) return;\n callback(value);\n };\n\n _emitter__WEBPACK_IMPORTED_MODULE_3__[\"default\"].on(\"setting-updated\", handler);\n return () => {\n _emitter__WEBPACK_IMPORTED_MODULE_3__[\"default\"].off(\"setting-updated\", handler);\n };\n }\n\n updateStrings() {\n // Update settings collections\n for (let c = 0; c < this.collections.length; c++) {\n const collection = this.collections[c];\n const CS = _strings__WEBPACK_IMPORTED_MODULE_5__[\"default\"].Collections[collection.id];\n if (!CS) continue;\n collection.name = CS.name || collection.name;\n const categories = this.collections[c].settings;\n\n for (let cat = 0; cat < categories.length; cat++) {\n const category = categories[cat];\n const CatStr = CS[category.id];\n if (!CatStr) continue;\n category.name = CatStr.name || category.name;\n\n for (let s = 0; s < category.settings.length; s++) {\n const setting = category.settings[s];\n const SetStr = CatStr[setting.id];\n if (!SetStr) continue;\n setting.name = SetStr.name || setting.name;\n setting.note = SetStr.note || setting.note;\n if (!setting.options) continue;\n\n for (const opt of setting.options) {\n opt.label = SetStr.options[opt.id] || SetStr.options[opt.value] || opt.label;\n }\n }\n }\n } // Update panel labels\n\n\n for (let p = 0; p < this.panels.length; p++) {\n const panel = this.panels[p];\n const Str = _strings__WEBPACK_IMPORTED_MODULE_5__[\"default\"].Panels[panel.id];\n panel.label = Str || panel.label;\n }\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9zZXR0aW5nc21hbmFnZXIuanM/YjJmOSJdLCJuYW1lcyI6WyJTZXR0aW5nc01hbmFnZXIiLCJjb25zdHJ1Y3RvciIsInN0YXRlIiwiY29sbGVjdGlvbnMiLCJwYW5lbHMiLCJ1cGRhdGVTdHJpbmdzIiwiYmluZCIsImluaXRpYWxpemUiLCJyZWdpc3RlckNvbGxlY3Rpb24iLCJTZXR0aW5nc0NvbmZpZyIsIkV2ZW50cyIsIm9uIiwiaWQiLCJuYW1lIiwic2V0dGluZ3MiLCJidXR0b24iLCJmaW5kIiwiYyIsIkxvZ2dlciIsImVycm9yIiwicHVzaCIsInR5cGUiLCJzZXR1cENvbGxlY3Rpb24iLCJsb2FkQ29sbGVjdGlvbiIsInJlbW92ZUNvbGxlY3Rpb24iLCJsb2NhdGlvbiIsImZpbmRJbmRleCIsInNwbGljZSIsInJlZ2lzdGVyUGFuZWwiLCJvcHRpb25zIiwicCIsImVsZW1lbnQiLCJvbkNsaWNrIiwib3JkZXIiLCJzZWN0aW9uIiwibGFiZWwiLCJjbGlja0xpc3RlbmVyIiwiRGlzY29yZE1vZHVsZXMiLCJSZWFjdCIsIkNvbXBvbmVudCIsImNyZWF0ZUVsZW1lbnQiLCJyZW1vdmVQYW5lbCIsImdldFBhdGgiLCJwYXRoIiwiY29sbGVjdGlvbklkIiwiY2F0ZWdvcnlJZCIsImNvbGxlY3Rpb24iLCJsZW5ndGgiLCJjYXRlZ29yeSIsInNldHRpbmciLCJjYXRlZ29yaWVzIiwiY2MiLCJoYXNPd25Qcm9wZXJ0eSIsInZhbHVlIiwicyIsImVuYWJsZVdpdGgiLCJkaXNhYmxlV2l0aCIsInBhdGhTdHJpbmciLCJzcGxpdCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0Iiwib3RoZXIiLCJzYXZlU2V0dGluZ3MiLCJzYXZlQ29sbGVjdGlvbiIsImxvYWRTZXR0aW5ncyIsIkRhdGFTdG9yZSIsInNldERhdGEiLCJwcmV2aW91c1N0YXRlIiwiZ2V0RGF0YSIsImFzc2lnbiIsInVuZGVmaW5lZCIsInNldHRpbmdPYmoiLCJnZXRTZXR0aW5nIiwiZXhpc3RzIiwic29tZSIsIm8iLCJvblNldHRpbmdDaGFuZ2UiLCJkaXNwYXRjaCIsImFyZ3VtZW50cyIsInNldCIsImlkZW50aWZpZXIiLCJjYWxsYmFjayIsImhhbmRsZXIiLCJjb2wiLCJjYXQiLCJvZmYiLCJDUyIsIlN0cmluZ3MiLCJDb2xsZWN0aW9ucyIsIkNhdFN0ciIsIlNldFN0ciIsIm5vdGUiLCJvcHQiLCJwYW5lbCIsIlN0ciIsIlBhbmVscyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFZSxtRUFBSSxNQUFNQSxlQUFOLENBQXNCO0FBRXJDQyxhQUFXLEdBQUc7QUFDVixTQUFLQyxLQUFMLEdBQWEsRUFBYjtBQUNBLFNBQUtDLFdBQUwsR0FBbUIsRUFBbkI7QUFDQSxTQUFLQyxNQUFMLEdBQWMsRUFBZDtBQUNBLFNBQUtDLGFBQUwsR0FBcUIsS0FBS0EsYUFBTCxDQUFtQkMsSUFBbkIsQ0FBd0IsSUFBeEIsQ0FBckI7QUFDSDs7QUFFREMsWUFBVSxHQUFHO0FBQ1QsU0FBS0Msa0JBQUwsQ0FBd0IsVUFBeEIsRUFBb0MsVUFBcEMsRUFBZ0RDLG1EQUFoRDtBQUNBQyxvREFBTSxDQUFDQyxFQUFQLENBQVUsaUJBQVYsRUFBNkIsS0FBS04sYUFBbEMsRUFGUyxDQUdUO0FBQ0g7O0FBRURHLG9CQUFrQixDQUFDSSxFQUFELEVBQUtDLElBQUwsRUFBV0MsUUFBWCxFQUFxQkMsTUFBTSxHQUFHLElBQTlCLEVBQW9DO0FBQ2xELFFBQUksS0FBS1osV0FBTCxDQUFpQmEsSUFBakIsQ0FBc0JDLENBQUMsSUFBSUEsQ0FBQyxDQUFDTCxFQUFGLElBQVFBLEVBQW5DLENBQUosRUFBNEMsT0FBT00sK0NBQU0sQ0FBQ0MsS0FBUCxDQUFhLFVBQWIsRUFBeUIsdUNBQXVDUCxFQUFoRSxDQUFQO0FBQzVDLFNBQUtULFdBQUwsQ0FBaUJpQixJQUFqQixDQUFzQjtBQUNs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LE9BQU8sQ0FBQ3BDLElBQXRDO0FBQ0FvQyxpQkFBTyxDQUFDMkMsSUFBUixHQUFlRCxNQUFNLENBQUNDLElBQVAsSUFBZTNDLE9BQU8sQ0FBQzJDLElBQXRDO0FBQ0EsY0FBSSxDQUFDM0MsT0FBTyxDQUFDcEIsT0FBYixFQUFzQjs7QUFDdEIsZUFBSyxNQUFNZ0UsR0FBWCxJQUFrQjVDLE9BQU8sQ0FBQ3BCLE9BQTFCLEVBQW1DO0FBQy9CZ0UsZUFBRyxDQUFDMUQsS0FBSixHQUFZd0QsTUFBTSxDQUFDOUQsT0FBUCxDQUFlZ0UsR0FBRyxDQUFDakYsRUFBbkIsS0FBMEIrRSxNQUFNLENBQUM5RCxPQUFQLENBQWVnRSxHQUFHLENBQUN4QyxLQUFuQixDQUExQixJQUF1RHdDLEdBQUcsQ0FBQzFELEtBQXZFO0FBQ0g7QUFDSjtBQUNKO0FBQ0osS0F6QlcsQ0EyQlo7OztBQUNBLFNBQUssSUFBSUwsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBRyxLQUFLMUIsTUFBTCxDQUFZMkMsTUFBaEMsRUFBd0NqQixDQUFDLEVBQXpDLEVBQTZDO0FBQ3pDLFlBQU1nRSxLQUFLLEdBQUcsS0FBSzFGLE1BQUwsQ0FBWTBCLENBQVosQ0FBZDtBQUNBLFlBQU1pRSxHQUFHLEdBQUdQLGdEQUFPLENBQUNRLE1BQVIsQ0FBZUYsS0FBSyxDQUFDbEYsRUFBckIsQ0FBWjtBQUNBa0YsV0FBSyxDQUFDM0QsS0FBTixHQUFjNEQsR0FBRyxJQUFJRCxLQUFLLENBQUMzRCxLQUEzQjtBQUNIO0FBQ0o7O0FBOUxvQyxDQUExQixFQUFmIiwiZmlsZSI6Ii4vc3JjL21vZHVsZXMvc2V0dGluZ3NtYW5hZ2VyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtTZXR0aW5nc0NvbmZpZ30gZnJvbSBcImRhdGFcIjtcclxuaW1wb3J0IExvZ2dlciBmcm9tIFwiLi9sb2dnZXJcIjtcclxuaW1wb3J0IERhdGFTdG9yZSBmcm9tIFwiLi9kYXRhc3RvcmVcIjtcclxuaW1wb3J0IEV2ZW50cyBmcm9tIFwiLi9lbWl0dGVyXCI7XHJcbmltcG9ydCBEaXNjb3JkTW9kdWxlcyBmcm9tIFwiLi9kaXNjb3JkbW9kdWxlc1wiO1xyXG5pbXBvcnQgU3RyaW5ncyBmcm9tIFwiLi9zdHJpbmdzXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBuZXcgY2xhc3MgU2V0dGluZ3NNYW5hZ2VyIHtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICB0aGlzLnN0YXRlID0ge307XHJcbiAgICAgICAgdGhpcy5jb2xsZWN0aW9ucyA9IFtdO1xyXG4gICAgICAgIHRoaXMucGFuZWxzID0gW107XHJcbiAgICAgICAgdGhpcy51cGRhdGVTdHJpbmdzID0gdGhpcy51cGRhdGVTdHJpbmdzLmJpbmQodGhpcyk7XHJcbiAgICB9XHJcblxyXG4gICAgaW5pdGlhbGl6ZSgpIHtcclxuICAgICAgICB0aGlzLnJlZ2lzdGVyQ29sbGVjdGlvbihcInNldHRpbmdzXCIsIFwiU2V0dGluZ3NcIiwgU2V0dGluZ3NDb25maWcpO1xyXG4gICAgICAgIEV2ZW50cy5vbihcInN0cmluZ3MtdXBkYXRlZFwiLCB0aGlzLnVwZGF0ZVN0cmluZ3MpO1xyXG4gICAgICAgIC8vIHRoaXMucGF0Y2hTZWN0aW9ucygpO1xyXG4gICAgfVxyXG5cclxuICAgIHJlZ2lzdGVyQ29sbGVjdGlvbihpZCwgbmFtZSwgc2V0dGluZ3MsIGJ1dHRvbiA9IG51bGwpIHtcclxuICAgICAgICBpZiAodGhpcy5jb2xsZWN0aW9ucy5maW5kKGMgPT4gYy5pZCA9PSBpZCkpIHJldHVybiBMb2dnZXIuZXJyb3IoXCJTZXR0aW5nc1wiLCBcIkFscmVhZHkgaGF2ZSBhIGNvbGxlY3Rpb24gd2l0aCBpZCBcIiArIGlkKTtcclxuICAgICAgICB0aGlzLmNvbGxlY3Rpb25zLnB1c2goe1xyXG4gICAgICAgICAgICB0eXBlOiBcImNvbGxlY3Rpb25cIixcclxuICAgICAgICAgICAgaWQ6IGlkLFxyXG4gICAgICAgICAgICBuYW1lOiBuYW1lLFxyXG4gICAgICAgICAgICBzZXR0aW5nczogc2V0dGluZ3MsXHJcbiAgICAgICAgICAgIGJ1dHRvbjogYnV0dG9uXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5zZXR1cENvbGxlY3Rpb24oaWQpO1xyXG4gICAgICAgIHRoaXMubG9hZENvbGxlY3Rpb24oaWQpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlU3RyaW5ncygpO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbW92ZUNvbGxlY3Rpb24oaWQpIHtcclxuICAgICAgICBjb25zdCBsb2NhdGlvbiA9IHRoaXMuY29sbGVjdGlvbnMuZmluZEluZGV4KGMgPT4gYy5pZCA9PSBpZCk7XHJcbiAgICAgICAgaWYgKCFsb2NhdGlvbiA8IDApIHJldHVybiBMb2dnZXIuZXJyb3IoXCJTZXR0aW5nc1wiLCBcIk5vIGNvbGxlY3Rpb24gd2l0aCBpZCBcIiArIGlkKTtcclxuICAgICAgICB0aGlzLmNvbGxlY3Rpb25zLnNwbGljZShsb2NhdGlvbiwgMSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gVE9ETzogTW92ZSB0aGlzIHRvIFNldHRpbmdzUmVuZGVyZXIgYW5kIGFsc28gYWRkIGEgcmVnaXN0ZXJDb250ZW50UGFuZWxcclxuICAgIHJlZ2lzdGVyUGFuZWwoaWQsIG5hbWUsIG9wdGlvbnMpIHtcclxuICAgICAgICBpZiAodGhpcy5wYW5lbHMuZmluZChwID0+IHAuaWQgPT0gaWQpKSByZXR1cm4gTG9nZ2VyLmVycm9yKFwiU2V0dGluZ3NcIiwgXCJBbHJlYWR5IGhhdmUgYSBwYW5lbCB3aXRoIGlkIFwiICsgaWQpO1xyXG4gICAgICAgIGNvbnN0IHtlbGVtZW50LCBvbkNsaWNrLCBvcmRlciA9IDF9ID0gb3B0aW9ucztcclxuICAgICAgICBjb25zdCBzZWN0aW9uID0ge2lkLCBvcmRlciwgbGFiZWw6IG5hbWUsIHNlY3Rpb246IGlkfTtcclxuICAgICAgICBpZiAob25DbGljaykgc2VjdGlvbi5jbGlja0xpc3RlbmVyID0gb25DbGljaztcclxuICAgICAgICBpZiAoZWxlbWVudCkgc2VjdGlvbi5lbGVtZW50ID0gZWxlbWVudCBpbnN0YW5jZW9mIERpc2NvcmRNb2R1bGVzLlJlYWN0LkNvbXBvbmVudCA/ICgpID0+IERpc2NvcmRNb2R1bGVzLlJlYWN0LmNyZWF0ZUVsZW1lbnQoZWxlbWVudCwge30pIDogdHlwZW9mKGVsZW1lbnQpID09IFwiZnVuY3Rpb25cIiA/IGVsZW1lbnQgOiAoKSA9PiBlbGVtZW50O1xyXG4gICAgICAgIHRoaXMucGFuZWxzLnB1c2goc2VjdGlvbik7XHJcbiAgICB9XHJcblxyXG4gICAgcmVtb3ZlUGFuZWwoaWQpIHtcclxuICAgICAgICBjb25zdCBsb2NhdGlvbiA9IHRoaXMucGFuZWxzLmZpbmRJbmRleChjID0+IGMuaWQgPT0gaWQpO1xyXG4gICAgICAgIGlmICghbG9jYXRpb24gPCAwKSByZXR1cm4gTG9nZ2VyLmVycm9yKFwiU2V0dGluZ3NcIiwgXCJObyBjb2xsZWN0aW9uIHdpdGggaWQgXCIgKyBpZCk7XHJcbiAgICAgICAgdGhpcy5wYW5lbHMuc3BsaWNlKGxvY2F0aW9uLCAxKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRQYXRoKHBhdGgsIGNvbGxlY3Rpb25JZCA9IFwiXCIsIGNhdGVnb3J5SWQgPSBcIlwiKSB7XHJcbiAgICAgICAgY29uc3QgY29sbGVjdGlvbiA9IHBhdGgubGVuZ3RoID09IDMgPyBwYXRoWzBdIDogY29sbGVjdGlvbklkO1xyXG4gICAgICAgIGNvbnN0IGNhdGVnb3J5ID0gcGF0aC5sZW5ndGggPT0gMyA/IHBhdGhbMV0gOiBwYXRoLmxlbmd0aCA9PSAyID8gcGF0aFswXSA6IGNhdGVnb3J5SWQ7XHJcbiAgICAgICAgY29uc3Qgc2V0dGluZyA9IHBhdGhbcGF0aC5sZW5ndGggLSAxXTtcclxuICAgICAgICByZXR1cm4ge2NvbGxlY3Rpb24sIGNhdGVnb3J5LCBzZXR0aW5nfTtcclxuICAgIH1cclxuXHJcbiAgICBzZXR1cENvbGxlY3Rpb24oaWQpIHtcclxuICAgICAgICBjb25zdCBjb2xsZWN0aW9uID0gdGhpcy5jb2xsZWN0aW9ucy5maW5kKGMgPT4gYy5pZCA9PSBpZCk7XHJcbiAgICAgICAgaWYgKCFjb2xsZWN0aW9uKSByZXR1cm47XHJcbiAgICAgICAgY29uc3QgY2F0ZWdvcmllcyA9IGNvbGxlY3Rpb24uc2V0dGluZ3M7XHJcbiAgICAgICAgaWYgKCF0aGlzLnN0YXRlW2NvbGxlY3Rpb24uaWRdKSB0aGlzLnN0YXRlW2NvbGxlY3Rpb24uaWRdID0ge307XHJcbiAgICAgICAgZm9yIChsZXQgY2MgPSAwOyBjYyA8IGNhdGVnb3JpZXMubGVuZ3RoOyBjYysrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNhdGVnb3J5ID0gY2F0ZWdvcmllc1tjY107XHJcbiAgICAgICAgICAgIGlmIChjYXRlZ29yeS50eXBlICE9IFwiY2F0ZWdvcnlcIikge2lmICghdGhpcy5zdGF0ZVtjb2xsZWN0aW9uLmlkXS5oYXNPd25Qcm9wZXJ0eShjYXRlZ29yeS5pZCkpIHRoaXMuc3RhdGVbY29sbGVjdGlvbi5pZF1bY2F0ZWdvcnkuaWRdID0gY2F0ZWdvcnkudmFsdWU7fVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5zdGF0ZVtjb2xsZWN0aW9uLmlkXS5oYXNPd25Qcm9wZXJ0eShjYXRlZ29yeS5pZCkpIHRoaXMuc3RhdGVbY29sbGVjdGlvbi5pZF1bY2F0ZWdvcnkuaWRdID0ge307XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBzID0gMDsgcyA8IGNhdGVnb3J5LnNldHRpbmdzLmxlbmd0aDsgcysrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2V0dGluZyA9IGNhdGVnb3J5LnNldHRpbmdzW3NdO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5zdGF0ZVtjb2xsZWN0aW9uLmlkXVtjYXRlZ29yeS5pZF0uaGFzT3duUHJvcGVydHkoc2V0dGluZy5pZCkpIHRoaXMuc3RhdGVbY29sbGVjdGlvbi5pZF1bY2F0ZWdvcnkuaWRdW3NldHRpbmcuaWRdID0gc2V0dGluZy52YWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoc2V0dGluZy5oYXNPd25Qcm9wZXJ0eShcImRpc2FibGVkXCIpKSBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIXNldHRpbmcuZW5hYmxlV2l0aCAmJiAhc2V0dGluZy5kaXNhYmxlV2l0aCkgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcGF0aFN0cmluZyA9IHNldHRpbmcuZW5hYmxlV2l0aCB8fCBzZXR0aW5nLmRpc2FibGVXaXRoO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhdGggPSB0aGlzLmdldFBhdGgocGF0aFN0cmluZy5zcGxpdChcIi5cIiksIGNvbGxlY3Rpb24uaWQsIGNhdGVnb3J5LmlkKTtcclxuICAgICAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoc2V0dGluZywgXCJkaXNhYmxlZFwiLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGdldDogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb3RoZXIgPSB0aGlzLnN0YXRlW3BhdGguY29sbGVjdGlvbl1bcGF0aC5jYXRlZ29yeV1bcGF0aC5zZXR0aW5nXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZXR0aW5nLmVuYWJsZVdpdGggPyAhb3RoZXIgOiBvdGhlcjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHNhdmVTZXR0aW5ncygpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGNvbGxlY3Rpb24gaW4gdGhpcy5zdGF0ZSkgdGhpcy5zYXZlQ29sbGVjdGlvbihjb2xsZWN0aW9uKTtcclxuICAgIH1cclxuXHJcbiAgICBsb2FkU2V0dGluZ3MoKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBjb2xsZWN0aW9uIGluIHRoaXMuc3RhdGUpIHRoaXMubG9hZENvbGxlY3Rpb24oY29sbGVjdGlvbik7XHJcbiAgICB9XHJcblxyXG4gICAgc2F2ZUNvbGxlY3Rpb24oY29sbGVjdGlvbikge1xyXG4gICAgICAgIERhdGFTdG9yZS5zZXREYXRhKGNvbGxlY3Rpb24sIHRoaXMuc3RhdGVbY29sbGVjdGlvbl0pO1xyXG4gICAgfVxyXG5cclxuICAgIGxvYWRDb2xsZWN0aW9uKGlkKSB7XHJcbiAgICAgICAgY29uc3QgcHJldmlvdXNTdGF0ZSA9IERhdGFTdG9yZS5nZXREYXRhKGlkKTtcclxuICAgICAgICBpZiAoIXByZXZpb3VzU3RhdGUpIHJldHVybiB0aGlzLnNhdmVDb2xsZWN0aW9uKGlkKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGNhdGVnb3J5IGluIHRoaXMuc3RhdGVbaWRdKSB7XHJcbiAgICAgICAgICAgIGlmICghcHJldmlvdXNTdGF0ZVtjYXRlZ29yeV0pIE9iamVjdC5hc3NpZ24ocHJldmlvdXNTdGF0ZSwge1tjYXRlZ29yeV06IHRoaXMuc3RhdGVbaWRdW2NhdGVnb3J5XX0pO1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHNldHRpbmcgaW4gdGhpcy5zdGF0ZVtpZF1bY2F0ZWdvcnldKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAocHJldmlvdXNTdGF0ZVtjYXRlZ29yeV1bc2V0dGluZ10gPT0gdW5kZWZpbmVkKSBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHNldHRpbmdPYmogPSB0aGlzLmdldFNldHRpbmcoaWQsIGNhdGVnb3J5LCBzZXR0aW5nKTtcclxuICAgICAgICAgICAgICAgIGlmIChzZXR0aW5nT2JqLnR5cGUgPT0gXCJzd2l0Y2hcIikgdGhpcy5zdGF0ZVtpZF1bY2F0ZWdvcnldW3NldHRpbmddID0gcHJldmlvdXNTdGF0ZVtjYXRlZ29yeV1bc2V0dGluZ107XHJcbiAgICAgICAgICAgICAgICBpZiAoc2V0dGluZ09iai50eXBlID09IFwiZHJvcGRvd25cIikge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGV4aXN0cyA9IHNldHRpbmdPYmoub3B0aW9ucy5zb21lKG8gPT4gby52YWx1ZSA9PSBwcmV2aW91c1N0YXRlW2NhdGVnb3J5XVtzZXR0aW5nXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGV4aXN0cykgdGhpcy5zdGF0ZVtpZF1bY2F0ZWdvcnldW3NldHRpbmddID0gcHJldmlvdXNTdGF0ZVtjYXRlZ29yeV1bc2V0dGluZ107XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuc2F2ZUNvbGxlY3Rpb24oaWQpOyAvLyBpbiBjYXNlIG5ldyB0aGluZ3Mgd2VyZSBhZGRlZFxyXG4gICAgfVxyXG5cclxuICAgIG9uU2V0dGluZ0NoYW5nZShjb2xsZWN0aW9uLCBjYXRlZ29yeSwgaWQsIHZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5zdGF0ZVtjb2xsZWN0aW9uXVtjYXRlZ29yeV1baWRdID0gdmFsdWU7XHJcbiAgICAgICAgRXZlbnRzLmRpc3BhdGNoKFwic2V0dGluZy11cGRhdGVkXCIsIGNvbGxlY3Rpb24sIGNhdGVnb3J5LCBpZCwgdmFsdWUpO1xyXG4gICAgICAgIHRoaXMuc2F2ZUNvbGxlY3Rpb24oY29sbGVjdGlvbik7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0U2V0dGluZyhjb2xsZWN0aW9uLCBjYXRlZ29yeSwgaWQpIHtcclxuICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PSAyKSByZXR1cm4gdGhpcy5jb2xsZWN0aW9uc1swXS5maW5kKGMgPT4gYy5pZCA9PSBhcmd1bWVudHNbMF0pLnNldHRpbmdzLmZpbmQocyA9PiBzLmlkID09IGFyZ3VtZW50c1sxXSk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY29sbGVjdGlvbnMuZmluZChjID0+IGMuaWQgPT0gY29sbGVjdGlvbikuc2V0dGluZ3MuZmluZChjID0+IGMuaWQgPT0gY2F0ZWdvcnkpLnNldHRpbmdzLmZpbmQocyA9PiBzLmlkID09IGlkKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQoY29sbGVjdGlvbiwgY2F0ZWdvcnksIGlkKSB7XHJcbiAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT0gMikge1xyXG4gICAgICAgICAgICBpZCA9IGNhdGVnb3J5O1xyXG4gICAgICAgICAgICBjYXRlZ29yeSA9IGNvbGxlY3Rpb247XHJcbiAgICAgICAgICAgIGNvbGxlY3Rpb24gPSBcInNldHRpbmdzXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghdGhpcy5zdGF0ZVtjb2xsZWN0aW9uXSB8fCAhdGhpcy5zdGF0ZVtjb2xsZWN0aW9uXVtjYXRlZ29yeV0pIHJldHVybiBmYWxzZTtcclxuICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZVtjb2xsZWN0aW9uXVtjYXRlZ29yeV1baWRdO1xyXG4gICAgfVxyXG5cclxuICAgIHNldChjb2xsZWN0aW9uLCBjYXRlZ29yeSwgaWQsIHZhbHVlKSB7XHJcbiAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT0gMykge1xyXG4gICAgICAgICAgICB2YWx1ZSA9IGlkO1xyXG4gICAgICAgICAgICBpZCA9IGNhdGVnb3J5O1xyXG4gICAgICAgICAgICBjYXRlZ29yeSA9IGNvbGxlY3Rpb247XHJcbiAgICAgICAgICAgIGNvbGxlY3Rpb24gPSBcInNldHRpbmdzXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLm9uU2V0dGluZ0NoYW5nZShjb2xsZWN0aW9uLCBjYXRlZ29yeSwgaWQsIHZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBvbihjb2xsZWN0aW9uLCBjYXRlZ29yeSwgaWRlbnRpZmllciwgY2FsbGJhY2spIHtcclxuICAgICAgICBjb25zdCBoYW5kbGVyID0gKGNvbCwgY2F0LCBpZCwgdmFsdWUpID0+IHtcclxuICAgICAgICAgICAgaWYgKGNvbCAhPT0gY29sbGVjdGlvbiB8fCBjYXQgIT09IGNhdGVnb3J5IHx8IGlkICE9PSBpZGVudGlmaWVyKSByZXR1cm47XHJcbiAgICAgICAgICAgIGNhbGxiYWNrKHZhbHVlKTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIEV2ZW50cy5vbihcInNldHRpbmctdXBkYXRlZFwiLCBoYW5kbGVyKTtcclxuICAgICAgICByZXR1cm4gKCkgPT4ge0V2ZW50cy5vZmYoXCJzZXR0aW5nLXVwZGF0ZWRcIiwgaGFuZGxlcik7fTtcclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGVTdHJpbmdzKCkge1xyXG4gICAgICAgIC8vIFVwZGF0ZSBzZXR0aW5ncyBjb2xsZWN0aW9uc1xyXG4gICAgICAgIGZvciAobGV0IGMgPSAwOyBjIDwgdGhpcy5jb2xsZWN0aW9ucy5sZW5ndGg7IGMrKykge1xyXG4gICAgICAgICAgICBjb25zdCBjb2xsZWN0aW9uID0gdGhpcy5jb2xsZWN0aW9uc1tjXTtcclxuICAgICAgICAgICAgY29uc3QgQ1MgPSBTdHJpbmdzLkNvbGxlY3Rpb25zW2NvbGxlY3Rpb24uaWRdO1xyXG4gICAgICAgICAgICBpZiAoIUNTKSBjb250aW51ZTtcclxuICAgICAgICAgICAgY29sbGVjdGlvbi5uYW1lID0gQ1MubmFtZSB8fCBjb2xsZWN0aW9uLm5hbWU7XHJcbiAgICAgICAgICAgIGNvbnN0IGNhdGVnb3JpZXMgPSB0aGlzLmNvbGxlY3Rpb25zW2NdLnNldHRpbmdzO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBjYXQgPSAwOyBjYXQgPCBjYXRlZ29yaWVzLmxlbmd0aDsgY2F0KyspIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNhdGVnb3J5ID0gY2F0ZWdvcmllc1tjYXRdO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgQ2F0U3RyID0gQ1NbY2F0ZWdvcnkuaWRdO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFDYXRTdHIpIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgY2F0ZWdvcnkubmFtZSA9IENhdFN0ci5uYW1lIHx8IGNhdGVnb3J5Lm5hbWU7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBzID0gMDsgcyA8IGNhdGVnb3J5LnNldHRpbmdzLmxlbmd0aDsgcysrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2V0dGluZyA9IGNhdGVnb3J5LnNldHRpbmdzW3NdO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IFNldFN0ciA9IENhdFN0cltzZXR0aW5nLmlkXTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIVNldFN0cikgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICAgICAgc2V0dGluZy5uYW1lID0gU2V0U3RyLm5hbWUgfHwgc2V0dGluZy5uYW1lO1xyXG4gICAgICAgICAgICAgICAgICAgIHNldHRpbmcubm90ZSA9IFNldFN0ci5ub3RlIHx8IHNldHRpbmcubm90ZTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIXNldHRpbmcub3B0aW9ucykgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBvcHQgb2Ygc2V0dGluZy5vcHRpb25zKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdC5sYWJlbCA9IFNldFN0ci5vcHRpb25zW29wdC5pZF0gfHwgU2V0U3RyLm9wdGlvbnNbb3B0LnZhbHVlXSB8fCBvcHQubGFiZWw7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBVcGRhdGUgcGFuZWwgbGFiZWxzXHJcbiAgICAgICAgZm9yIChsZXQgcCA9IDA7IHAgPCB0aGlzLnBhbmVscy5sZW5ndGg7IHArKykge1xyXG4gICAgICAgICAgICBjb25zdCBwYW5lbCA9IHRoaXMucGFuZWxzW3BdO1xyXG4gICAgICAgICAgICBjb25zdCBTdHIgPSBTdHJpbmdzLlBhbmVsc1twYW5lbC5pZF07XHJcbiAgICAgICAgICAgIHBhbmVsLmxhYmVsID0gU3RyIHx8IHBhbmVsLmxhYmVsO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/modules/settingsmanager.js\n"); /***/ }), @@ -587,7 +586,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var data /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _localemanager__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./localemanager */ \"./src/modules/localemanager.js\");\n/* harmony import */ var _structs_string__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../structs/string */ \"./src/structs/string.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (new Proxy(_localemanager__WEBPACK_IMPORTED_MODULE_0__[\"default\"].strings, {\n get: function (strings, category) {\n if (!strings.hasOwnProperty(category)) {\n return new Proxy({}, {\n get: function () {\n return `String group \"${category}\" not found.`;\n }\n });\n }\n\n return new Proxy(strings[category], {\n get: function (obj, prop) {\n if (typeof obj[prop] == \"string\") return new _structs_string__WEBPACK_IMPORTED_MODULE_1__[\"default\"](obj[prop]);\n return obj[prop];\n }\n });\n }\n}));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL21vZHVsZXMvc3RyaW5ncy5qcz8zNTllIl0sIm5hbWVzIjpbIlByb3h5IiwiTG9jYWxlTWFuYWdlciIsInN0cmluZ3MiLCJnZXQiLCJjYXRlZ29yeSIsImhhc093blByb3BlcnR5Iiwib2JqIiwicHJvcCIsIkZvcm1hdHRhYmxlU3RyaW5nIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBRWUsbUVBQUlBLEtBQUosQ0FBVUMsc0RBQWEsQ0FBQ0MsT0FBeEIsRUFBaUM7QUFDL0NDLEtBQUcsRUFBRSxVQUFTRCxPQUFULEVBQWtCRSxRQUFsQixFQUE0QjtBQUMxQixRQUFJLENBQUNGLE9BQU8sQ0FBQ0csY0FBUixDQUF1QkQsUUFBdkIsQ0FBTCxFQUF1QztBQUM1QyxhQUFPLElBQUlKLEtBQUosQ0FBVSxFQUFWLEVBQWM7QUFDcEJHLFdBQUcsRUFBRSxZQUFXO0FBQ2YsaUJBQVEsaUJBQWdCQyxRQUFTLGNBQWpDO0FBQ0E7QUFIbUIsT0FBZCxDQUFQO0FBS0E7O0FBQ0QsV0FBTyxJQUFJSixLQUFKLENBQVVFLE9BQU8sQ0FBQ0UsUUFBRCxDQUFqQixFQUE2QjtBQUNuQ0QsU0FBRyxFQUFFLFVBQVNHLEdBQVQsRUFBY0MsSUFBZCxFQUFvQjtBQUN4QixZQUFJLE9BQU9ELEdBQUcsQ0FBQ0MsSUFBRCxDQUFWLElBQXFCLFFBQXpCLEVBQW1DLE9BQU8sSUFBSUMsdURBQUosQ0FBc0JGLEdBQUcsQ0FBQ0MsSUFBRCxDQUF6QixDQUFQO0FBQ25DLGVBQU9ELEdBQUcsQ0FBQ0MsSUFBRCxDQUFWO0FBQ0E7QUFKa0MsS0FBN0IsQ0FBUDtBQU1BO0FBZjhDLENBQWpDLENBQWYiLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9zdHJpbmdzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExvY2FsZU1hbmFnZXIgZnJvbSBcIi4vbG9jYWxlbWFuYWdlclwiO1xyXG5pbXBvcnQgRm9ybWF0dGFibGVTdHJpbmcgZnJvbSBcIi4uL3N0cnVjdHMvc3RyaW5nXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBuZXcgUHJveHkoTG9jYWxlTWFuYWdlci5zdHJpbmdzLCB7XHJcblx0Z2V0OiBmdW5jdGlvbihzdHJpbmdzLCBjYXRlZ29yeSkge1xyXG4gICAgICAgIGlmICghc3RyaW5ncy5oYXNPd25Qcm9wZXJ0eShjYXRlZ29yeSkpIHtcclxuXHRcdFx0cmV0dXJuIG5ldyBQcm94eSh7fSwge1xyXG5cdFx0XHRcdGdldDogZnVuY3Rpb24oKSB7XHJcblx0XHRcdFx0XHRyZXR1cm4gYFN0cmluZyBncm91cCBcIiR7Y2F0ZWdvcnl9XCIgbm90IGZvdW5kLmA7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHRcdHJldHVybiBuZXcgUHJveHkoc3RyaW5nc1tjYXRlZ29yeV0sIHtcclxuXHRcdFx0Z2V0OiBmdW5jdGlvbihvYmosIHByb3ApIHtcclxuXHRcdFx0XHRpZiAodHlwZW9mKG9ialtwcm9wXSkgPT0gXCJzdHJpbmdcIikgcmV0dXJuIG5ldyBGb3JtYXR0YWJsZVN0cmluZyhvYmpbcHJvcF0pO1xyXG5cdFx0XHRcdHJldHVybiBvYmpbcHJvcF07XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdH1cclxufSk7XHJcblxyXG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/modules/strings.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _localemanager__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./localemanager */ \"./src/modules/localemanager.js\");\n/* harmony import */ var _structs_string__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../structs/string */ \"./src/structs/string.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (new Proxy(_localemanager__WEBPACK_IMPORTED_MODULE_0__[\"default\"].strings, {\n get: function (strings, category) {\n if (!strings.hasOwnProperty(category)) {\n return new Proxy({}, {\n get: function () {\n return `String group \"${category}\" not found.`;\n }\n });\n }\n\n return new Proxy(strings[category], {\n get: function (obj, prop) {\n if (typeof obj[prop] == \"string\") return new _structs_string__WEBPACK_IMPORTED_MODULE_1__[\"default\"](obj[prop]);\n return obj[prop];\n }\n });\n }\n}));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9zdHJpbmdzLmpzPzM1OWUiXSwibmFtZXMiOlsiUHJveHkiLCJMb2NhbGVNYW5hZ2VyIiwic3RyaW5ncyIsImdldCIsImNhdGVnb3J5IiwiaGFzT3duUHJvcGVydHkiLCJvYmoiLCJwcm9wIiwiRm9ybWF0dGFibGVTdHJpbmciXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFFZSxtRUFBSUEsS0FBSixDQUFVQyxzREFBYSxDQUFDQyxPQUF4QixFQUFpQztBQUMvQ0MsS0FBRyxFQUFFLFVBQVNELE9BQVQsRUFBa0JFLFFBQWxCLEVBQTRCO0FBQzFCLFFBQUksQ0FBQ0YsT0FBTyxDQUFDRyxjQUFSLENBQXVCRCxRQUF2QixDQUFMLEVBQXVDO0FBQzVDLGFBQU8sSUFBSUosS0FBSixDQUFVLEVBQVYsRUFBYztBQUNwQkcsV0FBRyxFQUFFLFlBQVc7QUFDZixpQkFBUSxpQkFBZ0JDLFFBQVMsY0FBakM7QUFDQTtBQUhtQixPQUFkLENBQVA7QUFLQTs7QUFDRCxXQUFPLElBQUlKLEtBQUosQ0FBVUUsT0FBTyxDQUFDRSxRQUFELENBQWpCLEVBQTZCO0FBQ25DRCxTQUFHLEVBQUUsVUFBU0csR0FBVCxFQUFjQyxJQUFkLEVBQW9CO0FBQ3hCLFlBQUksT0FBT0QsR0FBRyxDQUFDQyxJQUFELENBQVYsSUFBcUIsUUFBekIsRUFBbUMsT0FBTyxJQUFJQyx1REFBSixDQUFzQkYsR0FBRyxDQUFDQyxJQUFELENBQXpCLENBQVA7QUFDbkMsZUFBT0QsR0FBRyxDQUFDQyxJQUFELENBQVY7QUFDQTtBQUprQyxLQUE3QixDQUFQO0FBTUE7QUFmOEMsQ0FBakMsQ0FBZiIsImZpbGUiOiIuL3NyYy9tb2R1bGVzL3N0cmluZ3MuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9jYWxlTWFuYWdlciBmcm9tIFwiLi9sb2NhbGVtYW5hZ2VyXCI7XHJcbmltcG9ydCBGb3JtYXR0YWJsZVN0cmluZyBmcm9tIFwiLi4vc3RydWN0cy9zdHJpbmdcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IG5ldyBQcm94eShMb2NhbGVNYW5hZ2VyLnN0cmluZ3MsIHtcclxuXHRnZXQ6IGZ1bmN0aW9uKHN0cmluZ3MsIGNhdGVnb3J5KSB7XHJcbiAgICAgICAgaWYgKCFzdHJpbmdzLmhhc093blByb3BlcnR5KGNhdGVnb3J5KSkge1xyXG5cdFx0XHRyZXR1cm4gbmV3IFByb3h5KHt9LCB7XHJcblx0XHRcdFx0Z2V0OiBmdW5jdGlvbigpIHtcclxuXHRcdFx0XHRcdHJldHVybiBgU3RyaW5nIGdyb3VwIFwiJHtjYXRlZ29yeX1cIiBub3QgZm91bmQuYDtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIG5ldyBQcm94eShzdHJpbmdzW2NhdGVnb3J5XSwge1xyXG5cdFx0XHRnZXQ6IGZ1bmN0aW9uKG9iaiwgcHJvcCkge1xyXG5cdFx0XHRcdGlmICh0eXBlb2Yob2JqW3Byb3BdKSA9PSBcInN0cmluZ1wiKSByZXR1cm4gbmV3IEZvcm1hdHRhYmxlU3RyaW5nKG9ialtwcm9wXSk7XHJcblx0XHRcdFx0cmV0dXJuIG9ialtwcm9wXTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0fVxyXG59KTtcclxuXHJcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/strings.js\n"); /***/ }), @@ -599,7 +598,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _loc /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var data__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! data */ \"./src/data/data.js\");\n/* harmony import */ var _addonmanager__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./addonmanager */ \"./src/modules/addonmanager.js\");\n/* harmony import */ var _settingsmanager__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./settingsmanager */ \"./src/modules/settingsmanager.js\");\n/* harmony import */ var _dommanager__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./dommanager */ \"./src/modules/dommanager.js\");\n/* harmony import */ var _strings__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./strings */ \"./src/modules/strings.js\");\n/* harmony import */ var _ui_toasts__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../ui/toasts */ \"./src/ui/toasts.js\");\n/* harmony import */ var _ui_modals__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../ui/modals */ \"./src/ui/modals.js\");\n/* harmony import */ var _ui_settings__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../ui/settings */ \"./src/ui/settings.js\");\n\n\n\n\n\n\n\n\n\nconst path = __webpack_require__(/*! path */ \"path\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class ThemeManager extends _addonmanager__WEBPACK_IMPORTED_MODULE_1__[\"default\"] {\n get name() {\n return \"ThemeManager\";\n }\n\n get moduleExtension() {\n return \".css\";\n }\n\n get extension() {\n return \".theme.css\";\n }\n\n get addonFolder() {\n return path.resolve(data__WEBPACK_IMPORTED_MODULE_0__[\"Config\"].dataPath, \"themes\");\n }\n\n get prefix() {\n return \"theme\";\n }\n\n get language() {\n return \"css\";\n }\n\n initialize() {\n const errors = super.initialize();\n _settingsmanager__WEBPACK_IMPORTED_MODULE_2__[\"default\"].registerPanel(\"themes\", _strings__WEBPACK_IMPORTED_MODULE_4__[\"default\"].Panels.themes, {\n element: () => _ui_settings__WEBPACK_IMPORTED_MODULE_7__[\"default\"].getAddonPanel(_strings__WEBPACK_IMPORTED_MODULE_4__[\"default\"].Panels.themes, this.addonList, this.state, {\n folder: this.addonFolder,\n onChange: this.toggleTheme.bind(this),\n reload: this.reloadTheme.bind(this),\n refreshList: this.updateThemeList.bind(this),\n saveAddon: this.saveAddon.bind(this),\n editAddon: this.editAddon.bind(this),\n deleteAddon: this.deleteAddon.bind(this),\n prefix: this.prefix\n })\n });\n return errors;\n }\n /* Aliases */\n\n\n updateThemeList() {\n return this.updateList();\n }\n\n loadAllThemes() {\n return this.loadAllAddons();\n }\n\n enableTheme(idOrAddon) {\n return this.enableAddon(idOrAddon);\n }\n\n disableTheme(idOrAddon) {\n return this.disableAddon(idOrAddon);\n }\n\n toggleTheme(id) {\n return this.toggleAddon(id);\n }\n\n unloadTheme(idOrFileOrAddon) {\n return this.unloadAddon(idOrFileOrAddon);\n }\n\n loadTheme(filename) {\n const error = this.loadAddon(filename);\n if (error) _ui_modals__WEBPACK_IMPORTED_MODULE_6__[\"default\"].showAddonErrors({\n themes: [error]\n });\n }\n\n reloadTheme(idOrFileOrAddon) {\n const error = this.reloadAddon(idOrFileOrAddon);\n if (error) _ui_modals__WEBPACK_IMPORTED_MODULE_6__[\"default\"].showAddonErrors({\n themes: [error]\n });\n }\n /* Overrides */\n\n\n getFileModification(module, fileContent, meta) {\n meta.css = fileContent;\n return `module.exports = ${JSON.stringify(meta)};`;\n }\n\n startAddon(id) {\n return this.addTheme(id);\n }\n\n stopAddon(id) {\n return this.removeTheme(id);\n }\n\n addTheme(idOrAddon) {\n const addon = typeof idOrAddon == \"string\" ? this.addonList.find(p => p.id == idOrAddon) : idOrAddon;\n if (!addon) return;\n _dommanager__WEBPACK_IMPORTED_MODULE_3__[\"default\"].injectTheme(addon.id, addon.css);\n _ui_toasts__WEBPACK_IMPORTED_MODULE_5__[\"default\"].show(_strings__WEBPACK_IMPORTED_MODULE_4__[\"default\"].Addons.enabled.format({\n name: addon.name,\n version: addon.version\n }));\n }\n\n removeTheme(idOrAddon) {\n const addon = typeof idOrAddon == \"string\" ? this.addonList.find(p => p.id == idOrAddon) : idOrAddon;\n if (!addon) return;\n _dommanager__WEBPACK_IMPORTED_MODULE_3__[\"default\"].removeTheme(addon.id);\n _ui_toasts__WEBPACK_IMPORTED_MODULE_5__[\"default\"].show(_strings__WEBPACK_IMPORTED_MODULE_4__[\"default\"].Addons.disabled.format({\n name: addon.name,\n version: addon.version\n }));\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL21vZHVsZXMvdGhlbWVtYW5hZ2VyLmpzPzQwNzgiXSwibmFtZXMiOlsicGF0aCIsInJlcXVpcmUiLCJUaGVtZU1hbmFnZXIiLCJBZGRvbk1hbmFnZXIiLCJuYW1lIiwibW9kdWxlRXh0ZW5zaW9uIiwiZXh0ZW5zaW9uIiwiYWRkb25Gb2xkZXIiLCJyZXNvbHZlIiwiQ29uZmlnIiwiZGF0YVBhdGgiLCJwcmVmaXgiLCJsYW5ndWFnZSIsImluaXRpYWxpemUiLCJlcnJvcnMiLCJTZXR0aW5ncyIsInJlZ2lzdGVyUGFuZWwiLCJTdHJpbmdzIiwiUGFuZWxzIiwidGhlbWVzIiwiZWxlbWVudCIsIlNldHRpbmdzUmVuZGVyZXIiLCJnZXRBZGRvblBhbmVsIiwiYWRkb25MaXN0Iiwic3RhdGUiLCJmb2xkZXIiLCJvbkNoYW5nZSIsInRvZ2dsZVRoZW1lIiwiYmluZCIsInJlbG9hZCIsInJlbG9hZFRoZW1lIiwicmVmcmVzaExpc3QiLCJ1cGRhdGVUaGVtZUxpc3QiLCJzYXZlQWRkb24iLCJlZGl0QWRkb24iLCJkZWxldGVBZGRvbiIsInVwZGF0ZUxpc3QiLCJsb2FkQWxsVGhlbWVzIiwibG9hZEFsbEFkZG9ucyIsImVuYWJsZVRoZW1lIiwiaWRPckFkZG9uIiwiZW5hYmxlQWRkb24iLCJkaXNhYmxlVGhlbWUiLCJkaXNhYmxlQWRkb24iLCJpZCIsInRvZ2dsZUFkZG9uIiwidW5sb2FkVGhlbWUiLCJpZE9yRmlsZU9yQWRkb24iLCJ1bmxvYWRBZGRvbiIsImxvYWRUaGVtZSIsImZpbGVuYW1lIiwiZXJyb3IiLCJsb2FkQWRkb24iLCJNb2RhbHMiLCJzaG93QWRkb25FcnJvcnMiLCJyZWxvYWRBZGRvbiIsImdldEZpbGVNb2RpZmljYXRpb24iLCJtb2R1bGUiLCJmaWxlQ29udGVudCIsIm1ldGEiLCJjc3MiLCJKU09OIiwic3RyaW5naWZ5Iiwic3RhcnRBZGRvbiIsImFkZFRoZW1lIiwic3RvcEFkZG9uIiwicmVtb3ZlVGhlbWUiLCJhZGRvbiIsImZpbmQiLCJwIiwiRE9NTWFuYWdlciIsImluamVjdFRoZW1lIiwiVG9hc3RzIiwic2hvdyIsIkFkZG9ucyIsImVuYWJsZWQiLCJmb3JtYXQiLCJ2ZXJzaW9uIiwiZGlzYWJsZWQiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsTUFBTUEsSUFBSSxHQUFHQyxtQkFBTyxDQUFDLGtCQUFELENBQXBCOztBQUVlLG1FQUFJLE1BQU1DLFlBQU4sU0FBMkJDLHFEQUEzQixDQUF3QztBQUN2RCxNQUFJQyxJQUFKLEdBQVc7QUFBQyxXQUFPLGNBQVA7QUFBdUI7O0FBQ25DLE1BQUlDLGVBQUosR0FBc0I7QUFBQyxXQUFPLE1BQVA7QUFBZTs7QUFDdEMsTUFBSUMsU0FBSixHQUFnQjtBQUFDLFdBQU8sWUFBUDtBQUFxQjs7QUFDdEMsTUFBSUMsV0FBSixHQUFrQjtBQUFDLFdBQU9QLElBQUksQ0FBQ1EsT0FBTCxDQUFhQywyQ0FBTSxDQUFDQyxRQUFwQixFQUE4QixRQUE5QixDQUFQO0FBQWdEOztBQUNuRSxNQUFJQyxNQUFKLEdBQWE7QUFBQyxXQUFPLE9BQVA7QUFBZ0I7O0FBQzlCLE1BQUlDLFFBQUosR0FBZTtBQUFDLFdBQU8sS0FBUDtBQUFjOztBQUU5QkMsWUFBVSxHQUFHO0FBQ1QsVUFBTUMsTUFBTSxHQUFHLE1BQU1ELFVBQU4sRUFBZjtBQUNBRSw0REFBUSxDQUFDQyxhQUFULENBQXVCLFFBQXZCLEVBQWlDQyxnREFBTyxDQUFDQyxNQUFSLENBQWVDLE1BQWhELEVBQXdEO0FBQUNDLGFBQU8sRUFBRSxNQUFNQyxvREFBZ0IsQ0FBQ0MsYUFBakIsQ0FBK0JMLGdEQUFPLENBQUNDLE1BQVIsQ0FBZUMsTUFBOUMsRUFBc0QsS0FBS0ksU0FBM0QsRUFBc0UsS0FBS0MsS0FBM0UsRUFBa0Y7QUFDdEpDLGNBQU0sRUFBRSxLQUFLbEIsV0FEeUk7QUFF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QWVDLE9BQWYsQ0FBdUJDLE1BQXZCLENBQThCO0FBQUN4RSxVQUFJLEVBQUUrRCxLQUFLLENBQUMvRCxJQUFiO0FBQW1CeUUsYUFBTyxFQUFFVixLQUFLLENBQUNVO0FBQWxDLEtBQTlCLENBQVo7QUFDSDs7QUFFRFgsYUFBVyxDQUFDMUIsU0FBRCxFQUFZO0FBQ25CLFVBQU0yQixLQUFLLEdBQUcsT0FBTzNCLFNBQVAsSUFBcUIsUUFBckIsR0FBZ0MsS0FBS2pCLFNBQUwsQ0FBZTZDLElBQWYsQ0FBb0JDLENBQUMsSUFBSUEsQ0FBQyxDQUFDekIsRUFBRixJQUFRSixTQUFqQyxDQUFoQyxHQUE4RUEsU0FBNUY7QUFDQSxRQUFJLENBQUMyQixLQUFMLEVBQVk7QUFDWkcsdURBQVUsQ0FBQ0osV0FBWCxDQUF1QkMsS0FBSyxDQUFDdkIsRUFBN0I7QUFDQTRCLHNEQUFNLENBQUNDLElBQVAsQ0FBWXhELGdEQUFPLENBQUN5RCxNQUFSLENBQWVJLFFBQWYsQ0FBd0JGLE1BQXhCLENBQStCO0FBQUN4RSxVQUFJLEVBQUUrRCxLQUFLLENBQUMvRCxJQUFiO0FBQW1CeUUsYUFBTyxFQUFFVixLQUFLLENBQUNVO0FBQWxDLEtBQS9CLENBQVo7QUFDSDs7QUFoRXNELENBQTVDLEVBQWYiLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy90aGVtZW1hbmFnZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbmZpZ30gZnJvbSBcImRhdGFcIjtcclxuaW1wb3J0IEFkZG9uTWFuYWdlciBmcm9tIFwiLi9hZGRvbm1hbmFnZXJcIjtcclxuaW1wb3J0IFNldHRpbmdzIGZyb20gXCIuL3NldHRpbmdzbWFuYWdlclwiO1xyXG5pbXBvcnQgRE9NTWFuYWdlciBmcm9tIFwiLi9kb21tYW5hZ2VyXCI7XHJcbmltcG9ydCBTdHJpbmdzIGZyb20gXCIuL3N0cmluZ3NcIjtcclxuXHJcbmltcG9ydCBUb2FzdHMgZnJvbSBcIi4uL3VpL3RvYXN0c1wiO1xyXG5pbXBvcnQgTW9kYWxzIGZyb20gXCIuLi91aS9tb2RhbHNcIjtcclxuaW1wb3J0IFNldHRpbmdzUmVuZGVyZXIgZnJvbSBcIi4uL3VpL3NldHRpbmdzXCI7XHJcblxyXG5jb25zdCBwYXRoID0gcmVxdWlyZShcInBhdGhcIik7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBuZXcgY2xhc3MgVGhlbWVNYW5hZ2VyIGV4dGVuZHMgQWRkb25NYW5hZ2VyIHtcclxuICAgIGdldCBuYW1lKCkge3JldHVybiBcIlRoZW1lTWFuYWdlclwiO31cclxuICAgIGdldCBtb2R1bGVFeHRlbnNpb24oKSB7cmV0dXJuIFwiLmNzc1wiO31cclxuICAgIGdldCBleHRlbnNpb24oKSB7cmV0dXJuIFwiLnRoZW1lLmNzc1wiO31cclxuICAgIGdldCBhZGRvbkZvbGRlcigpIHtyZXR1cm4gcGF0aC5yZXNvbHZlKENvbmZpZy5kYXRhUGF0aCwgXCJ0aGVtZXNcIik7fVxyXG4gICAgZ2V0IHByZWZpeCgpIHtyZXR1cm4gXCJ0aGVtZVwiO31cclxuICAgIGdldCBsYW5ndWFnZSgpIHtyZXR1cm4gXCJjc3NcIjt9XHJcblxyXG4gICAgaW5pdGlhbGl6ZSgpIHtcclxuICAgICAgICBjb25zdCBlcnJvcnMgPSBzdXBlci5pbml0aWFsaXplKCk7XHJcbiAgICAgICAgU2V0dGluZ3MucmVnaXN0ZXJQYW5lbChcInRoZW1lc1wiLCBTdHJpbmdzLlBhbmVscy50aGVtZXMsIHtlbGVtZW50OiAoKSA9PiBTZXR0aW5nc1JlbmRlcmVyLmdldEFkZG9uUGFuZWwoU3RyaW5ncy5QYW5lbHMudGhlbWVzLCB0aGlzLmFkZG9uTGlzdCwgdGhpcy5zdGF0ZSwge1xyXG4gICAgICAgICAgICBmb2xkZXI6IHRoaXMuYWRkb25Gb2xkZXIsXHJcbiAgICAgICAgICAgIG9uQ2hhbmdlOiB0aGlzLnRvZ2dsZVRoZW1lLmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgIHJlbG9hZDogdGhpcy5yZWxvYWRUaGVtZS5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgICByZWZyZXNoTGlzdDogdGhpcy51cGRhdGVUaGVtZUxpc3QuYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgc2F2ZUFkZG9uOiB0aGlzLnNhdmVBZGRvbi5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgICBlZGl0QWRkb246IHRoaXMuZWRpdEFkZG9uLmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgIGRlbGV0ZUFkZG9uOiB0aGlzLmRlbGV0ZUFkZG9uLmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgIHByZWZpeDogdGhpcy5wcmVmaXhcclxuICAgICAgICB9KX0pO1xyXG4gICAgICAgIHJldHVybiBlcnJvcnM7XHJcbiAgICB9XHJcblxyXG4gICAgLyogQWxpYXNlcyAqL1xyXG4gICAgdXBkYXRlVGhlbWVMaXN0KCkge3JldHVybiB0aGlzLnVwZGF0ZUxpc3QoKTt9XHJcbiAgICBsb2FkQWxsVGhlbWVzKCkge3JldHVybiB0aGlzLmxvYWRBbGxBZGRvbnMoKTt9XHJcblxyXG4gICAgZW5hYmxlVGhlbWUoaWRPckFkZG9uKSB7cmV0dXJuIHRoaXMuZW5hYmxlQWRkb24oaWRPckFkZG9uKTt9XHJcbiAgICBkaXNhYmxlVGhlbWUoaWRPckFkZG9uKSB7cmV0dXJuIHRoaXMuZGlzYWJsZUFkZG9uKGlkT3JBZGRvbik7fVxyXG4gICAgdG9nZ2xlVGhlbWUoaWQpIHtyZXR1cm4gdGhpcy50b2dnbGVBZGRvbihpZCk7fVxyXG5cclxuICAgIHVubG9hZFRoZW1lKGlkT3JGaWxlT3JBZGRvbikge3JldHVybiB0aGlzLnVubG9hZEFkZG9uKGlkT3JGaWxlT3JBZGRvbik7fVxyXG5cclxuICAgIGxvYWRUaGVtZShmaWxlbmFtZSkge1xyXG4gICAgICAgIGNvbnN0IGVycm9yID0gdGhpcy5sb2FkQWRkb24oZmlsZW5hbWUpO1xyXG4gICAgICAgIGlmIChlcnJvcikgTW9kYWxzLnNob3dBZGRvbkVycm9ycyh7dGhlbWVzOiBbZXJyb3JdfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVsb2FkVGhlbWUoaWRPckZpbGVPckFkZG9uKSB7XHJcbiAgICAgICAgY29uc3QgZXJyb3IgPSB0aGlzLnJlbG9hZEFkZG9uKGlkT3JGaWxlT3JBZGRvbik7XHJcbiAgICAgICAgaWYgKGVycm9yKSBNb2RhbHMuc2hvd0FkZG9uRXJyb3JzKHt0aGVtZXM6IFtlcnJvcl19KTtcclxuICAgIH1cclxuXHJcbiAgICAvKiBPdmVycmlkZXMgKi9cclxuICAgIGdldEZpbGVNb2RpZmljYXRpb24obW9kdWxlLCBmaWxlQ29udGVudCwgbWV0YSkge1xyXG4gICAgICAgIG1ldGEuY3NzID0gZmlsZUNvbnRlbnQ7XHJcbiAgICAgICAgcmV0dXJuIGBtb2R1bGUuZXhwb3J0cyA9ICR7SlNPTi5zdHJpbmdpZnkobWV0YSl9O2A7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhcnRBZGRvbihpZCkge3JldHVybiB0aGlzLmFkZFRoZW1lKGlkKTt9XHJcbiAgICBzdG9wQWRkb24oaWQpIHtyZXR1cm4gdGhpcy5yZW1vdmVUaGVtZShpZCk7fVxyXG5cclxuICAgIGFkZFRoZW1lKGlkT3JBZGRvbikge1xyXG4gICAgICAgIGNvbnN0IGFkZG9uID0gdHlwZW9mKGlkT3JBZGRvbikgPT0gXCJzdHJpbmdcIiA/IHRoaXMuYWRkb25MaXN0LmZpbmQocCA9PiBwLmlkID09IGlkT3JBZGRvbikgOiBpZE9yQWRkb247XHJcbiAgICAgICAgaWYgKCFhZGRvbikgcmV0dXJuO1xyXG4gICAgICAgIERPTU1hbmFnZXIuaW5qZWN0VGhlbWUoYWRkb24uaWQsIGFkZG9uLmNzcyk7XHJcbiAgICAgICAgVG9hc3RzLnNob3coU3RyaW5ncy5BZGRvbnMuZW5hYmxlZC5mb3JtYXQoe25hbWU6IGFkZG9uLm5hbWUsIHZlcnNpb246IGFkZG9uLnZlcnNpb259KSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVtb3ZlVGhlbWUoaWRPckFkZG9uKSB7XHJcbiAgICAgICAgY29uc3QgYWRkb24gPSB0eXBlb2YoaWRPckFkZG9uKSA9PSBcInN0cmluZ1wiID8gdGhpcy5hZGRvbkxpc3QuZmluZChwID0+IHAuaWQgPT0gaWRPckFkZG9uKSA6IGlkT3JBZGRvbjtcclxuICAgICAgICBpZiAoIWFkZG9uKSByZXR1cm47XHJcbiAgICAgICAgRE9NTWFuYWdlci5yZW1vdmVUaGVtZShhZGRvbi5pZCk7XHJcbiAgICAgICAgVG9hc3RzLnNob3coU3RyaW5ncy5BZGRvbnMuZGlzYWJsZWQuZm9ybWF0KHtuYW1lOiBhZGRvbi5uYW1lLCB2ZXJzaW9uOiBhZGRvbi52ZXJzaW9ufSkpO1xyXG4gICAgfVxyXG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/thememanager.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var data__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! data */ \"./src/data/data.js\");\n/* harmony import */ var _addonmanager__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./addonmanager */ \"./src/modules/addonmanager.js\");\n/* harmony import */ var _settingsmanager__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./settingsmanager */ \"./src/modules/settingsmanager.js\");\n/* harmony import */ var _dommanager__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./dommanager */ \"./src/modules/dommanager.js\");\n/* harmony import */ var _strings__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./strings */ \"./src/modules/strings.js\");\n/* harmony import */ var _ui_toasts__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../ui/toasts */ \"./src/ui/toasts.js\");\n/* harmony import */ var _ui_modals__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../ui/modals */ \"./src/ui/modals.js\");\n/* harmony import */ var _ui_settings__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../ui/settings */ \"./src/ui/settings.js\");\n\n\n\n\n\n\n\n\n\nconst path = __webpack_require__(/*! path */ \"path\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class ThemeManager extends _addonmanager__WEBPACK_IMPORTED_MODULE_1__[\"default\"] {\n get name() {\n return \"ThemeManager\";\n }\n\n get moduleExtension() {\n return \".css\";\n }\n\n get extension() {\n return \".theme.css\";\n }\n\n get addonFolder() {\n return path.resolve(data__WEBPACK_IMPORTED_MODULE_0__[\"Config\"].dataPath, \"themes\");\n }\n\n get prefix() {\n return \"theme\";\n }\n\n get language() {\n return \"css\";\n }\n\n initialize() {\n const errors = super.initialize();\n _settingsmanager__WEBPACK_IMPORTED_MODULE_2__[\"default\"].registerPanel(\"themes\", _strings__WEBPACK_IMPORTED_MODULE_4__[\"default\"].Panels.themes, {\n element: () => _ui_settings__WEBPACK_IMPORTED_MODULE_7__[\"default\"].getAddonPanel(_strings__WEBPACK_IMPORTED_MODULE_4__[\"default\"].Panels.themes, this.addonList, this.state, {\n folder: this.addonFolder,\n onChange: this.toggleTheme.bind(this),\n reload: this.reloadTheme.bind(this),\n refreshList: this.updateThemeList.bind(this),\n saveAddon: this.saveAddon.bind(this),\n editAddon: this.editAddon.bind(this),\n deleteAddon: this.deleteAddon.bind(this),\n prefix: this.prefix\n })\n });\n return errors;\n }\n /* Aliases */\n\n\n updateThemeList() {\n return this.updateList();\n }\n\n loadAllThemes() {\n return this.loadAllAddons();\n }\n\n enableTheme(idOrAddon) {\n return this.enableAddon(idOrAddon);\n }\n\n disableTheme(idOrAddon) {\n return this.disableAddon(idOrAddon);\n }\n\n toggleTheme(id) {\n return this.toggleAddon(id);\n }\n\n unloadTheme(idOrFileOrAddon) {\n return this.unloadAddon(idOrFileOrAddon);\n }\n\n loadTheme(filename) {\n const error = this.loadAddon(filename);\n if (error) _ui_modals__WEBPACK_IMPORTED_MODULE_6__[\"default\"].showAddonErrors({\n themes: [error]\n });\n }\n\n reloadTheme(idOrFileOrAddon) {\n const error = this.reloadAddon(idOrFileOrAddon);\n if (error) _ui_modals__WEBPACK_IMPORTED_MODULE_6__[\"default\"].showAddonErrors({\n themes: [error]\n });\n }\n /* Overrides */\n\n\n getFileModification(module, fileContent, meta) {\n meta.css = fileContent;\n return `module.exports = ${JSON.stringify(meta)};`;\n }\n\n startAddon(id) {\n return this.addTheme(id);\n }\n\n stopAddon(id) {\n return this.removeTheme(id);\n }\n\n addTheme(idOrAddon) {\n const addon = typeof idOrAddon == \"string\" ? this.addonList.find(p => p.id == idOrAddon) : idOrAddon;\n if (!addon) return;\n _dommanager__WEBPACK_IMPORTED_MODULE_3__[\"default\"].injectTheme(addon.id, addon.css);\n _ui_toasts__WEBPACK_IMPORTED_MODULE_5__[\"default\"].show(_strings__WEBPACK_IMPORTED_MODULE_4__[\"default\"].Addons.enabled.format({\n name: addon.name,\n version: addon.version\n }));\n }\n\n removeTheme(idOrAddon) {\n const addon = typeof idOrAddon == \"string\" ? this.addonList.find(p => p.id == idOrAddon) : idOrAddon;\n if (!addon) return;\n _dommanager__WEBPACK_IMPORTED_MODULE_3__[\"default\"].removeTheme(addon.id);\n _ui_toasts__WEBPACK_IMPORTED_MODULE_5__[\"default\"].show(_strings__WEBPACK_IMPORTED_MODULE_4__[\"default\"].Addons.disabled.format({\n name: addon.name,\n version: addon.version\n }));\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy90aGVtZW1hbmFnZXIuanM/NDA3OCJdLCJuYW1lcyI6WyJwYXRoIiwicmVxdWlyZSIsIlRoZW1lTWFuYWdlciIsIkFkZG9uTWFuYWdlciIsIm5hbWUiLCJtb2R1bGVFeHRlbnNpb24iLCJleHRlbnNpb24iLCJhZGRvbkZvbGRlciIsInJlc29sdmUiLCJDb25maWciLCJkYXRhUGF0aCIsInByZWZpeCIsImxhbmd1YWdlIiwiaW5pdGlhbGl6ZSIsImVycm9ycyIsIlNldHRpbmdzIiwicmVnaXN0ZXJQYW5lbCIsIlN0cmluZ3MiLCJQYW5lbHMiLCJ0aGVtZXMiLCJlbGVtZW50IiwiU2V0dGluZ3NSZW5kZXJlciIsImdldEFkZG9uUGFuZWwiLCJhZGRvbkxpc3QiLCJzdGF0ZSIsImZvbGRlciIsIm9uQ2hhbmdlIiwidG9nZ2xlVGhlbWUiLCJiaW5kIiwicmVsb2FkIiwicmVsb2FkVGhlbWUiLCJyZWZyZXNoTGlzdCIsInVwZGF0ZVRoZW1lTGlzdCIsInNhdmVBZGRvbiIsImVkaXRBZGRvbiIsImRlbGV0ZUFkZG9uIiwidXBkYXRlTGlzdCIsImxvYWRBbGxUaGVtZXMiLCJsb2FkQWxsQWRkb25zIiwiZW5hYmxlVGhlbWUiLCJpZE9yQWRkb24iLCJlbmFibGVBZGRvbiIsImRpc2FibGVUaGVtZSIsImRpc2FibGVBZGRvbiIsImlkIiwidG9nZ2xlQWRkb24iLCJ1bmxvYWRUaGVtZSIsImlkT3JGaWxlT3JBZGRvbiIsInVubG9hZEFkZG9uIiwibG9hZFRoZW1lIiwiZmlsZW5hbWUiLCJlcnJvciIsImxvYWRBZGRvbiIsIk1vZGFscyIsInNob3dBZGRvbkVycm9ycyIsInJlbG9hZEFkZG9uIiwiZ2V0RmlsZU1vZGlmaWNhdGlvbiIsIm1vZHVsZSIsImZpbGVDb250ZW50IiwibWV0YSIsImNzcyIsIkpTT04iLCJzdHJpbmdpZnkiLCJzdGFydEFkZG9uIiwiYWRkVGhlbWUiLCJzdG9wQWRkb24iLCJyZW1vdmVUaGVtZSIsImFkZG9uIiwiZmluZCIsInAiLCJET01NYW5hZ2VyIiwiaW5qZWN0VGhlbWUiLCJUb2FzdHMiLCJzaG93IiwiQWRkb25zIiwiZW5hYmxlZCIsImZvcm1hdCIsInZlcnNpb24iLCJkaXNhYmxlZCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTs7QUFFQSxNQUFNQSxJQUFJLEdBQUdDLG1CQUFPLENBQUMsa0JBQUQsQ0FBcEI7O0FBRWUsbUVBQUksTUFBTUMsWUFBTixTQUEyQkMscURBQTNCLENBQXdDO0FBQ3ZELE1BQUlDLElBQUosR0FBVztBQUFDLFdBQU8sY0FBUDtBQUF1Qjs7QUFDbkMsTUFBSUMsZUFBSixHQUFzQjtBQUFDLFdBQU8sTUFBUDtBQUFlOztBQUN0QyxNQUFJQyxTQUFKLEdBQWdCO0FBQUMsV0FBTyxZQUFQO0FBQXFCOztBQUN0QyxNQUFJQyxXQUFKLEdBQWtCO0FBQUMsV0FBT1AsSUFBSSxDQUFDUSxPQUFMLENBQWFDLDJDQUFNLENBQUNDLFFBQXBCLEVBQThCLFFBQTlCLENBQVA7QUFBZ0Q7O0FBQ25FLE1BQUlDLE1BQUosR0FBYTtBQUFDLFdBQU8sT0FBUDtBQUFnQjs7QUFDOUIsTUFBSUMsUUFBSixHQUFlO0FBQUMsV0FBTyxLQUFQO0FBQWM7O0FBRTlCQyxZQUFVLEdBQUc7QUFDVCxVQUFNQyxNQUFNLEdBQUcsTUFBTUQsVUFBTixFQUFmO0FBQ0FFLDREQUFRLENBQUNDLGFBQVQsQ0FBdUIsUUFBdkIsRUFBaUNDLGdEQUFPLENBQUNDLE1BQVIsQ0FBZUMsTUFBaEQsRUFBd0Q7QUFBQ0MsYUFBTyxFQUFFLE1BQU1DLG9EQUFnQixDQUFDQyxhQUFqQixDQUErQkwsZ0RBQU8sQ0FBQ0MsTUFBUixDQUFlQyxNQUE5QyxFQUFzRCxLQUFLSSxTQUEzRCxFQUFzRSxLQUFLQyxLQUEzRSxFQUFrRjtBQUN0SkMsY0FBTSxFQUFFLEtBQUtsQixXQUR5STtBQUV0Sm1C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T0FBZixDQUF1QkMsTUFBdkIsQ0FBOEI7QUFBQ3hFLFVBQUksRUFBRStELEtBQUssQ0FBQy9ELElBQWI7QUFBbUJ5RSxhQUFPLEVBQUVWLEtBQUssQ0FBQ1U7QUFBbEMsS0FBOUIsQ0FBWjtBQUNIOztBQUVEWCxhQUFXLENBQUMxQixTQUFELEVBQVk7QUFDbkIsVUFBTTJCLEtBQUssR0FBRyxPQUFPM0IsU0FBUCxJQUFxQixRQUFyQixHQUFnQyxLQUFLakIsU0FBTCxDQUFlNkMsSUFBZixDQUFvQkMsQ0FBQyxJQUFJQSxDQUFDLENBQUN6QixFQUFGLElBQVFKLFNBQWpDLENBQWhDLEdBQThFQSxTQUE1RjtBQUNBLFFBQUksQ0FBQzJCLEtBQUwsRUFBWTtBQUNaRyx1REFBVSxDQUFDSixXQUFYLENBQXVCQyxLQUFLLENBQUN2QixFQUE3QjtBQUNBNEIsc0RBQU0sQ0FBQ0MsSUFBUCxDQUFZeEQsZ0RBQU8sQ0FBQ3lELE1BQVIsQ0FBZUksUUFBZixDQUF3QkYsTUFBeEIsQ0FBK0I7QUFBQ3hFLFVBQUksRUFBRStELEtBQUssQ0FBQy9ELElBQWI7QUFBbUJ5RSxhQUFPLEVBQUVWLEtBQUssQ0FBQ1U7QUFBbEMsS0FBL0IsQ0FBWjtBQUNIOztBQWhFc0QsQ0FBNUMsRUFBZiIsImZpbGUiOiIuL3NyYy9tb2R1bGVzL3RoZW1lbWFuYWdlci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29uZmlnfSBmcm9tIFwiZGF0YVwiO1xyXG5pbXBvcnQgQWRkb25NYW5hZ2VyIGZyb20gXCIuL2FkZG9ubWFuYWdlclwiO1xyXG5pbXBvcnQgU2V0dGluZ3MgZnJvbSBcIi4vc2V0dGluZ3NtYW5hZ2VyXCI7XHJcbmltcG9ydCBET01NYW5hZ2VyIGZyb20gXCIuL2RvbW1hbmFnZXJcIjtcclxuaW1wb3J0IFN0cmluZ3MgZnJvbSBcIi4vc3RyaW5nc1wiO1xyXG5cclxuaW1wb3J0IFRvYXN0cyBmcm9tIFwiLi4vdWkvdG9hc3RzXCI7XHJcbmltcG9ydCBNb2RhbHMgZnJvbSBcIi4uL3VpL21vZGFsc1wiO1xyXG5pbXBvcnQgU2V0dGluZ3NSZW5kZXJlciBmcm9tIFwiLi4vdWkvc2V0dGluZ3NcIjtcclxuXHJcbmNvbnN0IHBhdGggPSByZXF1aXJlKFwicGF0aFwiKTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IG5ldyBjbGFzcyBUaGVtZU1hbmFnZXIgZXh0ZW5kcyBBZGRvbk1hbmFnZXIge1xyXG4gICAgZ2V0IG5hbWUoKSB7cmV0dXJuIFwiVGhlbWVNYW5hZ2VyXCI7fVxyXG4gICAgZ2V0IG1vZHVsZUV4dGVuc2lvbigpIHtyZXR1cm4gXCIuY3NzXCI7fVxyXG4gICAgZ2V0IGV4dGVuc2lvbigpIHtyZXR1cm4gXCIudGhlbWUuY3NzXCI7fVxyXG4gICAgZ2V0IGFkZG9uRm9sZGVyKCkge3JldHVybiBwYXRoLnJlc29sdmUoQ29uZmlnLmRhdGFQYXRoLCBcInRoZW1lc1wiKTt9XHJcbiAgICBnZXQgcHJlZml4KCkge3JldHVybiBcInRoZW1lXCI7fVxyXG4gICAgZ2V0IGxhbmd1YWdlKCkge3JldHVybiBcImNzc1wiO31cclxuXHJcbiAgICBpbml0aWFsaXplKCkge1xyXG4gICAgICAgIGNvbnN0IGVycm9ycyA9IHN1cGVyLmluaXRpYWxpemUoKTtcclxuICAgICAgICBTZXR0aW5ncy5yZWdpc3RlclBhbmVsKFwidGhlbWVzXCIsIFN0cmluZ3MuUGFuZWxzLnRoZW1lcywge2VsZW1lbnQ6ICgpID0+IFNldHRpbmdzUmVuZGVyZXIuZ2V0QWRkb25QYW5lbChTdHJpbmdzLlBhbmVscy50aGVtZXMsIHRoaXMuYWRkb25MaXN0LCB0aGlzLnN0YXRlLCB7XHJcbiAgICAgICAgICAgIGZvbGRlcjogdGhpcy5hZGRvbkZvbGRlcixcclxuICAgICAgICAgICAgb25DaGFuZ2U6IHRoaXMudG9nZ2xlVGhlbWUuYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgcmVsb2FkOiB0aGlzLnJlbG9hZFRoZW1lLmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgIHJlZnJlc2hMaXN0OiB0aGlzLnVwZGF0ZVRoZW1lTGlzdC5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgICBzYXZlQWRkb246IHRoaXMuc2F2ZUFkZG9uLmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgIGVkaXRBZGRvbjogdGhpcy5lZGl0QWRkb24uYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgZGVsZXRlQWRkb246IHRoaXMuZGVsZXRlQWRkb24uYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgcHJlZml4OiB0aGlzLnByZWZpeFxyXG4gICAgICAgIH0pfSk7XHJcbiAgICAgICAgcmV0dXJuIGVycm9ycztcclxuICAgIH1cclxuXHJcbiAgICAvKiBBbGlhc2VzICovXHJcbiAgICB1cGRhdGVUaGVtZUxpc3QoKSB7cmV0dXJuIHRoaXMudXBkYXRlTGlzdCgpO31cclxuICAgIGxvYWRBbGxUaGVtZXMoKSB7cmV0dXJuIHRoaXMubG9hZEFsbEFkZG9ucygpO31cclxuXHJcbiAgICBlbmFibGVUaGVtZShpZE9yQWRkb24pIHtyZXR1cm4gdGhpcy5lbmFibGVBZGRvbihpZE9yQWRkb24pO31cclxuICAgIGRpc2FibGVUaGVtZShpZE9yQWRkb24pIHtyZXR1cm4gdGhpcy5kaXNhYmxlQWRkb24oaWRPckFkZG9uKTt9XHJcbiAgICB0b2dnbGVUaGVtZShpZCkge3JldHVybiB0aGlzLnRvZ2dsZUFkZG9uKGlkKTt9XHJcblxyXG4gICAgdW5sb2FkVGhlbWUoaWRPckZpbGVPckFkZG9uKSB7cmV0dXJuIHRoaXMudW5sb2FkQWRkb24oaWRPckZpbGVPckFkZG9uKTt9XHJcblxyXG4gICAgbG9hZFRoZW1lKGZpbGVuYW1lKSB7XHJcbiAgICAgICAgY29uc3QgZXJyb3IgPSB0aGlzLmxvYWRBZGRvbihmaWxlbmFtZSk7XHJcbiAgICAgICAgaWYgKGVycm9yKSBNb2RhbHMuc2hvd0FkZG9uRXJyb3JzKHt0aGVtZXM6IFtlcnJvcl19KTtcclxuICAgIH1cclxuXHJcbiAgICByZWxvYWRUaGVtZShpZE9yRmlsZU9yQWRkb24pIHtcclxuICAgICAgICBjb25zdCBlcnJvciA9IHRoaXMucmVsb2FkQWRkb24oaWRPckZpbGVPckFkZG9uKTtcclxuICAgICAgICBpZiAoZXJyb3IpIE1vZGFscy5zaG93QWRkb25FcnJvcnMoe3RoZW1lczogW2Vycm9yXX0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qIE92ZXJyaWRlcyAqL1xyXG4gICAgZ2V0RmlsZU1vZGlmaWNhdGlvbihtb2R1bGUsIGZpbGVDb250ZW50LCBtZXRhKSB7XHJcbiAgICAgICAgbWV0YS5jc3MgPSBmaWxlQ29udGVudDtcclxuICAgICAgICByZXR1cm4gYG1vZHVsZS5leHBvcnRzID0gJHtKU09OLnN0cmluZ2lmeShtZXRhKX07YDtcclxuICAgIH1cclxuXHJcbiAgICBzdGFydEFkZG9uKGlkKSB7cmV0dXJuIHRoaXMuYWRkVGhlbWUoaWQpO31cclxuICAgIHN0b3BBZGRvbihpZCkge3JldHVybiB0aGlzLnJlbW92ZVRoZW1lKGlkKTt9XHJcblxyXG4gICAgYWRkVGhlbWUoaWRPckFkZG9uKSB7XHJcbiAgICAgICAgY29uc3QgYWRkb24gPSB0eXBlb2YoaWRPckFkZG9uKSA9PSBcInN0cmluZ1wiID8gdGhpcy5hZGRvbkxpc3QuZmluZChwID0+IHAuaWQgPT0gaWRPckFkZG9uKSA6IGlkT3JBZGRvbjtcclxuICAgICAgICBpZiAoIWFkZG9uKSByZXR1cm47XHJcbiAgICAgICAgRE9NTWFuYWdlci5pbmplY3RUaGVtZShhZGRvbi5pZCwgYWRkb24uY3NzKTtcclxuICAgICAgICBUb2FzdHMuc2hvdyhTdHJpbmdzLkFkZG9ucy5lbmFibGVkLmZvcm1hdCh7bmFtZTogYWRkb24ubmFtZSwgdmVyc2lvbjogYWRkb24udmVyc2lvbn0pKTtcclxuICAgIH1cclxuXHJcbiAgICByZW1vdmVUaGVtZShpZE9yQWRkb24pIHtcclxuICAgICAgICBjb25zdCBhZGRvbiA9IHR5cGVvZihpZE9yQWRkb24pID09IFwic3RyaW5nXCIgPyB0aGlzLmFkZG9uTGlzdC5maW5kKHAgPT4gcC5pZCA9PSBpZE9yQWRkb24pIDogaWRPckFkZG9uO1xyXG4gICAgICAgIGlmICghYWRkb24pIHJldHVybjtcclxuICAgICAgICBET01NYW5hZ2VyLnJlbW92ZVRoZW1lKGFkZG9uLmlkKTtcclxuICAgICAgICBUb2FzdHMuc2hvdyhTdHJpbmdzLkFkZG9ucy5kaXNhYmxlZC5mb3JtYXQoe25hbWU6IGFkZG9uLm5hbWUsIHZlcnNpb246IGFkZG9uLnZlcnNpb259KSk7XHJcbiAgICB9XHJcbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/thememanager.js\n"); /***/ }), @@ -611,7 +610,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var data /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Utilities; });\n/* harmony import */ var data__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! data */ \"./src/data/data.js\");\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./logger */ \"./src/modules/logger.js\");\n/* harmony import */ var _domtools__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./domtools */ \"./src/modules/domtools.js\");\n\n\n\nclass Utilities {\n static repoUrl(path) {\n return `https://cdn.staticaly.com/gh/${data__WEBPACK_IMPORTED_MODULE_0__[\"Config\"].repo}/BetterDiscordApp/${data__WEBPACK_IMPORTED_MODULE_0__[\"Config\"].hash}/${path}`;\n }\n /**\r\n * Parses a string of HTML and returns the results. If the second parameter is true,\r\n * the parsed HTML will be returned as a document fragment {@see https://developer.mozilla.org/en-US/docs/Web/API/DocumentFragment}.\r\n * This is extremely useful if you have a list of elements at the top level, they can then be appended all at once to another node.\r\n *\r\n * If the second parameter is false, then the return value will be the list of parsed\r\n * nodes and there were multiple top level nodes, otherwise the single node is returned.\r\n * @param {string} html - HTML to be parsed\r\n * @param {boolean} [fragment=false] - Whether or not the return should be the raw `DocumentFragment`\r\n * @returns {(DocumentFragment|NodeList|HTMLElement)} - The result of HTML parsing\r\n */\n\n\n static parseHTML(html, fragment = false) {\n const template = document.createElement(\"template\");\n template.innerHTML = html;\n const node = template.content.cloneNode(true);\n if (fragment) return node;\n return node.childNodes.length > 1 ? node.childNodes : node.childNodes[0];\n }\n\n static getTextArea() {\n return _domtools__WEBPACK_IMPORTED_MODULE_2__[\"default\"].query(\".channelTextArea-1LDbYG textarea\");\n }\n\n static insertText(textarea, text) {\n textarea.focus();\n textarea.selectionStart = 0;\n textarea.selectionEnd = textarea.value.length;\n document.execCommand(\"insertText\", false, text);\n }\n\n static escape(s) {\n return s.replace(/[-/\\\\^$*+?.()|[\\]{}]/g, \"\\\\$&\");\n }\n\n static testJSON(data) {\n try {\n return JSON.parse(data);\n } catch (err) {\n return false;\n }\n }\n\n static suppressErrors(method, message) {\n return (...params) => {\n try {\n return method(...params);\n } catch (e) {\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].stacktrace(\"SuppressedError\", \"Error occurred in \" + message, e);\n }\n };\n }\n\n static onRemoved(node, callback) {\n const observer = new MutationObserver(mutations => {\n for (let m = 0; m < mutations.length; m++) {\n const mutation = mutations[m];\n const nodes = Array.from(mutation.removedNodes);\n const directMatch = nodes.indexOf(node) > -1;\n const parentMatch = nodes.some(parent => parent.contains(node));\n\n if (directMatch || parentMatch) {\n observer.disconnect();\n callback();\n }\n }\n });\n observer.observe(document.body, {\n subtree: true,\n childList: true\n });\n }\n\n static isEmpty(obj) {\n if (obj == null || obj == undefined || obj == \"\") return true;\n if (typeof obj !== \"object\") return false;\n if (Array.isArray(obj)) return obj.length == 0;\n\n for (const key in obj) {\n if (obj.hasOwnProperty(key)) return false;\n }\n\n return true;\n }\n /**\r\n * Generates an automatically memoizing version of an object.\r\n * @author Zerebos\r\n * @param {Object} object - object to memoize\r\n * @returns {Proxy} the proxy to the object that memoizes properties\r\n */\n\n\n static memoizeObject(object) {\n const proxy = new Proxy(object, {\n get: function (obj, mod) {\n if (!obj.hasOwnProperty(mod)) return undefined;\n\n if (Object.getOwnPropertyDescriptor(obj, mod).get) {\n const value = obj[mod];\n delete obj[mod];\n obj[mod] = value;\n }\n\n return obj[mod];\n },\n set: function (obj, mod, value) {\n if (obj.hasOwnProperty(mod)) return _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].error(\"MemoizedObject\", \"Trying to overwrite existing property\");\n obj[mod] = value;\n return obj[mod];\n }\n });\n Object.defineProperty(proxy, \"hasOwnProperty\", {\n value: function (prop) {\n return this[prop] !== undefined;\n }\n });\n return proxy;\n }\n /**\r\n * Deep extends an object with a set of other objects. Objects later in the list\r\n * of `extenders` have priority, that is to say if one sets a key to be a primitive,\r\n * it will be overwritten with the next one with the same key. If it is an object,\r\n * and the keys match, the object is extended. This happens recursively.\r\n * @param {object} extendee - Object to be extended\r\n * @param {...object} extenders - Objects to extend with\r\n * @returns {object} - A reference to `extendee`\r\n */\n\n\n static extend(extendee, ...extenders) {\n for (let i = 0; i < extenders.length; i++) {\n for (const key in extenders[i]) {\n if (extenders[i].hasOwnProperty(key)) {\n if (typeof extendee[key] === \"object\" && typeof extenders[i][key] === \"object\") this.extend(extendee[key], extenders[i][key]);else if (typeof extenders[i][key] === \"object\") extendee[key] = {}, this.extend(extendee[key], extenders[i][key]);else extendee[key] = extenders[i][key];\n }\n }\n }\n\n return extendee;\n }\n /**\r\n * Format strings with placeholders (`{{placeholder}}`) into full strings.\r\n * Quick example: `PluginUtilities.formatString(\"Hello, {{user}}\", {user: \"Zerebos\"})`\r\n * would return \"Hello, Zerebos\".\r\n * @param {string} string - string to format\r\n * @param {object} values - object literal of placeholders to replacements\r\n * @returns {string} the properly formatted string\r\n */\n\n\n static formatString(string, values) {\n for (const val in values) {\n let replacement = values[val];\n if (Array.isArray(replacement)) replacement = JSON.stringify(replacement);\n if (typeof replacement === \"object\" && replacement !== null) replacement = replacement.toString();\n string = string.replace(new RegExp(`{{${val}}}`, \"g\"), replacement);\n }\n\n return string;\n }\n /**\r\n * Finds a value, subobject, or array from a tree that matches a specific filter.\r\n * @param {object} tree Tree that should be walked\r\n * @param {callable} searchFilter Filter to check against each object and subobject\r\n * @param {object} options Additional options to customize the search\r\n * @param {Array|null} [options.walkable=null] Array of strings to use as keys that are allowed to be walked on. Null value indicates all keys are walkable\r\n * @param {Array} [options.ignore=[]] Array of strings to use as keys to exclude from the search, most helpful when `walkable = null`.\r\n */\n\n\n static findInTree(tree, searchFilter, {\n walkable = null,\n ignore = []\n } = {}) {\n if (typeof searchFilter === \"string\") {\n if (tree.hasOwnProperty(searchFilter)) return tree[searchFilter];\n } else if (searchFilter(tree)) {\n return tree;\n }\n\n if (typeof tree !== \"object\" || tree == null) return undefined;\n let tempReturn = undefined;\n\n if (tree instanceof Array) {\n for (const value of tree) {\n tempReturn = this.findInTree(value, searchFilter, {\n walkable,\n ignore\n });\n if (typeof tempReturn != \"undefined\") return tempReturn;\n }\n } else {\n const toWalk = walkable == null ? Object.keys(tree) : walkable;\n\n for (const key of toWalk) {\n if (typeof tree[key] == \"undefined\" || ignore.includes(key)) continue;\n tempReturn = this.findInTree(tree[key], searchFilter, {\n walkable,\n ignore\n });\n if (typeof tempReturn != \"undefined\") return tempReturn;\n }\n }\n\n return tempReturn;\n }\n /**\r\n * Gets a nested property (if it exists) safely. Path should be something like `prop.prop2.prop3`.\r\n * Numbers can be used for arrays as well like `prop.prop2.array.0.id`.\r\n * @param {Object} obj - object to get nested property of\r\n * @param {string} path - representation of the property to obtain\r\n */\n\n\n static getNestedProp(obj, path) {\n return path.split(/\\s?\\.\\s?/).reduce(function (currentObj, prop) {\n return currentObj && currentObj[prop];\n }, obj);\n }\n /**\r\n * Finds a value, subobject, or array from a tree that matches a specific filter. Great for patching render functions.\r\n * @param {object} tree React tree to look through. Can be a rendered object or an internal instance.\r\n * @param {callable} searchFilter Filter function to check subobjects against.\r\n */\n\n\n static findInRenderTree(tree, searchFilter, {\n walkable = [\"props\", \"children\", \"child\", \"sibling\"],\n ignore = []\n } = {}) {\n return this.findInTree(tree, searchFilter, {\n walkable,\n ignore\n });\n }\n /**\r\n * Finds a value, subobject, or array from a tree that matches a specific filter. Great for patching render functions.\r\n * @param {object} tree React tree to look through. Can be a rendered object or an internal instance.\r\n * @param {callable} searchFilter Filter function to check subobjects against.\r\n */\n\n\n static findInReactTree(tree, searchFilter) {\n return this.findInTree(tree, searchFilter, {\n walkable: [\"props\", \"children\", \"return\", \"stateNode\"]\n });\n }\n\n static getReactInstance(node) {\n if (node.__reactInternalInstance$) return node.__reactInternalInstance$;\n return node[Object.keys(node).find(k => k.startsWith(\"__reactInternalInstance\"))] || null;\n }\n /**\r\n * Grabs a value from the react internal instance. Allows you to grab\r\n * long depth values safely without accessing no longer valid properties.\r\n * @param {HTMLElement} node - node to obtain react instance of\r\n * @param {object} options - options for the search\r\n * @param {array} [options.include] - list of items to include from the search\r\n * @param {array} [options.exclude=[\"Popout\", \"Tooltip\", \"Scroller\", \"BackgroundFlash\"]] - list of items to exclude from the search\r\n * @param {callable} [options.filter=_=>_] - filter to check the current instance with (should return a boolean)\r\n * @return {(*|null)} the owner instance or undefined if not found.\r\n */\n\n\n static getOwnerInstance(node, {\n include,\n exclude = [\"Popout\", \"Tooltip\", \"Scroller\", \"BackgroundFlash\"],\n filter = _ => _\n } = {}) {\n if (node === undefined) return undefined;\n const excluding = include === undefined;\n const nameFilter = excluding ? exclude : include;\n\n function getDisplayName(owner) {\n const type = owner.type;\n if (!type) return null;\n return type.displayName || type.name || null;\n }\n\n function classFilter(owner) {\n const name = getDisplayName(owner);\n return name !== null && !!(nameFilter.includes(name) ^ excluding);\n }\n\n let curr = this.getReactInstance(node);\n\n for (curr = curr && curr.return; curr !== null; curr = curr.return) {\n if (curr === null) continue;\n const owner = curr.stateNode;\n if (curr !== null && !(owner instanceof HTMLElement) && classFilter(curr) && filter(owner)) return owner;\n }\n\n return null;\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL21vZHVsZXMvdXRpbGl0aWVzLmpzPzk3NjkiXSwibmFtZXMiOlsiVXRpbGl0aWVzIiwicmVwb1VybCIsInBhdGgiLCJDb25maWciLCJyZXBvIiwiaGFzaCIsInBhcnNlSFRNTCIsImh0bWwiLCJmcmFnbWVudCIsInRlbXBsYXRlIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwiaW5uZXJIVE1MIiwibm9kZSIsImNvbnRlbnQiLCJjbG9uZU5vZGUiLCJjaGlsZE5vZGVzIiwibGVuZ3RoIiwiZ2V0VGV4dEFyZWEiLCJET00iLCJxdWVyeSIsImluc2VydFRleHQiLCJ0ZXh0YXJlYSIsInRleHQiLCJmb2N1cyIsInNlbGVjdGlvblN0YXJ0Iiwic2VsZWN0aW9uRW5kIiwidmFsdWUiLCJleGVjQ29tbWFuZCIsImVzY2FwZSIsInMiLCJyZXBsYWNlIiwidGVzdEpTT04iLCJkYXRhIiwiSlNPTiIsInBhcnNlIiwiZXJyIiwic3VwcHJlc3NFcnJvcnMiLCJtZXRob2QiLCJtZXNzYWdlIiwicGFyYW1zIiwiZSIsIkxvZ2dlciIsInN0YWNrdHJhY2UiLCJvblJlbW92ZWQiLCJjYWxsYmFjayIsIm9ic2VydmVyIiwiTXV0YXRpb25PYnNlcnZlciIsIm11dGF0aW9ucyIsIm0iLCJtdXRhdGlvbiIsIm5vZGVzIiwiQXJyYXkiLCJmcm9tIiwicmVtb3ZlZE5vZGVzIiwiZGlyZWN0TWF0Y2giLCJpbmRleE9mIiwicGFyZW50TWF0Y2giLCJzb21lIiwicGFyZW50IiwiY29udGFpbnMiLCJkaXNjb25uZWN0Iiwib2JzZXJ2ZSIsImJvZHkiLCJzdWJ0cmVlIiwiY2hpbGRMaXN0IiwiaXNFbXB0eSIsIm9iaiIsInVuZGVmaW5lZCIsImlzQXJyYXkiLCJrZXkiLCJoYXNPd25Qcm9wZXJ0eSIsIm1lbW9pemVPYmplY3QiLCJvYmplY3QiLCJwcm94eSIsIlByb3h5IiwiZ2V0IiwibW9kIiwiT2JqZWN0IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwic2V0IiwiZXJyb3IiLCJkZWZpbmVQcm9wZXJ0eSIsInByb3AiLCJleHRlbmQiLCJleHRlbmRlZSIsImV4dGVuZGVycyIsImkiLCJmb3JtYXRTdHJpbmciLCJzdHJpbmciLCJ2YWx1ZXMiLCJ2YWwiLCJyZXBsYWNlbWVudCIsInN0cmluZ2lmeSIsInRvU3RyaW5nIiwiUmVnRXhwIiwiZmluZEluVHJlZSIsInRyZWUiLCJzZWFyY2hGaWx0ZXIiLCJ3YWxrYWJsZSIsImlnbm9yZSIsInRlbXBSZXR1cm4iLCJ0b1dhbGsiLCJrZXlzIiwiaW5jbHVkZXMiLCJnZXROZXN0ZWRQcm9wIiwic3BsaXQiLCJyZWR1Y2UiLCJjdXJyZW50T2JqIiwiZmluZEluUmVuZGVyVHJlZSIsImZpbmRJblJlYWN0VHJlZSIsImdldFJlYWN0SW5zdGFuY2UiLCJfX3JlYWN0SW50ZXJuYWxJbnN0YW5jZSQiLCJmaW5kIiwiayIsInN0YXJ0c1dpdGgiLCJnZXRPd25lckluc3RhbmNlIiwiaW5jbHVkZSIsImV4Y2x1ZGUiLCJmaWx0ZXIiLCJfIiwiZXhjbHVkaW5nIiwibmFtZUZpbHRlciIsImdldERpc3BsYXlOYW1lIiwib3duZXIiLCJ0eXBlIiwiZGlzcGxheU5hbWUiLCJuYW1lIiwiY2xhc3NGaWx0ZXIiLCJjdXJyIiwicmV0dXJuIiwic3RhdGVOb2RlIiwiSFRNTEVsZW1lbnQiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFFZSxNQUFNQSxTQUFOLENBQWdCO0FBRTNCLFNBQU9DLE9BQVAsQ0FBZUMsSUFBZixFQUFxQjtBQUNqQixXQUFRLGdDQUErQkMsMkNBQU0sQ0FBQ0MsSUFBSyxxQkFBb0JELDJDQUFNLENBQUNFLElBQUssSUFBR0gsSUFBSyxFQUEzRjtBQUNIO0FBRUQ7Ozs7Ozs7Ozs7Ozs7QUFXQSxTQUFPSSxTQUFQLENBQWlCQyxJQUFqQixFQUF1QkMsUUFBUSxHQUFHLEtBQWxDLEVBQXlDO0FBQ3JDLFVBQU1DLFFBQVEsR0FBR0MsUUFBUSxDQUFDQyxh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QUFvRTtBQUNuRSxVQUFJRCxJQUFJLEtBQUssSUFBYixFQUFtQjtBQUNuQixZQUFNTCxLQUFLLEdBQUdLLElBQUksQ0FBQ0UsU0FBbkI7QUFDQSxVQUFJRixJQUFJLEtBQUssSUFBVCxJQUFpQixFQUFFTCxLQUFLLFlBQVlRLFdBQW5CLENBQWpCLElBQW9ESixXQUFXLENBQUNDLElBQUQsQ0FBL0QsSUFBeUVWLE1BQU0sQ0FBQ0ssS0FBRCxDQUFuRixFQUE0RixPQUFPQSxLQUFQO0FBQzVGOztBQUVELFdBQU8sSUFBUDtBQUNBOztBQWpRNkIiLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy91dGlsaXRpZXMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbmZpZ30gZnJvbSBcImRhdGFcIjtcclxuaW1wb3J0IExvZ2dlciBmcm9tIFwiLi9sb2dnZXJcIjtcclxuaW1wb3J0IERPTSBmcm9tIFwiLi9kb210b29sc1wiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVXRpbGl0aWVzIHtcclxuXHJcbiAgICBzdGF0aWMgcmVwb1VybChwYXRoKSB7XHJcbiAgICAgICAgcmV0dXJuIGBodHRwczovL2Nkbi5zdGF0aWNhbHkuY29tL2doLyR7Q29uZmlnLnJlcG99L0JldHRlckRpc2NvcmRBcHAvJHtDb25maWcuaGFzaH0vJHtwYXRofWA7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQYXJzZXMgYSBzdHJpbmcgb2YgSFRNTCBhbmQgcmV0dXJucyB0aGUgcmVzdWx0cy4gSWYgdGhlIHNlY29uZCBwYXJhbWV0ZXIgaXMgdHJ1ZSxcclxuICAgICAqIHRoZSBwYXJzZWQgSFRNTCB3aWxsIGJlIHJldHVybmVkIGFzIGEgZG9jdW1lbnQgZnJhZ21lbnQge0BzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0RvY3VtZW50RnJhZ21lbnR9LlxyXG4gICAgICogVGhpcyBpcyBleHRyZW1lbHkgdXNlZnVsIGlmIHlvdSBoYXZlIGEgbGlzdCBvZiBlbGVtZW50cyBhdCB0aGUgdG9wIGxldmVsLCB0aGV5IGNhbiB0aGVuIGJlIGFwcGVuZGVkIGFsbCBhdCBvbmNlIHRvIGFub3RoZXIgbm9kZS5cclxuICAgICAqXHJcbiAgICAgKiBJZiB0aGUgc2Vjb25kIHBhcmFtZXRlciBpcyBmYWxzZSwgdGhlbiB0aGUgcmV0dXJuIHZhbHVlIHdpbGwgYmUgdGhlIGxpc3Qgb2YgcGFyc2VkXHJcbiAgICAgKiBub2RlcyBhbmQgdGhlcmUgd2VyZSBtdWx0aXBsZSB0b3AgbGV2ZWwgbm9kZXMsIG90aGVyd2lzZSB0aGUgc2luZ2xlIG5vZGUgaXMgcmV0dXJuZWQuXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gaHRtbCAtIEhUTUwgdG8gYmUgcGFyc2VkXHJcbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtmcmFnbWVudD1mYWxzZV0gLSBXaGV0aGVyIG9yIG5vdCB0aGUgcmV0dXJuIHNob3VsZCBiZSB0aGUgcmF3IGBEb2N1bWVudEZyYWdtZW50YFxyXG4gICAgICogQHJldHVybnMgeyhEb2N1bWVudEZyYWdtZW50fE5vZGVMaXN0fEhUTUxFbGVtZW50KX0gLSBUaGUgcmVzdWx0IG9mIEhUTUwgcGFyc2luZ1xyXG4gICAgICovXHJcbiAgICBzdGF0aWMgcGFyc2VIVE1MKGh0bWwsIGZyYWdtZW50ID0gZmFsc2UpIHtcclxuICAgICAgICBjb25zdCB0ZW1wbGF0ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJ0ZW1wbGF0ZVwiKTtcclxuICAgICAgICB0ZW1wbGF0ZS5pbm5lckhUTUwgPSBodG1sO1xyXG4gICAgICAgIGNvbnN0IG5vZGUgPSB0ZW1wbGF0ZS5jb250ZW50LmNsb25lTm9kZSh0cnVlKTtcclxuICAgICAgICBpZiAoZnJhZ21lbnQpIHJldHVybiBub2RlO1xyXG4gICAgICAgIHJldHVybiBub2RlLmNoaWxkTm9kZXMubGVuZ3RoID4gMSA/IG5vZGUuY2hpbGROb2RlcyA6IG5vZGUuY2hpbGROb2Rlc1swXTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgZ2V0VGV4dEFyZWEoKSB7XHJcbiAgICAgICAgcmV0dXJuIERPTS5xdWVyeShcIi5jaGFubmVsVGV4dEFyZWEtMUxEYllHIHRleHRhcmVhXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBpbnNlcnRUZXh0KHRleHRhcmVhLCB0ZXh0KSB7XHJcbiAgICAgICAgdGV4dGFyZWEuZm9jdXMoKTtcclxuICAgICAgICB0ZXh0YXJlYS5zZWxlY3Rpb25TdGFydCA9IDA7XHJcbiAgICAgICAgdGV4dGFyZWEuc2VsZWN0aW9uRW5kID0gdGV4dGFyZWEudmFsdWUubGVuZ3RoO1xyXG4gICAgICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKFwiaW5zZXJ0VGV4dFwiLCBmYWxzZSwgdGV4dCk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGVzY2FwZShzKSB7XHJcbiAgICAgICAgcmV0dXJuIHMucmVwbGFjZSgvWy0vXFxcXF4kKis/LigpfFtcXF17fV0vZywgXCJcXFxcJCZcIik7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIHRlc3RKU09OKGRhdGEpIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShkYXRhKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGVycikge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBzdXBwcmVzc0Vycm9ycyhtZXRob2QsIG1lc3NhZ2UpIHtcclxuICAgICAgICByZXR1cm4gKC4uLnBhcmFtcykgPT4ge1xyXG4gICAgICAgICAgICB0cnkgeyByZXR1cm4gbWV0aG9kKC4uLnBhcmFtcyk7XHR9XHJcbiAgICAgICAgICAgIGNhdGNoIChlKSB7IExvZ2dlci5zdGFja3RyYWNlKFwiU3VwcHJlc3NlZEVycm9yXCIsIFwiRXJyb3Igb2NjdXJyZWQgaW4gXCIgKyBtZXNzYWdlLCBlKTsgfVxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIG9uUmVtb3ZlZChub2RlLCBjYWxsYmFjaykge1xyXG4gICAgICAgIGNvbnN0IG9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKG11dGF0aW9ucykgPT4ge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBtID0gMDsgbSA8IG11dGF0aW9ucy5sZW5ndGg7IG0rKykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbXV0YXRpb24gPSBtdXRhdGlvbnNbbV07XHJcbiAgICAgICAgICAgICAgICBjb25zdCBub2RlcyA9IEFycmF5LmZyb20obXV0YXRpb24ucmVtb3ZlZE5vZGVzKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGRpcmVjdE1hdGNoID0gbm9kZXMuaW5kZXhPZihub2RlKSA+IC0xO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcGFyZW50TWF0Y2ggPSBub2Rlcy5zb21lKHBhcmVudCA9PiBwYXJlbnQuY29udGFpbnMobm9kZSkpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGRpcmVjdE1hdGNoIHx8IHBhcmVudE1hdGNoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShkb2N1bWVudC5ib2R5LCB7c3VidHJlZTogdHJ1ZSwgY2hpbGRMaXN0OiB0cnVlfSk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGlzRW1wdHkob2JqKSB7XHJcbiAgICAgICAgaWYgKG9iaiA9PSBudWxsIHx8IG9iaiA9PSB1bmRlZmluZWQgfHwgb2JqID09IFwiXCIpIHJldHVybiB0cnVlO1xyXG4gICAgICAgIGlmICh0eXBlb2Yob2JqKSAhPT0gXCJvYmplY3RcIikgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KG9iaikpIHJldHVybiBvYmoubGVuZ3RoID09IDA7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gb2JqKSB7XHJcbiAgICAgICAgICAgIGlmIChvYmouaGFzT3duUHJvcGVydHkoa2V5KSkgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdlbmVyYXRlcyBhbiBhdXRvbWF0aWNhbGx5IG1lbW9pemluZyB2ZXJzaW9uIG9mIGFuIG9iamVjdC5cclxuICAgICAqIEBhdXRob3IgWmVyZWJvc1xyXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCAtIG9iamVjdCB0byBtZW1vaXplXHJcbiAgICAgKiBAcmV0dXJucyB7UHJveHl9IHRoZSBwcm94eSB0byB0aGUgb2JqZWN0IHRoYXQgbWVtb2l6ZXMgcHJvcGVydGllc1xyXG4gICAgICovXHJcbiAgICBzdGF0aWMgbWVtb2l6ZU9iamVjdChvYmplY3QpIHtcclxuICAgICAgICBjb25zdCBwcm94eSA9IG5ldyBQcm94eShvYmplY3QsIHtcclxuICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbihvYmosIG1vZCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFvYmouaGFzT3duUHJvcGVydHkobW9kKSkgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgICAgICAgICAgICAgIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwgbW9kKS5nZXQpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IG9ialttb2RdO1xyXG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBvYmpbbW9kXTtcclxuICAgICAgICAgICAgICAgICAgICBvYmpbbW9kXSA9IHZhbHVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG9ialttb2RdO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uKG9iaiwgbW9kLCB2YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eShtb2QpKSByZXR1cm4gTG9nZ2VyLmVycm9yKFwiTWVtb2l6ZWRPYmplY3RcIiwgXCJUcnlpbmcgdG8gb3ZlcndyaXRlIGV4aXN0aW5nIHByb3BlcnR5XCIpO1xyXG4gICAgICAgICAgICAgICAgb2JqW21vZF0gPSB2YWx1ZTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBvYmpbbW9kXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocHJveHksIFwiaGFzT3duUHJvcGVydHlcIiwge3ZhbHVlOiBmdW5jdGlvbihwcm9wKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzW3Byb3BdICE9PSB1bmRlZmluZWQ7XHJcbiAgICAgICAgfX0pO1xyXG5cclxuICAgICAgICByZXR1cm4gcHJveHk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBEZWVwIGV4dGVuZHMgYW4gb2JqZWN0IHdpdGggYSBzZXQgb2Ygb3RoZXIgb2JqZWN0cy4gT2JqZWN0cyBsYXRlciBpbiB0aGUgbGlzdFxyXG4gICAgICogb2YgYGV4dGVuZGVyc2AgaGF2ZSBwcmlvcml0eSwgdGhhdCBpcyB0byBzYXkgaWYgb25lIHNldHMgYSBrZXkgdG8gYmUgYSBwcmltaXRpdmUsXHJcbiAgICAgKiBpdCB3aWxsIGJlIG92ZXJ3cml0dGVuIHdpdGggdGhlIG5leHQgb25lIHdpdGggdGhlIHNhbWUga2V5LiBJZiBpdCBpcyBhbiBvYmplY3QsXHJcbiAgICAgKiBhbmQgdGhlIGtleXMgbWF0Y2gsIHRoZSBvYmplY3QgaXMgZXh0ZW5kZWQuIFRoaXMgaGFwcGVucyByZWN1cnNpdmVseS5cclxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBleHRlbmRlZSAtIE9iamVjdCB0byBiZSBleHRlbmRlZFxyXG4gICAgICogQHBhcmFtIHsuLi5vYmplY3R9IGV4dGVuZGVycyAtIE9iamVjdHMgdG8gZXh0ZW5kIHdpdGhcclxuICAgICAqIEByZXR1cm5zIHtvYmplY3R9IC0gQSByZWZlcmVuY2UgdG8gYGV4dGVuZGVlYFxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgZXh0ZW5kKGV4dGVuZGVlLCAuLi5leHRlbmRlcnMpIHtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGV4dGVuZGVycy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBleHRlbmRlcnNbaV0pIHtcclxuICAgICAgICAgICAgICAgIGlmIChleHRlbmRlcnNbaV0uaGFzT3duUHJvcGVydHkoa2V5KSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZXh0ZW5kZWVba2V5XSA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgZXh0ZW5kZXJzW2ldW2tleV0gPT09IFwib2JqZWN0XCIpIHRoaXMuZXh0ZW5kKGV4dGVuZGVlW2tleV0sIGV4dGVuZGVyc1tpXVtrZXldKTtcclxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh0eXBlb2YgZXh0ZW5kZXJzW2ldW2tleV0gPT09IFwib2JqZWN0XCIpIGV4dGVuZGVlW2tleV0gPSB7fSwgdGhpcy5leHRlbmQoZXh0ZW5kZWVba2V5XSwgZXh0ZW5kZXJzW2ldW2tleV0pO1xyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgZXh0ZW5kZWVba2V5XSA9IGV4dGVuZGVyc1tpXVtrZXldO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBleHRlbmRlZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEZvcm1hdCBzdHJpbmdzIHdpdGggcGxhY2Vob2xkZXJzIChge3twbGFjZWhvbGRlcn19YCkgaW50byBmdWxsIHN0cmluZ3MuXHJcbiAgICAgKiBRdWljayBleGFtcGxlOiBgUGx1Z2luVXRpbGl0aWVzLmZvcm1hdFN0cmluZyhcIkhlbGxvLCB7e3VzZXJ9fVwiLCB7dXNlcjogXCJaZXJlYm9zXCJ9KWBcclxuICAgICAqIHdvdWxkIHJldHVybiBcIkhlbGxvLCBaZXJlYm9zXCIuXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIC0gc3RyaW5nIHRvIGZvcm1hdFxyXG4gICAgICogQHBhcmFtIHtvYmplY3R9IHZhbHVlcyAtIG9iamVjdCBsaXRlcmFsIG9mIHBsYWNlaG9sZGVycyB0byByZXBsYWNlbWVudHNcclxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IHRoZSBwcm9wZXJseSBmb3JtYXR0ZWQgc3RyaW5nXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBmb3JtYXRTdHJpbmcoc3RyaW5nLCB2YWx1ZXMpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IHZhbCBpbiB2YWx1ZXMpIHtcclxuICAgICAgICAgICAgbGV0IHJlcGxhY2VtZW50ID0gdmFsdWVzW3ZhbF07XHJcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHJlcGxhY2VtZW50KSkgcmVwbGFjZW1lbnQgPSBKU09OLnN0cmluZ2lmeShyZXBsYWNlbWVudCk7XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2YocmVwbGFjZW1lbnQpID09PSBcIm9iamVjdFwiICYmIHJlcGxhY2VtZW50ICE9PSBudWxsKSByZXBsYWNlbWVudCA9IHJlcGxhY2VtZW50LnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgIHN0cmluZyA9IHN0cmluZy5yZXBsYWNlKG5ldyBSZWdFeHAoYHt7JHt2YWx9fX1gLCBcImdcIiksIHJlcGxhY2VtZW50KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHN0cmluZztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEZpbmRzIGEgdmFsdWUsIHN1Ym9iamVjdCwgb3IgYXJyYXkgZnJvbSBhIHRyZWUgdGhhdCBtYXRjaGVzIGEgc3BlY2lmaWMgZmlsdGVyLlxyXG4gICAgICogQHBhcmFtIHtvYmplY3R9IHRyZWUgVHJlZSB0aGF0IHNob3VsZCBiZSB3YWxrZWRcclxuICAgICAqIEBwYXJhbSB7Y2FsbGFibGV9IHNlYXJjaEZpbHRlciBGaWx0ZXIgdG8gY2hlY2sgYWdhaW5zdCBlYWNoIG9iamVjdCBhbmQgc3Vib2JqZWN0XHJcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gb3B0aW9ucyBBZGRpdGlvbmFsIG9wdGlvbnMgdG8gY3VzdG9taXplIHRoZSBzZWFyY2hcclxuICAgICAqIEBwYXJhbSB7QXJyYXk8c3RyaW5nPnxudWxsfSBbb3B0aW9ucy53YWxrYWJsZT1udWxsXSBBcnJheSBvZiBzdHJpbmdzIHRvIHVzZSBhcyBrZXlzIHRoYXQgYXJlIGFsbG93ZWQgdG8gYmUgd2Fsa2VkIG9uLiBOdWxsIHZhbHVlIGluZGljYXRlcyBhbGwga2V5cyBhcmUgd2Fsa2FibGVcclxuICAgICAqIEBwYXJhbSB7QXJyYXk8c3RyaW5nPn0gW29wdGlvbnMuaWdub3JlPVtdXSBBcnJheSBvZiBzdHJpbmdzIHRvIHVzZSBhcyBrZXlzIHRvIGV4Y2x1ZGUgZnJvbSB0aGUgc2VhcmNoLCBtb3N0IGhlbHBmdWwgd2hlbiBgd2Fsa2FibGUgPSBudWxsYC5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGZpbmRJblRyZWUodHJlZSwgc2VhcmNoRmlsdGVyLCB7d2Fsa2FibGUgPSBudWxsLCBpZ25vcmUgPSBbXX0gPSB7fSkge1xyXG4gICAgICAgIGlmICh0eXBlb2Ygc2VhcmNoRmlsdGVyID09PSBcInN0cmluZ1wiKSB7XHJcbiAgICAgICAgICAgIGlmICh0cmVlLmhhc093blByb3BlcnR5KHNlYXJjaEZpbHRlcikpIHJldHVybiB0cmVlW3NlYXJjaEZpbHRlcl07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHNlYXJjaEZpbHRlcih0cmVlKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJlZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0eXBlb2YgdHJlZSAhPT0gXCJvYmplY3RcIiB8fCB0cmVlID09IG51bGwpIHJldHVybiB1bmRlZmluZWQ7XHJcblxyXG4gICAgICAgIGxldCB0ZW1wUmV0dXJuID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIGlmICh0cmVlIGluc3RhbmNlb2YgQXJyYXkpIHtcclxuICAgICAgICAgICAgZm9yIChjb25zdCB2YWx1ZSBvZiB0cmVlKSB7XHJcbiAgICAgICAgICAgICAgICB0ZW1wUmV0dXJuID0gdGhpcy5maW5kSW5UcmVlKHZhbHVlLCBzZWFyY2hGaWx0ZXIsIHt3YWxrYWJsZSwgaWdub3JlfSk7XHJcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHRlbXBSZXR1cm4gIT0gXCJ1bmRlZmluZWRcIikgcmV0dXJuIHRlbXBSZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHRvV2FsayA9IHdhbGthYmxlID09IG51bGwgPyBPYmplY3Qua2V5cyh0cmVlKSA6IHdhbGthYmxlO1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiB0b1dhbGspIHtcclxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YodHJlZVtrZXldKSA9PSBcInVuZGVmaW5lZFwiIHx8IGlnbm9yZS5pbmNsdWRlcyhrZXkpKSBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIHRlbXBSZXR1cm4gPSB0aGlzLmZpbmRJblRyZWUodHJlZVtrZXldLCBzZWFyY2hGaWx0ZXIsIHt3YWxrYWJsZSwgaWdub3JlfSk7XHJcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHRlbXBSZXR1cm4gIT0gXCJ1bmRlZmluZWRcIikgcmV0dXJuIHRlbXBSZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRlbXBSZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIGEgbmVzdGVkIHByb3BlcnR5IChpZiBpdCBleGlzdHMpIHNhZmVseS4gUGF0aCBzaG91bGQgYmUgc29tZXRoaW5nIGxpa2UgYHByb3AucHJvcDIucHJvcDNgLlxyXG4gICAgICogTnVtYmVycyBjYW4gYmUgdXNlZCBmb3IgYXJyYXlzIGFzIHdlbGwgbGlrZSBgcHJvcC5wcm9wMi5hcnJheS4wLmlkYC5cclxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmogLSBvYmplY3QgdG8gZ2V0IG5lc3RlZCBwcm9wZXJ0eSBvZlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHBhdGggLSByZXByZXNlbnRhdGlvbiBvZiB0aGUgcHJvcGVydHkgdG8gb2J0YWluXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBnZXROZXN0ZWRQcm9wKG9iaiwgcGF0aCkge1xyXG4gICAgICAgIHJldHVybiBwYXRoLnNwbGl0KC9cXHM/XFwuXFxzPy8pLnJlZHVjZShmdW5jdGlvbihjdXJyZW50T2JqLCBwcm9wKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBjdXJyZW50T2JqICYmIGN1cnJlbnRPYmpbcHJvcF07XHJcbiAgICAgICAgfSwgb2JqKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEZpbmRzIGEgdmFsdWUsIHN1Ym9iamVjdCwgb3IgYXJyYXkgZnJvbSBhIHRyZWUgdGhhdCBtYXRjaGVzIGEgc3BlY2lmaWMgZmlsdGVyLiBHcmVhdCBmb3IgcGF0Y2hpbmcgcmVuZGVyIGZ1bmN0aW9ucy5cclxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSB0cmVlIFJlYWN0IHRyZWUgdG8gbG9vayB0aHJvdWdoLiBDYW4gYmUgYSByZW5kZXJlZCBvYmplY3Qgb3IgYW4gaW50ZXJuYWwgaW5zdGFuY2UuXHJcbiAgICAgKiBAcGFyYW0ge2NhbGxhYmxlfSBzZWFyY2hGaWx0ZXIgRmlsdGVyIGZ1bmN0aW9uIHRvIGNoZWNrIHN1Ym9iamVjdHMgYWdhaW5zdC5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGZpbmRJblJlbmRlclRyZWUodHJlZSwgc2VhcmNoRmlsdGVyLCB7d2Fsa2FibGUgPSBbXCJwcm9wc1wiLCBcImNoaWxkcmVuXCIsIFwiY2hpbGRcIiwgXCJzaWJsaW5nXCJdLCBpZ25vcmUgPSBbXX0gPSB7fSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmZpbmRJblRyZWUodHJlZSwgc2VhcmNoRmlsdGVyLCB7d2Fsa2FibGUsIGlnbm9yZX0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRmluZHMgYSB2YWx1ZSwgc3Vib2JqZWN0LCBvciBhcnJheSBmcm9tIGEgdHJlZSB0aGF0IG1hdGNoZXMgYSBzcGVjaWZpYyBmaWx0ZXIuIEdyZWF0IGZvciBwYXRjaGluZyByZW5kZXIgZnVuY3Rpb25zLlxyXG4gICAgICogQHBhcmFtIHtvYmplY3R9IHRyZWUgUmVhY3QgdHJlZSB0byBsb29rIHRocm91Z2guIENhbiBiZSBhIHJlbmRlcmVkIG9iamVjdCBvciBhbiBpbnRlcm5hbCBpbnN0YW5jZS5cclxuICAgICAqIEBwYXJhbSB7Y2FsbGFibGV9IHNlYXJjaEZpbHRlciBGaWx0ZXIgZnVuY3Rpb24gdG8gY2hlY2sgc3Vib2JqZWN0cyBhZ2FpbnN0LlxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgZmluZEluUmVhY3RUcmVlKHRyZWUsIHNlYXJjaEZpbHRlcikge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmZpbmRJblRyZWUodHJlZSwgc2VhcmNoRmlsdGVyLCB7d2Fsa2FibGU6IFtcInByb3BzXCIsIFwiY2hpbGRyZW5cIiwgXCJyZXR1cm5cIiwgXCJzdGF0ZU5vZGVcIl19KTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgZ2V0UmVhY3RJbnN0YW5jZShub2RlKSB7XHJcbiAgICAgICAgaWYgKG5vZGUuX19yZWFjdEludGVybmFsSW5zdGFuY2UkKSByZXR1cm4gbm9kZS5fX3JlYWN0SW50ZXJuYWxJbnN0YW5jZSQ7XHJcbiAgICAgICAgcmV0dXJuIG5vZGVbT2JqZWN0LmtleXMobm9kZSkuZmluZChrID0+IGsuc3RhcnRzV2l0aChcIl9fcmVhY3RJbnRlcm5hbEluc3RhbmNlXCIpKV0gfHwgbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuXHQgKiBHcmFicyBhIHZhbHVlIGZyb20gdGhlIHJlYWN0IGludGVybmFsIGluc3RhbmNlLiBBbGxvd3MgeW91IHRvIGdyYWJcclxuXHQgKiBsb25nIGRlcHRoIHZhbHVlcyBzYWZlbHkgd2l0aG91dCBhY2Nlc3Npbmcgbm8gbG9uZ2VyIHZhbGlkIHByb3BlcnRpZXMuXHJcblx0ICogQHBhcmFtIHtIVE1MRWxlbWVudH0gbm9kZSAtIG5vZGUgdG8gb2J0YWluIHJlYWN0IGluc3RhbmNlIG9mXHJcblx0ICogQHBhcmFtIHtvYmplY3R9IG9wdGlvbnMgLSBvcHRpb25zIGZvciB0aGUgc2VhcmNoXHJcblx0ICogQHBhcmFtIHthcnJheX0gW29wdGlvbnMuaW5jbHVkZV0gLSBsaXN0IG9mIGl0ZW1zIHRvIGluY2x1ZGUgZnJvbSB0aGUgc2VhcmNoXHJcblx0ICogQHBhcmFtIHthcnJheX0gW29wdGlvbnMuZXhjbHVkZT1bXCJQb3BvdXRcIiwgXCJUb29sdGlwXCIsIFwiU2Nyb2xsZXJcIiwgXCJCYWNrZ3JvdW5kRmxhc2hcIl1dIC0gbGlzdCBvZiBpdGVtcyB0byBleGNsdWRlIGZyb20gdGhlIHNlYXJjaFxyXG5cdCAqIEBwYXJhbSB7Y2FsbGFibGV9IFtvcHRpb25zLmZpbHRlcj1fPT5fXSAtIGZpbHRlciB0byBjaGVjayB0aGUgY3VycmVudCBpbnN0YW5jZSB3aXRoIChzaG91bGQgcmV0dXJuIGEgYm9vbGVhbilcclxuXHQgKiBAcmV0dXJuIHsoKnxudWxsKX0gdGhlIG93bmVyIGluc3RhbmNlIG9yIHVuZGVmaW5lZCBpZiBub3QgZm91bmQuXHJcblx0ICovXHJcblx0c3RhdGljIGdldE93bmVySW5zdGFuY2Uobm9kZSwge2luY2x1ZGUsIGV4Y2x1ZGUgPSBbXCJQb3BvdXRcIiwgXCJUb29sdGlwXCIsIFwiU2Nyb2xsZXJcIiwgXCJCYWNrZ3JvdW5kRmxhc2hcIl0sIGZpbHRlciA9IF8gPT4gX30gPSB7fSkge1xyXG5cdFx0aWYgKG5vZGUgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHVuZGVmaW5lZDtcclxuXHRcdGNvbnN0IGV4Y2x1ZGluZyA9IGluY2x1ZGUgPT09IHVuZGVmaW5lZDtcclxuXHRcdGNvbnN0IG5hbWVGaWx0ZXIgPSBleGNsdWRpbmcgPyBleGNsdWRlIDogaW5jbHVkZTtcclxuXHRcdGZ1bmN0aW9uIGdldERpc3BsYXlOYW1lKG93bmVyKSB7XHJcblx0XHRcdGNvbnN0IHR5cGUgPSBvd25lci50eXBlO1xyXG5cdFx0XHRpZiAoIXR5cGUpIHJldHVybiBudWxsO1xyXG5cdFx0XHRyZXR1cm4gdHlwZS5kaXNwbGF5TmFtZSB8fCB0eXBlLm5hbWUgfHwgbnVsbDtcclxuXHRcdH1cclxuXHRcdGZ1bmN0aW9uIGNsYXNzRmlsdGVyKG93bmVyKSB7XHJcblx0XHRcdGNvbnN0IG5hbWUgPSBnZXREaXNwbGF5TmFtZShvd25lcik7XHJcblx0XHRcdHJldHVybiAobmFtZSAhPT0gbnVsbCAmJiAhIShuYW1lRmlsdGVyLmluY2x1ZGVzKG5hbWUpIF4gZXhjbHVkaW5nKSk7XHJcblx0XHR9XHJcblxyXG5cdFx0bGV0IGN1cnIgPSB0aGlzLmdldFJlYWN0SW5zdGFuY2Uobm9kZSk7XHJcblx0XHRmb3IgKGN1cnIgPSBjdXJyICYmIGN1cnIucmV0dXJuOyBjdXJyICE9PSBudWxsOyBjdXJyID0gY3Vyci5yZXR1cm4pIHtcclxuXHRcdFx0aWYgKGN1cnIgPT09IG51bGwpIGNvbnRpbnVlO1xyXG5cdFx0XHRjb25zdCBvd25lciA9IGN1cnIuc3RhdGVOb2RlO1xyXG5cdFx0XHRpZiAoY3VyciAhPT0gbnVsbCAmJiAhKG93bmVyIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpICYmIGNsYXNzRmlsdGVyKGN1cnIpICYmIGZpbHRlcihvd25lcikpIHJldHVybiBvd25lcjtcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gbnVsbDtcclxuXHR9XHJcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/modules/utilities.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Utilities; });\n/* harmony import */ var data__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! data */ \"./src/data/data.js\");\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./logger */ \"./src/modules/logger.js\");\n/* harmony import */ var _domtools__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./domtools */ \"./src/modules/domtools.js\");\n\n\n\nclass Utilities {\n static repoUrl(path) {\n return `https://cdn.staticaly.com/gh/${data__WEBPACK_IMPORTED_MODULE_0__[\"Config\"].repo}/BetterDiscordApp/${data__WEBPACK_IMPORTED_MODULE_0__[\"Config\"].hash}/${path}`;\n }\n /**\r\n * Parses a string of HTML and returns the results. If the second parameter is true,\r\n * the parsed HTML will be returned as a document fragment {@see https://developer.mozilla.org/en-US/docs/Web/API/DocumentFragment}.\r\n * This is extremely useful if you have a list of elements at the top level, they can then be appended all at once to another node.\r\n *\r\n * If the second parameter is false, then the return value will be the list of parsed\r\n * nodes and there were multiple top level nodes, otherwise the single node is returned.\r\n * @param {string} html - HTML to be parsed\r\n * @param {boolean} [fragment=false] - Whether or not the return should be the raw `DocumentFragment`\r\n * @returns {(DocumentFragment|NodeList|HTMLElement)} - The result of HTML parsing\r\n */\n\n\n static parseHTML(html, fragment = false) {\n const template = document.createElement(\"template\");\n template.innerHTML = html;\n const node = template.content.cloneNode(true);\n if (fragment) return node;\n return node.childNodes.length > 1 ? node.childNodes : node.childNodes[0];\n }\n\n static getTextArea() {\n return _domtools__WEBPACK_IMPORTED_MODULE_2__[\"default\"].query(\".channelTextArea-1LDbYG textarea\");\n }\n\n static insertText(textarea, text) {\n textarea.focus();\n textarea.selectionStart = 0;\n textarea.selectionEnd = textarea.value.length;\n document.execCommand(\"insertText\", false, text);\n }\n\n static escape(s) {\n return s.replace(/[-/\\\\^$*+?.()|[\\]{}]/g, \"\\\\$&\");\n }\n\n static testJSON(data) {\n try {\n return JSON.parse(data);\n } catch (err) {\n return false;\n }\n }\n\n static suppressErrors(method, message) {\n return (...params) => {\n try {\n return method(...params);\n } catch (e) {\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].stacktrace(\"SuppressedError\", \"Error occurred in \" + message, e);\n }\n };\n }\n\n static onRemoved(node, callback) {\n const observer = new MutationObserver(mutations => {\n for (let m = 0; m < mutations.length; m++) {\n const mutation = mutations[m];\n const nodes = Array.from(mutation.removedNodes);\n const directMatch = nodes.indexOf(node) > -1;\n const parentMatch = nodes.some(parent => parent.contains(node));\n\n if (directMatch || parentMatch) {\n observer.disconnect();\n callback();\n }\n }\n });\n observer.observe(document.body, {\n subtree: true,\n childList: true\n });\n }\n\n static isEmpty(obj) {\n if (obj == null || obj == undefined || obj == \"\") return true;\n if (typeof obj !== \"object\") return false;\n if (Array.isArray(obj)) return obj.length == 0;\n\n for (const key in obj) {\n if (obj.hasOwnProperty(key)) return false;\n }\n\n return true;\n }\n /**\r\n * Generates an automatically memoizing version of an object.\r\n * @author Zerebos\r\n * @param {Object} object - object to memoize\r\n * @returns {Proxy} the proxy to the object that memoizes properties\r\n */\n\n\n static memoizeObject(object) {\n const proxy = new Proxy(object, {\n get: function (obj, mod) {\n if (!obj.hasOwnProperty(mod)) return undefined;\n\n if (Object.getOwnPropertyDescriptor(obj, mod).get) {\n const value = obj[mod];\n delete obj[mod];\n obj[mod] = value;\n }\n\n return obj[mod];\n },\n set: function (obj, mod, value) {\n if (obj.hasOwnProperty(mod)) return _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].error(\"MemoizedObject\", \"Trying to overwrite existing property\");\n obj[mod] = value;\n return obj[mod];\n }\n });\n Object.defineProperty(proxy, \"hasOwnProperty\", {\n value: function (prop) {\n return this[prop] !== undefined;\n }\n });\n return proxy;\n }\n /**\r\n * Deep extends an object with a set of other objects. Objects later in the list\r\n * of `extenders` have priority, that is to say if one sets a key to be a primitive,\r\n * it will be overwritten with the next one with the same key. If it is an object,\r\n * and the keys match, the object is extended. This happens recursively.\r\n * @param {object} extendee - Object to be extended\r\n * @param {...object} extenders - Objects to extend with\r\n * @returns {object} - A reference to `extendee`\r\n */\n\n\n static extend(extendee, ...extenders) {\n for (let i = 0; i < extenders.length; i++) {\n for (const key in extenders[i]) {\n if (extenders[i].hasOwnProperty(key)) {\n if (typeof extendee[key] === \"object\" && typeof extenders[i][key] === \"object\") this.extend(extendee[key], extenders[i][key]);else if (typeof extenders[i][key] === \"object\") extendee[key] = {}, this.extend(extendee[key], extenders[i][key]);else extendee[key] = extenders[i][key];\n }\n }\n }\n\n return extendee;\n }\n /**\r\n * Format strings with placeholders (`{{placeholder}}`) into full strings.\r\n * Quick example: `PluginUtilities.formatString(\"Hello, {{user}}\", {user: \"Zerebos\"})`\r\n * would return \"Hello, Zerebos\".\r\n * @param {string} string - string to format\r\n * @param {object} values - object literal of placeholders to replacements\r\n * @returns {string} the properly formatted string\r\n */\n\n\n static formatString(string, values) {\n for (const val in values) {\n let replacement = values[val];\n if (Array.isArray(replacement)) replacement = JSON.stringify(replacement);\n if (typeof replacement === \"object\" && replacement !== null) replacement = replacement.toString();\n string = string.replace(new RegExp(`{{${val}}}`, \"g\"), replacement);\n }\n\n return string;\n }\n /**\r\n * Finds a value, subobject, or array from a tree that matches a specific filter.\r\n * @param {object} tree Tree that should be walked\r\n * @param {callable} searchFilter Filter to check against each object and subobject\r\n * @param {object} options Additional options to customize the search\r\n * @param {Array|null} [options.walkable=null] Array of strings to use as keys that are allowed to be walked on. Null value indicates all keys are walkable\r\n * @param {Array} [options.ignore=[]] Array of strings to use as keys to exclude from the search, most helpful when `walkable = null`.\r\n */\n\n\n static findInTree(tree, searchFilter, {\n walkable = null,\n ignore = []\n } = {}) {\n if (typeof searchFilter === \"string\") {\n if (tree.hasOwnProperty(searchFilter)) return tree[searchFilter];\n } else if (searchFilter(tree)) {\n return tree;\n }\n\n if (typeof tree !== \"object\" || tree == null) return undefined;\n let tempReturn = undefined;\n\n if (tree instanceof Array) {\n for (const value of tree) {\n tempReturn = this.findInTree(value, searchFilter, {\n walkable,\n ignore\n });\n if (typeof tempReturn != \"undefined\") return tempReturn;\n }\n } else {\n const toWalk = walkable == null ? Object.keys(tree) : walkable;\n\n for (const key of toWalk) {\n if (typeof tree[key] == \"undefined\" || ignore.includes(key)) continue;\n tempReturn = this.findInTree(tree[key], searchFilter, {\n walkable,\n ignore\n });\n if (typeof tempReturn != \"undefined\") return tempReturn;\n }\n }\n\n return tempReturn;\n }\n /**\r\n * Gets a nested property (if it exists) safely. Path should be something like `prop.prop2.prop3`.\r\n * Numbers can be used for arrays as well like `prop.prop2.array.0.id`.\r\n * @param {Object} obj - object to get nested property of\r\n * @param {string} path - representation of the property to obtain\r\n */\n\n\n static getNestedProp(obj, path) {\n return path.split(/\\s?\\.\\s?/).reduce(function (currentObj, prop) {\n return currentObj && currentObj[prop];\n }, obj);\n }\n /**\r\n * Finds a value, subobject, or array from a tree that matches a specific filter. Great for patching render functions.\r\n * @param {object} tree React tree to look through. Can be a rendered object or an internal instance.\r\n * @param {callable} searchFilter Filter function to check subobjects against.\r\n */\n\n\n static findInRenderTree(tree, searchFilter, {\n walkable = [\"props\", \"children\", \"child\", \"sibling\"],\n ignore = []\n } = {}) {\n return this.findInTree(tree, searchFilter, {\n walkable,\n ignore\n });\n }\n /**\r\n * Finds a value, subobject, or array from a tree that matches a specific filter. Great for patching render functions.\r\n * @param {object} tree React tree to look through. Can be a rendered object or an internal instance.\r\n * @param {callable} searchFilter Filter function to check subobjects against.\r\n */\n\n\n static findInReactTree(tree, searchFilter) {\n return this.findInTree(tree, searchFilter, {\n walkable: [\"props\", \"children\", \"return\", \"stateNode\"]\n });\n }\n\n static getReactInstance(node) {\n if (node.__reactInternalInstance$) return node.__reactInternalInstance$;\n return node[Object.keys(node).find(k => k.startsWith(\"__reactInternalInstance\"))] || null;\n }\n /**\r\n * Grabs a value from the react internal instance. Allows you to grab\r\n * long depth values safely without accessing no longer valid properties.\r\n * @param {HTMLElement} node - node to obtain react instance of\r\n * @param {object} options - options for the search\r\n * @param {array} [options.include] - list of items to include from the search\r\n * @param {array} [options.exclude=[\"Popout\", \"Tooltip\", \"Scroller\", \"BackgroundFlash\"]] - list of items to exclude from the search\r\n * @param {callable} [options.filter=_=>_] - filter to check the current instance with (should return a boolean)\r\n * @return {(*|null)} the owner instance or undefined if not found.\r\n */\n\n\n static getOwnerInstance(node, {\n include,\n exclude = [\"Popout\", \"Tooltip\", \"Scroller\", \"BackgroundFlash\"],\n filter = _ => _\n } = {}) {\n if (node === undefined) return undefined;\n const excluding = include === undefined;\n const nameFilter = excluding ? exclude : include;\n\n function getDisplayName(owner) {\n const type = owner.type;\n if (!type) return null;\n return type.displayName || type.name || null;\n }\n\n function classFilter(owner) {\n const name = getDisplayName(owner);\n return name !== null && !!(nameFilter.includes(name) ^ excluding);\n }\n\n let curr = this.getReactInstance(node);\n\n for (curr = curr && curr.return; curr !== null; curr = curr.return) {\n if (curr === null) continue;\n const owner = curr.stateNode;\n if (curr !== null && !(owner instanceof HTMLElement) && classFilter(curr) && filter(owner)) return owner;\n }\n\n return null;\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy91dGlsaXRpZXMuanM/OTc2OSJdLCJuYW1lcyI6WyJVdGlsaXRpZXMiLCJyZXBvVXJsIiwicGF0aCIsIkNvbmZpZyIsInJlcG8iLCJoYXNoIiwicGFyc2VIVE1MIiwiaHRtbCIsImZyYWdtZW50IiwidGVtcGxhdGUiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJpbm5lckhUTUwiLCJub2RlIiwiY29udGVudCIsImNsb25lTm9kZSIsImNoaWxkTm9kZXMiLCJsZW5ndGgiLCJnZXRUZXh0QXJlYSIsIkRPTSIsInF1ZXJ5IiwiaW5zZXJ0VGV4dCIsInRleHRhcmVhIiwidGV4dCIsImZvY3VzIiwic2VsZWN0aW9uU3RhcnQiLCJzZWxlY3Rpb25FbmQiLCJ2YWx1ZSIsImV4ZWNDb21tYW5kIiwiZXNjYXBlIiwicyIsInJlcGxhY2UiLCJ0ZXN0SlNPTiIsImRhdGEiLCJKU09OIiwicGFyc2UiLCJlcnIiLCJzdXBwcmVzc0Vycm9ycyIsIm1ldGhvZCIsIm1lc3NhZ2UiLCJwYXJhbXMiLCJlIiwiTG9nZ2VyIiwic3RhY2t0cmFjZSIsIm9uUmVtb3ZlZCIsImNhbGxiYWNrIiwib2JzZXJ2ZXIiLCJNdXRhdGlvbk9ic2VydmVyIiwibXV0YXRpb25zIiwibSIsIm11dGF0aW9uIiwibm9kZXMiLCJBcnJheSIsImZyb20iLCJyZW1vdmVkTm9kZXMiLCJkaXJlY3RNYXRjaCIsImluZGV4T2YiLCJwYXJlbnRNYXRjaCIsInNvbWUiLCJwYXJlbnQiLCJjb250YWlucyIsImRpc2Nvbm5lY3QiLCJvYnNlcnZlIiwiYm9keSIsInN1YnRyZWUiLCJjaGlsZExpc3QiLCJpc0VtcHR5Iiwib2JqIiwidW5kZWZpbmVkIiwiaXNBcnJheSIsImtleSIsImhhc093blByb3BlcnR5IiwibWVtb2l6ZU9iamVjdCIsIm9iamVjdCIsInByb3h5IiwiUHJveHkiLCJnZXQiLCJtb2QiLCJPYmplY3QiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJzZXQiLCJlcnJvciIsImRlZmluZVByb3BlcnR5IiwicHJvcCIsImV4dGVuZCIsImV4dGVuZGVlIiwiZXh0ZW5kZXJzIiwiaSIsImZvcm1hdFN0cmluZyIsInN0cmluZyIsInZhbHVlcyIsInZhbCIsInJlcGxhY2VtZW50Iiwic3RyaW5naWZ5IiwidG9TdHJpbmciLCJSZWdFeHAiLCJmaW5kSW5UcmVlIiwidHJlZSIsInNlYXJjaEZpbHRlciIsIndhbGthYmxlIiwiaWdub3JlIiwidGVtcFJldHVybiIsInRvV2FsayIsImtleXMiLCJpbmNsdWRlcyIsImdldE5lc3RlZFByb3AiLCJzcGxpdCIsInJlZHVjZSIsImN1cnJlbnRPYmoiLCJmaW5kSW5SZW5kZXJUcmVlIiwiZmluZEluUmVhY3RUcmVlIiwiZ2V0UmVhY3RJbnN0YW5jZSIsIl9fcmVhY3RJbnRlcm5hbEluc3RhbmNlJCIsImZpbmQiLCJrIiwic3RhcnRzV2l0aCIsImdldE93bmVySW5zdGFuY2UiLCJpbmNsdWRlIiwiZXhjbHVkZSIsImZpbHRlciIsIl8iLCJleGNsdWRpbmciLCJuYW1lRmlsdGVyIiwiZ2V0RGlzcGxheU5hbWUiLCJvd25lciIsInR5cGUiLCJkaXNwbGF5TmFtZSIsIm5hbWUiLCJjbGFzc0ZpbHRlciIsImN1cnIiLCJyZXR1cm4iLCJzdGF0ZU5vZGUiLCJIVE1MRWxlbWVudCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUVlLE1BQU1BLFNBQU4sQ0FBZ0I7QUFFM0IsU0FBT0MsT0FBUCxDQUFlQyxJQUFmLEVBQXFCO0FBQ2pCLFdBQVEsZ0NBQStCQywyQ0FBTSxDQUFDQyxJQUFLLHFCQUFvQkQsMkNBQU0sQ0FBQ0UsSUFBSyxJQUFHSCxJQUFLLEVBQTNGO0FBQ0g7QUFFRDs7Ozs7Ozs7Ozs7OztBQVdBLFNBQU9JLFNBQVAsQ0FBaUJDLElBQWpCLEVBQXVCQyxRQUFRLEdBQUcsS0FBbEMsRUFBeUM7QUFDckMsVUFBTUMsUUFBUSxHQUFHQyxRQUFRLENBQUNDLGFBQVQs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O0FBQ25FLFVBQUlELElBQUksS0FBSyxJQUFiLEVBQW1CO0FBQ25CLFlBQU1MLEtBQUssR0FBR0ssSUFBSSxDQUFDRSxTQUFuQjtBQUNBLFVBQUlGLElBQUksS0FBSyxJQUFULElBQWlCLEVBQUVMLEtBQUssWUFBWVEsV0FBbkIsQ0FBakIsSUFBb0RKLFdBQVcsQ0FBQ0MsSUFBRCxDQUEvRCxJQUF5RVYsTUFBTSxDQUFDSyxLQUFELENBQW5GLEVBQTRGLE9BQU9BLEtBQVA7QUFDNUY7O0FBRUQsV0FBTyxJQUFQO0FBQ0E7O0FBalE2QiIsImZpbGUiOiIuL3NyYy9tb2R1bGVzL3V0aWxpdGllcy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29uZmlnfSBmcm9tIFwiZGF0YVwiO1xyXG5pbXBvcnQgTG9nZ2VyIGZyb20gXCIuL2xvZ2dlclwiO1xyXG5pbXBvcnQgRE9NIGZyb20gXCIuL2RvbXRvb2xzXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBVdGlsaXRpZXMge1xyXG5cclxuICAgIHN0YXRpYyByZXBvVXJsKHBhdGgpIHtcclxuICAgICAgICByZXR1cm4gYGh0dHBzOi8vY2RuLnN0YXRpY2FseS5jb20vZ2gvJHtDb25maWcucmVwb30vQmV0dGVyRGlzY29yZEFwcC8ke0NvbmZpZy5oYXNofS8ke3BhdGh9YDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFBhcnNlcyBhIHN0cmluZyBvZiBIVE1MIGFuZCByZXR1cm5zIHRoZSByZXN1bHRzLiBJZiB0aGUgc2Vjb25kIHBhcmFtZXRlciBpcyB0cnVlLFxyXG4gICAgICogdGhlIHBhcnNlZCBIVE1MIHdpbGwgYmUgcmV0dXJuZWQgYXMgYSBkb2N1bWVudCBmcmFnbWVudCB7QHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRG9jdW1lbnRGcmFnbWVudH0uXHJcbiAgICAgKiBUaGlzIGlzIGV4dHJlbWVseSB1c2VmdWwgaWYgeW91IGhhdmUgYSBsaXN0IG9mIGVsZW1lbnRzIGF0IHRoZSB0b3AgbGV2ZWwsIHRoZXkgY2FuIHRoZW4gYmUgYXBwZW5kZWQgYWxsIGF0IG9uY2UgdG8gYW5vdGhlciBub2RlLlxyXG4gICAgICpcclxuICAgICAqIElmIHRoZSBzZWNvbmQgcGFyYW1ldGVyIGlzIGZhbHNlLCB0aGVuIHRoZSByZXR1cm4gdmFsdWUgd2lsbCBiZSB0aGUgbGlzdCBvZiBwYXJzZWRcclxuICAgICAqIG5vZGVzIGFuZCB0aGVyZSB3ZXJlIG11bHRpcGxlIHRvcCBsZXZlbCBub2Rlcywgb3RoZXJ3aXNlIHRoZSBzaW5nbGUgbm9kZSBpcyByZXR1cm5lZC5cclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBodG1sIC0gSFRNTCB0byBiZSBwYXJzZWRcclxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2ZyYWdtZW50PWZhbHNlXSAtIFdoZXRoZXIgb3Igbm90IHRoZSByZXR1cm4gc2hvdWxkIGJlIHRoZSByYXcgYERvY3VtZW50RnJhZ21lbnRgXHJcbiAgICAgKiBAcmV0dXJucyB7KERvY3VtZW50RnJhZ21lbnR8Tm9kZUxpc3R8SFRNTEVsZW1lbnQpfSAtIFRoZSByZXN1bHQgb2YgSFRNTCBwYXJzaW5nXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBwYXJzZUhUTUwoaHRtbCwgZnJhZ21lbnQgPSBmYWxzZSkge1xyXG4gICAgICAgIGNvbnN0IHRlbXBsYXRlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInRlbXBsYXRlXCIpO1xyXG4gICAgICAgIHRlbXBsYXRlLmlubmVySFRNTCA9IGh0bWw7XHJcbiAgICAgICAgY29uc3Qgbm9kZSA9IHRlbXBsYXRlLmNvbnRlbnQuY2xvbmVOb2RlKHRydWUpO1xyXG4gICAgICAgIGlmIChmcmFnbWVudCkgcmV0dXJuIG5vZGU7XHJcbiAgICAgICAgcmV0dXJuIG5vZGUuY2hpbGROb2Rlcy5sZW5ndGggPiAxID8gbm9kZS5jaGlsZE5vZGVzIDogbm9kZS5jaGlsZE5vZGVzWzBdO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBnZXRUZXh0QXJlYSgpIHtcclxuICAgICAgICByZXR1cm4gRE9NLnF1ZXJ5KFwiLmNoYW5uZWxUZXh0QXJlYS0xTERiWUcgdGV4dGFyZWFcIik7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGluc2VydFRleHQodGV4dGFyZWEsIHRleHQpIHtcclxuICAgICAgICB0ZXh0YXJlYS5mb2N1cygpO1xyXG4gICAgICAgIHRleHRhcmVhLnNlbGVjdGlvblN0YXJ0ID0gMDtcclxuICAgICAgICB0ZXh0YXJlYS5zZWxlY3Rpb25FbmQgPSB0ZXh0YXJlYS52YWx1ZS5sZW5ndGg7XHJcbiAgICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoXCJpbnNlcnRUZXh0XCIsIGZhbHNlLCB0ZXh0KTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgZXNjYXBlKHMpIHtcclxuICAgICAgICByZXR1cm4gcy5yZXBsYWNlKC9bLS9cXFxcXiQqKz8uKCl8W1xcXXt9XS9nLCBcIlxcXFwkJlwiKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgdGVzdEpTT04oZGF0YSkge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHJldHVybiBKU09OLnBhcnNlKGRhdGEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIHN1cHByZXNzRXJyb3JzKG1ldGhvZCwgbWVzc2FnZSkge1xyXG4gICAgICAgIHJldHVybiAoLi4ucGFyYW1zKSA9PiB7XHJcbiAgICAgICAgICAgIHRyeSB7IHJldHVybiBtZXRob2QoLi4ucGFyYW1zKTtcdH1cclxuICAgICAgICAgICAgY2F0Y2ggKGUpIHsgTG9nZ2VyLnN0YWNrdHJhY2UoXCJTdXBwcmVzc2VkRXJyb3JcIiwgXCJFcnJvciBvY2N1cnJlZCBpbiBcIiArIG1lc3NhZ2UsIGUpOyB9XHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgb25SZW1vdmVkKG5vZGUsIGNhbGxiYWNrKSB7XHJcbiAgICAgICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IG0gPSAwOyBtIDwgbXV0YXRpb25zLmxlbmd0aDsgbSsrKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBtdXRhdGlvbiA9IG11dGF0aW9uc1ttXTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG5vZGVzID0gQXJyYXkuZnJvbShtdXRhdGlvbi5yZW1vdmVkTm9kZXMpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZGlyZWN0TWF0Y2ggPSBub2Rlcy5pbmRleE9mKG5vZGUpID4gLTE7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBwYXJlbnRNYXRjaCA9IG5vZGVzLnNvbWUocGFyZW50ID0+IHBhcmVudC5jb250YWlucyhub2RlKSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoZGlyZWN0TWF0Y2ggfHwgcGFyZW50TWF0Y2gpIHtcclxuICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBvYnNlcnZlci5vYnNlcnZlKGRvY3VtZW50LmJvZHksIHtzdWJ0cmVlOiB0cnVlLCBjaGlsZExpc3Q6IHRydWV9KTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgaXNFbXB0eShvYmopIHtcclxuICAgICAgICBpZiAob2JqID09IG51bGwgfHwgb2JqID09IHVuZGVmaW5lZCB8fCBvYmogPT0gXCJcIikgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgaWYgKHR5cGVvZihvYmopICE9PSBcIm9iamVjdFwiKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkob2JqKSkgcmV0dXJuIG9iai5sZW5ndGggPT0gMDtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBvYmopIHtcclxuICAgICAgICAgICAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eShrZXkpKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2VuZXJhdGVzIGFuIGF1dG9tYXRpY2FsbHkgbWVtb2l6aW5nIHZlcnNpb24gb2YgYW4gb2JqZWN0LlxyXG4gICAgICogQGF1dGhvciBaZXJlYm9zXHJcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IC0gb2JqZWN0IHRvIG1lbW9pemVcclxuICAgICAqIEByZXR1cm5zIHtQcm94eX0gdGhlIHByb3h5IHRvIHRoZSBvYmplY3QgdGhhdCBtZW1vaXplcyBwcm9wZXJ0aWVzXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBtZW1vaXplT2JqZWN0KG9iamVjdCkge1xyXG4gICAgICAgIGNvbnN0IHByb3h5ID0gbmV3IFByb3h5KG9iamVjdCwge1xyXG4gICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKG9iaiwgbW9kKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIW9iai5oYXNPd25Qcm9wZXJ0eShtb2QpKSByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICAgICAgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqLCBtb2QpLmdldCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gb2JqW21vZF07XHJcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIG9ialttb2RdO1xyXG4gICAgICAgICAgICAgICAgICAgIG9ialttb2RdID0gdmFsdWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gb2JqW21vZF07XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHNldDogZnVuY3Rpb24ob2JqLCBtb2QsIHZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAob2JqLmhhc093blByb3BlcnR5KG1vZCkpIHJldHVybiBMb2dnZXIuZXJyb3IoXCJNZW1vaXplZE9iamVjdFwiLCBcIlRyeWluZyB0byBvdmVyd3JpdGUgZXhpc3RpbmcgcHJvcGVydHlcIik7XHJcbiAgICAgICAgICAgICAgICBvYmpbbW9kXSA9IHZhbHVlO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG9ialttb2RdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm94eSwgXCJoYXNPd25Qcm9wZXJ0eVwiLCB7dmFsdWU6IGZ1bmN0aW9uKHByb3ApIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXNbcHJvcF0gIT09IHVuZGVmaW5lZDtcclxuICAgICAgICB9fSk7XHJcblxyXG4gICAgICAgIHJldHVybiBwcm94eTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIERlZXAgZXh0ZW5kcyBhbiBvYmplY3Qgd2l0aCBhIHNldCBvZiBvdGhlciBvYmplY3RzLiBPYmplY3RzIGxhdGVyIGluIHRoZSBsaXN0XHJcbiAgICAgKiBvZiBgZXh0ZW5kZXJzYCBoYXZlIHByaW9yaXR5LCB0aGF0IGlzIHRvIHNheSBpZiBvbmUgc2V0cyBhIGtleSB0byBiZSBhIHByaW1pdGl2ZSxcclxuICAgICAqIGl0IHdpbGwgYmUgb3ZlcndyaXR0ZW4gd2l0aCB0aGUgbmV4dCBvbmUgd2l0aCB0aGUgc2FtZSBrZXkuIElmIGl0IGlzIGFuIG9iamVjdCxcclxuICAgICAqIGFuZCB0aGUga2V5cyBtYXRjaCwgdGhlIG9iamVjdCBpcyBleHRlbmRlZC4gVGhpcyBoYXBwZW5zIHJlY3Vyc2l2ZWx5LlxyXG4gICAgICogQHBhcmFtIHtvYmplY3R9IGV4dGVuZGVlIC0gT2JqZWN0IHRvIGJlIGV4dGVuZGVkXHJcbiAgICAgKiBAcGFyYW0gey4uLm9iamVjdH0gZXh0ZW5kZXJzIC0gT2JqZWN0cyB0byBleHRlbmQgd2l0aFxyXG4gICAgICogQHJldHVybnMge29iamVjdH0gLSBBIHJlZmVyZW5jZSB0byBgZXh0ZW5kZWVgXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBleHRlbmQoZXh0ZW5kZWUsIC4uLmV4dGVuZGVycykge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZXh0ZW5kZXJzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIGV4dGVuZGVyc1tpXSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGV4dGVuZGVyc1tpXS5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBleHRlbmRlZVtrZXldID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBleHRlbmRlcnNbaV1ba2V5XSA9PT0gXCJvYmplY3RcIikgdGhpcy5leHRlbmQoZXh0ZW5kZWVba2V5XSwgZXh0ZW5kZXJzW2ldW2tleV0pO1xyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHR5cGVvZiBleHRlbmRlcnNbaV1ba2V5XSA9PT0gXCJvYmplY3RcIikgZXh0ZW5kZWVba2V5XSA9IHt9LCB0aGlzLmV4dGVuZChleHRlbmRlZVtrZXldLCBleHRlbmRlcnNbaV1ba2V5XSk7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBleHRlbmRlZVtrZXldID0gZXh0ZW5kZXJzW2ldW2tleV07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGV4dGVuZGVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRm9ybWF0IHN0cmluZ3Mgd2l0aCBwbGFjZWhvbGRlcnMgKGB7e3BsYWNlaG9sZGVyfX1gKSBpbnRvIGZ1bGwgc3RyaW5ncy5cclxuICAgICAqIFF1aWNrIGV4YW1wbGU6IGBQbHVnaW5VdGlsaXRpZXMuZm9ybWF0U3RyaW5nKFwiSGVsbG8sIHt7dXNlcn19XCIsIHt1c2VyOiBcIlplcmVib3NcIn0pYFxyXG4gICAgICogd291bGQgcmV0dXJuIFwiSGVsbG8sIFplcmVib3NcIi5cclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgLSBzdHJpbmcgdG8gZm9ybWF0XHJcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gdmFsdWVzIC0gb2JqZWN0IGxpdGVyYWwgb2YgcGxhY2Vob2xkZXJzIHRvIHJlcGxhY2VtZW50c1xyXG4gICAgICogQHJldHVybnMge3N0cmluZ30gdGhlIHByb3Blcmx5IGZvcm1hdHRlZCBzdHJpbmdcclxuICAgICAqL1xyXG4gICAgc3RhdGljIGZvcm1hdFN0cmluZyhzdHJpbmcsIHZhbHVlcykge1xyXG4gICAgICAgIGZvciAoY29uc3QgdmFsIGluIHZhbHVlcykge1xyXG4gICAgICAgICAgICBsZXQgcmVwbGFjZW1lbnQgPSB2YWx1ZXNbdmFsXTtcclxuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmVwbGFjZW1lbnQpKSByZXBsYWNlbWVudCA9IEpTT04uc3RyaW5naWZ5KHJlcGxhY2VtZW50KTtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZihyZXBsYWNlbWVudCkgPT09IFwib2JqZWN0XCIgJiYgcmVwbGFjZW1lbnQgIT09IG51bGwpIHJlcGxhY2VtZW50ID0gcmVwbGFjZW1lbnQudG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgc3RyaW5nID0gc3RyaW5nLnJlcGxhY2UobmV3IFJlZ0V4cChge3ske3ZhbH19fWAsIFwiZ1wiKSwgcmVwbGFjZW1lbnQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gc3RyaW5nO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRmluZHMgYSB2YWx1ZSwgc3Vib2JqZWN0LCBvciBhcnJheSBmcm9tIGEgdHJlZSB0aGF0IG1hdGNoZXMgYSBzcGVjaWZpYyBmaWx0ZXIuXHJcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gdHJlZSBUcmVlIHRoYXQgc2hvdWxkIGJlIHdhbGtlZFxyXG4gICAgICogQHBhcmFtIHtjYWxsYWJsZX0gc2VhcmNoRmlsdGVyIEZpbHRlciB0byBjaGVjayBhZ2FpbnN0IGVhY2ggb2JqZWN0IGFuZCBzdWJvYmplY3RcclxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBvcHRpb25zIEFkZGl0aW9uYWwgb3B0aW9ucyB0byBjdXN0b21pemUgdGhlIHNlYXJjaFxyXG4gICAgICogQHBhcmFtIHtBcnJheTxzdHJpbmc+fG51bGx9IFtvcHRpb25zLndhbGthYmxlPW51bGxdIEFycmF5IG9mIHN0cmluZ3MgdG8gdXNlIGFzIGtleXMgdGhhdCBhcmUgYWxsb3dlZCB0byBiZSB3YWxrZWQgb24uIE51bGwgdmFsdWUgaW5kaWNhdGVzIGFsbCBrZXlzIGFyZSB3YWxrYWJsZVxyXG4gICAgICogQHBhcmFtIHtBcnJheTxzdHJpbmc+fSBbb3B0aW9ucy5pZ25vcmU9W11dIEFycmF5IG9mIHN0cmluZ3MgdG8gdXNlIGFzIGtleXMgdG8gZXhjbHVkZSBmcm9tIHRoZSBzZWFyY2gsIG1vc3QgaGVscGZ1bCB3aGVuIGB3YWxrYWJsZSA9IG51bGxgLlxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgZmluZEluVHJlZSh0cmVlLCBzZWFyY2hGaWx0ZXIsIHt3YWxrYWJsZSA9IG51bGwsIGlnbm9yZSA9IFtdfSA9IHt9KSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiBzZWFyY2hGaWx0ZXIgPT09IFwic3RyaW5nXCIpIHtcclxuICAgICAgICAgICAgaWYgKHRyZWUuaGFzT3duUHJvcGVydHkoc2VhcmNoRmlsdGVyKSkgcmV0dXJuIHRyZWVbc2VhcmNoRmlsdGVyXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoc2VhcmNoRmlsdGVyKHRyZWUpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0cmVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHR5cGVvZiB0cmVlICE9PSBcIm9iamVjdFwiIHx8IHRyZWUgPT0gbnVsbCkgcmV0dXJuIHVuZGVmaW5lZDtcclxuXHJcbiAgICAgICAgbGV0IHRlbXBSZXR1cm4gPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgaWYgKHRyZWUgaW5zdGFuY2VvZiBBcnJheSkge1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHZhbHVlIG9mIHRyZWUpIHtcclxuICAgICAgICAgICAgICAgIHRlbXBSZXR1cm4gPSB0aGlzLmZpbmRJblRyZWUodmFsdWUsIHNlYXJjaEZpbHRlciwge3dhbGthYmxlLCBpZ25vcmV9KTtcclxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdGVtcFJldHVybiAhPSBcInVuZGVmaW5lZFwiKSByZXR1cm4gdGVtcFJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgY29uc3QgdG9XYWxrID0gd2Fsa2FibGUgPT0gbnVsbCA/IE9iamVjdC5rZXlzKHRyZWUpIDogd2Fsa2FibGU7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IG9mIHRvV2Fsaykge1xyXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZih0cmVlW2tleV0pID09IFwidW5kZWZpbmVkXCIgfHwgaWdub3JlLmluY2x1ZGVzKGtleSkpIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgdGVtcFJldHVybiA9IHRoaXMuZmluZEluVHJlZSh0cmVlW2tleV0sIHNlYXJjaEZpbHRlciwge3dhbGthYmxlLCBpZ25vcmV9KTtcclxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdGVtcFJldHVybiAhPSBcInVuZGVmaW5lZFwiKSByZXR1cm4gdGVtcFJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGVtcFJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgYSBuZXN0ZWQgcHJvcGVydHkgKGlmIGl0IGV4aXN0cykgc2FmZWx5LiBQYXRoIHNob3VsZCBiZSBzb21ldGhpbmcgbGlrZSBgcHJvcC5wcm9wMi5wcm9wM2AuXHJcbiAgICAgKiBOdW1iZXJzIGNhbiBiZSB1c2VkIGZvciBhcnJheXMgYXMgd2VsbCBsaWtlIGBwcm9wLnByb3AyLmFycmF5LjAuaWRgLlxyXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iaiAtIG9iamVjdCB0byBnZXQgbmVzdGVkIHByb3BlcnR5IG9mXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gcGF0aCAtIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBwcm9wZXJ0eSB0byBvYnRhaW5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGdldE5lc3RlZFByb3Aob2JqLCBwYXRoKSB7XHJcbiAgICAgICAgcmV0dXJuIHBhdGguc3BsaXQoL1xccz9cXC5cXHM/LykucmVkdWNlKGZ1bmN0aW9uKGN1cnJlbnRPYmosIHByb3ApIHtcclxuICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRPYmogJiYgY3VycmVudE9ialtwcm9wXTtcclxuICAgICAgICB9LCBvYmopO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRmluZHMgYSB2YWx1ZSwgc3Vib2JqZWN0LCBvciBhcnJheSBmcm9tIGEgdHJlZSB0aGF0IG1hdGNoZXMgYSBzcGVjaWZpYyBmaWx0ZXIuIEdyZWF0IGZvciBwYXRjaGluZyByZW5kZXIgZnVuY3Rpb25zLlxyXG4gICAgICogQHBhcmFtIHtvYmplY3R9IHRyZWUgUmVhY3QgdHJlZSB0byBsb29rIHRocm91Z2guIENhbiBiZSBhIHJlbmRlcmVkIG9iamVjdCBvciBhbiBpbnRlcm5hbCBpbnN0YW5jZS5cclxuICAgICAqIEBwYXJhbSB7Y2FsbGFibGV9IHNlYXJjaEZpbHRlciBGaWx0ZXIgZnVuY3Rpb24gdG8gY2hlY2sgc3Vib2JqZWN0cyBhZ2FpbnN0LlxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgZmluZEluUmVuZGVyVHJlZSh0cmVlLCBzZWFyY2hGaWx0ZXIsIHt3YWxrYWJsZSA9IFtcInByb3BzXCIsIFwiY2hpbGRyZW5cIiwgXCJjaGlsZFwiLCBcInNpYmxpbmdcIl0sIGlnbm9yZSA9IFtdfSA9IHt9KSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZmluZEluVHJlZSh0cmVlLCBzZWFyY2hGaWx0ZXIsIHt3YWxrYWJsZSwgaWdub3JlfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGaW5kcyBhIHZhbHVlLCBzdWJvYmplY3QsIG9yIGFycmF5IGZyb20gYSB0cmVlIHRoYXQgbWF0Y2hlcyBhIHNwZWNpZmljIGZpbHRlci4gR3JlYXQgZm9yIHBhdGNoaW5nIHJlbmRlciBmdW5jdGlvbnMuXHJcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gdHJlZSBSZWFjdCB0cmVlIHRvIGxvb2sgdGhyb3VnaC4gQ2FuIGJlIGEgcmVuZGVyZWQgb2JqZWN0IG9yIGFuIGludGVybmFsIGluc3RhbmNlLlxyXG4gICAgICogQHBhcmFtIHtjYWxsYWJsZX0gc2VhcmNoRmlsdGVyIEZpbHRlciBmdW5jdGlvbiB0byBjaGVjayBzdWJvYmplY3RzIGFnYWluc3QuXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBmaW5kSW5SZWFjdFRyZWUodHJlZSwgc2VhcmNoRmlsdGVyKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZmluZEluVHJlZSh0cmVlLCBzZWFyY2hGaWx0ZXIsIHt3YWxrYWJsZTogW1wicHJvcHNcIiwgXCJjaGlsZHJlblwiLCBcInJldHVyblwiLCBcInN0YXRlTm9kZVwiXX0pO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBnZXRSZWFjdEluc3RhbmNlKG5vZGUpIHtcclxuICAgICAgICBpZiAobm9kZS5fX3JlYWN0SW50ZXJuYWxJbnN0YW5jZSQpIHJldHVybiBub2RlLl9fcmVhY3RJbnRlcm5hbEluc3RhbmNlJDtcclxuICAgICAgICByZXR1cm4gbm9kZVtPYmplY3Qua2V5cyhub2RlKS5maW5kKGsgPT4gay5zdGFydHNXaXRoKFwiX19yZWFjdEludGVybmFsSW5zdGFuY2VcIikpXSB8fCBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG5cdCAqIEdyYWJzIGEgdmFsdWUgZnJvbSB0aGUgcmVhY3QgaW50ZXJuYWwgaW5zdGFuY2UuIEFsbG93cyB5b3UgdG8gZ3JhYlxyXG5cdCAqIGxvbmcgZGVwdGggdmFsdWVzIHNhZmVseSB3aXRob3V0IGFjY2Vzc2luZyBubyBsb25nZXIgdmFsaWQgcHJvcGVydGllcy5cclxuXHQgKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBub2RlIC0gbm9kZSB0byBvYnRhaW4gcmVhY3QgaW5zdGFuY2Ugb2ZcclxuXHQgKiBAcGFyYW0ge29iamVjdH0gb3B0aW9ucyAtIG9wdGlvbnMgZm9yIHRoZSBzZWFyY2hcclxuXHQgKiBAcGFyYW0ge2FycmF5fSBbb3B0aW9ucy5pbmNsdWRlXSAtIGxpc3Qgb2YgaXRlbXMgdG8gaW5jbHVkZSBmcm9tIHRoZSBzZWFyY2hcclxuXHQgKiBAcGFyYW0ge2FycmF5fSBbb3B0aW9ucy5leGNsdWRlPVtcIlBvcG91dFwiLCBcIlRvb2x0aXBcIiwgXCJTY3JvbGxlclwiLCBcIkJhY2tncm91bmRGbGFzaFwiXV0gLSBsaXN0IG9mIGl0ZW1zIHRvIGV4Y2x1ZGUgZnJvbSB0aGUgc2VhcmNoXHJcblx0ICogQHBhcmFtIHtjYWxsYWJsZX0gW29wdGlvbnMuZmlsdGVyPV89Pl9dIC0gZmlsdGVyIHRvIGNoZWNrIHRoZSBjdXJyZW50IGluc3RhbmNlIHdpdGggKHNob3VsZCByZXR1cm4gYSBib29sZWFuKVxyXG5cdCAqIEByZXR1cm4geygqfG51bGwpfSB0aGUgb3duZXIgaW5zdGFuY2Ugb3IgdW5kZWZpbmVkIGlmIG5vdCBmb3VuZC5cclxuXHQgKi9cclxuXHRzdGF0aWMgZ2V0T3duZXJJbnN0YW5jZShub2RlLCB7aW5jbHVkZSwgZXhjbHVkZSA9IFtcIlBvcG91dFwiLCBcIlRvb2x0aXBcIiwgXCJTY3JvbGxlclwiLCBcIkJhY2tncm91bmRGbGFzaFwiXSwgZmlsdGVyID0gXyA9PiBffSA9IHt9KSB7XHJcblx0XHRpZiAobm9kZSA9PT0gdW5kZWZpbmVkKSByZXR1cm4gdW5kZWZpbmVkO1xyXG5cdFx0Y29uc3QgZXhjbHVkaW5nID0gaW5jbHVkZSA9PT0gdW5kZWZpbmVkO1xyXG5cdFx0Y29uc3QgbmFtZUZpbHRlciA9IGV4Y2x1ZGluZyA/IGV4Y2x1ZGUgOiBpbmNsdWRlO1xyXG5cdFx0ZnVuY3Rpb24gZ2V0RGlzcGxheU5hbWUob3duZXIpIHtcclxuXHRcdFx0Y29uc3QgdHlwZSA9IG93bmVyLnR5cGU7XHJcblx0XHRcdGlmICghdHlwZSkgcmV0dXJuIG51bGw7XHJcblx0XHRcdHJldHVybiB0eXBlLmRpc3BsYXlOYW1lIHx8IHR5cGUubmFtZSB8fCBudWxsO1xyXG5cdFx0fVxyXG5cdFx0ZnVuY3Rpb24gY2xhc3NGaWx0ZXIob3duZXIpIHtcclxuXHRcdFx0Y29uc3QgbmFtZSA9IGdldERpc3BsYXlOYW1lKG93bmVyKTtcclxuXHRcdFx0cmV0dXJuIChuYW1lICE9PSBudWxsICYmICEhKG5hbWVGaWx0ZXIuaW5jbHVkZXMobmFtZSkgXiBleGNsdWRpbmcpKTtcclxuXHRcdH1cclxuXHJcblx0XHRsZXQgY3VyciA9IHRoaXMuZ2V0UmVhY3RJbnN0YW5jZShub2RlKTtcclxuXHRcdGZvciAoY3VyciA9IGN1cnIgJiYgY3Vyci5yZXR1cm47IGN1cnIgIT09IG51bGw7IGN1cnIgPSBjdXJyLnJldHVybikge1xyXG5cdFx0XHRpZiAoY3VyciA9PT0gbnVsbCkgY29udGludWU7XHJcblx0XHRcdGNvbnN0IG93bmVyID0gY3Vyci5zdGF0ZU5vZGU7XHJcblx0XHRcdGlmIChjdXJyICE9PSBudWxsICYmICEob3duZXIgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkgJiYgY2xhc3NGaWx0ZXIoY3VycikgJiYgZmlsdGVyKG93bmVyKSkgcmV0dXJuIG93bmVyO1xyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiBudWxsO1xyXG5cdH1cclxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/utilities.js\n"); /***/ }), @@ -623,7 +622,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Filters\", function() { return Filters; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return WebpackModules; });\n/**\r\n * Allows for grabbing and searching through Discord's webpacked modules.\r\n * @module WebpackModules\r\n * @version 0.0.2\r\n */\n\n/**\r\n * Checks if a given module matches a set of parameters.\r\n * @callback module:WebpackModules.Filters~filter\r\n * @param {*} module - module to check\r\n * @returns {boolean} - True if the module matches the filter, false otherwise\r\n */\n\n/**\r\n * Filters for use with {@link module:WebpackModules} but may prove useful elsewhere.\r\n */\nclass Filters {\n /**\r\n * Generates a {@link module:WebpackModules.Filters~filter} that filters by a set of properties.\r\n * @param {Array} props - Array of property names\r\n * @param {module:WebpackModules.Filters~filter} filter - Additional filter\r\n * @returns {module:WebpackModules.Filters~filter} - A filter that checks for a set of properties\r\n */\n static byProperties(props, filter = m => m) {\n return module => {\n const component = filter(module);\n if (!component) return false;\n return props.every(property => component[property] !== undefined);\n };\n }\n /**\r\n * Generates a {@link module:WebpackModules.Filters~filter} that filters by a set of properties on the object's prototype.\r\n * @param {Array} fields - Array of property names\r\n * @param {module:WebpackModules.Filters~filter} filter - Additional filter\r\n * @returns {module:WebpackModules.Filters~filter} - A filter that checks for a set of properties on the object's prototype\r\n */\n\n\n static byPrototypeFields(fields, filter = m => m) {\n return module => {\n const component = filter(module);\n if (!component) return false;\n if (!component.prototype) return false;\n return fields.every(field => component.prototype[field] !== undefined);\n };\n }\n /**\r\n * Generates a {@link module:WebpackModules.Filters~filter} that filters by a regex.\r\n * @param {RegExp} search - A RegExp to check on the module\r\n * @param {module:WebpackModules.Filters~filter} filter - Additional filter\r\n * @returns {module:WebpackModules.Filters~filter} - A filter that checks for a set of properties\r\n */\n\n\n static byCode(search, filter = m => m) {\n return module => {\n const method = filter(module);\n if (!method) return false;\n return method.toString([]).search(search) !== -1;\n };\n }\n /**\r\n * Generates a {@link module:WebpackModules.Filters~filter} that filters by strings.\r\n * @param {...String} search - A RegExp to check on the module\r\n * @returns {module:WebpackModules.Filters~filter} - A filter that checks for a set of strings\r\n */\n\n\n static byString(...strings) {\n return module => {\n const moduleString = module.toString([]);\n\n for (const s of strings) {\n if (!moduleString.includes(s)) return false;\n }\n\n return true;\n };\n }\n /**\r\n * Generates a {@link module:WebpackModules.Filters~filter} that filters by a set of properties.\r\n * @param {string} name - Name the module should have\r\n * @param {module:WebpackModules.Filters~filter} filter - Additional filter\r\n * @returns {module:WebpackModules.Filters~filter} - A filter that checks for a set of properties\r\n */\n\n\n static byDisplayName(name) {\n return module => {\n return module && module.displayName === name;\n };\n }\n /**\r\n * Generates a combined {@link module:WebpackModules.Filters~filter} from a list of filters.\r\n * @param {...module:WebpackModules.Filters~filter} filters - A list of filters\r\n * @returns {module:WebpackModules.Filters~filter} - Combinatory filter of all arguments\r\n */\n\n\n static combine(...filters) {\n return module => {\n return filters.every(filter => filter(module));\n };\n }\n\n}\n\nconst protect = theModule => {\n if (theModule.remove && theModule.set && theModule.clear && theModule.get && !theModule.sort) return null;\n if (!theModule.getToken && !theModule.getEmail && !theModule.showToken) return theModule;\n const proxy = new Proxy(theModule, {\n getOwnPropertyDescriptor: function (obj, prop) {\n if (prop === \"getToken\" || prop === \"getEmail\" || prop === \"showToken\") return undefined;\n return Object.getOwnPropertyDescriptor(obj, prop);\n },\n get: function (obj, func) {\n if (func == \"getToken\") return () => \"mfa.XCnbKzo0CLIqdJzBnL0D8PfDruqkJNHjwHXtr39UU3F8hHx43jojISyi5jdjO52e9_e9MjmafZFFpc-seOMa\";\n if (func == \"getEmail\") return () => \"puppet11112@gmail.com\";\n if (func == \"showToken\") return () => true; // if (func == \"__proto__\") return proxy;\n\n return obj[func];\n }\n });\n return proxy;\n};\n\nclass WebpackModules {\n static find(filter, first = true) {\n return this.getModule(filter, first);\n }\n\n static findAll(filter) {\n return this.getModule(filter, false);\n }\n\n static findByUniqueProperties(props, first = true) {\n return first ? this.getByProps(...props) : this.getAllByProps(...props);\n }\n\n static findByDisplayName(name) {\n return this.getByDisplayName(name);\n }\n /**\r\n * Finds a module using a filter function.\r\n * @param {Function} filter A function to use to filter modules\r\n * @param {Boolean} first Whether to return only the first matching module\r\n * @return {Any}\r\n */\n\n\n static getModule(filter, first = true) {\n const modules = this.getAllModules();\n const rm = [];\n\n for (const index in modules) {\n if (!modules.hasOwnProperty(index)) continue;\n const module = modules[index];\n const {\n exports\n } = module;\n let foundModule = null;\n if (!exports) continue;\n if (exports.__esModule && exports.default && filter(exports.default)) foundModule = exports.default;\n if (filter(exports)) foundModule = exports;\n if (!foundModule) continue;\n if (first) return protect(foundModule);\n rm.push(protect(foundModule));\n }\n\n return first || rm.length == 0 ? undefined : rm;\n }\n /**\r\n * Finds all modules matching a filter function.\r\n * @param {Function} filter A function to use to filter modules\r\n */\n\n\n static getModules(filter) {\n return this.getModule(filter, false);\n }\n /**\r\n * Finds a module by its name.\r\n * @param {String} name The name of the module\r\n * @param {Function} fallback A function to use to filter modules if not finding a known module\r\n * @return {Any}\r\n */\n // static getModuleByName(name, fallback) {\n // if (DiscordModules.hasOwnProperty(name)) return DiscordModules[name];\n // if (!fallback) return undefined;\n // const module = this.getModule(fallback, true);\n // return module ? DiscordModules[name] = module : undefined;\n // }\n\n /**\r\n * Finds a module by its display name.\r\n * @param {String} name The display name of the module\r\n * @return {Any}\r\n */\n\n\n static getByDisplayName(name) {\n return this.getModule(Filters.byDisplayName(name), true);\n }\n /**\r\n * Finds a module using its code.\r\n * @param {RegEx} regex A regular expression to use to filter modules\r\n * @param {Boolean} first Whether to return the only the first matching module\r\n * @return {Any}\r\n */\n\n\n static getByRegex(regex, first = true) {\n return this.getModule(Filters.byCode(regex), first);\n }\n /**\r\n * Finds a single module using properties on its prototype.\r\n * @param {...string} prototypes Properties to use to filter modules\r\n * @return {Any}\r\n */\n\n\n static getByPrototypes(...prototypes) {\n return this.getModule(Filters.byPrototypeFields(prototypes), true);\n }\n /**\r\n * Finds all modules with a set of properties of its prototype.\r\n * @param {...string} prototypes Properties to use to filter modules\r\n * @return {Any}\r\n */\n\n\n static getAllByPrototypes(...prototypes) {\n return this.getModule(Filters.byPrototypeFields(prototypes), false);\n }\n /**\r\n * Finds a single module using its own properties.\r\n * @param {...string} props Properties to use to filter modules\r\n * @return {Any}\r\n */\n\n\n static getByProps(...props) {\n return this.getModule(Filters.byProperties(props), true);\n }\n /**\r\n * Finds all modules with a set of properties.\r\n * @param {...string} props Properties to use to filter modules\r\n * @return {Any}\r\n */\n\n\n static getAllByProps(...props) {\n return this.getModule(Filters.byProperties(props), false);\n }\n /**\r\n * Finds a single module using a set of strings.\r\n * @param {...String} props Strings to use to filter modules\r\n * @return {Any}\r\n */\n\n\n static getByString(...strings) {\n return this.getModule(Filters.byString(...strings), true);\n }\n /**\r\n * Finds all modules with a set of strings.\r\n * @param {...String} strings Strings to use to filter modules\r\n * @return {Any}\r\n */\n\n\n static getAllByString(...strings) {\n return this.getModule(Filters.byString(...strings), false);\n }\n /**\r\n * Discord's __webpack_require__ function.\r\n */\n\n\n static get require() {\n if (this._require) return this._require;\n const id = \"bbd-webpackmodules\";\n\n const __webpack_require__ = typeof window.webpackJsonp == \"function\" ? window.webpackJsonp([], {\n [id]: (module, exports, __internal_require__) => exports.default = __internal_require__\n }, [id]).default : window.webpackJsonp.push([[], {\n [id]: (module, exports, __internal_require__) => module.exports = __internal_require__\n }, [[id]]]);\n\n delete __webpack_require__.m[id];\n delete __webpack_require__.c[id];\n return this._require = __webpack_require__;\n }\n /**\r\n * Returns all loaded modules.\r\n * @return {Array}\r\n */\n\n\n static getAllModules() {\n return this.require.c;\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL21vZHVsZXMvd2VicGFja21vZHVsZXMuanM/OWIyNyJdLCJuYW1lcyI6WyJGaWx0ZXJzIiwiYnlQcm9wZXJ0aWVzIiwicHJvcHMiLCJmaWx0ZXIiLCJtIiwibW9kdWxlIiwiY29tcG9uZW50IiwiZXZlcnkiLCJwcm9wZXJ0eSIsInVuZGVmaW5lZCIsImJ5UHJvdG90eXBlRmllbGRzIiwiZmllbGRzIiwicHJvdG90eXBlIiwiZmllbGQiLCJieUNvZGUiLCJzZWFyY2giLCJtZXRob2QiLCJ0b1N0cmluZyIsImJ5U3RyaW5nIiwic3RyaW5ncyIsIm1vZHVsZVN0cmluZyIsInMiLCJpbmNsdWRlcyIsImJ5RGlzcGxheU5hbWUiLCJuYW1lIiwiZGlzcGxheU5hbWUiLCJjb21iaW5lIiwiZmlsdGVycyIsInByb3RlY3QiLCJ0aGVNb2R1bGUiLCJyZW1vdmUiLCJzZXQiLCJjbGVhciIsImdldCIsInNvcnQiLCJnZXRUb2tlbiIsImdldEVtYWlsIiwic2hvd1Rva2VuIiwicHJveHkiLCJQcm94eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsIm9iaiIsInByb3AiLCJPYmplY3QiLCJmdW5jIiwiV2VicGFja01vZHVsZXMiLCJmaW5kIiwiZmlyc3QiLCJnZXRNb2R1bGUiLCJmaW5kQWxsIiwiZmluZEJ5VW5pcXVlUHJvcGVydGllcyIsImdldEJ5UHJvcHMiLCJnZXRBbGxCeVByb3BzIiwiZmluZEJ5RGlzcGxheU5hbWUiLCJnZXRCeURpc3BsYXlOYW1lIiwibW9kdWxlcyIsImdldEFsbE1vZHVsZXMiLCJybSIsImluZGV4IiwiaGFzT3duUHJvcGVydHkiLCJleHBvcnRzIiwiZm91bmRNb2R1bGUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsInB1c2giLCJsZW5ndGgiLCJnZXRNb2R1bGVzIiwiZ2V0QnlSZWdleCIsInJlZ2V4IiwiZ2V0QnlQcm90b3R5cGVzIiwicHJvdG90eXBlcyIsImdldEFsbEJ5UHJvdG90eXBlcyIsImdldEJ5U3RyaW5nIiwiZ2V0QWxsQnlTdHJpbmciLCJyZXF1aXJlIiwiX3JlcXVpcmUiLCJpZCIsIl9fd2VicGFja19yZXF1aXJlX18iLCJ3aW5kb3ciLCJ3ZWJwYWNrSnNvbnAiLCJfX2ludGVybmFsX3JlcXVpcmVfXyIsImMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBOzs7Ozs7QUFNQTs7Ozs7OztBQU9BOzs7QUFHTyxNQUFNQSxPQUFOLENBQWM7QUFDakI7Ozs7OztBQU1BLFNBQU9DLFlBQVAsQ0FBb0JDLEtBQXBCLEVBQTJCQyxNQUFNLEdBQUdDLENBQUMsSUFBSUEsQ0FBekMsRUFBNEM7QUFDeEMsV0FBT0MsTUFBTSxJQUFJO0FBQ2IsWUFBTUMsU0FBUyxHQUFHSCxNQUFNLENBQUNFLE1BQUQsQ0FBeEI7QUFDQSxVQUFJLENBQUNDLFNBQUwsRUFBZ0IsT0FBTyxLQUFQO0FBQ2hCLGFBQU9KLEtBQUssQ0FBQ0ssS0FBTixDQUFZQyxRQUFRLElBQUlGLFNBQVMsQ0FBQ0UsUUFBRCxDQUFULEtBQXdCQyxTQUFoRCxDQUFQO0FBQ0gsS0FKRDtBQUtIO0FBRUQ7Ozs7Ozs7O0FBTUEsU0FBT0MsaUJBQVAsQ0FBeUJDLE1BQXpCLEVBQWlDUixNQUFNLEdBQUdDLENBQUMsSUFBSUEsQ0FBL0MsRUFBa0Q7QUFDOUMsV0FBT0MsTUFBTSxJQUFJO0FBQ2IsWUFBTUMsU0FBUyxHQUFHSCxNQUFNLENBQUNFLE1BQUQsQ0FBeEI7QUFDQSxVQUFJLENBQUNDLFNBQUwsRUFBZ0IsT0FBTyxLQUFQO0FBQ2hCLFVBQUksQ0FBQ0EsU0FBUyxDQUFDTSxTQUFmLEVBQTBCLE9BQU8sS0FBUDtBQUMxQixhQUFPRCxNQUFNLENBQUNKLEtBQVAsQ0FBYU0sS0FBSyxJQUFJUCxTQUFTLENBQUNNLFNBQVYsQ0FBb0JDLEtBQXBCLE1BQStCSixTQUFyRCxDQUFQO0FBQ0gsS0FMRDtBQU1IO0FBRUQ7Ozs7Ozs7O0FBTUEsU0FBT0ssTUFBUCxDQUFjQyxNQUFkLEVBQXNCWixNQUFNLEdBQUdDLENBQUMsSUFBSUEsQ0FBcEMsRUFBdUM7QUFDbkMsV0FBT0MsTUFBTSxJQUFJO0FBQ2IsWUFBTVcsTUFBTSxHQUFHYixNQUFNLENBQUNFLE1BQUQsQ0FBckI7QUFDQSxVQUFJLENBQUNXLE1BQUwsRUFBYSxPQUFPLEtBQVA7QUFDYixhQUFPQSxNQUFNLENBQUNDLFFBQVAsQ0FBZ0IsRUFBaEIsRUFBb0JGLE1BQXBCLENBQTJCQSxNQUEzQixNQUF1QyxDQUFDLENBQS9DO0FBQ0gsS0FKRDtBQUtIO0FBRUQ7Ozs7Ozs7QUFLQSxTQUFPRyxRQUFQLENBQWdCLEdBQUdDLE9BQW5CLEVBQTRCO0FBQ3hCLFdBQU9kLE1BQU0sSUFBSTtBQUNiLFlBQU1lLFlBQVksR0FBR2YsTUFBTSxDQUFDWSxRQUFQLENBQWdCLEVBQWhCLENBQXJCOztBQUNBLFdBQUssTUFBTUksQ0FBWCxJQUFnQkYsT0FBaEIsRUFBeUI7QUFDckIsWUFBSSxDQUFDQyxZQUFZLENBQUNFLFFBQWIsQ0FBc0JELENBQXRCLENBQUwsRUFBK0IsT0FBTyxLQUFQO0FBQ2xDOztBQUNELGFBQU8sSUFBUDtBQUNILEtBTkQ7QUFPSDtBQUVEOzs7Ozs7OztBQU1BLFNBQU9FLGFBQVAsQ0FBcUJDLElBQXJCLEVBQTJCO0FBQ3ZCLFdBQU9uQixNQUFNLElBQUk7QUFDYixhQUFPQSxNQUFNLElBQUlBLE1BQU0sQ0FBQ29CLFdBQVAsS0FBdUJELElBQXhDO0FBQ0gsS0FGRDtBQUdIO0FBRUQ7Ozs7Ozs7QUFLQSxTQUFPRSxPQUFQLENBQWUsR0FBR0MsT0FBbEIsRUFBMkI7QUFDdkIsV0FBT3RCLE1BQU0sSUFBSTtBQUNiLGFBQU9zQixPQUFPLENBQUNwQixLQUFSLENBQWNKLE1BQU0sSUFBSUEsTUFBTSxDQUFDRSxNQUFELENBQTlCLENBQVA7QUFDSCxLQUZEO0FBR0g7O0FBaEZnQjs7QUFtRnJCLE1BQU11QixPQUFPLEdBQUdDLFNBQVMsSUFBSTtBQUN6QixNQUFJQSxTQUFTLENBQUNDLE1BQVYsSUFBb0JELFNBQVMsQ0FBQ0UsR0FBOUIsSUFBcUNGLFNBQVMsQ0FBQ0csS0FBL0MsSUFBd0RILFNBQVMsQ0FBQ0ksR0FBbEUsSUFBeUUsQ0FBQ0osU0FBUyxDQUFDSyxJQUF4RixFQUE4RixPQUFPLElBQVA7QUFDOUYsTUFBSSxDQUFDTCxTQUFTLENBQUNNLFFBQVgsSUFBdUIsQ0FBQ04sU0FBUyxDQUFDTyxRQUFsQyxJQUE4QyxDQUFDUCxTQUFTLENBQUNRLFNBQTdELEVBQXdFLE9BQU9SLFNBQVA7QUFDeEUsUUFBTVMsS0FBSyxHQUFHLElBQUlDLEtBQUosQ0FBVVYsU0FBVixFQUFxQjtBQUMvQlcsNEJBQXdCLEVBQUUsVUFBU0MsR0FBVCxFQUFjQyxJQUFkLEVBQW9CO0FBQzFDLFVBQUlBLElBQUksS0FBSyxVQUFULElBQXVCQSxJQUFJLEtBQUssVUFBaEMsSUFBOENBLElBQUksS0FBSyxXQUEzRCxFQUF3RSxPQUFPakMsU0FBUDtBQUN4RSxhQUFPa0MsTUFBTSxDQUFDSCx3QkFBUCxDQUFnQ0MsR0FBaEMsRUFBcUNDLElBQXJDLENBQVA7QUFDSCxLQUo4QjtBQUsvQlQsT0FBRyxFQUFFLFVBQVNRLEdBQVQsRUFBY0csSUFBZCxFQUFvQjtBQUNyQixVQUFJQSxJQUFJLElBQUksVUFBWixFQUF3QixPQUFPLE1BQU0sMEZBQWI7QUFDeEIsVUFBSUEsSUFBSSxJQUFJLFVBQVosRUFBd0IsT0FBTyxNQUFNLHVCQUFiO0FBQ3hCLFVBQUlBLElBQUksSUFBSSxXQUFaLEVBQXlCLE9BQU8sTUFBTSxJQUFiLENBSEosQ0FJckI7O0FBQ0EsYUFBT0gsR0FBRyxDQUFDRyxJQUFELENBQVY7QUFDSDtBQVg4QixHQUFyQixDQUFkO0FBYUEsU0FBT04sS0FBUDtBQUNILENBakJEOztBQW1CZSxNQUFNTyxjQUFOLENBQXFCO0FBRWhDLFNBQU9DLElBQVAsQ0FBWTNDLE1BQVosRUFBb0I0QyxLQUFLLEdBQUcsSUFBNUIsRUFBa0M7QUFBQyxXQUFPLEtBQUtDLFNBQUwsQ0FBZTdDLE1BQWYsRUFBdUI0QyxLQUF2QixDQUFQO0FBQXNDOztBQUN6RSxTQUFPRSxPQUFQLENBQWU5QyxNQUFmLEVBQXVCO0FBQUMsV0FBTyxLQUFLNkMsU0FBTCxDQUFlN0MsTUFBZixFQUF1QixLQUF2QixDQUFQO0FBQXNDOztBQUM5RCxTQUFPK0Msc0JBQVAsQ0FBOEJoRCxLQUE5QixFQUFxQzZDLEtBQUssR0FBRyxJQUE3QyxFQUFtRDtBQUFDLFdBQU9BLEtBQUssR0FBRyxLQUFLSSxVQUFMLENBQWdCLEdBQUdqRCxLQUFuQixDQUFILEdBQStCLEtBQUtrRCxhQUFMLENBQW1CLEdBQUdsRCxLQUF0QixDQUEzQztBQUF5RTs7QUFDN0gsU0FBT21ELGlCQUFQLENBQXlCN0IsSUFBekIsRUFBK0I7QUFBQyxXQUFPLEtBQUs4QixnQkFBTCxDQUFzQjlCLElBQXRCLENBQVA7QUFBb0M7QUFFcEU7Ozs7Ozs7O0FBTUEsU0FBT3dCLFNBQVAsQ0FBaUI3QyxNQUFqQixFQUF5QjRDLEtBQUssR0FBRyxJQUFqQyxFQUF1QztBQUNuQyxVQUFNUSxPQUFPLEdBQUcsS0FBS0MsYUFBTCxFQUFoQjtBQUNBLFVBQU1DLEVBQUUsR0FBRyxFQUFYOztBQUNBLFNBQUssTUFBTUMsS0FBWCxJQUFvQkgsT0FBcEIsRUFBNkI7QUFDekIsVUFBSSxDQUFDQSxPQUFPLENBQUNJLGNBQVIsQ0FBdUJELEtBQXZCLENBQUwsRUFBb0M7QUFDcEMsWUFBTXJELE1BQU0sR0FBR2tELE9BQU8sQ0FBQ0csS0FBRCxDQUF0QjtBQUNBLFlBQU07QUFBQ0U7QUFBRCxVQUFZdkQsTUFBbEI7QUFDQSxVQUFJd0QsV0FBVyxHQUFHLElBQWxCO0FBRUEsVUFBSSxDQUFDRCxPQUFMLEVBQWM7QUFDZCxVQUFJQSxPQUFPLENBQUNFLFVBQVIsSUFBc0JGLE9BQU8sQ0FBQ0csT0FBOUIsSUFBeUM1RCxNQUFNLENBQUN5RCxPQUFPLENBQUNHLE9BQVQsQ0FBbkQsRUFBc0VGLFdBQVcsR0FBR0QsT0FBTyxDQUFDRyxPQUF0QjtBQUN0RSxVQUFJNUQsTUFBTSxDQUFDeUQsT0FBRCxDQUFWLEVBQXFCQyxXQUFXLEdBQUdELE9BQWQ7QUFDckIsVUFBSSxDQUFDQyxXQUFMLEVBQWtCO0FBQ2xCLFVBQUlkLEtBQUosRUFBVyxPQUFPbkIsT0FBTyxDQUFDaUMsV0FBRCxDQUFkO0FBQ1hKLFFBQUUsQ0FBQ08sSUFBSCxDQUFRcEMsT0FBTyxDQUFDaUMsV0FBRCxDQUFmO0FBQ0g7O0FBRUQsV0FBT2QsS0FBSyxJQUFJVSxFQUFFLENBQUNRLE1BQUgsSUFBYSxDQUF0QixHQUEwQnhELFNBQTFCLEdBQXNDZ0QsRUFBN0M7QUFDSDtBQUVEOzs7Ozs7QUFJQSxTQUFPUyxVQUFQLENBQWtCL0QsTUFBbEIsRUFBMEI7QUFBQyxXQUFPLEtBQUs2QyxTQUFMLENBQWU3QyxNQUFmLEVBQXVCLEtBQXZCLENBQVA7QUFBc0M7QUFFakU7Ozs7OztBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7OztBQUtBLFNBQU9tRCxnQkFBUCxDQUF3QjlCLElBQXhCLEVBQThCO0FBQzFCLFdBQU8sS0FBS3dCLFNBQUwsQ0FBZWhELE9BQU8sQ0FBQ3VCLGFBQVIsQ0FBc0JDLElBQXRCLENBQWYsRUFBNEMsSUFBNUMsQ0FBUDtBQUNIO0FBRUQ7Ozs7Ozs7O0FBTUEsU0FBTzJDLFVBQVAsQ0FBa0JDLEtBQWxCLEVBQXlCckIsS0FBSyxHQUFHLElBQWpDLEVBQXVDO0FBQ25DLFdBQU8sS0FBS0MsU0FBTCxDQUFlaEQsT0FBTyxDQUFDYyxNQUFSLENBQWVzRCxLQUFmLENBQWYsRUFBc0NyQixLQUF0QyxDQUFQO0FBQ0g7QUFFRDs7Ozs7OztBQUtBLFNBQU9zQixlQUFQLENBQXVCLEdBQUdDLFVBQTFCLEVBQXNDO0FBQ2xDLFdBQU8sS0FBS3RCLFNBQUwsQ0FBZWhELE9BQU8sQ0FBQ1UsaUJBQVIsQ0FBMEI0RCxVQUExQixDQUFmLEVBQXNELElBQXRELENBQVA7QUFDSDtBQUVEOzs7Ozs7O0FBS0EsU0FBT0Msa0JBQVAsQ0FBMEIsR0FBR0QsVUFBN0IsRUFBeUM7QUFDckMsV0FBTyxLQUFLdEIsU0FBTCxDQUFlaEQsT0FBTyxDQUFDVSxpQkFBUixDQUEwQjRELFVBQTFCLENBQWYsRUFBc0QsS0FBdEQsQ0FBUDtBQUNIO0FBRUQ7Ozs7Ozs7QUFLQSxTQUFPbkIsVUFBUCxDQUFrQixHQUFHakQsS0FBckIsRUFBNEI7QUFDeEIsV0FBTyxLQUFLOEMsU0FBTCxDQUFlaEQsT0FBTyxDQUFDQyxZQUFSLENBQXFCQyxLQUFyQixDQUFmLEVBQTRDLElBQTVDLENBQVA7QUFDSDtBQUVEOzs7Ozs7O0FBS0EsU0FBT2tELGFBQVAsQ0FBcUIsR0FBR2xELEtBQXhCLEVBQStCO0FBQzNCLFdBQU8sS0FBSzhDLFNBQUwsQ0FBZWhELE9BQU8sQ0FBQ0MsWUFBUixDQUFxQkMsS0FBckIsQ0FBZixFQUE0QyxLQUE1QyxDQUFQO0FBQ0g7QUFFRDs7Ozs7OztBQUtBLFNBQU9zRSxXQUFQLENBQW1CLEdBQUdyRCxPQUF0QixFQUErQjtBQUMzQixXQUFPLEtBQUs2QixTQUFMLENBQWVoRCxPQUFPLENBQUNrQixRQUFSLENBQWlCLEdBQUdDLE9BQXBCLENBQWYsRUFBNkMsSUFBN0MsQ0FBUDtBQUNIO0FBRUQ7Ozs7Ozs7QUFLQSxTQUFPc0QsY0FBUCxDQUFzQixHQUFHdEQsT0FBekIsRUFBa0M7QUFDOUIsV0FBTyxLQUFLNkIsU0FBTCxDQUFlaEQsT0FBTyxDQUFDa0IsUUFBUixDQUFpQixHQUFHQyxPQUFwQixDQUFmLEVBQTZDLEtBQTdDLENBQVA7QUFDSDtBQUVEOzs7OztBQUdBLGFBQVd1RCxPQUFYLEdBQXFCO0FBQ2pCLFFBQUksS0FBS0MsUUFBVCxFQUFtQixPQUFPLEtBQUtBLFFBQVo7QUFDbkIsVUFBTUMsRUFBRSxHQUFHLG9CQUFYOztBQUNBLFVBQU1DLG1CQUFtQixHQUFHLE9BQU9DLE1BQU0sQ0FBQ0MsWUFBZCxJQUErQixVQUEvQixHQUE0Q0QsTUFBTSxDQUFDQyxZQUFQLENBQW9CLEVBQXBCLEVBQXdCO0FBQzVGLE9BQUNILEVBQUQsR0FBTSxDQUFDdkUsTUFBRCxFQUFTdUQsT0FBVCxFQUFrQm9CLG9CQUFsQixLQUEyQ3BCLE9BQU8sQ0FBQ0csT0FBUixHQUFrQmlCO0FBRHlCLEtBQXhCLEVBRXJFLENBQUNKLEVBQUQsQ0FGcUUsRUFFL0RiLE9BRm1CLEdBRVRlLE1BQU0sQ0FBQ0MsWUFBUCxDQUFvQmYsSUFBcEIsQ0FBeUIsQ0FBQyxFQUFELEVBQUs7QUFDN0MsT0FBQ1ksRUFBRCxHQUFNLENBQUN2RSxNQUFELEVBQVN1RCxPQUFULEVBQWtCb0Isb0JBQWxCLEtBQTJDM0UsTUFBTSxDQUFDdUQsT0FBUCxHQUFpQm9CO0FBRHJCLEtBQUwsRUFFekMsQ0FBQyxDQUFDSixFQUFELENBQUQsQ0FGeUMsQ0FBekIsQ0FGbkI7O0FBS0EsV0FBT0MsbUJBQW1CLENBQUN6RSxDQUFwQixDQUFzQndFLEVBQXRCLENBQVA7QUFDQSxXQUFPQyxtQkFBbUIsQ0FBQ0ksQ0FBcEIsQ0FBc0JMLEVBQXRCLENBQVA7QUFDQSxXQUFPLEtBQUtELFFBQUwsR0FBZ0JFLG1CQUF2QjtBQUNIO0FBRUQ7Ozs7OztBQUlBLFNBQU9yQixhQUFQLEdBQXVCO0FBQ25CLFdBQU8sS0FBS2tCLE9BQUwsQ0FBYU8sQ0FBcEI7QUFDSDs7QUFuSitCIiwiZmlsZSI6Ii4vc3JjL21vZHVsZXMvd2VicGFja21vZHVsZXMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogQWxsb3dzIGZvciBncmFiYmluZyBhbmQgc2VhcmNoaW5nIHRocm91Z2ggRGlzY29yZCdzIHdlYnBhY2tlZCBtb2R1bGVzLlxyXG4gKiBAbW9kdWxlIFdlYnBhY2tNb2R1bGVzXHJcbiAqIEB2ZXJzaW9uIDAuMC4yXHJcbiAqL1xyXG5cclxuLyoqXHJcbiAqIENoZWNrcyBpZiBhIGdpdmVuIG1vZHVsZSBtYXRjaGVzIGEgc2V0IG9mIHBhcmFtZXRlcnMuXHJcbiAqIEBjYWxsYmFjayBtb2R1bGU6V2VicGFja01vZHVsZXMuRmlsdGVyc35maWx0ZXJcclxuICogQHBhcmFtIHsqfSBtb2R1bGUgLSBtb2R1bGUgdG8gY2hlY2tcclxuICogQHJldHVybnMge2Jvb2xlYW59IC0gVHJ1ZSBpZiB0aGUgbW9kdWxlIG1hdGNoZXMgdGhlIGZpbHRlciwgZmFsc2Ugb3RoZXJ3aXNlXHJcbiAqL1xyXG5cclxuLyoqXHJcbiAqIEZpbHRlcnMgZm9yIHVzZSB3aXRoIHtAbGluayBtb2R1bGU6V2VicGFja01vZHVsZXN9IGJ1dCBtYXkgcHJvdmUgdXNlZnVsIGVsc2V3aGVyZS5cclxuICovXHJcbmV4cG9ydCBjbGFzcyBGaWx0ZXJzIHtcclxuICAgIC8qKlxyXG4gICAgICogR2VuZXJhdGVzIGEge0BsaW5rIG1vZHVsZTpXZWJwYWNrTW9kdWxlcy5GaWx0ZXJzfmZpbHRlcn0gdGhhdCBmaWx0ZXJzIGJ5IGEgc2V0IG9mIHByb3BlcnRpZXMuXHJcbiAgICAgKiBAcGFyYW0ge0FycmF5PHN0cmluZz59IHByb3BzIC0gQXJyYXkgb2YgcHJvcGVydHkgbmFtZXNcclxuICAgICAqIEBwYXJhbSB7bW9kdWxlOldlYnBhY2tNb2R1bGVzLkZpbHRlcnN+ZmlsdGVyfSBmaWx0ZXIgLSBBZGRpdGlvbmFsIGZpbHRlclxyXG4gICAgICogQHJldHVybnMge21vZHVsZTpXZWJwYWNrTW9kdWxlcy5GaWx0ZXJzfmZpbHRlcn0gLSBBIGZpbHRlciB0aGF0IGNoZWNrcyBmb3IgYSBzZXQgb2YgcHJvcGVydGllc1xyXG4gICAgICovXHJcbiAgICBzdGF0aWMgYnlQcm9wZXJ0aWVzKHByb3BzLCBmaWx0ZXIgPSBtID0+IG0pIHtcclxuICAgICAgICByZXR1cm4gbW9kdWxlID0+IHtcclxuICAgICAgICAgICAgY29uc3QgY29tcG9uZW50ID0gZmlsdGVyKG1vZHVsZSk7XHJcbiAgICAgICAgICAgIGlmICghY29tcG9uZW50KSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIHJldHVybiBwcm9wcy5ldmVyeShwcm9wZXJ0eSA9PiBjb21wb25lbnRbcHJvcGVydHldICE9PSB1bmRlZmluZWQpO1xyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZW5lcmF0ZXMgYSB7QGxpbmsgbW9kdWxlOldlYnBhY2tNb2R1bGVzLkZpbHRlcnN+ZmlsdGVyfSB0aGF0IGZpbHRlcnMgYnkgYSBzZXQgb2YgcHJvcGVydGllcyBvbiB0aGUgb2JqZWN0J3MgcHJvdG90eXBlLlxyXG4gICAgICogQHBhcmFtIHtBcnJheTxzdHJpbmc+fSBmaWVsZHMgLSBBcnJheSBvZiBwcm9wZXJ0eSBuYW1lc1xyXG4gICAgICogQHBhcmFtIHttb2R1bGU6V2VicGFja01vZHVsZXMuRmlsdGVyc35maWx0ZXJ9IGZpbHRlciAtIEFkZGl0aW9uYWwgZmlsdGVyXHJcbiAgICAgKiBAcmV0dXJucyB7bW9kdWxlOldlYnBhY2tNb2R1bGVzLkZpbHRlcnN+ZmlsdGVyfSAtIEEgZmlsdGVyIHRoYXQgY2hlY2tzIGZvciBhIHNldCBvZiBwcm9wZXJ0aWVzIG9uIHRoZSBvYmplY3QncyBwcm90b3R5cGVcclxuICAgICAqL1xyXG4gICAgc3RhdGljIGJ5UHJvdG90eXBlRmllbGRzKGZpZWxkcywgZmlsdGVyID0gbSA9PiBtKSB7XHJcbiAgICAgICAgcmV0dXJuIG1vZHVsZSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNvbXBvbmVudCA9IGZpbHRlcihtb2R1bGUpO1xyXG4gICAgICAgICAgICBpZiAoIWNvbXBvbmVudCkgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICBpZiAoIWNvbXBvbmVudC5wcm90b3R5cGUpIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgcmV0dXJuIGZpZWxkcy5ldmVyeShmaWVsZCA9PiBjb21wb25lbnQucHJvdG90eXBlW2ZpZWxkXSAhPT0gdW5kZWZpbmVkKTtcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2VuZXJhdGVzIGEge0BsaW5rIG1vZHVsZTpXZWJwYWNrTW9kdWxlcy5GaWx0ZXJzfmZpbHRlcn0gdGhhdCBmaWx0ZXJzIGJ5IGEgcmVnZXguXHJcbiAgICAgKiBAcGFyYW0ge1JlZ0V4cH0gc2VhcmNoIC0gQSBSZWdFeHAgdG8gY2hlY2sgb24gdGhlIG1vZHVsZVxyXG4gICAgICogQHBhcmFtIHttb2R1bGU6V2VicGFja01vZHVsZXMuRmlsdGVyc35maWx0ZXJ9IGZpbHRlciAtIEFkZGl0aW9uYWwgZmlsdGVyXHJcbiAgICAgKiBAcmV0dXJucyB7bW9kdWxlOldlYnBhY2tNb2R1bGVzLkZpbHRlcnN+ZmlsdGVyfSAtIEEgZmlsdGVyIHRoYXQgY2hlY2tzIGZvciBhIHNldCBvZiBwcm9wZXJ0aWVzXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBieUNvZGUoc2VhcmNoLCBmaWx0ZXIgPSBtID0+IG0pIHtcclxuICAgICAgICByZXR1cm4gbW9kdWxlID0+IHtcclxuICAgICAgICAgICAgY29uc3QgbWV0aG9kID0gZmlsdGVyKG1vZHVsZSk7XHJcbiAgICAgICAgICAgIGlmICghbWV0aG9kKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIHJldHVybiBtZXRob2QudG9TdHJpbmcoW10pLnNlYXJjaChzZWFyY2gpICE9PSAtMTtcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2VuZXJhdGVzIGEge0BsaW5rIG1vZHVsZTpXZWJwYWNrTW9kdWxlcy5GaWx0ZXJzfmZpbHRlcn0gdGhhdCBmaWx0ZXJzIGJ5IHN0cmluZ3MuXHJcbiAgICAgKiBAcGFyYW0gey4uLlN0cmluZ30gc2VhcmNoIC0gQSBSZWdFeHAgdG8gY2hlY2sgb24gdGhlIG1vZHVsZVxyXG4gICAgICogQHJldHVybnMge21vZHVsZTpXZWJwYWNrTW9kdWxlcy5GaWx0ZXJzfmZpbHRlcn0gLSBBIGZpbHRlciB0aGF0IGNoZWNrcyBmb3IgYSBzZXQgb2Ygc3RyaW5nc1xyXG4gICAgICovXHJcbiAgICBzdGF0aWMgYnlTdHJpbmcoLi4uc3RyaW5ncykge1xyXG4gICAgICAgIHJldHVybiBtb2R1bGUgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBtb2R1bGVTdHJpbmcgPSBtb2R1bGUudG9TdHJpbmcoW10pO1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHMgb2Ygc3RyaW5ncykge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFtb2R1bGVTdHJpbmcuaW5jbHVkZXMocykpIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2VuZXJhdGVzIGEge0BsaW5rIG1vZHVsZTpXZWJwYWNrTW9kdWxlcy5GaWx0ZXJzfmZpbHRlcn0gdGhhdCBmaWx0ZXJzIGJ5IGEgc2V0IG9mIHByb3BlcnRpZXMuXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIE5hbWUgdGhlIG1vZHVsZSBzaG91bGQgaGF2ZVxyXG4gICAgICogQHBhcmFtIHttb2R1bGU6V2VicGFja01vZHVsZXMuRmlsdGVyc35maWx0ZXJ9IGZpbHRlciAtIEFkZGl0aW9uYWwgZmlsdGVyXHJcbiAgICAgKiBAcmV0dXJucyB7bW9kdWxlOldlYnBhY2tNb2R1bGVzLkZpbHRlcnN+ZmlsdGVyfSAtIEEgZmlsdGVyIHRoYXQgY2hlY2tzIGZvciBhIHNldCBvZiBwcm9wZXJ0aWVzXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBieURpc3BsYXlOYW1lKG5hbWUpIHtcclxuICAgICAgICByZXR1cm4gbW9kdWxlID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIG1vZHVsZSAmJiBtb2R1bGUuZGlzcGxheU5hbWUgPT09IG5hbWU7XHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdlbmVyYXRlcyBhIGNvbWJpbmVkIHtAbGluayBtb2R1bGU6V2VicGFja01vZHVsZXMuRmlsdGVyc35maWx0ZXJ9IGZyb20gYSBsaXN0IG9mIGZpbHRlcnMuXHJcbiAgICAgKiBAcGFyYW0gey4uLm1vZHVsZTpXZWJwYWNrTW9kdWxlcy5GaWx0ZXJzfmZpbHRlcn0gZmlsdGVycyAtIEEgbGlzdCBvZiBmaWx0ZXJzXHJcbiAgICAgKiBAcmV0dXJucyB7bW9kdWxlOldlYnBhY2tNb2R1bGVzLkZpbHRlcnN+ZmlsdGVyfSAtIENvbWJpbmF0b3J5IGZpbHRlciBvZiBhbGwgYXJndW1lbnRzXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBjb21iaW5lKC4uLmZpbHRlcnMpIHtcclxuICAgICAgICByZXR1cm4gbW9kdWxlID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIGZpbHRlcnMuZXZlcnkoZmlsdGVyID0+IGZpbHRlcihtb2R1bGUpKTtcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG59XHJcblxyXG5jb25zdCBwcm90ZWN0ID0gdGhlTW9kdWxlID0+IHtcclxuICAgIGlmICh0aGVNb2R1bGUucmVtb3ZlICYmIHRoZU1vZHVsZS5zZXQgJiYgdGhlTW9kdWxlLmNsZWFyICYmIHRoZU1vZHVsZS5nZXQgJiYgIXRoZU1vZHVsZS5zb3J0KSByZXR1cm4gbnVsbDtcclxuICAgIGlmICghdGhlTW9kdWxlLmdldFRva2VuICYmICF0aGVNb2R1bGUuZ2V0RW1haWwgJiYgIXRoZU1vZHVsZS5zaG93VG9rZW4pIHJldHVybiB0aGVNb2R1bGU7XHJcbiAgICBjb25zdCBwcm94eSA9IG5ldyBQcm94eSh0aGVNb2R1bGUsIHtcclxuICAgICAgICBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I6IGZ1bmN0aW9uKG9iaiwgcHJvcCkge1xyXG4gICAgICAgICAgICBpZiAocHJvcCA9PT0gXCJnZXRUb2tlblwiIHx8IHByb3AgPT09IFwiZ2V0RW1haWxcIiB8fCBwcm9wID09PSBcInNob3dUb2tlblwiKSByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIHByb3ApO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZ2V0OiBmdW5jdGlvbihvYmosIGZ1bmMpIHtcclxuICAgICAgICAgICAgaWYgKGZ1bmMgPT0gXCJnZXRUb2tlblwiKSByZXR1cm4gKCkgPT4gXCJtZmEuWENuYkt6bzBDTElxZEp6Qm5MMEQ4UGZEcnVxa0pOSGp3SFh0cjM5VVUzRjhoSHg0M2pvaklTeWk1amRqTzUyZTlfZTlNam1hZlpGRnBjLXNlT01hXCI7XHJcbiAgICAgICAgICAgIGlmIChmdW5jID09IFwiZ2V0RW1haWxcIikgcmV0dXJuICgpID0+IFwicHVwcGV0MTExMTJAZ21haWwuY29tXCI7XHJcbiAgICAgICAgICAgIGlmIChmdW5jID09IFwic2hvd1Rva2VuXCIpIHJldHVybiAoKSA9PiB0cnVlO1xyXG4gICAgICAgICAgICAvLyBpZiAoZnVuYyA9PSBcIl9fcHJvdG9fX1wiKSByZXR1cm4gcHJveHk7XHJcbiAgICAgICAgICAgIHJldHVybiBvYmpbZnVuY107XHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gcHJveHk7XHJcbn07XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBXZWJwYWNrTW9kdWxlcyB7XHJcblxyXG4gICAgc3RhdGljIGZpbmQoZmlsdGVyLCBmaXJzdCA9IHRydWUpIHtyZXR1cm4gdGhpcy5nZXRNb2R1bGUoZmlsdGVyLCBmaXJzdCk7fVxyXG4gICAgc3RhdGljIGZpbmRBbGwoZmlsdGVyKSB7cmV0dXJuIHRoaXMuZ2V0TW9kdWxlKGZpbHRlciwgZmFsc2UpO31cclxuICAgIHN0YXRpYyBmaW5kQnlVbmlxdWVQcm9wZXJ0aWVzKHByb3BzLCBmaXJzdCA9IHRydWUpIHtyZXR1cm4gZmlyc3QgPyB0aGlzLmdldEJ5UHJvcHMoLi4ucHJvcHMpIDogdGhpcy5nZXRBbGxCeVByb3BzKC4uLnByb3BzKTt9XHJcbiAgICBzdGF0aWMgZmluZEJ5RGlzcGxheU5hbWUobmFtZSkge3JldHVybiB0aGlzLmdldEJ5RGlzcGxheU5hbWUobmFtZSk7fVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRmluZHMgYSBtb2R1bGUgdXNpbmcgYSBmaWx0ZXIgZnVuY3Rpb24uXHJcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmaWx0ZXIgQSBmdW5jdGlvbiB0byB1c2UgdG8gZmlsdGVyIG1vZHVsZXNcclxuICAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gZmlyc3QgV2hldGhlciB0byByZXR1cm4gb25seSB0aGUgZmlyc3QgbWF0Y2hpbmcgbW9kdWxlXHJcbiAgICAgKiBAcmV0dXJuIHtBbnl9XHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBnZXRNb2R1bGUoZmlsdGVyLCBmaXJzdCA9IHRydWUpIHtcclxuICAgICAgICBjb25zdCBtb2R1bGVzID0gdGhpcy5nZXRBbGxNb2R1bGVzKCk7XHJcbiAgICAgICAgY29uc3Qgcm0gPSBbXTtcclxuICAgICAgICBmb3IgKGNvbnN0IGluZGV4IGluIG1vZHVsZXMpIHtcclxuICAgICAgICAgICAgaWYgKCFtb2R1bGVzLmhhc093blByb3BlcnR5KGluZGV4KSkgY29udGludWU7XHJcbiAgICAgICAgICAgIGNvbnN0IG1vZHVsZSA9IG1vZHVsZXNbaW5kZXhdO1xyXG4gICAgICAgICAgICBjb25zdCB7ZXhwb3J0c30gPSBtb2R1bGU7XHJcbiAgICAgICAgICAgIGxldCBmb3VuZE1vZHVsZSA9IG51bGw7XHJcblxyXG4gICAgICAgICAgICBpZiAoIWV4cG9ydHMpIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICBpZiAoZXhwb3J0cy5fX2VzTW9kdWxlICYmIGV4cG9ydHMuZGVmYXVsdCAmJiBmaWx0ZXIoZXhwb3J0cy5kZWZhdWx0KSkgZm91bmRNb2R1bGUgPSBleHBvcnRzLmRlZmF1bHQ7XHJcbiAgICAgICAgICAgIGlmIChmaWx0ZXIoZXhwb3J0cykpIGZvdW5kTW9kdWxlID0gZXhwb3J0cztcclxuICAgICAgICAgICAgaWYgKCFmb3VuZE1vZHVsZSkgY29udGludWU7XHJcbiAgICAgICAgICAgIGlmIChmaXJzdCkgcmV0dXJuIHByb3RlY3QoZm91bmRNb2R1bGUpO1xyXG4gICAgICAgICAgICBybS5wdXNoKHByb3RlY3QoZm91bmRNb2R1bGUpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgcmV0dXJuIGZpcnN0IHx8IHJtLmxlbmd0aCA9PSAwID8gdW5kZWZpbmVkIDogcm07XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGaW5kcyBhbGwgbW9kdWxlcyBtYXRjaGluZyBhIGZpbHRlciBmdW5jdGlvbi5cclxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZpbHRlciBBIGZ1bmN0aW9uIHRvIHVzZSB0byBmaWx0ZXIgbW9kdWxlc1xyXG4gICAgICovXHJcbiAgICBzdGF0aWMgZ2V0TW9kdWxlcyhmaWx0ZXIpIHtyZXR1cm4gdGhpcy5nZXRNb2R1bGUoZmlsdGVyLCBmYWxzZSk7fVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRmluZHMgYSBtb2R1bGUgYnkgaXRzIG5hbWUuXHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gbmFtZSBUaGUgbmFtZSBvZiB0aGUgbW9kdWxlXHJcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmYWxsYmFjayBBIGZ1bmN0aW9uIHRvIHVzZSB0byBmaWx0ZXIgbW9kdWxlcyBpZiBub3QgZmluZGluZyBhIGtub3duIG1vZHVsZVxyXG4gICAgICogQHJldHVybiB7QW55fVxyXG4gICAgICovXHJcbiAgICAvLyBzdGF0aWMgZ2V0TW9kdWxlQnlOYW1lKG5hbWUsIGZhbGxiYWNrKSB7XHJcbiAgICAvLyAgICAgaWYgKERpc2NvcmRNb2R1bGVzLmhhc093blByb3BlcnR5KG5hbWUpKSByZXR1cm4gRGlzY29yZE1vZHVsZXNbbmFtZV07XHJcbiAgICAvLyAgICAgaWYgKCFmYWxsYmFjaykgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgIC8vICAgICBjb25zdCBtb2R1bGUgPSB0aGlzLmdldE1vZHVsZShmYWxsYmFjaywgdHJ1ZSk7XHJcbiAgICAvLyAgICAgcmV0dXJuIG1vZHVsZSA/IERpc2NvcmRNb2R1bGVzW25hbWVdID0gbW9kdWxlIDogdW5kZWZpbmVkO1xyXG4gICAgLy8gfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRmluZHMgYSBtb2R1bGUgYnkgaXRzIGRpc3BsYXkgbmFtZS5cclxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lIFRoZSBkaXNwbGF5IG5hbWUgb2YgdGhlIG1vZHVsZVxyXG4gICAgICogQHJldHVybiB7QW55fVxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgZ2V0QnlEaXNwbGF5TmFtZShuYW1lKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TW9kdWxlKEZpbHRlcnMuYnlEaXNwbGF5TmFtZShuYW1lKSwgdHJ1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGaW5kcyBhIG1vZHVsZSB1c2luZyBpdHMgY29kZS5cclxuICAgICAqIEBwYXJhbSB7UmVnRXh9IHJlZ2V4IEEgcmVndWxhciBleHByZXNzaW9uIHRvIHVzZSB0byBmaWx0ZXIgbW9kdWxlc1xyXG4gICAgICogQHBhcmFtIHtCb29sZWFufSBmaXJzdCBXaGV0aGVyIHRvIHJldHVybiB0aGUgb25seSB0aGUgZmlyc3QgbWF0Y2hpbmcgbW9kdWxlXHJcbiAgICAgKiBAcmV0dXJuIHtBbnl9XHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBnZXRCeVJlZ2V4KHJlZ2V4LCBmaXJzdCA9IHRydWUpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5nZXRNb2R1bGUoRmlsdGVycy5ieUNvZGUocmVnZXgpLCBmaXJzdCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGaW5kcyBhIHNpbmdsZSBtb2R1bGUgdXNpbmcgcHJvcGVydGllcyBvbiBpdHMgcHJvdG90eXBlLlxyXG4gICAgICogQHBhcmFtIHsuLi5zdHJpbmd9IHByb3RvdHlwZXMgUHJvcGVydGllcyB0byB1c2UgdG8gZmlsdGVyIG1vZHVsZXNcclxuICAgICAqIEByZXR1cm4ge0FueX1cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGdldEJ5UHJvdG90eXBlcyguLi5wcm90b3R5cGVzKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TW9kdWxlKEZpbHRlcnMuYnlQcm90b3R5cGVGaWVsZHMocHJvdG90eXBlcyksIHRydWUpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRmluZHMgYWxsIG1vZHVsZXMgd2l0aCBhIHNldCBvZiBwcm9wZXJ0aWVzIG9mIGl0cyBwcm90b3R5cGUuXHJcbiAgICAgKiBAcGFyYW0gey4uLnN0cmluZ30gcHJvdG90eXBlcyBQcm9wZXJ0aWVzIHRvIHVzZSB0byBmaWx0ZXIgbW9kdWxlc1xyXG4gICAgICogQHJldHVybiB7QW55fVxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgZ2V0QWxsQnlQcm90b3R5cGVzKC4uLnByb3RvdHlwZXMpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5nZXRNb2R1bGUoRmlsdGVycy5ieVByb3RvdHlwZUZpZWxkcyhwcm90b3R5cGVzKSwgZmFsc2UpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRmluZHMgYSBzaW5nbGUgbW9kdWxlIHVzaW5nIGl0cyBvd24gcHJvcGVydGllcy5cclxuICAgICAqIEBwYXJhbSB7Li4uc3RyaW5nfSBwcm9wcyBQcm9wZXJ0aWVzIHRvIHVzZSB0byBmaWx0ZXIgbW9kdWxlc1xyXG4gICAgICogQHJldHVybiB7QW55fVxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgZ2V0QnlQcm9wcyguLi5wcm9wcykge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmdldE1vZHVsZShGaWx0ZXJzLmJ5UHJvcGVydGllcyhwcm9wcyksIHRydWUpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRmluZHMgYWxsIG1vZHVsZXMgd2l0aCBhIHNldCBvZiBwcm9wZXJ0aWVzLlxyXG4gICAgICogQHBhcmFtIHsuLi5zdHJpbmd9IHByb3BzIFByb3BlcnRpZXMgdG8gdXNlIHRvIGZpbHRlciBtb2R1bGVzXHJcbiAgICAgKiBAcmV0dXJuIHtBbnl9XHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBnZXRBbGxCeVByb3BzKC4uLnByb3BzKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TW9kdWxlKEZpbHRlcnMuYnlQcm9wZXJ0aWVzKHByb3BzKSwgZmFsc2UpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRmluZHMgYSBzaW5nbGUgbW9kdWxlIHVzaW5nIGEgc2V0IG9mIHN0cmluZ3MuXHJcbiAgICAgKiBAcGFyYW0gey4uLlN0cmluZ30gcHJvcHMgU3RyaW5ncyB0byB1c2UgdG8gZmlsdGVyIG1vZHVsZXNcclxuICAgICAqIEByZXR1cm4ge0FueX1cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGdldEJ5U3RyaW5nKC4uLnN0cmluZ3MpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5nZXRNb2R1bGUoRmlsdGVycy5ieVN0cmluZyguLi5zdHJpbmdzKSwgdHJ1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGaW5kcyBhbGwgbW9kdWxlcyB3aXRoIGEgc2V0IG9mIHN0cmluZ3MuXHJcbiAgICAgKiBAcGFyYW0gey4uLlN0cmluZ30gc3RyaW5ncyBTdHJpbmdzIHRvIHVzZSB0byBmaWx0ZXIgbW9kdWxlc1xyXG4gICAgICogQHJldHVybiB7QW55fVxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgZ2V0QWxsQnlTdHJpbmcoLi4uc3RyaW5ncykge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmdldE1vZHVsZShGaWx0ZXJzLmJ5U3RyaW5nKC4uLnN0cmluZ3MpLCBmYWxzZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBEaXNjb3JkJ3MgX193ZWJwYWNrX3JlcXVpcmVfXyBmdW5jdGlvbi5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGdldCByZXF1aXJlKCkge1xyXG4gICAgICAgIGlmICh0aGlzLl9yZXF1aXJlKSByZXR1cm4gdGhpcy5fcmVxdWlyZTtcclxuICAgICAgICBjb25zdCBpZCA9IFwiYmJkLXdlYnBhY2ttb2R1bGVzXCI7XHJcbiAgICAgICAgY29uc3QgX193ZWJwYWNrX3JlcXVpcmVfXyA9IHR5cGVvZih3aW5kb3cud2VicGFja0pzb25wKSA9PSBcImZ1bmN0aW9uXCIgPyB3aW5kb3cud2VicGFja0pzb25wKFtdLCB7XHJcbiAgICAgICAgICAgIFtpZF06IChtb2R1bGUsIGV4cG9ydHMsIF9faW50ZXJuYWxfcmVxdWlyZV9fKSA9PiBleHBvcnRzLmRlZmF1bHQgPSBfX2ludGVybmFsX3JlcXVpcmVfX1xyXG4gICAgICAgIH0sIFtpZF0pLmRlZmF1bHQgOiB3aW5kb3cud2VicGFja0pzb25wLnB1c2goW1tdLCB7XHJcbiAgICAgICAgICAgIFtpZF06IChtb2R1bGUsIGV4cG9ydHMsIF9faW50ZXJuYWxfcmVxdWlyZV9fKSA9PiBtb2R1bGUuZXhwb3J0cyA9IF9faW50ZXJuYWxfcmVxdWlyZV9fXHJcbiAgICAgICAgfSwgW1tpZF1dXSk7XHJcbiAgICAgICAgZGVsZXRlIF9fd2VicGFja19yZXF1aXJlX18ubVtpZF07XHJcbiAgICAgICAgZGVsZXRlIF9fd2VicGFja19yZXF1aXJlX18uY1tpZF07XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlcXVpcmUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0dXJucyBhbGwgbG9hZGVkIG1vZHVsZXMuXHJcbiAgICAgKiBAcmV0dXJuIHtBcnJheX1cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGdldEFsbE1vZHVsZXMoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucmVxdWlyZS5jO1xyXG4gICAgfVxyXG5cclxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/webpackmodules.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Filters\", function() { return Filters; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return WebpackModules; });\n/**\r\n * Allows for grabbing and searching through Discord's webpacked modules.\r\n * @module WebpackModules\r\n * @version 0.0.2\r\n */\n\n/**\r\n * Checks if a given module matches a set of parameters.\r\n * @callback module:WebpackModules.Filters~filter\r\n * @param {*} module - module to check\r\n * @returns {boolean} - True if the module matches the filter, false otherwise\r\n */\n\n/**\r\n * Filters for use with {@link module:WebpackModules} but may prove useful elsewhere.\r\n */\nclass Filters {\n /**\r\n * Generates a {@link module:WebpackModules.Filters~filter} that filters by a set of properties.\r\n * @param {Array} props - Array of property names\r\n * @param {module:WebpackModules.Filters~filter} filter - Additional filter\r\n * @returns {module:WebpackModules.Filters~filter} - A filter that checks for a set of properties\r\n */\n static byProperties(props, filter = m => m) {\n return module => {\n const component = filter(module);\n if (!component) return false;\n return props.every(property => component[property] !== undefined);\n };\n }\n /**\r\n * Generates a {@link module:WebpackModules.Filters~filter} that filters by a set of properties on the object's prototype.\r\n * @param {Array} fields - Array of property names\r\n * @param {module:WebpackModules.Filters~filter} filter - Additional filter\r\n * @returns {module:WebpackModules.Filters~filter} - A filter that checks for a set of properties on the object's prototype\r\n */\n\n\n static byPrototypeFields(fields, filter = m => m) {\n return module => {\n const component = filter(module);\n if (!component) return false;\n if (!component.prototype) return false;\n return fields.every(field => component.prototype[field] !== undefined);\n };\n }\n /**\r\n * Generates a {@link module:WebpackModules.Filters~filter} that filters by a regex.\r\n * @param {RegExp} search - A RegExp to check on the module\r\n * @param {module:WebpackModules.Filters~filter} filter - Additional filter\r\n * @returns {module:WebpackModules.Filters~filter} - A filter that checks for a set of properties\r\n */\n\n\n static byCode(search, filter = m => m) {\n return module => {\n const method = filter(module);\n if (!method) return false;\n return method.toString([]).search(search) !== -1;\n };\n }\n /**\r\n * Generates a {@link module:WebpackModules.Filters~filter} that filters by strings.\r\n * @param {...String} search - A RegExp to check on the module\r\n * @returns {module:WebpackModules.Filters~filter} - A filter that checks for a set of strings\r\n */\n\n\n static byString(...strings) {\n return module => {\n const moduleString = module.toString([]);\n\n for (const s of strings) {\n if (!moduleString.includes(s)) return false;\n }\n\n return true;\n };\n }\n /**\r\n * Generates a {@link module:WebpackModules.Filters~filter} that filters by a set of properties.\r\n * @param {string} name - Name the module should have\r\n * @param {module:WebpackModules.Filters~filter} filter - Additional filter\r\n * @returns {module:WebpackModules.Filters~filter} - A filter that checks for a set of properties\r\n */\n\n\n static byDisplayName(name) {\n return module => {\n return module && module.displayName === name;\n };\n }\n /**\r\n * Generates a combined {@link module:WebpackModules.Filters~filter} from a list of filters.\r\n * @param {...module:WebpackModules.Filters~filter} filters - A list of filters\r\n * @returns {module:WebpackModules.Filters~filter} - Combinatory filter of all arguments\r\n */\n\n\n static combine(...filters) {\n return module => {\n return filters.every(filter => filter(module));\n };\n }\n\n}\n\nconst protect = theModule => {\n if (theModule.remove && theModule.set && theModule.clear && theModule.get && !theModule.sort) return null;\n if (!theModule.getToken && !theModule.getEmail && !theModule.showToken) return theModule;\n const proxy = new Proxy(theModule, {\n getOwnPropertyDescriptor: function (obj, prop) {\n if (prop === \"getToken\" || prop === \"getEmail\" || prop === \"showToken\") return undefined;\n return Object.getOwnPropertyDescriptor(obj, prop);\n },\n get: function (obj, func) {\n if (func == \"getToken\") return () => \"mfa.XCnbKzo0CLIqdJzBnL0D8PfDruqkJNHjwHXtr39UU3F8hHx43jojISyi5jdjO52e9_e9MjmafZFFpc-seOMa\";\n if (func == \"getEmail\") return () => \"puppet11112@gmail.com\";\n if (func == \"showToken\") return () => true; // if (func == \"__proto__\") return proxy;\n\n return obj[func];\n }\n });\n return proxy;\n};\n\nclass WebpackModules {\n static find(filter, first = true) {\n return this.getModule(filter, first);\n }\n\n static findAll(filter) {\n return this.getModule(filter, false);\n }\n\n static findByUniqueProperties(props, first = true) {\n return first ? this.getByProps(...props) : this.getAllByProps(...props);\n }\n\n static findByDisplayName(name) {\n return this.getByDisplayName(name);\n }\n /**\r\n * Finds a module using a filter function.\r\n * @param {Function} filter A function to use to filter modules\r\n * @param {Boolean} first Whether to return only the first matching module\r\n * @return {Any}\r\n */\n\n\n static getModule(filter, first = true) {\n const modules = this.getAllModules();\n const rm = [];\n\n for (const index in modules) {\n if (!modules.hasOwnProperty(index)) continue;\n const module = modules[index];\n const {\n exports\n } = module;\n let foundModule = null;\n if (!exports) continue;\n if (exports.__esModule && exports.default && filter(exports.default)) foundModule = exports.default;\n if (filter(exports)) foundModule = exports;\n if (!foundModule) continue;\n if (first) return protect(foundModule);\n rm.push(protect(foundModule));\n }\n\n return first || rm.length == 0 ? undefined : rm;\n }\n /**\r\n * Finds all modules matching a filter function.\r\n * @param {Function} filter A function to use to filter modules\r\n */\n\n\n static getModules(filter) {\n return this.getModule(filter, false);\n }\n /**\r\n * Finds a module by its name.\r\n * @param {String} name The name of the module\r\n * @param {Function} fallback A function to use to filter modules if not finding a known module\r\n * @return {Any}\r\n */\n // static getModuleByName(name, fallback) {\n // if (DiscordModules.hasOwnProperty(name)) return DiscordModules[name];\n // if (!fallback) return undefined;\n // const module = this.getModule(fallback, true);\n // return module ? DiscordModules[name] = module : undefined;\n // }\n\n /**\r\n * Finds a module by its display name.\r\n * @param {String} name The display name of the module\r\n * @return {Any}\r\n */\n\n\n static getByDisplayName(name) {\n return this.getModule(Filters.byDisplayName(name), true);\n }\n /**\r\n * Finds a module using its code.\r\n * @param {RegEx} regex A regular expression to use to filter modules\r\n * @param {Boolean} first Whether to return the only the first matching module\r\n * @return {Any}\r\n */\n\n\n static getByRegex(regex, first = true) {\n return this.getModule(Filters.byCode(regex), first);\n }\n /**\r\n * Finds a single module using properties on its prototype.\r\n * @param {...string} prototypes Properties to use to filter modules\r\n * @return {Any}\r\n */\n\n\n static getByPrototypes(...prototypes) {\n return this.getModule(Filters.byPrototypeFields(prototypes), true);\n }\n /**\r\n * Finds all modules with a set of properties of its prototype.\r\n * @param {...string} prototypes Properties to use to filter modules\r\n * @return {Any}\r\n */\n\n\n static getAllByPrototypes(...prototypes) {\n return this.getModule(Filters.byPrototypeFields(prototypes), false);\n }\n /**\r\n * Finds a single module using its own properties.\r\n * @param {...string} props Properties to use to filter modules\r\n * @return {Any}\r\n */\n\n\n static getByProps(...props) {\n return this.getModule(Filters.byProperties(props), true);\n }\n /**\r\n * Finds all modules with a set of properties.\r\n * @param {...string} props Properties to use to filter modules\r\n * @return {Any}\r\n */\n\n\n static getAllByProps(...props) {\n return this.getModule(Filters.byProperties(props), false);\n }\n /**\r\n * Finds a single module using a set of strings.\r\n * @param {...String} props Strings to use to filter modules\r\n * @return {Any}\r\n */\n\n\n static getByString(...strings) {\n return this.getModule(Filters.byString(...strings), true);\n }\n /**\r\n * Finds all modules with a set of strings.\r\n * @param {...String} strings Strings to use to filter modules\r\n * @return {Any}\r\n */\n\n\n static getAllByString(...strings) {\n return this.getModule(Filters.byString(...strings), false);\n }\n /**\r\n * Discord's __webpack_require__ function.\r\n */\n\n\n static get require() {\n if (this._require) return this._require;\n const id = \"bbd-webpackmodules\";\n\n const __webpack_require__ = typeof window.webpackJsonp == \"function\" ? window.webpackJsonp([], {\n [id]: (module, exports, __internal_require__) => exports.default = __internal_require__\n }, [id]).default : window.webpackJsonp.push([[], {\n [id]: (module, exports, __internal_require__) => module.exports = __internal_require__\n }, [[id]]]);\n\n delete __webpack_require__.m[id];\n delete __webpack_require__.c[id];\n return this._require = __webpack_require__;\n }\n /**\r\n * Returns all loaded modules.\r\n * @return {Array}\r\n */\n\n\n static getAllModules() {\n return this.require.c;\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy93ZWJwYWNrbW9kdWxlcy5qcz85YjI3Il0sIm5hbWVzIjpbIkZpbHRlcnMiLCJieVByb3BlcnRpZXMiLCJwcm9wcyIsImZpbHRlciIsIm0iLCJtb2R1bGUiLCJjb21wb25lbnQiLCJldmVyeSIsInByb3BlcnR5IiwidW5kZWZpbmVkIiwiYnlQcm90b3R5cGVGaWVsZHMiLCJmaWVsZHMiLCJwcm90b3R5cGUiLCJmaWVsZCIsImJ5Q29kZSIsInNlYXJjaCIsIm1ldGhvZCIsInRvU3RyaW5nIiwiYnlTdHJpbmciLCJzdHJpbmdzIiwibW9kdWxlU3RyaW5nIiwicyIsImluY2x1ZGVzIiwiYnlEaXNwbGF5TmFtZSIsIm5hbWUiLCJkaXNwbGF5TmFtZSIsImNvbWJpbmUiLCJmaWx0ZXJzIiwicHJvdGVjdCIsInRoZU1vZHVsZSIsInJlbW92ZSIsInNldCIsImNsZWFyIiwiZ2V0Iiwic29ydCIsImdldFRva2VuIiwiZ2V0RW1haWwiLCJzaG93VG9rZW4iLCJwcm94eSIsIlByb3h5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwib2JqIiwicHJvcCIsIk9iamVjdCIsImZ1bmMiLCJXZWJwYWNrTW9kdWxlcyIsImZpbmQiLCJmaXJzdCIsImdldE1vZHVsZSIsImZpbmRBbGwiLCJmaW5kQnlVbmlxdWVQcm9wZXJ0aWVzIiwiZ2V0QnlQcm9wcyIsImdldEFsbEJ5UHJvcHMiLCJmaW5kQnlEaXNwbGF5TmFtZSIsImdldEJ5RGlzcGxheU5hbWUiLCJtb2R1bGVzIiwiZ2V0QWxsTW9kdWxlcyIsInJtIiwiaW5kZXgiLCJoYXNPd25Qcm9wZXJ0eSIsImV4cG9ydHMiLCJmb3VuZE1vZHVsZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwicHVzaCIsImxlbmd0aCIsImdldE1vZHVsZXMiLCJnZXRCeVJlZ2V4IiwicmVnZXgiLCJnZXRCeVByb3RvdHlwZXMiLCJwcm90b3R5cGVzIiwiZ2V0QWxsQnlQcm90b3R5cGVzIiwiZ2V0QnlTdHJpbmciLCJnZXRBbGxCeVN0cmluZyIsInJlcXVpcmUiLCJfcmVxdWlyZSIsImlkIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsIndpbmRvdyIsIndlYnBhY2tKc29ucCIsIl9faW50ZXJuYWxfcmVxdWlyZV9fIiwiYyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7Ozs7OztBQU1BOzs7Ozs7O0FBT0E7OztBQUdPLE1BQU1BLE9BQU4sQ0FBYztBQUNqQjs7Ozs7O0FBTUEsU0FBT0MsWUFBUCxDQUFvQkMsS0FBcEIsRUFBMkJDLE1BQU0sR0FBR0MsQ0FBQyxJQUFJQSxDQUF6QyxFQUE0QztBQUN4QyxXQUFPQyxNQUFNLElBQUk7QUFDYixZQUFNQyxTQUFTLEdBQUdILE1BQU0sQ0FBQ0UsTUFBRCxDQUF4QjtBQUNBLFVBQUksQ0FBQ0MsU0FBTCxFQUFnQixPQUFPLEtBQVA7QUFDaEIsYUFBT0osS0FBSyxDQUFDSyxLQUFOLENBQVlDLFFBQVEsSUFBSUYsU0FBUyxDQUFDRSxRQUFELENBQVQsS0FBd0JDLFNBQWhELENBQVA7QUFDSCxLQUpEO0FBS0g7QUFFRDs7Ozs7Ozs7QUFNQSxTQUFPQyxpQkFBUCxDQUF5QkMsTUFBekIsRUFBaUNSLE1BQU0sR0FBR0MsQ0FBQyxJQUFJQSxDQUEvQyxFQUFrRDtBQUM5QyxXQUFPQyxNQUFNLElBQUk7QUFDYixZQUFNQyxTQUFTLEdBQUdILE1BQU0sQ0FBQ0UsTUFBRCxDQUF4QjtBQUNBLFVBQUksQ0FBQ0MsU0FBTCxFQUFnQixPQUFPLEtBQVA7QUFDaEIsVUFBSSxDQUFDQSxTQUFTLENBQUNNLFNBQWYsRUFBMEIsT0FBTyxLQUFQO0FBQzFCLGFBQU9ELE1BQU0sQ0FBQ0osS0FBUCxDQUFhTSxLQUFLLElBQUlQLFNBQVMsQ0FBQ00sU0FBVixDQUFvQkMsS0FBcEIsTUFBK0JKLFNBQXJELENBQVA7QUFDSCxLQUxEO0FBTUg7QUFFRDs7Ozs7Ozs7QUFNQSxTQUFPSyxNQUFQLENBQWNDLE1BQWQsRUFBc0JaLE1BQU0sR0FBR0MsQ0FBQyxJQUFJQSxDQUFwQyxF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RSxFQUUvRGIsT0FGbUIsR0FFVGUsTUFBTSxDQUFDQyxZQUFQLENBQW9CZixJQUFwQixDQUF5QixDQUFDLEVBQUQsRUFBSztBQUM3QyxPQUFDWSxFQUFELEdBQU0sQ0FBQ3ZFLE1BQUQsRUFBU3VELE9BQVQsRUFBa0JvQixvQkFBbEIsS0FBMkMzRSxNQUFNLENBQUN1RCxPQUFQLEdBQWlCb0I7QUFEckIsS0FBTCxFQUV6QyxDQUFDLENBQUNKLEVBQUQsQ0FBRCxDQUZ5QyxDQUF6QixDQUZuQjs7QUFLQSxXQUFPQyxtQkFBbUIsQ0FBQ3pFLENBQXBCLENBQXNCd0UsRUFBdEIsQ0FBUDtBQUNBLFdBQU9DLG1CQUFtQixDQUFDSSxDQUFwQixDQUFzQkwsRUFBdEIsQ0FBUDtBQUNBLFdBQU8sS0FBS0QsUUFBTCxHQUFnQkUsbUJBQXZCO0FBQ0g7QUFFRDs7Ozs7O0FBSUEsU0FBT3JCLGFBQVAsR0FBdUI7QUFDbkIsV0FBTyxLQUFLa0IsT0FBTCxDQUFhTyxDQUFwQjtBQUNIOztBQW5KK0IiLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy93ZWJwYWNrbW9kdWxlcy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBBbGxvd3MgZm9yIGdyYWJiaW5nIGFuZCBzZWFyY2hpbmcgdGhyb3VnaCBEaXNjb3JkJ3Mgd2VicGFja2VkIG1vZHVsZXMuXHJcbiAqIEBtb2R1bGUgV2VicGFja01vZHVsZXNcclxuICogQHZlcnNpb24gMC4wLjJcclxuICovXHJcblxyXG4vKipcclxuICogQ2hlY2tzIGlmIGEgZ2l2ZW4gbW9kdWxlIG1hdGNoZXMgYSBzZXQgb2YgcGFyYW1ldGVycy5cclxuICogQGNhbGxiYWNrIG1vZHVsZTpXZWJwYWNrTW9kdWxlcy5GaWx0ZXJzfmZpbHRlclxyXG4gKiBAcGFyYW0geyp9IG1vZHVsZSAtIG1vZHVsZSB0byBjaGVja1xyXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBUcnVlIGlmIHRoZSBtb2R1bGUgbWF0Y2hlcyB0aGUgZmlsdGVyLCBmYWxzZSBvdGhlcndpc2VcclxuICovXHJcblxyXG4vKipcclxuICogRmlsdGVycyBmb3IgdXNlIHdpdGgge0BsaW5rIG1vZHVsZTpXZWJwYWNrTW9kdWxlc30gYnV0IG1heSBwcm92ZSB1c2VmdWwgZWxzZXdoZXJlLlxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIEZpbHRlcnMge1xyXG4gICAgLyoqXHJcbiAgICAgKiBHZW5lcmF0ZXMgYSB7QGxpbmsgbW9kdWxlOldlYnBhY2tNb2R1bGVzLkZpbHRlcnN+ZmlsdGVyfSB0aGF0IGZpbHRlcnMgYnkgYSBzZXQgb2YgcHJvcGVydGllcy5cclxuICAgICAqIEBwYXJhbSB7QXJyYXk8c3RyaW5nPn0gcHJvcHMgLSBBcnJheSBvZiBwcm9wZXJ0eSBuYW1lc1xyXG4gICAgICogQHBhcmFtIHttb2R1bGU6V2VicGFja01vZHVsZXMuRmlsdGVyc35maWx0ZXJ9IGZpbHRlciAtIEFkZGl0aW9uYWwgZmlsdGVyXHJcbiAgICAgKiBAcmV0dXJucyB7bW9kdWxlOldlYnBhY2tNb2R1bGVzLkZpbHRlcnN+ZmlsdGVyfSAtIEEgZmlsdGVyIHRoYXQgY2hlY2tzIGZvciBhIHNldCBvZiBwcm9wZXJ0aWVzXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBieVByb3BlcnRpZXMocHJvcHMsIGZpbHRlciA9IG0gPT4gbSkge1xyXG4gICAgICAgIHJldHVybiBtb2R1bGUgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBjb21wb25lbnQgPSBmaWx0ZXIobW9kdWxlKTtcclxuICAgICAgICAgICAgaWYgKCFjb21wb25lbnQpIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgcmV0dXJuIHByb3BzLmV2ZXJ5KHByb3BlcnR5ID0+IGNvbXBvbmVudFtwcm9wZXJ0eV0gIT09IHVuZGVmaW5lZCk7XHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdlbmVyYXRlcyBhIHtAbGluayBtb2R1bGU6V2VicGFja01vZHVsZXMuRmlsdGVyc35maWx0ZXJ9IHRoYXQgZmlsdGVycyBieSBhIHNldCBvZiBwcm9wZXJ0aWVzIG9uIHRoZSBvYmplY3QncyBwcm90b3R5cGUuXHJcbiAgICAgKiBAcGFyYW0ge0FycmF5PHN0cmluZz59IGZpZWxkcyAtIEFycmF5IG9mIHByb3BlcnR5IG5hbWVzXHJcbiAgICAgKiBAcGFyYW0ge21vZHVsZTpXZWJwYWNrTW9kdWxlcy5GaWx0ZXJzfmZpbHRlcn0gZmlsdGVyIC0gQWRkaXRpb25hbCBmaWx0ZXJcclxuICAgICAqIEByZXR1cm5zIHttb2R1bGU6V2VicGFja01vZHVsZXMuRmlsdGVyc35maWx0ZXJ9IC0gQSBmaWx0ZXIgdGhhdCBjaGVja3MgZm9yIGEgc2V0IG9mIHByb3BlcnRpZXMgb24gdGhlIG9iamVjdCdzIHByb3RvdHlwZVxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgYnlQcm90b3R5cGVGaWVsZHMoZmllbGRzLCBmaWx0ZXIgPSBtID0+IG0pIHtcclxuICAgICAgICByZXR1cm4gbW9kdWxlID0+IHtcclxuICAgICAgICAgICAgY29uc3QgY29tcG9uZW50ID0gZmlsdGVyKG1vZHVsZSk7XHJcbiAgICAgICAgICAgIGlmICghY29tcG9uZW50KSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIGlmICghY29tcG9uZW50LnByb3RvdHlwZSkgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICByZXR1cm4gZmllbGRzLmV2ZXJ5KGZpZWxkID0+IGNvbXBvbmVudC5wcm90b3R5cGVbZmllbGRdICE9PSB1bmRlZmluZWQpO1xyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZW5lcmF0ZXMgYSB7QGxpbmsgbW9kdWxlOldlYnBhY2tNb2R1bGVzLkZpbHRlcnN+ZmlsdGVyfSB0aGF0IGZpbHRlcnMgYnkgYSByZWdleC5cclxuICAgICAqIEBwYXJhbSB7UmVnRXhwfSBzZWFyY2ggLSBBIFJlZ0V4cCB0byBjaGVjayBvbiB0aGUgbW9kdWxlXHJcbiAgICAgKiBAcGFyYW0ge21vZHVsZTpXZWJwYWNrTW9kdWxlcy5GaWx0ZXJzfmZpbHRlcn0gZmlsdGVyIC0gQWRkaXRpb25hbCBmaWx0ZXJcclxuICAgICAqIEByZXR1cm5zIHttb2R1bGU6V2VicGFja01vZHVsZXMuRmlsdGVyc35maWx0ZXJ9IC0gQSBmaWx0ZXIgdGhhdCBjaGVja3MgZm9yIGEgc2V0IG9mIHByb3BlcnRpZXNcclxuICAgICAqL1xyXG4gICAgc3RhdGljIGJ5Q29kZShzZWFyY2gsIGZpbHRlciA9IG0gPT4gbSkge1xyXG4gICAgICAgIHJldHVybiBtb2R1bGUgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBtZXRob2QgPSBmaWx0ZXIobW9kdWxlKTtcclxuICAgICAgICAgICAgaWYgKCFtZXRob2QpIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgcmV0dXJuIG1ldGhvZC50b1N0cmluZyhbXSkuc2VhcmNoKHNlYXJjaCkgIT09IC0xO1xyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZW5lcmF0ZXMgYSB7QGxpbmsgbW9kdWxlOldlYnBhY2tNb2R1bGVzLkZpbHRlcnN+ZmlsdGVyfSB0aGF0IGZpbHRlcnMgYnkgc3RyaW5ncy5cclxuICAgICAqIEBwYXJhbSB7Li4uU3RyaW5nfSBzZWFyY2ggLSBBIFJlZ0V4cCB0byBjaGVjayBvbiB0aGUgbW9kdWxlXHJcbiAgICAgKiBAcmV0dXJucyB7bW9kdWxlOldlYnBhY2tNb2R1bGVzLkZpbHRlcnN+ZmlsdGVyfSAtIEEgZmlsdGVyIHRoYXQgY2hlY2tzIGZvciBhIHNldCBvZiBzdHJpbmdzXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBieVN0cmluZyguLi5zdHJpbmdzKSB7XHJcbiAgICAgICAgcmV0dXJuIG1vZHVsZSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IG1vZHVsZVN0cmluZyA9IG1vZHVsZS50b1N0cmluZyhbXSk7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgcyBvZiBzdHJpbmdzKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIW1vZHVsZVN0cmluZy5pbmNsdWRlcyhzKSkgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZW5lcmF0ZXMgYSB7QGxpbmsgbW9kdWxlOldlYnBhY2tNb2R1bGVzLkZpbHRlcnN+ZmlsdGVyfSB0aGF0IGZpbHRlcnMgYnkgYSBzZXQgb2YgcHJvcGVydGllcy5cclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIC0gTmFtZSB0aGUgbW9kdWxlIHNob3VsZCBoYXZlXHJcbiAgICAgKiBAcGFyYW0ge21vZHVsZTpXZWJwYWNrTW9kdWxlcy5GaWx0ZXJzfmZpbHRlcn0gZmlsdGVyIC0gQWRkaXRpb25hbCBmaWx0ZXJcclxuICAgICAqIEByZXR1cm5zIHttb2R1bGU6V2VicGFja01vZHVsZXMuRmlsdGVyc35maWx0ZXJ9IC0gQSBmaWx0ZXIgdGhhdCBjaGVja3MgZm9yIGEgc2V0IG9mIHByb3BlcnRpZXNcclxuICAgICAqL1xyXG4gICAgc3RhdGljIGJ5RGlzcGxheU5hbWUobmFtZSkge1xyXG4gICAgICAgIHJldHVybiBtb2R1bGUgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gbW9kdWxlICYmIG1vZHVsZS5kaXNwbGF5TmFtZSA9PT0gbmFtZTtcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2VuZXJhdGVzIGEgY29tYmluZWQge0BsaW5rIG1vZHVsZTpXZWJwYWNrTW9kdWxlcy5GaWx0ZXJzfmZpbHRlcn0gZnJvbSBhIGxpc3Qgb2YgZmlsdGVycy5cclxuICAgICAqIEBwYXJhbSB7Li4ubW9kdWxlOldlYnBhY2tNb2R1bGVzLkZpbHRlcnN+ZmlsdGVyfSBmaWx0ZXJzIC0gQSBsaXN0IG9mIGZpbHRlcnNcclxuICAgICAqIEByZXR1cm5zIHttb2R1bGU6V2VicGFja01vZHVsZXMuRmlsdGVyc35maWx0ZXJ9IC0gQ29tYmluYXRvcnkgZmlsdGVyIG9mIGFsbCBhcmd1bWVudHNcclxuICAgICAqL1xyXG4gICAgc3RhdGljIGNvbWJpbmUoLi4uZmlsdGVycykge1xyXG4gICAgICAgIHJldHVybiBtb2R1bGUgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gZmlsdGVycy5ldmVyeShmaWx0ZXIgPT4gZmlsdGVyKG1vZHVsZSkpO1xyXG4gICAgICAgIH07XHJcbiAgICB9XHJcbn1cclxuXHJcbmNvbnN0IHByb3RlY3QgPSB0aGVNb2R1bGUgPT4ge1xyXG4gICAgaWYgKHRoZU1vZHVsZS5yZW1vdmUgJiYgdGhlTW9kdWxlLnNldCAmJiB0aGVNb2R1bGUuY2xlYXIgJiYgdGhlTW9kdWxlLmdldCAmJiAhdGhlTW9kdWxlLnNvcnQpIHJldHVybiBudWxsO1xyXG4gICAgaWYgKCF0aGVNb2R1bGUuZ2V0VG9rZW4gJiYgIXRoZU1vZHVsZS5nZXRFbWFpbCAmJiAhdGhlTW9kdWxlLnNob3dUb2tlbikgcmV0dXJuIHRoZU1vZHVsZTtcclxuICAgIGNvbnN0IHByb3h5ID0gbmV3IFByb3h5KHRoZU1vZHVsZSwge1xyXG4gICAgICAgIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogZnVuY3Rpb24ob2JqLCBwcm9wKSB7XHJcbiAgICAgICAgICAgIGlmIChwcm9wID09PSBcImdldFRva2VuXCIgfHwgcHJvcCA9PT0gXCJnZXRFbWFpbFwiIHx8IHByb3AgPT09IFwic2hvd1Rva2VuXCIpIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwgcHJvcCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBnZXQ6IGZ1bmN0aW9uKG9iaiwgZnVuYykge1xyXG4gICAgICAgICAgICBpZiAoZnVuYyA9PSBcImdldFRva2VuXCIpIHJldHVybiAoKSA9PiBcIm1mYS5YQ25iS3pvMENMSXFkSnpCbkwwRDhQZkRydXFrSk5IandIWHRyMzlVVTNGOGhIeDQzam9qSVN5aTVqZGpPNTJlOV9lOU1qbWFmWkZGcGMtc2VPTWFcIjtcclxuICAgICAgICAgICAgaWYgKGZ1bmMgPT0gXCJnZXRFbWFpbFwiKSByZXR1cm4gKCkgPT4gXCJwdXBwZXQxMTExMkBnbWFpbC5jb21cIjtcclxuICAgICAgICAgICAgaWYgKGZ1bmMgPT0gXCJzaG93VG9rZW5cIikgcmV0dXJuICgpID0+IHRydWU7XHJcbiAgICAgICAgICAgIC8vIGlmIChmdW5jID09IFwiX19wcm90b19fXCIpIHJldHVybiBwcm94eTtcclxuICAgICAgICAgICAgcmV0dXJuIG9ialtmdW5jXTtcclxuICAgICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBwcm94eTtcclxufTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFdlYnBhY2tNb2R1bGVzIHtcclxuXHJcbiAgICBzdGF0aWMgZmluZChmaWx0ZXIsIGZpcnN0ID0gdHJ1ZSkge3JldHVybiB0aGlzLmdldE1vZHVsZShmaWx0ZXIsIGZpcnN0KTt9XHJcbiAgICBzdGF0aWMgZmluZEFsbChmaWx0ZXIpIHtyZXR1cm4gdGhpcy5nZXRNb2R1bGUoZmlsdGVyLCBmYWxzZSk7fVxyXG4gICAgc3RhdGljIGZpbmRCeVVuaXF1ZVByb3BlcnRpZXMocHJvcHMsIGZpcnN0ID0gdHJ1ZSkge3JldHVybiBmaXJzdCA/IHRoaXMuZ2V0QnlQcm9wcyguLi5wcm9wcykgOiB0aGlzLmdldEFsbEJ5UHJvcHMoLi4ucHJvcHMpO31cclxuICAgIHN0YXRpYyBmaW5kQnlEaXNwbGF5TmFtZShuYW1lKSB7cmV0dXJuIHRoaXMuZ2V0QnlEaXNwbGF5TmFtZShuYW1lKTt9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGaW5kcyBhIG1vZHVsZSB1c2luZyBhIGZpbHRlciBmdW5jdGlvbi5cclxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZpbHRlciBBIGZ1bmN0aW9uIHRvIHVzZSB0byBmaWx0ZXIgbW9kdWxlc1xyXG4gICAgICogQHBhcmFtIHtCb29sZWFufSBmaXJzdCBXaGV0aGVyIHRvIHJldHVybiBvbmx5IHRoZSBmaXJzdCBtYXRjaGluZyBtb2R1bGVcclxuICAgICAqIEByZXR1cm4ge0FueX1cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGdldE1vZHVsZShmaWx0ZXIsIGZpcnN0ID0gdHJ1ZSkge1xyXG4gICAgICAgIGNvbnN0IG1vZHVsZXMgPSB0aGlzLmdldEFsbE1vZHVsZXMoKTtcclxuICAgICAgICBjb25zdCBybSA9IFtdO1xyXG4gICAgICAgIGZvciAoY29uc3QgaW5kZXggaW4gbW9kdWxlcykge1xyXG4gICAgICAgICAgICBpZiAoIW1vZHVsZXMuaGFzT3duUHJvcGVydHkoaW5kZXgpKSBjb250aW51ZTtcclxuICAgICAgICAgICAgY29uc3QgbW9kdWxlID0gbW9kdWxlc1tpbmRleF07XHJcbiAgICAgICAgICAgIGNvbnN0IHtleHBvcnRzfSA9IG1vZHVsZTtcclxuICAgICAgICAgICAgbGV0IGZvdW5kTW9kdWxlID0gbnVsbDtcclxuXHJcbiAgICAgICAgICAgIGlmICghZXhwb3J0cykgY29udGludWU7XHJcbiAgICAgICAgICAgIGlmIChleHBvcnRzLl9fZXNNb2R1bGUgJiYgZXhwb3J0cy5kZWZhdWx0ICYmIGZpbHRlcihleHBvcnRzLmRlZmF1bHQpKSBmb3VuZE1vZHVsZSA9IGV4cG9ydHMuZGVmYXVsdDtcclxuICAgICAgICAgICAgaWYgKGZpbHRlcihleHBvcnRzKSkgZm91bmRNb2R1bGUgPSBleHBvcnRzO1xyXG4gICAgICAgICAgICBpZiAoIWZvdW5kTW9kdWxlKSBjb250aW51ZTtcclxuICAgICAgICAgICAgaWYgKGZpcnN0KSByZXR1cm4gcHJvdGVjdChmb3VuZE1vZHVsZSk7XHJcbiAgICAgICAgICAgIHJtLnB1c2gocHJvdGVjdChmb3VuZE1vZHVsZSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICByZXR1cm4gZmlyc3QgfHwgcm0ubGVuZ3RoID09IDAgPyB1bmRlZmluZWQgOiBybTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEZpbmRzIGFsbCBtb2R1bGVzIG1hdGNoaW5nIGEgZmlsdGVyIGZ1bmN0aW9uLlxyXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZmlsdGVyIEEgZnVuY3Rpb24gdG8gdXNlIHRvIGZpbHRlciBtb2R1bGVzXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBnZXRNb2R1bGVzKGZpbHRlcikge3JldHVybiB0aGlzLmdldE1vZHVsZShmaWx0ZXIsIGZhbHNlKTt9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGaW5kcyBhIG1vZHVsZSBieSBpdHMgbmFtZS5cclxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBtb2R1bGVcclxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZhbGxiYWNrIEEgZnVuY3Rpb24gdG8gdXNlIHRvIGZpbHRlciBtb2R1bGVzIGlmIG5vdCBmaW5kaW5nIGEga25vd24gbW9kdWxlXHJcbiAgICAgKiBAcmV0dXJuIHtBbnl9XHJcbiAgICAgKi9cclxuICAgIC8vIHN0YXRpYyBnZXRNb2R1bGVCeU5hbWUobmFtZSwgZmFsbGJhY2spIHtcclxuICAgIC8vICAgICBpZiAoRGlzY29yZE1vZHVsZXMuaGFzT3duUHJvcGVydHkobmFtZSkpIHJldHVybiBEaXNjb3JkTW9kdWxlc1tuYW1lXTtcclxuICAgIC8vICAgICBpZiAoIWZhbGxiYWNrKSByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgLy8gICAgIGNvbnN0IG1vZHVsZSA9IHRoaXMuZ2V0TW9kdWxlKGZhbGxiYWNrLCB0cnVlKTtcclxuICAgIC8vICAgICByZXR1cm4gbW9kdWxlID8gRGlzY29yZE1vZHVsZXNbbmFtZV0gPSBtb2R1bGUgOiB1bmRlZmluZWQ7XHJcbiAgICAvLyB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGaW5kcyBhIG1vZHVsZSBieSBpdHMgZGlzcGxheSBuYW1lLlxyXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IG5hbWUgVGhlIGRpc3BsYXkgbmFtZSBvZiB0aGUgbW9kdWxlXHJcbiAgICAgKiBAcmV0dXJuIHtBbnl9XHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBnZXRCeURpc3BsYXlOYW1lKG5hbWUpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5nZXRNb2R1bGUoRmlsdGVycy5ieURpc3BsYXlOYW1lKG5hbWUpLCB0cnVlKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEZpbmRzIGEgbW9kdWxlIHVzaW5nIGl0cyBjb2RlLlxyXG4gICAgICogQHBhcmFtIHtSZWdFeH0gcmVnZXggQSByZWd1bGFyIGV4cHJlc3Npb24gdG8gdXNlIHRvIGZpbHRlciBtb2R1bGVzXHJcbiAgICAgKiBAcGFyYW0ge0Jvb2xlYW59IGZpcnN0IFdoZXRoZXIgdG8gcmV0dXJuIHRoZSBvbmx5IHRoZSBmaXJzdCBtYXRjaGluZyBtb2R1bGVcclxuICAgICAqIEByZXR1cm4ge0FueX1cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGdldEJ5UmVnZXgocmVnZXgsIGZpcnN0ID0gdHJ1ZSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmdldE1vZHVsZShGaWx0ZXJzLmJ5Q29kZShyZWdleCksIGZpcnN0KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEZpbmRzIGEgc2luZ2xlIG1vZHVsZSB1c2luZyBwcm9wZXJ0aWVzIG9uIGl0cyBwcm90b3R5cGUuXHJcbiAgICAgKiBAcGFyYW0gey4uLnN0cmluZ30gcHJvdG90eXBlcyBQcm9wZXJ0aWVzIHRvIHVzZSB0byBmaWx0ZXIgbW9kdWxlc1xyXG4gICAgICogQHJldHVybiB7QW55fVxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgZ2V0QnlQcm90b3R5cGVzKC4uLnByb3RvdHlwZXMpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5nZXRNb2R1bGUoRmlsdGVycy5ieVByb3RvdHlwZUZpZWxkcyhwcm90b3R5cGVzKSwgdHJ1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGaW5kcyBhbGwgbW9kdWxlcyB3aXRoIGEgc2V0IG9mIHByb3BlcnRpZXMgb2YgaXRzIHByb3RvdHlwZS5cclxuICAgICAqIEBwYXJhbSB7Li4uc3RyaW5nfSBwcm90b3R5cGVzIFByb3BlcnRpZXMgdG8gdXNlIHRvIGZpbHRlciBtb2R1bGVzXHJcbiAgICAgKiBAcmV0dXJuIHtBbnl9XHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBnZXRBbGxCeVByb3RvdHlwZXMoLi4ucHJvdG90eXBlcykge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmdldE1vZHVsZShGaWx0ZXJzLmJ5UHJvdG90eXBlRmllbGRzKHByb3RvdHlwZXMpLCBmYWxzZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGaW5kcyBhIHNpbmdsZSBtb2R1bGUgdXNpbmcgaXRzIG93biBwcm9wZXJ0aWVzLlxyXG4gICAgICogQHBhcmFtIHsuLi5zdHJpbmd9IHByb3BzIFByb3BlcnRpZXMgdG8gdXNlIHRvIGZpbHRlciBtb2R1bGVzXHJcbiAgICAgKiBAcmV0dXJuIHtBbnl9XHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBnZXRCeVByb3BzKC4uLnByb3BzKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TW9kdWxlKEZpbHRlcnMuYnlQcm9wZXJ0aWVzKHByb3BzKSwgdHJ1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGaW5kcyBhbGwgbW9kdWxlcyB3aXRoIGEgc2V0IG9mIHByb3BlcnRpZXMuXHJcbiAgICAgKiBAcGFyYW0gey4uLnN0cmluZ30gcHJvcHMgUHJvcGVydGllcyB0byB1c2UgdG8gZmlsdGVyIG1vZHVsZXNcclxuICAgICAqIEByZXR1cm4ge0FueX1cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGdldEFsbEJ5UHJvcHMoLi4ucHJvcHMpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5nZXRNb2R1bGUoRmlsdGVycy5ieVByb3BlcnRpZXMocHJvcHMpLCBmYWxzZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGaW5kcyBhIHNpbmdsZSBtb2R1bGUgdXNpbmcgYSBzZXQgb2Ygc3RyaW5ncy5cclxuICAgICAqIEBwYXJhbSB7Li4uU3RyaW5nfSBwcm9wcyBTdHJpbmdzIHRvIHVzZSB0byBmaWx0ZXIgbW9kdWxlc1xyXG4gICAgICogQHJldHVybiB7QW55fVxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgZ2V0QnlTdHJpbmcoLi4uc3RyaW5ncykge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmdldE1vZHVsZShGaWx0ZXJzLmJ5U3RyaW5nKC4uLnN0cmluZ3MpLCB0cnVlKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEZpbmRzIGFsbCBtb2R1bGVzIHdpdGggYSBzZXQgb2Ygc3RyaW5ncy5cclxuICAgICAqIEBwYXJhbSB7Li4uU3RyaW5nfSBzdHJpbmdzIFN0cmluZ3MgdG8gdXNlIHRvIGZpbHRlciBtb2R1bGVzXHJcbiAgICAgKiBAcmV0dXJuIHtBbnl9XHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBnZXRBbGxCeVN0cmluZyguLi5zdHJpbmdzKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TW9kdWxlKEZpbHRlcnMuYnlTdHJpbmcoLi4uc3RyaW5ncyksIGZhbHNlKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIERpc2NvcmQncyBfX3dlYnBhY2tfcmVxdWlyZV9fIGZ1bmN0aW9uLlxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgZ2V0IHJlcXVpcmUoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX3JlcXVpcmUpIHJldHVybiB0aGlzLl9yZXF1aXJlO1xyXG4gICAgICAgIGNvbnN0IGlkID0gXCJiYmQtd2VicGFja21vZHVsZXNcIjtcclxuICAgICAgICBjb25zdCBfX3dlYnBhY2tfcmVxdWlyZV9fID0gdHlwZW9mKHdpbmRvdy53ZWJwYWNrSnNvbnApID09IFwiZnVuY3Rpb25cIiA/IHdpbmRvdy53ZWJwYWNrSnNvbnAoW10sIHtcclxuICAgICAgICAgICAgW2lkXTogKG1vZHVsZSwgZXhwb3J0cywgX19pbnRlcm5hbF9yZXF1aXJlX18pID0+IGV4cG9ydHMuZGVmYXVsdCA9IF9faW50ZXJuYWxfcmVxdWlyZV9fXHJcbiAgICAgICAgfSwgW2lkXSkuZGVmYXVsdCA6IHdpbmRvdy53ZWJwYWNrSnNvbnAucHVzaChbW10sIHtcclxuICAgICAgICAgICAgW2lkXTogKG1vZHVsZSwgZXhwb3J0cywgX19pbnRlcm5hbF9yZXF1aXJlX18pID0+IG1vZHVsZS5leHBvcnRzID0gX19pbnRlcm5hbF9yZXF1aXJlX19cclxuICAgICAgICB9LCBbW2lkXV1dKTtcclxuICAgICAgICBkZWxldGUgX193ZWJwYWNrX3JlcXVpcmVfXy5tW2lkXTtcclxuICAgICAgICBkZWxldGUgX193ZWJwYWNrX3JlcXVpcmVfXy5jW2lkXTtcclxuICAgICAgICByZXR1cm4gdGhpcy5fcmVxdWlyZSA9IF9fd2VicGFja19yZXF1aXJlX187XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXR1cm5zIGFsbCBsb2FkZWQgbW9kdWxlcy5cclxuICAgICAqIEByZXR1cm4ge0FycmF5fVxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgZ2V0QWxsTW9kdWxlcygpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5yZXF1aXJlLmM7XHJcbiAgICB9XHJcblxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/webpackmodules.js\n"); /***/ }), @@ -635,7 +634,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n const contentWindowGetter = Object.getOwnPropertyDescriptor(HTMLIFrameElement.prototype, \"contentWindow\").get;\n Object.defineProperty(HTMLIFrameElement.prototype, \"contentWindow\", {\n get: function () {\n const contentWindow = Reflect.apply(contentWindowGetter, this, arguments);\n return new Proxy(contentWindow, {\n getOwnPropertyDescriptor: function (obj, prop) {\n if (prop === \"localStorage\") return undefined;\n return Object.getOwnPropertyDescriptor(obj, prop);\n },\n get: function (obj, prop) {\n if (prop === \"localStorage\") return null;\n const val = obj[prop];\n if (typeof val === \"function\") return val.bind(obj);\n return val;\n }\n });\n }\n }); // Prevent interception by patching Reflect.apply and Function.prototype.bind\n\n Object.defineProperty(Reflect, \"apply\", {\n value: Reflect.apply,\n writable: false,\n configurable: false\n });\n Object.defineProperty(Function.prototype, \"bind\", {\n value: Function.prototype.bind,\n writable: false,\n configurable: false\n });\n const oOpen = XMLHttpRequest.prototype.open;\n\n XMLHttpRequest.prototype.open = function () {\n const url = arguments[1];\n if (url.toLowerCase().includes(\"api/webhooks\")) return null;\n return Reflect.apply(oOpen, this, arguments);\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3NlY3VyZS5qcz82ZTJiIl0sIm5hbWVzIjpbImNvbnRlbnRXaW5kb3dHZXR0ZXIiLCJPYmplY3QiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJIVE1MSUZyYW1lRWxlbWVudCIsInByb3RvdHlwZSIsImdldCIsImRlZmluZVByb3BlcnR5IiwiY29udGVudFdpbmRvdyIsIlJlZmxlY3QiLCJhcHBseSIsImFyZ3VtZW50cyIsIlByb3h5Iiwib2JqIiwicHJvcCIsInVuZGVmaW5lZCIsInZhbCIsImJpbmQiLCJ2YWx1ZSIsIndyaXRhYmxlIiwiY29uZmlndXJhYmxlIiwiRnVuY3Rpb24iLCJvT3BlbiIsIlhNTEh0dHBSZXF1ZXN0Iiwib3BlbiIsInVybCIsInRvTG93ZXJDYXNlIiwiaW5jbHVkZXMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQWUsMkVBQVc7QUFDdEIsUUFBTUEsbUJBQW1CLEdBQUdDLE1BQU0sQ0FBQ0Msd0JBQVAsQ0FBZ0NDLGlCQUFpQixDQUFDQyxTQUFsRCxFQUE2RCxlQUE3RCxFQUE4RUMsR0FBMUc7QUFDQUosUUFBTSxDQUFDSyxjQUFQLENBQXNCSCxpQkFBaUIsQ0FBQ0MsU0FBeEMsRUFBbUQsZUFBbkQsRUFBb0U7QUFDaEVDLE9BQUcsRUFBRSxZQUFZO0FBQ2IsWUFBTUUsYUFBYSxHQUFHQyxPQUFPLENBQUNDLEtBQVIsQ0FBY1QsbUJBQWQsRUFBbUMsSUFBbkMsRUFBeUNVLFNBQXpDLENBQXRCO0FBQ0EsYUFBTyxJQUFJQyxLQUFKLENBQVVKLGFBQVYsRUFBeUI7QUFDNUJMLGdDQUF3QixFQUFFLFVBQVNVLEdBQVQsRUFBY0MsSUFBZCxFQUFvQjtBQUMxQyxjQUFJQSxJQUFJLEtBQUssY0FBYixFQUE2QixPQUFPQyxTQUFQO0FBQzdCLGlCQUFPYixNQUFNLENBQUNDLHdCQUFQLENBQWdDVSxHQUFoQyxFQUFxQ0MsSUFBckMsQ0FBUDtBQUNILFNBSjJCO0FBSzVCUixXQUFHLEVBQUUsVUFBU08sR0FBVCxFQUFjQyxJQUFkLEVBQW9CO0FBQ3JCLGNBQUlBLElBQUksS0FBSyxjQUFiLEVBQTZCLE9BQU8sSUFBUDtBQUM3QixnQkFBTUUsR0FBRyxHQUFHSCxHQUFHLENBQUNDLElBQUQsQ0FBZjtBQUNBLGNBQUksT0FBT0UsR0FBUCxLQUFlLFVBQW5CLEVBQStCLE9BQU9BLEdBQUcsQ0FBQ0MsSUFBSixDQUFTSixHQUFULENBQVA7QUFDL0IsaUJBQU9HLEdBQVA7QUFDSDtBQVYyQixPQUF6QixDQUFQO0FBWUg7QUFmK0QsR0FBcEUsRUFGc0IsQ0FvQnRCOztBQUNBZCxRQUFNLENBQUNLLGNBQVAsQ0FBc0JFLE9BQXRCLEVBQStCLE9BQS9CLEVBQXdDO0FBQUNTLFNBQUssRUFBRVQsT0FBTyxDQUFDQyxLQUFoQjtBQUF1QlMsWUFBUSxFQUFFLEtBQWpDO0FBQXdDQyxnQkFBWSxFQUFFO0FBQXRELEdBQXhDO0FBQ0FsQixRQUFNLENBQUNLLGNBQVAsQ0FBc0JjLFFBQVEsQ0FBQ2hCLFNBQS9CLEVBQTBDLE1BQTFDLEVBQWtEO0FBQUNhLFNBQUssRUFBRUcsUUFBUSxDQUFDaEIsU0FBVCxDQUFtQlksSUFBM0I7QUFBaUNFLFlBQVEsRUFBRSxLQUEzQztBQUFrREMsZ0JBQVksRUFBRTtBQUFoRSxHQUFsRDtBQUVBLFFBQU1FLEtBQUssR0FBR0MsY0FBYyxDQUFDbEIsU0FBZixDQUF5Qm1CLElBQXZDOztBQUNBRCxnQkFBYyxDQUFDbEIsU0FBZixDQUF5Qm1CLElBQXpCLEdBQWdDLFlBQVc7QUFDdkMsVUFBTUMsR0FBRyxHQUFHZCxTQUFTLENBQUMsQ0FBRCxDQUFyQjtBQUNBLFFBQUljLEdBQUcsQ0FBQ0MsV0FBSixHQUFrQkMsUUFBbEIsQ0FBMkIsY0FBM0IsQ0FBSixFQUFnRCxPQUFPLElBQVA7QUFDaEQsV0FBT2xCLE9BQU8sQ0FBQ0MsS0FBUixDQUFjWSxLQUFkLEVBQXFCLElBQXJCLEVBQTJCWCxTQUEzQixDQUFQO0FBQ0gsR0FKRDtBQUtILEMiLCJmaWxlIjoiLi9zcmMvc2VjdXJlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XHJcbiAgICBjb25zdCBjb250ZW50V2luZG93R2V0dGVyID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihIVE1MSUZyYW1lRWxlbWVudC5wcm90b3R5cGUsIFwiY29udGVudFdpbmRvd1wiKS5nZXQ7XHJcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoSFRNTElGcmFtZUVsZW1lbnQucHJvdG90eXBlLCBcImNvbnRlbnRXaW5kb3dcIiwge1xyXG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICBjb25zdCBjb250ZW50V2luZG93ID0gUmVmbGVjdC5hcHBseShjb250ZW50V2luZG93R2V0dGVyLCB0aGlzLCBhcmd1bWVudHMpO1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IFByb3h5KGNvbnRlbnRXaW5kb3csIHtcclxuICAgICAgICAgICAgICAgIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogZnVuY3Rpb24ob2JqLCBwcm9wKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHByb3AgPT09IFwibG9jYWxTdG9yYWdlXCIpIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqLCBwcm9wKTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKG9iaiwgcHJvcCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChwcm9wID09PSBcImxvY2FsU3RvcmFnZVwiKSByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWwgPSBvYmpbcHJvcF07XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWwgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIHZhbC5iaW5kKG9iaik7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gUHJldmVudCBpbnRlcmNlcHRpb24gYnkgcGF0Y2hpbmcgUmVmbGVjdC5hcHBseSBhbmQgRnVuY3Rpb24ucHJvdG90eXBlLmJpbmRcclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShSZWZsZWN0LCBcImFwcGx5XCIsIHt2YWx1ZTogUmVmbGVjdC5hcHBseSwgd3JpdGFibGU6IGZhbHNlLCBjb25maWd1cmFibGU6IGZhbHNlfSk7XHJcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRnVuY3Rpb24ucHJvdG90eXBlLCBcImJpbmRcIiwge3ZhbHVlOiBGdW5jdGlvbi5wcm90b3R5cGUuYmluZCwgd3JpdGFibGU6IGZhbHNlLCBjb25maWd1cmFibGU6IGZhbHNlfSk7XHJcblxyXG4gICAgY29uc3Qgb09wZW4gPSBYTUxIdHRwUmVxdWVzdC5wcm90b3R5cGUub3BlbjtcclxuICAgIFhNTEh0dHBSZXF1ZXN0LnByb3RvdHlwZS5vcGVuID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gYXJndW1lbnRzWzFdO1xyXG4gICAgICAgIGlmICh1cmwudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhcImFwaS93ZWJob29rc1wiKSkgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgcmV0dXJuIFJlZmxlY3QuYXBwbHkob09wZW4sIHRoaXMsIGFyZ3VtZW50cyk7XHJcbiAgICB9O1xyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/secure.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n const contentWindowGetter = Object.getOwnPropertyDescriptor(HTMLIFrameElement.prototype, \"contentWindow\").get;\n Object.defineProperty(HTMLIFrameElement.prototype, \"contentWindow\", {\n get: function () {\n const contentWindow = Reflect.apply(contentWindowGetter, this, arguments);\n return new Proxy(contentWindow, {\n getOwnPropertyDescriptor: function (obj, prop) {\n if (prop === \"localStorage\") return undefined;\n return Object.getOwnPropertyDescriptor(obj, prop);\n },\n get: function (obj, prop) {\n if (prop === \"localStorage\") return null;\n const val = obj[prop];\n if (typeof val === \"function\") return val.bind(obj);\n return val;\n }\n });\n }\n }); // Prevent interception by patching Reflect.apply and Function.prototype.bind\n\n Object.defineProperty(Reflect, \"apply\", {\n value: Reflect.apply,\n writable: false,\n configurable: false\n });\n Object.defineProperty(Function.prototype, \"bind\", {\n value: Function.prototype.bind,\n writable: false,\n configurable: false\n });\n const oOpen = XMLHttpRequest.prototype.open;\n\n XMLHttpRequest.prototype.open = function () {\n const url = arguments[1];\n if (url.toLowerCase().includes(\"api/webhooks\")) return null;\n return Reflect.apply(oOpen, this, arguments);\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvc2VjdXJlLmpzPzZlMmIiXSwibmFtZXMiOlsiY29udGVudFdpbmRvd0dldHRlciIsIk9iamVjdCIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsIkhUTUxJRnJhbWVFbGVtZW50IiwicHJvdG90eXBlIiwiZ2V0IiwiZGVmaW5lUHJvcGVydHkiLCJjb250ZW50V2luZG93IiwiUmVmbGVjdCIsImFwcGx5IiwiYXJndW1lbnRzIiwiUHJveHkiLCJvYmoiLCJwcm9wIiwidW5kZWZpbmVkIiwidmFsIiwiYmluZCIsInZhbHVlIiwid3JpdGFibGUiLCJjb25maWd1cmFibGUiLCJGdW5jdGlvbiIsIm9PcGVuIiwiWE1MSHR0cFJlcXVlc3QiLCJvcGVuIiwidXJsIiwidG9Mb3dlckNhc2UiLCJpbmNsdWRlcyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBZSwyRUFBVztBQUN0QixRQUFNQSxtQkFBbUIsR0FBR0MsTUFBTSxDQUFDQyx3QkFBUCxDQUFnQ0MsaUJBQWlCLENBQUNDLFNBQWxELEVBQTZELGVBQTdELEVBQThFQyxHQUExRztBQUNBSixRQUFNLENBQUNLLGNBQVAsQ0FBc0JILGlCQUFpQixDQUFDQyxTQUF4QyxFQUFtRCxlQUFuRCxFQUFvRTtBQUNoRUMsT0FBRyxFQUFFLFlBQVk7QUFDYixZQUFNRSxhQUFhLEdBQUdDLE9BQU8sQ0FBQ0MsS0FBUixDQUFjVCxtQkFBZCxFQUFtQyxJQUFuQyxFQUF5Q1UsU0FBekMsQ0FBdEI7QUFDQSxhQUFPLElBQUlDLEtBQUosQ0FBVUosYUFBVixFQUF5QjtBQUM1QkwsZ0NBQXdCLEVBQUUsVUFBU1UsR0FBVCxFQUFjQyxJQUFkLEVBQW9CO0FBQzFDLGNBQUlBLElBQUksS0FBSyxjQUFiLEVBQTZCLE9BQU9DLFNBQVA7QUFDN0IsaUJBQU9iLE1BQU0sQ0FBQ0Msd0JBQVAsQ0FBZ0NVLEdBQWhDLEVBQXFDQyxJQUFyQyxDQUFQO0FBQ0gsU0FKMkI7QUFLNUJSLFdBQUcsRUFBRSxVQUFTTyxHQUFULEVBQWNDLElBQWQsRUFBb0I7QUFDckIsY0FBSUEsSUFBSSxLQUFLLGNBQWIsRUFBNkIsT0FBTyxJQUFQO0FBQzdCLGdCQUFNRSxHQUFHLEdBQUdILEdBQUcsQ0FBQ0MsSUFBRCxDQUFmO0FBQ0EsY0FBSSxPQUFPRSxHQUFQLEtBQWUsVUFBbkIsRUFBK0IsT0FBT0EsR0FBRyxDQUFDQyxJQUFKLENBQVNKLEdBQVQsQ0FBUDtBQUMvQixpQkFBT0csR0FBUDtBQUNIO0FBVjJCLE9BQXpCLENBQVA7QUFZSDtBQWYrRCxHQUFwRSxFQUZzQixDQW9CdEI7O0FBQ0FkLFFBQU0sQ0FBQ0ssY0FBUCxDQUFzQkUsT0FBdEIsRUFBK0IsT0FBL0IsRUFBd0M7QUFBQ1MsU0FBSyxFQUFFVCxPQUFPLENBQUNDLEtBQWhCO0FBQXVCUyxZQUFRLEVBQUUsS0FBakM7QUFBd0NDLGdCQUFZLEVBQUU7QUFBdEQsR0FBeEM7QUFDQWxCLFFBQU0sQ0FBQ0ssY0FBUCxDQUFzQmMsUUFBUSxDQUFDaEIsU0FBL0IsRUFBMEMsTUFBMUMsRUFBa0Q7QUFBQ2EsU0FBSyxFQUFFRyxRQUFRLENBQUNoQixTQUFULENBQW1CWSxJQUEzQjtBQUFpQ0UsWUFBUSxFQUFFLEtBQTNDO0FBQWtEQyxnQkFBWSxFQUFFO0FBQWhFLEdBQWxEO0FBRUEsUUFBTUUsS0FBSyxHQUFHQyxjQUFjLENBQUNsQixTQUFmLENBQXlCbUIsSUFBdkM7O0FBQ0FELGdCQUFjLENBQUNsQixTQUFmLENBQXlCbUIsSUFBekIsR0FBZ0MsWUFBVztBQUN2QyxVQUFNQyxHQUFHLEdBQUdkLFNBQVMsQ0FBQyxDQUFELENBQXJCO0FBQ0EsUUFBSWMsR0FBRyxDQUFDQyxXQUFKLEdBQWtCQyxRQUFsQixDQUEyQixjQUEzQixDQUFKLEVBQWdELE9BQU8sSUFBUDtBQUNoRCxXQUFPbEIsT0FBTyxDQUFDQyxLQUFSLENBQWNZLEtBQWQsRUFBcUIsSUFBckIsRUFBMkJYLFNBQTNCLENBQVA7QUFDSCxHQUpEO0FBS0gsQyIsImZpbGUiOiIuL3NyYy9zZWN1cmUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcclxuICAgIGNvbnN0IGNvbnRlbnRXaW5kb3dHZXR0ZXIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEhUTUxJRnJhbWVFbGVtZW50LnByb3RvdHlwZSwgXCJjb250ZW50V2luZG93XCIpLmdldDtcclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShIVE1MSUZyYW1lRWxlbWVudC5wcm90b3R5cGUsIFwiY29udGVudFdpbmRvd1wiLCB7XHJcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNvbnRlbnRXaW5kb3cgPSBSZWZsZWN0LmFwcGx5KGNvbnRlbnRXaW5kb3dHZXR0ZXIsIHRoaXMsIGFyZ3VtZW50cyk7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgUHJveHkoY29udGVudFdpbmRvdywge1xyXG4gICAgICAgICAgICAgICAgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOiBmdW5jdGlvbihvYmosIHByb3ApIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocHJvcCA9PT0gXCJsb2NhbFN0b3JhZ2VcIikgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIHByb3ApO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24ob2JqLCBwcm9wKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHByb3AgPT09IFwibG9jYWxTdG9yYWdlXCIpIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbCA9IG9ialtwcm9wXTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHZhbCA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gdmFsLmJpbmQob2JqKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyBQcmV2ZW50IGludGVyY2VwdGlvbiBieSBwYXRjaGluZyBSZWZsZWN0LmFwcGx5IGFuZCBGdW5jdGlvbi5wcm90b3R5cGUuYmluZFxyXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFJlZmxlY3QsIFwiYXBwbHlcIiwge3ZhbHVlOiBSZWZsZWN0LmFwcGx5LCB3cml0YWJsZTogZmFsc2UsIGNvbmZpZ3VyYWJsZTogZmFsc2V9KTtcclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShGdW5jdGlvbi5wcm90b3R5cGUsIFwiYmluZFwiLCB7dmFsdWU6IEZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kLCB3cml0YWJsZTogZmFsc2UsIGNvbmZpZ3VyYWJsZTogZmFsc2V9KTtcclxuXHJcbiAgICBjb25zdCBvT3BlbiA9IFhNTEh0dHBSZXF1ZXN0LnByb3RvdHlwZS5vcGVuO1xyXG4gICAgWE1MSHR0cFJlcXVlc3QucHJvdG90eXBlLm9wZW4gPSBmdW5jdGlvbigpIHtcclxuICAgICAgICBjb25zdCB1cmwgPSBhcmd1bWVudHNbMV07XHJcbiAgICAgICAgaWYgKHVybC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKFwiYXBpL3dlYmhvb2tzXCIpKSByZXR1cm4gbnVsbDtcclxuICAgICAgICByZXR1cm4gUmVmbGVjdC5hcHBseShvT3BlbiwgdGhpcywgYXJndW1lbnRzKTtcclxuICAgIH07XHJcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/secure.js\n"); /***/ }), @@ -647,7 +646,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return AddonError; });\nclass AddonError extends Error {\n constructor(name, filename, message, error) {\n super(message);\n this.name = name;\n this.file = filename;\n this.error = error;\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3N0cnVjdHMvYWRkb25lcnJvci5qcz9lZjgwIl0sIm5hbWVzIjpbIkFkZG9uRXJyb3IiLCJFcnJvciIsImNvbnN0cnVjdG9yIiwibmFtZSIsImZpbGVuYW1lIiwibWVzc2FnZSIsImVycm9yIiwiZmlsZSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFlLE1BQU1BLFVBQU4sU0FBeUJDLEtBQXpCLENBQStCO0FBQzFDQyxhQUFXLENBQUNDLElBQUQsRUFBT0MsUUFBUCxFQUFpQkMsT0FBakIsRUFBMEJDLEtBQTFCLEVBQWlDO0FBQ3hDLFVBQU1ELE9BQU47QUFDQSxTQUFLRixJQUFMLEdBQVlBLElBQVo7QUFDQSxTQUFLSSxJQUFMLEdBQVlILFFBQVo7QUFDQSxTQUFLRSxLQUFMLEdBQWFBLEtBQWI7QUFDSDs7QUFOeUMiLCJmaWxlIjoiLi9zcmMvc3RydWN0cy9hZGRvbmVycm9yLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgY2xhc3MgQWRkb25FcnJvciBleHRlbmRzIEVycm9yIHtcclxuICAgIGNvbnN0cnVjdG9yKG5hbWUsIGZpbGVuYW1lLCBtZXNzYWdlLCBlcnJvcikge1xyXG4gICAgICAgIHN1cGVyKG1lc3NhZ2UpO1xyXG4gICAgICAgIHRoaXMubmFtZSA9IG5hbWU7XHJcbiAgICAgICAgdGhpcy5maWxlID0gZmlsZW5hbWU7XHJcbiAgICAgICAgdGhpcy5lcnJvciA9IGVycm9yO1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/structs/addonerror.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return AddonError; });\nclass AddonError extends Error {\n constructor(name, filename, message, error) {\n super(message);\n this.name = name;\n this.file = filename;\n this.error = error;\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvc3RydWN0cy9hZGRvbmVycm9yLmpzP2VmODAiXSwibmFtZXMiOlsiQWRkb25FcnJvciIsIkVycm9yIiwiY29uc3RydWN0b3IiLCJuYW1lIiwiZmlsZW5hbWUiLCJtZXNzYWdlIiwiZXJyb3IiLCJmaWxlIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQWUsTUFBTUEsVUFBTixTQUF5QkMsS0FBekIsQ0FBK0I7QUFDMUNDLGFBQVcsQ0FBQ0MsSUFBRCxFQUFPQyxRQUFQLEVBQWlCQyxPQUFqQixFQUEwQkMsS0FBMUIsRUFBaUM7QUFDeEMsVUFBTUQsT0FBTjtBQUNBLFNBQUtGLElBQUwsR0FBWUEsSUFBWjtBQUNBLFNBQUtJLElBQUwsR0FBWUgsUUFBWjtBQUNBLFNBQUtFLEtBQUwsR0FBYUEsS0FBYjtBQUNIOztBQU55QyIsImZpbGUiOiIuL3NyYy9zdHJ1Y3RzL2FkZG9uZXJyb3IuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBjbGFzcyBBZGRvbkVycm9yIGV4dGVuZHMgRXJyb3Ige1xyXG4gICAgY29uc3RydWN0b3IobmFtZSwgZmlsZW5hbWUsIG1lc3NhZ2UsIGVycm9yKSB7XHJcbiAgICAgICAgc3VwZXIobWVzc2FnZSk7XHJcbiAgICAgICAgdGhpcy5uYW1lID0gbmFtZTtcclxuICAgICAgICB0aGlzLmZpbGUgPSBmaWxlbmFtZTtcclxuICAgICAgICB0aGlzLmVycm9yID0gZXJyb3I7XHJcbiAgICB9XHJcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/structs/addonerror.js\n"); /***/ }), @@ -659,7 +658,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return BuiltinModule; });\n/* harmony import */ var _modules_logger__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../modules/logger */ \"./src/modules/logger.js\");\n/* harmony import */ var _modules_emitter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../modules/emitter */ \"./src/modules/emitter.js\");\n/* harmony import */ var _modules_settingsmanager__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../modules/settingsmanager */ \"./src/modules/settingsmanager.js\");\n/* harmony import */ var _modules_patcher__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../modules/patcher */ \"./src/modules/patcher.js\");\n\n\n\n\nclass BuiltinModule {\n get name() {\n return \"Unnamed Builtin\";\n }\n\n get collection() {\n return \"settings\";\n }\n\n get category() {\n return \"general\";\n }\n\n get id() {\n return \"None\";\n }\n\n async initialize() {\n if (_modules_settingsmanager__WEBPACK_IMPORTED_MODULE_2__[\"default\"].get(this.collection, this.category, this.id)) await this.enable();\n _modules_emitter__WEBPACK_IMPORTED_MODULE_1__[\"default\"].on(\"setting-updated\", (collection, category, id, enabled) => {\n if (collection != this.collection || category !== this.category || id !== this.id) return;\n if (enabled) this.enable();else this.disable();\n });\n this.initialized = true;\n }\n\n registerSetting(collection, category, id, onEnable, onDisable) {\n if (arguments.length == 4) {\n collection = this.collection;\n category = arguments[0];\n id = arguments[1];\n onEnable = arguments[2];\n onDisable = arguments[3];\n } else if (arguments.length == 3) {\n collection = this.collection;\n category = this.category;\n id = arguments[0];\n onEnable = arguments[1];\n onDisable = arguments[2];\n }\n\n return _modules_settingsmanager__WEBPACK_IMPORTED_MODULE_2__[\"default\"].on(collection, category, id, value => {\n if (value) onEnable();else onDisable();\n });\n }\n\n get(collection, category, id) {\n if (arguments.length == 2) {\n collection = this.collection;\n category = arguments[0];\n id = arguments[1];\n } else if (arguments.length == 1) {\n collection = this.collection;\n category = this.category;\n id = arguments[0];\n }\n\n return _modules_settingsmanager__WEBPACK_IMPORTED_MODULE_2__[\"default\"].get(collection, category, id);\n }\n\n async enable() {\n this.log(\"Enabled\");\n\n try {\n await this.enabled();\n } catch (e) {\n this.stacktrace(\"Could not be enabled\", e);\n }\n }\n\n async disable() {\n this.log(\"Disabled\");\n\n try {\n await this.disabled();\n } catch (e) {\n this.stacktrace(\"Could not be disabled\", e);\n }\n }\n\n async enabled() {}\n\n async disabled() {}\n\n log(...message) {\n _modules_logger__WEBPACK_IMPORTED_MODULE_0__[\"default\"].log(this.name, ...message);\n }\n\n warn(...message) {\n _modules_logger__WEBPACK_IMPORTED_MODULE_0__[\"default\"].warn(this.name, ...message);\n }\n\n error(...message) {\n _modules_logger__WEBPACK_IMPORTED_MODULE_0__[\"default\"].err(this.name, ...message);\n }\n\n stacktrace(message, error) {\n _modules_logger__WEBPACK_IMPORTED_MODULE_0__[\"default\"].stacktrace(this.name, message, error);\n }\n\n before(object, func, callback) {\n return _modules_patcher__WEBPACK_IMPORTED_MODULE_3__[\"default\"].before(this.name, object, func, callback);\n }\n\n after(object, func, callback) {\n return _modules_patcher__WEBPACK_IMPORTED_MODULE_3__[\"default\"].after(this.name, object, func, callback);\n }\n\n unpatchAll() {\n return _modules_patcher__WEBPACK_IMPORTED_MODULE_3__[\"default\"].unpatchAll(this.name);\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3N0cnVjdHMvYnVpbHRpbi5qcz85NTYyIl0sIm5hbWVzIjpbIkJ1aWx0aW5Nb2R1bGUiLCJuYW1lIiwiY29sbGVjdGlvbiIsImNhdGVnb3J5IiwiaWQiLCJpbml0aWFsaXplIiwiU2V0dGluZ3MiLCJnZXQiLCJlbmFibGUiLCJFdmVudHMiLCJvbiIsImVuYWJsZWQiLCJkaXNhYmxlIiwiaW5pdGlhbGl6ZWQiLCJyZWdpc3RlclNldHRpbmciLCJvbkVuYWJsZSIsIm9uRGlzYWJsZSIsImFyZ3VtZW50cyIsImxlbmd0aCIsInZhbHVlIiwibG9nIiwiZSIsInN0YWNrdHJhY2UiLCJkaXNhYmxlZCIsIm1lc3NhZ2UiLCJMb2dnZXIiLCJ3YXJuIiwiZXJyb3IiLCJlcnIiLCJiZWZvcmUiLCJvYmplY3QiLCJmdW5jIiwiY2FsbGJhY2siLCJQYXRjaGVyIiwiYWZ0ZXIiLCJ1bnBhdGNoQWxsIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVlLE1BQU1BLGFBQU4sQ0FBb0I7QUFFL0IsTUFBSUMsSUFBSixHQUFXO0FBQUMsV0FBTyxpQkFBUDtBQUEwQjs7QUFDdEMsTUFBSUMsVUFBSixHQUFpQjtBQUFDLFdBQU8sVUFBUDtBQUFtQjs7QUFDckMsTUFBSUMsUUFBSixHQUFlO0FBQUMsV0FBTyxTQUFQO0FBQWtCOztBQUNsQyxNQUFJQyxFQUFKLEdBQVM7QUFBQyxXQUFPLE1BQVA7QUFBZTs7QUFFekIsUUFBTUMsVUFBTixHQUFtQjtBQUNmLFFBQUlDLGdFQUFRLENBQUNDLEdBQVQsQ0FBYSxLQUFLTCxVQUFsQixFQUE4QixLQUFLQyxRQUFuQyxFQUE2QyxLQUFLQyxFQUFsRCxDQUFKLEVBQTJELE1BQU0sS0FBS0ksTUFBTCxFQUFOO0FBQzNEQyw0REFBTSxDQUFDQyxFQUFQLENBQVUsaUJBQVYsRUFBNkIsQ0FBQ1IsVUFBRCxFQUFhQyxRQUFiLEVBQXVCQyxF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QUFQLENBQVcsS0FBS25CLElBQWhCLEVBQXNCLEdBQUd1QixPQUF6QjtBQUNIOztBQUVERSxNQUFJLENBQUMsR0FBR0YsT0FBSixFQUFhO0FBQ2JDLDJEQUFNLENBQUNDLElBQVAsQ0FBWSxLQUFLekIsSUFBakIsRUFBdUIsR0FBR3VCLE9BQTFCO0FBQ0g7O0FBRURHLE9BQUssQ0FBQyxHQUFHSCxPQUFKLEVBQWE7QUFDZEMsMkRBQU0sQ0FBQ0csR0FBUCxDQUFXLEtBQUszQixJQUFoQixFQUFzQixHQUFHdUIsT0FBekI7QUFDSDs7QUFFREYsWUFBVSxDQUFDRSxPQUFELEVBQVVHLEtBQVYsRUFBaUI7QUFDdkJGLDJEQUFNLENBQUNILFVBQVAsQ0FBa0IsS0FBS3JCLElBQXZCLEVBQTZCdUIsT0FBN0IsRUFBc0NHLEtBQXRDO0FBQ0g7O0FBRURFLFFBQU0sQ0FBQ0MsTUFBRCxFQUFTQyxJQUFULEVBQWVDLFFBQWYsRUFBeUI7QUFDM0IsV0FBT0Msd0RBQU8sQ0FBQ0osTUFBUixDQUFlLEtBQUs1QixJQUFwQixFQUEwQjZCLE1BQTFCLEVBQWtDQyxJQUFsQyxFQUF3Q0MsUUFBeEMsQ0FBUDtBQUNIOztBQUVERSxPQUFLLENBQUNKLE1BQUQsRUFBU0MsSUFBVCxFQUFlQyxRQUFmLEVBQXlCO0FBQzFCLFdBQU9DLHdEQUFPLENBQUNDLEtBQVIsQ0FBYyxLQUFLakMsSUFBbkIsRUFBeUI2QixNQUF6QixFQUFpQ0MsSUFBakMsRUFBdUNDLFFBQXZDLENBQVA7QUFDSDs7QUFFREcsWUFBVSxHQUFHO0FBQ1QsV0FBT0Ysd0RBQU8sQ0FBQ0UsVUFBUixDQUFtQixLQUFLbEMsSUFBeEIsQ0FBUDtBQUNIOztBQTdGOEIiLCJmaWxlIjoiLi9zcmMvc3RydWN0cy9idWlsdGluLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExvZ2dlciBmcm9tIFwiLi4vbW9kdWxlcy9sb2dnZXJcIjtcclxuaW1wb3J0IEV2ZW50cyBmcm9tIFwiLi4vbW9kdWxlcy9lbWl0dGVyXCI7XHJcbmltcG9ydCBTZXR0aW5ncyBmcm9tIFwiLi4vbW9kdWxlcy9zZXR0aW5nc21hbmFnZXJcIjtcclxuaW1wb3J0IFBhdGNoZXIgZnJvbSBcIi4uL21vZHVsZXMvcGF0Y2hlclwiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQnVpbHRpbk1vZHVsZSB7XHJcblxyXG4gICAgZ2V0IG5hbWUoKSB7cmV0dXJuIFwiVW5uYW1lZCBCdWlsdGluXCI7fVxyXG4gICAgZ2V0IGNvbGxlY3Rpb24oKSB7cmV0dXJuIFwic2V0dGluZ3NcIjt9XHJcbiAgICBnZXQgY2F0ZWdvcnkoKSB7cmV0dXJuIFwiZ2VuZXJhbFwiO31cclxuICAgIGdldCBpZCgpIHtyZXR1cm4gXCJOb25lXCI7fVxyXG5cclxuICAgIGFzeW5jIGluaXRpYWxpemUoKSB7XHJcbiAgICAgICAgaWYgKFNldHRpbmdzLmdldCh0aGlzLmNvbGxlY3Rpb24sIHRoaXMuY2F0ZWdvcnksIHRoaXMuaWQpKSBhd2FpdCB0aGlzLmVuYWJsZSgpO1xyXG4gICAgICAgIEV2ZW50cy5vbihcInNldHRpbmctdXBkYXRlZFwiLCAoY29sbGVjdGlvbiwgY2F0ZWdvcnksIGlkLCBlbmFibGVkKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChjb2xsZWN0aW9uICE9IHRoaXMuY29sbGVjdGlvbiB8fCBjYXRlZ29yeSAhPT0gdGhpcy5jYXRlZ29yeSB8fCBpZCAhPT0gdGhpcy5pZCkgcmV0dXJuO1xyXG4gICAgICAgICAgICBpZiAoZW5hYmxlZCkgdGhpcy5lbmFibGUoKTtcclxuICAgICAgICAgICAgZWxzZSB0aGlzLmRpc2FibGUoKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICByZWdpc3RlclNldHRpbmcoY29sbGVjdGlvbiwgY2F0ZWdvcnksIGlkLCBvbkVuYWJsZSwgb25EaXNhYmxlKSB7XHJcbiAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT0gNCkge1xyXG4gICAgICAgICAgICBjb2xsZWN0aW9uID0gdGhpcy5jb2xsZWN0aW9uO1xyXG4gICAgICAgICAgICBjYXRlZ29yeSA9IGFyZ3VtZW50c1swXTtcclxuICAgICAgICAgICAgaWQgPSBhcmd1bWVudHNbMV07XHJcbiAgICAgICAgICAgIG9uRW5hYmxlID0gYXJndW1lbnRzWzJdO1xyXG4gICAgICAgICAgICBvbkRpc2FibGUgPSBhcmd1bWVudHNbM107XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT0gMykge1xyXG4gICAgICAgICAgICBjb2xsZWN0aW9uID0gdGhpcy5jb2xsZWN0aW9uO1xyXG4gICAgICAgICAgICBjYXRlZ29yeSA9IHRoaXMuY2F0ZWdvcnk7XHJcbiAgICAgICAgICAgIGlkID0gYXJndW1lbnRzWzBdO1xyXG4gICAgICAgICAgICBvbkVuYWJsZSA9IGFyZ3VtZW50c1sxXTtcclxuICAgICAgICAgICAgb25EaXNhYmxlID0gYXJndW1lbnRzWzJdO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gU2V0dGluZ3Mub24oY29sbGVjdGlvbiwgY2F0ZWdvcnksIGlkLCAodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgaWYgKHZhbHVlKSBvbkVuYWJsZSgpO1xyXG4gICAgICAgICAgICBlbHNlIG9uRGlzYWJsZSgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldChjb2xsZWN0aW9uLCBjYXRlZ29yeSwgaWQpIHtcclxuICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PSAyKSB7XHJcbiAgICAgICAgICAgIGNvbGxlY3Rpb24gPSB0aGlzLmNvbGxlY3Rpb247XHJcbiAgICAgICAgICAgIGNhdGVnb3J5ID0gYXJndW1lbnRzWzBdO1xyXG4gICAgICAgICAgICBpZCA9IGFyZ3VtZW50c1sxXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PSAxKSB7XHJcbiAgICAgICAgICAgIGNvbGxlY3Rpb24gPSB0aGlzLmNvbGxlY3Rpb247XHJcbiAgICAgICAgICAgIGNhdGVnb3J5ID0gdGhpcy5jYXRlZ29yeTtcclxuICAgICAgICAgICAgaWQgPSBhcmd1bWVudHNbMF07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBTZXR0aW5ncy5nZXQoY29sbGVjdGlvbiwgY2F0ZWdvcnksIGlkKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBlbmFibGUoKSB7XHJcbiAgICAgICAgdGhpcy5sb2coXCJFbmFibGVkXCIpO1xyXG4gICAgICAgIHRyeSB7YXdhaXQgdGhpcy5lbmFibGVkKCk7fVxyXG4gICAgICAgIGNhdGNoIChlKSB7dGhpcy5zdGFja3RyYWNlKFwiQ291bGQgbm90IGJlIGVuYWJsZWRcIiwgZSk7fVxyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGRpc2FibGUoKSB7XHJcbiAgICAgICAgdGhpcy5sb2coXCJEaXNhYmxlZFwiKTtcclxuICAgICAgICB0cnkge2F3YWl0IHRoaXMuZGlzYWJsZWQoKTt9XHJcbiAgICAgICAgY2F0Y2ggKGUpIHt0aGlzLnN0YWNrdHJhY2UoXCJDb3VsZCBub3QgYmUgZGlzYWJsZWRcIiwgZSk7fVxyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGVuYWJsZWQoKSB7fVxyXG4gICAgYXN5bmMgZGlzYWJsZWQoKSB7fVxyXG5cclxuICAgIGxvZyguLi5tZXNzYWdlKSB7XHJcbiAgICAgICAgTG9nZ2VyLmxvZyh0aGlzLm5hbWUsIC4uLm1lc3NhZ2UpO1xyXG4gICAgfVxyXG5cclxuICAgIHdhcm4oLi4ubWVzc2FnZSkge1xyXG4gICAgICAgIExvZ2dlci53YXJuKHRoaXMubmFtZSwgLi4ubWVzc2FnZSk7XHJcbiAgICB9XHJcblxyXG4gICAgZXJyb3IoLi4ubWVzc2FnZSkge1xyXG4gICAgICAgIExvZ2dlci5lcnIodGhpcy5uYW1lLCAuLi5tZXNzYWdlKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGFja3RyYWNlKG1lc3NhZ2UsIGVycm9yKSB7XHJcbiAgICAgICAgTG9nZ2VyLnN0YWNrdHJhY2UodGhpcy5uYW1lLCBtZXNzYWdlLCBlcnJvcik7XHJcbiAgICB9XHJcblxyXG4gICAgYmVmb3JlKG9iamVjdCwgZnVuYywgY2FsbGJhY2spIHtcclxuICAgICAgICByZXR1cm4gUGF0Y2hlci5iZWZvcmUodGhpcy5uYW1lLCBvYmplY3QsIGZ1bmMsIGNhbGxiYWNrKTtcclxuICAgIH1cclxuXHJcbiAgICBhZnRlcihvYmplY3QsIGZ1bmMsIGNhbGxiYWNrKSB7XHJcbiAgICAgICAgcmV0dXJuIFBhdGNoZXIuYWZ0ZXIodGhpcy5uYW1lLCBvYmplY3QsIGZ1bmMsIGNhbGxiYWNrKTtcclxuICAgIH1cclxuXHJcbiAgICB1bnBhdGNoQWxsKCkge1xyXG4gICAgICAgIHJldHVybiBQYXRjaGVyLnVucGF0Y2hBbGwodGhpcy5uYW1lKTtcclxuICAgIH1cclxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/structs/builtin.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return BuiltinModule; });\n/* harmony import */ var _modules_logger__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../modules/logger */ \"./src/modules/logger.js\");\n/* harmony import */ var _modules_emitter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../modules/emitter */ \"./src/modules/emitter.js\");\n/* harmony import */ var _modules_settingsmanager__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../modules/settingsmanager */ \"./src/modules/settingsmanager.js\");\n/* harmony import */ var _modules_patcher__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../modules/patcher */ \"./src/modules/patcher.js\");\n\n\n\n\nclass BuiltinModule {\n get name() {\n return \"Unnamed Builtin\";\n }\n\n get collection() {\n return \"settings\";\n }\n\n get category() {\n return \"general\";\n }\n\n get id() {\n return \"None\";\n }\n\n async initialize() {\n if (_modules_settingsmanager__WEBPACK_IMPORTED_MODULE_2__[\"default\"].get(this.collection, this.category, this.id)) await this.enable();\n _modules_emitter__WEBPACK_IMPORTED_MODULE_1__[\"default\"].on(\"setting-updated\", (collection, category, id, enabled) => {\n if (collection != this.collection || category !== this.category || id !== this.id) return;\n if (enabled) this.enable();else this.disable();\n });\n this.initialized = true;\n }\n\n registerSetting(collection, category, id, onEnable, onDisable) {\n if (arguments.length == 4) {\n collection = this.collection;\n category = arguments[0];\n id = arguments[1];\n onEnable = arguments[2];\n onDisable = arguments[3];\n } else if (arguments.length == 3) {\n collection = this.collection;\n category = this.category;\n id = arguments[0];\n onEnable = arguments[1];\n onDisable = arguments[2];\n }\n\n return _modules_settingsmanager__WEBPACK_IMPORTED_MODULE_2__[\"default\"].on(collection, category, id, value => {\n if (value) onEnable();else onDisable();\n });\n }\n\n get(collection, category, id) {\n if (arguments.length == 2) {\n collection = this.collection;\n category = arguments[0];\n id = arguments[1];\n } else if (arguments.length == 1) {\n collection = this.collection;\n category = this.category;\n id = arguments[0];\n }\n\n return _modules_settingsmanager__WEBPACK_IMPORTED_MODULE_2__[\"default\"].get(collection, category, id);\n }\n\n async enable() {\n this.log(\"Enabled\");\n\n try {\n await this.enabled();\n } catch (e) {\n this.stacktrace(\"Could not be enabled\", e);\n }\n }\n\n async disable() {\n this.log(\"Disabled\");\n\n try {\n await this.disabled();\n } catch (e) {\n this.stacktrace(\"Could not be disabled\", e);\n }\n }\n\n async enabled() {}\n\n async disabled() {}\n\n log(...message) {\n _modules_logger__WEBPACK_IMPORTED_MODULE_0__[\"default\"].log(this.name, ...message);\n }\n\n warn(...message) {\n _modules_logger__WEBPACK_IMPORTED_MODULE_0__[\"default\"].warn(this.name, ...message);\n }\n\n error(...message) {\n _modules_logger__WEBPACK_IMPORTED_MODULE_0__[\"default\"].err(this.name, ...message);\n }\n\n stacktrace(message, error) {\n _modules_logger__WEBPACK_IMPORTED_MODULE_0__[\"default\"].stacktrace(this.name, message, error);\n }\n\n before(object, func, callback) {\n return _modules_patcher__WEBPACK_IMPORTED_MODULE_3__[\"default\"].before(this.name, object, func, callback);\n }\n\n after(object, func, callback) {\n return _modules_patcher__WEBPACK_IMPORTED_MODULE_3__[\"default\"].after(this.name, object, func, callback);\n }\n\n unpatchAll() {\n return _modules_patcher__WEBPACK_IMPORTED_MODULE_3__[\"default\"].unpatchAll(this.name);\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvc3RydWN0cy9idWlsdGluLmpzPzk1NjIiXSwibmFtZXMiOlsiQnVpbHRpbk1vZHVsZSIsIm5hbWUiLCJjb2xsZWN0aW9uIiwiY2F0ZWdvcnkiLCJpZCIsImluaXRpYWxpemUiLCJTZXR0aW5ncyIsImdldCIsImVuYWJsZSIsIkV2ZW50cyIsIm9uIiwiZW5hYmxlZCIsImRpc2FibGUiLCJpbml0aWFsaXplZCIsInJlZ2lzdGVyU2V0dGluZyIsIm9uRW5hYmxlIiwib25EaXNhYmxlIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwidmFsdWUiLCJsb2ciLCJlIiwic3RhY2t0cmFjZSIsImRpc2FibGVkIiwibWVzc2FnZSIsIkxvZ2dlciIsIndhcm4iLCJlcnJvciIsImVyciIsImJlZm9yZSIsIm9iamVjdCIsImZ1bmMiLCJjYWxsYmFjayIsIlBhdGNoZXIiLCJhZnRlciIsInVucGF0Y2hBbGwiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRWUsTUFBTUEsYUFBTixDQUFvQjtBQUUvQixNQUFJQyxJQUFKLEdBQVc7QUFBQyxXQUFPLGlCQUFQO0FBQTBCOztBQUN0QyxNQUFJQyxVQUFKLEdBQWlCO0FBQUMsV0FBTyxVQUFQO0FBQW1COztBQUNyQyxNQUFJQyxRQUFKLEdBQWU7QUFBQyxXQUFPLFNBQVA7QUFBa0I7O0FBQ2xDLE1BQUlDLEVBQUosR0FBUztBQUFDLFdBQU8sTUFBUDtBQUFlOztBQUV6QixRQUFNQyxVQUFOLEdBQW1CO0FBQ2YsUUFBSUMsZ0VBQVEsQ0FBQ0MsR0FBVCxDQUFhLEtBQUtMLFVBQWxCLEVBQThCLEtBQUtDLFFBQW5DLEVBQTZDLEtBQUtDLEVBQWxELENBQUosRUFBMkQsTUFBTSxLQUFLSSxNQUFMLEVBQU47QUFDM0RDLDREQUFNLENBQUNDLEVBQVAsQ0FBVSxpQkFBVixFQUE2QixDQUFDUixVQUFELEVBQWFDLFFBQWIsRUFBdUJDLEVBQXZC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Q0FBVyxLQUFLbkIsSUFBaEIsRUFBc0IsR0FBR3VCLE9BQXpCO0FBQ0g7O0FBRURFLE1BQUksQ0FBQyxHQUFHRixPQUFKLEVBQWE7QUFDYkMsMkRBQU0sQ0FBQ0MsSUFBUCxDQUFZLEtBQUt6QixJQUFqQixFQUF1QixHQUFHdUIsT0FBMUI7QUFDSDs7QUFFREcsT0FBSyxDQUFDLEdBQUdILE9BQUosRUFBYTtBQUNkQywyREFBTSxDQUFDRyxHQUFQLENBQVcsS0FBSzNCLElBQWhCLEVBQXNCLEdBQUd1QixPQUF6QjtBQUNIOztBQUVERixZQUFVLENBQUNFLE9BQUQsRUFBVUcsS0FBVixFQUFpQjtBQUN2QkYsMkRBQU0sQ0FBQ0gsVUFBUCxDQUFrQixLQUFLckIsSUFBdkIsRUFBNkJ1QixPQUE3QixFQUFzQ0csS0FBdEM7QUFDSDs7QUFFREUsUUFBTSxDQUFDQyxNQUFELEVBQVNDLElBQVQsRUFBZUMsUUFBZixFQUF5QjtBQUMzQixXQUFPQyx3REFBTyxDQUFDSixNQUFSLENBQWUsS0FBSzVCLElBQXBCLEVBQTBCNkIsTUFBMUIsRUFBa0NDLElBQWxDLEVBQXdDQyxRQUF4QyxDQUFQO0FBQ0g7O0FBRURFLE9BQUssQ0FBQ0osTUFBRCxFQUFTQyxJQUFULEVBQWVDLFFBQWYsRUFBeUI7QUFDMUIsV0FBT0Msd0RBQU8sQ0FBQ0MsS0FBUixDQUFjLEtBQUtqQyxJQUFuQixFQUF5QjZCLE1BQXpCLEVBQWlDQyxJQUFqQyxFQUF1Q0MsUUFBdkMsQ0FBUDtBQUNIOztBQUVERyxZQUFVLEdBQUc7QUFDVCxXQUFPRix3REFBTyxDQUFDRSxVQUFSLENBQW1CLEtBQUtsQyxJQUF4QixDQUFQO0FBQ0g7O0FBN0Y4QiIsImZpbGUiOiIuL3NyYy9zdHJ1Y3RzL2J1aWx0aW4uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nZ2VyIGZyb20gXCIuLi9tb2R1bGVzL2xvZ2dlclwiO1xyXG5pbXBvcnQgRXZlbnRzIGZyb20gXCIuLi9tb2R1bGVzL2VtaXR0ZXJcIjtcclxuaW1wb3J0IFNldHRpbmdzIGZyb20gXCIuLi9tb2R1bGVzL3NldHRpbmdzbWFuYWdlclwiO1xyXG5pbXBvcnQgUGF0Y2hlciBmcm9tIFwiLi4vbW9kdWxlcy9wYXRjaGVyXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCdWlsdGluTW9kdWxlIHtcclxuXHJcbiAgICBnZXQgbmFtZSgpIHtyZXR1cm4gXCJVbm5hbWVkIEJ1aWx0aW5cIjt9XHJcbiAgICBnZXQgY29sbGVjdGlvbigpIHtyZXR1cm4gXCJzZXR0aW5nc1wiO31cclxuICAgIGdldCBjYXRlZ29yeSgpIHtyZXR1cm4gXCJnZW5lcmFsXCI7fVxyXG4gICAgZ2V0IGlkKCkge3JldHVybiBcIk5vbmVcIjt9XHJcblxyXG4gICAgYXN5bmMgaW5pdGlhbGl6ZSgpIHtcclxuICAgICAgICBpZiAoU2V0dGluZ3MuZ2V0KHRoaXMuY29sbGVjdGlvbiwgdGhpcy5jYXRlZ29yeSwgdGhpcy5pZCkpIGF3YWl0IHRoaXMuZW5hYmxlKCk7XHJcbiAgICAgICAgRXZlbnRzLm9uKFwic2V0dGluZy11cGRhdGVkXCIsIChjb2xsZWN0aW9uLCBjYXRlZ29yeSwgaWQsIGVuYWJsZWQpID0+IHtcclxuICAgICAgICAgICAgaWYgKGNvbGxlY3Rpb24gIT0gdGhpcy5jb2xsZWN0aW9uIHx8IGNhdGVnb3J5ICE9PSB0aGlzLmNhdGVnb3J5IHx8IGlkICE9PSB0aGlzLmlkKSByZXR1cm47XHJcbiAgICAgICAgICAgIGlmIChlbmFibGVkKSB0aGlzLmVuYWJsZSgpO1xyXG4gICAgICAgICAgICBlbHNlIHRoaXMuZGlzYWJsZSgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHJlZ2lzdGVyU2V0dGluZyhjb2xsZWN0aW9uLCBjYXRlZ29yeSwgaWQsIG9uRW5hYmxlLCBvbkRpc2FibGUpIHtcclxuICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PSA0KSB7XHJcbiAgICAgICAgICAgIGNvbGxlY3Rpb24gPSB0aGlzLmNvbGxlY3Rpb247XHJcbiAgICAgICAgICAgIGNhdGVnb3J5ID0gYXJndW1lbnRzWzBdO1xyXG4gICAgICAgICAgICBpZCA9IGFyZ3VtZW50c1sxXTtcclxuICAgICAgICAgICAgb25FbmFibGUgPSBhcmd1bWVudHNbMl07XHJcbiAgICAgICAgICAgIG9uRGlzYWJsZSA9IGFyZ3VtZW50c1szXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PSAzKSB7XHJcbiAgICAgICAgICAgIGNvbGxlY3Rpb24gPSB0aGlzLmNvbGxlY3Rpb247XHJcbiAgICAgICAgICAgIGNhdGVnb3J5ID0gdGhpcy5jYXRlZ29yeTtcclxuICAgICAgICAgICAgaWQgPSBhcmd1bWVudHNbMF07XHJcbiAgICAgICAgICAgIG9uRW5hYmxlID0gYXJndW1lbnRzWzFdO1xyXG4gICAgICAgICAgICBvbkRpc2FibGUgPSBhcmd1bWVudHNbMl07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBTZXR0aW5ncy5vbihjb2xsZWN0aW9uLCBjYXRlZ29yeSwgaWQsICh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAodmFsdWUpIG9uRW5hYmxlKCk7XHJcbiAgICAgICAgICAgIGVsc2Ugb25EaXNhYmxlKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0KGNvbGxlY3Rpb24sIGNhdGVnb3J5LCBpZCkge1xyXG4gICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09IDIpIHtcclxuICAgICAgICAgICAgY29sbGVjdGlvbiA9IHRoaXMuY29sbGVjdGlvbjtcclxuICAgICAgICAgICAgY2F0ZWdvcnkgPSBhcmd1bWVudHNbMF07XHJcbiAgICAgICAgICAgIGlkID0gYXJndW1lbnRzWzFdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChhcmd1bWVudHMubGVuZ3RoID09IDEpIHtcclxuICAgICAgICAgICAgY29sbGVjdGlvbiA9IHRoaXMuY29sbGVjdGlvbjtcclxuICAgICAgICAgICAgY2F0ZWdvcnkgPSB0aGlzLmNhdGVnb3J5O1xyXG4gICAgICAgICAgICBpZCA9IGFyZ3VtZW50c1swXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIFNldHRpbmdzLmdldChjb2xsZWN0aW9uLCBjYXRlZ29yeSwgaWQpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGVuYWJsZSgpIHtcclxuICAgICAgICB0aGlzLmxvZyhcIkVuYWJsZWRcIik7XHJcbiAgICAgICAgdHJ5IHthd2FpdCB0aGlzLmVuYWJsZWQoKTt9XHJcbiAgICAgICAgY2F0Y2ggKGUpIHt0aGlzLnN0YWNrdHJhY2UoXCJDb3VsZCBub3QgYmUgZW5hYmxlZFwiLCBlKTt9XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZGlzYWJsZSgpIHtcclxuICAgICAgICB0aGlzLmxvZyhcIkRpc2FibGVkXCIpO1xyXG4gICAgICAgIHRyeSB7YXdhaXQgdGhpcy5kaXNhYmxlZCgpO31cclxuICAgICAgICBjYXRjaCAoZSkge3RoaXMuc3RhY2t0cmFjZShcIkNvdWxkIG5vdCBiZSBkaXNhYmxlZFwiLCBlKTt9XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZW5hYmxlZCgpIHt9XHJcbiAgICBhc3luYyBkaXNhYmxlZCgpIHt9XHJcblxyXG4gICAgbG9nKC4uLm1lc3NhZ2UpIHtcclxuICAgICAgICBMb2dnZXIubG9nKHRoaXMubmFtZSwgLi4ubWVzc2FnZSk7XHJcbiAgICB9XHJcblxyXG4gICAgd2FybiguLi5tZXNzYWdlKSB7XHJcbiAgICAgICAgTG9nZ2VyLndhcm4odGhpcy5uYW1lLCAuLi5tZXNzYWdlKTtcclxuICAgIH1cclxuXHJcbiAgICBlcnJvciguLi5tZXNzYWdlKSB7XHJcbiAgICAgICAgTG9nZ2VyLmVycih0aGlzLm5hbWUsIC4uLm1lc3NhZ2UpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YWNrdHJhY2UobWVzc2FnZSwgZXJyb3IpIHtcclxuICAgICAgICBMb2dnZXIuc3RhY2t0cmFjZSh0aGlzLm5hbWUsIG1lc3NhZ2UsIGVycm9yKTtcclxuICAgIH1cclxuXHJcbiAgICBiZWZvcmUob2JqZWN0LCBmdW5jLCBjYWxsYmFjaykge1xyXG4gICAgICAgIHJldHVybiBQYXRjaGVyLmJlZm9yZSh0aGlzLm5hbWUsIG9iamVjdCwgZnVuYywgY2FsbGJhY2spO1xyXG4gICAgfVxyXG5cclxuICAgIGFmdGVyKG9iamVjdCwgZnVuYywgY2FsbGJhY2spIHtcclxuICAgICAgICByZXR1cm4gUGF0Y2hlci5hZnRlcih0aGlzLm5hbWUsIG9iamVjdCwgZnVuYywgY2FsbGJhY2spO1xyXG4gICAgfVxyXG5cclxuICAgIHVucGF0Y2hBbGwoKSB7XHJcbiAgICAgICAgcmV0dXJuIFBhdGNoZXIudW5wYXRjaEFsbCh0aGlzLm5hbWUpO1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/structs/builtin.js\n"); /***/ }), @@ -671,7 +670,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return MetaError; });\nclass MetaError extends Error {\n constructor(message) {\n super(message);\n this.name = \"MetaError\";\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3N0cnVjdHMvbWV0YWVycm9yLmpzP2UxOTYiXSwibmFtZXMiOlsiTWV0YUVycm9yIiwiRXJyb3IiLCJjb25zdHJ1Y3RvciIsIm1lc3NhZ2UiLCJuYW1lIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQWUsTUFBTUEsU0FBTixTQUF3QkMsS0FBeEIsQ0FBOEI7QUFDekNDLGFBQVcsQ0FBQ0MsT0FBRCxFQUFVO0FBQ2pCLFVBQU1BLE9BQU47QUFDQSxTQUFLQyxJQUFMLEdBQVksV0FBWjtBQUNIOztBQUp3QyIsImZpbGUiOiIuL3NyYy9zdHJ1Y3RzL21ldGFlcnJvci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGNsYXNzIE1ldGFFcnJvciBleHRlbmRzIEVycm9yIHtcclxuICAgIGNvbnN0cnVjdG9yKG1lc3NhZ2UpIHtcclxuICAgICAgICBzdXBlcihtZXNzYWdlKTtcclxuICAgICAgICB0aGlzLm5hbWUgPSBcIk1ldGFFcnJvclwiO1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/structs/metaerror.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return MetaError; });\nclass MetaError extends Error {\n constructor(message) {\n super(message);\n this.name = \"MetaError\";\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvc3RydWN0cy9tZXRhZXJyb3IuanM/ZTE5NiJdLCJuYW1lcyI6WyJNZXRhRXJyb3IiLCJFcnJvciIsImNvbnN0cnVjdG9yIiwibWVzc2FnZSIsIm5hbWUiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBZSxNQUFNQSxTQUFOLFNBQXdCQyxLQUF4QixDQUE4QjtBQUN6Q0MsYUFBVyxDQUFDQyxPQUFELEVBQVU7QUFDakIsVUFBTUEsT0FBTjtBQUNBLFNBQUtDLElBQUwsR0FBWSxXQUFaO0FBQ0g7O0FBSndDIiwiZmlsZSI6Ii4vc3JjL3N0cnVjdHMvbWV0YWVycm9yLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgY2xhc3MgTWV0YUVycm9yIGV4dGVuZHMgRXJyb3Ige1xyXG4gICAgY29uc3RydWN0b3IobWVzc2FnZSkge1xyXG4gICAgICAgIHN1cGVyKG1lc3NhZ2UpO1xyXG4gICAgICAgIHRoaXMubmFtZSA9IFwiTWV0YUVycm9yXCI7XHJcbiAgICB9XHJcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/structs/metaerror.js\n"); /***/ }), @@ -683,7 +682,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return PublicServersConnection; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nconst SortedGuildStore = modules__WEBPACK_IMPORTED_MODULE_0__[\"WebpackModules\"].getByProps(\"getSortedGuilds\");\nconst AvatarDefaults = modules__WEBPACK_IMPORTED_MODULE_0__[\"WebpackModules\"].getByProps(\"getUserAvatarURL\", \"DEFAULT_AVATARS\");\nconst InviteActions = modules__WEBPACK_IMPORTED_MODULE_0__[\"WebpackModules\"].getByProps(\"acceptInvite\");\n\nconst BrowserWindow = __webpack_require__(/*! electron */ \"electron\").remote.BrowserWindow;\n\nclass PublicServersConnection {\n static get endPoint() {\n return \"https://search.discordservers.com\";\n }\n\n static get joinEndPoint() {\n return \"https://j.discordservers.com\";\n }\n\n static get connectEndPoint() {\n return \"https://auth.discordservers.com/info\";\n }\n\n static getDefaultAvatar() {\n return AvatarDefaults.DEFAULT_AVATARS[Math.floor(Math.random() * 5)];\n }\n\n static hasJoined(id) {\n return SortedGuildStore.getFlattenedGuildIds().includes(id);\n }\n\n static search({\n term = \"\",\n category = \"\",\n from = 0\n } = {}) {\n const request = __webpack_require__(/*! request */ \"request\");\n\n return new Promise(resolve => {\n const queries = [];\n if (category) queries.push(`category=${category.replace(/ /g, \"%20\")}`);\n if (term) queries.push(`term=${term.replace(/ /g, \"%20\")}`);\n if (from) queries.push(`from=${from}`);\n const query = `?${queries.join(\"&\")}`;\n request.get({\n url: `${this.endPoint}${query}${query ? \"&schema=new\" : \"?schema=new\"}`,\n json: true\n }, (err, resp, data) => {\n if (err) return resolve(null);\n const next = data.size + data.from;\n resolve({\n servers: data.results,\n size: data.size,\n from: data.from,\n total: data.total,\n next: next >= data.total ? null : next\n });\n });\n });\n }\n\n static async join(id, native = false) {\n if (native) return InviteActions.acceptInvite(id);\n\n try {\n await fetch(`${this.joinEndPoint}/${id}`, {\n method: \"GET\",\n credentials: \"include\",\n mode: \"cors\",\n headers: {\n \"Accept\": \"application/json\",\n \"Content-Type\": \"application/json\"\n }\n });\n return true;\n } catch (e) {\n return false;\n }\n }\n\n static async checkConnection() {\n try {\n const response = await fetch(`https://auth.discordservers.com/info`, {\n method: \"GET\",\n credentials: \"include\",\n mode: \"cors\",\n headers: {\n \"Accept\": \"application/json\",\n \"Content-Type\": \"application/json\"\n }\n });\n const data = await response.json();\n this._accessToken = data.access_token;\n return data;\n } catch (error) {\n return false;\n }\n }\n\n static connect() {\n return new Promise(resolve => {\n const joinWindow = new BrowserWindow(this.windowOptions);\n const url = `https://auth.discordservers.com/connect?scopes=guilds.join&previousUrl=${this.connectEndPoint}`;\n joinWindow.webContents.on(\"did-navigate\", (event, navUrl) => {\n if (navUrl != this.connectEndPoint) return;\n joinWindow.close();\n resolve();\n });\n joinWindow.loadURL(url);\n });\n }\n\n static get windowOptions() {\n return {\n width: 380,\n height: 450,\n backgroundColor: \"#282b30\",\n show: true,\n resizable: true,\n maximizable: false,\n minimizable: false,\n alwaysOnTop: true,\n frame: false,\n center: true,\n webPreferences: {\n nodeIntegration: false\n }\n };\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3N0cnVjdHMvcHNjb25uZWN0aW9uLmpzP2VmZjYiXSwibmFtZXMiOlsiU29ydGVkR3VpbGRTdG9yZSIsIldlYnBhY2tNb2R1bGVzIiwiZ2V0QnlQcm9wcyIsIkF2YXRhckRlZmF1bHRzIiwiSW52aXRlQWN0aW9ucyIsIkJyb3dzZXJXaW5kb3ciLCJyZXF1aXJlIiwicmVtb3RlIiwiUHVibGljU2VydmVyc0Nvbm5lY3Rpb24iLCJlbmRQb2ludCIsImpvaW5FbmRQb2ludCIsImNvbm5lY3RFbmRQb2ludCIsImdldERlZmF1bHRBdmF0YXIiLCJERUZBVUxUX0FWQVRBUlMiLCJNYXRoIiwiZmxvb3IiLCJyYW5kb20iLCJoYXNKb2luZWQiLCJpZCIsImdldEZsYXR0ZW5lZEd1aWxkSWRzIiwiaW5jbHVkZXMiLCJzZWFyY2giLCJ0ZXJtIiwiY2F0ZWdvcnkiLCJmcm9tIiwicmVxdWVzdCIsIlByb21pc2UiLCJyZXNvbHZlIiwicXVlcmllcyIsInB1c2giLCJyZXBsYWNlIiwicXVlcnkiLCJqb2luIiwiZ2V0IiwidXJsIiwianNvbiIsImVyciIsInJlc3AiLCJkYXRhIiwibmV4dCIsInNpemUiLCJzZXJ2ZXJzIiwicmVzdWx0cyIsInRvdGFsIiwibmF0aXZlIiwiYWNjZXB0SW52aXRlIiwiZmV0Y2giLCJtZXRob2QiLCJjcmVkZW50aWFscyIsIm1vZGUiLCJoZWFkZXJzIiwiZSIsImNoZWNrQ29ubmVjdGlvbiIsInJlc3BvbnNlIiwiX2FjY2Vzc1Rva2VuIiwiYWNjZXNzX3Rva2VuIiwiZXJyb3IiLCJjb25uZWN0Iiwiam9pbldpbmRvdyIsIndpbmRvd09wdGlvbnMiLCJ3ZWJDb250ZW50cyIsIm9uIiwiZXZlbnQiLCJuYXZVcmwiLCJjbG9zZSIsImxvYWRVUkwiLCJ3aWR0aCIsImhlaWdodCIsImJhY2tncm91bmRDb2xvciIsInNob3ciLCJyZXNpemFibGUiLCJtYXhpbWl6YWJsZSIsIm1pbmltaXphYmxlIiwiYWx3YXlzT25U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QzFCLFlBQU0rQixVQUFVLEdBQUcsSUFBSXJELGFBQUosQ0FBa0IsS0FBS3NELGFBQXZCLENBQW5CO0FBQ0EsWUFBTXpCLEdBQUcsR0FBSSwwRUFBeUUsS0FBS3ZCLGVBQWdCLEVBQTNHO0FBQ0ErQyxnQkFBVSxDQUFDRSxXQUFYLENBQXVCQyxFQUF2QixDQUEwQixjQUExQixFQUEwQyxDQUFDQyxLQUFELEVBQVFDLE1BQVIsS0FBbUI7QUFDekQsWUFBSUEsTUFBTSxJQUFJLEtBQUtwRCxlQUFuQixFQUFvQztBQUNwQytDLGtCQUFVLENBQUNNLEtBQVg7QUFDQXJDLGVBQU87QUFDVixPQUpEO0FBS0ErQixnQkFBVSxDQUFDTyxPQUFYLENBQW1CL0IsR0FBbkI7QUFDSCxLQVRNLENBQVA7QUFVSDs7QUFFRCxhQUFXeUIsYUFBWCxHQUEyQjtBQUN2QixXQUFPO0FBQ0hPLFdBQUssRUFBRSxHQURKO0FBRUhDLFlBQU0sRUFBRSxHQUZMO0FBR0hDLHFCQUFlLEVBQUUsU0FIZDtBQUlIQyxVQUFJLEVBQUUsSUFKSDtBQUtIQyxlQUFTLEVBQUUsSUFMUjtBQU1IQyxpQkFBVyxFQUFFLEtBTlY7QUFPSEMsaUJBQVcsRUFBRSxLQVBWO0FBUUhDLGlCQUFXLEVBQUUsSUFSVjtBQVNIQyxXQUFLLEVBQUUsS0FUSjtBQVVIQyxZQUFNLEVBQUUsSUFWTDtBQVdIQyxvQkFBYyxFQUFFO0FBQ1pDLHVCQUFlLEVBQUU7QUFETDtBQVhiLEtBQVA7QUFlSDs7QUF4R3dDIiwiZmlsZSI6Ii4vc3JjL3N0cnVjdHMvcHNjb25uZWN0aW9uLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtXZWJwYWNrTW9kdWxlc30gZnJvbSBcIm1vZHVsZXNcIjtcclxuXHJcbmNvbnN0IFNvcnRlZEd1aWxkU3RvcmUgPSBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiZ2V0U29ydGVkR3VpbGRzXCIpO1xyXG5jb25zdCBBdmF0YXJEZWZhdWx0cyA9IFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJnZXRVc2VyQXZhdGFyVVJMXCIsIFwiREVGQVVMVF9BVkFUQVJTXCIpO1xyXG5jb25zdCBJbnZpdGVBY3Rpb25zID0gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcImFjY2VwdEludml0ZVwiKTtcclxuXHJcbmNvbnN0IEJyb3dzZXJXaW5kb3cgPSByZXF1aXJlKFwiZWxlY3Ryb25cIikucmVtb3RlLkJyb3dzZXJXaW5kb3c7XHJcblxyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUHVibGljU2VydmVyc0Nvbm5lY3Rpb24ge1xyXG5cclxuICAgIHN0YXRpYyBnZXQgZW5kUG9pbnQoKSB7cmV0dXJuIFwiaHR0cHM6Ly9zZWFyY2guZGlzY29yZHNlcnZlcnMuY29tXCI7fVxyXG4gICAgc3RhdGljIGdldCBqb2luRW5kUG9pbnQoKSB7cmV0dXJuIFwiaHR0cHM6Ly9qLmRpc2NvcmRzZXJ2ZXJzLmNvbVwiO31cclxuICAgIHN0YXRpYyBnZXQgY29ubmVjdEVuZFBvaW50KCkge3JldHVybiBcImh0dHBzOi8vYXV0aC5kaXNjb3Jkc2VydmVycy5jb20vaW5mb1wiO31cclxuXHJcbiAgICBzdGF0aWMgZ2V0RGVmYXVsdEF2YXRhcigpIHtcclxuICAgICAgICByZXR1cm4gQXZhdGFyRGVmYXVsdHMuREVGQVVMVF9BVkFUQVJTW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDUpXTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgaGFzSm9pbmVkKGlkKSB7XHJcbiAgICAgICAgcmV0dXJuIFNvcnRlZEd1aWxkU3RvcmUuZ2V0RmxhdHRlbmVkR3VpbGRJZHMoKS5pbmNsdWRlcyhpZCk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIHNlYXJjaCh7dGVybSA9IFwiXCIsIGNhdGVnb3J5ID0gXCJcIiwgZnJvbSA9IDB9ID0ge30pIHtcclxuICAgICAgICBjb25zdCByZXF1ZXN0ID0gcmVxdWlyZShcInJlcXVlc3RcIik7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBxdWVyaWVzID0gW107XHJcbiAgICAgICAgICAgIGlmIChjYXRlZ29yeSkgcXVlcmllcy5wdXNoKGBjYXRlZ29yeT0ke2NhdGVnb3J5LnJlcGxhY2UoLyAvZywgXCIlMjBcIil9YCk7XHJcbiAgICAgICAgICAgIGlmICh0ZXJtKSBxdWVyaWVzLnB1c2goYHRlcm09JHt0ZXJtLnJlcGxhY2UoLyAvZywgXCIlMjBcIil9YCk7XHJcbiAgICAgICAgICAgIGlmIChmcm9tKSBxdWVyaWVzLnB1c2goYGZyb209JHtmcm9tfWApO1xyXG4gICAgICAgICAgICBjb25zdCBxdWVyeSA9IGA/JHtxdWVyaWVzLmpvaW4oXCImXCIpfWA7XHJcbiAgICAgICAgICAgIHJlcXVlc3QuZ2V0KHt1cmw6IGAke3RoaXMuZW5kUG9pbnR9JHtxdWVyeX0ke3F1ZXJ5ID8gXCImc2NoZW1hPW5ld1wiIDogXCI/c2NoZW1hPW5ld1wifWAsIGpzb246IHRydWV9LCAoZXJyLCByZXNwLCBkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZXJyKSByZXR1cm4gcmVzb2x2ZShudWxsKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG5leHQgPSBkYXRhLnNpemUgKyBkYXRhLmZyb207XHJcbiAgICAgICAgICAgICAgICByZXNvbHZlKHtcclxuICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJzOiBkYXRhLnJlc3VsdHMsXHJcbiAgICAgICAgICAgICAgICAgICAgc2l6ZTogZGF0YS5zaXplLFxyXG4gICAgICAgICAgICAgICAgICAgIGZyb206IGRhdGEuZnJvbSxcclxuICAgICAgICAgICAgICAgICAgICB0b3RhbDogZGF0YS50b3RhbCxcclxuICAgICAgICAgICAgICAgICAgICBuZXh0OiBuZXh0ID49IGRhdGEudG90YWwgPyBudWxsIDogbmV4dFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBhc3luYyBqb2luKGlkLCBuYXRpdmUgPSBmYWxzZSkge1xyXG4gICAgICAgIGlmIChuYXRpdmUpIHJldHVybiBJbnZpdGVBY3Rpb25zLmFjY2VwdEludml0ZShpZCk7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgYXdhaXQgZmV0Y2goYCR7dGhpcy5qb2luRW5kUG9pbnR9LyR7aWR9YCx7XHJcbiAgICAgICAgICAgICAgICBtZXRob2Q6IFwiR0VUXCIsXHJcbiAgICAgICAgICAgICAgICBjcmVkZW50aWFsczogXCJpbmNsdWRlXCIsXHJcbiAgICAgICAgICAgICAgICBtb2RlOiBcImNvcnNcIixcclxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcclxuICAgICAgICAgICAgICAgICAgICBcIkFjY2VwdFwiOiBcImFwcGxpY2F0aW9uL2pzb25cIixcclxuICAgICAgICAgICAgICAgICAgICBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGFzeW5jIGNoZWNrQ29ubmVjdGlvbigpIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKGBodHRwczovL2F1dGguZGlzY29yZHNlcnZlcnMuY29tL2luZm9gLHtcclxuICAgICAgICAgICAgICAgIG1ldGhvZDogXCJHRVRcIixcclxuICAgICAgICAgICAgICAgIGNyZWRlbnRpYWxzOiBcImluY2x1ZGVcIixcclxuICAgICAgICAgICAgICAgIG1vZGU6IFwiY29yc1wiLFxyXG4gICAgICAgICAgICAgICAgaGVhZGVyczoge1xyXG4gICAgICAgICAgICAgICAgICAgIFwiQWNjZXB0XCI6IFwiYXBwbGljYXRpb24vanNvblwiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpO1xyXG4gICAgICAgICAgICB0aGlzLl9hY2Nlc3NUb2tlbiA9IGRhdGEuYWNjZXNzX3Rva2VuO1xyXG4gICAgICAgICAgICByZXR1cm4gZGF0YTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGNvbm5lY3QoKSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBqb2luV2luZG93ID0gbmV3IEJyb3dzZXJXaW5kb3codGhpcy53aW5kb3dPcHRpb25zKTtcclxuICAgICAgICAgICAgY29uc3QgdXJsID0gYGh0dHBzOi8vYXV0aC5kaXNjb3Jkc2VydmVycy5jb20vY29ubmVjdD9zY29wZXM9Z3VpbGRzLmpvaW4mcHJldmlvdXNVcmw9JHt0aGlzLmNvbm5lY3RFbmRQb2ludH1gO1xyXG4gICAgICAgICAgICBqb2luV2luZG93LndlYkNvbnRlbnRzLm9uKFwiZGlkLW5hdmlnYXRlXCIsIChldmVudCwgbmF2VXJsKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAobmF2VXJsICE9IHRoaXMuY29ubmVjdEVuZFBvaW50KSByZXR1cm47XHJcbiAgICAgICAgICAgICAgICBqb2luV2luZG93LmNsb3NlKCk7XHJcbiAgICAgICAgICAgICAgICByZXNvbHZlKCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBqb2luV2luZG93LmxvYWRVUkwodXJsKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgZ2V0IHdpbmRvd09wdGlvbnMoKSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgd2lkdGg6IDM4MCxcclxuICAgICAgICAgICAgaGVpZ2h0OiA0NTAsXHJcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjMjgyYjMwXCIsXHJcbiAgICAgICAgICAgIHNob3c6IHRydWUsXHJcbiAgICAgICAgICAgIHJlc2l6YWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgbWF4aW1pemFibGU6IGZhbHNlLFxyXG4gICAgICAgICAgICBtaW5pbWl6YWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgIGFsd2F5c09uVG9wOiB0cnVlLFxyXG4gICAgICAgICAgICBmcmFtZTogZmFsc2UsXHJcbiAgICAgICAgICAgIGNlbnRlcjogdHJ1ZSxcclxuICAgICAgICAgICAgd2ViUHJlZmVyZW5jZXM6IHtcclxuICAgICAgICAgICAgICAgIG5vZGVJbnRlZ3JhdGlvbjogZmFsc2VcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG59XHJcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/structs/psconnection.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return PublicServersConnection; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nconst SortedGuildStore = modules__WEBPACK_IMPORTED_MODULE_0__[\"WebpackModules\"].getByProps(\"getSortedGuilds\");\nconst AvatarDefaults = modules__WEBPACK_IMPORTED_MODULE_0__[\"WebpackModules\"].getByProps(\"getUserAvatarURL\", \"DEFAULT_AVATARS\");\nconst InviteActions = modules__WEBPACK_IMPORTED_MODULE_0__[\"WebpackModules\"].getByProps(\"acceptInvite\");\n\nconst BrowserWindow = __webpack_require__(/*! electron */ \"electron\").remote.BrowserWindow;\n\nclass PublicServersConnection {\n static get endPoint() {\n return \"https://search.discordservers.com\";\n }\n\n static get joinEndPoint() {\n return \"https://j.discordservers.com\";\n }\n\n static get connectEndPoint() {\n return \"https://auth.discordservers.com/info\";\n }\n\n static getDefaultAvatar() {\n return AvatarDefaults.DEFAULT_AVATARS[Math.floor(Math.random() * 5)];\n }\n\n static hasJoined(id) {\n return SortedGuildStore.getFlattenedGuildIds().includes(id);\n }\n\n static search({\n term = \"\",\n category = \"\",\n from = 0\n } = {}) {\n const request = __webpack_require__(/*! request */ \"request\");\n\n return new Promise(resolve => {\n const queries = [];\n if (category) queries.push(`category=${category.replace(/ /g, \"%20\")}`);\n if (term) queries.push(`term=${term.replace(/ /g, \"%20\")}`);\n if (from) queries.push(`from=${from}`);\n const query = `?${queries.join(\"&\")}`;\n request.get({\n url: `${this.endPoint}${query}${query ? \"&schema=new\" : \"?schema=new\"}`,\n json: true\n }, (err, resp, data) => {\n if (err) return resolve(null);\n const next = data.size + data.from;\n resolve({\n servers: data.results,\n size: data.size,\n from: data.from,\n total: data.total,\n next: next >= data.total ? null : next\n });\n });\n });\n }\n\n static async join(id, native = false) {\n if (native) return InviteActions.acceptInvite(id);\n\n try {\n await fetch(`${this.joinEndPoint}/${id}`, {\n method: \"GET\",\n credentials: \"include\",\n mode: \"cors\",\n headers: {\n \"Accept\": \"application/json\",\n \"Content-Type\": \"application/json\"\n }\n });\n return true;\n } catch (e) {\n return false;\n }\n }\n\n static async checkConnection() {\n try {\n const response = await fetch(`https://auth.discordservers.com/info`, {\n method: \"GET\",\n credentials: \"include\",\n mode: \"cors\",\n headers: {\n \"Accept\": \"application/json\",\n \"Content-Type\": \"application/json\"\n }\n });\n const data = await response.json();\n this._accessToken = data.access_token;\n return data;\n } catch (error) {\n return false;\n }\n }\n\n static connect() {\n return new Promise(resolve => {\n const joinWindow = new BrowserWindow(this.windowOptions);\n const url = `https://auth.discordservers.com/connect?scopes=guilds.join&previousUrl=${this.connectEndPoint}`;\n joinWindow.webContents.on(\"did-navigate\", (event, navUrl) => {\n if (navUrl != this.connectEndPoint) return;\n joinWindow.close();\n resolve();\n });\n joinWindow.loadURL(url);\n });\n }\n\n static get windowOptions() {\n return {\n width: 380,\n height: 450,\n backgroundColor: \"#282b30\",\n show: true,\n resizable: true,\n maximizable: false,\n minimizable: false,\n alwaysOnTop: true,\n frame: false,\n center: true,\n webPreferences: {\n nodeIntegration: false\n }\n };\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvc3RydWN0cy9wc2Nvbm5lY3Rpb24uanM/ZWZmNiJdLCJuYW1lcyI6WyJTb3J0ZWRHdWlsZFN0b3JlIiwiV2VicGFja01vZHVsZXMiLCJnZXRCeVByb3BzIiwiQXZhdGFyRGVmYXVsdHMiLCJJbnZpdGVBY3Rpb25zIiwiQnJvd3NlcldpbmRvdyIsInJlcXVpcmUiLCJyZW1vdGUiLCJQdWJsaWNTZXJ2ZXJzQ29ubmVjdGlvbiIsImVuZFBvaW50Iiwiam9pbkVuZFBvaW50IiwiY29ubmVjdEVuZFBvaW50IiwiZ2V0RGVmYXVsdEF2YXRhciIsIkRFRkFVTFRfQVZBVEFSUyIsIk1hdGgiLCJmbG9vciIsInJhbmRvbSIsImhhc0pvaW5lZCIsImlkIiwiZ2V0RmxhdHRlbmVkR3VpbGRJZHMiLCJpbmNsdWRlcyIsInNlYXJjaCIsInRlcm0iLCJjYXRlZ29yeSIsImZyb20iLCJyZXF1ZXN0IiwiUHJvbWlzZSIsInJlc29sdmUiLCJxdWVyaWVzIiwicHVzaCIsInJlcGxhY2UiLCJxdWVyeSIsImpvaW4iLCJnZXQiLCJ1cmwiLCJqc29uIiwiZXJyIiwicmVzcCIsImRhdGEiLCJuZXh0Iiwic2l6ZSIsInNlcnZlcnMiLCJyZXN1bHRzIiwidG90YWwiLCJuYXRpdmUiLCJhY2NlcHRJbnZpdGUiLCJmZXRjaCIsIm1ldGhvZCIsImNyZWRlbnRpYWxzIiwibW9kZSIsImhlYWRlcnMiLCJlIiwiY2hlY2tDb25uZWN0aW9uIiwicmVzcG9uc2UiLCJfYWNjZXNzVG9rZW4iLCJhY2Nlc3NfdG9rZW4iLCJlcnJvciIsImNvbm5lY3QiLCJqb2luV2luZG93Iiwid2luZG93T3B0aW9ucyIsIndlYkNvbnRlbnRzIiwib24iLCJldmVudCIsIm5hdlVybCIsImNsb3NlIiwibG9hZFVSTCIsIndpZHRoIiwiaGVpZ2h0IiwiYmFja2dyb3VuZENvbG9yIiwic2hvdyIsInJlc2l6YWJsZSIsIm1heGltaXphYmxlIiwibWluaW1pemFibGUiLCJhbHdheXNPblRvcCIsImZyYW1lIiwiY2VudGVyIiwid2ViUHJlZmVyZW5jZXMiLCJub2RlSW50ZWdyYXRpb24iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUEsTUFBTUEsZ0JBQWdCLEdBQUdDLHNEQUFjLENBQUNDLFVBQWYsQ0FBMEIsaUJBQTFCLENBQXpCO0FBQ0EsTUFBTUMsY0FBYyxHQUFHRixzREFBYyxDQUFDQyxVQUFmLENBQTBCLGtCQUExQixFQUE4QyxpQkFBOUMsQ0FBdkI7QUFDQSxNQUFNRSxhQUFhLEdBQUdILHNEQUFjLENBQUNDLFVBQWYsQ0FBMEIsY0FBMUIsQ0FBdEI7O0FBRUEsTUFBTUcsYUFBYSxHQUFHQyxtQkFBTyxDQUFDLDBCQUFELENBQVAsQ0FBb0JDLE1BQXBCLENBQTJCRixhQUFqRDs7QUFHZSxNQUFNRyx1QkFBTixDQUE4QjtBQUV6QyxhQUFXQyxRQUFYLEdBQXNCO0FBQUMsV0FBTyxtQ0FBUDtBQUE0Qzs7QUFDbkUsYUFBV0MsWUFBWCxHQUEwQjtBQUFDLFdBQU8sOEJBQVA7QUFBdUM7O0FBQ2xFLGFBQVdDLGVBQVgsR0FBNkI7QUFBQyxXQUFPLHNDQUFQO0FBQStDOztBQUU3RSxTQUFPQyxnQkFBUCxHQUEwQjtBQUN0QixXQUFPVCxjQUFjLENBQUNVLGVBQWYsQ0FBK0JDLElBQUksQ0FBQ0MsS0FBTCxDQUFXRCxJQUFJLENBQUNFLE1BQUwsS0FBZ0IsQ0FBM0IsQ0FBL0IsQ0FBUDtBQUNIOztBQUVELFNBQU9DLFNBQVAsQ0FBaUJDLEVBQWpCLEVBQXFCO0FBQ2pCLFdBQU9sQixnQkFBZ0IsQ0FBQ21CLG9CQUFqQixHQUF3Q0MsUUFBeEMsQ0FBaURGLEVBQWpELENBQVA7QUFDSDs7QUFFRCxTQUFPRyxNQUFQLENBQWM7QUFBQ0MsUUFBSSxHQUFHLEVBQVI7QUFBWUMsWUFBUSxHQUFHLEVBQXZCO0FBQTJCQyxRQUFJLEdBQUc7QUFBbEMsTUFBdUMsRUFBckQsRUFBeUQ7QUFDckQsVUFBTUMsT0FBTyxHQUFHbkIsbUJBQU8sQ0FBQyx3QkFBRCxDQUF2Qjs7QUFDQSxXQUFPLElBQUlvQixPQUFKLENBQVlDLE9BQU8sSUFBSTtBQUMxQixZQUFNQyxPQUFPLEdBQUcsRUFBaEI7QUFDQSxVQUFJTCxRQUFKLEVBQWNLLE9BQU8sQ0FBQ0MsSUFBUixDQUFjLFlBQVdOLFFBQVEsQ0FBQ08sT0FBVCxDQUFpQixJQUFqQixFQUF1QixLQUF2QixDQUE4QixFQUF2RDtBQUNkLFVBQUlSLElBQUosRUFBVU0sT0FBTyxDQUFDQyxJQUFSLENBQWMsUUFBT1AsSUFBSSxDQUFDUSxPQUFMLENBQWEsSUFBYixFQUFtQixLQUFuQixDQUEwQixFQUEvQztBQUNWLFVBQUlOLElBQUosRUFBVUksT0FBTyxDQUFDQyxJQUFSLENBQWMsUUFBT0wsSUFBSyxFQUExQjtBQUNWLFlBQU1PLEtBQUssR0FBSSxJQUFHSCxPQUFPLENBQUNJLElBQVIsQ0FBYSxHQUFiLENBQWtCLEVBQXBDO0FBQ0FQLGFBQU8sQ0FBQ1EsR0FBUixDQUFZO0FBQUNDLFdBQUcsRUFBRyxHQUFFLEtBQUt6QixRQUFTLEdBQUVzQixLQUFNLEdBQUVBLEtBQUssR0FBRyxhQUFILEdBQW1CLGFBQWMsRUFBdkU7QUFBMEVJLFlBQUksRUFBRTtBQUFoRixPQUFaLEVBQW1HLENBQUNDLEdBQUQsRUFBTUMsSUFBTixFQUFZQyxJQUFaLEtBQXFCO0FBQ3BILFlBQUlGLEdBQUosRUFBUyxPQUFPVCxPQUFPLENBQUMsSUFBRCxDQUFkO0FBQ1QsY0FBTVksSUFBSSxHQUFHRCxJQUFJLENBQUNFLElBQUwsR0FBWUYsSUFBSSxDQUFDZCxJQUE5QjtBQUNBRyxlQUFPLENBQUM7QUFDSmMsaUJBQU8sRUFBRUgsSUFBSSxDQUFDSSxPQURWO0FBRUpGLGNBQUksRUFBRUYsSUFBSSxDQUFDRSxJQUZQO0FBR0poQixjQUFJLEVBQUVjLElBQUksQ0FBQ2QsSUFIUDtBQUlKbUIsZUFBSyxFQUFFTCxJQUFJLENBQUNLLEtBSlI7QUFLSkosY0FBSSxFQUFFQSxJQUFJLElBQUlELElBQUksQ0FBQ0ssS0FBYixHQUFxQixJQUFyQixHQUE0Qko7QUFMOUIsU0FBRCxDQUFQO0FBT0gsT0FWRDtBQVdILEtBakJNLENBQVA7QUFrQkg7O0FBRUQsZUFBYVAsSUFBYixDQUFrQmQsRUFBbEIsRUFBc0IwQixNQUFNLEdBQUcsS0FBL0IsRUFBc0M7QUFDbEMsUUFBSUEsTUFBSixFQUFZLE9BQU94QyxhQUFhLENBQUN5QyxZQUFkLENBQTJCM0IsRUFBM0IsQ0FBUDs7QUFDWixRQUFJO0FBQ0EsWUFBTTRCLEtBQUssQ0FBRSxHQUFFLEtBQUtwQyxZQUFhLElBQUdRLEVBQUcsRUFBNUIsRUFBOEI7QUFDckM2QixjQUFNLEVBQUUsS0FENkI7QUFFckNDLG1CQUFXLEVBQUUsU0FGd0I7QUFHckNDLFlBQUksRUFBRSxNQUgrQjtBQUlyQ0MsZUFBTyxFQUFFO0FBQ0wsb0JBQVUsa0JBREw7QUFFTCwwQkFBZ0I7QUFGWDtBQUo0QixPQUE5QixDQUFYO0FBU0EsYUFBTyxJQUFQO0FBQ0gsS0FYRCxDQVlBLE9BQU9DLENBQVAsRUFBVTtBQUNOLGFBQU8sS0FBUDtBQUNIO0FBQ0o7O0FBRUQsZUFBYUMsZUFBYixHQUErQjtBQUMzQixRQUFJO0FBQ0EsWUFBTUMsUUFBUSxHQUFHLE1BQU1QLEtBQUssQ0FBRSxzQ0FBRixFQUF3QztBQUNoRUMsY0FBTSxFQUFFLEtBRHdEO0FBRWhFQyxtQkFBVyxFQUFFLFNBRm1EO0FBR2hFQyxZQUFJLEVBQUUsTUFIMEQ7QUFJaEVDLGVBQU8sRUFBRTtBQUNMLG9CQUFVLGtCQURMO0FBRUwsMEJBQWdCO0FBRlg7QUFKdUQsT0FBeEMsQ0FBNUI7QUFTQSxZQUFNWixJQUFJLEdBQUcsTUFBTWUsUUFBUSxDQUFDbEIsSUFBVCxFQUFuQjtBQUNBLFdBQUttQixZQUFMLEdBQW9CaEIsSUFBSSxDQUFDaUIsWUFBekI7QUFDQSxhQUFPakIsSUFBUDtBQUNILEtBYkQsQ0FjQSxPQUFPa0IsS0FBUCxFQUFjO0FBQ1YsYUFBTyxLQUFQO0FBQ0g7QUFDSjs7QUFFRCxTQUFPQyxPQUFQLEdBQWlCO0FBQ2IsV0FBTyxJQUFJL0IsT0FBSixDQUFZQyxPQUFPLElBQUk7QUFDMUIsWUFBTStCLFVBQVUsR0FBRyxJQUFJckQsYUFBSixDQUFrQixLQUFLc0QsYUFBdkIsQ0FBbkI7QUFDQSxZQUFNekIsR0FBRyxHQUFJLDBFQUF5RSxLQUFLdkIsZUFBZ0IsRUFBM0c7QUFDQStDLGdCQUFVLENBQUNFLFdBQVgsQ0FBdUJDLEVBQXZCLENBQTBCLGNBQTFCLEVBQTBDLENBQUNDLEtBQUQsRUFBUUMsTUFBUixLQUFtQjtBQUN6RCxZQUFJQSxNQUFNLElBQUksS0FBS3BELGVBQW5CLEVBQW9DO0FBQ3BDK0Msa0JBQVUsQ0FBQ00sS0FBWDtBQUNBckMsZUFBTztBQUNWLE9BSkQ7QUFLQStCLGdCQUFVLENBQUNPLE9BQVgsQ0FBbUIvQixHQUFuQjtBQUNILEtBVE0sQ0FBUDtBQVVIOztBQUVELGFBQVd5QixhQUFYLEdBQTJCO0FBQ3ZCLFdBQU87QUFDSE8sV0FBSyxFQUFFLEdBREo7QUFFSEMsWUFBTSxFQUFFLEdBRkw7QUFHSEMscUJBQWUsRUFBRSxTQUhkO0FBSUhDLFVBQUksRUFBRSxJQUpIO0FBS0hDLGVBQVMsRUFBRSxJQUxSO0FBTUhDLGlCQUFXLEVBQUUsS0FOVjtBQU9IQyxpQkFBVyxFQUFFLEtBUFY7QUFRSEMsaUJBQVcsRUFBRSxJQVJWO0FBU0hDLFdBQUssRUFBRSxLQVRKO0FBVUhDLFlBQU0sRUFBRSxJQVZMO0FBV0hDLG9CQUFjLEVBQUU7QUFDWkMsdUJBQWUsRUFBRTtBQURMO0FBWGIsS0FBUDtBQWVIOztBQXhHd0MiLCJmaWxlIjoiLi9zcmMvc3RydWN0cy9wc2Nvbm5lY3Rpb24uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1dlYnBhY2tNb2R1bGVzfSBmcm9tIFwibW9kdWxlc1wiO1xyXG5cclxuY29uc3QgU29ydGVkR3VpbGRTdG9yZSA9IFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJnZXRTb3J0ZWRHdWlsZHNcIik7XHJcbmNvbnN0IEF2YXRhckRlZmF1bHRzID0gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcImdldFVzZXJBdmF0YXJVUkxcIiwgXCJERUZBVUxUX0FWQVRBUlNcIik7XHJcbmNvbnN0IEludml0ZUFjdGlvbnMgPSBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiYWNjZXB0SW52aXRlXCIpO1xyXG5cclxuY29uc3QgQnJvd3NlcldpbmRvdyA9IHJlcXVpcmUoXCJlbGVjdHJvblwiKS5yZW1vdGUuQnJvd3NlcldpbmRvdztcclxuXHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQdWJsaWNTZXJ2ZXJzQ29ubmVjdGlvbiB7XHJcblxyXG4gICAgc3RhdGljIGdldCBlbmRQb2ludCgpIHtyZXR1cm4gXCJodHRwczovL3NlYXJjaC5kaXNjb3Jkc2VydmVycy5jb21cIjt9XHJcbiAgICBzdGF0aWMgZ2V0IGpvaW5FbmRQb2ludCgpIHtyZXR1cm4gXCJodHRwczovL2ouZGlzY29yZHNlcnZlcnMuY29tXCI7fVxyXG4gICAgc3RhdGljIGdldCBjb25uZWN0RW5kUG9pbnQoKSB7cmV0dXJuIFwiaHR0cHM6Ly9hdXRoLmRpc2NvcmRzZXJ2ZXJzLmNvbS9pbmZvXCI7fVxyXG5cclxuICAgIHN0YXRpYyBnZXREZWZhdWx0QXZhdGFyKCkge1xyXG4gICAgICAgIHJldHVybiBBdmF0YXJEZWZhdWx0cy5ERUZBVUxUX0FWQVRBUlNbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogNSldO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBoYXNKb2luZWQoaWQpIHtcclxuICAgICAgICByZXR1cm4gU29ydGVkR3VpbGRTdG9yZS5nZXRGbGF0dGVuZWRHdWlsZElkcygpLmluY2x1ZGVzKGlkKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgc2VhcmNoKHt0ZXJtID0gXCJcIiwgY2F0ZWdvcnkgPSBcIlwiLCBmcm9tID0gMH0gPSB7fSkge1xyXG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSByZXF1aXJlKFwicmVxdWVzdFwiKTtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHF1ZXJpZXMgPSBbXTtcclxuICAgICAgICAgICAgaWYgKGNhdGVnb3J5KSBxdWVyaWVzLnB1c2goYGNhdGVnb3J5PSR7Y2F0ZWdvcnkucmVwbGFjZSgvIC9nLCBcIiUyMFwiKX1gKTtcclxuICAgICAgICAgICAgaWYgKHRlcm0pIHF1ZXJpZXMucHVzaChgdGVybT0ke3Rlcm0ucmVwbGFjZSgvIC9nLCBcIiUyMFwiKX1gKTtcclxuICAgICAgICAgICAgaWYgKGZyb20pIHF1ZXJpZXMucHVzaChgZnJvbT0ke2Zyb219YCk7XHJcbiAgICAgICAgICAgIGNvbnN0IHF1ZXJ5ID0gYD8ke3F1ZXJpZXMuam9pbihcIiZcIil9YDtcclxuICAgICAgICAgICAgcmVxdWVzdC5nZXQoe3VybDogYCR7dGhpcy5lbmRQb2ludH0ke3F1ZXJ5fSR7cXVlcnkgPyBcIiZzY2hlbWE9bmV3XCIgOiBcIj9zY2hlbWE9bmV3XCJ9YCwganNvbjogdHJ1ZX0sIChlcnIsIHJlc3AsIGRhdGEpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChlcnIpIHJldHVybiByZXNvbHZlKG51bGwpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbmV4dCA9IGRhdGEuc2l6ZSArIGRhdGEuZnJvbTtcclxuICAgICAgICAgICAgICAgIHJlc29sdmUoe1xyXG4gICAgICAgICAgICAgICAgICAgIHNlcnZlcnM6IGRhdGEucmVzdWx0cyxcclxuICAgICAgICAgICAgICAgICAgICBzaXplOiBkYXRhLnNpemUsXHJcbiAgICAgICAgICAgICAgICAgICAgZnJvbTogZGF0YS5mcm9tLFxyXG4gICAgICAgICAgICAgICAgICAgIHRvdGFsOiBkYXRhLnRvdGFsLFxyXG4gICAgICAgICAgICAgICAgICAgIG5leHQ6IG5leHQgPj0gZGF0YS50b3RhbCA/IG51bGwgOiBuZXh0XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGFzeW5jIGpvaW4oaWQsIG5hdGl2ZSA9IGZhbHNlKSB7XHJcbiAgICAgICAgaWYgKG5hdGl2ZSkgcmV0dXJuIEludml0ZUFjdGlvbnMuYWNjZXB0SW52aXRlKGlkKTtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBhd2FpdCBmZXRjaChgJHt0aGlzLmpvaW5FbmRQb2ludH0vJHtpZH1gLHtcclxuICAgICAgICAgICAgICAgIG1ldGhvZDogXCJHRVRcIixcclxuICAgICAgICAgICAgICAgIGNyZWRlbnRpYWxzOiBcImluY2x1ZGVcIixcclxuICAgICAgICAgICAgICAgIG1vZGU6IFwiY29yc1wiLFxyXG4gICAgICAgICAgICAgICAgaGVhZGVyczoge1xyXG4gICAgICAgICAgICAgICAgICAgIFwiQWNjZXB0XCI6IFwiYXBwbGljYXRpb24vanNvblwiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgYXN5bmMgY2hlY2tDb25uZWN0aW9uKCkge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYGh0dHBzOi8vYXV0aC5kaXNjb3Jkc2VydmVycy5jb20vaW5mb2Ase1xyXG4gICAgICAgICAgICAgICAgbWV0aG9kOiBcIkdFVFwiLFxyXG4gICAgICAgICAgICAgICAgY3JlZGVudGlhbHM6IFwiaW5jbHVkZVwiLFxyXG4gICAgICAgICAgICAgICAgbW9kZTogXCJjb3JzXCIsXHJcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgXCJBY2NlcHRcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCJcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKCk7XHJcbiAgICAgICAgICAgIHRoaXMuX2FjY2Vzc1Rva2VuID0gZGF0YS5hY2Nlc3NfdG9rZW47XHJcbiAgICAgICAgICAgIHJldHVybiBkYXRhO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgY29ubmVjdCgpIHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGpvaW5XaW5kb3cgPSBuZXcgQnJvd3NlcldpbmRvdyh0aGlzLndpbmRvd09wdGlvbnMpO1xyXG4gICAgICAgICAgICBjb25zdCB1cmwgPSBgaHR0cHM6Ly9hdXRoLmRpc2NvcmRzZXJ2ZXJzLmNvbS9jb25uZWN0P3Njb3Blcz1ndWlsZHMuam9pbiZwcmV2aW91c1VybD0ke3RoaXMuY29ubmVjdEVuZFBvaW50fWA7XHJcbiAgICAgICAgICAgIGpvaW5XaW5kb3cud2ViQ29udGVudHMub24oXCJkaWQtbmF2aWdhdGVcIiwgKGV2ZW50LCBuYXZVcmwpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChuYXZVcmwgIT0gdGhpcy5jb25uZWN0RW5kUG9pbnQpIHJldHVybjtcclxuICAgICAgICAgICAgICAgIGpvaW5XaW5kb3cuY2xvc2UoKTtcclxuICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGpvaW5XaW5kb3cubG9hZFVSTCh1cmwpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBnZXQgd2luZG93T3B0aW9ucygpIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICB3aWR0aDogMzgwLFxyXG4gICAgICAgICAgICBoZWlnaHQ6IDQ1MCxcclxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBcIiMyODJiMzBcIixcclxuICAgICAgICAgICAgc2hvdzogdHJ1ZSxcclxuICAgICAgICAgICAgcmVzaXphYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICBtYXhpbWl6YWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgIG1pbmltaXphYmxlOiBmYWxzZSxcclxuICAgICAgICAgICAgYWx3YXlzT25Ub3A6IHRydWUsXHJcbiAgICAgICAgICAgIGZyYW1lOiBmYWxzZSxcclxuICAgICAgICAgICAgY2VudGVyOiB0cnVlLFxyXG4gICAgICAgICAgICB3ZWJQcmVmZXJlbmNlczoge1xyXG4gICAgICAgICAgICAgICAgbm9kZUludGVncmF0aW9uOiBmYWxzZVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbn1cclxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/structs/psconnection.js\n"); /***/ }), @@ -695,7 +694,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Screen; });\nclass Screen {\n /** Document/window width */\n static get width() {\n return Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n }\n /** Document/window height */\n\n\n static get height() {\n return Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3N0cnVjdHMvc2NyZWVuLmpzPzRiMjEiXSwibmFtZXMiOlsiU2NyZWVuIiwid2lkdGgiLCJNYXRoIiwibWF4IiwiZG9jdW1lbnQiLCJkb2N1bWVudEVsZW1lbnQiLCJjbGllbnRXaWR0aCIsIndpbmRvdyIsImlubmVyV2lkdGgiLCJoZWlnaHQiLCJjbGllbnRIZWlnaHQiLCJpbm5lckhlaWdodCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFlLE1BQU1BLE1BQU4sQ0FBYTtBQUN4QjtBQUNBLGFBQVdDLEtBQVgsR0FBbUI7QUFBRSxXQUFPQyxJQUFJLENBQUNDLEdBQUwsQ0FBU0MsUUFBUSxDQUFDQyxlQUFULENBQXlCQyxXQUFsQyxFQUErQ0MsTUFBTSxDQUFDQyxVQUFQLElBQXFCLENBQXBFLENBQVA7QUFBZ0Y7QUFDckc7OztBQUNBLGFBQVdDLE1BQVgsR0FBb0I7QUFBRSxXQUFPUCxJQUFJLENBQUNDLEdBQUwsQ0FBU0MsUUFBUSxDQUFDQyxlQUFULENBQXlCSyxZQUFsQyxFQUFnREgsTUFBTSxDQUFDSSxXQUFQLElBQXNCLENBQXRFLENBQVA7QUFBa0Y7O0FBSmhGIiwiZmlsZSI6Ii4vc3JjL3N0cnVjdHMvc2NyZWVuLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2NyZWVuIHtcclxuICAgIC8qKiBEb2N1bWVudC93aW5kb3cgd2lkdGggKi9cclxuICAgIHN0YXRpYyBnZXQgd2lkdGgoKSB7IHJldHVybiBNYXRoLm1heChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGgsIHdpbmRvdy5pbm5lcldpZHRoIHx8IDApOyB9XHJcbiAgICAvKiogRG9jdW1lbnQvd2luZG93IGhlaWdodCAqL1xyXG4gICAgc3RhdGljIGdldCBoZWlnaHQoKSB7IHJldHVybiBNYXRoLm1heChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0LCB3aW5kb3cuaW5uZXJIZWlnaHQgfHwgMCk7IH1cclxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/structs/screen.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Screen; });\nclass Screen {\n /** Document/window width */\n static get width() {\n return Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n }\n /** Document/window height */\n\n\n static get height() {\n return Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvc3RydWN0cy9zY3JlZW4uanM/NGIyMSJdLCJuYW1lcyI6WyJTY3JlZW4iLCJ3aWR0aCIsIk1hdGgiLCJtYXgiLCJkb2N1bWVudCIsImRvY3VtZW50RWxlbWVudCIsImNsaWVudFdpZHRoIiwid2luZG93IiwiaW5uZXJXaWR0aCIsImhlaWdodCIsImNsaWVudEhlaWdodCIsImlubmVySGVpZ2h0Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQWUsTUFBTUEsTUFBTixDQUFhO0FBQ3hCO0FBQ0EsYUFBV0MsS0FBWCxHQUFtQjtBQUFFLFdBQU9DLElBQUksQ0FBQ0MsR0FBTCxDQUFTQyxRQUFRLENBQUNDLGVBQVQsQ0FBeUJDLFdBQWxDLEVBQStDQyxNQUFNLENBQUNDLFVBQVAsSUFBcUIsQ0FBcEUsQ0FBUDtBQUFnRjtBQUNyRzs7O0FBQ0EsYUFBV0MsTUFBWCxHQUFvQjtBQUFFLFdBQU9QLElBQUksQ0FBQ0MsR0FBTCxDQUFTQyxRQUFRLENBQUNDLGVBQVQsQ0FBeUJLLFlBQWxDLEVBQWdESCxNQUFNLENBQUNJLFdBQVAsSUFBc0IsQ0FBdEUsQ0FBUDtBQUFrRjs7QUFKaEYiLCJmaWxlIjoiLi9zcmMvc3RydWN0cy9zY3JlZW4uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBjbGFzcyBTY3JlZW4ge1xyXG4gICAgLyoqIERvY3VtZW50L3dpbmRvdyB3aWR0aCAqL1xyXG4gICAgc3RhdGljIGdldCB3aWR0aCgpIHsgcmV0dXJuIE1hdGgubWF4KGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aCwgd2luZG93LmlubmVyV2lkdGggfHwgMCk7IH1cclxuICAgIC8qKiBEb2N1bWVudC93aW5kb3cgaGVpZ2h0ICovXHJcbiAgICBzdGF0aWMgZ2V0IGhlaWdodCgpIHsgcmV0dXJuIE1hdGgubWF4KGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQsIHdpbmRvdy5pbm5lckhlaWdodCB8fCAwKTsgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/structs/screen.js\n"); /***/ }), @@ -707,7 +706,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return FormattableString; });\n/* harmony import */ var _modules_utilities__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../modules/utilities */ \"./src/modules/utilities.js\");\n\nclass FormattableString extends String {\n format(values) {\n return _modules_utilities__WEBPACK_IMPORTED_MODULE_0__[\"default\"].formatString(this, values);\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3N0cnVjdHMvc3RyaW5nLmpzPzNhOGUiXSwibmFtZXMiOlsiRm9ybWF0dGFibGVTdHJpbmciLCJTdHJpbmciLCJmb3JtYXQiLCJ2YWx1ZXMiLCJVdGlsaXRpZXMiLCJmb3JtYXRTdHJpbmciXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRWUsTUFBTUEsaUJBQU4sU0FBZ0NDLE1BQWhDLENBQXVDO0FBQ2xEQyxRQUFNLENBQUNDLE1BQUQsRUFBUztBQUNYLFdBQU9DLDBEQUFTLENBQUNDLFlBQVYsQ0FBdUIsSUFBdkIsRUFBNkJGLE1BQTdCLENBQVA7QUFDSDs7QUFIaUQiLCJmaWxlIjoiLi9zcmMvc3RydWN0cy9zdHJpbmcuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgVXRpbGl0aWVzIGZyb20gXCIuLi9tb2R1bGVzL3V0aWxpdGllc1wiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRm9ybWF0dGFibGVTdHJpbmcgZXh0ZW5kcyBTdHJpbmcge1xyXG4gICAgZm9ybWF0KHZhbHVlcykge1xyXG4gICAgICAgIHJldHVybiBVdGlsaXRpZXMuZm9ybWF0U3RyaW5nKHRoaXMsIHZhbHVlcyk7XHJcbiAgICB9XHJcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/structs/string.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return FormattableString; });\n/* harmony import */ var _modules_utilities__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../modules/utilities */ \"./src/modules/utilities.js\");\n\nclass FormattableString extends String {\n format(values) {\n return _modules_utilities__WEBPACK_IMPORTED_MODULE_0__[\"default\"].formatString(this, values);\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvc3RydWN0cy9zdHJpbmcuanM/M2E4ZSJdLCJuYW1lcyI6WyJGb3JtYXR0YWJsZVN0cmluZyIsIlN0cmluZyIsImZvcm1hdCIsInZhbHVlcyIsIlV0aWxpdGllcyIsImZvcm1hdFN0cmluZyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFFZSxNQUFNQSxpQkFBTixTQUFnQ0MsTUFBaEMsQ0FBdUM7QUFDbERDLFFBQU0sQ0FBQ0MsTUFBRCxFQUFTO0FBQ1gsV0FBT0MsMERBQVMsQ0FBQ0MsWUFBVixDQUF1QixJQUF2QixFQUE2QkYsTUFBN0IsQ0FBUDtBQUNIOztBQUhpRCIsImZpbGUiOiIuL3NyYy9zdHJ1Y3RzL3N0cmluZy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBVdGlsaXRpZXMgZnJvbSBcIi4uL21vZHVsZXMvdXRpbGl0aWVzXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBGb3JtYXR0YWJsZVN0cmluZyBleHRlbmRzIFN0cmluZyB7XHJcbiAgICBmb3JtYXQodmFsdWVzKSB7XHJcbiAgICAgICAgcmV0dXJuIFV0aWxpdGllcy5mb3JtYXRTdHJpbmcodGhpcywgdmFsdWVzKTtcclxuICAgIH1cclxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/structs/string.js\n"); /***/ }), @@ -719,7 +718,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Checkbox; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass Checkbox extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n this.onClick = this.onClick.bind(this);\n this.state = {\n checked: this.props.checked || false\n };\n }\n\n render() {\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"checkbox-item\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"checkbox-label label-JWQiNe da-label\"\n }, this.props.text), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"checkbox-wrapper checkbox-3kaeSU da-checkbox checkbox-3EVISJ da-checkbox\",\n onClick: this.onClick\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"checkbox-inner checkboxInner-3yjcPe da-checkboxInner\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"input\", {\n className: \"checkbox checkboxElement-1qV33p da-checkboxElement\",\n checked: this.state.checked,\n type: \"checkbox\"\n }), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"span\", null)), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"span\", null)));\n }\n\n onClick() {\n this.props.onChange(!this.state.checked);\n this.setState({\n checked: !this.state.checked\n });\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL2N1c3RvbWNzcy9jaGVja2JveC5qc3g/MjJiNSJdLCJuYW1lcyI6WyJDaGVja2JveCIsIlJlYWN0IiwiQ29tcG9uZW50IiwiY29uc3RydWN0b3IiLCJwcm9wcyIsIm9uQ2xpY2siLCJiaW5kIiwic3RhdGUiLCJjaGVja2VkIiwicmVuZGVyIiwidGV4dCIsIm9uQ2hhbmdlIiwic2V0U3RhdGUiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRWUsTUFBTUEsUUFBTixTQUF1QkMsNkNBQUssQ0FBQ0MsU0FBN0IsQ0FBdUM7QUFDbERDLGFBQVcsQ0FBQ0MsS0FBRCxFQUFRO0FBQ2YsVUFBTUEsS0FBTjtBQUNBLFNBQUtDLE9BQUwsR0FBZSxLQUFLQSxPQUFMLENBQWFDLElBQWIsQ0FBa0IsSUFBbEIsQ0FBZjtBQUNBLFNBQUtDLEtBQUwsR0FBYTtBQUFDQyxhQUFPLEVBQUUsS0FBS0osS0FBTCxDQUFXSSxPQUFYLElBQXNCO0FBQWhDLEtBQWI7QUFDSDs7QUFFREMsUUFBTSxHQUFHO0FBQ0wsd0JBQU87QUFBSyxlQUFTLEVBQUM7QUFBZixvQkFDSDtBQUFLLGVBQVMsRUFBQztBQUFmLE9BQXVELEtBQUtMLEtBQUwsQ0FBV00sSUFBbEUsQ0FERyxlQUVIO0FBQUssZUFBUyxFQUFDLDBFQUFmO0FBQTBGLGFBQU8sRUFBRSxLQUFLTDtBQUF4RyxvQkFDSTtBQUFLLGVBQVMsRUFBQztBQUFmLG9CQUNJO0FBQU8sZUFBUyxFQUFDLG9EQUFqQjtBQUFzRSxhQUFPLEVBQUUsS0FBS0UsS0FBTCxDQUFXQyxPQUExRjtBQUFtRyxVQUFJLEVBQUM7QUFBeEcsTUFESixlQUVJLHlFQUZKLENBREosZUFLSSx5RUFMSixDQUZHLENBQVA7QUFVSDs7QUFFREgsU0FBTyxHQUFHO0FBQ04sU0FBS0QsS0FBTCxDQUFXTyxRQUFYLENBQW9CLENBQUMsS0FBS0osS0FBTCxDQUFXQyxPQUFoQztBQUNBLFNBQUtJLFFBQUwsQ0FBYztBQUFDSixhQUFPLEVBQUUsQ0FBQyxLQUFLRCxLQUFMLENBQVdDO0FBQXRCLEtBQWQ7QUFDSDs7QUF2QmlEIiwiZmlsZSI6Ii4vc3JjL3VpL2N1c3RvbWNzcy9jaGVja2JveC5qc3guanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlYWN0fSBmcm9tIFwibW9kdWxlc1wiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ2hlY2tib3ggZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xyXG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcclxuICAgICAgICBzdXBlcihwcm9wcyk7XHJcbiAgICAgICAgdGhpcy5vbkNsaWNrID0gdGhpcy5vbkNsaWNrLmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHtjaGVja2VkOiB0aGlzLnByb3BzLmNoZWNrZWQgfHwgZmFsc2V9O1xyXG4gICAgfVxyXG5cclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICByZXR1cm4gPGRpdiBjbGFzc05hbWU9XCJjaGVja2JveC1pdGVtXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY2hlY2tib3gtbGFiZWwgbGFiZWwtSldRaU5lIGRhLWxhYmVsXCI+e3RoaXMucHJvcHMudGV4dH08L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjaGVja2JveC13cmFwcGVyIGNoZWNrYm94LTNrYWVTVSBkYS1jaGVja2JveCBjaGVja2JveC0zRVZJU0ogZGEtY2hlY2tib3hcIiBvbkNsaWNrPXt0aGlzLm9uQ2xpY2t9PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjaGVja2JveC1pbm5lciBjaGVja2JveElubmVyLTN5amNQZSBkYS1jaGVja2JveElubmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzTmFtZT1cImNoZWNrYm94IGNoZWNrYm94RWxlbWVudC0xcVYzM3AgZGEtY2hlY2tib3hFbGVtZW50XCIgY2hlY2tlZD17dGhpcy5zdGF0ZS5jaGVja2VkfSB0eXBlPVwiY2hlY2tib3hcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj47XHJcbiAgICB9XHJcblxyXG4gICAgb25DbGljaygpIHtcclxuICAgICAgICB0aGlzLnByb3BzLm9uQ2hhbmdlKCF0aGlzLnN0YXRlLmNoZWNrZWQpO1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe2NoZWNrZWQ6ICF0aGlzLnN0YXRlLmNoZWNrZWR9KTtcclxuICAgIH1cclxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/customcss/checkbox.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Checkbox; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass Checkbox extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n this.onClick = this.onClick.bind(this);\n this.state = {\n checked: this.props.checked || false\n };\n }\n\n render() {\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"checkbox-item\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"checkbox-label label-JWQiNe da-label\"\n }, this.props.text), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"checkbox-wrapper checkbox-3kaeSU da-checkbox checkbox-3EVISJ da-checkbox\",\n onClick: this.onClick\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"checkbox-inner checkboxInner-3yjcPe da-checkboxInner\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"input\", {\n className: \"checkbox checkboxElement-1qV33p da-checkboxElement\",\n checked: this.state.checked,\n type: \"checkbox\"\n }), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"span\", null)), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"span\", null)));\n }\n\n onClick() {\n this.props.onChange(!this.state.checked);\n this.setState({\n checked: !this.state.checked\n });\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvY3VzdG9tY3NzL2NoZWNrYm94LmpzeD8yMmI1Il0sIm5hbWVzIjpbIkNoZWNrYm94IiwiUmVhY3QiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwib25DbGljayIsImJpbmQiLCJzdGF0ZSIsImNoZWNrZWQiLCJyZW5kZXIiLCJ0ZXh0Iiwib25DaGFuZ2UiLCJzZXRTdGF0ZSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFFZSxNQUFNQSxRQUFOLFNBQXVCQyw2Q0FBSyxDQUFDQyxTQUE3QixDQUF1QztBQUNsREMsYUFBVyxDQUFDQyxLQUFELEVBQVE7QUFDZixVQUFNQSxLQUFOO0FBQ0EsU0FBS0MsT0FBTCxHQUFlLEtBQUtBLE9BQUwsQ0FBYUMsSUFBYixDQUFrQixJQUFsQixDQUFmO0FBQ0EsU0FBS0MsS0FBTCxHQUFhO0FBQUNDLGFBQU8sRUFBRSxLQUFLSixLQUFMLENBQVdJLE9BQVgsSUFBc0I7QUFBaEMsS0FBYjtBQUNIOztBQUVEQyxRQUFNLEdBQUc7QUFDTCx3QkFBTztBQUFLLGVBQVMsRUFBQztBQUFmLG9CQUNIO0FBQUssZUFBUyxFQUFDO0FBQWYsT0FBdUQsS0FBS0wsS0FBTCxDQUFXTSxJQUFsRSxDQURHLGVBRUg7QUFBSyxlQUFTLEVBQUMsMEVBQWY7QUFBMEYsYUFBTyxFQUFFLEtBQUtMO0FBQXhHLG9CQUNJO0FBQUssZUFBUyxFQUFDO0FBQWYsb0JBQ0k7QUFBTyxlQUFTLEVBQUMsb0RBQWpCO0FBQXNFLGFBQU8sRUFBRSxLQUFLRSxLQUFMLENBQVdDLE9BQTFGO0FBQW1HLFVBQUksRUFBQztBQUF4RyxNQURKLGVBRUkseUVBRkosQ0FESixlQUtJLHlFQUxKLENBRkcsQ0FBUDtBQVVIOztBQUVESCxTQUFPLEdBQUc7QUFDTixTQUFLRCxLQUFMLENBQVdPLFFBQVgsQ0FBb0IsQ0FBQyxLQUFLSixLQUFMLENBQVdDLE9BQWhDO0FBQ0EsU0FBS0ksUUFBTCxDQUFjO0FBQUNKLGFBQU8sRUFBRSxDQUFDLEtBQUtELEtBQUwsQ0FBV0M7QUFBdEIsS0FBZDtBQUNIOztBQXZCaUQiLCJmaWxlIjoiLi9zcmMvdWkvY3VzdG9tY3NzL2NoZWNrYm94LmpzeC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhY3R9IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDaGVja2JveCBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XHJcbiAgICBjb25zdHJ1Y3Rvcihwcm9wcykge1xyXG4gICAgICAgIHN1cGVyKHByb3BzKTtcclxuICAgICAgICB0aGlzLm9uQ2xpY2sgPSB0aGlzLm9uQ2xpY2suYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLnN0YXRlID0ge2NoZWNrZWQ6IHRoaXMucHJvcHMuY2hlY2tlZCB8fCBmYWxzZX07XHJcbiAgICB9XHJcblxyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIHJldHVybiA8ZGl2IGNsYXNzTmFtZT1cImNoZWNrYm94LWl0ZW1cIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjaGVja2JveC1sYWJlbCBsYWJlbC1KV1FpTmUgZGEtbGFiZWxcIj57dGhpcy5wcm9wcy50ZXh0fTwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNoZWNrYm94LXdyYXBwZXIgY2hlY2tib3gtM2thZVNVIGRhLWNoZWNrYm94IGNoZWNrYm94LTNFVklTSiBkYS1jaGVja2JveFwiIG9uQ2xpY2s9e3RoaXMub25DbGlja30+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNoZWNrYm94LWlubmVyIGNoZWNrYm94SW5uZXItM3lqY1BlIGRhLWNoZWNrYm94SW5uZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3NOYW1lPVwiY2hlY2tib3ggY2hlY2tib3hFbGVtZW50LTFxVjMzcCBkYS1jaGVja2JveEVsZW1lbnRcIiBjaGVja2VkPXt0aGlzLnN0YXRlLmNoZWNrZWR9IHR5cGU9XCJjaGVja2JveFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8c3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PjtcclxuICAgIH1cclxuXHJcbiAgICBvbkNsaWNrKCkge1xyXG4gICAgICAgIHRoaXMucHJvcHMub25DaGFuZ2UoIXRoaXMuc3RhdGUuY2hlY2tlZCk7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7Y2hlY2tlZDogIXRoaXMuc3RhdGUuY2hlY2tlZH0pO1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/customcss/checkbox.jsx\n"); /***/ }), @@ -731,7 +730,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return CssEditor; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _editor__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./editor */ \"./src/ui/customcss/editor.jsx\");\n/* harmony import */ var _icons_reload__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../icons/reload */ \"./src/ui/icons/reload.jsx\");\n/* harmony import */ var _icons_save__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../icons/save */ \"./src/ui/icons/save.jsx\");\n/* harmony import */ var _icons_edit__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../icons/edit */ \"./src/ui/icons/edit.jsx\");\n/* harmony import */ var _icons_cog__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../icons/cog */ \"./src/ui/icons/cog.jsx\");\n/* harmony import */ var _icons_detach__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../icons/detach */ \"./src/ui/icons/detach.jsx\");\n\n // import Checkbox from \"./checkbox\";\n\n\n\n\n\n\nclass CssEditor extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n this.hasUnsavedChanges = false;\n this.onChange = this.onChange.bind(this);\n this.toggleLiveUpdate = this.toggleLiveUpdate.bind(this);\n this.updateCss = this.updateCss.bind(this);\n this.saveCss = this.saveCss.bind(this);\n this.openDetached = this.props.openDetached ? this.openDetached.bind(this) : null;\n this.openNative = this.openNative.bind(this);\n this.updateEditor = this.updateEditor.bind(this);\n this.controls = [{\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_reload__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n size: \"18px\"\n }),\n tooltip: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].CustomCSS.update,\n onClick: this.updateCss\n }, {\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_save__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n size: \"18px\"\n }),\n tooltip: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].CustomCSS.save,\n onClick: this.saveCss\n }, {\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_edit__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n size: \"18px\"\n }),\n tooltip: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].CustomCSS.openNative,\n onClick: this.openNative\n }, {\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_cog__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n size: \"18px\"\n }),\n tooltip: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].CustomCSS.settings,\n onClick: \"showSettings\"\n }, {\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Collections.settings.customcss.liveUpdate.name,\n type: \"checkbox\",\n onChange: this.toggleLiveUpdate,\n checked: modules__WEBPACK_IMPORTED_MODULE_0__[\"Settings\"].get(\"settings\", \"customcss\", \"liveUpdate\"),\n side: \"right\"\n }];\n if (this.openDetached) this.controls.push({\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_detach__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n size: \"18px\"\n }),\n tooltip: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].CustomCSS.openDetached,\n onClick: this.openDetached,\n side: \"right\"\n });\n }\n\n componentDidMount() {\n modules__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].on(\"customcss-updated\", this.updateEditor);\n }\n\n componentWillUnmount() {\n modules__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].off(\"customcss-updated\", this.updateEditor);\n }\n\n updateEditor(newCSS) {\n if (!this.editor) return;\n this.editor.value = newCSS;\n }\n\n get value() {\n return this.editor.session.getValue();\n }\n\n set value(newValue) {\n this.editor.setValue(newValue);\n }\n\n showSettings() {\n return this.editor.keyBinding.$defaultHandler.commands.showSettingsMenu.exec(this.editor);\n }\n\n resize() {\n return this.editor.resize();\n }\n\n setEditorRef(editor) {\n this.editor = editor;\n if (this.props.editorRef && typeof this.props.editorRef.current !== \"undefined\") this.props.editorRef.current = editor;else if (this.props.editorRef) this.props.editorRef = editor;\n }\n\n onChange() {\n this.hasUnsavedChanges = true;\n if (this.props.onChange) this.props.onChange(...arguments);\n }\n\n render() {\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_editor__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n ref: this.setEditorRef.bind(this),\n readOnly: this.props.readOnly,\n id: this.props.id || \"bd-customcss-editor\",\n onChange: this.onChange,\n controls: this.controls,\n value: this.props.css\n });\n }\n\n toggleLiveUpdate(checked) {\n modules__WEBPACK_IMPORTED_MODULE_0__[\"Settings\"].set(\"settings\", \"customcss\", \"liveUpdate\", checked);\n }\n\n updateCss(event, newCss) {\n if (this.props.update) this.props.update(newCss);\n }\n\n saveCss(event, newCss) {\n this.hasUnsavedChanges = false;\n if (this.props.save) this.props.save(newCss);\n }\n\n openDetached(event, currentCSS) {\n if (!this.props.openDetached) return;\n this.props.openDetached(currentCSS);\n }\n\n openNative() {\n if (this.props.openNative) this.props.openNative();\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL2N1c3RvbWNzcy9jc3NlZGl0b3IuanN4PzQyMzAiXSwibmFtZXMiOlsiQ3NzRWRpdG9yIiwiUmVhY3QiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwiaGFzVW5zYXZlZENoYW5nZXMiLCJvbkNoYW5nZSIsImJpbmQiLCJ0b2dnbGVMaXZlVXBkYXRlIiwidXBkYXRlQ3NzIiwic2F2ZUNzcyIsIm9wZW5EZXRhY2hlZCIsIm9wZW5OYXRpdmUiLCJ1cGRhdGVFZGl0b3IiLCJjb250cm9scyIsImxhYmVsIiwiY3JlYXRlRWxlbWVudCIsIlJlZnJlc2giLCJzaXplIiwidG9vbHRpcCIsIlN0cmluZ3MiLCJDdXN0b21DU1MiLCJ1cGRhdGUiLCJvbkNsaWNrIiwiU2F2ZSIsInNhdmUiLCJFZGl0IiwiQ29nIiwic2V0dGluZ3MiLCJDb2xsZWN0aW9ucyIsImN1c3RvbWNzcyIsImxpdmVVcGRhdGUiLCJuYW1lIiwidHlwZSIsImNoZWNrZWQiLCJTZXR0aW5ncyIsImdldCIsInNpZGUiLCJwdXNoIiwiRGV0YWNoIiwiY29tcG9uZW50RGlkTW91bnQiLCJFdmVudHMiLCJvbiIsImNvbXBvbmVudFdpbGxVbm1vdW50Iiwib2ZmIiwibmV3Q1NTIiwiZWRpdG9yIiwidmFsdWUiLCJzZXNzaW9uIiwiZ2V0VmFsdWUiLCJuZXdWYWx1ZSIsInNldFZhbHVlIiwic2hvd1NldHRpbmdzIiwia2V5QmluZGluZyIsIiRkZWZhdWx0SGFuZGxlciIsImNvbW1hbmRzIiwic2hvd1NldHRpbmdzTWVudSIsImV4ZWMiLCJyZXNpemUiLCJzZXRFZGl0b3JSZWYiLCJlZGl0b3JSZWYiLCJjdXJyZW50IiwiYXJndW1lbnRzIiwicmVuZGVyIiwicmVhZE9ubHkiLCJpZCIsImNzcyIsInNldCIsImV2ZW50IiwibmV3Q3NzIiwiY3VycmVudENTUyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFB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OztBQUVEMUQsY0FBWSxDQUFDeUQsS0FBRCxFQUFRRSxVQUFSLEVBQW9CO0FBQzVCLFFBQUksQ0FBQyxLQUFLbEUsS0FBTCxDQUFXTyxZQUFoQixFQUE4QjtBQUM5QixTQUFLUCxLQUFMLENBQVdPLFlBQVgsQ0FBd0IyRCxVQUF4QjtBQUNIOztBQUVEMUQsWUFBVSxHQUFHO0FBQ1QsUUFBSSxLQUFLUixLQUFMLENBQVdRLFVBQWYsRUFBMkIsS0FBS1IsS0FBTCxDQUFXUSxVQUFYO0FBQzlCOztBQWpGa0QiLCJmaWxlIjoiLi9zcmMvdWkvY3VzdG9tY3NzL2Nzc2VkaXRvci5qc3guanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlYWN0LCBTZXR0aW5ncywgRXZlbnRzLCBTdHJpbmdzfSBmcm9tIFwibW9kdWxlc1wiO1xyXG5cclxuaW1wb3J0IEVkaXRvciBmcm9tIFwiLi9lZGl0b3JcIjtcclxuLy8gaW1wb3J0IENoZWNrYm94IGZyb20gXCIuL2NoZWNrYm94XCI7XHJcbmltcG9ydCBSZWZyZXNoIGZyb20gXCIuLi9pY29ucy9yZWxvYWRcIjtcclxuaW1wb3J0IFNhdmUgZnJvbSBcIi4uL2ljb25zL3NhdmVcIjtcclxuaW1wb3J0IEVkaXQgZnJvbSBcIi4uL2ljb25zL2VkaXRcIjtcclxuaW1wb3J0IENvZyBmcm9tIFwiLi4vaWNvbnMvY29nXCI7XHJcbmltcG9ydCBEZXRhY2ggZnJvbSBcIi4uL2ljb25zL2RldGFjaFwiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ3NzRWRpdG9yIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcm9wcykge1xyXG4gICAgICAgIHN1cGVyKHByb3BzKTtcclxuXHJcbiAgICAgICAgdGhpcy5oYXNVbnNhdmVkQ2hhbmdlcyA9IGZhbHNlO1xyXG5cclxuICAgICAgICB0aGlzLm9uQ2hhbmdlID0gdGhpcy5vbkNoYW5nZS5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMudG9nZ2xlTGl2ZVVwZGF0ZSA9IHRoaXMudG9nZ2xlTGl2ZVVwZGF0ZS5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlQ3NzID0gdGhpcy51cGRhdGVDc3MuYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLnNhdmVDc3MgPSB0aGlzLnNhdmVDc3MuYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLm9wZW5EZXRhY2hlZCA9IHRoaXMucHJvcHMub3BlbkRldGFjaGVkID8gdGhpcy5vcGVuRGV0YWNoZWQuYmluZCh0aGlzKSA6IG51bGw7XHJcbiAgICAgICAgdGhpcy5vcGVuTmF0aXZlID0gdGhpcy5vcGVuTmF0aXZlLmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVFZGl0b3IgPSB0aGlzLnVwZGF0ZUVkaXRvci5iaW5kKHRoaXMpO1xyXG5cclxuICAgICAgICB0aGlzLmNvbnRyb2xzID0gW1xyXG4gICAgICAgICAgICB7bGFiZWw6IFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVmcmVzaCwge3NpemU6IFwiMThweFwifSksIHRvb2x0aXA6IFN0cmluZ3MuQ3VzdG9tQ1NTLnVwZGF0ZSwgb25DbGljazogdGhpcy51cGRhdGVDc3N9LFxyXG4gICAgICAgICAgICB7bGFiZWw6IFJlYWN0LmNyZWF0ZUVsZW1lbnQoU2F2ZSwge3NpemU6IFwiMThweFwifSksIHRvb2x0aXA6IFN0cmluZ3MuQ3VzdG9tQ1NTLnNhdmUsIG9uQ2xpY2s6IHRoaXMuc2F2ZUNzc30sXHJcbiAgICAgICAgICAgIHtsYWJlbDogUmVhY3QuY3JlYXRlRWxlbWVudChFZGl0LCB7c2l6ZTogXCIxOHB4XCJ9KSwgdG9vbHRpcDogU3RyaW5ncy5DdXN0b21DU1Mub3Blbk5hdGl2ZSwgb25DbGljazogdGhpcy5vcGVuTmF0aXZlfSxcclxuICAgICAgICAgICAge2xhYmVsOiBSZWFjdC5jcmVhdGVFbGVtZW50KENvZywge3NpemU6IFwiMThweFwifSksIHRvb2x0aXA6IFN0cmluZ3MuQ3VzdG9tQ1NTLnNldHRpbmdzLCBvbkNsaWNrOiBcInNob3dTZXR0aW5nc1wifSxcclxuICAgICAgICAgICAge2xhYmVsOiBTdHJpbmdzLkNvbGxlY3Rpb25zLnNldHRpbmdzLmN1c3RvbWNzcy5saXZlVXBkYXRlLm5hbWUsIHR5cGU6XCJjaGVja2JveFwiLCBvbkNoYW5nZTogdGhpcy50b2dnbGVMaXZlVXBkYXRlLCBjaGVja2VkOiBTZXR0aW5ncy5nZXQoXCJzZXR0aW5nc1wiLCBcImN1c3RvbWNzc1wiLCBcImxpdmVVcGRhdGVcIiksIHNpZGU6IFwicmlnaHRcIn1cclxuICAgICAgICBdO1xyXG4gICAgICAgIGlmICh0aGlzLm9wZW5EZXRhY2hlZCkgdGhpcy5jb250cm9scy5wdXNoKHtsYWJlbDogUmVhY3QuY3JlYXRlRWxlbWVudChEZXRhY2gsIHtzaXplOiBcIjE4cHhcIn0pLCB0b29sdGlwOiBTdHJpbmdzLkN1c3RvbUNTUy5vcGVuRGV0YWNoZWQsIG9uQ2xpY2s6IHRoaXMub3BlbkRldGFjaGVkLCBzaWRlOiBcInJpZ2h0XCJ9KTtcclxuICAgIH1cclxuXHJcbiAgICBjb21wb25lbnREaWRNb3VudCgpIHtcclxuICAgICAgICBFdmVudHMub24oXCJjdXN0b21jc3MtdXBkYXRlZFwiLCB0aGlzLnVwZGF0ZUVkaXRvcik7XHJcbiAgICB9XHJcblxyXG4gICAgY29tcG9uZW50V2lsbFVubW91bnQoKSB7XHJcbiAgICAgICAgRXZlbnRzLm9mZihcImN1c3RvbWNzcy11cGRhdGVkXCIsIHRoaXMudXBkYXRlRWRpdG9yKTtcclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGVFZGl0b3IobmV3Q1NTKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmVkaXRvcikgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMuZWRpdG9yLnZhbHVlID0gbmV3Q1NTO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCB2YWx1ZSgpIHtyZXR1cm4gdGhpcy5lZGl0b3Iuc2Vzc2lvbi5nZXRWYWx1ZSgpO31cclxuICAgIHNldCB2YWx1ZShuZXdWYWx1ZSkge1xyXG4gICAgICAgIHRoaXMuZWRpdG9yLnNldFZhbHVlKG5ld1ZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBzaG93U2V0dGluZ3MoKSB7cmV0dXJuIHRoaXMuZWRpdG9yLmtleUJpbmRpbmcuJGRlZmF1bHRIYW5kbGVyLmNvbW1hbmRzLnNob3dTZXR0aW5nc01lbnUuZXhlYyh0aGlzLmVkaXRvcik7fVxyXG4gICAgcmVzaXplKCkge3JldHVybiB0aGlzLmVkaXRvci5yZXNpemUoKTt9XHJcblxyXG4gICAgc2V0RWRpdG9yUmVmKGVkaXRvcikge1xyXG4gICAgICAgIHRoaXMuZWRpdG9yID0gZWRpdG9yO1xyXG4gICAgICAgIGlmICh0aGlzLnByb3BzLmVkaXRvclJlZiAmJiB0eXBlb2YodGhpcy5wcm9wcy5lZGl0b3JSZWYuY3VycmVudCkgIT09IFwidW5kZWZpbmVkXCIpIHRoaXMucHJvcHMuZWRpdG9yUmVmLmN1cnJlbnQgPSBlZGl0b3I7XHJcbiAgICAgICAgZWxzZSBpZiAodGhpcy5wcm9wcy5lZGl0b3JSZWYpIHRoaXMucHJvcHMuZWRpdG9yUmVmID0gZWRpdG9yO1xyXG4gICAgfVxyXG5cclxuICAgIG9uQ2hhbmdlKCkge1xyXG4gICAgICAgIHRoaXMuaGFzVW5zYXZlZENoYW5nZXMgPSB0cnVlO1xyXG4gICAgICAgIGlmICh0aGlzLnByb3BzLm9uQ2hhbmdlKSB0aGlzLnByb3BzLm9uQ2hhbmdlKC4uLmFyZ3VtZW50cyk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIHJldHVybiA8RWRpdG9yIHJlZj17dGhpcy5zZXRFZGl0b3JSZWYuYmluZCh0aGlzKX0gcmVhZE9ubHk9e3RoaXMucHJvcHMucmVhZE9ubHl9IGlkPXt0aGlzLnByb3BzLmlkIHx8IFwiYmQtY3VzdG9tY3NzLWVkaXRvclwifSBvbkNoYW5nZT17dGhpcy5vbkNoYW5nZX0gY29udHJvbHM9e3RoaXMuY29udHJvbHN9IHZhbHVlPXt0aGlzLnByb3BzLmNzc30gLz47XHJcbiAgICB9XHJcblxyXG4gICAgdG9nZ2xlTGl2ZVVwZGF0ZShjaGVja2VkKSB7XHJcbiAgICAgICAgU2V0dGluZ3Muc2V0KFwic2V0dGluZ3NcIiwgXCJjdXN0b21jc3NcIiwgXCJsaXZlVXBkYXRlXCIsIGNoZWNrZWQpO1xyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZUNzcyhldmVudCwgbmV3Q3NzKSB7XHJcbiAgICAgICAgaWYgKHRoaXMucHJvcHMudXBkYXRlKSB0aGlzLnByb3BzLnVwZGF0ZShuZXdDc3MpO1xyXG4gICAgfVxyXG5cclxuICAgIHNhdmVDc3MoZXZlbnQsIG5ld0Nzcykge1xyXG4gICAgICAgIHRoaXMuaGFzVW5zYXZlZENoYW5nZXMgPSBmYWxzZTtcclxuICAgICAgICBpZiAodGhpcy5wcm9wcy5zYXZlKSB0aGlzLnByb3BzLnNhdmUobmV3Q3NzKTtcclxuICAgIH1cclxuXHJcbiAgICBvcGVuRGV0YWNoZWQoZXZlbnQsIGN1cnJlbnRDU1MpIHtcclxuICAgICAgICBpZiAoIXRoaXMucHJvcHMub3BlbkRldGFjaGVkKSByZXR1cm47XHJcbiAgICAgICAgdGhpcy5wcm9wcy5vcGVuRGV0YWNoZWQoY3VycmVudENTUyk7XHJcbiAgICB9XHJcblxyXG4gICAgb3Blbk5hdGl2ZSgpIHtcclxuICAgICAgICBpZiAodGhpcy5wcm9wcy5vcGVuTmF0aXZlKSB0aGlzLnByb3BzLm9wZW5OYXRpdmUoKTtcclxuICAgIH1cclxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/customcss/csseditor.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return CssEditor; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _editor__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./editor */ \"./src/ui/customcss/editor.jsx\");\n/* harmony import */ var _icons_reload__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../icons/reload */ \"./src/ui/icons/reload.jsx\");\n/* harmony import */ var _icons_save__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../icons/save */ \"./src/ui/icons/save.jsx\");\n/* harmony import */ var _icons_edit__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../icons/edit */ \"./src/ui/icons/edit.jsx\");\n/* harmony import */ var _icons_cog__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../icons/cog */ \"./src/ui/icons/cog.jsx\");\n/* harmony import */ var _icons_detach__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../icons/detach */ \"./src/ui/icons/detach.jsx\");\n\n // import Checkbox from \"./checkbox\";\n\n\n\n\n\n\nclass CssEditor extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n this.hasUnsavedChanges = false;\n this.onChange = this.onChange.bind(this);\n this.toggleLiveUpdate = this.toggleLiveUpdate.bind(this);\n this.updateCss = this.updateCss.bind(this);\n this.saveCss = this.saveCss.bind(this);\n this.openDetached = this.props.openDetached ? this.openDetached.bind(this) : null;\n this.openNative = this.openNative.bind(this);\n this.updateEditor = this.updateEditor.bind(this);\n this.controls = [{\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_reload__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n size: \"18px\"\n }),\n tooltip: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].CustomCSS.update,\n onClick: this.updateCss\n }, {\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_save__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n size: \"18px\"\n }),\n tooltip: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].CustomCSS.save,\n onClick: this.saveCss\n }, {\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_edit__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n size: \"18px\"\n }),\n tooltip: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].CustomCSS.openNative,\n onClick: this.openNative\n }, {\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_cog__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n size: \"18px\"\n }),\n tooltip: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].CustomCSS.settings,\n onClick: \"showSettings\"\n }, {\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Collections.settings.customcss.liveUpdate.name,\n type: \"checkbox\",\n onChange: this.toggleLiveUpdate,\n checked: modules__WEBPACK_IMPORTED_MODULE_0__[\"Settings\"].get(\"settings\", \"customcss\", \"liveUpdate\"),\n side: \"right\"\n }];\n if (this.openDetached) this.controls.push({\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_detach__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n size: \"18px\"\n }),\n tooltip: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].CustomCSS.openDetached,\n onClick: this.openDetached,\n side: \"right\"\n });\n }\n\n componentDidMount() {\n modules__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].on(\"customcss-updated\", this.updateEditor);\n }\n\n componentWillUnmount() {\n modules__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].off(\"customcss-updated\", this.updateEditor);\n }\n\n updateEditor(newCSS) {\n if (!this.editor) return;\n this.editor.value = newCSS;\n }\n\n get value() {\n return this.editor.session.getValue();\n }\n\n set value(newValue) {\n this.editor.setValue(newValue);\n }\n\n showSettings() {\n return this.editor.keyBinding.$defaultHandler.commands.showSettingsMenu.exec(this.editor);\n }\n\n resize() {\n return this.editor.resize();\n }\n\n setEditorRef(editor) {\n this.editor = editor;\n if (this.props.editorRef && typeof this.props.editorRef.current !== \"undefined\") this.props.editorRef.current = editor;else if (this.props.editorRef) this.props.editorRef = editor;\n }\n\n onChange() {\n this.hasUnsavedChanges = true;\n if (this.props.onChange) this.props.onChange(...arguments);\n }\n\n render() {\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_editor__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n ref: this.setEditorRef.bind(this),\n readOnly: this.props.readOnly,\n id: this.props.id || \"bd-customcss-editor\",\n onChange: this.onChange,\n controls: this.controls,\n value: this.props.css\n });\n }\n\n toggleLiveUpdate(checked) {\n modules__WEBPACK_IMPORTED_MODULE_0__[\"Settings\"].set(\"settings\", \"customcss\", \"liveUpdate\", checked);\n }\n\n updateCss(event, newCss) {\n if (this.props.update) this.props.update(newCss);\n }\n\n saveCss(event, newCss) {\n this.hasUnsavedChanges = false;\n if (this.props.save) this.props.save(newCss);\n }\n\n openDetached(event, currentCSS) {\n if (!this.props.openDetached) return;\n this.props.openDetached(currentCSS);\n }\n\n openNative() {\n if (this.props.openNative) this.props.openNative();\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvY3VzdG9tY3NzL2Nzc2VkaXRvci5qc3g/NDIzMCJdLCJuYW1lcyI6WyJDc3NFZGl0b3IiLCJSZWFjdCIsIkNvbXBvbmVudCIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJoYXNVbnNhdmVkQ2hhbmdlcyIsIm9uQ2hhbmdlIiwiYmluZCIsInRvZ2dsZUxpdmVVcGRhdGUiLCJ1cGRhdGVDc3MiLCJzYXZlQ3NzIiwib3BlbkRldGFjaGVkIiwib3Blbk5hdGl2ZSIsInVwZGF0ZUVkaXRvciIsImNvbnRyb2xzIiwibGFiZWwiLCJjcmVhdGVFbGVtZW50IiwiUmVmcmVzaCIsInNpemUiLCJ0b29sdGlwIiwiU3RyaW5ncyIsIkN1c3RvbUNTUyIsInVwZGF0ZSIsIm9uQ2xpY2siLCJTYXZlIiwic2F2ZSIsIkVkaXQiLCJDb2ciLCJzZXR0aW5ncyIsIkNvbGxlY3Rpb25zIiwiY3VzdG9tY3NzIiwibGl2ZVVwZGF0ZSIsIm5hbWUiLCJ0eXBlIiwiY2hlY2tlZCIsIlNldHRpbmdzIiwiZ2V0Iiwic2lkZSIsInB1c2giLCJEZXRhY2giLCJjb21wb25lbnREaWRNb3VudCIsIkV2ZW50cyIsIm9uIiwiY29tcG9uZW50V2lsbFVubW91bnQiLCJvZmYiLCJuZXdDU1MiLCJlZGl0b3IiLCJ2YWx1ZSIsInNlc3Npb24iLCJnZXRWYWx1ZSIsIm5ld1ZhbHVlIiwic2V0VmFsdWUiLCJzaG93U2V0dGluZ3MiLCJrZXlCaW5kaW5nIiwiJGRlZmF1bHRIYW5kbGVyIiwiY29tbWFuZHMiLCJzaG93U2V0dGluZ3NNZW51IiwiZXhlYyIsInJlc2l6ZSIsInNldEVkaXRvclJlZiIsImVkaXRvclJlZiIsImN1cnJlbnQiLCJhcmd1bWVudHMiLCJyZW5kZXIiLCJyZWFkT25seSIsImlkIiwiY3NzIiwic2V0IiwiZXZlbnQiLCJuZXdDc3MiLCJjdXJyZW50Q1NTIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FB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RUQxRCxjQUFZLENBQUN5RCxLQUFELEVBQVFFLFVBQVIsRUFBb0I7QUFDNUIsUUFBSSxDQUFDLEtBQUtsRSxLQUFMLENBQVdPLFlBQWhCLEVBQThCO0FBQzlCLFNBQUtQLEtBQUwsQ0FBV08sWUFBWCxDQUF3QjJELFVBQXhCO0FBQ0g7O0FBRUQxRCxZQUFVLEdBQUc7QUFDVCxRQUFJLEtBQUtSLEtBQUwsQ0FBV1EsVUFBZixFQUEyQixLQUFLUixLQUFMLENBQVdRLFVBQVg7QUFDOUI7O0FBakZrRCIsImZpbGUiOiIuL3NyYy91aS9jdXN0b21jc3MvY3NzZWRpdG9yLmpzeC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhY3QsIFNldHRpbmdzLCBFdmVudHMsIFN0cmluZ3N9IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5pbXBvcnQgRWRpdG9yIGZyb20gXCIuL2VkaXRvclwiO1xyXG4vLyBpbXBvcnQgQ2hlY2tib3ggZnJvbSBcIi4vY2hlY2tib3hcIjtcclxuaW1wb3J0IFJlZnJlc2ggZnJvbSBcIi4uL2ljb25zL3JlbG9hZFwiO1xyXG5pbXBvcnQgU2F2ZSBmcm9tIFwiLi4vaWNvbnMvc2F2ZVwiO1xyXG5pbXBvcnQgRWRpdCBmcm9tIFwiLi4vaWNvbnMvZWRpdFwiO1xyXG5pbXBvcnQgQ29nIGZyb20gXCIuLi9pY29ucy9jb2dcIjtcclxuaW1wb3J0IERldGFjaCBmcm9tIFwiLi4vaWNvbnMvZGV0YWNoXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDc3NFZGl0b3IgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByb3BzKSB7XHJcbiAgICAgICAgc3VwZXIocHJvcHMpO1xyXG5cclxuICAgICAgICB0aGlzLmhhc1Vuc2F2ZWRDaGFuZ2VzID0gZmFsc2U7XHJcblxyXG4gICAgICAgIHRoaXMub25DaGFuZ2UgPSB0aGlzLm9uQ2hhbmdlLmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy50b2dnbGVMaXZlVXBkYXRlID0gdGhpcy50b2dnbGVMaXZlVXBkYXRlLmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVDc3MgPSB0aGlzLnVwZGF0ZUNzcy5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMuc2F2ZUNzcyA9IHRoaXMuc2F2ZUNzcy5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMub3BlbkRldGFjaGVkID0gdGhpcy5wcm9wcy5vcGVuRGV0YWNoZWQgPyB0aGlzLm9wZW5EZXRhY2hlZC5iaW5kKHRoaXMpIDogbnVsbDtcclxuICAgICAgICB0aGlzLm9wZW5OYXRpdmUgPSB0aGlzLm9wZW5OYXRpdmUuYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUVkaXRvciA9IHRoaXMudXBkYXRlRWRpdG9yLmJpbmQodGhpcyk7XHJcblxyXG4gICAgICAgIHRoaXMuY29udHJvbHMgPSBbXHJcbiAgICAgICAgICAgIHtsYWJlbDogUmVhY3QuY3JlYXRlRWxlbWVudChSZWZyZXNoLCB7c2l6ZTogXCIxOHB4XCJ9KSwgdG9vbHRpcDogU3RyaW5ncy5DdXN0b21DU1MudXBkYXRlLCBvbkNsaWNrOiB0aGlzLnVwZGF0ZUNzc30sXHJcbiAgICAgICAgICAgIHtsYWJlbDogUmVhY3QuY3JlYXRlRWxlbWVudChTYXZlLCB7c2l6ZTogXCIxOHB4XCJ9KSwgdG9vbHRpcDogU3RyaW5ncy5DdXN0b21DU1Muc2F2ZSwgb25DbGljazogdGhpcy5zYXZlQ3NzfSxcclxuICAgICAgICAgICAge2xhYmVsOiBSZWFjdC5jcmVhdGVFbGVtZW50KEVkaXQsIHtzaXplOiBcIjE4cHhcIn0pLCB0b29sdGlwOiBTdHJpbmdzLkN1c3RvbUNTUy5vcGVuTmF0aXZlLCBvbkNsaWNrOiB0aGlzLm9wZW5OYXRpdmV9LFxyXG4gICAgICAgICAgICB7bGFiZWw6IFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ29nLCB7c2l6ZTogXCIxOHB4XCJ9KSwgdG9vbHRpcDogU3RyaW5ncy5DdXN0b21DU1Muc2V0dGluZ3MsIG9uQ2xpY2s6IFwic2hvd1NldHRpbmdzXCJ9LFxyXG4gICAgICAgICAgICB7bGFiZWw6IFN0cmluZ3MuQ29sbGVjdGlvbnMuc2V0dGluZ3MuY3VzdG9tY3NzLmxpdmVVcGRhdGUubmFtZSwgdHlwZTpcImNoZWNrYm94XCIsIG9uQ2hhbmdlOiB0aGlzLnRvZ2dsZUxpdmVVcGRhdGUsIGNoZWNrZWQ6IFNldHRpbmdzLmdldChcInNldHRpbmdzXCIsIFwiY3VzdG9tY3NzXCIsIFwibGl2ZVVwZGF0ZVwiKSwgc2lkZTogXCJyaWdodFwifVxyXG4gICAgICAgIF07XHJcbiAgICAgICAgaWYgKHRoaXMub3BlbkRldGFjaGVkKSB0aGlzLmNvbnRyb2xzLnB1c2goe2xhYmVsOiBSZWFjdC5jcmVhdGVFbGVtZW50KERldGFjaCwge3NpemU6IFwiMThweFwifSksIHRvb2x0aXA6IFN0cmluZ3MuQ3VzdG9tQ1NTLm9wZW5EZXRhY2hlZCwgb25DbGljazogdGhpcy5vcGVuRGV0YWNoZWQsIHNpZGU6IFwicmlnaHRcIn0pO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbXBvbmVudERpZE1vdW50KCkge1xyXG4gICAgICAgIEV2ZW50cy5vbihcImN1c3RvbWNzcy11cGRhdGVkXCIsIHRoaXMudXBkYXRlRWRpdG9yKTtcclxuICAgIH1cclxuXHJcbiAgICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcclxuICAgICAgICBFdmVudHMub2ZmKFwiY3VzdG9tY3NzLXVwZGF0ZWRcIiwgdGhpcy51cGRhdGVFZGl0b3IpO1xyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZUVkaXRvcihuZXdDU1MpIHtcclxuICAgICAgICBpZiAoIXRoaXMuZWRpdG9yKSByZXR1cm47XHJcbiAgICAgICAgdGhpcy5lZGl0b3IudmFsdWUgPSBuZXdDU1M7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHZhbHVlKCkge3JldHVybiB0aGlzLmVkaXRvci5zZXNzaW9uLmdldFZhbHVlKCk7fVxyXG4gICAgc2V0IHZhbHVlKG5ld1ZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5lZGl0b3Iuc2V0VmFsdWUobmV3VmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHNob3dTZXR0aW5ncygpIHtyZXR1cm4gdGhpcy5lZGl0b3Iua2V5QmluZGluZy4kZGVmYXVsdEhhbmRsZXIuY29tbWFuZHMuc2hvd1NldHRpbmdzTWVudS5leGVjKHRoaXMuZWRpdG9yKTt9XHJcbiAgICByZXNpemUoKSB7cmV0dXJuIHRoaXMuZWRpdG9yLnJlc2l6ZSgpO31cclxuXHJcbiAgICBzZXRFZGl0b3JSZWYoZWRpdG9yKSB7XHJcbiAgICAgICAgdGhpcy5lZGl0b3IgPSBlZGl0b3I7XHJcbiAgICAgICAgaWYgKHRoaXMucHJvcHMuZWRpdG9yUmVmICYmIHR5cGVvZih0aGlzLnByb3BzLmVkaXRvclJlZi5jdXJyZW50KSAhPT0gXCJ1bmRlZmluZWRcIikgdGhpcy5wcm9wcy5lZGl0b3JSZWYuY3VycmVudCA9IGVkaXRvcjtcclxuICAgICAgICBlbHNlIGlmICh0aGlzLnByb3BzLmVkaXRvclJlZikgdGhpcy5wcm9wcy5lZGl0b3JSZWYgPSBlZGl0b3I7XHJcbiAgICB9XHJcblxyXG4gICAgb25DaGFuZ2UoKSB7XHJcbiAgICAgICAgdGhpcy5oYXNVbnNhdmVkQ2hhbmdlcyA9IHRydWU7XHJcbiAgICAgICAgaWYgKHRoaXMucHJvcHMub25DaGFuZ2UpIHRoaXMucHJvcHMub25DaGFuZ2UoLi4uYXJndW1lbnRzKTtcclxuICAgIH1cclxuXHJcbiAgICByZW5kZXIoKSB7XHJcbiAgICAgICAgcmV0dXJuIDxFZGl0b3IgcmVmPXt0aGlzLnNldEVkaXRvclJlZi5iaW5kKHRoaXMpfSByZWFkT25seT17dGhpcy5wcm9wcy5yZWFkT25seX0gaWQ9e3RoaXMucHJvcHMuaWQgfHwgXCJiZC1jdXN0b21jc3MtZWRpdG9yXCJ9IG9uQ2hhbmdlPXt0aGlzLm9uQ2hhbmdlfSBjb250cm9scz17dGhpcy5jb250cm9sc30gdmFsdWU9e3RoaXMucHJvcHMuY3NzfSAvPjtcclxuICAgIH1cclxuXHJcbiAgICB0b2dnbGVMaXZlVXBkYXRlKGNoZWNrZWQpIHtcclxuICAgICAgICBTZXR0aW5ncy5zZXQoXCJzZXR0aW5nc1wiLCBcImN1c3RvbWNzc1wiLCBcImxpdmVVcGRhdGVcIiwgY2hlY2tlZCk7XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlQ3NzKGV2ZW50LCBuZXdDc3MpIHtcclxuICAgICAgICBpZiAodGhpcy5wcm9wcy51cGRhdGUpIHRoaXMucHJvcHMudXBkYXRlKG5ld0Nzcyk7XHJcbiAgICB9XHJcblxyXG4gICAgc2F2ZUNzcyhldmVudCwgbmV3Q3NzKSB7XHJcbiAgICAgICAgdGhpcy5oYXNVbnNhdmVkQ2hhbmdlcyA9IGZhbHNlO1xyXG4gICAgICAgIGlmICh0aGlzLnByb3BzLnNhdmUpIHRoaXMucHJvcHMuc2F2ZShuZXdDc3MpO1xyXG4gICAgfVxyXG5cclxuICAgIG9wZW5EZXRhY2hlZChldmVudCwgY3VycmVudENTUykge1xyXG4gICAgICAgIGlmICghdGhpcy5wcm9wcy5vcGVuRGV0YWNoZWQpIHJldHVybjtcclxuICAgICAgICB0aGlzLnByb3BzLm9wZW5EZXRhY2hlZChjdXJyZW50Q1NTKTtcclxuICAgIH1cclxuXHJcbiAgICBvcGVuTmF0aXZlKCkge1xyXG4gICAgICAgIGlmICh0aGlzLnByb3BzLm9wZW5OYXRpdmUpIHRoaXMucHJvcHMub3Blbk5hdGl2ZSgpO1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/customcss/csseditor.jsx\n"); /***/ }), @@ -743,7 +742,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return CodeEditor; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _checkbox__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./checkbox */ \"./src/ui/customcss/checkbox.jsx\");\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\n\n\nconst Tooltip = modules__WEBPACK_IMPORTED_MODULE_0__[\"WebpackModules\"].getByDisplayName(\"Tooltip\");\nconst languages = [\"abap\", \"abc\", \"actionscript\", \"ada\", \"apache_conf\", \"asciidoc\", \"assembly_x86\", \"autohotkey\", \"batchfile\", \"bro\", \"c_cpp\", \"c9search\", \"cirru\", \"clojure\", \"cobol\", \"coffee\", \"coldfusion\", \"csharp\", \"csound_document\", \"csound_orchestra\", \"csound_score\", \"css\", \"curly\", \"d\", \"dart\", \"diff\", \"dockerfile\", \"dot\", \"drools\", \"dummy\", \"dummysyntax\", \"eiffel\", \"ejs\", \"elixir\", \"elm\", \"erlang\", \"forth\", \"fortran\", \"ftl\", \"gcode\", \"gherkin\", \"gitignore\", \"glsl\", \"gobstones\", \"golang\", \"graphqlschema\", \"groovy\", \"haml\", \"handlebars\", \"haskell\", \"haskell_cabal\", \"haxe\", \"hjson\", \"html\", \"html_elixir\", \"html_ruby\", \"ini\", \"io\", \"jack\", \"jade\", \"java\", \"javascript\", \"json\", \"jsoniq\", \"jsp\", \"jssm\", \"jsx\", \"julia\", \"kotlin\", \"latex\", \"less\", \"liquid\", \"lisp\", \"livescript\", \"logiql\", \"lsl\", \"lua\", \"luapage\", \"lucene\", \"makefile\", \"markdown\", \"mask\", \"matlab\", \"maze\", \"mel\", \"mushcode\", \"mysql\", \"nix\", \"nsis\", \"objectivec\", \"ocaml\", \"pascal\", \"perl\", \"pgsql\", \"php\", \"pig\", \"powershell\", \"praat\", \"prolog\", \"properties\", \"protobuf\", \"python\", \"r\", \"razor\", \"rdoc\", \"red\", \"rhtml\", \"rst\", \"ruby\", \"rust\", \"sass\", \"scad\", \"scala\", \"scheme\", \"scss\", \"sh\", \"sjs\", \"smarty\", \"snippets\", \"soy_template\", \"space\", \"sql\", \"sqlserver\", \"stylus\", \"svg\", \"swift\", \"tcl\", \"tex\", \"text\", \"textile\", \"toml\", \"tsx\", \"twig\", \"typescript\", \"vala\", \"vbscript\", \"velocity\", \"verilog\", \"vhdl\", \"wollok\", \"xml\", \"xquery\", \"yaml\", \"django\"];\nconst themes = [\"chrome\", \"clouds\", \"crimson_editor\", \"dawn\", \"dreamweaver\", \"eclipse\", \"github\", \"iplastic\", \"solarized_light\", \"textmate\", \"tomorrow\", \"xcode\", \"kuroir\", \"katzenmilch\", \"sqlserver\", \"ambiance\", \"chaos\", \"clouds_midnight\", \"cobalt\", \"gruvbox\", \"gob\", \"idle_fingers\", \"kr_theme\", \"merbivore\", \"merbivore_soft\", \"mono_industrial\", \"monokai\", \"pastel_on_dark\", \"solarized_dark\", \"terminal\", \"tomorrow_night\", \"tomorrow_night_blue\", \"tomorrow_night_bright\", \"tomorrow_night_eighties\", \"twilight\", \"vibrant_ink\"];\nclass CodeEditor extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n static get defaultId() {\n return \"bd-editor\";\n }\n\n constructor(props) {\n super(props);\n\n for (const control of this.props.controls) {\n if (control.type == \"checkbox\") continue;\n if (control.onClick == \"showSettings\") control.onClick = this.showSettings.bind(this);\n }\n\n this.props.theme = this.props.theme.toLowerCase().replace(/ /g, \"_\");\n if (!themes.includes(this.props.theme)) this.props.theme = CodeEditor.defaultProps.theme;\n this.props.language = this.props.language.toLowerCase().replace(/ /g, \"_\");\n if (!languages.includes(this.props.language)) this.props.language = CodeEditor.defaultProps.language;\n this.onChange = this.onChange.bind(this);\n }\n\n static get defaultProps() {\n return {\n controls: [],\n theme: \"bd-monokai\",\n language: \"css\",\n id: this.defaultId,\n fontSize: 14\n };\n }\n\n static get themes() {\n return themes;\n }\n\n componentDidMount() {\n this.editor = ace.edit(this.props.id); // Add id to the ace menu container\n\n const originalShow = this.editor.keyBinding.$defaultHandler.commands.showSettingsMenu.exec;\n\n this.editor.keyBinding.$defaultHandler.commands.showSettingsMenu.exec = function () {\n originalShow.apply(this, arguments);\n const observer = new MutationObserver(mutations => {\n for (const mutation of mutations) {\n if (!mutation.addedNodes.length || !(mutation.addedNodes[0] instanceof Element)) continue;\n const node = mutation.addedNodes[0];\n if (node.parentElement !== document.body || !node.querySelector(\"#ace_settingsmenu\")) continue;\n node.id = \"ace_settingsmenu_container\";\n observer.disconnect();\n }\n });\n observer.observe(document.body, {\n childList: true\n });\n };\n\n const theme = this.props.theme == CodeEditor.defaultProps.theme ? this.props.theme.split(\"-\")[1] : this.props.theme;\n this.editor.setTheme(`ace/theme/${theme}`);\n this.editor.session.setMode(`ace/mode/${this.props.language}`);\n this.editor.setShowPrintMargin(false);\n this.editor.setFontSize(this.props.fontSize);\n this.editor.on(\"change\", this.onChange);\n }\n\n componentWillUnmount() {\n this.editor.destroy();\n }\n\n get value() {\n return this.editor.session.getValue();\n }\n\n set value(newValue) {\n this.editor.setValue(newValue);\n }\n\n onChange() {\n if (this.props.onChange) this.props.onChange(this.value);\n }\n\n showSettings() {\n return this.editor.keyBinding.$defaultHandler.commands.showSettingsMenu.exec(this.editor);\n }\n\n resize() {\n return this.editor.resize();\n }\n\n buildControl(control) {\n if (control.type == \"checkbox\") return this.makeCheckbox(control);\n return this.makeButton(control);\n }\n\n makeCheckbox(checkbox) {\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_checkbox__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n text: checkbox.label,\n onChange: checkbox.onChange,\n checked: checkbox.checked\n });\n }\n\n makeButton(button) {\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(Tooltip, {\n color: \"black\",\n position: \"top\",\n text: button.tooltip\n }, props => {\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"button\", _extends({}, props, {\n className: \"btn btn-primary\",\n onClick: event => {\n button.onClick(event, this.value);\n }\n }), button.label);\n });\n }\n\n render() {\n if (this.editor && this.editor.resize) this.editor.resize();\n const controlsLeft = this.props.controls.filter(c => c.side != \"right\").map(this.buildControl.bind(this));\n const controlsRight = this.props.controls.filter(c => c.side == \"right\").map(this.buildControl.bind(this));\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n id: \"bd-editor-panel\",\n className: this.props.theme\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n id: \"bd-editor-controls\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"controls-section controls-left\"\n }, controlsLeft), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"controls-section controls-right\"\n }, controlsRight)), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"editor-wrapper\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n id: this.props.id,\n className: \"editor \" + this.props.theme\n }, this.props.value)));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL2N1c3RvbWNzcy9lZGl0b3IuanN4P2ZmZTIiXSwibmFtZXMiOlsiVG9vbHRpcCIsIldlYnBhY2tNb2R1bGVzIiwiZ2V0QnlEaXNwbGF5TmFtZSIsImxhbmd1YWdlcyIsInRoZW1lcyIsIkNvZGVFZGl0b3IiLCJSZWFjdCIsIkNvbXBvbmVudCIsImRlZmF1bHRJZCIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJjb250cm9sIiwiY29udHJvbHMiLCJ0eXBlIiwib25DbGljayIsInNob3dTZXR0aW5ncyIsImJpbmQiLCJ0aGVtZSIsInRvTG93ZXJDYXNlIiwicmVwbGFjZSIsImluY2x1ZGVzIiwiZGVmYXVsdFByb3BzIiwibGFuZ3VhZ2UiLCJvbkNoYW5nZSIsImlkIiwiZm9udFNpemUiLCJjb21wb25lbnREaWRNb3VudCIsImVkaXRvciIsImFjZSIsImVkaXQiLCJvcmlnaW5hbFNob3ciLCJrZXlCaW5kaW5nIiwiJGRlZmF1bHRIYW5kbGVyIiwiY29tbWFuZHMiLCJzaG93U2V0dGluZ3NNZW51IiwiZXhlYyIsImFwcGx5IiwiYXJndW1lbnRzIiwib2JzZXJ2ZXIiLCJNdXRhdGlvbk9ic2VydmVyIiwibXV0YXRpb25zIiwibXV0YXRpb24iLCJhZGRlZE5vZGVzIiwibGVuZ3RoIiwiRWxlbWVudCIsIm5vZGUiLCJwYXJlbnRFbGVtZW50IiwiZG9jdW1lbnQiLCJib2R5IiwicXVlcnlTZWxlY3RvciIsImRpc2Nvbm5lY3QiLCJvYnNlcnZlIiwiY2hpbGRMaXN0Iiwic3BsaXQiLCJzZXRUaGVtZSIsInNlc3Npb24iLCJzZXRNb2RlIiwic2V0U2hvd1ByaW50TWFyZ2luIiwic2V0Rm9udFNpemUiLCJvbiIsImNvbXBvbmVudFdpbGxVbm1vdW50IiwiZGVzdHJveSIsInZhbHVlIiwiZ2V0VmFsdWUiLCJuZXdWYWx1ZSIsInNldFZhbHVlIiwicmVzaXplIiwiYnVpbGRDb250cm9sIiwibWFrZUNoZWNrYm94IiwibWFrZUJ1dHRvbiIsImNoZWNrYm94IiwibGFiZWwiLCJjaGVja2VkIiwiYnV0dG9uIiwidG9vbHRpcCIsImV2ZW50IiwicmVuZGVyIiwiY29udHJvbHNMZWZ0IiwiZmlsdGVyIiwiYyIsInNpZGUiLCJtYXAiLCJjb250cm9sc1JpZ2h0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTtBQUVBO0FBRUEsTUFBTUEsT0FBTyxHQUFHQyxzREFBYyxDQUFDQyxnQkFBZixDQUFnQyxTQUFoQyxDQUFoQjtBQUVBLE1BQU1DLFNBQVMsR0FBRyxDQUFDLE1BQUQsRUFBUyxLQUFULEVBQWdCLGNBQWhCLEVBQWdDLEtBQWhDLEVBQXVDLGFBQXZDLEVBQXNELFVBQXRELEVBQWtFLGNBQWxFLEVBQWtGLFlBQWxGLEVBQWdHLFdBQWhHLEVBQTZHLEtBQTdHLEVBQW9ILE9BQXBILEVBQTZILFVBQTdILEVBQXlJLE9BQXpJLEVBQWtKLFNBQWxKLEVBQTZKLE9BQTdKLEVBQXNLLFFBQXRLLEVBQWdMLFlBQWhMLEVBQThMLFFBQTlMLEVBQXdNLGlCQUF4TSxFQUEyTixrQkFBM04sRUFBK08sY0FBL08sRUFBK1AsS0FBL1AsRUFBc1EsT0FBdFEsRUFBK1EsR0FBL1EsRUFBb1IsTUFBcFIsRUFBNFIsTUFBNVIsRUFBb1MsWUFBcFMsRUFBa1QsS0FBbFQsRUFBeVQsUUFBelQsRUFBbVUsT0FBblUsRUFBNFUsYUFBNVUsRUFBMlYsUUFBM1YsRUFBcVcsS0FBclcsRUFBNFcsUUFBNVcsRUFBc1gsS0FBdFgsRUFBNlgsUUFBN1gsRUFBdVksT0FBdlksRUFBZ1osU0FBaFosRUFBMlosS0FBM1osRUFBa2EsT0FBbGEsRUFBMmEsU0FBM2EsRUFBc2IsV0FBdGIsRUFBbWMsTUFBbmMsRUFBMmMsV0FBM2MsRUFBd2QsUUFBeGQsRUFBa2UsZUFBbGUsRUFBbWYsUUFBbmYsRUFBNmYsTUFBN2YsRUFBcWdCLFlBQXJnQixFQUFtaEIsU0FBbmhCLEVBQThoQixlQUE5aEIsRUFBK2lCLE1BQS9pQixFQUF1akIsT0FBdmpCLEVBQWdrQixNQUFoa0IsRUFBd2tCLGFB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akQsTUFBTCxJQUFlLEtBQUtBLE1BQUwsQ0FBWXVDLE1BQS9CLEVBQXVDLEtBQUt2QyxNQUFMLENBQVl1QyxNQUFaO0FBRXZDLFVBQU1XLFlBQVksR0FBRyxLQUFLbkUsS0FBTCxDQUFXRSxRQUFYLENBQW9Ca0UsTUFBcEIsQ0FBMkJDLENBQUMsSUFBSUEsQ0FBQyxDQUFDQyxJQUFGLElBQVUsT0FBMUMsRUFBbURDLEdBQW5ELENBQXVELEtBQUtkLFlBQUwsQ0FBa0JuRCxJQUFsQixDQUF1QixJQUF2QixDQUF2RCxDQUFyQjtBQUNBLFVBQU1rRSxhQUFhLEdBQUcsS0FBS3hFLEtBQUwsQ0FBV0UsUUFBWCxDQUFvQmtFLE1BQXBCLENBQTJCQyxDQUFDLElBQUlBLENBQUMsQ0FBQ0MsSUFBRixJQUFVLE9BQTFDLEVBQW1EQyxHQUFuRCxDQUF1RCxLQUFLZCxZQUFMLENBQWtCbkQsSUFBbEIsQ0FBdUIsSUFBdkIsQ0FBdkQsQ0FBdEI7QUFFQSx3QkFBTztBQUFLLFFBQUUsRUFBQyxpQkFBUjtBQUEwQixlQUFTLEVBQUUsS0FBS04sS0FBTCxDQUFXTztBQUFoRCxvQkFDSztBQUFLLFFBQUUsRUFBQztBQUFSLG9CQUNJO0FBQUssZUFBUyxFQUFDO0FBQWYsT0FDSzRELFlBREwsQ0FESixlQUlJO0FBQUssZUFBUyxFQUFDO0FBQWYsT0FDS0ssYUFETCxDQUpKLENBREwsZUFTSztBQUFLLGVBQVMsRUFBQztBQUFmLG9CQUNJO0FBQUssUUFBRSxFQUFFLEtBQUt4RSxLQUFMLENBQVdjLEVBQXBCO0FBQXdCLGVBQVMsRUFBRSxZQUFZLEtBQUtkLEtBQUwsQ0FBV087QUFBMUQsT0FBa0UsS0FBS1AsS0FBTCxDQUFXb0QsS0FBN0UsQ0FESixDQVRMLENBQVA7QUFhSDs7QUEvR21EIiwiZmlsZSI6Ii4vc3JjL3VpL2N1c3RvbWNzcy9lZGl0b3IuanN4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtSZWFjdCwgV2VicGFja01vZHVsZXN9IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5pbXBvcnQgQ2hlY2tib3ggZnJvbSBcIi4vY2hlY2tib3hcIjtcclxuXHJcbmNvbnN0IFRvb2x0aXAgPSBXZWJwYWNrTW9kdWxlcy5nZXRCeURpc3BsYXlOYW1lKFwiVG9vbHRpcFwiKTtcclxuXHJcbmNvbnN0IGxhbmd1YWdlcyA9IFtcImFiYXBcIiwgXCJhYmNcIiwgXCJhY3Rpb25zY3JpcHRcIiwgXCJhZGFcIiwgXCJhcGFjaGVfY29uZlwiLCBcImFzY2lpZG9jXCIsIFwiYXNzZW1ibHlfeDg2XCIsIFwiYXV0b2hvdGtleVwiLCBcImJhdGNoZmlsZVwiLCBcImJyb1wiLCBcImNfY3BwXCIsIFwiYzlzZWFyY2hcIiwgXCJjaXJydVwiLCBcImNsb2p1cmVcIiwgXCJjb2JvbFwiLCBcImNvZmZlZVwiLCBcImNvbGRmdXNpb25cIiwgXCJjc2hhcnBcIiwgXCJjc291bmRfZG9jdW1lbnRcIiwgXCJjc291bmRfb3JjaGVzdHJhXCIsIFwiY3NvdW5kX3Njb3JlXCIsIFwiY3NzXCIsIFwiY3VybHlcIiwgXCJkXCIsIFwiZGFydFwiLCBcImRpZmZcIiwgXCJkb2NrZXJmaWxlXCIsIFwiZG90XCIsIFwiZHJvb2xzXCIsIFwiZHVtbXlcIiwgXCJkdW1teXN5bnRheFwiLCBcImVpZmZlbFwiLCBcImVqc1wiLCBcImVsaXhpclwiLCBcImVsbVwiLCBcImVybGFuZ1wiLCBcImZvcnRoXCIsIFwiZm9ydHJhblwiLCBcImZ0bFwiLCBcImdjb2RlXCIsIFwiZ2hlcmtpblwiLCBcImdpdGlnbm9yZVwiLCBcImdsc2xcIiwgXCJnb2JzdG9uZXNcIiwgXCJnb2xhbmdcIiwgXCJncmFwaHFsc2NoZW1hXCIsIFwiZ3Jvb3Z5XCIsIFwiaGFtbFwiLCBcImhhbmRsZWJhcnNcIiwgXCJoYXNrZWxsXCIsIFwiaGFza2VsbF9jYWJhbFwiLCBcImhheGVcIiwgXCJoanNvblwiLCBcImh0bWxcIiwgXCJodG1sX2VsaXhpclwiLCBcImh0bWxfcnVieVwiLCBcImluaVwiLCBcImlvXCIsIFwiamFja1wiLCBcImphZGVcIiwgXCJqYXZhXCIsIFwiamF2YXNjcmlwdFwiLCBcImpzb25cIiwgXCJqc29uaXFcIiwgXCJqc3BcIiwgXCJqc3NtXCIsIFwianN4XCIsIFwianVsaWFcIiwgXCJrb3RsaW5cIiwgXCJsYXRleFwiLCBcImxlc3NcIiwgXCJsaXF1aWRcIiwgXCJsaXNwXCIsIFwibGl2ZXNjcmlwdFwiLCBcImxvZ2lxbFwiLCBcImxzbFwiLCBcImx1YVwiLCBcImx1YXBhZ2VcIiwgXCJsdWNlbmVcIiwgXCJtYWtlZmlsZVwiLCBcIm1hcmtkb3duXCIsIFwibWFza1wiLCBcIm1hdGxhYlwiLCBcIm1hemVcIiwgXCJtZWxcIiwgXCJtdXNoY29kZVwiLCBcIm15c3FsXCIsIFwibml4XCIsIFwibnNpc1wiLCBcIm9iamVjdGl2ZWNcIiwgXCJvY2FtbFwiLCBcInBhc2NhbFwiLCBcInBlcmxcIiwgXCJwZ3NxbFwiLCBcInBocFwiLCBcInBpZ1wiLCBcInBvd2Vyc2hlbGxcIiwgXCJwcmFhdFwiLCBcInByb2xvZ1wiLCBcInByb3BlcnRpZXNcIiwgXCJwcm90b2J1ZlwiLCBcInB5dGhvblwiLCBcInJcIiwgXCJyYXpvclwiLCBcInJkb2NcIiwgXCJyZWRcIiwgXCJyaHRtbFwiLCBcInJzdFwiLCBcInJ1YnlcIiwgXCJydXN0XCIsIFwic2Fzc1wiLCBcInNjYWRcIiwgXCJzY2FsYVwiLCBcInNjaGVtZVwiLCBcInNjc3NcIiwgXCJzaFwiLCBcInNqc1wiLCBcInNtYXJ0eVwiLCBcInNuaXBwZXRzXCIsIFwic295X3RlbXBsYXRlXCIsIFwic3BhY2VcIiwgXCJzcWxcIiwgXCJzcWxzZXJ2ZXJcIiwgXCJzdHlsdXNcIiwgXCJzdmdcIiwgXCJzd2lmdFwiLCBcInRjbFwiLCBcInRleFwiLCBcInRleHRcIiwgXCJ0ZXh0aWxlXCIsIFwidG9tbFwiLCBcInRzeFwiLCBcInR3aWdcIiwgXCJ0eXBlc2NyaXB0XCIsIFwidmFsYVwiLCBcInZic2NyaXB0XCIsIFwidmVsb2NpdHlcIiwgXCJ2ZXJpbG9nXCIsIFwidmhkbFwiLCBcIndvbGxva1wiLCBcInhtbFwiLCBcInhxdWVyeVwiLCBcInlhbWxcIiwgXCJkamFuZ29cIl07XHJcbmNvbnN0IHRoZW1lcyA9IFtcImNocm9tZVwiLCBcImNsb3Vkc1wiLCBcImNyaW1zb25fZWRpdG9yXCIsIFwiZGF3blwiLCBcImRyZWFtd2VhdmVyXCIsIFwiZWNsaXBzZVwiLCBcImdpdGh1YlwiLCBcImlwbGFzdGljXCIsIFwic29sYXJpemVkX2xpZ2h0XCIsIFwidGV4dG1hdGVcIiwgXCJ0b21vcnJvd1wiLCBcInhjb2RlXCIsIFwia3Vyb2lyXCIsIFwia2F0emVubWlsY2hcIiwgXCJzcWxzZXJ2ZXJcIiwgXCJhbWJpYW5jZVwiLCBcImNoYW9zXCIsIFwiY2xvdWRzX21pZG5pZ2h0XCIsIFwiY29iYWx0XCIsIFwiZ3J1dmJveFwiLCBcImdvYlwiLCBcImlkbGVfZmluZ2Vyc1wiLCBcImtyX3RoZW1lXCIsIFwibWVyYml2b3JlXCIsIFwibWVyYml2b3JlX3NvZnRcIiwgXCJtb25vX2luZHVzdHJpYWxcIiwgXCJtb25va2FpXCIsIFwicGFzdGVsX29uX2RhcmtcIiwgXCJzb2xhcml6ZWRfZGFya1wiLCBcInRlcm1pbmFsXCIsIFwidG9tb3Jyb3dfbmlnaHRcIiwgXCJ0b21vcnJvd19uaWdodF9ibHVlXCIsIFwidG9tb3Jyb3dfbmlnaHRfYnJpZ2h0XCIsIFwidG9tb3Jyb3dfbmlnaHRfZWlnaHRpZXNcIiwgXCJ0d2lsaWdodFwiLCBcInZpYnJhbnRfaW5rXCJdO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29kZUVkaXRvciBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XHJcbiAgICBzdGF0aWMgZ2V0IGRlZmF1bHRJZCgpIHtyZXR1cm4gXCJiZC1lZGl0b3JcIjt9XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcclxuICAgICAgICBzdXBlcihwcm9wcyk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgZm9yIChjb25zdCBjb250cm9sIG9mIHRoaXMucHJvcHMuY29udHJvbHMpIHtcclxuICAgICAgICAgICAgaWYgKGNvbnRyb2wudHlwZSA9PSBcImNoZWNrYm94XCIpIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICBpZiAoY29udHJvbC5vbkNsaWNrID09IFwic2hvd1NldHRpbmdzXCIpIGNvbnRyb2wub25DbGljayA9IHRoaXMuc2hvd1NldHRpbmdzLmJpbmQodGhpcyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnByb3BzLnRoZW1lID0gdGhpcy5wcm9wcy50aGVtZS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoLyAvZywgXCJfXCIpO1xyXG4gICAgICAgIGlmICghdGhlbWVzLmluY2x1ZGVzKHRoaXMucHJvcHMudGhlbWUpKSB0aGlzLnByb3BzLnRoZW1lID0gQ29kZUVkaXRvci5kZWZhdWx0UHJvcHMudGhlbWU7XHJcblxyXG4gICAgICAgIHRoaXMucHJvcHMubGFuZ3VhZ2UgPSB0aGlzLnByb3BzLmxhbmd1YWdlLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvIC9nLCBcIl9cIik7XHJcbiAgICAgICAgaWYgKCFsYW5ndWFnZXMuaW5jbHVkZXModGhpcy5wcm9wcy5sYW5ndWFnZSkpIHRoaXMucHJvcHMubGFuZ3VhZ2UgPSBDb2RlRWRpdG9yLmRlZmF1bHRQcm9wcy5sYW5ndWFnZTtcclxuXHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IHRoaXMub25DaGFuZ2UuYmluZCh0aGlzKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgZ2V0IGRlZmF1bHRQcm9wcygpIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBjb250cm9sczogW10sXHJcbiAgICAgICAgICAgIHRoZW1lOiBcImJkLW1vbm9rYWlcIixcclxuICAgICAgICAgICAgbGFuZ3VhZ2U6IFwiY3NzXCIsXHJcbiAgICAgICAgICAgIGlkOiB0aGlzLmRlZmF1bHRJZCxcclxuICAgICAgICAgICAgZm9udFNpemU6IDE0XHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgZ2V0IHRoZW1lcygpIHtyZXR1cm4gdGhlbWVzO31cclxuXHJcbiAgICBjb21wb25lbnREaWRNb3VudCgpIHtcclxuICAgICAgICB0aGlzLmVkaXRvciA9IGFjZS5lZGl0KHRoaXMucHJvcHMuaWQpO1xyXG5cclxuICAgICAgICAvLyBBZGQgaWQgdG8gdGhlIGFjZSBtZW51IGNvbnRhaW5lclxyXG4gICAgICAgIGNvbnN0IG9yaWdpbmFsU2hvdyA9IHRoaXMuZWRpdG9yLmtleUJpbmRpbmcuJGRlZmF1bHRIYW5kbGVyLmNvbW1hbmRzLnNob3dTZXR0aW5nc01lbnUuZXhlYztcclxuICAgICAgICB0aGlzLmVkaXRvci5rZXlCaW5kaW5nLiRkZWZhdWx0SGFuZGxlci5jb21tYW5kcy5zaG93U2V0dGluZ3NNZW51LmV4ZWMgPSBmdW5jdGlvbigpIHtcclxuICAgICAgICAgICAgb3JpZ2luYWxTaG93LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XHJcbiAgICAgICAgICAgIGNvbnN0IG9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIobXV0YXRpb25zID0+IHtcclxuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgbXV0YXRpb24gb2YgbXV0YXRpb25zKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFtdXRhdGlvbi5hZGRlZE5vZGVzLmxlbmd0aCB8fCAhKG11dGF0aW9uLmFkZGVkTm9kZXNbMF0gaW5zdGFuY2VvZiBFbGVtZW50KSkgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgbm9kZSA9IG11dGF0aW9uLmFkZGVkTm9kZXNbMF07XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUucGFyZW50RWxlbWVudCAhPT0gZG9jdW1lbnQuYm9keSB8fCAhbm9kZS5xdWVyeVNlbGVjdG9yKFwiI2FjZV9zZXR0aW5nc21lbnVcIikpIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIG5vZGUuaWQgPSBcImFjZV9zZXR0aW5nc21lbnVfY29udGFpbmVyXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShkb2N1bWVudC5ib2R5LCB7Y2hpbGRMaXN0OiB0cnVlfSk7XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgY29uc3QgdGhlbWUgPSB0aGlzLnByb3BzLnRoZW1lID09IENvZGVFZGl0b3IuZGVmYXVsdFByb3BzLnRoZW1lID8gdGhpcy5wcm9wcy50aGVtZS5zcGxpdChcIi1cIilbMV0gOiB0aGlzLnByb3BzLnRoZW1lO1xyXG4gICAgICAgIHRoaXMuZWRpdG9yLnNldFRoZW1lKGBhY2UvdGhlbWUvJHt0aGVtZX1gKTtcclxuICAgICAgICB0aGlzLmVkaXRvci5zZXNzaW9uLnNldE1vZGUoYGFjZS9tb2RlLyR7dGhpcy5wcm9wcy5sYW5ndWFnZX1gKTtcclxuICAgICAgICB0aGlzLmVkaXRvci5zZXRTaG93UHJpbnRNYXJnaW4oZmFsc2UpO1xyXG4gICAgICAgIHRoaXMuZWRpdG9yLnNldEZvbnRTaXplKHRoaXMucHJvcHMuZm9udFNpemUpO1xyXG4gICAgICAgIHRoaXMuZWRpdG9yLm9uKFwiY2hhbmdlXCIsIHRoaXMub25DaGFuZ2UpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xyXG4gICAgICAgIHRoaXMuZWRpdG9yLmRlc3Ryb3koKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgdmFsdWUoKSB7cmV0dXJuIHRoaXMuZWRpdG9yLnNlc3Npb24uZ2V0VmFsdWUoKTt9XHJcbiAgICBzZXQgdmFsdWUobmV3VmFsdWUpIHtcclxuICAgICAgICB0aGlzLmVkaXRvci5zZXRWYWx1ZShuZXdWYWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgb25DaGFuZ2UoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMucHJvcHMub25DaGFuZ2UpIHRoaXMucHJvcHMub25DaGFuZ2UodGhpcy52YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2hvd1NldHRpbmdzKCkge3JldHVybiB0aGlzLmVkaXRvci5rZXlCaW5kaW5nLiRkZWZhdWx0SGFuZGxlci5jb21tYW5kcy5zaG93U2V0dGluZ3NNZW51LmV4ZWModGhpcy5lZGl0b3IpO31cclxuICAgIHJlc2l6ZSgpIHtyZXR1cm4gdGhpcy5lZGl0b3IucmVzaXplKCk7fVxyXG5cclxuICAgIGJ1aWxkQ29udHJvbChjb250cm9sKSB7XHJcbiAgICAgICAgaWYgKGNvbnRyb2wudHlwZSA9PSBcImNoZWNrYm94XCIpIHJldHVybiB0aGlzLm1ha2VDaGVja2JveChjb250cm9sKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5tYWtlQnV0dG9uKGNvbnRyb2wpO1xyXG4gICAgfVxyXG5cclxuICAgIG1ha2VDaGVja2JveChjaGVja2JveCkge1xyXG4gICAgICAgIHJldHVybiA8Q2hlY2tib3ggdGV4dD17Y2hlY2tib3gubGFiZWx9IG9uQ2hhbmdlPXtjaGVja2JveC5vbkNoYW5nZX0gY2hlY2tlZD17Y2hlY2tib3guY2hlY2tlZH0gLz47XHJcbiAgICB9XHJcblxyXG4gICAgbWFrZUJ1dHRvbihidXR0b24pIHtcclxuICAgICAgICByZXR1cm4gPFRvb2x0aXAgY29sb3I9XCJibGFja1wiIHBvc2l0aW9uPVwidG9wXCIgdGV4dD17YnV0dG9uLnRvb2x0aXB9PlxyXG4gICAgICAgICAgICAgICAgICAgIHtwcm9wcyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8YnV0dG9uIHsuLi5wcm9wc30gY2xhc3NOYW1lPVwiYnRuIGJ0bi1wcmltYXJ5XCIgb25DbGljaz17KGV2ZW50KSA9PiB7YnV0dG9uLm9uQ2xpY2soZXZlbnQsIHRoaXMudmFsdWUpO319PntidXR0b24ubGFiZWx9PC9idXR0b24+O1xyXG4gICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICA8L1Rvb2x0aXA+O1xyXG4gICAgfVxyXG5cclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICBpZiAodGhpcy5lZGl0b3IgJiYgdGhpcy5lZGl0b3IucmVzaXplKSB0aGlzLmVkaXRvci5yZXNpemUoKTtcclxuXHJcbiAgICAgICAgY29uc3QgY29udHJvbHNMZWZ0ID0gdGhpcy5wcm9wcy5jb250cm9scy5maWx0ZXIoYyA9PiBjLnNpZGUgIT0gXCJyaWdodFwiKS5tYXAodGhpcy5idWlsZENvbnRyb2wuYmluZCh0aGlzKSk7XHJcbiAgICAgICAgY29uc3QgY29udHJvbHNSaWdodCA9IHRoaXMucHJvcHMuY29udHJvbHMuZmlsdGVyKGMgPT4gYy5zaWRlID09IFwicmlnaHRcIikubWFwKHRoaXMuYnVpbGRDb250cm9sLmJpbmQodGhpcykpO1xyXG5cclxuICAgICAgICByZXR1cm4gPGRpdiBpZD1cImJkLWVkaXRvci1wYW5lbFwiIGNsYXNzTmFtZT17dGhpcy5wcm9wcy50aGVtZX0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD1cImJkLWVkaXRvci1jb250cm9sc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbnRyb2xzLXNlY3Rpb24gY29udHJvbHMtbGVmdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2NvbnRyb2xzTGVmdH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29udHJvbHMtc2VjdGlvbiBjb250cm9scy1yaWdodFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2NvbnRyb2xzUmlnaHR9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZWRpdG9yLXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD17dGhpcy5wcm9wcy5pZH0gY2xhc3NOYW1lPXtcImVkaXRvciBcIiArIHRoaXMucHJvcHMudGhlbWV9Pnt0aGlzLnByb3BzLnZhbHVlfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+O1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/customcss/editor.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return CodeEditor; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _checkbox__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./checkbox */ \"./src/ui/customcss/checkbox.jsx\");\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\n\n\nconst Tooltip = modules__WEBPACK_IMPORTED_MODULE_0__[\"WebpackModules\"].getByDisplayName(\"Tooltip\");\nconst languages = [\"abap\", \"abc\", \"actionscript\", \"ada\", \"apache_conf\", \"asciidoc\", \"assembly_x86\", \"autohotkey\", \"batchfile\", \"bro\", \"c_cpp\", \"c9search\", \"cirru\", \"clojure\", \"cobol\", \"coffee\", \"coldfusion\", \"csharp\", \"csound_document\", \"csound_orchestra\", \"csound_score\", \"css\", \"curly\", \"d\", \"dart\", \"diff\", \"dockerfile\", \"dot\", \"drools\", \"dummy\", \"dummysyntax\", \"eiffel\", \"ejs\", \"elixir\", \"elm\", \"erlang\", \"forth\", \"fortran\", \"ftl\", \"gcode\", \"gherkin\", \"gitignore\", \"glsl\", \"gobstones\", \"golang\", \"graphqlschema\", \"groovy\", \"haml\", \"handlebars\", \"haskell\", \"haskell_cabal\", \"haxe\", \"hjson\", \"html\", \"html_elixir\", \"html_ruby\", \"ini\", \"io\", \"jack\", \"jade\", \"java\", \"javascript\", \"json\", \"jsoniq\", \"jsp\", \"jssm\", \"jsx\", \"julia\", \"kotlin\", \"latex\", \"less\", \"liquid\", \"lisp\", \"livescript\", \"logiql\", \"lsl\", \"lua\", \"luapage\", \"lucene\", \"makefile\", \"markdown\", \"mask\", \"matlab\", \"maze\", \"mel\", \"mushcode\", \"mysql\", \"nix\", \"nsis\", \"objectivec\", \"ocaml\", \"pascal\", \"perl\", \"pgsql\", \"php\", \"pig\", \"powershell\", \"praat\", \"prolog\", \"properties\", \"protobuf\", \"python\", \"r\", \"razor\", \"rdoc\", \"red\", \"rhtml\", \"rst\", \"ruby\", \"rust\", \"sass\", \"scad\", \"scala\", \"scheme\", \"scss\", \"sh\", \"sjs\", \"smarty\", \"snippets\", \"soy_template\", \"space\", \"sql\", \"sqlserver\", \"stylus\", \"svg\", \"swift\", \"tcl\", \"tex\", \"text\", \"textile\", \"toml\", \"tsx\", \"twig\", \"typescript\", \"vala\", \"vbscript\", \"velocity\", \"verilog\", \"vhdl\", \"wollok\", \"xml\", \"xquery\", \"yaml\", \"django\"];\nconst themes = [\"chrome\", \"clouds\", \"crimson_editor\", \"dawn\", \"dreamweaver\", \"eclipse\", \"github\", \"iplastic\", \"solarized_light\", \"textmate\", \"tomorrow\", \"xcode\", \"kuroir\", \"katzenmilch\", \"sqlserver\", \"ambiance\", \"chaos\", \"clouds_midnight\", \"cobalt\", \"gruvbox\", \"gob\", \"idle_fingers\", \"kr_theme\", \"merbivore\", \"merbivore_soft\", \"mono_industrial\", \"monokai\", \"pastel_on_dark\", \"solarized_dark\", \"terminal\", \"tomorrow_night\", \"tomorrow_night_blue\", \"tomorrow_night_bright\", \"tomorrow_night_eighties\", \"twilight\", \"vibrant_ink\"];\nclass CodeEditor extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n static get defaultId() {\n return \"bd-editor\";\n }\n\n constructor(props) {\n super(props);\n\n for (const control of this.props.controls) {\n if (control.type == \"checkbox\") continue;\n if (control.onClick == \"showSettings\") control.onClick = this.showSettings.bind(this);\n }\n\n this.props.theme = this.props.theme.toLowerCase().replace(/ /g, \"_\");\n if (!themes.includes(this.props.theme)) this.props.theme = CodeEditor.defaultProps.theme;\n this.props.language = this.props.language.toLowerCase().replace(/ /g, \"_\");\n if (!languages.includes(this.props.language)) this.props.language = CodeEditor.defaultProps.language;\n this.onChange = this.onChange.bind(this);\n }\n\n static get defaultProps() {\n return {\n controls: [],\n theme: \"bd-monokai\",\n language: \"css\",\n id: this.defaultId,\n fontSize: 14\n };\n }\n\n static get themes() {\n return themes;\n }\n\n componentDidMount() {\n this.editor = ace.edit(this.props.id); // Add id to the ace menu container\n\n const originalShow = this.editor.keyBinding.$defaultHandler.commands.showSettingsMenu.exec;\n\n this.editor.keyBinding.$defaultHandler.commands.showSettingsMenu.exec = function () {\n originalShow.apply(this, arguments);\n const observer = new MutationObserver(mutations => {\n for (const mutation of mutations) {\n if (!mutation.addedNodes.length || !(mutation.addedNodes[0] instanceof Element)) continue;\n const node = mutation.addedNodes[0];\n if (node.parentElement !== document.body || !node.querySelector(\"#ace_settingsmenu\")) continue;\n node.id = \"ace_settingsmenu_container\";\n observer.disconnect();\n }\n });\n observer.observe(document.body, {\n childList: true\n });\n };\n\n const theme = this.props.theme == CodeEditor.defaultProps.theme ? this.props.theme.split(\"-\")[1] : this.props.theme;\n this.editor.setTheme(`ace/theme/${theme}`);\n this.editor.session.setMode(`ace/mode/${this.props.language}`);\n this.editor.setShowPrintMargin(false);\n this.editor.setFontSize(this.props.fontSize);\n this.editor.on(\"change\", this.onChange);\n }\n\n componentWillUnmount() {\n this.editor.destroy();\n }\n\n get value() {\n return this.editor.session.getValue();\n }\n\n set value(newValue) {\n this.editor.setValue(newValue);\n }\n\n onChange() {\n if (this.props.onChange) this.props.onChange(this.value);\n }\n\n showSettings() {\n return this.editor.keyBinding.$defaultHandler.commands.showSettingsMenu.exec(this.editor);\n }\n\n resize() {\n return this.editor.resize();\n }\n\n buildControl(control) {\n if (control.type == \"checkbox\") return this.makeCheckbox(control);\n return this.makeButton(control);\n }\n\n makeCheckbox(checkbox) {\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_checkbox__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n text: checkbox.label,\n onChange: checkbox.onChange,\n checked: checkbox.checked\n });\n }\n\n makeButton(button) {\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(Tooltip, {\n color: \"black\",\n position: \"top\",\n text: button.tooltip\n }, props => {\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"button\", _extends({}, props, {\n className: \"btn btn-primary\",\n onClick: event => {\n button.onClick(event, this.value);\n }\n }), button.label);\n });\n }\n\n render() {\n if (this.editor && this.editor.resize) this.editor.resize();\n const controlsLeft = this.props.controls.filter(c => c.side != \"right\").map(this.buildControl.bind(this));\n const controlsRight = this.props.controls.filter(c => c.side == \"right\").map(this.buildControl.bind(this));\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n id: \"bd-editor-panel\",\n className: this.props.theme\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n id: \"bd-editor-controls\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"controls-section controls-left\"\n }, controlsLeft), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"controls-section controls-right\"\n }, controlsRight)), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"editor-wrapper\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n id: this.props.id,\n className: \"editor \" + this.props.theme\n }, this.props.value)));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvY3VzdG9tY3NzL2VkaXRvci5qc3g/ZmZlMiJdLCJuYW1lcyI6WyJUb29sdGlwIiwiV2VicGFja01vZHVsZXMiLCJnZXRCeURpc3BsYXlOYW1lIiwibGFuZ3VhZ2VzIiwidGhlbWVzIiwiQ29kZUVkaXRvciIsIlJlYWN0IiwiQ29tcG9uZW50IiwiZGVmYXVsdElkIiwiY29uc3RydWN0b3IiLCJwcm9wcyIsImNvbnRyb2wiLCJjb250cm9scyIsInR5cGUiLCJvbkNsaWNrIiwic2hvd1NldHRpbmdzIiwiYmluZCIsInRoZW1lIiwidG9Mb3dlckNhc2UiLCJyZXBsYWNlIiwiaW5jbHVkZXMiLCJkZWZhdWx0UHJvcHMiLCJsYW5ndWFnZSIsIm9uQ2hhbmdlIiwiaWQiLCJmb250U2l6ZSIsImNvbXBvbmVudERpZE1vdW50IiwiZWRpdG9yIiwiYWNlIiwiZWRpdCIsIm9yaWdpbmFsU2hvdyIsImtleUJpbmRpbmciLCIkZGVmYXVsdEhhbmRsZXIiLCJjb21tYW5kcyIsInNob3dTZXR0aW5nc01lbnUiLCJleGVjIiwiYXBwbHkiLCJhcmd1bWVudHMiLCJvYnNlcnZlciIsIk11dGF0aW9uT2JzZXJ2ZXIiLCJtdXRhdGlvbnMiLCJtdXRhdGlvbiIsImFkZGVkTm9kZXMiLCJsZW5ndGgiLCJFbGVtZW50Iiwibm9kZSIsInBhcmVudEVsZW1lbnQiLCJkb2N1bWVudCIsImJvZHkiLCJxdWVyeVNlbGVjdG9yIiwiZGlzY29ubmVjdCIsIm9ic2VydmUiLCJjaGlsZExpc3QiLCJzcGxpdCIsInNldFRoZW1lIiwic2Vzc2lvbiIsInNldE1vZGUiLCJzZXRTaG93UHJpbnRNYXJnaW4iLCJzZXRGb250U2l6ZSIsIm9uIiwiY29tcG9uZW50V2lsbFVubW91bnQiLCJkZXN0cm95IiwidmFsdWUiLCJnZXRWYWx1ZSIsIm5ld1ZhbHVlIiwic2V0VmFsdWUiLCJyZXNpemUiLCJidWlsZENvbnRyb2wiLCJtYWtlQ2hlY2tib3giLCJtYWtlQnV0dG9uIiwiY2hlY2tib3giLCJsYWJlbCIsImNoZWNrZWQiLCJidXR0b24iLCJ0b29sdGlwIiwiZXZlbnQiLCJyZW5kZXIiLCJjb250cm9sc0xlZnQiLCJmaWx0ZXIiLCJjIiwic2lkZSIsIm1hcCIsImNvbnRyb2xzUmlnaHQiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBO0FBRUE7QUFFQSxNQUFNQSxPQUFPLEdBQUdDLHNEQUFjLENBQUNDLGdCQUFmLENBQWdDLFNBQWhDLENBQWhCO0FBRUEsTUFBTUMsU0FBUyxHQUFHLENBQUMsTUFBRCxFQUFTLEtBQVQsRUFBZ0IsY0FBaEIsRUFBZ0MsS0FBaEMsRUFBdUMsYUFBdkMsRUFBc0QsVUFBdEQsRUFBa0UsY0FBbEUsRUFBa0YsWUFBbEYsRUFBZ0csV0FBaEcsRUFBNkcsS0FBN0csRUFBb0gsT0FBcEgsRUFBNkgsVUFBN0gsRUFBeUksT0FBekksRUFBa0osU0FBbEosRUFBNkosT0FBN0osRUFBc0ssUUFBdEssRUFBZ0wsWUFBaEwsRUFBOEwsUUFBOUwsRUFBd00saUJBQXhNLEVBQTJOLGtCQUEzTixFQUErTyxjQUEvTyxFQUErUCxLQUEvUCxFQUFzUSxPQUF0USxFQUErUSxHQUEvUSxFQUFvUixNQUFwUixFQUE0UixNQUE1UixFQUFvUyxZQUFwUyxFQUFrVCxLQUFsVCxFQUF5VCxRQUF6VCxFQUFtVSxPQUFuVSxFQUE0VSxhQUE1VSxFQUEyVixRQUEzVixFQUFxVyxLQUFyVyxFQUE0VyxRQUE1VyxFQUFzWCxLQUF0WCxFQUE2WCxRQUE3WCxFQUF1WSxPQUF2WSxFQUFnWixTQUFoWixFQUEyWixLQUEzWixFQUFrYSxPQUFsYSxFQUEyYSxTQUEzYSxFQUFzYixXQUF0YixFQUFtYyxNQUFuYyxFQUEyYyxXQUEzYyxFQUF3ZCxRQUF4ZCxFQUFrZSxlQUFsZSxFQUFtZixRQUFuZixFQUE2ZixNQUE3ZixFQUFxZ0IsWUFBcmdCLEVBQW1oQixTQUFuaEIsRUFBOGhCLGVBQTloQixFQUEraUIsTUFBL2lCLEVBQXVqQixPQUF2akIsRUFBZ2tCLE1BQWhrQixFQUF3a0IsYUFBeGtC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QUFMLElBQWUsS0FBS0EsTUFBTCxDQUFZdUMsTUFBL0IsRUFBdUMsS0FBS3ZDLE1BQUwsQ0FBWXVDLE1BQVo7QUFFdkMsVUFBTVcsWUFBWSxHQUFHLEtBQUtuRSxLQUFMLENBQVdFLFFBQVgsQ0FBb0JrRSxNQUFwQixDQUEyQkMsQ0FBQyxJQUFJQSxDQUFDLENBQUNDLElBQUYsSUFBVSxPQUExQyxFQUFtREMsR0FBbkQsQ0FBdUQsS0FBS2QsWUFBTCxDQUFrQm5ELElBQWxCLENBQXVCLElBQXZCLENBQXZELENBQXJCO0FBQ0EsVUFBTWtFLGFBQWEsR0FBRyxLQUFLeEUsS0FBTCxDQUFXRSxRQUFYLENBQW9Ca0UsTUFBcEIsQ0FBMkJDLENBQUMsSUFBSUEsQ0FBQyxDQUFDQyxJQUFGLElBQVUsT0FBMUMsRUFBbURDLEdBQW5ELENBQXVELEtBQUtkLFlBQUwsQ0FBa0JuRCxJQUFsQixDQUF1QixJQUF2QixDQUF2RCxDQUF0QjtBQUVBLHdCQUFPO0FBQUssUUFBRSxFQUFDLGlCQUFSO0FBQTBCLGVBQVMsRUFBRSxLQUFLTixLQUFMLENBQVdPO0FBQWhELG9CQUNLO0FBQUssUUFBRSxFQUFDO0FBQVIsb0JBQ0k7QUFBSyxlQUFTLEVBQUM7QUFBZixPQUNLNEQsWUFETCxDQURKLGVBSUk7QUFBSyxlQUFTLEVBQUM7QUFBZixPQUNLSyxhQURMLENBSkosQ0FETCxlQVNLO0FBQUssZUFBUyxFQUFDO0FBQWYsb0JBQ0k7QUFBSyxRQUFFLEVBQUUsS0FBS3hFLEtBQUwsQ0FBV2MsRUFBcEI7QUFBd0IsZUFBUyxFQUFFLFlBQVksS0FBS2QsS0FBTCxDQUFXTztBQUExRCxPQUFrRSxLQUFLUCxLQUFMLENBQVdvRCxLQUE3RSxDQURKLENBVEwsQ0FBUDtBQWFIOztBQS9HbUQiLCJmaWxlIjoiLi9zcmMvdWkvY3VzdG9tY3NzL2VkaXRvci5qc3guanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlYWN0LCBXZWJwYWNrTW9kdWxlc30gZnJvbSBcIm1vZHVsZXNcIjtcclxuXHJcbmltcG9ydCBDaGVja2JveCBmcm9tIFwiLi9jaGVja2JveFwiO1xyXG5cclxuY29uc3QgVG9vbHRpcCA9IFdlYnBhY2tNb2R1bGVzLmdldEJ5RGlzcGxheU5hbWUoXCJUb29sdGlwXCIpO1xyXG5cclxuY29uc3QgbGFuZ3VhZ2VzID0gW1wiYWJhcFwiLCBcImFiY1wiLCBcImFjdGlvbnNjcmlwdFwiLCBcImFkYVwiLCBcImFwYWNoZV9jb25mXCIsIFwiYXNjaWlkb2NcIiwgXCJhc3NlbWJseV94ODZcIiwgXCJhdXRvaG90a2V5XCIsIFwiYmF0Y2hmaWxlXCIsIFwiYnJvXCIsIFwiY19jcHBcIiwgXCJjOXNlYXJjaFwiLCBcImNpcnJ1XCIsIFwiY2xvanVyZVwiLCBcImNvYm9sXCIsIFwiY29mZmVlXCIsIFwiY29sZGZ1c2lvblwiLCBcImNzaGFycFwiLCBcImNzb3VuZF9kb2N1bWVudFwiLCBcImNzb3VuZF9vcmNoZXN0cmFcIiwgXCJjc291bmRfc2NvcmVcIiwgXCJjc3NcIiwgXCJjdXJseVwiLCBcImRcIiwgXCJkYXJ0XCIsIFwiZGlmZlwiLCBcImRvY2tlcmZpbGVcIiwgXCJkb3RcIiwgXCJkcm9vbHNcIiwgXCJkdW1teVwiLCBcImR1bW15c3ludGF4XCIsIFwiZWlmZmVsXCIsIFwiZWpzXCIsIFwiZWxpeGlyXCIsIFwiZWxtXCIsIFwiZXJsYW5nXCIsIFwiZm9ydGhcIiwgXCJmb3J0cmFuXCIsIFwiZnRsXCIsIFwiZ2NvZGVcIiwgXCJnaGVya2luXCIsIFwiZ2l0aWdub3JlXCIsIFwiZ2xzbFwiLCBcImdvYnN0b25lc1wiLCBcImdvbGFuZ1wiLCBcImdyYXBocWxzY2hlbWFcIiwgXCJncm9vdnlcIiwgXCJoYW1sXCIsIFwiaGFuZGxlYmFyc1wiLCBcImhhc2tlbGxcIiwgXCJoYXNrZWxsX2NhYmFsXCIsIFwiaGF4ZVwiLCBcImhqc29uXCIsIFwiaHRtbFwiLCBcImh0bWxfZWxpeGlyXCIsIFwiaHRtbF9ydWJ5XCIsIFwiaW5pXCIsIFwiaW9cIiwgXCJqYWNrXCIsIFwiamFkZVwiLCBcImphdmFcIiwgXCJqYXZhc2NyaXB0XCIsIFwianNvblwiLCBcImpzb25pcVwiLCBcImpzcFwiLCBcImpzc21cIiwgXCJqc3hcIiwgXCJqdWxpYVwiLCBcImtvdGxpblwiLCBcImxhdGV4XCIsIFwibGVzc1wiLCBcImxpcXVpZFwiLCBcImxpc3BcIiwgXCJsaXZlc2NyaXB0XCIsIFwibG9naXFsXCIsIFwibHNsXCIsIFwibHVhXCIsIFwibHVhcGFnZVwiLCBcImx1Y2VuZVwiLCBcIm1ha2VmaWxlXCIsIFwibWFya2Rvd25cIiwgXCJtYXNrXCIsIFwibWF0bGFiXCIsIFwibWF6ZVwiLCBcIm1lbFwiLCBcIm11c2hjb2RlXCIsIFwibXlzcWxcIiwgXCJuaXhcIiwgXCJuc2lzXCIsIFwib2JqZWN0aXZlY1wiLCBcIm9jYW1sXCIsIFwicGFzY2FsXCIsIFwicGVybFwiLCBcInBnc3FsXCIsIFwicGhwXCIsIFwicGlnXCIsIFwicG93ZXJzaGVsbFwiLCBcInByYWF0XCIsIFwicHJvbG9nXCIsIFwicHJvcGVydGllc1wiLCBcInByb3RvYnVmXCIsIFwicHl0aG9uXCIsIFwiclwiLCBcInJhem9yXCIsIFwicmRvY1wiLCBcInJlZFwiLCBcInJodG1sXCIsIFwicnN0XCIsIFwicnVieVwiLCBcInJ1c3RcIiwgXCJzYXNzXCIsIFwic2NhZFwiLCBcInNjYWxhXCIsIFwic2NoZW1lXCIsIFwic2Nzc1wiLCBcInNoXCIsIFwic2pzXCIsIFwic21hcnR5XCIsIFwic25pcHBldHNcIiwgXCJzb3lfdGVtcGxhdGVcIiwgXCJzcGFjZVwiLCBcInNxbFwiLCBcInNxbHNlcnZlclwiLCBcInN0eWx1c1wiLCBcInN2Z1wiLCBcInN3aWZ0XCIsIFwidGNsXCIsIFwidGV4XCIsIFwidGV4dFwiLCBcInRleHRpbGVcIiwgXCJ0b21sXCIsIFwidHN4XCIsIFwidHdpZ1wiLCBcInR5cGVzY3JpcHRcIiwgXCJ2YWxhXCIsIFwidmJzY3JpcHRcIiwgXCJ2ZWxvY2l0eVwiLCBcInZlcmlsb2dcIiwgXCJ2aGRsXCIsIFwid29sbG9rXCIsIFwieG1sXCIsIFwieHF1ZXJ5XCIsIFwieWFtbFwiLCBcImRqYW5nb1wiXTtcclxuY29uc3QgdGhlbWVzID0gW1wiY2hyb21lXCIsIFwiY2xvdWRzXCIsIFwiY3JpbXNvbl9lZGl0b3JcIiwgXCJkYXduXCIsIFwiZHJlYW13ZWF2ZXJcIiwgXCJlY2xpcHNlXCIsIFwiZ2l0aHViXCIsIFwiaXBsYXN0aWNcIiwgXCJzb2xhcml6ZWRfbGlnaHRcIiwgXCJ0ZXh0bWF0ZVwiLCBcInRvbW9ycm93XCIsIFwieGNvZGVcIiwgXCJrdXJvaXJcIiwgXCJrYXR6ZW5taWxjaFwiLCBcInNxbHNlcnZlclwiLCBcImFtYmlhbmNlXCIsIFwiY2hhb3NcIiwgXCJjbG91ZHNfbWlkbmlnaHRcIiwgXCJjb2JhbHRcIiwgXCJncnV2Ym94XCIsIFwiZ29iXCIsIFwiaWRsZV9maW5nZXJzXCIsIFwia3JfdGhlbWVcIiwgXCJtZXJiaXZvcmVcIiwgXCJtZXJiaXZvcmVfc29mdFwiLCBcIm1vbm9faW5kdXN0cmlhbFwiLCBcIm1vbm9rYWlcIiwgXCJwYXN0ZWxfb25fZGFya1wiLCBcInNvbGFyaXplZF9kYXJrXCIsIFwidGVybWluYWxcIiwgXCJ0b21vcnJvd19uaWdodFwiLCBcInRvbW9ycm93X25pZ2h0X2JsdWVcIiwgXCJ0b21vcnJvd19uaWdodF9icmlnaHRcIiwgXCJ0b21vcnJvd19uaWdodF9laWdodGllc1wiLCBcInR3aWxpZ2h0XCIsIFwidmlicmFudF9pbmtcIl07XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb2RlRWRpdG9yIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcclxuICAgIHN0YXRpYyBnZXQgZGVmYXVsdElkKCkge3JldHVybiBcImJkLWVkaXRvclwiO31cclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcm9wcykge1xyXG4gICAgICAgIHN1cGVyKHByb3BzKTtcclxuICAgICAgICBcclxuICAgICAgICBmb3IgKGNvbnN0IGNvbnRyb2wgb2YgdGhpcy5wcm9wcy5jb250cm9scykge1xyXG4gICAgICAgICAgICBpZiAoY29udHJvbC50eXBlID09IFwiY2hlY2tib3hcIikgY29udGludWU7XHJcbiAgICAgICAgICAgIGlmIChjb250cm9sLm9uQ2xpY2sgPT0gXCJzaG93U2V0dGluZ3NcIikgY29udHJvbC5vbkNsaWNrID0gdGhpcy5zaG93U2V0dGluZ3MuYmluZCh0aGlzKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMucHJvcHMudGhlbWUgPSB0aGlzLnByb3BzLnRoZW1lLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvIC9nLCBcIl9cIik7XHJcbiAgICAgICAgaWYgKCF0aGVtZXMuaW5jbHVkZXModGhpcy5wcm9wcy50aGVtZSkpIHRoaXMucHJvcHMudGhlbWUgPSBDb2RlRWRpdG9yLmRlZmF1bHRQcm9wcy50aGVtZTtcclxuXHJcbiAgICAgICAgdGhpcy5wcm9wcy5sYW5ndWFnZSA9IHRoaXMucHJvcHMubGFuZ3VhZ2UudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC8gL2csIFwiX1wiKTtcclxuICAgICAgICBpZiAoIWxhbmd1YWdlcy5pbmNsdWRlcyh0aGlzLnByb3BzLmxhbmd1YWdlKSkgdGhpcy5wcm9wcy5sYW5ndWFnZSA9IENvZGVFZGl0b3IuZGVmYXVsdFByb3BzLmxhbmd1YWdlO1xyXG5cclxuICAgICAgICB0aGlzLm9uQ2hhbmdlID0gdGhpcy5vbkNoYW5nZS5iaW5kKHRoaXMpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBnZXQgZGVmYXVsdFByb3BzKCkge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGNvbnRyb2xzOiBbXSxcclxuICAgICAgICAgICAgdGhlbWU6IFwiYmQtbW9ub2thaVwiLFxyXG4gICAgICAgICAgICBsYW5ndWFnZTogXCJjc3NcIixcclxuICAgICAgICAgICAgaWQ6IHRoaXMuZGVmYXVsdElkLFxyXG4gICAgICAgICAgICBmb250U2l6ZTogMTRcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBnZXQgdGhlbWVzKCkge3JldHVybiB0aGVtZXM7fVxyXG5cclxuICAgIGNvbXBvbmVudERpZE1vdW50KCkge1xyXG4gICAgICAgIHRoaXMuZWRpdG9yID0gYWNlLmVkaXQodGhpcy5wcm9wcy5pZCk7XHJcblxyXG4gICAgICAgIC8vIEFkZCBpZCB0byB0aGUgYWNlIG1lbnUgY29udGFpbmVyXHJcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxTaG93ID0gdGhpcy5lZGl0b3Iua2V5QmluZGluZy4kZGVmYXVsdEhhbmRsZXIuY29tbWFuZHMuc2hvd1NldHRpbmdzTWVudS5leGVjO1xyXG4gICAgICAgIHRoaXMuZWRpdG9yLmtleUJpbmRpbmcuJGRlZmF1bHRIYW5kbGVyLmNvbW1hbmRzLnNob3dTZXR0aW5nc01lbnUuZXhlYyA9IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgICAgICBvcmlnaW5hbFNob3cuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcclxuICAgICAgICAgICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcihtdXRhdGlvbnMgPT4ge1xyXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBtdXRhdGlvbiBvZiBtdXRhdGlvbnMpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIW11dGF0aW9uLmFkZGVkTm9kZXMubGVuZ3RoIHx8ICEobXV0YXRpb24uYWRkZWROb2Rlc1swXSBpbnN0YW5jZW9mIEVsZW1lbnQpKSBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBub2RlID0gbXV0YXRpb24uYWRkZWROb2Rlc1swXTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS5wYXJlbnRFbGVtZW50ICE9PSBkb2N1bWVudC5ib2R5IHx8ICFub2RlLnF1ZXJ5U2VsZWN0b3IoXCIjYWNlX3NldHRpbmdzbWVudVwiKSkgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICAgICAgbm9kZS5pZCA9IFwiYWNlX3NldHRpbmdzbWVudV9jb250YWluZXJcIjtcclxuICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBvYnNlcnZlci5vYnNlcnZlKGRvY3VtZW50LmJvZHksIHtjaGlsZExpc3Q6IHRydWV9KTtcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBjb25zdCB0aGVtZSA9IHRoaXMucHJvcHMudGhlbWUgPT0gQ29kZUVkaXRvci5kZWZhdWx0UHJvcHMudGhlbWUgPyB0aGlzLnByb3BzLnRoZW1lLnNwbGl0KFwiLVwiKVsxXSA6IHRoaXMucHJvcHMudGhlbWU7XHJcbiAgICAgICAgdGhpcy5lZGl0b3Iuc2V0VGhlbWUoYGFjZS90aGVtZS8ke3RoZW1lfWApO1xyXG4gICAgICAgIHRoaXMuZWRpdG9yLnNlc3Npb24uc2V0TW9kZShgYWNlL21vZGUvJHt0aGlzLnByb3BzLmxhbmd1YWdlfWApO1xyXG4gICAgICAgIHRoaXMuZWRpdG9yLnNldFNob3dQcmludE1hcmdpbihmYWxzZSk7XHJcbiAgICAgICAgdGhpcy5lZGl0b3Iuc2V0Rm9udFNpemUodGhpcy5wcm9wcy5mb250U2l6ZSk7XHJcbiAgICAgICAgdGhpcy5lZGl0b3Iub24oXCJjaGFuZ2VcIiwgdGhpcy5vbkNoYW5nZSk7XHJcbiAgICB9XHJcblxyXG4gICAgY29tcG9uZW50V2lsbFVubW91bnQoKSB7XHJcbiAgICAgICAgdGhpcy5lZGl0b3IuZGVzdHJveSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCB2YWx1ZSgpIHtyZXR1cm4gdGhpcy5lZGl0b3Iuc2Vzc2lvbi5nZXRWYWx1ZSgpO31cclxuICAgIHNldCB2YWx1ZShuZXdWYWx1ZSkge1xyXG4gICAgICAgIHRoaXMuZWRpdG9yLnNldFZhbHVlKG5ld1ZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBvbkNoYW5nZSgpIHtcclxuICAgICAgICBpZiAodGhpcy5wcm9wcy5vbkNoYW5nZSkgdGhpcy5wcm9wcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBzaG93U2V0dGluZ3MoKSB7cmV0dXJuIHRoaXMuZWRpdG9yLmtleUJpbmRpbmcuJGRlZmF1bHRIYW5kbGVyLmNvbW1hbmRzLnNob3dTZXR0aW5nc01lbnUuZXhlYyh0aGlzLmVkaXRvcik7fVxyXG4gICAgcmVzaXplKCkge3JldHVybiB0aGlzLmVkaXRvci5yZXNpemUoKTt9XHJcblxyXG4gICAgYnVpbGRDb250cm9sKGNvbnRyb2wpIHtcclxuICAgICAgICBpZiAoY29udHJvbC50eXBlID09IFwiY2hlY2tib3hcIikgcmV0dXJuIHRoaXMubWFrZUNoZWNrYm94KGNvbnRyb2wpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLm1ha2VCdXR0b24oY29udHJvbCk7XHJcbiAgICB9XHJcblxyXG4gICAgbWFrZUNoZWNrYm94KGNoZWNrYm94KSB7XHJcbiAgICAgICAgcmV0dXJuIDxDaGVja2JveCB0ZXh0PXtjaGVja2JveC5sYWJlbH0gb25DaGFuZ2U9e2NoZWNrYm94Lm9uQ2hhbmdlfSBjaGVja2VkPXtjaGVja2JveC5jaGVja2VkfSAvPjtcclxuICAgIH1cclxuXHJcbiAgICBtYWtlQnV0dG9uKGJ1dHRvbikge1xyXG4gICAgICAgIHJldHVybiA8VG9vbHRpcCBjb2xvcj1cImJsYWNrXCIgcG9zaXRpb249XCJ0b3BcIiB0ZXh0PXtidXR0b24udG9vbHRpcH0+XHJcbiAgICAgICAgICAgICAgICAgICAge3Byb3BzID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxidXR0b24gey4uLnByb3BzfSBjbGFzc05hbWU9XCJidG4gYnRuLXByaW1hcnlcIiBvbkNsaWNrPXsoZXZlbnQpID0+IHtidXR0b24ub25DbGljayhldmVudCwgdGhpcy52YWx1ZSk7fX0+e2J1dHRvbi5sYWJlbH08L2J1dHRvbj47XHJcbiAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgIDwvVG9vbHRpcD47XHJcbiAgICB9XHJcblxyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmVkaXRvciAmJiB0aGlzLmVkaXRvci5yZXNpemUpIHRoaXMuZWRpdG9yLnJlc2l6ZSgpO1xyXG5cclxuICAgICAgICBjb25zdCBjb250cm9sc0xlZnQgPSB0aGlzLnByb3BzLmNvbnRyb2xzLmZpbHRlcihjID0+IGMuc2lkZSAhPSBcInJpZ2h0XCIpLm1hcCh0aGlzLmJ1aWxkQ29udHJvbC5iaW5kKHRoaXMpKTtcclxuICAgICAgICBjb25zdCBjb250cm9sc1JpZ2h0ID0gdGhpcy5wcm9wcy5jb250cm9scy5maWx0ZXIoYyA9PiBjLnNpZGUgPT0gXCJyaWdodFwiKS5tYXAodGhpcy5idWlsZENvbnRyb2wuYmluZCh0aGlzKSk7XHJcblxyXG4gICAgICAgIHJldHVybiA8ZGl2IGlkPVwiYmQtZWRpdG9yLXBhbmVsXCIgY2xhc3NOYW1lPXt0aGlzLnByb3BzLnRoZW1lfT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPVwiYmQtZWRpdG9yLWNvbnRyb2xzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29udHJvbHMtc2VjdGlvbiBjb250cm9scy1sZWZ0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y29udHJvbHNMZWZ0fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb250cm9scy1zZWN0aW9uIGNvbnRyb2xzLXJpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y29udHJvbHNSaWdodH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJlZGl0b3Itd3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPXt0aGlzLnByb3BzLmlkfSBjbGFzc05hbWU9e1wiZWRpdG9yIFwiICsgdGhpcy5wcm9wcy50aGVtZX0+e3RoaXMucHJvcHMudmFsdWV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj47XHJcbiAgICB9XHJcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/ui/customcss/editor.jsx\n"); /***/ }), @@ -755,7 +754,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return BDEmote; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nconst TooltipWrapper = modules__WEBPACK_IMPORTED_MODULE_0__[\"WebpackModules\"].getByDisplayName(\"Tooltip\");\nclass BDEmote extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n this.state = {\n shouldAnimate: !this.animateOnHover,\n isFavorite: this.props.isFavorite\n };\n this.onMouseEnter = this.onMouseEnter.bind(this);\n this.onMouseLeave = this.onMouseLeave.bind(this);\n this.onClick = this.onClick.bind(this);\n this.toggleFavorite = this.toggleFavorite.bind(this);\n }\n\n get animateOnHover() {\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"Settings\"].get(\"emotes\", \"general\", \"animateOnHover\");\n }\n\n get label() {\n return this.props.modifier ? `${this.props.name}:${this.props.modifier}` : this.props.name;\n }\n\n get modifierClass() {\n return this.props.modifier ? ` emote${this.props.modifier}` : \"\";\n }\n\n onMouseEnter() {\n if (!this.state.shouldAnimate && this.animateOnHover) this.setState({\n shouldAnimate: true\n }); // if (!this.state.isFavorite && EmoteMenu.favoriteEmotes[this.label]) this.setState({isFavorite: true});\n // else if (this.state.isFavorite && !EmoteMenu.favoriteEmotes[this.label]) this.setState({isFavorite: false});\n }\n\n onMouseLeave() {\n if (this.state.shouldAnimate && this.animateOnHover) this.setState({\n shouldAnimate: false\n });\n }\n\n onClick(e) {\n if (this.props.onClick) this.props.onClick(e);\n }\n\n toggleFavorite(e) {\n e.preventDefault();\n e.stopPropagation();\n if (this.state.isFavorite) modules__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].emit(\"emotes-favorite-removed\", this.label);else modules__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].emit(\"emotes-favorite-added\", this.label, this.props.url);\n this.setState({\n isFavorite: !this.state.isFavorite\n });\n }\n\n render() {\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(TooltipWrapper, {\n color: \"black\",\n position: \"top\",\n text: this.label,\n delay: 750\n }, childProps => {\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", Object.assign({\n className: \"emotewrapper\" + (this.props.jumboable ? \" jumboable\" : \"\"),\n onMouseEnter: this.onMouseEnter,\n onMouseLeave: this.onMouseLeave,\n onClick: this.onClick\n }, childProps), modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"img\", {\n draggable: false,\n className: \"emote\" + this.modifierClass + (this.props.jumboable ? \" jumboable\" : \"\") + (!this.state.shouldAnimate ? \" stop-animation\" : \"\"),\n dataModifier: this.props.modifier,\n alt: this.label,\n src: this.props.url\n }), modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"input\", {\n className: \"fav\" + (this.state.isFavorite ? \" active\" : \"\"),\n title: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Emotes.favoriteAction,\n type: \"button\",\n onClick: this.toggleFavorite\n }));\n });\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL2Vtb3RlLmpzPzZjY2IiXSwibmFtZXMiOlsiVG9vbHRpcFdyYXBwZXIiLCJXZWJwYWNrTW9kdWxlcyIsImdldEJ5RGlzcGxheU5hbWUiLCJCREVtb3RlIiwiUmVhY3QiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwic3RhdGUiLCJzaG91bGRBbmltYXRlIiwiYW5pbWF0ZU9uSG92ZXIiLCJpc0Zhdm9yaXRlIiwib25Nb3VzZUVudGVyIiwiYmluZCIsIm9uTW91c2VMZWF2ZSIsIm9uQ2xpY2siLCJ0b2dnbGVGYXZvcml0ZSIsIlNldHRpbmdzIiwiZ2V0IiwibGFiZWwiLCJtb2RpZmllciIsIm5hbWUiLCJtb2RpZmllckNsYXNzIiwic2V0U3RhdGUiLCJlIiwicHJldmVudERlZmF1bHQiLCJzdG9wUHJvcGFnYXRpb24iLCJFdmVudHMiLCJlbWl0IiwidXJsIiwicmVuZGVyIiwiY3JlYXRlRWxlbWVudCIsImNvbG9yIiwicG9zaXRpb24iLCJ0ZXh0IiwiZGVsYXkiLCJjaGlsZFByb3BzIiwiT2JqZWN0IiwiYXNzaWduIiwiY2xhc3NOYW1lIiwianVtYm9hYmxlIiwiZHJhZ2dhYmxlIiwiZGF0YU1vZGlmaWVyIiwiYWx0Iiwic3JjIiwidGl0bGUiLCJTdHJpbmdzIiwiRW1vdGVzIiwiZmF2b3JpdGVBY3Rpb24iLCJ0eXBlIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBLE1BQU1BLGNBQWMsR0FBR0Msc0RBQWMsQ0FBQ0MsZ0JBQWYsQ0FBZ0MsU0FBaEMsQ0FBdkI7QUFFZSxNQUFNQyxPQUFOLFNBQXNCQyw2Q0FBSyxDQUFDQyxTQUE1QixDQUFzQztBQUNqREMsYUFBVyxDQUFDQyxLQUFELEVBQVE7QUFDZixVQUFNQSxLQUFOO0FBRUEsU0FBS0MsS0FBTCxHQUFhO0FBQ1RDLG1CQUFhLEVBQUUsQ0FBQyxLQUFLQyxjQURaO0FBRVRDLGdCQUFVLEVBQUUsS0FBS0osS0FBTCxDQUFX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QUMyQixhQUFOLENBQW9CLEtBQXBCLEVBQTJCO0FBQ3ZCVSxpQkFBUyxFQUFFLEtBRFk7QUFFdkJGLGlCQUFTLEVBQUUsVUFBVSxLQUFLakIsYUFBZixJQUFnQyxLQUFLZixLQUFMLENBQVdpQyxTQUFYLEdBQXVCLFlBQXZCLEdBQXNDLEVBQXRFLEtBQTZFLENBQUMsS0FBS2hDLEtBQUwsQ0FBV0MsYUFBWixHQUE0QixpQkFBNUIsR0FBZ0QsRUFBN0gsQ0FGWTtBQUd2QmlDLG9CQUFZLEVBQUUsS0FBS25DLEtBQUwsQ0FBV2EsUUFIRjtBQUl2QnVCLFdBQUcsRUFBRSxLQUFLeEIsS0FKYTtBQUt2QnlCLFdBQUcsRUFBRSxLQUFLckMsS0FBTCxDQUFXc0I7QUFMTyxPQUEzQixDQU5HLEVBYUh6Qiw2Q0FBSyxDQUFDMkIsYUFBTixDQUFvQixPQUFwQixFQUE2QjtBQUN6QlEsaUJBQVMsRUFBRSxTQUFTLEtBQUsvQixLQUFMLENBQVdHLFVBQVgsR0FBd0IsU0FBeEIsR0FBb0MsRUFBN0MsQ0FEYztBQUV6QmtDLGFBQUssRUFBRUMsK0NBQU8sQ0FBQ0MsTUFBUixDQUFlQyxjQUZHO0FBR3pCQyxZQUFJLEVBQUUsUUFIbUI7QUFJekJsQyxlQUFPLEVBQUUsS0FBS0M7QUFKVyxPQUE3QixDQWJHLENBQVA7QUFvQkgsS0EzQkUsQ0FBUDtBQTRCSDs7QUE5RWdEIiwiZmlsZSI6Ii4vc3JjL3VpL2Vtb3RlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtTZXR0aW5ncywgUmVhY3QsIFdlYnBhY2tNb2R1bGVzLCBFdmVudHMsIFN0cmluZ3N9IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5jb25zdCBUb29sdGlwV3JhcHBlciA9IFdlYnBhY2tNb2R1bGVzLmdldEJ5RGlzcGxheU5hbWUoXCJUb29sdGlwXCIpO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQkRFbW90ZSBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XHJcbiAgICBjb25zdHJ1Y3Rvcihwcm9wcykge1xyXG4gICAgICAgIHN1cGVyKHByb3BzKTtcclxuXHJcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHtcclxuICAgICAgICAgICAgc2hvdWxkQW5pbWF0ZTogIXRoaXMuYW5pbWF0ZU9uSG92ZXIsXHJcbiAgICAgICAgICAgIGlzRmF2b3JpdGU6IHRoaXMucHJvcHMuaXNGYXZvcml0ZVxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHRoaXMub25Nb3VzZUVudGVyID0gdGhpcy5vbk1vdXNlRW50ZXIuYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLm9uTW91c2VMZWF2ZSA9IHRoaXMub25Nb3VzZUxlYXZlLmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy5vbkNsaWNrID0gdGhpcy5vbkNsaWNrLmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy50b2dnbGVGYXZvcml0ZSA9IHRoaXMudG9nZ2xlRmF2b3JpdGUuYmluZCh0aGlzKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgYW5pbWF0ZU9uSG92ZXIoKSB7XHJcbiAgICAgICAgcmV0dXJuIFNldHRpbmdzLmdldChcImVtb3Rlc1wiLCBcImdlbmVyYWxcIiwgXCJhbmltYXRlT25Ib3ZlclwiKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgbGFiZWwoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvcHMubW9kaWZpZXIgPyBgJHt0aGlzLnByb3BzLm5hbWV9OiR7dGhpcy5wcm9wcy5tb2RpZmllcn1gIDogdGhpcy5wcm9wcy5uYW1lO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBtb2RpZmllckNsYXNzKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnByb3BzLm1vZGlmaWVyID8gYCBlbW90ZSR7dGhpcy5wcm9wcy5tb2RpZmllcn1gIDogXCJcIjtcclxuICAgIH1cclxuXHJcbiAgICBvbk1vdXNlRW50ZXIoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnN0YXRlLnNob3VsZEFuaW1hdGUgJiYgdGhpcy5hbmltYXRlT25Ib3ZlcikgdGhpcy5zZXRTdGF0ZSh7c2hvdWxkQW5pbWF0ZTogdHJ1ZX0pO1xyXG4gICAgICAgIC8vIGlmICghdGhpcy5zdGF0ZS5pc0Zhdm9yaXRlICYmIEVtb3RlTWVudS5mYXZvcml0ZUVtb3Rlc1t0aGlzLmxhYmVsXSkgdGhpcy5zZXRTdGF0ZSh7aXNGYXZvcml0ZTogdHJ1ZX0pO1xyXG4gICAgICAgIC8vIGVsc2UgaWYgKHRoaXMuc3RhdGUuaXNGYXZvcml0ZSAmJiAhRW1vdGVNZW51LmZhdm9yaXRlRW1vdGVzW3RoaXMubGFiZWxdKSB0aGlzLnNldFN0YXRlKHtpc0Zhdm9yaXRlOiBmYWxzZX0pO1xyXG4gICAgfVxyXG5cclxuICAgIG9uTW91c2VMZWF2ZSgpIHtcclxuICAgICAgICBpZiAodGhpcy5zdGF0ZS5zaG91bGRBbmltYXRlICYmIHRoaXMuYW5pbWF0ZU9uSG92ZXIpIHRoaXMuc2V0U3RhdGUoe3Nob3VsZEFuaW1hdGU6IGZhbHNlfSk7XHJcbiAgICB9XHJcblxyXG4gICAgb25DbGljayhlKSB7XHJcbiAgICAgICAgaWYgKHRoaXMucHJvcHMub25DbGljaykgdGhpcy5wcm9wcy5vbkNsaWNrKGUpO1xyXG4gICAgfVxyXG5cclxuICAgIHRvZ2dsZUZhdm9yaXRlKGUpIHtcclxuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICBpZiAodGhpcy5zdGF0ZS5pc0Zhdm9yaXRlKSBFdmVudHMuZW1pdChcImVtb3Rlcy1mYXZvcml0ZS1yZW1vdmVkXCIsIHRoaXMubGFiZWwpO1xyXG4gICAgICAgIGVsc2UgRXZlbnRzLmVtaXQoXCJlbW90ZXMtZmF2b3JpdGUtYWRkZWRcIiwgdGhpcy5sYWJlbCwgdGhpcy5wcm9wcy51cmwpO1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe2lzRmF2b3JpdGU6ICF0aGlzLnN0YXRlLmlzRmF2b3JpdGV9KTtcclxuICAgIH1cclxuXHJcbiAgICByZW5kZXIoKSB7XHJcbiAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoVG9vbHRpcFdyYXBwZXIsIHtcclxuICAgICAgICAgICAgICAgIGNvbG9yOiBcImJsYWNrXCIsXHJcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogXCJ0b3BcIixcclxuICAgICAgICAgICAgICAgIHRleHQ6IHRoaXMubGFiZWwsXHJcbiAgICAgICAgICAgICAgICBkZWxheTogNzUwXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIChjaGlsZFByb3BzKSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCBPYmplY3QuYXNzaWduKHtcclxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6IFwiZW1vdGV3cmFwcGVyXCIgKyAodGhpcy5wcm9wcy5qdW1ib2FibGUgPyBcIiBqdW1ib2FibGVcIiA6IFwiXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgIG9uTW91c2VFbnRlcjogdGhpcy5vbk1vdXNlRW50ZXIsXHJcbiAgICAgICAgICAgICAgICAgICAgb25Nb3VzZUxlYXZlOiB0aGlzLm9uTW91c2VMZWF2ZSxcclxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrOiB0aGlzLm9uQ2xpY2tcclxuICAgICAgICAgICAgICAgIH0sIGNoaWxkUHJvcHMpLFxyXG4gICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJpbWdcIiwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkcmFnZ2FibGU6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6IFwiZW1vdGVcIiArIHRoaXMubW9kaWZpZXJDbGFzcyArICh0aGlzLnByb3BzLmp1bWJvYWJsZSA/IFwiIGp1bWJvYWJsZVwiIDogXCJcIikgKyAoIXRoaXMuc3RhdGUuc2hvdWxkQW5pbWF0ZSA/IFwiIHN0b3AtYW5pbWF0aW9uXCIgOiBcIlwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YU1vZGlmaWVyOiB0aGlzLnByb3BzLm1vZGlmaWVyLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBhbHQ6IHRoaXMubGFiZWwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNyYzogdGhpcy5wcm9wcy51cmxcclxuICAgICAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiaW5wdXRcIiwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6IFwiZmF2XCIgKyAodGhpcy5zdGF0ZS5pc0Zhdm9yaXRlID8gXCIgYWN0aXZlXCIgOiBcIlwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IFN0cmluZ3MuRW1vdGVzLmZhdm9yaXRlQWN0aW9uLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcImJ1dHRvblwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrOiB0aGlzLnRvZ2dsZUZhdm9yaXRlXHJcbiAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/emote.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return BDEmote; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nconst TooltipWrapper = modules__WEBPACK_IMPORTED_MODULE_0__[\"WebpackModules\"].getByDisplayName(\"Tooltip\");\nclass BDEmote extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n this.state = {\n shouldAnimate: !this.animateOnHover,\n isFavorite: this.props.isFavorite\n };\n this.onMouseEnter = this.onMouseEnter.bind(this);\n this.onMouseLeave = this.onMouseLeave.bind(this);\n this.onClick = this.onClick.bind(this);\n this.toggleFavorite = this.toggleFavorite.bind(this);\n }\n\n get animateOnHover() {\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"Settings\"].get(\"emotes\", \"general\", \"animateOnHover\");\n }\n\n get label() {\n return this.props.modifier ? `${this.props.name}:${this.props.modifier}` : this.props.name;\n }\n\n get modifierClass() {\n return this.props.modifier ? ` emote${this.props.modifier}` : \"\";\n }\n\n onMouseEnter() {\n if (!this.state.shouldAnimate && this.animateOnHover) this.setState({\n shouldAnimate: true\n }); // if (!this.state.isFavorite && EmoteMenu.favoriteEmotes[this.label]) this.setState({isFavorite: true});\n // else if (this.state.isFavorite && !EmoteMenu.favoriteEmotes[this.label]) this.setState({isFavorite: false});\n }\n\n onMouseLeave() {\n if (this.state.shouldAnimate && this.animateOnHover) this.setState({\n shouldAnimate: false\n });\n }\n\n onClick(e) {\n if (this.props.onClick) this.props.onClick(e);\n }\n\n toggleFavorite(e) {\n e.preventDefault();\n e.stopPropagation();\n if (this.state.isFavorite) modules__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].emit(\"emotes-favorite-removed\", this.label);else modules__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].emit(\"emotes-favorite-added\", this.label, this.props.url);\n this.setState({\n isFavorite: !this.state.isFavorite\n });\n }\n\n render() {\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(TooltipWrapper, {\n color: \"black\",\n position: \"top\",\n text: this.label,\n delay: 750\n }, childProps => {\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", Object.assign({\n className: \"emotewrapper\" + (this.props.jumboable ? \" jumboable\" : \"\"),\n onMouseEnter: this.onMouseEnter,\n onMouseLeave: this.onMouseLeave,\n onClick: this.onClick\n }, childProps), modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"img\", {\n draggable: false,\n className: \"emote\" + this.modifierClass + (this.props.jumboable ? \" jumboable\" : \"\") + (!this.state.shouldAnimate ? \" stop-animation\" : \"\"),\n dataModifier: this.props.modifier,\n alt: this.label,\n src: this.props.url\n }), modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"input\", {\n className: \"fav\" + (this.state.isFavorite ? \" active\" : \"\"),\n title: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Emotes.favoriteAction,\n type: \"button\",\n onClick: this.toggleFavorite\n }));\n });\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvZW1vdGUuanM/NmNjYiJdLCJuYW1lcyI6WyJUb29sdGlwV3JhcHBlciIsIldlYnBhY2tNb2R1bGVzIiwiZ2V0QnlEaXNwbGF5TmFtZSIsIkJERW1vdGUiLCJSZWFjdCIsIkNvbXBvbmVudCIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJzdGF0ZSIsInNob3VsZEFuaW1hdGUiLCJhbmltYXRlT25Ib3ZlciIsImlzRmF2b3JpdGUiLCJvbk1vdXNlRW50ZXIiLCJiaW5kIiwib25Nb3VzZUxlYXZlIiwib25DbGljayIsInRvZ2dsZUZhdm9yaXRlIiwiU2V0dGluZ3MiLCJnZXQiLCJsYWJlbCIsIm1vZGlmaWVyIiwibmFtZSIsIm1vZGlmaWVyQ2xhc3MiLCJzZXRTdGF0ZSIsImUiLCJwcmV2ZW50RGVmYXVsdCIsInN0b3BQcm9wYWdhdGlvbiIsIkV2ZW50cyIsImVtaXQiLCJ1cmwiLCJyZW5kZXIiLCJjcmVhdGVFbGVtZW50IiwiY29sb3IiLCJwb3NpdGlvbiIsInRleHQiLCJkZWxheSIsImNoaWxkUHJvcHMiLCJPYmplY3QiLCJhc3NpZ24iLCJjbGFzc05hbWUiLCJqdW1ib2FibGUiLCJkcmFnZ2FibGUiLCJkYXRhTW9kaWZpZXIiLCJhbHQiLCJzcmMiLCJ0aXRsZSIsIlN0cmluZ3MiLCJFbW90ZXMiLCJmYXZvcml0ZUFjdGlvbiIsInR5cGUiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUEsTUFBTUEsY0FBYyxHQUFHQyxzREFBYyxDQUFDQyxnQkFBZixDQUFnQyxTQUFoQyxDQUF2QjtBQUVlLE1BQU1DLE9BQU4sU0FBc0JDLDZDQUFLLENBQUNDLFNBQTVCLENBQXNDO0FBQ2pEQyxhQUFXLENBQUNDLEtBQUQsRUFBUTtBQUNmLFVBQU1BLEtBQU47QUFFQSxTQUFLQyxLQUFMLEdBQWE7QUFDVEMsbUJBQWEsRUFBRSxDQUFDLEtBQUtDLGNBRFo7QUFFVEMsZ0JBQVUsRUFBRSxLQUFLSixLQUFMLENBQVdJO0FB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LGFBQU4sQ0FBb0IsS0FBcEIsRUFBMkI7QUFDdkJVLGlCQUFTLEVBQUUsS0FEWTtBQUV2QkYsaUJBQVMsRUFBRSxVQUFVLEtBQUtqQixhQUFmLElBQWdDLEtBQUtmLEtBQUwsQ0FBV2lDLFNBQVgsR0FBdUIsWUFBdkIsR0FBc0MsRUFBdEUsS0FBNkUsQ0FBQyxLQUFLaEMsS0FBTCxDQUFXQyxhQUFaLEdBQTRCLGlCQUE1QixHQUFnRCxFQUE3SCxDQUZZO0FBR3ZCaUMsb0JBQVksRUFBRSxLQUFLbkMsS0FBTCxDQUFXYSxRQUhGO0FBSXZCdUIsV0FBRyxFQUFFLEtBQUt4QixLQUphO0FBS3ZCeUIsV0FBRyxFQUFFLEtBQUtyQyxLQUFMLENBQVdzQjtBQUxPLE9BQTNCLENBTkcsRUFhSHpCLDZDQUFLLENBQUMyQixhQUFOLENBQW9CLE9BQXBCLEVBQTZCO0FBQ3pCUSxpQkFBUyxFQUFFLFNBQVMsS0FBSy9CLEtBQUwsQ0FBV0csVUFBWCxHQUF3QixTQUF4QixHQUFvQyxFQUE3QyxDQURjO0FBRXpCa0MsYUFBSyxFQUFFQywrQ0FBTyxDQUFDQyxNQUFSLENBQWVDLGNBRkc7QUFHekJDLFlBQUksRUFBRSxRQUhtQjtBQUl6QmxDLGVBQU8sRUFBRSxLQUFLQztBQUpXLE9BQTdCLENBYkcsQ0FBUDtBQW9CSCxLQTNCRSxDQUFQO0FBNEJIOztBQTlFZ0QiLCJmaWxlIjoiLi9zcmMvdWkvZW1vdGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1NldHRpbmdzLCBSZWFjdCwgV2VicGFja01vZHVsZXMsIEV2ZW50cywgU3RyaW5nc30gZnJvbSBcIm1vZHVsZXNcIjtcclxuXHJcbmNvbnN0IFRvb2x0aXBXcmFwcGVyID0gV2VicGFja01vZHVsZXMuZ2V0QnlEaXNwbGF5TmFtZShcIlRvb2x0aXBcIik7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCREVtb3RlIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcclxuICAgIGNvbnN0cnVjdG9yKHByb3BzKSB7XHJcbiAgICAgICAgc3VwZXIocHJvcHMpO1xyXG5cclxuICAgICAgICB0aGlzLnN0YXRlID0ge1xyXG4gICAgICAgICAgICBzaG91bGRBbmltYXRlOiAhdGhpcy5hbmltYXRlT25Ib3ZlcixcclxuICAgICAgICAgICAgaXNGYXZvcml0ZTogdGhpcy5wcm9wcy5pc0Zhdm9yaXRlXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgdGhpcy5vbk1vdXNlRW50ZXIgPSB0aGlzLm9uTW91c2VFbnRlci5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMub25Nb3VzZUxlYXZlID0gdGhpcy5vbk1vdXNlTGVhdmUuYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLm9uQ2xpY2sgPSB0aGlzLm9uQ2xpY2suYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLnRvZ2dsZUZhdm9yaXRlID0gdGhpcy50b2dnbGVGYXZvcml0ZS5iaW5kKHRoaXMpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBhbmltYXRlT25Ib3ZlcigpIHtcclxuICAgICAgICByZXR1cm4gU2V0dGluZ3MuZ2V0KFwiZW1vdGVzXCIsIFwiZ2VuZXJhbFwiLCBcImFuaW1hdGVPbkhvdmVyXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBsYWJlbCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wcm9wcy5tb2RpZmllciA/IGAke3RoaXMucHJvcHMubmFtZX06JHt0aGlzLnByb3BzLm1vZGlmaWVyfWAgOiB0aGlzLnByb3BzLm5hbWU7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IG1vZGlmaWVyQ2xhc3MoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvcHMubW9kaWZpZXIgPyBgIGVtb3RlJHt0aGlzLnByb3BzLm1vZGlmaWVyfWAgOiBcIlwiO1xyXG4gICAgfVxyXG5cclxuICAgIG9uTW91c2VFbnRlcigpIHtcclxuICAgICAgICBpZiAoIXRoaXMuc3RhdGUuc2hvdWxkQW5pbWF0ZSAmJiB0aGlzLmFuaW1hdGVPbkhvdmVyKSB0aGlzLnNldFN0YXRlKHtzaG91bGRBbmltYXRlOiB0cnVlfSk7XHJcbiAgICAgICAgLy8gaWYgKCF0aGlzLnN0YXRlLmlzRmF2b3JpdGUgJiYgRW1vdGVNZW51LmZhdm9yaXRlRW1vdGVzW3RoaXMubGFiZWxdKSB0aGlzLnNldFN0YXRlKHtpc0Zhdm9yaXRlOiB0cnVlfSk7XHJcbiAgICAgICAgLy8gZWxzZSBpZiAodGhpcy5zdGF0ZS5pc0Zhdm9yaXRlICYmICFFbW90ZU1lbnUuZmF2b3JpdGVFbW90ZXNbdGhpcy5sYWJlbF0pIHRoaXMuc2V0U3RhdGUoe2lzRmF2b3JpdGU6IGZhbHNlfSk7XHJcbiAgICB9XHJcblxyXG4gICAgb25Nb3VzZUxlYXZlKCkge1xyXG4gICAgICAgIGlmICh0aGlzLnN0YXRlLnNob3VsZEFuaW1hdGUgJiYgdGhpcy5hbmltYXRlT25Ib3ZlcikgdGhpcy5zZXRTdGF0ZSh7c2hvdWxkQW5pbWF0ZTogZmFsc2V9KTtcclxuICAgIH1cclxuXHJcbiAgICBvbkNsaWNrKGUpIHtcclxuICAgICAgICBpZiAodGhpcy5wcm9wcy5vbkNsaWNrKSB0aGlzLnByb3BzLm9uQ2xpY2soZSk7XHJcbiAgICB9XHJcblxyXG4gICAgdG9nZ2xlRmF2b3JpdGUoZSkge1xyXG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgIGlmICh0aGlzLnN0YXRlLmlzRmF2b3JpdGUpIEV2ZW50cy5lbWl0KFwiZW1vdGVzLWZhdm9yaXRlLXJlbW92ZWRcIiwgdGhpcy5sYWJlbCk7XHJcbiAgICAgICAgZWxzZSBFdmVudHMuZW1pdChcImVtb3Rlcy1mYXZvcml0ZS1hZGRlZFwiLCB0aGlzLmxhYmVsLCB0aGlzLnByb3BzLnVybCk7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7aXNGYXZvcml0ZTogIXRoaXMuc3RhdGUuaXNGYXZvcml0ZX0pO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChUb29sdGlwV3JhcHBlciwge1xyXG4gICAgICAgICAgICAgICAgY29sb3I6IFwiYmxhY2tcIixcclxuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBcInRvcFwiLFxyXG4gICAgICAgICAgICAgICAgdGV4dDogdGhpcy5sYWJlbCxcclxuICAgICAgICAgICAgICAgIGRlbGF5OiA3NTBcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgKGNoaWxkUHJvcHMpID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIE9iamVjdC5hc3NpZ24oe1xyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogXCJlbW90ZXdyYXBwZXJcIiArICh0aGlzLnByb3BzLmp1bWJvYWJsZSA/IFwiIGp1bWJvYWJsZVwiIDogXCJcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgb25Nb3VzZUVudGVyOiB0aGlzLm9uTW91c2VFbnRlcixcclxuICAgICAgICAgICAgICAgICAgICBvbk1vdXNlTGVhdmU6IHRoaXMub25Nb3VzZUxlYXZlLFxyXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s6IHRoaXMub25DbGlja1xyXG4gICAgICAgICAgICAgICAgfSwgY2hpbGRQcm9wcyksXHJcbiAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImltZ1wiLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRyYWdnYWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogXCJlbW90ZVwiICsgdGhpcy5tb2RpZmllckNsYXNzICsgKHRoaXMucHJvcHMuanVtYm9hYmxlID8gXCIganVtYm9hYmxlXCIgOiBcIlwiKSArICghdGhpcy5zdGF0ZS5zaG91bGRBbmltYXRlID8gXCIgc3RvcC1hbmltYXRpb25cIiA6IFwiXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhTW9kaWZpZXI6IHRoaXMucHJvcHMubW9kaWZpZXIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFsdDogdGhpcy5sYWJlbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3JjOiB0aGlzLnByb3BzLnVybFxyXG4gICAgICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogXCJmYXZcIiArICh0aGlzLnN0YXRlLmlzRmF2b3JpdGUgPyBcIiBhY3RpdmVcIiA6IFwiXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogU3RyaW5ncy5FbW90ZXMuZmF2b3JpdGVBY3Rpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiYnV0dG9uXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s6IHRoaXMudG9nZ2xlRmF2b3JpdGVcclxuICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/ui/emote.js\n"); /***/ }), @@ -767,7 +766,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return ErrorBoundary; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var electron__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! electron */ \"electron\");\n/* harmony import */ var electron__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(electron__WEBPACK_IMPORTED_MODULE_1__);\n\n\nclass ErrorBoundary extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n this.state = {\n hasError: false\n };\n }\n\n componentDidCatch(error, errorInfo) {\n this.setState({\n hasError: true\n });\n }\n\n render() {\n if (this.state.hasError) return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n onClick: () => electron__WEBPACK_IMPORTED_MODULE_1__[\"remote\"].getCurrentWindow().openDevTools(),\n className: \"react-error\"\n }, \"There was an unexpected Error. Click to open console for more details.\");\n return this.props.children;\n }\n\n}\nconst originalRender = ErrorBoundary.prototype.render;\nObject.defineProperty(ErrorBoundary.prototype, \"render\", {\n enumerable: false,\n configurable: false,\n set: function () {\n modules__WEBPACK_IMPORTED_MODULE_0__[\"Logger\"].warn(\"ErrorBoundary\", \"Addon policy for plugins #5 https://github.com/rauenzi/BetterDiscordApp/wiki/Addon-Policies#plugins\");\n },\n get: () => originalRender\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL2Vycm9yYm91bmRhcnkuanN4P2Q2ZDEiXSwibmFtZXMiOlsiRXJyb3JCb3VuZGFyeSIsIlJlYWN0IiwiQ29tcG9uZW50IiwiY29uc3RydWN0b3IiLCJwcm9wcyIsInN0YXRlIiwiaGFzRXJyb3IiLCJjb21wb25lbnREaWRDYXRjaCIsImVycm9yIiwiZXJyb3JJbmZvIiwic2V0U3RhdGUiLCJyZW5kZXIiLCJyZW1vdGUiLCJnZXRDdXJyZW50V2luZG93Iiwib3BlbkRldlRvb2xzIiwiY2hpbGRyZW4iLCJvcmlnaW5hbFJlbmRlciIsInByb3RvdHlwZSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsInNldCIsIkxvZ2dlciIsIndhcm4iLCJnZXQiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ2UsTUFBTUEsYUFBTixTQUE0QkMsNkNBQUssQ0FBQ0MsU0FBbEMsQ0FBNEM7QUFDdkRDLGFBQVcsQ0FBQ0MsS0FBRCxFQUFRO0FBQ2pCLFVBQU1BLEtBQU47QUFDQSxTQUFLQyxLQUFMLEdBQWE7QUFBQ0MsY0FBUSxFQUFFO0FBQVgsS0FBYjtBQUNEOztBQUVEQyxtQkFBaUIsQ0FBQ0MsS0FBRCxFQUFRQyxTQUFSLEVBQW1CO0FBQ2xDLFNBQUtDLFFBQUwsQ0FBYztBQUFDSixjQUFRLEVBQUU7QUFBWCxLQUFkO0FBQ0Q7O0FBRURLLFFBQU0sR0FBRztBQUNQLFFBQUksS0FBS04sS0FBTCxDQUFXQyxRQUFmLEVBQXlCLG9CQUFPO0FBQUssYUFBTyxFQUFFLE1BQU1NLCtDQUFNLENBQUNDLGdCQUFQLEdBQTBCQyxZQUExQixFQUFwQjtBQUE4RCxlQUFTLEVBQUM7QUFBeEUsZ0ZBQVA7QUFDekIsV0FBTyxLQUFLVixLQUFMLENBQVdXLFFBQWxCO0FBQ0Q7O0FBYnNEO0FBZ0IzRCxNQUFNQyxjQUFjLEdBQUdoQixhQUFhLENBQUNpQixTQUFkLENBQXdCTixNQUEvQztBQUNBTyxNQUFNLENBQUNDLGNBQVAsQ0FBc0JuQixhQUFhLENBQUNpQixTQUFwQyxFQUErQyxRQUEvQyxFQUF5RDtBQUNyREcsWUFBVSxFQUFFLEtBRHlDO0FBRXJEQyxjQUFZLEVBQUUsS0FGdUM7QUFHckRDLEtBQUcsRUFBRSxZQUFXO0FBQUNDLGtEQUFNLENBQUNDLElBQVAsQ0FBWSxlQUFaLEVBQTZCLHFHQUE3QjtBQUFxSSxHQUhqRztBQUlyREMsS0FBRyxFQUFFLE1BQU1UO0FBSjBDLENBQXpEIiwiZmlsZSI6Ii4vc3JjL3VpL2Vycm9yYm91bmRhcnkuanN4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtSZWFjdCwgTG9nZ2VyfSBmcm9tIFwibW9kdWxlc1wiO1xyXG5pbXBvcnQge3JlbW90ZX0gZnJvbSBcImVsZWN0cm9uXCI7XHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVycm9yQm91bmRhcnkgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xyXG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcclxuICAgICAgc3VwZXIocHJvcHMpO1xyXG4gICAgICB0aGlzLnN0YXRlID0ge2hhc0Vycm9yOiBmYWxzZX07XHJcbiAgICB9XHJcblxyXG4gICAgY29tcG9uZW50RGlkQ2F0Y2goZXJyb3IsIGVycm9ySW5mbykge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHtoYXNFcnJvcjogdHJ1ZX0pO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgaWYgKHRoaXMuc3RhdGUuaGFzRXJyb3IpIHJldHVybiA8ZGl2IG9uQ2xpY2s9eygpID0+IHJlbW90ZS5nZXRDdXJyZW50V2luZG93KCkub3BlbkRldlRvb2xzKCl9IGNsYXNzTmFtZT1cInJlYWN0LWVycm9yXCI+VGhlcmUgd2FzIGFuIHVuZXhwZWN0ZWQgRXJyb3IuIENsaWNrIHRvIG9wZW4gY29uc29sZSBmb3IgbW9yZSBkZXRhaWxzLjwvZGl2PjsgIFxyXG4gICAgICByZXR1cm4gdGhpcy5wcm9wcy5jaGlsZHJlbjsgXHJcbiAgICB9XHJcbn1cclxuXHJcbmNvbnN0IG9yaWdpbmFsUmVuZGVyID0gRXJyb3JCb3VuZGFyeS5wcm90b3R5cGUucmVuZGVyO1xyXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoRXJyb3JCb3VuZGFyeS5wcm90b3R5cGUsIFwicmVuZGVyXCIsIHtcclxuICAgIGVudW1lcmFibGU6IGZhbHNlLFxyXG4gICAgY29uZmlndXJhYmxlOiBmYWxzZSxcclxuICAgIHNldDogZnVuY3Rpb24oKSB7TG9nZ2VyLndhcm4oXCJFcnJvckJvdW5kYXJ5XCIsIFwiQWRkb24gcG9saWN5IGZvciBwbHVnaW5zICM1IGh0dHBzOi8vZ2l0aHViLmNvbS9yYXVlbnppL0JldHRlckRpc2NvcmRBcHAvd2lraS9BZGRvbi1Qb2xpY2llcyNwbHVnaW5zXCIpO30sXHJcbiAgICBnZXQ6ICgpID0+IG9yaWdpbmFsUmVuZGVyXHJcbn0pOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/errorboundary.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return ErrorBoundary; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var electron__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! electron */ \"electron\");\n/* harmony import */ var electron__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(electron__WEBPACK_IMPORTED_MODULE_1__);\n\n\nclass ErrorBoundary extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n this.state = {\n hasError: false\n };\n }\n\n componentDidCatch() {\n this.setState({\n hasError: true\n });\n }\n\n render() {\n if (this.state.hasError) return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n onClick: () => electron__WEBPACK_IMPORTED_MODULE_1__[\"remote\"].getCurrentWindow().openDevTools(),\n className: \"react-error\"\n }, \"There was an unexpected Error. Click to open console for more details.\");\n return this.props.children;\n }\n\n}\nconst originalRender = ErrorBoundary.prototype.render;\nObject.defineProperty(ErrorBoundary.prototype, \"render\", {\n enumerable: false,\n configurable: false,\n set: function () {\n modules__WEBPACK_IMPORTED_MODULE_0__[\"Logger\"].warn(\"ErrorBoundary\", \"Addon policy for plugins #5 https://github.com/rauenzi/BetterDiscordApp/wiki/Addon-Policies#plugins\");\n },\n get: () => originalRender\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvZXJyb3Jib3VuZGFyeS5qc3g/ZDZkMSJdLCJuYW1lcyI6WyJFcnJvckJvdW5kYXJ5IiwiUmVhY3QiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwic3RhdGUiLCJoYXNFcnJvciIsImNvbXBvbmVudERpZENhdGNoIiwic2V0U3RhdGUiLCJyZW5kZXIiLCJyZW1vdGUiLCJnZXRDdXJyZW50V2luZG93Iiwib3BlbkRldlRvb2xzIiwiY2hpbGRyZW4iLCJvcmlnaW5hbFJlbmRlciIsInByb3RvdHlwZSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsInNldCIsIkxvZ2dlciIsIndhcm4iLCJnZXQiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ2UsTUFBTUEsYUFBTixTQUE0QkMsNkNBQUssQ0FBQ0MsU0FBbEMsQ0FBNEM7QUFDdkRDLGFBQVcsQ0FBQ0MsS0FBRCxFQUFRO0FBQ2pCLFVBQU1BLEtBQU47QUFDQSxTQUFLQyxLQUFMLEdBQWE7QUFBQ0MsY0FBUSxFQUFFO0FBQVgsS0FBYjtBQUNEOztBQUVEQyxtQkFBaUIsR0FBRztBQUNsQixTQUFLQyxRQUFMLENBQWM7QUFBQ0YsY0FBUSxFQUFFO0FBQVgsS0FBZDtBQUNEOztBQUVERyxRQUFNLEdBQUc7QUFDUCxRQUFJLEtBQUtKLEtBQUwsQ0FBV0MsUUFBZixFQUF5QixvQkFBTztBQUFLLGFBQU8sRUFBRSxNQUFNSSwrQ0FBTSxDQUFDQyxnQkFBUCxHQUEwQkMsWUFBMUIsRUFBcEI7QUFBOEQsZUFBUyxFQUFDO0FBQXhFLGdGQUFQO0FBQ3pCLFdBQU8sS0FBS1IsS0FBTCxDQUFXUyxRQUFsQjtBQUNEOztBQWJzRDtBQWdCM0QsTUFBTUMsY0FBYyxHQUFHZCxhQUFhLENBQUNlLFNBQWQsQ0FBd0JOLE1BQS9DO0FBQ0FPLE1BQU0sQ0FBQ0MsY0FBUCxDQUFzQmpCLGFBQWEsQ0FBQ2UsU0FBcEMsRUFBK0MsUUFBL0MsRUFBeUQ7QUFDckRHLFlBQVUsRUFBRSxLQUR5QztBQUVyREMsY0FBWSxFQUFFLEtBRnVDO0FBR3JEQyxLQUFHLEVBQUUsWUFBVztBQUFDQyxrREFBTSxDQUFDQyxJQUFQLENBQVksZUFBWixFQUE2QixxR0FBN0I7QUFBcUksR0FIakc7QUFJckRDLEtBQUcsRUFBRSxNQUFNVDtBQUowQyxDQUF6RCIsImZpbGUiOiIuL3NyYy91aS9lcnJvcmJvdW5kYXJ5LmpzeC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhY3QsIExvZ2dlcn0gZnJvbSBcIm1vZHVsZXNcIjtcclxuaW1wb3J0IHtyZW1vdGV9IGZyb20gXCJlbGVjdHJvblwiO1xyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFcnJvckJvdW5kYXJ5IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcclxuICAgIGNvbnN0cnVjdG9yKHByb3BzKSB7XHJcbiAgICAgIHN1cGVyKHByb3BzKTtcclxuICAgICAgdGhpcy5zdGF0ZSA9IHtoYXNFcnJvcjogZmFsc2V9O1xyXG4gICAgfVxyXG5cclxuICAgIGNvbXBvbmVudERpZENhdGNoKCkge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHtoYXNFcnJvcjogdHJ1ZX0pO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgaWYgKHRoaXMuc3RhdGUuaGFzRXJyb3IpIHJldHVybiA8ZGl2IG9uQ2xpY2s9eygpID0+IHJlbW90ZS5nZXRDdXJyZW50V2luZG93KCkub3BlbkRldlRvb2xzKCl9IGNsYXNzTmFtZT1cInJlYWN0LWVycm9yXCI+VGhlcmUgd2FzIGFuIHVuZXhwZWN0ZWQgRXJyb3IuIENsaWNrIHRvIG9wZW4gY29uc29sZSBmb3IgbW9yZSBkZXRhaWxzLjwvZGl2PjsgIFxyXG4gICAgICByZXR1cm4gdGhpcy5wcm9wcy5jaGlsZHJlbjsgXHJcbiAgICB9XHJcbn1cclxuXHJcbmNvbnN0IG9yaWdpbmFsUmVuZGVyID0gRXJyb3JCb3VuZGFyeS5wcm90b3R5cGUucmVuZGVyO1xyXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoRXJyb3JCb3VuZGFyeS5wcm90b3R5cGUsIFwicmVuZGVyXCIsIHtcclxuICAgIGVudW1lcmFibGU6IGZhbHNlLFxyXG4gICAgY29uZmlndXJhYmxlOiBmYWxzZSxcclxuICAgIHNldDogZnVuY3Rpb24oKSB7TG9nZ2VyLndhcm4oXCJFcnJvckJvdW5kYXJ5XCIsIFwiQWRkb24gcG9saWN5IGZvciBwbHVnaW5zICM1IGh0dHBzOi8vZ2l0aHViLmNvbS9yYXVlbnppL0JldHRlckRpc2NvcmRBcHAvd2lraS9BZGRvbi1Qb2xpY2llcyNwbHVnaW5zXCIpO30sXHJcbiAgICBnZXQ6ICgpID0+IG9yaWdpbmFsUmVuZGVyXHJcbn0pOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/errorboundary.jsx\n"); /***/ }), @@ -779,7 +778,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _window__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./window */ \"./src/ui/floating/window.jsx\");\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\n\n\n\nclass FloatingWindowContainer extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n this.state = {\n windows: []\n };\n }\n\n get minY() {\n const appContainer = modules__WEBPACK_IMPORTED_MODULE_0__[\"DOM\"].query(`#app-mount > div[class*=\"app-\"]`);\n if (appContainer) return appContainer.offsetTop;\n return 0;\n }\n\n render() {\n return this.state.windows.map(window => /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_window__WEBPACK_IMPORTED_MODULE_1__[\"default\"], _extends({}, window, {\n close: this.close.bind(this, window.id),\n minY: this.minY\n }), window.children));\n }\n\n open(window) {\n this.setState({\n windows: [...this.state.windows, window]\n });\n }\n\n close(id) {\n this.setState({\n windows: this.state.windows.filter(w => {\n if (w.id == id && w.onClose) w.onClose();\n return w.id != id;\n })\n });\n }\n\n static get id() {\n return \"floating-windows\";\n }\n\n static get root() {\n if (this._root) return this._root;\n const container = document.createElement(\"div\");\n container.id = this.id;\n document.body.append(container);\n return this._root = container;\n }\n\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (FloatingWindowContainer);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL2Zsb2F0aW5nL2NvbnRhaW5lci5qc3g/MTU2OSJdLCJuYW1lcyI6WyJGbG9hdGluZ1dpbmRvd0NvbnRhaW5lciIsIlJlYWN0IiwiQ29tcG9uZW50IiwiY29uc3RydWN0b3IiLCJwcm9wcyIsInN0YXRlIiwid2luZG93cyIsIm1pblkiLCJhcHBDb250YWluZXIiLCJET00iLCJxdWVyeSIsIm9mZnNldFRvcCIsInJlbmRlciIsIm1hcCIsIndpbmRvdyIsImNsb3NlIiwiYmluZCIsImlkIiwiY2hpbGRyZW4iLCJvcGVuIiwic2V0U3RhdGUiLCJmaWx0ZXIiLCJ3Iiwib25DbG9zZSIsInJvb3QiLCJfcm9vdCIsImNvbnRhaW5lciIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsImJvZHkiLCJhcHBlbmQiXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7QUFFQTs7QUFFQSxNQUFNQSx1QkFBTixTQUFzQ0MsNkNBQUssQ0FBQ0MsU0FBNUMsQ0FBc0Q7QUFFbERDLGFBQVcsQ0FBQ0MsS0FBRCxFQUFRO0FBQ2YsVUFBTUEsS0FBTjtBQUNBLFNBQUtDLEtBQUwsR0FBYTtBQUFDQyxhQUFPLEVBQUU7QUFBVixLQUFiO0FBQ0g7O0FBRUQsTUFBSUMsSUFBSixHQUFXO0FBQ1AsVUFBTUMsWUFBWSxHQUFHQywyQ0FBRyxDQUFDQyxLQUFKLENBQVcsaUNBQVgsQ0FBckI7QUFDQSxRQUFJRixZQUFKLEVBQWtCLE9BQU9BLFlBQVksQ0FBQ0csU0FBcEI7QUFDbEIsV0FBTyxDQUFQO0FBQ0g7O0FBRURDLFFBQU0sR0FBRztBQUNMLFdBQU8sS0FBS1AsS0FBTCxDQUFXQyxPQUFYLENBQW1CTyxHQUFuQixDQUF1QkMsTUFBTSxpQkFDaEMsNERBQUMsK0NBQUQsZUFBb0JBLE1BQXBCO0FBQTRCLFdBQUssRUFBRSxLQUFLQyxLQUFMLENBQVdDLElBQVgsQ0FBZ0IsSUFBaEIsRUFBc0JGLE1BQU0sQ0FBQ0csRUFBN0IsQ0FBbkM7QUFBcUUsVUFBSSxFQUFFLEtBQUtWO0FBQWhGLFFBQ1NPLE1BQU0sQ0FBQ0ksUUFEaEIsQ0FERyxDQUFQO0FBS0g7O0FBRURDLE1BQUksQ0FBQ0wsTUFBRCxFQUFTO0FBQ1QsU0FBS00sUUFBTCxDQUFjO0FBQ1ZkLGFBQU8sRUFBRSxDQUFDLEdBQUcsS0FBS0QsS0FBTCxDQUFXQyxPQUFmLEVBQXdCUSxNQUF4QjtBQURDLEtBQWQ7QUFHSDs7QUFFREMsT0FBSyxDQUFDRSxFQUFELEVBQUs7QUFDTixTQUFLRyxRQUFMLENBQWM7QUFDVmQsYUFBTyxFQUFFLEtBQUtELEtBQUwsQ0FBV0MsT0FBWCxDQUFtQmUsTUFBbkIsQ0FBMEJDLENBQUMsSUFBSTtBQUNwQyxZQUFJQSxDQUFDLENBQUNMLEVBQUYsSUFBUUEsRUFBUixJQUFjSyxDQUFDLENBQUNDLE9BQXBCLEVBQTZCRCxDQUFDLENBQUNDLE9BQUY7QUFDN0IsZUFBT0QsQ0FBQyxDQUFDTCxFQUFGLElBQVFBLEVBQWY7QUFDSCxPQUhRO0FBREMsS0FBZDtBQU1IOztBQUVELGFBQVdBLEVBQVgsR0FBZ0I7QUFBQyxXQUFPLGtCQUFQO0FBQTJCOztBQUM1QyxhQUFXTyxJQUFYLEdBQWtCO0FBQ2QsUUFBSSxLQUFLQyxLQUFULEVBQWdCLE9BQU8sS0FBS0EsS0FBWjtBQUNoQixVQUFNQyxTQUFTLEdBQUdDLFFBQVEsQ0FBQ0MsYUFBVCxDQUF1QixLQUF2QixDQUFsQjtBQUNBRixhQUFTLENBQUNULEVBQVYsR0FBZSxLQUFLQSxFQUFwQjtBQUNBVSxZQUFRLENBQUNFLElBQVQsQ0FBY0MsTUFBZCxDQUFxQkosU0FBckI7QUFDQSxXQUFPLEtBQUtELEtBQUwsR0FBYUMsU0FBcEI7QUFDSDs7QUEzQ2lEOztBQThDdkMxQixzRkFBZiIsImZpbGUiOiIuL3NyYy91aS9mbG9hdGluZy9jb250YWluZXIuanN4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtSZWFjdCwgRE9NfSBmcm9tIFwibW9kdWxlc1wiO1xyXG5cclxuaW1wb3J0IEZsb2F0aW5nV2luZG93IGZyb20gXCIuL3dpbmRvd1wiO1xyXG5cclxuY2xhc3MgRmxvYXRpbmdXaW5kb3dDb250YWluZXIgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByb3BzKSB7XHJcbiAgICAgICAgc3VwZXIocHJvcHMpO1xyXG4gICAgICAgIHRoaXMuc3RhdGUgPSB7d2luZG93czogW119O1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBtaW5ZKCkge1xyXG4gICAgICAgIGNvbnN0IGFwcENvbnRhaW5lciA9IERPTS5xdWVyeShgI2FwcC1tb3VudCA+IGRpdltjbGFzcyo9XCJhcHAtXCJdYCk7XHJcbiAgICAgICAgaWYgKGFwcENvbnRhaW5lcikgcmV0dXJuIGFwcENvbnRhaW5lci5vZmZzZXRUb3A7XHJcbiAgICAgICAgcmV0dXJuIDA7XHJcbiAgICB9XHJcblxyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnN0YXRlLndpbmRvd3MubWFwKHdpbmRvdyA9PlxyXG4gICAgICAgICAgICA8RmxvYXRpbmdXaW5kb3cgey4uLndpbmRvd30gY2xvc2U9e3RoaXMuY2xvc2UuYmluZCh0aGlzLCB3aW5kb3cuaWQpfSBtaW5ZPXt0aGlzLm1pbll9PlxyXG4gICAgICAgICAgICAgICAgICAgIHt3aW5kb3cuY2hpbGRyZW59XHJcbiAgICAgICAgICAgIDwvRmxvYXRpbmdXaW5kb3c+XHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBvcGVuKHdpbmRvdykge1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICB3aW5kb3dzOiBbLi4udGhpcy5zdGF0ZS53aW5kb3dzLCB3aW5kb3ddXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgY2xvc2UoaWQpIHtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgd2luZG93czogdGhpcy5zdGF0ZS53aW5kb3dzLmZpbHRlcih3ID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICh3LmlkID09IGlkICYmIHcub25DbG9zZSkgdy5vbkNsb3NlKCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdy5pZCAhPSBpZDtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgZ2V0IGlkKCkge3JldHVybiBcImZsb2F0aW5nLXdpbmRvd3NcIjt9XHJcbiAgICBzdGF0aWMgZ2V0IHJvb3QoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX3Jvb3QpIHJldHVybiB0aGlzLl9yb290O1xyXG4gICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XHJcbiAgICAgICAgY29udGFpbmVyLmlkID0gdGhpcy5pZDtcclxuICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZChjb250YWluZXIpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9yb290ID0gY29udGFpbmVyO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBGbG9hdGluZ1dpbmRvd0NvbnRhaW5lcjsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/ui/floating/container.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _window__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./window */ \"./src/ui/floating/window.jsx\");\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\n\n\n\nclass FloatingWindowContainer extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n this.state = {\n windows: []\n };\n }\n\n get minY() {\n const appContainer = modules__WEBPACK_IMPORTED_MODULE_0__[\"DOM\"].query(`#app-mount > div[class*=\"app-\"]`);\n if (appContainer) return appContainer.offsetTop;\n return 0;\n }\n\n render() {\n return this.state.windows.map(window => /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_window__WEBPACK_IMPORTED_MODULE_1__[\"default\"], _extends({}, window, {\n close: this.close.bind(this, window.id),\n minY: this.minY\n }), window.children));\n }\n\n open(window) {\n this.setState({\n windows: [...this.state.windows, window]\n });\n }\n\n close(id) {\n this.setState({\n windows: this.state.windows.filter(w => {\n if (w.id == id && w.onClose) w.onClose();\n return w.id != id;\n })\n });\n }\n\n static get id() {\n return \"floating-windows\";\n }\n\n static get root() {\n if (this._root) return this._root;\n const container = document.createElement(\"div\");\n container.id = this.id;\n document.body.append(container);\n return this._root = container;\n }\n\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (FloatingWindowContainer);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvZmxvYXRpbmcvY29udGFpbmVyLmpzeD8xNTY5Il0sIm5hbWVzIjpbIkZsb2F0aW5nV2luZG93Q29udGFpbmVyIiwiUmVhY3QiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwic3RhdGUiLCJ3aW5kb3dzIiwibWluWSIsImFwcENvbnRhaW5lciIsIkRPTSIsInF1ZXJ5Iiwib2Zmc2V0VG9wIiwicmVuZGVyIiwibWFwIiwid2luZG93IiwiY2xvc2UiLCJiaW5kIiwiaWQiLCJjaGlsZHJlbiIsIm9wZW4iLCJzZXRTdGF0ZSIsImZpbHRlciIsInciLCJvbkNsb3NlIiwicm9vdCIsIl9yb290IiwiY29udGFpbmVyIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwiYm9keSIsImFwcGVuZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTtBQUVBOztBQUVBLE1BQU1BLHVCQUFOLFNBQXNDQyw2Q0FBSyxDQUFDQyxTQUE1QyxDQUFzRDtBQUVsREMsYUFBVyxDQUFDQyxLQUFELEVBQVE7QUFDZixVQUFNQSxLQUFOO0FBQ0EsU0FBS0MsS0FBTCxHQUFhO0FBQUNDLGFBQU8sRUFBRTtBQUFWLEtBQWI7QUFDSDs7QUFFRCxNQUFJQyxJQUFKLEdBQVc7QUFDUCxVQUFNQyxZQUFZLEdBQUdDLDJDQUFHLENBQUNDLEtBQUosQ0FBVyxpQ0FBWCxDQUFyQjtBQUNBLFFBQUlGLFlBQUosRUFBa0IsT0FBT0EsWUFBWSxDQUFDRyxTQUFwQjtBQUNsQixXQUFPLENBQVA7QUFDSDs7QUFFREMsUUFBTSxHQUFHO0FBQ0wsV0FBTyxLQUFLUCxLQUFMLENBQVdDLE9BQVgsQ0FBbUJPLEdBQW5CLENBQXVCQyxNQUFNLGlCQUNoQyw0REFBQywrQ0FBRCxlQUFvQkEsTUFBcEI7QUFBNEIsV0FBSyxFQUFFLEtBQUtDLEtBQUwsQ0FBV0MsSUFBWCxDQUFnQixJQUFoQixFQUFzQkYsTUFBTSxDQUFDRyxFQUE3QixDQUFuQztBQUFxRSxVQUFJLEVBQUUsS0FBS1Y7QUFBaEYsUUFDU08sTUFBTSxDQUFDSSxRQURoQixDQURHLENBQVA7QUFLSDs7QUFFREMsTUFBSSxDQUFDTCxNQUFELEVBQVM7QUFDVCxTQUFLTSxRQUFMLENBQWM7QUFDVmQsYUFBTyxFQUFFLENBQUMsR0FBRyxLQUFLRCxLQUFMLENBQVdDLE9BQWYsRUFBd0JRLE1BQXhCO0FBREMsS0FBZDtBQUdIOztBQUVEQyxPQUFLLENBQUNFLEVBQUQsRUFBSztBQUNOLFNBQUtHLFFBQUwsQ0FBYztBQUNWZCxhQUFPLEVBQUUsS0FBS0QsS0FBTCxDQUFXQyxPQUFYLENBQW1CZSxNQUFuQixDQUEwQkMsQ0FBQyxJQUFJO0FBQ3BDLFlBQUlBLENBQUMsQ0FBQ0wsRUFBRixJQUFRQSxFQUFSLElBQWNLLENBQUMsQ0FBQ0MsT0FBcEIsRUFBNkJELENBQUMsQ0FBQ0MsT0FBRjtBQUM3QixlQUFPRCxDQUFDLENBQUNMLEVBQUYsSUFBUUEsRUFBZjtBQUNILE9BSFE7QUFEQyxLQUFkO0FBTUg7O0FBRUQsYUFBV0EsRUFBWCxHQUFnQjtBQUFDLFdBQU8sa0JBQVA7QUFBMkI7O0FBQzVDLGFBQVdPLElBQVgsR0FBa0I7QUFDZCxRQUFJLEtBQUtDLEtBQVQsRUFBZ0IsT0FBTyxLQUFLQSxLQUFaO0FBQ2hCLFVBQU1DLFNBQVMsR0FBR0MsUUFBUSxDQUFDQyxhQUFULENBQXVCLEtBQXZCLENBQWxCO0FBQ0FGLGFBQVMsQ0FBQ1QsRUFBVixHQUFlLEtBQUtBLEVBQXBCO0FBQ0FVLFlBQVEsQ0FBQ0UsSUFBVCxDQUFjQyxNQUFkLENBQXFCSixTQUFyQjtBQUNBLFdBQU8sS0FBS0QsS0FBTCxHQUFhQyxTQUFwQjtBQUNIOztBQTNDaUQ7O0FBOEN2QzFCLHNGQUFmIiwiZmlsZSI6Ii4vc3JjL3VpL2Zsb2F0aW5nL2NvbnRhaW5lci5qc3guanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlYWN0LCBET019IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5pbXBvcnQgRmxvYXRpbmdXaW5kb3cgZnJvbSBcIi4vd2luZG93XCI7XHJcblxyXG5jbGFzcyBGbG9hdGluZ1dpbmRvd0NvbnRhaW5lciBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcclxuICAgICAgICBzdXBlcihwcm9wcyk7XHJcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHt3aW5kb3dzOiBbXX07XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IG1pblkoKSB7XHJcbiAgICAgICAgY29uc3QgYXBwQ29udGFpbmVyID0gRE9NLnF1ZXJ5KGAjYXBwLW1vdW50ID4gZGl2W2NsYXNzKj1cImFwcC1cIl1gKTtcclxuICAgICAgICBpZiAoYXBwQ29udGFpbmVyKSByZXR1cm4gYXBwQ29udGFpbmVyLm9mZnNldFRvcDtcclxuICAgICAgICByZXR1cm4gMDtcclxuICAgIH1cclxuXHJcbiAgICByZW5kZXIoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhdGUud2luZG93cy5tYXAod2luZG93ID0+XHJcbiAgICAgICAgICAgIDxGbG9hdGluZ1dpbmRvdyB7Li4ud2luZG93fSBjbG9zZT17dGhpcy5jbG9zZS5iaW5kKHRoaXMsIHdpbmRvdy5pZCl9IG1pblk9e3RoaXMubWluWX0+XHJcbiAgICAgICAgICAgICAgICAgICAge3dpbmRvdy5jaGlsZHJlbn1cclxuICAgICAgICAgICAgPC9GbG9hdGluZ1dpbmRvdz5cclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIG9wZW4od2luZG93KSB7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgIHdpbmRvd3M6IFsuLi50aGlzLnN0YXRlLndpbmRvd3MsIHdpbmRvd11cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBjbG9zZShpZCkge1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICB3aW5kb3dzOiB0aGlzLnN0YXRlLndpbmRvd3MuZmlsdGVyKHcgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHcuaWQgPT0gaWQgJiYgdy5vbkNsb3NlKSB3Lm9uQ2xvc2UoKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB3LmlkICE9IGlkO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBnZXQgaWQoKSB7cmV0dXJuIFwiZmxvYXRpbmctd2luZG93c1wiO31cclxuICAgIHN0YXRpYyBnZXQgcm9vdCgpIHtcclxuICAgICAgICBpZiAodGhpcy5fcm9vdCkgcmV0dXJuIHRoaXMuX3Jvb3Q7XHJcbiAgICAgICAgY29uc3QgY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcclxuICAgICAgICBjb250YWluZXIuaWQgPSB0aGlzLmlkO1xyXG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kKGNvbnRhaW5lcik7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jvb3QgPSBjb250YWluZXI7XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IEZsb2F0aW5nV2luZG93Q29udGFpbmVyOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/floating/container.jsx\n"); /***/ }), @@ -791,7 +790,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var modu /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return FloatingWindow; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _structs_screen__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../structs/screen */ \"./src/structs/screen.js\");\n/* harmony import */ var _icons_close__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../icons/close */ \"./src/ui/icons/close.jsx\");\n/* harmony import */ var _icons_fullscreen__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../icons/fullscreen */ \"./src/ui/icons/fullscreen.jsx\");\n/* harmony import */ var _modals__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../modals */ \"./src/ui/modals.js\");\n\n\n\n\n // const Draggable = WebpackModules.getByDisplayName(\"Draggable\");\n// {\n// \"dragAnywhere\": true,\n// \"className\": \"pictureInPictureWindow-1B5qSe\",\n// \"maxX\": 1969,\n// \"maxY\": this.maxY,\n// \"onDragStart\": \"ƒ () {}\",\n// \"onDrag\": \"ƒ () {}\",\n// \"onDragEnd\": \"ƒ () {}\",\n// \"children\": \"
\",\n// \"initialX\": 0,\n// \"initialY\": 0\n// }\n\nclass FloatingWindow extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n this.state = {\n modalOpen: false\n };\n this.offX = 0;\n this.offY = 0;\n this.maxX = this.props.maxX || _structs_screen__WEBPACK_IMPORTED_MODULE_1__[\"default\"].width;\n this.maxY = this.props.maxY || _structs_screen__WEBPACK_IMPORTED_MODULE_1__[\"default\"].height;\n this.minX = this.props.minX || 0;\n this.minY = this.props.minY || 0;\n this.titlebar = modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createRef();\n this.window = modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createRef();\n this.close = this.close.bind(this);\n this.maximize = this.maximize.bind(this);\n this.onDrag = this.onDrag.bind(this);\n this.onDragStart = this.onDragStart.bind(this);\n this.onDragStop = this.onDragStop.bind(this);\n this.onResizeStart = this.onResizeStart.bind(this);\n }\n\n componentDidMount() {\n this.window.current.addEventListener(\"mousedown\", this.onResizeStart, false);\n this.titlebar.current.addEventListener(\"mousedown\", this.onDragStart, false);\n document.addEventListener(\"mouseup\", this.onDragStop, false);\n }\n\n onResizeStart() {\n this.currentWidth = this.window.current.offsetWidth;\n this.currentHeight = this.window.current.offsetHeight;\n }\n\n onDragStop() {\n document.removeEventListener(\"mousemove\", this.onDrag, true);\n const width = this.window.current.offsetWidth;\n const height = this.window.current.offsetHeight;\n\n if (width != this.currentWidth || height != this.currentHeight) {\n if (this.props.onResize) this.props.onResize();\n const left = parseInt(this.window.current.style.left);\n const top = parseInt(this.window.current.style.top);\n if (left + width >= this.maxX) this.window.current.style.width = this.maxX - left + \"px\";\n if (top + height >= this.maxY) this.window.current.style.height = this.maxY - top + \"px\";\n }\n\n this.currentWidth = width;\n this.currentHeight = height;\n }\n\n onDragStart(e) {\n const div = this.window.current;\n this.offY = e.clientY - parseInt(div.offsetTop);\n this.offX = e.clientX - parseInt(div.offsetLeft);\n document.addEventListener(\"mousemove\", this.onDrag, true);\n }\n\n onDrag(e) {\n const div = this.window.current;\n let newTop = e.clientY - this.offY;\n if (newTop <= this.minY) newTop = this.minY;\n if (newTop + this.currentHeight >= this.maxY) newTop = this.maxY - this.currentHeight;\n let newLeft = e.clientX - this.offX;\n if (newLeft <= this.minX) newLeft = this.minX;\n if (newLeft + this.currentWidth >= this.maxX) newLeft = this.maxX - this.currentWidth;\n div.style.top = newTop + \"px\";\n div.style.left = newLeft + \"px\";\n }\n\n componentWillUnmount() {\n this.titlebar.current.removeEventListener(\"mousedown\", this.onDragStart, false);\n document.removeEventListener(\"mouseup\", this.onDragStop, false);\n }\n\n render() {\n const top = this.props.center ? _structs_screen__WEBPACK_IMPORTED_MODULE_1__[\"default\"].height / 2 - this.props.height / 2 : this.props.top;\n const left = this.props.center ? _structs_screen__WEBPACK_IMPORTED_MODULE_1__[\"default\"].width / 2 - this.props.width / 2 : this.props.left; // console.log(top, left);\n\n const className = `floating-window${` ${this.props.className}` || \"\"}${this.props.resizable ? \" resizable\" : \"\"}${this.state.modalOpen ? \" modal-open\" : \"\"}`;\n const styles = {\n height: this.props.height,\n width: this.props.width,\n left: left || 0,\n top: top || 0\n };\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n id: this.props.id,\n className: className,\n ref: this.window,\n style: styles\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"floating-window-titlebar\",\n ref: this.titlebar\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"span\", {\n className: \"title\"\n }, this.props.title), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"floating-window-buttons\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"button maximize-button\",\n onClick: this.maximize\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_fullscreen__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n size: \"18px\"\n })), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"button close-button\",\n onClick: this.close\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_close__WEBPACK_IMPORTED_MODULE_2__[\"default\"], null)))), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"floating-window-content\"\n }, this.props.children));\n }\n\n maximize() {\n this.window.current.style.width = \"100%\";\n this.window.current.style.height = \"100%\";\n if (this.props.onResize) this.props.onResize();\n const width = this.window.current.offsetWidth;\n const height = this.window.current.offsetHeight;\n const left = parseInt(this.window.current.style.left);\n const top = parseInt(this.window.current.style.top);\n const right = left + width;\n const bottom = top + height; // Prevent expanding off the bottom and right and readjust position\n\n if (bottom > this.maxY) this.window.current.style.top = this.maxY - height + \"px\";\n if (right > this.maxX) this.window.current.style.left = this.maxX - width + \"px\";\n const newLeft = parseInt(this.window.current.style.left);\n const newTop = parseInt(this.window.current.style.top); // For small screens it's possible this pushes us off the other direction... we need to readjust size\n\n if (newTop < this.minY) {\n const difference = this.minY - newTop;\n this.window.current.style.top = this.minY + \"px\";\n this.window.current.style.height = height - difference + \"px\";\n }\n\n if (newLeft < this.minX) {\n const difference = this.minX - newLeft;\n this.window.current.style.left = this.minX + \"px\";\n this.window.current.style.height = width - difference + \"px\";\n }\n }\n\n async close() {\n let shouldClose = true;\n const confirmClose = typeof this.props.confirmClose == \"function\" ? this.props.confirmClose() : this.props.confirmClose;\n\n if (confirmClose) {\n this.setState({\n modalOpen: true\n });\n shouldClose = await this.confirmClose();\n this.setState({\n modalOpen: false\n });\n }\n\n if (this.props.close && shouldClose) this.props.close();\n }\n\n confirmClose() {\n return new Promise(resolve => {\n _modals__WEBPACK_IMPORTED_MODULE_4__[\"default\"].showConfirmationModal(modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Modals.confirmAction, this.props.confirmationText, {\n danger: true,\n confirmText: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Modals.close,\n onConfirm: () => {\n resolve(true);\n },\n onCancel: () => {\n resolve(false);\n }\n });\n });\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL2Zsb2F0aW5nL3dpbmRvdy5qc3g/Y2YzZCJdLCJuYW1lcyI6WyJGbG9hdGluZ1dpbmRvdyIsIlJlYWN0IiwiQ29tcG9uZW50IiwiY29uc3RydWN0b3IiLCJwcm9wcyIsInN0YXRlIiwibW9kYWxPcGVuIiwib2ZmWCIsIm9mZlkiLCJtYXhYIiwiU2NyZWVuIiwid2lkdGgiLCJtYXhZIiwiaGVpZ2h0IiwibWluWCIsIm1pblkiLCJ0aXRsZWJhciIsImNyZWF0ZVJlZiIsIndpbmRvdyIsImNsb3NlIiwiYmluZCIsIm1heGltaXplIiwib25EcmFnIiwib25EcmFnU3RhcnQiLCJvbkRyYWdTdG9wIiwib25SZXNpemVTdGFydCIsImNvbXBvbmVudERpZE1vdW50IiwiY3VycmVudCIsImFkZEV2ZW50TGlzdGVuZXIiLCJkb2N1bWVudCIsImN1cnJlbnRXaWR0aCIsIm9mZnNldFdpZHRoIiwiY3VycmVudEhlaWdodCIsIm9mZnNldEhlaWdodCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJvblJlc2l6ZSIsImxlZnQiLCJwYXJzZUludCIsInN0eWxlIiwidG9wIiwiZSIsImRpdiIsImNsaWVudFkiLCJvZmZzZXRUb3AiLCJjbGllbnRYIiwib2Zmc2V0TGVmdCIsIm5ld1RvcCIsIm5ld0xlZnQiLCJjb21wb25lbnRXaWxsVW5tb3VudCIsInJlbmRlciIsImNlbnRlciIsImNsYXNzTmFtZSIsInJlc2l6YWJsZSIsInN0eWxlcyIsImlkIiwidGl0bGUiLCJjaGlsZHJlbiIsInJpZ2h0IiwiYm90dG9tIiwiZGlmZmVyZW5jZSIsInNob3VsZENsb3NlIiwiY29uZmlybUNsb3NlIiwic2V0U3RhdGUiLCJQcm9taXNlIiwicmVzb2x2ZSIsIk1vZGFscyIsInNob3dDb25maXJtYXRpb25Nb2RhbCIsIlN0cmluZ3MiLCJjb25maXJtQWN0aW9uIiwiY29uZmlybWF0aW9uVGV4dCIsImRhbmdlciIsImNvbmZpcm1UZXh0Iiwib25Db25maXJt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TUMsWUFBWSxHQUFHLE9BQU8sS0FBS3pELEtBQUwsQ0FBV3lELFlBQWxCLElBQW1DLFVBQW5DLEdBQWdELEtBQUt6RCxLQUFMLENBQVd5RCxZQUFYLEVBQWhELEdBQTRFLEtBQUt6RCxLQUFMLENBQVd5RCxZQUE1Rzs7QUFDQSxRQUFJQSxZQUFKLEVBQWtCO0FBQ2QsV0FBS0MsUUFBTCxDQUFjO0FBQUN4RCxpQkFBUyxFQUFFO0FBQVosT0FBZDtBQUNBc0QsaUJBQVcsR0FBRyxNQUFNLEtBQUtDLFlBQUwsRUFBcEI7QUFDQSxXQUFLQyxRQUFMLENBQWM7QUFBQ3hELGlCQUFTLEVBQUU7QUFBWixPQUFkO0FBQ0g7O0FBQ0QsUUFBSSxLQUFLRixLQUFMLENBQVdlLEtBQVgsSUFBb0J5QyxXQUF4QixFQUFxQyxLQUFLeEQsS0FBTCxDQUFXZSxLQUFYO0FBQ3hDOztBQUVEMEMsY0FBWSxHQUFHO0FBQ1gsV0FBTyxJQUFJRSxPQUFKLENBQVlDLE9BQU8sSUFBSTtBQUMxQkMscURBQU0sQ0FBQ0MscUJBQVAsQ0FBNkJDLCtDQUFPLENBQUNGLE1BQVIsQ0FBZUcsYUFBNUMsRUFBMkQsS0FBS2hFLEtBQUwsQ0FBV2lFLGdCQUF0RSxFQUF3RjtBQUNwRkMsY0FBTSxFQUFFLElBRDRFO0FBRXBGQyxtQkFBVyxFQUFFSiwrQ0FBTyxDQUFDRixNQUFSLENBQWU5QyxLQUZ3RDtBQUdwRnFELGlCQUFTLEVBQUUsTUFBTTtBQUFDUixpQkFBTyxDQUFDLElBQUQsQ0FBUDtBQUFlLFNBSG1EO0FBSXBGUyxnQkFBUSxFQUFFLE1BQU07QUFBQ1QsaUJBQU8sQ0FBQyxLQUFELENBQVA7QUFBZ0I7QUFKbUQsT0FBeEY7QUFNSCxLQVBNLENBQVA7QUFRSDs7QUEzSnVEIiwiZmlsZSI6Ii4vc3JjL3VpL2Zsb2F0aW5nL3dpbmRvdy5qc3guanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlYWN0LCBTdHJpbmdzfSBmcm9tIFwibW9kdWxlc1wiO1xyXG5cclxuaW1wb3J0IFNjcmVlbiBmcm9tIFwiLi4vLi4vc3RydWN0cy9zY3JlZW5cIjtcclxuaW1wb3J0IENsb3NlQnV0dG9uIGZyb20gXCIuLi9pY29ucy9jbG9zZVwiO1xyXG5pbXBvcnQgTWF4aW1pemVJY29uIGZyb20gXCIuLi9pY29ucy9mdWxsc2NyZWVuXCI7XHJcbmltcG9ydCBNb2RhbHMgZnJvbSBcIi4uL21vZGFsc1wiO1xyXG5cclxuLy8gY29uc3QgRHJhZ2dhYmxlID0gV2VicGFja01vZHVsZXMuZ2V0QnlEaXNwbGF5TmFtZShcIkRyYWdnYWJsZVwiKTtcclxuLy8ge1xyXG4vLyAgICAgXCJkcmFnQW55d2hlcmVcIjogdHJ1ZSxcclxuLy8gICAgIFwiY2xhc3NOYW1lXCI6IFwicGljdHVyZUluUGljdHVyZVdpbmRvdy0xQjVxU2VcIixcclxuLy8gICAgIFwibWF4WFwiOiAxOTY5LFxyXG4vLyAgICAgXCJtYXhZXCI6IHRoaXMubWF4WSxcclxuLy8gICAgIFwib25EcmFnU3RhcnRcIjogXCLGkiAoKSB7fVwiLFxyXG4vLyAgICAgXCJvbkRyYWdcIjogXCLGkiAoKSB7fVwiLFxyXG4vLyAgICAgXCJvbkRyYWdFbmRcIjogXCLGkiAoKSB7fVwiLFxyXG4vLyAgICAgXCJjaGlsZHJlblwiOiBcIjxkaXYgLz5cIixcclxuLy8gICAgIFwiaW5pdGlhbFhcIjogMCxcclxuLy8gICAgIFwiaW5pdGlhbFlcIjogMFxyXG4vLyAgIH1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZsb2F0aW5nV2luZG93IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcm9wcykge1xyXG4gICAgICAgIHN1cGVyKHByb3BzKTtcclxuXHJcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHttb2RhbE9wZW46IGZhbHNlfTtcclxuXHJcbiAgICAgICAgdGhpcy5vZmZYID0gMDtcclxuICAgICAgICB0aGlzLm9mZlkgPSAwO1xyXG5cclxuICAgICAgICB0aGlzLm1heFggPSB0aGlzLnByb3BzLm1heFggfHwgU2NyZWVuLndpZHRoO1xyXG4gICAgICAgIHRoaXMubWF4WSA9IHRoaXMucHJvcHMubWF4WSB8fCBTY3JlZW4uaGVpZ2h0O1xyXG4gICAgICAgIHRoaXMubWluWCA9IHRoaXMucHJvcHMubWluWCB8fCAwO1xyXG4gICAgICAgIHRoaXMubWluWSA9IHRoaXMucHJvcHMubWluWSB8fCAwO1xyXG5cclxuICAgICAgICB0aGlzLnRpdGxlYmFyID0gUmVhY3QuY3JlYXRlUmVmKCk7XHJcbiAgICAgICAgdGhpcy53aW5kb3cgPSBSZWFjdC5jcmVhdGVSZWYoKTtcclxuXHJcbiAgICAgICAgdGhpcy5jbG9zZSA9IHRoaXMuY2xvc2UuYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLm1heGltaXplID0gdGhpcy5tYXhpbWl6ZS5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMub25EcmFnID0gdGhpcy5vbkRyYWcuYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLm9uRHJhZ1N0YXJ0ID0gdGhpcy5vbkRyYWdTdGFydC5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMub25EcmFnU3RvcCA9IHRoaXMub25EcmFnU3RvcC5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMub25SZXNpemVTdGFydCA9IHRoaXMub25SZXNpemVTdGFydC5iaW5kKHRoaXMpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbXBvbmVudERpZE1vdW50KCkge1xyXG4gICAgICAgIHRoaXMud2luZG93LmN1cnJlbnQuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlZG93blwiLCB0aGlzLm9uUmVzaXplU3RhcnQsIGZhbHNlKTtcclxuICAgICAgICB0aGlzLnRpdGxlYmFyLmN1cnJlbnQuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlZG93blwiLCB0aGlzLm9uRHJhZ1N0YXJ0LCBmYWxzZSk7XHJcbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNldXBcIiwgdGhpcy5vbkRyYWdTdG9wLCBmYWxzZSk7XHJcbiAgICB9XHJcblxyXG4gICAgb25SZXNpemVTdGFydCgpIHtcclxuICAgICAgICB0aGlzLmN1cnJlbnRXaWR0aCA9IHRoaXMud2luZG93LmN1cnJlbnQub2Zmc2V0V2lkdGg7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50SGVpZ2h0ID0gdGhpcy53aW5kb3cuY3VycmVudC5vZmZzZXRIZWlnaHQ7XHJcbiAgICB9XHJcblxyXG4gICAgb25EcmFnU3RvcCgpIHtcclxuICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2Vtb3ZlXCIsIHRoaXMub25EcmFnLCB0cnVlKTtcclxuICAgICAgICBjb25zdCB3aWR0aCA9IHRoaXMud2luZG93LmN1cnJlbnQub2Zmc2V0V2lkdGg7XHJcbiAgICAgICAgY29uc3QgaGVpZ2h0ID0gdGhpcy53aW5kb3cuY3VycmVudC5vZmZzZXRIZWlnaHQ7XHJcbiAgICAgICAgaWYgKHdpZHRoICE9IHRoaXMuY3VycmVudFdpZHRoIHx8IGhlaWdodCAhPSB0aGlzLmN1cnJlbnRIZWlnaHQpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMucHJvcHMub25SZXNpemUpIHRoaXMucHJvcHMub25SZXNpemUoKTtcclxuICAgICAgICAgICAgY29uc3QgbGVmdCA9IHBhcnNlSW50KHRoaXMud2luZG93LmN1cnJlbnQuc3R5bGUubGVmdCk7XHJcbiAgICAgICAgICAgIGNvbnN0IHRvcCA9IHBhcnNlSW50KHRoaXMud2luZG93LmN1cnJlbnQuc3R5bGUudG9wKTtcclxuICAgICAgICAgICAgaWYgKGxlZnQgKyB3aWR0aCA+PSB0aGlzLm1heFgpIHRoaXMud2luZG93LmN1cnJlbnQuc3R5bGUud2lkdGggPSAodGhpcy5tYXhYIC0gbGVmdCkgKyBcInB4XCI7XHJcbiAgICAgICAgICAgIGlmICh0b3AgKyBoZWlnaHQgPj0gdGhpcy5tYXhZKSB0aGlzLndpbmRvdy5jdXJyZW50LnN0eWxlLmhlaWdodCA9ICh0aGlzLm1heFkgLSB0b3ApICsgXCJweFwiO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmN1cnJlbnRXaWR0aCA9IHdpZHRoO1xyXG4gICAgICAgIHRoaXMuY3VycmVudEhlaWdodCA9IGhlaWdodDtcclxuICAgIH1cclxuXHJcbiAgICBvbkRyYWdTdGFydChlKSB7XHJcbiAgICAgICAgY29uc3QgZGl2ID0gdGhpcy53aW5kb3cuY3VycmVudDtcclxuICAgICAgICB0aGlzLm9mZlkgPSBlLmNsaWVudFkgLSBwYXJzZUludChkaXYub2Zmc2V0VG9wKTtcclxuICAgICAgICB0aGlzLm9mZlggPSBlLmNsaWVudFggLSBwYXJzZUludChkaXYub2Zmc2V0TGVmdCk7XHJcbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlbW92ZVwiLCB0aGlzLm9uRHJhZywgdHJ1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgb25EcmFnKGUpIHtcclxuICAgICAgICBjb25zdCBkaXYgPSB0aGlzLndpbmRvdy5jdXJyZW50O1xyXG4gICAgICAgIGxldCBuZXdUb3AgPSAoZS5jbGllbnRZIC0gdGhpcy5vZmZZKTtcclxuICAgICAgICBpZiAobmV3VG9wIDw9IHRoaXMubWluWSkgbmV3VG9wID0gdGhpcy5taW5ZO1xyXG4gICAgICAgIGlmIChuZXdUb3AgKyB0aGlzLmN1cnJlbnRIZWlnaHQgPj0gdGhpcy5tYXhZKSBuZXdUb3AgPSB0aGlzLm1heFkgLSB0aGlzLmN1cnJlbnRIZWlnaHQ7XHJcblxyXG4gICAgICAgIGxldCBuZXdMZWZ0ID0gKGUuY2xpZW50WCAtIHRoaXMub2ZmWCk7XHJcbiAgICAgICAgaWYgKG5ld0xlZnQgPD0gdGhpcy5taW5YKSBuZXdMZWZ0ID0gdGhpcy5taW5YO1xyXG4gICAgICAgIGlmIChuZXdMZWZ0ICsgdGhpcy5jdXJyZW50V2lkdGggPj0gdGhpcy5tYXhYKSBuZXdMZWZ0ID0gdGhpcy5tYXhYIC0gdGhpcy5jdXJyZW50V2lkdGg7XHJcblxyXG4gICAgICAgIGRpdi5zdHlsZS50b3AgPSBuZXdUb3AgKyBcInB4XCI7XHJcbiAgICAgICAgZGl2LnN0eWxlLmxlZnQgPSBuZXdMZWZ0ICsgXCJweFwiO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xyXG4gICAgICAgIHRoaXMudGl0bGViYXIuY3VycmVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2Vkb3duXCIsIHRoaXMub25EcmFnU3RhcnQsIGZhbHNlKTtcclxuICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2V1cFwiLCB0aGlzLm9uRHJhZ1N0b3AsIGZhbHNlKTtcclxuICAgIH1cclxuXHJcbiAgICByZW5kZXIoKSB7XHJcbiAgICAgICAgY29uc3QgdG9wID0gdGhpcy5wcm9wcy5jZW50ZXIgPyAoU2NyZWVuLmhlaWdodCAvIDIpIC0gKHRoaXMucHJvcHMuaGVpZ2h0IC8gMikgOiB0aGlzLnByb3BzLnRvcDtcclxuICAgICAgICBjb25zdCBsZWZ0ID0gdGhpcy5wcm9wcy5jZW50ZXIgPyAoU2NyZWVuLndpZHRoIC8gMikgLSAodGhpcy5wcm9wcy53aWR0aCAvIDIpIDogdGhpcy5wcm9wcy5sZWZ0IDtcclxuICAgICAgICAvLyBjb25zb2xlLmxvZyh0b3AsIGxlZnQpO1xyXG4gICAgICAgIGNvbnN0IGNsYXNzTmFtZSA9IGBmbG9hdGluZy13aW5kb3cke2AgJHt0aGlzLnByb3BzLmNsYXNzTmFtZX1gIHx8IFwiXCJ9JHt0aGlzLnByb3BzLnJlc2l6YWJsZSA/IFwiIHJlc2l6YWJsZVwiIDogXCJcIn0ke3RoaXMuc3RhdGUubW9kYWxPcGVuID8gXCIgbW9kYWwtb3BlblwiIDogXCJcIn1gO1xyXG4gICAgICAgIGNvbnN0IHN0eWxlcyA9IHtoZWlnaHQ6IHRoaXMucHJvcHMuaGVpZ2h0LCB3aWR0aDogdGhpcy5wcm9wcy53aWR0aCwgbGVmdDogbGVmdCB8fCAwLCB0b3A6IHRvcCB8fCAwfTtcclxuICAgICAgICByZXR1cm4gPGRpdiBpZD17dGhpcy5wcm9wcy5pZH0gY2xhc3NOYW1lPXtjbGFzc05hbWV9IHJlZj17dGhpcy53aW5kb3d9IHN0eWxlPXtzdHlsZXN9PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxvYXRpbmctd2luZG93LXRpdGxlYmFyXCIgcmVmPXt0aGlzLnRpdGxlYmFyfT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGl0bGVcIj57dGhpcy5wcm9wcy50aXRsZX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxvYXRpbmctd2luZG93LWJ1dHRvbnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYnV0dG9uIG1heGltaXplLWJ1dHRvblwiIG9uQ2xpY2s9e3RoaXMubWF4aW1pemV9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxNYXhpbWl6ZUljb24gc2l6ZT1cIjE4cHhcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJ1dHRvbiBjbG9zZS1idXR0b25cIiBvbkNsaWNrPXt0aGlzLmNsb3NlfT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q2xvc2VCdXR0b24gLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsb2F0aW5nLXdpbmRvdy1jb250ZW50XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt0aGlzLnByb3BzLmNoaWxkcmVufVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+O1xyXG4gICAgfVxyXG5cclxuICAgIG1heGltaXplKCkge1xyXG4gICAgICAgIHRoaXMud2luZG93LmN1cnJlbnQuc3R5bGUud2lkdGggPSBcIjEwMCVcIjtcclxuICAgICAgICB0aGlzLndpbmRvdy5jdXJyZW50LnN0eWxlLmhlaWdodCA9IFwiMTAwJVwiO1xyXG4gICAgICAgIGlmICh0aGlzLnByb3BzLm9uUmVzaXplKSB0aGlzLnByb3BzLm9uUmVzaXplKCk7XHJcblxyXG4gICAgICAgIGNvbnN0IHdpZHRoID0gdGhpcy53aW5kb3cuY3VycmVudC5vZmZzZXRXaWR0aDtcclxuICAgICAgICBjb25zdCBoZWlnaHQgPSB0aGlzLndpbmRvdy5jdXJyZW50Lm9mZnNldEhlaWdodDtcclxuICAgICAgICBjb25zdCBsZWZ0ID0gcGFyc2VJbnQodGhpcy53aW5kb3cuY3VycmVudC5zdHlsZS5sZWZ0KTtcclxuICAgICAgICBjb25zdCB0b3AgPSBwYXJzZUludCh0aGlzLndpbmRvdy5jdXJyZW50LnN0eWxlLnRvcCk7XHJcblxyXG4gICAgICAgIGNvbnN0IHJpZ2h0ID0gbGVmdCArIHdpZHRoO1xyXG4gICAgICAgIGNvbnN0IGJvdHRvbSA9IHRvcCArIGhlaWdodDtcclxuXHJcbiAgICAgICAgLy8gUHJldmVudCBleHBhbmRpbmcgb2ZmIHRoZSBib3R0b20gYW5kIHJpZ2h0IGFuZCByZWFkanVzdCBwb3NpdGlvblxyXG4gICAgICAgIGlmIChib3R0b20gPiB0aGlzLm1heFkpIHRoaXMud2luZG93LmN1cnJlbnQuc3R5bGUudG9wID0gKHRoaXMubWF4WSAtIGhlaWdodCkgKyBcInB4XCI7XHJcbiAgICAgICAgaWYgKHJpZ2h0ID4gdGhpcy5tYXhYKSB0aGlzLndpbmRvdy5jdXJyZW50LnN0eWxlLmxlZnQgPSAodGhpcy5tYXhYIC0gd2lkdGgpICsgXCJweFwiO1xyXG5cclxuICAgICAgICBjb25zdCBuZXdMZWZ0ID0gcGFyc2VJbnQodGhpcy53aW5kb3cuY3VycmVudC5zdHlsZS5sZWZ0KTtcclxuICAgICAgICBjb25zdCBuZXdUb3AgPSBwYXJzZUludCh0aGlzLndpbmRvdy5jdXJyZW50LnN0eWxlLnRvcCk7XHJcblxyXG4gICAgICAgIC8vIEZvciBzbWFsbCBzY3JlZW5zIGl0J3MgcG9zc2libGUgdGhpcyBwdXNoZXMgdXMgb2ZmIHRoZSBvdGhlciBkaXJlY3Rpb24uLi4gd2UgbmVlZCB0byByZWFkanVzdCBzaXplXHJcbiAgICAgICAgaWYgKG5ld1RvcCA8IHRoaXMubWluWSkge1xyXG4gICAgICAgICAgICBjb25zdCBkaWZmZXJlbmNlID0gdGhpcy5taW5ZIC0gbmV3VG9wO1xyXG4gICAgICAgICAgICB0aGlzLndpbmRvdy5jdXJyZW50LnN0eWxlLnRvcCA9IHRoaXMubWluWSArIFwicHhcIjtcclxuICAgICAgICAgICAgdGhpcy53aW5kb3cuY3VycmVudC5zdHlsZS5oZWlnaHQgPSAoaGVpZ2h0IC0gZGlmZmVyZW5jZSkgKyBcInB4XCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChuZXdMZWZ0IDwgdGhpcy5taW5YKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGRpZmZlcmVuY2UgPSB0aGlzLm1pblggLSBuZXdMZWZ0O1xyXG4gICAgICAgICAgICB0aGlzLndpbmRvdy5jdXJyZW50LnN0eWxlLmxlZnQgPSB0aGlzLm1pblggKyBcInB4XCI7XHJcbiAgICAgICAgICAgIHRoaXMud2luZG93LmN1cnJlbnQuc3R5bGUuaGVpZ2h0ID0gKHdpZHRoIC0gZGlmZmVyZW5jZSkgKyBcInB4XCI7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGNsb3NlKCkge1xyXG4gICAgICAgIGxldCBzaG91bGRDbG9zZSA9IHRydWU7XHJcbiAgICAgICAgY29uc3QgY29uZmlybUNsb3NlID0gdHlwZW9mKHRoaXMucHJvcHMuY29uZmlybUNsb3NlKSA9PSBcImZ1bmN0aW9uXCIgPyB0aGlzLnByb3BzLmNvbmZpcm1DbG9zZSgpIDogdGhpcy5wcm9wcy5jb25maXJtQ2xvc2U7XHJcbiAgICAgICAgaWYgKGNvbmZpcm1DbG9zZSkge1xyXG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHttb2RhbE9wZW46IHRydWV9KTtcclxuICAgICAgICAgICAgc2hvdWxkQ2xvc2UgPSBhd2FpdCB0aGlzLmNvbmZpcm1DbG9zZSgpO1xyXG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHttb2RhbE9wZW46IGZhbHNlfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLnByb3BzLmNsb3NlICYmIHNob3VsZENsb3NlKSB0aGlzLnByb3BzLmNsb3NlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uZmlybUNsb3NlKCkge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcclxuICAgICAgICAgICAgTW9kYWxzLnNob3dDb25maXJtYXRpb25Nb2RhbChTdHJpbmdzLk1vZGFscy5jb25maXJtQWN0aW9uLCB0aGlzLnByb3BzLmNvbmZpcm1hdGlvblRleHQsIHtcclxuICAgICAgICAgICAgICAgIGRhbmdlcjogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIGNvbmZpcm1UZXh0OiBTdHJpbmdzLk1vZGFscy5jbG9zZSxcclxuICAgICAgICAgICAgICAgIG9uQ29uZmlybTogKCkgPT4ge3Jlc29sdmUodHJ1ZSk7fSxcclxuICAgICAgICAgICAgICAgIG9uQ2FuY2VsOiAoKSA9PiB7cmVzb2x2ZShmYWxzZSk7fVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/floating/window.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return FloatingWindow; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _structs_screen__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../structs/screen */ \"./src/structs/screen.js\");\n/* harmony import */ var _icons_close__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../icons/close */ \"./src/ui/icons/close.jsx\");\n/* harmony import */ var _icons_fullscreen__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../icons/fullscreen */ \"./src/ui/icons/fullscreen.jsx\");\n/* harmony import */ var _modals__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../modals */ \"./src/ui/modals.js\");\n\n\n\n\n // const Draggable = WebpackModules.getByDisplayName(\"Draggable\");\n// {\n// \"dragAnywhere\": true,\n// \"className\": \"pictureInPictureWindow-1B5qSe\",\n// \"maxX\": 1969,\n// \"maxY\": this.maxY,\n// \"onDragStart\": \"ƒ () {}\",\n// \"onDrag\": \"ƒ () {}\",\n// \"onDragEnd\": \"ƒ () {}\",\n// \"children\": \"
\",\n// \"initialX\": 0,\n// \"initialY\": 0\n// }\n\nclass FloatingWindow extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n this.state = {\n modalOpen: false\n };\n this.offX = 0;\n this.offY = 0;\n this.maxX = this.props.maxX || _structs_screen__WEBPACK_IMPORTED_MODULE_1__[\"default\"].width;\n this.maxY = this.props.maxY || _structs_screen__WEBPACK_IMPORTED_MODULE_1__[\"default\"].height;\n this.minX = this.props.minX || 0;\n this.minY = this.props.minY || 0;\n this.titlebar = modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createRef();\n this.window = modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createRef();\n this.close = this.close.bind(this);\n this.maximize = this.maximize.bind(this);\n this.onDrag = this.onDrag.bind(this);\n this.onDragStart = this.onDragStart.bind(this);\n this.onDragStop = this.onDragStop.bind(this);\n this.onResizeStart = this.onResizeStart.bind(this);\n }\n\n componentDidMount() {\n this.window.current.addEventListener(\"mousedown\", this.onResizeStart, false);\n this.titlebar.current.addEventListener(\"mousedown\", this.onDragStart, false);\n document.addEventListener(\"mouseup\", this.onDragStop, false);\n }\n\n onResizeStart() {\n this.currentWidth = this.window.current.offsetWidth;\n this.currentHeight = this.window.current.offsetHeight;\n }\n\n onDragStop() {\n document.removeEventListener(\"mousemove\", this.onDrag, true);\n const width = this.window.current.offsetWidth;\n const height = this.window.current.offsetHeight;\n\n if (width != this.currentWidth || height != this.currentHeight) {\n if (this.props.onResize) this.props.onResize();\n const left = parseInt(this.window.current.style.left);\n const top = parseInt(this.window.current.style.top);\n if (left + width >= this.maxX) this.window.current.style.width = this.maxX - left + \"px\";\n if (top + height >= this.maxY) this.window.current.style.height = this.maxY - top + \"px\";\n }\n\n this.currentWidth = width;\n this.currentHeight = height;\n }\n\n onDragStart(e) {\n const div = this.window.current;\n this.offY = e.clientY - parseInt(div.offsetTop);\n this.offX = e.clientX - parseInt(div.offsetLeft);\n document.addEventListener(\"mousemove\", this.onDrag, true);\n }\n\n onDrag(e) {\n const div = this.window.current;\n let newTop = e.clientY - this.offY;\n if (newTop <= this.minY) newTop = this.minY;\n if (newTop + this.currentHeight >= this.maxY) newTop = this.maxY - this.currentHeight;\n let newLeft = e.clientX - this.offX;\n if (newLeft <= this.minX) newLeft = this.minX;\n if (newLeft + this.currentWidth >= this.maxX) newLeft = this.maxX - this.currentWidth;\n div.style.top = newTop + \"px\";\n div.style.left = newLeft + \"px\";\n }\n\n componentWillUnmount() {\n this.titlebar.current.removeEventListener(\"mousedown\", this.onDragStart, false);\n document.removeEventListener(\"mouseup\", this.onDragStop, false);\n }\n\n render() {\n const top = this.props.center ? _structs_screen__WEBPACK_IMPORTED_MODULE_1__[\"default\"].height / 2 - this.props.height / 2 : this.props.top;\n const left = this.props.center ? _structs_screen__WEBPACK_IMPORTED_MODULE_1__[\"default\"].width / 2 - this.props.width / 2 : this.props.left; // console.log(top, left);\n\n const className = `floating-window${` ${this.props.className}` || \"\"}${this.props.resizable ? \" resizable\" : \"\"}${this.state.modalOpen ? \" modal-open\" : \"\"}`;\n const styles = {\n height: this.props.height,\n width: this.props.width,\n left: left || 0,\n top: top || 0\n };\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n id: this.props.id,\n className: className,\n ref: this.window,\n style: styles\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"floating-window-titlebar\",\n ref: this.titlebar\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"span\", {\n className: \"title\"\n }, this.props.title), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"floating-window-buttons\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"button maximize-button\",\n onClick: this.maximize\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_fullscreen__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n size: \"18px\"\n })), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"button close-button\",\n onClick: this.close\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_close__WEBPACK_IMPORTED_MODULE_2__[\"default\"], null)))), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"floating-window-content\"\n }, this.props.children));\n }\n\n maximize() {\n this.window.current.style.width = \"100%\";\n this.window.current.style.height = \"100%\";\n if (this.props.onResize) this.props.onResize();\n const width = this.window.current.offsetWidth;\n const height = this.window.current.offsetHeight;\n const left = parseInt(this.window.current.style.left);\n const top = parseInt(this.window.current.style.top);\n const right = left + width;\n const bottom = top + height; // Prevent expanding off the bottom and right and readjust position\n\n if (bottom > this.maxY) this.window.current.style.top = this.maxY - height + \"px\";\n if (right > this.maxX) this.window.current.style.left = this.maxX - width + \"px\";\n const newLeft = parseInt(this.window.current.style.left);\n const newTop = parseInt(this.window.current.style.top); // For small screens it's possible this pushes us off the other direction... we need to readjust size\n\n if (newTop < this.minY) {\n const difference = this.minY - newTop;\n this.window.current.style.top = this.minY + \"px\";\n this.window.current.style.height = height - difference + \"px\";\n }\n\n if (newLeft < this.minX) {\n const difference = this.minX - newLeft;\n this.window.current.style.left = this.minX + \"px\";\n this.window.current.style.height = width - difference + \"px\";\n }\n }\n\n async close() {\n let shouldClose = true;\n const confirmClose = typeof this.props.confirmClose == \"function\" ? this.props.confirmClose() : this.props.confirmClose;\n\n if (confirmClose) {\n this.setState({\n modalOpen: true\n });\n shouldClose = await this.confirmClose();\n this.setState({\n modalOpen: false\n });\n }\n\n if (this.props.close && shouldClose) this.props.close();\n }\n\n confirmClose() {\n return new Promise(resolve => {\n _modals__WEBPACK_IMPORTED_MODULE_4__[\"default\"].showConfirmationModal(modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Modals.confirmAction, this.props.confirmationText, {\n danger: true,\n confirmText: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Modals.close,\n onConfirm: () => {\n resolve(true);\n },\n onCancel: () => {\n resolve(false);\n }\n });\n });\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvZmxvYXRpbmcvd2luZG93LmpzeD9jZjNkIl0sIm5hbWVzIjpbIkZsb2F0aW5nV2luZG93IiwiUmVhY3QiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwic3RhdGUiLCJtb2RhbE9wZW4iLCJvZmZYIiwib2ZmWSIsIm1heFgiLCJTY3JlZW4iLCJ3aWR0aCIsIm1heFkiLCJoZWlnaHQiLCJtaW5YIiwibWluWSIsInRpdGxlYmFyIiwiY3JlYXRlUmVmIiwid2luZG93IiwiY2xvc2UiLCJiaW5kIiwibWF4aW1pemUiLCJvbkRyYWciLCJvbkRyYWdTdGFydCIsIm9uRHJhZ1N0b3AiLCJvblJlc2l6ZVN0YXJ0IiwiY29tcG9uZW50RGlkTW91bnQiLCJjdXJyZW50IiwiYWRkRXZlbnRMaXN0ZW5lciIsImRvY3VtZW50IiwiY3VycmVudFdpZHRoIiwib2Zmc2V0V2lkdGgiLCJjdXJyZW50SGVpZ2h0Iiwib2Zmc2V0SGVpZ2h0IiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsIm9uUmVzaXplIiwibGVmdCIsInBhcnNlSW50Iiwic3R5bGUiLCJ0b3AiLCJlIiwiZGl2IiwiY2xpZW50WSIsIm9mZnNldFRvcCIsImNsaWVudFgiLCJvZmZzZXRMZWZ0IiwibmV3VG9wIiwibmV3TGVmdCIsImNvbXBvbmVudFdpbGxVbm1vdW50IiwicmVuZGVyIiwiY2VudGVyIiwiY2xhc3NOYW1lIiwicmVzaXphYmxlIiwic3R5bGVzIiwiaWQiLCJ0aXRsZSIsImNoaWxkcmVuIiwicmlnaHQiLCJib3R0b20iLCJkaWZmZXJlbmNlIiwic2hvdWxkQ2xvc2UiLCJjb25maXJtQ2xvc2UiLCJzZXRTdGF0ZSIsIlByb21pc2UiLCJyZXNvbHZlIiwiTW9kYWxzIiwic2hvd0NvbmZpcm1hdGlvbk1vZGFsIiwiU3RyaW5ncyIsImNvbmZpcm1BY3Rpb24iLCJjb25maXJtYXRpb25UZXh0IiwiZGFuZ2VyIiwiY29uZmlybVRleHQiLCJvbkNvbmZpcm0iLCJv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QUFZLEdBQUcsT0FBTyxLQUFLekQsS0FBTCxDQUFXeUQsWUFBbEIsSUFBbUMsVUFBbkMsR0FBZ0QsS0FBS3pELEtBQUwsQ0FBV3lELFlBQVgsRUFBaEQsR0FBNEUsS0FBS3pELEtBQUwsQ0FBV3lELFlBQTVHOztBQUNBLFFBQUlBLFlBQUosRUFBa0I7QUFDZCxXQUFLQyxRQUFMLENBQWM7QUFBQ3hELGlCQUFTLEVBQUU7QUFBWixPQUFkO0FBQ0FzRCxpQkFBVyxHQUFHLE1BQU0sS0FBS0MsWUFBTCxFQUFwQjtBQUNBLFdBQUtDLFFBQUwsQ0FBYztBQUFDeEQsaUJBQVMsRUFBRTtBQUFaLE9BQWQ7QUFDSDs7QUFDRCxRQUFJLEtBQUtGLEtBQUwsQ0FBV2UsS0FBWCxJQUFvQnlDLFdBQXhCLEVBQXFDLEtBQUt4RCxLQUFMLENBQVdlLEtBQVg7QUFDeEM7O0FBRUQwQyxjQUFZLEdBQUc7QUFDWCxXQUFPLElBQUlFLE9BQUosQ0FBWUMsT0FBTyxJQUFJO0FBQzFCQyxxREFBTSxDQUFDQyxxQkFBUCxDQUE2QkMsK0NBQU8sQ0FBQ0YsTUFBUixDQUFlRyxhQUE1QyxFQUEyRCxLQUFLaEUsS0FBTCxDQUFXaUUsZ0JBQXRFLEVBQXdGO0FBQ3BGQyxjQUFNLEVBQUUsSUFENEU7QUFFcEZDLG1CQUFXLEVBQUVKLCtDQUFPLENBQUNGLE1BQVIsQ0FBZTlDLEtBRndEO0FBR3BGcUQsaUJBQVMsRUFBRSxNQUFNO0FBQUNSLGlCQUFPLENBQUMsSUFBRCxDQUFQO0FBQWUsU0FIbUQ7QUFJcEZTLGdCQUFRLEVBQUUsTUFBTTtBQUFDVCxpQkFBTyxDQUFDLEtBQUQsQ0FBUDtBQUFnQjtBQUptRCxPQUF4RjtBQU1ILEtBUE0sQ0FBUDtBQVFIOztBQTNKdUQiLCJmaWxlIjoiLi9zcmMvdWkvZmxvYXRpbmcvd2luZG93LmpzeC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhY3QsIFN0cmluZ3N9IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5pbXBvcnQgU2NyZWVuIGZyb20gXCIuLi8uLi9zdHJ1Y3RzL3NjcmVlblwiO1xyXG5pbXBvcnQgQ2xvc2VCdXR0b24gZnJvbSBcIi4uL2ljb25zL2Nsb3NlXCI7XHJcbmltcG9ydCBNYXhpbWl6ZUljb24gZnJvbSBcIi4uL2ljb25zL2Z1bGxzY3JlZW5cIjtcclxuaW1wb3J0IE1vZGFscyBmcm9tIFwiLi4vbW9kYWxzXCI7XHJcblxyXG4vLyBjb25zdCBEcmFnZ2FibGUgPSBXZWJwYWNrTW9kdWxlcy5nZXRCeURpc3BsYXlOYW1lKFwiRHJhZ2dhYmxlXCIpO1xyXG4vLyB7XHJcbi8vICAgICBcImRyYWdBbnl3aGVyZVwiOiB0cnVlLFxyXG4vLyAgICAgXCJjbGFzc05hbWVcIjogXCJwaWN0dXJlSW5QaWN0dXJlV2luZG93LTFCNXFTZVwiLFxyXG4vLyAgICAgXCJtYXhYXCI6IDE5NjksXHJcbi8vICAgICBcIm1heFlcIjogdGhpcy5tYXhZLFxyXG4vLyAgICAgXCJvbkRyYWdTdGFydFwiOiBcIsaSICgpIHt9XCIsXHJcbi8vICAgICBcIm9uRHJhZ1wiOiBcIsaSICgpIHt9XCIsXHJcbi8vICAgICBcIm9uRHJhZ0VuZFwiOiBcIsaSICgpIHt9XCIsXHJcbi8vICAgICBcImNoaWxkcmVuXCI6IFwiPGRpdiAvPlwiLFxyXG4vLyAgICAgXCJpbml0aWFsWFwiOiAwLFxyXG4vLyAgICAgXCJpbml0aWFsWVwiOiAwXHJcbi8vICAgfVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRmxvYXRpbmdXaW5kb3cgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByb3BzKSB7XHJcbiAgICAgICAgc3VwZXIocHJvcHMpO1xyXG5cclxuICAgICAgICB0aGlzLnN0YXRlID0ge21vZGFsT3BlbjogZmFsc2V9O1xyXG5cclxuICAgICAgICB0aGlzLm9mZlggPSAwO1xyXG4gICAgICAgIHRoaXMub2ZmWSA9IDA7XHJcblxyXG4gICAgICAgIHRoaXMubWF4WCA9IHRoaXMucHJvcHMubWF4WCB8fCBTY3JlZW4ud2lkdGg7XHJcbiAgICAgICAgdGhpcy5tYXhZID0gdGhpcy5wcm9wcy5tYXhZIHx8IFNjcmVlbi5oZWlnaHQ7XHJcbiAgICAgICAgdGhpcy5taW5YID0gdGhpcy5wcm9wcy5taW5YIHx8IDA7XHJcbiAgICAgICAgdGhpcy5taW5ZID0gdGhpcy5wcm9wcy5taW5ZIHx8IDA7XHJcblxyXG4gICAgICAgIHRoaXMudGl0bGViYXIgPSBSZWFjdC5jcmVhdGVSZWYoKTtcclxuICAgICAgICB0aGlzLndpbmRvdyA9IFJlYWN0LmNyZWF0ZVJlZigpO1xyXG5cclxuICAgICAgICB0aGlzLmNsb3NlID0gdGhpcy5jbG9zZS5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMubWF4aW1pemUgPSB0aGlzLm1heGltaXplLmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy5vbkRyYWcgPSB0aGlzLm9uRHJhZy5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMub25EcmFnU3RhcnQgPSB0aGlzLm9uRHJhZ1N0YXJ0LmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy5vbkRyYWdTdG9wID0gdGhpcy5vbkRyYWdTdG9wLmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy5vblJlc2l6ZVN0YXJ0ID0gdGhpcy5vblJlc2l6ZVN0YXJ0LmJpbmQodGhpcyk7XHJcbiAgICB9XHJcblxyXG4gICAgY29tcG9uZW50RGlkTW91bnQoKSB7XHJcbiAgICAgICAgdGhpcy53aW5kb3cuY3VycmVudC5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vkb3duXCIsIHRoaXMub25SZXNpemVTdGFydCwgZmFsc2UpO1xyXG4gICAgICAgIHRoaXMudGl0bGViYXIuY3VycmVudC5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vkb3duXCIsIHRoaXMub25EcmFnU3RhcnQsIGZhbHNlKTtcclxuICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwibW91c2V1cFwiLCB0aGlzLm9uRHJhZ1N0b3AsIGZhbHNlKTtcclxuICAgIH1cclxuXHJcbiAgICBvblJlc2l6ZVN0YXJ0KCkge1xyXG4gICAgICAgIHRoaXMuY3VycmVudFdpZHRoID0gdGhpcy53aW5kb3cuY3VycmVudC5vZmZzZXRXaWR0aDtcclxuICAgICAgICB0aGlzLmN1cnJlbnRIZWlnaHQgPSB0aGlzLndpbmRvdy5jdXJyZW50Lm9mZnNldEhlaWdodDtcclxuICAgIH1cclxuXHJcbiAgICBvbkRyYWdTdG9wKCkge1xyXG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZW1vdmVcIiwgdGhpcy5vbkRyYWcsIHRydWUpO1xyXG4gICAgICAgIGNvbnN0IHdpZHRoID0gdGhpcy53aW5kb3cuY3VycmVudC5vZmZzZXRXaWR0aDtcclxuICAgICAgICBjb25zdCBoZWlnaHQgPSB0aGlzLndpbmRvdy5jdXJyZW50Lm9mZnNldEhlaWdodDtcclxuICAgICAgICBpZiAod2lkdGggIT0gdGhpcy5jdXJyZW50V2lkdGggfHwgaGVpZ2h0ICE9IHRoaXMuY3VycmVudEhlaWdodCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5wcm9wcy5vblJlc2l6ZSkgdGhpcy5wcm9wcy5vblJlc2l6ZSgpO1xyXG4gICAgICAgICAgICBjb25zdCBsZWZ0ID0gcGFyc2VJbnQodGhpcy53aW5kb3cuY3VycmVudC5zdHlsZS5sZWZ0KTtcclxuICAgICAgICAgICAgY29uc3QgdG9wID0gcGFyc2VJbnQodGhpcy53aW5kb3cuY3VycmVudC5zdHlsZS50b3ApO1xyXG4gICAgICAgICAgICBpZiAobGVmdCArIHdpZHRoID49IHRoaXMubWF4WCkgdGhpcy53aW5kb3cuY3VycmVudC5zdHlsZS53aWR0aCA9ICh0aGlzLm1heFggLSBsZWZ0KSArIFwicHhcIjtcclxuICAgICAgICAgICAgaWYgKHRvcCArIGhlaWdodCA+PSB0aGlzLm1heFkpIHRoaXMud2luZG93LmN1cnJlbnQuc3R5bGUuaGVpZ2h0ID0gKHRoaXMubWF4WSAtIHRvcCkgKyBcInB4XCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY3VycmVudFdpZHRoID0gd2lkdGg7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50SGVpZ2h0ID0gaGVpZ2h0O1xyXG4gICAgfVxyXG5cclxuICAgIG9uRHJhZ1N0YXJ0KGUpIHtcclxuICAgICAgICBjb25zdCBkaXYgPSB0aGlzLndpbmRvdy5jdXJyZW50O1xyXG4gICAgICAgIHRoaXMub2ZmWSA9IGUuY2xpZW50WSAtIHBhcnNlSW50KGRpdi5vZmZzZXRUb3ApO1xyXG4gICAgICAgIHRoaXMub2ZmWCA9IGUuY2xpZW50WCAtIHBhcnNlSW50KGRpdi5vZmZzZXRMZWZ0KTtcclxuICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vtb3ZlXCIsIHRoaXMub25EcmFnLCB0cnVlKTtcclxuICAgIH1cclxuXHJcbiAgICBvbkRyYWcoZSkge1xyXG4gICAgICAgIGNvbnN0IGRpdiA9IHRoaXMud2luZG93LmN1cnJlbnQ7XHJcbiAgICAgICAgbGV0IG5ld1RvcCA9IChlLmNsaWVudFkgLSB0aGlzLm9mZlkpO1xyXG4gICAgICAgIGlmIChuZXdUb3AgPD0gdGhpcy5taW5ZKSBuZXdUb3AgPSB0aGlzLm1pblk7XHJcbiAgICAgICAgaWYgKG5ld1RvcCArIHRoaXMuY3VycmVudEhlaWdodCA+PSB0aGlzLm1heFkpIG5ld1RvcCA9IHRoaXMubWF4WSAtIHRoaXMuY3VycmVudEhlaWdodDtcclxuXHJcbiAgICAgICAgbGV0IG5ld0xlZnQgPSAoZS5jbGllbnRYIC0gdGhpcy5vZmZYKTtcclxuICAgICAgICBpZiAobmV3TGVmdCA8PSB0aGlzLm1pblgpIG5ld0xlZnQgPSB0aGlzLm1pblg7XHJcbiAgICAgICAgaWYgKG5ld0xlZnQgKyB0aGlzLmN1cnJlbnRXaWR0aCA+PSB0aGlzLm1heFgpIG5ld0xlZnQgPSB0aGlzLm1heFggLSB0aGlzLmN1cnJlbnRXaWR0aDtcclxuXHJcbiAgICAgICAgZGl2LnN0eWxlLnRvcCA9IG5ld1RvcCArIFwicHhcIjtcclxuICAgICAgICBkaXYuc3R5bGUubGVmdCA9IG5ld0xlZnQgKyBcInB4XCI7XHJcbiAgICB9XHJcblxyXG4gICAgY29tcG9uZW50V2lsbFVubW91bnQoKSB7XHJcbiAgICAgICAgdGhpcy50aXRsZWJhci5jdXJyZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZWRvd25cIiwgdGhpcy5vbkRyYWdTdGFydCwgZmFsc2UpO1xyXG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZXVwXCIsIHRoaXMub25EcmFnU3RvcCwgZmFsc2UpO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICBjb25zdCB0b3AgPSB0aGlzLnByb3BzLmNlbnRlciA/IChTY3JlZW4uaGVpZ2h0IC8gMikgLSAodGhpcy5wcm9wcy5oZWlnaHQgLyAyKSA6IHRoaXMucHJvcHMudG9wO1xyXG4gICAgICAgIGNvbnN0IGxlZnQgPSB0aGlzLnByb3BzLmNlbnRlciA/IChTY3JlZW4ud2lkdGggLyAyKSAtICh0aGlzLnByb3BzLndpZHRoIC8gMikgOiB0aGlzLnByb3BzLmxlZnQgO1xyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKHRvcCwgbGVmdCk7XHJcbiAgICAgICAgY29uc3QgY2xhc3NOYW1lID0gYGZsb2F0aW5nLXdpbmRvdyR7YCAke3RoaXMucHJvcHMuY2xhc3NOYW1lfWAgfHwgXCJcIn0ke3RoaXMucHJvcHMucmVzaXphYmxlID8gXCIgcmVzaXphYmxlXCIgOiBcIlwifSR7dGhpcy5zdGF0ZS5tb2RhbE9wZW4gPyBcIiBtb2RhbC1vcGVuXCIgOiBcIlwifWA7XHJcbiAgICAgICAgY29uc3Qgc3R5bGVzID0ge2hlaWdodDogdGhpcy5wcm9wcy5oZWlnaHQsIHdpZHRoOiB0aGlzLnByb3BzLndpZHRoLCBsZWZ0OiBsZWZ0IHx8IDAsIHRvcDogdG9wIHx8IDB9O1xyXG4gICAgICAgIHJldHVybiA8ZGl2IGlkPXt0aGlzLnByb3BzLmlkfSBjbGFzc05hbWU9e2NsYXNzTmFtZX0gcmVmPXt0aGlzLndpbmRvd30gc3R5bGU9e3N0eWxlc30+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbG9hdGluZy13aW5kb3ctdGl0bGViYXJcIiByZWY9e3RoaXMudGl0bGViYXJ9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0aXRsZVwiPnt0aGlzLnByb3BzLnRpdGxlfTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbG9hdGluZy13aW5kb3ctYnV0dG9uc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJidXR0b24gbWF4aW1pemUtYnV0dG9uXCIgb25DbGljaz17dGhpcy5tYXhpbWl6ZX0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPE1heGltaXplSWNvbiBzaXplPVwiMThweFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYnV0dG9uIGNsb3NlLWJ1dHRvblwiIG9uQ2xpY2s9e3RoaXMuY2xvc2V9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDbG9zZUJ1dHRvbiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxvYXRpbmctd2luZG93LWNvbnRlbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3RoaXMucHJvcHMuY2hpbGRyZW59XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj47XHJcbiAgICB9XHJcblxyXG4gICAgbWF4aW1pemUoKSB7XHJcbiAgICAgICAgdGhpcy53aW5kb3cuY3VycmVudC5zdHlsZS53aWR0aCA9IFwiMTAwJVwiO1xyXG4gICAgICAgIHRoaXMud2luZG93LmN1cnJlbnQuc3R5bGUuaGVpZ2h0ID0gXCIxMDAlXCI7XHJcbiAgICAgICAgaWYgKHRoaXMucHJvcHMub25SZXNpemUpIHRoaXMucHJvcHMub25SZXNpemUoKTtcclxuXHJcbiAgICAgICAgY29uc3Qgd2lkdGggPSB0aGlzLndpbmRvdy5jdXJyZW50Lm9mZnNldFdpZHRoO1xyXG4gICAgICAgIGNvbnN0IGhlaWdodCA9IHRoaXMud2luZG93LmN1cnJlbnQub2Zmc2V0SGVpZ2h0O1xyXG4gICAgICAgIGNvbnN0IGxlZnQgPSBwYXJzZUludCh0aGlzLndpbmRvdy5jdXJyZW50LnN0eWxlLmxlZnQpO1xyXG4gICAgICAgIGNvbnN0IHRvcCA9IHBhcnNlSW50KHRoaXMud2luZG93LmN1cnJlbnQuc3R5bGUudG9wKTtcclxuXHJcbiAgICAgICAgY29uc3QgcmlnaHQgPSBsZWZ0ICsgd2lkdGg7XHJcbiAgICAgICAgY29uc3QgYm90dG9tID0gdG9wICsgaGVpZ2h0O1xyXG5cclxuICAgICAgICAvLyBQcmV2ZW50IGV4cGFuZGluZyBvZmYgdGhlIGJvdHRvbSBhbmQgcmlnaHQgYW5kIHJlYWRqdXN0IHBvc2l0aW9uXHJcbiAgICAgICAgaWYgKGJvdHRvbSA+IHRoaXMubWF4WSkgdGhpcy53aW5kb3cuY3VycmVudC5zdHlsZS50b3AgPSAodGhpcy5tYXhZIC0gaGVpZ2h0KSArIFwicHhcIjtcclxuICAgICAgICBpZiAocmlnaHQgPiB0aGlzLm1heFgpIHRoaXMud2luZG93LmN1cnJlbnQuc3R5bGUubGVmdCA9ICh0aGlzLm1heFggLSB3aWR0aCkgKyBcInB4XCI7XHJcblxyXG4gICAgICAgIGNvbnN0IG5ld0xlZnQgPSBwYXJzZUludCh0aGlzLndpbmRvdy5jdXJyZW50LnN0eWxlLmxlZnQpO1xyXG4gICAgICAgIGNvbnN0IG5ld1RvcCA9IHBhcnNlSW50KHRoaXMud2luZG93LmN1cnJlbnQuc3R5bGUudG9wKTtcclxuXHJcbiAgICAgICAgLy8gRm9yIHNtYWxsIHNjcmVlbnMgaXQncyBwb3NzaWJsZSB0aGlzIHB1c2hlcyB1cyBvZmYgdGhlIG90aGVyIGRpcmVjdGlvbi4uLiB3ZSBuZWVkIHRvIHJlYWRqdXN0IHNpemVcclxuICAgICAgICBpZiAobmV3VG9wIDwgdGhpcy5taW5ZKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGRpZmZlcmVuY2UgPSB0aGlzLm1pblkgLSBuZXdUb3A7XHJcbiAgICAgICAgICAgIHRoaXMud2luZG93LmN1cnJlbnQuc3R5bGUudG9wID0gdGhpcy5taW5ZICsgXCJweFwiO1xyXG4gICAgICAgICAgICB0aGlzLndpbmRvdy5jdXJyZW50LnN0eWxlLmhlaWdodCA9IChoZWlnaHQgLSBkaWZmZXJlbmNlKSArIFwicHhcIjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG5ld0xlZnQgPCB0aGlzLm1pblgpIHtcclxuICAgICAgICAgICAgY29uc3QgZGlmZmVyZW5jZSA9IHRoaXMubWluWCAtIG5ld0xlZnQ7XHJcbiAgICAgICAgICAgIHRoaXMud2luZG93LmN1cnJlbnQuc3R5bGUubGVmdCA9IHRoaXMubWluWCArIFwicHhcIjtcclxuICAgICAgICAgICAgdGhpcy53aW5kb3cuY3VycmVudC5zdHlsZS5oZWlnaHQgPSAod2lkdGggLSBkaWZmZXJlbmNlKSArIFwicHhcIjtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgY2xvc2UoKSB7XHJcbiAgICAgICAgbGV0IHNob3VsZENsb3NlID0gdHJ1ZTtcclxuICAgICAgICBjb25zdCBjb25maXJtQ2xvc2UgPSB0eXBlb2YodGhpcy5wcm9wcy5jb25maXJtQ2xvc2UpID09IFwiZnVuY3Rpb25cIiA/IHRoaXMucHJvcHMuY29uZmlybUNsb3NlKCkgOiB0aGlzLnByb3BzLmNvbmZpcm1DbG9zZTtcclxuICAgICAgICBpZiAoY29uZmlybUNsb3NlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe21vZGFsT3BlbjogdHJ1ZX0pO1xyXG4gICAgICAgICAgICBzaG91bGRDbG9zZSA9IGF3YWl0IHRoaXMuY29uZmlybUNsb3NlKCk7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe21vZGFsT3BlbjogZmFsc2V9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMucHJvcHMuY2xvc2UgJiYgc2hvdWxkQ2xvc2UpIHRoaXMucHJvcHMuY2xvc2UoKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25maXJtQ2xvc2UoKSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xyXG4gICAgICAgICAgICBNb2RhbHMuc2hvd0NvbmZpcm1hdGlvbk1vZGFsKFN0cmluZ3MuTW9kYWxzLmNvbmZpcm1BY3Rpb24sIHRoaXMucHJvcHMuY29uZmlybWF0aW9uVGV4dCwge1xyXG4gICAgICAgICAgICAgICAgZGFuZ2VyOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgY29uZmlybVRleHQ6IFN0cmluZ3MuTW9kYWxzLmNsb3NlLFxyXG4gICAgICAgICAgICAgICAgb25Db25maXJtOiAoKSA9PiB7cmVzb2x2ZSh0cnVlKTt9LFxyXG4gICAgICAgICAgICAgICAgb25DYW5jZWw6ICgpID0+IHtyZXNvbHZlKGZhbHNlKTt9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/floating/window.jsx\n"); /***/ }), @@ -803,7 +802,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return FloatingWindows; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _floating_container__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./floating/container */ \"./src/ui/floating/container.jsx\");\n\n\nclass FloatingWindows {\n static initialize() {\n const containerRef = modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createRef();\n const container = /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_floating_container__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n ref: containerRef\n });\n const wrapped = modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(modules__WEBPACK_IMPORTED_MODULE_0__[\"WebpackModules\"].getByProps(\"AppReferencePositionLayer\").AppLayerProvider().props.layerContext.Provider, {\n value: [document.querySelector(\"#app-mount > .layerContainer-yqaFcK\")]\n }, container);\n const div = modules__WEBPACK_IMPORTED_MODULE_0__[\"DOM\"].createElement(`
`);\n modules__WEBPACK_IMPORTED_MODULE_0__[\"DOMManager\"].bdBody.append(div);\n modules__WEBPACK_IMPORTED_MODULE_0__[\"ReactDOM\"].render(wrapped, div);\n this.ref = containerRef;\n }\n\n static open(window) {\n if (!this.ref) this.initialize();\n return this.ref.current.open(window);\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL2Zsb2F0aW5nd2luZG93cy5qcz8xNzQzIl0sIm5hbWVzIjpbIkZsb2F0aW5nV2luZG93cyIsImluaXRpYWxpemUiLCJjb250YWluZXJSZWYiLCJSZWFjdCIsImNyZWF0ZVJlZiIsImNvbnRhaW5lciIsIndyYXBwZWQiLCJjcmVhdGVFbGVtZW50IiwiV2VicGFja01vZHVsZXMiLCJnZXRCeVByb3BzIiwiQXBwTGF5ZXJQcm92aWRlciIsInByb3BzIiwibGF5ZXJDb250ZXh0IiwiUHJvdmlkZXIiLCJ2YWx1ZSIsImRvY3VtZW50IiwicXVlcnlTZWxlY3RvciIsImRpdiIsIkRPTSIsIkRPTU1hbmFnZXIiLCJiZEJvZHkiLCJhcHBlbmQiLCJSZWFjdERPTSIsInJlbmRlciIsInJlZiIsIm9wZW4iLCJ3aW5kb3ciLCJjdXJyZW50Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFFZSxNQUFNQSxlQUFOLENBQXNCO0FBQ2pDLFNBQU9DLFVBQVAsR0FBb0I7QUFDaEIsVUFBTUMsWUFBWSxHQUFHQyw2Q0FBSyxDQUFDQyxTQUFOLEVBQXJCO0FBQ0EsVUFBTUMsU0FBUyxnQkFBRyw0REFBQywyREFBRDtBQUF5QixTQUFHLEVBQUVIO0FBQTlCLE1BQWxCO0FBQ0EsVUFBTUksT0FBTyxHQUFHSCw2Q0FBSyxDQUFDSSxhQUFOLENBQW9CQyxzREFBYyxDQUFDQyxVQUFmLENBQTBCLDJCQUExQixFQUF1REMsZ0JBQXZELEdBQTBFQyxLQUExRSxDQUFnRkMsWUFBaEYsQ0FBNkZDLFFBQWpILEVBQTJIO0FBQUNDLFdBQUssRUFBRSxDQUFDQyxRQUFRLENBQUNDLGFBQVQsQ0FBdUIscUNBQXZCLENBQUQ7QUFBUixLQUEzSCxFQUFxTVgsU0FBck0sQ0FBaEI7QUFDQSxVQUFNWSxHQUFHLEdBQUdDLDJDQUFHLENBQUNYLGFBQUosQ0FBbUIsbUNBQW5CLENBQVo7QUFDQVksc0RBQVUsQ0FBQ0MsTUFBWCxDQUFrQkMsTUFBbEIsQ0FBeUJKLEdBQXpCO0FBQ0FLLG9EQUFRLENBQUNDLE1BQVQsQ0FBZ0JqQixPQUFoQixFQUF5QlcsR0FBekI7QUFDQSxTQUFLTyxHQUFMLEdBQVd0QixZQUFYO0FBQ0g7O0FBRUQsU0FBT3VCLElBQVAsQ0FBWUMsTUFBWixFQUFvQjtBQUNoQixRQUFJLENBQUMsS0FBS0YsR0FBVixFQUFlLEtBQUt2QixVQUFMO0FBQ2YsV0FBTyxLQUFLdUIsR0FBTCxDQUFTRyxPQUFULENBQWlCRixJQUFqQixDQUFzQkMsTUFBdEIsQ0FBUDtBQUNIOztBQWRnQyIsImZpbGUiOiIuL3NyYy91aS9mbG9hdGluZ3dpbmRvd3MuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1dlYnBhY2tNb2R1bGVzLCBSZWFjdCwgUmVhY3RET00sIERPTSwgRE9NTWFuYWdlcn0gZnJvbSBcIm1vZHVsZXNcIjtcclxuaW1wb3J0IEZsb2F0aW5nV2luZG93Q29udGFpbmVyIGZyb20gXCIuL2Zsb2F0aW5nL2NvbnRhaW5lclwiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRmxvYXRpbmdXaW5kb3dzIHtcclxuICAgIHN0YXRpYyBpbml0aWFsaXplKCkge1xyXG4gICAgICAgIGNvbnN0IGNvbnRhaW5lclJlZiA9IFJlYWN0LmNyZWF0ZVJlZigpO1xyXG4gICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IDxGbG9hdGluZ1dpbmRvd0NvbnRhaW5lciByZWY9e2NvbnRhaW5lclJlZn0gLz47XHJcbiAgICAgICAgY29uc3Qgd3JhcHBlZCA9IFJlYWN0LmNyZWF0ZUVsZW1lbnQoV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcIkFwcFJlZmVyZW5jZVBvc2l0aW9uTGF5ZXJcIikuQXBwTGF5ZXJQcm92aWRlcigpLnByb3BzLmxheWVyQ29udGV4dC5Qcm92aWRlciwge3ZhbHVlOiBbZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNhcHAtbW91bnQgPiAubGF5ZXJDb250YWluZXIteXFhRmNLXCIpXX0sIGNvbnRhaW5lcik7XHJcbiAgICAgICAgY29uc3QgZGl2ID0gRE9NLmNyZWF0ZUVsZW1lbnQoYDxkaXYgaWQ9XCJmbG9hdGluZy13aW5kb3dzLWxheWVyXCI+YCk7XHJcbiAgICAgICAgRE9NTWFuYWdlci5iZEJvZHkuYXBwZW5kKGRpdik7XHJcbiAgICAgICAgUmVhY3RET00ucmVuZGVyKHdyYXBwZWQsIGRpdik7XHJcbiAgICAgICAgdGhpcy5yZWYgPSBjb250YWluZXJSZWY7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIHN0YXRpYyBvcGVuKHdpbmRvdykge1xyXG4gICAgICAgIGlmICghdGhpcy5yZWYpIHRoaXMuaW5pdGlhbGl6ZSgpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnJlZi5jdXJyZW50Lm9wZW4od2luZG93KTtcclxuICAgIH1cclxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/floatingwindows.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return FloatingWindows; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _floating_container__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./floating/container */ \"./src/ui/floating/container.jsx\");\n\n\nclass FloatingWindows {\n static initialize() {\n const containerRef = modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createRef();\n const container = /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_floating_container__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n ref: containerRef\n });\n const wrapped = modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(modules__WEBPACK_IMPORTED_MODULE_0__[\"WebpackModules\"].getByProps(\"AppReferencePositionLayer\").AppLayerProvider().props.layerContext.Provider, {\n value: [document.querySelector(\"#app-mount > .layerContainer-yqaFcK\")]\n }, container);\n const div = modules__WEBPACK_IMPORTED_MODULE_0__[\"DOM\"].createElement(`
`);\n modules__WEBPACK_IMPORTED_MODULE_0__[\"DOMManager\"].bdBody.append(div);\n modules__WEBPACK_IMPORTED_MODULE_0__[\"ReactDOM\"].render(wrapped, div);\n this.ref = containerRef;\n }\n\n static open(window) {\n if (!this.ref) this.initialize();\n return this.ref.current.open(window);\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvZmxvYXRpbmd3aW5kb3dzLmpzPzE3NDMiXSwibmFtZXMiOlsiRmxvYXRpbmdXaW5kb3dzIiwiaW5pdGlhbGl6ZSIsImNvbnRhaW5lclJlZiIsIlJlYWN0IiwiY3JlYXRlUmVmIiwiY29udGFpbmVyIiwid3JhcHBlZCIsImNyZWF0ZUVsZW1lbnQiLCJXZWJwYWNrTW9kdWxlcyIsImdldEJ5UHJvcHMiLCJBcHBMYXllclByb3ZpZGVyIiwicHJvcHMiLCJsYXllckNvbnRleHQiLCJQcm92aWRlciIsInZhbHVlIiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwiZGl2IiwiRE9NIiwiRE9NTWFuYWdlciIsImJkQm9keSIsImFwcGVuZCIsIlJlYWN0RE9NIiwicmVuZGVyIiwicmVmIiwib3BlbiIsIndpbmRvdyIsImN1cnJlbnQiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUVlLE1BQU1BLGVBQU4sQ0FBc0I7QUFDakMsU0FBT0MsVUFBUCxHQUFvQjtBQUNoQixVQUFNQyxZQUFZLEdBQUdDLDZDQUFLLENBQUNDLFNBQU4sRUFBckI7QUFDQSxVQUFNQyxTQUFTLGdCQUFHLDREQUFDLDJEQUFEO0FBQXlCLFNBQUcsRUFBRUg7QUFBOUIsTUFBbEI7QUFDQSxVQUFNSSxPQUFPLEdBQUdILDZDQUFLLENBQUNJLGFBQU4sQ0FBb0JDLHNEQUFjLENBQUNDLFVBQWYsQ0FBMEIsMkJBQTFCLEVBQXVEQyxnQkFBdkQsR0FBMEVDLEtBQTFFLENBQWdGQyxZQUFoRixDQUE2RkMsUUFBakgsRUFBMkg7QUFBQ0MsV0FBSyxFQUFFLENBQUNDLFFBQVEsQ0FBQ0MsYUFBVCxDQUF1QixxQ0FBdkIsQ0FBRDtBQUFSLEtBQTNILEVBQXFNWCxTQUFyTSxDQUFoQjtBQUNBLFVBQU1ZLEdBQUcsR0FBR0MsMkNBQUcsQ0FBQ1gsYUFBSixDQUFtQixtQ0FBbkIsQ0FBWjtBQUNBWSxzREFBVSxDQUFDQyxNQUFYLENBQWtCQyxNQUFsQixDQUF5QkosR0FBekI7QUFDQUssb0RBQVEsQ0FBQ0MsTUFBVCxDQUFnQmpCLE9BQWhCLEVBQXlCVyxHQUF6QjtBQUNBLFNBQUtPLEdBQUwsR0FBV3RCLFlBQVg7QUFDSDs7QUFFRCxTQUFPdUIsSUFBUCxDQUFZQyxNQUFaLEVBQW9CO0FBQ2hCLFFBQUksQ0FBQyxLQUFLRixHQUFWLEVBQWUsS0FBS3ZCLFVBQUw7QUFDZixXQUFPLEtBQUt1QixHQUFMLENBQVNHLE9BQVQsQ0FBaUJGLElBQWpCLENBQXNCQyxNQUF0QixDQUFQO0FBQ0g7O0FBZGdDIiwiZmlsZSI6Ii4vc3JjL3VpL2Zsb2F0aW5nd2luZG93cy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7V2VicGFja01vZHVsZXMsIFJlYWN0LCBSZWFjdERPTSwgRE9NLCBET01NYW5hZ2VyfSBmcm9tIFwibW9kdWxlc1wiO1xyXG5pbXBvcnQgRmxvYXRpbmdXaW5kb3dDb250YWluZXIgZnJvbSBcIi4vZmxvYXRpbmcvY29udGFpbmVyXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBGbG9hdGluZ1dpbmRvd3Mge1xyXG4gICAgc3RhdGljIGluaXRpYWxpemUoKSB7XHJcbiAgICAgICAgY29uc3QgY29udGFpbmVyUmVmID0gUmVhY3QuY3JlYXRlUmVmKCk7XHJcbiAgICAgICAgY29uc3QgY29udGFpbmVyID0gPEZsb2F0aW5nV2luZG93Q29udGFpbmVyIHJlZj17Y29udGFpbmVyUmVmfSAvPjtcclxuICAgICAgICBjb25zdCB3cmFwcGVkID0gUmVhY3QuY3JlYXRlRWxlbWVudChXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiQXBwUmVmZXJlbmNlUG9zaXRpb25MYXllclwiKS5BcHBMYXllclByb3ZpZGVyKCkucHJvcHMubGF5ZXJDb250ZXh0LlByb3ZpZGVyLCB7dmFsdWU6IFtkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI2FwcC1tb3VudCA+IC5sYXllckNvbnRhaW5lci15cWFGY0tcIildfSwgY29udGFpbmVyKTtcclxuICAgICAgICBjb25zdCBkaXYgPSBET00uY3JlYXRlRWxlbWVudChgPGRpdiBpZD1cImZsb2F0aW5nLXdpbmRvd3MtbGF5ZXJcIj5gKTtcclxuICAgICAgICBET01NYW5hZ2VyLmJkQm9keS5hcHBlbmQoZGl2KTtcclxuICAgICAgICBSZWFjdERPTS5yZW5kZXIod3JhcHBlZCwgZGl2KTtcclxuICAgICAgICB0aGlzLnJlZiA9IGNvbnRhaW5lclJlZjtcclxuICAgIH1cclxuICAgIFxyXG4gICAgc3RhdGljIG9wZW4od2luZG93KSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnJlZikgdGhpcy5pbml0aWFsaXplKCk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucmVmLmN1cnJlbnQub3Blbih3aW5kb3cpO1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/floatingwindows.js\n"); /***/ }), @@ -815,7 +814,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return BDLogo; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass BDLogo extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"svg\", {\n className: \"bd-logo \" + this.props.className,\n height: \"100%\",\n width: this.props.size || \"16px\",\n viewBox: \"0 0 2000 2000\",\n style: {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"metadata\", null), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"defs\", null, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"filter\", {\n id: \"shadow1\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"feDropShadow\", {\n dx: \"20\",\n dy: \"0\",\n stdDeviation: \"20\",\n floodColor: \"rgba(0,0,0,0.35)\"\n })), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"filter\", {\n id: \"shadow2\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"feDropShadow\", {\n dx: \"15\",\n dy: \"0\",\n stdDeviation: \"20\",\n floodColor: \"rgba(255,255,255,0.15)\"\n })), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"filter\", {\n id: \"shadow3\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"feDropShadow\", {\n dx: \"10\",\n dy: \"0\",\n stdDeviation: \"20\",\n floodColor: \"rgba(0,0,0,0.35)\"\n }))), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"g\", null, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n style: {\n filter: \"url(#shadow3)\"\n },\n fill: \"#171717\",\n opacity: \"1\",\n d: \"M1195.44+135.442L1195.44+135.442L997.6+136.442C1024.2+149.742+1170.34+163.542+1193.64+179.742C1264.34+228.842+1319.74+291.242+1358.24+365.042C1398.14+441.642+1419.74+530.642+1422.54+629.642L1422.54+630.842L1422.54+632.042C1422.54+773.142+1422.54+1228.14+1422.54+1369.14L1422.54+1370.34L1422.54+1371.54C1419.84+1470.54+1398.24+1559.54+1358.24+1636.14C1319.74+1709.94+1264.44+1772.34+1193.64+1821.44C1171.04+1837.14+1025.7+1850.54+1000+1863.54L1193.54+1864.54C1539.74+1866.44+1864.54+1693.34+1864.54+1296.64L1864.54+716.942C1866.44+312.442+1541.64+135.442+1195.44+135.442Z\"\n }), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n style: {\n filter: \"url(#shadow2)\"\n },\n fill: \"#3E82E5\",\n opacity: \"1\",\n d: \"M1695.54+631.442C1685.84+278.042+1409.34+135.442+1052.94+135.442L361.74+136.442L803.74+490.442L1060.74+490.442C1335.24+490.442+1335.24+835.342+1060.74+835.342L1060.74+1164.84C1150.22+1164.84+1210.53+1201.48+1241.68+1250.87C1306.07+1353+1245.76+1509.64+1060.74+1509.64L361.74+1863.54L1052.94+1864.54C1409.24+1864.54+1685.74+1721.94+1695.54+1368.54C1695.54+1205.94+1651.04+1084.44+1572.64+999.942C1651.04+915.542+1695.54+794.042+1695.54+631.442Z\"\n }), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n style: {\n filter: \"url(#shadow1)\"\n },\n fill: \"#FFFFFF\",\n opacity: \"1\",\n d: \"M1469.25+631.442C1459.55+278.042+1183.05+135.442+826.65+135.442L135.45+135.442L135.45+1004C135.45+1004+135.427+1255.21+355.626+1255.21C575.825+1255.21+575.848+1004+575.848+1004L577.45+490.442L834.45+490.442C1108.95+490.442+1108.95+835.342+834.45+835.342L664.65+835.342L664.65+1164.84L834.45+1164.84C923.932+1164.84+984.244+1201.48+1015.39+1250.87C1079.78+1353+1019.47+1509.64+834.45+1509.64L135.45+1509.64L135.45+1864.54L826.65+1864.54C1182.95+1864.54+1459.45+1721.94+1469.25+1368.54C1469.25+1205.94+1424.75+1084.44+1346.35+999.942C1424.75+915.542+1469.25+794.042+1469.25+631.442Z\"\n })));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL2ljb25zL2JkbG9nby5qc3g/YmQ4OSJdLCJuYW1lcyI6WyJCRExvZ28iLCJSZWFjdCIsIkNvbXBvbmVudCIsInJlbmRlciIsInByb3BzIiwiY2xhc3NOYW1lIiwic2l6ZSIsImZpbGxSdWxlIiwiY2xpcFJ1bGUiLCJzdHJva2VMaW5lY2FwIiwic3Ryb2tlTGluZWpvaW4iLCJmaWx0ZXIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRWUsTUFBTUEsTUFBTixTQUFxQkMsNkNBQUssQ0FBQ0MsU0FBM0IsQ0FBcUM7QUFDaERDLFFBQU0sR0FBRztBQUNMLHdCQUFPO0FBQUssZUFBUyxFQUFFLGFBQWEsS0FBS0MsS0FBTCxDQUFXQyxTQUF4QztBQUFtRCxZQUFNLEVBQUMsTUFBMUQ7QUFBaUUsV0FBSyxFQUFFLEtBQUtELEtBQUwsQ0FBV0UsSUFBWCxJQUFtQixNQUEzRjtBQUFtRyxhQUFPLEVBQUMsZUFBM0c7QUFBMkgsV0FBSyxFQUFFO0FBQUNDLGdCQUFRLEVBQUUsU0FBWDtBQUFzQkMsZ0JBQVEsRUFBRSxTQUFoQztBQUEyQ0MscUJBQWEsRUFBRSxPQUExRDtBQUFtRUMsc0JBQWMsRUFBRTtBQUFuRjtBQUFsSSxvQkFDSCw2RUFERyxlQUVILHVGQUNJO0FBQVEsUUFBRSxFQUFDO0FBQVgsb0JBQXFCO0FBQWMsUUFBRSxFQUFDLElBQWpCO0FBQXNCLFFBQUUsRUFBQyxHQUF6QjtBQUE2QixrQkFBWSxFQUFDLElBQTFDO0FBQStDLGdCQUFVLEVBQUM7QUFBMUQsTUFBckIsQ0FESixlQUVJO0FBQVEsUUFBRSxFQUFDO0FBQVgsb0JBQXFCO0FBQWMsUUFBRSxFQUFDLElBQWpCO0FBQXNCLFFBQUUsRUFBQyxHQUF6QjtBQUE2QixrQkFBWSxFQUFDLElBQTFDO0FBQStDLGdCQUFVLEVBQUM7QUFBMUQsTUFBckIsQ0FGSixlQUdJO0FBQVEsUUFBRSxFQUFDO0FBQVgsb0JBQXFCO0FBQWMsUUFBRSxFQUFDLElBQWpCO0FBQXNCLFFBQUUsRUFBQyxHQUF6QjtBQUE2QixrQkFBWSxFQUFDLElBQTFDO0FBQStDLGdCQUFVLEVBQUM7QUFBMUQsTUFBckIsQ0FISixDQUZHLGVBT0gsb0ZBQ0k7QUFBTSxXQUFLLEVBQUU7QUFBQ0MsY0FBTSxFQUFFO0FBQVQsT0FBYjtBQUF3QyxVQUFJLEVBQUMsU0FBN0M7QUFBdUQsYUFBTyxFQUFDLEdBQS9EO0FBQW1FLE9BQUMsRUFBQztBQUFyRSxNQURKLGVBRUk7QUFBTSxXQUFLLEVBQUU7QUFBQ0EsY0FBTSxFQUFFO0FBQVQsT0FBYjtBQUF3QyxVQUFJLEVBQUMsU0FBN0M7QUFBdUQsYUFBTyxFQUFDLEdBQS9EO0FBQW1FLE9BQUMsRUFBQztBQUFyRSxNQUZKLGVBR0k7QUFBTSxXQUFLLEVBQUU7QUFBQ0EsY0FBTSxFQUFFO0FBQVQsT0FBYjtBQUF3QyxVQUFJLEVBQUMsU0FBN0M7QUFBdUQsYUFBTyxFQUFDLEdBQS9EO0FBQW1FLE9BQUMsRUFBQztBQUFyRSxNQUhKLENBUEcsQ0FBUDtBQWFIOztBQWYrQyIsImZpbGUiOiIuL3NyYy91aS9pY29ucy9iZGxvZ28uanN4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtSZWFjdH0gZnJvbSBcIm1vZHVsZXNcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJETG9nbyBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XHJcbiAgICByZW5kZXIoKSB7XHJcbiAgICAgICAgcmV0dXJuIDxzdmcgY2xhc3NOYW1lPXtcImJkLWxvZ28gXCIgKyB0aGlzLnByb3BzLmNsYXNzTmFtZX0gaGVpZ2h0PVwiMTAwJVwiIHdpZHRoPXt0aGlzLnByb3BzLnNpemUgfHwgXCIxNnB4XCJ9IHZpZXdCb3g9XCIwIDAgMjAwMCAyMDAwXCIgc3R5bGU9e3tmaWxsUnVsZTogXCJldmVub2RkXCIsIGNsaXBSdWxlOiBcImV2ZW5vZGRcIiwgc3Ryb2tlTGluZWNhcDogXCJyb3VuZFwiLCBzdHJva2VMaW5lam9pbjogXCJyb3VuZFwifX0+XHJcbiAgICAgICAgICAgIDxtZXRhZGF0YSAvPlxyXG4gICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgIDxmaWx0ZXIgaWQ9XCJzaGFkb3cxXCI+PGZlRHJvcFNoYWRvdyBkeD1cIjIwXCIgZHk9XCIwXCIgc3RkRGV2aWF0aW9uPVwiMjBcIiBmbG9vZENvbG9yPVwicmdiYSgwLDAsMCwwLjM1KVwiIC8+PC9maWx0ZXI+XHJcbiAgICAgICAgICAgICAgICA8ZmlsdGVyIGlkPVwic2hhZG93MlwiPjxmZURyb3BTaGFkb3cgZHg9XCIxNVwiIGR5PVwiMFwiIHN0ZERldmlhdGlvbj1cIjIwXCIgZmxvb2RDb2xvcj1cInJnYmEoMjU1LDI1NSwyNTUsMC4xNSlcIiAvPjwvZmlsdGVyPlxyXG4gICAgICAgICAgICAgICAgPGZpbHRlciBpZD1cInNoYWRvdzNcIj48ZmVEcm9wU2hhZG93IGR4PVwiMTBcIiBkeT1cIjBcIiBzdGREZXZpYXRpb249XCIyMFwiIGZsb29kQ29sb3I9XCJyZ2JhKDAsMCwwLDAuMzUpXCIgLz48L2ZpbHRlcj5cclxuICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICA8Zz5cclxuICAgICAgICAgICAgICAgIDxwYXRoIHN0eWxlPXt7ZmlsdGVyOiBcInVybCgjc2hhZG93MylcIn19IGZpbGw9XCIjMTcxNzE3XCIgb3BhY2l0eT1cIjFcIiBkPVwiTTExOTUuNDQrMTM1LjQ0MkwxMTk1LjQ0KzEzNS40NDJMOTk3LjYrMTM2LjQ0MkMxMDI0LjIrMTQ5Ljc0MisxMTcwLjM0KzE2My41NDIrMTE5My42NCsxNzkuNzQyQzEyNjQuMzQrMjI4Ljg0MisxMzE5Ljc0KzI5MS4yNDIrMTM1OC4yNCszNjUuMDQyQzEzOTguMTQrNDQxLjY0MisxNDE5Ljc0KzUzMC42NDIrMTQyMi41NCs2MjkuNjQyTDE0MjIuNTQrNjMwLjg0MkwxNDIyLjU0KzYzMi4wNDJDMTQyMi41NCs3NzMuMTQyKzE0MjIuNTQrMTIyOC4xNCsxNDIyLjU0KzEzNjkuMTRMMTQyMi41NCsxMzcwLjM0TDE0MjIuNTQrMTM3MS41NEMxNDE5Ljg0KzE0NzAuNTQrMTM5OC4yNCsxNTU5LjU0KzEzNTguMjQrMTYzNi4xNEMxMzE5Ljc0KzE3MDkuOTQrMTI2NC40NCsxNzcyLjM0KzExOTMuNjQrMTgyMS40NEMxMTcxLjA0KzE4MzcuMTQrMTAyNS43KzE4NTAuNTQrMTAwMCsxODYzLjU0TDExOTMuNTQrMTg2NC41NEMxNTM5Ljc0KzE4NjYuNDQrMTg2NC41NCsxNjkzLjM0KzE4NjQuNTQrMTI5Ni42NEwxODY0LjU0KzcxNi45NDJDMTg2Ni40NCszMTIuNDQyKzE1NDEuNjQrMTM1LjQ0MisxMTk1LjQ0KzEzNS40NDJaXCIgLz5cclxuICAgICAgICAgICAgICAgIDxwYXRoIHN0eWxlPXt7ZmlsdGVyOiBcInVybCgjc2hhZG93MilcIn19IGZpbGw9XCIjM0U4MkU1XCIgb3BhY2l0eT1cIjFcIiBkPVwiTTE2OTUuNTQrNjMxLjQ0MkMxNjg1Ljg0KzI3OC4wNDIrMTQwOS4zNCsxMzUuNDQyKzEwNTIuOTQrMTM1LjQ0MkwzNjEuNzQrMTM2LjQ0Mkw4MDMuNzQrNDkwLjQ0MkwxMDYwLjc0KzQ5MC40NDJDMTMzNS4yNCs0OTAuNDQyKzEzMzUuMjQrODM1LjM0MisxMDYwLjc0KzgzNS4zNDJMMTA2MC43NCsxMTY0Ljg0QzExNTAuMjIrMTE2NC44NCsxMjEwLjUzKzEyMDEuNDgrMTI0MS42OCsxMjUwLjg3QzEzMDYuMDcrMTM1MysxMjQ1Ljc2KzE1MDkuNjQrMTA2MC43NCsxNTA5LjY0TDM2MS43NCsxODYzLjU0TDEwNTIuOTQrMTg2NC41NEMxNDA5LjI0KzE4NjQuNTQrMTY4NS43NCsxNzIxLjk0KzE2OTUuNTQrMTM2OC41NEMxNjk1LjU0KzEyMDUuOTQrMTY1MS4wNCsxMDg0LjQ0KzE1NzIuNjQrOTk5Ljk0MkMxNjUxLjA0KzkxNS41NDIrMTY5NS41NCs3OTQuMDQyKzE2OTUuNTQrNjMxLjQ0MlpcIiAvPlxyXG4gICAgICAgICAgICAgICAgPHBhdGggc3R5bGU9e3tmaWx0ZXI6IFwidXJsKCNzaGFkb3cxKVwifX0gZmlsbD1cIiNGRkZGRkZcIiBvcGFjaXR5PVwiMVwiIGQ9XCJNMTQ2OS4yNSs2MzEuNDQyQzE0NTkuNTUrMjc4LjA0MisxMTgzLjA1KzEzNS40NDIrODI2LjY1KzEzNS40NDJMMTM1LjQ1KzEzNS40NDJMMTM1LjQ1KzEwMDRDMTM1LjQ1KzEwMDQrMTM1LjQyNysxMjU1LjIxKzM1NS42MjYrMTI1NS4yMUM1NzUuODI1KzEyNTUuMjErNTc1Ljg0OCsxMDA0KzU3NS44NDgrMTAwNEw1NzcuNDUrNDkwLjQ0Mkw4MzQuNDUrNDkwLjQ0MkMxMTA4Ljk1KzQ5MC40NDIrMTEwOC45NSs4MzUuMzQyKzgzNC40NSs4MzUuMzQyTDY2NC42NSs4MzUuMzQyTDY2NC42NSsxMTY0Ljg0TDgzNC40NSsxMTY0Ljg0QzkyMy45MzIrMTE2NC44NCs5ODQuMjQ0KzEyMDEuNDgrMTAxNS4zOSsxMjUwLjg3QzEwNzkuNzgrMTM1MysxMDE5LjQ3KzE1MDkuNjQrODM0LjQ1KzE1MDkuNjRMMTM1LjQ1KzE1MDkuNjRMMTM1LjQ1KzE4NjQuNTRMODI2LjY1KzE4NjQuNTRDMTE4Mi45NSsxODY0LjU0KzE0NTkuNDUrMTcyMS45NCsxNDY5LjI1KzEzNjguNTRDMTQ2OS4yNSsxMjA1Ljk0KzE0MjQuNzUrMTA4NC40NCsxMzQ2LjM1Kzk5OS45NDJDMTQyNC43NSs5MTUuNTQyKzE0NjkuMjUrNzk0LjA0MisxNDY5LjI1KzYzMS40NDJaXCIgLz5cclxuICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgIDwvc3ZnPjtcclxuICAgIH1cclxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/icons/bdlogo.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return BDLogo; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass BDLogo extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"svg\", {\n className: \"bd-logo \" + this.props.className,\n height: \"100%\",\n width: this.props.size || \"16px\",\n viewBox: \"0 0 2000 2000\",\n style: {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"metadata\", null), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"defs\", null, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"filter\", {\n id: \"shadow1\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"feDropShadow\", {\n dx: \"20\",\n dy: \"0\",\n stdDeviation: \"20\",\n floodColor: \"rgba(0,0,0,0.35)\"\n })), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"filter\", {\n id: \"shadow2\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"feDropShadow\", {\n dx: \"15\",\n dy: \"0\",\n stdDeviation: \"20\",\n floodColor: \"rgba(255,255,255,0.15)\"\n })), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"filter\", {\n id: \"shadow3\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"feDropShadow\", {\n dx: \"10\",\n dy: \"0\",\n stdDeviation: \"20\",\n floodColor: \"rgba(0,0,0,0.35)\"\n }))), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"g\", null, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n style: {\n filter: \"url(#shadow3)\"\n },\n fill: \"#171717\",\n opacity: \"1\",\n d: \"M1195.44+135.442L1195.44+135.442L997.6+136.442C1024.2+149.742+1170.34+163.542+1193.64+179.742C1264.34+228.842+1319.74+291.242+1358.24+365.042C1398.14+441.642+1419.74+530.642+1422.54+629.642L1422.54+630.842L1422.54+632.042C1422.54+773.142+1422.54+1228.14+1422.54+1369.14L1422.54+1370.34L1422.54+1371.54C1419.84+1470.54+1398.24+1559.54+1358.24+1636.14C1319.74+1709.94+1264.44+1772.34+1193.64+1821.44C1171.04+1837.14+1025.7+1850.54+1000+1863.54L1193.54+1864.54C1539.74+1866.44+1864.54+1693.34+1864.54+1296.64L1864.54+716.942C1866.44+312.442+1541.64+135.442+1195.44+135.442Z\"\n }), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n style: {\n filter: \"url(#shadow2)\"\n },\n fill: \"#3E82E5\",\n opacity: \"1\",\n d: \"M1695.54+631.442C1685.84+278.042+1409.34+135.442+1052.94+135.442L361.74+136.442L803.74+490.442L1060.74+490.442C1335.24+490.442+1335.24+835.342+1060.74+835.342L1060.74+1164.84C1150.22+1164.84+1210.53+1201.48+1241.68+1250.87C1306.07+1353+1245.76+1509.64+1060.74+1509.64L361.74+1863.54L1052.94+1864.54C1409.24+1864.54+1685.74+1721.94+1695.54+1368.54C1695.54+1205.94+1651.04+1084.44+1572.64+999.942C1651.04+915.542+1695.54+794.042+1695.54+631.442Z\"\n }), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n style: {\n filter: \"url(#shadow1)\"\n },\n fill: \"#FFFFFF\",\n opacity: \"1\",\n d: \"M1469.25+631.442C1459.55+278.042+1183.05+135.442+826.65+135.442L135.45+135.442L135.45+1004C135.45+1004+135.427+1255.21+355.626+1255.21C575.825+1255.21+575.848+1004+575.848+1004L577.45+490.442L834.45+490.442C1108.95+490.442+1108.95+835.342+834.45+835.342L664.65+835.342L664.65+1164.84L834.45+1164.84C923.932+1164.84+984.244+1201.48+1015.39+1250.87C1079.78+1353+1019.47+1509.64+834.45+1509.64L135.45+1509.64L135.45+1864.54L826.65+1864.54C1182.95+1864.54+1459.45+1721.94+1469.25+1368.54C1469.25+1205.94+1424.75+1084.44+1346.35+999.942C1424.75+915.542+1469.25+794.042+1469.25+631.442Z\"\n })));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvaWNvbnMvYmRsb2dvLmpzeD9iZDg5Il0sIm5hbWVzIjpbIkJETG9nbyIsIlJlYWN0IiwiQ29tcG9uZW50IiwicmVuZGVyIiwicHJvcHMiLCJjbGFzc05hbWUiLCJzaXplIiwiZmlsbFJ1bGUiLCJjbGlwUnVsZSIsInN0cm9rZUxpbmVjYXAiLCJzdHJva2VMaW5lam9pbiIsImZpbHRlciJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFFZSxNQUFNQSxNQUFOLFNBQXFCQyw2Q0FBSyxDQUFDQyxTQUEzQixDQUFxQztBQUNoREMsUUFBTSxHQUFHO0FBQ0wsd0JBQU87QUFBSyxlQUFTLEVBQUUsYUFBYSxLQUFLQyxLQUFMLENBQVdDLFNBQXhDO0FBQW1ELFlBQU0sRUFBQyxNQUExRDtBQUFpRSxXQUFLLEVBQUUsS0FBS0QsS0FBTCxDQUFXRSxJQUFYLElBQW1CLE1BQTNGO0FBQW1HLGFBQU8sRUFBQyxlQUEzRztBQUEySCxXQUFLLEVBQUU7QUFBQ0MsZ0JBQVEsRUFBRSxTQUFYO0FBQXNCQyxnQkFBUSxFQUFFLFNBQWhDO0FBQTJDQyxxQkFBYSxFQUFFLE9BQTFEO0FBQW1FQyxzQkFBYyxFQUFFO0FBQW5GO0FBQWxJLG9CQUNILDZFQURHLGVBRUgsdUZBQ0k7QUFBUSxRQUFFLEVBQUM7QUFBWCxvQkFBcUI7QUFBYyxRQUFFLEVBQUMsSUFBakI7QUFBc0IsUUFBRSxFQUFDLEdBQXpCO0FBQTZCLGtCQUFZLEVBQUMsSUFBMUM7QUFBK0MsZ0JBQVUsRUFBQztBQUExRCxNQUFyQixDQURKLGVBRUk7QUFBUSxRQUFFLEVBQUM7QUFBWCxvQkFBcUI7QUFBYyxRQUFFLEVBQUMsSUFBakI7QUFBc0IsUUFBRSxFQUFDLEdBQXpCO0FBQTZCLGtCQUFZLEVBQUMsSUFBMUM7QUFBK0MsZ0JBQVUsRUFBQztBQUExRCxNQUFyQixDQUZKLGVBR0k7QUFBUSxRQUFFLEVBQUM7QUFBWCxvQkFBcUI7QUFBYyxRQUFFLEVBQUMsSUFBakI7QUFBc0IsUUFBRSxFQUFDLEdBQXpCO0FBQTZCLGtCQUFZLEVBQUMsSUFBMUM7QUFBK0MsZ0JBQVUsRUFBQztBQUExRCxNQUFyQixDQUhKLENBRkcsZUFPSCxvRkFDSTtBQUFNLFdBQUssRUFBRTtBQUFDQyxjQUFNLEVBQUU7QUFBVCxPQUFiO0FBQXdDLFVBQUksRUFBQyxTQUE3QztBQUF1RCxhQUFPLEVBQUMsR0FBL0Q7QUFBbUUsT0FBQyxFQUFDO0FBQXJFLE1BREosZUFFSTtBQUFNLFdBQUssRUFBRTtBQUFDQSxjQUFNLEVBQUU7QUFBVCxPQUFiO0FBQXdDLFVBQUksRUFBQyxTQUE3QztBQUF1RCxhQUFPLEVBQUMsR0FBL0Q7QUFBbUUsT0FBQyxFQUFDO0FBQXJFLE1BRkosZUFHSTtBQUFNLFdBQUssRUFBRTtBQUFDQSxjQUFNLEVBQUU7QUFBVCxPQUFiO0FBQXdDLFVBQUksRUFBQyxTQUE3QztBQUF1RCxhQUFPLEVBQUMsR0FBL0Q7QUFBbUUsT0FBQyxFQUFDO0FBQXJFLE1BSEosQ0FQRyxDQUFQO0FBYUg7O0FBZitDIiwiZmlsZSI6Ii4vc3JjL3VpL2ljb25zL2JkbG9nby5qc3guanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlYWN0fSBmcm9tIFwibW9kdWxlc1wiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQkRMb2dvIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICByZXR1cm4gPHN2ZyBjbGFzc05hbWU9e1wiYmQtbG9nbyBcIiArIHRoaXMucHJvcHMuY2xhc3NOYW1lfSBoZWlnaHQ9XCIxMDAlXCIgd2lkdGg9e3RoaXMucHJvcHMuc2l6ZSB8fCBcIjE2cHhcIn0gdmlld0JveD1cIjAgMCAyMDAwIDIwMDBcIiBzdHlsZT17e2ZpbGxSdWxlOiBcImV2ZW5vZGRcIiwgY2xpcFJ1bGU6IFwiZXZlbm9kZFwiLCBzdHJva2VMaW5lY2FwOiBcInJvdW5kXCIsIHN0cm9rZUxpbmVqb2luOiBcInJvdW5kXCJ9fT5cclxuICAgICAgICAgICAgPG1ldGFkYXRhIC8+XHJcbiAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgPGZpbHRlciBpZD1cInNoYWRvdzFcIj48ZmVEcm9wU2hhZG93IGR4PVwiMjBcIiBkeT1cIjBcIiBzdGREZXZpYXRpb249XCIyMFwiIGZsb29kQ29sb3I9XCJyZ2JhKDAsMCwwLDAuMzUpXCIgLz48L2ZpbHRlcj5cclxuICAgICAgICAgICAgICAgIDxmaWx0ZXIgaWQ9XCJzaGFkb3cyXCI+PGZlRHJvcFNoYWRvdyBkeD1cIjE1XCIgZHk9XCIwXCIgc3RkRGV2aWF0aW9uPVwiMjBcIiBmbG9vZENvbG9yPVwicmdiYSgyNTUsMjU1LDI1NSwwLjE1KVwiIC8+PC9maWx0ZXI+XHJcbiAgICAgICAgICAgICAgICA8ZmlsdGVyIGlkPVwic2hhZG93M1wiPjxmZURyb3BTaGFkb3cgZHg9XCIxMFwiIGR5PVwiMFwiIHN0ZERldmlhdGlvbj1cIjIwXCIgZmxvb2RDb2xvcj1cInJnYmEoMCwwLDAsMC4zNSlcIiAvPjwvZmlsdGVyPlxyXG4gICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgIDxnPlxyXG4gICAgICAgICAgICAgICAgPHBhdGggc3R5bGU9e3tmaWx0ZXI6IFwidXJsKCNzaGFkb3czKVwifX0gZmlsbD1cIiMxNzE3MTdcIiBvcGFjaXR5PVwiMVwiIGQ9XCJNMTE5NS40NCsxMzUuNDQyTDExOTUuNDQrMTM1LjQ0Mkw5OTcuNisxMzYuNDQyQzEwMjQuMisxNDkuNzQyKzExNzAuMzQrMTYzLjU0MisxMTkzLjY0KzE3OS43NDJDMTI2NC4zNCsyMjguODQyKzEzMTkuNzQrMjkxLjI0MisxMzU4LjI0KzM2NS4wNDJDMTM5OC4xNCs0NDEuNjQyKzE0MTkuNzQrNTMwLjY0MisxNDIyLjU0KzYyOS42NDJMMTQyMi41NCs2MzAuODQyTDE0MjIuNTQrNjMyLjA0MkMxNDIyLjU0Kzc3My4xNDIrMTQyMi41NCsxMjI4LjE0KzE0MjIuNTQrMTM2OS4xNEwxNDIyLjU0KzEzNzAuMzRMMTQyMi41NCsxMzcxLjU0QzE0MTkuODQrMTQ3MC41NCsxMzk4LjI0KzE1NTkuNTQrMTM1OC4yNCsxNjM2LjE0QzEzMTkuNzQrMTcwOS45NCsxMjY0LjQ0KzE3NzIuMzQrMTE5My42NCsxODIxLjQ0QzExNzEuMDQrMTgzNy4xNCsxMDI1LjcrMTg1MC41NCsxMDAwKzE4NjMuNTRMMTE5My41NCsxODY0LjU0QzE1MzkuNzQrMTg2Ni40NCsxODY0LjU0KzE2OTMuMzQrMTg2NC41NCsxMjk2LjY0TDE4NjQuNTQrNzE2Ljk0MkMxODY2LjQ0KzMxMi40NDIrMTU0MS42NCsxMzUuNDQyKzExOTUuNDQrMTM1LjQ0MlpcIiAvPlxyXG4gICAgICAgICAgICAgICAgPHBhdGggc3R5bGU9e3tmaWx0ZXI6IFwidXJsKCNzaGFkb3cyKVwifX0gZmlsbD1cIiMzRTgyRTVcIiBvcGFjaXR5PVwiMVwiIGQ9XCJNMTY5NS41NCs2MzEuNDQyQzE2ODUuODQrMjc4LjA0MisxNDA5LjM0KzEzNS40NDIrMTA1Mi45NCsxMzUuNDQyTDM2MS43NCsxMzYuNDQyTDgwMy43NCs0OTAuNDQyTDEwNjAuNzQrNDkwLjQ0MkMxMzM1LjI0KzQ5MC40NDIrMTMzNS4yNCs4MzUuMzQyKzEwNjAuNzQrODM1LjM0MkwxMDYwLjc0KzExNjQuODRDMTE1MC4yMisxMTY0Ljg0KzEyMTAuNTMrMTIwMS40OCsxMjQxLjY4KzEyNTAuODdDMTMwNi4wNysxMzUzKzEyNDUuNzYrMTUwOS42NCsxMDYwLjc0KzE1MDkuNjRMMzYxLjc0KzE4NjMuNTRMMTA1Mi45NCsxODY0LjU0QzE0MDkuMjQrMTg2NC41NCsxNjg1Ljc0KzE3MjEuOTQrMTY5NS41NCsxMzY4LjU0QzE2OTUuNTQrMTIwNS45NCsxNjUxLjA0KzEwODQuNDQrMTU3Mi42NCs5OTkuOTQyQzE2NTEuMDQrOTE1LjU0MisxNjk1LjU0Kzc5NC4wNDIrMTY5NS41NCs2MzEuNDQyWlwiIC8+XHJcbiAgICAgICAgICAgICAgICA8cGF0aCBzdHlsZT17e2ZpbHRlcjogXCJ1cmwoI3NoYWRvdzEpXCJ9fSBmaWxsPVwiI0ZGRkZGRlwiIG9wYWNpdHk9XCIxXCIgZD1cIk0xNDY5LjI1KzYzMS40NDJDMTQ1OS41NSsyNzguMDQyKzExODMuMDUrMTM1LjQ0Mis4MjYuNjUrMTM1LjQ0MkwxMzUuNDUrMTM1LjQ0MkwxMzUuNDUrMTAwNEMxMzUuNDUrMTAwNCsxMzUuNDI3KzEyNTUuMjErMzU1LjYyNisxMjU1LjIxQzU3NS44MjUrMTI1NS4yMSs1NzUuODQ4KzEwMDQrNTc1Ljg0OCsxMDA0TDU3Ny40NSs0OTAuNDQyTDgzNC40NSs0OTAuNDQyQzExMDguOTUrNDkwLjQ0MisxMTA4Ljk1KzgzNS4zNDIrODM0LjQ1KzgzNS4zNDJMNjY0LjY1KzgzNS4zNDJMNjY0LjY1KzExNjQuODRMODM0LjQ1KzExNjQuODRDOTIzLjkzMisxMTY0Ljg0Kzk4NC4yNDQrMTIwMS40OCsxMDE1LjM5KzEyNTAuODdDMTA3OS43OCsxMzUzKzEwMTkuNDcrMTUwOS42NCs4MzQuNDUrMTUwOS42NEwxMzUuNDUrMTUwOS42NEwxMzUuNDUrMTg2NC41NEw4MjYuNjUrMTg2NC41NEMxMTgyLjk1KzE4NjQuNTQrMTQ1OS40NSsxNzIxLjk0KzE0NjkuMjUrMTM2OC41NEMxNDY5LjI1KzEyMDUuOTQrMTQyNC43NSsxMDg0LjQ0KzEzNDYuMzUrOTk5Ljk0MkMxNDI0Ljc1KzkxNS41NDIrMTQ2OS4yNSs3OTQuMDQyKzE0NjkuMjUrNjMxLjQ0MlpcIiAvPlxyXG4gICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgPC9zdmc+O1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/icons/bdlogo.jsx\n"); /***/ }), @@ -827,7 +826,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return CloseButton; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass CloseButton extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"svg\", {\n viewBox: \"0 0 12 12\",\n style: {\n width: \"18px\",\n height: \"18px\"\n }\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"g\", {\n className: \"background\",\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M0 0h12v12H0\"\n }), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n className: \"fill\",\n fill: \"#dcddde\",\n d: \"M9.5 3.205L8.795 2.5 6 5.295 3.205 2.5l-.705.705L5.295 6 2.5 8.795l.705.705L6 6.705 8.795 9.5l.705-.705L6.705 6\"\n })));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL2ljb25zL2Nsb3NlLmpzeD9iY2UxIl0sIm5hbWVzIjpbIkNsb3NlQnV0dG9uIiwiUmVhY3QiLCJDb21wb25lbnQiLCJyZW5kZXIiLCJ3aWR0aCIsImhlaWdodCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFFZSxNQUFNQSxXQUFOLFNBQTBCQyw2Q0FBSyxDQUFDQyxTQUFoQyxDQUEwQztBQUNyREMsUUFBTSxHQUFHO0FBQ0wsd0JBQU87QUFBSyxhQUFPLEVBQUMsV0FBYjtBQUF5QixXQUFLLEVBQUU7QUFBQ0MsYUFBSyxFQUFFLE1BQVI7QUFBZ0JDLGNBQU0sRUFBRTtBQUF4QjtBQUFoQyxvQkFDSDtBQUFHLGVBQVMsRUFBQyxZQUFiO0FBQTBCLFVBQUksRUFBQyxNQUEvQjtBQUFzQyxjQUFRLEVBQUM7QUFBL0Msb0JBQ0k7QUFBTSxPQUFDLEVBQUM7QUFBUixNQURKLGVBRUk7QUFBTSxlQUFTLEVBQUMsTUFBaEI7QUFBdUIsVUFBSSxFQUFDLFNBQTVCO0FBQXNDLE9BQUMsRUFBQztBQUF4QyxNQUZKLENBREcsQ0FBUDtBQU1IOztBQVJvRCIsImZpbGUiOiIuL3NyYy91aS9pY29ucy9jbG9zZS5qc3guanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlYWN0fSBmcm9tIFwibW9kdWxlc1wiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ2xvc2VCdXR0b24gZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIHJldHVybiA8c3ZnIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBzdHlsZT17e3dpZHRoOiBcIjE4cHhcIiwgaGVpZ2h0OiBcIjE4cHhcIn19PlxyXG4gICAgICAgICAgICA8ZyBjbGFzc05hbWU9XCJiYWNrZ3JvdW5kXCIgZmlsbD1cIm5vbmVcIiBmaWxsUnVsZT1cImV2ZW5vZGRcIj5cclxuICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMCAwaDEydjEySDBcIiAvPlxyXG4gICAgICAgICAgICAgICAgPHBhdGggY2xhc3NOYW1lPVwiZmlsbFwiIGZpbGw9XCIjZGNkZGRlXCIgZD1cIk05LjUgMy4yMDVMOC43OTUgMi41IDYgNS4yOTUgMy4yMDUgMi41bC0uNzA1LjcwNUw1LjI5NSA2IDIuNSA4Ljc5NWwuNzA1LjcwNUw2IDYuNzA1IDguNzk1IDkuNWwuNzA1LS43MDVMNi43MDUgNlwiIC8+XHJcbiAgICAgICAgICAgIDwvZz5cclxuICAgICAgICA8L3N2Zz47XHJcbiAgICB9XHJcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/ui/icons/close.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return CloseButton; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass CloseButton extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"svg\", {\n viewBox: \"0 0 12 12\",\n style: {\n width: \"18px\",\n height: \"18px\"\n }\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"g\", {\n className: \"background\",\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M0 0h12v12H0\"\n }), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n className: \"fill\",\n fill: \"#dcddde\",\n d: \"M9.5 3.205L8.795 2.5 6 5.295 3.205 2.5l-.705.705L5.295 6 2.5 8.795l.705.705L6 6.705 8.795 9.5l.705-.705L6.705 6\"\n })));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvaWNvbnMvY2xvc2UuanN4P2JjZTEiXSwibmFtZXMiOlsiQ2xvc2VCdXR0b24iLCJSZWFjdCIsIkNvbXBvbmVudCIsInJlbmRlciIsIndpZHRoIiwiaGVpZ2h0Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVlLE1BQU1BLFdBQU4sU0FBMEJDLDZDQUFLLENBQUNDLFNBQWhDLENBQTBDO0FBQ3JEQyxRQUFNLEdBQUc7QUFDTCx3QkFBTztBQUFLLGFBQU8sRUFBQyxXQUFiO0FBQXlCLFdBQUssRUFBRTtBQUFDQyxhQUFLLEVBQUUsTUFBUjtBQUFnQkMsY0FBTSxFQUFFO0FBQXhCO0FBQWhDLG9CQUNIO0FBQUcsZUFBUyxFQUFDLFlBQWI7QUFBMEIsVUFBSSxFQUFDLE1BQS9CO0FBQXNDLGNBQVEsRUFBQztBQUEvQyxvQkFDSTtBQUFNLE9BQUMsRUFBQztBQUFSLE1BREosZUFFSTtBQUFNLGVBQVMsRUFBQyxNQUFoQjtBQUF1QixVQUFJLEVBQUMsU0FBNUI7QUFBc0MsT0FBQyxFQUFDO0FBQXhDLE1BRkosQ0FERyxDQUFQO0FBTUg7O0FBUm9EIiwiZmlsZSI6Ii4vc3JjL3VpL2ljb25zL2Nsb3NlLmpzeC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhY3R9IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDbG9zZUJ1dHRvbiBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XHJcbiAgICByZW5kZXIoKSB7XHJcbiAgICAgICAgcmV0dXJuIDxzdmcgdmlld0JveD1cIjAgMCAxMiAxMlwiIHN0eWxlPXt7d2lkdGg6IFwiMThweFwiLCBoZWlnaHQ6IFwiMThweFwifX0+XHJcbiAgICAgICAgICAgIDxnIGNsYXNzTmFtZT1cImJhY2tncm91bmRcIiBmaWxsPVwibm9uZVwiIGZpbGxSdWxlPVwiZXZlbm9kZFwiPlxyXG4gICAgICAgICAgICAgICAgPHBhdGggZD1cIk0wIDBoMTJ2MTJIMFwiIC8+XHJcbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzc05hbWU9XCJmaWxsXCIgZmlsbD1cIiNkY2RkZGVcIiBkPVwiTTkuNSAzLjIwNUw4Ljc5NSAyLjUgNiA1LjI5NSAzLjIwNSAyLjVsLS43MDUuNzA1TDUuMjk1IDYgMi41IDguNzk1bC43MDUuNzA1TDYgNi43MDUgOC43OTUgOS41bC43MDUtLjcwNUw2LjcwNSA2XCIgLz5cclxuICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgIDwvc3ZnPjtcclxuICAgIH1cclxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/icons/close.jsx\n"); /***/ }), @@ -839,7 +838,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Cog; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass Cog extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n const size = this.props.size || \"20px\";\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"svg\", {\n viewBox: \"0 0 20 20\",\n style: {\n width: size,\n height: size\n }\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n fill: \"none\",\n d: \"M0 0h20v20H0V0z\"\n }), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M15.95 10.78c.03-.25.05-.51.05-.78s-.02-.53-.06-.78l1.69-1.32c.15-.12.19-.34.1-.51l-1.6-2.77c-.1-.18-.31-.24-.49-.18l-1.99.8c-.42-.32-.86-.58-1.35-.78L12 2.34c-.03-.2-.2-.34-.4-.34H8.4c-.2 0-.36.14-.39.34l-.3 2.12c-.49.2-.94.47-1.35.78l-1.99-.8c-.18-.07-.39 0-.49.18l-1.6 2.77c-.1.18-.06.39.1.51l1.69 1.32c-.04.25-.07.52-.07.78s.02.53.06.78L2.37 12.1c-.15.12-.19.34-.1.51l1.6 2.77c.1.18.31.24.49.18l1.99-.8c.42.32.86.58 1.35.78l.3 2.12c.04.2.2.34.4.34h3.2c.2 0 .37-.14.39-.34l.3-2.12c.49-.2.94-.47 1.35-.78l1.99.8c.18.07.39 0 .49-.18l1.6-2.77c.1-.18.06-.39-.1-.51l-1.67-1.32zM10 13c-1.65 0-3-1.35-3-3s1.35-3 3-3 3 1.35 3 3-1.35 3-3 3z\"\n }));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL2ljb25zL2NvZy5qc3g/MGFiZCJdLCJuYW1lcyI6WyJDb2ciLCJSZWFjdCIsIkNvbXBvbmVudCIsInJlbmRlciIsInNpemUiLCJwcm9wcyIsIndpZHRoIiwiaGVpZ2h0Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVlLE1BQU1BLEdBQU4sU0FBa0JDLDZDQUFLLENBQUNDLFNBQXhCLENBQWtDO0FBQzdDQyxRQUFNLEdBQUc7QUFDTCxVQUFNQyxJQUFJLEdBQUcsS0FBS0MsS0FBTCxDQUFXRCxJQUFYLElBQW1CLE1BQWhDO0FBQ0Esd0JBQU87QUFBSyxhQUFPLEVBQUMsV0FBYjtBQUF5QixXQUFLLEVBQUU7QUFBQ0UsYUFBSyxFQUFFRixJQUFSO0FBQWNHLGNBQU0sRUFBRUg7QUFBdEI7QUFBaEMsb0JBQ0M7QUFBTSxVQUFJLEVBQUMsTUFBWDtBQUFrQixPQUFDLEVBQUM7QUFBcEIsTUFERCxlQUVDO0FBQU0sT0FBQyxFQUFDO0FBQVIsTUFGRCxDQUFQO0FBSUg7O0FBUDRDIiwiZmlsZSI6Ii4vc3JjL3VpL2ljb25zL2NvZy5qc3guanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlYWN0fSBmcm9tIFwibW9kdWxlc1wiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29nIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICBjb25zdCBzaXplID0gdGhpcy5wcm9wcy5zaXplIHx8IFwiMjBweFwiO1xyXG4gICAgICAgIHJldHVybiA8c3ZnIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBzdHlsZT17e3dpZHRoOiBzaXplLCBoZWlnaHQ6IHNpemV9fT5cclxuICAgICAgICAgICAgICAgIDxwYXRoIGZpbGw9XCJub25lXCIgZD1cIk0wIDBoMjB2MjBIMFYwelwiIC8+XHJcbiAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE1Ljk1IDEwLjc4Yy4wMy0uMjUuMDUtLjUxLjA1LS43OHMtLjAyLS41My0uMDYtLjc4bDEuNjktMS4zMmMuMTUtLjEyLjE5LS4zNC4xLS41MWwtMS42LTIuNzdjLS4xLS4xOC0uMzEtLjI0LS40OS0uMThsLTEuOTkuOGMtLjQyLS4zMi0uODYtLjU4LTEuMzUtLjc4TDEyIDIuMzRjLS4wMy0uMi0uMi0uMzQtLjQtLjM0SDguNGMtLjIgMC0uMzYuMTQtLjM5LjM0bC0uMyAyLjEyYy0uNDkuMi0uOTQuNDctMS4zNS43OGwtMS45OS0uOGMtLjE4LS4wNy0uMzkgMC0uNDkuMThsLTEuNiAyLjc3Yy0uMS4xOC0uMDYuMzkuMS41MWwxLjY5IDEuMzJjLS4wNC4yNS0uMDcuNTItLjA3Ljc4cy4wMi41My4wNi43OEwyLjM3IDEyLjFjLS4xNS4xMi0uMTkuMzQtLjEuNTFsMS42IDIuNzdjLjEuMTguMzEuMjQuNDkuMThsMS45OS0uOGMuNDIuMzIuODYuNTggMS4zNS43OGwuMyAyLjEyYy4wNC4yLjIuMzQuNC4zNGgzLjJjLjIgMCAuMzctLjE0LjM5LS4zNGwuMy0yLjEyYy40OS0uMi45NC0uNDcgMS4zNS0uNzhsMS45OS44Yy4xOC4wNy4zOSAwIC40OS0uMThsMS42LTIuNzdjLjEtLjE4LjA2LS4zOS0uMS0uNTFsLTEuNjctMS4zMnpNMTAgMTNjLTEuNjUgMC0zLTEuMzUtMy0zczEuMzUtMyAzLTMgMyAxLjM1IDMgMy0xLjM1IDMtMyAzelwiIC8+XHJcbiAgICAgICAgICAgICAgIDwvc3ZnPjtcclxuICAgIH1cclxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/icons/cog.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Cog; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass Cog extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n const size = this.props.size || \"20px\";\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"svg\", {\n viewBox: \"0 0 20 20\",\n style: {\n width: size,\n height: size\n }\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n fill: \"none\",\n d: \"M0 0h20v20H0V0z\"\n }), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M15.95 10.78c.03-.25.05-.51.05-.78s-.02-.53-.06-.78l1.69-1.32c.15-.12.19-.34.1-.51l-1.6-2.77c-.1-.18-.31-.24-.49-.18l-1.99.8c-.42-.32-.86-.58-1.35-.78L12 2.34c-.03-.2-.2-.34-.4-.34H8.4c-.2 0-.36.14-.39.34l-.3 2.12c-.49.2-.94.47-1.35.78l-1.99-.8c-.18-.07-.39 0-.49.18l-1.6 2.77c-.1.18-.06.39.1.51l1.69 1.32c-.04.25-.07.52-.07.78s.02.53.06.78L2.37 12.1c-.15.12-.19.34-.1.51l1.6 2.77c.1.18.31.24.49.18l1.99-.8c.42.32.86.58 1.35.78l.3 2.12c.04.2.2.34.4.34h3.2c.2 0 .37-.14.39-.34l.3-2.12c.49-.2.94-.47 1.35-.78l1.99.8c.18.07.39 0 .49-.18l1.6-2.77c.1-.18.06-.39-.1-.51l-1.67-1.32zM10 13c-1.65 0-3-1.35-3-3s1.35-3 3-3 3 1.35 3 3-1.35 3-3 3z\"\n }));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvaWNvbnMvY29nLmpzeD8wYWJkIl0sIm5hbWVzIjpbIkNvZyIsIlJlYWN0IiwiQ29tcG9uZW50IiwicmVuZGVyIiwic2l6ZSIsInByb3BzIiwid2lkdGgiLCJoZWlnaHQiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRWUsTUFBTUEsR0FBTixTQUFrQkMsNkNBQUssQ0FBQ0MsU0FBeEIsQ0FBa0M7QUFDN0NDLFFBQU0sR0FBRztBQUNMLFVBQU1DLElBQUksR0FBRyxLQUFLQyxLQUFMLENBQVdELElBQVgsSUFBbUIsTUFBaEM7QUFDQSx3QkFBTztBQUFLLGFBQU8sRUFBQyxXQUFiO0FBQXlCLFdBQUssRUFBRTtBQUFDRSxhQUFLLEVBQUVGLElBQVI7QUFBY0csY0FBTSxFQUFFSDtBQUF0QjtBQUFoQyxvQkFDQztBQUFNLFVBQUksRUFBQyxNQUFYO0FBQWtCLE9BQUMsRUFBQztBQUFwQixNQURELGVBRUM7QUFBTSxPQUFDLEVBQUM7QUFBUixNQUZELENBQVA7QUFJSDs7QUFQNEMiLCJmaWxlIjoiLi9zcmMvdWkvaWNvbnMvY29nLmpzeC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhY3R9IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb2cgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIGNvbnN0IHNpemUgPSB0aGlzLnByb3BzLnNpemUgfHwgXCIyMHB4XCI7XHJcbiAgICAgICAgcmV0dXJuIDxzdmcgdmlld0JveD1cIjAgMCAyMCAyMFwiIHN0eWxlPXt7d2lkdGg6IHNpemUsIGhlaWdodDogc2l6ZX19PlxyXG4gICAgICAgICAgICAgICAgPHBhdGggZmlsbD1cIm5vbmVcIiBkPVwiTTAgMGgyMHYyMEgwVjB6XCIgLz5cclxuICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTUuOTUgMTAuNzhjLjAzLS4yNS4wNS0uNTEuMDUtLjc4cy0uMDItLjUzLS4wNi0uNzhsMS42OS0xLjMyYy4xNS0uMTIuMTktLjM0LjEtLjUxbC0xLjYtMi43N2MtLjEtLjE4LS4zMS0uMjQtLjQ5LS4xOGwtMS45OS44Yy0uNDItLjMyLS44Ni0uNTgtMS4zNS0uNzhMMTIgMi4zNGMtLjAzLS4yLS4yLS4zNC0uNC0uMzRIOC40Yy0uMiAwLS4zNi4xNC0uMzkuMzRsLS4zIDIuMTJjLS40OS4yLS45NC40Ny0xLjM1Ljc4bC0xLjk5LS44Yy0uMTgtLjA3LS4zOSAwLS40OS4xOGwtMS42IDIuNzdjLS4xLjE4LS4wNi4zOS4xLjUxbDEuNjkgMS4zMmMtLjA0LjI1LS4wNy41Mi0uMDcuNzhzLjAyLjUzLjA2Ljc4TDIuMzcgMTIuMWMtLjE1LjEyLS4xOS4zNC0uMS41MWwxLjYgMi43N2MuMS4xOC4zMS4yNC40OS4xOGwxLjk5LS44Yy40Mi4zMi44Ni41OCAxLjM1Ljc4bC4zIDIuMTJjLjA0LjIuMi4zNC40LjM0aDMuMmMuMiAwIC4zNy0uMTQuMzktLjM0bC4zLTIuMTJjLjQ5LS4yLjk0LS40NyAxLjM1LS43OGwxLjk5LjhjLjE4LjA3LjM5IDAgLjQ5LS4xOGwxLjYtMi43N2MuMS0uMTguMDYtLjM5LS4xLS41MWwtMS42Ny0xLjMyek0xMCAxM2MtMS42NSAwLTMtMS4zNS0zLTNzMS4zNS0zIDMtMyAzIDEuMzUgMyAzLTEuMzUgMy0zIDN6XCIgLz5cclxuICAgICAgICAgICAgICAgPC9zdmc+O1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/icons/cog.jsx\n"); /***/ }), @@ -851,7 +850,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Delete; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass Delete extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n const size = this.props.size || \"24px\";\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"svg\", {\n className: this.props.className || \"\",\n fill: \"#FFFFFF\",\n viewBox: \"0 0 24 24\",\n style: {\n width: size,\n height: size\n },\n onClick: this.props.onClick\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n fill: \"none\",\n d: \"M0 0h24v24H0V0z\"\n }), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zm2.46-7.12l1.41-1.41L12 12.59l2.12-2.12 1.41 1.41L13.41 14l2.12 2.12-1.41 1.41L12 15.41l-2.12 2.12-1.41-1.41L10.59 14l-2.13-2.12zM15.5 4l-1-1h-5l-1 1H5v2h14V4z\"\n }), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n fill: \"none\",\n d: \"M0 0h24v24H0z\"\n }));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL2ljb25zL2RlbGV0ZS5qc3g/NWIwYiJdLCJuYW1lcyI6WyJEZWxldGUiLCJSZWFjdCIsIkNvbXBvbmVudCIsInJlbmRlciIsInNpemUiLCJwcm9wcyIsImNsYXNzTmFtZSIsIndpZHRoIiwiaGVpZ2h0Iiwib25DbGljayJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFFZSxNQUFNQSxNQUFOLFNBQXFCQyw2Q0FBSyxDQUFDQyxTQUEzQixDQUFxQztBQUNoREMsUUFBTSxHQUFHO0FBQ0wsVUFBTUMsSUFBSSxHQUFHLEtBQUtDLEtBQUwsQ0FBV0QsSUFBWCxJQUFtQixNQUFoQztBQUNBLHdCQUFPO0FBQUssZUFBUyxFQUFFLEtBQUtDLEtBQUwsQ0FBV0MsU0FBWCxJQUF3QixFQUF4QztBQUE0QyxVQUFJLEVBQUMsU0FBakQ7QUFBMkQsYUFBTyxFQUFDLFdBQW5FO0FBQStFLFdBQUssRUFBRTtBQUFDQyxhQUFLLEVBQUVILElBQVI7QUFBY0ksY0FBTSxFQUFFSjtBQUF0QixPQUF0RjtBQUFtSCxhQUFPLEVBQUUsS0FBS0MsS0FBTCxDQUFXSTtBQUF2SSxvQkFDSztBQUFNLFVBQUksRUFBQyxNQUFYO0FBQWtCLE9BQUMsRUFBQztBQUFwQixNQURMLGVBQzRDO0FBQU0sT0FBQyxFQUFDO0FBQVIsTUFENUMsZUFFSztBQUFNLFVBQUksRUFBQyxNQUFYO0FBQWtCLE9BQUMsRUFBQztBQUFwQixNQUZMLENBQVA7QUFJSDs7QUFQK0MiLCJmaWxlIjoiLi9zcmMvdWkvaWNvbnMvZGVsZXRlLmpzeC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhY3R9IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEZWxldGUgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIGNvbnN0IHNpemUgPSB0aGlzLnByb3BzLnNpemUgfHwgXCIyNHB4XCI7XHJcbiAgICAgICAgcmV0dXJuIDxzdmcgY2xhc3NOYW1lPXt0aGlzLnByb3BzLmNsYXNzTmFtZSB8fCBcIlwifSBmaWxsPVwiI0ZGRkZGRlwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBzdHlsZT17e3dpZHRoOiBzaXplLCBoZWlnaHQ6IHNpemV9fSBvbkNsaWNrPXt0aGlzLnByb3BzLm9uQ2xpY2t9PlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGw9XCJub25lXCIgZD1cIk0wIDBoMjR2MjRIMFYwelwiLz48cGF0aCBkPVwiTTYgMTljMCAxLjEuOSAyIDIgMmg4YzEuMSAwIDItLjkgMi0yVjdINnYxMnptMi40Ni03LjEybDEuNDEtMS40MUwxMiAxMi41OWwyLjEyLTIuMTIgMS40MSAxLjQxTDEzLjQxIDE0bDIuMTIgMi4xMi0xLjQxIDEuNDFMMTIgMTUuNDFsLTIuMTIgMi4xMi0xLjQxLTEuNDFMMTAuNTkgMTRsLTIuMTMtMi4xMnpNMTUuNSA0bC0xLTFoLTVsLTEgMUg1djJoMTRWNHpcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbD1cIm5vbmVcIiBkPVwiTTAgMGgyNHYyNEgwelwiLz5cclxuICAgICAgICAgICAgICAgIDwvc3ZnPjtcclxuICAgIH1cclxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/icons/delete.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Delete; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass Delete extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n const size = this.props.size || \"24px\";\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"svg\", {\n className: this.props.className || \"\",\n fill: \"#FFFFFF\",\n viewBox: \"0 0 24 24\",\n style: {\n width: size,\n height: size\n },\n onClick: this.props.onClick\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n fill: \"none\",\n d: \"M0 0h24v24H0V0z\"\n }), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zm2.46-7.12l1.41-1.41L12 12.59l2.12-2.12 1.41 1.41L13.41 14l2.12 2.12-1.41 1.41L12 15.41l-2.12 2.12-1.41-1.41L10.59 14l-2.13-2.12zM15.5 4l-1-1h-5l-1 1H5v2h14V4z\"\n }), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n fill: \"none\",\n d: \"M0 0h24v24H0z\"\n }));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvaWNvbnMvZGVsZXRlLmpzeD81YjBiIl0sIm5hbWVzIjpbIkRlbGV0ZSIsIlJlYWN0IiwiQ29tcG9uZW50IiwicmVuZGVyIiwic2l6ZSIsInByb3BzIiwiY2xhc3NOYW1lIiwid2lkdGgiLCJoZWlnaHQiLCJvbkNsaWNrIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVlLE1BQU1BLE1BQU4sU0FBcUJDLDZDQUFLLENBQUNDLFNBQTNCLENBQXFDO0FBQ2hEQyxRQUFNLEdBQUc7QUFDTCxVQUFNQyxJQUFJLEdBQUcsS0FBS0MsS0FBTCxDQUFXRCxJQUFYLElBQW1CLE1BQWhDO0FBQ0Esd0JBQU87QUFBSyxlQUFTLEVBQUUsS0FBS0MsS0FBTCxDQUFXQyxTQUFYLElBQXdCLEVBQXhDO0FBQTRDLFVBQUksRUFBQyxTQUFqRDtBQUEyRCxhQUFPLEVBQUMsV0FBbkU7QUFBK0UsV0FBSyxFQUFFO0FBQUNDLGFBQUssRUFBRUgsSUFBUjtBQUFjSSxjQUFNLEVBQUVKO0FBQXRCLE9BQXRGO0FBQW1ILGFBQU8sRUFBRSxLQUFLQyxLQUFMLENBQVdJO0FBQXZJLG9CQUNLO0FBQU0sVUFBSSxFQUFDLE1BQVg7QUFBa0IsT0FBQyxFQUFDO0FBQXBCLE1BREwsZUFDNEM7QUFBTSxPQUFDLEVBQUM7QUFBUixNQUQ1QyxlQUVLO0FBQU0sVUFBSSxFQUFDLE1BQVg7QUFBa0IsT0FBQyxFQUFDO0FBQXBCLE1BRkwsQ0FBUDtBQUlIOztBQVArQyIsImZpbGUiOiIuL3NyYy91aS9pY29ucy9kZWxldGUuanN4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtSZWFjdH0gZnJvbSBcIm1vZHVsZXNcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERlbGV0ZSBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XHJcbiAgICByZW5kZXIoKSB7XHJcbiAgICAgICAgY29uc3Qgc2l6ZSA9IHRoaXMucHJvcHMuc2l6ZSB8fCBcIjI0cHhcIjtcclxuICAgICAgICByZXR1cm4gPHN2ZyBjbGFzc05hbWU9e3RoaXMucHJvcHMuY2xhc3NOYW1lIHx8IFwiXCJ9IGZpbGw9XCIjRkZGRkZGXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIHN0eWxlPXt7d2lkdGg6IHNpemUsIGhlaWdodDogc2l6ZX19IG9uQ2xpY2s9e3RoaXMucHJvcHMub25DbGlja30+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbD1cIm5vbmVcIiBkPVwiTTAgMGgyNHYyNEgwVjB6XCIvPjxwYXRoIGQ9XCJNNiAxOWMwIDEuMS45IDIgMiAyaDhjMS4xIDAgMi0uOSAyLTJWN0g2djEyem0yLjQ2LTcuMTJsMS40MS0xLjQxTDEyIDEyLjU5bDIuMTItMi4xMiAxLjQxIDEuNDFMMTMuNDEgMTRsMi4xMiAyLjEyLTEuNDEgMS40MUwxMiAxNS40MWwtMi4xMiAyLjEyLTEuNDEtMS40MUwxMC41OSAxNGwtMi4xMy0yLjEyek0xNS41IDRsLTEtMWgtNWwtMSAxSDV2MmgxNFY0elwiLz5cclxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsPVwibm9uZVwiIGQ9XCJNMCAwaDI0djI0SDB6XCIvPlxyXG4gICAgICAgICAgICAgICAgPC9zdmc+O1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/icons/delete.jsx\n"); /***/ }), @@ -863,7 +862,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Detach; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass Detach extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n const size = this.props.size || \"24px\";\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"svg\", {\n viewBox: \"0 0 24 24\",\n style: {\n width: size,\n height: size\n }\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M0 0h24v24H0z\",\n fill: \"none\"\n }), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M19 19H5V5h7V3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2v-7h-2v7zM14 3v2h3.59l-9.83 9.83 1.41 1.41L19 6.41V10h2V3h-7z\"\n }));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL2ljb25zL2RldGFjaC5qc3g/M2NlYSJdLCJuYW1lcyI6WyJEZXRhY2giLCJSZWFjdCIsIkNvbXBvbmVudCIsInJlbmRlciIsInNpemUiLCJwcm9wcyIsIndpZHRoIiwiaGVpZ2h0Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVlLE1BQU1BLE1BQU4sU0FBcUJDLDZDQUFLLENBQUNDLFNBQTNCLENBQXFDO0FBQ2hEQyxRQUFNLEdBQUc7QUFDTCxVQUFNQyxJQUFJLEdBQUcsS0FBS0MsS0FBTCxDQUFXRCxJQUFYLElBQW1CLE1BQWhDO0FBQ0Esd0JBQU87QUFBSyxhQUFPLEVBQUMsV0FBYjtBQUF5QixXQUFLLEVBQUU7QUFBQ0UsYUFBSyxFQUFFRixJQUFSO0FBQWNHLGNBQU0sRUFBRUg7QUFBdEI7QUFBaEMsb0JBQ0M7QUFBTSxPQUFDLEVBQUMsZUFBUjtBQUF3QixVQUFJLEVBQUM7QUFBN0IsTUFERCxlQUVDO0FBQU0sT0FBQyxFQUFDO0FBQVIsTUFGRCxDQUFQO0FBSUg7O0FBUCtDIiwiZmlsZSI6Ii4vc3JjL3VpL2ljb25zL2RldGFjaC5qc3guanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlYWN0fSBmcm9tIFwibW9kdWxlc1wiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGV0YWNoIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICBjb25zdCBzaXplID0gdGhpcy5wcm9wcy5zaXplIHx8IFwiMjRweFwiO1xyXG4gICAgICAgIHJldHVybiA8c3ZnIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBzdHlsZT17e3dpZHRoOiBzaXplLCBoZWlnaHQ6IHNpemV9fT5cclxuICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMCAwaDI0djI0SDB6XCIgZmlsbD1cIm5vbmVcIiAvPlxyXG4gICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xOSAxOUg1VjVoN1YzSDVjLTEuMTEgMC0yIC45LTIgMnYxNGMwIDEuMS44OSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMnYtN2gtMnY3ek0xNCAzdjJoMy41OWwtOS44MyA5LjgzIDEuNDEgMS40MUwxOSA2LjQxVjEwaDJWM2gtN3pcIiAvPlxyXG4gICAgICAgICAgICAgICA8L3N2Zz47XHJcbiAgICB9XHJcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/ui/icons/detach.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Detach; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass Detach extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n const size = this.props.size || \"24px\";\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"svg\", {\n viewBox: \"0 0 24 24\",\n style: {\n width: size,\n height: size\n }\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M0 0h24v24H0z\",\n fill: \"none\"\n }), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M19 19H5V5h7V3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2v-7h-2v7zM14 3v2h3.59l-9.83 9.83 1.41 1.41L19 6.41V10h2V3h-7z\"\n }));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvaWNvbnMvZGV0YWNoLmpzeD8zY2VhIl0sIm5hbWVzIjpbIkRldGFjaCIsIlJlYWN0IiwiQ29tcG9uZW50IiwicmVuZGVyIiwic2l6ZSIsInByb3BzIiwid2lkdGgiLCJoZWlnaHQiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRWUsTUFBTUEsTUFBTixTQUFxQkMsNkNBQUssQ0FBQ0MsU0FBM0IsQ0FBcUM7QUFDaERDLFFBQU0sR0FBRztBQUNMLFVBQU1DLElBQUksR0FBRyxLQUFLQyxLQUFMLENBQVdELElBQVgsSUFBbUIsTUFBaEM7QUFDQSx3QkFBTztBQUFLLGFBQU8sRUFBQyxXQUFiO0FBQXlCLFdBQUssRUFBRTtBQUFDRSxhQUFLLEVBQUVGLElBQVI7QUFBY0csY0FBTSxFQUFFSDtBQUF0QjtBQUFoQyxvQkFDQztBQUFNLE9BQUMsRUFBQyxlQUFSO0FBQXdCLFVBQUksRUFBQztBQUE3QixNQURELGVBRUM7QUFBTSxPQUFDLEVBQUM7QUFBUixNQUZELENBQVA7QUFJSDs7QUFQK0MiLCJmaWxlIjoiLi9zcmMvdWkvaWNvbnMvZGV0YWNoLmpzeC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhY3R9IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEZXRhY2ggZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIGNvbnN0IHNpemUgPSB0aGlzLnByb3BzLnNpemUgfHwgXCIyNHB4XCI7XHJcbiAgICAgICAgcmV0dXJuIDxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiIHN0eWxlPXt7d2lkdGg6IHNpemUsIGhlaWdodDogc2l6ZX19PlxyXG4gICAgICAgICAgICAgICAgPHBhdGggZD1cIk0wIDBoMjR2MjRIMHpcIiBmaWxsPVwibm9uZVwiIC8+XHJcbiAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE5IDE5SDVWNWg3VjNINWMtMS4xMSAwLTIgLjktMiAydjE0YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0ydi03aC0ydjd6TTE0IDN2MmgzLjU5bC05LjgzIDkuODMgMS40MSAxLjQxTDE5IDYuNDFWMTBoMlYzaC03elwiIC8+XHJcbiAgICAgICAgICAgICAgIDwvc3ZnPjtcclxuICAgIH1cclxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/icons/detach.jsx\n"); /***/ }), @@ -875,7 +874,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return DownArrow; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass DownArrow extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n const size = this.props.size || \"16px\";\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"svg\", {\n className: this.props.className || \"\",\n fill: \"#FFFFFF\",\n viewBox: \"0 0 24 24\",\n style: {\n width: size,\n height: size\n }\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M8.12 9.29L12 13.17l3.88-3.88c.39-.39 1.02-.39 1.41 0 .39.39.39 1.02 0 1.41l-4.59 4.59c-.39.39-1.02.39-1.41 0L6.7 10.7c-.39-.39-.39-1.02 0-1.41.39-.38 1.03-.39 1.42 0z\"\n }));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL2ljb25zL2Rvd25hcnJvdy5qc3g/MjFmNSJdLCJuYW1lcyI6WyJEb3duQXJyb3ciLCJSZWFjdCIsIkNvbXBvbmVudCIsInJlbmRlciIsInNpemUiLCJwcm9wcyIsImNsYXNzTmFtZSIsIndpZHRoIiwiaGVpZ2h0Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVlLE1BQU1BLFNBQU4sU0FBd0JDLDZDQUFLLENBQUNDLFNBQTlCLENBQXdDO0FBQ25EQyxRQUFNLEdBQUc7QUFDTCxVQUFNQyxJQUFJLEdBQUcsS0FBS0MsS0FBTCxDQUFXRCxJQUFYLElBQW1CLE1BQWhDO0FBQ0Esd0JBQU87QUFBSyxlQUFTLEVBQUUsS0FBS0MsS0FBTCxDQUFXQyxTQUFYLElBQXdCLEVBQXhDO0FBQTRDLFVBQUksRUFBQyxTQUFqRDtBQUEyRCxhQUFPLEVBQUMsV0FBbkU7QUFBK0UsV0FBSyxFQUFFO0FBQUNDLGFBQUssRUFBRUgsSUFBUjtBQUFjSSxjQUFNLEVBQUVKO0FBQXRCO0FBQXRGLG9CQUNLO0FBQU0sT0FBQyxFQUFDO0FBQVIsTUFETCxDQUFQO0FBR0g7O0FBTmtEIiwiZmlsZSI6Ii4vc3JjL3VpL2ljb25zL2Rvd25hcnJvdy5qc3guanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlYWN0fSBmcm9tIFwibW9kdWxlc1wiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRG93bkFycm93IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICBjb25zdCBzaXplID0gdGhpcy5wcm9wcy5zaXplIHx8IFwiMTZweFwiO1xyXG4gICAgICAgIHJldHVybiA8c3ZnIGNsYXNzTmFtZT17dGhpcy5wcm9wcy5jbGFzc05hbWUgfHwgXCJcIn0gZmlsbD1cIiNGRkZGRkZcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgc3R5bGU9e3t3aWR0aDogc2l6ZSwgaGVpZ2h0OiBzaXplfX0+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk04LjEyIDkuMjlMMTIgMTMuMTdsMy44OC0zLjg4Yy4zOS0uMzkgMS4wMi0uMzkgMS40MSAwIC4zOS4zOS4zOSAxLjAyIDAgMS40MWwtNC41OSA0LjU5Yy0uMzkuMzktMS4wMi4zOS0xLjQxIDBMNi43IDEwLjdjLS4zOS0uMzktLjM5LTEuMDIgMC0xLjQxLjM5LS4zOCAxLjAzLS4zOSAxLjQyIDB6XCIvPlxyXG4gICAgICAgICAgICAgICAgPC9zdmc+O1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/icons/downarrow.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return DownArrow; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass DownArrow extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n const size = this.props.size || \"16px\";\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"svg\", {\n className: this.props.className || \"\",\n fill: \"#FFFFFF\",\n viewBox: \"0 0 24 24\",\n style: {\n width: size,\n height: size\n }\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M8.12 9.29L12 13.17l3.88-3.88c.39-.39 1.02-.39 1.41 0 .39.39.39 1.02 0 1.41l-4.59 4.59c-.39.39-1.02.39-1.41 0L6.7 10.7c-.39-.39-.39-1.02 0-1.41.39-.38 1.03-.39 1.42 0z\"\n }));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvaWNvbnMvZG93bmFycm93LmpzeD8yMWY1Il0sIm5hbWVzIjpbIkRvd25BcnJvdyIsIlJlYWN0IiwiQ29tcG9uZW50IiwicmVuZGVyIiwic2l6ZSIsInByb3BzIiwiY2xhc3NOYW1lIiwid2lkdGgiLCJoZWlnaHQiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRWUsTUFBTUEsU0FBTixTQUF3QkMsNkNBQUssQ0FBQ0MsU0FBOUIsQ0FBd0M7QUFDbkRDLFFBQU0sR0FBRztBQUNMLFVBQU1DLElBQUksR0FBRyxLQUFLQyxLQUFMLENBQVdELElBQVgsSUFBbUIsTUFBaEM7QUFDQSx3QkFBTztBQUFLLGVBQVMsRUFBRSxLQUFLQyxLQUFMLENBQVdDLFNBQVgsSUFBd0IsRUFBeEM7QUFBNEMsVUFBSSxFQUFDLFNBQWpEO0FBQTJELGFBQU8sRUFBQyxXQUFuRTtBQUErRSxXQUFLLEVBQUU7QUFBQ0MsYUFBSyxFQUFFSCxJQUFSO0FBQWNJLGNBQU0sRUFBRUo7QUFBdEI7QUFBdEYsb0JBQ0s7QUFBTSxPQUFDLEVBQUM7QUFBUixNQURMLENBQVA7QUFHSDs7QUFOa0QiLCJmaWxlIjoiLi9zcmMvdWkvaWNvbnMvZG93bmFycm93LmpzeC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhY3R9IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEb3duQXJyb3cgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIGNvbnN0IHNpemUgPSB0aGlzLnByb3BzLnNpemUgfHwgXCIxNnB4XCI7XHJcbiAgICAgICAgcmV0dXJuIDxzdmcgY2xhc3NOYW1lPXt0aGlzLnByb3BzLmNsYXNzTmFtZSB8fCBcIlwifSBmaWxsPVwiI0ZGRkZGRlwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBzdHlsZT17e3dpZHRoOiBzaXplLCBoZWlnaHQ6IHNpemV9fT5cclxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTguMTIgOS4yOUwxMiAxMy4xN2wzLjg4LTMuODhjLjM5LS4zOSAxLjAyLS4zOSAxLjQxIDAgLjM5LjM5LjM5IDEuMDIgMCAxLjQxbC00LjU5IDQuNTljLS4zOS4zOS0xLjAyLjM5LTEuNDEgMEw2LjcgMTAuN2MtLjM5LS4zOS0uMzktMS4wMiAwLTEuNDEuMzktLjM4IDEuMDMtLjM5IDEuNDIgMHpcIi8+XHJcbiAgICAgICAgICAgICAgICA8L3N2Zz47XHJcbiAgICB9XHJcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/ui/icons/downarrow.jsx\n"); /***/ }), @@ -887,7 +886,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Edit; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass Edit extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n const size = this.props.size || \"24px\";\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"svg\", {\n viewBox: \"0 0 24 24\",\n fill: \"#FFFFFF\",\n style: {\n width: size,\n height: size\n },\n onClick: this.props.onClick\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34c-.39-.39-1.02-.39-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z\"\n }), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M0 0h24v24H0z\",\n fill: \"none\"\n }));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL2ljb25zL2VkaXQuanN4PzQ2ZTMiXSwibmFtZXMiOlsiRWRpdCIsIlJlYWN0IiwiQ29tcG9uZW50IiwicmVuZGVyIiwic2l6ZSIsInByb3BzIiwid2lkdGgiLCJoZWlnaHQiLCJvbkNsaWNrIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVlLE1BQU1BLElBQU4sU0FBbUJDLDZDQUFLLENBQUNDLFNBQXpCLENBQW1DO0FBQzlDQyxRQUFNLEdBQUc7QUFDTCxVQUFNQyxJQUFJLEdBQUcsS0FBS0MsS0FBTCxDQUFXRCxJQUFYLElBQW1CLE1BQWhDO0FBQ0Esd0JBQU87QUFBSyxhQUFPLEVBQUMsV0FBYjtBQUF5QixVQUFJLEVBQUMsU0FBOUI7QUFBd0MsV0FBSyxFQUFFO0FBQUNFLGFBQUssRUFBRUYsSUFBUjtBQUFjRyxjQUFNLEVBQUVIO0FBQXRCLE9BQS9DO0FBQTRFLGFBQU8sRUFBRSxLQUFLQyxLQUFMLENBQVdHO0FBQWhHLG9CQUNDO0FBQU0sT0FBQyxFQUFDO0FBQVIsTUFERCxlQUVDO0FBQU0sT0FBQyxFQUFDLGVBQVI7QUFBd0IsVUFBSSxFQUFDO0FBQTdCLE1BRkQsQ0FBUDtBQUlIOztBQVA2QyIsImZpbGUiOiIuL3NyYy91aS9pY29ucy9lZGl0LmpzeC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhY3R9IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFZGl0IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICBjb25zdCBzaXplID0gdGhpcy5wcm9wcy5zaXplIHx8IFwiMjRweFwiO1xyXG4gICAgICAgIHJldHVybiA8c3ZnIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwiI0ZGRkZGRlwiIHN0eWxlPXt7d2lkdGg6IHNpemUsIGhlaWdodDogc2l6ZX19IG9uQ2xpY2s9e3RoaXMucHJvcHMub25DbGlja30+XHJcbiAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTMgMTcuMjVWMjFoMy43NUwxNy44MSA5Ljk0bC0zLjc1LTMuNzVMMyAxNy4yNXpNMjAuNzEgNy4wNGMuMzktLjM5LjM5LTEuMDIgMC0xLjQxbC0yLjM0LTIuMzRjLS4zOS0uMzktMS4wMi0uMzktMS40MSAwbC0xLjgzIDEuODMgMy43NSAzLjc1IDEuODMtMS44M3pcIiAvPlxyXG4gICAgICAgICAgICAgICAgPHBhdGggZD1cIk0wIDBoMjR2MjRIMHpcIiBmaWxsPVwibm9uZVwiIC8+XHJcbiAgICAgICAgICAgICAgIDwvc3ZnPjtcclxuICAgIH1cclxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/icons/edit.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Edit; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass Edit extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n const size = this.props.size || \"24px\";\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"svg\", {\n viewBox: \"0 0 24 24\",\n fill: \"#FFFFFF\",\n style: {\n width: size,\n height: size\n },\n onClick: this.props.onClick\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34c-.39-.39-1.02-.39-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z\"\n }), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M0 0h24v24H0z\",\n fill: \"none\"\n }));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvaWNvbnMvZWRpdC5qc3g/NDZlMyJdLCJuYW1lcyI6WyJFZGl0IiwiUmVhY3QiLCJDb21wb25lbnQiLCJyZW5kZXIiLCJzaXplIiwicHJvcHMiLCJ3aWR0aCIsImhlaWdodCIsIm9uQ2xpY2siXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRWUsTUFBTUEsSUFBTixTQUFtQkMsNkNBQUssQ0FBQ0MsU0FBekIsQ0FBbUM7QUFDOUNDLFFBQU0sR0FBRztBQUNMLFVBQU1DLElBQUksR0FBRyxLQUFLQyxLQUFMLENBQVdELElBQVgsSUFBbUIsTUFBaEM7QUFDQSx3QkFBTztBQUFLLGFBQU8sRUFBQyxXQUFiO0FBQXlCLFVBQUksRUFBQyxTQUE5QjtBQUF3QyxXQUFLLEVBQUU7QUFBQ0UsYUFBSyxFQUFFRixJQUFSO0FBQWNHLGNBQU0sRUFBRUg7QUFBdEIsT0FBL0M7QUFBNEUsYUFBTyxFQUFFLEtBQUtDLEtBQUwsQ0FBV0c7QUFBaEcsb0JBQ0M7QUFBTSxPQUFDLEVBQUM7QUFBUixNQURELGVBRUM7QUFBTSxPQUFDLEVBQUMsZUFBUjtBQUF3QixVQUFJLEVBQUM7QUFBN0IsTUFGRCxDQUFQO0FBSUg7O0FBUDZDIiwiZmlsZSI6Ii4vc3JjL3VpL2ljb25zL2VkaXQuanN4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtSZWFjdH0gZnJvbSBcIm1vZHVsZXNcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVkaXQgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIGNvbnN0IHNpemUgPSB0aGlzLnByb3BzLnNpemUgfHwgXCIyNHB4XCI7XHJcbiAgICAgICAgcmV0dXJuIDxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCIjRkZGRkZGXCIgc3R5bGU9e3t3aWR0aDogc2l6ZSwgaGVpZ2h0OiBzaXplfX0gb25DbGljaz17dGhpcy5wcm9wcy5vbkNsaWNrfT5cclxuICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMyAxNy4yNVYyMWgzLjc1TDE3LjgxIDkuOTRsLTMuNzUtMy43NUwzIDE3LjI1ek0yMC43MSA3LjA0Yy4zOS0uMzkuMzktMS4wMiAwLTEuNDFsLTIuMzQtMi4zNGMtLjM5LS4zOS0xLjAyLS4zOS0xLjQxIDBsLTEuODMgMS44MyAzLjc1IDMuNzUgMS44My0xLjgzelwiIC8+XHJcbiAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTAgMGgyNHYyNEgwelwiIGZpbGw9XCJub25lXCIgLz5cclxuICAgICAgICAgICAgICAgPC9zdmc+O1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/icons/edit.jsx\n"); /***/ }), @@ -899,7 +898,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return FullScreen; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass FullScreen extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n const size = this.props.size || \"24px\";\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"svg\", {\n className: this.props.className || \"\",\n fill: \"#FFFFFF\",\n viewBox: \"0 0 24 24\",\n style: {\n width: size,\n height: size\n },\n onClick: this.props.onClick\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n fill: \"none\",\n d: \"M0 0h24v24H0V0z\"\n }), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h-3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z\"\n }));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL2ljb25zL2Z1bGxzY3JlZW4uanN4P2Y1MzEiXSwibmFtZXMiOlsiRnVsbFNjcmVlbiIsIlJlYWN0IiwiQ29tcG9uZW50IiwicmVuZGVyIiwic2l6ZSIsInByb3BzIiwiY2xhc3NOYW1lIiwid2lkdGgiLCJoZWlnaHQiLCJvbkNsaWNrIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVlLE1BQU1BLFVBQU4sU0FBeUJDLDZDQUFLLENBQUNDLFNBQS9CLENBQXlDO0FBQ3BEQyxRQUFNLEdBQUc7QUFDTCxVQUFNQyxJQUFJLEdBQUcsS0FBS0MsS0FBTCxDQUFXRCxJQUFYLElBQW1CLE1BQWhDO0FBQ0Esd0JBQU87QUFBSyxlQUFTLEVBQUUsS0FBS0MsS0FBTCxDQUFXQyxTQUFYLElBQXdCLEVBQXhDO0FBQTRDLFVBQUksRUFBQyxTQUFqRDtBQUEyRCxhQUFPLEVBQUMsV0FBbkU7QUFBK0UsV0FBSyxFQUFFO0FBQUNDLGFBQUssRUFBRUgsSUFBUjtBQUFjSSxjQUFNLEVBQUVKO0FBQXRCLE9BQXRGO0FBQW1ILGFBQU8sRUFBRSxLQUFLQyxLQUFMLENBQVdJO0FBQXZJLG9CQUNLO0FBQU0sVUFBSSxFQUFDLE1BQVg7QUFBa0IsT0FBQyxFQUFDO0FBQXBCLE1BREwsZUFFSztBQUFNLE9BQUMsRUFBQztBQUFSLE1BRkwsQ0FBUDtBQUlIOztBQVBtRCIsImZpbGUiOiIuL3NyYy91aS9pY29ucy9mdWxsc2NyZWVuLmpzeC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhY3R9IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBGdWxsU2NyZWVuIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICBjb25zdCBzaXplID0gdGhpcy5wcm9wcy5zaXplIHx8IFwiMjRweFwiO1xyXG4gICAgICAgIHJldHVybiA8c3ZnIGNsYXNzTmFtZT17dGhpcy5wcm9wcy5jbGFzc05hbWUgfHwgXCJcIn0gZmlsbD1cIiNGRkZGRkZcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgc3R5bGU9e3t3aWR0aDogc2l6ZSwgaGVpZ2h0OiBzaXplfX0gb25DbGljaz17dGhpcy5wcm9wcy5vbkNsaWNrfT5cclxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsPVwibm9uZVwiIGQ9XCJNMCAwaDI0djI0SDBWMHpcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk03IDE0SDV2NWg1di0ySDd2LTN6bS0yLTRoMlY3aDNWNUg1djV6bTEyIDdoLTN2Mmg1di01aC0ydjN6TTE0IDV2MmgzdjNoMlY1aC01elwiLz5cclxuICAgICAgICAgICAgICAgIDwvc3ZnPjtcclxuICAgIH1cclxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/icons/fullscreen.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return FullScreen; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass FullScreen extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n const size = this.props.size || \"24px\";\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"svg\", {\n className: this.props.className || \"\",\n fill: \"#FFFFFF\",\n viewBox: \"0 0 24 24\",\n style: {\n width: size,\n height: size\n },\n onClick: this.props.onClick\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n fill: \"none\",\n d: \"M0 0h24v24H0V0z\"\n }), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h-3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z\"\n }));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvaWNvbnMvZnVsbHNjcmVlbi5qc3g/ZjUzMSJdLCJuYW1lcyI6WyJGdWxsU2NyZWVuIiwiUmVhY3QiLCJDb21wb25lbnQiLCJyZW5kZXIiLCJzaXplIiwicHJvcHMiLCJjbGFzc05hbWUiLCJ3aWR0aCIsImhlaWdodCIsIm9uQ2xpY2siXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRWUsTUFBTUEsVUFBTixTQUF5QkMsNkNBQUssQ0FBQ0MsU0FBL0IsQ0FBeUM7QUFDcERDLFFBQU0sR0FBRztBQUNMLFVBQU1DLElBQUksR0FBRyxLQUFLQyxLQUFMLENBQVdELElBQVgsSUFBbUIsTUFBaEM7QUFDQSx3QkFBTztBQUFLLGVBQVMsRUFBRSxLQUFLQyxLQUFMLENBQVdDLFNBQVgsSUFBd0IsRUFBeEM7QUFBNEMsVUFBSSxFQUFDLFNBQWpEO0FBQTJELGFBQU8sRUFBQyxXQUFuRTtBQUErRSxXQUFLLEVBQUU7QUFBQ0MsYUFBSyxFQUFFSCxJQUFSO0FBQWNJLGNBQU0sRUFBRUo7QUFBdEIsT0FBdEY7QUFBbUgsYUFBTyxFQUFFLEtBQUtDLEtBQUwsQ0FBV0k7QUFBdkksb0JBQ0s7QUFBTSxVQUFJLEVBQUMsTUFBWDtBQUFrQixPQUFDLEVBQUM7QUFBcEIsTUFETCxlQUVLO0FBQU0sT0FBQyxFQUFDO0FBQVIsTUFGTCxDQUFQO0FBSUg7O0FBUG1EIiwiZmlsZSI6Ii4vc3JjL3VpL2ljb25zL2Z1bGxzY3JlZW4uanN4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtSZWFjdH0gZnJvbSBcIm1vZHVsZXNcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZ1bGxTY3JlZW4gZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIGNvbnN0IHNpemUgPSB0aGlzLnByb3BzLnNpemUgfHwgXCIyNHB4XCI7XHJcbiAgICAgICAgcmV0dXJuIDxzdmcgY2xhc3NOYW1lPXt0aGlzLnByb3BzLmNsYXNzTmFtZSB8fCBcIlwifSBmaWxsPVwiI0ZGRkZGRlwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBzdHlsZT17e3dpZHRoOiBzaXplLCBoZWlnaHQ6IHNpemV9fSBvbkNsaWNrPXt0aGlzLnByb3BzLm9uQ2xpY2t9PlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGw9XCJub25lXCIgZD1cIk0wIDBoMjR2MjRIMFYwelwiLz5cclxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTcgMTRINXY1aDV2LTJIN3YtM3ptLTItNGgyVjdoM1Y1SDV2NXptMTIgN2gtM3YyaDV2LTVoLTJ2M3pNMTQgNXYyaDN2M2gyVjVoLTV6XCIvPlxyXG4gICAgICAgICAgICAgICAgPC9zdmc+O1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/icons/fullscreen.jsx\n"); /***/ }), @@ -911,7 +910,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return History; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass History extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n const size = this.props.size || \"18px\";\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"svg\", {\n viewBox: \"0 0 24 24\",\n fill: \"#FFFFFF\",\n className: this.props.className || \"\",\n style: {\n width: size,\n height: size\n },\n onClick: this.props.onClick\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M0 0h24v24H0z\",\n fill: \"none\"\n }), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M13 3c-4.97 0-9 4.03-9 9H1l3.89 3.89.07.14L9 12H6c0-3.87 3.13-7 7-7s7 3.13 7 7-3.13 7-7 7c-1.93 0-3.68-.79-4.94-2.06l-1.42 1.42C8.27 19.99 10.51 21 13 21c4.97 0 9-4.03 9-9s-4.03-9-9-9zm-1 5v5l4.28 2.54.72-1.21-3.5-2.08V8H12z\"\n }));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL2ljb25zL2hpc3RvcnkuanN4PzY2YmMiXSwibmFtZXMiOlsiSGlzdG9yeSIsIlJlYWN0IiwiQ29tcG9uZW50IiwicmVuZGVyIiwic2l6ZSIsInByb3BzIiwiY2xhc3NOYW1lIiwid2lkdGgiLCJoZWlnaHQiLCJvbkNsaWNrIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVlLE1BQU1BLE9BQU4sU0FBc0JDLDZDQUFLLENBQUNDLFNBQTVCLENBQXNDO0FBQ2pEQyxRQUFNLEdBQUc7QUFDTCxVQUFNQyxJQUFJLEdBQUcsS0FBS0MsS0FBTCxDQUFXRCxJQUFYLElBQW1CLE1BQWhDO0FBQ0Esd0JBQU87QUFBSyxhQUFPLEVBQUMsV0FBYjtBQUF5QixVQUFJLEVBQUMsU0FBOUI7QUFBd0MsZUFBUyxFQUFFLEtBQUtDLEtBQUwsQ0FBV0MsU0FBWCxJQUF3QixFQUEzRTtBQUErRSxXQUFLLEVBQUU7QUFBQ0MsYUFBSyxFQUFFSCxJQUFSO0FBQWNJLGNBQU0sRUFBRUo7QUFBdEIsT0FBdEY7QUFBbUgsYUFBTyxFQUFFLEtBQUtDLEtBQUwsQ0FBV0k7QUFBdkksb0JBQ0M7QUFBTSxPQUFDLEVBQUMsZUFBUjtBQUF3QixVQUFJLEVBQUM7QUFBN0IsTUFERCxlQUVDO0FBQU0sT0FBQyxFQUFDO0FBQVIsTUFGRCxDQUFQO0FBSUg7O0FBUGdEIiwiZmlsZSI6Ii4vc3JjL3VpL2ljb25zL2hpc3RvcnkuanN4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtSZWFjdH0gZnJvbSBcIm1vZHVsZXNcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEhpc3RvcnkgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIGNvbnN0IHNpemUgPSB0aGlzLnByb3BzLnNpemUgfHwgXCIxOHB4XCI7XHJcbiAgICAgICAgcmV0dXJuIDxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCIjRkZGRkZGXCIgY2xhc3NOYW1lPXt0aGlzLnByb3BzLmNsYXNzTmFtZSB8fCBcIlwifSBzdHlsZT17e3dpZHRoOiBzaXplLCBoZWlnaHQ6IHNpemV9fSBvbkNsaWNrPXt0aGlzLnByb3BzLm9uQ2xpY2t9PlxyXG4gICAgICAgICAgICAgICAgPHBhdGggZD1cIk0wIDBoMjR2MjRIMHpcIiBmaWxsPVwibm9uZVwiLz5cclxuICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTMgM2MtNC45NyAwLTkgNC4wMy05IDlIMWwzLjg5IDMuODkuMDcuMTRMOSAxMkg2YzAtMy44NyAzLjEzLTcgNy03czcgMy4xMyA3IDctMy4xMyA3LTcgN2MtMS45MyAwLTMuNjgtLjc5LTQuOTQtMi4wNmwtMS40MiAxLjQyQzguMjcgMTkuOTkgMTAuNTEgMjEgMTMgMjFjNC45NyAwIDktNC4wMyA5LTlzLTQuMDMtOS05LTl6bS0xIDV2NWw0LjI4IDIuNTQuNzItMS4yMS0zLjUtMi4wOFY4SDEyelwiLz5cclxuICAgICAgICAgICAgICAgPC9zdmc+O1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/icons/history.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return History; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass History extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n const size = this.props.size || \"18px\";\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"svg\", {\n viewBox: \"0 0 24 24\",\n fill: \"#FFFFFF\",\n className: this.props.className || \"\",\n style: {\n width: size,\n height: size\n },\n onClick: this.props.onClick\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M0 0h24v24H0z\",\n fill: \"none\"\n }), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M13 3c-4.97 0-9 4.03-9 9H1l3.89 3.89.07.14L9 12H6c0-3.87 3.13-7 7-7s7 3.13 7 7-3.13 7-7 7c-1.93 0-3.68-.79-4.94-2.06l-1.42 1.42C8.27 19.99 10.51 21 13 21c4.97 0 9-4.03 9-9s-4.03-9-9-9zm-1 5v5l4.28 2.54.72-1.21-3.5-2.08V8H12z\"\n }));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvaWNvbnMvaGlzdG9yeS5qc3g/NjZiYyJdLCJuYW1lcyI6WyJIaXN0b3J5IiwiUmVhY3QiLCJDb21wb25lbnQiLCJyZW5kZXIiLCJzaXplIiwicHJvcHMiLCJjbGFzc05hbWUiLCJ3aWR0aCIsImhlaWdodCIsIm9uQ2xpY2siXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRWUsTUFBTUEsT0FBTixTQUFzQkMsNkNBQUssQ0FBQ0MsU0FBNUIsQ0FBc0M7QUFDakRDLFFBQU0sR0FBRztBQUNMLFVBQU1DLElBQUksR0FBRyxLQUFLQyxLQUFMLENBQVdELElBQVgsSUFBbUIsTUFBaEM7QUFDQSx3QkFBTztBQUFLLGFBQU8sRUFBQyxXQUFiO0FBQXlCLFVBQUksRUFBQyxTQUE5QjtBQUF3QyxlQUFTLEVBQUUsS0FBS0MsS0FBTCxDQUFXQyxTQUFYLElBQXdCLEVBQTNFO0FBQStFLFdBQUssRUFBRTtBQUFDQyxhQUFLLEVBQUVILElBQVI7QUFBY0ksY0FBTSxFQUFFSjtBQUF0QixPQUF0RjtBQUFtSCxhQUFPLEVBQUUsS0FBS0MsS0FBTCxDQUFXSTtBQUF2SSxvQkFDQztBQUFNLE9BQUMsRUFBQyxlQUFSO0FBQXdCLFVBQUksRUFBQztBQUE3QixNQURELGVBRUM7QUFBTSxPQUFDLEVBQUM7QUFBUixNQUZELENBQVA7QUFJSDs7QUFQZ0QiLCJmaWxlIjoiLi9zcmMvdWkvaWNvbnMvaGlzdG9yeS5qc3guanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlYWN0fSBmcm9tIFwibW9kdWxlc1wiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSGlzdG9yeSBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XHJcbiAgICByZW5kZXIoKSB7XHJcbiAgICAgICAgY29uc3Qgc2l6ZSA9IHRoaXMucHJvcHMuc2l6ZSB8fCBcIjE4cHhcIjtcclxuICAgICAgICByZXR1cm4gPHN2ZyB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIiNGRkZGRkZcIiBjbGFzc05hbWU9e3RoaXMucHJvcHMuY2xhc3NOYW1lIHx8IFwiXCJ9IHN0eWxlPXt7d2lkdGg6IHNpemUsIGhlaWdodDogc2l6ZX19IG9uQ2xpY2s9e3RoaXMucHJvcHMub25DbGlja30+XHJcbiAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTAgMGgyNHYyNEgwelwiIGZpbGw9XCJub25lXCIvPlxyXG4gICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMyAzYy00Ljk3IDAtOSA0LjAzLTkgOUgxbDMuODkgMy44OS4wNy4xNEw5IDEySDZjMC0zLjg3IDMuMTMtNyA3LTdzNyAzLjEzIDcgNy0zLjEzIDctNyA3Yy0xLjkzIDAtMy42OC0uNzktNC45NC0yLjA2bC0xLjQyIDEuNDJDOC4yNyAxOS45OSAxMC41MSAyMSAxMyAyMWM0Ljk3IDAgOS00LjAzIDktOXMtNC4wMy05LTktOXptLTEgNXY1bDQuMjggMi41NC43Mi0xLjIxLTMuNS0yLjA4VjhIMTJ6XCIvPlxyXG4gICAgICAgICAgICAgICA8L3N2Zz47XHJcbiAgICB9XHJcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/ui/icons/history.jsx\n"); /***/ }), @@ -923,7 +922,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return ReloadIcon; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass ReloadIcon extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n const size = this.props.size || \"24px\";\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"svg\", {\n className: this.props.className || \"\",\n onClick: this.props.onClick,\n fill: \"#dcddde\",\n viewBox: \"0 0 24 24\",\n style: {\n width: size,\n height: size\n }\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M17.65 6.35C16.2 4.9 14.21 4 12 4c-4.42 0-7.99 3.58-7.99 8s3.57 8 7.99 8c3.73 0 6.84-2.55 7.73-6h-2.08c-.82 2.33-3.04 4-5.65 4-3.31 0-6-2.69-6-6s2.69-6 6-6c1.66 0 3.14.69 4.22 1.78L13 11h7V4l-2.35 2.35z\"\n }), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n fill: \"none\",\n d: \"M0 0h24v24H0z\"\n }));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL2ljb25zL3JlbG9hZC5qc3g/MzhiMiJdLCJuYW1lcyI6WyJSZWxvYWRJY29uIiwiUmVhY3QiLCJDb21wb25lbnQiLCJyZW5kZXIiLCJzaXplIiwicHJvcHMiLCJjbGFzc05hbWUiLCJvbkNsaWNrIiwid2lkdGgiLCJoZWlnaHQiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRWUsTUFBTUEsVUFBTixTQUF5QkMsNkNBQUssQ0FBQ0MsU0FBL0IsQ0FBeUM7QUFDcERDLFFBQU0sR0FBRztBQUNMLFVBQU1DLElBQUksR0FBRyxLQUFLQyxLQUFMLENBQVdELElBQVgsSUFBbUIsTUFBaEM7QUFDQSx3QkFBTztBQUFLLGVBQVMsRUFBRSxLQUFLQyxLQUFMLENBQVdDLFNBQVgsSUFBd0IsRUFBeEM7QUFBNEMsYUFBTyxFQUFFLEtBQUtELEtBQUwsQ0FBV0UsT0FBaEU7QUFBeUUsVUFBSSxFQUFDLFNBQTlFO0FBQXdGLGFBQU8sRUFBQyxXQUFoRztBQUE0RyxXQUFLLEVBQUU7QUFBQ0MsYUFBSyxFQUFFSixJQUFSO0FBQWNLLGNBQU0sRUFBRUw7QUFBdEI7QUFBbkgsb0JBQ0g7QUFBTSxPQUFDLEVBQUM7QUFBUixNQURHLGVBRUg7QUFBTSxVQUFJLEVBQUMsTUFBWDtBQUFrQixPQUFDLEVBQUM7QUFBcEIsTUFGRyxDQUFQO0FBSUg7O0FBUG1EIiwiZmlsZSI6Ii4vc3JjL3VpL2ljb25zL3JlbG9hZC5qc3guanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlYWN0fSBmcm9tIFwibW9kdWxlc1wiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmVsb2FkSWNvbiBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XHJcbiAgICByZW5kZXIoKSB7XHJcbiAgICAgICAgY29uc3Qgc2l6ZSA9IHRoaXMucHJvcHMuc2l6ZSB8fCBcIjI0cHhcIjtcclxuICAgICAgICByZXR1cm4gPHN2ZyBjbGFzc05hbWU9e3RoaXMucHJvcHMuY2xhc3NOYW1lIHx8IFwiXCJ9IG9uQ2xpY2s9e3RoaXMucHJvcHMub25DbGlja30gZmlsbD1cIiNkY2RkZGVcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgc3R5bGU9e3t3aWR0aDogc2l6ZSwgaGVpZ2h0OiBzaXplfX0+XHJcbiAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTcuNjUgNi4zNUMxNi4yIDQuOSAxNC4yMSA0IDEyIDRjLTQuNDIgMC03Ljk5IDMuNTgtNy45OSA4czMuNTcgOCA3Ljk5IDhjMy43MyAwIDYuODQtMi41NSA3LjczLTZoLTIuMDhjLS44MiAyLjMzLTMuMDQgNC01LjY1IDQtMy4zMSAwLTYtMi42OS02LTZzMi42OS02IDYtNmMxLjY2IDAgMy4xNC42OSA0LjIyIDEuNzhMMTMgMTFoN1Y0bC0yLjM1IDIuMzV6XCIgLz5cclxuICAgICAgICAgICAgPHBhdGggZmlsbD1cIm5vbmVcIiBkPVwiTTAgMGgyNHYyNEgwelwiIC8+XHJcbiAgICAgICAgPC9zdmc+O1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/icons/reload.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return ReloadIcon; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass ReloadIcon extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n const size = this.props.size || \"24px\";\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"svg\", {\n className: this.props.className || \"\",\n onClick: this.props.onClick,\n fill: \"#dcddde\",\n viewBox: \"0 0 24 24\",\n style: {\n width: size,\n height: size\n }\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M17.65 6.35C16.2 4.9 14.21 4 12 4c-4.42 0-7.99 3.58-7.99 8s3.57 8 7.99 8c3.73 0 6.84-2.55 7.73-6h-2.08c-.82 2.33-3.04 4-5.65 4-3.31 0-6-2.69-6-6s2.69-6 6-6c1.66 0 3.14.69 4.22 1.78L13 11h7V4l-2.35 2.35z\"\n }), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n fill: \"none\",\n d: \"M0 0h24v24H0z\"\n }));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvaWNvbnMvcmVsb2FkLmpzeD8zOGIyIl0sIm5hbWVzIjpbIlJlbG9hZEljb24iLCJSZWFjdCIsIkNvbXBvbmVudCIsInJlbmRlciIsInNpemUiLCJwcm9wcyIsImNsYXNzTmFtZSIsIm9uQ2xpY2siLCJ3aWR0aCIsImhlaWdodCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFFZSxNQUFNQSxVQUFOLFNBQXlCQyw2Q0FBSyxDQUFDQyxTQUEvQixDQUF5QztBQUNwREMsUUFBTSxHQUFHO0FBQ0wsVUFBTUMsSUFBSSxHQUFHLEtBQUtDLEtBQUwsQ0FBV0QsSUFBWCxJQUFtQixNQUFoQztBQUNBLHdCQUFPO0FBQUssZUFBUyxFQUFFLEtBQUtDLEtBQUwsQ0FBV0MsU0FBWCxJQUF3QixFQUF4QztBQUE0QyxhQUFPLEVBQUUsS0FBS0QsS0FBTCxDQUFXRSxPQUFoRTtBQUF5RSxVQUFJLEVBQUMsU0FBOUU7QUFBd0YsYUFBTyxFQUFDLFdBQWhHO0FBQTRHLFdBQUssRUFBRTtBQUFDQyxhQUFLLEVBQUVKLElBQVI7QUFBY0ssY0FBTSxFQUFFTDtBQUF0QjtBQUFuSCxvQkFDSDtBQUFNLE9BQUMsRUFBQztBQUFSLE1BREcsZUFFSDtBQUFNLFVBQUksRUFBQyxNQUFYO0FBQWtCLE9BQUMsRUFBQztBQUFwQixNQUZHLENBQVA7QUFJSDs7QUFQbUQiLCJmaWxlIjoiLi9zcmMvdWkvaWNvbnMvcmVsb2FkLmpzeC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhY3R9IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSZWxvYWRJY29uIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICBjb25zdCBzaXplID0gdGhpcy5wcm9wcy5zaXplIHx8IFwiMjRweFwiO1xyXG4gICAgICAgIHJldHVybiA8c3ZnIGNsYXNzTmFtZT17dGhpcy5wcm9wcy5jbGFzc05hbWUgfHwgXCJcIn0gb25DbGljaz17dGhpcy5wcm9wcy5vbkNsaWNrfSBmaWxsPVwiI2RjZGRkZVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBzdHlsZT17e3dpZHRoOiBzaXplLCBoZWlnaHQ6IHNpemV9fT5cclxuICAgICAgICAgICAgPHBhdGggZD1cIk0xNy42NSA2LjM1QzE2LjIgNC45IDE0LjIxIDQgMTIgNGMtNC40MiAwLTcuOTkgMy41OC03Ljk5IDhzMy41NyA4IDcuOTkgOGMzLjczIDAgNi44NC0yLjU1IDcuNzMtNmgtMi4wOGMtLjgyIDIuMzMtMy4wNCA0LTUuNjUgNC0zLjMxIDAtNi0yLjY5LTYtNnMyLjY5LTYgNi02YzEuNjYgMCAzLjE0LjY5IDQuMjIgMS43OEwxMyAxMWg3VjRsLTIuMzUgMi4zNXpcIiAvPlxyXG4gICAgICAgICAgICA8cGF0aCBmaWxsPVwibm9uZVwiIGQ9XCJNMCAwaDI0djI0SDB6XCIgLz5cclxuICAgICAgICA8L3N2Zz47XHJcbiAgICB9XHJcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/ui/icons/reload.jsx\n"); /***/ }), @@ -935,7 +934,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Save; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass Save extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n const size = this.props.size || \"24px\";\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"svg\", {\n viewBox: \"0 0 24 24\",\n style: {\n width: size,\n height: size\n }\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n fill: \"none\",\n d: \"M0 0h24v24H0V0z\"\n }), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M17 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V7l-4-4zm2 16H5V5h11.17L19 7.83V19zm-7-7c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3zM6 6h9v4H6z\"\n }));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL2ljb25zL3NhdmUuanN4PzU4MGYiXSwibmFtZXMiOlsiU2F2ZSIsIlJlYWN0IiwiQ29tcG9uZW50IiwicmVuZGVyIiwic2l6ZSIsInByb3BzIiwid2lkdGgiLCJoZWlnaHQiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRWUsTUFBTUEsSUFBTixTQUFtQkMsNkNBQUssQ0FBQ0MsU0FBekIsQ0FBbUM7QUFDOUNDLFFBQU0sR0FBRztBQUNMLFVBQU1DLElBQUksR0FBRyxLQUFLQyxLQUFMLENBQVdELElBQVgsSUFBbUIsTUFBaEM7QUFDQSx3QkFBTztBQUFLLGFBQU8sRUFBQyxXQUFiO0FBQXlCLFdBQUssRUFBRTtBQUFDRSxhQUFLLEVBQUVGLElBQVI7QUFBY0csY0FBTSxFQUFFSDtBQUF0QjtBQUFoQyxvQkFDQztBQUFNLFVBQUksRUFBQyxNQUFYO0FBQWtCLE9BQUMsRUFBQztBQUFwQixNQURELGVBRUM7QUFBTSxPQUFDLEVBQUM7QUFBUixNQUZELENBQVA7QUFJSDs7QUFQNkMiLCJmaWxlIjoiLi9zcmMvdWkvaWNvbnMvc2F2ZS5qc3guanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlYWN0fSBmcm9tIFwibW9kdWxlc1wiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2F2ZSBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XHJcbiAgICByZW5kZXIoKSB7XHJcbiAgICAgICAgY29uc3Qgc2l6ZSA9IHRoaXMucHJvcHMuc2l6ZSB8fCBcIjI0cHhcIjtcclxuICAgICAgICByZXR1cm4gPHN2ZyB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgc3R5bGU9e3t3aWR0aDogc2l6ZSwgaGVpZ2h0OiBzaXplfX0+XHJcbiAgICAgICAgICAgICAgICA8cGF0aCBmaWxsPVwibm9uZVwiIGQ9XCJNMCAwaDI0djI0SDBWMHpcIiAvPlxyXG4gICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNyAzSDVjLTEuMTEgMC0yIC45LTIgMnYxNGMwIDEuMS44OSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY3bC00LTR6bTIgMTZINVY1aDExLjE3TDE5IDcuODNWMTl6bS03LTdjLTEuNjYgMC0zIDEuMzQtMyAzczEuMzQgMyAzIDMgMy0xLjM0IDMtMy0xLjM0LTMtMy0zek02IDZoOXY0SDZ6XCIgLz5cclxuICAgICAgICAgICAgICAgPC9zdmc+O1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/icons/save.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Save; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass Save extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n const size = this.props.size || \"24px\";\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"svg\", {\n viewBox: \"0 0 24 24\",\n style: {\n width: size,\n height: size\n }\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n fill: \"none\",\n d: \"M0 0h24v24H0V0z\"\n }), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M17 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V7l-4-4zm2 16H5V5h11.17L19 7.83V19zm-7-7c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3zM6 6h9v4H6z\"\n }));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvaWNvbnMvc2F2ZS5qc3g/NTgwZiJdLCJuYW1lcyI6WyJTYXZlIiwiUmVhY3QiLCJDb21wb25lbnQiLCJyZW5kZXIiLCJzaXplIiwicHJvcHMiLCJ3aWR0aCIsImhlaWdodCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFFZSxNQUFNQSxJQUFOLFNBQW1CQyw2Q0FBSyxDQUFDQyxTQUF6QixDQUFtQztBQUM5Q0MsUUFBTSxHQUFHO0FBQ0wsVUFBTUMsSUFBSSxHQUFHLEtBQUtDLEtBQUwsQ0FBV0QsSUFBWCxJQUFtQixNQUFoQztBQUNBLHdCQUFPO0FBQUssYUFBTyxFQUFDLFdBQWI7QUFBeUIsV0FBSyxFQUFFO0FBQUNFLGFBQUssRUFBRUYsSUFBUjtBQUFjRyxjQUFNLEVBQUVIO0FBQXRCO0FBQWhDLG9CQUNDO0FBQU0sVUFBSSxFQUFDLE1BQVg7QUFBa0IsT0FBQyxFQUFDO0FBQXBCLE1BREQsZUFFQztBQUFNLE9BQUMsRUFBQztBQUFSLE1BRkQsQ0FBUDtBQUlIOztBQVA2QyIsImZpbGUiOiIuL3NyYy91aS9pY29ucy9zYXZlLmpzeC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhY3R9IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTYXZlIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICBjb25zdCBzaXplID0gdGhpcy5wcm9wcy5zaXplIHx8IFwiMjRweFwiO1xyXG4gICAgICAgIHJldHVybiA8c3ZnIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBzdHlsZT17e3dpZHRoOiBzaXplLCBoZWlnaHQ6IHNpemV9fT5cclxuICAgICAgICAgICAgICAgIDxwYXRoIGZpbGw9XCJub25lXCIgZD1cIk0wIDBoMjR2MjRIMFYwelwiIC8+XHJcbiAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE3IDNINWMtMS4xMSAwLTIgLjktMiAydjE0YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjdsLTQtNHptMiAxNkg1VjVoMTEuMTdMMTkgNy44M1YxOXptLTctN2MtMS42NiAwLTMgMS4zNC0zIDNzMS4zNCAzIDMgMyAzLTEuMzQgMy0zLTEuMzQtMy0zLTN6TTYgNmg5djRINnpcIiAvPlxyXG4gICAgICAgICAgICAgICA8L3N2Zz47XHJcbiAgICB9XHJcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/ui/icons/save.jsx\n"); /***/ }), @@ -947,7 +946,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Search; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass Search extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n const size = this.props.size || \"16px\";\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"svg\", {\n className: this.props.className || \"\",\n fill: \"#FFFFFF\",\n viewBox: \"0 0 24 24\",\n style: {\n width: size,\n height: size\n }\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n fill: \"none\",\n d: \"M0 0h24v24H0V0z\"\n }), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z\"\n }));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL2ljb25zL3NlYXJjaC5qc3g/ODA5ZiJdLCJuYW1lcyI6WyJTZWFyY2giLCJSZWFjdCIsIkNvbXBvbmVudCIsInJlbmRlciIsInNpemUiLCJwcm9wcyIsImNsYXNzTmFtZSIsIndpZHRoIiwiaGVpZ2h0Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVlLE1BQU1BLE1BQU4sU0FBcUJDLDZDQUFLLENBQUNDLFNBQTNCLENBQXFDO0FBQ2hEQyxRQUFNLEdBQUc7QUFDTCxVQUFNQyxJQUFJLEdBQUcsS0FBS0MsS0FBTCxDQUFXRCxJQUFYLElBQW1CLE1BQWhDO0FBQ0Esd0JBQU87QUFBSyxlQUFTLEVBQUUsS0FBS0MsS0FBTCxDQUFXQyxTQUFYLElBQXdCLEVBQXhDO0FBQTRDLFVBQUksRUFBQyxTQUFqRDtBQUEyRCxhQUFPLEVBQUMsV0FBbkU7QUFBK0UsV0FBSyxFQUFFO0FBQUNDLGFBQUssRUFBRUgsSUFBUjtBQUFjSSxjQUFNLEVBQUVKO0FBQXRCO0FBQXRGLG9CQUNLO0FBQU0sVUFBSSxFQUFDLE1BQVg7QUFBa0IsT0FBQyxFQUFDO0FBQXBCLE1BREwsZUFFSztBQUFNLE9BQUMsRUFBQztBQUFSLE1BRkwsQ0FBUDtBQUlIOztBQVArQyIsImZpbGUiOiIuL3NyYy91aS9pY29ucy9zZWFyY2guanN4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtSZWFjdH0gZnJvbSBcIm1vZHVsZXNcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNlYXJjaCBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XHJcbiAgICByZW5kZXIoKSB7XHJcbiAgICAgICAgY29uc3Qgc2l6ZSA9IHRoaXMucHJvcHMuc2l6ZSB8fCBcIjE2cHhcIjtcclxuICAgICAgICByZXR1cm4gPHN2ZyBjbGFzc05hbWU9e3RoaXMucHJvcHMuY2xhc3NOYW1lIHx8IFwiXCJ9IGZpbGw9XCIjRkZGRkZGXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIHN0eWxlPXt7d2lkdGg6IHNpemUsIGhlaWdodDogc2l6ZX19PlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGw9XCJub25lXCIgZD1cIk0wIDBoMjR2MjRIMFYwelwiLz5cclxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE1LjUgMTRoLS43OWwtLjI4LS4yN0MxNS40MSAxMi41OSAxNiAxMS4xMSAxNiA5LjUgMTYgNS45MSAxMy4wOSAzIDkuNSAzUzMgNS45MSAzIDkuNSA1LjkxIDE2IDkuNSAxNmMxLjYxIDAgMy4wOS0uNTkgNC4yMy0xLjU3bC4yNy4yOHYuNzlsNSA0Ljk5TDIwLjQ5IDE5bC00Ljk5LTV6bS02IDBDNy4wMSAxNCA1IDExLjk5IDUgOS41UzcuMDEgNSA5LjUgNSAxNCA3LjAxIDE0IDkuNSAxMS45OSAxNCA5LjUgMTR6XCIvPlxyXG4gICAgICAgICAgICAgICAgPC9zdmc+O1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/icons/search.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Search; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass Search extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n const size = this.props.size || \"16px\";\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"svg\", {\n className: this.props.className || \"\",\n fill: \"#FFFFFF\",\n viewBox: \"0 0 24 24\",\n style: {\n width: size,\n height: size\n }\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n fill: \"none\",\n d: \"M0 0h24v24H0V0z\"\n }), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z\"\n }));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvaWNvbnMvc2VhcmNoLmpzeD84MDlmIl0sIm5hbWVzIjpbIlNlYXJjaCIsIlJlYWN0IiwiQ29tcG9uZW50IiwicmVuZGVyIiwic2l6ZSIsInByb3BzIiwiY2xhc3NOYW1lIiwid2lkdGgiLCJoZWlnaHQiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRWUsTUFBTUEsTUFBTixTQUFxQkMsNkNBQUssQ0FBQ0MsU0FBM0IsQ0FBcUM7QUFDaERDLFFBQU0sR0FBRztBQUNMLFVBQU1DLElBQUksR0FBRyxLQUFLQyxLQUFMLENBQVdELElBQVgsSUFBbUIsTUFBaEM7QUFDQSx3QkFBTztBQUFLLGVBQVMsRUFBRSxLQUFLQyxLQUFMLENBQVdDLFNBQVgsSUFBd0IsRUFBeEM7QUFBNEMsVUFBSSxFQUFDLFNBQWpEO0FBQTJELGFBQU8sRUFBQyxXQUFuRTtBQUErRSxXQUFLLEVBQUU7QUFBQ0MsYUFBSyxFQUFFSCxJQUFSO0FBQWNJLGNBQU0sRUFBRUo7QUFBdEI7QUFBdEYsb0JBQ0s7QUFBTSxVQUFJLEVBQUMsTUFBWDtBQUFrQixPQUFDLEVBQUM7QUFBcEIsTUFETCxlQUVLO0FBQU0sT0FBQyxFQUFDO0FBQVIsTUFGTCxDQUFQO0FBSUg7O0FBUCtDIiwiZmlsZSI6Ii4vc3JjL3VpL2ljb25zL3NlYXJjaC5qc3guanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlYWN0fSBmcm9tIFwibW9kdWxlc1wiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2VhcmNoIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICBjb25zdCBzaXplID0gdGhpcy5wcm9wcy5zaXplIHx8IFwiMTZweFwiO1xyXG4gICAgICAgIHJldHVybiA8c3ZnIGNsYXNzTmFtZT17dGhpcy5wcm9wcy5jbGFzc05hbWUgfHwgXCJcIn0gZmlsbD1cIiNGRkZGRkZcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgc3R5bGU9e3t3aWR0aDogc2l6ZSwgaGVpZ2h0OiBzaXplfX0+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbD1cIm5vbmVcIiBkPVwiTTAgMGgyNHYyNEgwVjB6XCIvPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTUuNSAxNGgtLjc5bC0uMjgtLjI3QzE1LjQxIDEyLjU5IDE2IDExLjExIDE2IDkuNSAxNiA1LjkxIDEzLjA5IDMgOS41IDNTMyA1LjkxIDMgOS41IDUuOTEgMTYgOS41IDE2YzEuNjEgMCAzLjA5LS41OSA0LjIzLTEuNTdsLjI3LjI4di43OWw1IDQuOTlMMjAuNDkgMTlsLTQuOTktNXptLTYgMEM3LjAxIDE0IDUgMTEuOTkgNSA5LjVTNy4wMSA1IDkuNSA1IDE0IDcuMDEgMTQgOS41IDExLjk5IDE0IDkuNSAxNHpcIi8+XHJcbiAgICAgICAgICAgICAgICA8L3N2Zz47XHJcbiAgICB9XHJcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/ui/icons/search.jsx\n"); /***/ }), @@ -959,7 +958,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return AddonEditor; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _customcss_editor__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../customcss/editor */ \"./src/ui/customcss/editor.jsx\");\n/* harmony import */ var _icons_save__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../icons/save */ \"./src/ui/icons/save.jsx\");\n/* harmony import */ var _icons_edit__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../icons/edit */ \"./src/ui/icons/edit.jsx\");\n/* harmony import */ var _icons_cog__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../icons/cog */ \"./src/ui/icons/cog.jsx\");\n\n\n\n\n\nclass AddonEditor extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n this.hasUnsavedChanges = false;\n this.onChange = this.onChange.bind(this);\n this.save = this.save.bind(this);\n this.openNative = this.openNative.bind(this);\n this.update = this.update.bind(this);\n this.controls = [{\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_save__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n size: \"18px\"\n }),\n tooltip: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].CustomCSS.save,\n onClick: this.save\n }, {\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_edit__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n size: \"18px\"\n }),\n tooltip: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].CustomCSS.openNative,\n onClick: this.openNative\n }, {\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_cog__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n size: \"18px\"\n }),\n tooltip: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].CustomCSS.settings,\n onClick: \"showSettings\"\n }];\n }\n\n update() {\n this.forceUpdate();\n }\n\n updateEditor(newCSS) {\n if (!this.editor) return;\n this.editor.value = newCSS;\n }\n\n get value() {\n return this.editor.session.getValue();\n }\n\n set value(newValue) {\n this.editor.setValue(newValue);\n }\n\n showSettings() {\n return this.editor.keyBinding.$defaultHandler.commands.showSettingsMenu.exec(this.editor);\n }\n\n resize() {\n return this.editor.resize();\n }\n\n setEditorRef(editor) {\n this.editor = editor;\n if (this.props.editorRef && typeof this.props.editorRef.current !== \"undefined\") this.props.editorRef.current = editor;else if (this.props.editorRef) this.props.editorRef = editor;\n }\n\n render() {\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_customcss_editor__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n ref: this.setEditorRef.bind(this),\n language: this.props.language,\n id: this.props.id || \"bd-addon-editor\",\n controls: this.controls,\n value: this.props.content,\n onChange: this.onChange\n });\n }\n\n onChange() {\n this.hasUnsavedChanges = true;\n }\n\n save(event, content) {\n this.hasUnsavedChanges = false;\n if (this.props.save) this.props.save(content);\n }\n\n openNative() {\n if (this.props.openNative) this.props.openNative();\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL21pc2MvYWRkb25lZGl0b3IuanN4P2ViOWMiXSwibmFtZXMiOlsiQWRkb25FZGl0b3IiLCJSZWFjdCIsIkNvbXBvbmVudCIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJoYXNVbnNhdmVkQ2hhbmdlcyIsIm9uQ2hhbmdlIiwiYmluZCIsInNhdmUiLCJvcGVuTmF0aXZlIiwidXBkYXRlIiwiY29udHJvbHMiLCJsYWJlbCIsImNyZWF0ZUVsZW1lbnQiLCJTYXZlIiwic2l6ZSIsInRvb2x0aXAiLCJTdHJpbmdzIiwiQ3VzdG9tQ1NTIiwib25DbGljayIsIkVkaXQiLCJDb2ciLCJzZXR0aW5ncyIsImZvcmNlVXBkYXRlIiwidXBkYXRlRWRpdG9yIiwibmV3Q1NTIiwiZWRpdG9yIiwidmFsdWUiLCJzZXNzaW9uIiwiZ2V0VmFsdWUiLCJuZXdWYWx1ZSIsInNldFZhbHVlIiwic2hvd1NldHRpbmdzIiwia2V5QmluZGluZyIsIiRkZWZhdWx0SGFuZGxlciIsImNvbW1hbmRzIiwic2hvd1NldHRpbmdzTWVudSIsImV4ZWMiLCJyZXNpemUiLCJzZXRFZGl0b3JSZWYiLCJlZGl0b3JSZWYiLCJjdXJyZW50IiwicmVuZGVyIiwibGFuZ3VhZ2UiLCJpZCIsImNvbnRlbnQiLCJldmVudCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRWUsTUFBTUEsV0FBTixTQUEwQkMsNkNBQUssQ0FBQ0MsU0FBaEMsQ0FBMEM7QUFFckRDLGFBQVcsQ0FBQ0MsS0FBRCxFQUFRO0FBQ2YsVUFBTUEsS0FBTjtBQUVBLFNBQUtDLGlCQUFMLEdBQXlCLEtBQXpCO0FBQ0EsU0FBS0MsUUFBTCxHQUFnQixLQUFLQSxRQUFMLENBQWNDLElBQWQsQ0FBbUIsSUFBbkIsQ0FBaEI7QUFDQSxTQUFLQyxJQUFMLEdBQVksS0FBS0EsSUFBTCxDQUFVRCxJQUFWLENBQWUsSUFB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TCxHQUF5QixJQUF6QjtBQUNIOztBQUVERyxNQUFJLENBQUNzQyxLQUFELEVBQVFELE9BQVIsRUFBaUI7QUFDakIsU0FBS3hDLGlCQUFMLEdBQXlCLEtBQXpCO0FBQ0EsUUFBSSxLQUFLRCxLQUFMLENBQVdJLElBQWYsRUFBcUIsS0FBS0osS0FBTCxDQUFXSSxJQUFYLENBQWdCcUMsT0FBaEI7QUFDeEI7O0FBRURwQyxZQUFVLEdBQUc7QUFDVCxRQUFJLEtBQUtMLEtBQUwsQ0FBV0ssVUFBZixFQUEyQixLQUFLTCxLQUFMLENBQVdLLFVBQVg7QUFDOUI7O0FBeERvRCIsImZpbGUiOiIuL3NyYy91aS9taXNjL2FkZG9uZWRpdG9yLmpzeC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhY3QsIFN0cmluZ3N9IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5pbXBvcnQgRWRpdG9yIGZyb20gXCIuLi9jdXN0b21jc3MvZWRpdG9yXCI7XHJcbmltcG9ydCBTYXZlIGZyb20gXCIuLi9pY29ucy9zYXZlXCI7XHJcbmltcG9ydCBFZGl0IGZyb20gXCIuLi9pY29ucy9lZGl0XCI7XHJcbmltcG9ydCBDb2cgZnJvbSBcIi4uL2ljb25zL2NvZ1wiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQWRkb25FZGl0b3IgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByb3BzKSB7XHJcbiAgICAgICAgc3VwZXIocHJvcHMpO1xyXG5cclxuICAgICAgICB0aGlzLmhhc1Vuc2F2ZWRDaGFuZ2VzID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IHRoaXMub25DaGFuZ2UuYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLnNhdmUgPSB0aGlzLnNhdmUuYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLm9wZW5OYXRpdmUgPSB0aGlzLm9wZW5OYXRpdmUuYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZSA9IHRoaXMudXBkYXRlLmJpbmQodGhpcyk7XHJcblxyXG4gICAgICAgIHRoaXMuY29udHJvbHMgPSBbXHJcbiAgICAgICAgICAgIHtsYWJlbDogUmVhY3QuY3JlYXRlRWxlbWVudChTYXZlLCB7c2l6ZTogXCIxOHB4XCJ9KSwgdG9vbHRpcDogU3RyaW5ncy5DdXN0b21DU1Muc2F2ZSwgb25DbGljazogdGhpcy5zYXZlfSxcclxuICAgICAgICAgICAge2xhYmVsOiBSZWFjdC5jcmVhdGVFbGVtZW50KEVkaXQsIHtzaXplOiBcIjE4cHhcIn0pLCB0b29sdGlwOiBTdHJpbmdzLkN1c3RvbUNTUy5vcGVuTmF0aXZlLCBvbkNsaWNrOiB0aGlzLm9wZW5OYXRpdmV9LFxyXG4gICAgICAgICAgICB7bGFiZWw6IFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ29nLCB7c2l6ZTogXCIxOHB4XCJ9KSwgdG9vbHRpcDogU3RyaW5ncy5DdXN0b21DU1Muc2V0dGluZ3MsIG9uQ2xpY2s6IFwic2hvd1NldHRpbmdzXCJ9XHJcbiAgICAgICAgXTtcclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGUoKSB7XHJcbiAgICAgICAgdGhpcy5mb3JjZVVwZGF0ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZUVkaXRvcihuZXdDU1MpIHtcclxuICAgICAgICBpZiAoIXRoaXMuZWRpdG9yKSByZXR1cm47XHJcbiAgICAgICAgdGhpcy5lZGl0b3IudmFsdWUgPSBuZXdDU1M7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHZhbHVlKCkge3JldHVybiB0aGlzLmVkaXRvci5zZXNzaW9uLmdldFZhbHVlKCk7fVxyXG4gICAgc2V0IHZhbHVlKG5ld1ZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5lZGl0b3Iuc2V0VmFsdWUobmV3VmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHNob3dTZXR0aW5ncygpIHtyZXR1cm4gdGhpcy5lZGl0b3Iua2V5QmluZGluZy4kZGVmYXVsdEhhbmRsZXIuY29tbWFuZHMuc2hvd1NldHRpbmdzTWVudS5leGVjKHRoaXMuZWRpdG9yKTt9XHJcbiAgICByZXNpemUoKSB7cmV0dXJuIHRoaXMuZWRpdG9yLnJlc2l6ZSgpO31cclxuXHJcbiAgICBzZXRFZGl0b3JSZWYoZWRpdG9yKSB7XHJcbiAgICAgICAgdGhpcy5lZGl0b3IgPSBlZGl0b3I7XHJcbiAgICAgICAgaWYgKHRoaXMucHJvcHMuZWRpdG9yUmVmICYmIHR5cGVvZih0aGlzLnByb3BzLmVkaXRvclJlZi5jdXJyZW50KSAhPT0gXCJ1bmRlZmluZWRcIikgdGhpcy5wcm9wcy5lZGl0b3JSZWYuY3VycmVudCA9IGVkaXRvcjtcclxuICAgICAgICBlbHNlIGlmICh0aGlzLnByb3BzLmVkaXRvclJlZikgdGhpcy5wcm9wcy5lZGl0b3JSZWYgPSBlZGl0b3I7XHJcbiAgICB9XHJcblxyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIHJldHVybiA8RWRpdG9yIHJlZj17dGhpcy5zZXRFZGl0b3JSZWYuYmluZCh0aGlzKX0gbGFuZ3VhZ2U9e3RoaXMucHJvcHMubGFuZ3VhZ2V9IGlkPXt0aGlzLnByb3BzLmlkIHx8IFwiYmQtYWRkb24tZWRpdG9yXCJ9IGNvbnRyb2xzPXt0aGlzLmNvbnRyb2xzfSB2YWx1ZT17dGhpcy5wcm9wcy5jb250ZW50fSBvbkNoYW5nZT17dGhpcy5vbkNoYW5nZX0gLz47XHJcbiAgICB9XHJcblxyXG4gICAgb25DaGFuZ2UoKSB7XHJcbiAgICAgICAgdGhpcy5oYXNVbnNhdmVkQ2hhbmdlcyA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgc2F2ZShldmVudCwgY29udGVudCkge1xyXG4gICAgICAgIHRoaXMuaGFzVW5zYXZlZENoYW5nZXMgPSBmYWxzZTtcclxuICAgICAgICBpZiAodGhpcy5wcm9wcy5zYXZlKSB0aGlzLnByb3BzLnNhdmUoY29udGVudCk7XHJcbiAgICB9XHJcblxyXG4gICAgb3Blbk5hdGl2ZSgpIHtcclxuICAgICAgICBpZiAodGhpcy5wcm9wcy5vcGVuTmF0aXZlKSB0aGlzLnByb3BzLm9wZW5OYXRpdmUoKTtcclxuICAgIH1cclxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/misc/addoneditor.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return AddonEditor; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _customcss_editor__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../customcss/editor */ \"./src/ui/customcss/editor.jsx\");\n/* harmony import */ var _icons_save__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../icons/save */ \"./src/ui/icons/save.jsx\");\n/* harmony import */ var _icons_edit__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../icons/edit */ \"./src/ui/icons/edit.jsx\");\n/* harmony import */ var _icons_cog__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../icons/cog */ \"./src/ui/icons/cog.jsx\");\n\n\n\n\n\nclass AddonEditor extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n this.hasUnsavedChanges = false;\n this.onChange = this.onChange.bind(this);\n this.save = this.save.bind(this);\n this.openNative = this.openNative.bind(this);\n this.update = this.update.bind(this);\n this.controls = [{\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_save__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n size: \"18px\"\n }),\n tooltip: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].CustomCSS.save,\n onClick: this.save\n }, {\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_edit__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n size: \"18px\"\n }),\n tooltip: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].CustomCSS.openNative,\n onClick: this.openNative\n }, {\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_cog__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n size: \"18px\"\n }),\n tooltip: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].CustomCSS.settings,\n onClick: \"showSettings\"\n }];\n }\n\n update() {\n this.forceUpdate();\n }\n\n updateEditor(newCSS) {\n if (!this.editor) return;\n this.editor.value = newCSS;\n }\n\n get value() {\n return this.editor.session.getValue();\n }\n\n set value(newValue) {\n this.editor.setValue(newValue);\n }\n\n showSettings() {\n return this.editor.keyBinding.$defaultHandler.commands.showSettingsMenu.exec(this.editor);\n }\n\n resize() {\n return this.editor.resize();\n }\n\n setEditorRef(editor) {\n this.editor = editor;\n if (this.props.editorRef && typeof this.props.editorRef.current !== \"undefined\") this.props.editorRef.current = editor;else if (this.props.editorRef) this.props.editorRef = editor;\n }\n\n render() {\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_customcss_editor__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n ref: this.setEditorRef.bind(this),\n language: this.props.language,\n id: this.props.id || \"bd-addon-editor\",\n controls: this.controls,\n value: this.props.content,\n onChange: this.onChange\n });\n }\n\n onChange() {\n this.hasUnsavedChanges = true;\n }\n\n save(event, content) {\n this.hasUnsavedChanges = false;\n if (this.props.save) this.props.save(content);\n }\n\n openNative() {\n if (this.props.openNative) this.props.openNative();\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvbWlzYy9hZGRvbmVkaXRvci5qc3g/ZWI5YyJdLCJuYW1lcyI6WyJBZGRvbkVkaXRvciIsIlJlYWN0IiwiQ29tcG9uZW50IiwiY29uc3RydWN0b3IiLCJwcm9wcyIsImhhc1Vuc2F2ZWRDaGFuZ2VzIiwib25DaGFuZ2UiLCJiaW5kIiwic2F2ZSIsIm9wZW5OYXRpdmUiLCJ1cGRhdGUiLCJjb250cm9scyIsImxhYmVsIiwiY3JlYXRlRWxlbWVudCIsIlNhdmUiLCJzaXplIiwidG9vbHRpcCIsIlN0cmluZ3MiLCJDdXN0b21DU1MiLCJvbkNsaWNrIiwiRWRpdCIsIkNvZyIsInNldHRpbmdzIiwiZm9yY2VVcGRhdGUiLCJ1cGRhdGVFZGl0b3IiLCJuZXdDU1MiLCJlZGl0b3IiLCJ2YWx1ZSIsInNlc3Npb24iLCJnZXRWYWx1ZSIsIm5ld1ZhbHVlIiwic2V0VmFsdWUiLCJzaG93U2V0dGluZ3MiLCJrZXlCaW5kaW5nIiwiJGRlZmF1bHRIYW5kbGVyIiwiY29tbWFuZHMiLCJzaG93U2V0dGluZ3NNZW51IiwiZXhlYyIsInJlc2l6ZSIsInNldEVkaXRvclJlZiIsImVkaXRvclJlZiIsImN1cnJlbnQiLCJyZW5kZXIiLCJsYW5ndWFnZSIsImlkIiwiY29udGVudCIsImV2ZW50Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFZSxNQUFNQSxXQUFOLFNBQTBCQyw2Q0FBSyxDQUFDQyxTQUFoQyxDQUEwQztBQUVyREMsYUFBVyxDQUFDQyxLQUFELEVBQVE7QUFDZixVQUFNQSxLQUFOO0FBRUEsU0FBS0MsaUJBQUwsR0FBeUIsS0FBekI7QUFDQSxTQUFLQyxRQUFMLEdBQWdCLEtBQUtBLFFBQUwsQ0FBY0MsSUFBZCxDQUFtQixJQUFuQixDQUFoQjtBQUNBLFNBQUtDLElBQUwsR0FBWSxLQUFLQSxJQUFMLENBQVVELElBQVYsQ0FBZSxJQUFmLENBQVo7QUFDQSxTQUFLRSxVQUFMLEdBQWtCLEtBQUtBLFVBQUwsQ0FBZ0JGLElBQWhCLENBQXFCLElBQXJCLENBQWxCO0FBQ0EsU0FBS0csTUFBTCxHQUFjLEtBQUtBLE1BQUwsQ0FBWUgsSUFBWixDQUFpQixJQUFqQixDQUFkO0FBRUEsU0FBS0ksUUFBTCxHQUFnQixDQUNaO0FBQUNDLFdBQUssRUFBRVgsNkNBQUssQ0FBQ1ksYUFBTixDQUFvQkMsbURBQXBCLEVBQTBCO0FBQUNDLFlBQUksRUFBRTtBQUFQLE9BQTFCLENBQVI7QUFBbURDLGFBQU8sRUFBRUMsK0NBQU8sQ0FBQ0MsU0FBUixDQUFrQlYsSUFBOUU7QUFBb0ZXLGFBQU8sRUFBRSxLQUFLWDtBQUFsRyxLQURZLEVBRVo7QUFBQ0ksV0FBSyxFQUFFWCw2Q0FBSyxDQUFDWSxhQUFOLENBQW9CTyxtREFBcEIsRUFBMEI7QUFBQ0wsWUFBSSxFQUFFO0FBQVAsT0FBMUIsQ0FBUjtBQUFtREMsYUFBTyxFQUFFQywrQ0FBTyxDQUFDQyxTQUFSLENBQWtCVCxVQUE5RTtBQUEwRlUsYUFBTyxFQUFFLEtBQUtWO0FBQXhHLEtBRlksRUFHWjtBQUFDRyxXQUFLLEVBQUVYLDZDQUFLLENBQUNZLGFBQU4sQ0FBb0JRLGtEQUFwQixFQUF5QjtBQUFDTixZQUFJLEVBQUU7QUFBUCxPQUF6QixDQUFSO0FBQWtEQyxhQUFPLEVBQUVDLCtDQUFPLENBQUNDLFNBQVIsQ0FBa0JJLFFBQTdFO0FBQXVGSCxhQUFPLEVBQUU7QUFBaEcsS0FIWSxDQUFoQjtBQUtIOztBQUVEVCxRQUFNLEdBQUc7QUFDTCxTQUFLYSxXQUFMO0FBQ0g7O0FBRURDLGNBQVksQ0FBQ0MsTUFBRCxFQUFTO0FBQ2pCLFFBQUksQ0FBQyxLQUFLQyxNQUFWLEVBQWtCO0FBQ2xCLFNBQUtBLE1BQUwsQ0FBWUMsS0FBWixHQUFvQkYsTUFBcEI7QUFDSDs7QUFFRCxNQUFJRSxLQUFKLEdBQVk7QUFBQyxXQUFPLEtBQUtELE1BQUwsQ0FBWUUsT0FBWixDQUFvQkMsUUFBcEIsRUFBUDtBQUF1Qzs7QUFDcEQsTUFBSUYsS0FBSixDQUFVRyxRQUFWLEVBQW9CO0FBQ2hCLFNBQUtKLE1BQUwsQ0FBWUssUUFBWixDQUFxQkQsUUFBckI7QUFDSDs7QUFFREUsY0FBWSxHQUFHO0FBQUMsV0FBTyxLQUFLTixNQUFMLENBQVlPLFVBQVosQ0FBdUJDLGVBQXZCLENBQXVDQyxRQUF2QyxDQUFnREMsZ0JBQWhELENBQWlFQyxJQUFqRSxDQUFzRSxLQUFLWCxNQUEzRSxDQUFQO0FBQTJGOztBQUMzR1ksUUFBTSxHQUFHO0FBQUMsV0FBTyxLQUFLWixNQUFMLENBQVlZLE1BQVosRUFBUDtBQUE2Qjs7QUFFdkNDLGNBQVksQ0FBQ2IsTUFBRCxFQUFTO0FBQ2pCLFNBQUtBLE1BQUwsR0FBY0EsTUFBZDtBQUNBLFFBQUksS0FBS3RCLEtBQUwsQ0FBV29DLFNBQVgsSUFBd0IsT0FBTyxLQUFLcEMsS0FBTCxDQUFXb0MsU0FBWCxDQUFxQkMsT0FBNUIsS0FBeUMsV0FBckUsRUFBa0YsS0FBS3JDLEtBQUwsQ0FBV29DLFNBQVgsQ0FBcUJDLE9BQXJCLEdBQStCZixNQUEvQixDQUFsRixLQUNLLElBQUksS0FBS3RCLEtBQUwsQ0FBV29DLFNBQWYsRUFBMEIsS0FBS3BDLEtBQUwsQ0FBV29DLFNBQVgsR0FBdUJkLE1BQXZCO0FBQ2xDOztBQUVEZ0IsUUFBTSxHQUFHO0FBQ0wsd0JBQU8sNERBQUMseURBQUQ7QUFBUSxTQUFHLEVBQUUsS0FBS0gsWUFBTCxDQUFrQmhDLElBQWxCLENBQXVCLElBQXZCLENBQWI7QUFBMkMsY0FBUSxFQUFFLEtBQUtILEtBQUwsQ0FBV3VDLFFBQWhFO0FBQTBFLFFBQUUsRUFBRSxLQUFLdkMsS0FBTCxDQUFXd0MsRUFBWCxJQUFpQixpQkFBL0Y7QUFBa0gsY0FBUSxFQUFFLEtBQUtqQyxRQUFqSTtBQUEySSxXQUFLLEVBQUUsS0FBS1AsS0FBTCxDQUFXeUMsT0FBN0o7QUFBc0ssY0FBUSxFQUFFLEtBQUt2QztBQUFyTCxNQUFQO0FBQ0g7O0FBRURBLFVBQVEsR0FBRztBQUNQLFNBQUtELGlCQUFMLEdBQXlCLElBQXpCO0FBQ0g7O0FBRURHLE1BQUksQ0FBQ3NDLEtBQUQsRUFBUUQsT0FBUixFQUFpQjtBQUNqQixTQUFLeEMsaUJBQUwsR0FBeUIsS0FBekI7QUFDQSxRQUFJLEtBQUtELEtBQUwsQ0FBV0ksSUFBZixFQUFxQixLQUFLSixLQUFMLENBQVdJLElBQVgsQ0FBZ0JxQyxPQUFoQjtBQUN4Qjs7QUFFRHBDLFlBQVUsR0FBRztBQUNULFFBQUksS0FBS0wsS0FBTCxDQUFXSyxVQUFmLEVBQTJCLEtBQUtMLEtBQUwsQ0FBV0ssVUFBWDtBQUM5Qjs7QUF4RG9EIiwiZmlsZSI6Ii4vc3JjL3VpL21pc2MvYWRkb25lZGl0b3IuanN4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtSZWFjdCwgU3RyaW5nc30gZnJvbSBcIm1vZHVsZXNcIjtcclxuXHJcbmltcG9ydCBFZGl0b3IgZnJvbSBcIi4uL2N1c3RvbWNzcy9lZGl0b3JcIjtcclxuaW1wb3J0IFNhdmUgZnJvbSBcIi4uL2ljb25zL3NhdmVcIjtcclxuaW1wb3J0IEVkaXQgZnJvbSBcIi4uL2ljb25zL2VkaXRcIjtcclxuaW1wb3J0IENvZyBmcm9tIFwiLi4vaWNvbnMvY29nXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBZGRvbkVkaXRvciBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcclxuICAgICAgICBzdXBlcihwcm9wcyk7XHJcblxyXG4gICAgICAgIHRoaXMuaGFzVW5zYXZlZENoYW5nZXMgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm9uQ2hhbmdlID0gdGhpcy5vbkNoYW5nZS5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMuc2F2ZSA9IHRoaXMuc2F2ZS5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMub3Blbk5hdGl2ZSA9IHRoaXMub3Blbk5hdGl2ZS5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlID0gdGhpcy51cGRhdGUuYmluZCh0aGlzKTtcclxuXHJcbiAgICAgICAgdGhpcy5jb250cm9scyA9IFtcclxuICAgICAgICAgICAge2xhYmVsOiBSZWFjdC5jcmVhdGVFbGVtZW50KFNhdmUsIHtzaXplOiBcIjE4cHhcIn0pLCB0b29sdGlwOiBTdHJpbmdzLkN1c3RvbUNTUy5zYXZlLCBvbkNsaWNrOiB0aGlzLnNhdmV9LFxyXG4gICAgICAgICAgICB7bGFiZWw6IFJlYWN0LmNyZWF0ZUVsZW1lbnQoRWRpdCwge3NpemU6IFwiMThweFwifSksIHRvb2x0aXA6IFN0cmluZ3MuQ3VzdG9tQ1NTLm9wZW5OYXRpdmUsIG9uQ2xpY2s6IHRoaXMub3Blbk5hdGl2ZX0sXHJcbiAgICAgICAgICAgIHtsYWJlbDogUmVhY3QuY3JlYXRlRWxlbWVudChDb2csIHtzaXplOiBcIjE4cHhcIn0pLCB0b29sdGlwOiBTdHJpbmdzLkN1c3RvbUNTUy5zZXR0aW5ncywgb25DbGljazogXCJzaG93U2V0dGluZ3NcIn1cclxuICAgICAgICBdO1xyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZSgpIHtcclxuICAgICAgICB0aGlzLmZvcmNlVXBkYXRlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlRWRpdG9yKG5ld0NTUykge1xyXG4gICAgICAgIGlmICghdGhpcy5lZGl0b3IpIHJldHVybjtcclxuICAgICAgICB0aGlzLmVkaXRvci52YWx1ZSA9IG5ld0NTUztcclxuICAgIH1cclxuXHJcbiAgICBnZXQgdmFsdWUoKSB7cmV0dXJuIHRoaXMuZWRpdG9yLnNlc3Npb24uZ2V0VmFsdWUoKTt9XHJcbiAgICBzZXQgdmFsdWUobmV3VmFsdWUpIHtcclxuICAgICAgICB0aGlzLmVkaXRvci5zZXRWYWx1ZShuZXdWYWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2hvd1NldHRpbmdzKCkge3JldHVybiB0aGlzLmVkaXRvci5rZXlCaW5kaW5nLiRkZWZhdWx0SGFuZGxlci5jb21tYW5kcy5zaG93U2V0dGluZ3NNZW51LmV4ZWModGhpcy5lZGl0b3IpO31cclxuICAgIHJlc2l6ZSgpIHtyZXR1cm4gdGhpcy5lZGl0b3IucmVzaXplKCk7fVxyXG5cclxuICAgIHNldEVkaXRvclJlZihlZGl0b3IpIHtcclxuICAgICAgICB0aGlzLmVkaXRvciA9IGVkaXRvcjtcclxuICAgICAgICBpZiAodGhpcy5wcm9wcy5lZGl0b3JSZWYgJiYgdHlwZW9mKHRoaXMucHJvcHMuZWRpdG9yUmVmLmN1cnJlbnQpICE9PSBcInVuZGVmaW5lZFwiKSB0aGlzLnByb3BzLmVkaXRvclJlZi5jdXJyZW50ID0gZWRpdG9yO1xyXG4gICAgICAgIGVsc2UgaWYgKHRoaXMucHJvcHMuZWRpdG9yUmVmKSB0aGlzLnByb3BzLmVkaXRvclJlZiA9IGVkaXRvcjtcclxuICAgIH1cclxuXHJcbiAgICByZW5kZXIoKSB7XHJcbiAgICAgICAgcmV0dXJuIDxFZGl0b3IgcmVmPXt0aGlzLnNldEVkaXRvclJlZi5iaW5kKHRoaXMpfSBsYW5ndWFnZT17dGhpcy5wcm9wcy5sYW5ndWFnZX0gaWQ9e3RoaXMucHJvcHMuaWQgfHwgXCJiZC1hZGRvbi1lZGl0b3JcIn0gY29udHJvbHM9e3RoaXMuY29udHJvbHN9IHZhbHVlPXt0aGlzLnByb3BzLmNvbnRlbnR9IG9uQ2hhbmdlPXt0aGlzLm9uQ2hhbmdlfSAvPjtcclxuICAgIH1cclxuXHJcbiAgICBvbkNoYW5nZSgpIHtcclxuICAgICAgICB0aGlzLmhhc1Vuc2F2ZWRDaGFuZ2VzID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBzYXZlKGV2ZW50LCBjb250ZW50KSB7XHJcbiAgICAgICAgdGhpcy5oYXNVbnNhdmVkQ2hhbmdlcyA9IGZhbHNlO1xyXG4gICAgICAgIGlmICh0aGlzLnByb3BzLnNhdmUpIHRoaXMucHJvcHMuc2F2ZShjb250ZW50KTtcclxuICAgIH1cclxuXHJcbiAgICBvcGVuTmF0aXZlKCkge1xyXG4gICAgICAgIGlmICh0aGlzLnByb3BzLm9wZW5OYXRpdmUpIHRoaXMucHJvcHMub3Blbk5hdGl2ZSgpO1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/misc/addoneditor.jsx\n"); /***/ }), @@ -971,7 +970,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Modals; });\n/* harmony import */ var data__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! data */ \"./src/data/data.js\");\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _structs_string__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../structs/string */ \"./src/structs/string.js\");\n\n\n\nclass Modals {\n static get shouldShowAddonErrors() {\n return modules__WEBPACK_IMPORTED_MODULE_1__[\"Settings\"].get(\"settings\", \"addons\", \"addonErrors\");\n }\n\n static get ModalActions() {\n return modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"openModal\", \"updateModal\");\n }\n\n static get ModalStack() {\n return modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"push\", \"update\", \"pop\", \"popWithKey\");\n }\n\n static get AlertModal() {\n return modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByPrototypes(\"handleCancel\", \"handleSubmit\", \"handleMinorConfirm\");\n }\n\n static get TextElement() {\n return modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"Sizes\", \"Weights\");\n }\n\n static get ConfirmationModal() {\n return modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].findByDisplayName(\"ConfirmModal\");\n }\n\n static get Markdown() {\n return modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].findByDisplayName(\"Markdown\");\n }\n\n static default(title, content) {\n const modal = modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].createElement(`
\n
\n
\n
\n
\n
${title}
\n
\n
\n
\n
\n ${content}\n
\n
\n
\n
\n \n
\n
\n
\n
`);\n modal.querySelector(\".footer button\").addEventListener(\"click\", () => {\n modal.classList.add(\"closing\");\n setTimeout(() => {\n modal.remove();\n }, 300);\n });\n modal.querySelector(\".bd-backdrop\").addEventListener(\"click\", () => {\n modal.classList.add(\"closing\");\n setTimeout(() => {\n modal.remove();\n }, 300);\n });\n document.querySelector(\"#app-mount\").append(modal);\n }\n\n static alert(title, content) {\n this.showConfirmationModal(title, content, {\n cancelText: \"\"\n });\n }\n /**\r\n * Shows a generic but very customizable confirmation modal with optional confirm and cancel callbacks.\r\n * @param {string} title - title of the modal\r\n * @param {(string|ReactElement|Array)} children - a single or mixed array of react elements and strings. Everything is wrapped in Discord's `Markdown` component so strings will show and render properly.\r\n * @param {object} [options] - options to modify the modal\r\n * @param {boolean} [options.danger=false] - whether the main button should be red or not\r\n * @param {string} [options.confirmText=Okay] - text for the confirmation/submit button\r\n * @param {string} [options.cancelText=Cancel] - text for the cancel button\r\n * @param {callable} [options.onConfirm=NOOP] - callback to occur when clicking the submit button\r\n * @param {callable} [options.onCancel=NOOP] - callback to occur when clicking the cancel button\r\n * @param {string} [options.key] - key used to identify the modal. If not provided, one is generated and returned\r\n * @returns {string} - the key used for this modal\r\n */\n\n\n static showConfirmationModal(title, content, options = {}) {\n const Markdown = this.Markdown;\n const ConfirmationModal = this.ConfirmationModal;\n const ModalActions = this.ModalActions;\n if (content instanceof _structs_string__WEBPACK_IMPORTED_MODULE_2__[\"default\"]) content = content.toString();\n if (!this.ModalActions || !this.ConfirmationModal || !this.Markdown) return this.default(title, content);\n\n const emptyFunction = () => {};\n\n const {\n onConfirm = emptyFunction,\n onCancel = emptyFunction,\n confirmText = modules__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].Modals.okay,\n cancelText = modules__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].Modals.cancel,\n danger = false,\n key = undefined\n } = options;\n if (!Array.isArray(content)) content = [content];\n content = content.map(c => typeof c === \"string\" ? modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(Markdown, null, c) : c);\n return ModalActions.openModal(props => {\n return modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(ConfirmationModal, Object.assign({\n header: title,\n red: danger,\n confirmText: confirmText,\n cancelText: cancelText,\n onConfirm: onConfirm,\n onCancel: onCancel\n }, props), content);\n }, {\n modalKey: key\n });\n }\n\n static showAddonErrors({\n plugins: pluginErrors = [],\n themes: themeErrors = []\n }) {\n if (!pluginErrors || !themeErrors || !this.shouldShowAddonErrors) return;\n if (!pluginErrors.length && !themeErrors.length) return;\n const modal = modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].createElement(`
\n
\n
\n
\n
${modules__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].Modals.addonErrors}
\n
\n
\n
\n
${modules__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].Panels.plugins}
\n
${modules__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].Panels.themes}
\n
\n
\n
\n
${modules__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].Modals.name}
\n
${modules__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].Modals.message}
\n
${modules__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].Modals.error}
\n
\n
\n
\n\n
\n
\n
\n
\n \n
\n
\n
\n
`);\n\n const generateTab = function (errors) {\n const container = modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].createElement(`
`);\n\n for (const err of errors) {\n const error = modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].createElement(`
\n
${err.name ? err.name : err.file}
\n
${err.message}
\n \n
`);\n container.append(error);\n\n if (err.error) {\n error.querySelectorAll(\"a\").forEach(el => el.addEventListener(\"click\", e => {\n e.preventDefault();\n modules__WEBPACK_IMPORTED_MODULE_1__[\"Logger\"].stacktrace(\"AddonError\", `Error details for ${err.name ? err.name : err.file}.`, err.error);\n }));\n }\n }\n\n return container;\n };\n\n const tabs = [generateTab(pluginErrors), generateTab(themeErrors)];\n modal.querySelectorAll(\".tab-bar-item\").forEach(el => el.addEventListener(\"click\", e => {\n e.preventDefault();\n const selected = modal.querySelector(\".tab-bar-item.selected\");\n if (selected) modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].removeClass(selected, \"selected\");\n modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].addClass(e.target, \"selected\");\n const scroller = modal.querySelector(\".scroller\");\n scroller.innerHTML = \"\";\n scroller.append(tabs[modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].index(e.target)]);\n }));\n modal.querySelector(\".footer button\").addEventListener(\"click\", () => {\n modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].addClass(modal, \"closing\");\n setTimeout(() => {\n modal.remove();\n }, 300);\n });\n modal.querySelector(\".bd-backdrop\").addEventListener(\"click\", () => {\n modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].addClass(modal, \"closing\");\n setTimeout(() => {\n modal.remove();\n }, 300);\n });\n modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].query(\"#app-mount\").append(modal);\n if (pluginErrors.length) modal.querySelector(\".tab-bar-item\").click();else modal.querySelectorAll(\".tab-bar-item\")[1].click();\n }\n\n static showChangelogModal(options = {}) {\n const ModalStack = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"push\", \"update\", \"pop\", \"popWithKey\");\n const ChangelogClasses = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"fixed\", \"improved\");\n const TextElement = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].findByDisplayName(\"Text\");\n const FlexChild = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"Child\");\n const Titles = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"Tags\", \"default\");\n const Changelog = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getModule(m => m.defaultProps && m.defaultProps.selectable == false);\n const MarkdownParser = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"defaultRules\", \"parse\");\n if (!Changelog || !ModalStack || !ChangelogClasses || !TextElement || !FlexChild || !Titles || !MarkdownParser) return modules__WEBPACK_IMPORTED_MODULE_1__[\"Logger\"].warn(\"Modals\", \"showChangelogModal missing modules\");\n const {\n image = \"https://repository-images.githubusercontent.com/105473537/957b5480-7c26-11e9-8401-50fa820cbae5\",\n description = \"\",\n changes = [],\n title = \"BandagedBD\",\n subtitle = `v${data__WEBPACK_IMPORTED_MODULE_0__[\"Config\"].bbdVersion}`,\n footer\n } = options;\n const ce = modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement;\n const changelogItems = [ce(\"img\", {\n src: image\n })];\n if (description) changelogItems.push(ce(\"p\", null, MarkdownParser.parse(description)));\n\n for (let c = 0; c < changes.length; c++) {\n const entry = changes[c];\n const type = ChangelogClasses[entry.type] ? ChangelogClasses[entry.type] : ChangelogClasses.added;\n const margin = c == 0 ? ChangelogClasses.marginTop : \"\";\n changelogItems.push(ce(\"h1\", {\n className: `${type} ${margin}`\n }, entry.title));\n const list = ce(\"ul\", null, entry.items.map(i => ce(\"li\", null, MarkdownParser.parse(i))));\n changelogItems.push(list);\n }\n\n const renderHeader = function () {\n return ce(FlexChild.Child, {\n grow: 1,\n shrink: 1\n }, ce(Titles.default, {\n tag: Titles.Tags.H4\n }, title), ce(TextElement, {\n size: TextElement.Sizes.SMALL,\n color: TextElement.Colors.STANDARD,\n className: ChangelogClasses.date\n }, subtitle));\n };\n\n const renderFooter = () => {\n const Anchor = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getModule(m => m.displayName == \"Anchor\");\n const AnchorClasses = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"anchorUnderlineOnHover\") || {\n anchor: \"anchor-3Z-8Bb\",\n anchorUnderlineOnHover: \"anchorUnderlineOnHover-2ESHQB\"\n };\n\n const joinSupportServer = click => {\n click.preventDefault();\n click.stopPropagation();\n ModalStack.pop();\n modules__WEBPACK_IMPORTED_MODULE_1__[\"DiscordModules\"].InviteActions.acceptInviteAndTransitionToInviteChannel(\"2HScm8j\");\n };\n\n const supportLink = Anchor ? ce(Anchor, {\n onClick: joinSupportServer\n }, \"Join our Discord Server.\") : ce(\"a\", {\n className: `${AnchorClasses.anchor} ${AnchorClasses.anchorUnderlineOnHover}`,\n onClick: joinSupportServer\n }, \"Join our Discord Server.\");\n const defaultFooter = ce(TextElement, {\n size: TextElement.Sizes.SMALL,\n color: TextElement.Colors.STANDARD\n }, \"Need support? \", supportLink);\n return ce(FlexChild.Child, {\n grow: 1,\n shrink: 1\n }, footer ? footer : defaultFooter);\n };\n\n return ModalStack.push(Changelog, {\n className: ChangelogClasses.container,\n selectable: true,\n onScroll: _ => _,\n onClose: _ => _,\n renderHeader: renderHeader,\n renderFooter: renderFooter,\n children: changelogItems\n });\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL21vZGFscy5qcz8zYWIyIl0sIm5hbWVzIjpbIk1vZGFscyIsInNob3VsZFNob3dBZGRvbkVycm9ycyIsIlNldHRpbmdzIiwiZ2V0IiwiTW9kYWxBY3Rpb25zIiwiV2VicGFja01vZHVsZXMiLCJnZXRCeVByb3BzIiwiTW9kYWxTdGFjayIsIkFsZXJ0TW9kYWwiLCJnZXRCeVByb3RvdHlwZXMiLCJUZXh0RWxlbWVudCIsIkNvbmZpcm1hdGlvbk1vZGFsIiwiZmluZEJ5RGlzcGxheU5hbWUiLCJNYXJrZG93biIsImRlZmF1bHQiLCJ0aXRsZSIsImNvbnRlbnQiLCJtb2RhbCIsIkRPTSIsImNyZWF0ZUVsZW1lbnQiLCJTdHJpbmdzIiwib2theSIsInF1ZXJ5U2VsZWN0b3IiLCJhZGRFdmVudExpc3RlbmVyIiwiY2xhc3NMaXN0IiwiYWRkIiwic2V0VGltZW91dCIsInJlbW92ZSIsImRvY3VtZW50IiwiYXBwZW5kIiwiYWxlcnQiLCJzaG93Q29uZmlybWF0aW9uTW9kYWwiLCJjYW5jZWxUZXh0Iiwib3B0aW9ucyIsIkZvcm1hdHRhYmxlU3RyaW5nIiwidG9TdHJpbmciLCJlbXB0eUZ1bmN0aW9uIiwib25Db25maXJtIiwib25DYW5jZWwiLCJjb25maXJtVGV4dCIsImNhbmNlbCIsImRhbmdlciIsImtleSIsInVuZGVmaW5lZCIsIkFycmF5IiwiaXNBcnJheSIsIm1hcCIsImMiLCJSZWFjdCIsIm9wZW5Nb2RhbCIsInByb3BzIiwiT2JqZWN0IiwiYXNzaWduIiwiaGVhZGVyIiwicmVkIiwibW9kYWxLZXkiLCJzaG93QWRkb25FcnJvcnMiLCJwbHVnaW5zIiwicGx1Z2luRXJyb3JzIiwidGhlbWVzIiwidGhlbWVFcnJvcnMiLCJsZW5ndGgiLCJhZGRvbkVycm9ycyIsIlBhbmVscyIsIm5hbWUiLCJtZXNzYWdlIiwiZXJyb3IiLCJnZW5lcmF0ZVRhYiIsImVycm9ycyIsImNvbnRhaW5lciIsImVyciIsImZpbGUiLCJxdWVyeVNlbGVjdG9yQWxsIiwiZm9yRWFjaCIsImVsIiwiZSIsInByZXZlbnREZWZhdWx0IiwiTG9nZ2VyIiwic3RhY2t0cmFjZSIsInRhYnMiLCJzZWxlY3RlZCIsInJlbW92ZUNsYXNzIiwiYWRkQ2xhc3MiLCJ0YXJnZXQiLCJzY3JvbGxlciIsImlubmVySFRNTCIsImluZGV4IiwicXVlcnkiLCJjbGljayIsInNob3dDaGFuZ2Vsb2dNb2RhbCIsIkNoYW5nZWxvZ0NsYXNzZXMiLCJGbGV4Q2hpbGQiLCJUaXRsZXMiLCJDaGFuZ2Vsb2ciLCJnZXRNb2R1bGUiLCJtIiwiZGVmYXVsdFByb3BzIiwic2VsZWN0YWJsZSIsIk1hcmtkb3duUGFyc2VyIiwid2FybiIsImltYWdlIiwiZGVzY3JpcHRpb24iLCJjaGFuZ2VzIiwic3VidGl0bGUiLCJDb25maWciLCJiYmRWZXJzaW9uIiwiZm9vdGVyIiwiY2UiLCJjaGFuZ2Vsb2dJdGVtcyIsInNyYyIsInB1c2giLCJwYXJzZSIsImVudHJ5IiwidHlwZSIsImFkZGVkIiwibWFyZ2luIiwibWFyZ2luVG9wIiwiY2xhc3NOYW1lIiwibGlzdCIsIml0ZW1zIiwiaSIsInJlbmRlckhlYWRlciIsIkNoaWxkIiwiZ3JvdyIsInNocmluayIsInRhZyIsIlRhZ3MiLCJINCIsInNpemUiLCJTaXplcyIsIlNNQUxMIiwiY29sb3IiLCJDb2xvcnMiLCJTVEFOREFSRCIsImRhdGUiLCJyZW5kZXJGb290ZXIiLCJBbmNob3IiLCJkaXNwbGF5TmFtZSIsIkFuY2hvckNsYXNzZXMiLCJhbmNob3IiLCJhbmNob3JVbmRlcmxpbmVPbkhvdmVyIiwiam9pblN1cHBvcnRTZXJ2ZXIiLCJzdG9wUHJvcGFnYXRpb24iLCJwb3AiLCJEaXNjb3JkTW9kdWxlcyIsIkludml0ZUFjdGlvbnMiLCJhY2NlcHRJbnZpdGVBbmRUcmFuc2l0aW9uVG9JbnZpdGVDaGFubmVsIiwic3VwcG9ydExpbmsiLCJvbkNsaWNrIiwiZGVmYXVsdEZvb3RlciIsIm9uU2Nyb2xsIiwiXyIsIm9uQ2xvc2UiLCJjaGlsZHJl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cy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29uZmlnfSBmcm9tIFwiZGF0YVwiO1xyXG5pbXBvcnQge0xvZ2dlciwgV2VicGFja01vZHVsZXMsIFJlYWN0LCBTZXR0aW5ncywgU3RyaW5ncywgRE9NLCBEaXNjb3JkTW9kdWxlc30gZnJvbSBcIm1vZHVsZXNcIjtcclxuaW1wb3J0IEZvcm1hdHRhYmxlU3RyaW5nIGZyb20gXCIuLi9zdHJ1Y3RzL3N0cmluZ1wiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTW9kYWxzIHtcclxuXHJcbiAgICBzdGF0aWMgZ2V0IHNob3VsZFNob3dBZGRvbkVycm9ycygpIHtyZXR1cm4gU2V0dGluZ3MuZ2V0KFwic2V0dGluZ3NcIiwgXCJhZGRvbnNcIiwgXCJhZGRvbkVycm9yc1wiKTt9XHJcblxyXG4gICAgc3RhdGljIGdldCBNb2RhbEFjdGlvbnMoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJvcGVuTW9kYWxcIiwgXCJ1cGRhdGVNb2RhbFwiKTt9XHJcbiAgICBzdGF0aWMgZ2V0IE1vZGFsU3RhY2soKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJwdXNoXCIsIFwidXBkYXRlXCIsIFwicG9wXCIsIFwicG9wV2l0aEtleVwiKTt9XHJcbiAgICBzdGF0aWMgZ2V0IEFsZXJ0TW9kYWwoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvdG90eXBlcyhcImhhbmRsZUNhbmNlbFwiLCBcImhhbmRsZVN1Ym1pdFwiLCBcImhhbmRsZU1pbm9yQ29uZmlybVwiKTt9XHJcbiAgICBzdGF0aWMgZ2V0IFRleHRFbGVtZW50KCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiU2l6ZXNcIiwgXCJXZWlnaHRzXCIpO31cclxuICAgIHN0YXRpYyBnZXQgQ29uZmlybWF0aW9uTW9kYWwoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmZpbmRCeURpc3BsYXlOYW1lKFwiQ29uZmlybU1vZGFsXCIpO31cclxuICAgIHN0YXRpYyBnZXQgTWFya2Rvd24oKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmZpbmRCeURpc3BsYXlOYW1lKFwiTWFya2Rvd25cIik7fVxyXG5cclxuICAgIHN0YXRpYyBkZWZhdWx0KHRpdGxlLCBjb250ZW50KSB7XHJcbiAgICAgICAgY29uc3QgbW9kYWwgPSBET00uY3JlYXRlRWxlbWVudChgPGRpdiBjbGFzcz1cImJkLW1vZGFsLXdyYXBwZXIgdGhlbWUtZGFya1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJkLWJhY2tkcm9wIGJhY2tkcm9wLTF3cm1LQlwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJkLW1vZGFsIG1vZGFsLTFVR2RuUlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiZC1tb2RhbC1pbm5lciBpbm5lci0xSmVHVmNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlciBoZWFkZXItMVJfQWpGXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGVcIj4ke3RpdGxlfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJkLW1vZGFsLWJvZHlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzY3JvbGxlci13cmFwIGZhZGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2Nyb2xsZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtjb250ZW50fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9vdGVyIGZvb3Rlci0yeWZDZ1ggZm9vdGVyLTNyRFdkQyBmb290ZXItMmdMMXBwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJkLWJ1dHRvblwiPiR7U3RyaW5ncy5Nb2RhbHMub2theX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+YCk7XHJcbiAgICAgICAgbW9kYWwucXVlcnlTZWxlY3RvcihcIi5mb290ZXIgYnV0dG9uXCIpLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIG1vZGFsLmNsYXNzTGlzdC5hZGQoXCJjbG9zaW5nXCIpO1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsgbW9kYWwucmVtb3ZlKCk7IH0sIDMwMCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgbW9kYWwucXVlcnlTZWxlY3RvcihcIi5iZC1iYWNrZHJvcFwiKS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgKCkgPT4ge1xyXG4gICAgICAgICAgICBtb2RhbC5jbGFzc0xpc3QuYWRkKFwiY2xvc2luZ1wiKTtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7IG1vZGFsLnJlbW92ZSgpOyB9LCAzMDApO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjYXBwLW1vdW50XCIpLmFwcGVuZChtb2RhbCk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGFsZXJ0KHRpdGxlLCBjb250ZW50KSB7XHJcbiAgICAgICAgdGhpcy5zaG93Q29uZmlybWF0aW9uTW9kYWwodGl0bGUsIGNvbnRlbnQsIHtjYW5jZWxUZXh0OiBcIlwifSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTaG93cyBhIGdlbmVyaWMgYnV0IHZlcnkgY3VzdG9taXphYmxlIGNvbmZpcm1hdGlvbiBtb2RhbCB3aXRoIG9wdGlvbmFsIGNvbmZpcm0gYW5kIGNhbmNlbCBjYWxsYmFja3MuXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGl0bGUgLSB0aXRsZSBvZiB0aGUgbW9kYWxcclxuICAgICAqIEBwYXJhbSB7KHN0cmluZ3xSZWFjdEVsZW1lbnR8QXJyYXk8c3RyaW5nfFJlYWN0RWxlbWVudD4pfSBjaGlsZHJlbiAtIGEgc2luZ2xlIG9yIG1peGVkIGFycmF5IG9mIHJlYWN0IGVsZW1lbnRzIGFuZCBzdHJpbmdzLiBFdmVyeXRoaW5nIGlzIHdyYXBwZWQgaW4gRGlzY29yZCdzIGBNYXJrZG93bmAgY29tcG9uZW50IHNvIHN0cmluZ3Mgd2lsbCBzaG93IGFuZCByZW5kZXIgcHJvcGVybHkuXHJcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gW29wdGlvbnNdIC0gb3B0aW9ucyB0byBtb2RpZnkgdGhlIG1vZGFsXHJcbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLmRhbmdlcj1mYWxzZV0gLSB3aGV0aGVyIHRoZSBtYWluIGJ1dHRvbiBzaG91bGQgYmUgcmVkIG9yIG5vdFxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLmNvbmZpcm1UZXh0PU9rYXldIC0gdGV4dCBmb3IgdGhlIGNvbmZpcm1hdGlvbi9zdWJtaXQgYnV0dG9uXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMuY2FuY2VsVGV4dD1DYW5jZWxdIC0gdGV4dCBmb3IgdGhlIGNhbmNlbCBidXR0b25cclxuICAgICAqIEBwYXJhbSB7Y2FsbGFibGV9IFtvcHRpb25zLm9uQ29uZmlybT1OT09QXSAtIGNhbGxiYWNrIHRvIG9jY3VyIHdoZW4gY2xpY2tpbmcgdGhlIHN1Ym1pdCBidXR0b25cclxuICAgICAqIEBwYXJhbSB7Y2FsbGFibGV9IFtvcHRpb25zLm9uQ2FuY2VsPU5PT1BdIC0gY2FsbGJhY2sgdG8gb2NjdXIgd2hlbiBjbGlja2luZyB0aGUgY2FuY2VsIGJ1dHRvblxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLmtleV0gLSBrZXkgdXNlZCB0byBpZGVudGlmeSB0aGUgbW9kYWwuIElmIG5vdCBwcm92aWRlZCwgb25lIGlzIGdlbmVyYXRlZCBhbmQgcmV0dXJuZWRcclxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IC0gdGhlIGtleSB1c2VkIGZvciB0aGlzIG1vZGFsXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBzaG93Q29uZmlybWF0aW9uTW9kYWwodGl0bGUsIGNvbnRlbnQsIG9wdGlvbnMgPSB7fSkge1xyXG4gICAgICAgIGNvbnN0IE1hcmtkb3duID0gdGhpcy5NYXJrZG93bjtcclxuICAgICAgICBjb25zdCBDb25maXJtYXRpb25Nb2RhbCA9IHRoaXMuQ29uZmlybWF0aW9uTW9kYWw7XHJcbiAgICAgICAgY29uc3QgTW9kYWxBY3Rpb25zID0gdGhpcy5Nb2RhbEFjdGlvbnM7XHJcbiAgICAgICAgaWYgKGNvbnRlbnQgaW5zdGFuY2VvZiBGb3JtYXR0YWJsZVN0cmluZykgY29udGVudCA9IGNvbnRlbnQudG9TdHJpbmcoKTtcclxuICAgICAgICBpZiAoIXRoaXMuTW9kYWxBY3Rpb25zIHx8ICF0aGlzLkNvbmZpcm1hdGlvbk1vZGFsIHx8ICF0aGlzLk1hcmtkb3duKSByZXR1cm4gdGhpcy5kZWZhdWx0KHRpdGxlLCBjb250ZW50KTtcclxuXHJcbiAgICAgICAgY29uc3QgZW1wdHlGdW5jdGlvbiA9ICgpID0+IHt9O1xyXG4gICAgICAgIGNvbnN0IHtvbkNvbmZpcm0gPSBlbXB0eUZ1bmN0aW9uLCBvbkNhbmNlbCA9IGVtcHR5RnVuY3Rpb24sIGNvbmZpcm1UZXh0ID0gU3RyaW5ncy5Nb2RhbHMub2theSwgY2FuY2VsVGV4dCA9IFN0cmluZ3MuTW9kYWxzLmNhbmNlbCwgZGFuZ2VyID0gZmFsc2UsIGtleSA9IHVuZGVmaW5lZH0gPSBvcHRpb25zO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShjb250ZW50KSkgY29udGVudCA9IFtjb250ZW50XTtcclxuICAgICAgICBjb250ZW50ID0gY29udGVudC5tYXAoYyA9PiB0eXBlb2YoYykgPT09IFwic3RyaW5nXCIgPyBSZWFjdC5jcmVhdGVFbGVtZW50KE1hcmtkb3duLCBudWxsLCBjKSA6IGMpO1xyXG5cclxuICAgICAgICByZXR1cm4gTW9kYWxBY3Rpb25zLm9wZW5Nb2RhbChwcm9wcyA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KENvbmZpcm1hdGlvbk1vZGFsLCBPYmplY3QuYXNzaWduKHtcclxuICAgICAgICAgICAgICAgIGhlYWRlcjogdGl0bGUsXHJcbiAgICAgICAgICAgICAgICByZWQ6IGRhbmdlcixcclxuICAgICAgICAgICAgICAgIGNvbmZpcm1UZXh0OiBjb25maXJtVGV4dCxcclxuICAgICAgICAgICAgICAgIGNhbmNlbFRleHQ6IGNhbmNlbFRleHQsXHJcbiAgICAgICAgICAgICAgICBvbkNvbmZpcm06IG9uQ29uZmlybSxcclxuICAgICAgICAgICAgICAgIG9uQ2FuY2VsOiBvbkNhbmNlbFxyXG4gICAgICAgICAgICB9LCBwcm9wcyksIGNvbnRlbnQpO1xyXG4gICAgICAgIH0sIHttb2RhbEtleToga2V5fSk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIHNob3dBZGRvbkVycm9ycyh7cGx1Z2luczogcGx1Z2luRXJyb3JzID0gW10sIHRoZW1lczogdGhlbWVFcnJvcnMgPSBbXX0pIHtcclxuICAgICAgICBpZiAoIXBsdWdpbkVycm9ycyB8fCAhdGhlbWVFcnJvcnMgfHwgIXRoaXMuc2hvdWxkU2hvd0FkZG9uRXJyb3JzKSByZXR1cm47XHJcbiAgICAgICAgaWYgKCFwbHVnaW5FcnJvcnMubGVuZ3RoICYmICF0aGVtZUVycm9ycy5sZW5ndGgpIHJldHVybjtcclxuICAgICAgICBjb25zdCBtb2RhbCA9IERPTS5jcmVhdGVFbGVtZW50KGA8ZGl2IGNsYXNzPVwiYmQtbW9kYWwtd3JhcHBlciB0aGVtZS1kYXJrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiZC1iYWNrZHJvcCBiYWNrZHJvcC0xd3JtS0JcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJkLW1vZGFsIGJkLWNvbnRlbnQtbW9kYWwgbW9kYWwtMVVHZG5SXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmQtbW9kYWwtaW5uZXIgaW5uZXItMUplR1ZjXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlciBoZWFkZXItMVJfQWpGXCI+PGRpdiBjbGFzcz1cInRpdGxlXCI+JHtTdHJpbmdzLk1vZGFscy5hZGRvbkVycm9yc308L2Rpdj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmQtbW9kYWwtYm9keVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFiLWJhci1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWItYmFyIFRPUFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWItYmFyLWl0ZW1cIj4ke1N0cmluZ3MuUGFuZWxzLnBsdWdpbnN9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYi1iYXItaXRlbVwiPiR7U3RyaW5ncy5QYW5lbHMudGhlbWVzfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtaGVhZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtY29sdW1uIGNvbHVtbi1uYW1lXCI+JHtTdHJpbmdzLk1vZGFscy5uYW1lfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWNvbHVtbiBjb2x1bW4tbWVzc2FnZVwiPiR7U3RyaW5ncy5Nb2RhbHMubWVzc2FnZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1jb2x1bW4gY29sdW1uLWVycm9yXCI+JHtTdHJpbmdzLk1vZGFscy5lcnJvcn08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzY3JvbGxlci13cmFwIGZhZGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzY3JvbGxlclwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9vdGVyIGZvb3Rlci0yeWZDZ1ggZm9vdGVyLTNyRFdkQyBmb290ZXItMmdMMXBwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYmQtYnV0dG9uXCI+JHtTdHJpbmdzLk1vZGFscy5va2F5fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PmApO1xyXG5cclxuICAgICAgICBjb25zdCBnZW5lcmF0ZVRhYiA9IGZ1bmN0aW9uKGVycm9ycykge1xyXG4gICAgICAgICAgICBjb25zdCBjb250YWluZXIgPSBET00uY3JlYXRlRWxlbWVudChgPGRpdiBjbGFzcz1cImVycm9yc1wiPmApO1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGVyciBvZiBlcnJvcnMpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yID0gRE9NLmNyZWF0ZUVsZW1lbnQoYDxkaXYgY2xhc3M9XCJlcnJvclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtY29sdW1uIGNvbHVtbi1uYW1lXCI+JHtlcnIubmFtZSA/IGVyci5uYW1lIDogZXJyLmZpbGV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1jb2x1bW4gY29sdW1uLW1lc3NhZ2VcIj4ke2Vyci5tZXNzYWdlfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtY29sdW1uIGNvbHVtbi1lcnJvclwiPjxhIGNsYXNzPVwiZXJyb3ItbGlua1wiIGhyZWY9XCJcIj4ke2Vyci5lcnJvciA/IGVyci5lcnJvci5tZXNzYWdlIDogXCJcIn08L2E+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+YCk7XHJcbiAgICAgICAgICAgICAgICBjb250YWluZXIuYXBwZW5kKGVycm9yKTtcclxuICAgICAgICAgICAgICAgIGlmIChlcnIuZXJyb3IpIHtcclxuICAgICAgICAgICAgICAgICAgICBlcnJvci5xdWVyeVNlbGVjdG9yQWxsKFwiYVwiKS5mb3JFYWNoKGVsID0+IGVsLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCAoZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlci5zdGFja3RyYWNlKFwiQWRkb25FcnJvclwiLCBgRXJyb3IgZGV0YWlscyBmb3IgJHtlcnIubmFtZSA/IGVyci5uYW1lIDogZXJyLmZpbGV9LmAsIGVyci5lcnJvcik7XHJcbiAgICAgICAgICAgICAgICAgICAgfSkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBjb250YWluZXI7XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgY29uc3QgdGFicyA9IFtnZW5lcmF0ZVRhYihwbHVnaW5FcnJvcnMpLCBnZW5lcmF0ZVRhYih0aGVtZUVycm9ycyldO1xyXG5cclxuICAgICAgICBtb2RhbC5xdWVyeVNlbGVjdG9yQWxsKFwiLnRhYi1iYXItaXRlbVwiKS5mb3JFYWNoKGVsID0+IGVsLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCAoZSkgPT4ge1xyXG4gICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkID0gbW9kYWwucXVlcnlTZWxlY3RvcihcIi50YWItYmFyLWl0ZW0uc2VsZWN0ZWRcIik7XHJcbiAgICAgICAgICAgIGlmIChzZWxlY3RlZCkgRE9NLnJlbW92ZUNsYXNzKHNlbGVjdGVkLCBcInNlbGVjdGVkXCIpO1xyXG4gICAgICAgICAgICBET00uYWRkQ2xhc3MoZS50YXJnZXQsIFwic2VsZWN0ZWRcIik7XHJcbiAgICAgICAgICAgIGNvbnN0IHNjcm9sbGVyID0gbW9kYWwucXVlcnlTZWxlY3RvcihcIi5zY3JvbGxlclwiKTtcclxuICAgICAgICAgICAgc2Nyb2xsZXIuaW5uZXJIVE1MID0gXCJcIjtcclxuICAgICAgICAgICAgc2Nyb2xsZXIuYXBwZW5kKHRhYnNbRE9NLmluZGV4KGUudGFyZ2V0KV0pO1xyXG4gICAgICAgIH0pKTtcclxuXHJcbiAgICAgICAgbW9kYWwucXVlcnlTZWxlY3RvcihcIi5mb290ZXIgYnV0dG9uXCIpLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIERPTS5hZGRDbGFzcyhtb2RhbCwgXCJjbG9zaW5nXCIpO1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsgbW9kYWwucmVtb3ZlKCk7IH0sIDMwMCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgbW9kYWwucXVlcnlTZWxlY3RvcihcIi5iZC1iYWNrZHJvcFwiKS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgKCkgPT4ge1xyXG4gICAgICAgICAgICBET00uYWRkQ2xhc3MobW9kYWwsIFwiY2xvc2luZ1wiKTtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7IG1vZGFsLnJlbW92ZSgpOyB9LCAzMDApO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIERPTS5xdWVyeShcIiNhcHAtbW91bnRcIikuYXBwZW5kKG1vZGFsKTtcclxuICAgICAgICBpZiAocGx1Z2luRXJyb3JzLmxlbmd0aCkgbW9kYWwucXVlcnlTZWxlY3RvcihcIi50YWItYmFyLWl0ZW1cIikuY2xpY2soKTtcclxuICAgICAgICBlbHNlIG1vZGFsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIudGFiLWJhci1pdGVtXCIpWzFdLmNsaWNrKCk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIHNob3dDaGFuZ2Vsb2dNb2RhbChvcHRpb25zID0ge30pIHtcclxuICAgICAgICBjb25zdCBNb2RhbFN0YWNrID0gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcInB1c2hcIiwgXCJ1cGRhdGVcIiwgXCJwb3BcIiwgXCJwb3BXaXRoS2V5XCIpO1xyXG4gICAgICAgIGNvbnN0IENoYW5nZWxvZ0NsYXNzZXMgPSBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiZml4ZWRcIiwgXCJpbXByb3ZlZFwiKTtcclxuICAgICAgICBjb25zdCBUZXh0RWxlbWVudCA9IFdlYnBhY2tNb2R1bGVzLmZpbmRCeURpc3BsYXlOYW1lKFwiVGV4dFwiKTtcclxuICAgICAgICBjb25zdCBGbGV4Q2hpbGQgPSBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiQ2hpbGRcIik7XHJcbiAgICAgICAgY29uc3QgVGl0bGVzID0gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcIlRhZ3NcIiwgXCJkZWZhdWx0XCIpO1xyXG4gICAgICAgIGNvbnN0IENoYW5nZWxvZyA9IFdlYnBhY2tNb2R1bGVzLmdldE1vZHVsZShtID0+IG0uZGVmYXVsdFByb3BzICYmIG0uZGVmYXVsdFByb3BzLnNlbGVjdGFibGUgPT0gZmFsc2UpO1xyXG4gICAgICAgIGNvbnN0IE1hcmtkb3duUGFyc2VyID0gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcImRlZmF1bHRSdWxlc1wiLCBcInBhcnNlXCIpO1xyXG4gICAgICAgIGlmICghQ2hhbmdlbG9nIHx8ICFNb2RhbFN0YWNrIHx8ICFDaGFuZ2Vsb2dDbGFzc2VzIHx8ICFUZXh0RWxlbWVudCB8fCAhRmxleENoaWxkIHx8ICFUaXRsZXMgfHwgIU1hcmtkb3duUGFyc2VyKSByZXR1cm4gTG9nZ2VyLndhcm4oXCJNb2RhbHNcIiwgXCJzaG93Q2hhbmdlbG9nTW9kYWwgbWlzc2luZyBtb2R1bGVzXCIpO1xyXG4gICAgXHJcbiAgICAgICAgY29uc3Qge2ltYWdlID0gXCJodHRwczovL3JlcG9zaXRvcnktaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS8xMDU0NzM1MzcvOTU3YjU0ODAtN2MyNi0xMWU5LTg0MDEtNTBmYTgyMGNiYWU1XCIsIGRlc2NyaXB0aW9uID0gXCJcIiwgY2hhbmdlcyA9IFtdLCB0aXRsZSA9IFwiQmFuZGFnZWRCRFwiLCBzdWJ0aXRsZSA9IGB2JHtDb25maWcuYmJkVmVyc2lvbn1gLCBmb290ZXJ9ID0gb3B0aW9ucztcclxuICAgICAgICBjb25zdCBjZSA9IFJlYWN0LmNyZWF0ZUVsZW1lbnQ7XHJcbiAgICAgICAgY29uc3QgY2hhbmdlbG9nSXRlbXMgPSBbY2UoXCJpbWdcIiwge3NyYzogaW1hZ2V9KV07XHJcbiAgICAgICAgaWYgKGRlc2NyaXB0aW9uKSBjaGFuZ2Vsb2dJdGVtcy5wdXNoKGNlKFwicFwiLCBudWxsLCBNYXJrZG93blBhcnNlci5wYXJzZShkZXNjcmlwdGlvbikpKTtcclxuICAgICAgICBmb3IgKGxldCBjID0gMDsgYyA8IGNoYW5nZXMubGVuZ3RoOyBjKyspIHtcclxuICAgICAgICAgICAgY29uc3QgZW50cnkgPSBjaGFuZ2VzW2NdO1xyXG4gICAgICAgICAgICBjb25zdCB0eXBlID0gQ2hhbmdlbG9nQ2xhc3Nlc1tlbnRyeS50eXBlXSA/IENoYW5nZWxvZ0NsYXNzZXNbZW50cnkudHlwZV0gOiBDaGFuZ2Vsb2dDbGFzc2VzLmFkZGVkO1xyXG4gICAgICAgICAgICBjb25zdCBtYXJnaW4gPSBjID09IDAgPyBDaGFuZ2Vsb2dDbGFzc2VzLm1hcmdpblRvcCA6IFwiXCI7XHJcbiAgICAgICAgICAgIGNoYW5nZWxvZ0l0ZW1zLnB1c2goY2UoXCJoMVwiLCB7Y2xhc3NOYW1lOiBgJHt0eXBlfSAke21hcmdpbn1gLH0sIGVudHJ5LnRpdGxlKSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGxpc3QgPSBjZShcInVsXCIsIG51bGwsIGVudHJ5Lml0ZW1zLm1hcChpID0+IGNlKFwibGlcIiwgbnVsbCwgTWFya2Rvd25QYXJzZXIucGFyc2UoaSkpKSk7XHJcbiAgICAgICAgICAgIGNoYW5nZWxvZ0l0ZW1zLnB1c2gobGlzdCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHJlbmRlckhlYWRlciA9IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgICAgICByZXR1cm4gY2UoRmxleENoaWxkLkNoaWxkLCB7Z3JvdzogMSwgc2hyaW5rOiAxfSxcclxuICAgICAgICAgICAgICAgIGNlKFRpdGxlcy5kZWZhdWx0LCB7dGFnOiBUaXRsZXMuVGFncy5INH0sIHRpdGxlKSxcclxuICAgICAgICAgICAgICAgIGNlKFRleHRFbGVtZW50LCB7c2l6ZTogVGV4dEVsZW1lbnQuU2l6ZXMuU01BTEwsIGNvbG9yOiBUZXh0RWxlbWVudC5Db2xvcnMuU1RBTkRBUkQsIGNsYXNzTmFtZTogQ2hhbmdlbG9nQ2xhc3Nlcy5kYXRlfSwgc3VidGl0bGUpXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfTtcclxuICAgIFxyXG4gICAgICAgIGNvbnN0IHJlbmRlckZvb3RlciA9ICgpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgQW5jaG9yID0gV2VicGFja01vZHVsZXMuZ2V0TW9kdWxlKG0gPT4gbS5kaXNwbGF5TmFtZSA9PSBcIkFuY2hvclwiKTtcclxuICAgICAgICAgICAgY29uc3QgQW5jaG9yQ2xhc3NlcyA9IFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJhbmNob3JVbmRlcmxpbmVPbkhvdmVyXCIpIHx8IHthbmNob3I6IFwiYW5jaG9yLTNaLThCYlwiLCBhbmNob3JVbmRlcmxpbmVPbkhvdmVyOiBcImFuY2hvclVuZGVybGluZU9uSG92ZXItMkVTSFFCXCJ9O1xyXG4gICAgICAgICAgICBjb25zdCBqb2luU3VwcG9ydFNlcnZlciA9IChjbGljaykgPT4ge1xyXG4gICAgICAgICAgICAgICAgY2xpY2sucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgICAgIGNsaWNrLnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICAgICAgTW9kYWxTdGFjay5wb3AoKTtcclxuICAgICAgICAgICAgICAgIERpc2NvcmRNb2R1bGVzLkludml0ZUFjdGlvbnMuYWNjZXB0SW52aXRlQW5kVHJhbnNpdGlvblRvSW52aXRlQ2hhbm5lbChcIjJIU2NtOGpcIik7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGNvbnN0IHN1cHBvcnRMaW5rID0gQW5jaG9yID8gY2UoQW5jaG9yLCB7b25DbGljazogam9pblN1cHBvcnRTZXJ2ZXJ9LCBcIkpvaW4gb3VyIERpc2NvcmQgU2VydmVyLlwiKSA6IGNlKFwiYVwiLCB7Y2xhc3NOYW1lOiBgJHtBbmNob3JDbGFzc2VzLmFuY2hvcn0gJHtBbmNob3JDbGFzc2VzLmFuY2hvclVuZGVybGluZU9uSG92ZXJ9YCwgb25DbGljazogam9pblN1cHBvcnRTZXJ2ZXJ9LCBcIkpvaW4gb3VyIERpc2NvcmQgU2VydmVyLlwiKTtcclxuICAgICAgICAgICAgY29uc3QgZGVmYXVsdEZvb3RlciA9IGNlKFRleHRFbGVtZW50LCB7c2l6ZTogVGV4dEVsZW1lbnQuU2l6ZXMuU01BTEwsIGNvbG9yOiBUZXh0RWxlbWVudC5Db2xvcnMuU1RBTkRBUkR9LCBcIk5lZWQgc3VwcG9ydD8gXCIsIHN1cHBvcnRMaW5rKTtcclxuICAgICAgICAgICAgcmV0dXJuIGNlKEZsZXhDaGlsZC5DaGlsZCwge2dyb3c6IDEsIHNocmluazogMX0sIGZvb3RlciA/IGZvb3RlciA6IGRlZmF1bHRGb290ZXIpO1xyXG4gICAgICAgIH07XHJcbiAgICBcclxuICAgICAgICByZXR1cm4gTW9kYWxTdGFjay5wdXNoKENoYW5nZWxvZywge1xyXG4gICAgICAgICAgICBjbGFzc05hbWU6IENoYW5nZWxvZ0NsYXNzZXMuY29udGFpbmVyLFxyXG4gICAgICAgICAgICBzZWxlY3RhYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICBvblNjcm9sbDogXyA9PiBfLFxyXG4gICAgICAgICAgICBvbkNsb3NlOiBfID0+IF8sXHJcbiAgICAgICAgICAgIHJlbmRlckhlYWRlcjogcmVuZGVySGVhZGVyLFxyXG4gICAgICAgICAgICByZW5kZXJGb290ZXI6IHJlbmRlckZvb3RlcixcclxuICAgICAgICAgICAgY2hpbGRyZW46IGNoYW5nZWxvZ0l0ZW1zXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/ui/modals.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Modals; });\n/* harmony import */ var data__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! data */ \"./src/data/data.js\");\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _structs_string__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../structs/string */ \"./src/structs/string.js\");\n\n\n\nclass Modals {\n static get shouldShowAddonErrors() {\n return modules__WEBPACK_IMPORTED_MODULE_1__[\"Settings\"].get(\"settings\", \"addons\", \"addonErrors\");\n }\n\n static get ModalActions() {\n return modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"openModal\", \"updateModal\");\n }\n\n static get ModalStack() {\n return modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"push\", \"update\", \"pop\", \"popWithKey\");\n }\n\n static get AlertModal() {\n return modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByPrototypes(\"handleCancel\", \"handleSubmit\", \"handleMinorConfirm\");\n }\n\n static get TextElement() {\n return modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"Sizes\", \"Weights\");\n }\n\n static get ConfirmationModal() {\n return modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].findByDisplayName(\"ConfirmModal\");\n }\n\n static get Markdown() {\n return modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].findByDisplayName(\"Markdown\");\n }\n\n static default(title, content) {\n const modal = modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].createElement(`
\n
\n
\n
\n
\n
${title}
\n
\n
\n
\n
\n ${content}\n
\n
\n
\n
\n \n
\n
\n
\n
`);\n modal.querySelector(\".footer button\").addEventListener(\"click\", () => {\n modal.classList.add(\"closing\");\n setTimeout(() => {\n modal.remove();\n }, 300);\n });\n modal.querySelector(\".bd-backdrop\").addEventListener(\"click\", () => {\n modal.classList.add(\"closing\");\n setTimeout(() => {\n modal.remove();\n }, 300);\n });\n document.querySelector(\"#app-mount\").append(modal);\n }\n\n static alert(title, content) {\n this.showConfirmationModal(title, content, {\n cancelText: \"\"\n });\n }\n /**\r\n * Shows a generic but very customizable confirmation modal with optional confirm and cancel callbacks.\r\n * @param {string} title - title of the modal\r\n * @param {(string|ReactElement|Array)} children - a single or mixed array of react elements and strings. Everything is wrapped in Discord's `Markdown` component so strings will show and render properly.\r\n * @param {object} [options] - options to modify the modal\r\n * @param {boolean} [options.danger=false] - whether the main button should be red or not\r\n * @param {string} [options.confirmText=Okay] - text for the confirmation/submit button\r\n * @param {string} [options.cancelText=Cancel] - text for the cancel button\r\n * @param {callable} [options.onConfirm=NOOP] - callback to occur when clicking the submit button\r\n * @param {callable} [options.onCancel=NOOP] - callback to occur when clicking the cancel button\r\n * @param {string} [options.key] - key used to identify the modal. If not provided, one is generated and returned\r\n * @returns {string} - the key used for this modal\r\n */\n\n\n static showConfirmationModal(title, content, options = {}) {\n const Markdown = this.Markdown;\n const ConfirmationModal = this.ConfirmationModal;\n const ModalActions = this.ModalActions;\n if (content instanceof _structs_string__WEBPACK_IMPORTED_MODULE_2__[\"default\"]) content = content.toString();\n if (!this.ModalActions || !this.ConfirmationModal || !this.Markdown) return this.default(title, content);\n\n const emptyFunction = () => {};\n\n const {\n onConfirm = emptyFunction,\n onCancel = emptyFunction,\n confirmText = modules__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].Modals.okay,\n cancelText = modules__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].Modals.cancel,\n danger = false,\n key = undefined\n } = options;\n if (!Array.isArray(content)) content = [content];\n content = content.map(c => typeof c === \"string\" ? modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(Markdown, null, c) : c);\n return ModalActions.openModal(props => {\n return modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(ConfirmationModal, Object.assign({\n header: title,\n red: danger,\n confirmText: confirmText,\n cancelText: cancelText,\n onConfirm: onConfirm,\n onCancel: onCancel\n }, props), content);\n }, {\n modalKey: key\n });\n }\n\n static showAddonErrors({\n plugins: pluginErrors = [],\n themes: themeErrors = []\n }) {\n if (!pluginErrors || !themeErrors || !this.shouldShowAddonErrors) return;\n if (!pluginErrors.length && !themeErrors.length) return;\n const modal = modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].createElement(`
\n
\n
\n
\n
${modules__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].Modals.addonErrors}
\n
\n
\n
\n
${modules__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].Panels.plugins}
\n
${modules__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].Panels.themes}
\n
\n
\n
\n
${modules__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].Modals.name}
\n
${modules__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].Modals.message}
\n
${modules__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].Modals.error}
\n
\n
\n
\n\n
\n
\n
\n
\n \n
\n
\n
\n
`);\n\n const generateTab = function (errors) {\n const container = modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].createElement(`
`);\n\n for (const err of errors) {\n const error = modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].createElement(`
\n
${err.name ? err.name : err.file}
\n
${err.message}
\n \n
`);\n container.append(error);\n\n if (err.error) {\n error.querySelectorAll(\"a\").forEach(el => el.addEventListener(\"click\", e => {\n e.preventDefault();\n modules__WEBPACK_IMPORTED_MODULE_1__[\"Logger\"].stacktrace(\"AddonError\", `Error details for ${err.name ? err.name : err.file}.`, err.error);\n }));\n }\n }\n\n return container;\n };\n\n const tabs = [generateTab(pluginErrors), generateTab(themeErrors)];\n modal.querySelectorAll(\".tab-bar-item\").forEach(el => el.addEventListener(\"click\", e => {\n e.preventDefault();\n const selected = modal.querySelector(\".tab-bar-item.selected\");\n if (selected) modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].removeClass(selected, \"selected\");\n modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].addClass(e.target, \"selected\");\n const scroller = modal.querySelector(\".scroller\");\n scroller.innerHTML = \"\";\n scroller.append(tabs[modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].index(e.target)]);\n }));\n modal.querySelector(\".footer button\").addEventListener(\"click\", () => {\n modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].addClass(modal, \"closing\");\n setTimeout(() => {\n modal.remove();\n }, 300);\n });\n modal.querySelector(\".bd-backdrop\").addEventListener(\"click\", () => {\n modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].addClass(modal, \"closing\");\n setTimeout(() => {\n modal.remove();\n }, 300);\n });\n modules__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].query(\"#app-mount\").append(modal);\n if (pluginErrors.length) modal.querySelector(\".tab-bar-item\").click();else modal.querySelectorAll(\".tab-bar-item\")[1].click();\n }\n\n static showChangelogModal(options = {}) {\n const ModalStack = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"push\", \"update\", \"pop\", \"popWithKey\");\n const ChangelogClasses = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"fixed\", \"improved\");\n const TextElement = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].findByDisplayName(\"Text\");\n const FlexChild = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"Child\");\n const Titles = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"Tags\", \"default\");\n const Changelog = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getModule(m => m.defaultProps && m.defaultProps.selectable == false);\n const MarkdownParser = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"defaultRules\", \"parse\");\n if (!Changelog || !ModalStack || !ChangelogClasses || !TextElement || !FlexChild || !Titles || !MarkdownParser) return modules__WEBPACK_IMPORTED_MODULE_1__[\"Logger\"].warn(\"Modals\", \"showChangelogModal missing modules\");\n const {\n image = \"https://repository-images.githubusercontent.com/105473537/957b5480-7c26-11e9-8401-50fa820cbae5\",\n description = \"\",\n changes = [],\n title = \"BandagedBD\",\n subtitle = `v${data__WEBPACK_IMPORTED_MODULE_0__[\"Config\"].bbdVersion}`,\n footer\n } = options;\n const ce = modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement;\n const changelogItems = [ce(\"img\", {\n src: image\n })];\n if (description) changelogItems.push(ce(\"p\", null, MarkdownParser.parse(description)));\n\n for (let c = 0; c < changes.length; c++) {\n const entry = changes[c];\n const type = ChangelogClasses[entry.type] ? ChangelogClasses[entry.type] : ChangelogClasses.added;\n const margin = c == 0 ? ChangelogClasses.marginTop : \"\";\n changelogItems.push(ce(\"h1\", {\n className: `${type} ${margin}`\n }, entry.title));\n const list = ce(\"ul\", null, entry.items.map(i => ce(\"li\", null, MarkdownParser.parse(i))));\n changelogItems.push(list);\n }\n\n const renderHeader = function () {\n return ce(FlexChild.Child, {\n grow: 1,\n shrink: 1\n }, ce(Titles.default, {\n tag: Titles.Tags.H4\n }, title), ce(TextElement, {\n size: TextElement.Sizes.SMALL,\n color: TextElement.Colors.STANDARD,\n className: ChangelogClasses.date\n }, subtitle));\n };\n\n const renderFooter = () => {\n const Anchor = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getModule(m => m.displayName == \"Anchor\");\n const AnchorClasses = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"anchorUnderlineOnHover\") || {\n anchor: \"anchor-3Z-8Bb\",\n anchorUnderlineOnHover: \"anchorUnderlineOnHover-2ESHQB\"\n };\n\n const joinSupportServer = click => {\n click.preventDefault();\n click.stopPropagation();\n ModalStack.pop();\n modules__WEBPACK_IMPORTED_MODULE_1__[\"DiscordModules\"].InviteActions.acceptInviteAndTransitionToInviteChannel(\"2HScm8j\");\n };\n\n const supportLink = Anchor ? ce(Anchor, {\n onClick: joinSupportServer\n }, \"Join our Discord Server.\") : ce(\"a\", {\n className: `${AnchorClasses.anchor} ${AnchorClasses.anchorUnderlineOnHover}`,\n onClick: joinSupportServer\n }, \"Join our Discord Server.\");\n const defaultFooter = ce(TextElement, {\n size: TextElement.Sizes.SMALL,\n color: TextElement.Colors.STANDARD\n }, \"Need support? \", supportLink);\n return ce(FlexChild.Child, {\n grow: 1,\n shrink: 1\n }, footer ? footer : defaultFooter);\n };\n\n return ModalStack.push(Changelog, {\n className: ChangelogClasses.container,\n selectable: true,\n onScroll: _ => _,\n onClose: _ => _,\n renderHeader: renderHeader,\n renderFooter: renderFooter,\n children: changelogItems\n });\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvbW9kYWxzLmpzPzNhYjIiXSwibmFtZXMiOlsiTW9kYWxzIiwic2hvdWxkU2hvd0FkZG9uRXJyb3JzIiwiU2V0dGluZ3MiLCJnZXQiLCJNb2RhbEFjdGlvbnMiLCJXZWJwYWNrTW9kdWxlcyIsImdldEJ5UHJvcHMiLCJNb2RhbFN0YWNrIiwiQWxlcnRNb2RhbCIsImdldEJ5UHJvdG90eXBlcyIsIlRleHRFbGVtZW50IiwiQ29uZmlybWF0aW9uTW9kYWwiLCJmaW5kQnlEaXNwbGF5TmFtZSIsIk1hcmtkb3duIiwiZGVmYXVsdCIsInRpdGxlIiwiY29udGVudCIsIm1vZGFsIiwiRE9NIiwiY3JlYXRlRWxlbWVudCIsIlN0cmluZ3MiLCJva2F5IiwicXVlcnlTZWxlY3RvciIsImFkZEV2ZW50TGlzdGVuZXIiLCJjbGFzc0xpc3QiLCJhZGQiLCJzZXRUaW1lb3V0IiwicmVtb3ZlIiwiZG9jdW1lbnQiLCJhcHBlbmQiLCJhbGVydCIsInNob3dDb25maXJtYXRpb25Nb2RhbCIsImNhbmNlbFRleHQiLCJvcHRpb25zIiwiRm9ybWF0dGFibGVTdHJpbmciLCJ0b1N0cmluZyIsImVtcHR5RnVuY3Rpb24iLCJvbkNvbmZpcm0iLCJvbkNhbmNlbCIsImNvbmZpcm1UZXh0IiwiY2FuY2VsIiwiZGFuZ2VyIiwia2V5IiwidW5kZWZpbmVkIiwiQXJyYXkiLCJpc0FycmF5IiwibWFwIiwiYyIsIlJlYWN0Iiwib3Blbk1vZGFsIiwicHJvcHMiLCJPYmplY3QiLCJhc3NpZ24iLCJoZWFkZXIiLCJyZWQiLCJtb2RhbEtleSIsInNob3dBZGRvbkVycm9ycyIsInBsdWdpbnMiLCJwbHVnaW5FcnJvcnMiLCJ0aGVtZXMiLCJ0aGVtZUVycm9ycyIsImxlbmd0aCIsImFkZG9uRXJyb3JzIiwiUGFuZWxzIiwibmFtZSIsIm1lc3NhZ2UiLCJlcnJvciIsImdlbmVyYXRlVGFiIiwiZXJyb3JzIiwiY29udGFpbmVyIiwiZXJyIiwiZmlsZSIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJmb3JFYWNoIiwiZWwiLCJlIiwicHJldmVudERlZmF1bHQiLCJMb2dnZXIiLCJzdGFja3RyYWNlIiwidGFicyIsInNlbGVjdGVkIiwicmVtb3ZlQ2xhc3MiLCJhZGRDbGFzcyIsInRhcmdldCIsInNjcm9sbGVyIiwiaW5uZXJIVE1MIiwiaW5kZXgiLCJxdWVyeSIsImNsaWNrIiwic2hvd0NoYW5nZWxvZ01vZGFsIiwiQ2hhbmdlbG9nQ2xhc3NlcyIsIkZsZXhDaGlsZCIsIlRpdGxlcyIsIkNoYW5nZWxvZyIsImdldE1vZHVsZSIsIm0iLCJkZWZhdWx0UHJvcHMiLCJzZWxlY3RhYmxlIiwiTWFya2Rvd25QYXJzZXIiLCJ3YXJuIiwiaW1hZ2UiLCJkZXNjcmlwdGlvbiIsImNoYW5nZXMiLCJzdWJ0aXRsZSIsIkNvbmZpZyIsImJiZFZlcnNpb24iLCJmb290ZXIiLCJjZSIsImNoYW5nZWxvZ0l0ZW1zIiwic3JjIiwicHVzaCIsInBhcnNlIiwiZW50cnkiLCJ0eXBlIiwiYWRkZWQiLCJtYXJnaW4iLCJtYXJnaW5Ub3AiLCJjbGFzc05hbWUiLCJsaXN0IiwiaXRlbXMiLCJpIiwicmVuZGVySGVhZGVyIiwiQ2hpbGQiLCJncm93Iiwic2hyaW5rIiwidGFnIiwiVGFncyIsIkg0Iiwic2l6ZSIsIlNpemVzIiwiU01BTEwiLCJjb2xvciIsIkNvbG9ycyIsIlNUQU5EQVJEIiwiZGF0ZSIsInJlbmRlckZvb3RlciIsIkFuY2hvciIsImRpc3BsYXlOYW1lIiwiQW5jaG9yQ2xhc3NlcyIsImFuY2hvciIsImFuY2hvclVuZGVybGluZU9uSG92ZXIiLCJqb2luU3VwcG9ydFNlcnZlciIsInN0b3BQcm9wYWdhdGlvbiIsInBvcCIsIkRpc2NvcmRNb2R1bGVzIiwiSW52aXRlQWN0aW9ucyIsImFjY2VwdEludml0ZUFuZFRyYW5zaXRpb25Ub0ludml0ZUNoYW5uZWwiLCJzdXBwb3J0TGluayIsIm9uQ2xpY2siLCJkZWZhdWx0Rm9vdGVyIiwib25TY3JvbGwiLCJfIiwib25DbG9zZSIsImNoaWxkcmVuIl0s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Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb25maWd9IGZyb20gXCJkYXRhXCI7XHJcbmltcG9ydCB7TG9nZ2VyLCBXZWJwYWNrTW9kdWxlcywgUmVhY3QsIFNldHRpbmdzLCBTdHJpbmdzLCBET00sIERpc2NvcmRNb2R1bGVzfSBmcm9tIFwibW9kdWxlc1wiO1xyXG5pbXBvcnQgRm9ybWF0dGFibGVTdHJpbmcgZnJvbSBcIi4uL3N0cnVjdHMvc3RyaW5nXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNb2RhbHMge1xyXG5cclxuICAgIHN0YXRpYyBnZXQgc2hvdWxkU2hvd0FkZG9uRXJyb3JzKCkge3JldHVybiBTZXR0aW5ncy5nZXQoXCJzZXR0aW5nc1wiLCBcImFkZG9uc1wiLCBcImFkZG9uRXJyb3JzXCIpO31cclxuXHJcbiAgICBzdGF0aWMgZ2V0IE1vZGFsQWN0aW9ucygpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcIm9wZW5Nb2RhbFwiLCBcInVwZGF0ZU1vZGFsXCIpO31cclxuICAgIHN0YXRpYyBnZXQgTW9kYWxTdGFjaygpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcInB1c2hcIiwgXCJ1cGRhdGVcIiwgXCJwb3BcIiwgXCJwb3BXaXRoS2V5XCIpO31cclxuICAgIHN0YXRpYyBnZXQgQWxlcnRNb2RhbCgpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm90b3R5cGVzKFwiaGFuZGxlQ2FuY2VsXCIsIFwiaGFuZGxlU3VibWl0XCIsIFwiaGFuZGxlTWlub3JDb25maXJtXCIpO31cclxuICAgIHN0YXRpYyBnZXQgVGV4dEVsZW1lbnQoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJTaXplc1wiLCBcIldlaWdodHNcIik7fVxyXG4gICAgc3RhdGljIGdldCBDb25maXJtYXRpb25Nb2RhbCgpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZmluZEJ5RGlzcGxheU5hbWUoXCJDb25maXJtTW9kYWxcIik7fVxyXG4gICAgc3RhdGljIGdldCBNYXJrZG93bigpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZmluZEJ5RGlzcGxheU5hbWUoXCJNYXJrZG93blwiKTt9XHJcblxyXG4gICAgc3RhdGljIGRlZmF1bHQodGl0bGUsIGNvbnRlbnQpIHtcclxuICAgICAgICBjb25zdCBtb2RhbCA9IERPTS5jcmVhdGVFbGVtZW50KGA8ZGl2IGNsYXNzPVwiYmQtbW9kYWwtd3JhcHBlciB0aGVtZS1kYXJrXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmQtYmFja2Ryb3AgYmFja2Ryb3AtMXdybUtCXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmQtbW9kYWwgbW9kYWwtMVVHZG5SXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJkLW1vZGFsLWlubmVyIGlubmVyLTFKZUdWY1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyIGhlYWRlci0xUl9BakZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZVwiPiR7dGl0bGV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmQtbW9kYWwtYm9keVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNjcm9sbGVyLXdyYXAgZmFkZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzY3JvbGxlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2NvbnRlbnR9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb290ZXIgZm9vdGVyLTJ5ZkNnWCBmb290ZXItM3JEV2RDIGZvb3Rlci0yZ0wxcHBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYmQtYnV0dG9uXCI+JHtTdHJpbmdzLk1vZGFscy5va2F5fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5gKTtcclxuICAgICAgICBtb2RhbC5xdWVyeVNlbGVjdG9yKFwiLmZvb3RlciBidXR0b25cIikuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsICgpID0+IHtcclxuICAgICAgICAgICAgbW9kYWwuY2xhc3NMaXN0LmFkZChcImNsb3NpbmdcIik7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geyBtb2RhbC5yZW1vdmUoKTsgfSwgMzAwKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBtb2RhbC5xdWVyeVNlbGVjdG9yKFwiLmJkLWJhY2tkcm9wXCIpLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIG1vZGFsLmNsYXNzTGlzdC5hZGQoXCJjbG9zaW5nXCIpO1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsgbW9kYWwucmVtb3ZlKCk7IH0sIDMwMCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNhcHAtbW91bnRcIikuYXBwZW5kKG1vZGFsKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgYWxlcnQodGl0bGUsIGNvbnRlbnQpIHtcclxuICAgICAgICB0aGlzLnNob3dDb25maXJtYXRpb25Nb2RhbCh0aXRsZSwgY29udGVudCwge2NhbmNlbFRleHQ6IFwiXCJ9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNob3dzIGEgZ2VuZXJpYyBidXQgdmVyeSBjdXN0b21pemFibGUgY29uZmlybWF0aW9uIG1vZGFsIHdpdGggb3B0aW9uYWwgY29uZmlybSBhbmQgY2FuY2VsIGNhbGxiYWNrcy5cclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0aXRsZSAtIHRpdGxlIG9mIHRoZSBtb2RhbFxyXG4gICAgICogQHBhcmFtIHsoc3RyaW5nfFJlYWN0RWxlbWVudHxBcnJheTxzdHJpbmd8UmVhY3RFbGVtZW50Pil9IGNoaWxkcmVuIC0gYSBzaW5nbGUgb3IgbWl4ZWQgYXJyYXkgb2YgcmVhY3QgZWxlbWVudHMgYW5kIHN0cmluZ3MuIEV2ZXJ5dGhpbmcgaXMgd3JhcHBlZCBpbiBEaXNjb3JkJ3MgYE1hcmtkb3duYCBjb21wb25lbnQgc28gc3RyaW5ncyB3aWxsIHNob3cgYW5kIHJlbmRlciBwcm9wZXJseS5cclxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBbb3B0aW9uc10gLSBvcHRpb25zIHRvIG1vZGlmeSB0aGUgbW9kYWxcclxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMuZGFuZ2VyPWZhbHNlXSAtIHdoZXRoZXIgdGhlIG1haW4gYnV0dG9uIHNob3VsZCBiZSByZWQgb3Igbm90XHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMuY29uZmlybVRleHQ9T2theV0gLSB0ZXh0IGZvciB0aGUgY29uZmlybWF0aW9uL3N1Ym1pdCBidXR0b25cclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5jYW5jZWxUZXh0PUNhbmNlbF0gLSB0ZXh0IGZvciB0aGUgY2FuY2VsIGJ1dHRvblxyXG4gICAgICogQHBhcmFtIHtjYWxsYWJsZX0gW29wdGlvbnMub25Db25maXJtPU5PT1BdIC0gY2FsbGJhY2sgdG8gb2NjdXIgd2hlbiBjbGlja2luZyB0aGUgc3VibWl0IGJ1dHRvblxyXG4gICAgICogQHBhcmFtIHtjYWxsYWJsZX0gW29wdGlvbnMub25DYW5jZWw9Tk9PUF0gLSBjYWxsYmFjayB0byBvY2N1ciB3aGVuIGNsaWNraW5nIHRoZSBjYW5jZWwgYnV0dG9uXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMua2V5XSAtIGtleSB1c2VkIHRvIGlkZW50aWZ5IHRoZSBtb2RhbC4gSWYgbm90IHByb3ZpZGVkLCBvbmUgaXMgZ2VuZXJhdGVkIGFuZCByZXR1cm5lZFxyXG4gICAgICogQHJldHVybnMge3N0cmluZ30gLSB0aGUga2V5IHVzZWQgZm9yIHRoaXMgbW9kYWxcclxuICAgICAqL1xyXG4gICAgc3RhdGljIHNob3dDb25maXJtYXRpb25Nb2RhbCh0aXRsZSwgY29udGVudCwgb3B0aW9ucyA9IHt9KSB7XHJcbiAgICAgICAgY29uc3QgTWFya2Rvd24gPSB0aGlzLk1hcmtkb3duO1xyXG4gICAgICAgIGNvbnN0IENvbmZpcm1hdGlvbk1vZGFsID0gdGhpcy5Db25maXJtYXRpb25Nb2RhbDtcclxuICAgICAgICBjb25zdCBNb2RhbEFjdGlvbnMgPSB0aGlzLk1vZGFsQWN0aW9ucztcclxuICAgICAgICBpZiAoY29udGVudCBpbnN0YW5jZW9mIEZvcm1hdHRhYmxlU3RyaW5nKSBjb250ZW50ID0gY29udGVudC50b1N0cmluZygpO1xyXG4gICAgICAgIGlmICghdGhpcy5Nb2RhbEFjdGlvbnMgfHwgIXRoaXMuQ29uZmlybWF0aW9uTW9kYWwgfHwgIXRoaXMuTWFya2Rvd24pIHJldHVybiB0aGlzLmRlZmF1bHQodGl0bGUsIGNvbnRlbnQpO1xyXG5cclxuICAgICAgICBjb25zdCBlbXB0eUZ1bmN0aW9uID0gKCkgPT4ge307XHJcbiAgICAgICAgY29uc3Qge29uQ29uZmlybSA9IGVtcHR5RnVuY3Rpb24sIG9uQ2FuY2VsID0gZW1wdHlGdW5jdGlvbiwgY29uZmlybVRleHQgPSBTdHJpbmdzLk1vZGFscy5va2F5LCBjYW5jZWxUZXh0ID0gU3RyaW5ncy5Nb2RhbHMuY2FuY2VsLCBkYW5nZXIgPSBmYWxzZSwga2V5ID0gdW5kZWZpbmVkfSA9IG9wdGlvbnM7XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGNvbnRlbnQpKSBjb250ZW50ID0gW2NvbnRlbnRdO1xyXG4gICAgICAgIGNvbnRlbnQgPSBjb250ZW50Lm1hcChjID0+IHR5cGVvZihjKSA9PT0gXCJzdHJpbmdcIiA/IFJlYWN0LmNyZWF0ZUVsZW1lbnQoTWFya2Rvd24sIG51bGwsIGMpIDogYyk7XHJcblxyXG4gICAgICAgIHJldHVybiBNb2RhbEFjdGlvbnMub3Blbk1vZGFsKHByb3BzID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ29uZmlybWF0aW9uTW9kYWwsIE9iamVjdC5hc3NpZ24oe1xyXG4gICAgICAgICAgICAgICAgaGVhZGVyOiB0aXRsZSxcclxuICAgICAgICAgICAgICAgIHJlZDogZGFuZ2VyLFxyXG4gICAgICAgICAgICAgICAgY29uZmlybVRleHQ6IGNvbmZpcm1UZXh0LFxyXG4gICAgICAgICAgICAgICAgY2FuY2VsVGV4dDogY2FuY2VsVGV4dCxcclxuICAgICAgICAgICAgICAgIG9uQ29uZmlybTogb25Db25maXJtLFxyXG4gICAgICAgICAgICAgICAgb25DYW5jZWw6IG9uQ2FuY2VsXHJcbiAgICAgICAgICAgIH0sIHByb3BzKSwgY29udGVudCk7XHJcbiAgICAgICAgfSwge21vZGFsS2V5OiBrZXl9KTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgc2hvd0FkZG9uRXJyb3JzKHtwbHVnaW5zOiBwbHVnaW5FcnJvcnMgPSBbXSwgdGhlbWVzOiB0aGVtZUVycm9ycyA9IFtdfSkge1xyXG4gICAgICAgIGlmICghcGx1Z2luRXJyb3JzIHx8ICF0aGVtZUVycm9ycyB8fCAhdGhpcy5zaG91bGRTaG93QWRkb25FcnJvcnMpIHJldHVybjtcclxuICAgICAgICBpZiAoIXBsdWdpbkVycm9ycy5sZW5ndGggJiYgIXRoZW1lRXJyb3JzLmxlbmd0aCkgcmV0dXJuO1xyXG4gICAgICAgIGNvbnN0IG1vZGFsID0gRE9NLmNyZWF0ZUVsZW1lbnQoYDxkaXYgY2xhc3M9XCJiZC1tb2RhbC13cmFwcGVyIHRoZW1lLWRhcmtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJkLWJhY2tkcm9wIGJhY2tkcm9wLTF3cm1LQlwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmQtbW9kYWwgYmQtY29udGVudC1tb2RhbCBtb2RhbC0xVUdkblJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiZC1tb2RhbC1pbm5lciBpbm5lci0xSmVHVmNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyIGhlYWRlci0xUl9BakZcIj48ZGl2IGNsYXNzPVwidGl0bGVcIj4ke1N0cmluZ3MuTW9kYWxzLmFkZG9uRXJyb3JzfTwvZGl2PjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiZC1tb2RhbC1ib2R5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWItYmFyLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYi1iYXIgVE9QXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYi1iYXItaXRlbVwiPiR7U3RyaW5ncy5QYW5lbHMucGx1Z2luc308L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFiLWJhci1pdGVtXCI+JHtTdHJpbmdzLlBhbmVscy50aGVtZXN9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1oZWFkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1jb2x1bW4gY29sdW1uLW5hbWVcIj4ke1N0cmluZ3MuTW9kYWxzLm5hbWV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtY29sdW1uIGNvbHVtbi1tZXNzYWdlXCI+JHtTdHJpbmdzLk1vZGFscy5tZXNzYWdlfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWNvbHVtbiBjb2x1bW4tZXJyb3JcIj4ke1N0cmluZ3MuTW9kYWxzLmVycm9yfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNjcm9sbGVyLXdyYXAgZmFkZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNjcm9sbGVyXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb290ZXIgZm9vdGVyLTJ5ZkNnWCBmb290ZXItM3JEV2RDIGZvb3Rlci0yZ0wxcHBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJiZC1idXR0b25cIj4ke1N0cmluZ3MuTW9kYWxzLm9rYXl9PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+YCk7XHJcblxyXG4gICAgICAgIGNvbnN0IGdlbmVyYXRlVGFiID0gZnVuY3Rpb24oZXJyb3JzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IERPTS5jcmVhdGVFbGVtZW50KGA8ZGl2IGNsYXNzPVwiZXJyb3JzXCI+YCk7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgZXJyIG9mIGVycm9ycykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZXJyb3IgPSBET00uY3JlYXRlRWxlbWVudChgPGRpdiBjbGFzcz1cImVycm9yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1jb2x1bW4gY29sdW1uLW5hbWVcIj4ke2Vyci5uYW1lID8gZXJyLm5hbWUgOiBlcnIuZmlsZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWNvbHVtbiBjb2x1bW4tbWVzc2FnZVwiPiR7ZXJyLm1lc3NhZ2V9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1jb2x1bW4gY29sdW1uLWVycm9yXCI+PGEgY2xhc3M9XCJlcnJvci1saW5rXCIgaHJlZj1cIlwiPiR7ZXJyLmVycm9yID8gZXJyLmVycm9yLm1lc3NhZ2UgOiBcIlwifTwvYT48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5gKTtcclxuICAgICAgICAgICAgICAgIGNvbnRhaW5lci5hcHBlbmQoZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGVyci5lcnJvcikge1xyXG4gICAgICAgICAgICAgICAgICAgIGVycm9yLnF1ZXJ5U2VsZWN0b3JBbGwoXCJhXCIpLmZvckVhY2goZWwgPT4gZWwuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIChlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2VyLnN0YWNrdHJhY2UoXCJBZGRvbkVycm9yXCIsIGBFcnJvciBkZXRhaWxzIGZvciAke2Vyci5uYW1lID8gZXJyLm5hbWUgOiBlcnIuZmlsZX0uYCwgZXJyLmVycm9yKTtcclxuICAgICAgICAgICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIGNvbnRhaW5lcjtcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBjb25zdCB0YWJzID0gW2dlbmVyYXRlVGFiKHBsdWdpbkVycm9ycyksIGdlbmVyYXRlVGFiKHRoZW1lRXJyb3JzKV07XHJcblxyXG4gICAgICAgIG1vZGFsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIudGFiLWJhci1pdGVtXCIpLmZvckVhY2goZWwgPT4gZWwuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIChlKSA9PiB7XHJcbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPSBtb2RhbC5xdWVyeVNlbGVjdG9yKFwiLnRhYi1iYXItaXRlbS5zZWxlY3RlZFwiKTtcclxuICAgICAgICAgICAgaWYgKHNlbGVjdGVkKSBET00ucmVtb3ZlQ2xhc3Moc2VsZWN0ZWQsIFwic2VsZWN0ZWRcIik7XHJcbiAgICAgICAgICAgIERPTS5hZGRDbGFzcyhlLnRhcmdldCwgXCJzZWxlY3RlZFwiKTtcclxuICAgICAgICAgICAgY29uc3Qgc2Nyb2xsZXIgPSBtb2RhbC5xdWVyeVNlbGVjdG9yKFwiLnNjcm9sbGVyXCIpO1xyXG4gICAgICAgICAgICBzY3JvbGxlci5pbm5lckhUTUwgPSBcIlwiO1xyXG4gICAgICAgICAgICBzY3JvbGxlci5hcHBlbmQodGFic1tET00uaW5kZXgoZS50YXJnZXQpXSk7XHJcbiAgICAgICAgfSkpO1xyXG5cclxuICAgICAgICBtb2RhbC5xdWVyeVNlbGVjdG9yKFwiLmZvb3RlciBidXR0b25cIikuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsICgpID0+IHtcclxuICAgICAgICAgICAgRE9NLmFkZENsYXNzKG1vZGFsLCBcImNsb3NpbmdcIik7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geyBtb2RhbC5yZW1vdmUoKTsgfSwgMzAwKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBtb2RhbC5xdWVyeVNlbGVjdG9yKFwiLmJkLWJhY2tkcm9wXCIpLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIERPTS5hZGRDbGFzcyhtb2RhbCwgXCJjbG9zaW5nXCIpO1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsgbW9kYWwucmVtb3ZlKCk7IH0sIDMwMCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgRE9NLnF1ZXJ5KFwiI2FwcC1tb3VudFwiKS5hcHBlbmQobW9kYWwpO1xyXG4gICAgICAgIGlmIChwbHVnaW5FcnJvcnMubGVuZ3RoKSBtb2RhbC5xdWVyeVNlbGVjdG9yKFwiLnRhYi1iYXItaXRlbVwiKS5jbGljaygpO1xyXG4gICAgICAgIGVsc2UgbW9kYWwucXVlcnlTZWxlY3RvckFsbChcIi50YWItYmFyLWl0ZW1cIilbMV0uY2xpY2soKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgc2hvd0NoYW5nZWxvZ01vZGFsKG9wdGlvbnMgPSB7fSkge1xyXG4gICAgICAgIGNvbnN0IE1vZGFsU3RhY2sgPSBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwicHVzaFwiLCBcInVwZGF0ZVwiLCBcInBvcFwiLCBcInBvcFdpdGhLZXlcIik7XHJcbiAgICAgICAgY29uc3QgQ2hhbmdlbG9nQ2xhc3NlcyA9IFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJmaXhlZFwiLCBcImltcHJvdmVkXCIpO1xyXG4gICAgICAgIGNvbnN0IFRleHRFbGVtZW50ID0gV2VicGFja01vZHVsZXMuZmluZEJ5RGlzcGxheU5hbWUoXCJUZXh0XCIpO1xyXG4gICAgICAgIGNvbnN0IEZsZXhDaGlsZCA9IFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJDaGlsZFwiKTtcclxuICAgICAgICBjb25zdCBUaXRsZXMgPSBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiVGFnc1wiLCBcImRlZmF1bHRcIik7XHJcbiAgICAgICAgY29uc3QgQ2hhbmdlbG9nID0gV2VicGFja01vZHVsZXMuZ2V0TW9kdWxlKG0gPT4gbS5kZWZhdWx0UHJvcHMgJiYgbS5kZWZhdWx0UHJvcHMuc2VsZWN0YWJsZSA9PSBmYWxzZSk7XHJcbiAgICAgICAgY29uc3QgTWFya2Rvd25QYXJzZXIgPSBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiZGVmYXVsdFJ1bGVzXCIsIFwicGFyc2VcIik7XHJcbiAgICAgICAgaWYgKCFDaGFuZ2Vsb2cgfHwgIU1vZGFsU3RhY2sgfHwgIUNoYW5nZWxvZ0NsYXNzZXMgfHwgIVRleHRFbGVtZW50IHx8ICFGbGV4Q2hpbGQgfHwgIVRpdGxlcyB8fCAhTWFya2Rvd25QYXJzZXIpIHJldHVybiBMb2dnZXIud2FybihcIk1vZGFsc1wiLCBcInNob3dDaGFuZ2Vsb2dNb2RhbCBtaXNzaW5nIG1vZHVsZXNcIik7XHJcbiAgICBcclxuICAgICAgICBjb25zdCB7aW1hZ2UgPSBcImh0dHBzOi8vcmVwb3NpdG9yeS1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzEwNTQ3MzUzNy85NTdiNTQ4MC03YzI2LTExZTktODQwMS01MGZhODIwY2JhZTVcIiwgZGVzY3JpcHRpb24gPSBcIlwiLCBjaGFuZ2VzID0gW10sIHRpdGxlID0gXCJCYW5kYWdlZEJEXCIsIHN1YnRpdGxlID0gYHYke0NvbmZpZy5iYmRWZXJzaW9ufWAsIGZvb3Rlcn0gPSBvcHRpb25zO1xyXG4gICAgICAgIGNvbnN0IGNlID0gUmVhY3QuY3JlYXRlRWxlbWVudDtcclxuICAgICAgICBjb25zdCBjaGFuZ2Vsb2dJdGVtcyA9IFtjZShcImltZ1wiLCB7c3JjOiBpbWFnZX0pXTtcclxuICAgICAgICBpZiAoZGVzY3JpcHRpb24pIGNoYW5nZWxvZ0l0ZW1zLnB1c2goY2UoXCJwXCIsIG51bGwsIE1hcmtkb3duUGFyc2VyLnBhcnNlKGRlc2NyaXB0aW9uKSkpO1xyXG4gICAgICAgIGZvciAobGV0IGMgPSAwOyBjIDwgY2hhbmdlcy5sZW5ndGg7IGMrKykge1xyXG4gICAgICAgICAgICBjb25zdCBlbnRyeSA9IGNoYW5nZXNbY107XHJcbiAgICAgICAgICAgIGNvbnN0IHR5cGUgPSBDaGFuZ2Vsb2dDbGFzc2VzW2VudHJ5LnR5cGVdID8gQ2hhbmdlbG9nQ2xhc3Nlc1tlbnRyeS50eXBlXSA6IENoYW5nZWxvZ0NsYXNzZXMuYWRkZWQ7XHJcbiAgICAgICAgICAgIGNvbnN0IG1hcmdpbiA9IGMgPT0gMCA/IENoYW5nZWxvZ0NsYXNzZXMubWFyZ2luVG9wIDogXCJcIjtcclxuICAgICAgICAgICAgY2hhbmdlbG9nSXRlbXMucHVzaChjZShcImgxXCIsIHtjbGFzc05hbWU6IGAke3R5cGV9ICR7bWFyZ2lufWAsfSwgZW50cnkudGl0bGUpKTtcclxuICAgICAgICAgICAgY29uc3QgbGlzdCA9IGNlKFwidWxcIiwgbnVsbCwgZW50cnkuaXRlbXMubWFwKGkgPT4gY2UoXCJsaVwiLCBudWxsLCBNYXJrZG93blBhcnNlci5wYXJzZShpKSkpKTtcclxuICAgICAgICAgICAgY2hhbmdlbG9nSXRlbXMucHVzaChsaXN0KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgcmVuZGVySGVhZGVyID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBjZShGbGV4Q2hpbGQuQ2hpbGQsIHtncm93OiAxLCBzaHJpbms6IDF9LFxyXG4gICAgICAgICAgICAgICAgY2UoVGl0bGVzLmRlZmF1bHQsIHt0YWc6IFRpdGxlcy5UYWdzLkg0fSwgdGl0bGUpLFxyXG4gICAgICAgICAgICAgICAgY2UoVGV4dEVsZW1lbnQsIHtzaXplOiBUZXh0RWxlbWVudC5TaXplcy5TTUFMTCwgY29sb3I6IFRleHRFbGVtZW50LkNvbG9ycy5TVEFOREFSRCwgY2xhc3NOYW1lOiBDaGFuZ2Vsb2dDbGFzc2VzLmRhdGV9LCBzdWJ0aXRsZSlcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9O1xyXG4gICAgXHJcbiAgICAgICAgY29uc3QgcmVuZGVyRm9vdGVyID0gKCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBBbmNob3IgPSBXZWJwYWNrTW9kdWxlcy5nZXRNb2R1bGUobSA9PiBtLmRpc3BsYXlOYW1lID09IFwiQW5jaG9yXCIpO1xyXG4gICAgICAgICAgICBjb25zdCBBbmNob3JDbGFzc2VzID0gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcImFuY2hvclVuZGVybGluZU9uSG92ZXJcIikgfHwge2FuY2hvcjogXCJhbmNob3ItM1otOEJiXCIsIGFuY2hvclVuZGVybGluZU9uSG92ZXI6IFwiYW5jaG9yVW5kZXJsaW5lT25Ib3Zlci0yRVNIUUJcIn07XHJcbiAgICAgICAgICAgIGNvbnN0IGpvaW5TdXBwb3J0U2VydmVyID0gKGNsaWNrKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjbGljay5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICAgICAgY2xpY2suc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgICAgICBNb2RhbFN0YWNrLnBvcCgpO1xyXG4gICAgICAgICAgICAgICAgRGlzY29yZE1vZHVsZXMuSW52aXRlQWN0aW9ucy5hY2NlcHRJbnZpdGVBbmRUcmFuc2l0aW9uVG9JbnZpdGVDaGFubmVsKFwiMkhTY204alwiKTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgY29uc3Qgc3VwcG9ydExpbmsgPSBBbmNob3IgPyBjZShBbmNob3IsIHtvbkNsaWNrOiBqb2luU3VwcG9ydFNlcnZlcn0sIFwiSm9pbiBvdXIgRGlzY29yZCBTZXJ2ZXIuXCIpIDogY2UoXCJhXCIsIHtjbGFzc05hbWU6IGAke0FuY2hvckNsYXNzZXMuYW5jaG9yfSAke0FuY2hvckNsYXNzZXMuYW5jaG9yVW5kZXJsaW5lT25Ib3Zlcn1gLCBvbkNsaWNrOiBqb2luU3VwcG9ydFNlcnZlcn0sIFwiSm9pbiBvdXIgRGlzY29yZCBTZXJ2ZXIuXCIpO1xyXG4gICAgICAgICAgICBjb25zdCBkZWZhdWx0Rm9vdGVyID0gY2UoVGV4dEVsZW1lbnQsIHtzaXplOiBUZXh0RWxlbWVudC5TaXplcy5TTUFMTCwgY29sb3I6IFRleHRFbGVtZW50LkNvbG9ycy5TVEFOREFSRH0sIFwiTmVlZCBzdXBwb3J0PyBcIiwgc3VwcG9ydExpbmspO1xyXG4gICAgICAgICAgICByZXR1cm4gY2UoRmxleENoaWxkLkNoaWxkLCB7Z3JvdzogMSwgc2hyaW5rOiAxfSwgZm9vdGVyID8gZm9vdGVyIDogZGVmYXVsdEZvb3Rlcik7XHJcbiAgICAgICAgfTtcclxuICAgIFxyXG4gICAgICAgIHJldHVybiBNb2RhbFN0YWNrLnB1c2goQ2hhbmdlbG9nLCB7XHJcbiAgICAgICAgICAgIGNsYXNzTmFtZTogQ2hhbmdlbG9nQ2xhc3Nlcy5jb250YWluZXIsXHJcbiAgICAgICAgICAgIHNlbGVjdGFibGU6IHRydWUsXHJcbiAgICAgICAgICAgIG9uU2Nyb2xsOiBfID0+IF8sXHJcbiAgICAgICAgICAgIG9uQ2xvc2U6IF8gPT4gXyxcclxuICAgICAgICAgICAgcmVuZGVySGVhZGVyOiByZW5kZXJIZWFkZXIsXHJcbiAgICAgICAgICAgIHJlbmRlckZvb3RlcjogcmVuZGVyRm9vdGVyLFxyXG4gICAgICAgICAgICBjaGlsZHJlbjogY2hhbmdlbG9nSXRlbXNcclxuICAgICAgICB9KTtcclxuICAgIH1cclxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/modals.js\n"); /***/ }), @@ -983,7 +982,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return ServerCard; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass ServerCard extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n if (!this.props.server.iconUrl) this.props.server.iconUrl = this.props.defaultAvatar();\n this.state = {\n imageError: false,\n joined: this.props.joined\n };\n this.join = this.join.bind(this);\n this.handleError = this.handleError.bind(this);\n }\n\n render() {\n const {\n server\n } = this.props;\n const buttonText = typeof this.state.joined == \"string\" ? `${modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.joining}...` : this.state.joined ? modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.joined : modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.join;\n const buttonClass = `bd-button${this.state.joined == true ? \" bd-button-success\" : \"\"}`;\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: `bd-server-card${server.pinned ? \" bd-server-card-pinned\" : \"\"}`\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"img\", {\n className: \"bd-server-image\",\n src: server.iconUrl,\n onError: this.handleError\n }), \",\", /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-server-content\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-server-header\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"h5\", {\n className: \"bd-server-name\"\n }, server.name), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"h5\", {\n className: \"bd-server-member-count\"\n }, server.members, \" Members\")), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-scroller-wrap bd-server-description-container\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-scroller bd-server-description\"\n }, server.description)), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-server-footer\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-server-tags\"\n }, server.categories.join(\", \")), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"button\", {\n type: \"button\",\n className: buttonClass,\n onClick: this.join\n }, buttonText))));\n }\n\n handleError() {\n this.props.server.iconUrl = this.props.defaultAvatar();\n this.setState({\n imageError: true\n });\n }\n\n async join() {\n if (this.state.joined) return;\n this.setState({\n joined: \"joining\"\n });\n const didJoin = await this.props.join(this.props.server.identifier, this.props.server.nativejoin);\n this.setState({\n joined: didJoin\n });\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL3B1YmxpY3NlcnZlcnMvY2FyZC5qc3g/NzYwMiJdLCJuYW1lcyI6WyJTZXJ2ZXJDYXJkIiwiUmVhY3QiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwic2VydmVyIiwiaWNvblVybCIsImRlZmF1bHRBdmF0YXIiLCJzdGF0ZSIsImltYWdlRXJyb3IiLCJqb2luZWQiLCJqb2luIiwiYmluZCIsImhhbmRsZUVycm9yIiwicmVuZGVyIiwiYnV0dG9uVGV4dCIsIlN0cmluZ3MiLCJQdWJsaWNTZXJ2ZXJzIiwiam9pbmluZyIsImJ1dHRvbkNsYXNzIiwicGlubmVkIiwibmFtZSIsIm1lbWJlcnMiLCJkZXNjcmlwdGlvbiIsImNhdGVnb3JpZXMiLCJzZXRTdGF0ZSIsImRpZEpvaW4iLCJpZGVudGlmaWVyIiwibmF0aXZlam9pbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFFZSxNQUFNQSxVQUFOLFNBQXlCQyw2Q0FBSyxDQUFDQyxTQUEvQixDQUF5QztBQUNwREMsYUFBVyxDQUFDQyxLQUFELEVBQVE7QUFDZixVQUFNQSxLQUFOO0FBQ0EsUUFBSSxDQUFDLEtBQUtBLEtBQUwsQ0FBV0MsTUFBWCxDQUFrQkMsT0FBdkIsRUFBZ0MsS0FBS0YsS0FBTCxDQUFXQyxNQUFYLENBQWtCQyxPQUFsQixHQUE0QixLQUFLRixLQUFMLENBQVdHLGFBQVgsRUFBNUI7QUFDaEMsU0FBS0MsS0FBTCxHQUFhO0FBQ1RDLGdCQUFVLEVBQUUsS0FESDtBQUVUQyxZQUFNLEVBQUUsS0FBS04sS0FBTCxDQUFXTTtBQUZWLEtBQWI7QUFJQSxTQUFLQyxJQUFMLEdBQVksS0FBS0EsSUFBTCxDQUFVQyxJQUFWLENBQWUsSUFBZixDQUFaO0FBQ0EsU0FBS0MsV0FBTCxHQUFtQixLQUFLQSxXQUFMLENBQWlCRCxJQUFqQixDQUFzQixJQUF0QixDQUFuQjtBQUNIOztBQUVERSxRQUFNLEdBQUc7QUFDTCxVQUFNO0FBQUNUO0FBQUQsUUFBVyxLQUFLRCxLQUF0QjtBQUNBLFVBQU1XLFVBQVUsR0FBRyxPQUFPLEtBQUtQLEtBQUwsQ0FBV0UsTUFBbEIsSUFBNkIsUUFBN0IsR0FBeUMsR0FBRU0sK0NBQU8sQ0FBQ0MsYUFBUixDQUFzQkMsT0FBUSxLQUF6RSxHQUFnRixLQUFLVixLQUFMLENBQVdFLE1BQVgsR0FBb0JNLCtDQUFPLENBQUNDLGFBQVIsQ0FBc0JQLE1BQTFDLEdBQW1ETSwrQ0FBTyxDQUFDQyxhQUFSLENBQXNCTixJQUE1SztBQUNBLFVBQU1RLFdBQVcsR0FBSSxZQUFXLEtBQUtYLEtBQUwsQ0FBV0UsTUFBWCxJQUFxQixJQUFyQixHQUE0QixvQkFBNUIsR0FBbUQsRUFBRyxFQUF0RjtBQUNBLHdCQUFPO0FBQUssZUFBUyxFQUFHLGlCQUFnQkwsTUFBTSxDQUFDZSxNQUFQLEdBQWdCLHdCQUFoQixHQUEyQyxFQUFHO0FBQS9FLG9CQUNDO0FBQUssZUFBUyxFQUFDLGlCQUFmO0FBQWlDLFNBQUcsRUFBRWYsTUFBTSxDQUFDQyxPQUE3QztBQUFzRCxhQUFPLEVBQUUsS0FBS087QUFBcEUsTUFERCxvQkFFQztBQUFLLGVBQVMsRUFBQztBQUFmLG9CQUNJO0FBQUssZUFBUyxFQUFDO0FBQWYsb0JBQ0k7QUFBSSxlQUFTLEVBQUM7QUFBZCxPQUFnQ1IsTUFBTSxDQUFDZ0IsSUFBdkMsQ0FESixlQUVJO0FBQUksZUFBUyxFQUFDO0FBQWQsT0FBd0NoQixNQUFNLENBQUNpQixPQUEvQyxhQUZKLENBREosZUFLSTtBQUFLLGVBQVMsRUFBQztBQUFmLG9CQUNJO0FBQUssZUFBUyxFQUFDO0FBQWYsT0FBb0RqQixNQUFNLENBQUNrQixXQUEzRCxDQURKLENBTEosZUFRSTtBQUFLLGVBQVMsRUFBQztBQUFmLG9CQUNJO0FBQUssZUFBUyxFQUFDO0FBQWYsT0FBaUNsQixNQUFNLENBQUNtQixVQUFQLENBQWtCYixJQUFsQixDQUF1QixJQUF2QixDQUFqQyxDQURKLGVBRUk7QUFBUSxVQUFJLEVBQUMsUUFBYjtBQUFzQixlQUFTLEVBQUVRLFdBQWpDO0FBQThDLGFBQU8sRUFBRSxLQUFLUjtBQUE1RCxPQUFtRUksVUFBbkUsQ0FGSixDQVJKLENBRkQsQ0FBUDtBQWdCSDs7QUFFREYsYUFBVyxHQUFHO0FBQ1YsU0FBS1QsS0FBTCxDQUFXQyxNQUFYLENBQWtCQyxPQUFsQixHQUE0QixLQUFLRixLQUFMLENBQVdHLGFBQVgsRUFBNUI7QUFDQSxTQUFLa0IsUUFBTCxDQUFjO0FBQUNoQixnQkFBVSxFQUFFO0FBQWIsS0FBZDtBQUNIOztBQUVELFFBQU1FLElBQU4sR0FBYTtBQUNULFFBQUksS0FBS0gsS0FBTCxDQUFXRSxNQUFmLEVBQXVCO0FBQ3ZCLFNBQUtlLFFBQUwsQ0FBYztBQUFDZixZQUFNLEVBQUU7QUFBVCxLQUFkO0FBQ0EsVUFBTWdCLE9BQU8sR0FBRyxNQUFNLEtBQUt0QixLQUFMLENBQVdPLElBQVgsQ0FBZ0IsS0FBS1AsS0FBTCxDQUFXQyxNQUFYLENBQWtCc0IsVUFBbEMsRUFBOEMsS0FBS3ZCLEtBQUwsQ0FBV0MsTUFBWCxDQUFrQnVCLFVBQWhFLENBQXRCO0FBQ0EsU0FBS0gsUUFBTCxDQUFjO0FBQUNmLFlBQU0sRUFBRWdCO0FBQVQsS0FBZDtBQUNIOztBQTVDbUQiLCJmaWxlIjoiLi9zcmMvdWkvcHVibGljc2VydmVycy9jYXJkLmpzeC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhY3QsIFN0cmluZ3N9IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTZXJ2ZXJDYXJkIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcclxuICAgIGNvbnN0cnVjdG9yKHByb3BzKSB7XHJcbiAgICAgICAgc3VwZXIocHJvcHMpO1xyXG4gICAgICAgIGlmICghdGhpcy5wcm9wcy5zZXJ2ZXIuaWNvblVybCkgdGhpcy5wcm9wcy5zZXJ2ZXIuaWNvblVybCA9IHRoaXMucHJvcHMuZGVmYXVsdEF2YXRhcigpO1xyXG4gICAgICAgIHRoaXMuc3RhdGUgPSB7XHJcbiAgICAgICAgICAgIGltYWdlRXJyb3I6IGZhbHNlLFxyXG4gICAgICAgICAgICBqb2luZWQ6IHRoaXMucHJvcHMuam9pbmVkXHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLmpvaW4gPSB0aGlzLmpvaW4uYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLmhhbmRsZUVycm9yID0gdGhpcy5oYW5kbGVFcnJvci5iaW5kKHRoaXMpO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICBjb25zdCB7c2VydmVyfSA9IHRoaXMucHJvcHM7XHJcbiAgICAgICAgY29uc3QgYnV0dG9uVGV4dCA9IHR5cGVvZih0aGlzLnN0YXRlLmpvaW5lZCkgPT0gXCJzdHJpbmdcIiA/IGAke1N0cmluZ3MuUHVibGljU2VydmVycy5qb2luaW5nfS4uLmAgOiB0aGlzLnN0YXRlLmpvaW5lZCA/IFN0cmluZ3MuUHVibGljU2VydmVycy5qb2luZWQgOiBTdHJpbmdzLlB1YmxpY1NlcnZlcnMuam9pbjtcclxuICAgICAgICBjb25zdCBidXR0b25DbGFzcyA9IGBiZC1idXR0b24ke3RoaXMuc3RhdGUuam9pbmVkID09IHRydWUgPyBcIiBiZC1idXR0b24tc3VjY2Vzc1wiIDogXCJcIn1gO1xyXG4gICAgICAgIHJldHVybiA8ZGl2IGNsYXNzTmFtZT17YGJkLXNlcnZlci1jYXJkJHtzZXJ2ZXIucGlubmVkID8gXCIgYmQtc2VydmVyLWNhcmQtcGlubmVkXCIgOiBcIlwifWB9PlxyXG4gICAgICAgICAgICAgICAgPGltZyBjbGFzc05hbWU9XCJiZC1zZXJ2ZXItaW1hZ2VcIiBzcmM9e3NlcnZlci5pY29uVXJsfSBvbkVycm9yPXt0aGlzLmhhbmRsZUVycm9yfSAvPixcclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmQtc2VydmVyLWNvbnRlbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJkLXNlcnZlci1oZWFkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGg1IGNsYXNzTmFtZT1cImJkLXNlcnZlci1uYW1lXCI+e3NlcnZlci5uYW1lfTwvaDU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxoNSBjbGFzc05hbWU9XCJiZC1zZXJ2ZXItbWVtYmVyLWNvdW50XCI+e3NlcnZlci5tZW1iZXJzfSBNZW1iZXJzPC9oNT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZC1zY3JvbGxlci13cmFwIGJkLXNlcnZlci1kZXNjcmlwdGlvbi1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZC1zY3JvbGxlciBiZC1zZXJ2ZXItZGVzY3JpcHRpb25cIj57c2VydmVyLmRlc2NyaXB0aW9ufTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmQtc2VydmVyLWZvb3RlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJkLXNlcnZlci10YWdzXCI+e3NlcnZlci5jYXRlZ29yaWVzLmpvaW4oXCIsIFwiKX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3NOYW1lPXtidXR0b25DbGFzc30gb25DbGljaz17dGhpcy5qb2lufT57YnV0dG9uVGV4dH08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj47XHJcbiAgICB9XHJcblxyXG4gICAgaGFuZGxlRXJyb3IoKSB7XHJcbiAgICAgICAgdGhpcy5wcm9wcy5zZXJ2ZXIuaWNvblVybCA9IHRoaXMucHJvcHMuZGVmYXVsdEF2YXRhcigpO1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe2ltYWdlRXJyb3I6IHRydWV9KTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBqb2luKCkge1xyXG4gICAgICAgIGlmICh0aGlzLnN0YXRlLmpvaW5lZCkgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe2pvaW5lZDogXCJqb2luaW5nXCJ9KTtcclxuICAgICAgICBjb25zdCBkaWRKb2luID0gYXdhaXQgdGhpcy5wcm9wcy5qb2luKHRoaXMucHJvcHMuc2VydmVyLmlkZW50aWZpZXIsIHRoaXMucHJvcHMuc2VydmVyLm5hdGl2ZWpvaW4pO1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe2pvaW5lZDogZGlkSm9pbn0pO1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/publicservers/card.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return ServerCard; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass ServerCard extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n if (!this.props.server.iconUrl) this.props.server.iconUrl = this.props.defaultAvatar();\n this.state = {\n imageError: false,\n joined: this.props.joined\n };\n this.join = this.join.bind(this);\n this.handleError = this.handleError.bind(this);\n }\n\n render() {\n const {\n server\n } = this.props;\n const buttonText = typeof this.state.joined == \"string\" ? `${modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.joining}...` : this.state.joined ? modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.joined : modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.join;\n const buttonClass = `bd-button${this.state.joined == true ? \" bd-button-success\" : \"\"}`;\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: `bd-server-card${server.pinned ? \" bd-server-card-pinned\" : \"\"}`\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"img\", {\n className: \"bd-server-image\",\n src: server.iconUrl,\n onError: this.handleError\n }), \",\", /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-server-content\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-server-header\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"h5\", {\n className: \"bd-server-name\"\n }, server.name), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"h5\", {\n className: \"bd-server-member-count\"\n }, server.members, \" Members\")), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-scroller-wrap bd-server-description-container\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-scroller bd-server-description\"\n }, server.description)), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-server-footer\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-server-tags\"\n }, server.categories.join(\", \")), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"button\", {\n type: \"button\",\n className: buttonClass,\n onClick: this.join\n }, buttonText))));\n }\n\n handleError() {\n this.props.server.iconUrl = this.props.defaultAvatar();\n this.setState({\n imageError: true\n });\n }\n\n async join() {\n if (this.state.joined) return;\n this.setState({\n joined: \"joining\"\n });\n const didJoin = await this.props.join(this.props.server.identifier, this.props.server.nativejoin);\n this.setState({\n joined: didJoin\n });\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvcHVibGljc2VydmVycy9jYXJkLmpzeD83NjAyIl0sIm5hbWVzIjpbIlNlcnZlckNhcmQiLCJSZWFjdCIsIkNvbXBvbmVudCIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJzZXJ2ZXIiLCJpY29uVXJsIiwiZGVmYXVsdEF2YXRhciIsInN0YXRlIiwiaW1hZ2VFcnJvciIsImpvaW5lZCIsImpvaW4iLCJiaW5kIiwiaGFuZGxlRXJyb3IiLCJyZW5kZXIiLCJidXR0b25UZXh0IiwiU3RyaW5ncyIsIlB1YmxpY1NlcnZlcnMiLCJqb2luaW5nIiwiYnV0dG9uQ2xhc3MiLCJwaW5uZWQiLCJuYW1lIiwibWVtYmVycyIsImRlc2NyaXB0aW9uIiwiY2F0ZWdvcmllcyIsInNldFN0YXRlIiwiZGlkSm9pbiIsImlkZW50aWZpZXIiLCJuYXRpdmVqb2luIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVlLE1BQU1BLFVBQU4sU0FBeUJDLDZDQUFLLENBQUNDLFNBQS9CLENBQXlDO0FBQ3BEQyxhQUFXLENBQUNDLEtBQUQsRUFBUTtBQUNmLFVBQU1BLEtBQU47QUFDQSxRQUFJLENBQUMsS0FBS0EsS0FBTCxDQUFXQyxNQUFYLENBQWtCQyxPQUF2QixFQUFnQyxLQUFLRixLQUFMLENBQVdDLE1BQVgsQ0FBa0JDLE9BQWxCLEdBQTRCLEtBQUtGLEtBQUwsQ0FBV0csYUFBWCxFQUE1QjtBQUNoQyxTQUFLQyxLQUFMLEdBQWE7QUFDVEMsZ0JBQVUsRUFBRSxLQURIO0FBRVRDLFlBQU0sRUFBRSxLQUFLTixLQUFMLENBQVdNO0FBRlYsS0FBYjtBQUlBLFNBQUtDLElBQUwsR0FBWSxLQUFLQSxJQUFMLENBQVVDLElBQVYsQ0FBZSxJQUFmLENBQVo7QUFDQSxTQUFLQyxXQUFMLEdBQW1CLEtBQUtBLFdBQUwsQ0FBaUJELElBQWpCLENBQXNCLElBQXRCLENBQW5CO0FBQ0g7O0FBRURFLFFBQU0sR0FBRztBQUNMLFVBQU07QUFBQ1Q7QUFBRCxRQUFXLEtBQUtELEtBQXRCO0FBQ0EsVUFBTVcsVUFBVSxHQUFHLE9BQU8sS0FBS1AsS0FBTCxDQUFXRSxNQUFsQixJQUE2QixRQUE3QixHQUF5QyxHQUFFTSwrQ0FBTyxDQUFDQyxhQUFSLENBQXNCQyxPQUFRLEtBQXpFLEdBQWdGLEtBQUtWLEtBQUwsQ0FBV0UsTUFBWCxHQUFvQk0sK0NBQU8sQ0FBQ0MsYUFBUixDQUFzQlAsTUFBMUMsR0FBbURNLCtDQUFPLENBQUNDLGFBQVIsQ0FBc0JOLElBQTVLO0FBQ0EsVUFBTVEsV0FBVyxHQUFJLFlBQVcsS0FBS1gsS0FBTCxDQUFXRSxNQUFYLElBQXFCLElBQXJCLEdBQTRCLG9CQUE1QixHQUFtRCxFQUFHLEVBQXRGO0FBQ0Esd0JBQU87QUFBSyxlQUFTLEVBQUcsaUJBQWdCTCxNQUFNLENBQUNlLE1BQVAsR0FBZ0Isd0JBQWhCLEdBQTJDLEVBQUc7QUFBL0Usb0JBQ0M7QUFBSyxlQUFTLEVBQUMsaUJBQWY7QUFBaUMsU0FBRyxFQUFFZixNQUFNLENBQUNDLE9BQTdDO0FBQXNELGFBQU8sRUFBRSxLQUFLTztBQUFwRSxNQURELG9CQUVDO0FBQUssZUFBUyxFQUFDO0FBQWYsb0JBQ0k7QUFBSyxlQUFTLEVBQUM7QUFBZixvQkFDSTtBQUFJLGVBQVMsRUFBQztBQUFkLE9BQWdDUixNQUFNLENBQUNnQixJQUF2QyxDQURKLGVBRUk7QUFBSSxlQUFTLEVBQUM7QUFBZCxPQUF3Q2hCLE1BQU0sQ0FBQ2lCLE9BQS9DLGFBRkosQ0FESixlQUtJO0FBQUssZUFBUyxFQUFDO0FBQWYsb0JBQ0k7QUFBSyxlQUFTLEVBQUM7QUFBZixPQUFvRGpCLE1BQU0sQ0FBQ2tCLFdBQTNELENBREosQ0FMSixlQVFJO0FBQUssZUFBUyxFQUFDO0FBQWYsb0JBQ0k7QUFBSyxlQUFTLEVBQUM7QUFBZixPQUFpQ2xCLE1BQU0sQ0FBQ21CLFVBQVAsQ0FBa0JiLElBQWxCLENBQXVCLElBQXZCLENBQWpDLENBREosZUFFSTtBQUFRLFVBQUksRUFBQyxRQUFiO0FBQXNCLGVBQVMsRUFBRVEsV0FBakM7QUFBOEMsYUFBTyxFQUFFLEtBQUtSO0FBQTVELE9BQW1FSSxVQUFuRSxDQUZKLENBUkosQ0FGRCxDQUFQO0FBZ0JIOztBQUVERixhQUFXLEdBQUc7QUFDVixTQUFLVCxLQUFMLENBQVdDLE1BQVgsQ0FBa0JDLE9BQWxCLEdBQTRCLEtBQUtGLEtBQUwsQ0FBV0csYUFBWCxFQUE1QjtBQUNBLFNBQUtrQixRQUFMLENBQWM7QUFBQ2hCLGdCQUFVLEVBQUU7QUFBYixLQUFkO0FBQ0g7O0FBRUQsUUFBTUUsSUFBTixHQUFhO0FBQ1QsUUFBSSxLQUFLSCxLQUFMLENBQVdFLE1BQWYsRUFBdUI7QUFDdkIsU0FBS2UsUUFBTCxDQUFjO0FBQUNmLFlBQU0sRUFBRTtBQUFULEtBQWQ7QUFDQSxVQUFNZ0IsT0FBTyxHQUFHLE1BQU0sS0FBS3RCLEtBQUwsQ0FBV08sSUFBWCxDQUFnQixLQUFLUCxLQUFMLENBQVdDLE1BQVgsQ0FBa0JzQixVQUFsQyxFQUE4QyxLQUFLdkIsS0FBTCxDQUFXQyxNQUFYLENBQWtCdUIsVUFBaEUsQ0FBdEI7QUFDQSxTQUFLSCxRQUFMLENBQWM7QUFBQ2YsWUFBTSxFQUFFZ0I7QUFBVCxLQUFkO0FBQ0g7O0FBNUNtRCIsImZpbGUiOiIuL3NyYy91aS9wdWJsaWNzZXJ2ZXJzL2NhcmQuanN4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtSZWFjdCwgU3RyaW5nc30gZnJvbSBcIm1vZHVsZXNcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNlcnZlckNhcmQgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xyXG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcclxuICAgICAgICBzdXBlcihwcm9wcyk7XHJcbiAgICAgICAgaWYgKCF0aGlzLnByb3BzLnNlcnZlci5pY29uVXJsKSB0aGlzLnByb3BzLnNlcnZlci5pY29uVXJsID0gdGhpcy5wcm9wcy5kZWZhdWx0QXZhdGFyKCk7XHJcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHtcclxuICAgICAgICAgICAgaW1hZ2VFcnJvcjogZmFsc2UsXHJcbiAgICAgICAgICAgIGpvaW5lZDogdGhpcy5wcm9wcy5qb2luZWRcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMuam9pbiA9IHRoaXMuam9pbi5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMuaGFuZGxlRXJyb3IgPSB0aGlzLmhhbmRsZUVycm9yLmJpbmQodGhpcyk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIGNvbnN0IHtzZXJ2ZXJ9ID0gdGhpcy5wcm9wcztcclxuICAgICAgICBjb25zdCBidXR0b25UZXh0ID0gdHlwZW9mKHRoaXMuc3RhdGUuam9pbmVkKSA9PSBcInN0cmluZ1wiID8gYCR7U3RyaW5ncy5QdWJsaWNTZXJ2ZXJzLmpvaW5pbmd9Li4uYCA6IHRoaXMuc3RhdGUuam9pbmVkID8gU3RyaW5ncy5QdWJsaWNTZXJ2ZXJzLmpvaW5lZCA6IFN0cmluZ3MuUHVibGljU2VydmVycy5qb2luO1xyXG4gICAgICAgIGNvbnN0IGJ1dHRvbkNsYXNzID0gYGJkLWJ1dHRvbiR7dGhpcy5zdGF0ZS5qb2luZWQgPT0gdHJ1ZSA/IFwiIGJkLWJ1dHRvbi1zdWNjZXNzXCIgOiBcIlwifWA7XHJcbiAgICAgICAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPXtgYmQtc2VydmVyLWNhcmQke3NlcnZlci5waW5uZWQgPyBcIiBiZC1zZXJ2ZXItY2FyZC1waW5uZWRcIiA6IFwiXCJ9YH0+XHJcbiAgICAgICAgICAgICAgICA8aW1nIGNsYXNzTmFtZT1cImJkLXNlcnZlci1pbWFnZVwiIHNyYz17c2VydmVyLmljb25Vcmx9IG9uRXJyb3I9e3RoaXMuaGFuZGxlRXJyb3J9IC8+LFxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZC1zZXJ2ZXItY29udGVudFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmQtc2VydmVyLWhlYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aDUgY2xhc3NOYW1lPVwiYmQtc2VydmVyLW5hbWVcIj57c2VydmVyLm5hbWV9PC9oNT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGg1IGNsYXNzTmFtZT1cImJkLXNlcnZlci1tZW1iZXItY291bnRcIj57c2VydmVyLm1lbWJlcnN9IE1lbWJlcnM8L2g1PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJkLXNjcm9sbGVyLXdyYXAgYmQtc2VydmVyLWRlc2NyaXB0aW9uLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJkLXNjcm9sbGVyIGJkLXNlcnZlci1kZXNjcmlwdGlvblwiPntzZXJ2ZXIuZGVzY3JpcHRpb259PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZC1zZXJ2ZXItZm9vdGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmQtc2VydmVyLXRhZ3NcIj57c2VydmVyLmNhdGVnb3JpZXMuam9pbihcIiwgXCIpfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzc05hbWU9e2J1dHRvbkNsYXNzfSBvbkNsaWNrPXt0aGlzLmpvaW59PntidXR0b25UZXh0fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PjtcclxuICAgIH1cclxuXHJcbiAgICBoYW5kbGVFcnJvcigpIHtcclxuICAgICAgICB0aGlzLnByb3BzLnNlcnZlci5pY29uVXJsID0gdGhpcy5wcm9wcy5kZWZhdWx0QXZhdGFyKCk7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7aW1hZ2VFcnJvcjogdHJ1ZX0pO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGpvaW4oKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc3RhdGUuam9pbmVkKSByZXR1cm47XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7am9pbmVkOiBcImpvaW5pbmdcIn0pO1xyXG4gICAgICAgIGNvbnN0IGRpZEpvaW4gPSBhd2FpdCB0aGlzLnByb3BzLmpvaW4odGhpcy5wcm9wcy5zZXJ2ZXIuaWRlbnRpZmllciwgdGhpcy5wcm9wcy5zZXJ2ZXIubmF0aXZlam9pbik7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7am9pbmVkOiBkaWRKb2lufSk7XHJcbiAgICB9XHJcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/ui/publicservers/card.jsx\n"); /***/ }), @@ -995,7 +994,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return PublicServers; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _settings_title__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../settings/title */ \"./src/ui/settings/title.jsx\");\n/* harmony import */ var _card__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./card */ \"./src/ui/publicservers/card.jsx\");\n/* harmony import */ var _structs_psconnection__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../structs/psconnection */ \"./src/structs/psconnection.js\");\n/* harmony import */ var _settings_components_search__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../settings/components/search */ \"./src/ui/settings/components/search.jsx\");\n\n\n\n\n\nconst SettingsView = modules__WEBPACK_IMPORTED_MODULE_0__[\"WebpackModules\"].getByDisplayName(\"SettingsView\");\nclass PublicServers extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n get categoryButtons() {\n return [\"All\", \"FPS Games\", \"MMO Games\", \"Strategy Games\", \"MOBA Games\", \"RPG Games\", \"Tabletop Games\", \"Sandbox Games\", \"Simulation Games\", \"Music\", \"Community\", \"Language\", \"Programming\", \"Other\"];\n }\n\n constructor(props) {\n super(props);\n this.state = {\n category: \"All\",\n query: \"\",\n loading: true,\n user: null,\n results: {\n servers: [],\n size: 0,\n from: 0,\n total: 0,\n next: null\n }\n };\n this.changeCategory = this.changeCategory.bind(this);\n this.searchKeyDown = this.searchKeyDown.bind(this);\n this.connect = this.connect.bind(this);\n this.loadNextPage = this.loadNextPage.bind(this);\n this.join = this.join.bind(this);\n }\n\n componentDidMount() {\n this.checkConnection();\n }\n\n async checkConnection() {\n const userData = await _structs_psconnection__WEBPACK_IMPORTED_MODULE_3__[\"default\"].checkConnection();\n\n if (!userData) {\n return this.setState({\n loading: true,\n user: null\n });\n }\n\n this.setState({\n user: userData\n });\n this.search();\n }\n\n async connect() {\n await _structs_psconnection__WEBPACK_IMPORTED_MODULE_3__[\"default\"].connect();\n this.checkConnection();\n }\n\n searchKeyDown(e) {\n if (this.state.loading || e.which !== 13) return;\n this.search(e.target.value);\n }\n\n async search(term = \"\", from = 0) {\n this.setState({\n query: term,\n loading: true\n });\n const results = await _structs_psconnection__WEBPACK_IMPORTED_MODULE_3__[\"default\"].search({\n term,\n category: this.state.category == \"All\" ? \"\" : this.state.category,\n from\n });\n\n if (!results) {\n return this.setState({\n results: {\n servers: [],\n size: 0,\n from: 0,\n total: 0,\n next: null\n }\n });\n }\n\n this.setState({\n loading: false,\n results\n });\n }\n\n async changeCategory(id) {\n if (this.state.loading) return;\n await new Promise(resolve => this.setState({\n category: id\n }, resolve));\n this.search();\n }\n\n loadNextPage() {\n if (this.state.loading) return;\n this.search(this.state.query, this.state.results.next);\n }\n\n async join(id, native = false) {\n return await _structs_psconnection__WEBPACK_IMPORTED_MODULE_3__[\"default\"].join(id, native);\n }\n\n get searchBox() {\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_settings_components_search__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n onKeyDown: this.searchKeyDown,\n placeholder: `${modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.search}...`\n });\n }\n\n get title() {\n if (!this.state.user) return modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.notConnected;\n if (this.state.loading) return `${modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.loading}...`;\n const start = this.state.results.from + 1;\n const total = this.state.results.total;\n const end = this.state.results.next ? this.state.results.next : total;\n let title = modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.results.format({\n start,\n end,\n total,\n category: this.state.category\n });\n if (this.state.query) title += \" \" + modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.query.format({\n query: this.state.query\n });\n return title;\n }\n\n get content() {\n const connectButton = this.state.user ? null : {\n title: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.connect,\n onClick: this.connect\n };\n const pinned = this.state.category == \"All\" || !this.state.user ? this.bdServer : null;\n const servers = this.state.results.servers.map(server => {\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_card__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n key: server.identifier,\n server: server,\n joined: _structs_psconnection__WEBPACK_IMPORTED_MODULE_3__[\"default\"].hasJoined(server.identifier),\n join: this.join,\n defaultAvatar: _structs_psconnection__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getDefaultAvatar\n });\n });\n return [modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_settings_title__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n text: this.title,\n button: connectButton\n }), pinned, servers, this.state.results.next ? this.nextButton : null, this.state.results.servers.length > 0 && modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_settings_title__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n text: this.title\n })];\n }\n\n get nextButton() {\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"button\", {\n type: \"button\",\n className: \"bd-button bd-button-next\",\n onClick: this.loadNextPage\n }, this.state.loading ? modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.loading : modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.loadMore);\n }\n\n get connection() {\n const {\n user\n } = this.state;\n if (!user) return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n id: \"bd-connection\"\n });\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n id: \"bd-connection\"\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-footnote\"\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.connection.format(user)), modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"button\", {\n type: \"button\",\n className: \"bd-button bd-button-reconnect\",\n onClick: this.connect\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.reconnect));\n }\n\n get bdServer() {\n const server = {\n name: \"BetterDiscord\",\n online: \"7500+\",\n members: \"20000+\",\n categories: [\"community\", \"programming\", \"support\"],\n description: \"Official BetterDiscord server for plugins, themes, support, etc\",\n identifier: \"86004744966914048\",\n iconUrl: \"https://cdn.discordapp.com/icons/86004744966914048/292e7f6bfff2b71dfd13e508a859aedd.webp\",\n nativejoin: true,\n invite_code: \"0Tmfo5ZbORCRqbAd\",\n pinned: true\n };\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_card__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n server: server,\n pinned: true,\n joined: _structs_psconnection__WEBPACK_IMPORTED_MODULE_3__[\"default\"].hasJoined(server.identifier),\n defaultAvatar: _structs_psconnection__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getDefaultAvatar\n });\n }\n\n render() {\n const categories = this.categoryButtons.map(name => ({\n section: name,\n label: name,\n element: () => this.content\n }));\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(SettingsView, {\n onClose: this.props.close,\n onSetSection: this.changeCategory,\n section: this.state.category,\n sections: [{\n section: \"HEADER\",\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.search\n }, {\n section: \"CUSTOM\",\n element: () => this.searchBox\n }, {\n section: \"HEADER\",\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.categories\n }, ...categories, {\n section: \"DIVIDER\"\n }, {\n section: \"HEADER\",\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"a\", {\n href: \"https://discordservers.com\",\n target: \"_blank\"\n }, \"DiscordServers.com\")\n }, {\n section: \"DIVIDER\"\n }, {\n section: \"CUSTOM\",\n element: () => this.connection\n }],\n theme: \"dark\"\n });\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL3B1YmxpY3NlcnZlcnMvbWVudS5qcz85YWNkIl0sIm5hbWVzIjpbIlNldHRpbmdzVmlldyIsIldlYnBhY2tNb2R1bGVzIiwiZ2V0QnlEaXNwbGF5TmFtZSIsIlB1YmxpY1NlcnZlcnMiLCJSZWFjdCIsIkNvbXBvbmVudCIsImNhdGVnb3J5QnV0dG9ucyIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJzdGF0ZSIsImNhdGVnb3J5IiwicXVlcnkiLCJsb2FkaW5nIiwidXNlciIsInJlc3VsdHMiLCJzZXJ2ZXJzIiwic2l6ZSIsImZyb20iLCJ0b3RhbCIsIm5leHQiLCJjaGFuZ2VDYXRlZ29yeSIsImJpbmQiLCJzZWFyY2hLZXlEb3duIiwiY29ubmVjdCIsImxvYWROZXh0UGFnZSIsImpvaW4iLCJjb21wb25lbnREaWRNb3VudCIsImNoZWNrQ29ubmVjdGlvbiIsInVzZXJEYXRhIiwiQ29ubmVjdGlvbiIsInNldFN0YXRlIiwic2VhcmNoIiwiZSIsIndoaWNoIiwidGFyZ2V0IiwidmFsdWUiLCJ0ZXJtIiwiaWQiLCJQcm9taXNlIiwicmVzb2x2ZSIsIm5hdGl2ZSIsInNlYXJjaEJveCIsIlN0cmluZ3MiLCJ0aXRsZSIsIm5vdENvbm5lY3RlZCIsInN0YXJ0IiwiZW5kIiwiZm9ybWF0IiwiY29udGVudCIsImNvbm5lY3RCdXR0b24iLCJvbkNsaWNrIiwicGlubmVkIiwiYmRTZXJ2ZXIiLCJtYXAiLCJzZXJ2ZXIiLCJjcmVhdGVFbGVtZW50IiwiU2VydmVyQ2FyZCIsImtleSIsImlkZW50aWZpZXIiLCJqb2luZWQiLCJoYXNKb2luZWQiLCJkZWZhdWx0QXZhdGFyIiwiZ2V0RGVmYXVsdEF2YXRhciIsIlNldHRpbmdzVGl0bGUiLCJ0ZXh0IiwiYnV0dG9uIiwibmV4dEJ1dHRvbiIsImxlbmd0aCIsInR5cGUiLCJjbGFzc05hbWUiLCJsb2FkTW9yZSIsImNvbm5lY3Rpb24iLCJyZWNvbm5lY3QiLCJuYW1lIiwib25saW5lIiwibWVtYmVycyIsImNhdGVnb3JpZXMiLCJkZXNjcmlwdGlvbiIsImljb25VcmwiLCJuYXRpdmVqb2luIiwiaW52aXRlX2NvZGUiLCJyZW5kZXIiLCJzZWN0aW9uIiwibGFiZWwiLCJlbGVtZW50Iiwib25DbG9zZSIsImNsb3NlIiwib25TZXRTZWN0aW9uIiwic2VjdGlvbnMiLCJocmVmIiwidGhlbWUiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBLE1BQU1BLFlBQVksR0FBR0Msc0RBQWMsQ0FBQ0MsZ0JBQWYsQ0FBZ0MsY0FBaEMsQ0FBckI7QUFFZSxNQUFNQyxhQUFOLFNBQTRCQyw2Q0FBSyxDQUFDQyxTQUFsQyxDQUE0QztBQUV2RCxNQUFJQyxlQUFKLEdBQXNCO0FBQ2xCLFdBQU8sQ0FBQyxLQUFELEVBQVEsV0FBUixFQUFxQixXQUFyQixFQUFrQyxnQkFBbEMsRUFBb0QsWUFBcEQsRUFBa0UsV0FBbEUsRUFBK0UsZ0JBQS9FLEVBQWlHLGVBQWpHLEVBQWtILGtCQUFsSCxFQUFzSSxPQUF0SSxFQUErSSxXQUEvSSxFQUE0SixVQUE1SixFQUF3SyxhQUF4SyxFQUF1TCxPQUF2TCxDQUFQO0FBQ0g7O0FBRURDLGFBQVcsQ0FBQ0MsS0FBRCxFQUFRO0FBQ2YsVUFBTUEsS0FBTjtBQUNBLFNBQUtDLEtBQUwsR0FBYTtBQUNUQyxjQUFRLEVBQUUsS0FERDtBQUVUQyxXQUFLLEVBQUUsRUFGRTtBQUdUQyxhQUFPLEVBQUUsSUFIQTtBQUlUQyxVQUFJLEVBQUUsSUFKRztBQUtUQyxhQUFPLEVBQUU7QUFDTEMsZUFBTyxFQUFFLEVBREo7QUFFTEMsWUFBSSxFQUFFLENBRkQ7QUFHTEMsWUFBSSxFQUFFLENBSEQ7QUFJTEMsYUFBSyxFQUFFLENBSkY7QUFLTEMsWUFBSSxFQUFFO0FBTEQ7QUFMQSxLQUFiO0FBY0EsU0FBS0MsY0FBTCxHQUFzQixLQUFLQSxjQUFMLENBQW9CQyxJQUFwQixDQUF5QixJQUF6QixDQUF0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a0M7QUFDckNxRixhQUFPLEVBQUUsS0FBSzdFLEtBQUwsQ0FBVzhFLEtBRGlCO0FBRXJDQyxrQkFBWSxFQUFFLEtBQUtuRSxjQUZrQjtBQUdyQzhELGFBQU8sRUFBRSxLQUFLekUsS0FBTCxDQUFXQyxRQUhpQjtBQUlyQzhFLGNBQVEsRUFBRSxDQUNOO0FBQUNOLGVBQU8sRUFBRSxRQUFWO0FBQW9CQyxhQUFLLEVBQUV6QywrQ0FBTyxDQUFDdkMsYUFBUixDQUFzQjRCO0FBQWpELE9BRE0sRUFFTjtBQUFDbUQsZUFBTyxFQUFFLFFBQVY7QUFBb0JFLGVBQU8sRUFBRSxNQUFNLEtBQUszQztBQUF4QyxPQUZNLEVBR047QUFBQ3lDLGVBQU8sRUFBRSxRQUFWO0FBQW9CQyxhQUFLLEVBQUV6QywrQ0FBTyxDQUFDdkMsYUFBUixDQUFzQnlFO0FBQWpELE9BSE0sRUFJTixHQUFHQSxVQUpHLEVBS047QUFBQ00sZUFBTyxFQUFFO0FBQVYsT0FMTSxFQU1OO0FBQUNBLGVBQU8sRUFBRSxRQUFWO0FBQW9CQyxhQUFLLEVBQUUvRSw2Q0FBSyxDQUFDbUQsYUFBTixDQUFvQixHQUFwQixFQUF5QjtBQUFDa0MsY0FBSSxFQUFFLDRCQUFQO0FBQXFDdkQsZ0JBQU0sRUFBRTtBQUE3QyxTQUF6QixFQUFpRixvQkFBakY7QUFBM0IsT0FOTSxFQU9OO0FBQUNnRCxlQUFPLEVBQUU7QUFBVixPQVBNLEVBUU47QUFBQ0EsZUFBTyxFQUFFLFFBQVY7QUFBb0JFLGVBQU8sRUFBRSxNQUFNLEtBQUtiO0FBQXhDLE9BUk0sQ0FKMkI7QUFjckNtQixXQUFLLEVBQUU7QUFkOEIsS0FBbEMsQ0FBUDtBQWdCSDs7QUFsS3NEIiwiZmlsZSI6Ii4vc3JjL3VpL3B1YmxpY3NlcnZlcnMvbWVudS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhY3QsIFdlYnBhY2tNb2R1bGVzLCBTdHJpbmdzfSBmcm9tIFwibW9kdWxlc1wiO1xyXG5pbXBvcnQgU2V0dGluZ3NUaXRsZSBmcm9tIFwiLi4vc2V0dGluZ3MvdGl0bGVcIjtcclxuaW1wb3J0IFNlcnZlckNhcmQgZnJvbSBcIi4vY2FyZFwiO1xyXG5pbXBvcnQgQ29ubmVjdGlvbiBmcm9tIFwiLi4vLi4vc3RydWN0cy9wc2Nvbm5lY3Rpb25cIjtcclxuaW1wb3J0IFNlYXJjaCBmcm9tIFwiLi4vc2V0dGluZ3MvY29tcG9uZW50cy9zZWFyY2hcIjtcclxuXHJcbmNvbnN0IFNldHRpbmdzVmlldyA9IFdlYnBhY2tNb2R1bGVzLmdldEJ5RGlzcGxheU5hbWUoXCJTZXR0aW5nc1ZpZXdcIik7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQdWJsaWNTZXJ2ZXJzIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcclxuXHJcbiAgICBnZXQgY2F0ZWdvcnlCdXR0b25zKCkge1xyXG4gICAgICAgIHJldHVybiBbXCJBbGxcIiwgXCJGUFMgR2FtZXNcIiwgXCJNTU8gR2FtZXNcIiwgXCJTdHJhdGVneSBHYW1lc1wiLCBcIk1PQkEgR2FtZXNcIiwgXCJSUEcgR2FtZXNcIiwgXCJUYWJsZXRvcCBHYW1lc1wiLCBcIlNhbmRib3ggR2FtZXNcIiwgXCJTaW11bGF0aW9uIEdhbWVzXCIsIFwiTXVzaWNcIiwgXCJDb21tdW5pdHlcIiwgXCJMYW5ndWFnZVwiLCBcIlByb2dyYW1taW5nXCIsIFwiT3RoZXJcIl07XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcclxuICAgICAgICBzdXBlcihwcm9wcyk7XHJcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHtcclxuICAgICAgICAgICAgY2F0ZWdvcnk6IFwiQWxsXCIsXHJcbiAgICAgICAgICAgIHF1ZXJ5OiBcIlwiLFxyXG4gICAgICAgICAgICBsb2FkaW5nOiB0cnVlLFxyXG4gICAgICAgICAgICB1c2VyOiBudWxsLFxyXG4gICAgICAgICAgICByZXN1bHRzOiB7XHJcbiAgICAgICAgICAgICAgICBzZXJ2ZXJzOiBbXSxcclxuICAgICAgICAgICAgICAgIHNpemU6IDAsXHJcbiAgICAgICAgICAgICAgICBmcm9tOiAwLFxyXG4gICAgICAgICAgICAgICAgdG90YWw6IDAsXHJcbiAgICAgICAgICAgICAgICBuZXh0OiBudWxsXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB0aGlzLmNoYW5nZUNhdGVnb3J5ID0gdGhpcy5jaGFuZ2VDYXRlZ29yeS5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMuc2VhcmNoS2V5RG93biA9IHRoaXMuc2VhcmNoS2V5RG93bi5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMuY29ubmVjdCA9IHRoaXMuY29ubmVjdC5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMubG9hZE5leHRQYWdlID0gdGhpcy5sb2FkTmV4dFBhZ2UuYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLmpvaW4gPSB0aGlzLmpvaW4uYmluZCh0aGlzKTtcclxuICAgIH1cclxuXHJcbiAgICBjb21wb25lbnREaWRNb3VudCgpIHtcclxuICAgICAgICB0aGlzLmNoZWNrQ29ubmVjdGlvbigpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGNoZWNrQ29ubmVjdGlvbigpIHtcclxuICAgICAgICBjb25zdCB1c2VyRGF0YSA9IGF3YWl0IENvbm5lY3Rpb24uY2hlY2tDb25uZWN0aW9uKCk7XHJcbiAgICAgICAgaWYgKCF1c2VyRGF0YSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zZXRTdGF0ZSh7bG9hZGluZzogdHJ1ZSwgdXNlcjogbnVsbH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNldFN0YXRlKHt1c2VyOiB1c2VyRGF0YX0pO1xyXG4gICAgICAgIHRoaXMuc2VhcmNoKCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgY29ubmVjdCgpIHtcclxuICAgICAgICBhd2FpdCBDb25uZWN0aW9uLmNvbm5lY3QoKTtcclxuICAgICAgICB0aGlzLmNoZWNrQ29ubmVjdGlvbigpO1xyXG4gICAgfVxyXG5cclxuICAgIHNlYXJjaEtleURvd24oZSkge1xyXG4gICAgICAgIGlmICh0aGlzLnN0YXRlLmxvYWRpbmcgfHwgZS53aGljaCAhPT0gMTMpIHJldHVybjtcclxuICAgICAgICB0aGlzLnNlYXJjaChlLnRhcmdldC52YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgc2VhcmNoKHRlcm0gPSBcIlwiLCBmcm9tID0gMCkge1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe3F1ZXJ5OiB0ZXJtLCBsb2FkaW5nOiB0cnVlfSk7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IENvbm5lY3Rpb24uc2VhcmNoKHt0ZXJtLCBjYXRlZ29yeTogdGhpcy5zdGF0ZS5jYXRlZ29yeSA9PSBcIkFsbFwiID8gXCJcIiA6IHRoaXMuc3RhdGUuY2F0ZWdvcnksIGZyb219KTtcclxuICAgICAgICBpZiAoIXJlc3VsdHMpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0U3RhdGUoe3Jlc3VsdHM6IHtcclxuICAgICAgICAgICAgICAgIHNlcnZlcnM6IFtdLFxyXG4gICAgICAgICAgICAgICAgc2l6ZTogMCxcclxuICAgICAgICAgICAgICAgIGZyb206IDAsXHJcbiAgICAgICAgICAgICAgICB0b3RhbDogMCxcclxuICAgICAgICAgICAgICAgIG5leHQ6IG51bGxcclxuICAgICAgICAgICAgfX0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtsb2FkaW5nOiBmYWxzZSwgcmVzdWx0c30pO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGNoYW5nZUNhdGVnb3J5KGlkKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc3RhdGUubG9hZGluZykgcmV0dXJuO1xyXG4gICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gdGhpcy5zZXRTdGF0ZSh7Y2F0ZWdvcnk6IGlkfSwgcmVzb2x2ZSkpO1xyXG4gICAgICAgIHRoaXMuc2VhcmNoKCk7XHJcbiAgICB9XHJcblxyXG4gICAgbG9hZE5leHRQYWdlKCkge1xyXG4gICAgICAgIGlmICh0aGlzLnN0YXRlLmxvYWRpbmcpIHJldHVybjtcclxuICAgICAgICB0aGlzLnNlYXJjaCh0aGlzLnN0YXRlLnF1ZXJ5LCB0aGlzLnN0YXRlLnJlc3VsdHMubmV4dCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgam9pbihpZCwgbmF0aXZlID0gZmFsc2UpIHtcclxuICAgICAgICByZXR1cm4gYXdhaXQgQ29ubmVjdGlvbi5qb2luKGlkLCBuYXRpdmUpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBzZWFyY2hCb3goKSB7XHJcbiAgICAgICAgcmV0dXJuIDxTZWFyY2ggb25LZXlEb3duPXt0aGlzLnNlYXJjaEtleURvd259IHBsYWNlaG9sZGVyPXtgJHtTdHJpbmdzLlB1YmxpY1NlcnZlcnMuc2VhcmNofS4uLmB9IC8+O1xyXG4gICAgfVxyXG5cclxuICAgIGdldCB0aXRsZSgpIHtcclxuICAgICAgICBpZiAoIXRoaXMuc3RhdGUudXNlcikgcmV0dXJuIFN0cmluZ3MuUHVibGljU2VydmVycy5ub3RDb25uZWN0ZWQ7XHJcbiAgICAgICAgaWYgKHRoaXMuc3RhdGUubG9hZGluZykgcmV0dXJuIGAke1N0cmluZ3MuUHVibGljU2VydmVycy5sb2FkaW5nfS4uLmA7XHJcbiAgICAgICAgY29uc3Qgc3RhcnQgPSB0aGlzLnN0YXRlLnJlc3VsdHMuZnJvbSArIDE7XHJcbiAgICAgICAgY29uc3QgdG90YWwgPSB0aGlzLnN0YXRlLnJlc3VsdHMudG90YWw7XHJcbiAgICAgICAgY29uc3QgZW5kID0gdGhpcy5zdGF0ZS5yZXN1bHRzLm5leHQgPyB0aGlzLnN0YXRlLnJlc3VsdHMubmV4dCA6IHRvdGFsO1xyXG4gICAgICAgIGxldCB0aXRsZSA9IFN0cmluZ3MuUHVibGljU2VydmVycy5yZXN1bHRzLmZvcm1hdCh7c3RhcnQsIGVuZCwgdG90YWwsIGNhdGVnb3J5OiB0aGlzLnN0YXRlLmNhdGVnb3J5fSk7XHJcbiAgICAgICAgaWYgKHRoaXMuc3RhdGUucXVlcnkpIHRpdGxlICs9IFwiIFwiICsgU3RyaW5ncy5QdWJsaWNTZXJ2ZXJzLnF1ZXJ5LmZvcm1hdCh7cXVlcnk6IHRoaXMuc3RhdGUucXVlcnl9KTtcclxuICAgICAgICByZXR1cm4gdGl0bGU7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGNvbnRlbnQoKSB7XHJcbiAgICAgICAgY29uc3QgY29ubmVjdEJ1dHRvbiA9IHRoaXMuc3RhdGUudXNlciA/IG51bGwgOiB7dGl0bGU6IFN0cmluZ3MuUHVibGljU2VydmVycy5jb25uZWN0LCBvbkNsaWNrOiB0aGlzLmNvbm5lY3R9O1xyXG4gICAgICAgIGNvbnN0IHBpbm5lZCA9IHRoaXMuc3RhdGUuY2F0ZWdvcnkgPT0gXCJBbGxcIiB8fCAhdGhpcy5zdGF0ZS51c2VyID8gdGhpcy5iZFNlcnZlciA6IG51bGw7XHJcbiAgICAgICAgY29uc3Qgc2VydmVycyA9IHRoaXMuc3RhdGUucmVzdWx0cy5zZXJ2ZXJzLm1hcCgoc2VydmVyKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFNlcnZlckNhcmQsIHtrZXk6IHNlcnZlci5pZGVudGlmaWVyLCBzZXJ2ZXI6IHNlcnZlciwgam9pbmVkOiBDb25uZWN0aW9uLmhhc0pvaW5lZChzZXJ2ZXIuaWRlbnRpZmllciksIGpvaW46IHRoaXMuam9pbiwgZGVmYXVsdEF2YXRhcjogQ29ubmVjdGlvbi5nZXREZWZhdWx0QXZhdGFyfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIFtSZWFjdC5jcmVhdGVFbGVtZW50KFNldHRpbmdzVGl0bGUsIHt0ZXh0OiB0aGlzLnRpdGxlLCBidXR0b246IGNvbm5lY3RCdXR0b259KSxcclxuICAgICAgICAgICAgcGlubmVkLFxyXG4gICAgICAgICAgICBzZXJ2ZXJzLFxyXG4gICAgICAgICAgICB0aGlzLnN0YXRlLnJlc3VsdHMubmV4dCA/IHRoaXMubmV4dEJ1dHRvbiA6IG51bGwsXHJcbiAgICAgICAgICAgIHRoaXMuc3RhdGUucmVzdWx0cy5zZXJ2ZXJzLmxlbmd0aCA+IDAgJiYgUmVhY3QuY3JlYXRlRWxlbWVudChTZXR0aW5nc1RpdGxlLCB7dGV4dDogdGhpcy50aXRsZX0pXTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgbmV4dEJ1dHRvbigpIHtcclxuICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChcImJ1dHRvblwiLCB7dHlwZTogXCJidXR0b25cIiwgY2xhc3NOYW1lOiBcImJkLWJ1dHRvbiBiZC1idXR0b24tbmV4dFwiLCBvbkNsaWNrOiB0aGlzLmxvYWROZXh0UGFnZX0sIHRoaXMuc3RhdGUubG9hZGluZyA/IFN0cmluZ3MuUHVibGljU2VydmVycy5sb2FkaW5nIDogU3RyaW5ncy5QdWJsaWNTZXJ2ZXJzLmxvYWRNb3JlKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgY29ubmVjdGlvbigpIHtcclxuICAgICAgICBjb25zdCB7dXNlcn0gPSB0aGlzLnN0YXRlO1xyXG4gICAgICAgIGlmICghdXNlcikgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge2lkOiBcImJkLWNvbm5lY3Rpb25cIn0pO1xyXG4gICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtpZDogXCJiZC1jb25uZWN0aW9uXCJ9LFxyXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtjbGFzc05hbWU6IFwiYmQtZm9vdG5vdGVcIn0sIFN0cmluZ3MuUHVibGljU2VydmVycy5jb25uZWN0aW9uLmZvcm1hdCh1c2VyKSksXHJcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJidXR0b25cIiwge3R5cGU6IFwiYnV0dG9uXCIsIGNsYXNzTmFtZTogXCJiZC1idXR0b24gYmQtYnV0dG9uLXJlY29ubmVjdFwiLCBvbkNsaWNrOiB0aGlzLmNvbm5lY3R9LCBTdHJpbmdzLlB1YmxpY1NlcnZlcnMucmVjb25uZWN0KVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGJkU2VydmVyKCkge1xyXG4gICAgICAgIGNvbnN0IHNlcnZlciA9IHtcclxuICAgICAgICAgICAgbmFtZTogXCJCZXR0ZXJEaXNjb3JkXCIsXHJcbiAgICAgICAgICAgIG9ubGluZTogXCI3NTAwK1wiLFxyXG4gICAgICAgICAgICBtZW1iZXJzOiBcIjIwMDAwK1wiLFxyXG4gICAgICAgICAgICBjYXRlZ29yaWVzOiBbXCJjb21tdW5pdHlcIiwgXCJwcm9ncmFtbWluZ1wiLCBcInN1cHBvcnRcIl0sXHJcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIk9mZmljaWFsIEJldHRlckRpc2NvcmQgc2VydmVyIGZvciBwbHVnaW5zLCB0aGVtZXMsIHN1cHBvcnQsIGV0Y1wiLFxyXG4gICAgICAgICAgICBpZGVudGlmaWVyOiBcIjg2MDA0NzQ0OTY2OTE0MDQ4XCIsXHJcbiAgICAgICAgICAgIGljb25Vcmw6IFwiaHR0cHM6Ly9jZG4uZGlzY29yZGFwcC5jb20vaWNvbnMvODYwMDQ3NDQ5NjY5MTQwNDgvMjkyZTdmNmJmZmYyYjcxZGZkMTNlNTA4YTg1OWFlZGQud2VicFwiLFxyXG4gICAgICAgICAgICBuYXRpdmVqb2luOiB0cnVlLFxyXG4gICAgICAgICAgICBpbnZpdGVfY29kZTogXCIwVG1mbzVaYk9SQ1JxYkFkXCIsXHJcbiAgICAgICAgICAgIHBpbm5lZDogdHJ1ZVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoU2VydmVyQ2FyZCwge3NlcnZlcjogc2VydmVyLCBwaW5uZWQ6IHRydWUsIGpvaW5lZDogQ29ubmVjdGlvbi5oYXNKb2luZWQoc2VydmVyLmlkZW50aWZpZXIpLCBkZWZhdWx0QXZhdGFyOiBDb25uZWN0aW9uLmdldERlZmF1bHRBdmF0YXJ9KTtcclxuICAgIH1cclxuXHJcbiAgICByZW5kZXIoKSB7XHJcbiAgICAgICAgY29uc3QgY2F0ZWdvcmllcyA9IHRoaXMuY2F0ZWdvcnlCdXR0b25zLm1hcChuYW1lID0+ICh7XHJcbiAgICAgICAgICAgICAgICBzZWN0aW9uOiBuYW1lLFxyXG4gICAgICAgICAgICAgICAgbGFiZWw6IG5hbWUsXHJcbiAgICAgICAgICAgICAgICBlbGVtZW50OiAoKSA9PiB0aGlzLmNvbnRlbnRcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG4gICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFNldHRpbmdzVmlldywge1xyXG4gICAgICAgICAgICBvbkNsb3NlOiB0aGlzLnByb3BzLmNsb3NlLFxyXG4gICAgICAgICAgICBvblNldFNlY3Rpb246IHRoaXMuY2hhbmdlQ2F0ZWdvcnksXHJcbiAgICAgICAgICAgIHNlY3Rpb246IHRoaXMuc3RhdGUuY2F0ZWdvcnksXHJcbiAgICAgICAgICAgIHNlY3Rpb25zOiBbXHJcbiAgICAgICAgICAgICAgICB7c2VjdGlvbjogXCJIRUFERVJcIiwgbGFiZWw6IFN0cmluZ3MuUHVibGljU2VydmVycy5zZWFyY2h9LFxyXG4gICAgICAgICAgICAgICAge3NlY3Rpb246IFwiQ1VTVE9NXCIsIGVsZW1lbnQ6ICgpID0+IHRoaXMuc2VhcmNoQm94fSxcclxuICAgICAgICAgICAgICAgIHtzZWN0aW9uOiBcIkhFQURFUlwiLCBsYWJlbDogU3RyaW5ncy5QdWJsaWNTZXJ2ZXJzLmNhdGVnb3JpZXN9LFxyXG4gICAgICAgICAgICAgICAgLi4uY2F0ZWdvcmllcyxcclxuICAgICAgICAgICAgICAgIHtzZWN0aW9uOiBcIkRJVklERVJcIn0sXHJcbiAgICAgICAgICAgICAgICB7c2VjdGlvbjogXCJIRUFERVJcIiwgbGFiZWw6IFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJhXCIsIHtocmVmOiBcImh0dHBzOi8vZGlzY29yZHNlcnZlcnMuY29tXCIsIHRhcmdldDogXCJfYmxhbmtcIn0sIFwiRGlzY29yZFNlcnZlcnMuY29tXCIpfSxcclxuICAgICAgICAgICAgICAgIHtzZWN0aW9uOiBcIkRJVklERVJcIn0sXHJcbiAgICAgICAgICAgICAgICB7c2VjdGlvbjogXCJDVVNUT01cIiwgZWxlbWVudDogKCkgPT4gdGhpcy5jb25uZWN0aW9ufVxyXG4gICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICB0aGVtZTogXCJkYXJrXCJcclxuICAgICAgICB9KTtcclxuICAgIH1cclxufVxyXG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/ui/publicservers/menu.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return PublicServers; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _settings_title__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../settings/title */ \"./src/ui/settings/title.jsx\");\n/* harmony import */ var _card__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./card */ \"./src/ui/publicservers/card.jsx\");\n/* harmony import */ var _structs_psconnection__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../structs/psconnection */ \"./src/structs/psconnection.js\");\n/* harmony import */ var _settings_components_search__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../settings/components/search */ \"./src/ui/settings/components/search.jsx\");\n\n\n\n\n\nconst SettingsView = modules__WEBPACK_IMPORTED_MODULE_0__[\"WebpackModules\"].getByDisplayName(\"SettingsView\");\nclass PublicServers extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n get categoryButtons() {\n return [\"All\", \"FPS Games\", \"MMO Games\", \"Strategy Games\", \"MOBA Games\", \"RPG Games\", \"Tabletop Games\", \"Sandbox Games\", \"Simulation Games\", \"Music\", \"Community\", \"Language\", \"Programming\", \"Other\"];\n }\n\n constructor(props) {\n super(props);\n this.state = {\n category: \"All\",\n query: \"\",\n loading: true,\n user: null,\n results: {\n servers: [],\n size: 0,\n from: 0,\n total: 0,\n next: null\n }\n };\n this.changeCategory = this.changeCategory.bind(this);\n this.searchKeyDown = this.searchKeyDown.bind(this);\n this.connect = this.connect.bind(this);\n this.loadNextPage = this.loadNextPage.bind(this);\n this.join = this.join.bind(this);\n }\n\n componentDidMount() {\n this.checkConnection();\n }\n\n async checkConnection() {\n const userData = await _structs_psconnection__WEBPACK_IMPORTED_MODULE_3__[\"default\"].checkConnection();\n\n if (!userData) {\n return this.setState({\n loading: true,\n user: null\n });\n }\n\n this.setState({\n user: userData\n });\n this.search();\n }\n\n async connect() {\n await _structs_psconnection__WEBPACK_IMPORTED_MODULE_3__[\"default\"].connect();\n this.checkConnection();\n }\n\n searchKeyDown(e) {\n if (this.state.loading || e.which !== 13) return;\n this.search(e.target.value);\n }\n\n async search(term = \"\", from = 0) {\n this.setState({\n query: term,\n loading: true\n });\n const results = await _structs_psconnection__WEBPACK_IMPORTED_MODULE_3__[\"default\"].search({\n term,\n category: this.state.category == \"All\" ? \"\" : this.state.category,\n from\n });\n\n if (!results) {\n return this.setState({\n results: {\n servers: [],\n size: 0,\n from: 0,\n total: 0,\n next: null\n }\n });\n }\n\n this.setState({\n loading: false,\n results\n });\n }\n\n async changeCategory(id) {\n if (this.state.loading) return;\n await new Promise(resolve => this.setState({\n category: id\n }, resolve));\n this.search();\n }\n\n loadNextPage() {\n if (this.state.loading) return;\n this.search(this.state.query, this.state.results.next);\n }\n\n async join(id, native = false) {\n return await _structs_psconnection__WEBPACK_IMPORTED_MODULE_3__[\"default\"].join(id, native);\n }\n\n get searchBox() {\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_settings_components_search__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n onKeyDown: this.searchKeyDown,\n placeholder: `${modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.search}...`\n });\n }\n\n get title() {\n if (!this.state.user) return modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.notConnected;\n if (this.state.loading) return `${modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.loading}...`;\n const start = this.state.results.from + 1;\n const total = this.state.results.total;\n const end = this.state.results.next ? this.state.results.next : total;\n let title = modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.results.format({\n start,\n end,\n total,\n category: this.state.category\n });\n if (this.state.query) title += \" \" + modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.query.format({\n query: this.state.query\n });\n return title;\n }\n\n get content() {\n const connectButton = this.state.user ? null : {\n title: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.connect,\n onClick: this.connect\n };\n const pinned = this.state.category == \"All\" || !this.state.user ? this.bdServer : null;\n const servers = this.state.results.servers.map(server => {\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_card__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n key: server.identifier,\n server: server,\n joined: _structs_psconnection__WEBPACK_IMPORTED_MODULE_3__[\"default\"].hasJoined(server.identifier),\n join: this.join,\n defaultAvatar: _structs_psconnection__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getDefaultAvatar\n });\n });\n return [modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_settings_title__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n text: this.title,\n button: connectButton\n }), pinned, servers, this.state.results.next ? this.nextButton : null, this.state.results.servers.length > 0 && modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_settings_title__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n text: this.title\n })];\n }\n\n get nextButton() {\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"button\", {\n type: \"button\",\n className: \"bd-button bd-button-next\",\n onClick: this.loadNextPage\n }, this.state.loading ? modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.loading : modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.loadMore);\n }\n\n get connection() {\n const {\n user\n } = this.state;\n if (!user) return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n id: \"bd-connection\"\n });\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n id: \"bd-connection\"\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-footnote\"\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.connection.format(user)), modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"button\", {\n type: \"button\",\n className: \"bd-button bd-button-reconnect\",\n onClick: this.connect\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.reconnect));\n }\n\n get bdServer() {\n const server = {\n name: \"BetterDiscord\",\n online: \"7500+\",\n members: \"20000+\",\n categories: [\"community\", \"programming\", \"support\"],\n description: \"Official BetterDiscord server for plugins, themes, support, etc\",\n identifier: \"86004744966914048\",\n iconUrl: \"https://cdn.discordapp.com/icons/86004744966914048/292e7f6bfff2b71dfd13e508a859aedd.webp\",\n nativejoin: true,\n invite_code: \"0Tmfo5ZbORCRqbAd\",\n pinned: true\n };\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_card__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n server: server,\n pinned: true,\n joined: _structs_psconnection__WEBPACK_IMPORTED_MODULE_3__[\"default\"].hasJoined(server.identifier),\n defaultAvatar: _structs_psconnection__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getDefaultAvatar\n });\n }\n\n render() {\n const categories = this.categoryButtons.map(name => ({\n section: name,\n label: name,\n element: () => this.content\n }));\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(SettingsView, {\n onClose: this.props.close,\n onSetSection: this.changeCategory,\n section: this.state.category,\n sections: [{\n section: \"HEADER\",\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.search\n }, {\n section: \"CUSTOM\",\n element: () => this.searchBox\n }, {\n section: \"HEADER\",\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.categories\n }, ...categories, {\n section: \"DIVIDER\"\n }, {\n section: \"HEADER\",\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"a\", {\n href: \"https://discordservers.com\",\n target: \"_blank\"\n }, \"DiscordServers.com\")\n }, {\n section: \"DIVIDER\"\n }, {\n section: \"CUSTOM\",\n element: () => this.connection\n }],\n theme: \"dark\"\n });\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvcHVibGljc2VydmVycy9tZW51LmpzPzlhY2QiXSwibmFtZXMiOlsiU2V0dGluZ3NWaWV3IiwiV2VicGFja01vZHVsZXMiLCJnZXRCeURpc3BsYXlOYW1lIiwiUHVibGljU2VydmVycyIsIlJlYWN0IiwiQ29tcG9uZW50IiwiY2F0ZWdvcnlCdXR0b25zIiwiY29uc3RydWN0b3IiLCJwcm9wcyIsInN0YXRlIiwiY2F0ZWdvcnkiLCJxdWVyeSIsImxvYWRpbmciLCJ1c2VyIiwicmVzdWx0cyIsInNlcnZlcnMiLCJzaXplIiwiZnJvbSIsInRvdGFsIiwibmV4dCIsImNoYW5nZUNhdGVnb3J5IiwiYmluZCIsInNlYXJjaEtleURvd24iLCJjb25uZWN0IiwibG9hZE5leHRQYWdlIiwiam9pbiIsImNvbXBvbmVudERpZE1vdW50IiwiY2hlY2tDb25uZWN0aW9uIiwidXNlckRhdGEiLCJDb25uZWN0aW9uIiwic2V0U3RhdGUiLCJzZWFyY2giLCJlIiwid2hpY2giLCJ0YXJnZXQiLCJ2YWx1ZSIsInRlcm0iLCJpZCIsIlByb21pc2UiLCJyZXNvbHZlIiwibmF0aXZlIiwic2VhcmNoQm94IiwiU3RyaW5ncyIsInRpdGxlIiwibm90Q29ubmVjdGVkIiwic3RhcnQiLCJlbmQiLCJmb3JtYXQiLCJjb250ZW50IiwiY29ubmVjdEJ1dHRvbiIsIm9uQ2xpY2siLCJwaW5uZWQiLCJiZFNlcnZlciIsIm1hcCIsInNlcnZlciIsImNyZWF0ZUVsZW1lbnQiLCJTZXJ2ZXJDYXJkIiwia2V5IiwiaWRlbnRpZmllciIsImpvaW5lZCIsImhhc0pvaW5lZCIsImRlZmF1bHRBdmF0YXIiLCJnZXREZWZhdWx0QXZhdGFyIiwiU2V0dGluZ3NUaXRsZSIsInRleHQiLCJidXR0b24iLCJuZXh0QnV0dG9uIiwibGVuZ3RoIiwidHlwZSIsImNsYXNzTmFtZSIsImxvYWRNb3JlIiwiY29ubmVjdGlvbiIsInJlY29ubmVjdCIsIm5hbWUiLCJvbmxpbmUiLCJtZW1iZXJzIiwiY2F0ZWdvcmllcyIsImRlc2NyaXB0aW9uIiwiaWNvblVybCIsIm5hdGl2ZWpvaW4iLCJpbnZpdGVfY29kZSIsInJlbmRlciIsInNlY3Rpb24iLCJsYWJlbCIsImVsZW1lbnQiLCJvbkNsb3NlIiwiY2xvc2UiLCJvblNldFNlY3Rpb24iLCJzZWN0aW9ucyIsImhyZWYiLCJ0aGVtZSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUEsTUFBTUEsWUFBWSxHQUFHQyxzREFBYyxDQUFDQyxnQkFBZixDQUFnQyxjQUFoQyxDQUFyQjtBQUVlLE1BQU1DLGFBQU4sU0FBNEJDLDZDQUFLLENBQUNDLFNBQWxDLENBQTRDO0FBRXZELE1BQUlDLGVBQUosR0FBc0I7QUFDbEIsV0FBTyxDQUFDLEtBQUQsRUFBUSxXQUFSLEVBQXFCLFdBQXJCLEVBQWtDLGdCQUFsQyxFQUFvRCxZQUFwRCxFQUFrRSxXQUFsRSxFQUErRSxnQkFBL0UsRUFBaUcsZUFBakcsRUFBa0gsa0JBQWxILEVBQXNJLE9BQXRJLEVBQStJLFdBQS9JLEVBQTRKLFVBQTVKLEVBQXdLLGFBQXhLLEVBQXVMLE9BQXZMLENBQVA7QUFDSDs7QUFFREMsYUFBVyxDQUFDQyxLQUFELEVBQVE7QUFDZixVQUFNQSxLQUFOO0FBQ0EsU0FBS0MsS0FBTCxHQUFhO0FBQ1RDLGNBQVEsRUFBRSxLQUREO0FBRVRDLFdBQUssRUFBRSxFQUZFO0FBR1RDLGFBQU8sRUFBRSxJQUhBO0FBSVRDLFVBQUksRUFBRSxJQUpHO0FBS1RDLGFBQU8sRUFBRTtBQUNMQyxlQUFPLEVBQUUsRUFESjtBQUVMQyxZQUFJLEVBQUUsQ0FGRDtBQUdMQyxZQUFJLEVBQUUsQ0FIRDtBQUlMQyxhQUFLLEVBQUUsQ0FKRjtBQUtMQyxZQUFJLEVBQUU7QUFMRDtBQUxBLEtBQWI7QUFjQSxTQUFLQyxjQUFMLEdBQXNCLEtBQUtBLGNBQUwsQ0FBb0JDLElBQXBCLENBQXlCLElBQXpCLENBQXRCO0FB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QUNyQ3FGLGFBQU8sRUFBRSxLQUFLN0UsS0FBTCxDQUFXOEUsS0FEaUI7QUFFckNDLGtCQUFZLEVBQUUsS0FBS25FLGNBRmtCO0FBR3JDOEQsYUFBTyxFQUFFLEtBQUt6RSxLQUFMLENBQVdDLFFBSGlCO0FBSXJDOEUsY0FBUSxFQUFFLENBQ047QUFBQ04sZUFBTyxFQUFFLFFBQVY7QUFBb0JDLGFBQUssRUFBRXpDLCtDQUFPLENBQUN2QyxhQUFSLENBQXNCNEI7QUFBakQsT0FETSxFQUVOO0FBQUNtRCxlQUFPLEVBQUUsUUFBVjtBQUFvQkUsZUFBTyxFQUFFLE1BQU0sS0FBSzNDO0FBQXhDLE9BRk0sRUFHTjtBQUFDeUMsZUFBTyxFQUFFLFFBQVY7QUFBb0JDLGFBQUssRUFBRXpDLCtDQUFPLENBQUN2QyxhQUFSLENBQXNCeUU7QUFBakQsT0FITSxFQUlOLEdBQUdBLFVBSkcsRUFLTjtBQUFDTSxlQUFPLEVBQUU7QUFBVixPQUxNLEVBTU47QUFBQ0EsZUFBTyxFQUFFLFFBQVY7QUFBb0JDLGFBQUssRUFBRS9FLDZDQUFLLENBQUNtRCxhQUFOLENBQW9CLEdBQXBCLEVBQXlCO0FBQUNrQyxjQUFJLEVBQUUsNEJBQVA7QUFBcUN2RCxnQkFBTSxFQUFFO0FBQTdDLFNBQXpCLEVBQWlGLG9CQUFqRjtBQUEzQixPQU5NLEVBT047QUFBQ2dELGVBQU8sRUFBRTtBQUFWLE9BUE0sRUFRTjtBQUFDQSxlQUFPLEVBQUUsUUFBVjtBQUFvQkUsZUFBTyxFQUFFLE1BQU0sS0FBS2I7QUFBeEMsT0FSTSxDQUoyQjtBQWNyQ21CLFdBQUssRUFBRTtBQWQ4QixLQUFsQyxDQUFQO0FBZ0JIOztBQWxLc0QiLCJmaWxlIjoiLi9zcmMvdWkvcHVibGljc2VydmVycy9tZW51LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtSZWFjdCwgV2VicGFja01vZHVsZXMsIFN0cmluZ3N9IGZyb20gXCJtb2R1bGVzXCI7XHJcbmltcG9ydCBTZXR0aW5nc1RpdGxlIGZyb20gXCIuLi9zZXR0aW5ncy90aXRsZVwiO1xyXG5pbXBvcnQgU2VydmVyQ2FyZCBmcm9tIFwiLi9jYXJkXCI7XHJcbmltcG9ydCBDb25uZWN0aW9uIGZyb20gXCIuLi8uLi9zdHJ1Y3RzL3BzY29ubmVjdGlvblwiO1xyXG5pbXBvcnQgU2VhcmNoIGZyb20gXCIuLi9zZXR0aW5ncy9jb21wb25lbnRzL3NlYXJjaFwiO1xyXG5cclxuY29uc3QgU2V0dGluZ3NWaWV3ID0gV2VicGFja01vZHVsZXMuZ2V0QnlEaXNwbGF5TmFtZShcIlNldHRpbmdzVmlld1wiKTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFB1YmxpY1NlcnZlcnMgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xyXG5cclxuICAgIGdldCBjYXRlZ29yeUJ1dHRvbnMoKSB7XHJcbiAgICAgICAgcmV0dXJuIFtcIkFsbFwiLCBcIkZQUyBHYW1lc1wiLCBcIk1NTyBHYW1lc1wiLCBcIlN0cmF0ZWd5IEdhbWVzXCIsIFwiTU9CQSBHYW1lc1wiLCBcIlJQRyBHYW1lc1wiLCBcIlRhYmxldG9wIEdhbWVzXCIsIFwiU2FuZGJveCBHYW1lc1wiLCBcIlNpbXVsYXRpb24gR2FtZXNcIiwgXCJNdXNpY1wiLCBcIkNvbW11bml0eVwiLCBcIkxhbmd1YWdlXCIsIFwiUHJvZ3JhbW1pbmdcIiwgXCJPdGhlclwiXTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcm9wcykge1xyXG4gICAgICAgIHN1cGVyKHByb3BzKTtcclxuICAgICAgICB0aGlzLnN0YXRlID0ge1xyXG4gICAgICAgICAgICBjYXRlZ29yeTogXCJBbGxcIixcclxuICAgICAgICAgICAgcXVlcnk6IFwiXCIsXHJcbiAgICAgICAgICAgIGxvYWRpbmc6IHRydWUsXHJcbiAgICAgICAgICAgIHVzZXI6IG51bGwsXHJcbiAgICAgICAgICAgIHJlc3VsdHM6IHtcclxuICAgICAgICAgICAgICAgIHNlcnZlcnM6IFtdLFxyXG4gICAgICAgICAgICAgICAgc2l6ZTogMCxcclxuICAgICAgICAgICAgICAgIGZyb206IDAsXHJcbiAgICAgICAgICAgICAgICB0b3RhbDogMCxcclxuICAgICAgICAgICAgICAgIG5leHQ6IG51bGxcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHRoaXMuY2hhbmdlQ2F0ZWdvcnkgPSB0aGlzLmNoYW5nZUNhdGVnb3J5LmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy5zZWFyY2hLZXlEb3duID0gdGhpcy5zZWFyY2hLZXlEb3duLmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy5jb25uZWN0ID0gdGhpcy5jb25uZWN0LmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy5sb2FkTmV4dFBhZ2UgPSB0aGlzLmxvYWROZXh0UGFnZS5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMuam9pbiA9IHRoaXMuam9pbi5iaW5kKHRoaXMpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbXBvbmVudERpZE1vdW50KCkge1xyXG4gICAgICAgIHRoaXMuY2hlY2tDb25uZWN0aW9uKCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgY2hlY2tDb25uZWN0aW9uKCkge1xyXG4gICAgICAgIGNvbnN0IHVzZXJEYXRhID0gYXdhaXQgQ29ubmVjdGlvbi5jaGVja0Nvbm5lY3Rpb24oKTtcclxuICAgICAgICBpZiAoIXVzZXJEYXRhKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNldFN0YXRlKHtsb2FkaW5nOiB0cnVlLCB1c2VyOiBudWxsfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe3VzZXI6IHVzZXJEYXRhfSk7XHJcbiAgICAgICAgdGhpcy5zZWFyY2goKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBjb25uZWN0KCkge1xyXG4gICAgICAgIGF3YWl0IENvbm5lY3Rpb24uY29ubmVjdCgpO1xyXG4gICAgICAgIHRoaXMuY2hlY2tDb25uZWN0aW9uKCk7XHJcbiAgICB9XHJcblxyXG4gICAgc2VhcmNoS2V5RG93bihlKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc3RhdGUubG9hZGluZyB8fCBlLndoaWNoICE9PSAxMykgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMuc2VhcmNoKGUudGFyZ2V0LnZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBzZWFyY2godGVybSA9IFwiXCIsIGZyb20gPSAwKSB7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7cXVlcnk6IHRlcm0sIGxvYWRpbmc6IHRydWV9KTtcclxuICAgICAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgQ29ubmVjdGlvbi5zZWFyY2goe3Rlcm0sIGNhdGVnb3J5OiB0aGlzLnN0YXRlLmNhdGVnb3J5ID09IFwiQWxsXCIgPyBcIlwiIDogdGhpcy5zdGF0ZS5jYXRlZ29yeSwgZnJvbX0pO1xyXG4gICAgICAgIGlmICghcmVzdWx0cykge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zZXRTdGF0ZSh7cmVzdWx0czoge1xyXG4gICAgICAgICAgICAgICAgc2VydmVyczogW10sXHJcbiAgICAgICAgICAgICAgICBzaXplOiAwLFxyXG4gICAgICAgICAgICAgICAgZnJvbTogMCxcclxuICAgICAgICAgICAgICAgIHRvdGFsOiAwLFxyXG4gICAgICAgICAgICAgICAgbmV4dDogbnVsbFxyXG4gICAgICAgICAgICB9fSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe2xvYWRpbmc6IGZhbHNlLCByZXN1bHRzfSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgY2hhbmdlQ2F0ZWdvcnkoaWQpIHtcclxuICAgICAgICBpZiAodGhpcy5zdGF0ZS5sb2FkaW5nKSByZXR1cm47XHJcbiAgICAgICAgYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiB0aGlzLnNldFN0YXRlKHtjYXRlZ29yeTogaWR9LCByZXNvbHZlKSk7XHJcbiAgICAgICAgdGhpcy5zZWFyY2goKTtcclxuICAgIH1cclxuXHJcbiAgICBsb2FkTmV4dFBhZ2UoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc3RhdGUubG9hZGluZykgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMuc2VhcmNoKHRoaXMuc3RhdGUucXVlcnksIHRoaXMuc3RhdGUucmVzdWx0cy5uZXh0KTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBqb2luKGlkLCBuYXRpdmUgPSBmYWxzZSkge1xyXG4gICAgICAgIHJldHVybiBhd2FpdCBDb25uZWN0aW9uLmpvaW4oaWQsIG5hdGl2ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHNlYXJjaEJveCgpIHtcclxuICAgICAgICByZXR1cm4gPFNlYXJjaCBvbktleURvd249e3RoaXMuc2VhcmNoS2V5RG93bn0gcGxhY2Vob2xkZXI9e2Ake1N0cmluZ3MuUHVibGljU2VydmVycy5zZWFyY2h9Li4uYH0gLz47XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHRpdGxlKCkge1xyXG4gICAgICAgIGlmICghdGhpcy5zdGF0ZS51c2VyKSByZXR1cm4gU3RyaW5ncy5QdWJsaWNTZXJ2ZXJzLm5vdENvbm5lY3RlZDtcclxuICAgICAgICBpZiAodGhpcy5zdGF0ZS5sb2FkaW5nKSByZXR1cm4gYCR7U3RyaW5ncy5QdWJsaWNTZXJ2ZXJzLmxvYWRpbmd9Li4uYDtcclxuICAgICAgICBjb25zdCBzdGFydCA9IHRoaXMuc3RhdGUucmVzdWx0cy5mcm9tICsgMTtcclxuICAgICAgICBjb25zdCB0b3RhbCA9IHRoaXMuc3RhdGUucmVzdWx0cy50b3RhbDtcclxuICAgICAgICBjb25zdCBlbmQgPSB0aGlzLnN0YXRlLnJlc3VsdHMubmV4dCA/IHRoaXMuc3RhdGUucmVzdWx0cy5uZXh0IDogdG90YWw7XHJcbiAgICAgICAgbGV0IHRpdGxlID0gU3RyaW5ncy5QdWJsaWNTZXJ2ZXJzLnJlc3VsdHMuZm9ybWF0KHtzdGFydCwgZW5kLCB0b3RhbCwgY2F0ZWdvcnk6IHRoaXMuc3RhdGUuY2F0ZWdvcnl9KTtcclxuICAgICAgICBpZiAodGhpcy5zdGF0ZS5xdWVyeSkgdGl0bGUgKz0gXCIgXCIgKyBTdHJpbmdzLlB1YmxpY1NlcnZlcnMucXVlcnkuZm9ybWF0KHtxdWVyeTogdGhpcy5zdGF0ZS5xdWVyeX0pO1xyXG4gICAgICAgIHJldHVybiB0aXRsZTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgY29udGVudCgpIHtcclxuICAgICAgICBjb25zdCBjb25uZWN0QnV0dG9uID0gdGhpcy5zdGF0ZS51c2VyID8gbnVsbCA6IHt0aXRsZTogU3RyaW5ncy5QdWJsaWNTZXJ2ZXJzLmNvbm5lY3QsIG9uQ2xpY2s6IHRoaXMuY29ubmVjdH07XHJcbiAgICAgICAgY29uc3QgcGlubmVkID0gdGhpcy5zdGF0ZS5jYXRlZ29yeSA9PSBcIkFsbFwiIHx8ICF0aGlzLnN0YXRlLnVzZXIgPyB0aGlzLmJkU2VydmVyIDogbnVsbDtcclxuICAgICAgICBjb25zdCBzZXJ2ZXJzID0gdGhpcy5zdGF0ZS5yZXN1bHRzLnNlcnZlcnMubWFwKChzZXJ2ZXIpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoU2VydmVyQ2FyZCwge2tleTogc2VydmVyLmlkZW50aWZpZXIsIHNlcnZlcjogc2VydmVyLCBqb2luZWQ6IENvbm5lY3Rpb24uaGFzSm9pbmVkKHNlcnZlci5pZGVudGlmaWVyKSwgam9pbjogdGhpcy5qb2luLCBkZWZhdWx0QXZhdGFyOiBDb25uZWN0aW9uLmdldERlZmF1bHRBdmF0YXJ9KTtcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gW1JlYWN0LmNyZWF0ZUVsZW1lbnQoU2V0dGluZ3NUaXRsZSwge3RleHQ6IHRoaXMudGl0bGUsIGJ1dHRvbjogY29ubmVjdEJ1dHRvbn0pLFxyXG4gICAgICAgICAgICBwaW5uZWQsXHJcbiAgICAgICAgICAgIHNlcnZlcnMsXHJcbiAgICAgICAgICAgIHRoaXMuc3RhdGUucmVzdWx0cy5uZXh0ID8gdGhpcy5uZXh0QnV0dG9uIDogbnVsbCxcclxuICAgICAgICAgICAgdGhpcy5zdGF0ZS5yZXN1bHRzLnNlcnZlcnMubGVuZ3RoID4gMCAmJiBSZWFjdC5jcmVhdGVFbGVtZW50KFNldHRpbmdzVGl0bGUsIHt0ZXh0OiB0aGlzLnRpdGxlfSldO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBuZXh0QnV0dG9uKCkge1xyXG4gICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFwiYnV0dG9uXCIsIHt0eXBlOiBcImJ1dHRvblwiLCBjbGFzc05hbWU6IFwiYmQtYnV0dG9uIGJkLWJ1dHRvbi1uZXh0XCIsIG9uQ2xpY2s6IHRoaXMubG9hZE5leHRQYWdlfSwgdGhpcy5zdGF0ZS5sb2FkaW5nID8gU3RyaW5ncy5QdWJsaWNTZXJ2ZXJzLmxvYWRpbmcgOiBTdHJpbmdzLlB1YmxpY1NlcnZlcnMubG9hZE1vcmUpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBjb25uZWN0aW9uKCkge1xyXG4gICAgICAgIGNvbnN0IHt1c2VyfSA9IHRoaXMuc3RhdGU7XHJcbiAgICAgICAgaWYgKCF1c2VyKSByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7aWQ6IFwiYmQtY29ubmVjdGlvblwifSk7XHJcbiAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge2lkOiBcImJkLWNvbm5lY3Rpb25cIn0sXHJcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge2NsYXNzTmFtZTogXCJiZC1mb290bm90ZVwifSwgU3RyaW5ncy5QdWJsaWNTZXJ2ZXJzLmNvbm5lY3Rpb24uZm9ybWF0KHVzZXIpKSxcclxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImJ1dHRvblwiLCB7dHlwZTogXCJidXR0b25cIiwgY2xhc3NOYW1lOiBcImJkLWJ1dHRvbiBiZC1idXR0b24tcmVjb25uZWN0XCIsIG9uQ2xpY2s6IHRoaXMuY29ubmVjdH0sIFN0cmluZ3MuUHVibGljU2VydmVycy5yZWNvbm5lY3QpXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgYmRTZXJ2ZXIoKSB7XHJcbiAgICAgICAgY29uc3Qgc2VydmVyID0ge1xyXG4gICAgICAgICAgICBuYW1lOiBcIkJldHRlckRpc2NvcmRcIixcclxuICAgICAgICAgICAgb25saW5lOiBcIjc1MDArXCIsXHJcbiAgICAgICAgICAgIG1lbWJlcnM6IFwiMjAwMDArXCIsXHJcbiAgICAgICAgICAgIGNhdGVnb3JpZXM6IFtcImNvbW11bml0eVwiLCBcInByb2dyYW1taW5nXCIsIFwic3VwcG9ydFwiXSxcclxuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiT2ZmaWNpYWwgQmV0dGVyRGlzY29yZCBzZXJ2ZXIgZm9yIHBsdWdpbnMsIHRoZW1lcywgc3VwcG9ydCwgZXRjXCIsXHJcbiAgICAgICAgICAgIGlkZW50aWZpZXI6IFwiODYwMDQ3NDQ5NjY5MTQwNDhcIixcclxuICAgICAgICAgICAgaWNvblVybDogXCJodHRwczovL2Nkbi5kaXNjb3JkYXBwLmNvbS9pY29ucy84NjAwNDc0NDk2NjkxNDA0OC8yOTJlN2Y2YmZmZjJiNzFkZmQxM2U1MDhhODU5YWVkZC53ZWJwXCIsXHJcbiAgICAgICAgICAgIG5hdGl2ZWpvaW46IHRydWUsXHJcbiAgICAgICAgICAgIGludml0ZV9jb2RlOiBcIjBUbWZvNVpiT1JDUnFiQWRcIixcclxuICAgICAgICAgICAgcGlubmVkOiB0cnVlXHJcbiAgICAgICAgfTtcclxuICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChTZXJ2ZXJDYXJkLCB7c2VydmVyOiBzZXJ2ZXIsIHBpbm5lZDogdHJ1ZSwgam9pbmVkOiBDb25uZWN0aW9uLmhhc0pvaW5lZChzZXJ2ZXIuaWRlbnRpZmllciksIGRlZmF1bHRBdmF0YXI6IENvbm5lY3Rpb24uZ2V0RGVmYXVsdEF2YXRhcn0pO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICBjb25zdCBjYXRlZ29yaWVzID0gdGhpcy5jYXRlZ29yeUJ1dHRvbnMubWFwKG5hbWUgPT4gKHtcclxuICAgICAgICAgICAgICAgIHNlY3Rpb246IG5hbWUsXHJcbiAgICAgICAgICAgICAgICBsYWJlbDogbmFtZSxcclxuICAgICAgICAgICAgICAgIGVsZW1lbnQ6ICgpID0+IHRoaXMuY29udGVudFxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoU2V0dGluZ3NWaWV3LCB7XHJcbiAgICAgICAgICAgIG9uQ2xvc2U6IHRoaXMucHJvcHMuY2xvc2UsXHJcbiAgICAgICAgICAgIG9uU2V0U2VjdGlvbjogdGhpcy5jaGFuZ2VDYXRlZ29yeSxcclxuICAgICAgICAgICAgc2VjdGlvbjogdGhpcy5zdGF0ZS5jYXRlZ29yeSxcclxuICAgICAgICAgICAgc2VjdGlvbnM6IFtcclxuICAgICAgICAgICAgICAgIHtzZWN0aW9uOiBcIkhFQURFUlwiLCBsYWJlbDogU3RyaW5ncy5QdWJsaWNTZXJ2ZXJzLnNlYXJjaH0sXHJcbiAgICAgICAgICAgICAgICB7c2VjdGlvbjogXCJDVVNUT01cIiwgZWxlbWVudDogKCkgPT4gdGhpcy5zZWFyY2hCb3h9LFxyXG4gICAgICAgICAgICAgICAge3NlY3Rpb246IFwiSEVBREVSXCIsIGxhYmVsOiBTdHJpbmdzLlB1YmxpY1NlcnZlcnMuY2F0ZWdvcmllc30sXHJcbiAgICAgICAgICAgICAgICAuLi5jYXRlZ29yaWVzLFxyXG4gICAgICAgICAgICAgICAge3NlY3Rpb246IFwiRElWSURFUlwifSxcclxuICAgICAgICAgICAgICAgIHtzZWN0aW9uOiBcIkhFQURFUlwiLCBsYWJlbDogUmVhY3QuY3JlYXRlRWxlbWVudChcImFcIiwge2hyZWY6IFwiaHR0cHM6Ly9kaXNjb3Jkc2VydmVycy5jb21cIiwgdGFyZ2V0OiBcIl9ibGFua1wifSwgXCJEaXNjb3JkU2VydmVycy5jb21cIil9LFxyXG4gICAgICAgICAgICAgICAge3NlY3Rpb246IFwiRElWSURFUlwifSxcclxuICAgICAgICAgICAgICAgIHtzZWN0aW9uOiBcIkNVU1RPTVwiLCBlbGVtZW50OiAoKSA9PiB0aGlzLmNvbm5lY3Rpb259XHJcbiAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgIHRoZW1lOiBcImRhcmtcIlxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59XHJcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/publicservers/menu.js\n"); /***/ }), @@ -1007,7 +1006,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _settings_addonlist__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./settings/addonlist */ \"./src/ui/settings/addonlist.jsx\");\n/* harmony import */ var _settings_group__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./settings/group */ \"./src/ui/settings/group.jsx\");\n/* harmony import */ var _settings_title__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./settings/title */ \"./src/ui/settings/title.jsx\");\n/* harmony import */ var _settings_sidebarheader__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./settings/sidebarheader */ \"./src/ui/settings/sidebarheader.jsx\");\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class SettingsRenderer {\n constructor() {\n this.patchSections();\n modules__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].on(\"strings-updated\", this.forceUpdate);\n }\n\n onDrawerToggle(collection, group, state) {\n const drawerStates = modules__WEBPACK_IMPORTED_MODULE_0__[\"DataStore\"].getBDData(\"drawerStates\") || {};\n if (!drawerStates[collection]) drawerStates[collection] = {};\n drawerStates[collection][group] = state;\n modules__WEBPACK_IMPORTED_MODULE_0__[\"DataStore\"].setBDData(\"drawerStates\", drawerStates);\n }\n\n getDrawerState(collection, group, defaultValue) {\n const drawerStates = modules__WEBPACK_IMPORTED_MODULE_0__[\"DataStore\"].getBDData(\"drawerStates\") || {};\n if (!drawerStates[collection]) return defaultValue;\n if (!drawerStates[collection].hasOwnProperty(group)) return defaultValue;\n return drawerStates[collection][group];\n }\n\n onChange(onChange) {\n return (collection, category, id) => {\n const before = modules__WEBPACK_IMPORTED_MODULE_0__[\"Settings\"].collections.length + modules__WEBPACK_IMPORTED_MODULE_0__[\"Settings\"].panels.length;\n onChange(collection, category, id);\n const after = modules__WEBPACK_IMPORTED_MODULE_0__[\"Settings\"].collections.length + modules__WEBPACK_IMPORTED_MODULE_0__[\"Settings\"].panels.length;\n if (before != after) setTimeout(this.forceUpdate.bind(this), 50);\n };\n }\n\n buildSettingsPanel(id, title, config, state, onChange, button = null) {\n config.forEach(section => {\n section.settings.forEach(item => item.value = state[section.id][item.id]);\n });\n return this.getSettingsPanel(id, title, config, this.onChange(onChange), button);\n }\n\n getSettingsPanel(id, title, groups, onChange, button = null) {\n return [modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_settings_title__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n text: title,\n button: button\n }), groups.map(section => {\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_settings_group__WEBPACK_IMPORTED_MODULE_2__[\"default\"], Object.assign({}, section, {\n onChange: onChange,\n onDrawerToggle: state => this.onDrawerToggle(id, section.id, state),\n shown: this.getDrawerState(id, section.id, section.hasOwnProperty(\"shown\") ? section.shown : true)\n }));\n })];\n }\n\n getAddonPanel(title, addonList, addonState, options = {}) {\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_settings_addonlist__WEBPACK_IMPORTED_MODULE_1__[\"default\"], Object.assign({}, {\n title: title,\n addonList: addonList,\n addonState: addonState\n }, options));\n }\n\n async patchSections() {\n const UserSettings = await modules__WEBPACK_IMPORTED_MODULE_0__[\"ReactComponents\"].get(\"UserSettings\", m => m.prototype && m.prototype.generateSections);\n modules__WEBPACK_IMPORTED_MODULE_0__[\"Patcher\"].after(\"SettingsManager\", UserSettings.prototype, \"render\", thisObject => {\n thisObject._reactInternalFiber.return.return.return.return.return.return.return.memoizedProps.id = \"user-settings\";\n });\n modules__WEBPACK_IMPORTED_MODULE_0__[\"Patcher\"].after(\"SettingsManager\", UserSettings.prototype, \"generateSections\", (thisObject, args, returnValue) => {\n let location = returnValue.findIndex(s => s.section.toLowerCase() == \"linux\") + 1;\n\n const insert = section => {\n returnValue.splice(location, 0, section);\n location++;\n };\n\n insert({\n section: \"DIVIDER\"\n }); // Header\n\n insert({\n section: \"CUSTOM\",\n element: _settings_sidebarheader__WEBPACK_IMPORTED_MODULE_4__[\"default\"]\n });\n\n for (const collection of modules__WEBPACK_IMPORTED_MODULE_0__[\"Settings\"].collections) {\n if (collection.disabled) continue;\n insert({\n section: collection.name,\n label: collection.name,\n element: () => this.buildSettingsPanel(collection.id, collection.name, collection.settings, modules__WEBPACK_IMPORTED_MODULE_0__[\"Settings\"].state[collection.id], modules__WEBPACK_IMPORTED_MODULE_0__[\"Settings\"].onSettingChange.bind(modules__WEBPACK_IMPORTED_MODULE_0__[\"Settings\"], collection.id), collection.button ? collection.button : null)\n });\n }\n\n for (const panel of modules__WEBPACK_IMPORTED_MODULE_0__[\"Settings\"].panels.sort((a, b) => a.order > b.order)) {\n if (panel.clickListener) panel.onClick = event => panel.clickListener(thisObject, event, returnValue);\n insert(panel);\n }\n });\n this.forceUpdate();\n }\n\n forceUpdate() {\n const viewClass = modules__WEBPACK_IMPORTED_MODULE_0__[\"WebpackModules\"].getByProps(\"standardSidebarView\").standardSidebarView.split(\" \")[0];\n const node = document.querySelector(`.${viewClass}`);\n if (!node) return;\n const stateNode = modules__WEBPACK_IMPORTED_MODULE_0__[\"Utilities\"].findInReactTree(modules__WEBPACK_IMPORTED_MODULE_0__[\"Utilities\"].getReactInstance(node), m => m && m.generateSections, {\n walkable: [\"return\", \"stateNode\"]\n });\n if (stateNode) stateNode.forceUpdate();\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL3NldHRpbmdzLmpzPzc2YmUiXSwibmFtZXMiOlsiU2V0dGluZ3NSZW5kZXJlciIsImNvbnN0cnVjdG9yIiwicGF0Y2hTZWN0aW9ucyIsIkV2ZW50cyIsIm9uIiwiZm9yY2VVcGRhdGUiLCJvbkRyYXdlclRvZ2dsZSIsImNvbGxlY3Rpb24iLCJncm91cCIsInN0YXRlIiwiZHJhd2VyU3RhdGVzIiwiRGF0YVN0b3JlIiwiZ2V0QkREYXRhIiwic2V0QkREYXRhIiwiZ2V0RHJhd2VyU3RhdGUiLCJkZWZhdWx0VmFsdWUiLCJoYXNPd25Qcm9wZXJ0eSIsIm9uQ2hhbmdlIiwiY2F0ZWdvcnkiLCJpZCIsImJlZm9yZSIsIlNldHRpbmdzIiwiY29sbGVjdGlvbnMiLCJsZW5ndGgiLCJwYW5lbHMiLCJhZnRlciIsInNldFRpbWVvdXQiLCJiaW5kIiwiYnVpbGRTZXR0aW5nc1BhbmVsIiwidGl0bGUiLCJjb25maWciLCJidXR0b24iLCJmb3JFYWNoIiwic2VjdGlvbiIsInNldHRpbmdzIiwiaXRlbSIsInZhbHVlIiwiZ2V0U2V0dGluZ3NQYW5lbCIsImdyb3VwcyIsIlJlYWN0IiwiY3JlYXRlRWxlbWVudCIsIlNldHRpbmdzVGl0bGUiLCJ0ZXh0IiwibWFwIiwiU2V0dGluZ3NHcm91cCIsIk9iamVjdCIsImFzc2lnbiIsInNob3duIiwiZ2V0QWRkb25QYW5lbCIsImFkZG9uTGlzdCIsImFkZG9uU3RhdGUiLCJvcHRpb25zIiwiQWRkb25MaXN0IiwiVXNlclNldHRpbmdzIiwiUmVhY3RDb21wb25lbnRzIiwiZ2V0IiwibSIsInByb3RvdHlwZSIsImdlbmVyYXRlU2VjdGlvbnMiLCJQYXRjaGVyIiwidGhpc09iamVjdCIsIl9yZWFjdEludGVybmFsRmliZXIiLCJyZXR1cm4iLCJtZW1vaXplZFByb3BzIiwiYXJncyIsInJldHVyblZhbHVlIiwibG9jYXRpb24iLCJmaW5kSW5kZXgiLCJzIiwidG9Mb3dlckNhc2UiLCJpbnNlcnQiLCJzcGxpY2UiLCJlbGVtZW50IiwiSGVhZGVyIiwiZGlzYWJsZWQiLCJuYW1lIiwibGFiZWwiLCJvblNldHRpbmdDaGFuZ2UiLCJwYW5lbCIsInNvcnQiLCJhIiwiYiIsIm9yZGVyIiwiY2xpY2tMaXN0ZW5lciIsIm9uQ2xpY2siLCJldmVudCIsInZpZXdDbGFzcyIsIldlYnBhY2tNb2R1bGVzIiwiZ2V0QnlQcm9wcyIsInN0YW5kYXJkU2lkZWJhclZpZXciLCJzcGxpdCIsIm5vZGUiLCJkb2N1bWVudCIsInF1ZXJ5U2VsZWN0b3IiLCJzdGF0ZU5vZGUiLCJVdGlsaXRpZXMiLCJmaW5kSW5SZWFjdFRyZWUiLCJnZXRSZWFjdEluc3RhbmNlIiwid2Fsa2FibGUiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFZSxtRUFBSSxNQUFNQSxnQkFBTixDQUF1QjtBQUV0Q0MsYUFBVyxHQUFHO0FBQ1YsU0FBS0MsYUFBTDtBQUNBQyxrREFBTSxDQUFDQyxFQUFQLENBQVUsaUJBQVYsRUFBNkIsS0FBS0MsV0FBbEM7QUFDSDs7QUFFREMsZ0JBQWMsQ0FBQ0MsVUFBRCxFQUFhQyxLQUFiLEVBQW9CQyxLQUFwQixFQUEyQjtBQUNyQyxVQUFNQyxZQUFZLEdBQUdDLGlEQUFTLENBQUNDLFNBQVYsQ0FBb0IsY0FBcEIsS0FBdUMsRUFBNUQ7QUFDQSxRQUFJLENBQUNGLFlBQVksQ0FBQ0gsVUFBRCxDQUFqQixFQUErQkcsWUFBWSxDQUFDSCxVQUFELENBQVosR0FBMkIsRUFBM0I7QUFDL0JHLGdCQUFZLENBQUNILFVBQUQsQ0FBWixDQUF5QkMsS0FBekIsSUFBa0NDLEtBQWxDO0FBQ0FFLHFEQUFTLENBQUNFLFNBQVYsQ0FBb0IsY0FBcEIsRUFBb0NILFlBQXBDO0FBQ0g7O0FBRURJLGdCQUFjLENBQUNQLFVBQUQsRUFBYUMsS0FBYixFQUFvQk8sWUFBcEIsRUFBa0M7QUFDNUMsVUFBTUwsWUFBWSxHQUFHQyxpREFBUyxDQUFDQyxTQUFWLENBQW9CLGNBQXBCLEtBQXVDLEVBQTVEO0FBQ0EsUUFBSSxDQUFDRixZQUFZLENBQUNILFVBQUQsQ0FBakIsRUFBK0IsT0FBT1EsWUFBUDtBQUMvQixRQUFJLENBQUNMLFlBQVksQ0FBQ0gsVUFBRCxDQUFaLENBQXlCUyxjQUF6QixDQUF3Q1IsS0FBeEMsQ0FBTCxFQUFxRCxPQUFPTyxZQUFQO0FBQ3JELFdBQU9MLFlBQVksQ0FBQ0gsVUFBRCxDQUFaLENBQXlCQyxLQUF6QixDQUFQO0FBQ0g7O0FBRURTLFVBQVEsQ0FBQ0EsUUFBRCxFQUFXO0FBQ2YsV0FBTyxDQUFDVixVQUFELEVBQWFXLFFBQWIsRUFBdUJDLEVBQXZCLEtBQThCO0FBQ2pDLFlBQU1DLE1BQU0sR0FBR0MsZ0RBQVEsQ0FBQ0MsV0FBVCxDQUFxQkMsTUFBckIsR0FBOEJGLGdEQUFRLENBQUNHLE1BQVQsQ0FBZ0JELE1BQTdEO0FBQ0FOLGNBQVEsQ0FBQ1YsVUFBRCxFQUFhVyxRQUFiLEVBQXVCQyxFQUF2QixDQUFSO0FBQ0EsWUFBTU0sS0FBSyxHQUFHSixnREFBUSxDQUFDQyxXQUFULENBQXFCQyxNQUFyQixHQUE4QkYsZ0RBQVEsQ0FBQ0csTUFBVCxDQUFnQkQsTUFBNUQ7QUFDQSxVQUFJSCxNQUFNLElBQUlLLEtBQWQsRUFBcUJDLFVBQVUsQ0FBQyxLQUFLckIsV0FBTCxDQUFpQnNCLElBQWpCLENBQXNCLElBQXRCLENBQUQsRUFBOEIsRUFBOUIsQ0FBVjtBQUN4QixLQUxEO0FBTUg7O0FBRURDLG9CQUFrQixDQUFDVCxFQUFELEVBQUtVLEtBQUwsRUFBWUMsTUFBWixFQUFvQnJCLEtBQXBCLEVBQTJCUSxRQUEzQixFQUFxQ2MsTUFBTSxHQUFHLElBQTlDLEVBQW9EO0FBQ2xFRCxVQUFNLENBQUNFLE9BQVAsQ0FBZUMsT0FBTyxJQUFJO0FBQ3RCQSxhQUFPLENBQUNDLFFBQVIsQ0FBaUJGLE9BQWpCLENBQXlCRyxJQUFJLElBQUlBLElBQUksQ0FBQ0MsS0FBTCxHQUFhM0IsS0FBSyxDQUFDd0IsT0FBTyxDQUFDZCxFQUFULENBQUwsQ0FBa0JnQixJQUFJLENBQUNoQixFQUF2QixDQUE5QztBQUNILEtBRkQ7QUFHQSxXQUFPLEtBQUtrQixnQkFBTCxDQUFzQmxCLEVBQXRCLEVBQTBCVSxLQUExQixFQUFpQ0MsTUFBakMsRUFBeUMsS0FBS2IsUUFBTCxDQUFjQSxRQUFkLENBQXpDLEVBQWtFYyxNQUFsRSxDQUFQO0FBQ0g7O0FBRURNLGtCQUFnQixDQUFDbEIsRUFBRCxFQUFLVSxLQUFMLEVBQVlTLE1BQVosRUFBb0JyQixRQUFwQixFQUE4QmMsTUFBTSxHQUFHLElBQXZDLEVBQTZDO0FBQ3pELFdBQU8sQ0FBQ1EsNkNBQUssQ0FBQ0MsYUFBTixDQUFvQkMsdURBQXBCLEVBQW1DO0FBQUNDLFVBQUksRUFBRWIsS0FBUDtBQUFjRSxZQUFNLEVBQUVBO0FBQXRCLEtBQW5DLENBQUQsRUFBb0VPLE1BQU0sQ0FBQ0ssR0FBUCxDQUFXVixPQUFPLElBQUk7QUFDN0YsYUFBT00sNkNBQUssQ0FBQ0MsYUFBTixDQUFvQkksdURBQXBCLEVBQW1DQyxNQUFNLENBQUNDLE1BQVAsQ0FBYyxFQUFkLEVBQWtCYixPQUFsQixFQUEyQjtBQUNqRWhCLGdCQUFRLEVBQUVBLFFBRHVEO0FBRWpFWCxzQkFBYyxFQUFFRyxLQUFLLElBQUksS0FBS0gsY0FBTCxDQUFvQmEsRUFBcEIsRUFBd0JjLE9BQU8sQ0FBQ2QsRUFBaEMsRUFBb0NWLEtBQXBDLENBRndDO0FBR2pFc0MsYUFBSyxFQUFFLEtBQUtqQyxjQUFMLENBQW9CSyxFQUFwQixFQUF3QmMsT0FBTyxDQUFDZCxFQUFoQyxFQUFvQ2MsT0FBTyxDQUFDakIsY0FBUixDQUF1QixPQUF2QixJQUFrQ2lCLE9BQU8sQ0FBQ2MsS0FBMUMsR0FBa0QsSUFBdEY7QUFIMEQsT0FBM0IsQ0FBbkMsQ0FBUDtBQUtILEtBTjBFLENBQXBFLENBQVA7QUFPSDs7QUFFREMsZUFBYSxDQUFDbkIsS0FBRCxFQUFRb0IsU0FBUixFQUFtQkMsVUFBbkIsRUFBK0JDLE9BQU8sR0FBRyxFQUF6QyxFQUE2QztBQUN0RCxXQUFPWiw2Q0FBSyxDQUFDQyxhQUFOLENBQW9CWSwyREFBcEIsRUFBK0JQLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjLEVBQWQsRUFBa0I7QUFDcERqQixXQUFLLEVBQUVBLEtBRDZDO0FBRXBEb0IsZUFBUyxFQUFFQSxTQUZ5QztBQUdwREMsZ0JBQVUsRUFBRUE7QUFId0MsS0FBbEIsRUFJbkNDLE9BSm1DLENBQS9CLENBQVA7QUFLSDs7QUFFRCxRQUFNakQsYUFBTixHQUFzQjtBQUNsQixVQUFNbUQsWUFBWSxHQUFHLE1BQU1DLHVEQUFlLENBQUNDLEdBQWhCLENBQW9CLGNBQXBCLEVBQW9DQyxDQUFDLElBQUlBLENBQUMsQ0FBQ0MsU0FBRixJQUFlRCxDQUFDLENBQUNDLFNBQUYsQ0FBWUMsZ0JBQXBFLENBQTNCO0FBQ0FDLG1EQUFPLENBQUNsQyxLQUFSLENBQWMsaUJBQWQsRUFBaUM0QixZQUFZLENBQUNJLFNBQTlDLEVBQXlELFFBQXpELEVBQW9FRyxVQUFELElBQWdCO0FBQy9FQSxnQkFBVSxDQUFDQyxtQkFBWCxDQUErQkMsTUFBL0IsQ0FBc0NBLE1BQXRDLENBQTZDQSxNQUE3QyxDQUFvREEsTUFBcEQsQ0FBMkRBLE1BQTNELENBQWtFQSxNQUFsRSxDQUF5RUEsTUFBekUsQ0FBZ0ZDLGFBQWhGLENBQThGNUMsRUFBOUYsR0FBbUcsZUFBbkc7QUFDSCxLQUZEO0FBR0F3QyxtREFBTyxDQUFDbEMsS0FBUixDQUFjLGlCQUFkLEVBQWlDNEIsWUFBWSxDQUFDSSxTQUE5QyxFQUF5RCxrQkFBekQsRUFBNkUsQ0FBQ0csVUFBRCxFQUFhSSxJQUFiLEVBQW1CQyxXQUFuQixLQUFtQztBQUM1RyxVQUFJQyxRQUFRLEdBQUdELFdBQVcsQ0FBQ0UsU0FBWixDQUFzQkMsQ0FBQyxJQUFJQSxDQUFDLENBQUNuQyxPQUFGLENBQVVvQyxXQUFWLE1BQTJCLE9BQXRELElBQWlFLENBQWhGOztBQUNBLFlBQU1DLE1BQU0sR0FBSXJDLE9BQUQsSUFBYTtBQUN4QmdDLG1CQUFXLENBQUNNLE1BQVosQ0FBbUJMLFFBQW5CLEVBQTZCLENBQTdCLEVBQWdDakMsT0FBaEM7QUFDQWlDLGdCQUFRO0FBQ1gsT0FIRDs7QUFJQUksWUFBTSxDQUFDO0FBQUNyQyxlQUFPLEVBQUU7QUFBVixPQUFELENBQU4sQ0FONEcsQ0FPNUc7O0FBQ0FxQyxZQUFNLENBQUM7QUFBQ3JDLGVBQU8sRUFBRSxRQUFWO0FBQW9CdUMsZUFBTyxFQUFFQywrREFBTUE7QUFBbkMsT0FBRCxDQUFOOztBQUNBLFdBQUssTUFBTWxFLFVBQVgsSUFBeUJjLGdEQUFRLENBQUNDLFdBQWxDLEVBQStDO0FBQzNDLFlBQUlmLFVBQVUsQ0FBQ21FLFFBQWYsRUFBeUI7QUFDekJKLGNBQU0sQ0FBQztBQUNIckMsaUJBQU8sRUFBRTFCLFVBQVUsQ0FBQ29FLElBRGpCO0FBRUhDLGVBQUssRUFBRXJFLFVBQVUsQ0FBQ29FLElBRmY7QUFHSEgsaUJBQU8sRUFBRSxNQUFNLEtBQUs1QyxrQkFBTCxDQUF3QnJCLFVBQVUsQ0FBQ1ksRUFBbkMsRUFBdUNaLFVBQVUsQ0FBQ29FLElBQWxELEVBQXdEcEUsVUFBVSxDQUFDMkIsUUFBbkUsRUFBNkViLGdEQUFRLENBQUNaLEtBQVQsQ0FBZUYsVUFBVSxDQUFDWSxFQUExQixDQUE3RSxFQUE0R0UsZ0RBQVEsQ0FBQ3dELGVBQVQsQ0FBeUJsRCxJQUF6QixDQUE4Qk4sZ0RBQTlCLEVBQXdDZCxVQUFVLENBQUNZLEVBQW5ELENBQTVHLEVBQW9LWixVQUFVLENBQUN3QixNQUFYLEdBQW9CeEIsVUFBVSxDQUFDd0IsTUFBL0IsR0FBd0MsSUFBNU07QUFIWixTQUFELENBQU47QUFLSDs7QUFDRCxXQUFLLE1BQU0rQyxLQUFYLElBQW9CekQsZ0RBQVEsQ0FBQ0csTUFBVCxDQUFnQnVELElBQWhCLENBQXFCLENBQUNDLENBQUQsRUFBR0MsQ0FBSCxLQUFTRCxDQUFDLENBQUNFLEtBQUYsR0FBVUQsQ0FBQyxDQUFDQyxLQUExQyxDQUFwQixFQUFzRTtBQUNsRSxZQUFJSixLQUFLLENBQUNLLGFBQVYsRUFBeUJMLEtBQUssQ0FBQ00sT0FBTixHQUFpQkMsS0FBRCxJQUFXUCxLQUFLLENBQUNLLGFBQU4sQ0FBb0J2QixVQUFwQixFQUFnQ3lCLEtBQWhDLEVBQXVDcEIsV0FBdkMsQ0FBM0I7QUFDekJLLGNBQU0sQ0FBQ1EsS0FBRCxDQUFOO0FBQ0g7QUFDSixLQXJCRDtBQXNCQSxTQUFLekUsV0FBTDtBQUNIOztBQUVEQSxhQUFXLEdBQUc7QUFDVixVQUFNaUYsU0FBUyxHQUFHQyxzREFBYyxDQUFDQyxVQUFmLENBQTBCLHFCQUExQixFQUFpREMsbUJBQWpELENBQXFFQyxLQUFyRSxDQUEyRSxHQUEzRSxFQUFnRixDQUFoRixDQUFsQjtBQUNBLFVBQU1DLElBQUksR0FBR0MsUUFBUSxDQUFDQyxhQUFULENBQXdCLElBQUdQLFNBQVUsRUFBckMsQ0FBYjtBQUNBLFFBQUksQ0FBQ0ssSUFBTCxFQUFXO0FBQ1gsVUFBTUcsU0FBUyxHQUFHQyxpREFBUyxDQUFDQyxlQUFWLENBQTBCRCxpREFBUyxDQUFDRSxnQkFBVixDQUEyQk4sSUFBM0IsQ0FBMUIsRUFBNERuQyxDQUFDLElBQUlBLENBQUMsSUFBSUEsQ0FBQyxDQUFDRSxnQkFBeEUsRUFBMEY7QUFBQ3dDLGNBQVEsRUFBRSxDQUFDLFFBQUQsRUFBVyxXQUFYO0FBQVgsS0FBMUYsQ0FBbEI7QUFDQSxRQUFJSixTQUFKLEVBQWVBLFNBQVMsQ0FBQ3pGLFdBQVY7QUFDbEI7O0FBM0ZxQyxDQUEzQixFQUFmIiwiZmlsZSI6Ii4vc3JjL3VpL3NldHRpbmdzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtSZWFjdCwgV2VicGFja01vZHVsZXMsIFBhdGNoZXIsIFJlYWN0Q29tcG9uZW50cywgVXRpbGl0aWVzLCBTZXR0aW5ncywgRXZlbnRzLCBEYXRhU3RvcmV9IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5pbXBvcnQgQWRkb25MaXN0IGZyb20gXCIuL3NldHRpbmdzL2FkZG9ubGlzdFwiO1xyXG5pbXBvcnQgU2V0dGluZ3NHcm91cCBmcm9tIFwiLi9zZXR0aW5ncy9ncm91cFwiO1xyXG5pbXBvcnQgU2V0dGluZ3NUaXRsZSBmcm9tIFwiLi9zZXR0aW5ncy90aXRsZVwiO1xyXG5pbXBvcnQgSGVhZGVyIGZyb20gXCIuL3NldHRpbmdzL3NpZGViYXJoZWFkZXJcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IG5ldyBjbGFzcyBTZXR0aW5nc1JlbmRlcmVyIHtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICB0aGlzLnBhdGNoU2VjdGlvbnMoKTtcclxuICAgICAgICBFdmVudHMub24oXCJzdHJpbmdzLXVwZGF0ZWRcIiwgdGhpcy5mb3JjZVVwZGF0ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgb25EcmF3ZXJUb2dnbGUoY29sbGVjdGlvbiwgZ3JvdXAsIHN0YXRlKSB7XHJcbiAgICAgICAgY29uc3QgZHJhd2VyU3RhdGVzID0gRGF0YVN0b3JlLmdldEJERGF0YShcImRyYXdlclN0YXRlc1wiKSB8fCB7fTtcclxuICAgICAgICBpZiAoIWRyYXdlclN0YXRlc1tjb2xsZWN0aW9uXSkgZHJhd2VyU3RhdGVzW2NvbGxlY3Rpb25dID0ge307XHJcbiAgICAgICAgZHJhd2VyU3RhdGVzW2NvbGxlY3Rpb25dW2dyb3VwXSA9IHN0YXRlO1xyXG4gICAgICAgIERhdGFTdG9yZS5zZXRCRERhdGEoXCJkcmF3ZXJTdGF0ZXNcIiwgZHJhd2VyU3RhdGVzKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXREcmF3ZXJTdGF0ZShjb2xsZWN0aW9uLCBncm91cCwgZGVmYXVsdFZhbHVlKSB7XHJcbiAgICAgICAgY29uc3QgZHJhd2VyU3RhdGVzID0gRGF0YVN0b3JlLmdldEJERGF0YShcImRyYXdlclN0YXRlc1wiKSB8fCB7fTtcclxuICAgICAgICBpZiAoIWRyYXdlclN0YXRlc1tjb2xsZWN0aW9uXSkgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcclxuICAgICAgICBpZiAoIWRyYXdlclN0YXRlc1tjb2xsZWN0aW9uXS5oYXNPd25Qcm9wZXJ0eShncm91cCkpIHJldHVybiBkZWZhdWx0VmFsdWU7XHJcbiAgICAgICAgcmV0dXJuIGRyYXdlclN0YXRlc1tjb2xsZWN0aW9uXVtncm91cF07XHJcbiAgICB9XHJcblxyXG4gICAgb25DaGFuZ2Uob25DaGFuZ2UpIHtcclxuICAgICAgICByZXR1cm4gKGNvbGxlY3Rpb24sIGNhdGVnb3J5LCBpZCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBiZWZvcmUgPSBTZXR0aW5ncy5jb2xsZWN0aW9ucy5sZW5ndGggKyBTZXR0aW5ncy5wYW5lbHMubGVuZ3RoO1xyXG4gICAgICAgICAgICBvbkNoYW5nZShjb2xsZWN0aW9uLCBjYXRlZ29yeSwgaWQpO1xyXG4gICAgICAgICAgICBjb25zdCBhZnRlciA9IFNldHRpbmdzLmNvbGxlY3Rpb25zLmxlbmd0aCArIFNldHRpbmdzLnBhbmVscy5sZW5ndGg7XHJcbiAgICAgICAgICAgIGlmIChiZWZvcmUgIT0gYWZ0ZXIpIHNldFRpbWVvdXQodGhpcy5mb3JjZVVwZGF0ZS5iaW5kKHRoaXMpLCA1MCk7XHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBidWlsZFNldHRpbmdzUGFuZWwoaWQsIHRpdGxlLCBjb25maWcsIHN0YXRlLCBvbkNoYW5nZSwgYnV0dG9uID0gbnVsbCkge1xyXG4gICAgICAgIGNvbmZpZy5mb3JFYWNoKHNlY3Rpb24gPT4ge1xyXG4gICAgICAgICAgICBzZWN0aW9uLnNldHRpbmdzLmZvckVhY2goaXRlbSA9PiBpdGVtLnZhbHVlID0gc3RhdGVbc2VjdGlvbi5pZF1baXRlbS5pZF0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmdldFNldHRpbmdzUGFuZWwoaWQsIHRpdGxlLCBjb25maWcsIHRoaXMub25DaGFuZ2Uob25DaGFuZ2UpLCBidXR0b24pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFNldHRpbmdzUGFuZWwoaWQsIHRpdGxlLCBncm91cHMsIG9uQ2hhbmdlLCBidXR0b24gPSBudWxsKSB7XHJcbiAgICAgICAgcmV0dXJuIFtSZWFjdC5jcmVhdGVFbGVtZW50KFNldHRpbmdzVGl0bGUsIHt0ZXh0OiB0aXRsZSwgYnV0dG9uOiBidXR0b259KSwgZ3JvdXBzLm1hcChzZWN0aW9uID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoU2V0dGluZ3NHcm91cCwgT2JqZWN0LmFzc2lnbih7fSwgc2VjdGlvbiwge1xyXG4gICAgICAgICAgICAgICAgb25DaGFuZ2U6IG9uQ2hhbmdlLFxyXG4gICAgICAgICAgICAgICAgb25EcmF3ZXJUb2dnbGU6IHN0YXRlID0+IHRoaXMub25EcmF3ZXJUb2dnbGUoaWQsIHNlY3Rpb24uaWQsIHN0YXRlKSxcclxuICAgICAgICAgICAgICAgIHNob3duOiB0aGlzLmdldERyYXdlclN0YXRlKGlkLCBzZWN0aW9uLmlkLCBzZWN0aW9uLmhhc093blByb3BlcnR5KFwic2hvd25cIikgPyBzZWN0aW9uLnNob3duIDogdHJ1ZSlcclxuICAgICAgICAgICAgfSkpO1xyXG4gICAgICAgIH0pXTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRBZGRvblBhbmVsKHRpdGxlLCBhZGRvbkxpc3QsIGFkZG9uU3RhdGUsIG9wdGlvbnMgPSB7fSkge1xyXG4gICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KEFkZG9uTGlzdCwgT2JqZWN0LmFzc2lnbih7fSwge1xyXG4gICAgICAgICAgICB0aXRsZTogdGl0bGUsXHJcbiAgICAgICAgICAgIGFkZG9uTGlzdDogYWRkb25MaXN0LFxyXG4gICAgICAgICAgICBhZGRvblN0YXRlOiBhZGRvblN0YXRlXHJcbiAgICAgICAgfSwgb3B0aW9ucykpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHBhdGNoU2VjdGlvbnMoKSB7XHJcbiAgICAgICAgY29uc3QgVXNlclNldHRpbmdzID0gYXdhaXQgUmVhY3RDb21wb25lbnRzLmdldChcIlVzZXJTZXR0aW5nc1wiLCBtID0+IG0ucHJvdG90eXBlICYmIG0ucHJvdG90eXBlLmdlbmVyYXRlU2VjdGlvbnMpO1xyXG4gICAgICAgIFBhdGNoZXIuYWZ0ZXIoXCJTZXR0aW5nc01hbmFnZXJcIiwgVXNlclNldHRpbmdzLnByb3RvdHlwZSwgXCJyZW5kZXJcIiwgKHRoaXNPYmplY3QpID0+IHtcclxuICAgICAgICAgICAgdGhpc09iamVjdC5fcmVhY3RJbnRlcm5hbEZpYmVyLnJldHVybi5yZXR1cm4ucmV0dXJuLnJldHVybi5yZXR1cm4ucmV0dXJuLnJldHVybi5tZW1vaXplZFByb3BzLmlkID0gXCJ1c2VyLXNldHRpbmdzXCI7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgUGF0Y2hlci5hZnRlcihcIlNldHRpbmdzTWFuYWdlclwiLCBVc2VyU2V0dGluZ3MucHJvdG90eXBlLCBcImdlbmVyYXRlU2VjdGlvbnNcIiwgKHRoaXNPYmplY3QsIGFyZ3MsIHJldHVyblZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBsb2NhdGlvbiA9IHJldHVyblZhbHVlLmZpbmRJbmRleChzID0+IHMuc2VjdGlvbi50b0xvd2VyQ2FzZSgpID09IFwibGludXhcIikgKyAxO1xyXG4gICAgICAgICAgICBjb25zdCBpbnNlcnQgPSAoc2VjdGlvbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuVmFsdWUuc3BsaWNlKGxvY2F0aW9uLCAwLCBzZWN0aW9uKTtcclxuICAgICAgICAgICAgICAgIGxvY2F0aW9uKys7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGluc2VydCh7c2VjdGlvbjogXCJESVZJREVSXCJ9KTtcclxuICAgICAgICAgICAgLy8gSGVhZGVyXHJcbiAgICAgICAgICAgIGluc2VydCh7c2VjdGlvbjogXCJDVVNUT01cIiwgZWxlbWVudDogSGVhZGVyfSk7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgY29sbGVjdGlvbiBvZiBTZXR0aW5ncy5jb2xsZWN0aW9ucykge1xyXG4gICAgICAgICAgICAgICAgaWYgKGNvbGxlY3Rpb24uZGlzYWJsZWQpIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgaW5zZXJ0KHtcclxuICAgICAgICAgICAgICAgICAgICBzZWN0aW9uOiBjb2xsZWN0aW9uLm5hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGNvbGxlY3Rpb24ubmFtZSxcclxuICAgICAgICAgICAgICAgICAgICBlbGVtZW50OiAoKSA9PiB0aGlzLmJ1aWxkU2V0dGluZ3NQYW5lbChjb2xsZWN0aW9uLmlkLCBjb2xsZWN0aW9uLm5hbWUsIGNvbGxlY3Rpb24uc2V0dGluZ3MsIFNldHRpbmdzLnN0YXRlW2NvbGxlY3Rpb24uaWRdLCBTZXR0aW5ncy5vblNldHRpbmdDaGFuZ2UuYmluZChTZXR0aW5ncywgY29sbGVjdGlvbi5pZCksIGNvbGxlY3Rpb24uYnV0dG9uID8gY29sbGVjdGlvbi5idXR0b24gOiBudWxsKVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZm9yIChjb25zdCBwYW5lbCBvZiBTZXR0aW5ncy5wYW5lbHMuc29ydCgoYSxiKSA9PiBhLm9yZGVyID4gYi5vcmRlcikpIHtcclxuICAgICAgICAgICAgICAgIGlmIChwYW5lbC5jbGlja0xpc3RlbmVyKSBwYW5lbC5vbkNsaWNrID0gKGV2ZW50KSA9PiBwYW5lbC5jbGlja0xpc3RlbmVyKHRoaXNPYmplY3QsIGV2ZW50LCByZXR1cm5WYWx1ZSk7XHJcbiAgICAgICAgICAgICAgICBpbnNlcnQocGFuZWwpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5mb3JjZVVwZGF0ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGZvcmNlVXBkYXRlKCkge1xyXG4gICAgICAgIGNvbnN0IHZpZXdDbGFzcyA9IFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJzdGFuZGFyZFNpZGViYXJWaWV3XCIpLnN0YW5kYXJkU2lkZWJhclZpZXcuc3BsaXQoXCIgXCIpWzBdO1xyXG4gICAgICAgIGNvbnN0IG5vZGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAuJHt2aWV3Q2xhc3N9YCk7XHJcbiAgICAgICAgaWYgKCFub2RlKSByZXR1cm47XHJcbiAgICAgICAgY29uc3Qgc3RhdGVOb2RlID0gVXRpbGl0aWVzLmZpbmRJblJlYWN0VHJlZShVdGlsaXRpZXMuZ2V0UmVhY3RJbnN0YW5jZShub2RlKSwgbSA9PiBtICYmIG0uZ2VuZXJhdGVTZWN0aW9ucywge3dhbGthYmxlOiBbXCJyZXR1cm5cIiwgXCJzdGF0ZU5vZGVcIl19KTtcclxuICAgICAgICBpZiAoc3RhdGVOb2RlKSBzdGF0ZU5vZGUuZm9yY2VVcGRhdGUoKTtcclxuICAgIH1cclxufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/ui/settings.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _settings_addonlist__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./settings/addonlist */ \"./src/ui/settings/addonlist.jsx\");\n/* harmony import */ var _settings_group__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./settings/group */ \"./src/ui/settings/group.jsx\");\n/* harmony import */ var _settings_title__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./settings/title */ \"./src/ui/settings/title.jsx\");\n/* harmony import */ var _settings_sidebarheader__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./settings/sidebarheader */ \"./src/ui/settings/sidebarheader.jsx\");\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class SettingsRenderer {\n constructor() {\n this.patchSections();\n modules__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].on(\"strings-updated\", this.forceUpdate);\n }\n\n onDrawerToggle(collection, group, state) {\n const drawerStates = modules__WEBPACK_IMPORTED_MODULE_0__[\"DataStore\"].getBDData(\"drawerStates\") || {};\n if (!drawerStates[collection]) drawerStates[collection] = {};\n drawerStates[collection][group] = state;\n modules__WEBPACK_IMPORTED_MODULE_0__[\"DataStore\"].setBDData(\"drawerStates\", drawerStates);\n }\n\n getDrawerState(collection, group, defaultValue) {\n const drawerStates = modules__WEBPACK_IMPORTED_MODULE_0__[\"DataStore\"].getBDData(\"drawerStates\") || {};\n if (!drawerStates[collection]) return defaultValue;\n if (!drawerStates[collection].hasOwnProperty(group)) return defaultValue;\n return drawerStates[collection][group];\n }\n\n onChange(onChange) {\n return (collection, category, id) => {\n const before = modules__WEBPACK_IMPORTED_MODULE_0__[\"Settings\"].collections.length + modules__WEBPACK_IMPORTED_MODULE_0__[\"Settings\"].panels.length;\n onChange(collection, category, id);\n const after = modules__WEBPACK_IMPORTED_MODULE_0__[\"Settings\"].collections.length + modules__WEBPACK_IMPORTED_MODULE_0__[\"Settings\"].panels.length;\n if (before != after) setTimeout(this.forceUpdate.bind(this), 50);\n };\n }\n\n buildSettingsPanel(id, title, config, state, onChange, button = null) {\n config.forEach(section => {\n section.settings.forEach(item => item.value = state[section.id][item.id]);\n });\n return this.getSettingsPanel(id, title, config, this.onChange(onChange), button);\n }\n\n getSettingsPanel(id, title, groups, onChange, button = null) {\n return [modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_settings_title__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n text: title,\n button: button\n }), groups.map(section => {\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_settings_group__WEBPACK_IMPORTED_MODULE_2__[\"default\"], Object.assign({}, section, {\n onChange: onChange,\n onDrawerToggle: state => this.onDrawerToggle(id, section.id, state),\n shown: this.getDrawerState(id, section.id, section.hasOwnProperty(\"shown\") ? section.shown : true)\n }));\n })];\n }\n\n getAddonPanel(title, addonList, addonState, options = {}) {\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_settings_addonlist__WEBPACK_IMPORTED_MODULE_1__[\"default\"], Object.assign({}, {\n title: title,\n addonList: addonList,\n addonState: addonState\n }, options));\n }\n\n async patchSections() {\n const UserSettings = await modules__WEBPACK_IMPORTED_MODULE_0__[\"ReactComponents\"].get(\"UserSettings\", m => m.prototype && m.prototype.generateSections);\n modules__WEBPACK_IMPORTED_MODULE_0__[\"Patcher\"].after(\"SettingsManager\", UserSettings.prototype, \"render\", thisObject => {\n thisObject._reactInternalFiber.return.return.return.return.return.return.return.memoizedProps.id = \"user-settings\";\n });\n modules__WEBPACK_IMPORTED_MODULE_0__[\"Patcher\"].after(\"SettingsManager\", UserSettings.prototype, \"generateSections\", (thisObject, args, returnValue) => {\n let location = returnValue.findIndex(s => s.section.toLowerCase() == \"linux\") + 1;\n\n const insert = section => {\n returnValue.splice(location, 0, section);\n location++;\n };\n\n insert({\n section: \"DIVIDER\"\n }); // Header\n\n insert({\n section: \"CUSTOM\",\n element: _settings_sidebarheader__WEBPACK_IMPORTED_MODULE_4__[\"default\"]\n });\n\n for (const collection of modules__WEBPACK_IMPORTED_MODULE_0__[\"Settings\"].collections) {\n if (collection.disabled) continue;\n insert({\n section: collection.name,\n label: collection.name,\n element: () => this.buildSettingsPanel(collection.id, collection.name, collection.settings, modules__WEBPACK_IMPORTED_MODULE_0__[\"Settings\"].state[collection.id], modules__WEBPACK_IMPORTED_MODULE_0__[\"Settings\"].onSettingChange.bind(modules__WEBPACK_IMPORTED_MODULE_0__[\"Settings\"], collection.id), collection.button ? collection.button : null)\n });\n }\n\n for (const panel of modules__WEBPACK_IMPORTED_MODULE_0__[\"Settings\"].panels.sort((a, b) => a.order > b.order)) {\n if (panel.clickListener) panel.onClick = event => panel.clickListener(thisObject, event, returnValue);\n insert(panel);\n }\n });\n this.forceUpdate();\n }\n\n forceUpdate() {\n const viewClass = modules__WEBPACK_IMPORTED_MODULE_0__[\"WebpackModules\"].getByProps(\"standardSidebarView\").standardSidebarView.split(\" \")[0];\n const node = document.querySelector(`.${viewClass}`);\n if (!node) return;\n const stateNode = modules__WEBPACK_IMPORTED_MODULE_0__[\"Utilities\"].findInReactTree(modules__WEBPACK_IMPORTED_MODULE_0__[\"Utilities\"].getReactInstance(node), m => m && m.generateSections, {\n walkable: [\"return\", \"stateNode\"]\n });\n if (stateNode) stateNode.forceUpdate();\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvc2V0dGluZ3MuanM/NzZiZSJdLCJuYW1lcyI6WyJTZXR0aW5nc1JlbmRlcmVyIiwiY29uc3RydWN0b3IiLCJwYXRjaFNlY3Rpb25zIiwiRXZlbnRzIiwib24iLCJmb3JjZVVwZGF0ZSIsIm9uRHJhd2VyVG9nZ2xlIiwiY29sbGVjdGlvbiIsImdyb3VwIiwic3RhdGUiLCJkcmF3ZXJTdGF0ZXMiLCJEYXRhU3RvcmUiLCJnZXRCRERhdGEiLCJzZXRCRERhdGEiLCJnZXREcmF3ZXJTdGF0ZSIsImRlZmF1bHRWYWx1ZSIsImhhc093blByb3BlcnR5Iiwib25DaGFuZ2UiLCJjYXRlZ29yeSIsImlkIiwiYmVmb3JlIiwiU2V0dGluZ3MiLCJjb2xsZWN0aW9ucyIsImxlbmd0aCIsInBhbmVscyIsImFmdGVyIiwic2V0VGltZW91dCIsImJpbmQiLCJidWlsZFNldHRpbmdzUGFuZWwiLCJ0aXRsZSIsImNvbmZpZyIsImJ1dHRvbiIsImZvckVhY2giLCJzZWN0aW9uIiwic2V0dGluZ3MiLCJpdGVtIiwidmFsdWUiLCJnZXRTZXR0aW5nc1BhbmVsIiwiZ3JvdXBzIiwiUmVhY3QiLCJjcmVhdGVFbGVtZW50IiwiU2V0dGluZ3NUaXRsZSIsInRleHQiLCJtYXAiLCJTZXR0aW5nc0dyb3VwIiwiT2JqZWN0IiwiYXNzaWduIiwic2hvd24iLCJnZXRBZGRvblBhbmVsIiwiYWRkb25MaXN0IiwiYWRkb25TdGF0ZSIsIm9wdGlvbnMiLCJBZGRvbkxpc3QiLCJVc2VyU2V0dGluZ3MiLCJSZWFjdENvbXBvbmVudHMiLCJnZXQiLCJtIiwicHJvdG90eXBlIiwiZ2VuZXJhdGVTZWN0aW9ucyIsIlBhdGNoZXIiLCJ0aGlzT2JqZWN0IiwiX3JlYWN0SW50ZXJuYWxGaWJlciIsInJldHVybiIsIm1lbW9pemVkUHJvcHMiLCJhcmdzIiwicmV0dXJuVmFsdWUiLCJsb2NhdGlvbiIsImZpbmRJbmRleCIsInMiLCJ0b0xvd2VyQ2FzZSIsImluc2VydCIsInNwbGljZSIsImVsZW1lbnQiLCJIZWFkZXIiLCJkaXNhYmxlZCIsIm5hbWUiLCJsYWJlbCIsIm9uU2V0dGluZ0NoYW5nZSIsInBhbmVsIiwic29ydCIsImEiLCJiIiwib3JkZXIiLCJjbGlja0xpc3RlbmVyIiwib25DbGljayIsImV2ZW50Iiwidmlld0NsYXNzIiwiV2VicGFja01vZHVsZXMiLCJnZXRCeVByb3BzIiwic3RhbmRhcmRTaWRlYmFyVmlldyIsInNwbGl0Iiwibm9kZSIsImRvY3VtZW50IiwicXVlcnlTZWxlY3RvciIsInN0YXRlTm9kZSIsIlV0aWxpdGllcyIsImZpbmRJblJlYWN0VHJlZSIsImdldFJlYWN0SW5zdGFuY2UiLCJ3YWxrYWJsZSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVlLG1FQUFJLE1BQU1BLGdCQUFOLENBQXVCO0FBRXRDQyxhQUFXLEdBQUc7QUFDVixTQUFLQyxhQUFMO0FBQ0FDLGtEQUFNLENBQUNDLEVBQVAsQ0FBVSxpQkFBVixFQUE2QixLQUFLQyxXQUFsQztBQUNIOztBQUVEQyxnQkFBYyxDQUFDQyxVQUFELEVBQWFDLEtBQWIsRUFBb0JDLEtBQXBCLEVBQTJCO0FBQ3JDLFVBQU1DLFlBQVksR0FBR0MsaURBQVMsQ0FBQ0MsU0FBVixDQUFvQixjQUFwQixLQUF1QyxFQUE1RDtBQUNBLFFBQUksQ0FBQ0YsWUFBWSxDQUFDSCxVQUFELENBQWpCLEVBQStCRyxZQUFZLENBQUNILFVBQUQsQ0FBWixHQUEyQixFQUEzQjtBQUMvQkcsZ0JBQVksQ0FBQ0gsVUFBRCxDQUFaLENBQXlCQyxLQUF6QixJQUFrQ0MsS0FBbEM7QUFDQUUscURBQVMsQ0FBQ0UsU0FBVixDQUFvQixjQUFwQixFQUFvQ0gsWUFBcEM7QUFDSDs7QUFFREksZ0JBQWMsQ0FBQ1AsVUFBRCxFQUFhQyxLQUFiLEVBQW9CTyxZQUFwQixFQUFrQztBQUM1QyxVQUFNTCxZQUFZLEdBQUdDLGlEQUFTLENBQUNDLFNBQVYsQ0FB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QUFELElBQVdQLEtBQUssQ0FBQ0ssYUFBTixDQUFvQnZCLFVBQXBCLEVBQWdDeUIsS0FBaEMsRUFBdUNwQixXQUF2QyxDQUEzQjtBQUN6QkssY0FBTSxDQUFDUSxLQUFELENBQU47QUFDSDtBQUNKLEtBckJEO0FBc0JBLFNBQUt6RSxXQUFMO0FBQ0g7O0FBRURBLGFBQVcsR0FBRztBQUNWLFVBQU1pRixTQUFTLEdBQUdDLHNEQUFjLENBQUNDLFVBQWYsQ0FBMEIscUJBQTFCLEVBQWlEQyxtQkFBakQsQ0FBcUVDLEtBQXJFLENBQTJFLEdBQTNFLEVBQWdGLENBQWhGLENBQWxCO0FBQ0EsVUFBTUMsSUFBSSxHQUFHQyxRQUFRLENBQUNDLGFBQVQsQ0FBd0IsSUFBR1AsU0FBVSxFQUFyQyxDQUFiO0FBQ0EsUUFBSSxDQUFDSyxJQUFMLEVBQVc7QUFDWCxVQUFNRyxTQUFTLEdBQUdDLGlEQUFTLENBQUNDLGVBQVYsQ0FBMEJELGlEQUFTLENBQUNFLGdCQUFWLENBQTJCTixJQUEzQixDQUExQixFQUE0RG5DLENBQUMsSUFBSUEsQ0FBQyxJQUFJQSxDQUFDLENBQUNFLGdCQUF4RSxFQUEwRjtBQUFDd0MsY0FBUSxFQUFFLENBQUMsUUFBRCxFQUFXLFdBQVg7QUFBWCxLQUExRixDQUFsQjtBQUNBLFFBQUlKLFNBQUosRUFBZUEsU0FBUyxDQUFDekYsV0FBVjtBQUNsQjs7QUEzRnFDLENBQTNCLEVBQWYiLCJmaWxlIjoiLi9zcmMvdWkvc2V0dGluZ3MuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlYWN0LCBXZWJwYWNrTW9kdWxlcywgUGF0Y2hlciwgUmVhY3RDb21wb25lbnRzLCBVdGlsaXRpZXMsIFNldHRpbmdzLCBFdmVudHMsIERhdGFTdG9yZX0gZnJvbSBcIm1vZHVsZXNcIjtcclxuXHJcbmltcG9ydCBBZGRvbkxpc3QgZnJvbSBcIi4vc2V0dGluZ3MvYWRkb25saXN0XCI7XHJcbmltcG9ydCBTZXR0aW5nc0dyb3VwIGZyb20gXCIuL3NldHRpbmdzL2dyb3VwXCI7XHJcbmltcG9ydCBTZXR0aW5nc1RpdGxlIGZyb20gXCIuL3NldHRpbmdzL3RpdGxlXCI7XHJcbmltcG9ydCBIZWFkZXIgZnJvbSBcIi4vc2V0dGluZ3Mvc2lkZWJhcmhlYWRlclwiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgbmV3IGNsYXNzIFNldHRpbmdzUmVuZGVyZXIge1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIHRoaXMucGF0Y2hTZWN0aW9ucygpO1xyXG4gICAgICAgIEV2ZW50cy5vbihcInN0cmluZ3MtdXBkYXRlZFwiLCB0aGlzLmZvcmNlVXBkYXRlKTtcclxuICAgIH1cclxuXHJcbiAgICBvbkRyYXdlclRvZ2dsZShjb2xsZWN0aW9uLCBncm91cCwgc3RhdGUpIHtcclxuICAgICAgICBjb25zdCBkcmF3ZXJTdGF0ZXMgPSBEYXRhU3RvcmUuZ2V0QkREYXRhKFwiZHJhd2VyU3RhdGVzXCIpIHx8IHt9O1xyXG4gICAgICAgIGlmICghZHJhd2VyU3RhdGVzW2NvbGxlY3Rpb25dKSBkcmF3ZXJTdGF0ZXNbY29sbGVjdGlvbl0gPSB7fTtcclxuICAgICAgICBkcmF3ZXJTdGF0ZXNbY29sbGVjdGlvbl1bZ3JvdXBdID0gc3RhdGU7XHJcbiAgICAgICAgRGF0YVN0b3JlLnNldEJERGF0YShcImRyYXdlclN0YXRlc1wiLCBkcmF3ZXJTdGF0ZXMpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldERyYXdlclN0YXRlKGNvbGxlY3Rpb24sIGdyb3VwLCBkZWZhdWx0VmFsdWUpIHtcclxuICAgICAgICBjb25zdCBkcmF3ZXJTdGF0ZXMgPSBEYXRhU3RvcmUuZ2V0QkREYXRhKFwiZHJhd2VyU3RhdGVzXCIpIHx8IHt9O1xyXG4gICAgICAgIGlmICghZHJhd2VyU3RhdGVzW2NvbGxlY3Rpb25dKSByZXR1cm4gZGVmYXVsdFZhbHVlO1xyXG4gICAgICAgIGlmICghZHJhd2VyU3RhdGVzW2NvbGxlY3Rpb25dLmhhc093blByb3BlcnR5KGdyb3VwKSkgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcclxuICAgICAgICByZXR1cm4gZHJhd2VyU3RhdGVzW2NvbGxlY3Rpb25dW2dyb3VwXTtcclxuICAgIH1cclxuXHJcbiAgICBvbkNoYW5nZShvbkNoYW5nZSkge1xyXG4gICAgICAgIHJldHVybiAoY29sbGVjdGlvbiwgY2F0ZWdvcnksIGlkKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGJlZm9yZSA9IFNldHRpbmdzLmNvbGxlY3Rpb25zLmxlbmd0aCArIFNldHRpbmdzLnBhbmVscy5sZW5ndGg7XHJcbiAgICAgICAgICAgIG9uQ2hhbmdlKGNvbGxlY3Rpb24sIGNhdGVnb3J5LCBpZCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGFmdGVyID0gU2V0dGluZ3MuY29sbGVjdGlvbnMubGVuZ3RoICsgU2V0dGluZ3MucGFuZWxzLmxlbmd0aDtcclxuICAgICAgICAgICAgaWYgKGJlZm9yZSAhPSBhZnRlcikgc2V0VGltZW91dCh0aGlzLmZvcmNlVXBkYXRlLmJpbmQodGhpcyksIDUwKTtcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIGJ1aWxkU2V0dGluZ3NQYW5lbChpZCwgdGl0bGUsIGNvbmZpZywgc3RhdGUsIG9uQ2hhbmdlLCBidXR0b24gPSBudWxsKSB7XHJcbiAgICAgICAgY29uZmlnLmZvckVhY2goc2VjdGlvbiA9PiB7XHJcbiAgICAgICAgICAgIHNlY3Rpb24uc2V0dGluZ3MuZm9yRWFjaChpdGVtID0+IGl0ZW0udmFsdWUgPSBzdGF0ZVtzZWN0aW9uLmlkXVtpdGVtLmlkXSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0U2V0dGluZ3NQYW5lbChpZCwgdGl0bGUsIGNvbmZpZywgdGhpcy5vbkNoYW5nZShvbkNoYW5nZSksIGJ1dHRvbik7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0U2V0dGluZ3NQYW5lbChpZCwgdGl0bGUsIGdyb3Vwcywgb25DaGFuZ2UsIGJ1dHRvbiA9IG51bGwpIHtcclxuICAgICAgICByZXR1cm4gW1JlYWN0LmNyZWF0ZUVsZW1lbnQoU2V0dGluZ3NUaXRsZSwge3RleHQ6IHRpdGxlLCBidXR0b246IGJ1dHRvbn0pLCBncm91cHMubWFwKHNlY3Rpb24gPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChTZXR0aW5nc0dyb3VwLCBPYmplY3QuYXNzaWduKHt9LCBzZWN0aW9uLCB7XHJcbiAgICAgICAgICAgICAgICBvbkNoYW5nZTogb25DaGFuZ2UsXHJcbiAgICAgICAgICAgICAgICBvbkRyYXdlclRvZ2dsZTogc3RhdGUgPT4gdGhpcy5vbkRyYXdlclRvZ2dsZShpZCwgc2VjdGlvbi5pZCwgc3RhdGUpLFxyXG4gICAgICAgICAgICAgICAgc2hvd246IHRoaXMuZ2V0RHJhd2VyU3RhdGUoaWQsIHNlY3Rpb24uaWQsIHNlY3Rpb24uaGFzT3duUHJvcGVydHkoXCJzaG93blwiKSA/IHNlY3Rpb24uc2hvd24gOiB0cnVlKVxyXG4gICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgfSldO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEFkZG9uUGFuZWwodGl0bGUsIGFkZG9uTGlzdCwgYWRkb25TdGF0ZSwgb3B0aW9ucyA9IHt9KSB7XHJcbiAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoQWRkb25MaXN0LCBPYmplY3QuYXNzaWduKHt9LCB7XHJcbiAgICAgICAgICAgIHRpdGxlOiB0aXRsZSxcclxuICAgICAgICAgICAgYWRkb25MaXN0OiBhZGRvbkxpc3QsXHJcbiAgICAgICAgICAgIGFkZG9uU3RhdGU6IGFkZG9uU3RhdGVcclxuICAgICAgICB9LCBvcHRpb25zKSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgcGF0Y2hTZWN0aW9ucygpIHtcclxuICAgICAgICBjb25zdCBVc2VyU2V0dGluZ3MgPSBhd2FpdCBSZWFjdENvbXBvbmVudHMuZ2V0KFwiVXNlclNldHRpbmdzXCIsIG0gPT4gbS5wcm90b3R5cGUgJiYgbS5wcm90b3R5cGUuZ2VuZXJhdGVTZWN0aW9ucyk7XHJcbiAgICAgICAgUGF0Y2hlci5hZnRlcihcIlNldHRpbmdzTWFuYWdlclwiLCBVc2VyU2V0dGluZ3MucHJvdG90eXBlLCBcInJlbmRlclwiLCAodGhpc09iamVjdCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzT2JqZWN0Ll9yZWFjdEludGVybmFsRmliZXIucmV0dXJuLnJldHVybi5yZXR1cm4ucmV0dXJuLnJldHVybi5yZXR1cm4ucmV0dXJuLm1lbW9pemVkUHJvcHMuaWQgPSBcInVzZXItc2V0dGluZ3NcIjtcclxuICAgICAgICB9KTtcclxuICAgICAgICBQYXRjaGVyLmFmdGVyKFwiU2V0dGluZ3NNYW5hZ2VyXCIsIFVzZXJTZXR0aW5ncy5wcm90b3R5cGUsIFwiZ2VuZXJhdGVTZWN0aW9uc1wiLCAodGhpc09iamVjdCwgYXJncywgcmV0dXJuVmFsdWUpID0+IHtcclxuICAgICAgICAgICAgbGV0IGxvY2F0aW9uID0gcmV0dXJuVmFsdWUuZmluZEluZGV4KHMgPT4gcy5zZWN0aW9uLnRvTG93ZXJDYXNlKCkgPT0gXCJsaW51eFwiKSArIDE7XHJcbiAgICAgICAgICAgIGNvbnN0IGluc2VydCA9IChzZWN0aW9uKSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm5WYWx1ZS5zcGxpY2UobG9jYXRpb24sIDAsIHNlY3Rpb24pO1xyXG4gICAgICAgICAgICAgICAgbG9jYXRpb24rKztcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgaW5zZXJ0KHtzZWN0aW9uOiBcIkRJVklERVJcIn0pO1xyXG4gICAgICAgICAgICAvLyBIZWFkZXJcclxuICAgICAgICAgICAgaW5zZXJ0KHtzZWN0aW9uOiBcIkNVU1RPTVwiLCBlbGVtZW50OiBIZWFkZXJ9KTtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBjb2xsZWN0aW9uIG9mIFNldHRpbmdzLmNvbGxlY3Rpb25zKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoY29sbGVjdGlvbi5kaXNhYmxlZCkgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICBpbnNlcnQoe1xyXG4gICAgICAgICAgICAgICAgICAgIHNlY3Rpb246IGNvbGxlY3Rpb24ubmFtZSxcclxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogY29sbGVjdGlvbi5uYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQ6ICgpID0+IHRoaXMuYnVpbGRTZXR0aW5nc1BhbmVsKGNvbGxlY3Rpb24uaWQsIGNvbGxlY3Rpb24ubmFtZSwgY29sbGVjdGlvbi5zZXR0aW5ncywgU2V0dGluZ3Muc3RhdGVbY29sbGVjdGlvbi5pZF0sIFNldHRpbmdzLm9uU2V0dGluZ0NoYW5nZS5iaW5kKFNldHRpbmdzLCBjb2xsZWN0aW9uLmlkKSwgY29sbGVjdGlvbi5idXR0b24gPyBjb2xsZWN0aW9uLmJ1dHRvbiA6IG51bGwpXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHBhbmVsIG9mIFNldHRpbmdzLnBhbmVscy5zb3J0KChhLGIpID0+IGEub3JkZXIgPiBiLm9yZGVyKSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHBhbmVsLmNsaWNrTGlzdGVuZXIpIHBhbmVsLm9uQ2xpY2sgPSAoZXZlbnQpID0+IHBhbmVsLmNsaWNrTGlzdGVuZXIodGhpc09iamVjdCwgZXZlbnQsIHJldHVyblZhbHVlKTtcclxuICAgICAgICAgICAgICAgIGluc2VydChwYW5lbCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmZvcmNlVXBkYXRlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZm9yY2VVcGRhdGUoKSB7XHJcbiAgICAgICAgY29uc3Qgdmlld0NsYXNzID0gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcInN0YW5kYXJkU2lkZWJhclZpZXdcIikuc3RhbmRhcmRTaWRlYmFyVmlldy5zcGxpdChcIiBcIilbMF07XHJcbiAgICAgICAgY29uc3Qgbm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYC4ke3ZpZXdDbGFzc31gKTtcclxuICAgICAgICBpZiAoIW5vZGUpIHJldHVybjtcclxuICAgICAgICBjb25zdCBzdGF0ZU5vZGUgPSBVdGlsaXRpZXMuZmluZEluUmVhY3RUcmVlKFV0aWxpdGllcy5nZXRSZWFjdEluc3RhbmNlKG5vZGUpLCBtID0+IG0gJiYgbS5nZW5lcmF0ZVNlY3Rpb25zLCB7d2Fsa2FibGU6IFtcInJldHVyblwiLCBcInN0YXRlTm9kZVwiXX0pO1xyXG4gICAgICAgIGlmIChzdGF0ZU5vZGUpIHN0YXRlTm9kZS5mb3JjZVVwZGF0ZSgpO1xyXG4gICAgfVxyXG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/settings.js\n"); /***/ }), @@ -1019,7 +1018,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var modu /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return AddonCard; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _icons_close__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../icons/close */ \"./src/ui/icons/close.jsx\");\n/* harmony import */ var _icons_reload__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../icons/reload */ \"./src/ui/icons/reload.jsx\");\n/* harmony import */ var _icons_edit__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../icons/edit */ \"./src/ui/icons/edit.jsx\");\n/* harmony import */ var _icons_delete__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../icons/delete */ \"./src/ui/icons/delete.jsx\");\n/* harmony import */ var _components_switch__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./components/switch */ \"./src/ui/settings/components/switch.jsx\");\n/* harmony import */ var _errorboundary__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../errorboundary */ \"./src/ui/errorboundary.jsx\");\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\n\n\n\n\n\n\n\nconst Tooltip = modules__WEBPACK_IMPORTED_MODULE_0__[\"WebpackModules\"].getByDisplayName(\"Tooltip\");\nclass AddonCard extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n this.state = {\n settingsOpen: false\n };\n this.settingsPanel = \"\";\n this.panelRef = modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createRef();\n this.onChange = this.onChange.bind(this);\n this.reload = this.reload.bind(this);\n this.showSettings = this.showSettings.bind(this);\n this.closeSettings = this.closeSettings.bind(this);\n }\n\n reload() {\n if (!this.props.reload) return;\n this.props.addon = this.props.reload(this.props.addon.id);\n this.forceUpdate();\n }\n\n componentDidUpdate() {\n if (!this.state.settingsOpen) return;\n if (this.settingsPanel instanceof Node) this.panelRef.current.appendChild(this.settingsPanel);\n setImmediate(() => {\n const isHidden = (container, element) => {\n const cTop = container.scrollTop;\n const cBottom = cTop + container.clientHeight;\n const eTop = element.offsetTop;\n const eBottom = eTop + element.clientHeight;\n return eTop < cTop || eBottom > cBottom;\n };\n\n const thisNode = this.panelRef.current;\n const container = thisNode.closest(\".scrollerBase-289Jih\");\n if (!container || !isHidden(container, thisNode)) return;\n const thisNodeOffset = modules__WEBPACK_IMPORTED_MODULE_0__[\"DOM\"].offset(thisNode);\n const containerOffset = modules__WEBPACK_IMPORTED_MODULE_0__[\"DOM\"].offset(container);\n const original = container.scrollTop;\n const endPoint = thisNodeOffset.top - containerOffset.top + container.scrollTop - 30;\n modules__WEBPACK_IMPORTED_MODULE_0__[\"DOM\"].animate({\n duration: 300,\n update: function (progress) {\n if (endPoint > original) container.scrollTop = original + progress * (endPoint - original);else container.scrollTop = original - progress * (original - endPoint);\n }\n });\n });\n }\n\n getString(value) {\n return typeof value == \"string\" ? value : value.toString();\n }\n\n onChange() {\n this.props.onChange && this.props.onChange(this.props.addon.id);\n this.props.enabled = !this.props.enabled;\n this.forceUpdate();\n }\n\n showSettings() {\n if (!this.props.hasSettings) return;\n this.setState({\n settingsOpen: true\n });\n }\n\n closeSettings() {\n if (this.settingsPanel instanceof Node) this.panelRef.current.innerHTML = \"\";\n this.setState({\n settingsOpen: false\n });\n }\n\n buildTitle(name, version, author) {\n const title = modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.title.split(/({{[A-Za-z]+}})/);\n const nameIndex = title.findIndex(s => s == \"{{name}}\");\n if (nameIndex) title[nameIndex] = modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"span\", {\n className: \"bd-name\"\n }, name);\n const versionIndex = title.findIndex(s => s == \"{{version}}\");\n if (nameIndex) title[versionIndex] = modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"span\", {\n className: \"bd-version\"\n }, version);\n const authorIndex = title.findIndex(s => s == \"{{author}}\");\n if (nameIndex) title[authorIndex] = modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"span\", {\n className: \"bd-author\"\n }, author);\n return title.flat();\n }\n\n get settingsComponent() {\n const addon = this.props.addon;\n const name = this.getString(addon.name);\n\n try {\n this.settingsPanel = this.props.getSettingsPanel();\n } catch (err) {\n modules__WEBPACK_IMPORTED_MODULE_0__[\"Logger\"].stacktrace(\"Addon Settings\", \"Unable to get settings panel for \" + name + \".\", err);\n }\n\n const props = {\n id: `${name}-settings`,\n className: \"addon-settings\",\n ref: this.panelRef\n };\n\n if (typeof this.settingsPanel == \"string\") {\n modules__WEBPACK_IMPORTED_MODULE_0__[\"Logger\"].warn(\"Addon Settings\", \"Using a DOMString is officially deprecated.\");\n props.dangerouslySetInnerHTML = this.settingsPanel;\n }\n\n let child = null;\n if (typeof this.settingsPanel === \"function\") child = /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(this.settingsPanel, null);\n if (this.settingsPanel.$$typeof && this.settingsPanel.$$typeof === Symbol.for(\"react.element\")) child = this.settingsPanel;\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-addon-card settings-open bd-switch-item\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-close\",\n onClick: this.closeSettings\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_close__WEBPACK_IMPORTED_MODULE_1__[\"default\"], null)), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", props, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_errorboundary__WEBPACK_IMPORTED_MODULE_6__[\"default\"], null, child)));\n }\n\n buildLink(which) {\n const url = this.props.addon[which];\n if (!url) return null;\n const link = /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"a\", {\n className: \"bd-link bd-link-website\",\n href: url,\n target: \"_blank\",\n rel: \"noopener noreferrer\"\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons[which]);\n\n if (which == \"invite\") {\n link.props.onClick = function (event) {\n event.preventDefault();\n event.stopPropagation();\n let code = url;\n const tester = /\\.gg\\/(.*)$/;\n if (tester.test(code)) code = code.match(tester)[1];\n modules__WEBPACK_IMPORTED_MODULE_0__[\"DiscordModules\"].LayerStack.popLayer();\n modules__WEBPACK_IMPORTED_MODULE_0__[\"DiscordModules\"].InviteActions.acceptInviteAndTransitionToInviteChannel(code);\n };\n }\n\n return link;\n }\n\n get footer() {\n const links = [\"website\", \"source\", \"invite\", \"donate\", \"patreon\"];\n if (!links.some(l => this.props.addon[l]) && !this.props.hasSettings) return null;\n const linkComponents = links.map(this.buildLink.bind(this)).filter(c => c);\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-footer\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"span\", {\n className: \"bd-links\"\n }, linkComponents.map((comp, i) => i < linkComponents.length - 1 ? [comp, \" | \"] : comp).flat()), this.props.hasSettings && /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"button\", {\n onClick: this.showSettings,\n className: \"bd-button bd-button-addon-settings\",\n disabled: !this.props.enabled\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.addonSettings));\n }\n\n makeButton(title, children, action) {\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(Tooltip, {\n color: \"black\",\n position: \"top\",\n text: title\n }, props => {\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", _extends({}, props, {\n className: \"bd-addon-button\",\n onClick: action\n }), children);\n });\n }\n\n render() {\n if (this.state.settingsOpen) return this.settingsComponent;\n const addon = this.props.addon;\n const name = this.getString(addon.name);\n const author = this.getString(addon.author);\n const description = this.getString(addon.description);\n const version = this.getString(addon.version);\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n id: `${addon.id}-card`,\n className: \"bd-addon-card settings-closed\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-addon-header\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"span\", {\n className: \"bd-title\"\n }, this.buildTitle(name, version, author)), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-controls\"\n }, this.props.editAddon && this.makeButton(modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.editAddon, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_edit__WEBPACK_IMPORTED_MODULE_3__[\"default\"], null), this.props.editAddon), this.props.deleteAddon && this.makeButton(modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.deleteAddon, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_delete__WEBPACK_IMPORTED_MODULE_4__[\"default\"], null), this.props.deleteAddon), this.props.showReloadIcon && this.makeButton(modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.reload, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_reload__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n className: \"bd-reload bd-reload-card\"\n }), this.reload), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_components_switch__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n checked: this.props.enabled,\n onChange: this.onChange\n }))), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-description-wrap scroller-wrap fade\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-description scroller\"\n }, description)), this.footer);\n }\n\n}\nconst originalRender = AddonCard.prototype.render;\nObject.defineProperty(AddonCard.prototype, \"render\", {\n enumerable: false,\n configurable: false,\n set: function () {\n modules__WEBPACK_IMPORTED_MODULE_0__[\"Logger\"].warn(\"AddonCard\", \"Addon policy for plugins #5 https://github.com/rauenzi/BetterDiscordApp/wiki/Addon-Policies#plugins\");\n },\n get: () => originalRender\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL3NldHRpbmdzL2FkZG9uY2FyZC5qc3g/NjM3MyJdLCJuYW1lcyI6WyJUb29sdGlwIiwiV2VicGFja01vZHVsZXMiLCJnZXRCeURpc3BsYXlOYW1lIiwiQWRkb25DYXJkIiwiUmVhY3QiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwic3RhdGUiLCJzZXR0aW5nc09wZW4iLCJzZXR0aW5nc1BhbmVsIiwicGFuZWxSZWYiLCJjcmVhdGVSZWYiLCJvbkNoYW5nZSIsImJpbmQiLCJyZWxvYWQiLCJzaG93U2V0dGluZ3MiLCJjbG9zZVNldHRpbmdzIiwiYWRkb24iLCJpZCIsImZvcmNlVXBkYXRlIiwiY29tcG9uZW50RGlkVXBkYXRlIiwiTm9kZSIsImN1cnJlbnQiLCJhcHBlbmRDaGlsZCIsInNldEltbWVkaWF0ZSIsImlzSGlkZGVuIiwiY29udGFpbmVyIiwiZWxlbWVudCIsImNUb3AiLCJzY3JvbGxUb3AiLCJjQm90dG9tIiwiY2xpZW50SGVpZ2h0IiwiZVRvcCIsIm9mZnNldFRvcCIsImVCb3R0b20iLCJ0aGlzTm9kZSIsImNsb3Nlc3QiLCJ0aGlzTm9kZU9mZnNldCIsIkRPTSIsIm9mZnNldCIsImNvbnRhaW5lck9mZnNldCIsIm9yaWdpbmFsIiwiZW5kUG9pbnQiLCJ0b3AiLCJhbmltYXRlIiwiZHVyYXRpb24iLCJ1cGRhdGUiLCJwcm9ncmVzcyIsImdldFN0cmluZyIsInZhbHVlIiwidG9TdHJpbmciLCJlbmFibGVkIiwiaGFzU2V0dGluZ3MiLCJzZXRTdGF0ZSIsImlubmVySFRNTCIsImJ1aWxkVGl0bGUiLCJuYW1lIiwidmVyc2lvbiIsImF1dGhvciIsInRpdGxlIiwiU3RyaW5ncyIsIkFkZG9ucyIsInNwbGl0IiwibmFtZUluZGV4IiwiZmluZEluZGV4IiwicyIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJ2ZXJzaW9uSW5kZXgiLCJhdXRob3JJbmRleCIsImZsYXQiLCJzZXR0aW5nc0NvbXBvbmVudCIsImdldFNldHRpbmdzUGFuZWwiLCJlcnIiLCJMb2dnZXIiLCJzdGFja3RyYWNlIiwicmVmIiwid2FybiIsImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIiwiY2hpbGQiLCIkJHR5cGVvZiIsIlN5bWJvbCIsImZvciIsImJ1aWxkTGluayIsIndoaWNoIiwidXJsIiwibGluayIsIm9uQ2xpY2siLCJldmVudCIsInByZXZlbnREZWZhdWx0Iiwic3RvcFByb3BhZ2F0aW9uIiwiY29kZSIsInRlc3RlciIsInRlc3QiLCJtYXRjaCIsIkRpc2NvcmRNb2R1bGVzIiwiTGF5ZXJTdGFjayIsInBvcExheWVyIiwiSW52aXRlQWN0aW9ucyIsImFjY2VwdEludml0ZUFuZFRyYW5zaXRpb25Ub0ludml0ZUNoYW5uZWwiLCJmb290ZXIiLCJsaW5rcyIsInNvbWUiLCJsIiwibGlua0NvbXBvbmVudHMiLCJtYXAiLCJmaWx0ZXIiLCJjIiwiY29tcCIsImkiLCJsZW5ndGgiLCJhZGRvblNldHRpbmdzIiwibWFrZUJ1dHRvbiIsImNoaWxkcmVuIiwiYWN0aW9uIiwicmVuZGVyIiwiZGVzY3JpcHRpb24iLCJlZGl0QWRkb24iLCJkZWxldGVBZGRvbiIsInNob3dSZWxvYWRJY29uIiwib3JpZ2luYWxSZW5kZXIiLCJwcm90b3R5cGUiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImVudW1lcmFibGUiLCJjb25maWd1cmFibGUiLCJzZXQiLCJnZXQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQSxNQUFNQSxPQUFPLEdBQUdDLHNEQUFjLENBQUNDLGdCQUFmLENBQWdDLFNBQWhDLENBQWhCO0FBRWUsTUFBTUMsU0FBTixTQUF3QkMsNkNBQUssQ0FBQ0MsU0FBOUIsQ0FBd0M7QUFFbkRDLGFBQVcsQ0FBQ0MsS0FBRCxFQUFRO0FBQ2YsVUFBTUEsS0FBTjtBQUNBLFNBQUtDLEtBQUwsR0FBYTtBQUNUQyxrQkFBWSxFQUFFO0FBREwsS0FBYjtB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LGNBQVAsQ0FBc0J6SCxTQUFTLENBQUN1SCxTQUFoQyxFQUEyQyxRQUEzQyxFQUFxRDtBQUNqREcsWUFBVSxFQUFFLEtBRHFDO0FBRWpEQyxjQUFZLEVBQUUsS0FGbUM7QUFHakRDLEtBQUcsRUFBRSxZQUFXO0FBQUNwRCxrREFBTSxDQUFDRyxJQUFQLENBQVksV0FBWixFQUF5QixxR0FBekI7QUFBaUksR0FIakc7QUFJakRrRCxLQUFHLEVBQUUsTUFBTVA7QUFKc0MsQ0FBckQiLCJmaWxlIjoiLi9zcmMvdWkvc2V0dGluZ3MvYWRkb25jYXJkLmpzeC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhY3QsIExvZ2dlciwgU3RyaW5ncywgV2VicGFja01vZHVsZXMsIERPTSwgRGlzY29yZE1vZHVsZXN9IGZyb20gXCJtb2R1bGVzXCI7XHJcbmltcG9ydCBDbG9zZUJ1dHRvbiBmcm9tIFwiLi4vaWNvbnMvY2xvc2VcIjtcclxuaW1wb3J0IFJlbG9hZEljb24gZnJvbSBcIi4uL2ljb25zL3JlbG9hZFwiO1xyXG5pbXBvcnQgRWRpdEljb24gZnJvbSBcIi4uL2ljb25zL2VkaXRcIjtcclxuaW1wb3J0IERlbGV0ZUljb24gZnJvbSBcIi4uL2ljb25zL2RlbGV0ZVwiO1xyXG5pbXBvcnQgU3dpdGNoIGZyb20gXCIuL2NvbXBvbmVudHMvc3dpdGNoXCI7XHJcbmltcG9ydCBFcnJvckJvdW5kYXJ5IGZyb20gIFwiLi4vZXJyb3Jib3VuZGFyeVwiO1xyXG5cclxuY29uc3QgVG9vbHRpcCA9IFdlYnBhY2tNb2R1bGVzLmdldEJ5RGlzcGxheU5hbWUoXCJUb29sdGlwXCIpO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQWRkb25DYXJkIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcm9wcykge1xyXG4gICAgICAgIHN1cGVyKHByb3BzKTtcclxuICAgICAgICB0aGlzLnN0YXRlID0ge1xyXG4gICAgICAgICAgICBzZXR0aW5nc09wZW46IGZhbHNlXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgdGhpcy5zZXR0aW5nc1BhbmVsID0gXCJcIjtcclxuICAgICAgICB0aGlzLnBhbmVsUmVmID0gUmVhY3QuY3JlYXRlUmVmKCk7XHJcblxyXG4gICAgICAgIHRoaXMub25DaGFuZ2UgPSB0aGlzLm9uQ2hhbmdlLmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy5yZWxvYWQgPSB0aGlzLnJlbG9hZC5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMuc2hvd1NldHRpbmdzID0gdGhpcy5zaG93U2V0dGluZ3MuYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLmNsb3NlU2V0dGluZ3MgPSB0aGlzLmNsb3NlU2V0dGluZ3MuYmluZCh0aGlzKTtcclxuICAgIH1cclxuXHJcbiAgICByZWxvYWQoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnByb3BzLnJlbG9hZCkgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMucHJvcHMuYWRkb24gPSB0aGlzLnByb3BzLnJlbG9hZCh0aGlzLnByb3BzLmFkZG9uLmlkKTtcclxuICAgICAgICB0aGlzLmZvcmNlVXBkYXRlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgY29tcG9uZW50RGlkVXBkYXRlKCkge1xyXG4gICAgICAgIGlmICghdGhpcy5zdGF0ZS5zZXR0aW5nc09wZW4pIHJldHVybjtcclxuICAgICAgICBpZiAodGhpcy5zZXR0aW5nc1BhbmVsIGluc3RhbmNlb2YgTm9kZSkgdGhpcy5wYW5lbFJlZi5jdXJyZW50LmFwcGVuZENoaWxkKHRoaXMuc2V0dGluZ3NQYW5lbCk7XHJcblxyXG4gICAgICAgIHNldEltbWVkaWF0ZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGlzSGlkZGVuID0gKGNvbnRhaW5lciwgZWxlbWVudCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY1RvcCA9IGNvbnRhaW5lci5zY3JvbGxUb3A7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjQm90dG9tID0gY1RvcCArIGNvbnRhaW5lci5jbGllbnRIZWlnaHQ7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBlVG9wID0gZWxlbWVudC5vZmZzZXRUb3A7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBlQm90dG9tID0gZVRvcCArIGVsZW1lbnQuY2xpZW50SGVpZ2h0O1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuICAoZVRvcCA8IGNUb3AgfHwgZUJvdHRvbSA+IGNCb3R0b20pO1xyXG4gICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgY29uc3QgdGhpc05vZGUgPSB0aGlzLnBhbmVsUmVmLmN1cnJlbnQ7XHJcbiAgICAgICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXNOb2RlLmNsb3Nlc3QoXCIuc2Nyb2xsZXJCYXNlLTI4OUppaFwiKTtcclxuICAgICAgICAgICAgaWYgKCFjb250YWluZXIgfHwgIWlzSGlkZGVuKGNvbnRhaW5lciwgdGhpc05vZGUpKSByZXR1cm47XHJcbiAgICAgICAgICAgIGNvbnN0IHRoaXNOb2RlT2Zmc2V0ID0gRE9NLm9mZnNldCh0aGlzTm9kZSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGNvbnRhaW5lck9mZnNldCA9IERPTS5vZmZzZXQoY29udGFpbmVyKTtcclxuICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWwgPSBjb250YWluZXIuc2Nyb2xsVG9wO1xyXG4gICAgICAgICAgICBjb25zdCBlbmRQb2ludCA9IHRoaXNOb2RlT2Zmc2V0LnRvcCAtIGNvbnRhaW5lck9mZnNldC50b3AgKyBjb250YWluZXIuc2Nyb2xsVG9wIC0gMzA7XHJcbiAgICAgICAgICAgIERPTS5hbmltYXRlKHtcclxuICAgICAgICAgICAgICAgIGR1cmF0aW9uOiAzMDAsXHJcbiAgICAgICAgICAgICAgICB1cGRhdGU6IGZ1bmN0aW9uKHByb2dyZXNzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVuZFBvaW50ID4gb3JpZ2luYWwpIGNvbnRhaW5lci5zY3JvbGxUb3AgPSBvcmlnaW5hbCArIChwcm9ncmVzcyAqIChlbmRQb2ludCAtIG9yaWdpbmFsKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBjb250YWluZXIuc2Nyb2xsVG9wID0gb3JpZ2luYWwgLSAocHJvZ3Jlc3MgKiAob3JpZ2luYWwgLSBlbmRQb2ludCkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRTdHJpbmcodmFsdWUpIHtyZXR1cm4gdHlwZW9mIHZhbHVlID09IFwic3RyaW5nXCIgPyB2YWx1ZSA6IHZhbHVlLnRvU3RyaW5nKCk7fVxyXG5cclxuICAgIG9uQ2hhbmdlKCkge1xyXG4gICAgICAgIHRoaXMucHJvcHMub25DaGFuZ2UgJiYgdGhpcy5wcm9wcy5vbkNoYW5nZSh0aGlzLnByb3BzLmFkZG9uLmlkKTtcclxuICAgICAgICB0aGlzLnByb3BzLmVuYWJsZWQgPSAhdGhpcy5wcm9wcy5lbmFibGVkO1xyXG4gICAgICAgIHRoaXMuZm9yY2VVcGRhdGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBzaG93U2V0dGluZ3MoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnByb3BzLmhhc1NldHRpbmdzKSByZXR1cm47XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7c2V0dGluZ3NPcGVuOiB0cnVlfSk7XHJcbiAgICB9XHJcblxyXG4gICAgY2xvc2VTZXR0aW5ncygpIHtcclxuICAgICAgICBpZiAodGhpcy5zZXR0aW5nc1BhbmVsIGluc3RhbmNlb2YgTm9kZSkgdGhpcy5wYW5lbFJlZi5jdXJyZW50LmlubmVySFRNTCA9IFwiXCI7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7c2V0dGluZ3NPcGVuOiBmYWxzZX0pO1xyXG4gICAgfVxyXG5cclxuICAgIGJ1aWxkVGl0bGUobmFtZSwgdmVyc2lvbiwgYXV0aG9yKSB7XHJcbiAgICAgICAgY29uc3QgdGl0bGUgPSBTdHJpbmdzLkFkZG9ucy50aXRsZS5zcGxpdCgvKHt7W0EtWmEtel0rfX0pLyk7XHJcbiAgICAgICAgY29uc3QgbmFtZUluZGV4ID0gdGl0bGUuZmluZEluZGV4KHMgPT4gcyA9PSBcInt7bmFtZX19XCIpO1xyXG4gICAgICAgIGlmIChuYW1lSW5kZXgpIHRpdGxlW25hbWVJbmRleF0gPSBSZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7Y2xhc3NOYW1lOiBcImJkLW5hbWVcIn0sIG5hbWUpO1xyXG4gICAgICAgIGNvbnN0IHZlcnNpb25JbmRleCA9IHRpdGxlLmZpbmRJbmRleChzID0+IHMgPT0gXCJ7e3ZlcnNpb259fVwiKTtcclxuICAgICAgICBpZiAobmFtZUluZGV4KSB0aXRsZVt2ZXJzaW9uSW5kZXhdID0gUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwge2NsYXNzTmFtZTogXCJiZC12ZXJzaW9uXCJ9LCB2ZXJzaW9uKTtcclxuICAgICAgICBjb25zdCBhdXRob3JJbmRleCA9IHRpdGxlLmZpbmRJbmRleChzID0+IHMgPT0gXCJ7e2F1dGhvcn19XCIpO1xyXG4gICAgICAgIGlmIChuYW1lSW5kZXgpIHRpdGxlW2F1dGhvckluZGV4XSA9IFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIHtjbGFzc05hbWU6IFwiYmQtYXV0aG9yXCJ9LCBhdXRob3IpO1xyXG4gICAgICAgIHJldHVybiB0aXRsZS5mbGF0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHNldHRpbmdzQ29tcG9uZW50KCkge1xyXG4gICAgICAgIGNvbnN0IGFkZG9uID0gdGhpcy5wcm9wcy5hZGRvbjtcclxuICAgICAgICBjb25zdCBuYW1lID0gdGhpcy5nZXRTdHJpbmcoYWRkb24ubmFtZSk7XHJcbiAgICAgICAgdHJ5IHsgdGhpcy5zZXR0aW5nc1BhbmVsID0gdGhpcy5wcm9wcy5nZXRTZXR0aW5nc1BhbmVsKCk7IH1cclxuICAgICAgICBjYXRjaCAoZXJyKSB7IExvZ2dlci5zdGFja3RyYWNlKFwiQWRkb24gU2V0dGluZ3NcIiwgXCJVbmFibGUgdG8gZ2V0IHNldHRpbmdzIHBhbmVsIGZvciBcIiArIG5hbWUgKyBcIi5cIiwgZXJyKTsgfVxyXG5cclxuICAgICAgICBjb25zdCBwcm9wcyA9IHtpZDogYCR7bmFtZX0tc2V0dGluZ3NgLCBjbGFzc05hbWU6IFwiYWRkb24tc2V0dGluZ3NcIiwgcmVmOiB0aGlzLnBhbmVsUmVmfTtcclxuICAgICAgICBpZiAodHlwZW9mKHRoaXMuc2V0dGluZ3NQYW5lbCkgPT0gXCJzdHJpbmdcIikge1xyXG4gICAgICAgICAgICBMb2dnZXIud2FybihcIkFkZG9uIFNldHRpbmdzXCIsIFwiVXNpbmcgYSBET01TdHJpbmcgaXMgb2ZmaWNpYWxseSBkZXByZWNhdGVkLlwiKTtcclxuICAgICAgICAgICAgcHJvcHMuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwgPSB0aGlzLnNldHRpbmdzUGFuZWw7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgY2hpbGQgPSBudWxsO1xyXG4gICAgICAgIGlmICh0eXBlb2YodGhpcy5zZXR0aW5nc1BhbmVsKSA9PT0gXCJmdW5jdGlvblwiKSBjaGlsZCA9IDx0aGlzLnNldHRpbmdzUGFuZWwgLz47XHJcbiAgICAgICAgaWYgKHRoaXMuc2V0dGluZ3NQYW5lbC4kJHR5cGVvZiAmJiB0aGlzLnNldHRpbmdzUGFuZWwuJCR0eXBlb2YgPT09IFN5bWJvbC5mb3IoXCJyZWFjdC5lbGVtZW50XCIpKSBjaGlsZCA9IHRoaXMuc2V0dGluZ3NQYW5lbDtcclxuXHJcbiAgICAgICAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPVwiYmQtYWRkb24tY2FyZCBzZXR0aW5ncy1vcGVuIGJkLXN3aXRjaC1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZC1jbG9zZVwiIG9uQ2xpY2s9e3RoaXMuY2xvc2VTZXR0aW5nc30+PENsb3NlQnV0dG9uIC8+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiB7Li4ucHJvcHN9PjxFcnJvckJvdW5kYXJ5PntjaGlsZH08L0Vycm9yQm91bmRhcnk+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj47XHJcbiAgICB9XHJcblxyXG4gICAgYnVpbGRMaW5rKHdoaWNoKSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gdGhpcy5wcm9wcy5hZGRvblt3aGljaF07XHJcbiAgICAgICAgaWYgKCF1cmwpIHJldHVybiBudWxsO1xyXG4gICAgICAgIGNvbnN0IGxpbmsgPSA8YSBjbGFzc05hbWU9XCJiZC1saW5rIGJkLWxpbmstd2Vic2l0ZVwiIGhyZWY9e3VybH0gdGFyZ2V0PVwiX2JsYW5rXCIgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiPntTdHJpbmdzLkFkZG9uc1t3aGljaF19PC9hPjtcclxuICAgICAgICBpZiAod2hpY2ggPT0gXCJpbnZpdGVcIikge1xyXG4gICAgICAgICAgICBsaW5rLnByb3BzLm9uQ2xpY2sgPSBmdW5jdGlvbihldmVudCkge1xyXG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICAgICAgbGV0IGNvZGUgPSB1cmw7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB0ZXN0ZXIgPSAvXFwuZ2dcXC8oLiopJC87XHJcbiAgICAgICAgICAgICAgICBpZiAodGVzdGVyLnRlc3QoY29kZSkpIGNvZGUgPSBjb2RlLm1hdGNoKHRlc3RlcilbMV07XHJcbiAgICAgICAgICAgICAgICBEaXNjb3JkTW9kdWxlcy5MYXllclN0YWNrLnBvcExheWVyKCk7XHJcbiAgICAgICAgICAgICAgICBEaXNjb3JkTW9kdWxlcy5JbnZpdGVBY3Rpb25zLmFjY2VwdEludml0ZUFuZFRyYW5zaXRpb25Ub0ludml0ZUNoYW5uZWwoY29kZSk7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBsaW5rO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBmb290ZXIoKSB7XHJcbiAgICAgICAgY29uc3QgbGlua3MgPSBbXCJ3ZWJzaXRlXCIsIFwic291cmNlXCIsIFwiaW52aXRlXCIsIFwiZG9uYXRlXCIsIFwicGF0cmVvblwiXTtcclxuICAgICAgICBpZiAoIWxpbmtzLnNvbWUobCA9PiB0aGlzLnByb3BzLmFkZG9uW2xdKSAmJiAhdGhpcy5wcm9wcy5oYXNTZXR0aW5ncykgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgY29uc3QgbGlua0NvbXBvbmVudHMgPSBsaW5rcy5tYXAodGhpcy5idWlsZExpbmsuYmluZCh0aGlzKSkuZmlsdGVyKGMgPT4gYyk7XHJcbiAgICAgICAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPVwiYmQtZm9vdGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiYmQtbGlua3NcIj57bGlua0NvbXBvbmVudHMubWFwKChjb21wLCBpKSA9PiBpIDwgbGlua0NvbXBvbmVudHMubGVuZ3RoIC0gMSA/IFtjb21wLCBcIiB8IFwiXSA6IGNvbXApLmZsYXQoKX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAge3RoaXMucHJvcHMuaGFzU2V0dGluZ3MgJiYgPGJ1dHRvbiBvbkNsaWNrPXt0aGlzLnNob3dTZXR0aW5nc30gY2xhc3NOYW1lPVwiYmQtYnV0dG9uIGJkLWJ1dHRvbi1hZGRvbi1zZXR0aW5nc1wiIGRpc2FibGVkPXshdGhpcy5wcm9wcy5lbmFibGVkfT57U3RyaW5ncy5BZGRvbnMuYWRkb25TZXR0aW5nc308L2J1dHRvbj59XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj47XHJcbiAgICB9XHJcblxyXG4gICAgbWFrZUJ1dHRvbih0aXRsZSwgY2hpbGRyZW4sIGFjdGlvbikge1xyXG4gICAgICAgIHJldHVybiAgPFRvb2x0aXAgY29sb3I9XCJibGFja1wiIHBvc2l0aW9uPVwidG9wXCIgdGV4dD17dGl0bGV9PlxyXG4gICAgICAgICAgICAgICAgICAgIHsocHJvcHMpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxkaXYgey4uLnByb3BzfSBjbGFzc05hbWU9XCJiZC1hZGRvbi1idXR0b25cIiBvbkNsaWNrPXthY3Rpb259PntjaGlsZHJlbn08L2Rpdj47XHJcbiAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgIDwvVG9vbHRpcD47XHJcbiAgICB9XHJcblxyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIGlmICh0aGlzLnN0YXRlLnNldHRpbmdzT3BlbikgcmV0dXJuIHRoaXMuc2V0dGluZ3NDb21wb25lbnQ7XHJcblxyXG4gICAgICAgIGNvbnN0IGFkZG9uID0gdGhpcy5wcm9wcy5hZGRvbjtcclxuICAgICAgICBjb25zdCBuYW1lID0gdGhpcy5nZXRTdHJpbmcoYWRkb24ubmFtZSk7XHJcbiAgICAgICAgY29uc3QgYXV0aG9yID0gdGhpcy5nZXRTdHJpbmcoYWRkb24uYXV0aG9yKTtcclxuICAgICAgICBjb25zdCBkZXNjcmlwdGlvbiA9IHRoaXMuZ2V0U3RyaW5nKGFkZG9uLmRlc2NyaXB0aW9uKTtcclxuICAgICAgICBjb25zdCB2ZXJzaW9uID0gdGhpcy5nZXRTdHJpbmcoYWRkb24udmVyc2lvbik7XHJcblxyXG4gICAgICAgIHJldHVybiA8ZGl2IGlkPXtgJHthZGRvbi5pZH0tY2FyZGB9IGNsYXNzTmFtZT1cImJkLWFkZG9uLWNhcmQgc2V0dGluZ3MtY2xvc2VkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZC1hZGRvbi1oZWFkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImJkLXRpdGxlXCI+e3RoaXMuYnVpbGRUaXRsZShuYW1lLCB2ZXJzaW9uLCBhdXRob3IpfTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmQtY29udHJvbHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dGhpcy5wcm9wcy5lZGl0QWRkb24gJiYgdGhpcy5tYWtlQnV0dG9uKFN0cmluZ3MuQWRkb25zLmVkaXRBZGRvbiwgPEVkaXRJY29uIC8+LCB0aGlzLnByb3BzLmVkaXRBZGRvbil9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3RoaXMucHJvcHMuZGVsZXRlQWRkb24gJiYgdGhpcy5tYWtlQnV0dG9uKFN0cmluZ3MuQWRkb25zLmRlbGV0ZUFkZG9uLCA8RGVsZXRlSWNvbiAvPiwgdGhpcy5wcm9wcy5kZWxldGVBZGRvbil9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3RoaXMucHJvcHMuc2hvd1JlbG9hZEljb24gJiYgdGhpcy5tYWtlQnV0dG9uKFN0cmluZ3MuQWRkb25zLnJlbG9hZCwgPFJlbG9hZEljb24gY2xhc3NOYW1lPVwiYmQtcmVsb2FkIGJkLXJlbG9hZC1jYXJkXCIgLz4sIHRoaXMucmVsb2FkKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U3dpdGNoIGNoZWNrZWQ9e3RoaXMucHJvcHMuZW5hYmxlZH0gb25DaGFuZ2U9e3RoaXMub25DaGFuZ2V9IC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJkLWRlc2NyaXB0aW9uLXdyYXAgc2Nyb2xsZXItd3JhcCBmYWRlXCI+PGRpdiBjbGFzc05hbWU9XCJiZC1kZXNjcmlwdGlvbiBzY3JvbGxlclwiPntkZXNjcmlwdGlvbn08L2Rpdj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICB7dGhpcy5mb290ZXJ9XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj47XHJcbiAgICB9XHJcbn1cclxuXHJcbmNvbnN0IG9yaWdpbmFsUmVuZGVyID0gQWRkb25DYXJkLnByb3RvdHlwZS5yZW5kZXI7XHJcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShBZGRvbkNhcmQucHJvdG90eXBlLCBcInJlbmRlclwiLCB7XHJcbiAgICBlbnVtZXJhYmxlOiBmYWxzZSxcclxuICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXHJcbiAgICBzZXQ6IGZ1bmN0aW9uKCkge0xvZ2dlci53YXJuKFwiQWRkb25DYXJkXCIsIFwiQWRkb24gcG9saWN5IGZvciBwbHVnaW5zICM1IGh0dHBzOi8vZ2l0aHViLmNvbS9yYXVlbnppL0JldHRlckRpc2NvcmRBcHAvd2lraS9BZGRvbi1Qb2xpY2llcyNwbHVnaW5zXCIpO30sXHJcbiAgICBnZXQ6ICgpID0+IG9yaWdpbmFsUmVuZGVyXHJcbn0pOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/settings/addoncard.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return AddonCard; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _icons_close__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../icons/close */ \"./src/ui/icons/close.jsx\");\n/* harmony import */ var _icons_reload__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../icons/reload */ \"./src/ui/icons/reload.jsx\");\n/* harmony import */ var _icons_edit__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../icons/edit */ \"./src/ui/icons/edit.jsx\");\n/* harmony import */ var _icons_delete__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../icons/delete */ \"./src/ui/icons/delete.jsx\");\n/* harmony import */ var _components_switch__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./components/switch */ \"./src/ui/settings/components/switch.jsx\");\n/* harmony import */ var _errorboundary__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../errorboundary */ \"./src/ui/errorboundary.jsx\");\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\n\n\n\n\n\n\n\nconst Tooltip = modules__WEBPACK_IMPORTED_MODULE_0__[\"WebpackModules\"].getByDisplayName(\"Tooltip\");\nclass AddonCard extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n this.state = {\n settingsOpen: false\n };\n this.settingsPanel = \"\";\n this.panelRef = modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createRef();\n this.onChange = this.onChange.bind(this);\n this.reload = this.reload.bind(this);\n this.showSettings = this.showSettings.bind(this);\n this.closeSettings = this.closeSettings.bind(this);\n }\n\n reload() {\n if (!this.props.reload) return;\n this.props.addon = this.props.reload(this.props.addon.id);\n this.forceUpdate();\n }\n\n componentDidUpdate() {\n if (!this.state.settingsOpen) return;\n if (this.settingsPanel instanceof Node) this.panelRef.current.appendChild(this.settingsPanel);\n setImmediate(() => {\n const isHidden = (container, element) => {\n const cTop = container.scrollTop;\n const cBottom = cTop + container.clientHeight;\n const eTop = element.offsetTop;\n const eBottom = eTop + element.clientHeight;\n return eTop < cTop || eBottom > cBottom;\n };\n\n const thisNode = this.panelRef.current;\n const container = thisNode.closest(\".scrollerBase-289Jih\");\n if (!container || !isHidden(container, thisNode)) return;\n const thisNodeOffset = modules__WEBPACK_IMPORTED_MODULE_0__[\"DOM\"].offset(thisNode);\n const containerOffset = modules__WEBPACK_IMPORTED_MODULE_0__[\"DOM\"].offset(container);\n const original = container.scrollTop;\n const endPoint = thisNodeOffset.top - containerOffset.top + container.scrollTop - 30;\n modules__WEBPACK_IMPORTED_MODULE_0__[\"DOM\"].animate({\n duration: 300,\n update: function (progress) {\n if (endPoint > original) container.scrollTop = original + progress * (endPoint - original);else container.scrollTop = original - progress * (original - endPoint);\n }\n });\n });\n }\n\n getString(value) {\n return typeof value == \"string\" ? value : value.toString();\n }\n\n onChange() {\n this.props.onChange && this.props.onChange(this.props.addon.id);\n this.props.enabled = !this.props.enabled;\n this.forceUpdate();\n }\n\n showSettings() {\n if (!this.props.hasSettings) return;\n this.setState({\n settingsOpen: true\n });\n }\n\n closeSettings() {\n if (this.settingsPanel instanceof Node) this.panelRef.current.innerHTML = \"\";\n this.setState({\n settingsOpen: false\n });\n }\n\n buildTitle(name, version, author) {\n const title = modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.title.split(/({{[A-Za-z]+}})/);\n const nameIndex = title.findIndex(s => s == \"{{name}}\");\n if (nameIndex) title[nameIndex] = modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"span\", {\n className: \"bd-name\"\n }, name);\n const versionIndex = title.findIndex(s => s == \"{{version}}\");\n if (nameIndex) title[versionIndex] = modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"span\", {\n className: \"bd-version\"\n }, version);\n const authorIndex = title.findIndex(s => s == \"{{author}}\");\n if (nameIndex) title[authorIndex] = modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"span\", {\n className: \"bd-author\"\n }, author);\n return title.flat();\n }\n\n get settingsComponent() {\n const addon = this.props.addon;\n const name = this.getString(addon.name);\n\n try {\n this.settingsPanel = this.props.getSettingsPanel();\n } catch (err) {\n modules__WEBPACK_IMPORTED_MODULE_0__[\"Logger\"].stacktrace(\"Addon Settings\", \"Unable to get settings panel for \" + name + \".\", err);\n }\n\n const props = {\n id: `${name}-settings`,\n className: \"addon-settings\",\n ref: this.panelRef\n };\n\n if (typeof this.settingsPanel == \"string\") {\n modules__WEBPACK_IMPORTED_MODULE_0__[\"Logger\"].warn(\"Addon Settings\", \"Using a DOMString is officially deprecated.\");\n props.dangerouslySetInnerHTML = this.settingsPanel;\n }\n\n let child = null;\n if (typeof this.settingsPanel === \"function\") child = /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(this.settingsPanel, null);\n if (this.settingsPanel.$$typeof && this.settingsPanel.$$typeof === Symbol.for(\"react.element\")) child = this.settingsPanel;\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-addon-card settings-open bd-switch-item\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-close\",\n onClick: this.closeSettings\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_close__WEBPACK_IMPORTED_MODULE_1__[\"default\"], null)), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", props, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_errorboundary__WEBPACK_IMPORTED_MODULE_6__[\"default\"], null, child)));\n }\n\n buildLink(which) {\n const url = this.props.addon[which];\n if (!url) return null;\n const link = /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"a\", {\n className: \"bd-link bd-link-website\",\n href: url,\n target: \"_blank\",\n rel: \"noopener noreferrer\"\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons[which]);\n\n if (which == \"invite\") {\n link.props.onClick = function (event) {\n event.preventDefault();\n event.stopPropagation();\n let code = url;\n const tester = /\\.gg\\/(.*)$/;\n if (tester.test(code)) code = code.match(tester)[1];\n modules__WEBPACK_IMPORTED_MODULE_0__[\"DiscordModules\"].LayerStack.popLayer();\n modules__WEBPACK_IMPORTED_MODULE_0__[\"DiscordModules\"].InviteActions.acceptInviteAndTransitionToInviteChannel(code);\n };\n }\n\n return link;\n }\n\n get footer() {\n const links = [\"website\", \"source\", \"invite\", \"donate\", \"patreon\"];\n if (!links.some(l => this.props.addon[l]) && !this.props.hasSettings) return null;\n const linkComponents = links.map(this.buildLink.bind(this)).filter(c => c);\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-footer\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"span\", {\n className: \"bd-links\"\n }, linkComponents.map((comp, i) => i < linkComponents.length - 1 ? [comp, \" | \"] : comp).flat()), this.props.hasSettings && /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"button\", {\n onClick: this.showSettings,\n className: \"bd-button bd-button-addon-settings\",\n disabled: !this.props.enabled\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.addonSettings));\n }\n\n makeButton(title, children, action) {\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(Tooltip, {\n color: \"black\",\n position: \"top\",\n text: title\n }, props => {\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", _extends({}, props, {\n className: \"bd-addon-button\",\n onClick: action\n }), children);\n });\n }\n\n render() {\n if (this.state.settingsOpen) return this.settingsComponent;\n const addon = this.props.addon;\n const name = this.getString(addon.name);\n const author = this.getString(addon.author);\n const description = this.getString(addon.description);\n const version = this.getString(addon.version);\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n id: `${addon.id}-card`,\n className: \"bd-addon-card settings-closed\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-addon-header\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"span\", {\n className: \"bd-title\"\n }, this.buildTitle(name, version, author)), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-controls\"\n }, this.props.editAddon && this.makeButton(modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.editAddon, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_edit__WEBPACK_IMPORTED_MODULE_3__[\"default\"], null), this.props.editAddon), this.props.deleteAddon && this.makeButton(modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.deleteAddon, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_delete__WEBPACK_IMPORTED_MODULE_4__[\"default\"], null), this.props.deleteAddon), this.props.showReloadIcon && this.makeButton(modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.reload, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_reload__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n className: \"bd-reload bd-reload-card\"\n }), this.reload), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_components_switch__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n checked: this.props.enabled,\n onChange: this.onChange\n }))), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-description-wrap scroller-wrap fade\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-description scroller\"\n }, description)), this.footer);\n }\n\n}\nconst originalRender = AddonCard.prototype.render;\nObject.defineProperty(AddonCard.prototype, \"render\", {\n enumerable: false,\n configurable: false,\n set: function () {\n modules__WEBPACK_IMPORTED_MODULE_0__[\"Logger\"].warn(\"AddonCard\", \"Addon policy for plugins #5 https://github.com/rauenzi/BetterDiscordApp/wiki/Addon-Policies#plugins\");\n },\n get: () => originalRender\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvc2V0dGluZ3MvYWRkb25jYXJkLmpzeD82MzczIl0sIm5hbWVzIjpbIlRvb2x0aXAiLCJXZWJwYWNrTW9kdWxlcyIsImdldEJ5RGlzcGxheU5hbWUiLCJBZGRvbkNhcmQiLCJSZWFjdCIsIkNvbXBvbmVudCIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJzdGF0ZSIsInNldHRpbmdzT3BlbiIsInNldHRpbmdzUGFuZWwiLCJwYW5lbFJlZiIsImNyZWF0ZVJlZiIsIm9uQ2hhbmdlIiwiYmluZCIsInJlbG9hZCIsInNob3dTZXR0aW5ncyIsImNsb3NlU2V0dGluZ3MiLCJhZGRvbiIsImlkIiwiZm9yY2VVcGRhdGUiLCJjb21wb25lbnREaWRVcGRhdGUiLCJOb2RlIiwiY3VycmVudCIsImFwcGVuZENoaWxkIiwic2V0SW1tZWRpYXRlIiwiaXNIaWRkZW4iLCJjb250YWluZXIiLCJlbGVtZW50IiwiY1RvcCIsInNjcm9sbFRvcCIsImNCb3R0b20iLCJjbGllbnRIZWlnaHQiLCJlVG9wIiwib2Zmc2V0VG9wIiwiZUJvdHRvbSIsInRoaXNOb2RlIiwiY2xvc2VzdCIsInRoaXNOb2RlT2Zmc2V0IiwiRE9NIiwib2Zmc2V0IiwiY29udGFpbmVyT2Zmc2V0Iiwib3JpZ2luYWwiLCJlbmRQb2ludCIsInRvcCIsImFuaW1hdGUiLCJkdXJhdGlvbiIsInVwZGF0ZSIsInByb2dyZXNzIiwiZ2V0U3RyaW5nIiwidmFsdWUiLCJ0b1N0cmluZyIsImVuYWJsZWQiLCJoYXNTZXR0aW5ncyIsInNldFN0YXRlIiwiaW5uZXJIVE1MIiwiYnVpbGRUaXRsZSIsIm5hbWUiLCJ2ZXJzaW9uIiwiYXV0aG9yIiwidGl0bGUiLCJTdHJpbmdzIiwiQWRkb25zIiwic3BsaXQiLCJuYW1lSW5kZXgiLCJmaW5kSW5kZXgiLCJzIiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTmFtZSIsInZlcnNpb25JbmRleCIsImF1dGhvckluZGV4IiwiZmxhdCIsInNldHRpbmdzQ29tcG9uZW50IiwiZ2V0U2V0dGluZ3NQYW5lbCIsImVyciIsIkxvZ2dlciIsInN0YWNrdHJhY2UiLCJyZWYiLCJ3YXJuIiwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwiLCJjaGlsZCIsIiQkdHlwZW9mIiwiU3ltYm9sIiwiZm9yIiwiYnVpbGRMaW5rIiwid2hpY2giLCJ1cmwiLCJsaW5rIiwib25DbGljayIsImV2ZW50IiwicHJldmVudERlZmF1bHQiLCJzdG9wUHJvcGFnYXRpb24iLCJjb2RlIiwidGVzdGVyIiwidGVzdCIsIm1hdGNoIiwiRGlzY29yZE1vZHVsZXMiLCJMYXllclN0YWNrIiwicG9wTGF5ZXIiLCJJbnZpdGVBY3Rpb25zIiwiYWNjZXB0SW52aXRlQW5kVHJhbnNpdGlvblRvSW52aXRlQ2hhbm5lbCIsImZvb3RlciIsImxpbmtzIiwic29tZSIsImwiLCJsaW5rQ29tcG9uZW50cyIsIm1hcCIsImZpbHRlciIsImMiLCJjb21wIiwiaSIsImxlbmd0aCIsImFkZG9uU2V0dGluZ3MiLCJtYWtlQnV0dG9uIiwiY2hpbGRyZW4iLCJhY3Rpb24iLCJyZW5kZXIiLCJkZXNjcmlwdGlvbiIsImVkaXRBZGRvbiIsImRlbGV0ZUFkZG9uIiwic2hvd1JlbG9hZEljb24iLCJvcmlnaW5hbFJlbmRlciIsInByb3RvdHlwZSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsInNldCIsImdldCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBLE1BQU1BLE9BQU8sR0FBR0Msc0RBQWMsQ0FBQ0MsZ0JBQWYsQ0FBZ0MsU0FBaEMsQ0FBaEI7QUFFZSxNQUFNQyxTQUFOLFNBQXdCQyw2Q0FBSyxDQUFDQyxTQUE5QixDQUF3QztBQUVuREMsYUFBVyxDQUFDQyxLQUFELEVBQVE7QUFDZixVQUFNQSxLQUFOO0FBQ0EsU0FBS0MsS0FBTCxHQUFhO0FBQ1RDLGtCQUFZLEVBQUU7QUFETCxLQUFiO0FBSUEs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UCxDQUFzQnpILFNBQVMsQ0FBQ3VILFNBQWhDLEVBQTJDLFFBQTNDLEVBQXFEO0FBQ2pERyxZQUFVLEVBQUUsS0FEcUM7QUFFakRDLGNBQVksRUFBRSxLQUZtQztBQUdqREMsS0FBRyxFQUFFLFlBQVc7QUFBQ3BELGtEQUFNLENBQUNHLElBQVAsQ0FBWSxXQUFaLEVBQXlCLHFHQUF6QjtBQUFpSSxHQUhqRztBQUlqRGtELEtBQUcsRUFBRSxNQUFNUDtBQUpzQyxDQUFyRCIsImZpbGUiOiIuL3NyYy91aS9zZXR0aW5ncy9hZGRvbmNhcmQuanN4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtSZWFjdCwgTG9nZ2VyLCBTdHJpbmdzLCBXZWJwYWNrTW9kdWxlcywgRE9NLCBEaXNjb3JkTW9kdWxlc30gZnJvbSBcIm1vZHVsZXNcIjtcclxuaW1wb3J0IENsb3NlQnV0dG9uIGZyb20gXCIuLi9pY29ucy9jbG9zZVwiO1xyXG5pbXBvcnQgUmVsb2FkSWNvbiBmcm9tIFwiLi4vaWNvbnMvcmVsb2FkXCI7XHJcbmltcG9ydCBFZGl0SWNvbiBmcm9tIFwiLi4vaWNvbnMvZWRpdFwiO1xyXG5pbXBvcnQgRGVsZXRlSWNvbiBmcm9tIFwiLi4vaWNvbnMvZGVsZXRlXCI7XHJcbmltcG9ydCBTd2l0Y2ggZnJvbSBcIi4vY29tcG9uZW50cy9zd2l0Y2hcIjtcclxuaW1wb3J0IEVycm9yQm91bmRhcnkgZnJvbSAgXCIuLi9lcnJvcmJvdW5kYXJ5XCI7XHJcblxyXG5jb25zdCBUb29sdGlwID0gV2VicGFja01vZHVsZXMuZ2V0QnlEaXNwbGF5TmFtZShcIlRvb2x0aXBcIik7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBZGRvbkNhcmQgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByb3BzKSB7XHJcbiAgICAgICAgc3VwZXIocHJvcHMpO1xyXG4gICAgICAgIHRoaXMuc3RhdGUgPSB7XHJcbiAgICAgICAgICAgIHNldHRpbmdzT3BlbjogZmFsc2VcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB0aGlzLnNldHRpbmdzUGFuZWwgPSBcIlwiO1xyXG4gICAgICAgIHRoaXMucGFuZWxSZWYgPSBSZWFjdC5jcmVhdGVSZWYoKTtcclxuXHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IHRoaXMub25DaGFuZ2UuYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLnJlbG9hZCA9IHRoaXMucmVsb2FkLmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy5zaG93U2V0dGluZ3MgPSB0aGlzLnNob3dTZXR0aW5ncy5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMuY2xvc2VTZXR0aW5ncyA9IHRoaXMuY2xvc2VTZXR0aW5ncy5iaW5kKHRoaXMpO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbG9hZCgpIHtcclxuICAgICAgICBpZiAoIXRoaXMucHJvcHMucmVsb2FkKSByZXR1cm47XHJcbiAgICAgICAgdGhpcy5wcm9wcy5hZGRvbiA9IHRoaXMucHJvcHMucmVsb2FkKHRoaXMucHJvcHMuYWRkb24uaWQpO1xyXG4gICAgICAgIHRoaXMuZm9yY2VVcGRhdGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBjb21wb25lbnREaWRVcGRhdGUoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnN0YXRlLnNldHRpbmdzT3BlbikgcmV0dXJuO1xyXG4gICAgICAgIGlmICh0aGlzLnNldHRpbmdzUGFuZWwgaW5zdGFuY2VvZiBOb2RlKSB0aGlzLnBhbmVsUmVmLmN1cnJlbnQuYXBwZW5kQ2hpbGQodGhpcy5zZXR0aW5nc1BhbmVsKTtcclxuXHJcbiAgICAgICAgc2V0SW1tZWRpYXRlKCgpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgaXNIaWRkZW4gPSAoY29udGFpbmVyLCBlbGVtZW50KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjVG9wID0gY29udGFpbmVyLnNjcm9sbFRvcDtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNCb3R0b20gPSBjVG9wICsgY29udGFpbmVyLmNsaWVudEhlaWdodDtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGVUb3AgPSBlbGVtZW50Lm9mZnNldFRvcDtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGVCb3R0b20gPSBlVG9wICsgZWxlbWVudC5jbGllbnRIZWlnaHQ7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gIChlVG9wIDwgY1RvcCB8fCBlQm90dG9tID4gY0JvdHRvbSk7XHJcbiAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICBjb25zdCB0aGlzTm9kZSA9IHRoaXMucGFuZWxSZWYuY3VycmVudDtcclxuICAgICAgICAgICAgY29uc3QgY29udGFpbmVyID0gdGhpc05vZGUuY2xvc2VzdChcIi5zY3JvbGxlckJhc2UtMjg5SmloXCIpO1xyXG4gICAgICAgICAgICBpZiAoIWNvbnRhaW5lciB8fCAhaXNIaWRkZW4oY29udGFpbmVyLCB0aGlzTm9kZSkpIHJldHVybjtcclxuICAgICAgICAgICAgY29uc3QgdGhpc05vZGVPZmZzZXQgPSBET00ub2Zmc2V0KHRoaXNOb2RlKTtcclxuICAgICAgICAgICAgY29uc3QgY29udGFpbmVyT2Zmc2V0ID0gRE9NLm9mZnNldChjb250YWluZXIpO1xyXG4gICAgICAgICAgICBjb25zdCBvcmlnaW5hbCA9IGNvbnRhaW5lci5zY3JvbGxUb3A7XHJcbiAgICAgICAgICAgIGNvbnN0IGVuZFBvaW50ID0gdGhpc05vZGVPZmZzZXQudG9wIC0gY29udGFpbmVyT2Zmc2V0LnRvcCArIGNvbnRhaW5lci5zY3JvbGxUb3AgLSAzMDtcclxuICAgICAgICAgICAgRE9NLmFuaW1hdGUoe1xyXG4gICAgICAgICAgICAgICAgZHVyYXRpb246IDMwMCxcclxuICAgICAgICAgICAgICAgIHVwZGF0ZTogZnVuY3Rpb24ocHJvZ3Jlc3MpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZW5kUG9pbnQgPiBvcmlnaW5hbCkgY29udGFpbmVyLnNjcm9sbFRvcCA9IG9yaWdpbmFsICsgKHByb2dyZXNzICogKGVuZFBvaW50IC0gb3JpZ2luYWwpKTtcclxuICAgICAgICAgICAgICAgICAgICBlbHNlIGNvbnRhaW5lci5zY3JvbGxUb3AgPSBvcmlnaW5hbCAtIChwcm9ncmVzcyAqIChvcmlnaW5hbCAtIGVuZFBvaW50KSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFN0cmluZyh2YWx1ZSkge3JldHVybiB0eXBlb2YgdmFsdWUgPT0gXCJzdHJpbmdcIiA/IHZhbHVlIDogdmFsdWUudG9TdHJpbmcoKTt9XHJcblxyXG4gICAgb25DaGFuZ2UoKSB7XHJcbiAgICAgICAgdGhpcy5wcm9wcy5vbkNoYW5nZSAmJiB0aGlzLnByb3BzLm9uQ2hhbmdlKHRoaXMucHJvcHMuYWRkb24uaWQpO1xyXG4gICAgICAgIHRoaXMucHJvcHMuZW5hYmxlZCA9ICF0aGlzLnByb3BzLmVuYWJsZWQ7XHJcbiAgICAgICAgdGhpcy5mb3JjZVVwZGF0ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHNob3dTZXR0aW5ncygpIHtcclxuICAgICAgICBpZiAoIXRoaXMucHJvcHMuaGFzU2V0dGluZ3MpIHJldHVybjtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtzZXR0aW5nc09wZW46IHRydWV9KTtcclxuICAgIH1cclxuXHJcbiAgICBjbG9zZVNldHRpbmdzKCkge1xyXG4gICAgICAgIGlmICh0aGlzLnNldHRpbmdzUGFuZWwgaW5zdGFuY2VvZiBOb2RlKSB0aGlzLnBhbmVsUmVmLmN1cnJlbnQuaW5uZXJIVE1MID0gXCJcIjtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtzZXR0aW5nc09wZW46IGZhbHNlfSk7XHJcbiAgICB9XHJcblxyXG4gICAgYnVpbGRUaXRsZShuYW1lLCB2ZXJzaW9uLCBhdXRob3IpIHtcclxuICAgICAgICBjb25zdCB0aXRsZSA9IFN0cmluZ3MuQWRkb25zLnRpdGxlLnNwbGl0KC8oe3tbQS1aYS16XSt9fSkvKTtcclxuICAgICAgICBjb25zdCBuYW1lSW5kZXggPSB0aXRsZS5maW5kSW5kZXgocyA9PiBzID09IFwie3tuYW1lfX1cIik7XHJcbiAgICAgICAgaWYgKG5hbWVJbmRleCkgdGl0bGVbbmFtZUluZGV4XSA9IFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIHtjbGFzc05hbWU6IFwiYmQtbmFtZVwifSwgbmFtZSk7XHJcbiAgICAgICAgY29uc3QgdmVyc2lvbkluZGV4ID0gdGl0bGUuZmluZEluZGV4KHMgPT4gcyA9PSBcInt7dmVyc2lvbn19XCIpO1xyXG4gICAgICAgIGlmIChuYW1lSW5kZXgpIHRpdGxlW3ZlcnNpb25JbmRleF0gPSBSZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7Y2xhc3NOYW1lOiBcImJkLXZlcnNpb25cIn0sIHZlcnNpb24pO1xyXG4gICAgICAgIGNvbnN0IGF1dGhvckluZGV4ID0gdGl0bGUuZmluZEluZGV4KHMgPT4gcyA9PSBcInt7YXV0aG9yfX1cIik7XHJcbiAgICAgICAgaWYgKG5hbWVJbmRleCkgdGl0bGVbYXV0aG9ySW5kZXhdID0gUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwge2NsYXNzTmFtZTogXCJiZC1hdXRob3JcIn0sIGF1dGhvcik7XHJcbiAgICAgICAgcmV0dXJuIHRpdGxlLmZsYXQoKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgc2V0dGluZ3NDb21wb25lbnQoKSB7XHJcbiAgICAgICAgY29uc3QgYWRkb24gPSB0aGlzLnByb3BzLmFkZG9uO1xyXG4gICAgICAgIGNvbnN0IG5hbWUgPSB0aGlzLmdldFN0cmluZyhhZGRvbi5uYW1lKTtcclxuICAgICAgICB0cnkgeyB0aGlzLnNldHRpbmdzUGFuZWwgPSB0aGlzLnByb3BzLmdldFNldHRpbmdzUGFuZWwoKTsgfVxyXG4gICAgICAgIGNhdGNoIChlcnIpIHsgTG9nZ2VyLnN0YWNrdHJhY2UoXCJBZGRvbiBTZXR0aW5nc1wiLCBcIlVuYWJsZSB0byBnZXQgc2V0dGluZ3MgcGFuZWwgZm9yIFwiICsgbmFtZSArIFwiLlwiLCBlcnIpOyB9XHJcblxyXG4gICAgICAgIGNvbnN0IHByb3BzID0ge2lkOiBgJHtuYW1lfS1zZXR0aW5nc2AsIGNsYXNzTmFtZTogXCJhZGRvbi1zZXR0aW5nc1wiLCByZWY6IHRoaXMucGFuZWxSZWZ9O1xyXG4gICAgICAgIGlmICh0eXBlb2YodGhpcy5zZXR0aW5nc1BhbmVsKSA9PSBcInN0cmluZ1wiKSB7XHJcbiAgICAgICAgICAgIExvZ2dlci53YXJuKFwiQWRkb24gU2V0dGluZ3NcIiwgXCJVc2luZyBhIERPTVN0cmluZyBpcyBvZmZpY2lhbGx5IGRlcHJlY2F0ZWQuXCIpO1xyXG4gICAgICAgICAgICBwcm9wcy5kYW5nZXJvdXNseVNldElubmVySFRNTCA9IHRoaXMuc2V0dGluZ3NQYW5lbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBjaGlsZCA9IG51bGw7XHJcbiAgICAgICAgaWYgKHR5cGVvZih0aGlzLnNldHRpbmdzUGFuZWwpID09PSBcImZ1bmN0aW9uXCIpIGNoaWxkID0gPHRoaXMuc2V0dGluZ3NQYW5lbCAvPjtcclxuICAgICAgICBpZiAodGhpcy5zZXR0aW5nc1BhbmVsLiQkdHlwZW9mICYmIHRoaXMuc2V0dGluZ3NQYW5lbC4kJHR5cGVvZiA9PT0gU3ltYm9sLmZvcihcInJlYWN0LmVsZW1lbnRcIikpIGNoaWxkID0gdGhpcy5zZXR0aW5nc1BhbmVsO1xyXG5cclxuICAgICAgICByZXR1cm4gPGRpdiBjbGFzc05hbWU9XCJiZC1hZGRvbi1jYXJkIHNldHRpbmdzLW9wZW4gYmQtc3dpdGNoLWl0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJkLWNsb3NlXCIgb25DbGljaz17dGhpcy5jbG9zZVNldHRpbmdzfT48Q2xvc2VCdXR0b24gLz48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHsuLi5wcm9wc30+PEVycm9yQm91bmRhcnk+e2NoaWxkfTwvRXJyb3JCb3VuZGFyeT48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PjtcclxuICAgIH1cclxuXHJcbiAgICBidWlsZExpbmsod2hpY2gpIHtcclxuICAgICAgICBjb25zdCB1cmwgPSB0aGlzLnByb3BzLmFkZG9uW3doaWNoXTtcclxuICAgICAgICBpZiAoIXVybCkgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgY29uc3QgbGluayA9IDxhIGNsYXNzTmFtZT1cImJkLWxpbmsgYmQtbGluay13ZWJzaXRlXCIgaHJlZj17dXJsfSB0YXJnZXQ9XCJfYmxhbmtcIiByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCI+e1N0cmluZ3MuQWRkb25zW3doaWNoXX08L2E+O1xyXG4gICAgICAgIGlmICh3aGljaCA9PSBcImludml0ZVwiKSB7XHJcbiAgICAgICAgICAgIGxpbmsucHJvcHMub25DbGljayA9IGZ1bmN0aW9uKGV2ZW50KSB7XHJcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgICAgICBsZXQgY29kZSA9IHVybDtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHRlc3RlciA9IC9cXC5nZ1xcLyguKikkLztcclxuICAgICAgICAgICAgICAgIGlmICh0ZXN0ZXIudGVzdChjb2RlKSkgY29kZSA9IGNvZGUubWF0Y2godGVzdGVyKVsxXTtcclxuICAgICAgICAgICAgICAgIERpc2NvcmRNb2R1bGVzLkxheWVyU3RhY2sucG9wTGF5ZXIoKTtcclxuICAgICAgICAgICAgICAgIERpc2NvcmRNb2R1bGVzLkludml0ZUFjdGlvbnMuYWNjZXB0SW52aXRlQW5kVHJhbnNpdGlvblRvSW52aXRlQ2hhbm5lbChjb2RlKTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGxpbms7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGZvb3RlcigpIHtcclxuICAgICAgICBjb25zdCBsaW5rcyA9IFtcIndlYnNpdGVcIiwgXCJzb3VyY2VcIiwgXCJpbnZpdGVcIiwgXCJkb25hdGVcIiwgXCJwYXRyZW9uXCJdO1xyXG4gICAgICAgIGlmICghbGlua3Muc29tZShsID0+IHRoaXMucHJvcHMuYWRkb25bbF0pICYmICF0aGlzLnByb3BzLmhhc1NldHRpbmdzKSByZXR1cm4gbnVsbDtcclxuICAgICAgICBjb25zdCBsaW5rQ29tcG9uZW50cyA9IGxpbmtzLm1hcCh0aGlzLmJ1aWxkTGluay5iaW5kKHRoaXMpKS5maWx0ZXIoYyA9PiBjKTtcclxuICAgICAgICByZXR1cm4gPGRpdiBjbGFzc05hbWU9XCJiZC1mb290ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJiZC1saW5rc1wiPntsaW5rQ29tcG9uZW50cy5tYXAoKGNvbXAsIGkpID0+IGkgPCBsaW5rQ29tcG9uZW50cy5sZW5ndGggLSAxID8gW2NvbXAsIFwiIHwgXCJdIDogY29tcCkuZmxhdCgpfTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICB7dGhpcy5wcm9wcy5oYXNTZXR0aW5ncyAmJiA8YnV0dG9uIG9uQ2xpY2s9e3RoaXMuc2hvd1NldHRpbmdzfSBjbGFzc05hbWU9XCJiZC1idXR0b24gYmQtYnV0dG9uLWFkZG9uLXNldHRpbmdzXCIgZGlzYWJsZWQ9eyF0aGlzLnByb3BzLmVuYWJsZWR9PntTdHJpbmdzLkFkZG9ucy5hZGRvblNldHRpbmdzfTwvYnV0dG9uPn1cclxuICAgICAgICAgICAgICAgIDwvZGl2PjtcclxuICAgIH1cclxuXHJcbiAgICBtYWtlQnV0dG9uKHRpdGxlLCBjaGlsZHJlbiwgYWN0aW9uKSB7XHJcbiAgICAgICAgcmV0dXJuICA8VG9vbHRpcCBjb2xvcj1cImJsYWNrXCIgcG9zaXRpb249XCJ0b3BcIiB0ZXh0PXt0aXRsZX0+XHJcbiAgICAgICAgICAgICAgICAgICAgeyhwcm9wcykgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPGRpdiB7Li4ucHJvcHN9IGNsYXNzTmFtZT1cImJkLWFkZG9uLWJ1dHRvblwiIG9uQ2xpY2s9e2FjdGlvbn0+e2NoaWxkcmVufTwvZGl2PjtcclxuICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgPC9Ub29sdGlwPjtcclxuICAgIH1cclxuXHJcbiAgICByZW5kZXIoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc3RhdGUuc2V0dGluZ3NPcGVuKSByZXR1cm4gdGhpcy5zZXR0aW5nc0NvbXBvbmVudDtcclxuXHJcbiAgICAgICAgY29uc3QgYWRkb24gPSB0aGlzLnByb3BzLmFkZG9uO1xyXG4gICAgICAgIGNvbnN0IG5hbWUgPSB0aGlzLmdldFN0cmluZyhhZGRvbi5uYW1lKTtcclxuICAgICAgICBjb25zdCBhdXRob3IgPSB0aGlzLmdldFN0cmluZyhhZGRvbi5hdXRob3IpO1xyXG4gICAgICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gdGhpcy5nZXRTdHJpbmcoYWRkb24uZGVzY3JpcHRpb24pO1xyXG4gICAgICAgIGNvbnN0IHZlcnNpb24gPSB0aGlzLmdldFN0cmluZyhhZGRvbi52ZXJzaW9uKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIDxkaXYgaWQ9e2Ake2FkZG9uLmlkfS1jYXJkYH0gY2xhc3NOYW1lPVwiYmQtYWRkb24tY2FyZCBzZXR0aW5ncy1jbG9zZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJkLWFkZG9uLWhlYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiYmQtdGl0bGVcIj57dGhpcy5idWlsZFRpdGxlKG5hbWUsIHZlcnNpb24sIGF1dGhvcil9PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZC1jb250cm9sc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt0aGlzLnByb3BzLmVkaXRBZGRvbiAmJiB0aGlzLm1ha2VCdXR0b24oU3RyaW5ncy5BZGRvbnMuZWRpdEFkZG9uLCA8RWRpdEljb24gLz4sIHRoaXMucHJvcHMuZWRpdEFkZG9uKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dGhpcy5wcm9wcy5kZWxldGVBZGRvbiAmJiB0aGlzLm1ha2VCdXR0b24oU3RyaW5ncy5BZGRvbnMuZGVsZXRlQWRkb24sIDxEZWxldGVJY29uIC8+LCB0aGlzLnByb3BzLmRlbGV0ZUFkZG9uKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dGhpcy5wcm9wcy5zaG93UmVsb2FkSWNvbiAmJiB0aGlzLm1ha2VCdXR0b24oU3RyaW5ncy5BZGRvbnMucmVsb2FkLCA8UmVsb2FkSWNvbiBjbGFzc05hbWU9XCJiZC1yZWxvYWQgYmQtcmVsb2FkLWNhcmRcIiAvPiwgdGhpcy5yZWxvYWQpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTd2l0Y2ggY2hlY2tlZD17dGhpcy5wcm9wcy5lbmFibGVkfSBvbkNoYW5nZT17dGhpcy5vbkNoYW5nZX0gLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmQtZGVzY3JpcHRpb24td3JhcCBzY3JvbGxlci13cmFwIGZhZGVcIj48ZGl2IGNsYXNzTmFtZT1cImJkLWRlc2NyaXB0aW9uIHNjcm9sbGVyXCI+e2Rlc2NyaXB0aW9ufTwvZGl2PjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIHt0aGlzLmZvb3Rlcn1cclxuICAgICAgICAgICAgICAgIDwvZGl2PjtcclxuICAgIH1cclxufVxyXG5cclxuY29uc3Qgb3JpZ2luYWxSZW5kZXIgPSBBZGRvbkNhcmQucHJvdG90eXBlLnJlbmRlcjtcclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KEFkZG9uQ2FyZC5wcm90b3R5cGUsIFwicmVuZGVyXCIsIHtcclxuICAgIGVudW1lcmFibGU6IGZhbHNlLFxyXG4gICAgY29uZmlndXJhYmxlOiBmYWxzZSxcclxuICAgIHNldDogZnVuY3Rpb24oKSB7TG9nZ2VyLndhcm4oXCJBZGRvbkNhcmRcIiwgXCJBZGRvbiBwb2xpY3kgZm9yIHBsdWdpbnMgIzUgaHR0cHM6Ly9naXRodWIuY29tL3JhdWVuemkvQmV0dGVyRGlzY29yZEFwcC93aWtpL0FkZG9uLVBvbGljaWVzI3BsdWdpbnNcIik7fSxcclxuICAgIGdldDogKCkgPT4gb3JpZ2luYWxSZW5kZXJcclxufSk7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/settings/addoncard.jsx\n"); /***/ }), @@ -1031,7 +1030,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return AddonList; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _modals__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../modals */ \"./src/ui/modals.js\");\n/* harmony import */ var _title__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./title */ \"./src/ui/settings/title.jsx\");\n/* harmony import */ var _icons_reload__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../icons/reload */ \"./src/ui/icons/reload.jsx\");\n/* harmony import */ var _addoncard__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./addoncard */ \"./src/ui/settings/addoncard.jsx\");\n/* harmony import */ var _components_dropdown__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./components/dropdown */ \"./src/ui/settings/components/dropdown.jsx\");\n/* harmony import */ var _components_search__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./components/search */ \"./src/ui/settings/components/search.jsx\");\n/* harmony import */ var _errorboundary__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../errorboundary */ \"./src/ui/errorboundary.jsx\");\n\n\n\n\n\n\n\n\nclass AddonList extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n this.state = {\n sort: \"name\",\n ascending: true,\n query: \"\"\n };\n this.sort = this.sort.bind(this);\n this.reverse = this.reverse.bind(this);\n this.search = this.search.bind(this);\n this.update = this.update.bind(this);\n }\n\n componentDidMount() {\n modules__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].on(`${this.props.prefix}-loaded`, this.update);\n modules__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].on(`${this.props.prefix}-unloaded`, this.update);\n }\n\n componentWillUnmount() {\n modules__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].off(`${this.props.prefix}-loaded`, this.update);\n modules__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].off(`${this.props.prefix}-unloaded`, this.update);\n }\n\n update() {\n this.forceUpdate();\n }\n\n reload() {\n if (this.props.refreshList) this.props.refreshList();\n this.forceUpdate();\n }\n\n reverse(value) {\n this.setState({\n ascending: value\n });\n }\n\n sort(value) {\n this.setState({\n sort: value\n });\n }\n\n search(event) {\n this.setState({\n query: event.target.value.toLocaleLowerCase()\n });\n }\n\n get sortOptions() {\n return [{\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.name,\n value: \"name\"\n }, {\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.author,\n value: \"author\"\n }, {\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.version,\n value: \"version\"\n }, {\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.added,\n value: \"added\"\n }, {\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.modified,\n value: \"modified\"\n }];\n }\n\n get directions() {\n return [{\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Sorting.ascending,\n value: true\n }, {\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Sorting.descending,\n value: false\n }];\n }\n\n render() {\n const {\n title,\n folder,\n addonList,\n addonState,\n onChange,\n reload\n } = this.props;\n const showReloadIcon = !modules__WEBPACK_IMPORTED_MODULE_0__[\"Settings\"].get(\"settings\", \"addons\", \"autoReload\");\n const button = folder ? {\n title: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.openFolder.format({\n type: title\n }),\n onClick: () => {\n const shell = __webpack_require__(/*! electron */ \"electron\").shell;\n\n const open = shell.openItem || shell.openPath;\n open(folder);\n }\n } : null;\n const sortedAddons = addonList.sort((a, b) => {\n const first = a[this.state.sort];\n const second = b[this.state.sort];\n if (typeof first == \"string\") return first.toLocaleLowerCase().localeCompare(second.toLocaleLowerCase());\n if (first > second) return 1;\n if (second > first) return -1;\n return 0;\n });\n if (!this.state.ascending) sortedAddons.reverse();\n return [/*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_title__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n key: \"title\",\n text: title,\n button: button,\n otherChildren: showReloadIcon && /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_reload__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n className: \"bd-reload\",\n onClick: this.reload.bind(this)\n })\n }), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-controls bd-addon-controls\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_components_search__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n onChange: this.search,\n placeholder: `${modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.search.format({\n type: this.props.title\n })}...`\n }), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-addon-dropdowns\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-select-wrapper\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"label\", {\n className: \"bd-label\"\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Sorting.sortBy, \":\"), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_components_dropdown__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n options: this.sortOptions,\n onChange: this.sort,\n style: \"transparent\"\n })), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-select-wrapper\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"label\", {\n className: \"bd-label\"\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Sorting.order, \":\"), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_components_dropdown__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n options: this.directions,\n onChange: this.reverse,\n style: \"transparent\"\n })))), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n key: \"addonList\",\n className: \"bd-addon-list\"\n }, sortedAddons.map(addon => {\n if (this.state.query) {\n let matches = addon.name.toLocaleLowerCase().includes(this.state.query);\n matches = matches || addon.author.toLocaleLowerCase().includes(this.state.query);\n matches = matches || addon.description.toLocaleLowerCase().includes(this.state.query);\n if (!matches) return null;\n }\n\n const hasSettings = addon.type && typeof addon.plugin.getSettingsPanel === \"function\";\n const getSettings = hasSettings && addon.plugin.getSettingsPanel.bind(addon.plugin);\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_errorboundary__WEBPACK_IMPORTED_MODULE_7__[\"default\"], null, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_addoncard__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n editAddon: this.editAddon.bind(this, addon.id),\n deleteAddon: this.deleteAddon.bind(this, addon.id),\n showReloadIcon: showReloadIcon,\n key: addon.id,\n enabled: addonState[addon.id],\n addon: addon,\n onChange: onChange,\n reload: reload,\n hasSettings: hasSettings,\n getSettingsPanel: getSettings\n }));\n }))];\n }\n\n editAddon(id) {\n if (this.props.editAddon) this.props.editAddon(id);\n }\n\n async deleteAddon(id) {\n const addon = this.props.addonList.find(a => a.id == id);\n const shouldDelete = await this.confirmDelete(addon);\n if (!shouldDelete) return;\n if (this.props.deleteAddon) this.props.deleteAddon(addon);\n }\n\n confirmDelete(addon) {\n return new Promise(resolve => {\n _modals__WEBPACK_IMPORTED_MODULE_1__[\"default\"].showConfirmationModal(modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Modals.confirmAction, modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.confirmDelete.format({\n name: addon.name\n }), {\n danger: true,\n confirmText: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.deleteAddon,\n onConfirm: () => {\n resolve(true);\n },\n onCancel: () => {\n resolve(false);\n }\n });\n });\n }\n\n}\nconst originalRender = AddonList.prototype.render;\nObject.defineProperty(AddonList.prototype, \"render\", {\n enumerable: false,\n configurable: false,\n set: function () {\n modules__WEBPACK_IMPORTED_MODULE_0__[\"Logger\"].warn(\"AddonList\", \"Addon policy for plugins #5 https://github.com/rauenzi/BetterDiscordApp/wiki/Addon-Policies#plugins\");\n },\n get: () => originalRender\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL3NldHRpbmdzL2FkZG9ubGlzdC5qc3g/NjRkMiJdLCJuYW1lcyI6WyJBZGRvbkxpc3QiLCJSZWFjdCIsIkNvbXBvbmVudCIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJzdGF0ZSIsInNvcnQiLCJhc2NlbmRpbmciLCJxdWVyeSIsImJpbmQiLCJyZXZlcnNlIiwic2VhcmNoIiwidXBkYXRlIiwiY29tcG9uZW50RGlkTW91bnQiLCJFdmVudHMiLCJvbiIsInByZWZpeCIsImNvbXBvbmVudFdpbGxVbm1vdW50Iiwib2ZmIiwiZm9yY2VVcGRhdGUiLCJyZWxvYWQiLCJyZWZyZXNoTGlzdCIsInZhbHVlIiwic2V0U3RhdGUiLCJldmVudCIsInRhcmdldCIsInRvTG9jYWxlTG93ZXJDYXNlIiwic29ydE9wdGlvbnMiLCJsYWJlbCIsIlN0cmluZ3MiLCJBZGRvbnMiLCJuYW1lIiwiYXV0aG9yIiwidmVyc2lvbiIsImFkZGVkIiwibW9kaWZpZWQiLCJkaXJlY3Rpb25zIiwiU29ydGluZyIsImRlc2NlbmRpbmciLCJyZW5kZXIiLCJ0aXRsZSIsImZvbGRlciIsImFkZG9uTGlzdCIsImFkZG9uU3RhdGUiLCJvbkNoYW5nZSIsInNob3dSZWxvYWRJY29uIiwiU2V0dGluZ3MiLCJnZXQiLCJidXR0b24iLCJvcGVuRm9sZGVyIiwiZm9ybWF0IiwidHlwZSIsIm9uQ2xpY2siLCJzaGVsbCIsInJlcXVpcmUiLCJvcGVuIiwib3Blbkl0ZW0iLCJvcGVuUGF0aCIsInNvcnRlZEFkZG9ucyIsImEiLCJiIiwiZmlyc3QiLCJzZWNvbmQiLCJsb2NhbGVDb21wYXJlIiwic29ydEJ5Iiwib3JkZXIiLCJtYXAiLCJhZGRvbiIsIm1hdGNoZXMiLCJpbmNsdWRlcyIsImRlc2NyaXB0aW9uIiwiaGFzU2V0dGluZ3MiLCJwbHVnaW4iLCJnZXRTZXR0aW5nc1BhbmVsIiwiZ2V0U2V0dGluZ3MiLCJlZGl0QWRkb24iLCJpZCIsImRlbGV0ZUFkZG9uIiwiZmluZCIsInNob3VsZERlbGV0ZSIsImNvbmZpcm1EZWxldGUiLCJQcm9taXNlIiwicmVzb2x2ZSIsIk1vZGFscyIsInNob3dDb25maXJtYXRpb25Nb2RhbCIsImNvbmZpcm1BY3Rpb24iLCJkYW5nZXIiLCJjb25maXJtVGV4dCIsIm9uQ29uZmlybSIsIm9uQ2FuY2VsIiwib3JpZ2luYWxSZW5kZXIiLCJwcm90b3R5cGUiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImVudW1lcmFibGUiLCJjb25maWd1cmFibGUiLCJzZXQiLCJMb2dnZXIiLCJ3YXJuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFZSxNQUFNQSxTQUFOLFNBQXdCQyw2Q0FBSyxDQUFDQyxTQUE5QixDQUF3QztBQUVuREMsYUFBVyxDQUFDQyxLQUFELEVBQVE7QUFDZixVQUFNQSxLQUFOO0FBQ0EsU0FBS0MsS0FBTCxHQUFhO0FBQUNDLFVBQUksRUFBRSxNQUFQO0FBQWVDLGVBQVMsRUFBRSxJQUExQjtBQUFnQ0MsV0FBSyxFQUFFO0FBQXZDLEtBQWI7QUFDQSxTQUFLRixJQUFMLEdBQVksS0FBS0EsSUFBTCxDQUFVRyxJQUFWLENBQWUsSUFBZixDQUFaO0FBQ0EsU0FBS0MsT0FBTCxHQUFlLEtBQUtBLE9BQUwsQ0FBYUQsSUFBYixDQUFrQixJQUFsQixDQUFmO0FBQ0EsU0FBS0UsTUFBTCxHQUFjLEtBQUtBLE1BQUwsQ0FBWUYsSUFBWixDQUFpQixJQUFqQixDQUFkO0FBQ0EsU0FBS0csTUFBTCxHQUFjLEtBQUtBLE1BQUwsQ0FBWUgsSUFBWixDQUFpQixJQUFqQixDQUFkO0FBQ0g7O0FBRURJLG1CQUFpQixHQUFHO0FBQ2hCQyxrREFBTSxDQUFDQyxFQUFQLENBQVcsR0FBRSxLQUFLWCxLQUFMLENBQVdZLE1BQU8sU0FBL0IsRUFBeUMsS0FBS0osTUFBOUM7QUFDQUUsa0RBQU0sQ0FB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Q0FBQzJGLFNBQWhDLEVBQTJDLFFBQTNDLEVBQXFEO0FBQ2pERyxZQUFVLEVBQUUsS0FEcUM7QUFFakRDLGNBQVksRUFBRSxLQUZtQztBQUdqREMsS0FBRyxFQUFFLFlBQVc7QUFBQ0Msa0RBQU0sQ0FBQ0MsSUFBUCxDQUFZLFdBQVosRUFBeUIscUdBQXpCO0FBQWlJLEdBSGpHO0FBSWpEbkQsS0FBRyxFQUFFLE1BQU0yQztBQUpzQyxDQUFyRCIsImZpbGUiOiIuL3NyYy91aS9zZXR0aW5ncy9hZGRvbmxpc3QuanN4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtSZWFjdCwgU2V0dGluZ3MsIFN0cmluZ3MsIEV2ZW50cywgTG9nZ2VyfSBmcm9tIFwibW9kdWxlc1wiO1xyXG5cclxuaW1wb3J0IE1vZGFscyBmcm9tIFwiLi4vbW9kYWxzXCI7XHJcbmltcG9ydCBTZXR0aW5nc1RpdGxlIGZyb20gXCIuL3RpdGxlXCI7XHJcbmltcG9ydCBSZWxvYWRJY29uIGZyb20gXCIuLi9pY29ucy9yZWxvYWRcIjtcclxuaW1wb3J0IEFkZG9uQ2FyZCBmcm9tIFwiLi9hZGRvbmNhcmRcIjtcclxuaW1wb3J0IERyb3Bkb3duIGZyb20gXCIuL2NvbXBvbmVudHMvZHJvcGRvd25cIjtcclxuaW1wb3J0IFNlYXJjaCBmcm9tIFwiLi9jb21wb25lbnRzL3NlYXJjaFwiO1xyXG5pbXBvcnQgRXJyb3JCb3VuZGFyeSBmcm9tICBcIi4uL2Vycm9yYm91bmRhcnlcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEFkZG9uTGlzdCBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcclxuICAgICAgICBzdXBlcihwcm9wcyk7XHJcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHtzb3J0OiBcIm5hbWVcIiwgYXNjZW5kaW5nOiB0cnVlLCBxdWVyeTogXCJcIn07XHJcbiAgICAgICAgdGhpcy5zb3J0ID0gdGhpcy5zb3J0LmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy5yZXZlcnNlID0gdGhpcy5yZXZlcnNlLmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy5zZWFyY2ggPSB0aGlzLnNlYXJjaC5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlID0gdGhpcy51cGRhdGUuYmluZCh0aGlzKTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgY29tcG9uZW50RGlkTW91bnQoKSB7XHJcbiAgICAgICAgRXZlbnRzLm9uKGAke3RoaXMucHJvcHMucHJlZml4fS1sb2FkZWRgLCB0aGlzLnVwZGF0ZSk7XHJcbiAgICAgICAgRXZlbnRzLm9uKGAke3RoaXMucHJvcHMucHJlZml4fS11bmxvYWRlZGAsIHRoaXMudXBkYXRlKTtcclxuICAgIH1cclxuXHJcbiAgICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcclxuICAgICAgICBFdmVudHMub2ZmKGAke3RoaXMucHJvcHMucHJlZml4fS1sb2FkZWRgLCB0aGlzLnVwZGF0ZSk7XHJcbiAgICAgICAgRXZlbnRzLm9mZihgJHt0aGlzLnByb3BzLnByZWZpeH0tdW5sb2FkZWRgLCB0aGlzLnVwZGF0ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlKCkge1xyXG4gICAgICAgIHRoaXMuZm9yY2VVcGRhdGUoKTtcclxuICAgIH1cclxuXHJcbiAgICByZWxvYWQoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMucHJvcHMucmVmcmVzaExpc3QpIHRoaXMucHJvcHMucmVmcmVzaExpc3QoKTtcclxuICAgICAgICB0aGlzLmZvcmNlVXBkYXRlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV2ZXJzZSh2YWx1ZSkge1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe2FzY2VuZGluZzogdmFsdWV9KTtcclxuICAgIH1cclxuXHJcbiAgICBzb3J0KHZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7c29ydDogdmFsdWV9KTtcclxuICAgIH1cclxuXHJcbiAgICBzZWFyY2goZXZlbnQpIHtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtxdWVyeTogZXZlbnQudGFyZ2V0LnZhbHVlLnRvTG9jYWxlTG93ZXJDYXNlKCl9KTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgc29ydE9wdGlvbnMoKSB7XHJcbiAgICAgICAgcmV0dXJuIFtcclxuICAgICAgICAgICAge2xhYmVsOiBTdHJpbmdzLkFkZG9ucy5uYW1lLCB2YWx1ZTogXCJuYW1lXCJ9LFxyXG4gICAgICAgICAgICB7bGFiZWw6IFN0cmluZ3MuQWRkb25zLmF1dGhvciwgdmFsdWU6IFwiYXV0aG9yXCJ9LFxyXG4gICAgICAgICAgICB7bGFiZWw6IFN0cmluZ3MuQWRkb25zLnZlcnNpb24sIHZhbHVlOiBcInZlcnNpb25cIn0sXHJcbiAgICAgICAgICAgIHtsYWJlbDogU3RyaW5ncy5BZGRvbnMuYWRkZWQsIHZhbHVlOiBcImFkZGVkXCJ9LFxyXG4gICAgICAgICAgICB7bGFiZWw6IFN0cmluZ3MuQWRkb25zLm1vZGlmaWVkLCB2YWx1ZTogXCJtb2RpZmllZFwifVxyXG4gICAgICAgIF07XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGRpcmVjdGlvbnMoKSB7XHJcbiAgICAgICAgcmV0dXJuIFtcclxuICAgICAgICAgICAge2xhYmVsOiBTdHJpbmdzLlNvcnRpbmcuYXNjZW5kaW5nLCB2YWx1ZTogdHJ1ZX0sXHJcbiAgICAgICAgICAgIHtsYWJlbDogU3RyaW5ncy5Tb3J0aW5nLmRlc2NlbmRpbmcsIHZhbHVlOiBmYWxzZX1cclxuICAgICAgICBdO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICBjb25zdCB7dGl0bGUsIGZvbGRlciwgYWRkb25MaXN0LCBhZGRvblN0YXRlLCBvbkNoYW5nZSwgcmVsb2FkfSA9IHRoaXMucHJvcHM7XHJcbiAgICAgICAgY29uc3Qgc2hvd1JlbG9hZEljb24gPSAhU2V0dGluZ3MuZ2V0KFwic2V0dGluZ3NcIiwgXCJhZGRvbnNcIiwgXCJhdXRvUmVsb2FkXCIpO1xyXG4gICAgICAgIGNvbnN0IGJ1dHRvbiA9IGZvbGRlciA/IHt0aXRsZTogU3RyaW5ncy5BZGRvbnMub3BlbkZvbGRlci5mb3JtYXQoe3R5cGU6IHRpdGxlfSksIG9uQ2xpY2s6ICgpID0+IHtcclxuICAgICAgICAgICAgY29uc3Qgc2hlbGwgPSByZXF1aXJlKFwiZWxlY3Ryb25cIikuc2hlbGw7XHJcbiAgICAgICAgICAgIGNvbnN0IG9wZW4gPSBzaGVsbC5vcGVuSXRlbSB8fCBzaGVsbC5vcGVuUGF0aDtcclxuICAgICAgICAgICAgb3Blbihmb2xkZXIpO1xyXG4gICAgICAgIH19IDogbnVsbDtcclxuICAgICAgICBjb25zdCBzb3J0ZWRBZGRvbnMgPSBhZGRvbkxpc3Quc29ydCgoYSwgYikgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBmaXJzdCA9IGFbdGhpcy5zdGF0ZS5zb3J0XTtcclxuICAgICAgICAgICAgY29uc3Qgc2Vjb25kID0gYlt0aGlzLnN0YXRlLnNvcnRdO1xyXG4gICAgICAgICAgICBpZiAodHlwZW9mKGZpcnN0KSA9PSBcInN0cmluZ1wiKSByZXR1cm4gZmlyc3QudG9Mb2NhbGVMb3dlckNhc2UoKS5sb2NhbGVDb21wYXJlKHNlY29uZC50b0xvY2FsZUxvd2VyQ2FzZSgpKTtcclxuICAgICAgICAgICAgaWYgKGZpcnN0ID4gc2Vjb25kKSByZXR1cm4gMTtcclxuICAgICAgICAgICAgaWYgKHNlY29uZCA+IGZpcnN0KSByZXR1cm4gLTE7XHJcbiAgICAgICAgICAgIHJldHVybiAwO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmICghdGhpcy5zdGF0ZS5hc2NlbmRpbmcpIHNvcnRlZEFkZG9ucy5yZXZlcnNlKCk7XHJcbiAgICAgICAgcmV0dXJuIFtcclxuICAgICAgICAgICAgPFNldHRpbmdzVGl0bGUga2V5PVwidGl0bGVcIiB0ZXh0PXt0aXRsZX0gYnV0dG9uPXtidXR0b259IG90aGVyQ2hpbGRyZW49e3Nob3dSZWxvYWRJY29uICYmIDxSZWxvYWRJY29uIGNsYXNzTmFtZT1cImJkLXJlbG9hZFwiIG9uQ2xpY2s9e3RoaXMucmVsb2FkLmJpbmQodGhpcyl9IC8+fSAvPixcclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZC1jb250cm9scyBiZC1hZGRvbi1jb250cm9sc1wiPlxyXG4gICAgICAgICAgICAgICAgPFNlYXJjaCBvbkNoYW5nZT17dGhpcy5zZWFyY2h9IHBsYWNlaG9sZGVyPXtgJHtTdHJpbmdzLkFkZG9ucy5zZWFyY2guZm9ybWF0KHt0eXBlOiB0aGlzLnByb3BzLnRpdGxlfSl9Li4uYH0gLz5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmQtYWRkb24tZHJvcGRvd25zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZC1zZWxlY3Qtd3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3NOYW1lPVwiYmQtbGFiZWxcIj57U3RyaW5ncy5Tb3J0aW5nLnNvcnRCeX06PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPERyb3Bkb3duIG9wdGlvbnM9e3RoaXMuc29ydE9wdGlvbnN9IG9uQ2hhbmdlPXt0aGlzLnNvcnR9IHN0eWxlPVwidHJhbnNwYXJlbnRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmQtc2VsZWN0LXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzTmFtZT1cImJkLWxhYmVsXCI+e1N0cmluZ3MuU29ydGluZy5vcmRlcn06PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPERyb3Bkb3duIG9wdGlvbnM9e3RoaXMuZGlyZWN0aW9uc30gb25DaGFuZ2U9e3RoaXMucmV2ZXJzZX0gc3R5bGU9XCJ0cmFuc3BhcmVudFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+LFxyXG4gICAgICAgICAgICA8ZGl2IGtleT1cImFkZG9uTGlzdFwiIGNsYXNzTmFtZT17XCJiZC1hZGRvbi1saXN0XCJ9PlxyXG4gICAgICAgICAgICB7c29ydGVkQWRkb25zLm1hcChhZGRvbiA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zdGF0ZS5xdWVyeSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBtYXRjaGVzID0gYWRkb24ubmFtZS50b0xvY2FsZUxvd2VyQ2FzZSgpLmluY2x1ZGVzKHRoaXMuc3RhdGUucXVlcnkpO1xyXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoZXMgPSBtYXRjaGVzIHx8IGFkZG9uLmF1dGhvci50b0xvY2FsZUxvd2VyQ2FzZSgpLmluY2x1ZGVzKHRoaXMuc3RhdGUucXVlcnkpO1xyXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoZXMgPSBtYXRjaGVzIHx8IGFkZG9uLmRlc2NyaXB0aW9uLnRvTG9jYWxlTG93ZXJDYXNlKCkuaW5jbHVkZXModGhpcy5zdGF0ZS5xdWVyeSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFtYXRjaGVzKSByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNvbnN0IGhhc1NldHRpbmdzID0gYWRkb24udHlwZSAmJiB0eXBlb2YoYWRkb24ucGx1Z2luLmdldFNldHRpbmdzUGFuZWwpID09PSBcImZ1bmN0aW9uXCI7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBnZXRTZXR0aW5ncyA9IGhhc1NldHRpbmdzICYmIGFkZG9uLnBsdWdpbi5nZXRTZXR0aW5nc1BhbmVsLmJpbmQoYWRkb24ucGx1Z2luKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiA8RXJyb3JCb3VuZGFyeT48QWRkb25DYXJkIGVkaXRBZGRvbj17dGhpcy5lZGl0QWRkb24uYmluZCh0aGlzLCBhZGRvbi5pZCl9IGRlbGV0ZUFkZG9uPXt0aGlzLmRlbGV0ZUFkZG9uLmJpbmQodGhpcywgYWRkb24uaWQpfSBzaG93UmVsb2FkSWNvbj17c2hvd1JlbG9hZEljb259IGtleT17YWRkb24uaWR9IGVuYWJsZWQ9e2FkZG9uU3RhdGVbYWRkb24uaWRdfSBhZGRvbj17YWRkb259IG9uQ2hhbmdlPXtvbkNoYW5nZX0gcmVsb2FkPXtyZWxvYWR9IGhhc1NldHRpbmdzPXtoYXNTZXR0aW5nc30gZ2V0U2V0dGluZ3NQYW5lbD17Z2V0U2V0dGluZ3N9IC8+PC9FcnJvckJvdW5kYXJ5PjtcclxuICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIF07XHJcbiAgICB9XHJcblxyXG4gICAgZWRpdEFkZG9uKGlkKSB7XHJcbiAgICAgICAgaWYgKHRoaXMucHJvcHMuZWRpdEFkZG9uKSB0aGlzLnByb3BzLmVkaXRBZGRvbihpZCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZGVsZXRlQWRkb24oaWQpIHtcclxuICAgICAgICBjb25zdCBhZGRvbiA9IHRoaXMucHJvcHMuYWRkb25MaXN0LmZpbmQoYSA9PiBhLmlkID09IGlkKTtcclxuICAgICAgICBjb25zdCBzaG91bGREZWxldGUgPSBhd2FpdCB0aGlzLmNvbmZpcm1EZWxldGUoYWRkb24pO1xyXG4gICAgICAgIGlmICghc2hvdWxkRGVsZXRlKSByZXR1cm47XHJcbiAgICAgICAgaWYgKHRoaXMucHJvcHMuZGVsZXRlQWRkb24pIHRoaXMucHJvcHMuZGVsZXRlQWRkb24oYWRkb24pO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbmZpcm1EZWxldGUoYWRkb24pIHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XHJcbiAgICAgICAgICAgIE1vZGFscy5zaG93Q29uZmlybWF0aW9uTW9kYWwoU3RyaW5ncy5Nb2RhbHMuY29uZmlybUFjdGlvbiwgU3RyaW5ncy5BZGRvbnMuY29uZmlybURlbGV0ZS5mb3JtYXQoe25hbWU6IGFkZG9uLm5hbWV9KSwge1xyXG4gICAgICAgICAgICAgICAgZGFuZ2VyOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgY29uZmlybVRleHQ6IFN0cmluZ3MuQWRkb25zLmRlbGV0ZUFkZG9uLFxyXG4gICAgICAgICAgICAgICAgb25Db25maXJtOiAoKSA9PiB7cmVzb2x2ZSh0cnVlKTt9LFxyXG4gICAgICAgICAgICAgICAgb25DYW5jZWw6ICgpID0+IHtyZXNvbHZlKGZhbHNlKTt9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59XHJcblxyXG5jb25zdCBvcmlnaW5hbFJlbmRlciA9IEFkZG9uTGlzdC5wcm90b3R5cGUucmVuZGVyO1xyXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoQWRkb25MaXN0LnByb3RvdHlwZSwgXCJyZW5kZXJcIiwge1xyXG4gICAgZW51bWVyYWJsZTogZmFsc2UsXHJcbiAgICBjb25maWd1cmFibGU6IGZhbHNlLFxyXG4gICAgc2V0OiBmdW5jdGlvbigpIHtMb2dnZXIud2FybihcIkFkZG9uTGlzdFwiLCBcIkFkZG9uIHBvbGljeSBmb3IgcGx1Z2lucyAjNSBodHRwczovL2dpdGh1Yi5jb20vcmF1ZW56aS9CZXR0ZXJEaXNjb3JkQXBwL3dpa2kvQWRkb24tUG9saWNpZXMjcGx1Z2luc1wiKTt9LFxyXG4gICAgZ2V0OiAoKSA9PiBvcmlnaW5hbFJlbmRlclxyXG59KTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/ui/settings/addonlist.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return AddonList; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _modals__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../modals */ \"./src/ui/modals.js\");\n/* harmony import */ var _title__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./title */ \"./src/ui/settings/title.jsx\");\n/* harmony import */ var _icons_reload__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../icons/reload */ \"./src/ui/icons/reload.jsx\");\n/* harmony import */ var _addoncard__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./addoncard */ \"./src/ui/settings/addoncard.jsx\");\n/* harmony import */ var _components_dropdown__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./components/dropdown */ \"./src/ui/settings/components/dropdown.jsx\");\n/* harmony import */ var _components_search__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./components/search */ \"./src/ui/settings/components/search.jsx\");\n/* harmony import */ var _errorboundary__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../errorboundary */ \"./src/ui/errorboundary.jsx\");\n\n\n\n\n\n\n\n\nclass AddonList extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n this.state = {\n sort: \"name\",\n ascending: true,\n query: \"\"\n };\n this.sort = this.sort.bind(this);\n this.reverse = this.reverse.bind(this);\n this.search = this.search.bind(this);\n this.update = this.update.bind(this);\n }\n\n componentDidMount() {\n modules__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].on(`${this.props.prefix}-loaded`, this.update);\n modules__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].on(`${this.props.prefix}-unloaded`, this.update);\n }\n\n componentWillUnmount() {\n modules__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].off(`${this.props.prefix}-loaded`, this.update);\n modules__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].off(`${this.props.prefix}-unloaded`, this.update);\n }\n\n update() {\n this.forceUpdate();\n }\n\n reload() {\n if (this.props.refreshList) this.props.refreshList();\n this.forceUpdate();\n }\n\n reverse(value) {\n this.setState({\n ascending: value\n });\n }\n\n sort(value) {\n this.setState({\n sort: value\n });\n }\n\n search(event) {\n this.setState({\n query: event.target.value.toLocaleLowerCase()\n });\n }\n\n get sortOptions() {\n return [{\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.name,\n value: \"name\"\n }, {\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.author,\n value: \"author\"\n }, {\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.version,\n value: \"version\"\n }, {\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.added,\n value: \"added\"\n }, {\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.modified,\n value: \"modified\"\n }];\n }\n\n get directions() {\n return [{\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Sorting.ascending,\n value: true\n }, {\n label: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Sorting.descending,\n value: false\n }];\n }\n\n render() {\n const {\n title,\n folder,\n addonList,\n addonState,\n onChange,\n reload\n } = this.props;\n const showReloadIcon = !modules__WEBPACK_IMPORTED_MODULE_0__[\"Settings\"].get(\"settings\", \"addons\", \"autoReload\");\n const button = folder ? {\n title: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.openFolder.format({\n type: title\n }),\n onClick: () => {\n const shell = __webpack_require__(/*! electron */ \"electron\").shell;\n\n const open = shell.openItem || shell.openPath;\n open(folder);\n }\n } : null;\n const sortedAddons = addonList.sort((a, b) => {\n const first = a[this.state.sort];\n const second = b[this.state.sort];\n if (typeof first == \"string\") return first.toLocaleLowerCase().localeCompare(second.toLocaleLowerCase());\n if (first > second) return 1;\n if (second > first) return -1;\n return 0;\n });\n if (!this.state.ascending) sortedAddons.reverse();\n return [/*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_title__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n key: \"title\",\n text: title,\n button: button,\n otherChildren: showReloadIcon && /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_reload__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n className: \"bd-reload\",\n onClick: this.reload.bind(this)\n })\n }), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-controls bd-addon-controls\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_components_search__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n onChange: this.search,\n placeholder: `${modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.search.format({\n type: this.props.title\n })}...`\n }), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-addon-dropdowns\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-select-wrapper\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"label\", {\n className: \"bd-label\"\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Sorting.sortBy, \":\"), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_components_dropdown__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n options: this.sortOptions,\n onChange: this.sort,\n style: \"transparent\"\n })), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-select-wrapper\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"label\", {\n className: \"bd-label\"\n }, modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Sorting.order, \":\"), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_components_dropdown__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n options: this.directions,\n onChange: this.reverse,\n style: \"transparent\"\n })))), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n key: \"addonList\",\n className: \"bd-addon-list\"\n }, sortedAddons.map(addon => {\n if (this.state.query) {\n let matches = addon.name.toLocaleLowerCase().includes(this.state.query);\n matches = matches || addon.author.toLocaleLowerCase().includes(this.state.query);\n matches = matches || addon.description.toLocaleLowerCase().includes(this.state.query);\n if (!matches) return null;\n }\n\n const hasSettings = addon.type && typeof addon.plugin.getSettingsPanel === \"function\";\n const getSettings = hasSettings && addon.plugin.getSettingsPanel.bind(addon.plugin);\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_errorboundary__WEBPACK_IMPORTED_MODULE_7__[\"default\"], null, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_addoncard__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n editAddon: this.editAddon.bind(this, addon.id),\n deleteAddon: this.deleteAddon.bind(this, addon.id),\n showReloadIcon: showReloadIcon,\n key: addon.id,\n enabled: addonState[addon.id],\n addon: addon,\n onChange: onChange,\n reload: reload,\n hasSettings: hasSettings,\n getSettingsPanel: getSettings\n }));\n }))];\n }\n\n editAddon(id) {\n if (this.props.editAddon) this.props.editAddon(id);\n }\n\n async deleteAddon(id) {\n const addon = this.props.addonList.find(a => a.id == id);\n const shouldDelete = await this.confirmDelete(addon);\n if (!shouldDelete) return;\n if (this.props.deleteAddon) this.props.deleteAddon(addon);\n }\n\n confirmDelete(addon) {\n return new Promise(resolve => {\n _modals__WEBPACK_IMPORTED_MODULE_1__[\"default\"].showConfirmationModal(modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Modals.confirmAction, modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.confirmDelete.format({\n name: addon.name\n }), {\n danger: true,\n confirmText: modules__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.deleteAddon,\n onConfirm: () => {\n resolve(true);\n },\n onCancel: () => {\n resolve(false);\n }\n });\n });\n }\n\n}\nconst originalRender = AddonList.prototype.render;\nObject.defineProperty(AddonList.prototype, \"render\", {\n enumerable: false,\n configurable: false,\n set: function () {\n modules__WEBPACK_IMPORTED_MODULE_0__[\"Logger\"].warn(\"AddonList\", \"Addon policy for plugins #5 https://github.com/rauenzi/BetterDiscordApp/wiki/Addon-Policies#plugins\");\n },\n get: () => originalRender\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvc2V0dGluZ3MvYWRkb25saXN0LmpzeD82NGQyIl0sIm5hbWVzIjpbIkFkZG9uTGlzdCIsIlJlYWN0IiwiQ29tcG9uZW50IiwiY29uc3RydWN0b3IiLCJwcm9wcyIsInN0YXRlIiwic29ydCIsImFzY2VuZGluZyIsInF1ZXJ5IiwiYmluZCIsInJldmVyc2UiLCJzZWFyY2giLCJ1cGRhdGUiLCJjb21wb25lbnREaWRNb3VudCIsIkV2ZW50cyIsIm9uIiwicHJlZml4IiwiY29tcG9uZW50V2lsbFVubW91bnQiLCJvZmYiLCJmb3JjZVVwZGF0ZSIsInJlbG9hZCIsInJlZnJlc2hMaXN0IiwidmFsdWUiLCJzZXRTdGF0ZSIsImV2ZW50IiwidGFyZ2V0IiwidG9Mb2NhbGVMb3dlckNhc2UiLCJzb3J0T3B0aW9ucyIsImxhYmVsIiwiU3RyaW5ncyIsIkFkZG9ucyIsIm5hbWUiLCJhdXRob3IiLCJ2ZXJzaW9uIiwiYWRkZWQiLCJtb2RpZmllZCIsImRpcmVjdGlvbnMiLCJTb3J0aW5nIiwiZGVzY2VuZGluZyIsInJlbmRlciIsInRpdGxlIiwiZm9sZGVyIiwiYWRkb25MaXN0IiwiYWRkb25TdGF0ZSIsIm9uQ2hhbmdlIiwic2hvd1JlbG9hZEljb24iLCJTZXR0aW5ncyIsImdldCIsImJ1dHRvbiIsIm9wZW5Gb2xkZXIiLCJmb3JtYXQiLCJ0eXBlIiwib25DbGljayIsInNoZWxsIiwicmVxdWlyZSIsIm9wZW4iLCJvcGVuSXRlbSIsIm9wZW5QYXRoIiwic29ydGVkQWRkb25zIiwiYSIsImIiLCJmaXJzdCIsInNlY29uZCIsImxvY2FsZUNvbXBhcmUiLCJzb3J0QnkiLCJvcmRlciIsIm1hcCIsImFkZG9uIiwibWF0Y2hlcyIsImluY2x1ZGVzIiwiZGVzY3JpcHRpb24iLCJoYXNTZXR0aW5ncyIsInBsdWdpbiIsImdldFNldHRpbmdzUGFuZWwiLCJnZXRTZXR0aW5ncyIsImVkaXRBZGRvbiIsImlkIiwiZGVsZXRlQWRkb24iLCJmaW5kIiwic2hvdWxkRGVsZXRlIiwiY29uZmlybURlbGV0ZSIsIlByb21pc2UiLCJyZXNvbHZlIiwiTW9kYWxzIiwic2hvd0NvbmZpcm1hdGlvbk1vZGFsIiwiY29uZmlybUFjdGlvbiIsImRhbmdlciIsImNvbmZpcm1UZXh0Iiwib25Db25maXJtIiwib25DYW5jZWwiLCJvcmlnaW5hbFJlbmRlciIsInByb3RvdHlwZSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsInNldCIsIkxvZ2dlciIsIndhcm4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVlLE1BQU1BLFNBQU4sU0FBd0JDLDZDQUFLLENBQUNDLFNBQTlCLENBQXdDO0FBRW5EQyxhQUFXLENBQUNDLEtBQUQsRUFBUTtBQUNmLFVBQU1BLEtBQU47QUFDQSxTQUFLQyxLQUFMLEdBQWE7QUFBQ0MsVUFBSSxFQUFFLE1BQVA7QUFBZUMsZUFBUyxFQUFFLElBQTFCO0FBQWdDQyxXQUFLLEVBQUU7QUFBdkMsS0FBYjtBQUNBLFNBQUtGLElBQUwsR0FBWSxLQUFLQSxJQUFMLENBQVVHLElBQVYsQ0FBZSxJQUFmLENBQVo7QUFDQSxTQUFLQyxPQUFMLEdBQWUsS0FBS0EsT0FBTCxDQUFhRCxJQUFiLENBQWtCLElBQWxCLENBQWY7QUFDQSxTQUFLRSxNQUFMLEdBQWMsS0FBS0EsTUFBTCxDQUFZRixJQUFaLENBQWlCLElBQWpCLENBQWQ7QUFDQSxTQUFLRyxNQUFMLEdBQWMsS0FBS0EsTUFBTCxDQUFZSCxJQUFaLENBQWlCLElBQWpCLENBQWQ7QUFDSDs7QUFFREksbUJBQWlCLEdBQUc7QUFDaEJDLGtEQUFNLENBQUNDLEVBQVAsQ0FBVyxHQUFFLEtBQUtYLEtBQUwsQ0FBV1ksTUFBTyxTQUEvQixFQUF5QyxLQUFLSixNQUE5QztBQUNBRSxrREFBTSxDQUFDQyxF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MkYsU0FBaEMsRUFBMkMsUUFBM0MsRUFBcUQ7QUFDakRHLFlBQVUsRUFBRSxLQURxQztBQUVqREMsY0FBWSxFQUFFLEtBRm1DO0FBR2pEQyxLQUFHLEVBQUUsWUFBVztBQUFDQyxrREFBTSxDQUFDQyxJQUFQLENBQVksV0FBWixFQUF5QixxR0FBekI7QUFBaUksR0FIakc7QUFJakRuRCxLQUFHLEVBQUUsTUFBTTJDO0FBSnNDLENBQXJEIiwiZmlsZSI6Ii4vc3JjL3VpL3NldHRpbmdzL2FkZG9ubGlzdC5qc3guanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlYWN0LCBTZXR0aW5ncywgU3RyaW5ncywgRXZlbnRzLCBMb2dnZXJ9IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5pbXBvcnQgTW9kYWxzIGZyb20gXCIuLi9tb2RhbHNcIjtcclxuaW1wb3J0IFNldHRpbmdzVGl0bGUgZnJvbSBcIi4vdGl0bGVcIjtcclxuaW1wb3J0IFJlbG9hZEljb24gZnJvbSBcIi4uL2ljb25zL3JlbG9hZFwiO1xyXG5pbXBvcnQgQWRkb25DYXJkIGZyb20gXCIuL2FkZG9uY2FyZFwiO1xyXG5pbXBvcnQgRHJvcGRvd24gZnJvbSBcIi4vY29tcG9uZW50cy9kcm9wZG93blwiO1xyXG5pbXBvcnQgU2VhcmNoIGZyb20gXCIuL2NvbXBvbmVudHMvc2VhcmNoXCI7XHJcbmltcG9ydCBFcnJvckJvdW5kYXJ5IGZyb20gIFwiLi4vZXJyb3Jib3VuZGFyeVwiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQWRkb25MaXN0IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcm9wcykge1xyXG4gICAgICAgIHN1cGVyKHByb3BzKTtcclxuICAgICAgICB0aGlzLnN0YXRlID0ge3NvcnQ6IFwibmFtZVwiLCBhc2NlbmRpbmc6IHRydWUsIHF1ZXJ5OiBcIlwifTtcclxuICAgICAgICB0aGlzLnNvcnQgPSB0aGlzLnNvcnQuYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLnJldmVyc2UgPSB0aGlzLnJldmVyc2UuYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLnNlYXJjaCA9IHRoaXMuc2VhcmNoLmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGUgPSB0aGlzLnVwZGF0ZS5iaW5kKHRoaXMpO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBjb21wb25lbnREaWRNb3VudCgpIHtcclxuICAgICAgICBFdmVudHMub24oYCR7dGhpcy5wcm9wcy5wcmVmaXh9LWxvYWRlZGAsIHRoaXMudXBkYXRlKTtcclxuICAgICAgICBFdmVudHMub24oYCR7dGhpcy5wcm9wcy5wcmVmaXh9LXVubG9hZGVkYCwgdGhpcy51cGRhdGUpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xyXG4gICAgICAgIEV2ZW50cy5vZmYoYCR7dGhpcy5wcm9wcy5wcmVmaXh9LWxvYWRlZGAsIHRoaXMudXBkYXRlKTtcclxuICAgICAgICBFdmVudHMub2ZmKGAke3RoaXMucHJvcHMucHJlZml4fS11bmxvYWRlZGAsIHRoaXMudXBkYXRlKTtcclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGUoKSB7XHJcbiAgICAgICAgdGhpcy5mb3JjZVVwZGF0ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbG9hZCgpIHtcclxuICAgICAgICBpZiAodGhpcy5wcm9wcy5yZWZyZXNoTGlzdCkgdGhpcy5wcm9wcy5yZWZyZXNoTGlzdCgpO1xyXG4gICAgICAgIHRoaXMuZm9yY2VVcGRhdGUoKTtcclxuICAgIH1cclxuXHJcbiAgICByZXZlcnNlKHZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7YXNjZW5kaW5nOiB2YWx1ZX0pO1xyXG4gICAgfVxyXG5cclxuICAgIHNvcnQodmFsdWUpIHtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtzb3J0OiB2YWx1ZX0pO1xyXG4gICAgfVxyXG5cclxuICAgIHNlYXJjaChldmVudCkge1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe3F1ZXJ5OiBldmVudC50YXJnZXQudmFsdWUudG9Mb2NhbGVMb3dlckNhc2UoKX0pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBzb3J0T3B0aW9ucygpIHtcclxuICAgICAgICByZXR1cm4gW1xyXG4gICAgICAgICAgICB7bGFiZWw6IFN0cmluZ3MuQWRkb25zLm5hbWUsIHZhbHVlOiBcIm5hbWVcIn0sXHJcbiAgICAgICAgICAgIHtsYWJlbDogU3RyaW5ncy5BZGRvbnMuYXV0aG9yLCB2YWx1ZTogXCJhdXRob3JcIn0sXHJcbiAgICAgICAgICAgIHtsYWJlbDogU3RyaW5ncy5BZGRvbnMudmVyc2lvbiwgdmFsdWU6IFwidmVyc2lvblwifSxcclxuICAgICAgICAgICAge2xhYmVsOiBTdHJpbmdzLkFkZG9ucy5hZGRlZCwgdmFsdWU6IFwiYWRkZWRcIn0sXHJcbiAgICAgICAgICAgIHtsYWJlbDogU3RyaW5ncy5BZGRvbnMubW9kaWZpZWQsIHZhbHVlOiBcIm1vZGlmaWVkXCJ9XHJcbiAgICAgICAgXTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgZGlyZWN0aW9ucygpIHtcclxuICAgICAgICByZXR1cm4gW1xyXG4gICAgICAgICAgICB7bGFiZWw6IFN0cmluZ3MuU29ydGluZy5hc2NlbmRpbmcsIHZhbHVlOiB0cnVlfSxcclxuICAgICAgICAgICAge2xhYmVsOiBTdHJpbmdzLlNvcnRpbmcuZGVzY2VuZGluZywgdmFsdWU6IGZhbHNlfVxyXG4gICAgICAgIF07XHJcbiAgICB9XHJcblxyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIGNvbnN0IHt0aXRsZSwgZm9sZGVyLCBhZGRvbkxpc3QsIGFkZG9uU3RhdGUsIG9uQ2hhbmdlLCByZWxvYWR9ID0gdGhpcy5wcm9wcztcclxuICAgICAgICBjb25zdCBzaG93UmVsb2FkSWNvbiA9ICFTZXR0aW5ncy5nZXQoXCJzZXR0aW5nc1wiLCBcImFkZG9uc1wiLCBcImF1dG9SZWxvYWRcIik7XHJcbiAgICAgICAgY29uc3QgYnV0dG9uID0gZm9sZGVyID8ge3RpdGxlOiBTdHJpbmdzLkFkZG9ucy5vcGVuRm9sZGVyLmZvcm1hdCh7dHlwZTogdGl0bGV9KSwgb25DbGljazogKCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBzaGVsbCA9IHJlcXVpcmUoXCJlbGVjdHJvblwiKS5zaGVsbDtcclxuICAgICAgICAgICAgY29uc3Qgb3BlbiA9IHNoZWxsLm9wZW5JdGVtIHx8IHNoZWxsLm9wZW5QYXRoO1xyXG4gICAgICAgICAgICBvcGVuKGZvbGRlcik7XHJcbiAgICAgICAgfX0gOiBudWxsO1xyXG4gICAgICAgIGNvbnN0IHNvcnRlZEFkZG9ucyA9IGFkZG9uTGlzdC5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGZpcnN0ID0gYVt0aGlzLnN0YXRlLnNvcnRdO1xyXG4gICAgICAgICAgICBjb25zdCBzZWNvbmQgPSBiW3RoaXMuc3RhdGUuc29ydF07XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2YoZmlyc3QpID09IFwic3RyaW5nXCIpIHJldHVybiBmaXJzdC50b0xvY2FsZUxvd2VyQ2FzZSgpLmxvY2FsZUNvbXBhcmUoc2Vjb25kLnRvTG9jYWxlTG93ZXJDYXNlKCkpO1xyXG4gICAgICAgICAgICBpZiAoZmlyc3QgPiBzZWNvbmQpIHJldHVybiAxO1xyXG4gICAgICAgICAgICBpZiAoc2Vjb25kID4gZmlyc3QpIHJldHVybiAtMTtcclxuICAgICAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaWYgKCF0aGlzLnN0YXRlLmFzY2VuZGluZykgc29ydGVkQWRkb25zLnJldmVyc2UoKTtcclxuICAgICAgICByZXR1cm4gW1xyXG4gICAgICAgICAgICA8U2V0dGluZ3NUaXRsZSBrZXk9XCJ0aXRsZVwiIHRleHQ9e3RpdGxlfSBidXR0b249e2J1dHRvbn0gb3RoZXJDaGlsZHJlbj17c2hvd1JlbG9hZEljb24gJiYgPFJlbG9hZEljb24gY2xhc3NOYW1lPVwiYmQtcmVsb2FkXCIgb25DbGljaz17dGhpcy5yZWxvYWQuYmluZCh0aGlzKX0gLz59IC8+LFxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJkLWNvbnRyb2xzIGJkLWFkZG9uLWNvbnRyb2xzXCI+XHJcbiAgICAgICAgICAgICAgICA8U2VhcmNoIG9uQ2hhbmdlPXt0aGlzLnNlYXJjaH0gcGxhY2Vob2xkZXI9e2Ake1N0cmluZ3MuQWRkb25zLnNlYXJjaC5mb3JtYXQoe3R5cGU6IHRoaXMucHJvcHMudGl0bGV9KX0uLi5gfSAvPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZC1hZGRvbi1kcm9wZG93bnNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJkLXNlbGVjdC13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzc05hbWU9XCJiZC1sYWJlbFwiPntTdHJpbmdzLlNvcnRpbmcuc29ydEJ5fTo8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8RHJvcGRvd24gb3B0aW9ucz17dGhpcy5zb3J0T3B0aW9uc30gb25DaGFuZ2U9e3RoaXMuc29ydH0gc3R5bGU9XCJ0cmFuc3BhcmVudFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZC1zZWxlY3Qtd3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3NOYW1lPVwiYmQtbGFiZWxcIj57U3RyaW5ncy5Tb3J0aW5nLm9yZGVyfTo8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8RHJvcGRvd24gb3B0aW9ucz17dGhpcy5kaXJlY3Rpb25zfSBvbkNoYW5nZT17dGhpcy5yZXZlcnNlfSBzdHlsZT1cInRyYW5zcGFyZW50XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj4sXHJcbiAgICAgICAgICAgIDxkaXYga2V5PVwiYWRkb25MaXN0XCIgY2xhc3NOYW1lPXtcImJkLWFkZG9uLWxpc3RcIn0+XHJcbiAgICAgICAgICAgIHtzb3J0ZWRBZGRvbnMubWFwKGFkZG9uID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnN0YXRlLnF1ZXJ5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IG1hdGNoZXMgPSBhZGRvbi5uYW1lLnRvTG9jYWxlTG93ZXJDYXNlKCkuaW5jbHVkZXModGhpcy5zdGF0ZS5xdWVyeSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbWF0Y2hlcyA9IG1hdGNoZXMgfHwgYWRkb24uYXV0aG9yLnRvTG9jYWxlTG93ZXJDYXNlKCkuaW5jbHVkZXModGhpcy5zdGF0ZS5xdWVyeSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbWF0Y2hlcyA9IG1hdGNoZXMgfHwgYWRkb24uZGVzY3JpcHRpb24udG9Mb2NhbGVMb3dlckNhc2UoKS5pbmNsdWRlcyh0aGlzLnN0YXRlLnF1ZXJ5KTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIW1hdGNoZXMpIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY29uc3QgaGFzU2V0dGluZ3MgPSBhZGRvbi50eXBlICYmIHR5cGVvZihhZGRvbi5wbHVnaW4uZ2V0U2V0dGluZ3NQYW5lbCkgPT09IFwiZnVuY3Rpb25cIjtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGdldFNldHRpbmdzID0gaGFzU2V0dGluZ3MgJiYgYWRkb24ucGx1Z2luLmdldFNldHRpbmdzUGFuZWwuYmluZChhZGRvbi5wbHVnaW4pO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIDxFcnJvckJvdW5kYXJ5PjxBZGRvbkNhcmQgZWRpdEFkZG9uPXt0aGlzLmVkaXRBZGRvbi5iaW5kKHRoaXMsIGFkZG9uLmlkKX0gZGVsZXRlQWRkb249e3RoaXMuZGVsZXRlQWRkb24uYmluZCh0aGlzLCBhZGRvbi5pZCl9IHNob3dSZWxvYWRJY29uPXtzaG93UmVsb2FkSWNvbn0ga2V5PXthZGRvbi5pZH0gZW5hYmxlZD17YWRkb25TdGF0ZVthZGRvbi5pZF19IGFkZG9uPXthZGRvbn0gb25DaGFuZ2U9e29uQ2hhbmdlfSByZWxvYWQ9e3JlbG9hZH0gaGFzU2V0dGluZ3M9e2hhc1NldHRpbmdzfSBnZXRTZXR0aW5nc1BhbmVsPXtnZXRTZXR0aW5nc30gLz48L0Vycm9yQm91bmRhcnk+O1xyXG4gICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgXTtcclxuICAgIH1cclxuXHJcbiAgICBlZGl0QWRkb24oaWQpIHtcclxuICAgICAgICBpZiAodGhpcy5wcm9wcy5lZGl0QWRkb24pIHRoaXMucHJvcHMuZWRpdEFkZG9uKGlkKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBkZWxldGVBZGRvbihpZCkge1xyXG4gICAgICAgIGNvbnN0IGFkZG9uID0gdGhpcy5wcm9wcy5hZGRvbkxpc3QuZmluZChhID0+IGEuaWQgPT0gaWQpO1xyXG4gICAgICAgIGNvbnN0IHNob3VsZERlbGV0ZSA9IGF3YWl0IHRoaXMuY29uZmlybURlbGV0ZShhZGRvbik7XHJcbiAgICAgICAgaWYgKCFzaG91bGREZWxldGUpIHJldHVybjtcclxuICAgICAgICBpZiAodGhpcy5wcm9wcy5kZWxldGVBZGRvbikgdGhpcy5wcm9wcy5kZWxldGVBZGRvbihhZGRvbik7XHJcbiAgICB9XHJcblxyXG4gICAgY29uZmlybURlbGV0ZShhZGRvbikge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcclxuICAgICAgICAgICAgTW9kYWxzLnNob3dDb25maXJtYXRpb25Nb2RhbChTdHJpbmdzLk1vZGFscy5jb25maXJtQWN0aW9uLCBTdHJpbmdzLkFkZG9ucy5jb25maXJtRGVsZXRlLmZvcm1hdCh7bmFtZTogYWRkb24ubmFtZX0pLCB7XHJcbiAgICAgICAgICAgICAgICBkYW5nZXI6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBjb25maXJtVGV4dDogU3RyaW5ncy5BZGRvbnMuZGVsZXRlQWRkb24sXHJcbiAgICAgICAgICAgICAgICBvbkNvbmZpcm06ICgpID0+IHtyZXNvbHZlKHRydWUpO30sXHJcbiAgICAgICAgICAgICAgICBvbkNhbmNlbDogKCkgPT4ge3Jlc29sdmUoZmFsc2UpO31cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbn1cclxuXHJcbmNvbnN0IG9yaWdpbmFsUmVuZGVyID0gQWRkb25MaXN0LnByb3RvdHlwZS5yZW5kZXI7XHJcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShBZGRvbkxpc3QucHJvdG90eXBlLCBcInJlbmRlclwiLCB7XHJcbiAgICBlbnVtZXJhYmxlOiBmYWxzZSxcclxuICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXHJcbiAgICBzZXQ6IGZ1bmN0aW9uKCkge0xvZ2dlci53YXJuKFwiQWRkb25MaXN0XCIsIFwiQWRkb24gcG9saWN5IGZvciBwbHVnaW5zICM1IGh0dHBzOi8vZ2l0aHViLmNvbS9yYXVlbnppL0JldHRlckRpc2NvcmRBcHAvd2lraS9BZGRvbi1Qb2xpY2llcyNwbHVnaW5zXCIpO30sXHJcbiAgICBnZXQ6ICgpID0+IG9yaWdpbmFsUmVuZGVyXHJcbn0pOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/settings/addonlist.jsx\n"); /***/ }), @@ -1043,7 +1042,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Select; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _icons_downarrow__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../icons/downarrow */ \"./src/ui/icons/downarrow.jsx\");\n\n\nclass Select extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n this.state = {\n open: false,\n value: this.props.value || this.props.options[0].value\n };\n this.dropdown = modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createRef();\n this.onChange = this.onChange.bind(this);\n this.showMenu = this.showMenu.bind(this);\n this.hideMenu = this.hideMenu.bind(this);\n }\n\n showMenu(event) {\n event.preventDefault();\n this.setState({\n open: true\n }, () => {\n document.addEventListener(\"click\", this.hideMenu);\n });\n }\n\n hideMenu() {\n this.setState({\n open: false\n }, () => {\n document.removeEventListener(\"click\", this.hideMenu);\n });\n }\n\n onChange(value) {\n this.setState({\n value\n });\n if (this.props.onChange) this.props.onChange(value);\n }\n\n get selected() {\n return this.props.options.find(o => o.value == this.state.value);\n }\n\n get options() {\n const selected = this.selected;\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-select-options\"\n }, this.props.options.map(opt => /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: `bd-select-option${selected.value == opt.value ? \" selected\" : \"\"}`,\n onClick: this.onChange.bind(this, opt.value)\n }, opt.label)));\n }\n\n render() {\n const style = this.props.style == \"transparent\" ? \" bd-select-transparent\" : \"\";\n const isOpen = this.state.open ? \" menu-open\" : \"\";\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: `bd-select${style}${isOpen}`,\n onClick: this.showMenu,\n ref: this.dropdown\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-select-value\"\n }, this.selected.label), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_downarrow__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n className: \"bd-select-arrow\"\n }), this.state.open && this.options);\n }\n\n} // return
\n// \n//
\n//
\n//
{this.selected.label}
\n// \n//
\n//
\n// {this.state.open && this.options}\n//
;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL3NldHRpbmdzL2NvbXBvbmVudHMvZHJvcGRvd24uanN4PzRhOWMiXSwibmFtZXMiOlsiU2VsZWN0IiwiUmVhY3QiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwic3RhdGUiLCJvcGVuIiwidmFsdWUiLCJvcHRpb25zIiwiZHJvcGRvd24iLCJjcmVhdGVSZWYiLCJvbkNoYW5nZSIsImJpbmQiLCJzaG93TWVudSIsImhpZGVNZW51IiwiZXZlbnQiLCJwcmV2ZW50RGVmYXVsdCIsInNldFN0YXRlIiwiZG9jdW1lbnQiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsInNlbGVjdGVkIiwiZmluZCIsIm8iLCJtYXAiLCJvcHQiLCJsYWJlbCIsInJlbmRlciIsInN0eWxlIiwiaXNPcGVuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFFZSxNQUFNQSxNQUFOLFNBQXFCQyw2Q0FBSyxDQUFDQyxTQUEzQixDQUFxQztBQUNoREMsYUFBVyxDQUFDQyxLQUFELEVBQVE7QUFDZixVQUFNQSxLQUFOO0FBQ0EsU0FBS0MsS0FBTCxHQUFhO0FBQUNDLFVBQUksRUFBRSxLQUFQO0FBQWNDLFdBQUssRUFBRSxLQUFLSCxLQUFMLENBQVdHLEtBQVgsSUFBb0IsS0FBS0gsS0FBTCxDQUFXSSxPQUFYLENBQW1CLENBQW5CLEVBQXNCRDtBQUEvRCxLQUFiO0FBQ0EsU0FBS0UsUUFBTCxHQUFnQlIsNkNBQUssQ0FBQ1MsU0FBTixFQUFoQjtBQUNBLFNBQUtDLFFBQUwsR0FBZ0IsS0FBS0EsUUFBTCxDQUFjQyxJQUFkLENBQW1CLElBQW5CLENBQWhCO0FBQ0EsU0FBS0MsUUFBTCxHQUFnQixLQUFLQSxRQUFMLENBQWNELElBQWQsQ0FBbUIsSUFBbkIsQ0FBaEI7QUFDQSxTQUFLRSxRQUFMLEdBQWdCLEtBQUtBLFFBQUwsQ0FBY0YsSUFBZCxDQUFtQixJQUFuQixDQUFoQjtBQUNIOztBQUVEQyxVQUFRLENBQUNFLEtBQUQsRUFBUTtBQUNaQSxTQUFLLENBQUNDLGNBQU47QUFDQSxTQUFLQyxRQUFMLENBQWM7QUFBQ1gsVUFBSSxFQUFFO0FBQVAsS0FBZCxFQUE0QixNQUFNO0FBQzlCWSxjQUFRLENBQUNDLGdCQUFULENBQTBCLE9BQTFCLEVBQW1DLEtBQUtMLFFBQXhDO0FBQ0gsS0FGRDtBQUdIOztBQUVEQSxVQUFRLEdBQUc7QUFDUCxTQUFLRyxRQUFMLENBQWM7QUFBQ1gsVUFBSSxFQUFFO0FBQVAsS0FBZCxFQUE2QixNQUFNO0FBQy9CWSxjQUFRLENBQUNFLG1CQUFULENBQTZCLE9BQTdCLEVBQXNDLEtBQUtOLFFBQTNDO0FBQ0gsS0FGRDtBQUdIOztBQUVESCxVQUFRLENBQUNKLEtBQUQsRUFBUTtBQUNaLFNBQUtVLFFBQUwsQ0FBYztBQUFDVjtBQUFELEtBQWQ7QUFDQSxRQUFJLEtBQUtILEtBQUwsQ0FBV08sUUFBZixFQUF5QixLQUFLUCxLQUFMLENBQVdPLFFBQVgsQ0FBb0JKLEtBQXBCO0FBQzVCOztBQUVELE1BQUljLFFBQUosR0FBZTtBQUFDLFdBQU8sS0FBS2pCLEtBQUwsQ0FBV0ksT0FBWCxDQUFtQmMsSUFBbkIsQ0FBd0JDLENBQUMsSUFBSUEsQ0FBQyxDQUFDaEIsS0FBRixJQUFXLEtBQUtGLEtBQUwsQ0FBV0UsS0FBbkQsQ0FBUDtBQUFrRTs7QUFFbEYsTUFBSUMsT0FBSixHQUFjO0FBQ1YsVUFBTWEsUUFBUSxHQUFHLEtBQUtBLFFBQXRCO0FBQ0Esd0JBQU87QUFBSyxlQUFTLEVBQUM7QUFBZixPQUNGLEtBQUtqQixLQUFMLENBQVdJLE9BQVgsQ0FBbUJnQixHQUFuQixDQUF1QkMsR0FBRyxpQkFDdkI7QUFBSyxlQUFTLEVBQUcsbUJBQWtCSixRQUFRLENBQUNkLEtBQVQsSUFBa0JrQixHQUFHLENBQUNsQixLQUF0QixHQUE4QixXQUE5QixHQUE0QyxFQUFHLEVBQWxGO0FBQXFGLGFBQU8sRUFBRSxLQUFLSSxRQUFMLENBQWNDLElBQWQsQ0FBbUIsSUFBbkIsRUFBeUJhLEdBQUcsQ0FBQ2xCLEtBQTdCO0FBQTlGLE9BQW9Ja0IsR0FBRyxDQUFDQyxLQUF4SSxDQURILENBREUsQ0FBUDtBQUtIOztBQUVEQyxRQUFNLEdBQUc7QUFDTCxVQUFNQyxLQUFLLEdBQUcsS0FBS3hCLEtBQUwsQ0FBV3dCLEtBQVgsSUFBb0IsYUFBcEIsR0FBb0Msd0JBQXBDLEdBQStELEVBQTdFO0FBQ0EsVUFBTUMsTUFBTSxHQUFHLEtBQUt4QixLQUFMLENBQVdDLElBQVgsR0FBa0IsWUFBbEIsR0FBaUMsRUFBaEQ7QUFDQSx3QkFBUTtBQUFLLGVBQVMsRUFBRyxZQUFXc0IsS0FBTSxHQUFFQyxNQUFPLEVBQTNDO0FBQThDLGFBQU8sRUFBRSxLQUFLaEIsUUFBNUQ7QUFBc0UsU0FBRyxFQUFFLEtBQUtKO0FBQWhGLG9CQUNJO0FBQUssZUFBUyxFQUFDO0FBQWYsT0FBa0MsS0FBS1ksUUFBTCxDQUFjSyxLQUFoRCxDQURKLGVBRUksNERBQUMsd0RBQUQ7QUFBTyxlQUFTLEVBQUM7QUFBakIsTUFGSixFQUdLLEtBQUtyQixLQUFMLENBQVdDLElBQVgsSUFBbUIsS0FBS0UsT0FIN0IsQ0FBUjtBQUtIOztBQS9DK0MsQyxDQWtEcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9zcmMvdWkvc2V0dGluZ3MvY29tcG9uZW50cy9kcm9wZG93bi5qc3guanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlYWN0fSBmcm9tIFwibW9kdWxlc1wiO1xyXG5pbXBvcnQgQXJyb3cgZnJvbSBcIi4uLy4uL2ljb25zL2Rvd25hcnJvd1wiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2VsZWN0IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcclxuICAgIGNvbnN0cnVjdG9yKHByb3BzKSB7XHJcbiAgICAgICAgc3VwZXIocHJvcHMpO1xyXG4gICAgICAgIHRoaXMuc3RhdGUgPSB7b3BlbjogZmFsc2UsIHZhbHVlOiB0aGlzLnByb3BzLnZhbHVlIHx8IHRoaXMucHJvcHMub3B0aW9uc1swXS52YWx1ZX07XHJcbiAgICAgICAgdGhpcy5kcm9wZG93biA9IFJlYWN0LmNyZWF0ZVJlZigpO1xyXG4gICAgICAgIHRoaXMub25DaGFuZ2UgPSB0aGlzLm9uQ2hhbmdlLmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy5zaG93TWVudSA9IHRoaXMuc2hvd01lbnUuYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLmhpZGVNZW51ID0gdGhpcy5oaWRlTWVudS5iaW5kKHRoaXMpO1xyXG4gICAgfVxyXG5cclxuICAgIHNob3dNZW51KGV2ZW50KSB7XHJcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtvcGVuOiB0cnVlfSwgKCkgPT4ge1xyXG4gICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgdGhpcy5oaWRlTWVudSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaGlkZU1lbnUoKSB7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7b3BlbjogZmFsc2V9LCAoKSA9PiB7XHJcbiAgICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCB0aGlzLmhpZGVNZW51KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBvbkNoYW5nZSh2YWx1ZSkge1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe3ZhbHVlfSk7XHJcbiAgICAgICAgaWYgKHRoaXMucHJvcHMub25DaGFuZ2UpIHRoaXMucHJvcHMub25DaGFuZ2UodmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBzZWxlY3RlZCgpIHtyZXR1cm4gdGhpcy5wcm9wcy5vcHRpb25zLmZpbmQobyA9PiBvLnZhbHVlID09IHRoaXMuc3RhdGUudmFsdWUpO31cclxuXHJcbiAgICBnZXQgb3B0aW9ucygpIHtcclxuICAgICAgICBjb25zdCBzZWxlY3RlZCA9IHRoaXMuc2VsZWN0ZWQ7XHJcbiAgICAgICAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPVwiYmQtc2VsZWN0LW9wdGlvbnNcIj5cclxuICAgICAgICAgICAge3RoaXMucHJvcHMub3B0aW9ucy5tYXAob3B0ID0+IFxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2BiZC1zZWxlY3Qtb3B0aW9uJHtzZWxlY3RlZC52YWx1ZSA9PSBvcHQudmFsdWUgPyBcIiBzZWxlY3RlZFwiIDogXCJcIn1gfSBvbkNsaWNrPXt0aGlzLm9uQ2hhbmdlLmJpbmQodGhpcywgb3B0LnZhbHVlKX0+e29wdC5sYWJlbH08L2Rpdj5cclxuICAgICAgICAgICAgKX1cclxuICAgICAgICA8L2Rpdj47XHJcbiAgICB9XHJcblxyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIGNvbnN0IHN0eWxlID0gdGhpcy5wcm9wcy5zdHlsZSA9PSBcInRyYW5zcGFyZW50XCIgPyBcIiBiZC1zZWxlY3QtdHJhbnNwYXJlbnRcIiA6IFwiXCI7XHJcbiAgICAgICAgY29uc3QgaXNPcGVuID0gdGhpcy5zdGF0ZS5vcGVuID8gXCIgbWVudS1vcGVuXCIgOiBcIlwiO1xyXG4gICAgICAgIHJldHVybiAgPGRpdiBjbGFzc05hbWU9e2BiZC1zZWxlY3Qke3N0eWxlfSR7aXNPcGVufWB9IG9uQ2xpY2s9e3RoaXMuc2hvd01lbnV9IHJlZj17dGhpcy5kcm9wZG93bn0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZC1zZWxlY3QtdmFsdWVcIj57dGhpcy5zZWxlY3RlZC5sYWJlbH08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8QXJyb3cgY2xhc3NOYW1lPVwiYmQtc2VsZWN0LWFycm93XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICB7dGhpcy5zdGF0ZS5vcGVuICYmIHRoaXMub3B0aW9uc31cclxuICAgICAgICAgICAgICAgIDwvZGl2PjtcclxuICAgIH1cclxufVxyXG5cclxuLy8gcmV0dXJuIDxkaXYgY2xhc3NOYW1lPVwiYmQtc2VsZWN0LXdyYXBcIj5cclxuLy8gPGxhYmVsIGNsYXNzTmFtZT1cImJkLWxhYmVsXCI+e3RoaXMucHJvcHMubGFiZWx9PC9sYWJlbD5cclxuLy8gPGRpdiBjbGFzc05hbWU9e2BiZC1zZWxlY3Qke3N0eWxlfSR7aXNPcGVufWB9IG9uQ2xpY2s9e3RoaXMuc2hvd01lbnV9IHJlZj17dGhpcy5kcm9wZG93bn0+XHJcbi8vICAgICA8ZGl2IGNsYXNzTmFtZT1cImJkLXNlbGVjdC1jb250cm9sc1wiPlxyXG4vLyAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmQtc2VsZWN0LXZhbHVlXCI+e3RoaXMuc2VsZWN0ZWQubGFiZWx9PC9kaXY+XHJcbi8vICAgICAgICAgPEFycm93IGNsYXNzTmFtZT1cImJkLXNlbGVjdC1hcnJvd1wiIC8+XHJcbi8vICAgICA8L2Rpdj5cclxuLy8gPC9kaXY+XHJcbi8vIHt0aGlzLnN0YXRlLm9wZW4gJiYgdGhpcy5vcHRpb25zfVxyXG4vLyA8L2Rpdj47Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/settings/components/dropdown.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Select; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _icons_downarrow__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../icons/downarrow */ \"./src/ui/icons/downarrow.jsx\");\n\n\nclass Select extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n this.state = {\n open: false,\n value: this.props.value || this.props.options[0].value\n };\n this.dropdown = modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createRef();\n this.onChange = this.onChange.bind(this);\n this.showMenu = this.showMenu.bind(this);\n this.hideMenu = this.hideMenu.bind(this);\n }\n\n showMenu(event) {\n event.preventDefault();\n this.setState({\n open: true\n }, () => {\n document.addEventListener(\"click\", this.hideMenu);\n });\n }\n\n hideMenu() {\n this.setState({\n open: false\n }, () => {\n document.removeEventListener(\"click\", this.hideMenu);\n });\n }\n\n onChange(value) {\n this.setState({\n value\n });\n if (this.props.onChange) this.props.onChange(value);\n }\n\n get selected() {\n return this.props.options.find(o => o.value == this.state.value);\n }\n\n get options() {\n const selected = this.selected;\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-select-options\"\n }, this.props.options.map(opt => /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: `bd-select-option${selected.value == opt.value ? \" selected\" : \"\"}`,\n onClick: this.onChange.bind(this, opt.value)\n }, opt.label)));\n }\n\n render() {\n const style = this.props.style == \"transparent\" ? \" bd-select-transparent\" : \"\";\n const isOpen = this.state.open ? \" menu-open\" : \"\";\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: `bd-select${style}${isOpen}`,\n onClick: this.showMenu,\n ref: this.dropdown\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-select-value\"\n }, this.selected.label), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_downarrow__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n className: \"bd-select-arrow\"\n }), this.state.open && this.options);\n }\n\n} // return
\n// \n//
\n//
\n//
{this.selected.label}
\n// \n//
\n//
\n// {this.state.open && this.options}\n//
;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvc2V0dGluZ3MvY29tcG9uZW50cy9kcm9wZG93bi5qc3g/NGE5YyJdLCJuYW1lcyI6WyJTZWxlY3QiLCJSZWFjdCIsIkNvbXBvbmVudCIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJzdGF0ZSIsIm9wZW4iLCJ2YWx1ZSIsIm9wdGlvbnMiLCJkcm9wZG93biIsImNyZWF0ZVJlZiIsIm9uQ2hhbmdlIiwiYmluZCIsInNob3dNZW51IiwiaGlkZU1lbnUiLCJldmVudCIsInByZXZlbnREZWZhdWx0Iiwic2V0U3RhdGUiLCJkb2N1bWVudCIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwic2VsZWN0ZWQiLCJmaW5kIiwibyIsIm1hcCIsIm9wdCIsImxhYmVsIiwicmVuZGVyIiwic3R5bGUiLCJpc09wZW4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUVlLE1BQU1BLE1BQU4sU0FBcUJDLDZDQUFLLENBQUNDLFNBQTNCLENBQXFDO0FBQ2hEQyxhQUFXLENBQUNDLEtBQUQsRUFBUTtBQUNmLFVBQU1BLEtBQU47QUFDQSxTQUFLQyxLQUFMLEdBQWE7QUFBQ0MsVUFBSSxFQUFFLEtBQVA7QUFBY0MsV0FBSyxFQUFFLEtBQUtILEtBQUwsQ0FBV0csS0FBWCxJQUFvQixLQUFLSCxLQUFMLENBQVdJLE9BQVgsQ0FBbUIsQ0FBbkIsRUFBc0JEO0FBQS9ELEtBQWI7QUFDQSxTQUFLRSxRQUFMLEdBQWdCUiw2Q0FBSyxDQUFDUyxTQUFOLEVBQWhCO0FBQ0EsU0FBS0MsUUFBTCxHQUFnQixLQUFLQSxRQUFMLENBQWNDLElBQWQsQ0FBbUIsSUFBbkIsQ0FBaEI7QUFDQSxTQUFLQyxRQUFMLEdBQWdCLEtBQUtBLFFBQUwsQ0FBY0QsSUFBZCxDQUFtQixJQUFuQixDQUFoQjtBQUNBLFNBQUtFLFFBQUwsR0FBZ0IsS0FBS0EsUUFBTCxDQUFjRixJQUFkLENBQW1CLElBQW5CLENBQWhCO0FBQ0g7O0FBRURDLFVBQVEsQ0FBQ0UsS0FBRCxFQUFRO0FBQ1pBLFNBQUssQ0FBQ0MsY0FBTjtBQUNBLFNBQUtDLFFBQUwsQ0FBYztBQUFDWCxVQUFJLEVBQUU7QUFBUCxLQUFkLEVBQTRCLE1BQU07QUFDOUJZLGNBQVEsQ0FBQ0MsZ0JBQVQsQ0FBMEIsT0FBMUIsRUFBbUMsS0FBS0wsUUFBeEM7QUFDSCxLQUZEO0FBR0g7O0FBRURBLFVBQVEsR0FBRztBQUNQLFNBQUtHLFFBQUwsQ0FBYztBQUFDWCxVQUFJLEVBQUU7QUFBUCxLQUFkLEVBQTZCLE1BQU07QUFDL0JZLGNBQVEsQ0FBQ0UsbUJBQVQsQ0FBNkIsT0FBN0IsRUFBc0MsS0FBS04sUUFBM0M7QUFDSCxLQUZEO0FBR0g7O0FBRURILFVBQVEsQ0FBQ0osS0FBRCxFQUFRO0FBQ1osU0FBS1UsUUFBTCxDQUFjO0FBQUNWO0FBQUQsS0FBZDtBQUNBLFFBQUksS0FBS0gsS0FBTCxDQUFXTyxRQUFmLEVBQXlCLEtBQUtQLEtBQUwsQ0FBV08sUUFBWCxDQUFvQkosS0FBcEI7QUFDNUI7O0FBRUQsTUFBSWMsUUFBSixHQUFlO0FBQUMsV0FBTyxLQUFLakIsS0FBTCxDQUFXSSxPQUFYLENBQW1CYyxJQUFuQixDQUF3QkMsQ0FBQyxJQUFJQSxDQUFDLENBQUNoQixLQUFGLElBQVcsS0FBS0YsS0FBTCxDQUFXRSxLQUFuRCxDQUFQO0FBQWtFOztBQUVsRixNQUFJQyxPQUFKLEdBQWM7QUFDVixVQUFNYSxRQUFRLEdBQUcsS0FBS0EsUUFBdEI7QUFDQSx3QkFBTztBQUFLLGVBQVMsRUFBQztBQUFmLE9BQ0YsS0FBS2pCLEtBQUwsQ0FBV0ksT0FBWCxDQUFtQmdCLEdBQW5CLENBQXVCQyxHQUFHLGlCQUN2QjtBQUFLLGVBQVMsRUFBRyxtQkFBa0JKLFFBQVEsQ0FBQ2QsS0FBVCxJQUFrQmtCLEdBQUcsQ0FBQ2xCLEtBQXRCLEdBQThCLFdBQTlCLEdBQTRDLEVBQUcsRUFBbEY7QUFBcUYsYUFBTyxFQUFFLEtBQUtJLFFBQUwsQ0FBY0MsSUFBZCxDQUFtQixJQUFuQixFQUF5QmEsR0FBRyxDQUFDbEIsS0FBN0I7QUFBOUYsT0FBb0lrQixHQUFHLENBQUNDLEtBQXhJLENBREgsQ0FERSxDQUFQO0FBS0g7O0FBRURDLFFBQU0sR0FBRztBQUNMLFVBQU1DLEtBQUssR0FBRyxLQUFLeEIsS0FBTCxDQUFXd0IsS0FBWCxJQUFvQixhQUFwQixHQUFvQyx3QkFBcEMsR0FBK0QsRUFBN0U7QUFDQSxVQUFNQyxNQUFNLEdBQUcsS0FBS3hCLEtBQUwsQ0FBV0MsSUFBWCxHQUFrQixZQUFsQixHQUFpQyxFQUFoRDtBQUNBLHdCQUFRO0FBQUssZUFBUyxFQUFHLFlBQVdzQixLQUFNLEdBQUVDLE1BQU8sRUFBM0M7QUFBOEMsYUFBTyxFQUFFLEtBQUtoQixRQUE1RDtBQUFzRSxTQUFHLEVBQUUsS0FBS0o7QUFBaEYsb0JBQ0k7QUFBSyxlQUFTLEVBQUM7QUFBZixPQUFrQyxLQUFLWSxRQUFMLENBQWNLLEtBQWhELENBREosZUFFSSw0REFBQyx3REFBRDtBQUFPLGVBQVMsRUFBQztBQUFqQixNQUZKLEVBR0ssS0FBS3JCLEtBQUwsQ0FBV0MsSUFBWCxJQUFtQixLQUFLRSxPQUg3QixDQUFSO0FBS0g7O0FBL0MrQyxDLENBa0RwRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL3NyYy91aS9zZXR0aW5ncy9jb21wb25lbnRzL2Ryb3Bkb3duLmpzeC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhY3R9IGZyb20gXCJtb2R1bGVzXCI7XHJcbmltcG9ydCBBcnJvdyBmcm9tIFwiLi4vLi4vaWNvbnMvZG93bmFycm93XCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTZWxlY3QgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xyXG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcclxuICAgICAgICBzdXBlcihwcm9wcyk7XHJcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHtvcGVuOiBmYWxzZSwgdmFsdWU6IHRoaXMucHJvcHMudmFsdWUgfHwgdGhpcy5wcm9wcy5vcHRpb25zWzBdLnZhbHVlfTtcclxuICAgICAgICB0aGlzLmRyb3Bkb3duID0gUmVhY3QuY3JlYXRlUmVmKCk7XHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IHRoaXMub25DaGFuZ2UuYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLnNob3dNZW51ID0gdGhpcy5zaG93TWVudS5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMuaGlkZU1lbnUgPSB0aGlzLmhpZGVNZW51LmJpbmQodGhpcyk7XHJcbiAgICB9XHJcblxyXG4gICAgc2hvd01lbnUoZXZlbnQpIHtcclxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe29wZW46IHRydWV9LCAoKSA9PiB7XHJcbiAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCB0aGlzLmhpZGVNZW51KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBoaWRlTWVudSgpIHtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtvcGVuOiBmYWxzZX0sICgpID0+IHtcclxuICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIHRoaXMuaGlkZU1lbnUpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIG9uQ2hhbmdlKHZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7dmFsdWV9KTtcclxuICAgICAgICBpZiAodGhpcy5wcm9wcy5vbkNoYW5nZSkgdGhpcy5wcm9wcy5vbkNoYW5nZSh2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHNlbGVjdGVkKCkge3JldHVybiB0aGlzLnByb3BzLm9wdGlvbnMuZmluZChvID0+IG8udmFsdWUgPT0gdGhpcy5zdGF0ZS52YWx1ZSk7fVxyXG5cclxuICAgIGdldCBvcHRpb25zKCkge1xyXG4gICAgICAgIGNvbnN0IHNlbGVjdGVkID0gdGhpcy5zZWxlY3RlZDtcclxuICAgICAgICByZXR1cm4gPGRpdiBjbGFzc05hbWU9XCJiZC1zZWxlY3Qtb3B0aW9uc1wiPlxyXG4gICAgICAgICAgICB7dGhpcy5wcm9wcy5vcHRpb25zLm1hcChvcHQgPT4gXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YGJkLXNlbGVjdC1vcHRpb24ke3NlbGVjdGVkLnZhbHVlID09IG9wdC52YWx1ZSA/IFwiIHNlbGVjdGVkXCIgOiBcIlwifWB9IG9uQ2xpY2s9e3RoaXMub25DaGFuZ2UuYmluZCh0aGlzLCBvcHQudmFsdWUpfT57b3B0LmxhYmVsfTwvZGl2PlxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgIDwvZGl2PjtcclxuICAgIH1cclxuXHJcbiAgICByZW5kZXIoKSB7XHJcbiAgICAgICAgY29uc3Qgc3R5bGUgPSB0aGlzLnByb3BzLnN0eWxlID09IFwidHJhbnNwYXJlbnRcIiA/IFwiIGJkLXNlbGVjdC10cmFuc3BhcmVudFwiIDogXCJcIjtcclxuICAgICAgICBjb25zdCBpc09wZW4gPSB0aGlzLnN0YXRlLm9wZW4gPyBcIiBtZW51LW9wZW5cIiA6IFwiXCI7XHJcbiAgICAgICAgcmV0dXJuICA8ZGl2IGNsYXNzTmFtZT17YGJkLXNlbGVjdCR7c3R5bGV9JHtpc09wZW59YH0gb25DbGljaz17dGhpcy5zaG93TWVudX0gcmVmPXt0aGlzLmRyb3Bkb3dufT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJkLXNlbGVjdC12YWx1ZVwiPnt0aGlzLnNlbGVjdGVkLmxhYmVsfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxBcnJvdyBjbGFzc05hbWU9XCJiZC1zZWxlY3QtYXJyb3dcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIHt0aGlzLnN0YXRlLm9wZW4gJiYgdGhpcy5vcHRpb25zfVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+O1xyXG4gICAgfVxyXG59XHJcblxyXG4vLyByZXR1cm4gPGRpdiBjbGFzc05hbWU9XCJiZC1zZWxlY3Qtd3JhcFwiPlxyXG4vLyA8bGFiZWwgY2xhc3NOYW1lPVwiYmQtbGFiZWxcIj57dGhpcy5wcm9wcy5sYWJlbH08L2xhYmVsPlxyXG4vLyA8ZGl2IGNsYXNzTmFtZT17YGJkLXNlbGVjdCR7c3R5bGV9JHtpc09wZW59YH0gb25DbGljaz17dGhpcy5zaG93TWVudX0gcmVmPXt0aGlzLmRyb3Bkb3dufT5cclxuLy8gICAgIDxkaXYgY2xhc3NOYW1lPVwiYmQtc2VsZWN0LWNvbnRyb2xzXCI+XHJcbi8vICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZC1zZWxlY3QtdmFsdWVcIj57dGhpcy5zZWxlY3RlZC5sYWJlbH08L2Rpdj5cclxuLy8gICAgICAgICA8QXJyb3cgY2xhc3NOYW1lPVwiYmQtc2VsZWN0LWFycm93XCIgLz5cclxuLy8gICAgIDwvZGl2PlxyXG4vLyA8L2Rpdj5cclxuLy8ge3RoaXMuc3RhdGUub3BlbiAmJiB0aGlzLm9wdGlvbnN9XHJcbi8vIDwvZGl2PjsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/ui/settings/components/dropdown.jsx\n"); /***/ }), @@ -1055,7 +1054,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return SettingItem; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass SettingItem extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-setting-item\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-setting-header\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"label\", {\n htmlFor: this.props.id,\n className: \"bd-setting-title\"\n }, this.props.name), this.props.children), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-setting-note\"\n }, this.props.note), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-setting-divider\"\n }));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL3NldHRpbmdzL2NvbXBvbmVudHMvaXRlbS5qc3g/NzY1NyJdLCJuYW1lcyI6WyJTZXR0aW5nSXRlbSIsIlJlYWN0IiwiQ29tcG9uZW50IiwicmVuZGVyIiwicHJvcHMiLCJpZCIsIm5hbWUiLCJjaGlsZHJlbiIsIm5vdGUiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRWUsTUFBTUEsV0FBTixTQUEwQkMsNkNBQUssQ0FBQ0MsU0FBaEMsQ0FBMEM7QUFDckRDLFFBQU0sR0FBRztBQUNMLHdCQUFPO0FBQUssZUFBUyxFQUFFO0FBQWhCLG9CQUNLO0FBQUssZUFBUyxFQUFFO0FBQWhCLG9CQUNJO0FBQU8sYUFBTyxFQUFFLEtBQUtDLEtBQUwsQ0FBV0MsRUFBM0I7QUFBK0IsZUFBUyxFQUFFO0FBQTFDLE9BQStELEtBQUtELEtBQUwsQ0FBV0UsSUFBMUUsQ0FESixFQUVLLEtBQUtGLEtBQUwsQ0FBV0csUUFGaEIsQ0FETCxlQUtLO0FBQUssZUFBUyxFQUFFO0FBQWhCLE9BQW9DLEtBQUtILEtBQUwsQ0FBV0ksSUFBL0MsQ0FMTCxlQU1LO0FBQUssZUFBUyxFQUFFO0FBQWhCLE1BTkwsQ0FBUDtBQVFIOztBQVZvRCIsImZpbGUiOiIuL3NyYy91aS9zZXR0aW5ncy9jb21wb25lbnRzL2l0ZW0uanN4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtSZWFjdH0gZnJvbSBcIm1vZHVsZXNcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNldHRpbmdJdGVtIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICByZXR1cm4gPGRpdiBjbGFzc05hbWU9e1wiYmQtc2V0dGluZy1pdGVtXCJ9PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtcImJkLXNldHRpbmctaGVhZGVyXCJ9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgaHRtbEZvcj17dGhpcy5wcm9wcy5pZH0gY2xhc3NOYW1lPXtcImJkLXNldHRpbmctdGl0bGVcIn0+e3RoaXMucHJvcHMubmFtZX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7dGhpcy5wcm9wcy5jaGlsZHJlbn1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17XCJiZC1zZXR0aW5nLW5vdGVcIn0+e3RoaXMucHJvcHMubm90ZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17XCJiZC1zZXR0aW5nLWRpdmlkZXJcIn0gLz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PjtcclxuICAgIH1cclxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/settings/components/item.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return SettingItem; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass SettingItem extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-setting-item\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-setting-header\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"label\", {\n htmlFor: this.props.id,\n className: \"bd-setting-title\"\n }, this.props.name), this.props.children), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-setting-note\"\n }, this.props.note), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-setting-divider\"\n }));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvc2V0dGluZ3MvY29tcG9uZW50cy9pdGVtLmpzeD83NjU3Il0sIm5hbWVzIjpbIlNldHRpbmdJdGVtIiwiUmVhY3QiLCJDb21wb25lbnQiLCJyZW5kZXIiLCJwcm9wcyIsImlkIiwibmFtZSIsImNoaWxkcmVuIiwibm90ZSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFFZSxNQUFNQSxXQUFOLFNBQTBCQyw2Q0FBSyxDQUFDQyxTQUFoQyxDQUEwQztBQUNyREMsUUFBTSxHQUFHO0FBQ0wsd0JBQU87QUFBSyxlQUFTLEVBQUU7QUFBaEIsb0JBQ0s7QUFBSyxlQUFTLEVBQUU7QUFBaEIsb0JBQ0k7QUFBTyxhQUFPLEVBQUUsS0FBS0MsS0FBTCxDQUFXQyxFQUEzQjtBQUErQixlQUFTLEVBQUU7QUFBMUMsT0FBK0QsS0FBS0QsS0FBTCxDQUFXRSxJQUExRSxDQURKLEVBRUssS0FBS0YsS0FBTCxDQUFXRyxRQUZoQixDQURMLGVBS0s7QUFBSyxlQUFTLEVBQUU7QUFBaEIsT0FBb0MsS0FBS0gsS0FBTCxDQUFXSSxJQUEvQyxDQUxMLGVBTUs7QUFBSyxlQUFTLEVBQUU7QUFBaEIsTUFOTCxDQUFQO0FBUUg7O0FBVm9EIiwiZmlsZSI6Ii4vc3JjL3VpL3NldHRpbmdzL2NvbXBvbmVudHMvaXRlbS5qc3guanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlYWN0fSBmcm9tIFwibW9kdWxlc1wiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2V0dGluZ0l0ZW0gZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIHJldHVybiA8ZGl2IGNsYXNzTmFtZT17XCJiZC1zZXR0aW5nLWl0ZW1cIn0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e1wiYmQtc2V0dGluZy1oZWFkZXJcIn0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBodG1sRm9yPXt0aGlzLnByb3BzLmlkfSBjbGFzc05hbWU9e1wiYmQtc2V0dGluZy10aXRsZVwifT57dGhpcy5wcm9wcy5uYW1lfTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt0aGlzLnByb3BzLmNoaWxkcmVufVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtcImJkLXNldHRpbmctbm90ZVwifT57dGhpcy5wcm9wcy5ub3RlfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtcImJkLXNldHRpbmctZGl2aWRlclwifSAvPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+O1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/settings/components/item.jsx\n"); /***/ }), @@ -1067,7 +1066,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Search; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _icons_search__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../icons/search */ \"./src/ui/icons/search.jsx\");\n\n\nclass Search extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-search-wrapper\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"input\", {\n onChange: this.props.onChange,\n onKeyDown: this.props.onKeyDown,\n type: \"text\",\n className: \"bd-search\",\n placeholder: this.props.placeholder,\n maxLength: \"50\"\n }), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_search__WEBPACK_IMPORTED_MODULE_1__[\"default\"], null));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL3NldHRpbmdzL2NvbXBvbmVudHMvc2VhcmNoLmpzeD82NzI0Il0sIm5hbWVzIjpbIlNlYXJjaCIsIlJlYWN0IiwiQ29tcG9uZW50IiwicmVuZGVyIiwicHJvcHMiLCJvbkNoYW5nZSIsIm9uS2V5RG93biIsInBsYWNlaG9sZGVyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFFZSxNQUFNQSxNQUFOLFNBQXFCQyw2Q0FBSyxDQUFDQyxTQUEzQixDQUFxQztBQUNoREMsUUFBTSxHQUFHO0FBQ0wsd0JBQU87QUFBSyxlQUFTLEVBQUM7QUFBZixvQkFDSztBQUFPLGNBQVEsRUFBRSxLQUFLQyxLQUFMLENBQVdDLFFBQTVCO0FBQXNDLGVBQVMsRUFBRSxLQUFLRCxLQUFMLENBQVdFLFNBQTVEO0FBQXVFLFVBQUksRUFBQyxNQUE1RTtBQUFtRixlQUFTLEVBQUMsV0FBN0Y7QUFBeUcsaUJBQVcsRUFBRSxLQUFLRixLQUFMLENBQVdHLFdBQWpJO0FBQThJLGVBQVMsRUFBQztBQUF4SixNQURMLGVBRUssNERBQUMscURBQUQsT0FGTCxDQUFQO0FBSUg7O0FBTitDIiwiZmlsZSI6Ii4vc3JjL3VpL3NldHRpbmdzL2NvbXBvbmVudHMvc2VhcmNoLmpzeC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhY3R9IGZyb20gXCJtb2R1bGVzXCI7XHJcbmltcG9ydCBTZWFyY2hJY29uIGZyb20gXCIuLi8uLi9pY29ucy9zZWFyY2hcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNlYXJjaCBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XHJcbiAgICByZW5kZXIoKSB7XHJcbiAgICAgICAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPVwiYmQtc2VhcmNoLXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgb25DaGFuZ2U9e3RoaXMucHJvcHMub25DaGFuZ2V9IG9uS2V5RG93bj17dGhpcy5wcm9wcy5vbktleURvd259IHR5cGU9XCJ0ZXh0XCIgY2xhc3NOYW1lPVwiYmQtc2VhcmNoXCIgcGxhY2Vob2xkZXI9e3RoaXMucHJvcHMucGxhY2Vob2xkZXJ9IG1heExlbmd0aD1cIjUwXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8U2VhcmNoSWNvbiAvPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+O1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/settings/components/search.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Search; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _icons_search__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../icons/search */ \"./src/ui/icons/search.jsx\");\n\n\nclass Search extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-search-wrapper\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"input\", {\n onChange: this.props.onChange,\n onKeyDown: this.props.onKeyDown,\n type: \"text\",\n className: \"bd-search\",\n placeholder: this.props.placeholder,\n maxLength: \"50\"\n }), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_search__WEBPACK_IMPORTED_MODULE_1__[\"default\"], null));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvc2V0dGluZ3MvY29tcG9uZW50cy9zZWFyY2guanN4PzY3MjQiXSwibmFtZXMiOlsiU2VhcmNoIiwiUmVhY3QiLCJDb21wb25lbnQiLCJyZW5kZXIiLCJwcm9wcyIsIm9uQ2hhbmdlIiwib25LZXlEb3duIiwicGxhY2Vob2xkZXIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUVlLE1BQU1BLE1BQU4sU0FBcUJDLDZDQUFLLENBQUNDLFNBQTNCLENBQXFDO0FBQ2hEQyxRQUFNLEdBQUc7QUFDTCx3QkFBTztBQUFLLGVBQVMsRUFBQztBQUFmLG9CQUNLO0FBQU8sY0FBUSxFQUFFLEtBQUtDLEtBQUwsQ0FBV0MsUUFBNUI7QUFBc0MsZUFBUyxFQUFFLEtBQUtELEtBQUwsQ0FBV0UsU0FBNUQ7QUFBdUUsVUFBSSxFQUFDLE1BQTVFO0FBQW1GLGVBQVMsRUFBQyxXQUE3RjtBQUF5RyxpQkFBVyxFQUFFLEtBQUtGLEtBQUwsQ0FBV0csV0FBakk7QUFBOEksZUFBUyxFQUFDO0FBQXhKLE1BREwsZUFFSyw0REFBQyxxREFBRCxPQUZMLENBQVA7QUFJSDs7QUFOK0MiLCJmaWxlIjoiLi9zcmMvdWkvc2V0dGluZ3MvY29tcG9uZW50cy9zZWFyY2guanN4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtSZWFjdH0gZnJvbSBcIm1vZHVsZXNcIjtcclxuaW1wb3J0IFNlYXJjaEljb24gZnJvbSBcIi4uLy4uL2ljb25zL3NlYXJjaFwiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2VhcmNoIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICByZXR1cm4gPGRpdiBjbGFzc05hbWU9XCJiZC1zZWFyY2gtd3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBvbkNoYW5nZT17dGhpcy5wcm9wcy5vbkNoYW5nZX0gb25LZXlEb3duPXt0aGlzLnByb3BzLm9uS2V5RG93bn0gdHlwZT1cInRleHRcIiBjbGFzc05hbWU9XCJiZC1zZWFyY2hcIiBwbGFjZWhvbGRlcj17dGhpcy5wcm9wcy5wbGFjZWhvbGRlcn0gbWF4TGVuZ3RoPVwiNTBcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDxTZWFyY2hJY29uIC8+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj47XHJcbiAgICB9XHJcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/ui/settings/components/search.jsx\n"); /***/ }), @@ -1079,7 +1078,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Switch; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass Switch extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n this.state = {\n checked: this.props.checked\n };\n this.onChange = this.onChange.bind(this);\n }\n\n onChange() {\n if (this.props.disabled) return;\n this.props.onChange(!this.state.checked);\n this.setState({\n checked: !this.state.checked\n });\n }\n\n render() {\n const enabledClass = this.props.disabled ? \" bd-switch-disabled\" : \"\";\n const checkedClass = this.state.checked ? \" bd-switch-checked\" : \"\";\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: `bd-switch` + enabledClass + checkedClass\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"input\", {\n type: \"checkbox\",\n id: this.props.id,\n className: `bd-checkbox`,\n disabled: this.props.disabled,\n checked: this.state.checked,\n onChange: this.onChange\n }));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL3NldHRpbmdzL2NvbXBvbmVudHMvc3dpdGNoLmpzeD82MWQyIl0sIm5hbWVzIjpbIlN3aXRjaCIsIlJlYWN0IiwiQ29tcG9uZW50IiwiY29uc3RydWN0b3IiLCJwcm9wcyIsInN0YXRlIiwiY2hlY2tlZCIsIm9uQ2hhbmdlIiwiYmluZCIsImRpc2FibGVkIiwic2V0U3RhdGUiLCJyZW5kZXIiLCJlbmFibGVkQ2xhc3MiLCJjaGVja2VkQ2xhc3MiLCJpZCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFFZSxNQUFNQSxNQUFOLFNBQXFCQyw2Q0FBSyxDQUFDQyxTQUEzQixDQUFxQztBQUNoREMsYUFBVyxDQUFDQyxLQUFELEVBQVE7QUFDZixVQUFNQSxLQUFOO0FBQ0EsU0FBS0MsS0FBTCxHQUFhO0FBQUNDLGFBQU8sRUFBRSxLQUFLRixLQUFMLENBQVdFO0FBQXJCLEtBQWI7QUFDQSxTQUFLQyxRQUFMLEdBQWdCLEtBQUtBLFFBQUwsQ0FBY0MsSUFBZCxDQUFtQixJQUFuQixDQUFoQjtBQUNIOztBQUVERCxVQUFRLEdBQUc7QUFDUCxRQUFJLEtBQUtILEtBQUwsQ0FBV0ssUUFBZixFQUF5QjtBQUN6QixTQUFLTCxLQUFMLENBQVdHLFFBQVgsQ0FBb0IsQ0FBQyxLQUFLRixLQUFMLENBQVdDLE9BQWhDO0FBQ0EsU0FBS0ksUUFBTCxDQUFjO0FBQUNKLGFBQU8sRUFBRSxDQUFDLEtBQUtELEtBQUwsQ0FBV0M7QUFBdEIsS0FBZDtBQUNIOztBQUVESyxRQUFNLEdBQUc7QUFDTCxVQUFNQyxZQUFZLEdBQUcsS0FBS1IsS0FBTCxDQUFXSyxRQUFYLEdBQXNCLHFCQUF0QixHQUE4QyxFQUFuRTtBQUNBLFVBQU1JLFlBQVksR0FBRyxLQUFLUixLQUFMLENBQVdDLE9BQVgsR0FBcUIsb0JBQXJCLEdBQTRDLEVBQWpFO0FBQ0Esd0JBQVE7QUFBSyxlQUFTLEVBQUcsV0FBRCxHQUFjTSxZQUFkLEdBQTZCQztBQUE3QyxvQkFDSTtBQUFPLFVBQUksRUFBQyxVQUFaO0FBQXVCLFFBQUUsRUFBRSxLQUFLVCxLQUFMLENBQVdVLEVBQXRDO0FBQTBDLGVBQVMsRUFBRyxhQUF0RDtBQUFvRSxjQUFRLEVBQUUsS0FBS1YsS0FBTCxDQUFXSyxRQUF6RjtBQUFtRyxhQUFPLEVBQUUsS0FBS0osS0FBTCxDQUFXQyxPQUF2SDtBQUFnSSxjQUFRLEVBQUUsS0FBS0M7QUFBL0ksTUFESixDQUFSO0FBR0g7O0FBbkIrQyIsImZpbGUiOiIuL3NyYy91aS9zZXR0aW5ncy9jb21wb25lbnRzL3N3aXRjaC5qc3guanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlYWN0fSBmcm9tIFwibW9kdWxlc1wiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU3dpdGNoIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcclxuICAgIGNvbnN0cnVjdG9yKHByb3BzKSB7XHJcbiAgICAgICAgc3VwZXIocHJvcHMpO1xyXG4gICAgICAgIHRoaXMuc3RhdGUgPSB7Y2hlY2tlZDogdGhpcy5wcm9wcy5jaGVja2VkfTtcclxuICAgICAgICB0aGlzLm9uQ2hhbmdlID0gdGhpcy5vbkNoYW5nZS5iaW5kKHRoaXMpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uQ2hhbmdlKCkge1xyXG4gICAgICAgIGlmICh0aGlzLnByb3BzLmRpc2FibGVkKSByZXR1cm47XHJcbiAgICAgICAgdGhpcy5wcm9wcy5vbkNoYW5nZSghdGhpcy5zdGF0ZS5jaGVja2VkKTtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtjaGVja2VkOiAhdGhpcy5zdGF0ZS5jaGVja2VkfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIGNvbnN0IGVuYWJsZWRDbGFzcyA9IHRoaXMucHJvcHMuZGlzYWJsZWQgPyBcIiBiZC1zd2l0Y2gtZGlzYWJsZWRcIiA6IFwiXCI7XHJcbiAgICAgICAgY29uc3QgY2hlY2tlZENsYXNzID0gdGhpcy5zdGF0ZS5jaGVja2VkID8gXCIgYmQtc3dpdGNoLWNoZWNrZWRcIiA6IFwiXCI7XHJcbiAgICAgICAgcmV0dXJuICA8ZGl2IGNsYXNzTmFtZT17YGJkLXN3aXRjaGAgKyBlbmFibGVkQ2xhc3MgKyBjaGVja2VkQ2xhc3N9PlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBpZD17dGhpcy5wcm9wcy5pZH0gY2xhc3NOYW1lPXtgYmQtY2hlY2tib3hgfSBkaXNhYmxlZD17dGhpcy5wcm9wcy5kaXNhYmxlZH0gY2hlY2tlZD17dGhpcy5zdGF0ZS5jaGVja2VkfSBvbkNoYW5nZT17dGhpcy5vbkNoYW5nZX0gLz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PjtcclxuICAgIH1cclxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/settings/components/switch.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Switch; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass Switch extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n this.state = {\n checked: this.props.checked\n };\n this.onChange = this.onChange.bind(this);\n }\n\n onChange() {\n if (this.props.disabled) return;\n this.props.onChange(!this.state.checked);\n this.setState({\n checked: !this.state.checked\n });\n }\n\n render() {\n const enabledClass = this.props.disabled ? \" bd-switch-disabled\" : \"\";\n const checkedClass = this.state.checked ? \" bd-switch-checked\" : \"\";\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: `bd-switch` + enabledClass + checkedClass\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"input\", {\n type: \"checkbox\",\n id: this.props.id,\n className: `bd-checkbox`,\n disabled: this.props.disabled,\n checked: this.state.checked,\n onChange: this.onChange\n }));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvc2V0dGluZ3MvY29tcG9uZW50cy9zd2l0Y2guanN4PzYxZDIiXSwibmFtZXMiOlsiU3dpdGNoIiwiUmVhY3QiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwic3RhdGUiLCJjaGVja2VkIiwib25DaGFuZ2UiLCJiaW5kIiwiZGlzYWJsZWQiLCJzZXRTdGF0ZSIsInJlbmRlciIsImVuYWJsZWRDbGFzcyIsImNoZWNrZWRDbGFzcyIsImlkIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVlLE1BQU1BLE1BQU4sU0FBcUJDLDZDQUFLLENBQUNDLFNBQTNCLENBQXFDO0FBQ2hEQyxhQUFXLENBQUNDLEtBQUQsRUFBUTtBQUNmLFVBQU1BLEtBQU47QUFDQSxTQUFLQyxLQUFMLEdBQWE7QUFBQ0MsYUFBTyxFQUFFLEtBQUtGLEtBQUwsQ0FBV0U7QUFBckIsS0FBYjtBQUNBLFNBQUtDLFFBQUwsR0FBZ0IsS0FBS0EsUUFBTCxDQUFjQyxJQUFkLENBQW1CLElBQW5CLENBQWhCO0FBQ0g7O0FBRURELFVBQVEsR0FBRztBQUNQLFFBQUksS0FBS0gsS0FBTCxDQUFXSyxRQUFmLEVBQXlCO0FBQ3pCLFNBQUtMLEtBQUwsQ0FBV0csUUFBWCxDQUFvQixDQUFDLEtBQUtGLEtBQUwsQ0FBV0MsT0FBaEM7QUFDQSxTQUFLSSxRQUFMLENBQWM7QUFBQ0osYUFBTyxFQUFFLENBQUMsS0FBS0QsS0FBTCxDQUFXQztBQUF0QixLQUFkO0FBQ0g7O0FBRURLLFFBQU0sR0FBRztBQUNMLFVBQU1DLFlBQVksR0FBRyxLQUFLUixLQUFMLENBQVdLLFFBQVgsR0FBc0IscUJBQXRCLEdBQThDLEVBQW5FO0FBQ0EsVUFBTUksWUFBWSxHQUFHLEtBQUtSLEtBQUwsQ0FBV0MsT0FBWCxHQUFxQixvQkFBckIsR0FBNEMsRUFBakU7QUFDQSx3QkFBUTtBQUFLLGVBQVMsRUFBRyxXQUFELEdBQWNNLFlBQWQsR0FBNkJDO0FBQTdDLG9CQUNJO0FBQU8sVUFBSSxFQUFDLFVBQVo7QUFBdUIsUUFBRSxFQUFFLEtBQUtULEtBQUwsQ0FBV1UsRUFBdEM7QUFBMEMsZUFBUyxFQUFHLGFBQXREO0FBQW9FLGNBQVEsRUFBRSxLQUFLVixLQUFMLENBQVdLLFFBQXpGO0FBQW1HLGFBQU8sRUFBRSxLQUFLSixLQUFMLENBQVdDLE9BQXZIO0FBQWdJLGNBQVEsRUFBRSxLQUFLQztBQUEvSSxNQURKLENBQVI7QUFHSDs7QUFuQitDIiwiZmlsZSI6Ii4vc3JjL3VpL3NldHRpbmdzL2NvbXBvbmVudHMvc3dpdGNoLmpzeC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhY3R9IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTd2l0Y2ggZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xyXG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcclxuICAgICAgICBzdXBlcihwcm9wcyk7XHJcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHtjaGVja2VkOiB0aGlzLnByb3BzLmNoZWNrZWR9O1xyXG4gICAgICAgIHRoaXMub25DaGFuZ2UgPSB0aGlzLm9uQ2hhbmdlLmJpbmQodGhpcyk7XHJcbiAgICB9XHJcblxyXG4gICAgb25DaGFuZ2UoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMucHJvcHMuZGlzYWJsZWQpIHJldHVybjtcclxuICAgICAgICB0aGlzLnByb3BzLm9uQ2hhbmdlKCF0aGlzLnN0YXRlLmNoZWNrZWQpO1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe2NoZWNrZWQ6ICF0aGlzLnN0YXRlLmNoZWNrZWR9KTtcclxuICAgIH1cclxuXHJcbiAgICByZW5kZXIoKSB7XHJcbiAgICAgICAgY29uc3QgZW5hYmxlZENsYXNzID0gdGhpcy5wcm9wcy5kaXNhYmxlZCA/IFwiIGJkLXN3aXRjaC1kaXNhYmxlZFwiIDogXCJcIjtcclxuICAgICAgICBjb25zdCBjaGVja2VkQ2xhc3MgPSB0aGlzLnN0YXRlLmNoZWNrZWQgPyBcIiBiZC1zd2l0Y2gtY2hlY2tlZFwiIDogXCJcIjtcclxuICAgICAgICByZXR1cm4gIDxkaXYgY2xhc3NOYW1lPXtgYmQtc3dpdGNoYCArIGVuYWJsZWRDbGFzcyArIGNoZWNrZWRDbGFzc30+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIGlkPXt0aGlzLnByb3BzLmlkfSBjbGFzc05hbWU9e2BiZC1jaGVja2JveGB9IGRpc2FibGVkPXt0aGlzLnByb3BzLmRpc2FibGVkfSBjaGVja2VkPXt0aGlzLnN0YXRlLmNoZWNrZWR9IG9uQ2hhbmdlPXt0aGlzLm9uQ2hhbmdlfSAvPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+O1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/settings/components/switch.jsx\n"); /***/ }), @@ -1091,7 +1090,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Divider; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass Divider extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-divider divider-3573oO marginTop8-1DLZ1n marginBottom40-2vIwTv\"\n });\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL3NldHRpbmdzL2RpdmlkZXIuanN4P2M4Y2MiXSwibmFtZXMiOlsiRGl2aWRlciIsIlJlYWN0IiwiQ29tcG9uZW50IiwicmVuZGVyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVlLE1BQU1BLE9BQU4sU0FBc0JDLDZDQUFLLENBQUNDLFNBQTVCLENBQXNDO0FBQ2pEQyxRQUFNLEdBQUc7QUFDTCx3QkFBTztBQUFLLGVBQVMsRUFBQztBQUFmLE1BQVA7QUFDSDs7QUFIZ0QiLCJmaWxlIjoiLi9zcmMvdWkvc2V0dGluZ3MvZGl2aWRlci5qc3guanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlYWN0fSBmcm9tIFwibW9kdWxlc1wiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGl2aWRlciBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XHJcbiAgICByZW5kZXIoKSB7XHJcbiAgICAgICAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPVwiYmQtZGl2aWRlciBkaXZpZGVyLTM1NzNvTyBtYXJnaW5Ub3A4LTFETFoxbiBtYXJnaW5Cb3R0b200MC0ydkl3VHZcIiAvPjtcclxuICAgIH1cclxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/settings/divider.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Divider; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nclass Divider extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-divider divider-3573oO marginTop8-1DLZ1n marginBottom40-2vIwTv\"\n });\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvc2V0dGluZ3MvZGl2aWRlci5qc3g/YzhjYyJdLCJuYW1lcyI6WyJEaXZpZGVyIiwiUmVhY3QiLCJDb21wb25lbnQiLCJyZW5kZXIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRWUsTUFBTUEsT0FBTixTQUFzQkMsNkNBQUssQ0FBQ0MsU0FBNUIsQ0FBc0M7QUFDakRDLFFBQU0sR0FBRztBQUNMLHdCQUFPO0FBQUssZUFBUyxFQUFDO0FBQWYsTUFBUDtBQUNIOztBQUhnRCIsImZpbGUiOiIuL3NyYy91aS9zZXR0aW5ncy9kaXZpZGVyLmpzeC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhY3R9IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEaXZpZGVyIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICByZXR1cm4gPGRpdiBjbGFzc05hbWU9XCJiZC1kaXZpZGVyIGRpdmlkZXItMzU3M29PIG1hcmdpblRvcDgtMURMWjFuIG1hcmdpbkJvdHRvbTQwLTJ2SXdUdlwiIC8+O1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/settings/divider.jsx\n"); /***/ }), @@ -1103,7 +1102,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Group; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _title__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./title */ \"./src/ui/settings/title.jsx\");\n/* harmony import */ var _divider__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./divider */ \"./src/ui/settings/divider.jsx\");\n/* harmony import */ var _components_switch__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./components/switch */ \"./src/ui/settings/components/switch.jsx\");\n/* harmony import */ var _components_dropdown__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./components/dropdown */ \"./src/ui/settings/components/dropdown.jsx\");\n/* harmony import */ var _components_item__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./components/item */ \"./src/ui/settings/components/item.jsx\");\n\n\n\n\n\n\nconst baseClassName = \"bd-settings-group\";\nclass Group extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n\n if (this.props.button && this.props.collapsible) {\n const original = this.props.button.onClick;\n\n this.props.button.onClick = event => {\n event.stopPropagation();\n original(...arguments);\n };\n }\n\n if (!this.props.hasOwnProperty(\"shown\")) this.props.shown = true;\n this.container = modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createRef();\n this.state = {\n collapsed: this.props.collapsible && !this.props.shown\n };\n this.onChange = this.onChange.bind(this);\n this.toggleCollapse = this.toggleCollapse.bind(this);\n }\n\n toggleCollapse() {\n const container = this.container.current;\n const timeout = this.state.collapsed ? 300 : 1;\n container.style.setProperty(\"height\", container.scrollHeight + \"px\");\n container.classList.add(\"animating\");\n this.setState({\n collapsed: !this.state.collapsed\n }, () => setTimeout(() => {\n container.style.setProperty(\"height\", \"\");\n container.classList.remove(\"animating\");\n }, timeout));\n if (this.props.onDrawerToggle) this.props.onDrawerToggle(this.state.collapsed);\n }\n\n onChange(id, value) {\n if (!this.props.onChange) return;\n if (this.props.id) this.props.onChange(this.props.id, id, value);else this.props.onChange(id, value);\n this.forceUpdate();\n }\n\n render() {\n const {\n settings\n } = this.props;\n const collapseClass = this.props.collapsible ? `collapsible ${this.state.collapsed ? \"collapsed\" : \"expanded\"}` : \"\";\n const groupClass = `${baseClassName} ${collapseClass}`;\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: groupClass\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_title__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n text: this.props.name,\n collapsible: this.props.collapsible,\n onClick: this.toggleCollapse,\n button: this.props.button,\n isGroup: true\n }), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-settings-container\",\n ref: this.container\n }, settings.filter(s => !s.hidden).map(setting => {\n let component = null;\n if (setting.type == \"dropdown\") component = /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_components_dropdown__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n disabled: setting.disabled,\n id: setting.id,\n options: setting.options,\n value: setting.value,\n onChange: this.onChange.bind(this, setting.id)\n });\n if (setting.type == \"switch\") component = /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_components_switch__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n disabled: setting.disabled,\n id: setting.id,\n checked: setting.value,\n onChange: this.onChange.bind(this, setting.id)\n });\n if (!component) return null;\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_components_item__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n id: setting.id,\n key: setting.id,\n name: setting.name,\n note: setting.note\n }, component);\n })), this.props.showDivider && /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_divider__WEBPACK_IMPORTED_MODULE_2__[\"default\"], null));\n }\n\n}\nconst originalRender = Group.prototype.render;\nObject.defineProperty(Group.prototype, \"render\", {\n enumerable: false,\n configurable: false,\n set: function () {\n modules__WEBPACK_IMPORTED_MODULE_0__[\"Logger\"].warn(\"Group\", \"Addon policy for plugins #5 https://github.com/rauenzi/BetterDiscordApp/wiki/Addon-Policies#plugins\");\n },\n get: () => originalRender\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL3NldHRpbmdzL2dyb3VwLmpzeD8xYjcyIl0sIm5hbWVzIjpbImJhc2VDbGFzc05hbWUiLCJHcm91cCIsIlJlYWN0IiwiQ29tcG9uZW50IiwiY29uc3RydWN0b3IiLCJwcm9wcyIsImJ1dHRvbiIsImNvbGxhcHNpYmxlIiwib3JpZ2luYWwiLCJvbkNsaWNrIiwiZXZlbnQiLCJzdG9wUHJvcGFnYXRpb24iLCJhcmd1bWVudHMiLCJoYXNPd25Qcm9wZXJ0eSIsInNob3duIiwiY29udGFpbmVyIiwiY3JlYXRlUmVmIiwic3RhdGUiLCJjb2xsYXBzZWQiLCJvbkNoYW5nZSIsImJpbmQiLCJ0b2dnbGVDb2xsYXBzZSIsImN1cnJlbnQiLCJ0aW1lb3V0Iiwic3R5bGUiLCJzZXRQcm9wZXJ0eSIsInNjcm9sbEhlaWdodCIsImNsYXNzTGlzdCIsImFkZCIsInNldFN0YXRlIiwic2V0VGltZW91dCIsInJlbW92ZSIsIm9uRHJhd2VyVG9nZ2xlIiwiaWQiLCJ2YWx1ZSIsImZvcmNlVXBkYXRlIiwicmVuZGVyIiwic2V0dGluZ3MiLCJjb2xsYXBzZUNsYXNzIiwiZ3JvdXBDbGFzcyIsIm5hbWUiLCJmaWx0ZXIiLCJzIiwiaGlkZGVuIiwibWFwIiwic2V0dGluZyIsImNvbXBvbmVudCIsInR5cGUiLCJkaXNhYmxlZCIsIm9wdGlvbnMiLCJub3RlIiwic2hvd0RpdmlkZXIiLCJvcmlnaW5hbFJlbmRlciIsInByb3RvdHlwZSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsInNldCIsIkxvZ2dlciIsIndhcm4iLCJnZXQiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQSxNQUFNQSxhQUFhLEdBQUcsbUJBQXRCO0FBRWUsTUFBTUMsS0FBTixTQUFvQkMsNkNBQUssQ0FBQ0Ms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LEVBQXlCeUIsT0FBTyxDQUFDWixFQUFqQztBQUF0RixRQUFaO0FBQzlCLFVBQUksQ0FBQ2EsU0FBTCxFQUFnQixPQUFPLElBQVA7QUFDaEIsMEJBQU8sNERBQUMsd0RBQUQ7QUFBTSxVQUFFLEVBQUVELE9BQU8sQ0FBQ1osRUFBbEI7QUFBc0IsV0FBRyxFQUFFWSxPQUFPLENBQUNaLEVBQW5DO0FBQXVDLFlBQUksRUFBRVksT0FBTyxDQUFDTCxJQUFyRDtBQUEyRCxZQUFJLEVBQUVLLE9BQU8sQ0FBQ0s7QUFBekUsU0FBZ0ZKLFNBQWhGLENBQVA7QUFDSCxLQU5BLENBREwsQ0FGTCxFQVdNLEtBQUt6QyxLQUFMLENBQVc4QyxXQUFYLGlCQUEwQiw0REFBQyxnREFBRCxPQVhoQyxDQUFQO0FBYUg7O0FBNUQ4QztBQStEbkQsTUFBTUMsY0FBYyxHQUFHbkQsS0FBSyxDQUFDb0QsU0FBTixDQUFnQmpCLE1BQXZDO0FBQ0FrQixNQUFNLENBQUNDLGNBQVAsQ0FBc0J0RCxLQUFLLENBQUNvRCxTQUE1QixFQUF1QyxRQUF2QyxFQUFpRDtBQUM3Q0csWUFBVSxFQUFFLEtBRGlDO0FBRTdDQyxjQUFZLEVBQUUsS0FGK0I7QUFHN0NDLEtBQUcsRUFBRSxZQUFXO0FBQUNDLGtEQUFNLENBQUNDLElBQVAsQ0FBWSxPQUFaLEVBQXFCLHFHQUFyQjtBQUE2SCxHQUhqRztBQUk3Q0MsS0FBRyxFQUFFLE1BQU1UO0FBSmtDLENBQWpEIiwiZmlsZSI6Ii4vc3JjL3VpL3NldHRpbmdzL2dyb3VwLmpzeC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhY3QsIExvZ2dlcn0gZnJvbSBcIm1vZHVsZXNcIjtcclxuaW1wb3J0IFRpdGxlIGZyb20gXCIuL3RpdGxlXCI7XHJcbmltcG9ydCBEaXZpZGVyIGZyb20gXCIuL2RpdmlkZXJcIjtcclxuaW1wb3J0IFN3aXRjaCBmcm9tIFwiLi9jb21wb25lbnRzL3N3aXRjaFwiO1xyXG5pbXBvcnQgRHJvcGRvd24gZnJvbSBcIi4vY29tcG9uZW50cy9kcm9wZG93blwiO1xyXG5pbXBvcnQgSXRlbSBmcm9tIFwiLi9jb21wb25lbnRzL2l0ZW1cIjtcclxuXHJcbmNvbnN0IGJhc2VDbGFzc05hbWUgPSBcImJkLXNldHRpbmdzLWdyb3VwXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBHcm91cCBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XHJcbiAgICBjb25zdHJ1Y3Rvcihwcm9wcykge1xyXG4gICAgICAgIHN1cGVyKHByb3BzKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMucHJvcHMuYnV0dG9uICYmIHRoaXMucHJvcHMuY29sbGFwc2libGUpIHtcclxuICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWwgPSB0aGlzLnByb3BzLmJ1dHRvbi5vbkNsaWNrO1xyXG4gICAgICAgICAgICB0aGlzLnByb3BzLmJ1dHRvbi5vbkNsaWNrID0gKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgICAgIG9yaWdpbmFsKC4uLmFyZ3VtZW50cyk7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIXRoaXMucHJvcHMuaGFzT3duUHJvcGVydHkoXCJzaG93blwiKSkgdGhpcy5wcm9wcy5zaG93biA9IHRydWU7XHJcblxyXG4gICAgICAgIHRoaXMuY29udGFpbmVyID0gUmVhY3QuY3JlYXRlUmVmKCk7XHJcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHtcclxuICAgICAgICAgICAgY29sbGFwc2VkOiB0aGlzLnByb3BzLmNvbGxhcHNpYmxlICYmICF0aGlzLnByb3BzLnNob3duXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IHRoaXMub25DaGFuZ2UuYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLnRvZ2dsZUNvbGxhcHNlID0gdGhpcy50b2dnbGVDb2xsYXBzZS5iaW5kKHRoaXMpO1xyXG4gICAgfVxyXG5cclxuICAgIHRvZ2dsZUNvbGxhcHNlKCkge1xyXG4gICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMuY29udGFpbmVyLmN1cnJlbnQ7XHJcbiAgICAgICAgY29uc3QgdGltZW91dCA9IHRoaXMuc3RhdGUuY29sbGFwc2VkID8gMzAwIDogMTtcclxuICAgICAgICBjb250YWluZXIuc3R5bGUuc2V0UHJvcGVydHkoXCJoZWlnaHRcIiwgY29udGFpbmVyLnNjcm9sbEhlaWdodCArIFwicHhcIik7XHJcbiAgICAgICAgY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoXCJhbmltYXRpbmdcIik7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7Y29sbGFwc2VkOiAhdGhpcy5zdGF0ZS5jb2xsYXBzZWR9LCAoKSA9PiBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgY29udGFpbmVyLnN0eWxlLnNldFByb3BlcnR5KFwiaGVpZ2h0XCIsIFwiXCIpO1xyXG4gICAgICAgICAgICBjb250YWluZXIuY2xhc3NMaXN0LnJlbW92ZShcImFuaW1hdGluZ1wiKTtcclxuICAgICAgICB9LCB0aW1lb3V0KSk7XHJcbiAgICAgICAgaWYgKHRoaXMucHJvcHMub25EcmF3ZXJUb2dnbGUpIHRoaXMucHJvcHMub25EcmF3ZXJUb2dnbGUodGhpcy5zdGF0ZS5jb2xsYXBzZWQpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uQ2hhbmdlKGlkLCB2YWx1ZSkge1xyXG4gICAgICAgIGlmICghdGhpcy5wcm9wcy5vbkNoYW5nZSkgcmV0dXJuO1xyXG4gICAgICAgIGlmICh0aGlzLnByb3BzLmlkKSB0aGlzLnByb3BzLm9uQ2hhbmdlKHRoaXMucHJvcHMuaWQsIGlkLCB2YWx1ZSk7XHJcbiAgICAgICAgZWxzZSB0aGlzLnByb3BzLm9uQ2hhbmdlKGlkLCB2YWx1ZSk7XHJcbiAgICAgICAgdGhpcy5mb3JjZVVwZGF0ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICBjb25zdCB7c2V0dGluZ3N9ID0gdGhpcy5wcm9wcztcclxuICAgICAgICBjb25zdCBjb2xsYXBzZUNsYXNzID0gdGhpcy5wcm9wcy5jb2xsYXBzaWJsZSA/IGBjb2xsYXBzaWJsZSAke3RoaXMuc3RhdGUuY29sbGFwc2VkID8gXCJjb2xsYXBzZWRcIiA6IFwiZXhwYW5kZWRcIn1gIDogXCJcIjtcclxuICAgICAgICBjb25zdCBncm91cENsYXNzID0gYCR7YmFzZUNsYXNzTmFtZX0gJHtjb2xsYXBzZUNsYXNzfWA7XHJcblxyXG4gICAgICAgIHJldHVybiA8ZGl2IGNsYXNzTmFtZT17Z3JvdXBDbGFzc30+XHJcbiAgICAgICAgICAgICAgICAgICAgPFRpdGxlIHRleHQ9e3RoaXMucHJvcHMubmFtZX0gY29sbGFwc2libGU9e3RoaXMucHJvcHMuY29sbGFwc2libGV9IG9uQ2xpY2s9e3RoaXMudG9nZ2xlQ29sbGFwc2V9IGJ1dHRvbj17dGhpcy5wcm9wcy5idXR0b259IGlzR3JvdXA9e3RydWV9IC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZC1zZXR0aW5ncy1jb250YWluZXJcIiByZWY9e3RoaXMuY29udGFpbmVyfT5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3NldHRpbmdzLmZpbHRlcihzID0+ICFzLmhpZGRlbikubWFwKChzZXR0aW5nKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY29tcG9uZW50ID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5nLnR5cGUgPT0gXCJkcm9wZG93blwiKSBjb21wb25lbnQgPSA8RHJvcGRvd24gZGlzYWJsZWQ9e3NldHRpbmcuZGlzYWJsZWR9IGlkPXtzZXR0aW5nLmlkfSBvcHRpb25zPXtzZXR0aW5nLm9wdGlvbnN9IHZhbHVlPXtzZXR0aW5nLnZhbHVlfSBvbkNoYW5nZT17dGhpcy5vbkNoYW5nZS5iaW5kKHRoaXMsIHNldHRpbmcuaWQpfSAvPjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5nLnR5cGUgPT0gXCJzd2l0Y2hcIikgY29tcG9uZW50ID0gPFN3aXRjaCBkaXNhYmxlZD17c2V0dGluZy5kaXNhYmxlZH0gaWQ9e3NldHRpbmcuaWR9IGNoZWNrZWQ9e3NldHRpbmcudmFsdWV9IG9uQ2hhbmdlPXt0aGlzLm9uQ2hhbmdlLmJpbmQodGhpcywgc2V0dGluZy5pZCl9IC8+O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjb21wb25lbnQpIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxJdGVtIGlkPXtzZXR0aW5nLmlkfSBrZXk9e3NldHRpbmcuaWR9IG5hbWU9e3NldHRpbmcubmFtZX0gbm90ZT17c2V0dGluZy5ub3RlfT57Y29tcG9uZW50fTwvSXRlbT47XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIHt0aGlzLnByb3BzLnNob3dEaXZpZGVyICYmIDxEaXZpZGVyIC8+fVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+O1xyXG4gICAgfVxyXG59XHJcblxyXG5jb25zdCBvcmlnaW5hbFJlbmRlciA9IEdyb3VwLnByb3RvdHlwZS5yZW5kZXI7XHJcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShHcm91cC5wcm90b3R5cGUsIFwicmVuZGVyXCIsIHtcclxuICAgIGVudW1lcmFibGU6IGZhbHNlLFxyXG4gICAgY29uZmlndXJhYmxlOiBmYWxzZSxcclxuICAgIHNldDogZnVuY3Rpb24oKSB7TG9nZ2VyLndhcm4oXCJHcm91cFwiLCBcIkFkZG9uIHBvbGljeSBmb3IgcGx1Z2lucyAjNSBodHRwczovL2dpdGh1Yi5jb20vcmF1ZW56aS9CZXR0ZXJEaXNjb3JkQXBwL3dpa2kvQWRkb24tUG9saWNpZXMjcGx1Z2luc1wiKTt9LFxyXG4gICAgZ2V0OiAoKSA9PiBvcmlnaW5hbFJlbmRlclxyXG59KTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/ui/settings/group.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Group; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _title__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./title */ \"./src/ui/settings/title.jsx\");\n/* harmony import */ var _divider__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./divider */ \"./src/ui/settings/divider.jsx\");\n/* harmony import */ var _components_switch__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./components/switch */ \"./src/ui/settings/components/switch.jsx\");\n/* harmony import */ var _components_dropdown__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./components/dropdown */ \"./src/ui/settings/components/dropdown.jsx\");\n/* harmony import */ var _components_item__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./components/item */ \"./src/ui/settings/components/item.jsx\");\n\n\n\n\n\n\nconst baseClassName = \"bd-settings-group\";\nclass Group extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n\n if (this.props.button && this.props.collapsible) {\n const original = this.props.button.onClick;\n\n this.props.button.onClick = event => {\n event.stopPropagation();\n original(...arguments);\n };\n }\n\n if (!this.props.hasOwnProperty(\"shown\")) this.props.shown = true;\n this.container = modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createRef();\n this.state = {\n collapsed: this.props.collapsible && !this.props.shown\n };\n this.onChange = this.onChange.bind(this);\n this.toggleCollapse = this.toggleCollapse.bind(this);\n }\n\n toggleCollapse() {\n const container = this.container.current;\n const timeout = this.state.collapsed ? 300 : 1;\n container.style.setProperty(\"height\", container.scrollHeight + \"px\");\n container.classList.add(\"animating\");\n this.setState({\n collapsed: !this.state.collapsed\n }, () => setTimeout(() => {\n container.style.setProperty(\"height\", \"\");\n container.classList.remove(\"animating\");\n }, timeout));\n if (this.props.onDrawerToggle) this.props.onDrawerToggle(this.state.collapsed);\n }\n\n onChange(id, value) {\n if (!this.props.onChange) return;\n if (this.props.id) this.props.onChange(this.props.id, id, value);else this.props.onChange(id, value);\n this.forceUpdate();\n }\n\n render() {\n const {\n settings\n } = this.props;\n const collapseClass = this.props.collapsible ? `collapsible ${this.state.collapsed ? \"collapsed\" : \"expanded\"}` : \"\";\n const groupClass = `${baseClassName} ${collapseClass}`;\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: groupClass\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_title__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n text: this.props.name,\n collapsible: this.props.collapsible,\n onClick: this.toggleCollapse,\n button: this.props.button,\n isGroup: true\n }), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-settings-container\",\n ref: this.container\n }, settings.filter(s => !s.hidden).map(setting => {\n let component = null;\n if (setting.type == \"dropdown\") component = /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_components_dropdown__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n disabled: setting.disabled,\n id: setting.id,\n options: setting.options,\n value: setting.value,\n onChange: this.onChange.bind(this, setting.id)\n });\n if (setting.type == \"switch\") component = /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_components_switch__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n disabled: setting.disabled,\n id: setting.id,\n checked: setting.value,\n onChange: this.onChange.bind(this, setting.id)\n });\n if (!component) return null;\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_components_item__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n id: setting.id,\n key: setting.id,\n name: setting.name,\n note: setting.note\n }, component);\n })), this.props.showDivider && /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_divider__WEBPACK_IMPORTED_MODULE_2__[\"default\"], null));\n }\n\n}\nconst originalRender = Group.prototype.render;\nObject.defineProperty(Group.prototype, \"render\", {\n enumerable: false,\n configurable: false,\n set: function () {\n modules__WEBPACK_IMPORTED_MODULE_0__[\"Logger\"].warn(\"Group\", \"Addon policy for plugins #5 https://github.com/rauenzi/BetterDiscordApp/wiki/Addon-Policies#plugins\");\n },\n get: () => originalRender\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvc2V0dGluZ3MvZ3JvdXAuanN4PzFiNzIiXSwibmFtZXMiOlsiYmFzZUNsYXNzTmFtZSIsIkdyb3VwIiwiUmVhY3QiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwiYnV0dG9uIiwiY29sbGFwc2libGUiLCJvcmlnaW5hbCIsIm9uQ2xpY2siLCJldmVudCIsInN0b3BQcm9wYWdhdGlvbiIsImFyZ3VtZW50cyIsImhhc093blByb3BlcnR5Iiwic2hvd24iLCJjb250YWluZXIiLCJjcmVhdGVSZWYiLCJzdGF0ZSIsImNvbGxhcHNlZCIsIm9uQ2hhbmdlIiwiYmluZCIsInRvZ2dsZUNvbGxhcHNlIiwiY3VycmVudCIsInRpbWVvdXQiLCJzdHlsZSIsInNldFByb3BlcnR5Iiwic2Nyb2xsSGVpZ2h0IiwiY2xhc3NMaXN0IiwiYWRkIiwic2V0U3RhdGUiLCJzZXRUaW1lb3V0IiwicmVtb3ZlIiwib25EcmF3ZXJUb2dnbGUiLCJpZCIsInZhbHVlIiwiZm9yY2VVcGRhdGUiLCJyZW5kZXIiLCJzZXR0aW5ncyIsImNvbGxhcHNlQ2xhc3MiLCJncm91cENsYXNzIiwibmFtZSIsImZpbHRlciIsInMiLCJoaWRkZW4iLCJtYXAiLCJzZXR0aW5nIiwiY29tcG9uZW50IiwidHlwZSIsImRpc2FibGVkIiwib3B0aW9ucyIsIm5vdGUiLCJzaG93RGl2aWRlciIsIm9yaWdpbmFsUmVuZGVyIiwicHJvdG90eXBlIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwic2V0IiwiTG9nZ2VyIiwid2FybiIsImdldCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBLE1BQU1BLGFBQWEsR0FBRyxtQkFBdEI7QUFFZSxNQUFNQyxLQUFOLFNBQW9CQyw2Q0FBSyxDQUFDQyxTQUEx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eUJ5QixPQUFPLENBQUNaLEVBQWpDO0FBQXRGLFFBQVo7QUFDOUIsVUFBSSxDQUFDYSxTQUFMLEVBQWdCLE9BQU8sSUFBUDtBQUNoQiwwQkFBTyw0REFBQyx3REFBRDtBQUFNLFVBQUUsRUFBRUQsT0FBTyxDQUFDWixFQUFsQjtBQUFzQixXQUFHLEVBQUVZLE9BQU8sQ0FBQ1osRUFBbkM7QUFBdUMsWUFBSSxFQUFFWSxPQUFPLENBQUNMLElBQXJEO0FBQTJELFlBQUksRUFBRUssT0FBTyxDQUFDSztBQUF6RSxTQUFnRkosU0FBaEYsQ0FBUDtBQUNILEtBTkEsQ0FETCxDQUZMLEVBV00sS0FBS3pDLEtBQUwsQ0FBVzhDLFdBQVgsaUJBQTBCLDREQUFDLGdEQUFELE9BWGhDLENBQVA7QUFhSDs7QUE1RDhDO0FBK0RuRCxNQUFNQyxjQUFjLEdBQUduRCxLQUFLLENBQUNvRCxTQUFOLENBQWdCakIsTUFBdkM7QUFDQWtCLE1BQU0sQ0FBQ0MsY0FBUCxDQUFzQnRELEtBQUssQ0FBQ29ELFNBQTVCLEVBQXVDLFFBQXZDLEVBQWlEO0FBQzdDRyxZQUFVLEVBQUUsS0FEaUM7QUFFN0NDLGNBQVksRUFBRSxLQUYrQjtBQUc3Q0MsS0FBRyxFQUFFLFlBQVc7QUFBQ0Msa0RBQU0sQ0FBQ0MsSUFBUCxDQUFZLE9BQVosRUFBcUIscUdBQXJCO0FBQTZILEdBSGpHO0FBSTdDQyxLQUFHLEVBQUUsTUFBTVQ7QUFKa0MsQ0FBakQiLCJmaWxlIjoiLi9zcmMvdWkvc2V0dGluZ3MvZ3JvdXAuanN4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtSZWFjdCwgTG9nZ2VyfSBmcm9tIFwibW9kdWxlc1wiO1xyXG5pbXBvcnQgVGl0bGUgZnJvbSBcIi4vdGl0bGVcIjtcclxuaW1wb3J0IERpdmlkZXIgZnJvbSBcIi4vZGl2aWRlclwiO1xyXG5pbXBvcnQgU3dpdGNoIGZyb20gXCIuL2NvbXBvbmVudHMvc3dpdGNoXCI7XHJcbmltcG9ydCBEcm9wZG93biBmcm9tIFwiLi9jb21wb25lbnRzL2Ryb3Bkb3duXCI7XHJcbmltcG9ydCBJdGVtIGZyb20gXCIuL2NvbXBvbmVudHMvaXRlbVwiO1xyXG5cclxuY29uc3QgYmFzZUNsYXNzTmFtZSA9IFwiYmQtc2V0dGluZ3MtZ3JvdXBcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEdyb3VwIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcclxuICAgIGNvbnN0cnVjdG9yKHByb3BzKSB7XHJcbiAgICAgICAgc3VwZXIocHJvcHMpO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5wcm9wcy5idXR0b24gJiYgdGhpcy5wcm9wcy5jb2xsYXBzaWJsZSkge1xyXG4gICAgICAgICAgICBjb25zdCBvcmlnaW5hbCA9IHRoaXMucHJvcHMuYnV0dG9uLm9uQ2xpY2s7XHJcbiAgICAgICAgICAgIHRoaXMucHJvcHMuYnV0dG9uLm9uQ2xpY2sgPSAoZXZlbnQpID0+IHtcclxuICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICAgICAgb3JpZ2luYWwoLi4uYXJndW1lbnRzKTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5wcm9wcy5oYXNPd25Qcm9wZXJ0eShcInNob3duXCIpKSB0aGlzLnByb3BzLnNob3duID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgdGhpcy5jb250YWluZXIgPSBSZWFjdC5jcmVhdGVSZWYoKTtcclxuICAgICAgICB0aGlzLnN0YXRlID0ge1xyXG4gICAgICAgICAgICBjb2xsYXBzZWQ6IHRoaXMucHJvcHMuY29sbGFwc2libGUgJiYgIXRoaXMucHJvcHMuc2hvd25cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB0aGlzLm9uQ2hhbmdlID0gdGhpcy5vbkNoYW5nZS5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMudG9nZ2xlQ29sbGFwc2UgPSB0aGlzLnRvZ2dsZUNvbGxhcHNlLmJpbmQodGhpcyk7XHJcbiAgICB9XHJcblxyXG4gICAgdG9nZ2xlQ29sbGFwc2UoKSB7XHJcbiAgICAgICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5jb250YWluZXIuY3VycmVudDtcclxuICAgICAgICBjb25zdCB0aW1lb3V0ID0gdGhpcy5zdGF0ZS5jb2xsYXBzZWQgPyAzMDAgOiAxO1xyXG4gICAgICAgIGNvbnRhaW5lci5zdHlsZS5zZXRQcm9wZXJ0eShcImhlaWdodFwiLCBjb250YWluZXIuc2Nyb2xsSGVpZ2h0ICsgXCJweFwiKTtcclxuICAgICAgICBjb250YWluZXIuY2xhc3NMaXN0LmFkZChcImFuaW1hdGluZ1wiKTtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtjb2xsYXBzZWQ6ICF0aGlzLnN0YXRlLmNvbGxhcHNlZH0sICgpID0+IHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICBjb250YWluZXIuc3R5bGUuc2V0UHJvcGVydHkoXCJoZWlnaHRcIiwgXCJcIik7XHJcbiAgICAgICAgICAgIGNvbnRhaW5lci5jbGFzc0xpc3QucmVtb3ZlKFwiYW5pbWF0aW5nXCIpO1xyXG4gICAgICAgIH0sIHRpbWVvdXQpKTtcclxuICAgICAgICBpZiAodGhpcy5wcm9wcy5vbkRyYXdlclRvZ2dsZSkgdGhpcy5wcm9wcy5vbkRyYXdlclRvZ2dsZSh0aGlzLnN0YXRlLmNvbGxhcHNlZCk7XHJcbiAgICB9XHJcblxyXG4gICAgb25DaGFuZ2UoaWQsIHZhbHVlKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnByb3BzLm9uQ2hhbmdlKSByZXR1cm47XHJcbiAgICAgICAgaWYgKHRoaXMucHJvcHMuaWQpIHRoaXMucHJvcHMub25DaGFuZ2UodGhpcy5wcm9wcy5pZCwgaWQsIHZhbHVlKTtcclxuICAgICAgICBlbHNlIHRoaXMucHJvcHMub25DaGFuZ2UoaWQsIHZhbHVlKTtcclxuICAgICAgICB0aGlzLmZvcmNlVXBkYXRlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIGNvbnN0IHtzZXR0aW5nc30gPSB0aGlzLnByb3BzO1xyXG4gICAgICAgIGNvbnN0IGNvbGxhcHNlQ2xhc3MgPSB0aGlzLnByb3BzLmNvbGxhcHNpYmxlID8gYGNvbGxhcHNpYmxlICR7dGhpcy5zdGF0ZS5jb2xsYXBzZWQgPyBcImNvbGxhcHNlZFwiIDogXCJleHBhbmRlZFwifWAgOiBcIlwiO1xyXG4gICAgICAgIGNvbnN0IGdyb3VwQ2xhc3MgPSBgJHtiYXNlQ2xhc3NOYW1lfSAke2NvbGxhcHNlQ2xhc3N9YDtcclxuXHJcbiAgICAgICAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPXtncm91cENsYXNzfT5cclxuICAgICAgICAgICAgICAgICAgICA8VGl0bGUgdGV4dD17dGhpcy5wcm9wcy5uYW1lfSBjb2xsYXBzaWJsZT17dGhpcy5wcm9wcy5jb2xsYXBzaWJsZX0gb25DbGljaz17dGhpcy50b2dnbGVDb2xsYXBzZX0gYnV0dG9uPXt0aGlzLnByb3BzLmJ1dHRvbn0gaXNHcm91cD17dHJ1ZX0gLz5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJkLXNldHRpbmdzLWNvbnRhaW5lclwiIHJlZj17dGhpcy5jb250YWluZXJ9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7c2V0dGluZ3MuZmlsdGVyKHMgPT4gIXMuaGlkZGVuKS5tYXAoKHNldHRpbmcpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjb21wb25lbnQgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmcudHlwZSA9PSBcImRyb3Bkb3duXCIpIGNvbXBvbmVudCA9IDxEcm9wZG93biBkaXNhYmxlZD17c2V0dGluZy5kaXNhYmxlZH0gaWQ9e3NldHRpbmcuaWR9IG9wdGlvbnM9e3NldHRpbmcub3B0aW9uc30gdmFsdWU9e3NldHRpbmcudmFsdWV9IG9uQ2hhbmdlPXt0aGlzLm9uQ2hhbmdlLmJpbmQodGhpcywgc2V0dGluZy5pZCl9IC8+O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmcudHlwZSA9PSBcInN3aXRjaFwiKSBjb21wb25lbnQgPSA8U3dpdGNoIGRpc2FibGVkPXtzZXR0aW5nLmRpc2FibGVkfSBpZD17c2V0dGluZy5pZH0gY2hlY2tlZD17c2V0dGluZy52YWx1ZX0gb25DaGFuZ2U9e3RoaXMub25DaGFuZ2UuYmluZCh0aGlzLCBzZXR0aW5nLmlkKX0gLz47XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbXBvbmVudCkgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPEl0ZW0gaWQ9e3NldHRpbmcuaWR9IGtleT17c2V0dGluZy5pZH0gbmFtZT17c2V0dGluZy5uYW1lfSBub3RlPXtzZXR0aW5nLm5vdGV9Pntjb21wb25lbnR9PC9JdGVtPjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAge3RoaXMucHJvcHMuc2hvd0RpdmlkZXIgJiYgPERpdmlkZXIgLz59XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj47XHJcbiAgICB9XHJcbn1cclxuXHJcbmNvbnN0IG9yaWdpbmFsUmVuZGVyID0gR3JvdXAucHJvdG90eXBlLnJlbmRlcjtcclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KEdyb3VwLnByb3RvdHlwZSwgXCJyZW5kZXJcIiwge1xyXG4gICAgZW51bWVyYWJsZTogZmFsc2UsXHJcbiAgICBjb25maWd1cmFibGU6IGZhbHNlLFxyXG4gICAgc2V0OiBmdW5jdGlvbigpIHtMb2dnZXIud2FybihcIkdyb3VwXCIsIFwiQWRkb24gcG9saWN5IGZvciBwbHVnaW5zICM1IGh0dHBzOi8vZ2l0aHViLmNvbS9yYXVlbnppL0JldHRlckRpc2NvcmRBcHAvd2lraS9BZGRvbi1Qb2xpY2llcyNwbHVnaW5zXCIpO30sXHJcbiAgICBnZXQ6ICgpID0+IG9yaWdpbmFsUmVuZGVyXHJcbn0pOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/settings/group.jsx\n"); /***/ }), @@ -1115,7 +1114,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return SettingsTitle; });\n/* harmony import */ var data__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! data */ \"./src/data/data.js\");\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _icons_history__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../icons/history */ \"./src/ui/icons/history.jsx\");\n/* harmony import */ var _modals__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../modals */ \"./src/ui/modals.js\");\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\n\n\n\n\nconst SidebarComponents = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getModule(m => m.Header && m.Separator && m.Item);\nconst Tooltip = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByDisplayName(\"Tooltip\");\nclass SettingsTitle extends modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].Component {\n constructor(props) {\n super(props);\n }\n\n render() {\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(\"div\", {\n className: \"bd-sidebar-header\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(SidebarComponents.Header, null, \"BandagedBD\"), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(Tooltip, {\n color: \"black\",\n position: \"top\",\n text: \"Changelog\"\n }, props => /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(\"div\", _extends({}, props, {\n className: \"bd-changelog-button\",\n onClick: () => _modals__WEBPACK_IMPORTED_MODULE_3__[\"default\"].showChangelogModal(data__WEBPACK_IMPORTED_MODULE_0__[\"Changelog\"])\n }), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(_icons_history__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n className: \"bd-icon\",\n size: \"16px\"\n }))));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL3NldHRpbmdzL3NpZGViYXJoZWFkZXIuanN4P2E5NWEiXSwibmFtZXMiOlsiU2lkZWJhckNvbXBvbmVudHMiLCJXZWJwYWNrTW9kdWxlcyIsImdldE1vZHVsZSIsIm0iLCJIZWFkZXIiLCJTZXBhcmF0b3IiLCJJdGVtIiwiVG9vbHRpcCIsImdldEJ5RGlzcGxheU5hbWUiLCJTZXR0aW5nc1RpdGxlIiwiUmVhY3QiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwicmVuZGVyIiwiTW9kYWxzIiwic2hvd0NoYW5nZWxvZ01vZGFsIiwiQ2hhbmdlbG9nIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUEsTUFBTUEsaUJBQWlCLEdBQUdDLHNEQUFjLENBQUNDLFNBQWYsQ0FBeUJDLENBQUMsSUFBSUEsQ0FBQyxDQUFDQyxNQUFGLElBQVlELENBQUMsQ0FBQ0UsU0FBZCxJQUEyQkYsQ0FBQyxDQUFDRyxJQUEzRCxDQUExQjtBQUNBLE1BQU1DLE9BQU8sR0FBR04sc0RBQWMsQ0FBQ08sZ0JBQWYsQ0FBZ0MsU0FBaEMsQ0FBaEI7QUFFZSxNQUFNQyxhQUFOLFNBQTRCQyw2Q0FBSyxDQUFDQyxTQUFsQyxDQUE0QztBQUN2REMsYUFBVyxDQUFDQyxLQUFELEVBQVE7QUFDZixVQUFNQSxLQUFOO0FBQ0g7O0FBRURDLFFBQU0sR0FBRztBQUNMLHdCQUFPO0FBQUssZUFBUyxFQUFDO0FBQWYsb0JBQ0ssNERBQUMsaUJBQUQsQ0FBbUIsTUFBbkIscUJBREwsZUFFSyw0REFBQyxPQUFEO0FBQVMsV0FBSyxFQUFDLE9BQWY7QUFBdUIsY0FBUSxFQUFDLEtBQWhDO0FBQXNDLFVBQUksRUFBQztBQUEzQyxPQUNLRCxLQUFLLGlCQUNGLGdGQUFTQSxLQUFUO0FBQWdCLGVBQVMsRUFBQyxxQkFBMUI7QUFBZ0QsYUFBTyxFQUFFLE1BQU1FLCtDQUFNLENBQUNDLGtCQUFQLENBQTBCQyw4Q0FBMUI7QUFBL0QscUJBQ0ksNERBQUMsc0RBQUQ7QUFBYSxlQUFTLEVBQUMsU0FBdkI7QUFBaUMsVUFBSSxFQUFDO0FBQXRDLE1BREosQ0FGUixDQUZMLENBQVA7QUFVSDs7QUFoQnNEIiwiZmlsZSI6Ii4vc3JjL3VpL3NldHRpbmdzL3NpZGViYXJoZWFkZXIuanN4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDaGFuZ2Vsb2d9IGZyb20gXCJkYXRhXCI7XHJcbmltcG9ydCB7UmVhY3QsIFdlYnBhY2tNb2R1bGVzfSBmcm9tIFwibW9kdWxlc1wiO1xyXG5pbXBvcnQgSGlzdG9yeUljb24gZnJvbSBcIi4uL2ljb25zL2hpc3RvcnlcIjtcclxuaW1wb3J0IE1vZGFscyBmcm9tIFwiLi4vbW9kYWxzXCI7XHJcblxyXG5jb25zdCBTaWRlYmFyQ29tcG9uZW50cyA9IFdlYnBhY2tNb2R1bGVzLmdldE1vZHVsZShtID0+IG0uSGVhZGVyICYmIG0uU2VwYXJhdG9yICYmIG0uSXRlbSk7XHJcbmNvbnN0IFRvb2x0aXAgPSBXZWJwYWNrTW9kdWxlcy5nZXRCeURpc3BsYXlOYW1lKFwiVG9vbHRpcFwiKTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNldHRpbmdzVGl0bGUgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xyXG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcclxuICAgICAgICBzdXBlcihwcm9wcyk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIHJldHVybiA8ZGl2IGNsYXNzTmFtZT1cImJkLXNpZGViYXItaGVhZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPFNpZGViYXJDb21wb25lbnRzLkhlYWRlcj5CYW5kYWdlZEJEPC9TaWRlYmFyQ29tcG9uZW50cy5IZWFkZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPFRvb2x0aXAgY29sb3I9XCJibGFja1wiIHBvc2l0aW9uPVwidG9wXCIgdGV4dD1cIkNoYW5nZWxvZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7cHJvcHMgPT4gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHsuLi5wcm9wc30gY2xhc3NOYW1lPVwiYmQtY2hhbmdlbG9nLWJ1dHRvblwiIG9uQ2xpY2s9eygpID0+IE1vZGFscy5zaG93Q2hhbmdlbG9nTW9kYWwoQ2hhbmdlbG9nKX0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEhpc3RvcnlJY29uIGNsYXNzTmFtZT1cImJkLWljb25cIiBzaXplPVwiMTZweFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIDwvVG9vbHRpcD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PjtcclxuICAgIH1cclxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/settings/sidebarheader.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return SettingsTitle; });\n/* harmony import */ var data__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! data */ \"./src/data/data.js\");\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _icons_history__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../icons/history */ \"./src/ui/icons/history.jsx\");\n/* harmony import */ var _modals__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../modals */ \"./src/ui/modals.js\");\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\n\n\n\n\nconst SidebarComponents = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getModule(m => m.Header && m.Separator && m.Item);\nconst Tooltip = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByDisplayName(\"Tooltip\");\nclass SettingsTitle extends modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].Component {\n constructor(props) {\n super(props);\n }\n\n render() {\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(\"div\", {\n className: \"bd-sidebar-header\"\n }, /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(SidebarComponents.Header, null, \"BandagedBD\"), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(Tooltip, {\n color: \"black\",\n position: \"top\",\n text: \"Changelog\"\n }, props => /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(\"div\", _extends({}, props, {\n className: \"bd-changelog-button\",\n onClick: () => _modals__WEBPACK_IMPORTED_MODULE_3__[\"default\"].showChangelogModal(data__WEBPACK_IMPORTED_MODULE_0__[\"Changelog\"])\n }), /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(_icons_history__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n className: \"bd-icon\",\n size: \"16px\"\n }))));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvc2V0dGluZ3Mvc2lkZWJhcmhlYWRlci5qc3g/YTk1YSJdLCJuYW1lcyI6WyJTaWRlYmFyQ29tcG9uZW50cyIsIldlYnBhY2tNb2R1bGVzIiwiZ2V0TW9kdWxlIiwibSIsIkhlYWRlciIsIlNlcGFyYXRvciIsIkl0ZW0iLCJUb29sdGlwIiwiZ2V0QnlEaXNwbGF5TmFtZSIsIlNldHRpbmdzVGl0bGUiLCJSZWFjdCIsIkNvbXBvbmVudCIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJyZW5kZXIiLCJNb2RhbHMiLCJzaG93Q2hhbmdlbG9nTW9kYWwiLCJDaGFuZ2Vsb2ciXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQSxNQUFNQSxpQkFBaUIsR0FBR0Msc0RBQWMsQ0FBQ0MsU0FBZixDQUF5QkMsQ0FBQyxJQUFJQSxDQUFDLENBQUNDLE1BQUYsSUFBWUQsQ0FBQyxDQUFDRSxTQUFkLElBQTJCRixDQUFDLENBQUNHLElBQTNELENBQTFCO0FBQ0EsTUFBTUMsT0FBTyxHQUFHTixzREFBYyxDQUFDTyxnQkFBZixDQUFnQyxTQUFoQyxDQUFoQjtBQUVlLE1BQU1DLGFBQU4sU0FBNEJDLDZDQUFLLENBQUNDLFNBQWxDLENBQTRDO0FBQ3ZEQyxhQUFXLENBQUNDLEtBQUQsRUFBUTtBQUNmLFVBQU1BLEtBQU47QUFDSDs7QUFFREMsUUFBTSxHQUFHO0FBQ0wsd0JBQU87QUFBSyxlQUFTLEVBQUM7QUFBZixvQkFDSyw0REFBQyxpQkFBRCxDQUFtQixNQUFuQixxQkFETCxlQUVLLDREQUFDLE9BQUQ7QUFBUyxXQUFLLEVBQUMsT0FBZjtBQUF1QixjQUFRLEVBQUMsS0FBaEM7QUFBc0MsVUFBSSxFQUFDO0FBQTNDLE9BQ0tELEtBQUssaUJBQ0YsZ0ZBQVNBLEtBQVQ7QUFBZ0IsZUFBUyxFQUFDLHFCQUExQjtBQUFnRCxhQUFPLEVBQUUsTUFBTUUsK0NBQU0sQ0FBQ0Msa0JBQVAsQ0FBMEJDLDhDQUExQjtBQUEvRCxxQkFDSSw0REFBQyxzREFBRDtBQUFhLGVBQVMsRUFBQyxTQUF2QjtBQUFpQyxVQUFJLEVBQUM7QUFBdEMsTUFESixDQUZSLENBRkwsQ0FBUDtBQVVIOztBQWhCc0QiLCJmaWxlIjoiLi9zcmMvdWkvc2V0dGluZ3Mvc2lkZWJhcmhlYWRlci5qc3guanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZWxvZ30gZnJvbSBcImRhdGFcIjtcclxuaW1wb3J0IHtSZWFjdCwgV2VicGFja01vZHVsZXN9IGZyb20gXCJtb2R1bGVzXCI7XHJcbmltcG9ydCBIaXN0b3J5SWNvbiBmcm9tIFwiLi4vaWNvbnMvaGlzdG9yeVwiO1xyXG5pbXBvcnQgTW9kYWxzIGZyb20gXCIuLi9tb2RhbHNcIjtcclxuXHJcbmNvbnN0IFNpZGViYXJDb21wb25lbnRzID0gV2VicGFja01vZHVsZXMuZ2V0TW9kdWxlKG0gPT4gbS5IZWFkZXIgJiYgbS5TZXBhcmF0b3IgJiYgbS5JdGVtKTtcclxuY29uc3QgVG9vbHRpcCA9IFdlYnBhY2tNb2R1bGVzLmdldEJ5RGlzcGxheU5hbWUoXCJUb29sdGlwXCIpO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2V0dGluZ3NUaXRsZSBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XHJcbiAgICBjb25zdHJ1Y3Rvcihwcm9wcykge1xyXG4gICAgICAgIHN1cGVyKHByb3BzKTtcclxuICAgIH1cclxuXHJcbiAgICByZW5kZXIoKSB7XHJcbiAgICAgICAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPVwiYmQtc2lkZWJhci1oZWFkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8U2lkZWJhckNvbXBvbmVudHMuSGVhZGVyPkJhbmRhZ2VkQkQ8L1NpZGViYXJDb21wb25lbnRzLkhlYWRlcj5cclxuICAgICAgICAgICAgICAgICAgICA8VG9vbHRpcCBjb2xvcj1cImJsYWNrXCIgcG9zaXRpb249XCJ0b3BcIiB0ZXh0PVwiQ2hhbmdlbG9nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtwcm9wcyA9PiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgey4uLnByb3BzfSBjbGFzc05hbWU9XCJiZC1jaGFuZ2Vsb2ctYnV0dG9uXCIgb25DbGljaz17KCkgPT4gTW9kYWxzLnNob3dDaGFuZ2Vsb2dNb2RhbChDaGFuZ2Vsb2cpfT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SGlzdG9yeUljb24gY2xhc3NOYW1lPVwiYmQtaWNvblwiIHNpemU9XCIxNnB4XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgPC9Ub29sdGlwPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+O1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/settings/sidebarheader.jsx\n"); /***/ }), @@ -1127,7 +1126,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return SettingsTitle; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nconst className = \"bd-settings-title h2-2gWE-o title-3sZWYQ size16-14cGz5 height20-mO2eIN weightSemiBold-NJexzi defaultColor-1_ajX0 defaultMarginh2-2LTaUL marginBottom20-32qID7\";\nconst className2 = \"bd-settings-title bd-settings-group-title h5-18_1nd title-3sZWYQ size12-3R0845 height16-2Lv3qA weightSemiBold-NJexzi da-h5 da-title da-size12 da-height16 da-weightSemiBold marginBottom4-2qk4Hy da-marginBottom4 marginTop8-1DLZ1n da-marginTop8\";\nclass SettingsTitle extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n } //h2-2gWE-o title-3sZWYQ size16-14cGz5 height20-mO2eIN weightSemiBold-NJexzi da-h2 da-title da-size16 da-height20 da-weightSemiBold defaultColor-1_ajX0 da-defaultColor marginTop60-3PGbtK da-marginTop60 marginBottom20-32qID7 da-marginBottom20\n\n\n render() {\n const baseClass = this.props.isGroup ? className2 : className;\n const titleClass = this.props.className ? `${baseClass} ${this.props.className}` : baseClass;\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"h2\", {\n className: titleClass,\n onClick: () => {\n this.props.onClick && this.props.onClick();\n }\n }, this.props.text, this.props.button && /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"button\", {\n className: \"bd-button bd-button-title\",\n onClick: this.props.button.onClick\n }, this.props.button.title), this.props.otherChildren);\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL3NldHRpbmdzL3RpdGxlLmpzeD9iNTliIl0sIm5hbWVzIjpbImNsYXNzTmFtZSIsImNsYXNzTmFtZTIiLCJTZXR0aW5nc1RpdGxlIiwiUmVhY3QiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwicmVuZGVyIiwiYmFzZUNsYXNzIiwiaXNHcm91cCIsInRpdGxlQ2xhc3MiLCJvbkNsaWNrIiwidGV4dCIsImJ1dHRvbiIsInRpdGxlIiwib3RoZXJDaGlsZHJlbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQSxNQUFNQSxTQUFTLEdBQUcsK0pBQWxCO0FBQ0EsTUFBTUMsVUFBVSxHQUFHLG1QQUFuQjtBQUVlLE1BQU1DLGFBQU4sU0FBNEJDLDZDQUFLLENBQUNDLFNBQWxDLENBQTRDO0FBQ3ZEQyxhQUFXLENBQUNDLEtBQUQsRUFBUTtBQUNmLFVBQU1BLEtBQU47QUFDSCxHQUhzRCxDQUkzRDs7O0FBQ0lDLFFBQU0sR0FBRztBQUNMLFVBQU1DLFNBQVMsR0FBRyxLQUFLRixLQUFMLENBQVdHLE9BQVgsR0FBcUJSLFVBQXJCLEdBQWtDRCxTQUFwRDtBQUNBLFVBQU1VLFVBQVUsR0FBRyxLQUFLSixLQUFMLENBQVdOLFNBQVgsR0FBd0IsR0FBRVEsU0FBVSxJQUFHLEtBQUtGLEtBQUwsQ0FBV04sU0FBVSxFQUE1RCxHQUFnRVEsU0FBbkY7QUFDQSx3QkFBTztBQUFJLGVBQVMsRUFBRUUsVUFBZjtBQUEyQixhQUFPLEVBQUUsTUFBTTtBQUFDLGFBQUtKLEtBQUwsQ0FBV0ssT0FBWCxJQUFzQixLQUFLTCxLQUFMLENBQVdLLE9BQVgsRUFBdEI7QUFBNEM7QUFBdkYsT0FDRSxLQUFLTCxLQUFMLENBQVdNLElBRGIsRUFFRSxLQUFLTixLQUFMLENBQVdPLE1BQVgsaUJBQXFCO0FBQVEsZUFBUyxFQUFDLDJCQUFsQjtBQUE4QyxhQUFPLEVBQUUsS0FBS1AsS0FBTCxDQUFXTyxNQUFYLENBQWtCRjtBQUF6RSxPQUFtRixLQUFLTCxLQUFMLENBQVdPLE1BQVgsQ0FBa0JDLEtBQXJHLENBRnZCLEVBR0UsS0FBS1IsS0FBTCxDQUFXUyxhQUhiLENBQVA7QUFLSDs7QUFic0QiLCJmaWxlIjoiLi9zcmMvdWkvc2V0dGluZ3MvdGl0bGUuanN4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtSZWFjdH0gZnJvbSBcIm1vZHVsZXNcIjtcclxuXHJcbmNvbnN0IGNsYXNzTmFtZSA9IFwiYmQtc2V0dGluZ3MtdGl0bGUgaDItMmdXRS1vIHRpdGxlLTNzWldZUSBzaXplMTYtMTRjR3o1IGhlaWdodDIwLW1PMmVJTiB3ZWlnaHRTZW1pQm9sZC1OSmV4emkgZGVmYXVsdENvbG9yLTFfYWpYMCBkZWZhdWx0TWFyZ2luaDItMkxUYVVMIG1hcmdpbkJvdHRvbTIwLTMycUlEN1wiO1xyXG5jb25zdCBjbGFzc05hbWUyID0gXCJiZC1zZXR0aW5ncy10aXRsZSBiZC1zZXR0aW5ncy1ncm91cC10aXRsZSBoNS0xOF8xbmQgdGl0bGUtM3NaV1lRIHNpemUxMi0zUjA4NDUgaGVpZ2h0MTYtMkx2M3FBIHdlaWdodFNlbWlCb2xkLU5KZXh6aSBkYS1oNSBkYS10aXRsZSBkYS1zaXplMTIgZGEtaGVpZ2h0MTYgZGEtd2VpZ2h0U2VtaUJvbGQgbWFyZ2luQm90dG9tNC0ycWs0SHkgZGEtbWFyZ2luQm90dG9tNCBtYXJnaW5Ub3A4LTFETFoxbiBkYS1tYXJnaW5Ub3A4XCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTZXR0aW5nc1RpdGxlIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcclxuICAgIGNvbnN0cnVjdG9yKHByb3BzKSB7XHJcbiAgICAgICAgc3VwZXIocHJvcHMpO1xyXG4gICAgfVxyXG4vL2gyLTJnV0UtbyB0aXRsZS0zc1pXWVEgc2l6ZTE2LTE0Y0d6NSBoZWlnaHQyMC1tTzJlSU4gd2VpZ2h0U2VtaUJvbGQtTkpleHppIGRhLWgyIGRhLXRpdGxlIGRhLXNpemUxNiBkYS1oZWlnaHQyMCBkYS13ZWlnaHRTZW1pQm9sZCBkZWZhdWx0Q29sb3ItMV9halgwIGRhLWRlZmF1bHRDb2xvciBtYXJnaW5Ub3A2MC0zUEdidEsgZGEtbWFyZ2luVG9wNjAgbWFyZ2luQm90dG9tMjAtMzJxSUQ3IGRhLW1hcmdpbkJvdHRvbTIwXHJcbiAgICByZW5kZXIoKSB7XHJcbiAgICAgICAgY29uc3QgYmFzZUNsYXNzID0gdGhpcy5wcm9wcy5pc0dyb3VwID8gY2xhc3NOYW1lMiA6IGNsYXNzTmFtZTtcclxuICAgICAgICBjb25zdCB0aXRsZUNsYXNzID0gdGhpcy5wcm9wcy5jbGFzc05hbWUgPyBgJHtiYXNlQ2xhc3N9ICR7dGhpcy5wcm9wcy5jbGFzc05hbWV9YCA6IGJhc2VDbGFzcztcclxuICAgICAgICByZXR1cm4gPGgyIGNsYXNzTmFtZT17dGl0bGVDbGFzc30gb25DbGljaz17KCkgPT4ge3RoaXMucHJvcHMub25DbGljayAmJiB0aGlzLnByb3BzLm9uQ2xpY2soKTt9fT5cclxuICAgICAgICAgICAgICAgIHt0aGlzLnByb3BzLnRleHR9XHJcbiAgICAgICAgICAgICAgICB7dGhpcy5wcm9wcy5idXR0b24gJiYgPGJ1dHRvbiBjbGFzc05hbWU9XCJiZC1idXR0b24gYmQtYnV0dG9uLXRpdGxlXCIgb25DbGljaz17dGhpcy5wcm9wcy5idXR0b24ub25DbGlja30+e3RoaXMucHJvcHMuYnV0dG9uLnRpdGxlfTwvYnV0dG9uPn1cclxuICAgICAgICAgICAgICAgIHt0aGlzLnByb3BzLm90aGVyQ2hpbGRyZW59XHJcbiAgICAgICAgICAgICAgICA8L2gyPjtcclxuICAgIH1cclxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/settings/title.jsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return SettingsTitle; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nconst className = \"bd-settings-title h2-2gWE-o title-3sZWYQ size16-14cGz5 height20-mO2eIN weightSemiBold-NJexzi defaultColor-1_ajX0 defaultMarginh2-2LTaUL marginBottom20-32qID7\";\nconst className2 = \"bd-settings-title bd-settings-group-title h5-18_1nd title-3sZWYQ size12-3R0845 height16-2Lv3qA weightSemiBold-NJexzi da-h5 da-title da-size12 da-height16 da-weightSemiBold marginBottom4-2qk4Hy da-marginBottom4 marginTop8-1DLZ1n da-marginTop8\";\nclass SettingsTitle extends modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n constructor(props) {\n super(props);\n } //h2-2gWE-o title-3sZWYQ size16-14cGz5 height20-mO2eIN weightSemiBold-NJexzi da-h2 da-title da-size16 da-height20 da-weightSemiBold defaultColor-1_ajX0 da-defaultColor marginTop60-3PGbtK da-marginTop60 marginBottom20-32qID7 da-marginBottom20\n\n\n render() {\n const baseClass = this.props.isGroup ? className2 : className;\n const titleClass = this.props.className ? `${baseClass} ${this.props.className}` : baseClass;\n return /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"h2\", {\n className: titleClass,\n onClick: () => {\n this.props.onClick && this.props.onClick();\n }\n }, this.props.text, this.props.button && /*#__PURE__*/modules__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"button\", {\n className: \"bd-button bd-button-title\",\n onClick: this.props.button.onClick\n }, this.props.button.title), this.props.otherChildren);\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvc2V0dGluZ3MvdGl0bGUuanN4P2I1OWIiXSwibmFtZXMiOlsiY2xhc3NOYW1lIiwiY2xhc3NOYW1lMiIsIlNldHRpbmdzVGl0bGUiLCJSZWFjdCIsIkNvbXBvbmVudCIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJyZW5kZXIiLCJiYXNlQ2xhc3MiLCJpc0dyb3VwIiwidGl0bGVDbGFzcyIsIm9uQ2xpY2siLCJ0ZXh0IiwiYnV0dG9uIiwidGl0bGUiLCJvdGhlckNoaWxkcmVuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBLE1BQU1BLFNBQVMsR0FBRywrSkFBbEI7QUFDQSxNQUFNQyxVQUFVLEdBQUcsbVBBQW5CO0FBRWUsTUFBTUMsYUFBTixTQUE0QkMsNkNBQUssQ0FBQ0MsU0FBbEMsQ0FBNEM7QUFDdkRDLGFBQVcsQ0FBQ0MsS0FBRCxFQUFRO0FBQ2YsVUFBTUEsS0FBTjtBQUNILEdBSHNELENBSTNEOzs7QUFDSUMsUUFBTSxHQUFHO0FBQ0wsVUFBTUMsU0FBUyxHQUFHLEtBQUtGLEtBQUwsQ0FBV0csT0FBWCxHQUFxQlIsVUFBckIsR0FBa0NELFNBQXBEO0FBQ0EsVUFBTVUsVUFBVSxHQUFHLEtBQUtKLEtBQUwsQ0FBV04sU0FBWCxHQUF3QixHQUFFUSxTQUFVLElBQUcsS0FBS0YsS0FBTCxDQUFXTixTQUFVLEVBQTVELEdBQWdFUSxTQUFuRjtBQUNBLHdCQUFPO0FBQUksZUFBUyxFQUFFRSxVQUFmO0FBQTJCLGFBQU8sRUFBRSxNQUFNO0FBQUMsYUFBS0osS0FBTCxDQUFXSyxPQUFYLElBQXNCLEtBQUtMLEtBQUwsQ0FBV0ssT0FBWCxFQUF0QjtBQUE0QztBQUF2RixPQUNFLEtBQUtMLEtBQUwsQ0FBV00sSUFEYixFQUVFLEtBQUtOLEtBQUwsQ0FBV08sTUFBWCxpQkFBcUI7QUFBUSxlQUFTLEVBQUMsMkJBQWxCO0FBQThDLGFBQU8sRUFBRSxLQUFLUCxLQUFMLENBQVdPLE1BQVgsQ0FBa0JGO0FBQXpFLE9BQW1GLEtBQUtMLEtBQUwsQ0FBV08sTUFBWCxDQUFrQkMsS0FBckcsQ0FGdkIsRUFHRSxLQUFLUixLQUFMLENBQVdTLGFBSGIsQ0FBUDtBQUtIOztBQWJzRCIsImZpbGUiOiIuL3NyYy91aS9zZXR0aW5ncy90aXRsZS5qc3guanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlYWN0fSBmcm9tIFwibW9kdWxlc1wiO1xyXG5cclxuY29uc3QgY2xhc3NOYW1lID0gXCJiZC1zZXR0aW5ncy10aXRsZSBoMi0yZ1dFLW8gdGl0bGUtM3NaV1lRIHNpemUxNi0xNGNHejUgaGVpZ2h0MjAtbU8yZUlOIHdlaWdodFNlbWlCb2xkLU5KZXh6aSBkZWZhdWx0Q29sb3ItMV9halgwIGRlZmF1bHRNYXJnaW5oMi0yTFRhVUwgbWFyZ2luQm90dG9tMjAtMzJxSUQ3XCI7XHJcbmNvbnN0IGNsYXNzTmFtZTIgPSBcImJkLXNldHRpbmdzLXRpdGxlIGJkLXNldHRpbmdzLWdyb3VwLXRpdGxlIGg1LTE4XzFuZCB0aXRsZS0zc1pXWVEgc2l6ZTEyLTNSMDg0NSBoZWlnaHQxNi0yTHYzcUEgd2VpZ2h0U2VtaUJvbGQtTkpleHppIGRhLWg1IGRhLXRpdGxlIGRhLXNpemUxMiBkYS1oZWlnaHQxNiBkYS13ZWlnaHRTZW1pQm9sZCBtYXJnaW5Cb3R0b200LTJxazRIeSBkYS1tYXJnaW5Cb3R0b200IG1hcmdpblRvcDgtMURMWjFuIGRhLW1hcmdpblRvcDhcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNldHRpbmdzVGl0bGUgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xyXG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcclxuICAgICAgICBzdXBlcihwcm9wcyk7XHJcbiAgICB9XHJcbi8vaDItMmdXRS1vIHRpdGxlLTNzWldZUSBzaXplMTYtMTRjR3o1IGhlaWdodDIwLW1PMmVJTiB3ZWlnaHRTZW1pQm9sZC1OSmV4emkgZGEtaDIgZGEtdGl0bGUgZGEtc2l6ZTE2IGRhLWhlaWdodDIwIGRhLXdlaWdodFNlbWlCb2xkIGRlZmF1bHRDb2xvci0xX2FqWDAgZGEtZGVmYXVsdENvbG9yIG1hcmdpblRvcDYwLTNQR2J0SyBkYS1tYXJnaW5Ub3A2MCBtYXJnaW5Cb3R0b20yMC0zMnFJRDcgZGEtbWFyZ2luQm90dG9tMjBcclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICBjb25zdCBiYXNlQ2xhc3MgPSB0aGlzLnByb3BzLmlzR3JvdXAgPyBjbGFzc05hbWUyIDogY2xhc3NOYW1lO1xyXG4gICAgICAgIGNvbnN0IHRpdGxlQ2xhc3MgPSB0aGlzLnByb3BzLmNsYXNzTmFtZSA/IGAke2Jhc2VDbGFzc30gJHt0aGlzLnByb3BzLmNsYXNzTmFtZX1gIDogYmFzZUNsYXNzO1xyXG4gICAgICAgIHJldHVybiA8aDIgY2xhc3NOYW1lPXt0aXRsZUNsYXNzfSBvbkNsaWNrPXsoKSA9PiB7dGhpcy5wcm9wcy5vbkNsaWNrICYmIHRoaXMucHJvcHMub25DbGljaygpO319PlxyXG4gICAgICAgICAgICAgICAge3RoaXMucHJvcHMudGV4dH1cclxuICAgICAgICAgICAgICAgIHt0aGlzLnByb3BzLmJ1dHRvbiAmJiA8YnV0dG9uIGNsYXNzTmFtZT1cImJkLWJ1dHRvbiBiZC1idXR0b24tdGl0bGVcIiBvbkNsaWNrPXt0aGlzLnByb3BzLmJ1dHRvbi5vbkNsaWNrfT57dGhpcy5wcm9wcy5idXR0b24udGl0bGV9PC9idXR0b24+fVxyXG4gICAgICAgICAgICAgICAge3RoaXMucHJvcHMub3RoZXJDaGlsZHJlbn1cclxuICAgICAgICAgICAgICAgIDwvaDI+O1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/settings/title.jsx\n"); /***/ }), @@ -1139,7 +1138,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Toasts; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nconst channelsClass = modules__WEBPACK_IMPORTED_MODULE_0__[\"WebpackModules\"].getByProps(\"sidebar\", \"hasNotice\").sidebar.split(\" \")[0];\nconst membersWrapClass = modules__WEBPACK_IMPORTED_MODULE_0__[\"WebpackModules\"].getByProps(\"membersWrap\").membersWrap.split(\" \")[0];\nclass Toasts {\n static get shouldShowToasts() {\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"Settings\"].get(\"settings\", \"general\", \"showToasts\");\n }\n /** Shorthand for `type = \"success\"` for {@link module:Toasts.show} */\n\n\n static async success(content, options = {}) {\n return this.show(content, Object.assign(options, {\n type: \"success\"\n }));\n }\n /** Shorthand for `type = \"info\"` for {@link module:Toasts.show} */\n\n\n static async info(content, options = {}) {\n return this.show(content, Object.assign(options, {\n type: \"info\"\n }));\n }\n /** Shorthand for `type = \"warning\"` for {@link module:Toasts.show} */\n\n\n static async warning(content, options = {}) {\n return this.show(content, Object.assign(options, {\n type: \"warning\"\n }));\n }\n /** Shorthand for `type = \"error\"` for {@link module:Toasts.show} */\n\n\n static async error(content, options = {}) {\n return this.show(content, Object.assign(options, {\n type: \"error\"\n }));\n }\n /** Shorthand for `type = \"default\"` for {@link module:Toasts.show} */\n\n\n static async default(content, options = {}) {\n return this.show(content, Object.assign(options, {\n type: \"\"\n }));\n }\n /**\r\n * This shows a toast similar to android towards the bottom of the screen.\r\n *\r\n * @param {string} content The string to show in the toast.\r\n * @param {object} options Options object. Optional parameter.\r\n * @param {string} [options.type=\"\"] Changes the type of the toast stylistically and semantically. Choices: \"\", \"info\", \"success\", \"danger\"/\"error\", \"warning\"/\"warn\". Default: \"\"\r\n * @param {boolean} [options.icon=true] Determines whether the icon should show corresponding to the type. A toast without type will always have no icon. Default: true\r\n * @param {number} [options.timeout=3000] Adjusts the time (in ms) the toast should be shown for before disappearing automatically. Default: 3000\r\n * @param {boolean} [options.forceShow=false] Whether to force showing the toast and ignore the bd setting\r\n */\n\n\n static show(content, options = {}) {\n const {\n type = \"\",\n icon = true,\n timeout = 3000,\n forceShow = false\n } = options;\n if (!this.shouldShowToasts && !forceShow) return;\n this.ensureContainer();\n const toastElem = document.createElement(\"div\");\n toastElem.classList.add(\"bd-toast\");\n if (type) toastElem.classList.add(\"toast-\" + type);\n if (type && icon) toastElem.classList.add(\"icon\");\n toastElem.innerText = content;\n document.querySelector(\".bd-toasts\").appendChild(toastElem);\n setTimeout(() => {\n toastElem.classList.add(\"closing\");\n setTimeout(() => {\n toastElem.remove();\n if (!document.querySelectorAll(\".bd-toasts .bd-toast\").length) document.querySelector(\".bd-toasts\").remove();\n }, 300);\n }, timeout);\n }\n\n static ensureContainer() {\n if (document.querySelector(\".bd-toasts\")) return;\n const container = document.querySelector(`.${channelsClass} + div`);\n const memberlist = container.querySelector(`.${membersWrapClass}`);\n const form = container ? container.querySelector(\"form\") : null;\n const left = container ? container.getBoundingClientRect().left : 310;\n const right = memberlist ? memberlist.getBoundingClientRect().left : 0;\n const width = right ? right - container.getBoundingClientRect().left : container.offsetWidth;\n const bottom = form ? form.offsetHeight : 80;\n const toastWrapper = document.createElement(\"div\");\n toastWrapper.classList.add(\"bd-toasts\");\n toastWrapper.style.setProperty(\"left\", left + \"px\");\n toastWrapper.style.setProperty(\"width\", width + \"px\");\n toastWrapper.style.setProperty(\"bottom\", bottom + \"px\");\n modules__WEBPACK_IMPORTED_MODULE_0__[\"DOMManager\"].bdBody.appendChild(toastWrapper);\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL3RvYXN0cy5qcz9jZmU1Il0sIm5hbWVzIjpbImNoYW5uZWxzQ2xhc3MiLCJXZWJwYWNrTW9kdWxlcyIsImdldEJ5UHJvcHMiLCJzaWRlYmFyIiwic3BsaXQiLCJtZW1iZXJzV3JhcENsYXNzIiwibWVtYmVyc1dyYXAiLCJUb2FzdHMiLCJzaG91bGRTaG93VG9hc3RzIiwiU2V0dGluZ3MiLCJnZXQiLCJzdWNjZXNzIiwiY29udGVudCIsIm9wdGlvbnMiLCJzaG93IiwiT2JqZWN0IiwiYXNzaWduIiwidHlwZSIsImluZm8iLCJ3YXJuaW5nIiwiZXJyb3IiLCJkZWZhdWx0IiwiaWNvbiIsInRpbWVvdXQiLCJmb3JjZVNob3ciLCJlbnN1cmVDb250YWluZXIiLCJ0b2FzdEVsZW0iLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc0xpc3QiLCJhZGQiLCJpbm5lclRleHQiLCJxdWVyeVNlbGVjdG9yIiwiYXBwZW5kQ2hpbGQiLCJzZXRUaW1lb3V0IiwicmVtb3ZlIiwicXVlcnlTZWxlY3RvckFsbCIsImxlbmd0aCIsImNvbnRhaW5lciIsIm1lbWJlcmxpc3QiLCJmb3JtIiwibGVmdCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsInJpZ2h0Iiwid2lkdGgiLCJvZmZzZXRXaWR0aCIsImJvdHRvbSIsIm9mZnNldEhlaWdodCIsInRvYXN0V3JhcHBlciIsInN0eWxlIiwic2V0UHJvcGVydHkiLCJET01NYW5hZ2VyIiwiYmRCb2R5Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBLE1BQU1BLGFBQWEsR0FBR0Msc0RBQWMsQ0FBQ0MsVUFBZixDQUEwQixTQUExQixFQUFxQyxXQUFyQyxFQUFrREMsT0FBbEQsQ0FBMERDLEtBQTFELENBQWdFLEdBQWhFLEVBQXFFLENBQXJFLENBQXRCO0FBQ0EsTUFBTUMsZ0JBQWdCLEdBQUdKLHNEQUFjLENBQUNDLFVBQWYsQ0FBMEIsYUFBMUIsRUFBeUNJLFdB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K0IsTUFBL0IsRUFBdUNULElBQUksR0FBRyxJQUE5QztBQUNBTyxnQkFBWSxDQUFDQyxLQUFiLENBQW1CQyxXQUFuQixDQUErQixPQUEvQixFQUF3Q04sS0FBSyxHQUFHLElBQWhEO0FBQ0FJLGdCQUFZLENBQUNDLEtBQWIsQ0FBbUJDLFdBQW5CLENBQStCLFFBQS9CLEVBQXlDSixNQUFNLEdBQUcsSUFBbEQ7QUFDQUssc0RBQVUsQ0FBQ0MsTUFBWCxDQUFrQm5CLFdBQWxCLENBQThCZSxZQUE5QjtBQUNIOztBQS9EdUIiLCJmaWxlIjoiLi9zcmMvdWkvdG9hc3RzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtXZWJwYWNrTW9kdWxlcywgU2V0dGluZ3MsIERPTU1hbmFnZXJ9IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5jb25zdCBjaGFubmVsc0NsYXNzID0gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcInNpZGViYXJcIiwgXCJoYXNOb3RpY2VcIikuc2lkZWJhci5zcGxpdChcIiBcIilbMF07XHJcbmNvbnN0IG1lbWJlcnNXcmFwQ2xhc3MgPSBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwibWVtYmVyc1dyYXBcIikubWVtYmVyc1dyYXAuc3BsaXQoXCIgXCIpWzBdO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVG9hc3RzIHtcclxuXHJcbiAgICBzdGF0aWMgZ2V0IHNob3VsZFNob3dUb2FzdHMoKSB7cmV0dXJuIFNldHRpbmdzLmdldChcInNldHRpbmdzXCIsIFwiZ2VuZXJhbFwiLCBcInNob3dUb2FzdHNcIik7fVxyXG5cclxuICAgIC8qKiBTaG9ydGhhbmQgZm9yIGB0eXBlID0gXCJzdWNjZXNzXCJgIGZvciB7QGxpbmsgbW9kdWxlOlRvYXN0cy5zaG93fSAqL1xyXG4gICAgc3RhdGljIGFzeW5jIHN1Y2Nlc3MoY29udGVudCwgb3B0aW9ucyA9IHt9KSB7cmV0dXJuIHRoaXMuc2hvdyhjb250ZW50LCBPYmplY3QuYXNzaWduKG9wdGlvbnMsIHt0eXBlOiBcInN1Y2Nlc3NcIn0pKTt9XHJcblxyXG4gICAgLyoqIFNob3J0aGFuZCBmb3IgYHR5cGUgPSBcImluZm9cImAgZm9yIHtAbGluayBtb2R1bGU6VG9hc3RzLnNob3d9ICovXHJcbiAgICBzdGF0aWMgYXN5bmMgaW5mbyhjb250ZW50LCBvcHRpb25zID0ge30pIHtyZXR1cm4gdGhpcy5zaG93KGNvbnRlbnQsIE9iamVjdC5hc3NpZ24ob3B0aW9ucywge3R5cGU6IFwiaW5mb1wifSkpO31cclxuXHJcbiAgICAvKiogU2hvcnRoYW5kIGZvciBgdHlwZSA9IFwid2FybmluZ1wiYCBmb3Ige0BsaW5rIG1vZHVsZTpUb2FzdHMuc2hvd30gKi9cclxuICAgIHN0YXRpYyBhc3luYyB3YXJuaW5nKGNvbnRlbnQsIG9wdGlvbnMgPSB7fSkge3JldHVybiB0aGlzLnNob3coY29udGVudCwgT2JqZWN0LmFzc2lnbihvcHRpb25zLCB7dHlwZTogXCJ3YXJuaW5nXCJ9KSk7fVxyXG5cclxuICAgIC8qKiBTaG9ydGhhbmQgZm9yIGB0eXBlID0gXCJlcnJvclwiYCBmb3Ige0BsaW5rIG1vZHVsZTpUb2FzdHMuc2hvd30gKi9cclxuICAgIHN0YXRpYyBhc3luYyBlcnJvcihjb250ZW50LCBvcHRpb25zID0ge30pIHtyZXR1cm4gdGhpcy5zaG93KGNvbnRlbnQsIE9iamVjdC5hc3NpZ24ob3B0aW9ucywge3R5cGU6IFwiZXJyb3JcIn0pKTt9XHJcblxyXG4gICAgLyoqIFNob3J0aGFuZCBmb3IgYHR5cGUgPSBcImRlZmF1bHRcImAgZm9yIHtAbGluayBtb2R1bGU6VG9hc3RzLnNob3d9ICovXHJcbiAgICBzdGF0aWMgYXN5bmMgZGVmYXVsdChjb250ZW50LCBvcHRpb25zID0ge30pIHtyZXR1cm4gdGhpcy5zaG93KGNvbnRlbnQsIE9iamVjdC5hc3NpZ24ob3B0aW9ucywge3R5cGU6IFwiXCJ9KSk7fVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhpcyBzaG93cyBhIHRvYXN0IHNpbWlsYXIgdG8gYW5kcm9pZCB0b3dhcmRzIHRoZSBib3R0b20gb2YgdGhlIHNjcmVlbi5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gY29udGVudCBUaGUgc3RyaW5nIHRvIHNob3cgaW4gdGhlIHRvYXN0LlxyXG4gICAgICogQHBhcmFtIHtvYmplY3R9IG9wdGlvbnMgT3B0aW9ucyBvYmplY3QuIE9wdGlvbmFsIHBhcmFtZXRlci5cclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy50eXBlPVwiXCJdIENoYW5nZXMgdGhlIHR5cGUgb2YgdGhlIHRvYXN0IHN0eWxpc3RpY2FsbHkgYW5kIHNlbWFudGljYWxseS4gQ2hvaWNlczogXCJcIiwgXCJpbmZvXCIsIFwic3VjY2Vzc1wiLCBcImRhbmdlclwiL1wiZXJyb3JcIiwgXCJ3YXJuaW5nXCIvXCJ3YXJuXCIuIERlZmF1bHQ6IFwiXCJcclxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMuaWNvbj10cnVlXSBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGljb24gc2hvdWxkIHNob3cgY29ycmVzcG9uZGluZyB0byB0aGUgdHlwZS4gQSB0b2FzdCB3aXRob3V0IHR5cGUgd2lsbCBhbHdheXMgaGF2ZSBubyBpY29uLiBEZWZhdWx0OiB0cnVlXHJcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW29wdGlvbnMudGltZW91dD0zMDAwXSBBZGp1c3RzIHRoZSB0aW1lIChpbiBtcykgdGhlIHRvYXN0IHNob3VsZCBiZSBzaG93biBmb3IgYmVmb3JlIGRpc2FwcGVhcmluZyBhdXRvbWF0aWNhbGx5LiBEZWZhdWx0OiAzMDAwXHJcbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLmZvcmNlU2hvdz1mYWxzZV0gV2hldGhlciB0byBmb3JjZSBzaG93aW5nIHRoZSB0b2FzdCBhbmQgaWdub3JlIHRoZSBiZCBzZXR0aW5nXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBzaG93KGNvbnRlbnQsIG9wdGlvbnMgPSB7fSkge1xyXG4gICAgICAgIGNvbnN0IHt0eXBlID0gXCJcIiwgaWNvbiA9IHRydWUsIHRpbWVvdXQgPSAzMDAwLCBmb3JjZVNob3cgPSBmYWxzZX0gPSBvcHRpb25zO1xyXG4gICAgICAgIGlmICghdGhpcy5zaG91bGRTaG93VG9hc3RzICYmICFmb3JjZVNob3cpIHJldHVybjtcclxuICAgICAgICB0aGlzLmVuc3VyZUNvbnRhaW5lcigpO1xyXG4gICAgICAgIGNvbnN0IHRvYXN0RWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XHJcbiAgICAgICAgdG9hc3RFbGVtLmNsYXNzTGlzdC5hZGQoXCJiZC10b2FzdFwiKTtcclxuICAgICAgICBpZiAodHlwZSkgdG9hc3RFbGVtLmNsYXNzTGlzdC5hZGQoXCJ0b2FzdC1cIiArIHR5cGUpO1xyXG4gICAgICAgIGlmICh0eXBlICYmIGljb24pIHRvYXN0RWxlbS5jbGFzc0xpc3QuYWRkKFwiaWNvblwiKTtcclxuICAgICAgICB0b2FzdEVsZW0uaW5uZXJUZXh0ID0gY29udGVudDtcclxuICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiLmJkLXRvYXN0c1wiKS5hcHBlbmRDaGlsZCh0b2FzdEVsZW0pO1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICB0b2FzdEVsZW0uY2xhc3NMaXN0LmFkZChcImNsb3NpbmdcIik7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdG9hc3RFbGVtLnJlbW92ZSgpO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiLmJkLXRvYXN0cyAuYmQtdG9hc3RcIikubGVuZ3RoKSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiLmJkLXRvYXN0c1wiKS5yZW1vdmUoKTtcclxuICAgICAgICAgICAgfSwgMzAwKTtcclxuICAgICAgICB9LCB0aW1lb3V0KTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgZW5zdXJlQ29udGFpbmVyKCkge1xyXG4gICAgICAgIGlmIChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiLmJkLXRvYXN0c1wiKSkgcmV0dXJuO1xyXG4gICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYC4ke2NoYW5uZWxzQ2xhc3N9ICsgZGl2YCk7XHJcbiAgICAgICAgY29uc3QgbWVtYmVybGlzdCA9IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKGAuJHttZW1iZXJzV3JhcENsYXNzfWApO1xyXG4gICAgICAgIGNvbnN0IGZvcm0gPSBjb250YWluZXIgPyBjb250YWluZXIucXVlcnlTZWxlY3RvcihcImZvcm1cIikgOiBudWxsO1xyXG4gICAgICAgIGNvbnN0IGxlZnQgPSBjb250YWluZXIgPyBjb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdCA6IDMxMDtcclxuICAgICAgICBjb25zdCByaWdodCA9IG1lbWJlcmxpc3QgPyBtZW1iZXJsaXN0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQgOiAwO1xyXG4gICAgICAgIGNvbnN0IHdpZHRoID0gcmlnaHQgPyByaWdodCAtIGNvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0IDogY29udGFpbmVyLm9mZnNldFdpZHRoO1xyXG4gICAgICAgIGNvbnN0IGJvdHRvbSA9IGZvcm0gPyBmb3JtLm9mZnNldEhlaWdodCA6IDgwO1xyXG4gICAgICAgIGNvbnN0IHRvYXN0V3JhcHBlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XHJcbiAgICAgICAgdG9hc3RXcmFwcGVyLmNsYXNzTGlzdC5hZGQoXCJiZC10b2FzdHNcIik7XHJcbiAgICAgICAgdG9hc3RXcmFwcGVyLnN0eWxlLnNldFByb3BlcnR5KFwibGVmdFwiLCBsZWZ0ICsgXCJweFwiKTtcclxuICAgICAgICB0b2FzdFdyYXBwZXIuc3R5bGUuc2V0UHJvcGVydHkoXCJ3aWR0aFwiLCB3aWR0aCArIFwicHhcIik7XHJcbiAgICAgICAgdG9hc3RXcmFwcGVyLnN0eWxlLnNldFByb3BlcnR5KFwiYm90dG9tXCIsIGJvdHRvbSArIFwicHhcIik7XHJcbiAgICAgICAgRE9NTWFuYWdlci5iZEJvZHkuYXBwZW5kQ2hpbGQodG9hc3RXcmFwcGVyKTtcclxuICAgIH1cclxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/toasts.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Toasts; });\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n\nconst channelsClass = modules__WEBPACK_IMPORTED_MODULE_0__[\"WebpackModules\"].getByProps(\"sidebar\", \"hasNotice\").sidebar.split(\" \")[0];\nconst membersWrapClass = modules__WEBPACK_IMPORTED_MODULE_0__[\"WebpackModules\"].getByProps(\"membersWrap\").membersWrap.split(\" \")[0];\nclass Toasts {\n static get shouldShowToasts() {\n return modules__WEBPACK_IMPORTED_MODULE_0__[\"Settings\"].get(\"settings\", \"general\", \"showToasts\");\n }\n /** Shorthand for `type = \"success\"` for {@link module:Toasts.show} */\n\n\n static async success(content, options = {}) {\n return this.show(content, Object.assign(options, {\n type: \"success\"\n }));\n }\n /** Shorthand for `type = \"info\"` for {@link module:Toasts.show} */\n\n\n static async info(content, options = {}) {\n return this.show(content, Object.assign(options, {\n type: \"info\"\n }));\n }\n /** Shorthand for `type = \"warning\"` for {@link module:Toasts.show} */\n\n\n static async warning(content, options = {}) {\n return this.show(content, Object.assign(options, {\n type: \"warning\"\n }));\n }\n /** Shorthand for `type = \"error\"` for {@link module:Toasts.show} */\n\n\n static async error(content, options = {}) {\n return this.show(content, Object.assign(options, {\n type: \"error\"\n }));\n }\n /** Shorthand for `type = \"default\"` for {@link module:Toasts.show} */\n\n\n static async default(content, options = {}) {\n return this.show(content, Object.assign(options, {\n type: \"\"\n }));\n }\n /**\r\n * This shows a toast similar to android towards the bottom of the screen.\r\n *\r\n * @param {string} content The string to show in the toast.\r\n * @param {object} options Options object. Optional parameter.\r\n * @param {string} [options.type=\"\"] Changes the type of the toast stylistically and semantically. Choices: \"\", \"info\", \"success\", \"danger\"/\"error\", \"warning\"/\"warn\". Default: \"\"\r\n * @param {boolean} [options.icon=true] Determines whether the icon should show corresponding to the type. A toast without type will always have no icon. Default: true\r\n * @param {number} [options.timeout=3000] Adjusts the time (in ms) the toast should be shown for before disappearing automatically. Default: 3000\r\n * @param {boolean} [options.forceShow=false] Whether to force showing the toast and ignore the bd setting\r\n */\n\n\n static show(content, options = {}) {\n const {\n type = \"\",\n icon = true,\n timeout = 3000,\n forceShow = false\n } = options;\n if (!this.shouldShowToasts && !forceShow) return;\n this.ensureContainer();\n const toastElem = document.createElement(\"div\");\n toastElem.classList.add(\"bd-toast\");\n if (type) toastElem.classList.add(\"toast-\" + type);\n if (type && icon) toastElem.classList.add(\"icon\");\n toastElem.innerText = content;\n document.querySelector(\".bd-toasts\").appendChild(toastElem);\n setTimeout(() => {\n toastElem.classList.add(\"closing\");\n setTimeout(() => {\n toastElem.remove();\n if (!document.querySelectorAll(\".bd-toasts .bd-toast\").length) document.querySelector(\".bd-toasts\").remove();\n }, 300);\n }, timeout);\n }\n\n static ensureContainer() {\n if (document.querySelector(\".bd-toasts\")) return;\n const container = document.querySelector(`.${channelsClass} + div`);\n const memberlist = container.querySelector(`.${membersWrapClass}`);\n const form = container ? container.querySelector(\"form\") : null;\n const left = container ? container.getBoundingClientRect().left : 310;\n const right = memberlist ? memberlist.getBoundingClientRect().left : 0;\n const width = right ? right - container.getBoundingClientRect().left : container.offsetWidth;\n const bottom = form ? form.offsetHeight : 80;\n const toastWrapper = document.createElement(\"div\");\n toastWrapper.classList.add(\"bd-toasts\");\n toastWrapper.style.setProperty(\"left\", left + \"px\");\n toastWrapper.style.setProperty(\"width\", width + \"px\");\n toastWrapper.style.setProperty(\"bottom\", bottom + \"px\");\n modules__WEBPACK_IMPORTED_MODULE_0__[\"DOMManager\"].bdBody.appendChild(toastWrapper);\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvdG9hc3RzLmpzP2NmZTUiXSwibmFtZXMiOlsiY2hhbm5lbHNDbGFzcyIsIldlYnBhY2tNb2R1bGVzIiwiZ2V0QnlQcm9wcyIsInNpZGViYXIiLCJzcGxpdCIsIm1lbWJlcnNXcmFwQ2xhc3MiLCJtZW1iZXJzV3JhcCIsIlRvYXN0cyIsInNob3VsZFNob3dUb2FzdHMiLCJTZXR0aW5ncyIsImdldCIsInN1Y2Nlc3MiLCJjb250ZW50Iiwib3B0aW9ucyIsInNob3ciLCJPYmplY3QiLCJhc3NpZ24iLCJ0eXBlIiwiaW5mbyIsIndhcm5pbmciLCJlcnJvciIsImRlZmF1bHQiLCJpY29uIiwidGltZW91dCIsImZvcmNlU2hvdyIsImVuc3VyZUNvbnRhaW5lciIsInRvYXN0RWxlbSIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTGlzdCIsImFkZCIsImlubmVyVGV4dCIsInF1ZXJ5U2VsZWN0b3IiLCJhcHBlbmRDaGlsZCIsInNldFRpbWVvdXQiLCJyZW1vdmUiLCJxdWVyeVNlbGVjdG9yQWxsIiwibGVuZ3RoIiwiY29udGFpbmVyIiwibWVtYmVybGlzdCIsImZvcm0iLCJsZWZ0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwicmlnaHQiLCJ3aWR0aCIsIm9mZnNldFdpZHRoIiwiYm90dG9tIiwib2Zmc2V0SGVpZ2h0IiwidG9hc3RXcmFwcGVyIiwic3R5bGUiLCJzZXRQcm9wZXJ0eSIsIkRPTU1hbmFnZXIiLCJiZEJvZHkiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUEsTUFBTUEsYUFBYSxHQUFHQyxzREFBYyxDQUFDQyxVQUFmLENBQTBCLFNBQTFCLEVBQXFDLFdBQXJDLEVBQWtEQyxPQUFsRCxDQUEwREMsS0FBMUQsQ0FBZ0UsR0FBaEUsRUFBcUUsQ0FBckUsQ0FBdEI7QUFDQSxNQUFNQyxnQkFBZ0IsR0FBR0osc0RBQWMsQ0FBQ0MsVUFBZixDQUEwQixhQUExQixFQUF5Q0ksV0FBekMs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QUEvQixFQUF1Q1QsSUFBSSxHQUFHLElBQTlDO0FBQ0FPLGdCQUFZLENBQUNDLEtBQWIsQ0FBbUJDLFdBQW5CLENBQStCLE9BQS9CLEVBQXdDTixLQUFLLEdBQUcsSUFBaEQ7QUFDQUksZ0JBQVksQ0FBQ0MsS0FBYixDQUFtQkMsV0FBbkIsQ0FBK0IsUUFBL0IsRUFBeUNKLE1BQU0sR0FBRyxJQUFsRDtBQUNBSyxzREFBVSxDQUFDQyxNQUFYLENBQWtCbkIsV0FBbEIsQ0FBOEJlLFlBQTlCO0FBQ0g7O0FBL0R1QiIsImZpbGUiOiIuL3NyYy91aS90b2FzdHMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1dlYnBhY2tNb2R1bGVzLCBTZXR0aW5ncywgRE9NTWFuYWdlcn0gZnJvbSBcIm1vZHVsZXNcIjtcclxuXHJcbmNvbnN0IGNoYW5uZWxzQ2xhc3MgPSBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwic2lkZWJhclwiLCBcImhhc05vdGljZVwiKS5zaWRlYmFyLnNwbGl0KFwiIFwiKVswXTtcclxuY29uc3QgbWVtYmVyc1dyYXBDbGFzcyA9IFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJtZW1iZXJzV3JhcFwiKS5tZW1iZXJzV3JhcC5zcGxpdChcIiBcIilbMF07XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUb2FzdHMge1xyXG5cclxuICAgIHN0YXRpYyBnZXQgc2hvdWxkU2hvd1RvYXN0cygpIHtyZXR1cm4gU2V0dGluZ3MuZ2V0KFwic2V0dGluZ3NcIiwgXCJnZW5lcmFsXCIsIFwic2hvd1RvYXN0c1wiKTt9XHJcblxyXG4gICAgLyoqIFNob3J0aGFuZCBmb3IgYHR5cGUgPSBcInN1Y2Nlc3NcImAgZm9yIHtAbGluayBtb2R1bGU6VG9hc3RzLnNob3d9ICovXHJcbiAgICBzdGF0aWMgYXN5bmMgc3VjY2Vzcyhjb250ZW50LCBvcHRpb25zID0ge30pIHtyZXR1cm4gdGhpcy5zaG93KGNvbnRlbnQsIE9iamVjdC5hc3NpZ24ob3B0aW9ucywge3R5cGU6IFwic3VjY2Vzc1wifSkpO31cclxuXHJcbiAgICAvKiogU2hvcnRoYW5kIGZvciBgdHlwZSA9IFwiaW5mb1wiYCBmb3Ige0BsaW5rIG1vZHVsZTpUb2FzdHMuc2hvd30gKi9cclxuICAgIHN0YXRpYyBhc3luYyBpbmZvKGNvbnRlbnQsIG9wdGlvbnMgPSB7fSkge3JldHVybiB0aGlzLnNob3coY29udGVudCwgT2JqZWN0LmFzc2lnbihvcHRpb25zLCB7dHlwZTogXCJpbmZvXCJ9KSk7fVxyXG5cclxuICAgIC8qKiBTaG9ydGhhbmQgZm9yIGB0eXBlID0gXCJ3YXJuaW5nXCJgIGZvciB7QGxpbmsgbW9kdWxlOlRvYXN0cy5zaG93fSAqL1xyXG4gICAgc3RhdGljIGFzeW5jIHdhcm5pbmcoY29udGVudCwgb3B0aW9ucyA9IHt9KSB7cmV0dXJuIHRoaXMuc2hvdyhjb250ZW50LCBPYmplY3QuYXNzaWduKG9wdGlvbnMsIHt0eXBlOiBcIndhcm5pbmdcIn0pKTt9XHJcblxyXG4gICAgLyoqIFNob3J0aGFuZCBmb3IgYHR5cGUgPSBcImVycm9yXCJgIGZvciB7QGxpbmsgbW9kdWxlOlRvYXN0cy5zaG93fSAqL1xyXG4gICAgc3RhdGljIGFzeW5jIGVycm9yKGNvbnRlbnQsIG9wdGlvbnMgPSB7fSkge3JldHVybiB0aGlzLnNob3coY29udGVudCwgT2JqZWN0LmFzc2lnbihvcHRpb25zLCB7dHlwZTogXCJlcnJvclwifSkpO31cclxuXHJcbiAgICAvKiogU2hvcnRoYW5kIGZvciBgdHlwZSA9IFwiZGVmYXVsdFwiYCBmb3Ige0BsaW5rIG1vZHVsZTpUb2FzdHMuc2hvd30gKi9cclxuICAgIHN0YXRpYyBhc3luYyBkZWZhdWx0KGNvbnRlbnQsIG9wdGlvbnMgPSB7fSkge3JldHVybiB0aGlzLnNob3coY29udGVudCwgT2JqZWN0LmFzc2lnbihvcHRpb25zLCB7dHlwZTogXCJcIn0pKTt9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGlzIHNob3dzIGEgdG9hc3Qgc2ltaWxhciB0byBhbmRyb2lkIHRvd2FyZHMgdGhlIGJvdHRvbSBvZiB0aGUgc2NyZWVuLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBjb250ZW50IFRoZSBzdHJpbmcgdG8gc2hvdyBpbiB0aGUgdG9hc3QuXHJcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gb3B0aW9ucyBPcHRpb25zIG9iamVjdC4gT3B0aW9uYWwgcGFyYW1ldGVyLlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLnR5cGU9XCJcIl0gQ2hhbmdlcyB0aGUgdHlwZSBvZiB0aGUgdG9hc3Qgc3R5bGlzdGljYWxseSBhbmQgc2VtYW50aWNhbGx5LiBDaG9pY2VzOiBcIlwiLCBcImluZm9cIiwgXCJzdWNjZXNzXCIsIFwiZGFuZ2VyXCIvXCJlcnJvclwiLCBcIndhcm5pbmdcIi9cIndhcm5cIi4gRGVmYXVsdDogXCJcIlxyXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5pY29uPXRydWVdIERldGVybWluZXMgd2hldGhlciB0aGUgaWNvbiBzaG91bGQgc2hvdyBjb3JyZXNwb25kaW5nIHRvIHRoZSB0eXBlLiBBIHRvYXN0IHdpdGhvdXQgdHlwZSB3aWxsIGFsd2F5cyBoYXZlIG5vIGljb24uIERlZmF1bHQ6IHRydWVcclxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbb3B0aW9ucy50aW1lb3V0PTMwMDBdIEFkanVzdHMgdGhlIHRpbWUgKGluIG1zKSB0aGUgdG9hc3Qgc2hvdWxkIGJlIHNob3duIGZvciBiZWZvcmUgZGlzYXBwZWFyaW5nIGF1dG9tYXRpY2FsbHkuIERlZmF1bHQ6IDMwMDBcclxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMuZm9yY2VTaG93PWZhbHNlXSBXaGV0aGVyIHRvIGZvcmNlIHNob3dpbmcgdGhlIHRvYXN0IGFuZCBpZ25vcmUgdGhlIGJkIHNldHRpbmdcclxuICAgICAqL1xyXG4gICAgc3RhdGljIHNob3coY29udGVudCwgb3B0aW9ucyA9IHt9KSB7XHJcbiAgICAgICAgY29uc3Qge3R5cGUgPSBcIlwiLCBpY29uID0gdHJ1ZSwgdGltZW91dCA9IDMwMDAsIGZvcmNlU2hvdyA9IGZhbHNlfSA9IG9wdGlvbnM7XHJcbiAgICAgICAgaWYgKCF0aGlzLnNob3VsZFNob3dUb2FzdHMgJiYgIWZvcmNlU2hvdykgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMuZW5zdXJlQ29udGFpbmVyKCk7XHJcbiAgICAgICAgY29uc3QgdG9hc3RFbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcclxuICAgICAgICB0b2FzdEVsZW0uY2xhc3NMaXN0LmFkZChcImJkLXRvYXN0XCIpO1xyXG4gICAgICAgIGlmICh0eXBlKSB0b2FzdEVsZW0uY2xhc3NMaXN0LmFkZChcInRvYXN0LVwiICsgdHlwZSk7XHJcbiAgICAgICAgaWYgKHR5cGUgJiYgaWNvbikgdG9hc3RFbGVtLmNsYXNzTGlzdC5hZGQoXCJpY29uXCIpO1xyXG4gICAgICAgIHRvYXN0RWxlbS5pbm5lclRleHQgPSBjb250ZW50O1xyXG4gICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIuYmQtdG9hc3RzXCIpLmFwcGVuZENoaWxkKHRvYXN0RWxlbSk7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRvYXN0RWxlbS5jbGFzc0xpc3QuYWRkKFwiY2xvc2luZ1wiKTtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0b2FzdEVsZW0ucmVtb3ZlKCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYmQtdG9hc3RzIC5iZC10b2FzdFwiKS5sZW5ndGgpIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIuYmQtdG9hc3RzXCIpLnJlbW92ZSgpO1xyXG4gICAgICAgICAgICB9LCAzMDApO1xyXG4gICAgICAgIH0sIHRpbWVvdXQpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBlbnN1cmVDb250YWluZXIoKSB7XHJcbiAgICAgICAgaWYgKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIuYmQtdG9hc3RzXCIpKSByZXR1cm47XHJcbiAgICAgICAgY29uc3QgY29udGFpbmVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgLiR7Y2hhbm5lbHNDbGFzc30gKyBkaXZgKTtcclxuICAgICAgICBjb25zdCBtZW1iZXJsaXN0ID0gY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoYC4ke21lbWJlcnNXcmFwQ2xhc3N9YCk7XHJcbiAgICAgICAgY29uc3QgZm9ybSA9IGNvbnRhaW5lciA/IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKFwiZm9ybVwiKSA6IG51bGw7XHJcbiAgICAgICAgY29uc3QgbGVmdCA9IGNvbnRhaW5lciA/IGNvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0IDogMzEwO1xyXG4gICAgICAgIGNvbnN0IHJpZ2h0ID0gbWVtYmVybGlzdCA/IG1lbWJlcmxpc3QuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdCA6IDA7XHJcbiAgICAgICAgY29uc3Qgd2lkdGggPSByaWdodCA/IHJpZ2h0IC0gY29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQgOiBjb250YWluZXIub2Zmc2V0V2lkdGg7XHJcbiAgICAgICAgY29uc3QgYm90dG9tID0gZm9ybSA/IGZvcm0ub2Zmc2V0SGVpZ2h0IDogODA7XHJcbiAgICAgICAgY29uc3QgdG9hc3RXcmFwcGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcclxuICAgICAgICB0b2FzdFdyYXBwZXIuY2xhc3NMaXN0LmFkZChcImJkLXRvYXN0c1wiKTtcclxuICAgICAgICB0b2FzdFdyYXBwZXIuc3R5bGUuc2V0UHJvcGVydHkoXCJsZWZ0XCIsIGxlZnQgKyBcInB4XCIpO1xyXG4gICAgICAgIHRvYXN0V3JhcHBlci5zdHlsZS5zZXRQcm9wZXJ0eShcIndpZHRoXCIsIHdpZHRoICsgXCJweFwiKTtcclxuICAgICAgICB0b2FzdFdyYXBwZXIuc3R5bGUuc2V0UHJvcGVydHkoXCJib3R0b21cIiwgYm90dG9tICsgXCJweFwiKTtcclxuICAgICAgICBET01NYW5hZ2VyLmJkQm9keS5hcHBlbmRDaGlsZCh0b2FzdFdyYXBwZXIpO1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/toasts.js\n"); /***/ }), @@ -1150,7 +1149,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /*! no static exports found */ /***/ (function(module, exports) { -eval("module.exports = require(\"electron\");//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlL2V4dGVybmFsIFwicmVxdWlyZShcXFwiZWxlY3Ryb25cXFwiKVwiP2ZhMWUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEiLCJmaWxlIjoiZWxlY3Ryb24uanMiLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJlbGVjdHJvblwiKTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///electron\n"); +eval("module.exports = require(\"electron\");//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJyZXF1aXJlKFxcXCJlbGVjdHJvblxcXCIpXCI/ZmExZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSIsImZpbGUiOiJlbGVjdHJvbi5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImVsZWN0cm9uXCIpOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///electron\n"); /***/ }), @@ -1161,7 +1160,7 @@ eval("module.exports = require(\"electron\");//# sourceURL=[module]\n//# sourceM /*! no static exports found */ /***/ (function(module, exports) { -eval("module.exports = require(\"events\");//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlL2V4dGVybmFsIFwicmVxdWlyZShcXFwiZXZlbnRzXFxcIilcIj85NjE2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6ImV2ZW50cy5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImV2ZW50c1wiKTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///events\n"); +eval("module.exports = require(\"events\");//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJyZXF1aXJlKFxcXCJldmVudHNcXFwiKVwiPzk2MTYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEiLCJmaWxlIjoiZXZlbnRzLmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiZXZlbnRzXCIpOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///events\n"); /***/ }), @@ -1172,7 +1171,7 @@ eval("module.exports = require(\"events\");//# sourceURL=[module]\n//# sourceMap /*! no static exports found */ /***/ (function(module, exports) { -eval("module.exports = require(\"fs\");//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlL2V4dGVybmFsIFwicmVxdWlyZShcXFwiZnNcXFwiKVwiP2QzMGIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEiLCJmaWxlIjoiZnMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJmc1wiKTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///fs\n"); +eval("module.exports = require(\"fs\");//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJyZXF1aXJlKFxcXCJmc1xcXCIpXCI/ZDMwYiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSIsImZpbGUiOiJmcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImZzXCIpOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///fs\n"); /***/ }), @@ -1183,7 +1182,7 @@ eval("module.exports = require(\"fs\");//# sourceURL=[module]\n//# sourceMapping /*! no static exports found */ /***/ (function(module, exports) { -eval("module.exports = require(\"mkdirp\");//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlL2V4dGVybmFsIFwicmVxdWlyZShcXFwibWtkaXJwXFxcIilcIj9hNTkyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6Im1rZGlycC5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm1rZGlycFwiKTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///mkdirp\n"); +eval("module.exports = require(\"mkdirp\");//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJyZXF1aXJlKFxcXCJta2RpcnBcXFwiKVwiP2E1OTIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEiLCJmaWxlIjoibWtkaXJwLmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwibWtkaXJwXCIpOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///mkdirp\n"); /***/ }), @@ -1194,7 +1193,7 @@ eval("module.exports = require(\"mkdirp\");//# sourceURL=[module]\n//# sourceMap /*! no static exports found */ /***/ (function(module, exports) { -eval("module.exports = require(\"module\");//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlL2V4dGVybmFsIFwibW9kdWxlXCI/N2M0OCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSIsImZpbGUiOiJtb2R1bGUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtb2R1bGVcIik7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///module\n"); +eval("module.exports = require(\"module\");//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtb2R1bGVcIj83YzQ4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6Im1vZHVsZS5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm1vZHVsZVwiKTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///module\n"); /***/ }), @@ -1205,7 +1204,7 @@ eval("module.exports = require(\"module\");//# sourceURL=[module]\n//# sourceMap /*! no static exports found */ /***/ (function(module, exports) { -eval("module.exports = require(\"path\");//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlL2V4dGVybmFsIFwicmVxdWlyZShcXFwicGF0aFxcXCIpXCI/MmYzNyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSIsImZpbGUiOiJwYXRoLmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicGF0aFwiKTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///path\n"); +eval("module.exports = require(\"path\");//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJyZXF1aXJlKFxcXCJwYXRoXFxcIilcIj8yZjM3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6InBhdGguanMiLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJwYXRoXCIpOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///path\n"); /***/ }), @@ -1216,7 +1215,7 @@ eval("module.exports = require(\"path\");//# sourceURL=[module]\n//# sourceMappi /*! no static exports found */ /***/ (function(module, exports) { -eval("module.exports = require(\"request\");//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlL2V4dGVybmFsIFwicmVxdWlyZShcXFwicmVxdWVzdFxcXCIpXCI/MmM1ZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSIsImZpbGUiOiJyZXF1ZXN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVxdWVzdFwiKTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///request\n"); +eval("module.exports = require(\"request\");//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJyZXF1aXJlKFxcXCJyZXF1ZXN0XFxcIilcIj8yYzVlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6InJlcXVlc3QuanMiLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZXF1ZXN0XCIpOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///request\n"); /***/ }), @@ -1227,7 +1226,7 @@ eval("module.exports = require(\"request\");//# sourceURL=[module]\n//# sourceMa /*! no static exports found */ /***/ (function(module, exports) { -eval("module.exports = require(\"rimraf\");//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlL2V4dGVybmFsIFwicmVxdWlyZShcXFwicmltcmFmXFxcIilcIj80N2FkIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6InJpbXJhZi5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJpbXJhZlwiKTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///rimraf\n"); +eval("module.exports = require(\"rimraf\");//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJyZXF1aXJlKFxcXCJyaW1yYWZcXFwiKVwiPzQ3YWQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEiLCJmaWxlIjoicmltcmFmLmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmltcmFmXCIpOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///rimraf\n"); /***/ }), @@ -1238,8 +1237,8 @@ eval("module.exports = require(\"rimraf\");//# sourceURL=[module]\n//# sourceMap /*! no static exports found */ /***/ (function(module, exports) { -eval("module.exports = require(\"yauzl\");//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlL2V4dGVybmFsIFwicmVxdWlyZShcXFwieWF1emxcXFwiKVwiPzU5MjgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEiLCJmaWxlIjoieWF1emwuanMiLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ5YXV6bFwiKTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///yauzl\n"); +eval("module.exports = require(\"yauzl\");//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJyZXF1aXJlKFxcXCJ5YXV6bFxcXCIpXCI/NTkyOCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSIsImZpbGUiOiJ5YXV6bC5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInlhdXpsXCIpOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///yauzl\n"); /***/ }) -/******/ })["default"]; \ No newline at end of file +/******/ }); \ No newline at end of file diff --git a/dist/index.min.js b/dist/index.min.js index ae4c547c..d42cf968 100644 --- a/dist/index.min.js +++ b/dist/index.min.js @@ -1 +1 @@ -var Core=function(e){var t={};function s(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,s),i.l=!0,i.exports}return s.m=e,s.c=t,s.d=function(e,t,n){s.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},s.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},s.t=function(e,t){if(1&t&&(e=s(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(s.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)s.d(n,i,function(t){return e[t]}.bind(null,i));return n},s.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return s.d(t,"a",t),t},s.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},s.p="",s(s.s=9)}([function(e,t){e.exports=require("electron")},function(e,t){e.exports=require("path")},function(e,t){e.exports=require("fs")},function(e,t){e.exports=require("request")},function(e,t){e.exports=require("module")},function(e,t){e.exports=require("events")},function(e,t){e.exports=require("rimraf")},function(e,t){e.exports=require("yauzl")},function(e,t){e.exports=require("mkdirp")},function(e,t,s){"use strict";s.r(t);var n={};s.r(n),s.d(n,"CustomCSS",(function(){return at})),s.d(n,"WindowPrefs",(function(){return lt})),s.d(n,"TwentyFourHour",(function(){return dt})),s.d(n,"ClassNormalizer",(function(){return ht})),s.d(n,"PublicServers",(function(){return Ct})),s.d(n,"VoiceDisconnect",(function(){return St})),s.d(n,"ColoredText",(function(){return Mt})),s.d(n,"DarkMode",(function(){return xt})),s.d(n,"MinimalMode",(function(){return Nt})),s.d(n,"VoiceMode",(function(){return Pt})),s.d(n,"EmoteModule",(function(){return zt})),s.d(n,"EmoteMenu",(function(){return Ot})),s.d(n,"CopySelector",(function(){return Rt})),s.d(n,"Debugger",(function(){return Ut})),s.d(n,"ReactDevTools",(function(){return _t}));var i={local:!1,localServer:"//localhost:8080",minified:!0,version:"0.3.0",branch:"master",repo:"rauenzi",minSupportedVersion:"0.3.0",bbdVersion:"1.0.0"},o=[{type:"category",id:"general",name:"General",collapsible:!0,settings:[{type:"switch",id:"download",value:!0},{type:"switch",id:"emoteMenu",value:!0},{type:"switch",id:"hideEmojiMenu",value:!1,enableWith:"emoteMenu"},{type:"switch",id:"showNames",value:!0},{type:"switch",id:"modifiers",value:!0},{type:"switch",id:"animateOnHover",value:!1}]},{type:"category",id:"categories",name:"Categories",collapsible:!0,settings:[{type:"switch",id:"twitchglobal",value:!0},{type:"switch",id:"twitchsubscriber",value:!1},{type:"switch",id:"frankerfacez",value:!0},{type:"switch",id:"bttv",value:!0}]}],r=[{type:"category",id:"general",collapsible:!0,settings:[{type:"switch",id:"emotes",value:!0},{type:"switch",id:"publicServers",value:!0},{type:"switch",id:"voiceDisconnect",value:!1},{type:"switch",id:"twentyFourHour",value:!1},{type:"switch",id:"classNormalizer",value:!0},{type:"switch",id:"showToasts",value:!0}]},{type:"category",id:"appearance",collapsible:!0,settings:[{type:"switch",id:"voiceMode",value:!1},{type:"switch",id:"minimalMode",value:!1},{type:"switch",id:"hideChannels",value:!1,enableWith:"minimalMode"},{type:"switch",id:"darkMode",value:!0},{type:"switch",id:"coloredText",value:!1}]},{type:"category",id:"addons",collapsible:!0,shown:!1,settings:[{type:"switch",id:"addonErrors",value:!0},{type:"switch",id:"autoScroll",value:!0},{type:"switch",id:"autoReload",value:!0},{type:"dropdown",id:"editAction",value:"detached",options:[{value:"detached"},{value:"system"}]}]},{type:"category",id:"customcss",collapsible:!0,shown:!1,settings:[{type:"switch",id:"customcss",value:!0},{type:"switch",id:"liveUpdate",value:!1},{type:"dropdown",id:"openAction",value:"settings",options:[{value:"settings"},{value:"detached"},{value:"system"}]}]},{type:"category",id:"developer",collapsible:!0,shown:!1,settings:[{type:"switch",id:"debuggerHotkey",value:!1},{type:"switch",id:"copySelector",value:!1},{type:"switch",id:"reactDevTools",value:!1}]},{type:"category",id:"window",collapsible:!0,shown:!1,settings:[{type:"switch",id:"transparency",value:!1},{type:"switch",id:"frame",value:!1,hidden:!0}]}],a={Panels:{plugins:"Plugins",themes:"Themes",customcss:"Custom CSS"},Collections:{settings:{name:"Settings",general:{name:"General",emotes:{name:"Emote System",note:"Enables BD's emote system"},publicServers:{name:"Public Servers",note:"Display public servers button"},voiceDisconnect:{name:"Voice Disconnect",note:"Disconnect from voice server when closing Discord"},twentyFourHour:{name:"24-Hour Timestamps",note:"Hides channels when in minimal mode"},classNormalizer:{name:"Normalize Classes",note:"Adds stable classes to elements to help themes. (e.g. adds .da-channels to .channels-Ie2l6A)"},showToasts:{name:"Show Toasts",note:"Shows a small notification for important information"}},appearance:{name:"Appearance",voiceMode:{name:"Voice Mode",note:"Hides everything that isn't voice chat"},minimalMode:{name:"Minimal Mode",note:"Hide elements and reduce the size of elements"},hideChannels:{name:"Hide Channels",note:"Hides channels when in minimal mode"},darkMode:{name:"Dark Mode",note:"Make certain elements dark by default"},coloredText:{name:"Colored Text",note:"Make text colour the same as role color"}},addons:{name:"Addon Manager",addonErrors:{name:"Show Addon Errors",note:"Shows a modal with plugin/theme errors"},autoScroll:{name:"Scroll To Settings",note:"Auto-scrolls to a plugin's settings when the button is clicked (only if out of view)"},autoReload:{name:"Automatic Loading",note:"Automatically loads, reloads, and unloads plugins and themes"},editAction:{name:"Edit Action",note:"Where plugins & themes appear when editing",options:{detached:"Detached Window",system:"System Editor"}}},customcss:{name:"Custom CSS",customcss:{name:"Custom CSS",note:"Enables the Custom CSS tab"},liveUpdate:{name:"Live Update",note:"Updates the css as you type"},startDetached:{name:"Start Detached",note:"Clicking the Custom CSS tab opens the editor in a separate window"},nativeOpen:{name:"Open in Native Editor",note:"Clicking the Custom CSS tab opens your custom css in your native editor"},openAction:{name:"Editor Location",note:"Where Custom CSS should open by default",options:{settings:"Settings Menu",detached:"Detached Window",system:"System Editor"}}},developer:{name:"Developer Settings",debuggerHotkey:{name:"Debugger Hotkey",note:"Allows activating debugger when pressing F8"},copySelector:{name:"Copy Selector",note:'Adds a "Copy Selector" option to context menus when developer mode is active'},reactDevTools:{name:"React Developer Tools",note:"Injects your local installation of React Developer Tools into Discord"}},window:{name:"Window Preferences",transparency:{name:"Enable Transparency",note:"Enables the main window to be see-through (requires restart)"},frame:{name:"Window Frame",note:"Adds the native os window frame to the main window"}}},emotes:{name:"Emotes",general:{name:"General",download:{name:"Download Emotes",note:"Download emotes whenever they are out of date"},emoteMenu:{name:"Emote Menu",note:"Show Twitch/Favourite emotes in emote menu"},hideEmojiMenu:{name:"Hide Emoji Menu",note:"Hides Discord's emoji menu when using emote menu"},autoCaps:{name:"Emote Autocapitalization",note:"Autocapitalize emote commands"},showNames:{name:"Show Names",note:"Show emote names on hover"},modifiers:{name:"Show Emote Modifiers",note:"Enable emote mods (flip, spin, pulse, spin2, spin3, 1spin, 2spin, 3spin, tr, bl, br, shake, shake2, shake3, flap)"},animateOnHover:{name:"Animate On Hover",note:"Only animate the emote modifiers on hover"}},categories:{name:"Categories",twitchglobal:{name:"Twitch Globals",note:"Show Twitch global emotes"},twitchsubscriber:{name:"Twitch Subscribers",note:"Show Twitch subscriber emotes"},frankerfacez:{name:"FrankerFaceZ",note:"Show emotes from FFZ"},bttv:{name:"BetterTTV",note:"Show emotes from BTTV"}}}},Addons:{title:"{{name}} v{{version}} by {{author}}",openFolder:"Open {{type}} Folder",reload:"Reload",addonSettings:"Settings",website:"Website",source:"Source",invite:"Support Server",donate:"Donate",patreon:"Patreon",name:"Name",author:"Author",version:"Version",added:"Date Added",modified:"Date Modified",search:"Search {{type}}",editAddon:"Edit",deleteAddon:"Delete",confirmDelete:"Are you sure you want to delete {{name}}?",confirmationText:"You have unsaved changes to {{name}}. Closing this window will lose all those changes.",enabled:"{{name}} has been enabled.",disabled:"{{name}} has been disabled.",couldNotEnable:"{{name}} could not be enabled.",couldNotDisable:"{{name}} could not be disabled.",couldNotStart:"{{name}} could not be started.",couldNotStop:"{{name}} could not be stopped.",methodError:"{{method}} could not be fired.",unknownAuthor:"Unknown Author",noDescription:"Description not provided."},CustomCSS:{confirmationText:"You have unsaved changes to your Custom CSS. Closing this window will lose all those changes.",update:"Update",save:"Save",openNative:"Open in System Editor",openDetached:"Detach Window",settings:"Editor Settings",editorTitle:"Custom CSS Editor"},Developer:{copySelector:"Copy Selector"},Emotes:{loading:"Loading emotes in the background do not reload.",loaded:"All emotes successfully loaded.",clearEmotes:"Clear Emote Data",favoriteAction:"Favorite!"},PublicServers:{button:"public",join:"Join",joining:"Joining",joined:"Joined",loading:"Loading",loadMore:"Load More",notConnected:"Not connected to DiscordServers.com!",search:"Search",connect:"Connect",reconnect:"Reconnect",categories:"Categories",connection:"Connected as: {{username}}#{{discriminator}}",results:"Showing {{start}}-{{end}} of {{total}} results in {{category}}",query:"for {{query}}"},Modals:{confirmAction:"Are You Sure?",okay:"Okay",cancel:"Cancel",close:"Close",name:"Name",message:"Message",error:"Error",addonErrors:"Addon Errors",restartRequired:"Restart Required",restartNow:"Restart Now",restartLater:"Restart Later",additionalInfo:"Additional Info"},ReactDevTools:{notFound:"Extension Not Found",notFoundDetails:"Unable to find the React Developer Tools extension on your PC. Please install the extension on your local Chrome installation."},Sorting:{sortBy:"Sort By",order:"Order",ascending:"Ascending",descending:"Descending"},Startup:{notSupported:"Not Supported",versionMismatch:"BandagedBD Injector v{{injector}} is not supported by the latest remote (v{{remote}}).\n\nPlease download the latest version from [GitHub](https://github.com/rauenzi/BetterDiscordApp/releases/latest)",incompatibleApp:"BandagedBD does not work with {{app}}. Please uninstall one of them.",updateNow:"Update Now",maybeLater:"Maybe Later",updateAvailable:"Update Available",updateInfo:"There is an update available for BandagedBD's Injector ({{version}}).\n\nYou can either update and restart now, or later.",updateFailed:"Could Not Update",manualUpdate:"Unable to update automatically, please download the installer and reinstall normally.\n\n[Download Installer](https://github.com/rauenzi/BetterDiscordApp/releases/latest)",jqueryFailed:"jQuery Failed To Load",jqueryFailedDetails:"jQuery could not be loaded, and some plugins may not work properly. Proceed at your own risk."},WindowPrefs:{enabledInfo:"This option requires a transparent theme in order to work properly. On Windows this may break your aero snapping and maximizing.\n\nIn order to take effect, Discord needs to be restarted. Do you want to restart now?",disabledInfo:"In order to take effect, Discord needs to be restarted. Do you want to restart now?"}},l={description:"Don't be shocked, this modal is supposed to be here.",changes:[{title:"What's New?",items:["**BandagedBD will now keep you updated with changelogs!** I will try to only show a changelog when there's more than a tiny or internal change.","**Twitter (@BandagedBD)** I created a Twitter to try and provide support and such for those without access to the server. https://Twitter.com/BandagedBD"]},{title:"Fixes",type:"fixed",items:["**Colored Text** option should work again.","**Emotes** should show up in chat.","Fixed a bug where BBD attempted to patch the TabBar module incorrectly. (Thanks, DevilBro)"]},{title:"Minor Stuff",type:"improved",items:["**Colour->Color.** Swapped to using English-US spelling by default to be consistent, and to potentially be prepared for localization.","**Versions simplified.** The BandagedBD version now integrates into Discord's at the bottom-left of settings instead of randomly being a part of the setting list."]}]};const d={err:"error",error:"error",dbg:"debug",debug:"debug",log:"log",warn:"warn",info:"info"};class c{static stacktrace(e,t,s){console.error(`%c[${e}]%c ${t}\n\n%c`,"color: #3a71c1; font-weight: 700;","color: red; font-weight: 700;","color: red;",s)}static err(e,...t){c._log(e,t,"error")}static warn(e,...t){c._log(e,t,"warn")}static info(e,...t){c._log(e,t,"info")}static debug(e,...t){c._log(e,t,"debug")}static log(e,...t){c._log(e,t)}static _log(e,t,s="log"){s=c.parseType(s),Array.isArray(t)||(t=[t]),console[s](`%c[BandagedBD]%c [${e}]%c`,"color: #3E82E5; font-weight: 700;","color: #3a71c1;","",...t)}static parseType(e){return d.hasOwnProperty(e)?d[e]:"log"}}class h{static escapeID(e){return e.replace(/^[^a-z]+|[^\w-]+/gi,"-")}static addStyle(e,t){document.head.append(h.createElement(``))}static removeStyle(e){const t=document.getElementById(e);t&&t.remove()}static addScript(e,t){return new Promise(s=>{const n=document.createElement("script");n.id=e,n.src=t,n.type="text/javascript",n.onload=s,document.head.append(n)})}static removeScript(e){e=this.escapeID(e);const t=document.getElementById(e);t&&t.remove()}static animate({timing:e=(e=>e),update:t,duration:s}){const n=performance.now();requestAnimationFrame((function i(o){let r=(o-n)/s;r>1&&(r=1);const a=e(r);t(a),r<1&&requestAnimationFrame(i)}))}static Q(e){const t=this.parseHTML(e);return(t instanceof NodeList?Array.from(t).some(e=>1===e.nodeType):1===t.nodeType)?t:this.query(e)}static query(e,t){return t||(t=document),t.querySelector(e)}static queryAll(e,t){return t||(t=document),t.querySelectorAll(e)}static parseHTML(e,t=!1){const s=document.createElement("template");s.innerHTML=e;const n=s.content.cloneNode(!0);return t?n:n.childNodes.length>1?n.childNodes:n.childNodes[0]}static createElement(e,t=!1){return this.parseHTML(e,t)}static escapeHTML(e){const t=document.createTextNode(""),s=document.createElement("span");return s.append(t),t.nodeValue=e,s.innerHTML}static addClass(e,...t){t=t.flat().filter(e=>e);for(let e=0;ee),e.classList.add(...t),e}static removeClass(e,...t){for(let e=0;ee),e.classList.remove(...t),e}static toggleClass(e,t,s){return t=t.toString().split(" ").filter(e=>e),void 0!==s?t.forEach(t=>e.classList.toggle(t,s)):t.forEach(t=>e.classList.toggle(t)),e}static hasClass(e,t){return t.toString().split(" ").filter(e=>e).every(t=>e.classList.contains(t))}static replaceClass(e,t,s){return e.classList.replace(t,s),e}static appendTo(e,t){return"string"==typeof t&&(t=this.query(t)),t?(t.append(e),e):null}static prependTo(e,t){return"string"==typeof t&&(t=this.query(t)),t?(t.prepend(e),e):null}static insertAfter(e,t){return t.parentNode.insertBefore(e,t.nextSibling),e}static after(e,t){return e.parentNode.insertBefore(t,e.nextSibling),e}static next(e,t=""){return t?e.querySelector("+ "+t):e.nextElementSibling}static nextAll(e){return e.querySelectorAll("~ *")}static nextUntil(e,t){const s=[];for(;e.nextElementSibling&&!e.nextElementSibling.matches(t);)s.push(e=e.nextElementSibling);return s}static previous(e,t=""){const s=e.previousElementSibling;return t?s&&s.matches(t)?s:null:s}static previousAll(e){const t=[];for(;e.previousElementSibling;)t.push(e=e.previousElementSibling);return t}static previousUntil(e,t){const s=[];for(;e.previousElementSibling&&!e.previousElementSibling.matches(t);)s.push(e=e.previousElementSibling);return s}static indexInParent(e){const t=e.parentNode.childNodes;let s=0;for(let n=0;n "+t)}static findChildren(e,t){return e.querySelectorAll(":scope > "+t)}static parents(e,t=""){const s=[];if(t)for(;e.parentElement&&e.parentElement.closest(t);)s.push(e=e.parentElement.closest(t));else for(;e.parentElement;)s.push(e=e.parentElement);return s}static parentsUntil(e,t){const s=[];for(;e.parentElement&&!e.parentElement.matches(t);)s.push(e=e.parentElement);return s}static siblings(e,t="*"){return Array.from(e.parentElement.children).filter(s=>s!=e&&s.matches(t))}static css(e,t,s){return void 0===s?global.getComputedStyle(e)[t]:(e.style[t]=s,e)}static width(e,t){return void 0===t?parseInt(getComputedStyle(e).width):(e.style.width=t,e)}static height(e,t){return void 0===t?parseInt(getComputedStyle(e).height):(e.style.height=t,e)}static text(e,t){return void 0===t?e.textContent:e.textContent=t}static innerWidth(e){return e.clientWidth}static innerHeight(e){return e.clientHeight}static outerWidth(e){return e.offsetWidth}static outerHeight(e){return e.offsetHeight}static offset(e){return e.getBoundingClientRect()}static get listeners(){return this._listeners||(this._listeners={})}static on(e,t,s,n){const[i,o]=t.split("."),r=s&&n;n||(n=s);const a=r?function(e){e.target.matches(s)&&n(e)}:n;e.addEventListener(i,a);const l=()=>{e.removeEventListener(i,a)};if(o){this.listeners[o]||(this.listeners[o]=[]);const t=()=>{l(),this.listeners[o].splice(this.listeners[o].findIndex(t=>t.event==i&&t.element==e),1)};return this.listeners[o].push({event:i,element:e,cancel:t}),t}return l}static once(e,t,s,n){const[i,o]=t.split("."),r=s&&n;n||(n=s);const a=r?function(t){t.target.matches(s)&&(n(t),e.removeEventListener(i,a))}:function(t){n(t),e.removeEventListener(i,a)};e.addEventListener(i,a);const l=()=>{e.removeEventListener(i,a)};if(o){this.listeners[o]||(this.listeners[o]=[]);const t=()=>{l(),this.listeners[o].splice(this.listeners[o].findIndex(t=>t.event==i&&t.element==e),1)};return this.listeners[o].push({event:i,element:e,cancel:t}),t}return l}static __offAll(e,t){const[s,n]=e.split(".");let i=e=>e.event==s,o=e=>e;t&&(i=e=>e.event==s&&e.element==t,o=e=>e.element==t);const r=this.listeners[n]||[],a=s?r.filter(i):r.filter(o);for(let e=0;e{this.observer.unsubscribe(n),t()};return this.observer.subscribe(n,t=>{const n=Array.from(s?t.addedNodes:t.removedNodes),i=n.indexOf(e)>-1,o=n.some(t=>t.contains(e));return i||o}),e}static onMount(e,t){return this.onMountChange(e,t)}static onUnmount(e,t){return this.onMountChange(e,t,!1)}static onAdded(e,t){return this.onMount(e,t)}static onRemoved(e,t){return this.onUnmount(e,t,!1)}static wrap(e){const t=this.parseHTML('
');for(let s=0;s1?n.childNodes:n.childNodes[0]}static getTextArea(){return h.query(".channelTextArea-1LDbYG textarea")}static insertText(e,t){e.focus(),e.selectionStart=0,e.selectionEnd=e.value.length,document.execCommand("insertText",!1,t)}static escape(e){return e.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&")}static testJSON(e){try{return JSON.parse(e)}catch(e){return!1}}static suppressErrors(e,t){return(...s)=>{try{return e(...s)}catch(e){c.stacktrace("SuppressedError","Error occurred in "+t,e)}}}static onRemoved(e,t){const s=new MutationObserver(n=>{for(let i=0;i-1,l=r.some(t=>t.contains(e));(a||l)&&(s.disconnect(),t())}});s.observe(document.body,{subtree:!0,childList:!0})}static isEmpty(e){if(null==e||null==e||""==e)return!0;if("object"!=typeof e)return!1;if(Array.isArray(e))return 0==e.length;for(const t in e)if(e.hasOwnProperty(t))return!1;return!0}static memoizeObject(e){const t=new Proxy(e,{get:function(e,t){if(e.hasOwnProperty(t)){if(Object.getOwnPropertyDescriptor(e,t).get){const s=e[t];delete e[t],e[t]=s}return e[t]}},set:function(e,t,s){return e.hasOwnProperty(t)?c.error("MemoizedObject","Trying to overwrite existing property"):(e[t]=s,e[t])}});return Object.defineProperty(t,"hasOwnProperty",{value:function(e){return void 0!==this[e]}}),t}static extend(e,...t){for(let s=0;se.startsWith("__reactInternalInstance"))]||null}static getOwnerInstance(e,{include:t,exclude:s=["Popout","Tooltip","Scroller","BackgroundFlash"],filter:n=(e=>e)}={}){if(void 0===e)return;const i=void 0===t,o=i?s:t;function r(e){const t=function(e){const t=e.type;return t&&(t.displayName||t.name)||null}(e);return null!==t&&!!(o.includes(t)^i)}let a=this.getReactInstance(e);for(a=a&&a.return;null!==a;a=a.return){if(null===a)continue;const e=a.stateNode;if(null!==a&&!(e instanceof HTMLElement)&&r(a)&&n(e))return e}return null}}class p{static byProperties(e,t=(e=>e)){return s=>{const n=t(s);return!!n&&e.every(e=>void 0!==n[e])}}static byPrototypeFields(e,t=(e=>e)){return s=>{const n=t(s);return!!n&&(!!n.prototype&&e.every(e=>void 0!==n.prototype[e]))}}static byCode(e,t=(e=>e)){return s=>{const n=t(s);return!!n&&-1!==n.toString([]).search(e)}}static byString(...e){return t=>{const s=t.toString([]);for(const t of e)if(!s.includes(t))return!1;return!0}}static byDisplayName(e){return t=>t&&t.displayName===e}static combine(...e){return t=>e.every(e=>e(t))}}const m=e=>{if(e.remove&&e.set&&e.clear&&e.get&&!e.sort)return null;if(!e.getToken&&!e.getEmail&&!e.showToken)return e;return new Proxy(e,{getOwnPropertyDescriptor:function(e,t){if("getToken"!==t&&"getEmail"!==t&&"showToken"!==t)return Object.getOwnPropertyDescriptor(e,t)},get:function(e,t){return"getToken"==t?()=>"mfa.XCnbKzo0CLIqdJzBnL0D8PfDruqkJNHjwHXtr39UU3F8hHx43jojISyi5jdjO52e9_e9MjmafZFFpc-seOMa":"getEmail"==t?()=>"puppet11112@gmail.com":"showToken"==t?()=>!0:e[t]}})};class g{static find(e,t=!0){return this.getModule(e,t)}static findAll(e){return this.getModule(e,!1)}static findByUniqueProperties(e,t=!0){return t?this.getByProps(...e):this.getAllByProps(...e)}static findByDisplayName(e){return this.getByDisplayName(e)}static getModule(e,t=!0){const s=this.getAllModules(),n=[];for(const i in s){if(!s.hasOwnProperty(i))continue;const o=s[i],{exports:r}=o;let a=null;if(r&&(r.__esModule&&r.default&&e(r.default)&&(a=r.default),e(r)&&(a=r),a)){if(t)return m(a);n.push(m(a))}}return t||0==n.length?void 0:n}static getModules(e){return this.getModule(e,!1)}static getByDisplayName(e){return this.getModule(p.byDisplayName(e),!0)}static getByRegex(e,t=!0){return this.getModule(p.byCode(e),t)}static getByPrototypes(...e){return this.getModule(p.byPrototypeFields(e),!0)}static getAllByPrototypes(...e){return this.getModule(p.byPrototypeFields(e),!1)}static getByProps(...e){return this.getModule(p.byProperties(e),!0)}static getAllByProps(...e){return this.getModule(p.byProperties(e),!1)}static getByString(...e){return this.getModule(p.byString(...e),!0)}static getAllByString(...e){return this.getModule(p.byString(...e),!1)}static get require(){if(this._require)return this._require;const e="bbd-webpackmodules",t="function"==typeof window.webpackJsonp?window.webpackJsonp([],{[e]:(e,t,s)=>t.default=s},[e]).default:window.webpackJsonp.push([[],{[e]:(e,t,s)=>e.exports=s},[[e]]]);return delete t.m[e],delete t.c[e],this._require=t}static getAllModules(){return this.require.c}}var f=u.memoizeObject({get React(){return g.getByProps("createElement","cloneElement")},get ReactDOM(){return g.getByProps("render","findDOMNode")},get Flux(){return g.getByProps("connectStores")},get Events(){return g.getByPrototypes("setMaxListeners","emit")},get GuildStore(){return g.getByProps("getGuild")},get SortedGuildStore(){return g.getByProps("getSortedGuilds")},get SelectedGuildStore(){return g.getByProps("getLastSelectedGuildId")},get GuildSync(){return g.getByProps("getSyncedGuilds")},get GuildInfo(){return g.getByProps("getAcronym")},get GuildChannelsStore(){return g.getByProps("getChannels","getDefaultChannel")},get GuildMemberStore(){return g.getByProps("getMember")},get MemberCountStore(){return g.getByProps("getMemberCounts")},get GuildEmojiStore(){return g.getByProps("getEmojis")},get GuildActions(){return g.getByProps("markGuildAsRead")},get GuildPermissions(){return g.getByProps("getGuildPermissions")},get ChannelStore(){return g.getByProps("getChannels","getDMFromUserId")},get SelectedChannelStore(){return g.getByProps("getLastSelectedChannelId")},get ChannelActions(){return g.getByProps("selectChannel")},get PrivateChannelActions(){return g.getByProps("openPrivateChannel")},get ChannelSelector(){return g.getByProps("selectGuild","selectChannel")},get UserInfoStore(){return g.getByProps("getToken")},get UserSettingsStore(){return g.getByProps("guildPositions")},get AccountManager(){return g.getByProps("register","login")},get UserSettingsUpdater(){return g.getByProps("updateRemoteSettings")},get OnlineWatcher(){return g.getByProps("isOnline")},get CurrentUserIdle(){return g.getByProps("getIdleTime")},get RelationshipStore(){return g.getByProps("isBlocked","getFriendIDs")},get RelationshipManager(){return g.getByProps("addRelationship")},get MentionStore(){return g.getByProps("getMentions")},get UserStore(){return g.getByProps("getCurrentUser")},get UserStatusStore(){return g.getByProps("getStatus","getState")},get UserTypingStore(){return g.getByProps("isTyping")},get UserActivityStore(){return g.getByProps("getActivity")},get UserNameResolver(){return g.getByProps("getName")},get UserNoteStore(){return g.getByProps("getNote")},get UserNoteActions(){return g.getByProps("updateNote")},get EmojiInfo(){return g.getByProps("isEmojiDisabled")},get EmojiUtils(){return g.getByProps("getGuildEmoji")},get EmojiStore(){return g.getByProps("getByCategory","EMOJI_NAME_RE")},get InviteStore(){return g.getByProps("getInvites")},get InviteResolver(){return g.getByProps("findInvite")},get InviteActions(){return g.getByProps("acceptInvite")},get DiscordConstants(){return g.getByProps("Permissions","ActivityTypes","StatusTypes")},get DiscordPermissions(){return g.getByProps("Permissions","ActivityTypes","StatusTypes").Permissions},get PermissionUtils(){return g.getByProps("getHighestRole")},get ColorConverter(){return g.getByProps("hex2int")},get ColorShader(){return g.getByProps("darken")},get TinyColor(){return g.getByPrototypes("toRgb")},get ClassResolver(){return g.getByProps("getClass")},get ButtonData(){return g.getByProps("ButtonSizes")},get IconNames(){return g.getByProps("IconNames")},get NavigationUtils(){return g.getByProps("transitionTo","replaceWith","getHistory")},get MessageStore(){return g.getByProps("getMessages")},get MessageActions(){return g.getByProps("jumpToMessage","_sendMessage")},get MessageQueue(){return g.getByProps("enqueue")},get MessageParser(){return g.getByProps("createMessage","parse","unparse")},get hljs(){return g.getByProps("highlight","highlightBlock")},get SimpleMarkdown(){return g.getByProps("parseBlock","parseInline","defaultOutput")},get ExperimentStore(){return g.getByProps("getExperimentOverrides")},get ExperimentsManager(){return g.getByProps("isDeveloper")},get CurrentExperiment(){return g.getByProps("getExperimentId")},get ImageResolver(){return g.getByProps("getUserAvatarURL","getGuildIconURL")},get ImageUtils(){return g.getByProps("getSizedImageSrc")},get AvatarDefaults(){return g.getByProps("getUserAvatarURL","DEFAULT_AVATARS")},get WindowInfo(){return g.getByProps("isFocused","windowSize")},get TagInfo(){return g.getByProps("VALID_TAG_NAMES")},get DOMInfo(){return g.getByProps("canUseDOM")},get LocaleManager(){return g.getByProps("setLocale")},get Moment(){return g.getByProps("parseZone")},get LocationManager(){return g.getByProps("createLocation")},get Timestamps(){return g.getByProps("fromTimestamp")},get TimeFormatter(){return g.getByProps("dateFormat")},get Strings(){return g.getByProps("Messages").Messages},get StringFormats(){return g.getByProps("a","z")},get StringUtils(){return g.getByProps("toASCII")},get URLParser(){return g.getByProps("Url","parse")},get ExtraURLs(){return g.getByProps("getArticleURL")},get DNDActions(){return g.getByProps("beginDrag")},get DNDSources(){return g.getByProps("addTarget")},get DNDObjects(){return g.getByProps("DragSource")},get MediaDeviceInfo(){return g.getByProps("Codecs","SUPPORTED_BROWSERS")},get MediaInfo(){return g.getByProps("getOutputVolume")},get MediaEngineInfo(){return g.getByProps("MediaEngineFeatures")},get VoiceInfo(){return g.getByProps("EchoCancellation")},get VideoStream(){return g.getByProps("getVideoStream")},get SoundModule(){return g.getByProps("playSound")},get ElectronModule(){return g.getByProps("setBadge")},get Dispatcher(){return g.getByProps("dirtyDispatch")},get PathUtils(){return g.getByProps("hasBasename")},get NotificationModule(){return g.getByProps("showNotification")},get RouterModule(){return g.getByProps("Router")},get APIModule(){return g.getByProps("getAPIBaseURL")},get AnalyticEvents(){return g.getByProps("AnalyticEventConfigs")},get KeyGenerator(){return g.getByRegex(/"binary"/)},get Buffers(){return g.getByProps("Buffer","kMaxLength")},get DeviceStore(){return g.getByProps("getDevices")},get SoftwareInfo(){return g.getByProps("os")},get CurrentContext(){return g.getByProps("setTagsContext")},get GuildClasses(){const e=g.getByProps("wrapper","unreadMentionsBar"),t=g.getByProps("guildsError","selected"),s=g.getByProps("blobContainer");return Object.assign({},e,t,s)},get LayerStack(){return g.getByProps("pushLayer")}});const y=s(2),b=s(1),v=DiscordNative.globals?DiscordNative.globals.releaseChannel:DiscordNative.app?DiscordNative.app.getReleaseChannel():"stable";var w=new class{constructor(){this.data={misc:{}},this.pluginData={},this.cacheData={}}initialize(){y.existsSync(this.baseFolder)||y.mkdirSync(this.baseFolder),y.existsSync(this.dataFolder)||y.mkdirSync(this.dataFolder),y.existsSync(this.localeFolder)||y.mkdirSync(this.localeFolder),y.existsSync(this.emoteFolder)||y.mkdirSync(this.emoteFolder),y.existsSync(this.cacheFile)||y.writeFileSync(this.cacheFile,JSON.stringify({})),y.existsSync(this.customCSS)||y.writeFileSync(this.customCSS,"");const e=y.readdirSync(this.dataFolder).filter(e=>!y.statSync(b.resolve(this.dataFolder,e)).isDirectory()&&e.endsWith(".json"));for(const t of e)this.data[t.split(".")[0]]=require(b.resolve(this.dataFolder,t));this.cacheData=u.testJSON(y.readFileSync(this.cacheFile).toString())||{}}get injectionPath(){if(this._injectionPath)return this._injectionPath;const e=s(0).remote.app,t=e.getAppPath(),n=e.getPath("userData"),i=b.resolve(n,e.getVersion(),"modules","discord_desktop_core","injector"),o=b.resolve(t,"..","app"),r=y.existsSync(o)?o:y.existsSync(i)?i:null;return this._injectionPath=r||null}get customCSS(){return this._customCSS||(this._customCSS=b.resolve(this.dataFolder,"custom.css"))}get baseFolder(){return this._baseFolder||(this._baseFolder=b.resolve(i.dataPath,"data"))}get dataFolder(){return this._dataFolder||(this._dataFolder=b.resolve(this.baseFolder,""+v))}get localeFolder(){return this._localeFolder||(this._localeFolder=b.resolve(this.baseFolder,"locales"))}get emoteFolder(){return this._emoteFolder||(this._emoteFolder=b.resolve(this.baseFolder,"emotes"))}get cacheFile(){return this._cacheFile||(this._cacheFile=b.resolve(this.baseFolder,".cache"))}getPluginFile(e){return b.resolve(i.dataPath,"plugins",e+".config.json")}_getFile(e){return"settings"==e||"plugins"==e||"themes"==e||"window"==e?b.resolve(this.dataFolder,e+".json"):b.resolve(this.dataFolder,"misc.json")}getBDData(e){return this.data.misc[e]||""}setBDData(e,t){this.data.misc[e]=t,y.writeFileSync(b.resolve(this.dataFolder,"misc.json"),JSON.stringify(this.data.misc,null,4))}getLocale(e){const t=b.resolve(this.localeFolder,e+".json");return y.existsSync(t)?u.testJSON(y.readFileSync(t).toString()):null}saveLocale(e,t){y.writeFileSync(b.resolve(this.localeFolder,e+".json"),JSON.stringify(t,null,4))}getCacheHash(e,t){return this.cacheData[e]&&y.existsSync(b.resolve(this.baseFolder,e,t+".json"))&&this.cacheData[e][t]||""}setCacheHash(e,t,s){this.cacheData[e]||(this.cacheData[e]={}),this.cacheData[e][t]=s,y.writeFileSync(this.cacheFile,JSON.stringify(this.cacheData))}invalidateCache(e,t){this.cacheData[e]&&(delete this.cacheData[e][t],y.writeFileSync(this.cacheFile,JSON.stringify(this.cacheData)))}emotesExist(e){return y.existsSync(b.resolve(this.emoteFolder,e+".json"))}getEmoteData(e){const t=b.resolve(this.emoteFolder,e+".json");return y.existsSync(t)?u.testJSON(y.readFileSync(t).toString()):null}saveEmoteData(e,t){y.writeFileSync(b.resolve(this.emoteFolder,e+".json"),JSON.stringify(t))}getData(e){return this.data[e]||""}setData(e,t){this.data[e]=t,y.writeFileSync(b.resolve(this.dataFolder,e+".json"),JSON.stringify(t,null,4))}loadCustomCSS(){return y.readFileSync(this.customCSS).toString()}saveCustomCSS(e){return y.writeFileSync(this.customCSS,e)}getPluginData(e,t){return void 0!==this.pluginData[e]?this.pluginData[e][t]||void 0:y.existsSync(this.getPluginFile(e))?(this.pluginData[e]=JSON.parse(y.readFileSync(this.getPluginFile(e))),this.pluginData[e][t]||void 0):void 0}setPluginData(e,t,s){void 0!==s&&(void 0===this.pluginData[e]&&(this.pluginData[e]={}),this.pluginData[e][t]=s,y.writeFileSync(this.getPluginFile(e),JSON.stringify(this.pluginData[e],null,4)))}deletePluginData(e,t){void 0===this.pluginData[e]&&(this.pluginData[e]={}),delete this.pluginData[e][t],y.writeFileSync(this.getPluginFile(e),JSON.stringify(this.pluginData[e],null,4))}};class C{static get bdHead(){return this.getElement("bd-head")}static get bdBody(){return this.getElement("bd-body")}static get bdScripts(){return this.getElement("bd-scripts")}static get bdStyles(){return this.getElement("bd-styles")}static get bdThemes(){return this.getElement("bd-themes")}static get bdCustomCSS(){return this.getElement("#customcss")}static escapeID(e){return e.replace(/^[^a-z]+|[^\w-]+/gi,"-")}static getElement(e,t=document){return e instanceof Node?e:t.querySelector(e)}static createElement(e,t={}){const{className:s,id:n,target:i}=t,o=document.createElement(e);return s&&(o.className=s),n&&(o.id=n),i&&this.getElement(i).append(o),o}static removeStyle(e){e=this.escapeID(e);const t=this.getElement("#"+e,this.bdStyles);t&&t.remove()}static injectStyle(e,t){e=this.escapeID(e);const s=this.getElement("#"+e,this.bdStyles)||this.createElement("style",{id:e});s.textContent=t,this.bdStyles.append(s)}static unlinkStyle(e){return this.removeStyle(e)}static linkStyle(e,t){return e=this.escapeID(e),new Promise(s=>{const n=this.getElement("#"+e,this.bdStyles)||this.createElement("link",{id:e});n.rel="stylesheet",n.href=t,n.onload=s,this.bdStyles.append(n)})}static removeTheme(e){e=this.escapeID(e);const t=this.getElement("#"+e,this.bdThemes);t&&t.remove()}static injectTheme(e,t){e=this.escapeID(e);const s=this.getElement("#"+e,this.bdThemes)||this.createElement("style",{id:e});s.textContent=t,this.bdThemes.append(s)}static updateCustomCSS(e){this.bdCustomCSS.textContent=e}static removeScript(e){e=this.escapeID(e);const t=this.getElement("#"+e,this.bdScripts);t&&t.remove()}static injectScript(e,t){return e=this.escapeID(e),new Promise(s=>{const n=this.getElement("#"+e,this.bdScripts)||this.createElement("script",{id:e});n.src=t,n.onload=s,this.bdScripts.append(n)})}}C.createElement("bd-head",{target:document.head}),C.createElement("bd-body",{target:document.body}),C.createElement("bd-scripts",{target:C.bdHead}),C.createElement("bd-styles",{target:C.bdHead}),C.createElement("bd-themes",{target:C.bdHead}),C.createElement("style",{id:"customcss",target:C.bdHead});const S=s(5);var E=new class extends S{constructor(){super(),this.setMaxListeners(20)}dispatch(e,...t){this.emit(e,...t)}};const M=s(3),{Dispatcher:x,DiscordConstants:N,UserSettingsStore:P}=f;var D=new class{get discordLocale(){return P.locale.split("-")[0]}get defaultLocale(){return"en"}constructor(){this.locale="",this.strings={}}async initialize(){await this.setLocale(this.discordLocale),x.subscribe(N.ActionTypes.USER_SETTINGS_UPDATE,({settings:e})=>{const t=e.locale;t&&t!=this.locale&&this.setLocale(t.split("-")[0])})}async setLocale(e){let t;if(e!=this.defaultLocale){if(t=await this.getLocaleStrings(e),!t)return this.setLocale(this.defaultLocale)}else t=a;this.locale=e,u.extend(this.strings,t),E.emit("strings-updated")}async getLocaleStrings(e){const t=w.getCacheHash("locales",e);if(!t)return await this.downloadLocale(e);const s=await this.downloadLocale(e,t);return s||w.getLocale(e)}downloadLocale(e,t=""){return new Promise(s=>{const n={url:u.repoUrl(`assets/locales/${e}.json`),timeout:2e3,json:!0};t&&(n.headers={"If-None-Match":t}),M.get(n,(t,n,i)=>{if(t||200!==n.statusCode)return s(null);w.saveLocale(e,i),w.setCacheHash("locales",e,n.headers.etag),s(i)})})}};class A extends String{format(e){return u.formatString(this,e)}}var k=new Proxy(D.strings,{get:function(e,t){return e.hasOwnProperty(t)?new Proxy(e[t],{get:function(e,t){return"string"==typeof e[t]?new A(e[t]):e[t]}}):new Proxy({},{get:function(){return`String group "${t}" not found.`}})}}),T=new class{constructor(){this.state={},this.collections=[],this.panels=[],this.updateStrings=this.updateStrings.bind(this)}initialize(){this.registerCollection("settings","Settings",r),E.on("strings-updated",this.updateStrings)}registerCollection(e,t,s,n=null){if(this.collections.find(t=>t.id==e))return c.error("Settings","Already have a collection with id "+e);this.collections.push({type:"collection",id:e,name:t,settings:s,button:n}),this.setupCollection(e),this.loadCollection(e),this.updateStrings()}removeCollection(e){const t=this.collections.findIndex(t=>t.id==e);if(!t<0)return c.error("Settings","No collection with id "+e);this.collections.splice(t,1)}registerPanel(e,t,s){if(this.panels.find(t=>t.id==e))return c.error("Settings","Already have a panel with id "+e);const{element:n,onClick:i,order:o=1}=s,r={id:e,order:o,label:t,section:e};i&&(r.clickListener=i),n&&(r.element=n instanceof f.React.Component?()=>f.React.createElement(n,{}):"function"==typeof n?n:()=>n),this.panels.push(r)}removePanel(e){const t=this.panels.findIndex(t=>t.id==e);if(!t<0)return c.error("Settings","No collection with id "+e);this.panels.splice(t,1)}getPath(e,t="",s=""){return{collection:3==e.length?e[0]:t,category:3==e.length?e[1]:2==e.length?e[0]:s,setting:e[e.length-1]}}setupCollection(e){const t=this.collections.find(t=>t.id==e);if(!t)return;const s=t.settings;this.state[t.id]||(this.state[t.id]={});for(let e=0;e{const e=this.state[o.collection][o.category][o.setting];return s.enableWith?!e:e}})}}}}saveSettings(){for(const e in this.state)this.saveCollection(e)}loadSettings(){for(const e in this.state)this.loadCollection(e)}saveCollection(e){w.setData(e,this.state[e])}loadCollection(e){const t=w.getData(e);if(!t)return this.saveCollection(e);for(const s in this.state[e]){t[s]||Object.assign(t,{[s]:this.state[e][s]});for(const n in this.state[e][s]){if(null==t[s][n])continue;const i=this.getSetting(e,s,n);if("switch"==i.type&&(this.state[e][s][n]=t[s][n]),"dropdown"==i.type){i.options.some(e=>e.value==t[s][n])&&(this.state[e][s][n]=t[s][n])}}}this.saveCollection(e)}onSettingChange(e,t,s,n){this.state[e][t][s]=n,E.dispatch("setting-updated",e,t,s,n),this.saveCollection(e)}getSetting(e,t,s){return 2==arguments.length?this.collections[0].find(e=>e.id==arguments[0]).settings.find(e=>e.id==arguments[1]):this.collections.find(t=>t.id==e).settings.find(e=>e.id==t).settings.find(e=>e.id==s)}get(e,t,s){return 2==arguments.length&&(s=t,t=e,e="settings"),!(!this.state[e]||!this.state[e][t])&&this.state[e][t][s]}set(e,t,s,n){return 3==arguments.length&&(n=s,s=t,t=e,e="settings"),this.onSettingChange(e,t,s,n)}on(e,t,s,n){const i=(i,o,r,a)=>{i===e&&o===t&&r===s&&n(a)};return E.on("setting-updated",i),()=>{E.off("setting-updated",i)}}updateStrings(){for(let e=0;e"before"===e.type))try{t.callback(this,arguments)}catch(s){c.err("Patcher",`Could not fire before callback of ${e.functionName} for ${t.caller}`,s)}const s=e.children.filter(e=>"instead"===e.type);if(s.length)for(const n of s)try{const s=n.callback(this,arguments,e.originalFunction.bind(this));void 0!==s&&(t=s)}catch(t){c.err("Patcher",`Could not fire instead callback of ${e.functionName} for ${n.caller}`,t)}else t=e.originalFunction.apply(this,arguments);for(const s of e.children.filter(e=>"after"===e.type))try{const e=s.callback(this,arguments,t);void 0!==e&&(t=e)}catch(t){c.err("Patcher",`Could not fire after callback of ${e.functionName} for ${s.caller}`,t)}return t}}static rePatch(e){e.proxyFunction=e.module[e.functionName]=this.makeOverride(e)}static makePatch(e,t,s){const n={name:s,module:e,functionName:t,originalFunction:e[t],proxyFunction:null,revert:()=>{n.module[n.functionName]=n.originalFunction,n.proxyFunction=null,n.children=[]},counter:0,children:[]};return n.proxyFunction=e[t]=this.makeOverride(n),this.patches.push(n),n}static before(e,t,s,n,i={}){return this.pushChildPatch(e,t,s,n,Object.assign(i,{type:"before"}))}static after(e,t,s,n,i={}){return this.pushChildPatch(e,t,s,n,Object.assign(i,{type:"after"}))}static instead(e,t,s,n,i={}){return this.pushChildPatch(e,t,s,n,Object.assign(i,{type:"instead"}))}static pushChildPatch(e,t,s,n,i={}){const{type:o="after",forcePatch:r=!0}=i,a=this.resolveModule(t);if(!a)return null;if(!a[s]&&r&&(a[s]=function(){}),!(a[s]instanceof Function))return null;"string"==typeof t&&(i.displayName=t);const l=`${i.displayName||a.displayName||a.name||a.constructor.displayName||a.constructor.name}.${s}`,d=this.patches.find(e=>e.module==a&&e.functionName==s)||this.makePatch(a,s,l);d.proxyFunction||this.rePatch(d);const c={caller:e,type:o,id:d.counter,callback:n,unpatch:()=>{if(d.children.splice(d.children.findIndex(e=>e.id===c.id&&e.type===o),1),d.children.length<=0){const e=this.patches.findIndex(e=>e.module==a&&e.functionName==s);this.patches[e].revert(),this.patches.splice(e,1)}}};return d.children.push(c),d.counter++,c.unpatch}}const j=f.React,B={},I=new Set,z=new Set;var F=new class{get named(){return B}get unknown(){return I}get listeners(){return z}constructor(){L.after("ReactComponents",j,"createElement",(e,t,s)=>{this.walkRenderTree(s)}),L.instead("ReactComponents",j.Component.prototype,"componentWillMount",e=>{this.addComponent(e.constructor)}),L.instead("ReactComponents",j.Component.prototype,"UNSAFE_componentWillMount",e=>{this.addComponent(e.constructor)}),L.instead("ReactComponents",j.PureComponent.prototype,"componentWillMount",e=>{this.addComponent(e.constructor)}),L.instead("ReactComponents",j.PureComponent.prototype,"UNSAFE_componentWillMount",e=>{this.addComponent(e.constructor)})}initialize(){this.walkReactTree(document.querySelector("#app-mount")._reactRootContainer._internalRoot.current)}get(e,t){return new Promise(s=>{if(B[e])return s(B[e]);if(z.add({name:e,filter:t,resolve:s}),t)for(const s of I)t(s)&&(s.displayName=e,I.delete(s),this.addNamedComponent(s))})}addNamedComponent(e){const t=e.displayName;if(!B[t]){B[t]=e;for(const s of z)s.name===t&&(s.resolve(e),z.delete(s))}}addUnknownComponent(e){if(!I.has(e)){for(const t of z)t.filter&&t.filter(e)&&(e.displayName=t.name,this.addNamedComponent(e));e.displayName||I.add(e)}}addComponent(e){return e.displayName?this.addNamedComponent(e):this.addUnknownComponent(e)}walkRenderTree(e){if(e){if("function"==typeof e.type&&this.addComponent(e.type),Array.isArray(e))for(const t of e)this.walkRenderTree(t);e.props&&e.props.children&&this.walkRenderTree(e.props.children)}}walkReactTree(e){e&&("function"==typeof e.type&&this.addComponent(e.type),e.child&&this.walkReactTree(e.child),e.sibling&&this.walkReactTree(e.sibling))}};const O=f.React,R=f.ReactDOM,U=g.getByProps("sidebar","hasNotice").sidebar.split(" ")[0],H=g.getByProps("membersWrap").membersWrap.split(" ")[0];class q{static get shouldShowToasts(){return T.get("settings","general","showToasts")}static async success(e,t={}){return this.show(e,Object.assign(t,{type:"success"}))}static async info(e,t={}){return this.show(e,Object.assign(t,{type:"info"}))}static async warning(e,t={}){return this.show(e,Object.assign(t,{type:"warning"}))}static async error(e,t={}){return this.show(e,Object.assign(t,{type:"error"}))}static async default(e,t={}){return this.show(e,Object.assign(t,{type:""}))}static show(e,t={}){const{type:s="",icon:n=!0,timeout:i=3e3,forceShow:o=!1}=t;if(!this.shouldShowToasts&&!o)return;this.ensureContainer();const r=document.createElement("div");r.classList.add("bd-toast"),s&&r.classList.add("toast-"+s),s&&n&&r.classList.add("icon"),r.innerText=e,document.querySelector(".bd-toasts").appendChild(r),setTimeout(()=>{r.classList.add("closing"),setTimeout(()=>{r.remove(),document.querySelectorAll(".bd-toasts .bd-toast").length||document.querySelector(".bd-toasts").remove()},300)},i)}static ensureContainer(){if(document.querySelector(".bd-toasts"))return;const e=document.querySelector(`.${U} + div`),t=e.querySelector("."+H),s=e?e.querySelector("form"):null,n=e?e.getBoundingClientRect().left:310,i=t?t.getBoundingClientRect().left:0,o=i?i-e.getBoundingClientRect().left:e.offsetWidth,r=s?s.offsetHeight:80,a=document.createElement("div");a.classList.add("bd-toasts"),a.style.setProperty("left",n+"px"),a.style.setProperty("width",o+"px"),a.style.setProperty("bottom",r+"px"),C.bdBody.appendChild(a)}}class W{static get shouldShowAddonErrors(){return T.get("settings","addons","addonErrors")}static get ModalActions(){return g.getByProps("openModal","updateModal")}static get ModalStack(){return g.getByProps("push","update","pop","popWithKey")}static get AlertModal(){return g.getByPrototypes("handleCancel","handleSubmit","handleMinorConfirm")}static get TextElement(){return g.getByProps("Sizes","Weights")}static get ConfirmationModal(){return g.findByDisplayName("ConfirmModal")}static get Markdown(){return g.findByDisplayName("Markdown")}static default(e,t){const s=h.createElement(`
\n
\n \n
`);s.querySelector(".footer button").addEventListener("click",()=>{s.classList.add("closing"),setTimeout(()=>{s.remove()},300)}),s.querySelector(".bd-backdrop").addEventListener("click",()=>{s.classList.add("closing"),setTimeout(()=>{s.remove()},300)}),document.querySelector("#app-mount").append(s)}static alert(e,t){this.showConfirmationModal(e,t,{cancelText:""})}static showConfirmationModal(e,t,s={}){const n=this.Markdown,i=this.ConfirmationModal,o=this.ModalActions;if(t instanceof A&&(t=t.toString()),!this.ModalActions||!this.ConfirmationModal||!this.Markdown)return this.default(e,t);const r=()=>{},{onConfirm:a=r,onCancel:l=r,confirmText:d=k.Modals.okay,cancelText:c=k.Modals.cancel,danger:h=!1,key:u}=s;return Array.isArray(t)||(t=[t]),t=t.map(e=>"string"==typeof e?O.createElement(n,null,e):e),o.openModal(s=>O.createElement(i,Object.assign({header:e,red:h,confirmText:d,cancelText:c,onConfirm:a,onCancel:l},s),t),{modalKey:u})}static showAddonErrors({plugins:e=[],themes:t=[]}){if(!e||!t||!this.shouldShowAddonErrors)return;if(!e.length&&!t.length)return;const s=h.createElement(`
\n
\n \n
`),n=function(e){const t=h.createElement('
');for(const s of e){const e=h.createElement(`
\n
${s.name?s.name:s.file}
\n
${s.message}
\n \n
`);t.append(e),s.error&&e.querySelectorAll("a").forEach(e=>e.addEventListener("click",e=>{e.preventDefault(),c.stacktrace("AddonError",`Error details for ${s.name?s.name:s.file}.`,s.error)}))}return t},i=[n(e),n(t)];s.querySelectorAll(".tab-bar-item").forEach(e=>e.addEventListener("click",e=>{e.preventDefault();const t=s.querySelector(".tab-bar-item.selected");t&&h.removeClass(t,"selected"),h.addClass(e.target,"selected");const n=s.querySelector(".scroller");n.innerHTML="",n.append(i[h.index(e.target)])})),s.querySelector(".footer button").addEventListener("click",()=>{h.addClass(s,"closing"),setTimeout(()=>{s.remove()},300)}),s.querySelector(".bd-backdrop").addEventListener("click",()=>{h.addClass(s,"closing"),setTimeout(()=>{s.remove()},300)}),h.query("#app-mount").append(s),e.length?s.querySelector(".tab-bar-item").click():s.querySelectorAll(".tab-bar-item")[1].click()}static showChangelogModal(e={}){const t=g.getByProps("push","update","pop","popWithKey"),s=g.getByProps("fixed","improved"),n=g.findByDisplayName("Text"),o=g.getByProps("Child"),r=g.getByProps("Tags","default"),a=g.getModule(e=>e.defaultProps&&0==e.defaultProps.selectable),l=g.getByProps("defaultRules","parse");if(!(a&&t&&s&&n&&o&&r&&l))return c.warn("Modals","showChangelogModal missing modules");const{image:d="https://repository-images.githubusercontent.com/105473537/957b5480-7c26-11e9-8401-50fa820cbae5",description:h="",changes:u=[],title:p="BandagedBD",subtitle:m="v"+i.bbdVersion,footer:y}=e,b=O.createElement,v=[b("img",{src:d})];h&&v.push(b("p",null,l.parse(h)));for(let e=0;eb("li",null,l.parse(e))));v.push(o)}return t.push(a,{className:s.container,selectable:!0,onScroll:e=>e,onClose:e=>e,renderHeader:function(){return b(o.Child,{grow:1,shrink:1},b(r.default,{tag:r.Tags.H4},p),b(n,{size:n.Sizes.SMALL,color:n.Colors.STANDARD,className:s.date},m))},renderFooter:()=>{const e=g.getModule(e=>"Anchor"==e.displayName),s=g.getByProps("anchorUnderlineOnHover")||{anchor:"anchor-3Z-8Bb",anchorUnderlineOnHover:"anchorUnderlineOnHover-2ESHQB"},i=e=>{e.preventDefault(),e.stopPropagation(),t.pop(),f.InviteActions.acceptInviteAndTransitionToInviteChannel("2HScm8j")},r=e?b(e,{onClick:i},"Join our Discord Server."):b("a",{className:`${s.anchor} ${s.anchorUnderlineOnHover}`,onClick:i},"Join our Discord Server."),a=b(n,{size:n.Sizes.SMALL,color:n.Colors.STANDARD},"Need support? ",r);return b(o.Child,{grow:1,shrink:1},y||a)},children:v})}}class _ extends Error{constructor(e,t,s,n){super(s),this.name=e,this.file=t,this.error=n}}class G extends Error{constructor(e){super(e),this.name="MetaError"}}class Q extends O.Component{constructor(e){super(e),this.onClick=this.onClick.bind(this),this.state={checked:this.props.checked||!1}}render(){return O.createElement("div",{className:"checkbox-item"},O.createElement("div",{className:"checkbox-label label-JWQiNe da-label"},this.props.text),O.createElement("div",{className:"checkbox-wrapper checkbox-3kaeSU da-checkbox checkbox-3EVISJ da-checkbox",onClick:this.onClick},O.createElement("div",{className:"checkbox-inner checkboxInner-3yjcPe da-checkboxInner"},O.createElement("input",{className:"checkbox checkboxElement-1qV33p da-checkboxElement",checked:this.state.checked,type:"checkbox"}),O.createElement("span",null)),O.createElement("span",null)))}onClick(){this.props.onChange(!this.state.checked),this.setState({checked:!this.state.checked})}}function V(){return(V=Object.assign||function(e){for(var t=1;t{for(const s of e){if(!(s.addedNodes.length&&s.addedNodes[0]instanceof Element))continue;const e=s.addedNodes[0];e.parentElement===document.body&&e.querySelector("#ace_settingsmenu")&&(e.id="ace_settingsmenu_container",t.disconnect())}});t.observe(document.body,{childList:!0})};const t=this.props.theme==K.defaultProps.theme?this.props.theme.split("-")[1]:this.props.theme;this.editor.setTheme("ace/theme/"+t),this.editor.session.setMode("ace/mode/"+this.props.language),this.editor.setShowPrintMargin(!1),this.editor.setFontSize(this.props.fontSize),this.editor.on("change",this.onChange)}componentWillUnmount(){this.editor.destroy()}get value(){return this.editor.session.getValue()}set value(e){this.editor.setValue(e)}onChange(){this.props.onChange&&this.props.onChange(this.value)}showSettings(){return this.editor.keyBinding.$defaultHandler.commands.showSettingsMenu.exec(this.editor)}resize(){return this.editor.resize()}buildControl(e){return"checkbox"==e.type?this.makeCheckbox(e):this.makeButton(e)}makeCheckbox(e){return O.createElement(Q,{text:e.label,onChange:e.onChange,checked:e.checked})}makeButton(e){return O.createElement(Z,{color:"black",position:"top",text:e.tooltip},t=>O.createElement("button",V({},t,{className:"btn btn-primary",onClick:t=>{e.onClick(t,this.value)}}),e.label))}render(){this.editor&&this.editor.resize&&this.editor.resize();const e=this.props.controls.filter(e=>"right"!=e.side).map(this.buildControl.bind(this)),t=this.props.controls.filter(e=>"right"==e.side).map(this.buildControl.bind(this));return O.createElement("div",{id:"bd-editor-panel",className:this.props.theme},O.createElement("div",{id:"bd-editor-controls"},O.createElement("div",{className:"controls-section controls-left"},e),O.createElement("div",{className:"controls-section controls-right"},t)),O.createElement("div",{className:"editor-wrapper"},O.createElement("div",{id:this.props.id,className:"editor "+this.props.theme},this.props.value)))}}class X extends O.Component{render(){const e=this.props.size||"24px";return O.createElement("svg",{viewBox:"0 0 24 24",style:{width:e,height:e}},O.createElement("path",{fill:"none",d:"M0 0h24v24H0V0z"}),O.createElement("path",{d:"M17 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V7l-4-4zm2 16H5V5h11.17L19 7.83V19zm-7-7c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3zM6 6h9v4H6z"}))}}class ee extends O.Component{render(){const e=this.props.size||"24px";return O.createElement("svg",{viewBox:"0 0 24 24",fill:"#FFFFFF",style:{width:e,height:e},onClick:this.props.onClick},O.createElement("path",{d:"M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34c-.39-.39-1.02-.39-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z"}),O.createElement("path",{d:"M0 0h24v24H0z",fill:"none"}))}}class te extends O.Component{render(){const e=this.props.size||"20px";return O.createElement("svg",{viewBox:"0 0 20 20",style:{width:e,height:e}},O.createElement("path",{fill:"none",d:"M0 0h20v20H0V0z"}),O.createElement("path",{d:"M15.95 10.78c.03-.25.05-.51.05-.78s-.02-.53-.06-.78l1.69-1.32c.15-.12.19-.34.1-.51l-1.6-2.77c-.1-.18-.31-.24-.49-.18l-1.99.8c-.42-.32-.86-.58-1.35-.78L12 2.34c-.03-.2-.2-.34-.4-.34H8.4c-.2 0-.36.14-.39.34l-.3 2.12c-.49.2-.94.47-1.35.78l-1.99-.8c-.18-.07-.39 0-.49.18l-1.6 2.77c-.1.18-.06.39.1.51l1.69 1.32c-.04.25-.07.52-.07.78s.02.53.06.78L2.37 12.1c-.15.12-.19.34-.1.51l1.6 2.77c.1.18.31.24.49.18l1.99-.8c.42.32.86.58 1.35.78l.3 2.12c.04.2.2.34.4.34h3.2c.2 0 .37-.14.39-.34l.3-2.12c.49-.2.94-.47 1.35-.78l1.99.8c.18.07.39 0 .49-.18l1.6-2.77c.1-.18.06-.39-.1-.51l-1.67-1.32zM10 13c-1.65 0-3-1.35-3-3s1.35-3 3-3 3 1.35 3 3-1.35 3-3 3z"}))}}class se extends O.Component{constructor(e){super(e),this.hasUnsavedChanges=!1,this.onChange=this.onChange.bind(this),this.save=this.save.bind(this),this.openNative=this.openNative.bind(this),this.update=this.update.bind(this),this.controls=[{label:O.createElement(X,{size:"18px"}),tooltip:k.CustomCSS.save,onClick:this.save},{label:O.createElement(ee,{size:"18px"}),tooltip:k.CustomCSS.openNative,onClick:this.openNative},{label:O.createElement(te,{size:"18px"}),tooltip:k.CustomCSS.settings,onClick:"showSettings"}]}update(){this.forceUpdate()}updateEditor(e){this.editor&&(this.editor.value=e)}get value(){return this.editor.session.getValue()}set value(e){this.editor.setValue(e)}showSettings(){return this.editor.keyBinding.$defaultHandler.commands.showSettingsMenu.exec(this.editor)}resize(){return this.editor.resize()}setEditorRef(e){this.editor=e,this.props.editorRef&&void 0!==this.props.editorRef.current?this.props.editorRef.current=e:this.props.editorRef&&(this.props.editorRef=e)}render(){return O.createElement(K,{ref:this.setEditorRef.bind(this),language:this.props.language,id:this.props.id||"bd-addon-editor",controls:this.controls,value:this.props.content,onChange:this.onChange})}onChange(){this.hasUnsavedChanges=!0}save(e,t){this.hasUnsavedChanges=!1,this.props.save&&this.props.save(t)}openNative(){this.props.openNative&&this.props.openNative()}}class ne{static get width(){return Math.max(document.documentElement.clientWidth,window.innerWidth||0)}static get height(){return Math.max(document.documentElement.clientHeight,window.innerHeight||0)}}class ie extends O.Component{render(){return O.createElement("svg",{viewBox:"0 0 12 12",style:{width:"18px",height:"18px"}},O.createElement("g",{className:"background",fill:"none",fillRule:"evenodd"},O.createElement("path",{d:"M0 0h12v12H0"}),O.createElement("path",{className:"fill",fill:"#dcddde",d:"M9.5 3.205L8.795 2.5 6 5.295 3.205 2.5l-.705.705L5.295 6 2.5 8.795l.705.705L6 6.705 8.795 9.5l.705-.705L6.705 6"})))}}class oe extends O.Component{render(){const e=this.props.size||"24px";return O.createElement("svg",{className:this.props.className||"",fill:"#FFFFFF",viewBox:"0 0 24 24",style:{width:e,height:e},onClick:this.props.onClick},O.createElement("path",{fill:"none",d:"M0 0h24v24H0V0z"}),O.createElement("path",{d:"M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h-3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z"}))}}class re extends O.Component{constructor(e){super(e),this.state={modalOpen:!1},this.offX=0,this.offY=0,this.maxX=this.props.maxX||ne.width,this.maxY=this.props.maxY||ne.height,this.minX=this.props.minX||0,this.minY=this.props.minY||0,this.titlebar=O.createRef(),this.window=O.createRef(),this.close=this.close.bind(this),this.maximize=this.maximize.bind(this),this.onDrag=this.onDrag.bind(this),this.onDragStart=this.onDragStart.bind(this),this.onDragStop=this.onDragStop.bind(this),this.onResizeStart=this.onResizeStart.bind(this)}componentDidMount(){this.window.current.addEventListener("mousedown",this.onResizeStart,!1),this.titlebar.current.addEventListener("mousedown",this.onDragStart,!1),document.addEventListener("mouseup",this.onDragStop,!1)}onResizeStart(){this.currentWidth=this.window.current.offsetWidth,this.currentHeight=this.window.current.offsetHeight}onDragStop(){document.removeEventListener("mousemove",this.onDrag,!0);const e=this.window.current.offsetWidth,t=this.window.current.offsetHeight;if(e!=this.currentWidth||t!=this.currentHeight){this.props.onResize&&this.props.onResize();const s=parseInt(this.window.current.style.left),n=parseInt(this.window.current.style.top);s+e>=this.maxX&&(this.window.current.style.width=this.maxX-s+"px"),n+t>=this.maxY&&(this.window.current.style.height=this.maxY-n+"px")}this.currentWidth=e,this.currentHeight=t}onDragStart(e){const t=this.window.current;this.offY=e.clientY-parseInt(t.offsetTop),this.offX=e.clientX-parseInt(t.offsetLeft),document.addEventListener("mousemove",this.onDrag,!0)}onDrag(e){const t=this.window.current;let s=e.clientY-this.offY;s<=this.minY&&(s=this.minY),s+this.currentHeight>=this.maxY&&(s=this.maxY-this.currentHeight);let n=e.clientX-this.offX;n<=this.minX&&(n=this.minX),n+this.currentWidth>=this.maxX&&(n=this.maxX-this.currentWidth),t.style.top=s+"px",t.style.left=n+"px"}componentWillUnmount(){this.titlebar.current.removeEventListener("mousedown",this.onDragStart,!1),document.removeEventListener("mouseup",this.onDragStop,!1)}render(){const e=this.props.center?ne.height/2-this.props.height/2:this.props.top,t=this.props.center?ne.width/2-this.props.width/2:this.props.left,s=`floating-window${" "+this.props.className||""}${this.props.resizable?" resizable":""}${this.state.modalOpen?" modal-open":""}`,n={height:this.props.height,width:this.props.width,left:t||0,top:e||0};return O.createElement("div",{id:this.props.id,className:s,ref:this.window,style:n},O.createElement("div",{className:"floating-window-titlebar",ref:this.titlebar},O.createElement("span",{className:"title"},this.props.title),O.createElement("div",{className:"floating-window-buttons"},O.createElement("div",{className:"button maximize-button",onClick:this.maximize},O.createElement(oe,{size:"18px"})),O.createElement("div",{className:"button close-button",onClick:this.close},O.createElement(ie,null)))),O.createElement("div",{className:"floating-window-content"},this.props.children))}maximize(){this.window.current.style.width="100%",this.window.current.style.height="100%",this.props.onResize&&this.props.onResize();const e=this.window.current.offsetWidth,t=this.window.current.offsetHeight,s=parseInt(this.window.current.style.left)+e;parseInt(this.window.current.style.top)+t>this.maxY&&(this.window.current.style.top=this.maxY-t+"px"),s>this.maxX&&(this.window.current.style.left=this.maxX-e+"px");const n=parseInt(this.window.current.style.left),i=parseInt(this.window.current.style.top);if(i{W.showConfirmationModal(k.Modals.confirmAction,this.props.confirmationText,{danger:!0,confirmText:k.Modals.close,onConfirm:()=>{e(!0)},onCancel:()=>{e(!1)}})})}}function ae(){return(ae=Object.assign||function(e){for(var t=1;t div[class*="app-"]');return e?e.offsetTop:0}render(){return this.state.windows.map(e=>O.createElement(re,ae({},e,{close:this.close.bind(this,e.id),minY:this.minY}),e.children))}open(e){this.setState({windows:[...this.state.windows,e]})}close(e){this.setState({windows:this.state.windows.filter(t=>(t.id==e&&t.onClose&&t.onClose(),t.id!=e))})}static get id(){return"floating-windows"}static get root(){if(this._root)return this._root;const e=document.createElement("div");return e.id=this.id,document.body.append(e),this._root=e}}var de=le;class ce{static initialize(){const e=O.createRef(),t=O.createElement(de,{ref:e}),s=O.createElement(g.getByProps("AppReferencePositionLayer").AppLayerProvider().props.layerContext.Provider,{value:[document.querySelector("#app-mount > .layerContainer-yqaFcK")]},t),n=h.createElement('
');C.bdBody.append(n),R.render(s,n),this.ref=e}static open(e){return this.ref||this.initialize(),this.ref.current.open(e)}}const he=f.React,ue=s(1),pe=s(2),me=s(4).Module;me.globalPaths.push(ue.resolve(s(0).remote.app.getAppPath(),"node_modules"));const ge=/[^\S\r\n]*?\r?(?:\r\n|\n)[^\S\r\n]*?\*[^\S\r\n]?/,fe=/^\\@/,ye=function(e){return 65279===e.charCodeAt(0)&&(e=e.slice(1)),e};class be{get name(){return""}get moduleExtension(){return""}get extension(){return""}get addonFolder(){return""}get language(){return""}get prefix(){return"addon"}get collection(){return"settings"}get category(){return"addons"}get id(){return"autoReload"}emit(e,...t){return E.emit(`${this.prefix}-${e}`,...t)}constructor(){this.timeCache={},this.addonList=[],this.state={}}initialize(){return this.originalRequire=me._extensions[this.moduleExtension],me._extensions[this.moduleExtension]=this.getAddonRequire(),T.on(this.collection,this.category,this.id,e=>{e?this.watchAddons():this.unwatchAddons()}),this.loadAllAddons()}initializeAddon(){}getFileModification(e,t){return t}startAddon(){}stopAddon(){}loadState(){const e=w.getData(this.prefix+"s");e&&Object.assign(this.state,e)}saveState(){w.setData(this.prefix+"s",this.state)}watchAddons(){if(this.watcher)return c.error(this.name,`Already watching ${this.prefix} addons.`);c.log(this.name,`Starting to watch ${this.prefix} addons.`),this.watcher=pe.watch(this.addonFolder,{persistent:!1},async(e,t)=>{if(e&&t&&t.endsWith(this.extension)){await new Promise(e=>setTimeout(e,100));try{const s=pe.statSync(ue.resolve(this.addonFolder,t));if(!s.isFile())return;if(!s||!s.mtime||!s.mtime.getTime())return;if("number"!=typeof s.mtime.getTime())return;if(this.timeCache[t]==s.mtime.getTime())return;this.timeCache[t]=s.mtime.getTime(),"rename"==e&&this.loadAddon(t,!0),"change"==e&&this.reloadAddon(t,!0)}catch(e){if("ENOENT"!==e.code)return;delete this.timeCache[t],this.unloadAddon(t,!0)}}})}unwatchAddons(){if(!this.watcher)return c.error(this.name,`Was not watching ${this.prefix} addons.`);this.watcher.close(),delete this.watcher,c.log(this.name,`No longer watching ${this.prefix} addons.`)}extractMeta(e){const t=e.split("\n")[0];if(t.includes("//META"))return this.parseOldMeta(e);if(t.includes("/**"))return this.parseNewMeta(e);throw new G("META was not found.")}parseOldMeta(e){const t=e.split("\n")[0],s=t.substring(t.lastIndexOf("//META")+6,t.lastIndexOf("*//")),n=u.testJSON(s);if(!n)throw new G("META could not be parsed.");if(!n.name)throw new G("META missing name data.");return n.format="json",n}parseNewMeta(e){const t=e.split("/**",2)[1].split("*/",1)[0],s={};let n="",i="";for(const e of t.split(ge))if(0!==e.length)if("@"===e.charAt(0)&&" "!==e.charAt(1)){s[n]=i;const t=e.indexOf(" ");n=e.substr(1,t-1),i=e.substr(t+1)}else i+=" "+e.replace("\\n","\n").replace(fe,"@");return s[n]=i.trim(),delete s[""],s.format="jsdoc",s}getAddonRequire(){const e=this,t=this.originalRequire;return function(s,n){const i=ue.resolve(e.addonFolder,ue.basename(n));if(!pe.existsSync(i)||n!==pe.realpathSync(i))return Reflect.apply(t,this,arguments);let o=pe.readFileSync(n,"utf8");o=ye(o);const r=pe.statSync(n),a=e.extractMeta(o);a.author||(a.author=k.Addons.unknownAuthor),a.version||(a.version="???"),a.description||(a.description=k.Addons.noDescription),a.id=a.name,a.filename=ue.basename(n),a.added=r.atimeMs,a.modified=r.mtimeMs,a.size=r.size,o=e.getFileModification(s,o,a),s._compile(o,n)}}loadAddon(e,t=!1){if(void 0===e)return;try{require(ue.resolve(this.addonFolder,e))}catch(n){return new _(e,e,"Could not be compiled.",{message:n.message,stack:n.stack})}const s=require(ue.resolve(this.addonFolder,e));if(this.addonList.find(e=>e.id==s.id))return new _(s.name,e,"There is already a plugin with name "+s.name);const n=this.initializeAddon(s);return n||(this.addonList.push(s),t&&q.success(`${s.name} v${s.version} was loaded.`),this.emit("loaded",s.id),this.state[s.id]?this.startAddon(s):this.state[s.id]=!1)}unloadAddon(e,t=!0,s=!1){const n="string"==typeof e?this.addonList.find(t=>t.id==e||t.filename==e):e;return!!n&&(this.state[n.id]&&(s?this.stopAddon(n):this.disableAddon(n)),delete require.cache[require.resolve(ue.resolve(this.addonFolder,n.filename))],this.addonList.splice(this.addonList.indexOf(n),1),this.emit("unloaded",n.id),t&&q.success(n.name+" was unloaded."),!0)}reloadAddon(e,t=!0){const s="string"==typeof e?this.addonList.find(t=>t.id==e||t.filename==e):e,n=this.unloadAddon(s,t,!0);return n?this.loadAddon(s.filename,t):n}isLoaded(e){return!!this.addonList.find(t=>t.id==e||t.filename==e)}isEnabled(e){const t=this.addonList.find(t=>t.id==e||t.filename==e);return!!t&&this.state[t.id]}getAddon(e){return this.addonList.find(t=>t.id==e||t.filename==e)}enableAddon(e){const t="string"==typeof e?this.addonList.find(t=>t.id==e):e;t&&(this.state[t.id]||(this.state[t.id]=!0,this.startAddon(t),this.saveState()))}disableAddon(e){const t="string"==typeof e?this.addonList.find(t=>t.id==e):e;t&&this.state[t.id]&&(this.state[t.id]=!1,this.stopAddon(t),this.saveState())}toggleAddon(e){this.state[e]?this.disableAddon(e):this.enableAddon(e)}loadNewAddons(){const e=pe.readdirSync(this.addonFolder),t=this.addonList.filter(t=>!e.includes(t.filename)).map(e=>e.id);return{added:e.filter(e=>!this.addonList.find(t=>t.filename==e)&&e.endsWith(this.extension)&&pe.statSync(ue.resolve(this.addonFolder,e)).isFile()),removed:t}}updateList(){const e=this.loadNewAddons();for(const t of e.added)this.loadAddon(t);for(const t of e.removed)this.unloadAddon(t)}loadAllAddons(){this.loadState();const e=[],t=pe.readdirSync(this.addonFolder);for(const s of t){if(!pe.statSync(ue.resolve(this.addonFolder,s)).isFile()||!s.endsWith(this.extension))continue;const t=this.loadAddon(s,!1);t instanceof _&&e.push(t)}return this.saveState(),T.get(this.collection,this.category,this.id)&&this.watchAddons(),e}deleteAddon(e){const t="string"==typeof e?this.addonList.find(t=>t.id==e||t.filename==e):e;return pe.unlinkSync(ue.resolve(this.addonFolder,t.filename))}saveAddon(e,t){const s="string"==typeof e?this.addonList.find(t=>t.id==e||t.filename==e):e;return pe.writeFileSync(ue.resolve(this.addonFolder,s.filename),t)}editAddon(e,t){const n="string"==typeof e?this.addonList.find(t=>t.id==e||t.filename==e):e,i=ue.resolve(this.addonFolder,n.filename);return void 0===t&&(t="system"==T.get("settings","addons","editAction")),t?s(0).shell.openItem(""+i):this.openDetached(n)}openDetached(e){const t=ue.resolve(this.addonFolder,e.filename),s=pe.readFileSync(t).toString(),n=he.createRef(),i=he.createElement(se,{id:"bd-floating-editor-"+e.name,ref:n,content:s,save:this.saveAddon.bind(this,e),openNative:this.editAddon.bind(this,e,!0),language:this.language});ce.open({onClose:()=>{this.isDetached=!1},onResize:()=>{n&&n.current&&n.current.resize&&n.current.resize()},title:e.name,id:s.id,className:"floating-addon-window",height:470,width:410,center:!0,resizable:!0,children:i,confirmClose:()=>!(!n||!n.current)&&n.current.hasUnsavedChanges,confirmationText:k.Addons.confirmationText.format({name:e.name})})}}class ve extends O.Component{constructor(e){super(e)}render(){const e=this.props.isGroup?"bd-settings-title bd-settings-group-title h5-18_1nd title-3sZWYQ size12-3R0845 height16-2Lv3qA weightSemiBold-NJexzi da-h5 da-title da-size12 da-height16 da-weightSemiBold marginBottom4-2qk4Hy da-marginBottom4 marginTop8-1DLZ1n da-marginTop8":"bd-settings-title h2-2gWE-o title-3sZWYQ size16-14cGz5 height20-mO2eIN weightSemiBold-NJexzi defaultColor-1_ajX0 defaultMarginh2-2LTaUL marginBottom20-32qID7",t=this.props.className?`${e} ${this.props.className}`:e;return O.createElement("h2",{className:t,onClick:()=>{this.props.onClick&&this.props.onClick()}},this.props.text,this.props.button&&O.createElement("button",{className:"bd-button bd-button-title",onClick:this.props.button.onClick},this.props.button.title),this.props.otherChildren)}}class we extends O.Component{render(){const e=this.props.size||"24px";return O.createElement("svg",{className:this.props.className||"",onClick:this.props.onClick,fill:"#dcddde",viewBox:"0 0 24 24",style:{width:e,height:e}},O.createElement("path",{d:"M17.65 6.35C16.2 4.9 14.21 4 12 4c-4.42 0-7.99 3.58-7.99 8s3.57 8 7.99 8c3.73 0 6.84-2.55 7.73-6h-2.08c-.82 2.33-3.04 4-5.65 4-3.31 0-6-2.69-6-6s2.69-6 6-6c1.66 0 3.14.69 4.22 1.78L13 11h7V4l-2.35 2.35z"}),O.createElement("path",{fill:"none",d:"M0 0h24v24H0z"}))}}class Ce extends O.Component{render(){const e=this.props.size||"24px";return O.createElement("svg",{className:this.props.className||"",fill:"#FFFFFF",viewBox:"0 0 24 24",style:{width:e,height:e},onClick:this.props.onClick},O.createElement("path",{fill:"none",d:"M0 0h24v24H0V0z"}),O.createElement("path",{d:"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zm2.46-7.12l1.41-1.41L12 12.59l2.12-2.12 1.41 1.41L13.41 14l2.12 2.12-1.41 1.41L12 15.41l-2.12 2.12-1.41-1.41L10.59 14l-2.13-2.12zM15.5 4l-1-1h-5l-1 1H5v2h14V4z"}),O.createElement("path",{fill:"none",d:"M0 0h24v24H0z"}))}}class Se extends O.Component{constructor(e){super(e),this.state={checked:this.props.checked},this.onChange=this.onChange.bind(this)}onChange(){this.props.disabled||(this.props.onChange(!this.state.checked),this.setState({checked:!this.state.checked}))}render(){const e=this.props.disabled?" bd-switch-disabled":"",t=this.state.checked?" bd-switch-checked":"";return O.createElement("div",{className:"bd-switch"+e+t},O.createElement("input",{type:"checkbox",id:this.props.id,className:"bd-checkbox",disabled:this.props.disabled,checked:this.state.checked,onChange:this.onChange}))}}class Ee extends O.Component{constructor(e){super(e),this.state={hasError:!1}}componentDidCatch(){this.setState({hasError:!0})}render(){return this.state.hasError?O.createElement("div",{className:"react-error"},"Component Error"):this.props.children}}const Me=Ee.prototype.render;function xe(){return(xe=Object.assign||function(e){for(var t=1;tMe});const Ne=g.getByDisplayName("Tooltip");class Pe extends O.Component{constructor(e){super(e),this.state={settingsOpen:!1},this.settingsPanel="",this.panelRef=O.createRef(),this.onChange=this.onChange.bind(this),this.reload=this.reload.bind(this),this.showSettings=this.showSettings.bind(this),this.closeSettings=this.closeSettings.bind(this)}reload(){this.props.reload&&(this.props.addon=this.props.reload(this.props.addon.id),this.forceUpdate())}componentDidUpdate(){this.state.settingsOpen&&(this.settingsPanel instanceof Node&&this.panelRef.current.appendChild(this.settingsPanel),setImmediate(()=>{const e=this.panelRef.current,t=e.closest(".scrollerBase-289Jih");if(!t||!((e,t)=>{const s=e.scrollTop,n=s+e.clientHeight,i=t.offsetTop,o=i+t.clientHeight;return in})(t,e))return;const s=h.offset(e),n=h.offset(t),i=t.scrollTop,o=s.top-n.top+t.scrollTop-30;h.animate({duration:300,update:function(e){t.scrollTop=o>i?i+e*(o-i):i-e*(i-o)}})}))}getString(e){return"string"==typeof e?e:e.toString()}onChange(){this.props.onChange&&this.props.onChange(this.props.addon.id),this.props.enabled=!this.props.enabled,this.forceUpdate()}showSettings(){this.props.hasSettings&&this.setState({settingsOpen:!0})}closeSettings(){this.settingsPanel instanceof Node&&(this.panelRef.current.innerHTML=""),this.setState({settingsOpen:!1})}buildTitle(e,t,s){const n=k.Addons.title.split(/({{[A-Za-z]+}})/),i=n.findIndex(e=>"{{name}}"==e);i&&(n[i]=O.createElement("span",{className:"bd-name"},e));const o=n.findIndex(e=>"{{version}}"==e);i&&(n[o]=O.createElement("span",{className:"bd-version"},t));const r=n.findIndex(e=>"{{author}}"==e);return i&&(n[r]=O.createElement("span",{className:"bd-author"},s)),n.flat()}get settingsComponent(){const e=this.props.addon,t=this.getString(e.name);try{this.settingsPanel=this.props.getSettingsPanel()}catch(e){c.stacktrace("Addon Settings","Unable to get settings panel for "+t+".",e)}const s={id:t+"-settings",className:"addon-settings",ref:this.panelRef};"string"==typeof settingsPanel&&(c.warn("Addon Settings","Using a DOMString is officially deprecated."),s.dangerouslySetInnerHTML=this.settingsPanel);let n=null;return"function"==typeof this.settingsPanel&&(n=O.createElement(this.settingsPanel,null)),this.settingsPanel.$$typeof&&this.settingsPanel.$$typeof===Symbol.for("react.element")&&(n=this.settingsPanel),O.createElement("div",{className:"bd-addon-card settings-open bd-switch-item"},O.createElement("div",{className:"bd-close",onClick:this.closeSettings},O.createElement(ie,null)),O.createElement("div",s,O.createElement(Ee,null,n)))}buildLink(e){const t=this.props.addon[e];if(!t)return null;const s=O.createElement("a",{className:"bd-link bd-link-website",href:t,target:"_blank",rel:"noopener noreferrer"},k.Addons[e]);return"invite"==e&&(s.props.onClick=function(e){e.preventDefault(),e.stopPropagation();let s=t;const n=/\.gg\/(.*)$/;n.test(s)&&(s=s.match(n)[1]),f.LayerStack.popLayer(),f.InviteActions.acceptInviteAndTransitionToInviteChannel(s)}),s}get footer(){const e=["website","source","invite","donate","patreon"];if(!e.some(e=>this.props.addon[e])&&!this.props.hasSettings)return null;const t=e.map(this.buildLink.bind(this)).filter(e=>e);return O.createElement("div",{className:"bd-footer"},O.createElement("span",{className:"bd-links"},t.map((e,s)=>sO.createElement("div",xe({},e,{className:"bd-addon-button",onClick:s}),t))}render(){if(this.state.settingsOpen)return this.settingsComponent;const e=this.props.addon,t=this.getString(e.name),s=this.getString(e.author),n=this.getString(e.description),i=this.getString(e.version);return O.createElement("div",{id:e.id+"-card",className:"bd-addon-card settings-closed"},O.createElement("div",{className:"bd-addon-header"},O.createElement("span",{className:"bd-title"},this.buildTitle(t,i,s)),O.createElement("div",{className:"bd-controls"},this.props.editAddon&&this.makeButton(k.Addons.editAddon,O.createElement(ee,null),this.props.editAddon),this.props.deleteAddon&&this.makeButton(k.Addons.deleteAddon,O.createElement(Ce,null),this.props.deleteAddon),this.props.showReloadIcon&&this.makeButton(k.Addons.reload,O.createElement(we,{className:"bd-reload bd-reload-card"}),this.reload),O.createElement(Se,{checked:this.props.enabled,onChange:this.onChange}))),O.createElement("div",{className:"bd-description-wrap scroller-wrap fade"},O.createElement("div",{className:"bd-description scroller"},n)),this.footer)}}const De=Pe.prototype.render;Object.defineProperty(Pe.prototype,"render",{enumerable:!1,configurable:!1,set:function(){c.warn("AddonCard","Addon policy for plugins #5 https://github.com/rauenzi/BetterDiscordApp/wiki/Addon-Policies#plugins")},get:()=>De});class Ae extends O.Component{render(){const e=this.props.size||"16px";return O.createElement("svg",{className:this.props.className||"",fill:"#FFFFFF",viewBox:"0 0 24 24",style:{width:e,height:e}},O.createElement("path",{d:"M8.12 9.29L12 13.17l3.88-3.88c.39-.39 1.02-.39 1.41 0 .39.39.39 1.02 0 1.41l-4.59 4.59c-.39.39-1.02.39-1.41 0L6.7 10.7c-.39-.39-.39-1.02 0-1.41.39-.38 1.03-.39 1.42 0z"}))}}class ke extends O.Component{constructor(e){super(e),this.state={open:!1,value:this.props.value||this.props.options[0].value},this.dropdown=O.createRef(),this.onChange=this.onChange.bind(this),this.showMenu=this.showMenu.bind(this),this.hideMenu=this.hideMenu.bind(this)}showMenu(e){e.preventDefault(),this.setState({open:!0},()=>{document.addEventListener("click",this.hideMenu)})}hideMenu(){this.setState({open:!1},()=>{document.removeEventListener("click",this.hideMenu)})}onChange(e){this.setState({value:e}),this.props.onChange&&this.props.onChange(e)}get selected(){return this.props.options.find(e=>e.value==this.state.value)}get options(){const e=this.selected;return O.createElement("div",{className:"bd-select-options"},this.props.options.map(t=>O.createElement("div",{className:"bd-select-option"+(e.value==t.value?" selected":""),onClick:this.onChange.bind(this,t.value)},t.label)))}render(){const e="transparent"==this.props.style?" bd-select-transparent":"",t=this.state.open?" menu-open":"";return O.createElement("div",{className:`bd-select${e}${t}`,onClick:this.showMenu,ref:this.dropdown},O.createElement("div",{className:"bd-select-value"},this.selected.label),O.createElement(Ae,{className:"bd-select-arrow"}),this.state.open&&this.options)}}class Te extends O.Component{render(){const e=this.props.size||"16px";return O.createElement("svg",{className:this.props.className||"",fill:"#FFFFFF",viewBox:"0 0 24 24",style:{width:e,height:e}},O.createElement("path",{fill:"none",d:"M0 0h24v24H0V0z"}),O.createElement("path",{d:"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"}))}}class Le extends O.Component{render(){return O.createElement("div",{className:"bd-search-wrapper"},O.createElement("input",{onChange:this.props.onChange,onKeyDown:this.props.onKeyDown,type:"text",className:"bd-search",placeholder:this.props.placeholder,maxLength:"50"}),O.createElement(Te,null))}}class je extends O.Component{constructor(e){super(e),this.state={sort:"name",ascending:!0,query:""},this.sort=this.sort.bind(this),this.reverse=this.reverse.bind(this),this.search=this.search.bind(this),this.update=this.update.bind(this)}componentDidMount(){E.on(this.props.prefix+"-loaded",this.update),E.on(this.props.prefix+"-unloaded",this.update)}componentWillUnmount(){E.off(this.props.prefix+"-loaded",this.update),E.off(this.props.prefix+"-unloaded",this.update)}update(){this.forceUpdate()}reload(){this.props.refreshList&&this.props.refreshList(),this.forceUpdate()}reverse(e){this.setState({ascending:e})}sort(e){this.setState({sort:e})}search(e){this.setState({query:e.target.value.toLocaleLowerCase()})}get sortOptions(){return[{label:k.Addons.name,value:"name"},{label:k.Addons.author,value:"author"},{label:k.Addons.version,value:"version"},{label:k.Addons.added,value:"added"},{label:k.Addons.modified,value:"modified"}]}get directions(){return[{label:k.Sorting.ascending,value:!0},{label:k.Sorting.descending,value:!1}]}render(){const{title:e,folder:t,addonList:n,addonState:i,onChange:o,reload:r}=this.props,a=!T.get("settings","addons","autoReload"),l=t?{title:k.Addons.openFolder.format({type:e}),onClick:()=>{const e=s(0).shell;(e.openItem||e.openPath)(t)}}:null,d=n.sort((e,t)=>{const s=e[this.state.sort],n=t[this.state.sort];return"string"==typeof s?s.toLocaleLowerCase().localeCompare(n.toLocaleLowerCase()):s>n?1:n>s?-1:0});return this.state.ascending||d.reverse(),[O.createElement(ve,{key:"title",text:e,button:l,otherChildren:a&&O.createElement(we,{className:"bd-reload",onClick:this.reload.bind(this)})}),O.createElement("div",{className:"bd-controls bd-addon-controls"},O.createElement(Le,{onChange:this.search,placeholder:k.Addons.search.format({type:this.props.title})+"..."}),O.createElement("div",{className:"bd-addon-dropdowns"},O.createElement("div",{className:"bd-select-wrapper"},O.createElement("label",{className:"bd-label"},k.Sorting.sortBy,":"),O.createElement(ke,{options:this.sortOptions,onChange:this.sort,style:"transparent"})),O.createElement("div",{className:"bd-select-wrapper"},O.createElement("label",{className:"bd-label"},k.Sorting.order,":"),O.createElement(ke,{options:this.directions,onChange:this.reverse,style:"transparent"})))),O.createElement("div",{key:"addonList",className:"bd-addon-list"},d.map(e=>{if(this.state.query){let t=e.name.toLocaleLowerCase().includes(this.state.query);if(t=t||e.author.toLocaleLowerCase().includes(this.state.query),t=t||e.description.toLocaleLowerCase().includes(this.state.query),!t)return null}const t=e.type&&"function"==typeof e.plugin.getSettingsPanel,s=t&&e.plugin.getSettingsPanel.bind(e.plugin);return O.createElement(Ee,null,O.createElement(Pe,{editAddon:this.editAddon.bind(this,e.id),deleteAddon:this.deleteAddon.bind(this,e.id),showReloadIcon:a,key:e.id,enabled:i[e.id],addon:e,onChange:o,reload:r,hasSettings:t,getSettingsPanel:s}))}))]}editAddon(e){this.props.editAddon&&this.props.editAddon(e)}async deleteAddon(e){const t=this.props.addonList.find(t=>t.id==e);await this.confirmDelete(t)&&this.props.deleteAddon&&this.props.deleteAddon(t)}confirmDelete(e){return new Promise(t=>{W.showConfirmationModal(k.Modals.confirmAction,k.Addons.confirmDelete.format({name:e.name}),{danger:!0,confirmText:k.Addons.deleteAddon,onConfirm:()=>{t(!0)},onCancel:()=>{t(!1)}})})}}const Be=je.prototype.render;Object.defineProperty(je.prototype,"render",{enumerable:!1,configurable:!1,set:function(){c.warn("AddonList","Addon policy for plugins #5 https://github.com/rauenzi/BetterDiscordApp/wiki/Addon-Policies#plugins")},get:()=>Be});class Ie extends O.Component{render(){return O.createElement("div",{className:"bd-divider divider-3573oO marginTop8-1DLZ1n marginBottom40-2vIwTv"})}}class ze extends O.Component{render(){return O.createElement("div",{className:"bd-setting-item"},O.createElement("div",{className:"bd-setting-header"},O.createElement("label",{htmlFor:this.props.id,className:"bd-setting-title"},this.props.name),this.props.children),O.createElement("div",{className:"bd-setting-note"},this.props.note),O.createElement("div",{className:"bd-setting-divider"}))}}class Fe extends O.Component{constructor(e){if(super(e),this.props.button&&this.props.collapsible){const e=this.props.button.onClick;this.props.button.onClick=t=>{t.stopPropagation(),e(...arguments)}}this.props.hasOwnProperty("shown")||(this.props.shown=!0),this.container=O.createRef(),this.state={collapsed:this.props.collapsible&&!this.props.shown},this.onChange=this.onChange.bind(this),this.toggleCollapse=this.toggleCollapse.bind(this)}toggleCollapse(){const e=this.container.current,t=this.state.collapsed?300:1;e.style.setProperty("height",e.scrollHeight+"px"),e.classList.add("animating"),this.setState({collapsed:!this.state.collapsed},()=>setTimeout(()=>{e.style.setProperty("height",""),e.classList.remove("animating")},t)),this.props.onDrawerToggle&&this.props.onDrawerToggle(this.state.collapsed)}onChange(e,t){this.props.onChange&&(this.props.id?this.props.onChange(this.props.id,e,t):this.props.onChange(e,t),this.forceUpdate())}render(){const{settings:e}=this.props,t="bd-settings-group "+(this.props.collapsible?"collapsible "+(this.state.collapsed?"collapsed":"expanded"):"");return O.createElement("div",{className:t},O.createElement(ve,{text:this.props.name,collapsible:this.props.collapsible,onClick:this.toggleCollapse,button:this.props.button,isGroup:!0}),O.createElement("div",{className:"bd-settings-container",ref:this.container},e.filter(e=>!e.hidden).map(e=>{let t=null;return"dropdown"==e.type&&(t=O.createElement(ke,{disabled:e.disabled,id:e.id,options:e.options,value:e.value,onChange:this.onChange.bind(this,e.id)})),"switch"==e.type&&(t=O.createElement(Se,{disabled:e.disabled,id:e.id,checked:e.value,onChange:this.onChange.bind(this,e.id)})),t?O.createElement(ze,{id:e.id,key:e.id,name:e.name,note:e.note},t):null})),this.props.showDivider&&O.createElement(Ie,null))}}const Oe=Fe.prototype.render;Object.defineProperty(Fe.prototype,"render",{enumerable:!1,configurable:!1,set:function(){c.warn("Group","Addon policy for plugins #5 https://github.com/rauenzi/BetterDiscordApp/wiki/Addon-Policies#plugins")},get:()=>Oe});class Re extends O.Component{render(){const e=this.props.size||"18px";return O.createElement("svg",{viewBox:"0 0 24 24",fill:"#FFFFFF",className:this.props.className||"",style:{width:e,height:e},onClick:this.props.onClick},O.createElement("path",{d:"M0 0h24v24H0z",fill:"none"}),O.createElement("path",{d:"M13 3c-4.97 0-9 4.03-9 9H1l3.89 3.89.07.14L9 12H6c0-3.87 3.13-7 7-7s7 3.13 7 7-3.13 7-7 7c-1.93 0-3.68-.79-4.94-2.06l-1.42 1.42C8.27 19.99 10.51 21 13 21c4.97 0 9-4.03 9-9s-4.03-9-9-9zm-1 5v5l4.28 2.54.72-1.21-3.5-2.08V8H12z"}))}}function Ue(){return(Ue=Object.assign||function(e){for(var t=1;te.Header&&e.Separator&&e.Item),qe=g.getByDisplayName("Tooltip");class $e extends O.Component{constructor(e){super(e)}render(){return O.createElement("div",{className:"bd-sidebar-header"},O.createElement(He.Header,null,"BandagedBD"),O.createElement(qe,{color:"black",position:"top",text:"Changelog"},e=>O.createElement("div",Ue({},e,{className:"bd-changelog-button",onClick:()=>W.showChangelogModal(l)}),O.createElement(Re,{className:"bd-icon",size:"16px"}))))}}var We=new class{constructor(){this.patchSections(),E.on("strings-updated",this.forceUpdate)}onDrawerToggle(e,t,s){const n=w.getBDData("drawerStates")||{};n[e]||(n[e]={}),n[e][t]=s,w.setBDData("drawerStates",n)}getDrawerState(e,t,s){const n=w.getBDData("drawerStates")||{};return n[e]&&n[e].hasOwnProperty(t)?n[e][t]:s}onChange(e){return(t,s,n)=>{const i=T.collections.length+T.panels.length;e(t,s,n);i!=T.collections.length+T.panels.length&&setTimeout(this.forceUpdate.bind(this),50)}}buildSettingsPanel(e,t,s,n,i,o=null){return s.forEach(e=>{e.settings.forEach(t=>t.value=n[e.id][t.id])}),this.getSettingsPanel(e,t,s,this.onChange(i),o)}getSettingsPanel(e,t,s,n,i=null){return[O.createElement(ve,{text:t,button:i}),s.map(t=>O.createElement(Fe,Object.assign({},t,{onChange:n,onDrawerToggle:s=>this.onDrawerToggle(e,t.id,s),shown:this.getDrawerState(e,t.id,!t.hasOwnProperty("shown")||t.shown)})))]}getAddonPanel(e,t,s,n={}){return O.createElement(je,Object.assign({},{title:e,addonList:t,addonState:s},n))}async patchSections(){const e=await F.get("UserSettings",e=>e.prototype&&e.prototype.generateSections);L.after("SettingsManager",e.prototype,"render",e=>{e._reactInternalFiber.return.return.return.return.return.return.return.memoizedProps.id="user-settings"}),L.after("SettingsManager",e.prototype,"generateSections",(e,t,s)=>{let n=s.findIndex(e=>"linux"==e.section.toLowerCase())+1;const i=e=>{s.splice(n,0,e),n++};i({section:"DIVIDER"}),i({section:"CUSTOM",element:$e});for(const e of T.collections)e.disabled||i({section:e.name,label:e.name,element:()=>this.buildSettingsPanel(e.id,e.name,e.settings,T.state[e.id],T.onSettingChange.bind(T,e.id),e.button?e.button:null)});for(const t of T.panels.sort((e,t)=>e.order>t.order))t.clickListener&&(t.onClick=n=>t.clickListener(e,n,s)),i(t)}),this.forceUpdate()}forceUpdate(){const e=g.getByProps("standardSidebarView").standardSidebarView.split(" ")[0],t=document.querySelector("."+e);if(!t)return;const s=u.findInReactTree(u.getReactInstance(t),e=>e&&e.generateSections,{walkable:["return","stateNode"]});s&&s.forceUpdate()}};const _e=s(1),Ge=s(0).remote;var Qe=new class extends be{get name(){return"PluginManager"}get moduleExtension(){return".js"}get extension(){return".plugin.js"}get addonFolder(){return _e.resolve(i.dataPath,"plugins")}get prefix(){return"plugin"}get language(){return"javascript"}constructor(){super(),this.onSwitch=this.onSwitch.bind(this),this.observer=new MutationObserver(e=>{for(let t=0,s=e.length;tWe.getAddonPanel(k.Panels.plugins,this.addonList,this.state,{folder:this.addonFolder,onChange:this.togglePlugin.bind(this),reload:this.reloadPlugin.bind(this),refreshList:this.updatePluginList.bind(this),saveAddon:this.saveAddon.bind(this),editAddon:this.editAddon.bind(this),deleteAddon:this.deleteAddon.bind(this),prefix:this.prefix})}),e}updatePluginList(){return this.updateList()}loadAllPlugins(){return this.loadAllAddons()}enablePlugin(e){return this.enableAddon(e)}disablePlugin(e){return this.disableAddon(e)}togglePlugin(e){return this.toggleAddon(e)}unloadPlugin(e){return this.unloadAddon(e)}loadPlugin(e){const t=this.loadAddon(e);t&&W.showAddonErrors({themes:[t]})}reloadPlugin(e){const t=this.reloadAddon(e);return t&&W.showAddonErrors({plugins:[t]}),"string"==typeof e?this.addonList.find(t=>t.id==e||t.filename==e):e}initializeAddon(e){if(!e.type)return new _(e.name,e.filename,"Plugin had no exports",{message:"Plugin had no exports or no name property.",stack:""});try{const t=new e.type;e.plugin=t,e.name=t.getName()||e.name,e.author=t.getAuthor()||e.author||"No author",e.description=t.getDescription()||e.description||"No description",e.version=t.getVersion()||e.version||"No version";try{"function"==typeof e.plugin.load&&e.plugin.load()}catch(t){return this.state[e.id]=!1,new _(e.name,e.filename,"load() could not be fired.",{message:t.message,stack:t.stack})}}catch(t){return new _(e.name,e.filename,"Could not be constructed.",{message:t.message,stack:t.stack})}}getFileModification(e,t,s){e._compile(t,e.filename);return u.isEmpty(e.exports)?(c.warn(this.name,s.name+", please start assigning module.exports"),t+=`\nmodule.exports = ${JSON.stringify(s)};\nmodule.exports.type = ${s.exports||s.name};`):(s.type=e.exports,e.exports=s,"")}startAddon(e){return this.startPlugin(e)}stopAddon(e){return this.stopPlugin(e)}getAddon(e){return this.getPlugin(e)}startPlugin(e){const t="string"==typeof e?this.addonList.find(t=>t.id==e):e;if(!t)return;const s=t.plugin;try{s.start()}catch(e){return this.state[t.id]=!1,q.error(k.Addons.couldNotStart.format({name:t.name,version:t.version})),c.stacktrace(this.name,t.name+" could not be started.",e),new _(t.name,t.filename,k.Addons.enabled.format({method:"start()"}),{message:e.message,stack:e.stack})}this.emit("started",t.id),q.show(k.Addons.enabled.format({name:t.name,version:t.version}))}stopPlugin(e){const t="string"==typeof e?this.addonList.find(t=>t.id==e):e;if(!t)return;const s=t.plugin;try{s.stop()}catch(e){return this.state[t.id]=!1,q.error(k.Addons.couldNotStop.format({name:t.name,version:t.version})),c.stacktrace(this.name,t.name+" could not be stopped.",e),new _(t.name,t.filename,k.Addons.enabled.format({method:"stop()"}),{message:e.message,stack:e.stack})}this.emit("stopped",t.id),q.show(k.Addons.disabled.format({name:t.name,version:t.version}))}getPlugin(e){const t=this.addonList.find(t=>t.id==e||t.filename==e);if(t)return t.plugin}setupFunctions(){Ge.getCurrentWebContents().on("did-navigate-in-page",this.onSwitch.bind(this)),this.observer.observe(document,{childList:!0,subtree:!0})}onSwitch(){this.emit("page-switch");for(let e=0;eWe.getAddonPanel(k.Panels.themes,this.addonList,this.state,{folder:this.addonFolder,onChange:this.toggleTheme.bind(this),reload:this.reloadTheme.bind(this),refreshList:this.updateThemeList.bind(this),saveAddon:this.saveAddon.bind(this),editAddon:this.editAddon.bind(this),deleteAddon:this.deleteAddon.bind(this),prefix:this.prefix})}),e}updateThemeList(){return this.updateList()}loadAllThemes(){return this.loadAllAddons()}enableTheme(e){return this.enableAddon(e)}disableTheme(e){return this.disableAddon(e)}toggleTheme(e){return this.toggleAddon(e)}unloadTheme(e){return this.unloadAddon(e)}loadTheme(e){const t=this.loadAddon(e);t&&W.showAddonErrors({themes:[t]})}reloadTheme(e){const t=this.reloadAddon(e);t&&W.showAddonErrors({themes:[t]})}getFileModification(e,t,s){return s.css=t,`module.exports = ${JSON.stringify(s)};`}startAddon(e){return this.addTheme(e)}stopAddon(e){return this.removeTheme(e)}addTheme(e){const t="string"==typeof e?this.addonList.find(t=>t.id==e):e;t&&(C.injectTheme(t.id,t.css),q.show(k.Addons.enabled.format({name:t.name,version:t.version})))}removeTheme(e){const t="string"==typeof e?this.addonList.find(t=>t.id==e):e;t&&(C.removeTheme(t.id),q.show(k.Addons.disabled.format({name:t.name,version:t.version})))}};const Ye={get React(){return f.React},get ReactDOM(){return f.ReactDOM},get WindowConfigFile(){return""},get settings(){return T.collections},get emotes(){return{}},get version(){return i.version},getAllWindowPreferences:function(){return w.getData("windowprefs")||{}},getWindowPreference:function(e){return this.getAllWindowPreferences()[e]},setWindowPreference:function(e,t){const s=this.getAllWindowPreferences();return s[e]=t,w.setData("windowprefs",s)},injectCSS:function(e,t){C.injectStyle(e,t)},clearCSS:function(e){C.removeStyle(e)},linkJS:function(e,t){return C.injectScript(e,t)},unlinkJS:function(e){C.removeScript(e)},alert:function(e,t){W.alert(e,t)},showConfirmationModal:function(e,t,s={}){return W.showConfirmationModal(e,t,s)},showToast:function(e,t={}){q.show(e,t)},findModule:function(e){return g.getModule(e)},findAllModules:function(e){return g.getModule(e,!1)},findModuleByProps:function(...e){return g.getByProps(...e)},findModuleByPrototypes:function(...e){return g.getByPrototypes(...e)},findModuleByDisplayName:function(e){return g.getByDisplayName(e)},getInternalInstance:function(e){if(e instanceof window.jQuery||e instanceof Element)return e instanceof jQuery&&(e=e[0]),u.getReactInstance(e)},loadData:function(e,t){return w.getPluginData(e,t)}};Ye.getData=Ye.loadData,Ye.saveData=function(e,t,s){return w.setPluginData(e,t,s)},Ye.setData=Ye.saveData,Ye.deleteData=function(e,t){return w.deletePluginData(e,t)},Ye.monkeyPatch=function(e,t,s){const{before:n,after:i,instead:o,once:r=!1}=s,a=n?"before":i?"after":o?"instead":"";if(!a)return c.err("BdApi","Must provide one of: after, before, instead");const l={originalMethod:e[t],callOriginalMethod:()=>l.originalMethod.apply(l.thisObject,l.methodArguments)};l.cancelPatch=L[a]("BdApi",e,t,(e,t,n)=>{l.thisObject=e,l.methodArguments=t,l.returnValue=n;try{Reflect.apply(s[a],null,[l]),r&&l.cancelPatch()}catch(e){}})},Ye.onRemoved=function(e,t){return u.onRemoved(e,t)},Ye.suppressErrors=function(e,t){return u.suppressErrors(e,t)},Ye.testJSON=function(e){return u.testJSON(e)},Ye.getPlugin=function(e){return c.warn("BdApi","getPlugin is deprecated. Please make use of the addon api (BdApi.Plugins)"),Qe.addonList.find(t=>t.name==e)},Ye.isPluginEnabled=function(e){c.warn("BdApi","isPluginEnabled is deprecated. Please make use of the addon api (BdApi.Plugins)");const t=this.getPlugin(e);return!!t&&Qe.isEnabled(t.id)},Ye.isThemeEnabled=function(e){c.warn("BdApi","isThemeEnabled is deprecated. Please make use of the addon api (BdApi.Themes)");const t=Ze.addonList.find(t=>t.name==e);return!!t&&Ze.isEnabled(t.id)},Ye.isSettingEnabled=function(e,t,s){return T.get(e,t,s)},Ye.enableSetting=function(e,t,s){return T.set(e,t,s,!0)},Ye.disableSetting=function(e,t,s){return T.set(e,t,s,!1)},Ye.toggleSetting=function(e,t,s){return T.set(e,t,s,!T.get(e,t,s))},Ye.getBDData=function(e){return w.getBDData(e)},Ye.setBDData=function(e,t){return w.setBDData(e,t)};const Je=e=>new class{get folder(){return e.addonFolder}isEnabled(t){return e.isEnabled(t)}enable(t){return e.enableAddon(t)}disable(t){return e.disableAddon(t)}toggle(t){return e.toggleAddon(t)}reload(t){return e.reloadAddon(t)}get(t){return e.getAddon(t)}getAll(){return e.addonList.map(t=>e.getAddon(t.id))}};Ye.Plugins=Je(Qe),Ye.Themes=Je(Ze),Ye.Patcher={patch:(e,t,s,n,i={})=>"string"!=typeof e?c.err("BdApi.Patcher","Parameter 0 of patch must be a string representing the caller"):"before"!==i.type&&"instead"!==i.type&&"after"!==i.type?c.err("BdApi.Patcher","options.type must be one of: before, instead, after"):L.pushChildPatch(e,t,s,n,i),before:(e,t,s,n,i={})=>Ye.Patcher.patch(e,t,s,n,Object.assign(i,{type:"before"})),instead:(e,t,s,n,i={})=>Ye.Patcher.patch(e,t,s,n,Object.assign(i,{type:"instead"})),after:(e,t,s,n,i={})=>Ye.Patcher.patch(e,t,s,n,Object.assign(i,{type:"after"})),unpatchAll:e=>"string"!=typeof e?c.err("BdApi.Patcher","Parameter 0 of unpatchAll must be a string representing the caller"):L.unpatchAll(e)},Object.freeze(Ye),Object.freeze(Ye.Plugins),Object.freeze(Ye.Themes),Object.freeze(Ye.Patcher);var Ke=Ye;class Xe{get name(){return"Unnamed Builtin"}get collection(){return"settings"}get category(){return"general"}get id(){return"None"}async initialize(){T.get(this.collection,this.category,this.id)&&await this.enable(),E.on("setting-updated",(e,t,s,n)=>{e==this.collection&&t===this.category&&s===this.id&&(n?this.enable():this.disable())}),this.initialized=!0}registerSetting(e,t,s,n,i){return 4==arguments.length?(e=this.collection,t=arguments[0],s=arguments[1],n=arguments[2],i=arguments[3]):3==arguments.length&&(e=this.collection,t=this.category,s=arguments[0],n=arguments[1],i=arguments[2]),T.on(e,t,s,e=>{e?n():i()})}get(e,t,s){return 2==arguments.length?(e=this.collection,t=arguments[0],s=arguments[1]):1==arguments.length&&(e=this.collection,t=this.category,s=arguments[0]),T.get(e,t,s)}async enable(){this.log("Enabled");try{await this.enabled()}catch(e){this.stacktrace("Could not be enabled",e)}}async disable(){this.log("Disabled");try{await this.disabled()}catch(e){this.stacktrace("Could not be disabled",e)}}async enabled(){}async disabled(){}log(...e){c.log(this.name,...e)}warn(...e){c.warn(this.name,...e)}error(...e){c.err(this.name,...e)}stacktrace(e,t){c.stacktrace(this.name,e,t)}before(e,t,s){return L.before(this.name,e,t,s)}after(e,t,s){return L.after(this.name,e,t,s)}unpatchAll(){return L.unpatchAll(this.name)}}class et extends O.Component{render(){const e=this.props.size||"24px";return O.createElement("svg",{viewBox:"0 0 24 24",style:{width:e,height:e}},O.createElement("path",{d:"M0 0h24v24H0z",fill:"none"}),O.createElement("path",{d:"M19 19H5V5h7V3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2v-7h-2v7zM14 3v2h3.59l-9.83 9.83 1.41 1.41L19 6.41V10h2V3h-7z"}))}}class tt extends O.Component{constructor(e){super(e),this.hasUnsavedChanges=!1,this.onChange=this.onChange.bind(this),this.toggleLiveUpdate=this.toggleLiveUpdate.bind(this),this.updateCss=this.updateCss.bind(this),this.saveCss=this.saveCss.bind(this),this.openDetached=this.props.openDetached?this.openDetached.bind(this):null,this.openNative=this.openNative.bind(this),this.updateEditor=this.updateEditor.bind(this),this.controls=[{label:O.createElement(we,{size:"18px"}),tooltip:k.CustomCSS.update,onClick:this.updateCss},{label:O.createElement(X,{size:"18px"}),tooltip:k.CustomCSS.save,onClick:this.saveCss},{label:O.createElement(ee,{size:"18px"}),tooltip:k.CustomCSS.openNative,onClick:this.openNative},{label:O.createElement(te,{size:"18px"}),tooltip:k.CustomCSS.settings,onClick:"showSettings"},{label:k.Collections.settings.customcss.liveUpdate.name,type:"checkbox",onChange:this.toggleLiveUpdate,checked:T.get("settings","customcss","liveUpdate"),side:"right"}],this.openDetached&&this.controls.push({label:O.createElement(et,{size:"18px"}),tooltip:k.CustomCSS.openDetached,onClick:this.openDetached,side:"right"})}componentDidMount(){E.on("customcss-updated",this.updateEditor)}componentWillUnmount(){E.off("customcss-updated",this.updateEditor)}updateEditor(e){this.editor&&(this.editor.value=e)}get value(){return this.editor.session.getValue()}set value(e){this.editor.setValue(e)}showSettings(){return this.editor.keyBinding.$defaultHandler.commands.showSettingsMenu.exec(this.editor)}resize(){return this.editor.resize()}setEditorRef(e){this.editor=e,this.props.editorRef&&void 0!==this.props.editorRef.current?this.props.editorRef.current=e:this.props.editorRef&&(this.props.editorRef=e)}onChange(){this.hasUnsavedChanges=!0,this.props.onChange&&this.props.onChange(...arguments)}render(){return O.createElement(K,{ref:this.setEditorRef.bind(this),readOnly:this.props.readOnly,id:this.props.id||"bd-customcss-editor",onChange:this.onChange,controls:this.controls,value:this.props.css})}toggleLiveUpdate(e){T.set("settings","customcss","liveUpdate",e)}updateCss(e,t){this.props.update&&this.props.update(t)}saveCss(e,t){this.hasUnsavedChanges=!1,this.props.save&&this.props.save(t)}openDetached(e,t){this.props.openDetached&&this.props.openDetached(t)}openNative(){this.props.openNative&&this.props.openNative()}}const st=s(2),nt=s(0),it=g.getByProps("updateAccount"),ot=g.getByProps("dirtyDispatch"),rt=g.getByProps("ActionTypes").ActionTypes;var at=new class extends Xe{get name(){return"Custom CSS"}get category(){return"customcss"}get id(){return"customcss"}get startDetached(){return"detached"==T.get(this.collection,this.category,"openAction")}get nativeOpen(){return"system"==T.get(this.collection,this.category,"openAction")}constructor(){super(),this.savedCss="",this.insertedCss="",this.isDetached=!1}async enabled(){window.ace||C.injectScript("ace-script","https://cdnjs.cloudflare.com/ajax/libs/ace/1.2.9/ace.js").then(()=>{window.require.original&&(window.require=window.require.original)}),T.registerPanel(this.id,k.Panels.customcss,{order:2,element:()=>[O.createElement(ve,{text:k.CustomCSS.editorTitle}),O.createElement(tt,{css:this.savedCss,save:this.saveCSS.bind(this),update:this.insertCSS.bind(this),openNative:this.openNative.bind(this),openDetached:this.openDetached.bind(this),onChange:this.onChange.bind(this)})],onClick:e=>{if(this.isDetached)return;if(this.nativeOpen)return this.openNative();if(this.startDetached)return this.openDetached();const t=u.findInRenderTree(e._reactInternalFiber,e=>e&&e.onSetSection,{walkable:["child","memoizedProps","props","children"]});t&&t.onSetSection&&t.onSetSection(this.id)}}),this.loadCSS(),this.insertCSS(this.savedCss),this.watchContent()}disabled(){T.removePanel(this.id),this.unwatchContent()}watchContent(){if(this.watcher)return this.error("Already watching content.");const e={};this.log("Starting to watch content."),this.watcher=st.watch(w.customCSS,{persistent:!1},async(t,s)=>{if(!t||!s)return;await new Promise(e=>setTimeout(e,50));try{st.statSync(w.customCSS)}catch(t){if("ENOENT"!==t.code)return;delete e[s],this.saveCSS("")}const n=st.statSync(w.customCSS);if(n&&n.mtime&&n.mtime.getTime()&&"number"==typeof n.mtime.getTime()&&e[s]!=n.mtime.getTime()&&(e[s]=n.mtime.getTime(),"change"==t)){const e=w.loadCustomCSS();if(e==this.savedCss)return;this.savedCss=e,this.insertCSS(this.savedCss),E.emit("customcss-updated",this.savedCss)}})}unwatchContent(){if(!this.watcher)return this.error("Was not watching content.");this.watcher.close(),delete this.watcher,this.log("No longer watching content.")}onChange(e){T.get("settings","customcss","liveUpdate")&&(this.insertCSS(e),this.saveCSS(e))}loadCSS(){this.savedCss=w.loadCustomCSS()}insertCSS(e){void 0===e?e=this.insertedCss:this.insertedCss=e,C.updateCustomCSS(e)}saveCSS(e){void 0!==e&&(this.savedCss=e),w.saveCustomCSS(this.savedCss)}openNative(){nt.shell.openExternal("file://"+w.customCSS)}openDetached(e){const t=O.createRef(),s=O.createElement(tt,{id:"bd-floating-editor",ref:t,css:e,save:this.saveCSS.bind(this),update:this.insertCSS.bind(this),openNative:this.openNative.bind(this),onChange:this.onChange.bind(this)});ce.open({onClose:()=>{this.isDetached=!1},onResize:()=>{t&&t.current&&t.current.resize&&t.current.resize()},title:k.CustomCSS.editorTitle,id:"floating-editor-window",height:470,width:410,center:!0,resizable:!0,children:s,confirmClose:()=>!(!t||!t.current)&&t.current.hasUnsavedChanges,confirmationText:k.CustomCSS.confirmationText}),this.isDetached=!0,it.close(),ot.dirtyDispatch({type:rt.LAYER_POP})}},lt=new class extends Xe{get name(){return"WindowPrefs"}get category(){return"window"}get id(){return"transparency"}enabled(){this.setWindowPreference("transparent",!0),this.setWindowPreference("backgroundColor","#00000000"),this.showModal(k.WindowPrefs.enabledInfo)}disabled(){this.deleteWindowPreference("transparent"),this.deleteWindowPreference("backgroundColor"),this.showModal(k.WindowPrefs.disabledInfo)}showModal(e){this.initialized&&W.showConfirmationModal(k.Modals.additionalInfo,e,{confirmText:k.Modals.restartNow,cancelText:k.Modals.restartLater,onConfirm:()=>{const e=s(0).remote.app;e.relaunch(),e.exit()}})}getWindowPreference(e){return(w.getData("windowprefs")||{})[e]}setWindowPreference(e,t){const s=w.getData("windowprefs")||{};s[e]=t,w.setData("windowprefs",s)}deleteWindowPreference(e){const t=w.getData("windowprefs")||{};delete t[e],w.setData("windowprefs",t)}},dt=new class extends Xe{get name(){return"24Hour"}get category(){return"general"}get id(){return"twentyFourHour"}enabled(){this.inject24Hour()}disabled(){this.unpatchAll()}inject24Hour(){const e=new RegExp("([0-9]{1,2}):([0-9]{1,2})\\s(AM|PM)"),t=(t,s,n)=>{const i=n.match(e);if(i&&4===i.length)return"AM"===i[3]?n.replace(i[0],`${"12"===i[1]?"00":i[1].padStart(2,"0")}:${i[2]}`):n.replace(i[0],`${"12"===i[1]?"12":parseInt(i[1])+12}:${i[2]}`)};this.after(f.TimeFormatter,"calendarFormat",t),this.after(f.TimeFormatter,"dateFormat",t)}};const ct=new RegExp("^(?!da-)((?:[A-Za-z]|[0-9]|-)+)-(?:[A-Za-z]|[0-9]|-|_){6}$");var ht=new class extends Xe{get id(){return"classNormalizer"}get category(){return"general"}get name(){return"ClassNormalizer"}enabled(){this.hasPatched||(this.patchClassModules(g.getModules(this.moduleFilter.bind(this))),this.normalizeElement(document.querySelector("#app-mount")),this.hasPatched=!0,this.patchDOMMethods())}disabled(){this.hasPatched&&(this.unpatchClassModules(g.getModules(this.moduleFilter.bind(this))),this.revertElement(document.querySelector("#app-mount")),this.hasPatched=!1)}patchClassModules(e){for(const t of e)this.patchClassModule("da",t)}unpatchClassModules(e){for(const t of e)this.unpatchClassModule("da",t)}shouldIgnore(e){return!isNaN(e)||(!!(e.endsWith("px")||e.endsWith("ch")||e.endsWith("em")||e.endsWith("ms"))||(!!e.startsWith("layerContainer-")||(!(!e.startsWith("#")||7!=e.length&&4!=e.length)||!(!e.includes("calc(")&&!e.includes("rgba")))))}moduleFilter(e){if("object"!=typeof e||Array.isArray(e))return!1;if(e.__esModule)return!1;if(!Object.keys(e).length)return!1;for(const t in e){const s=e[t];if("string"!=typeof s)return!1;if(!this.shouldIgnore(s)){if(1===s.split("-").length)return!1;if(!ct.test(s.split(" ")[0]))return!1}}return!0}patchClassModule(e,t){for(const s in t){const n=t[s];if(this.shouldIgnore(n))continue;const i=n.split(" ");for(const n of i){const i=n.match(ct);if(!i||!i.length||i.length<2)continue;const o=i[1].split("-").map((e,t)=>t?e[0].toUpperCase()+e.slice(1):e).join("");t[s]+=` ${e}-${o}`}}}unpatchClassModule(e,t){for(const s in t){const n=t[s];if(this.shouldIgnore(n))continue;let i="";const o=n.split(" ");for(const t of o)t.startsWith(e+"-")||(i+=" "+t);t[s]=i.trim()}}normalizeElement(e){if(!(e instanceof Element))return;const t=e.classList;for(let s=0,n=t.length;st?e[0].toUpperCase()+e.slice(1):e).join("");e.classList.add("da-"+n)}for(const t of e.children)this.normalizeElement(t)}revertElement(e){if(!(e instanceof Element))return;e.children&&e.children.length&&this.revertElement(e.children[0]),e.nextElementSibling&&this.revertElement(e.nextElementSibling);const t=e.classList,s=[];for(let e=0;e{const o=[];t&&o.push("category="+t.replace(/ /g,"%20")),e&&o.push("term="+e.replace(/ /g,"%20")),n&&o.push("from="+n);const r="?"+o.join("&");i.get({url:`${this.endPoint}${r}${r?"&schema=new":"?schema=new"}`,json:!0},(e,t,n)=>{if(e)return s(null);const i=n.size+n.from;s({servers:n.results,size:n.size,from:n.from,total:n.total,next:i>=n.total?null:i})})})}static async join(e,t=!1){if(t)return gt.acceptInvite(e);try{return await fetch(`${this.joinEndPoint}/${e}`,{method:"GET",credentials:"include",mode:"cors",headers:{Accept:"application/json","Content-Type":"application/json"}}),!0}catch(e){return!1}}static async checkConnection(){try{const e=await fetch("https://auth.discordservers.com/info",{method:"GET",credentials:"include",mode:"cors",headers:{Accept:"application/json","Content-Type":"application/json"}}),t=await e.json();return this._accessToken=t.access_token,t}catch(e){return!1}}static connect(){return new Promise(e=>{const t=new ft(this.windowOptions),s="https://auth.discordservers.com/connect?scopes=guilds.join&previousUrl="+this.connectEndPoint;t.webContents.on("did-navigate",(s,n)=>{n==this.connectEndPoint&&(t.close(),e())}),t.loadURL(s)})}static get windowOptions(){return{width:380,height:450,backgroundColor:"#282b30",show:!0,resizable:!0,maximizable:!1,minimizable:!1,alwaysOnTop:!0,frame:!1,center:!0,webPreferences:{nodeIntegration:!1}}}}const bt=g.getByDisplayName("SettingsView");class vt extends O.Component{get categoryButtons(){return["All","FPS Games","MMO Games","Strategy Games","MOBA Games","RPG Games","Tabletop Games","Sandbox Games","Simulation Games","Music","Community","Language","Programming","Other"]}constructor(e){super(e),this.state={category:"All",query:"",loading:!0,user:null,results:{servers:[],size:0,from:0,total:0,next:null}},this.changeCategory=this.changeCategory.bind(this),this.searchKeyDown=this.searchKeyDown.bind(this),this.connect=this.connect.bind(this),this.loadNextPage=this.loadNextPage.bind(this),this.join=this.join.bind(this)}componentDidMount(){this.checkConnection()}async checkConnection(){const e=await yt.checkConnection();if(!e)return this.setState({loading:!0,user:null});this.setState({user:e}),this.search()}async connect(){await yt.connect(),this.checkConnection()}searchKeyDown(e){this.state.loading||13!==e.which||this.search(e.target.value)}async search(e="",t=0){this.setState({query:e,loading:!0});const s=await yt.search({term:e,category:"All"==this.state.category?"":this.state.category,from:t});if(!s)return this.setState({results:{servers:[],size:0,from:0,total:0,next:null}});this.setState({loading:!1,results:s})}async changeCategory(e){this.state.loading||(await new Promise(t=>this.setState({category:e},t)),this.search())}loadNextPage(){this.state.loading||this.search(this.state.query,this.state.results.next)}async join(e,t=!1){return await yt.join(e,t)}get searchBox(){return O.createElement(Le,{onKeyDown:this.searchKeyDown,placeholder:k.PublicServers.search+"..."})}get title(){if(!this.state.user)return k.PublicServers.notConnected;if(this.state.loading)return k.PublicServers.loading+"...";const e=this.state.results.from+1,t=this.state.results.total,s=this.state.results.next?this.state.results.next:t;let n=k.PublicServers.results.format({start:e,end:s,total:t,category:this.state.category});return this.state.query&&(n+=" "+k.PublicServers.query.format({query:this.state.query})),n}get content(){const e=this.state.user?null:{title:k.PublicServers.connect,onClick:this.connect},t="All"!=this.state.category&&this.state.user?null:this.bdServer,s=this.state.results.servers.map(e=>O.createElement(ut,{key:e.identifier,server:e,joined:yt.hasJoined(e.identifier),join:this.join,defaultAvatar:yt.getDefaultAvatar}));return[O.createElement(ve,{text:this.title,button:e}),t,s,this.state.results.next?this.nextButton:null,this.state.results.servers.length>0&&O.createElement(ve,{text:this.title})]}get nextButton(){return O.createElement("button",{type:"button",className:"bd-button bd-button-next",onClick:this.loadNextPage},this.state.loading?k.PublicServers.loading:k.PublicServers.loadMore)}get connection(){const{user:e}=this.state;return e?O.createElement("div",{id:"bd-connection"},O.createElement("div",{className:"bd-footnote"},k.PublicServers.connection.format(e)),O.createElement("button",{type:"button",className:"bd-button bd-button-reconnect",onClick:this.connect},k.PublicServers.reconnect)):O.createElement("div",{id:"bd-connection"})}get bdServer(){const e={name:"BetterDiscord",online:"7500+",members:"20000+",categories:["community","programming","support"],description:"Official BetterDiscord server for plugins, themes, support, etc",identifier:"86004744966914048",iconUrl:"https://cdn.discordapp.com/icons/86004744966914048/292e7f6bfff2b71dfd13e508a859aedd.webp",nativejoin:!0,invite_code:"0Tmfo5ZbORCRqbAd",pinned:!0};return O.createElement(ut,{server:e,pinned:!0,joined:yt.hasJoined(e.identifier),defaultAvatar:yt.getDefaultAvatar})}render(){const e=this.categoryButtons.map(e=>({section:e,label:e,element:()=>this.content}));return O.createElement(bt,{onClose:this.props.close,onSetSection:this.changeCategory,section:this.state.category,sections:[{section:"HEADER",label:k.PublicServers.search},{section:"CUSTOM",element:()=>this.searchBox},{section:"HEADER",label:k.PublicServers.categories},...e,{section:"DIVIDER"},{section:"HEADER",label:O.createElement("a",{href:"https://discordservers.com",target:"_blank"},"DiscordServers.com")},{section:"DIVIDER"},{section:"CUSTOM",element:()=>this.connection}],theme:"dark"})}}const wt=g.getByProps("pushLayer");var Ct=new class extends Xe{get name(){return"PublicServers"}get category(){return"general"}get id(){return"publicServers"}enabled(){const e=g.find(e=>e.default&&"NavigableGuilds"==e.default.displayName),t=g.findByDisplayName("Guilds");e||t||this.warn("Can't find GuildList component"),this.guildPatch=this.after(e||t.prototype,e?"default":"render",this._appendButton),this._appendButton()}disabled(){this.unpatchAll(),h.query("#bd-pub-li").remove()}_appendButton(){const e=f.GuildClasses.wrapper.split(" ")[0],t=h.query(`.${e} .scroller-2TZvBN >:first-child`);h.after(t,this.button)}openPublicServers(){wt.pushLayer(()=>f.React.createElement(vt,{close:wt.popLayer}))}get button(){const e=h.createElement(`
`),t=h.createElement(`
${k.PublicServers.button}
`);return t.addEventListener("click",()=>{this.openPublicServers()}),e.append(t),e}},St=new class extends Xe{get name(){return"VoiceDisconnect"}get category(){return"general"}get id(){return"voiceDisconnect"}constructor(){super(),this.beforeUnload=this.beforeUnload.bind(this)}enabled(){window.addEventListener("beforeunload",this.beforeUnload)}disabled(){window.removeEventListener("beforeunload",this.beforeUnload)}beforeUnload(){f.ChannelActions.selectVoiceChannel(null,null)}};const Et=g.getModule(e=>e.default&&e.default.displayName&&"Message"==e.default.displayName);var Mt=new class extends Xe{get name(){return"ColoredText"}get category(){return"appearance"}get id(){return"coloredText"}enabled(){this.injectColoredText()}disabled(){this.unpatchAll()}injectColoredText(){this.after(Et.prototype,"render",(e,t,s)=>{this.after(s.props,"children",{silent:!0,after:({returnValue:t})=>{const s=t.props.children[1],n=e.props.message.colorString;s&&n&&(s.props.style={color:n})}})})}removeColoredText(){document.querySelectorAll(".markup-2BOw-j").forEach(e=>{e.style.setProperty("color","")})}},xt=new class extends Xe{get name(){return"DarkMode"}get category(){return"appearance"}get id(){return"darkMode"}enabled(){document.getElementById("app-mount").classList.add("bda-dark","bd-dark")}disabled(){document.getElementById("app-mount").classList.remove("bda-dark","bd-dark")}},Nt=new class extends Xe{get name(){return"MinimalMode"}get category(){return"appearance"}get id(){return"minimalMode"}get hideChannelsID(){return"hideChannels"}get hideChannels(){return this.get(this.hideChannelsID)}constructor(){super(),this.enableHideChannels=this.enableHideChannels.bind(this),this.disableHideChannels=this.disableHideChannels.bind(this)}enabled(){document.body.classList.add("bd-minimal"),this.hideChannels&&this.enableHideChannels(),this.hideChannelCancel=this.registerSetting(this.hideChannelsID,this.enableHideChannels,this.disableHideChannels)}disabled(){document.body.classList.remove("bd-minimal"),this.hideChannels&&this.disableHideChannels(),this.hideChannelCancel&&this.hideChannelCancel()}enableHideChannels(){document.body.classList.add("bd-minimal-chan")}disableHideChannels(){document.body.classList.remove("bd-minimal-chan")}},Pt=new class extends Xe{get name(){return"VoiceMode"}get category(){return"appearance"}get id(){return"voiceMode"}enabled(){document.querySelector(".chat-3bRxxu").style.setProperty("visibility","hidden"),document.querySelector(".chat-3bRxxu").style.setProperty("min-width","0px"),document.querySelector(".channels-Ie2l6A").style.setProperty("flex-grow","100000")}disabled(){document.querySelector(".chat-3bRxxu").style.setProperty("visibility",""),document.querySelector(".chat-3bRxxu").style.setProperty("min-width",""),document.querySelector(".channels-Ie2l6A").style.setProperty("flex-grow","")}};const Dt=g.getByDisplayName("Tooltip");class At extends O.Component{constructor(e){super(e),this.state={shouldAnimate:!this.animateOnHover,isFavorite:this.props.isFavorite},this.onMouseEnter=this.onMouseEnter.bind(this),this.onMouseLeave=this.onMouseLeave.bind(this),this.onClick=this.onClick.bind(this),this.toggleFavorite=this.toggleFavorite.bind(this)}get animateOnHover(){return T.get("emotes","general","animateOnHover")}get label(){return this.props.modifier?`${this.props.name}:${this.props.modifier}`:this.props.name}get modifierClass(){return this.props.modifier?" emote"+this.props.modifier:""}onMouseEnter(){!this.state.shouldAnimate&&this.animateOnHover&&this.setState({shouldAnimate:!0})}onMouseLeave(){this.state.shouldAnimate&&this.animateOnHover&&this.setState({shouldAnimate:!1})}onClick(e){this.props.onClick&&this.props.onClick(e)}toggleFavorite(e){e.preventDefault(),e.stopPropagation(),this.state.isFavorite?E.emit("emotes-favorite-removed",this.label):E.emit("emotes-favorite-added",this.label,this.props.url),this.setState({isFavorite:!this.state.isFavorite})}render(){return O.createElement(Dt,{color:"black",position:"top",text:this.label,delay:750},e=>O.createElement("div",Object.assign({className:"emotewrapper"+(this.props.jumboable?" jumboable":""),onMouseEnter:this.onMouseEnter,onMouseLeave:this.onMouseLeave,onClick:this.onClick},e),O.createElement("img",{draggable:!1,className:"emote"+this.modifierClass+(this.props.jumboable?" jumboable":"")+(this.state.shouldAnimate?"":" stop-animation"),dataModifier:this.props.modifier,alt:this.label,src:this.props.url}),O.createElement("input",{className:"fav"+(this.state.isFavorite?" active":""),title:k.Emotes.favoriteAction,type:"button",onClick:this.toggleFavorite})))}}const kt=s(3),Tt={TwitchGlobal:new A("https://static-cdn.jtvnw.net/emoticons/v1/{{id}}/1.0"),TwitchSubscriber:new A("https://static-cdn.jtvnw.net/emoticons/v1/{{id}}/1.0"),FrankerFaceZ:new A("https://cdn.frankerfacez.com/emoticon/{{id}}/1"),BTTV:new A("https://cdn.betterttv.net/emote/{{id}}/1x")},Lt={TwitchGlobal:{},TwitchSubscriber:{},BTTV:{},FrankerFaceZ:{}},jt=[],Bt=["twitch","subscriber","bttv","ffz"],It=["flip","spin","pulse","spin2","spin3","1spin","2spin","3spin","tr","bl","br","shake","shake2","shake3","flap"];var zt=new class extends Xe{get name(){return"Emotes"}get collection(){return"settings"}get category(){return"general"}get id(){return"emotes"}get categories(){return Object.keys(Lt).filter(e=>this.isCategoryEnabled(e))}get shouldDownload(){return T.get("emotes",this.category,"download")}isCategoryEnabled(e){return super.get("emotes","categories",e.toLowerCase())}get(e){return super.get("emotes","general",e)}get MessageComponent(){return g.find(e=>e.default&&e.default.displayName&&"Message"==e.default.displayName)}get Emotes(){return Lt}get TwitchGlobal(){return Lt.TwitchGlobal}get TwitchSubscriber(){return Lt.TwitchSubscriber}get BTTV(){return Lt.BTTV}get FrankerFaceZ(){return Lt.FrankerFaceZ}get blacklist(){return jt}get favorites(){return this.favoriteEmotes}getUrl(e,t){return Tt[e].format({id:Lt[e][t]})}getCategory(e){return Lt[e]}getRemoteFile(e){return u.repoUrl(`assets/emotes/${e.toLowerCase()}.json`)}initialize(){super.initialize();const e=w.getBDData("favoriteEmotes");this.favoriteEmotes=e||{},this.addFavorite=this.addFavorite.bind(this),this.removeFavorite=this.removeFavorite.bind(this),this.onCategoryToggle=this.onCategoryToggle.bind(this),this.resetEmotes=this.resetEmotes.bind(this)}async enabled(){T.registerCollection("emotes","Emotes",o,{title:k.Emotes.clearEmotes,onClick:this.resetEmotes}),await this.getBlacklist(),await this.loadEmoteData(),E.on("emotes-favorite-added",this.addFavorite),E.on("emotes-favorite-removed",this.removeFavorite),E.on("setting-updated",this.onCategoryToggle),this.patchMessageContent()}disabled(){E.off("setting-updated",this.onCategoryToggle),E.off("emotes-favorite-added",this.addFavorite),E.off("emotes-favorite-removed",this.removeFavorite),T.removeCollection("emotes"),this.emptyEmotes(),this.cancelEmoteRender&&(this.cancelEmoteRender(),delete this.cancelEmoteRender)}onCategoryToggle(e,t,s,n){if("emotes"==e&&"categories"==t)return n?this.loadEmoteData(s):this.unloadEmoteData(s)}addFavorite(e,t){this.favoriteEmotes.hasOwnProperty(e)||(this.favoriteEmotes[e]=t),this.saveFavorites()}removeFavorite(e){this.favoriteEmotes.hasOwnProperty(e)&&(delete this.favoriteEmotes[e],this.saveFavorites())}isFavorite(e){return this.favoriteEmotes.hasOwnProperty(e)}saveFavorites(){w.setBDData("favoriteEmotes",this.favoriteEmotes)}emptyEmotes(){for(const e in Lt)Object.assign(Lt,{[e]:{}})}patchMessageContent(){this.cancelEmoteRender||(this.cancelEmoteRender=this.before(this.MessageComponent,"default",(e,t)=>{const s=t[0].childrenMessageContent.props.content;if(!s||!s.length)return;for(let e=0;e"string"==typeof e&&""==e.replace(/\s*/,"")||(!(!e.type||"BDEmote"!=e.type.name)||!!(e.props&&e.props.children&&e.props.children.props&&e.props.children.props.emojiName))))for(const e of s)"object"==typeof e&&("BDEmote"==e.type.name?e.props.jumboable=!0:e.props&&e.props.children&&e.props.children.props&&e.props.children.props.emojiName&&(e.props.children.props.jumboable=!0))}))}async getBlacklist(){try{const e="Blacklist",t=w.emotesExist(e),s=await this.isCacheValid(e),n=s||!s&&t&&!this.shouldDownload?w.getEmoteData(e):await this.downloadEmotes(e);jt.push(...n)}catch(e){}}isCacheValid(e){return new Promise(t=>{const s=w.getCacheHash("emotes",e);if(!s)return t(!1);kt.head({url:this.getRemoteFile(e),headers:{"If-None-Match":s}},(e,s)=>{t(304==s.statusCode)})})}async loadEmoteData(e){e||(e=this.categories),Array.isArray(e)||(e=[e]);const t=Object.keys(Lt);e=e.map(e=>t.find(t=>t.toLowerCase()==e.toLowerCase())),q.show(k.Emotes.loading,{type:"info"}),this.emotesLoaded=!1;for(const t of e){const e=w.emotesExist(t),s=await this.isCacheValid(t);let n=null;if(s||!s&&e&&!this.shouldDownload){this.log(`Loading ${t} emotes from local cache.`);const e=w.getEmoteData(t);Object.keys(e).length>0&&(n=e)}n||(n=await this.downloadEmotes(t)),Object.assign(Lt[t],n),await new Promise(e=>setTimeout(e,1e3))}this.emotesLoaded=!0,E.dispatch("emotes-loaded"),q.show(k.Emotes.loaded,{type:"success"})}unloadEmoteData(e){e||(e=this.categories),Array.isArray(e)||(e=[e]);const t=Object.keys(Lt);e=e.map(e=>t.find(t=>t.toLowerCase()==e.toLowerCase()));for(const t of e)delete Lt[t],Lt[t]={}}downloadEmotes(e){const t=this.getRemoteFile(e);this.log(`Downloading ${e} from ${t}`);const s={url:t,timeout:1e4,json:!0};return new Promise(t=>{kt.get(s,(s,n,i)=>{if(s||200!=n.statusCode)return this.stacktrace(`Could not download ${e} emotes.`,s),t({});for(const e in i)(e.length<4||jt.includes(e)||!i[e])&&delete i[e];w.saveEmoteData(e,i),w.setCacheHash("emotes",e,n.headers.etag),t(i),this.log("Downloaded "+e)})})}resetEmotes(){const e=Object.keys(Lt);this.unloadEmoteData(e);for(const t of e)w.invalidateCache("emotes",t);this.loadEmoteData()}};const Ft=(e,t,s={})=>{const{onContextMenu:n,onClick:i}=s,o=h.createElement(`
\n ${e}\n
`);return n&&o.addEventListener("contextmenu",n),o.addEventListener("click",i),o};var Ot=new class extends Xe{get name(){return"EmoteMenu"}get collection(){return"emotes"}get category(){return"general"}get id(){return"emoteMenu"}get hideEmojisID(){return"hideEmojiMenu"}get hideEmojis(){return this.get(this.hideEmojisID)}constructor(){super(),this.lastTab="bd-qem-emojis",this.qmeHeader=h.createElement('
\n \n \n
');for(const e of this.qmeHeader.getElementsByTagName("button"))e.addEventListener("click",this.switchMenu.bind(this));this.teContainer=h.createElement('
\n
\n
\n
\n\n
\n
\n
\n
'),this.teContainerInner=this.teContainer.querySelector(".emote-menu-inner"),this.faContainer=h.createElement('
\n
\n
\n
\n\n
\n
\n
\n
'),this.faContainerInner=this.faContainer.querySelector(".emote-menu-inner"),this.observer=new MutationObserver(e=>{for(const t of e)this.observe(t)}),this.enableHideEmojis=this.enableHideEmojis.bind(this),this.disableHideEmojis=this.disableHideEmojis.bind(this),this.updateTwitchEmotes=this.updateTwitchEmotes.bind(this)}async enabled(){return W.alert("Emote Menu Broken","Emote Menu is currently broken, it is recommended to disable this until it is fixed.")}disabled(){E.off("emotes-loaded",this.updateTwitchEmotes),this.observer.disconnect(),this.disableHideEmojis(),this.hideEmojiCancel&&this.hideEmojiCancel()}enableHideEmojis(){const e=document.querySelector(".emojiPicker-3m1S-j");e&&e.classList.add("bd-qme-hidden")}disableHideEmojis(){const e=document.querySelector(".emojiPicker-3m1S-j");e&&e.classList.remove("bd-qme-hidden")}insertEmote(e){const t=u.getTextArea();u.insertText(t[0]," "==t.val().slice(-1)?t.val()+e:t.val()+" "+e)}favContext(e){e.stopPropagation();const t=e.target.closest(".emote-container").children[0],s=$('
Remove
');s.css({top:e.pageY-$("#bd-qem-favourite-container").offset().top,left:e.pageX-$("#bd-qem-favourite-container").offset().left}),$(t).parent().append(s),s.on("click",e=>{e.preventDefault(),e.stopPropagation(),$(t).remove(),zt.removeFavorite($(t).attr("title")),this.updateFavorites(),$(document).off("mousedown.emotemenu")}),$(document).on("mousedown.emotemenu",(function(e){"removemenu"!=e.target.id&&($("#removemenu").remove(),$(document).off("mousedown.emotemenu"))}))}switchMenu(e){let t="string"==typeof e?e:e.target.id;"bd-qem-emojis"==t&&this.hideEmojis&&(t="bd-qem-favourite");const s=$("#bd-qem-twitch"),n=$("#bd-qem-favourite"),i=$("#bd-qem-emojis");switch(s.removeClass("active"),n.removeClass("active"),i.removeClass("active"),$(".emojiPicker-3m1S-j").hide(),$("#bd-qem-favourite-container").hide(),$("#bd-qem-twitch-container").hide(),t){case"bd-qem-twitch":s.addClass("active"),$("#bd-qem-twitch-container").show();break;case"bd-qem-favourite":n.addClass("active"),$("#bd-qem-favourite-container").show();break;case"bd-qem-emojis":i.addClass("active"),$(".emojiPicker-3m1S-j").show(),$(".emojiPicker-3m1S-j input").focus()}t&&(this.lastTab=t)}observe(e){if(!(e.addedNodes.length&&e.addedNodes[0]instanceof Element))return;const t=e.addedNodes[0];if(!t.classList.contains("layer-v9HyYc")||!t.getElementsByClassName("emojiPicker-3m1S-j").length||t.querySelector(".emojiPicker-3m1S-j").parentElement.classList.contains("animatorLeft-1EQxU0"))return;const s=$(t);this.hideEmojis?s.addClass("bd-qme-hidden"):s.removeClass("bd-qme-hidden"),s.prepend(this.qmeHeader),s.append(this.teContainer),s.append(this.faContainer),this.switchMenu(this.lastTab)}updateTwitchEmotes(){for(;this.teContainerInner.firstChild;)this.teContainerInner.firstChild.remove();for(const e in zt.getCategory("TwitchGlobal")){if(!zt.getCategory("TwitchGlobal").hasOwnProperty(e))continue;const t=zt.getUrl("TwitchGlobal",e),s=Ft(e,t,{onClick:this.insertEmote.bind(this,e)});this.teContainerInner.append(s)}}updateFavorites(){for(;this.faContainerInner.firstChild;)this.faContainerInner.firstChild.remove();for(const e in zt.favorites){const t=zt.favorites[e],s=Ft(e,t,{onClick:this.insertEmote.bind(this,e),onContextMenu:this.favContext.bind(this)});this.faContainerInner.append(s)}zt.saveFavorites()}},Rt=new class extends Xe{get name(){return"DeveloperMode"}get category(){return"developer"}get id(){return"developerMode"}get selectorModeID(){return"copySelector"}get selectorMode(){return this.get(this.selectorModeID)}constructor(){super(),this.copySelectorListener=this.copySelectorListener.bind(this)}enabled(){document.addEventListener("contextmenu",this.copySelectorListener)}disabled(){document.removeEventListener("contextmenu",this.copySelectorListener)}copySelectorListener(e){e.stopPropagation();const t=this.getSelector(e.target);setImmediate((function(){let s=h.query(".contextMenu-HLZMGh");if(!s){const t=h.query("#app-mount"),n=h.createElement('
');s=h.createElement('
'),n.append(s),t.append(n),n.style.top=e.clientY+"px",n.style.left=e.clientX+"px",n.style.zIndex="1002";const i=function(e){e.keyCode&&27!==e.keyCode||(n.remove(),document.removeEventListener("click",i),document.removeEventListener("contextmenu",i),document.removeEventListener("keyup",i))};document.addEventListener("click",i),document.addEventListener("contextmenu",i),document.addEventListener("keyup",i)}const n=h.createElement('
'),i=h.createElement('
');i.append(h.createElement(`
${k.Developer.copySelector}
`)),i.addEventListener("click",()=>{f.ElectronModule.copy(t),s.style.display="none"}),n.append(i),s.append(n)}))}getSelector(e){if(e.id)return"#"+e.id;const t=this.getRules(e),s=t[t.length-1];return s?s.selectorText:e.classList.length?"."+Array.from(e.classList).join("."):"."+Array.from(e.parentElement.classList).join(".")}getRules(e,t=e.ownerDocument.styleSheets){return[...t].filter(e=>!e.href||!e.href.includes("BetterDiscordApp")).map(e=>[...e.cssRules||[]]).flat().filter(t=>t&&t.selectorText&&e.matches(t.selectorText)&&t.style.length&&t.selectorText.split(", ").length<8&&!t.selectorText.split(", ").includes("*"))}},Ut=new class extends Xe{get name(){return"Debugger"}get category(){return"developer"}get id(){return"debuggerHotkey"}enabled(){document.addEventListener("keydown",this.debugListener)}disabled(){document.removeEventListener("keydown",this.debugListener)}debugListener(e){119!==e.which&&118!=e.which||(e.preventDefault(),e.stopImmediatePropagation())}};const Ht=s(0),qt=s(2),$t=s(1),Wt=Ht.remote.BrowserWindow;var _t=new class extends Xe{get name(){return"ReactDevTools"}get category(){return"developer"}get id(){return"reactDevTools"}initialize(){super.initialize(),this.findExtension()}findExtension(){let e="";if(e="win32"===process.platform?$t.resolve(process.env.LOCALAPPDATA,"Google/Chrome/User Data"):"linux"===process.platform?$t.resolve(process.env.HOME,".config/google-chrome"):"darwin"===process.platform?$t.resolve(process.env.HOME,"Library/Application Support/Google/Chrome"):$t.resolve(process.env.HOME,".config/chromium"),e+="/Default/Extensions/fmkadmapgofadopljbjfkapdkoienihi/",qt.existsSync(e)){const t=qt.readdirSync(e);e=$t.resolve(e,t[t.length-1])}this.extensionPath=e,this.isExtensionInstalled=qt.existsSync(e)}enabled(){if(this.isExtensionInstalled||this.findExtension(),!this.isExtensionInstalled)return W.alert(k.ReactDevTools.notFound,k.ReactDevTools.notFoundDetails);Wt.addDevToolsExtension(this.extensionPath)?this.log("Successfully installed react devtools."):this.error("Couldn't find react devtools in chrome extensions!")}disabled(){this.isExtensionInstalled&&Wt.removeDevToolsExtension("React Developer Tools")}};class Gt extends O.Component{render(){return O.createElement("svg",{className:"bd-logo "+this.props.className,height:"100%",width:this.props.size||"16px",viewBox:"0 0 2000 2000",style:{fillRule:"evenodd",clipRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"}},O.createElement("metadata",null),O.createElement("defs",null,O.createElement("filter",{id:"shadow1"},O.createElement("feDropShadow",{dx:"20",dy:"0",stdDeviation:"20",floodColor:"rgba(0,0,0,0.35)"})),O.createElement("filter",{id:"shadow2"},O.createElement("feDropShadow",{dx:"15",dy:"0",stdDeviation:"20",floodColor:"rgba(255,255,255,0.15)"})),O.createElement("filter",{id:"shadow3"},O.createElement("feDropShadow",{dx:"10",dy:"0",stdDeviation:"20",floodColor:"rgba(0,0,0,0.35)"}))),O.createElement("g",null,O.createElement("path",{style:{filter:"url(#shadow3)"},fill:"#171717",opacity:"1",d:"M1195.44+135.442L1195.44+135.442L997.6+136.442C1024.2+149.742+1170.34+163.542+1193.64+179.742C1264.34+228.842+1319.74+291.242+1358.24+365.042C1398.14+441.642+1419.74+530.642+1422.54+629.642L1422.54+630.842L1422.54+632.042C1422.54+773.142+1422.54+1228.14+1422.54+1369.14L1422.54+1370.34L1422.54+1371.54C1419.84+1470.54+1398.24+1559.54+1358.24+1636.14C1319.74+1709.94+1264.44+1772.34+1193.64+1821.44C1171.04+1837.14+1025.7+1850.54+1000+1863.54L1193.54+1864.54C1539.74+1866.44+1864.54+1693.34+1864.54+1296.64L1864.54+716.942C1866.44+312.442+1541.64+135.442+1195.44+135.442Z"}),O.createElement("path",{style:{filter:"url(#shadow2)"},fill:"#3E82E5",opacity:"1",d:"M1695.54+631.442C1685.84+278.042+1409.34+135.442+1052.94+135.442L361.74+136.442L803.74+490.442L1060.74+490.442C1335.24+490.442+1335.24+835.342+1060.74+835.342L1060.74+1164.84C1150.22+1164.84+1210.53+1201.48+1241.68+1250.87C1306.07+1353+1245.76+1509.64+1060.74+1509.64L361.74+1863.54L1052.94+1864.54C1409.24+1864.54+1685.74+1721.94+1695.54+1368.54C1695.54+1205.94+1651.04+1084.44+1572.64+999.942C1651.04+915.542+1695.54+794.042+1695.54+631.442Z"}),O.createElement("path",{style:{filter:"url(#shadow1)"},fill:"#FFFFFF",opacity:"1",d:"M1469.25+631.442C1459.55+278.042+1183.05+135.442+826.65+135.442L135.45+135.442L135.45+1004C135.45+1004+135.427+1255.21+355.626+1255.21C575.825+1255.21+575.848+1004+575.848+1004L577.45+490.442L834.45+490.442C1108.95+490.442+1108.95+835.342+834.45+835.342L664.65+835.342L664.65+1164.84L834.45+1164.84C923.932+1164.84+984.244+1201.48+1015.39+1250.87C1079.78+1353+1019.47+1509.64+834.45+1509.64L135.45+1509.64L135.45+1864.54L826.65+1864.54C1182.95+1864.54+1459.45+1721.94+1469.25+1368.54C1469.25+1205.94+1424.75+1084.44+1346.35+999.942C1424.75+915.542+1469.25+794.042+1469.25+631.442Z"})))}}const Qt=f.React,Vt=g.getByDisplayName("Tooltip");var Zt=new class{initialize(){u.suppressErrors(this.patchSocial.bind(this),"BD Social Patch")(),u.suppressErrors(this.patchGuildPills.bind(this),"BD Guild Pills Patch")(),u.suppressErrors(this.patchGuildListItems.bind(this),"BD Guild List Items Patch")(),u.suppressErrors(this.patchGuildSeparator.bind(this),"BD Guild Separator Patch")(),u.suppressErrors(this.patchMessageHeader.bind(this),"BD Message Header Patch")(),u.suppressErrors(this.patchMemberList.bind(this),"BD Member List Patch")()}patchSocial(){if(this.socialPatch)return;const e=g.getByDisplayName("TabBar"),t=g.getByDisplayName("Anchor");e&&(this.socialPatch=L.after("ComponentPatcher",e.prototype,"render",(e,s,n)=>{const o=n.props.children;if(!o||!o.length||o.length<3)return;if("Separator"!==o[o.length-3].type.displayName)return;if(!o[o.length-2].type.toString().includes("socialLinks"))return;if(t){const e=o[o.length-2].type,s=function(){const s=e(...arguments);return s.props.children.push(f.React.createElement(t,{className:"bd-social-link",href:"https://twitter.com/BandagedBD",title:"BandagedBD",target:"_blank"},f.React.createElement(Gt,{size:"16px",className:"bd-social-logo"}))),s};o[o.length-2].type=s}const r=f.React.createElement("div",{className:"colorMuted-HdFt4q size12-3cLvbJ"},"Injector "+i.version),a=`(${i.hash?i.hash.substring(0,7):i.branch})`,l=f.React.createElement("div",{className:"colorMuted-HdFt4q size12-3cLvbJ"},`BBD ${i.bbdVersion} `,f.React.createElement("span",{className:"versionHash-2gXjIB da-versionHash"},a)),d=o[o.length-1].type;o[o.length-1].type=function(){const e=d(...arguments);return e.props.children.splice(e.props.children.length-1,0,r),e.props.children.splice(1,0,l),e}}))}patchGuildListItems(){if(this.guildListItemsPatch)return;const e=f.GuildClasses.listItem.split(" ")[0],t=f.GuildClasses.blobContainer.split(" ")[0],s=u.getReactInstance(document.querySelector(`.${e} .${t}`).parentElement).return.type;s&&(this.guildListItemsPatch=L.after("ComponentPatcher",s.prototype,"render",(e,t,s)=>{if(!s||!e)return;const n=e.props;return s.props.className+=" bd-guild",n.unread&&(s.props.className+=" bd-unread"),n.selected&&(s.props.className+=" bd-selected"),n.audio&&(s.props.className+=" bd-audio"),n.video&&(s.props.className+=" bd-video"),n.badge&&(s.props.className+=" bd-badge"),n.animatable&&(s.props.className+=" bd-animatable"),s}))}patchGuildPills(){if(this.guildPillPatch)return;const e=g.getModule(e=>e.default&&!e.default.displayName&&e.default.toString&&e.default.toString().includes("translate3d"));e&&(this.guildPillPatch=L.after("ComponentPatcher",e,"default",(e,t,s)=>{const n=t[0];return n.unread&&(s.props.className+=" bd-unread"),n.selected&&(s.props.className+=" bd-selected"),n.hovered&&(s.props.className+=" bd-hovered"),s}))}patchGuildSeparator(){if(this.guildSeparatorPatch)return;const e=g.getByDisplayName("Guilds"),t=g.getByProps("renderListItem");if(!t||!e)return;const s=function(){const e=t.Separator(...arguments);return e.props.className+=" bd-guild-separator",e};this.guildSeparatorPatch=L.after("ComponentPatcher",e.prototype,"render",(e,t,n)=>{const i=u.findInReactTree(n,e=>e.type&&!e.type.displayName&&"function"==typeof e.type&&u.isEmpty(e.props));i&&(i.type=s)})}patchMessageHeader(){if(this.messageHeaderPatch)return;const e=g.getByProps("MessageTimestamp"),t=g.find(e=>"Anchor"==e.displayName);t&&e&&e.default&&(this.messageHeaderPatch=L.after("ComponentPatcher",e,"default",(e,s,n)=>{const i=u.getNestedProp(s[0],"message.author"),o=u.getNestedProp(n,"props.children.1.props.children.1.props.children");o&&i&&i.id&&"249746236008169473"===i.id&&Array.isArray(o)&&o.push(Qt.createElement(Vt,{color:"black",position:"top",text:"BandagedBD Developer"},e=>Qt.createElement(t,Object.assign({className:"bd-chat-badge",href:"https://github.com/rauenzi/BetterDiscordApp",title:"BandagedBD",target:"_blank"},e),Qt.createElement(Gt,{size:"16px",className:"bd-logo"}))))}))}patchMemberList(){if(this.memberListPatch)return;const e=g.findByDisplayName("MemberListItem"),t=g.find(e=>"Anchor"==e.displayName);t&&e&&e.prototype&&e.prototype.renderDecorators&&(this.memberListPatch=L.after("ComponentPatcher",e.prototype,"renderDecorators",(e,s,n)=>{const i=u.getNestedProp(e,"props.user"),o=u.getNestedProp(n,"props.children");o&&i&&i.id&&"249746236008169473"===i.id&&Array.isArray(o)&&o.push(Qt.createElement(Vt,{color:"black",position:"top",text:"BandagedBD Developer"},e=>Qt.createElement(t,Object.assign({className:"bd-member-badge",href:"https://github.com/rauenzi/BetterDiscordApp",title:"BandagedBD",target:"_blank"},e),Qt.createElement(Gt,{size:"16px",className:"bd-logo"}))))}))}};const Yt=document.createElement("style");Yt.textContent="/* BEGIN V2 LOADER */\n/* =============== */\n\n#bd-loading-icon {\n background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+IDwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyBoZWlnaHQ9IjEwMCUiIHN0eWxlPSJmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWw6c3BhY2U9InByZXNlcnZlIiB3aWR0aD0iMTAwJSIgdmVyc2lvbj0iMS4xIiB2aWV3Qm94PSIwIDAgMjAwMCAyMDAwIj4gICAgPG1ldGFkYXRhIC8+ICAgIDxkZWZzPiAgICAgICAgPGZpbHRlciBpZD0ic2hhZG93MSI+ICAgICAgICA8ZmVEcm9wU2hhZG93IGR4PSIyMCIgZHk9IjAiIHN0ZERldmlhdGlvbj0iMjAiIGZsb29kLWNvbG9yPSJyZ2JhKDAsMCwwLDAuMzUpIi8+ICAgICAgICA8L2ZpbHRlcj4gICAgICAgIDxmaWx0ZXIgaWQ9InNoYWRvdzIiPiAgICAgICAgPGZlRHJvcFNoYWRvdyBkeD0iMTUiIGR5PSIwIiBzdGREZXZpYXRpb249IjIwIiBmbG9vZC1jb2xvcj0icmdiYSgyNTUsMjU1LDI1NSwwLjE1KSIvPiAgICAgICAgPC9maWx0ZXI+ICAgICAgICA8ZmlsdGVyIGlkPSJzaGFkb3czIj4gICAgICAgIDxmZURyb3BTaGFkb3cgZHg9IjEwIiBkeT0iMCIgc3RkRGV2aWF0aW9uPSIyMCIgZmxvb2QtY29sb3I9InJnYmEoMCwwLDAsMC4zNSkiLz4gICAgICAgIDwvZmlsdGVyPiAgICA8L2RlZnM+ICAgIDxnPiAgICAgICAgPHBhdGggc3R5bGU9ImZpbHRlcjogdXJsKCNzaGFkb3czKSIgZD0iTTExOTUuNDQrMTM1LjQ0MkwxMTk1LjQ0KzEzNS40NDJMOTk3LjYrMTM2LjQ0MkMxMDI0LjIrMTQ5Ljc0MisxMTcwLjM0KzE2My41NDIrMTE5My42NCsxNzkuNzQyQzEyNjQuMzQrMjI4Ljg0MisxMzE5Ljc0KzI5MS4yNDIrMTM1OC4yNCszNjUuMDQyQzEzOTguMTQrNDQxLjY0MisxNDE5Ljc0KzUzMC42NDIrMTQyMi41NCs2MjkuNjQyTDE0MjIuNTQrNjMwLjg0MkwxNDIyLjU0KzYzMi4wNDJDMTQyMi41NCs3NzMuMTQyKzE0MjIuNTQrMTIyOC4xNCsxNDIyLjU0KzEzNjkuMTRMMTQyMi41NCsxMzcwLjM0TDE0MjIuNTQrMTM3MS41NEMxNDE5Ljg0KzE0NzAuNTQrMTM5OC4yNCsxNTU5LjU0KzEzNTguMjQrMTYzNi4xNEMxMzE5Ljc0KzE3MDkuOTQrMTI2NC40NCsxNzcyLjM0KzExOTMuNjQrMTgyMS40NEMxMTcxLjA0KzE4MzcuMTQrMTAyNS43KzE4NTAuNTQrMTAwMCsxODYzLjU0TDExOTMuNTQrMTg2NC41NEMxNTM5Ljc0KzE4NjYuNDQrMTg2NC41NCsxNjkzLjM0KzE4NjQuNTQrMTI5Ni42NEwxODY0LjU0KzcxNi45NDJDMTg2Ni40NCszMTIuNDQyKzE1NDEuNjQrMTM1LjQ0MisxMTk1LjQ0KzEzNS40NDJaIiBmaWxsPSIjMTcxNzE3IiBvcGFjaXR5PSIxIi8+ICAgICAgICA8cGF0aCBzdHlsZT0iZmlsdGVyOiB1cmwoI3NoYWRvdzIpIiBkPSJNMTY5NS41NCs2MzEuNDQyQzE2ODUuODQrMjc4LjA0MisxNDA5LjM0KzEzNS40NDIrMTA1Mi45NCsxMzUuNDQyTDM2MS43NCsxMzYuNDQyTDgwMy43NCs0OTAuNDQyTDEwNjAuNzQrNDkwLjQ0MkMxMzM1LjI0KzQ5MC40NDIrMTMzNS4yNCs4MzUuMzQyKzEwNjAuNzQrODM1LjM0MkwxMDYwLjc0KzExNjQuODRDMTE1MC4yMisxMTY0Ljg0KzEyMTAuNTMrMTIwMS40OCsxMjQxLjY4KzEyNTAuODdDMTMwNi4wNysxMzUzKzEyNDUuNzYrMTUwOS42NCsxMDYwLjc0KzE1MDkuNjRMMzYxLjc0KzE4NjMuNTRMMTA1Mi45NCsxODY0LjU0QzE0MDkuMjQrMTg2NC41NCsxNjg1Ljc0KzE3MjEuOTQrMTY5NS41NCsxMzY4LjU0QzE2OTUuNTQrMTIwNS45NCsxNjUxLjA0KzEwODQuNDQrMTU3Mi42NCs5OTkuOTQyQzE2NTEuMDQrOTE1LjU0MisxNjk1LjU0Kzc5NC4wNDIrMTY5NS41NCs2MzEuNDQyWiIgZmlsbD0iIzNFODJFNSIgb3BhY2l0eT0iMSIvPiAgICAgICAgPHBhdGggc3R5bGU9ImZpbHRlcjogdXJsKCNzaGFkb3cxKSIgZD0iTTE0NjkuMjUrNjMxLjQ0MkMxNDU5LjU1KzI3OC4wNDIrMTE4My4wNSsxMzUuNDQyKzgyNi42NSsxMzUuNDQyTDEzNS40NSsxMzUuNDQyTDEzNS40NSsxMDA0QzEzNS40NSsxMDA0KzEzNS40MjcrMTI1NS4yMSszNTUuNjI2KzEyNTUuMjFDNTc1LjgyNSsxMjU1LjIxKzU3NS44NDgrMTAwNCs1NzUuODQ4KzEwMDRMNTc3LjQ1KzQ5MC40NDJMODM0LjQ1KzQ5MC40NDJDMTEwOC45NSs0OTAuNDQyKzExMDguOTUrODM1LjM0Mis4MzQuNDUrODM1LjM0Mkw2NjQuNjUrODM1LjM0Mkw2NjQuNjUrMTE2NC44NEw4MzQuNDUrMTE2NC44NEM5MjMuOTMyKzExNjQuODQrOTg0LjI0NCsxMjAxLjQ4KzEwMTUuMzkrMTI1MC44N0MxMDc5Ljc4KzEzNTMrMTAxOS40NysxNTA5LjY0KzgzNC40NSsxNTA5LjY0TDEzNS40NSsxNTA5LjY0TDEzNS40NSsxODY0LjU0TDgyNi42NSsxODY0LjU0QzExODIuOTUrMTg2NC41NCsxNDU5LjQ1KzE3MjEuOTQrMTQ2OS4yNSsxMzY4LjU0QzE0NjkuMjUrMTIwNS45NCsxNDI0Ljc1KzEwODQuNDQrMTM0Ni4zNSs5OTkuOTQyQzE0MjQuNzUrOTE1LjU0MisxNDY5LjI1Kzc5NC4wNDIrMTQ2OS4yNSs2MzEuNDQyWiIgZmlsbD0iI0ZGRkZGRiIgb3BhY2l0eT0iMSIvPiAgICA8L2c+PC9zdmc+);\n}\n#bd-loading-icon {\n position: fixed;\n bottom:5px;\n right:5px;\n z-index: 2147483647;\n display: block;\n width: 20px;\n height: 20px;\n background-size: 100% 100%;\n animation: bd-loading-animation 1.5s ease-in-out infinite;\n}\n\n@keyframes bd-loading-animation {\n 0% { opacity: 0.05; }\n 50% { opacity: 0.6; }\n 100% { opacity: 0.05; }\n}\n/* =============== */\n/* END V2 LOADER */";const Jt=document.createElement("div");Jt.id="bd-loading-icon",Jt.className="bd-loaderv2",Jt.title="BandagedBD is loading...";var Kt=class{static show(){document.body.appendChild(Yt),document.body.appendChild(Jt)}static hide(){Yt&&Yt.remove(),Jt&&Jt.remove()}};const{ipcRenderer:Xt}=s(0),es=f.GuildClasses;new class{constructor(){Xt.invoke("bd-config","get").then(e=>{this.hasStarted||(Object.assign(i,e),this.init())})}get dependencies(){return[{name:"jquery",type:"script",url:"//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js",backup:"//cdn.jsdelivr.net/gh/jquery/jquery@2.0.0/jquery.min.js",local:null},{name:"bd-stylesheet",type:"style",url:"//cdn.staticaly.com/gh/{{repo}}/BetterDiscordApp/{{hash}}/dist/style.css",backup:"//rauenzi.github.io/BetterDiscordApp/dist/style.css",local:"{{localServer}}/BetterDiscordApp/dist/style.css"}]}setConfig(e){this.hasStarted||Object.assign(i,e)}async init(){if(this.hasStarted)return;this.hasStarted=!0;let e=new Promise(e=>e());if(window.$&&window.jQuery||(e=this.loadDependencies()),w.initialize(),await D.initialize(),i.versioni.version&&W.showConfirmationModal(k.Startup.updateAvailable,k.Startup.updateInfo.format({version:t}),{confirmText:k.Startup.updateNow,cancelText:k.Startup.maybeLater,onConfirm:async()=>{const e=()=>{W.alert(k.Startup.updateFailed,k.Startup.manualUpdate)};try{if(!await this.updateInjector())return e();const t=s(0).remote.app;t.relaunch(),t.exit()}catch(t){e()}}}),c.log("Startup","Initializing Settings"),T.initialize(),await this.waitForGuilds(),F.initialize(),Zt.initialize();for(const e in n)n[e].initialize();await e,c.log("Startup","Loading Plugins");const o=Qe.initialize();c.log("Startup","Loading Themes");const r=Ze.initialize();c.log("Startup","Removing Loading Icon"),Kt.hide(),c.log("Startup","Collecting Startup Errors"),W.showAddonErrors({plugins:o,themes:r});const a=w.getBDData("version");i.bbdVersion>a&&(W.showChangelogModal(l),w.setBDData("version",i.bbdVersion))}waitForGuilds(){let e=0;return new Promise(t=>{const s=function(){e++,"complete"!=document.readyState&&setTimeout(s,100);const n=es.wrapper.split(" ")[0],o=es.listItem.split(" ")[0],r=es.blobContainer.split(" ")[0];return document.querySelectorAll(`.${n} .${o} .${r}`).length>0||e>=50?t(i.deferLoaded=!0):void setTimeout(s,100)};s()})}async loadDependencies(){for(const e of this.dependencies){const t=u.formatString(i.local&&null!=e.local?e.local:e.url,{repo:i.repo,hash:i.hash,localServer:i.localServer});c.log("Startup",`Loading Resource (${t})`);const s=("script"==e.type?C.injectScript:C.linkStyle).bind(C);try{await s(e.name,t)}catch(n){const o=u.formatString(e.backup,{minified:i.minified?".min":""});c.stacktrace("Startup",`Could not load ${t}. Using backup ${o}`,n);try{await s(e.name,o)}catch(s){c.stacktrace("Startup",`Could not load ${t}. Using backup ${o}`,n),"jquery"===e.name&&W.alert(k.Startup.jqueryFailed,k.Startup.jqueryFailedDetails)}}}}async updateInjector(){const e=w.injectionPath;if(!e)return!1;const t=s(2),n=s(1),i=s(6),o=s(7),r=s(8),a=s(3),l=n.resolve(e,".."),d=n.basename(e),h="https://github.com/rauenzi/BetterDiscordApp/archive/injector.zip",u=n.resolve(l,"injector.zip"),p=n.resolve(l,"BetterDiscordApp-injector");c.log("InjectorUpdate","Downloading "+h);let m=await new Promise(e=>{a.get({url:h,encoding:null},async(s,n,i)=>{if(s||200!==n.statusCode)return e(!1);await new Promise(e=>t.exists(u,e))&&await new Promise(e=>t.rename(u,`${u}.bak${Math.round(performance.now())}`,e)),c.log("InjectorUpdate","Writing "+u),t.writeFile(u,i,t=>e(!t))})});if(!m)return m;await new Promise(e=>t.exists(p,e))&&await new Promise(e=>t.rename(p,`${p}.bak${Math.round(performance.now())}`,e));const g=await new Promise(e=>o.open(u,{lazyEntries:!0},(t,s)=>e(s)));g.on("entry",(function(e){if(e.fileName.endsWith("/"))return g.readEntry();c.log("InjectorUpdate","Extracting "+e.fileName);const s=n.resolve(l,e.fileName);r.sync(n.dirname(s)),g.openReadStream(e,(function(e,n){if(e)return m=!1;n.on("end",(function(){g.readEntry()})),n.pipe(t.createWriteStream(s))}))})),g.readEntry(),await new Promise(e=>g.once("end",e));const f=n.resolve(l,`${d}.bak${Math.round(performance.now())}`);return await new Promise(s=>t.rename(e,f,s)),c.log("InjectorUpdate",`Renaming ${n.basename(p)} to ${d}`),m=await new Promise(s=>t.rename(p,e,e=>s(!e))),m?m?(await new Promise(e=>i(f,e)),await new Promise(e=>t.unlink(u,e)),c.log("InjectorUpdate","Injector Updated!"),m):(c.err("InjectorUpdate","Something went wrong... restoring backups."),await new Promise(e=>i(p,e)),await new Promise(s=>t.rename(f,e,s)),m):(c.err("InjectorUpdate","Failed to rename the final directory"),m)}};!function(){const e=Object.getOwnPropertyDescriptor(HTMLIFrameElement.prototype,"contentWindow").get;Object.defineProperty(HTMLIFrameElement.prototype,"contentWindow",{get:function(){const t=Reflect.apply(e,this,arguments);return new Proxy(t,{getOwnPropertyDescriptor:function(e,t){if("localStorage"!==t)return Object.getOwnPropertyDescriptor(e,t)},get:function(e,t){if("localStorage"===t)return null;const s=e[t];return"function"==typeof s?s.bind(e):s}})}}),Object.defineProperty(Reflect,"apply",{value:Reflect.apply,writable:!1,configurable:!1}),Object.defineProperty(Function.prototype,"bind",{value:Function.prototype.bind,writable:!1,configurable:!1});const t=XMLHttpRequest.prototype.open;XMLHttpRequest.prototype.open=function(){const e=arguments[1];return e.toLowerCase().includes("api/webhooks")?null:Reflect.apply(t,this,arguments)}}(),function(){const e="betterdiscord/",t=s(4),n=t._load;t._load=function(t){if("betterdiscord"===t||t.startsWith(e)){if("bdapi"==t.substr(e.length))return Ke}return n.apply(this,arguments)}}(),window.BdApi=Ke,Kt.show()}]).default; \ No newline at end of file +!function(e){var t={};function s(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,s),i.l=!0,i.exports}s.m=e,s.c=t,s.d=function(e,t,n){s.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},s.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},s.t=function(e,t){if(1&t&&(e=s(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(s.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)s.d(n,i,function(t){return e[t]}.bind(null,i));return n},s.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return s.d(t,"a",t),t},s.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},s.p="",s(s.s=9)}([function(e,t){e.exports=require("electron")},function(e,t){e.exports=require("path")},function(e,t){e.exports=require("fs")},function(e,t){e.exports=require("request")},function(e,t){e.exports=require("module")},function(e,t){e.exports=require("events")},function(e,t){e.exports=require("rimraf")},function(e,t){e.exports=require("yauzl")},function(e,t){e.exports=require("mkdirp")},function(e,t,s){"use strict";s.r(t);var n={};s.r(n),s.d(n,"CustomCSS",(function(){return ht})),s.d(n,"WindowPrefs",(function(){return ut})),s.d(n,"TwentyFourHour",(function(){return pt})),s.d(n,"ClassNormalizer",(function(){return gt})),s.d(n,"PublicServers",(function(){return xt})),s.d(n,"VoiceDisconnect",(function(){return Nt})),s.d(n,"ColoredText",(function(){return Dt})),s.d(n,"DarkMode",(function(){return At})),s.d(n,"MinimalMode",(function(){return kt})),s.d(n,"VoiceMode",(function(){return Tt})),s.d(n,"EmoteModule",(function(){return Ut})),s.d(n,"EmoteMenu",(function(){return qt})),s.d(n,"CopySelector",(function(){return $t})),s.d(n,"Debugger",(function(){return Wt})),s.d(n,"ReactDevTools",(function(){return Zt}));var i={local:!1,localServer:"//localhost:8080",minified:!0,version:"0.3.0",branch:"master",repo:"rauenzi",minSupportedVersion:"0.3.0",bbdVersion:"1.0.0"},o=[{type:"category",id:"general",name:"General",collapsible:!0,settings:[{type:"switch",id:"download",value:!0},{type:"switch",id:"emoteMenu",value:!0},{type:"switch",id:"hideEmojiMenu",value:!1,enableWith:"emoteMenu"},{type:"switch",id:"showNames",value:!0},{type:"switch",id:"modifiers",value:!0},{type:"switch",id:"animateOnHover",value:!1}]},{type:"category",id:"categories",name:"Categories",collapsible:!0,settings:[{type:"switch",id:"twitchglobal",value:!0},{type:"switch",id:"twitchsubscriber",value:!1},{type:"switch",id:"frankerfacez",value:!0},{type:"switch",id:"bttv",value:!0}]}],r=[{type:"category",id:"general",collapsible:!0,settings:[{type:"switch",id:"emotes",value:!0},{type:"switch",id:"publicServers",value:!0},{type:"switch",id:"voiceDisconnect",value:!1},{type:"switch",id:"twentyFourHour",value:!1},{type:"switch",id:"classNormalizer",value:!0},{type:"switch",id:"showToasts",value:!0}]},{type:"category",id:"appearance",collapsible:!0,settings:[{type:"switch",id:"voiceMode",value:!1},{type:"switch",id:"minimalMode",value:!1},{type:"switch",id:"hideChannels",value:!1,enableWith:"minimalMode"},{type:"switch",id:"darkMode",value:!0},{type:"switch",id:"coloredText",value:!1}]},{type:"category",id:"addons",collapsible:!0,shown:!1,settings:[{type:"switch",id:"addonErrors",value:!0},{type:"switch",id:"autoScroll",value:!0},{type:"switch",id:"autoReload",value:!0},{type:"dropdown",id:"editAction",value:"detached",options:[{value:"detached"},{value:"system"}]}]},{type:"category",id:"customcss",collapsible:!0,shown:!1,settings:[{type:"switch",id:"customcss",value:!0},{type:"switch",id:"liveUpdate",value:!1},{type:"dropdown",id:"openAction",value:"settings",options:[{value:"settings"},{value:"detached"},{value:"system"}]}]},{type:"category",id:"developer",collapsible:!0,shown:!1,settings:[{type:"switch",id:"debuggerHotkey",value:!1},{type:"switch",id:"copySelector",value:!1},{type:"switch",id:"reactDevTools",value:!1}]},{type:"category",id:"window",collapsible:!0,shown:!1,settings:[{type:"switch",id:"transparency",value:!1},{type:"switch",id:"frame",value:!1,hidden:!0}]}],a={Panels:{plugins:"Plugins",themes:"Themes",customcss:"Custom CSS"},Collections:{settings:{name:"Settings",general:{name:"General",emotes:{name:"Emote System",note:"Enables BD's emote system"},publicServers:{name:"Public Servers",note:"Display public servers button"},voiceDisconnect:{name:"Voice Disconnect",note:"Disconnect from voice server when closing Discord"},twentyFourHour:{name:"24-Hour Timestamps",note:"Hides channels when in minimal mode"},classNormalizer:{name:"Normalize Classes",note:"Adds stable classes to elements to help themes. (e.g. adds .da-channels to .channels-Ie2l6A)"},showToasts:{name:"Show Toasts",note:"Shows a small notification for important information"}},appearance:{name:"Appearance",voiceMode:{name:"Voice Mode",note:"Hides everything that isn't voice chat"},minimalMode:{name:"Minimal Mode",note:"Hide elements and reduce the size of elements"},hideChannels:{name:"Hide Channels",note:"Hides channels when in minimal mode"},darkMode:{name:"Dark Mode",note:"Make certain elements dark by default"},coloredText:{name:"Colored Text",note:"Make text colour the same as role color"}},addons:{name:"Addon Manager",addonErrors:{name:"Show Addon Errors",note:"Shows a modal with plugin/theme errors"},autoScroll:{name:"Scroll To Settings",note:"Auto-scrolls to a plugin's settings when the button is clicked (only if out of view)"},autoReload:{name:"Automatic Loading",note:"Automatically loads, reloads, and unloads plugins and themes"},editAction:{name:"Edit Action",note:"Where plugins & themes appear when editing",options:{detached:"Detached Window",system:"System Editor"}}},customcss:{name:"Custom CSS",customcss:{name:"Custom CSS",note:"Enables the Custom CSS tab"},liveUpdate:{name:"Live Update",note:"Updates the css as you type"},startDetached:{name:"Start Detached",note:"Clicking the Custom CSS tab opens the editor in a separate window"},nativeOpen:{name:"Open in Native Editor",note:"Clicking the Custom CSS tab opens your custom css in your native editor"},openAction:{name:"Editor Location",note:"Where Custom CSS should open by default",options:{settings:"Settings Menu",detached:"Detached Window",system:"System Editor"}}},developer:{name:"Developer Settings",debuggerHotkey:{name:"Debugger Hotkey",note:"Allows activating debugger when pressing F8"},copySelector:{name:"Copy Selector",note:'Adds a "Copy Selector" option to context menus when developer mode is active'},reactDevTools:{name:"React Developer Tools",note:"Injects your local installation of React Developer Tools into Discord"}},window:{name:"Window Preferences",transparency:{name:"Enable Transparency",note:"Enables the main window to be see-through (requires restart)"},frame:{name:"Window Frame",note:"Adds the native os window frame to the main window"}}},emotes:{name:"Emotes",general:{name:"General",download:{name:"Download Emotes",note:"Download emotes whenever they are out of date"},emoteMenu:{name:"Emote Menu",note:"Show Twitch/Favourite emotes in emote menu"},hideEmojiMenu:{name:"Hide Emoji Menu",note:"Hides Discord's emoji menu when using emote menu"},autoCaps:{name:"Emote Autocapitalization",note:"Autocapitalize emote commands"},showNames:{name:"Show Names",note:"Show emote names on hover"},modifiers:{name:"Show Emote Modifiers",note:"Enable emote mods (flip, spin, pulse, spin2, spin3, 1spin, 2spin, 3spin, tr, bl, br, shake, shake2, shake3, flap)"},animateOnHover:{name:"Animate On Hover",note:"Only animate the emote modifiers on hover"}},categories:{name:"Categories",twitchglobal:{name:"Twitch Globals",note:"Show Twitch global emotes"},twitchsubscriber:{name:"Twitch Subscribers",note:"Show Twitch subscriber emotes"},frankerfacez:{name:"FrankerFaceZ",note:"Show emotes from FFZ"},bttv:{name:"BetterTTV",note:"Show emotes from BTTV"}}}},Addons:{title:"{{name}} v{{version}} by {{author}}",openFolder:"Open {{type}} Folder",reload:"Reload",addonSettings:"Settings",website:"Website",source:"Source",invite:"Support Server",donate:"Donate",patreon:"Patreon",name:"Name",author:"Author",version:"Version",added:"Date Added",modified:"Date Modified",search:"Search {{type}}",editAddon:"Edit",deleteAddon:"Delete",confirmDelete:"Are you sure you want to delete {{name}}?",confirmationText:"You have unsaved changes to {{name}}. Closing this window will lose all those changes.",enabled:"{{name}} has been enabled.",disabled:"{{name}} has been disabled.",couldNotEnable:"{{name}} could not be enabled.",couldNotDisable:"{{name}} could not be disabled.",couldNotStart:"{{name}} could not be started.",couldNotStop:"{{name}} could not be stopped.",methodError:"{{method}} could not be fired.",unknownAuthor:"Unknown Author",noDescription:"Description not provided."},CustomCSS:{confirmationText:"You have unsaved changes to your Custom CSS. Closing this window will lose all those changes.",update:"Update",save:"Save",openNative:"Open in System Editor",openDetached:"Detach Window",settings:"Editor Settings",editorTitle:"Custom CSS Editor"},Developer:{copySelector:"Copy Selector"},Emotes:{loading:"Loading emotes in the background do not reload.",loaded:"All emotes successfully loaded.",clearEmotes:"Clear Emote Data",favoriteAction:"Favorite!"},PublicServers:{button:"public",join:"Join",joining:"Joining",joined:"Joined",loading:"Loading",loadMore:"Load More",notConnected:"Not connected to DiscordServers.com!",search:"Search",connect:"Connect",reconnect:"Reconnect",categories:"Categories",connection:"Connected as: {{username}}#{{discriminator}}",results:"Showing {{start}}-{{end}} of {{total}} results in {{category}}",query:"for {{query}}"},Modals:{confirmAction:"Are You Sure?",okay:"Okay",cancel:"Cancel",close:"Close",name:"Name",message:"Message",error:"Error",addonErrors:"Addon Errors",restartRequired:"Restart Required",restartNow:"Restart Now",restartLater:"Restart Later",additionalInfo:"Additional Info"},ReactDevTools:{notFound:"Extension Not Found",notFoundDetails:"Unable to find the React Developer Tools extension on your PC. Please install the extension on your local Chrome installation."},Sorting:{sortBy:"Sort By",order:"Order",ascending:"Ascending",descending:"Descending"},Startup:{notSupported:"Not Supported",versionMismatch:"BandagedBD Injector v{{injector}} is not supported by the latest remote (v{{remote}}).\n\nPlease download the latest version from [GitHub](https://github.com/rauenzi/BetterDiscordApp/releases/latest)",incompatibleApp:"BandagedBD does not work with {{app}}. Please uninstall one of them.",updateNow:"Update Now",maybeLater:"Maybe Later",updateAvailable:"Update Available",updateInfo:"There is an update available for BandagedBD's Injector ({{version}}).\n\nYou can either update and restart now, or later.",updateFailed:"Could Not Update",manualUpdate:"Unable to update automatically, please download the installer and reinstall normally.\n\n[Download Installer](https://github.com/rauenzi/BetterDiscordApp/releases/latest)",jqueryFailed:"jQuery Failed To Load",jqueryFailedDetails:"jQuery could not be loaded, and some plugins may not work properly. Proceed at your own risk."},WindowPrefs:{enabledInfo:"This option requires a transparent theme in order to work properly. On Windows this may break your aero snapping and maximizing.\n\nIn order to take effect, Discord needs to be restarted. Do you want to restart now?",disabledInfo:"In order to take effect, Discord needs to be restarted. Do you want to restart now?"}},l={description:"Don't be shocked, this modal is supposed to be here.",changes:[{title:"What's New?",items:["**BandagedBD will now keep you updated with changelogs!** I will try to only show a changelog when there's more than a tiny or internal change.","**Twitter (@BandagedBD)** I created a Twitter to try and provide support and such for those without access to the server. https://Twitter.com/BandagedBD"]},{title:"Fixes",type:"fixed",items:["**Colored Text** option should work again.","**Emotes** should show up in chat.","Fixed a bug where BBD attempted to patch the TabBar module incorrectly. (Thanks, DevilBro)"]},{title:"Minor Stuff",type:"improved",items:["**Colour->Color.** Swapped to using English-US spelling by default to be consistent, and to potentially be prepared for localization.","**Versions simplified.** The BandagedBD version now integrates into Discord's at the bottom-left of settings instead of randomly being a part of the setting list."]}]};const d={err:"error",error:"error",dbg:"debug",debug:"debug",log:"log",warn:"warn",info:"info"};class c{static stacktrace(e,t,s){console.error(`%c[${e}]%c ${t}\n\n%c`,"color: #3a71c1; font-weight: 700;","color: red; font-weight: 700;","color: red;",s)}static err(e,...t){c._log(e,t,"error")}static warn(e,...t){c._log(e,t,"warn")}static info(e,...t){c._log(e,t,"info")}static debug(e,...t){c._log(e,t,"debug")}static log(e,...t){c._log(e,t)}static _log(e,t,s="log"){s=c.parseType(s),Array.isArray(t)||(t=[t]),console[s](`%c[BandagedBD]%c [${e}]%c`,"color: #3E82E5; font-weight: 700;","color: #3a71c1;","",...t)}static parseType(e){return d[e]||"log"}}class h{static escapeID(e){return e.replace(/^[^a-z]+|[^\w-]+/gi,"-")}static addStyle(e,t){document.head.append(h.createElement(``))}static removeStyle(e){const t=document.getElementById(e);t&&t.remove()}static addScript(e,t){return new Promise(s=>{const n=document.createElement("script");n.id=e,n.src=t,n.type="text/javascript",n.onload=s,document.head.append(n)})}static removeScript(e){e=this.escapeID(e);const t=document.getElementById(e);t&&t.remove()}static animate({timing:e=(e=>e),update:t,duration:s}){const n=performance.now();requestAnimationFrame((function i(o){let r=(o-n)/s;r>1&&(r=1);const a=e(r);t(a),r<1&&requestAnimationFrame(i)}))}static Q(e){const t=this.parseHTML(e);return(t instanceof NodeList?Array.from(t).some(e=>1===e.nodeType):1===t.nodeType)?t:this.query(e)}static query(e,t){return t||(t=document),t.querySelector(e)}static queryAll(e,t){return t||(t=document),t.querySelectorAll(e)}static parseHTML(e,t=!1){const s=document.createElement("template");s.innerHTML=e;const n=s.content.cloneNode(!0);return t?n:n.childNodes.length>1?n.childNodes:n.childNodes[0]}static createElement(e,t=!1){return this.parseHTML(e,t)}static escapeHTML(e){const t=document.createTextNode(""),s=document.createElement("span");return s.append(t),t.nodeValue=e,s.innerHTML}static addClass(e,...t){t=t.flat().filter(e=>e);for(let e=0;ee),e.classList.add(...t),e}static removeClass(e,...t){for(let e=0;ee),e.classList.remove(...t),e}static toggleClass(e,t,s){return t=t.toString().split(" ").filter(e=>e),void 0!==s?t.forEach(t=>e.classList.toggle(t,s)):t.forEach(t=>e.classList.toggle(t)),e}static hasClass(e,t){return t.toString().split(" ").filter(e=>e).every(t=>e.classList.contains(t))}static replaceClass(e,t,s){return e.classList.replace(t,s),e}static appendTo(e,t){return"string"==typeof t&&(t=this.query(t)),t?(t.append(e),e):null}static prependTo(e,t){return"string"==typeof t&&(t=this.query(t)),t?(t.prepend(e),e):null}static insertAfter(e,t){return t.parentNode.insertBefore(e,t.nextSibling),e}static after(e,t){return e.parentNode.insertBefore(t,e.nextSibling),e}static next(e,t=""){return t?e.querySelector("+ "+t):e.nextElementSibling}static nextAll(e){return e.querySelectorAll("~ *")}static nextUntil(e,t){const s=[];for(;e.nextElementSibling&&!e.nextElementSibling.matches(t);)s.push(e=e.nextElementSibling);return s}static previous(e,t=""){const s=e.previousElementSibling;return t?s&&s.matches(t)?s:null:s}static previousAll(e){const t=[];for(;e.previousElementSibling;)t.push(e=e.previousElementSibling);return t}static previousUntil(e,t){const s=[];for(;e.previousElementSibling&&!e.previousElementSibling.matches(t);)s.push(e=e.previousElementSibling);return s}static indexInParent(e){const t=e.parentNode.childNodes;let s=0;for(let n=0;n "+t)}static findChildren(e,t){return e.querySelectorAll(":scope > "+t)}static parents(e,t=""){const s=[];if(t)for(;e.parentElement&&e.parentElement.closest(t);)s.push(e=e.parentElement.closest(t));else for(;e.parentElement;)s.push(e=e.parentElement);return s}static parentsUntil(e,t){const s=[];for(;e.parentElement&&!e.parentElement.matches(t);)s.push(e=e.parentElement);return s}static siblings(e,t="*"){return Array.from(e.parentElement.children).filter(s=>s!=e&&s.matches(t))}static css(e,t,s){return void 0===s?global.getComputedStyle(e)[t]:(e.style[t]=s,e)}static width(e,t){return void 0===t?parseInt(getComputedStyle(e).width):(e.style.width=t,e)}static height(e,t){return void 0===t?parseInt(getComputedStyle(e).height):(e.style.height=t,e)}static text(e,t){return void 0===t?e.textContent:e.textContent=t}static innerWidth(e){return e.clientWidth}static innerHeight(e){return e.clientHeight}static outerWidth(e){return e.offsetWidth}static outerHeight(e){return e.offsetHeight}static offset(e){return e.getBoundingClientRect()}static get listeners(){return this._listeners||(this._listeners={})}static on(e,t,s,n){const[i,o]=t.split("."),r=s&&n;n||(n=s);const a=r?function(e){e.target.matches(s)&&n(e)}:n;e.addEventListener(i,a);const l=()=>{e.removeEventListener(i,a)};if(o){this.listeners[o]||(this.listeners[o]=[]);const t=()=>{l(),this.listeners[o].splice(this.listeners[o].findIndex(t=>t.event==i&&t.element==e),1)};return this.listeners[o].push({event:i,element:e,cancel:t}),t}return l}static once(e,t,s,n){const[i,o]=t.split("."),r=s&&n;n||(n=s);const a=r?function(t){t.target.matches(s)&&(n(t),e.removeEventListener(i,a))}:function(t){n(t),e.removeEventListener(i,a)};e.addEventListener(i,a);const l=()=>{e.removeEventListener(i,a)};if(o){this.listeners[o]||(this.listeners[o]=[]);const t=()=>{l(),this.listeners[o].splice(this.listeners[o].findIndex(t=>t.event==i&&t.element==e),1)};return this.listeners[o].push({event:i,element:e,cancel:t}),t}return l}static __offAll(e,t){const[s,n]=e.split(".");let i=e=>e.event==s,o=e=>e;t&&(i=e=>e.event==s&&e.element==t,o=e=>e.element==t);const r=this.listeners[n]||[],a=s?r.filter(i):r.filter(o);for(let e=0;e{this.observer.unsubscribe(n),t()};return this.observer.subscribe(n,t=>{const n=Array.from(s?t.addedNodes:t.removedNodes),i=n.indexOf(e)>-1,o=n.some(t=>t.contains(e));return i||o}),e}static onMount(e,t){return this.onMountChange(e,t)}static onUnmount(e,t){return this.onMountChange(e,t,!1)}static onAdded(e,t){return this.onMount(e,t)}static onRemoved(e,t){return this.onUnmount(e,t,!1)}static wrap(e){const t=this.parseHTML('
');for(let s=0;s1?n.childNodes:n.childNodes[0]}static getTextArea(){return h.query(".channelTextArea-1LDbYG textarea")}static insertText(e,t){e.focus(),e.selectionStart=0,e.selectionEnd=e.value.length,document.execCommand("insertText",!1,t)}static escape(e){return e.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&")}static testJSON(e){try{return JSON.parse(e)}catch(e){return!1}}static suppressErrors(e,t){return(...s)=>{try{return e(...s)}catch(e){c.stacktrace("SuppressedError","Error occurred in "+t,e)}}}static onRemoved(e,t){const s=new MutationObserver(n=>{for(let i=0;i-1,l=r.some(t=>t.contains(e));(a||l)&&(s.disconnect(),t())}});s.observe(document.body,{subtree:!0,childList:!0})}static isEmpty(e){if(null==e||null==e||""==e)return!0;if("object"!=typeof e)return!1;if(Array.isArray(e))return 0==e.length;for(const t in e)if(e.hasOwnProperty(t))return!1;return!0}static memoizeObject(e){const t=new Proxy(e,{get:function(e,t){if(e.hasOwnProperty(t)){if(Object.getOwnPropertyDescriptor(e,t).get){const s=e[t];delete e[t],e[t]=s}return e[t]}},set:function(e,t,s){return e.hasOwnProperty(t)?c.error("MemoizedObject","Trying to overwrite existing property"):(e[t]=s,e[t])}});return Object.defineProperty(t,"hasOwnProperty",{value:function(e){return void 0!==this[e]}}),t}static extend(e,...t){for(let s=0;se.startsWith("__reactInternalInstance"))]||null}static getOwnerInstance(e,{include:t,exclude:s=["Popout","Tooltip","Scroller","BackgroundFlash"],filter:n=(e=>e)}={}){if(void 0===e)return;const i=void 0===t,o=i?s:t;function r(e){const t=function(e){const t=e.type;return t&&(t.displayName||t.name)||null}(e);return null!==t&&!!(o.includes(t)^i)}let a=this.getReactInstance(e);for(a=a&&a.return;null!==a;a=a.return){if(null===a)continue;const e=a.stateNode;if(null!==a&&!(e instanceof HTMLElement)&&r(a)&&n(e))return e}return null}}class p{static byProperties(e,t=(e=>e)){return s=>{const n=t(s);return!!n&&e.every(e=>void 0!==n[e])}}static byPrototypeFields(e,t=(e=>e)){return s=>{const n=t(s);return!!n&&(!!n.prototype&&e.every(e=>void 0!==n.prototype[e]))}}static byCode(e,t=(e=>e)){return s=>{const n=t(s);return!!n&&-1!==n.toString([]).search(e)}}static byString(...e){return t=>{const s=t.toString([]);for(const t of e)if(!s.includes(t))return!1;return!0}}static byDisplayName(e){return t=>t&&t.displayName===e}static combine(...e){return t=>e.every(e=>e(t))}}const m=e=>{if(e.remove&&e.set&&e.clear&&e.get&&!e.sort)return null;if(!e.getToken&&!e.getEmail&&!e.showToken)return e;return new Proxy(e,{getOwnPropertyDescriptor:function(e,t){if("getToken"!==t&&"getEmail"!==t&&"showToken"!==t)return Object.getOwnPropertyDescriptor(e,t)},get:function(e,t){return"getToken"==t?()=>"mfa.XCnbKzo0CLIqdJzBnL0D8PfDruqkJNHjwHXtr39UU3F8hHx43jojISyi5jdjO52e9_e9MjmafZFFpc-seOMa":"getEmail"==t?()=>"puppet11112@gmail.com":"showToken"==t?()=>!0:e[t]}})};class g{static find(e,t=!0){return this.getModule(e,t)}static findAll(e){return this.getModule(e,!1)}static findByUniqueProperties(e,t=!0){return t?this.getByProps(...e):this.getAllByProps(...e)}static findByDisplayName(e){return this.getByDisplayName(e)}static getModule(e,t=!0){const s=this.getAllModules(),n=[];for(const i in s){if(!s.hasOwnProperty(i))continue;const o=s[i],{exports:r}=o;let a=null;if(r&&(r.__esModule&&r.default&&e(r.default)&&(a=r.default),e(r)&&(a=r),a)){if(t)return m(a);n.push(m(a))}}return t||0==n.length?void 0:n}static getModules(e){return this.getModule(e,!1)}static getByDisplayName(e){return this.getModule(p.byDisplayName(e),!0)}static getByRegex(e,t=!0){return this.getModule(p.byCode(e),t)}static getByPrototypes(...e){return this.getModule(p.byPrototypeFields(e),!0)}static getAllByPrototypes(...e){return this.getModule(p.byPrototypeFields(e),!1)}static getByProps(...e){return this.getModule(p.byProperties(e),!0)}static getAllByProps(...e){return this.getModule(p.byProperties(e),!1)}static getByString(...e){return this.getModule(p.byString(...e),!0)}static getAllByString(...e){return this.getModule(p.byString(...e),!1)}static get require(){if(this._require)return this._require;const e="bbd-webpackmodules",t="function"==typeof window.webpackJsonp?window.webpackJsonp([],{[e]:(e,t,s)=>t.default=s},[e]).default:window.webpackJsonp.push([[],{[e]:(e,t,s)=>e.exports=s},[[e]]]);return delete t.m[e],delete t.c[e],this._require=t}static getAllModules(){return this.require.c}}var f=u.memoizeObject({get React(){return g.getByProps("createElement","cloneElement")},get ReactDOM(){return g.getByProps("render","findDOMNode")},get Flux(){return g.getByProps("connectStores")},get Events(){return g.getByPrototypes("setMaxListeners","emit")},get GuildStore(){return g.getByProps("getGuild")},get SortedGuildStore(){return g.getByProps("getSortedGuilds")},get SelectedGuildStore(){return g.getByProps("getLastSelectedGuildId")},get GuildSync(){return g.getByProps("getSyncedGuilds")},get GuildInfo(){return g.getByProps("getAcronym")},get GuildChannelsStore(){return g.getByProps("getChannels","getDefaultChannel")},get GuildMemberStore(){return g.getByProps("getMember")},get MemberCountStore(){return g.getByProps("getMemberCounts")},get GuildEmojiStore(){return g.getByProps("getEmojis")},get GuildActions(){return g.getByProps("markGuildAsRead")},get GuildPermissions(){return g.getByProps("getGuildPermissions")},get ChannelStore(){return g.getByProps("getChannels","getDMFromUserId")},get SelectedChannelStore(){return g.getByProps("getLastSelectedChannelId")},get ChannelActions(){return g.getByProps("selectChannel")},get PrivateChannelActions(){return g.getByProps("openPrivateChannel")},get ChannelSelector(){return g.getByProps("selectGuild","selectChannel")},get UserInfoStore(){return g.getByProps("getToken")},get UserSettingsStore(){return g.getByProps("guildPositions")},get AccountManager(){return g.getByProps("register","login")},get UserSettingsUpdater(){return g.getByProps("updateRemoteSettings")},get OnlineWatcher(){return g.getByProps("isOnline")},get CurrentUserIdle(){return g.getByProps("getIdleTime")},get RelationshipStore(){return g.getByProps("isBlocked","getFriendIDs")},get RelationshipManager(){return g.getByProps("addRelationship")},get MentionStore(){return g.getByProps("getMentions")},get UserStore(){return g.getByProps("getCurrentUser")},get UserStatusStore(){return g.getByProps("getStatus","getState")},get UserTypingStore(){return g.getByProps("isTyping")},get UserActivityStore(){return g.getByProps("getActivity")},get UserNameResolver(){return g.getByProps("getName")},get UserNoteStore(){return g.getByProps("getNote")},get UserNoteActions(){return g.getByProps("updateNote")},get EmojiInfo(){return g.getByProps("isEmojiDisabled")},get EmojiUtils(){return g.getByProps("getGuildEmoji")},get EmojiStore(){return g.getByProps("getByCategory","EMOJI_NAME_RE")},get InviteStore(){return g.getByProps("getInvites")},get InviteResolver(){return g.getByProps("findInvite")},get InviteActions(){return g.getByProps("acceptInvite")},get DiscordConstants(){return g.getByProps("Permissions","ActivityTypes","StatusTypes")},get DiscordPermissions(){return g.getByProps("Permissions","ActivityTypes","StatusTypes").Permissions},get PermissionUtils(){return g.getByProps("getHighestRole")},get ColorConverter(){return g.getByProps("hex2int")},get ColorShader(){return g.getByProps("darken")},get TinyColor(){return g.getByPrototypes("toRgb")},get ClassResolver(){return g.getByProps("getClass")},get ButtonData(){return g.getByProps("ButtonSizes")},get IconNames(){return g.getByProps("IconNames")},get NavigationUtils(){return g.getByProps("transitionTo","replaceWith","getHistory")},get MessageStore(){return g.getByProps("getMessages")},get MessageActions(){return g.getByProps("jumpToMessage","_sendMessage")},get MessageQueue(){return g.getByProps("enqueue")},get MessageParser(){return g.getByProps("createMessage","parse","unparse")},get hljs(){return g.getByProps("highlight","highlightBlock")},get SimpleMarkdown(){return g.getByProps("parseBlock","parseInline","defaultOutput")},get ExperimentStore(){return g.getByProps("getExperimentOverrides")},get ExperimentsManager(){return g.getByProps("isDeveloper")},get CurrentExperiment(){return g.getByProps("getExperimentId")},get ImageResolver(){return g.getByProps("getUserAvatarURL","getGuildIconURL")},get ImageUtils(){return g.getByProps("getSizedImageSrc")},get AvatarDefaults(){return g.getByProps("getUserAvatarURL","DEFAULT_AVATARS")},get WindowInfo(){return g.getByProps("isFocused","windowSize")},get TagInfo(){return g.getByProps("VALID_TAG_NAMES")},get DOMInfo(){return g.getByProps("canUseDOM")},get LocaleManager(){return g.getByProps("setLocale")},get Moment(){return g.getByProps("parseZone")},get LocationManager(){return g.getByProps("createLocation")},get Timestamps(){return g.getByProps("fromTimestamp")},get TimeFormatter(){return g.getByProps("dateFormat")},get Strings(){return g.getByProps("Messages").Messages},get StringFormats(){return g.getByProps("a","z")},get StringUtils(){return g.getByProps("toASCII")},get URLParser(){return g.getByProps("Url","parse")},get ExtraURLs(){return g.getByProps("getArticleURL")},get DNDActions(){return g.getByProps("beginDrag")},get DNDSources(){return g.getByProps("addTarget")},get DNDObjects(){return g.getByProps("DragSource")},get MediaDeviceInfo(){return g.getByProps("Codecs","SUPPORTED_BROWSERS")},get MediaInfo(){return g.getByProps("getOutputVolume")},get MediaEngineInfo(){return g.getByProps("MediaEngineFeatures")},get VoiceInfo(){return g.getByProps("EchoCancellation")},get VideoStream(){return g.getByProps("getVideoStream")},get SoundModule(){return g.getByProps("playSound")},get ElectronModule(){return g.getByProps("setBadge")},get Dispatcher(){return g.getByProps("dirtyDispatch")},get PathUtils(){return g.getByProps("hasBasename")},get NotificationModule(){return g.getByProps("showNotification")},get RouterModule(){return g.getByProps("Router")},get APIModule(){return g.getByProps("getAPIBaseURL")},get AnalyticEvents(){return g.getByProps("AnalyticEventConfigs")},get KeyGenerator(){return g.getByRegex(/"binary"/)},get Buffers(){return g.getByProps("Buffer","kMaxLength")},get DeviceStore(){return g.getByProps("getDevices")},get SoftwareInfo(){return g.getByProps("os")},get CurrentContext(){return g.getByProps("setTagsContext")},get GuildClasses(){const e=g.getByProps("wrapper","unreadMentionsBar"),t=g.getByProps("guildsError","selected"),s=g.getByProps("blobContainer");return Object.assign({},e,t,s)},get LayerStack(){return g.getByProps("pushLayer")}});const y=s(2),b=s(1),v=DiscordNative.globals?DiscordNative.globals.releaseChannel:DiscordNative.app?DiscordNative.app.getReleaseChannel():"stable";var w=new class{constructor(){this.data={misc:{}},this.pluginData={},this.cacheData={}}initialize(){y.existsSync(this.baseFolder)||y.mkdirSync(this.baseFolder),y.existsSync(this.dataFolder)||y.mkdirSync(this.dataFolder),y.existsSync(this.localeFolder)||y.mkdirSync(this.localeFolder),y.existsSync(this.emoteFolder)||y.mkdirSync(this.emoteFolder),y.existsSync(this.cacheFile)||y.writeFileSync(this.cacheFile,JSON.stringify({})),y.existsSync(this.customCSS)||y.writeFileSync(this.customCSS,"");const e=y.readdirSync(this.dataFolder).filter(e=>!y.statSync(b.resolve(this.dataFolder,e)).isDirectory()&&e.endsWith(".json"));for(const t of e)this.data[t.split(".")[0]]=require(b.resolve(this.dataFolder,t));this.cacheData=u.testJSON(y.readFileSync(this.cacheFile).toString())||{}}get injectionPath(){if(this._injectionPath)return this._injectionPath;const e=s(0).remote.app,t=e.getAppPath(),n=e.getPath("userData"),i=b.resolve(n,e.getVersion(),"modules","discord_desktop_core","injector"),o=b.resolve(t,"..","app"),r=y.existsSync(o)?o:y.existsSync(i)?i:null;return this._injectionPath=r||null}get customCSS(){return this._customCSS||(this._customCSS=b.resolve(this.dataFolder,"custom.css"))}get baseFolder(){return this._baseFolder||(this._baseFolder=b.resolve(i.dataPath,"data"))}get dataFolder(){return this._dataFolder||(this._dataFolder=b.resolve(this.baseFolder,""+v))}get localeFolder(){return this._localeFolder||(this._localeFolder=b.resolve(this.baseFolder,"locales"))}get emoteFolder(){return this._emoteFolder||(this._emoteFolder=b.resolve(this.baseFolder,"emotes"))}get cacheFile(){return this._cacheFile||(this._cacheFile=b.resolve(this.baseFolder,".cache"))}getPluginFile(e){return b.resolve(i.dataPath,"plugins",e+".config.json")}_getFile(e){return"settings"==e||"plugins"==e||"themes"==e||"window"==e?b.resolve(this.dataFolder,e+".json"):b.resolve(this.dataFolder,"misc.json")}getBDData(e){return this.data.misc[e]||""}setBDData(e,t){this.data.misc[e]=t,y.writeFileSync(b.resolve(this.dataFolder,"misc.json"),JSON.stringify(this.data.misc,null,4))}getLocale(e){const t=b.resolve(this.localeFolder,e+".json");return y.existsSync(t)?u.testJSON(y.readFileSync(t).toString()):null}saveLocale(e,t){y.writeFileSync(b.resolve(this.localeFolder,e+".json"),JSON.stringify(t,null,4))}getCacheHash(e,t){return this.cacheData[e]&&y.existsSync(b.resolve(this.baseFolder,e,t+".json"))&&this.cacheData[e][t]||""}setCacheHash(e,t,s){this.cacheData[e]||(this.cacheData[e]={}),this.cacheData[e][t]=s,y.writeFileSync(this.cacheFile,JSON.stringify(this.cacheData))}invalidateCache(e,t){this.cacheData[e]&&(delete this.cacheData[e][t],y.writeFileSync(this.cacheFile,JSON.stringify(this.cacheData)))}emotesExist(e){return y.existsSync(b.resolve(this.emoteFolder,e+".json"))}getEmoteData(e){const t=b.resolve(this.emoteFolder,e+".json");return y.existsSync(t)?u.testJSON(y.readFileSync(t).toString()):null}saveEmoteData(e,t){y.writeFileSync(b.resolve(this.emoteFolder,e+".json"),JSON.stringify(t))}getData(e){return this.data[e]||""}setData(e,t){this.data[e]=t,y.writeFileSync(b.resolve(this.dataFolder,e+".json"),JSON.stringify(t,null,4))}loadCustomCSS(){return y.readFileSync(this.customCSS).toString()}saveCustomCSS(e){return y.writeFileSync(this.customCSS,e)}getPluginData(e,t){return void 0!==this.pluginData[e]?this.pluginData[e][t]||void 0:y.existsSync(this.getPluginFile(e))?(this.pluginData[e]=JSON.parse(y.readFileSync(this.getPluginFile(e))),this.pluginData[e][t]||void 0):void 0}setPluginData(e,t,s){void 0!==s&&(void 0===this.pluginData[e]&&(this.pluginData[e]={}),this.pluginData[e][t]=s,y.writeFileSync(this.getPluginFile(e),JSON.stringify(this.pluginData[e],null,4)))}deletePluginData(e,t){void 0===this.pluginData[e]&&(this.pluginData[e]={}),delete this.pluginData[e][t],y.writeFileSync(this.getPluginFile(e),JSON.stringify(this.pluginData[e],null,4))}};class C{static get bdHead(){return this.getElement("bd-head")}static get bdBody(){return this.getElement("bd-body")}static get bdScripts(){return this.getElement("bd-scripts")}static get bdStyles(){return this.getElement("bd-styles")}static get bdThemes(){return this.getElement("bd-themes")}static get bdCustomCSS(){return this.getElement("#customcss")}static escapeID(e){return e.replace(/^[^a-z]+|[^\w-]+/gi,"-")}static getElement(e,t=document){return e instanceof Node?e:t.querySelector(e)}static createElement(e,t={}){const{className:s,id:n,target:i}=t,o=document.createElement(e);return s&&(o.className=s),n&&(o.id=n),i&&this.getElement(i).append(o),o}static removeStyle(e){e=this.escapeID(e);const t=this.getElement("#"+e,this.bdStyles);t&&t.remove()}static injectStyle(e,t){e=this.escapeID(e);const s=this.getElement("#"+e,this.bdStyles)||this.createElement("style",{id:e});s.textContent=t,this.bdStyles.append(s)}static unlinkStyle(e){return this.removeStyle(e)}static linkStyle(e,t){return e=this.escapeID(e),new Promise(s=>{const n=this.getElement("#"+e,this.bdStyles)||this.createElement("link",{id:e});n.rel="stylesheet",n.href=t,n.onload=s,this.bdStyles.append(n)})}static removeTheme(e){e=this.escapeID(e);const t=this.getElement("#"+e,this.bdThemes);t&&t.remove()}static injectTheme(e,t){e=this.escapeID(e);const s=this.getElement("#"+e,this.bdThemes)||this.createElement("style",{id:e});s.textContent=t,this.bdThemes.append(s)}static updateCustomCSS(e){this.bdCustomCSS.textContent=e}static removeScript(e){e=this.escapeID(e);const t=this.getElement("#"+e,this.bdScripts);t&&t.remove()}static injectScript(e,t){return e=this.escapeID(e),new Promise(s=>{const n=this.getElement("#"+e,this.bdScripts)||this.createElement("script",{id:e});n.src=t,n.onload=s,this.bdScripts.append(n)})}}C.createElement("bd-head",{target:document.head}),C.createElement("bd-body",{target:document.body}),C.createElement("bd-scripts",{target:C.bdHead}),C.createElement("bd-styles",{target:C.bdHead}),C.createElement("bd-themes",{target:C.bdHead}),C.createElement("style",{id:"customcss",target:C.bdHead});const S=s(5);var E=new class extends S{constructor(){super(),this.setMaxListeners(20)}dispatch(e,...t){this.emit(e,...t)}};const M=s(3),{Dispatcher:x,DiscordConstants:N,UserSettingsStore:P}=f;var D=new class{get discordLocale(){return P.locale.split("-")[0]}get defaultLocale(){return"en"}constructor(){this.locale="",this.strings={}}async initialize(){await this.setLocale(this.discordLocale),x.subscribe(N.ActionTypes.USER_SETTINGS_UPDATE,({settings:e})=>{const t=e.locale;t&&t!=this.locale&&this.setLocale(t.split("-")[0])})}async setLocale(e){let t;if(e!=this.defaultLocale){if(t=await this.getLocaleStrings(e),!t)return this.setLocale(this.defaultLocale)}else t=a;this.locale=e,u.extend(this.strings,t),E.emit("strings-updated")}async getLocaleStrings(e){const t=w.getCacheHash("locales",e);if(!t)return await this.downloadLocale(e);const s=await this.downloadLocale(e,t);return s||w.getLocale(e)}downloadLocale(e,t=""){return new Promise(s=>{const n={url:u.repoUrl(`assets/locales/${e}.json`),timeout:2e3,json:!0};t&&(n.headers={"If-None-Match":t}),M.get(n,(t,n,i)=>{if(t||200!==n.statusCode)return s(null);w.saveLocale(e,i),w.setCacheHash("locales",e,n.headers.etag),s(i)})})}};class A extends String{format(e){return u.formatString(this,e)}}var k=new Proxy(D.strings,{get:function(e,t){return e.hasOwnProperty(t)?new Proxy(e[t],{get:function(e,t){return"string"==typeof e[t]?new A(e[t]):e[t]}}):new Proxy({},{get:function(){return`String group "${t}" not found.`}})}}),T=new class{constructor(){this.state={},this.collections=[],this.panels=[],this.updateStrings=this.updateStrings.bind(this)}initialize(){this.registerCollection("settings","Settings",r),E.on("strings-updated",this.updateStrings)}registerCollection(e,t,s,n=null){if(this.collections.find(t=>t.id==e))return c.error("Settings","Already have a collection with id "+e);this.collections.push({type:"collection",id:e,name:t,settings:s,button:n}),this.setupCollection(e),this.loadCollection(e),this.updateStrings()}removeCollection(e){const t=this.collections.findIndex(t=>t.id==e);if(!t<0)return c.error("Settings","No collection with id "+e);this.collections.splice(t,1)}registerPanel(e,t,s){if(this.panels.find(t=>t.id==e))return c.error("Settings","Already have a panel with id "+e);const{element:n,onClick:i,order:o=1}=s,r={id:e,order:o,label:t,section:e};i&&(r.clickListener=i),n&&(r.element=n instanceof f.React.Component?()=>f.React.createElement(n,{}):"function"==typeof n?n:()=>n),this.panels.push(r)}removePanel(e){const t=this.panels.findIndex(t=>t.id==e);if(!t<0)return c.error("Settings","No collection with id "+e);this.panels.splice(t,1)}getPath(e,t="",s=""){return{collection:3==e.length?e[0]:t,category:3==e.length?e[1]:2==e.length?e[0]:s,setting:e[e.length-1]}}setupCollection(e){const t=this.collections.find(t=>t.id==e);if(!t)return;const s=t.settings;this.state[t.id]||(this.state[t.id]={});for(let e=0;e{const e=this.state[o.collection][o.category][o.setting];return s.enableWith?!e:e}})}}}}saveSettings(){for(const e in this.state)this.saveCollection(e)}loadSettings(){for(const e in this.state)this.loadCollection(e)}saveCollection(e){w.setData(e,this.state[e])}loadCollection(e){const t=w.getData(e);if(!t)return this.saveCollection(e);for(const s in this.state[e]){t[s]||Object.assign(t,{[s]:this.state[e][s]});for(const n in this.state[e][s]){if(null==t[s][n])continue;const i=this.getSetting(e,s,n);if("switch"==i.type&&(this.state[e][s][n]=t[s][n]),"dropdown"==i.type){i.options.some(e=>e.value==t[s][n])&&(this.state[e][s][n]=t[s][n])}}}this.saveCollection(e)}onSettingChange(e,t,s,n){this.state[e][t][s]=n,E.dispatch("setting-updated",e,t,s,n),this.saveCollection(e)}getSetting(e,t,s){return 2==arguments.length?this.collections[0].find(e=>e.id==arguments[0]).settings.find(e=>e.id==arguments[1]):this.collections.find(t=>t.id==e).settings.find(e=>e.id==t).settings.find(e=>e.id==s)}get(e,t,s){return 2==arguments.length&&(s=t,t=e,e="settings"),!(!this.state[e]||!this.state[e][t])&&this.state[e][t][s]}set(e,t,s,n){return 3==arguments.length&&(n=s,s=t,t=e,e="settings"),this.onSettingChange(e,t,s,n)}on(e,t,s,n){const i=(i,o,r,a)=>{i===e&&o===t&&r===s&&n(a)};return E.on("setting-updated",i),()=>{E.off("setting-updated",i)}}updateStrings(){for(let e=0;e"before"===e.type))try{t.callback(this,arguments)}catch(s){c.err("Patcher",`Could not fire before callback of ${e.functionName} for ${t.caller}`,s)}const s=e.children.filter(e=>"instead"===e.type);if(s.length)for(const n of s)try{const s=n.callback(this,arguments,e.originalFunction.bind(this));void 0!==s&&(t=s)}catch(t){c.err("Patcher",`Could not fire instead callback of ${e.functionName} for ${n.caller}`,t)}else t=e.originalFunction.apply(this,arguments);for(const s of e.children.filter(e=>"after"===e.type))try{const e=s.callback(this,arguments,t);void 0!==e&&(t=e)}catch(t){c.err("Patcher",`Could not fire after callback of ${e.functionName} for ${s.caller}`,t)}return t}}static rePatch(e){e.proxyFunction=e.module[e.functionName]=this.makeOverride(e)}static makePatch(e,t,s){const n={name:s,module:e,functionName:t,originalFunction:e[t],proxyFunction:null,revert:()=>{n.module[n.functionName]=n.originalFunction,n.proxyFunction=null,n.children=[]},counter:0,children:[]};return n.proxyFunction=e[t]=this.makeOverride(n),this.patches.push(n),n}static before(e,t,s,n,i={}){return this.pushChildPatch(e,t,s,n,Object.assign(i,{type:"before"}))}static after(e,t,s,n,i={}){return this.pushChildPatch(e,t,s,n,Object.assign(i,{type:"after"}))}static instead(e,t,s,n,i={}){return this.pushChildPatch(e,t,s,n,Object.assign(i,{type:"instead"}))}static pushChildPatch(e,t,s,n,i={}){const{type:o="after",forcePatch:r=!0}=i,a=this.resolveModule(t);if(!a)return null;if(!a[s]&&r&&(a[s]=function(){}),!(a[s]instanceof Function))return null;"string"==typeof t&&(i.displayName=t);const l=`${i.displayName||a.displayName||a.name||a.constructor.displayName||a.constructor.name}.${s}`,d=this.patches.find(e=>e.module==a&&e.functionName==s)||this.makePatch(a,s,l);d.proxyFunction||this.rePatch(d);const c={caller:e,type:o,id:d.counter,callback:n,unpatch:()=>{if(d.children.splice(d.children.findIndex(e=>e.id===c.id&&e.type===o),1),d.children.length<=0){const e=this.patches.findIndex(e=>e.module==a&&e.functionName==s);this.patches[e].revert(),this.patches.splice(e,1)}}};return d.children.push(c),d.counter++,c.unpatch}}const j=f.React,B={},I=new Set,z=new Set;var F=new class{get named(){return B}get unknown(){return I}get listeners(){return z}constructor(){L.after("ReactComponents",j,"createElement",(e,t,s)=>{this.walkRenderTree(s)}),L.instead("ReactComponents",j.Component.prototype,"componentWillMount",e=>{this.addComponent(e.constructor)}),L.instead("ReactComponents",j.Component.prototype,"UNSAFE_componentWillMount",e=>{this.addComponent(e.constructor)}),L.instead("ReactComponents",j.PureComponent.prototype,"componentWillMount",e=>{this.addComponent(e.constructor)}),L.instead("ReactComponents",j.PureComponent.prototype,"UNSAFE_componentWillMount",e=>{this.addComponent(e.constructor)})}initialize(){this.walkReactTree(document.querySelector("#app-mount")._reactRootContainer._internalRoot.current)}get(e,t){return new Promise(s=>{if(B[e])return s(B[e]);if(z.add({name:e,filter:t,resolve:s}),t)for(const s of I)t(s)&&(s.displayName=e,I.delete(s),this.addNamedComponent(s))})}addNamedComponent(e){const t=e.displayName;if(!B[t]){B[t]=e;for(const s of z)s.name===t&&(s.resolve(e),z.delete(s))}}addUnknownComponent(e){if(!I.has(e)){for(const t of z)t.filter&&t.filter(e)&&(e.displayName=t.name,this.addNamedComponent(e));e.displayName||I.add(e)}}addComponent(e){return e.displayName?this.addNamedComponent(e):this.addUnknownComponent(e)}walkRenderTree(e){if(e){if("function"==typeof e.type&&this.addComponent(e.type),Array.isArray(e))for(const t of e)this.walkRenderTree(t);e.props&&e.props.children&&this.walkRenderTree(e.props.children)}}walkReactTree(e){e&&("function"==typeof e.type&&this.addComponent(e.type),e.child&&this.walkReactTree(e.child),e.sibling&&this.walkReactTree(e.sibling))}};const O=f.React,R=f.ReactDOM,U=g.getByProps("sidebar","hasNotice").sidebar.split(" ")[0],H=g.getByProps("membersWrap").membersWrap.split(" ")[0];class q{static get shouldShowToasts(){return T.get("settings","general","showToasts")}static async success(e,t={}){return this.show(e,Object.assign(t,{type:"success"}))}static async info(e,t={}){return this.show(e,Object.assign(t,{type:"info"}))}static async warning(e,t={}){return this.show(e,Object.assign(t,{type:"warning"}))}static async error(e,t={}){return this.show(e,Object.assign(t,{type:"error"}))}static async default(e,t={}){return this.show(e,Object.assign(t,{type:""}))}static show(e,t={}){const{type:s="",icon:n=!0,timeout:i=3e3,forceShow:o=!1}=t;if(!this.shouldShowToasts&&!o)return;this.ensureContainer();const r=document.createElement("div");r.classList.add("bd-toast"),s&&r.classList.add("toast-"+s),s&&n&&r.classList.add("icon"),r.innerText=e,document.querySelector(".bd-toasts").appendChild(r),setTimeout(()=>{r.classList.add("closing"),setTimeout(()=>{r.remove(),document.querySelectorAll(".bd-toasts .bd-toast").length||document.querySelector(".bd-toasts").remove()},300)},i)}static ensureContainer(){if(document.querySelector(".bd-toasts"))return;const e=document.querySelector(`.${U} + div`),t=e.querySelector("."+H),s=e?e.querySelector("form"):null,n=e?e.getBoundingClientRect().left:310,i=t?t.getBoundingClientRect().left:0,o=i?i-e.getBoundingClientRect().left:e.offsetWidth,r=s?s.offsetHeight:80,a=document.createElement("div");a.classList.add("bd-toasts"),a.style.setProperty("left",n+"px"),a.style.setProperty("width",o+"px"),a.style.setProperty("bottom",r+"px"),C.bdBody.appendChild(a)}}class W{static get shouldShowAddonErrors(){return T.get("settings","addons","addonErrors")}static get ModalActions(){return g.getByProps("openModal","updateModal")}static get ModalStack(){return g.getByProps("push","update","pop","popWithKey")}static get AlertModal(){return g.getByPrototypes("handleCancel","handleSubmit","handleMinorConfirm")}static get TextElement(){return g.getByProps("Sizes","Weights")}static get ConfirmationModal(){return g.findByDisplayName("ConfirmModal")}static get Markdown(){return g.findByDisplayName("Markdown")}static default(e,t){const s=h.createElement(`
\n
\n \n
`);s.querySelector(".footer button").addEventListener("click",()=>{s.classList.add("closing"),setTimeout(()=>{s.remove()},300)}),s.querySelector(".bd-backdrop").addEventListener("click",()=>{s.classList.add("closing"),setTimeout(()=>{s.remove()},300)}),document.querySelector("#app-mount").append(s)}static alert(e,t){this.showConfirmationModal(e,t,{cancelText:""})}static showConfirmationModal(e,t,s={}){const n=this.Markdown,i=this.ConfirmationModal,o=this.ModalActions;if(t instanceof A&&(t=t.toString()),!this.ModalActions||!this.ConfirmationModal||!this.Markdown)return this.default(e,t);const r=()=>{},{onConfirm:a=r,onCancel:l=r,confirmText:d=k.Modals.okay,cancelText:c=k.Modals.cancel,danger:h=!1,key:u}=s;return Array.isArray(t)||(t=[t]),t=t.map(e=>"string"==typeof e?O.createElement(n,null,e):e),o.openModal(s=>O.createElement(i,Object.assign({header:e,red:h,confirmText:d,cancelText:c,onConfirm:a,onCancel:l},s),t),{modalKey:u})}static showAddonErrors({plugins:e=[],themes:t=[]}){if(!e||!t||!this.shouldShowAddonErrors)return;if(!e.length&&!t.length)return;const s=h.createElement(`
\n
\n \n
`),n=function(e){const t=h.createElement('
');for(const s of e){const e=h.createElement(`
\n
${s.name?s.name:s.file}
\n
${s.message}
\n \n
`);t.append(e),s.error&&e.querySelectorAll("a").forEach(e=>e.addEventListener("click",e=>{e.preventDefault(),c.stacktrace("AddonError",`Error details for ${s.name?s.name:s.file}.`,s.error)}))}return t},i=[n(e),n(t)];s.querySelectorAll(".tab-bar-item").forEach(e=>e.addEventListener("click",e=>{e.preventDefault();const t=s.querySelector(".tab-bar-item.selected");t&&h.removeClass(t,"selected"),h.addClass(e.target,"selected");const n=s.querySelector(".scroller");n.innerHTML="",n.append(i[h.index(e.target)])})),s.querySelector(".footer button").addEventListener("click",()=>{h.addClass(s,"closing"),setTimeout(()=>{s.remove()},300)}),s.querySelector(".bd-backdrop").addEventListener("click",()=>{h.addClass(s,"closing"),setTimeout(()=>{s.remove()},300)}),h.query("#app-mount").append(s),e.length?s.querySelector(".tab-bar-item").click():s.querySelectorAll(".tab-bar-item")[1].click()}static showChangelogModal(e={}){const t=g.getByProps("push","update","pop","popWithKey"),s=g.getByProps("fixed","improved"),n=g.findByDisplayName("Text"),o=g.getByProps("Child"),r=g.getByProps("Tags","default"),a=g.getModule(e=>e.defaultProps&&0==e.defaultProps.selectable),l=g.getByProps("defaultRules","parse");if(!(a&&t&&s&&n&&o&&r&&l))return c.warn("Modals","showChangelogModal missing modules");const{image:d="https://repository-images.githubusercontent.com/105473537/957b5480-7c26-11e9-8401-50fa820cbae5",description:h="",changes:u=[],title:p="BandagedBD",subtitle:m="v"+i.bbdVersion,footer:y}=e,b=O.createElement,v=[b("img",{src:d})];h&&v.push(b("p",null,l.parse(h)));for(let e=0;eb("li",null,l.parse(e))));v.push(o)}return t.push(a,{className:s.container,selectable:!0,onScroll:e=>e,onClose:e=>e,renderHeader:function(){return b(o.Child,{grow:1,shrink:1},b(r.default,{tag:r.Tags.H4},p),b(n,{size:n.Sizes.SMALL,color:n.Colors.STANDARD,className:s.date},m))},renderFooter:()=>{const e=g.getModule(e=>"Anchor"==e.displayName),s=g.getByProps("anchorUnderlineOnHover")||{anchor:"anchor-3Z-8Bb",anchorUnderlineOnHover:"anchorUnderlineOnHover-2ESHQB"},i=e=>{e.preventDefault(),e.stopPropagation(),t.pop(),f.InviteActions.acceptInviteAndTransitionToInviteChannel("2HScm8j")},r=e?b(e,{onClick:i},"Join our Discord Server."):b("a",{className:`${s.anchor} ${s.anchorUnderlineOnHover}`,onClick:i},"Join our Discord Server."),a=b(n,{size:n.Sizes.SMALL,color:n.Colors.STANDARD},"Need support? ",r);return b(o.Child,{grow:1,shrink:1},y||a)},children:v})}}class _ extends Error{constructor(e,t,s,n){super(s),this.name=e,this.file=t,this.error=n}}class G extends Error{constructor(e){super(e),this.name="MetaError"}}class Q extends O.Component{constructor(e){super(e),this.onClick=this.onClick.bind(this),this.state={checked:this.props.checked||!1}}render(){return O.createElement("div",{className:"checkbox-item"},O.createElement("div",{className:"checkbox-label label-JWQiNe da-label"},this.props.text),O.createElement("div",{className:"checkbox-wrapper checkbox-3kaeSU da-checkbox checkbox-3EVISJ da-checkbox",onClick:this.onClick},O.createElement("div",{className:"checkbox-inner checkboxInner-3yjcPe da-checkboxInner"},O.createElement("input",{className:"checkbox checkboxElement-1qV33p da-checkboxElement",checked:this.state.checked,type:"checkbox"}),O.createElement("span",null)),O.createElement("span",null)))}onClick(){this.props.onChange(!this.state.checked),this.setState({checked:!this.state.checked})}}function V(){return(V=Object.assign||function(e){for(var t=1;t{for(const s of e){if(!(s.addedNodes.length&&s.addedNodes[0]instanceof Element))continue;const e=s.addedNodes[0];e.parentElement===document.body&&e.querySelector("#ace_settingsmenu")&&(e.id="ace_settingsmenu_container",t.disconnect())}});t.observe(document.body,{childList:!0})};const t=this.props.theme==K.defaultProps.theme?this.props.theme.split("-")[1]:this.props.theme;this.editor.setTheme("ace/theme/"+t),this.editor.session.setMode("ace/mode/"+this.props.language),this.editor.setShowPrintMargin(!1),this.editor.setFontSize(this.props.fontSize),this.editor.on("change",this.onChange)}componentWillUnmount(){this.editor.destroy()}get value(){return this.editor.session.getValue()}set value(e){this.editor.setValue(e)}onChange(){this.props.onChange&&this.props.onChange(this.value)}showSettings(){return this.editor.keyBinding.$defaultHandler.commands.showSettingsMenu.exec(this.editor)}resize(){return this.editor.resize()}buildControl(e){return"checkbox"==e.type?this.makeCheckbox(e):this.makeButton(e)}makeCheckbox(e){return O.createElement(Q,{text:e.label,onChange:e.onChange,checked:e.checked})}makeButton(e){return O.createElement(Z,{color:"black",position:"top",text:e.tooltip},t=>O.createElement("button",V({},t,{className:"btn btn-primary",onClick:t=>{e.onClick(t,this.value)}}),e.label))}render(){this.editor&&this.editor.resize&&this.editor.resize();const e=this.props.controls.filter(e=>"right"!=e.side).map(this.buildControl.bind(this)),t=this.props.controls.filter(e=>"right"==e.side).map(this.buildControl.bind(this));return O.createElement("div",{id:"bd-editor-panel",className:this.props.theme},O.createElement("div",{id:"bd-editor-controls"},O.createElement("div",{className:"controls-section controls-left"},e),O.createElement("div",{className:"controls-section controls-right"},t)),O.createElement("div",{className:"editor-wrapper"},O.createElement("div",{id:this.props.id,className:"editor "+this.props.theme},this.props.value)))}}class X extends O.Component{render(){const e=this.props.size||"24px";return O.createElement("svg",{viewBox:"0 0 24 24",style:{width:e,height:e}},O.createElement("path",{fill:"none",d:"M0 0h24v24H0V0z"}),O.createElement("path",{d:"M17 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V7l-4-4zm2 16H5V5h11.17L19 7.83V19zm-7-7c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3zM6 6h9v4H6z"}))}}class ee extends O.Component{render(){const e=this.props.size||"24px";return O.createElement("svg",{viewBox:"0 0 24 24",fill:"#FFFFFF",style:{width:e,height:e},onClick:this.props.onClick},O.createElement("path",{d:"M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34c-.39-.39-1.02-.39-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z"}),O.createElement("path",{d:"M0 0h24v24H0z",fill:"none"}))}}class te extends O.Component{render(){const e=this.props.size||"20px";return O.createElement("svg",{viewBox:"0 0 20 20",style:{width:e,height:e}},O.createElement("path",{fill:"none",d:"M0 0h20v20H0V0z"}),O.createElement("path",{d:"M15.95 10.78c.03-.25.05-.51.05-.78s-.02-.53-.06-.78l1.69-1.32c.15-.12.19-.34.1-.51l-1.6-2.77c-.1-.18-.31-.24-.49-.18l-1.99.8c-.42-.32-.86-.58-1.35-.78L12 2.34c-.03-.2-.2-.34-.4-.34H8.4c-.2 0-.36.14-.39.34l-.3 2.12c-.49.2-.94.47-1.35.78l-1.99-.8c-.18-.07-.39 0-.49.18l-1.6 2.77c-.1.18-.06.39.1.51l1.69 1.32c-.04.25-.07.52-.07.78s.02.53.06.78L2.37 12.1c-.15.12-.19.34-.1.51l1.6 2.77c.1.18.31.24.49.18l1.99-.8c.42.32.86.58 1.35.78l.3 2.12c.04.2.2.34.4.34h3.2c.2 0 .37-.14.39-.34l.3-2.12c.49-.2.94-.47 1.35-.78l1.99.8c.18.07.39 0 .49-.18l1.6-2.77c.1-.18.06-.39-.1-.51l-1.67-1.32zM10 13c-1.65 0-3-1.35-3-3s1.35-3 3-3 3 1.35 3 3-1.35 3-3 3z"}))}}class se extends O.Component{constructor(e){super(e),this.hasUnsavedChanges=!1,this.onChange=this.onChange.bind(this),this.save=this.save.bind(this),this.openNative=this.openNative.bind(this),this.update=this.update.bind(this),this.controls=[{label:O.createElement(X,{size:"18px"}),tooltip:k.CustomCSS.save,onClick:this.save},{label:O.createElement(ee,{size:"18px"}),tooltip:k.CustomCSS.openNative,onClick:this.openNative},{label:O.createElement(te,{size:"18px"}),tooltip:k.CustomCSS.settings,onClick:"showSettings"}]}update(){this.forceUpdate()}updateEditor(e){this.editor&&(this.editor.value=e)}get value(){return this.editor.session.getValue()}set value(e){this.editor.setValue(e)}showSettings(){return this.editor.keyBinding.$defaultHandler.commands.showSettingsMenu.exec(this.editor)}resize(){return this.editor.resize()}setEditorRef(e){this.editor=e,this.props.editorRef&&void 0!==this.props.editorRef.current?this.props.editorRef.current=e:this.props.editorRef&&(this.props.editorRef=e)}render(){return O.createElement(K,{ref:this.setEditorRef.bind(this),language:this.props.language,id:this.props.id||"bd-addon-editor",controls:this.controls,value:this.props.content,onChange:this.onChange})}onChange(){this.hasUnsavedChanges=!0}save(e,t){this.hasUnsavedChanges=!1,this.props.save&&this.props.save(t)}openNative(){this.props.openNative&&this.props.openNative()}}class ne{static get width(){return Math.max(document.documentElement.clientWidth,window.innerWidth||0)}static get height(){return Math.max(document.documentElement.clientHeight,window.innerHeight||0)}}class ie extends O.Component{render(){return O.createElement("svg",{viewBox:"0 0 12 12",style:{width:"18px",height:"18px"}},O.createElement("g",{className:"background",fill:"none",fillRule:"evenodd"},O.createElement("path",{d:"M0 0h12v12H0"}),O.createElement("path",{className:"fill",fill:"#dcddde",d:"M9.5 3.205L8.795 2.5 6 5.295 3.205 2.5l-.705.705L5.295 6 2.5 8.795l.705.705L6 6.705 8.795 9.5l.705-.705L6.705 6"})))}}class oe extends O.Component{render(){const e=this.props.size||"24px";return O.createElement("svg",{className:this.props.className||"",fill:"#FFFFFF",viewBox:"0 0 24 24",style:{width:e,height:e},onClick:this.props.onClick},O.createElement("path",{fill:"none",d:"M0 0h24v24H0V0z"}),O.createElement("path",{d:"M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h-3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z"}))}}class re extends O.Component{constructor(e){super(e),this.state={modalOpen:!1},this.offX=0,this.offY=0,this.maxX=this.props.maxX||ne.width,this.maxY=this.props.maxY||ne.height,this.minX=this.props.minX||0,this.minY=this.props.minY||0,this.titlebar=O.createRef(),this.window=O.createRef(),this.close=this.close.bind(this),this.maximize=this.maximize.bind(this),this.onDrag=this.onDrag.bind(this),this.onDragStart=this.onDragStart.bind(this),this.onDragStop=this.onDragStop.bind(this),this.onResizeStart=this.onResizeStart.bind(this)}componentDidMount(){this.window.current.addEventListener("mousedown",this.onResizeStart,!1),this.titlebar.current.addEventListener("mousedown",this.onDragStart,!1),document.addEventListener("mouseup",this.onDragStop,!1)}onResizeStart(){this.currentWidth=this.window.current.offsetWidth,this.currentHeight=this.window.current.offsetHeight}onDragStop(){document.removeEventListener("mousemove",this.onDrag,!0);const e=this.window.current.offsetWidth,t=this.window.current.offsetHeight;if(e!=this.currentWidth||t!=this.currentHeight){this.props.onResize&&this.props.onResize();const s=parseInt(this.window.current.style.left),n=parseInt(this.window.current.style.top);s+e>=this.maxX&&(this.window.current.style.width=this.maxX-s+"px"),n+t>=this.maxY&&(this.window.current.style.height=this.maxY-n+"px")}this.currentWidth=e,this.currentHeight=t}onDragStart(e){const t=this.window.current;this.offY=e.clientY-parseInt(t.offsetTop),this.offX=e.clientX-parseInt(t.offsetLeft),document.addEventListener("mousemove",this.onDrag,!0)}onDrag(e){const t=this.window.current;let s=e.clientY-this.offY;s<=this.minY&&(s=this.minY),s+this.currentHeight>=this.maxY&&(s=this.maxY-this.currentHeight);let n=e.clientX-this.offX;n<=this.minX&&(n=this.minX),n+this.currentWidth>=this.maxX&&(n=this.maxX-this.currentWidth),t.style.top=s+"px",t.style.left=n+"px"}componentWillUnmount(){this.titlebar.current.removeEventListener("mousedown",this.onDragStart,!1),document.removeEventListener("mouseup",this.onDragStop,!1)}render(){const e=this.props.center?ne.height/2-this.props.height/2:this.props.top,t=this.props.center?ne.width/2-this.props.width/2:this.props.left,s=`floating-window${" "+this.props.className||""}${this.props.resizable?" resizable":""}${this.state.modalOpen?" modal-open":""}`,n={height:this.props.height,width:this.props.width,left:t||0,top:e||0};return O.createElement("div",{id:this.props.id,className:s,ref:this.window,style:n},O.createElement("div",{className:"floating-window-titlebar",ref:this.titlebar},O.createElement("span",{className:"title"},this.props.title),O.createElement("div",{className:"floating-window-buttons"},O.createElement("div",{className:"button maximize-button",onClick:this.maximize},O.createElement(oe,{size:"18px"})),O.createElement("div",{className:"button close-button",onClick:this.close},O.createElement(ie,null)))),O.createElement("div",{className:"floating-window-content"},this.props.children))}maximize(){this.window.current.style.width="100%",this.window.current.style.height="100%",this.props.onResize&&this.props.onResize();const e=this.window.current.offsetWidth,t=this.window.current.offsetHeight,s=parseInt(this.window.current.style.left)+e;parseInt(this.window.current.style.top)+t>this.maxY&&(this.window.current.style.top=this.maxY-t+"px"),s>this.maxX&&(this.window.current.style.left=this.maxX-e+"px");const n=parseInt(this.window.current.style.left),i=parseInt(this.window.current.style.top);if(i{W.showConfirmationModal(k.Modals.confirmAction,this.props.confirmationText,{danger:!0,confirmText:k.Modals.close,onConfirm:()=>{e(!0)},onCancel:()=>{e(!1)}})})}}function ae(){return(ae=Object.assign||function(e){for(var t=1;t div[class*="app-"]');return e?e.offsetTop:0}render(){return this.state.windows.map(e=>O.createElement(re,ae({},e,{close:this.close.bind(this,e.id),minY:this.minY}),e.children))}open(e){this.setState({windows:[...this.state.windows,e]})}close(e){this.setState({windows:this.state.windows.filter(t=>(t.id==e&&t.onClose&&t.onClose(),t.id!=e))})}static get id(){return"floating-windows"}static get root(){if(this._root)return this._root;const e=document.createElement("div");return e.id=this.id,document.body.append(e),this._root=e}}var de=le;class ce{static initialize(){const e=O.createRef(),t=O.createElement(de,{ref:e}),s=O.createElement(g.getByProps("AppReferencePositionLayer").AppLayerProvider().props.layerContext.Provider,{value:[document.querySelector("#app-mount > .layerContainer-yqaFcK")]},t),n=h.createElement('
');C.bdBody.append(n),R.render(s,n),this.ref=e}static open(e){return this.ref||this.initialize(),this.ref.current.open(e)}}const he=f.React,ue=s(1),pe=s(2),me=s(4).Module;me.globalPaths.push(ue.resolve(s(0).remote.app.getAppPath(),"node_modules"));const ge=/[^\S\r\n]*?\r?(?:\r\n|\n)[^\S\r\n]*?\*[^\S\r\n]?/,fe=/^\\@/,ye=function(e){return 65279===e.charCodeAt(0)&&(e=e.slice(1)),e};class be{get name(){return""}get moduleExtension(){return""}get extension(){return""}get addonFolder(){return""}get language(){return""}get prefix(){return"addon"}get collection(){return"settings"}get category(){return"addons"}get id(){return"autoReload"}emit(e,...t){return E.emit(`${this.prefix}-${e}`,...t)}constructor(){this.timeCache={},this.addonList=[],this.state={}}initialize(){return this.originalRequire=me._extensions[this.moduleExtension],me._extensions[this.moduleExtension]=this.getAddonRequire(),T.on(this.collection,this.category,this.id,e=>{e?this.watchAddons():this.unwatchAddons()}),this.loadAllAddons()}initializeAddon(){}getFileModification(e,t){return t}startAddon(){}stopAddon(){}loadState(){const e=w.getData(this.prefix+"s");e&&Object.assign(this.state,e)}saveState(){w.setData(this.prefix+"s",this.state)}watchAddons(){if(this.watcher)return c.error(this.name,`Already watching ${this.prefix} addons.`);c.log(this.name,`Starting to watch ${this.prefix} addons.`),this.watcher=pe.watch(this.addonFolder,{persistent:!1},async(e,t)=>{if(e&&t&&t.endsWith(this.extension)){await new Promise(e=>setTimeout(e,100));try{const s=pe.statSync(ue.resolve(this.addonFolder,t));if(!s.isFile())return;if(!s||!s.mtime||!s.mtime.getTime())return;if("number"!=typeof s.mtime.getTime())return;if(this.timeCache[t]==s.mtime.getTime())return;this.timeCache[t]=s.mtime.getTime(),"rename"==e&&this.loadAddon(t,!0),"change"==e&&this.reloadAddon(t,!0)}catch(e){if("ENOENT"!==e.code)return;delete this.timeCache[t],this.unloadAddon(t,!0)}}})}unwatchAddons(){if(!this.watcher)return c.error(this.name,`Was not watching ${this.prefix} addons.`);this.watcher.close(),delete this.watcher,c.log(this.name,`No longer watching ${this.prefix} addons.`)}extractMeta(e){const t=e.split("\n")[0];if(t.includes("//META"))return this.parseOldMeta(e);if(t.includes("/**"))return this.parseNewMeta(e);throw new G("META was not found.")}parseOldMeta(e){const t=e.split("\n")[0],s=t.substring(t.lastIndexOf("//META")+6,t.lastIndexOf("*//")),n=u.testJSON(s);if(!n)throw new G("META could not be parsed.");if(!n.name)throw new G("META missing name data.");return n.format="json",n}parseNewMeta(e){const t=e.split("/**",2)[1].split("*/",1)[0],s={};let n="",i="";for(const e of t.split(ge))if(0!==e.length)if("@"===e.charAt(0)&&" "!==e.charAt(1)){s[n]=i;const t=e.indexOf(" ");n=e.substr(1,t-1),i=e.substr(t+1)}else i+=" "+e.replace("\\n","\n").replace(fe,"@");return s[n]=i.trim(),delete s[""],s.format="jsdoc",s}getAddonRequire(){const e=this,t=this.originalRequire;return function(s,n){const i=ue.resolve(e.addonFolder,ue.basename(n));if(!pe.existsSync(i)||n!==pe.realpathSync(i))return Reflect.apply(t,this,arguments);let o=pe.readFileSync(n,"utf8");o=ye(o);const r=pe.statSync(n),a=e.extractMeta(o);a.author||(a.author=k.Addons.unknownAuthor),a.version||(a.version="???"),a.description||(a.description=k.Addons.noDescription),a.id=a.name,a.filename=ue.basename(n),a.added=r.atimeMs,a.modified=r.mtimeMs,a.size=r.size,o=e.getFileModification(s,o,a),s._compile(o,n)}}loadAddon(e,t=!1){if(void 0===e)return;try{require(ue.resolve(this.addonFolder,e))}catch(n){return new _(e,e,"Could not be compiled.",{message:n.message,stack:n.stack})}const s=require(ue.resolve(this.addonFolder,e));if(this.addonList.find(e=>e.id==s.id))return new _(s.name,e,"There is already a plugin with name "+s.name);const n=this.initializeAddon(s);return n||(this.addonList.push(s),t&&q.success(`${s.name} v${s.version} was loaded.`),this.emit("loaded",s.id),this.state[s.id]?this.startAddon(s):this.state[s.id]=!1)}unloadAddon(e,t=!0,s=!1){const n="string"==typeof e?this.addonList.find(t=>t.id==e||t.filename==e):e;return!!n&&(this.state[n.id]&&(s?this.stopAddon(n):this.disableAddon(n)),delete require.cache[require.resolve(ue.resolve(this.addonFolder,n.filename))],this.addonList.splice(this.addonList.indexOf(n),1),this.emit("unloaded",n.id),t&&q.success(n.name+" was unloaded."),!0)}reloadAddon(e,t=!0){const s="string"==typeof e?this.addonList.find(t=>t.id==e||t.filename==e):e,n=this.unloadAddon(s,t,!0);return n?this.loadAddon(s.filename,t):n}isLoaded(e){return!!this.addonList.find(t=>t.id==e||t.filename==e)}isEnabled(e){const t=this.addonList.find(t=>t.id==e||t.filename==e);return!!t&&this.state[t.id]}getAddon(e){return this.addonList.find(t=>t.id==e||t.filename==e)}enableAddon(e){const t="string"==typeof e?this.addonList.find(t=>t.id==e):e;t&&(this.state[t.id]||(this.state[t.id]=!0,this.startAddon(t),this.saveState()))}disableAddon(e){const t="string"==typeof e?this.addonList.find(t=>t.id==e):e;t&&this.state[t.id]&&(this.state[t.id]=!1,this.stopAddon(t),this.saveState())}toggleAddon(e){this.state[e]?this.disableAddon(e):this.enableAddon(e)}loadNewAddons(){const e=pe.readdirSync(this.addonFolder),t=this.addonList.filter(t=>!e.includes(t.filename)).map(e=>e.id);return{added:e.filter(e=>!this.addonList.find(t=>t.filename==e)&&e.endsWith(this.extension)&&pe.statSync(ue.resolve(this.addonFolder,e)).isFile()),removed:t}}updateList(){const e=this.loadNewAddons();for(const t of e.added)this.loadAddon(t);for(const t of e.removed)this.unloadAddon(t)}loadAllAddons(){this.loadState();const e=[],t=pe.readdirSync(this.addonFolder);for(const s of t){if(!pe.statSync(ue.resolve(this.addonFolder,s)).isFile()||!s.endsWith(this.extension))continue;const t=this.loadAddon(s,!1);t instanceof _&&e.push(t)}return this.saveState(),T.get(this.collection,this.category,this.id)&&this.watchAddons(),e}deleteAddon(e){const t="string"==typeof e?this.addonList.find(t=>t.id==e||t.filename==e):e;return pe.unlinkSync(ue.resolve(this.addonFolder,t.filename))}saveAddon(e,t){const s="string"==typeof e?this.addonList.find(t=>t.id==e||t.filename==e):e;return pe.writeFileSync(ue.resolve(this.addonFolder,s.filename),t)}editAddon(e,t){const n="string"==typeof e?this.addonList.find(t=>t.id==e||t.filename==e):e,i=ue.resolve(this.addonFolder,n.filename);return void 0===t&&(t="system"==T.get("settings","addons","editAction")),t?s(0).shell.openItem(""+i):this.openDetached(n)}openDetached(e){const t=ue.resolve(this.addonFolder,e.filename),s=pe.readFileSync(t).toString(),n=he.createRef(),i=he.createElement(se,{id:"bd-floating-editor-"+e.name,ref:n,content:s,save:this.saveAddon.bind(this,e),openNative:this.editAddon.bind(this,e,!0),language:this.language});ce.open({onClose:()=>{this.isDetached=!1},onResize:()=>{n&&n.current&&n.current.resize&&n.current.resize()},title:e.name,id:s.id,className:"floating-addon-window",height:470,width:410,center:!0,resizable:!0,children:i,confirmClose:()=>!(!n||!n.current)&&n.current.hasUnsavedChanges,confirmationText:k.Addons.confirmationText.format({name:e.name})})}}class ve extends O.Component{constructor(e){super(e)}render(){const e=this.props.isGroup?"bd-settings-title bd-settings-group-title h5-18_1nd title-3sZWYQ size12-3R0845 height16-2Lv3qA weightSemiBold-NJexzi da-h5 da-title da-size12 da-height16 da-weightSemiBold marginBottom4-2qk4Hy da-marginBottom4 marginTop8-1DLZ1n da-marginTop8":"bd-settings-title h2-2gWE-o title-3sZWYQ size16-14cGz5 height20-mO2eIN weightSemiBold-NJexzi defaultColor-1_ajX0 defaultMarginh2-2LTaUL marginBottom20-32qID7",t=this.props.className?`${e} ${this.props.className}`:e;return O.createElement("h2",{className:t,onClick:()=>{this.props.onClick&&this.props.onClick()}},this.props.text,this.props.button&&O.createElement("button",{className:"bd-button bd-button-title",onClick:this.props.button.onClick},this.props.button.title),this.props.otherChildren)}}class we extends O.Component{render(){const e=this.props.size||"24px";return O.createElement("svg",{className:this.props.className||"",onClick:this.props.onClick,fill:"#dcddde",viewBox:"0 0 24 24",style:{width:e,height:e}},O.createElement("path",{d:"M17.65 6.35C16.2 4.9 14.21 4 12 4c-4.42 0-7.99 3.58-7.99 8s3.57 8 7.99 8c3.73 0 6.84-2.55 7.73-6h-2.08c-.82 2.33-3.04 4-5.65 4-3.31 0-6-2.69-6-6s2.69-6 6-6c1.66 0 3.14.69 4.22 1.78L13 11h7V4l-2.35 2.35z"}),O.createElement("path",{fill:"none",d:"M0 0h24v24H0z"}))}}class Ce extends O.Component{render(){const e=this.props.size||"24px";return O.createElement("svg",{className:this.props.className||"",fill:"#FFFFFF",viewBox:"0 0 24 24",style:{width:e,height:e},onClick:this.props.onClick},O.createElement("path",{fill:"none",d:"M0 0h24v24H0V0z"}),O.createElement("path",{d:"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zm2.46-7.12l1.41-1.41L12 12.59l2.12-2.12 1.41 1.41L13.41 14l2.12 2.12-1.41 1.41L12 15.41l-2.12 2.12-1.41-1.41L10.59 14l-2.13-2.12zM15.5 4l-1-1h-5l-1 1H5v2h14V4z"}),O.createElement("path",{fill:"none",d:"M0 0h24v24H0z"}))}}class Se extends O.Component{constructor(e){super(e),this.state={checked:this.props.checked},this.onChange=this.onChange.bind(this)}onChange(){this.props.disabled||(this.props.onChange(!this.state.checked),this.setState({checked:!this.state.checked}))}render(){const e=this.props.disabled?" bd-switch-disabled":"",t=this.state.checked?" bd-switch-checked":"";return O.createElement("div",{className:"bd-switch"+e+t},O.createElement("input",{type:"checkbox",id:this.props.id,className:"bd-checkbox",disabled:this.props.disabled,checked:this.state.checked,onChange:this.onChange}))}}var Ee=s(0);class Me extends O.Component{constructor(e){super(e),this.state={hasError:!1}}componentDidCatch(){this.setState({hasError:!0})}render(){return this.state.hasError?O.createElement("div",{onClick:()=>Ee.remote.getCurrentWindow().openDevTools(),className:"react-error"},"There was an unexpected Error. Click to open console for more details."):this.props.children}}const xe=Me.prototype.render;function Ne(){return(Ne=Object.assign||function(e){for(var t=1;txe});const Pe=g.getByDisplayName("Tooltip");class De extends O.Component{constructor(e){super(e),this.state={settingsOpen:!1},this.settingsPanel="",this.panelRef=O.createRef(),this.onChange=this.onChange.bind(this),this.reload=this.reload.bind(this),this.showSettings=this.showSettings.bind(this),this.closeSettings=this.closeSettings.bind(this)}reload(){this.props.reload&&(this.props.addon=this.props.reload(this.props.addon.id),this.forceUpdate())}componentDidUpdate(){this.state.settingsOpen&&(this.settingsPanel instanceof Node&&this.panelRef.current.appendChild(this.settingsPanel),setImmediate(()=>{const e=this.panelRef.current,t=e.closest(".scrollerBase-289Jih");if(!t||!((e,t)=>{const s=e.scrollTop,n=s+e.clientHeight,i=t.offsetTop,o=i+t.clientHeight;return in})(t,e))return;const s=h.offset(e),n=h.offset(t),i=t.scrollTop,o=s.top-n.top+t.scrollTop-30;h.animate({duration:300,update:function(e){t.scrollTop=o>i?i+e*(o-i):i-e*(i-o)}})}))}getString(e){return"string"==typeof e?e:e.toString()}onChange(){this.props.onChange&&this.props.onChange(this.props.addon.id),this.props.enabled=!this.props.enabled,this.forceUpdate()}showSettings(){this.props.hasSettings&&this.setState({settingsOpen:!0})}closeSettings(){this.settingsPanel instanceof Node&&(this.panelRef.current.innerHTML=""),this.setState({settingsOpen:!1})}buildTitle(e,t,s){const n=k.Addons.title.split(/({{[A-Za-z]+}})/),i=n.findIndex(e=>"{{name}}"==e);i&&(n[i]=O.createElement("span",{className:"bd-name"},e));const o=n.findIndex(e=>"{{version}}"==e);i&&(n[o]=O.createElement("span",{className:"bd-version"},t));const r=n.findIndex(e=>"{{author}}"==e);return i&&(n[r]=O.createElement("span",{className:"bd-author"},s)),n.flat()}get settingsComponent(){const e=this.props.addon,t=this.getString(e.name);try{this.settingsPanel=this.props.getSettingsPanel()}catch(e){c.stacktrace("Addon Settings","Unable to get settings panel for "+t+".",e)}const s={id:t+"-settings",className:"addon-settings",ref:this.panelRef};"string"==typeof this.settingsPanel&&(c.warn("Addon Settings","Using a DOMString is officially deprecated."),s.dangerouslySetInnerHTML=this.settingsPanel);let n=null;return"function"==typeof this.settingsPanel&&(n=O.createElement(this.settingsPanel,null)),this.settingsPanel.$$typeof&&this.settingsPanel.$$typeof===Symbol.for("react.element")&&(n=this.settingsPanel),O.createElement("div",{className:"bd-addon-card settings-open bd-switch-item"},O.createElement("div",{className:"bd-close",onClick:this.closeSettings},O.createElement(ie,null)),O.createElement("div",s,O.createElement(Me,null,n)))}buildLink(e){const t=this.props.addon[e];if(!t)return null;const s=O.createElement("a",{className:"bd-link bd-link-website",href:t,target:"_blank",rel:"noopener noreferrer"},k.Addons[e]);return"invite"==e&&(s.props.onClick=function(e){e.preventDefault(),e.stopPropagation();let s=t;const n=/\.gg\/(.*)$/;n.test(s)&&(s=s.match(n)[1]),f.LayerStack.popLayer(),f.InviteActions.acceptInviteAndTransitionToInviteChannel(s)}),s}get footer(){const e=["website","source","invite","donate","patreon"];if(!e.some(e=>this.props.addon[e])&&!this.props.hasSettings)return null;const t=e.map(this.buildLink.bind(this)).filter(e=>e);return O.createElement("div",{className:"bd-footer"},O.createElement("span",{className:"bd-links"},t.map((e,s)=>sO.createElement("div",Ne({},e,{className:"bd-addon-button",onClick:s}),t))}render(){if(this.state.settingsOpen)return this.settingsComponent;const e=this.props.addon,t=this.getString(e.name),s=this.getString(e.author),n=this.getString(e.description),i=this.getString(e.version);return O.createElement("div",{id:e.id+"-card",className:"bd-addon-card settings-closed"},O.createElement("div",{className:"bd-addon-header"},O.createElement("span",{className:"bd-title"},this.buildTitle(t,i,s)),O.createElement("div",{className:"bd-controls"},this.props.editAddon&&this.makeButton(k.Addons.editAddon,O.createElement(ee,null),this.props.editAddon),this.props.deleteAddon&&this.makeButton(k.Addons.deleteAddon,O.createElement(Ce,null),this.props.deleteAddon),this.props.showReloadIcon&&this.makeButton(k.Addons.reload,O.createElement(we,{className:"bd-reload bd-reload-card"}),this.reload),O.createElement(Se,{checked:this.props.enabled,onChange:this.onChange}))),O.createElement("div",{className:"bd-description-wrap scroller-wrap fade"},O.createElement("div",{className:"bd-description scroller"},n)),this.footer)}}const Ae=De.prototype.render;Object.defineProperty(De.prototype,"render",{enumerable:!1,configurable:!1,set:function(){c.warn("AddonCard","Addon policy for plugins #5 https://github.com/rauenzi/BetterDiscordApp/wiki/Addon-Policies#plugins")},get:()=>Ae});class ke extends O.Component{render(){const e=this.props.size||"16px";return O.createElement("svg",{className:this.props.className||"",fill:"#FFFFFF",viewBox:"0 0 24 24",style:{width:e,height:e}},O.createElement("path",{d:"M8.12 9.29L12 13.17l3.88-3.88c.39-.39 1.02-.39 1.41 0 .39.39.39 1.02 0 1.41l-4.59 4.59c-.39.39-1.02.39-1.41 0L6.7 10.7c-.39-.39-.39-1.02 0-1.41.39-.38 1.03-.39 1.42 0z"}))}}class Te extends O.Component{constructor(e){super(e),this.state={open:!1,value:this.props.value||this.props.options[0].value},this.dropdown=O.createRef(),this.onChange=this.onChange.bind(this),this.showMenu=this.showMenu.bind(this),this.hideMenu=this.hideMenu.bind(this)}showMenu(e){e.preventDefault(),this.setState({open:!0},()=>{document.addEventListener("click",this.hideMenu)})}hideMenu(){this.setState({open:!1},()=>{document.removeEventListener("click",this.hideMenu)})}onChange(e){this.setState({value:e}),this.props.onChange&&this.props.onChange(e)}get selected(){return this.props.options.find(e=>e.value==this.state.value)}get options(){const e=this.selected;return O.createElement("div",{className:"bd-select-options"},this.props.options.map(t=>O.createElement("div",{className:"bd-select-option"+(e.value==t.value?" selected":""),onClick:this.onChange.bind(this,t.value)},t.label)))}render(){const e="transparent"==this.props.style?" bd-select-transparent":"",t=this.state.open?" menu-open":"";return O.createElement("div",{className:`bd-select${e}${t}`,onClick:this.showMenu,ref:this.dropdown},O.createElement("div",{className:"bd-select-value"},this.selected.label),O.createElement(ke,{className:"bd-select-arrow"}),this.state.open&&this.options)}}class Le extends O.Component{render(){const e=this.props.size||"16px";return O.createElement("svg",{className:this.props.className||"",fill:"#FFFFFF",viewBox:"0 0 24 24",style:{width:e,height:e}},O.createElement("path",{fill:"none",d:"M0 0h24v24H0V0z"}),O.createElement("path",{d:"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"}))}}class je extends O.Component{render(){return O.createElement("div",{className:"bd-search-wrapper"},O.createElement("input",{onChange:this.props.onChange,onKeyDown:this.props.onKeyDown,type:"text",className:"bd-search",placeholder:this.props.placeholder,maxLength:"50"}),O.createElement(Le,null))}}class Be extends O.Component{constructor(e){super(e),this.state={sort:"name",ascending:!0,query:""},this.sort=this.sort.bind(this),this.reverse=this.reverse.bind(this),this.search=this.search.bind(this),this.update=this.update.bind(this)}componentDidMount(){E.on(this.props.prefix+"-loaded",this.update),E.on(this.props.prefix+"-unloaded",this.update)}componentWillUnmount(){E.off(this.props.prefix+"-loaded",this.update),E.off(this.props.prefix+"-unloaded",this.update)}update(){this.forceUpdate()}reload(){this.props.refreshList&&this.props.refreshList(),this.forceUpdate()}reverse(e){this.setState({ascending:e})}sort(e){this.setState({sort:e})}search(e){this.setState({query:e.target.value.toLocaleLowerCase()})}get sortOptions(){return[{label:k.Addons.name,value:"name"},{label:k.Addons.author,value:"author"},{label:k.Addons.version,value:"version"},{label:k.Addons.added,value:"added"},{label:k.Addons.modified,value:"modified"}]}get directions(){return[{label:k.Sorting.ascending,value:!0},{label:k.Sorting.descending,value:!1}]}render(){const{title:e,folder:t,addonList:n,addonState:i,onChange:o,reload:r}=this.props,a=!T.get("settings","addons","autoReload"),l=t?{title:k.Addons.openFolder.format({type:e}),onClick:()=>{const e=s(0).shell;(e.openItem||e.openPath)(t)}}:null,d=n.sort((e,t)=>{const s=e[this.state.sort],n=t[this.state.sort];return"string"==typeof s?s.toLocaleLowerCase().localeCompare(n.toLocaleLowerCase()):s>n?1:n>s?-1:0});return this.state.ascending||d.reverse(),[O.createElement(ve,{key:"title",text:e,button:l,otherChildren:a&&O.createElement(we,{className:"bd-reload",onClick:this.reload.bind(this)})}),O.createElement("div",{className:"bd-controls bd-addon-controls"},O.createElement(je,{onChange:this.search,placeholder:k.Addons.search.format({type:this.props.title})+"..."}),O.createElement("div",{className:"bd-addon-dropdowns"},O.createElement("div",{className:"bd-select-wrapper"},O.createElement("label",{className:"bd-label"},k.Sorting.sortBy,":"),O.createElement(Te,{options:this.sortOptions,onChange:this.sort,style:"transparent"})),O.createElement("div",{className:"bd-select-wrapper"},O.createElement("label",{className:"bd-label"},k.Sorting.order,":"),O.createElement(Te,{options:this.directions,onChange:this.reverse,style:"transparent"})))),O.createElement("div",{key:"addonList",className:"bd-addon-list"},d.map(e=>{if(this.state.query){let t=e.name.toLocaleLowerCase().includes(this.state.query);if(t=t||e.author.toLocaleLowerCase().includes(this.state.query),t=t||e.description.toLocaleLowerCase().includes(this.state.query),!t)return null}const t=e.type&&"function"==typeof e.plugin.getSettingsPanel,s=t&&e.plugin.getSettingsPanel.bind(e.plugin);return O.createElement(Me,null,O.createElement(De,{editAddon:this.editAddon.bind(this,e.id),deleteAddon:this.deleteAddon.bind(this,e.id),showReloadIcon:a,key:e.id,enabled:i[e.id],addon:e,onChange:o,reload:r,hasSettings:t,getSettingsPanel:s}))}))]}editAddon(e){this.props.editAddon&&this.props.editAddon(e)}async deleteAddon(e){const t=this.props.addonList.find(t=>t.id==e);await this.confirmDelete(t)&&this.props.deleteAddon&&this.props.deleteAddon(t)}confirmDelete(e){return new Promise(t=>{W.showConfirmationModal(k.Modals.confirmAction,k.Addons.confirmDelete.format({name:e.name}),{danger:!0,confirmText:k.Addons.deleteAddon,onConfirm:()=>{t(!0)},onCancel:()=>{t(!1)}})})}}const Ie=Be.prototype.render;Object.defineProperty(Be.prototype,"render",{enumerable:!1,configurable:!1,set:function(){c.warn("AddonList","Addon policy for plugins #5 https://github.com/rauenzi/BetterDiscordApp/wiki/Addon-Policies#plugins")},get:()=>Ie});class ze extends O.Component{render(){return O.createElement("div",{className:"bd-divider divider-3573oO marginTop8-1DLZ1n marginBottom40-2vIwTv"})}}class Fe extends O.Component{render(){return O.createElement("div",{className:"bd-setting-item"},O.createElement("div",{className:"bd-setting-header"},O.createElement("label",{htmlFor:this.props.id,className:"bd-setting-title"},this.props.name),this.props.children),O.createElement("div",{className:"bd-setting-note"},this.props.note),O.createElement("div",{className:"bd-setting-divider"}))}}class Oe extends O.Component{constructor(e){if(super(e),this.props.button&&this.props.collapsible){const e=this.props.button.onClick;this.props.button.onClick=t=>{t.stopPropagation(),e(...arguments)}}this.props.hasOwnProperty("shown")||(this.props.shown=!0),this.container=O.createRef(),this.state={collapsed:this.props.collapsible&&!this.props.shown},this.onChange=this.onChange.bind(this),this.toggleCollapse=this.toggleCollapse.bind(this)}toggleCollapse(){const e=this.container.current,t=this.state.collapsed?300:1;e.style.setProperty("height",e.scrollHeight+"px"),e.classList.add("animating"),this.setState({collapsed:!this.state.collapsed},()=>setTimeout(()=>{e.style.setProperty("height",""),e.classList.remove("animating")},t)),this.props.onDrawerToggle&&this.props.onDrawerToggle(this.state.collapsed)}onChange(e,t){this.props.onChange&&(this.props.id?this.props.onChange(this.props.id,e,t):this.props.onChange(e,t),this.forceUpdate())}render(){const{settings:e}=this.props,t="bd-settings-group "+(this.props.collapsible?"collapsible "+(this.state.collapsed?"collapsed":"expanded"):"");return O.createElement("div",{className:t},O.createElement(ve,{text:this.props.name,collapsible:this.props.collapsible,onClick:this.toggleCollapse,button:this.props.button,isGroup:!0}),O.createElement("div",{className:"bd-settings-container",ref:this.container},e.filter(e=>!e.hidden).map(e=>{let t=null;return"dropdown"==e.type&&(t=O.createElement(Te,{disabled:e.disabled,id:e.id,options:e.options,value:e.value,onChange:this.onChange.bind(this,e.id)})),"switch"==e.type&&(t=O.createElement(Se,{disabled:e.disabled,id:e.id,checked:e.value,onChange:this.onChange.bind(this,e.id)})),t?O.createElement(Fe,{id:e.id,key:e.id,name:e.name,note:e.note},t):null})),this.props.showDivider&&O.createElement(ze,null))}}const Re=Oe.prototype.render;Object.defineProperty(Oe.prototype,"render",{enumerable:!1,configurable:!1,set:function(){c.warn("Group","Addon policy for plugins #5 https://github.com/rauenzi/BetterDiscordApp/wiki/Addon-Policies#plugins")},get:()=>Re});class Ue extends O.Component{render(){const e=this.props.size||"18px";return O.createElement("svg",{viewBox:"0 0 24 24",fill:"#FFFFFF",className:this.props.className||"",style:{width:e,height:e},onClick:this.props.onClick},O.createElement("path",{d:"M0 0h24v24H0z",fill:"none"}),O.createElement("path",{d:"M13 3c-4.97 0-9 4.03-9 9H1l3.89 3.89.07.14L9 12H6c0-3.87 3.13-7 7-7s7 3.13 7 7-3.13 7-7 7c-1.93 0-3.68-.79-4.94-2.06l-1.42 1.42C8.27 19.99 10.51 21 13 21c4.97 0 9-4.03 9-9s-4.03-9-9-9zm-1 5v5l4.28 2.54.72-1.21-3.5-2.08V8H12z"}))}}function He(){return(He=Object.assign||function(e){for(var t=1;te.Header&&e.Separator&&e.Item),$e=g.getByDisplayName("Tooltip");class We extends O.Component{constructor(e){super(e)}render(){return O.createElement("div",{className:"bd-sidebar-header"},O.createElement(qe.Header,null,"BandagedBD"),O.createElement($e,{color:"black",position:"top",text:"Changelog"},e=>O.createElement("div",He({},e,{className:"bd-changelog-button",onClick:()=>W.showChangelogModal(l)}),O.createElement(Ue,{className:"bd-icon",size:"16px"}))))}}var _e=new class{constructor(){this.patchSections(),E.on("strings-updated",this.forceUpdate)}onDrawerToggle(e,t,s){const n=w.getBDData("drawerStates")||{};n[e]||(n[e]={}),n[e][t]=s,w.setBDData("drawerStates",n)}getDrawerState(e,t,s){const n=w.getBDData("drawerStates")||{};return n[e]&&n[e].hasOwnProperty(t)?n[e][t]:s}onChange(e){return(t,s,n)=>{const i=T.collections.length+T.panels.length;e(t,s,n);i!=T.collections.length+T.panels.length&&setTimeout(this.forceUpdate.bind(this),50)}}buildSettingsPanel(e,t,s,n,i,o=null){return s.forEach(e=>{e.settings.forEach(t=>t.value=n[e.id][t.id])}),this.getSettingsPanel(e,t,s,this.onChange(i),o)}getSettingsPanel(e,t,s,n,i=null){return[O.createElement(ve,{text:t,button:i}),s.map(t=>O.createElement(Oe,Object.assign({},t,{onChange:n,onDrawerToggle:s=>this.onDrawerToggle(e,t.id,s),shown:this.getDrawerState(e,t.id,!t.hasOwnProperty("shown")||t.shown)})))]}getAddonPanel(e,t,s,n={}){return O.createElement(Be,Object.assign({},{title:e,addonList:t,addonState:s},n))}async patchSections(){const e=await F.get("UserSettings",e=>e.prototype&&e.prototype.generateSections);L.after("SettingsManager",e.prototype,"render",e=>{e._reactInternalFiber.return.return.return.return.return.return.return.memoizedProps.id="user-settings"}),L.after("SettingsManager",e.prototype,"generateSections",(e,t,s)=>{let n=s.findIndex(e=>"linux"==e.section.toLowerCase())+1;const i=e=>{s.splice(n,0,e),n++};i({section:"DIVIDER"}),i({section:"CUSTOM",element:We});for(const e of T.collections)e.disabled||i({section:e.name,label:e.name,element:()=>this.buildSettingsPanel(e.id,e.name,e.settings,T.state[e.id],T.onSettingChange.bind(T,e.id),e.button?e.button:null)});for(const t of T.panels.sort((e,t)=>e.order>t.order))t.clickListener&&(t.onClick=n=>t.clickListener(e,n,s)),i(t)}),this.forceUpdate()}forceUpdate(){const e=g.getByProps("standardSidebarView").standardSidebarView.split(" ")[0],t=document.querySelector("."+e);if(!t)return;const s=u.findInReactTree(u.getReactInstance(t),e=>e&&e.generateSections,{walkable:["return","stateNode"]});s&&s.forceUpdate()}};const Ge=s(1),Qe=s(0).remote;var Ve=new class extends be{get name(){return"PluginManager"}get moduleExtension(){return".js"}get extension(){return".plugin.js"}get addonFolder(){return Ge.resolve(i.dataPath,"plugins")}get prefix(){return"plugin"}get language(){return"javascript"}constructor(){super(),this.onSwitch=this.onSwitch.bind(this),this.observer=new MutationObserver(e=>{for(let t=0,s=e.length;t_e.getAddonPanel(k.Panels.plugins,this.addonList,this.state,{folder:this.addonFolder,onChange:this.togglePlugin.bind(this),reload:this.reloadPlugin.bind(this),refreshList:this.updatePluginList.bind(this),saveAddon:this.saveAddon.bind(this),editAddon:this.editAddon.bind(this),deleteAddon:this.deleteAddon.bind(this),prefix:this.prefix})}),e}updatePluginList(){return this.updateList()}loadAllPlugins(){return this.loadAllAddons()}enablePlugin(e){return this.enableAddon(e)}disablePlugin(e){return this.disableAddon(e)}togglePlugin(e){return this.toggleAddon(e)}unloadPlugin(e){return this.unloadAddon(e)}loadPlugin(e){const t=this.loadAddon(e);t&&W.showAddonErrors({themes:[t]})}reloadPlugin(e){const t=this.reloadAddon(e);return t&&W.showAddonErrors({plugins:[t]}),"string"==typeof e?this.addonList.find(t=>t.id==e||t.filename==e):e}initializeAddon(e){if(!e.type)return new _(e.name,e.filename,"Plugin had no exports",{message:"Plugin had no exports or no name property.",stack:""});try{const t=new e.type;e.plugin=t,e.name=t.getName()||e.name,e.author=t.getAuthor()||e.author||"No author",e.description=t.getDescription()||e.description||"No description",e.version=t.getVersion()||e.version||"No version";try{"function"==typeof e.plugin.load&&e.plugin.load()}catch(t){return this.state[e.id]=!1,new _(e.name,e.filename,"load() could not be fired.",{message:t.message,stack:t.stack})}}catch(t){return new _(e.name,e.filename,"Could not be constructed.",{message:t.message,stack:t.stack})}}getFileModification(e,t,s){e._compile(t,e.filename);return u.isEmpty(e.exports)?(c.warn(this.name,s.name+", please start assigning module.exports"),t+=`\nmodule.exports = ${JSON.stringify(s)};\nmodule.exports.type = ${s.exports||s.name};`):(s.type=e.exports,e.exports=s,"")}startAddon(e){return this.startPlugin(e)}stopAddon(e){return this.stopPlugin(e)}getAddon(e){return this.getPlugin(e)}startPlugin(e){const t="string"==typeof e?this.addonList.find(t=>t.id==e):e;if(!t)return;const s=t.plugin;try{s.start()}catch(e){return this.state[t.id]=!1,q.error(k.Addons.couldNotStart.format({name:t.name,version:t.version})),c.stacktrace(this.name,t.name+" could not be started.",e),new _(t.name,t.filename,k.Addons.enabled.format({method:"start()"}),{message:e.message,stack:e.stack})}this.emit("started",t.id),q.show(k.Addons.enabled.format({name:t.name,version:t.version}))}stopPlugin(e){const t="string"==typeof e?this.addonList.find(t=>t.id==e):e;if(!t)return;const s=t.plugin;try{s.stop()}catch(e){return this.state[t.id]=!1,q.error(k.Addons.couldNotStop.format({name:t.name,version:t.version})),c.stacktrace(this.name,t.name+" could not be stopped.",e),new _(t.name,t.filename,k.Addons.enabled.format({method:"stop()"}),{message:e.message,stack:e.stack})}this.emit("stopped",t.id),q.show(k.Addons.disabled.format({name:t.name,version:t.version}))}getPlugin(e){const t=this.addonList.find(t=>t.id==e||t.filename==e);if(t)return t.plugin}setupFunctions(){Qe.getCurrentWebContents().on("did-navigate-in-page",this.onSwitch.bind(this)),this.observer.observe(document,{childList:!0,subtree:!0})}onSwitch(){this.emit("page-switch");for(let e=0;e_e.getAddonPanel(k.Panels.themes,this.addonList,this.state,{folder:this.addonFolder,onChange:this.toggleTheme.bind(this),reload:this.reloadTheme.bind(this),refreshList:this.updateThemeList.bind(this),saveAddon:this.saveAddon.bind(this),editAddon:this.editAddon.bind(this),deleteAddon:this.deleteAddon.bind(this),prefix:this.prefix})}),e}updateThemeList(){return this.updateList()}loadAllThemes(){return this.loadAllAddons()}enableTheme(e){return this.enableAddon(e)}disableTheme(e){return this.disableAddon(e)}toggleTheme(e){return this.toggleAddon(e)}unloadTheme(e){return this.unloadAddon(e)}loadTheme(e){const t=this.loadAddon(e);t&&W.showAddonErrors({themes:[t]})}reloadTheme(e){const t=this.reloadAddon(e);t&&W.showAddonErrors({themes:[t]})}getFileModification(e,t,s){return s.css=t,`module.exports = ${JSON.stringify(s)};`}startAddon(e){return this.addTheme(e)}stopAddon(e){return this.removeTheme(e)}addTheme(e){const t="string"==typeof e?this.addonList.find(t=>t.id==e):e;t&&(C.injectTheme(t.id,t.css),q.show(k.Addons.enabled.format({name:t.name,version:t.version})))}removeTheme(e){const t="string"==typeof e?this.addonList.find(t=>t.id==e):e;t&&(C.removeTheme(t.id),q.show(k.Addons.disabled.format({name:t.name,version:t.version})))}};const Je={get React(){return f.React},get ReactDOM(){return f.ReactDOM},get WindowConfigFile(){return""},get settings(){return T.collections},get emotes(){return{}},get version(){return i.version},getAllWindowPreferences:function(){return w.getData("windowprefs")||{}},getWindowPreference:function(e){return this.getAllWindowPreferences()[e]},setWindowPreference:function(e,t){const s=this.getAllWindowPreferences();return s[e]=t,w.setData("windowprefs",s)},injectCSS:function(e,t){C.injectStyle(e,t)},clearCSS:function(e){C.removeStyle(e)},linkJS:function(e,t){return C.injectScript(e,t)},unlinkJS:function(e){C.removeScript(e)},alert:function(e,t){W.alert(e,t)},showConfirmationModal:function(e,t,s={}){return W.showConfirmationModal(e,t,s)},showToast:function(e,t={}){q.show(e,t)},findModule:function(e){return g.getModule(e)},findAllModules:function(e){return g.getModule(e,!1)},findModuleByProps:function(...e){return g.getByProps(...e)},findModuleByPrototypes:function(...e){return g.getByPrototypes(...e)},findModuleByDisplayName:function(e){return g.getByDisplayName(e)},getInternalInstance:function(e){if(e instanceof window.jQuery||e instanceof Element)return e instanceof jQuery&&(e=e[0]),u.getReactInstance(e)},loadData:function(e,t){return w.getPluginData(e,t)}};Je.getData=Je.loadData,Je.saveData=function(e,t,s){return w.setPluginData(e,t,s)},Je.setData=Je.saveData,Je.deleteData=function(e,t){return w.deletePluginData(e,t)},Je.monkeyPatch=function(e,t,s){const{before:n,after:i,instead:o,once:r=!1}=s,a=n?"before":i?"after":o?"instead":"";if(!a)return c.err("BdApi","Must provide one of: after, before, instead");const l={originalMethod:e[t],callOriginalMethod:()=>l.originalMethod.apply(l.thisObject,l.methodArguments)};l.cancelPatch=L[a]("BdApi",e,t,(e,t,n)=>{l.thisObject=e,l.methodArguments=t,l.returnValue=n;try{Reflect.apply(s[a],null,[l]),r&&l.cancelPatch()}catch(e){}})},Je.onRemoved=function(e,t){return u.onRemoved(e,t)},Je.suppressErrors=function(e,t){return u.suppressErrors(e,t)},Je.testJSON=function(e){return u.testJSON(e)},Je.getPlugin=function(e){return c.warn("BdApi","getPlugin is deprecated. Please make use of the addon api (BdApi.Plugins)"),Ve.addonList.find(t=>t.name==e)},Je.isPluginEnabled=function(e){c.warn("BdApi","isPluginEnabled is deprecated. Please make use of the addon api (BdApi.Plugins)");const t=this.getPlugin(e);return!!t&&Ve.isEnabled(t.id)},Je.isThemeEnabled=function(e){c.warn("BdApi","isThemeEnabled is deprecated. Please make use of the addon api (BdApi.Themes)");const t=Ye.addonList.find(t=>t.name==e);return!!t&&Ye.isEnabled(t.id)},Je.isSettingEnabled=function(e,t,s){return T.get(e,t,s)},Je.enableSetting=function(e,t,s){return T.set(e,t,s,!0)},Je.disableSetting=function(e,t,s){return T.set(e,t,s,!1)},Je.toggleSetting=function(e,t,s){return T.set(e,t,s,!T.get(e,t,s))},Je.getBDData=function(e){return w.getBDData(e)},Je.setBDData=function(e,t){return w.setBDData(e,t)};const Ke=e=>new class{get folder(){return e.addonFolder}isEnabled(t){return e.isEnabled(t)}enable(t){return e.enableAddon(t)}disable(t){return e.disableAddon(t)}toggle(t){return e.toggleAddon(t)}reload(t){return e.reloadAddon(t)}get(t){return e.getAddon(t)}getAll(){return e.addonList.map(t=>e.getAddon(t.id))}};Je.Plugins=Ke(Ve),Je.Themes=Ke(Ye),Je.Patcher={patch:(e,t,s,n,i={})=>"string"!=typeof e?c.err("BdApi.Patcher","Parameter 0 of patch must be a string representing the caller"):"before"!==i.type&&"instead"!==i.type&&"after"!==i.type?c.err("BdApi.Patcher","options.type must be one of: before, instead, after"):L.pushChildPatch(e,t,s,n,i),before:(e,t,s,n,i={})=>Je.Patcher.patch(e,t,s,n,Object.assign(i,{type:"before"})),instead:(e,t,s,n,i={})=>Je.Patcher.patch(e,t,s,n,Object.assign(i,{type:"instead"})),after:(e,t,s,n,i={})=>Je.Patcher.patch(e,t,s,n,Object.assign(i,{type:"after"})),unpatchAll:e=>"string"!=typeof e?c.err("BdApi.Patcher","Parameter 0 of unpatchAll must be a string representing the caller"):L.unpatchAll(e)},Object.freeze(Je),Object.freeze(Je.Plugins),Object.freeze(Je.Themes),Object.freeze(Je.Patcher);var Xe=Je;const et=document.createElement("style");et.textContent="/* BEGIN V2 LOADER */\n/* =============== */\n\n#bd-loading-icon {\n background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+IDwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyBoZWlnaHQ9IjEwMCUiIHN0eWxlPSJmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWw6c3BhY2U9InByZXNlcnZlIiB3aWR0aD0iMTAwJSIgdmVyc2lvbj0iMS4xIiB2aWV3Qm94PSIwIDAgMjAwMCAyMDAwIj4gICAgPG1ldGFkYXRhIC8+ICAgIDxkZWZzPiAgICAgICAgPGZpbHRlciBpZD0ic2hhZG93MSI+ICAgICAgICA8ZmVEcm9wU2hhZG93IGR4PSIyMCIgZHk9IjAiIHN0ZERldmlhdGlvbj0iMjAiIGZsb29kLWNvbG9yPSJyZ2JhKDAsMCwwLDAuMzUpIi8+ICAgICAgICA8L2ZpbHRlcj4gICAgICAgIDxmaWx0ZXIgaWQ9InNoYWRvdzIiPiAgICAgICAgPGZlRHJvcFNoYWRvdyBkeD0iMTUiIGR5PSIwIiBzdGREZXZpYXRpb249IjIwIiBmbG9vZC1jb2xvcj0icmdiYSgyNTUsMjU1LDI1NSwwLjE1KSIvPiAgICAgICAgPC9maWx0ZXI+ICAgICAgICA8ZmlsdGVyIGlkPSJzaGFkb3czIj4gICAgICAgIDxmZURyb3BTaGFkb3cgZHg9IjEwIiBkeT0iMCIgc3RkRGV2aWF0aW9uPSIyMCIgZmxvb2QtY29sb3I9InJnYmEoMCwwLDAsMC4zNSkiLz4gICAgICAgIDwvZmlsdGVyPiAgICA8L2RlZnM+ICAgIDxnPiAgICAgICAgPHBhdGggc3R5bGU9ImZpbHRlcjogdXJsKCNzaGFkb3czKSIgZD0iTTExOTUuNDQrMTM1LjQ0MkwxMTk1LjQ0KzEzNS40NDJMOTk3LjYrMTM2LjQ0MkMxMDI0LjIrMTQ5Ljc0MisxMTcwLjM0KzE2My41NDIrMTE5My42NCsxNzkuNzQyQzEyNjQuMzQrMjI4Ljg0MisxMzE5Ljc0KzI5MS4yNDIrMTM1OC4yNCszNjUuMDQyQzEzOTguMTQrNDQxLjY0MisxNDE5Ljc0KzUzMC42NDIrMTQyMi41NCs2MjkuNjQyTDE0MjIuNTQrNjMwLjg0MkwxNDIyLjU0KzYzMi4wNDJDMTQyMi41NCs3NzMuMTQyKzE0MjIuNTQrMTIyOC4xNCsxNDIyLjU0KzEzNjkuMTRMMTQyMi41NCsxMzcwLjM0TDE0MjIuNTQrMTM3MS41NEMxNDE5Ljg0KzE0NzAuNTQrMTM5OC4yNCsxNTU5LjU0KzEzNTguMjQrMTYzNi4xNEMxMzE5Ljc0KzE3MDkuOTQrMTI2NC40NCsxNzcyLjM0KzExOTMuNjQrMTgyMS40NEMxMTcxLjA0KzE4MzcuMTQrMTAyNS43KzE4NTAuNTQrMTAwMCsxODYzLjU0TDExOTMuNTQrMTg2NC41NEMxNTM5Ljc0KzE4NjYuNDQrMTg2NC41NCsxNjkzLjM0KzE4NjQuNTQrMTI5Ni42NEwxODY0LjU0KzcxNi45NDJDMTg2Ni40NCszMTIuNDQyKzE1NDEuNjQrMTM1LjQ0MisxMTk1LjQ0KzEzNS40NDJaIiBmaWxsPSIjMTcxNzE3IiBvcGFjaXR5PSIxIi8+ICAgICAgICA8cGF0aCBzdHlsZT0iZmlsdGVyOiB1cmwoI3NoYWRvdzIpIiBkPSJNMTY5NS41NCs2MzEuNDQyQzE2ODUuODQrMjc4LjA0MisxNDA5LjM0KzEzNS40NDIrMTA1Mi45NCsxMzUuNDQyTDM2MS43NCsxMzYuNDQyTDgwMy43NCs0OTAuNDQyTDEwNjAuNzQrNDkwLjQ0MkMxMzM1LjI0KzQ5MC40NDIrMTMzNS4yNCs4MzUuMzQyKzEwNjAuNzQrODM1LjM0MkwxMDYwLjc0KzExNjQuODRDMTE1MC4yMisxMTY0Ljg0KzEyMTAuNTMrMTIwMS40OCsxMjQxLjY4KzEyNTAuODdDMTMwNi4wNysxMzUzKzEyNDUuNzYrMTUwOS42NCsxMDYwLjc0KzE1MDkuNjRMMzYxLjc0KzE4NjMuNTRMMTA1Mi45NCsxODY0LjU0QzE0MDkuMjQrMTg2NC41NCsxNjg1Ljc0KzE3MjEuOTQrMTY5NS41NCsxMzY4LjU0QzE2OTUuNTQrMTIwNS45NCsxNjUxLjA0KzEwODQuNDQrMTU3Mi42NCs5OTkuOTQyQzE2NTEuMDQrOTE1LjU0MisxNjk1LjU0Kzc5NC4wNDIrMTY5NS41NCs2MzEuNDQyWiIgZmlsbD0iIzNFODJFNSIgb3BhY2l0eT0iMSIvPiAgICAgICAgPHBhdGggc3R5bGU9ImZpbHRlcjogdXJsKCNzaGFkb3cxKSIgZD0iTTE0NjkuMjUrNjMxLjQ0MkMxNDU5LjU1KzI3OC4wNDIrMTE4My4wNSsxMzUuNDQyKzgyNi42NSsxMzUuNDQyTDEzNS40NSsxMzUuNDQyTDEzNS40NSsxMDA0QzEzNS40NSsxMDA0KzEzNS40MjcrMTI1NS4yMSszNTUuNjI2KzEyNTUuMjFDNTc1LjgyNSsxMjU1LjIxKzU3NS44NDgrMTAwNCs1NzUuODQ4KzEwMDRMNTc3LjQ1KzQ5MC40NDJMODM0LjQ1KzQ5MC40NDJDMTEwOC45NSs0OTAuNDQyKzExMDguOTUrODM1LjM0Mis4MzQuNDUrODM1LjM0Mkw2NjQuNjUrODM1LjM0Mkw2NjQuNjUrMTE2NC44NEw4MzQuNDUrMTE2NC44NEM5MjMuOTMyKzExNjQuODQrOTg0LjI0NCsxMjAxLjQ4KzEwMTUuMzkrMTI1MC44N0MxMDc5Ljc4KzEzNTMrMTAxOS40NysxNTA5LjY0KzgzNC40NSsxNTA5LjY0TDEzNS40NSsxNTA5LjY0TDEzNS40NSsxODY0LjU0TDgyNi42NSsxODY0LjU0QzExODIuOTUrMTg2NC41NCsxNDU5LjQ1KzE3MjEuOTQrMTQ2OS4yNSsxMzY4LjU0QzE0NjkuMjUrMTIwNS45NCsxNDI0Ljc1KzEwODQuNDQrMTM0Ni4zNSs5OTkuOTQyQzE0MjQuNzUrOTE1LjU0MisxNDY5LjI1Kzc5NC4wNDIrMTQ2OS4yNSs2MzEuNDQyWiIgZmlsbD0iI0ZGRkZGRiIgb3BhY2l0eT0iMSIvPiAgICA8L2c+PC9zdmc+);\n}\n#bd-loading-icon {\n position: fixed;\n bottom:5px;\n right:5px;\n z-index: 2147483647;\n display: block;\n width: 20px;\n height: 20px;\n background-size: 100% 100%;\n animation: bd-loading-animation 1.5s ease-in-out infinite;\n}\n\n@keyframes bd-loading-animation {\n 0% { opacity: 0.05; }\n 50% { opacity: 0.6; }\n 100% { opacity: 0.05; }\n}\n/* =============== */\n/* END V2 LOADER */";const tt=document.createElement("div");tt.id="bd-loading-icon",tt.className="bd-loaderv2",tt.title="BandagedBD is loading...";var st=class{static show(){document.body.appendChild(et),document.body.appendChild(tt)}static hide(){et&&et.remove(),tt&&tt.remove()}};class nt{get name(){return"Unnamed Builtin"}get collection(){return"settings"}get category(){return"general"}get id(){return"None"}async initialize(){T.get(this.collection,this.category,this.id)&&await this.enable(),E.on("setting-updated",(e,t,s,n)=>{e==this.collection&&t===this.category&&s===this.id&&(n?this.enable():this.disable())}),this.initialized=!0}registerSetting(e,t,s,n,i){return 4==arguments.length?(e=this.collection,t=arguments[0],s=arguments[1],n=arguments[2],i=arguments[3]):3==arguments.length&&(e=this.collection,t=this.category,s=arguments[0],n=arguments[1],i=arguments[2]),T.on(e,t,s,e=>{e?n():i()})}get(e,t,s){return 2==arguments.length?(e=this.collection,t=arguments[0],s=arguments[1]):1==arguments.length&&(e=this.collection,t=this.category,s=arguments[0]),T.get(e,t,s)}async enable(){this.log("Enabled");try{await this.enabled()}catch(e){this.stacktrace("Could not be enabled",e)}}async disable(){this.log("Disabled");try{await this.disabled()}catch(e){this.stacktrace("Could not be disabled",e)}}async enabled(){}async disabled(){}log(...e){c.log(this.name,...e)}warn(...e){c.warn(this.name,...e)}error(...e){c.err(this.name,...e)}stacktrace(e,t){c.stacktrace(this.name,e,t)}before(e,t,s){return L.before(this.name,e,t,s)}after(e,t,s){return L.after(this.name,e,t,s)}unpatchAll(){return L.unpatchAll(this.name)}}class it extends O.Component{render(){const e=this.props.size||"24px";return O.createElement("svg",{viewBox:"0 0 24 24",style:{width:e,height:e}},O.createElement("path",{d:"M0 0h24v24H0z",fill:"none"}),O.createElement("path",{d:"M19 19H5V5h7V3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2v-7h-2v7zM14 3v2h3.59l-9.83 9.83 1.41 1.41L19 6.41V10h2V3h-7z"}))}}class ot extends O.Component{constructor(e){super(e),this.hasUnsavedChanges=!1,this.onChange=this.onChange.bind(this),this.toggleLiveUpdate=this.toggleLiveUpdate.bind(this),this.updateCss=this.updateCss.bind(this),this.saveCss=this.saveCss.bind(this),this.openDetached=this.props.openDetached?this.openDetached.bind(this):null,this.openNative=this.openNative.bind(this),this.updateEditor=this.updateEditor.bind(this),this.controls=[{label:O.createElement(we,{size:"18px"}),tooltip:k.CustomCSS.update,onClick:this.updateCss},{label:O.createElement(X,{size:"18px"}),tooltip:k.CustomCSS.save,onClick:this.saveCss},{label:O.createElement(ee,{size:"18px"}),tooltip:k.CustomCSS.openNative,onClick:this.openNative},{label:O.createElement(te,{size:"18px"}),tooltip:k.CustomCSS.settings,onClick:"showSettings"},{label:k.Collections.settings.customcss.liveUpdate.name,type:"checkbox",onChange:this.toggleLiveUpdate,checked:T.get("settings","customcss","liveUpdate"),side:"right"}],this.openDetached&&this.controls.push({label:O.createElement(it,{size:"18px"}),tooltip:k.CustomCSS.openDetached,onClick:this.openDetached,side:"right"})}componentDidMount(){E.on("customcss-updated",this.updateEditor)}componentWillUnmount(){E.off("customcss-updated",this.updateEditor)}updateEditor(e){this.editor&&(this.editor.value=e)}get value(){return this.editor.session.getValue()}set value(e){this.editor.setValue(e)}showSettings(){return this.editor.keyBinding.$defaultHandler.commands.showSettingsMenu.exec(this.editor)}resize(){return this.editor.resize()}setEditorRef(e){this.editor=e,this.props.editorRef&&void 0!==this.props.editorRef.current?this.props.editorRef.current=e:this.props.editorRef&&(this.props.editorRef=e)}onChange(){this.hasUnsavedChanges=!0,this.props.onChange&&this.props.onChange(...arguments)}render(){return O.createElement(K,{ref:this.setEditorRef.bind(this),readOnly:this.props.readOnly,id:this.props.id||"bd-customcss-editor",onChange:this.onChange,controls:this.controls,value:this.props.css})}toggleLiveUpdate(e){T.set("settings","customcss","liveUpdate",e)}updateCss(e,t){this.props.update&&this.props.update(t)}saveCss(e,t){this.hasUnsavedChanges=!1,this.props.save&&this.props.save(t)}openDetached(e,t){this.props.openDetached&&this.props.openDetached(t)}openNative(){this.props.openNative&&this.props.openNative()}}const rt=s(2),at=s(0),lt=g.getByProps("updateAccount"),dt=g.getByProps("dirtyDispatch"),ct=g.getByProps("ActionTypes").ActionTypes;var ht=new class extends nt{get name(){return"Custom CSS"}get category(){return"customcss"}get id(){return"customcss"}get startDetached(){return"detached"==T.get(this.collection,this.category,"openAction")}get nativeOpen(){return"system"==T.get(this.collection,this.category,"openAction")}constructor(){super(),this.savedCss="",this.insertedCss="",this.isDetached=!1}async enabled(){window.ace||C.injectScript("ace-script","https://cdnjs.cloudflare.com/ajax/libs/ace/1.2.9/ace.js").then(()=>{window.require.original&&(window.require=window.require.original)}),T.registerPanel(this.id,k.Panels.customcss,{order:2,element:()=>[O.createElement(ve,{text:k.CustomCSS.editorTitle}),O.createElement(ot,{css:this.savedCss,save:this.saveCSS.bind(this),update:this.insertCSS.bind(this),openNative:this.openNative.bind(this),openDetached:this.openDetached.bind(this),onChange:this.onChange.bind(this)})],onClick:e=>{if(this.isDetached)return;if(this.nativeOpen)return this.openNative();if(this.startDetached)return this.openDetached();const t=u.findInRenderTree(e._reactInternalFiber,e=>e&&e.onSetSection,{walkable:["child","memoizedProps","props","children"]});t&&t.onSetSection&&t.onSetSection(this.id)}}),this.loadCSS(),this.insertCSS(this.savedCss),this.watchContent()}disabled(){T.removePanel(this.id),this.unwatchContent()}watchContent(){if(this.watcher)return this.error("Already watching content.");const e={};this.log("Starting to watch content."),this.watcher=rt.watch(w.customCSS,{persistent:!1},async(t,s)=>{if(!t||!s)return;await new Promise(e=>setTimeout(e,50));try{rt.statSync(w.customCSS)}catch(t){if("ENOENT"!==t.code)return;delete e[s],this.saveCSS("")}const n=rt.statSync(w.customCSS);if(n&&n.mtime&&n.mtime.getTime()&&"number"==typeof n.mtime.getTime()&&e[s]!=n.mtime.getTime()&&(e[s]=n.mtime.getTime(),"change"==t)){const e=w.loadCustomCSS();if(e==this.savedCss)return;this.savedCss=e,this.insertCSS(this.savedCss),E.emit("customcss-updated",this.savedCss)}})}unwatchContent(){if(!this.watcher)return this.error("Was not watching content.");this.watcher.close(),delete this.watcher,this.log("No longer watching content.")}onChange(e){T.get("settings","customcss","liveUpdate")&&(this.insertCSS(e),this.saveCSS(e))}loadCSS(){this.savedCss=w.loadCustomCSS()}insertCSS(e){void 0===e?e=this.insertedCss:this.insertedCss=e,C.updateCustomCSS(e)}saveCSS(e){void 0!==e&&(this.savedCss=e),w.saveCustomCSS(this.savedCss)}openNative(){at.shell.openExternal("file://"+w.customCSS)}openDetached(e){const t=O.createRef(),s=O.createElement(ot,{id:"bd-floating-editor",ref:t,css:e,save:this.saveCSS.bind(this),update:this.insertCSS.bind(this),openNative:this.openNative.bind(this),onChange:this.onChange.bind(this)});ce.open({onClose:()=>{this.isDetached=!1},onResize:()=>{t&&t.current&&t.current.resize&&t.current.resize()},title:k.CustomCSS.editorTitle,id:"floating-editor-window",height:470,width:410,center:!0,resizable:!0,children:s,confirmClose:()=>!(!t||!t.current)&&t.current.hasUnsavedChanges,confirmationText:k.CustomCSS.confirmationText}),this.isDetached=!0,lt.close(),dt.dirtyDispatch({type:ct.LAYER_POP})}},ut=new class extends nt{get name(){return"WindowPrefs"}get category(){return"window"}get id(){return"transparency"}enabled(){this.setWindowPreference("transparent",!0),this.setWindowPreference("backgroundColor","#00000000"),this.showModal(k.WindowPrefs.enabledInfo)}disabled(){this.deleteWindowPreference("transparent"),this.deleteWindowPreference("backgroundColor"),this.showModal(k.WindowPrefs.disabledInfo)}showModal(e){this.initialized&&W.showConfirmationModal(k.Modals.additionalInfo,e,{confirmText:k.Modals.restartNow,cancelText:k.Modals.restartLater,onConfirm:()=>{const e=s(0).remote.app;e.relaunch(),e.exit()}})}getWindowPreference(e){return(w.getData("windowprefs")||{})[e]}setWindowPreference(e,t){const s=w.getData("windowprefs")||{};s[e]=t,w.setData("windowprefs",s)}deleteWindowPreference(e){const t=w.getData("windowprefs")||{};delete t[e],w.setData("windowprefs",t)}},pt=new class extends nt{get name(){return"24Hour"}get category(){return"general"}get id(){return"twentyFourHour"}enabled(){this.inject24Hour()}disabled(){this.unpatchAll()}inject24Hour(){const e=new RegExp("([0-9]{1,2}):([0-9]{1,2})\\s(AM|PM)"),t=(t,s,n)=>{const i=n.match(e);if(i&&4===i.length)return"AM"===i[3]?n.replace(i[0],`${"12"===i[1]?"00":i[1].padStart(2,"0")}:${i[2]}`):n.replace(i[0],`${"12"===i[1]?"12":parseInt(i[1])+12}:${i[2]}`)};this.after(f.TimeFormatter,"calendarFormat",t),this.after(f.TimeFormatter,"dateFormat",t)}};const mt=new RegExp("^(?!da-)((?:[A-Za-z]|[0-9]|-)+)-(?:[A-Za-z]|[0-9]|-|_){6}$");var gt=new class extends nt{get id(){return"classNormalizer"}get category(){return"general"}get name(){return"ClassNormalizer"}enabled(){this.hasPatched||(this.patchClassModules(g.getModules(this.moduleFilter.bind(this))),this.normalizeElement(document.querySelector("#app-mount")),this.hasPatched=!0,this.patchDOMMethods())}disabled(){this.hasPatched&&(this.unpatchClassModules(g.getModules(this.moduleFilter.bind(this))),this.revertElement(document.querySelector("#app-mount")),this.hasPatched=!1)}patchClassModules(e){for(const t of e)this.patchClassModule("da",t)}unpatchClassModules(e){for(const t of e)this.unpatchClassModule("da",t)}shouldIgnore(e){return!isNaN(e)||(!!(e.endsWith("px")||e.endsWith("ch")||e.endsWith("em")||e.endsWith("ms"))||(!!e.startsWith("layerContainer-")||(!(!e.startsWith("#")||7!=e.length&&4!=e.length)||!(!e.includes("calc(")&&!e.includes("rgba")))))}moduleFilter(e){if("object"!=typeof e||Array.isArray(e))return!1;if(e.__esModule)return!1;if(!Object.keys(e).length)return!1;for(const t in e){const s=e[t];if("string"!=typeof s)return!1;if(!this.shouldIgnore(s)){if(1===s.split("-").length)return!1;if(!mt.test(s.split(" ")[0]))return!1}}return!0}patchClassModule(e,t){for(const s in t){const n=t[s];if(this.shouldIgnore(n))continue;const i=n.split(" ");for(const n of i){const i=n.match(mt);if(!i||!i.length||i.length<2)continue;const o=i[1].split("-").map((e,t)=>t?e[0].toUpperCase()+e.slice(1):e).join("");t[s]+=` ${e}-${o}`}}}unpatchClassModule(e,t){for(const s in t){const n=t[s];if(this.shouldIgnore(n))continue;let i="";const o=n.split(" ");for(const t of o)t.startsWith(e+"-")||(i+=" "+t);t[s]=i.trim()}}normalizeElement(e){if(!(e instanceof Element))return;const t=e.classList;for(let s=0,n=t.length;st?e[0].toUpperCase()+e.slice(1):e).join("");e.classList.add("da-"+n)}for(const t of e.children)this.normalizeElement(t)}revertElement(e){if(!(e instanceof Element))return;e.children&&e.children.length&&this.revertElement(e.children[0]),e.nextElementSibling&&this.revertElement(e.nextElementSibling);const t=e.classList,s=[];for(let e=0;e{const o=[];t&&o.push("category="+t.replace(/ /g,"%20")),e&&o.push("term="+e.replace(/ /g,"%20")),n&&o.push("from="+n);const r="?"+o.join("&");i.get({url:`${this.endPoint}${r}${r?"&schema=new":"?schema=new"}`,json:!0},(e,t,n)=>{if(e)return s(null);const i=n.size+n.from;s({servers:n.results,size:n.size,from:n.from,total:n.total,next:i>=n.total?null:i})})})}static async join(e,t=!1){if(t)return vt.acceptInvite(e);try{return await fetch(`${this.joinEndPoint}/${e}`,{method:"GET",credentials:"include",mode:"cors",headers:{Accept:"application/json","Content-Type":"application/json"}}),!0}catch(e){return!1}}static async checkConnection(){try{const e=await fetch("https://auth.discordservers.com/info",{method:"GET",credentials:"include",mode:"cors",headers:{Accept:"application/json","Content-Type":"application/json"}}),t=await e.json();return this._accessToken=t.access_token,t}catch(e){return!1}}static connect(){return new Promise(e=>{const t=new wt(this.windowOptions),s="https://auth.discordservers.com/connect?scopes=guilds.join&previousUrl="+this.connectEndPoint;t.webContents.on("did-navigate",(s,n)=>{n==this.connectEndPoint&&(t.close(),e())}),t.loadURL(s)})}static get windowOptions(){return{width:380,height:450,backgroundColor:"#282b30",show:!0,resizable:!0,maximizable:!1,minimizable:!1,alwaysOnTop:!0,frame:!1,center:!0,webPreferences:{nodeIntegration:!1}}}}const St=g.getByDisplayName("SettingsView");class Et extends O.Component{get categoryButtons(){return["All","FPS Games","MMO Games","Strategy Games","MOBA Games","RPG Games","Tabletop Games","Sandbox Games","Simulation Games","Music","Community","Language","Programming","Other"]}constructor(e){super(e),this.state={category:"All",query:"",loading:!0,user:null,results:{servers:[],size:0,from:0,total:0,next:null}},this.changeCategory=this.changeCategory.bind(this),this.searchKeyDown=this.searchKeyDown.bind(this),this.connect=this.connect.bind(this),this.loadNextPage=this.loadNextPage.bind(this),this.join=this.join.bind(this)}componentDidMount(){this.checkConnection()}async checkConnection(){const e=await Ct.checkConnection();if(!e)return this.setState({loading:!0,user:null});this.setState({user:e}),this.search()}async connect(){await Ct.connect(),this.checkConnection()}searchKeyDown(e){this.state.loading||13!==e.which||this.search(e.target.value)}async search(e="",t=0){this.setState({query:e,loading:!0});const s=await Ct.search({term:e,category:"All"==this.state.category?"":this.state.category,from:t});if(!s)return this.setState({results:{servers:[],size:0,from:0,total:0,next:null}});this.setState({loading:!1,results:s})}async changeCategory(e){this.state.loading||(await new Promise(t=>this.setState({category:e},t)),this.search())}loadNextPage(){this.state.loading||this.search(this.state.query,this.state.results.next)}async join(e,t=!1){return await Ct.join(e,t)}get searchBox(){return O.createElement(je,{onKeyDown:this.searchKeyDown,placeholder:k.PublicServers.search+"..."})}get title(){if(!this.state.user)return k.PublicServers.notConnected;if(this.state.loading)return k.PublicServers.loading+"...";const e=this.state.results.from+1,t=this.state.results.total,s=this.state.results.next?this.state.results.next:t;let n=k.PublicServers.results.format({start:e,end:s,total:t,category:this.state.category});return this.state.query&&(n+=" "+k.PublicServers.query.format({query:this.state.query})),n}get content(){const e=this.state.user?null:{title:k.PublicServers.connect,onClick:this.connect},t="All"!=this.state.category&&this.state.user?null:this.bdServer,s=this.state.results.servers.map(e=>O.createElement(ft,{key:e.identifier,server:e,joined:Ct.hasJoined(e.identifier),join:this.join,defaultAvatar:Ct.getDefaultAvatar}));return[O.createElement(ve,{text:this.title,button:e}),t,s,this.state.results.next?this.nextButton:null,this.state.results.servers.length>0&&O.createElement(ve,{text:this.title})]}get nextButton(){return O.createElement("button",{type:"button",className:"bd-button bd-button-next",onClick:this.loadNextPage},this.state.loading?k.PublicServers.loading:k.PublicServers.loadMore)}get connection(){const{user:e}=this.state;return e?O.createElement("div",{id:"bd-connection"},O.createElement("div",{className:"bd-footnote"},k.PublicServers.connection.format(e)),O.createElement("button",{type:"button",className:"bd-button bd-button-reconnect",onClick:this.connect},k.PublicServers.reconnect)):O.createElement("div",{id:"bd-connection"})}get bdServer(){const e={name:"BetterDiscord",online:"7500+",members:"20000+",categories:["community","programming","support"],description:"Official BetterDiscord server for plugins, themes, support, etc",identifier:"86004744966914048",iconUrl:"https://cdn.discordapp.com/icons/86004744966914048/292e7f6bfff2b71dfd13e508a859aedd.webp",nativejoin:!0,invite_code:"0Tmfo5ZbORCRqbAd",pinned:!0};return O.createElement(ft,{server:e,pinned:!0,joined:Ct.hasJoined(e.identifier),defaultAvatar:Ct.getDefaultAvatar})}render(){const e=this.categoryButtons.map(e=>({section:e,label:e,element:()=>this.content}));return O.createElement(St,{onClose:this.props.close,onSetSection:this.changeCategory,section:this.state.category,sections:[{section:"HEADER",label:k.PublicServers.search},{section:"CUSTOM",element:()=>this.searchBox},{section:"HEADER",label:k.PublicServers.categories},...e,{section:"DIVIDER"},{section:"HEADER",label:O.createElement("a",{href:"https://discordservers.com",target:"_blank"},"DiscordServers.com")},{section:"DIVIDER"},{section:"CUSTOM",element:()=>this.connection}],theme:"dark"})}}const Mt=g.getByProps("pushLayer");var xt=new class extends nt{get name(){return"PublicServers"}get category(){return"general"}get id(){return"publicServers"}enabled(){const e=g.find(e=>e.default&&"NavigableGuilds"==e.default.displayName),t=g.findByDisplayName("Guilds");e||t||this.warn("Can't find GuildList component"),this.guildPatch=this.after(e||t.prototype,e?"default":"render",this._appendButton),this._appendButton()}disabled(){this.unpatchAll(),h.query("#bd-pub-li").remove()}_appendButton(){const e=f.GuildClasses.wrapper.split(" ")[0],t=h.query(`.${e} .scroller-2TZvBN >:first-child`);h.after(t,this.button)}openPublicServers(){Mt.pushLayer(()=>f.React.createElement(Et,{close:Mt.popLayer}))}get button(){const e=h.createElement(`
`),t=h.createElement(`
${k.PublicServers.button}
`);return t.addEventListener("click",()=>{this.openPublicServers()}),e.append(t),e}},Nt=new class extends nt{get name(){return"VoiceDisconnect"}get category(){return"general"}get id(){return"voiceDisconnect"}constructor(){super(),this.beforeUnload=this.beforeUnload.bind(this)}enabled(){window.addEventListener("beforeunload",this.beforeUnload)}disabled(){window.removeEventListener("beforeunload",this.beforeUnload)}beforeUnload(){f.ChannelActions.selectVoiceChannel(null,null)}};const Pt=g.getModule(e=>e.default&&e.default.displayName&&"Message"==e.default.displayName);var Dt=new class extends nt{get name(){return"ColoredText"}get category(){return"appearance"}get id(){return"coloredText"}enabled(){this.injectColoredText()}disabled(){this.unpatchAll()}injectColoredText(){this.after(Pt.prototype,"render",(e,t,s)=>{this.after(s.props,"children",{silent:!0,after:({returnValue:t})=>{const s=t.props.children[1],n=e.props.message.colorString;s&&n&&(s.props.style={color:n})}})})}removeColoredText(){document.querySelectorAll(".markup-2BOw-j").forEach(e=>{e.style.setProperty("color","")})}},At=new class extends nt{get name(){return"DarkMode"}get category(){return"appearance"}get id(){return"darkMode"}enabled(){document.getElementById("app-mount").classList.add("bda-dark","bd-dark")}disabled(){document.getElementById("app-mount").classList.remove("bda-dark","bd-dark")}},kt=new class extends nt{get name(){return"MinimalMode"}get category(){return"appearance"}get id(){return"minimalMode"}get hideChannelsID(){return"hideChannels"}get hideChannels(){return this.get(this.hideChannelsID)}constructor(){super(),this.enableHideChannels=this.enableHideChannels.bind(this),this.disableHideChannels=this.disableHideChannels.bind(this)}enabled(){document.body.classList.add("bd-minimal"),this.hideChannels&&this.enableHideChannels(),this.hideChannelCancel=this.registerSetting(this.hideChannelsID,this.enableHideChannels,this.disableHideChannels)}disabled(){document.body.classList.remove("bd-minimal"),this.hideChannels&&this.disableHideChannels(),this.hideChannelCancel&&this.hideChannelCancel()}enableHideChannels(){document.body.classList.add("bd-minimal-chan")}disableHideChannels(){document.body.classList.remove("bd-minimal-chan")}},Tt=new class extends nt{get name(){return"VoiceMode"}get category(){return"appearance"}get id(){return"voiceMode"}enabled(){document.querySelector(".chat-3bRxxu").style.setProperty("visibility","hidden"),document.querySelector(".chat-3bRxxu").style.setProperty("min-width","0px"),document.querySelector(".channels-Ie2l6A").style.setProperty("flex-grow","100000")}disabled(){document.querySelector(".chat-3bRxxu").style.setProperty("visibility",""),document.querySelector(".chat-3bRxxu").style.setProperty("min-width",""),document.querySelector(".channels-Ie2l6A").style.setProperty("flex-grow","")}};const Lt=g.getByDisplayName("Tooltip");class jt extends O.Component{constructor(e){super(e),this.state={shouldAnimate:!this.animateOnHover,isFavorite:this.props.isFavorite},this.onMouseEnter=this.onMouseEnter.bind(this),this.onMouseLeave=this.onMouseLeave.bind(this),this.onClick=this.onClick.bind(this),this.toggleFavorite=this.toggleFavorite.bind(this)}get animateOnHover(){return T.get("emotes","general","animateOnHover")}get label(){return this.props.modifier?`${this.props.name}:${this.props.modifier}`:this.props.name}get modifierClass(){return this.props.modifier?" emote"+this.props.modifier:""}onMouseEnter(){!this.state.shouldAnimate&&this.animateOnHover&&this.setState({shouldAnimate:!0})}onMouseLeave(){this.state.shouldAnimate&&this.animateOnHover&&this.setState({shouldAnimate:!1})}onClick(e){this.props.onClick&&this.props.onClick(e)}toggleFavorite(e){e.preventDefault(),e.stopPropagation(),this.state.isFavorite?E.emit("emotes-favorite-removed",this.label):E.emit("emotes-favorite-added",this.label,this.props.url),this.setState({isFavorite:!this.state.isFavorite})}render(){return O.createElement(Lt,{color:"black",position:"top",text:this.label,delay:750},e=>O.createElement("div",Object.assign({className:"emotewrapper"+(this.props.jumboable?" jumboable":""),onMouseEnter:this.onMouseEnter,onMouseLeave:this.onMouseLeave,onClick:this.onClick},e),O.createElement("img",{draggable:!1,className:"emote"+this.modifierClass+(this.props.jumboable?" jumboable":"")+(this.state.shouldAnimate?"":" stop-animation"),dataModifier:this.props.modifier,alt:this.label,src:this.props.url}),O.createElement("input",{className:"fav"+(this.state.isFavorite?" active":""),title:k.Emotes.favoriteAction,type:"button",onClick:this.toggleFavorite})))}}const Bt=s(3),It={TwitchGlobal:new A("https://static-cdn.jtvnw.net/emoticons/v1/{{id}}/1.0"),TwitchSubscriber:new A("https://static-cdn.jtvnw.net/emoticons/v1/{{id}}/1.0"),FrankerFaceZ:new A("https://cdn.frankerfacez.com/emoticon/{{id}}/1"),BTTV:new A("https://cdn.betterttv.net/emote/{{id}}/1x")},zt={TwitchGlobal:{},TwitchSubscriber:{},BTTV:{},FrankerFaceZ:{}},Ft=[],Ot=["twitch","subscriber","bttv","ffz"],Rt=["flip","spin","pulse","spin2","spin3","1spin","2spin","3spin","tr","bl","br","shake","shake2","shake3","flap"];var Ut=new class extends nt{get name(){return"Emotes"}get collection(){return"settings"}get category(){return"general"}get id(){return"emotes"}get categories(){return Object.keys(zt).filter(e=>this.isCategoryEnabled(e))}get shouldDownload(){return T.get("emotes",this.category,"download")}isCategoryEnabled(e){return super.get("emotes","categories",e.toLowerCase())}get(e){return super.get("emotes","general",e)}get MessageComponent(){return g.find(e=>e.default&&e.default.displayName&&"Message"==e.default.displayName)}get Emotes(){return zt}get TwitchGlobal(){return zt.TwitchGlobal}get TwitchSubscriber(){return zt.TwitchSubscriber}get BTTV(){return zt.BTTV}get FrankerFaceZ(){return zt.FrankerFaceZ}get blacklist(){return Ft}get favorites(){return this.favoriteEmotes}getUrl(e,t){return It[e].format({id:zt[e][t]})}getCategory(e){return zt[e]}getRemoteFile(e){return u.repoUrl(`assets/emotes/${e.toLowerCase()}.json`)}initialize(){super.initialize();const e=w.getBDData("favoriteEmotes");this.favoriteEmotes=e||{},this.addFavorite=this.addFavorite.bind(this),this.removeFavorite=this.removeFavorite.bind(this),this.onCategoryToggle=this.onCategoryToggle.bind(this),this.resetEmotes=this.resetEmotes.bind(this)}async enabled(){T.registerCollection("emotes","Emotes",o,{title:k.Emotes.clearEmotes,onClick:this.resetEmotes}),await this.getBlacklist(),await this.loadEmoteData(),E.on("emotes-favorite-added",this.addFavorite),E.on("emotes-favorite-removed",this.removeFavorite),E.on("setting-updated",this.onCategoryToggle),this.patchMessageContent()}disabled(){E.off("setting-updated",this.onCategoryToggle),E.off("emotes-favorite-added",this.addFavorite),E.off("emotes-favorite-removed",this.removeFavorite),T.removeCollection("emotes"),this.emptyEmotes(),this.cancelEmoteRender&&(this.cancelEmoteRender(),delete this.cancelEmoteRender)}onCategoryToggle(e,t,s,n){if("emotes"==e&&"categories"==t)return n?this.loadEmoteData(s):this.unloadEmoteData(s)}addFavorite(e,t){this.favoriteEmotes.hasOwnProperty(e)||(this.favoriteEmotes[e]=t),this.saveFavorites()}removeFavorite(e){this.favoriteEmotes.hasOwnProperty(e)&&(delete this.favoriteEmotes[e],this.saveFavorites())}isFavorite(e){return this.favoriteEmotes.hasOwnProperty(e)}saveFavorites(){w.setBDData("favoriteEmotes",this.favoriteEmotes)}emptyEmotes(){for(const e in zt)Object.assign(zt,{[e]:{}})}patchMessageContent(){this.cancelEmoteRender||(this.cancelEmoteRender=this.before(this.MessageComponent,"default",(e,t)=>{const s=t[0].childrenMessageContent.props.content;if(!s||!s.length)return;for(let e=0;e"string"==typeof e&&""==e.replace(/\s*/,"")||(!(!e.type||"BDEmote"!=e.type.name)||!!(e.props&&e.props.children&&e.props.children.props&&e.props.children.props.emojiName))))for(const e of s)"object"==typeof e&&("BDEmote"==e.type.name?e.props.jumboable=!0:e.props&&e.props.children&&e.props.children.props&&e.props.children.props.emojiName&&(e.props.children.props.jumboable=!0))}))}async getBlacklist(){try{const e="Blacklist",t=w.emotesExist(e),s=await this.isCacheValid(e),n=s||!s&&t&&!this.shouldDownload?w.getEmoteData(e):await this.downloadEmotes(e);Ft.push(...n)}catch(e){}}isCacheValid(e){return new Promise(t=>{const s=w.getCacheHash("emotes",e);if(!s)return t(!1);Bt.head({url:this.getRemoteFile(e),headers:{"If-None-Match":s}},(e,s)=>{t(304==s.statusCode)})})}async loadEmoteData(e){e||(e=this.categories),Array.isArray(e)||(e=[e]);const t=Object.keys(zt);e=e.map(e=>t.find(t=>t.toLowerCase()==e.toLowerCase())),q.show(k.Emotes.loading,{type:"info"}),this.emotesLoaded=!1;for(const t of e){const e=w.emotesExist(t),s=await this.isCacheValid(t);let n=null;if(s||!s&&e&&!this.shouldDownload){this.log(`Loading ${t} emotes from local cache.`);const e=w.getEmoteData(t);Object.keys(e).length>0&&(n=e)}n||(n=await this.downloadEmotes(t)),Object.assign(zt[t],n),await new Promise(e=>setTimeout(e,1e3))}this.emotesLoaded=!0,E.dispatch("emotes-loaded"),q.show(k.Emotes.loaded,{type:"success"})}unloadEmoteData(e){e||(e=this.categories),Array.isArray(e)||(e=[e]);const t=Object.keys(zt);e=e.map(e=>t.find(t=>t.toLowerCase()==e.toLowerCase()));for(const t of e)delete zt[t],zt[t]={}}downloadEmotes(e){const t=this.getRemoteFile(e);this.log(`Downloading ${e} from ${t}`);const s={url:t,timeout:1e4,json:!0};return new Promise(t=>{Bt.get(s,(s,n,i)=>{if(s||200!=n.statusCode)return this.stacktrace(`Could not download ${e} emotes.`,s),t({});for(const e in i)(e.length<4||Ft.includes(e)||!i[e])&&delete i[e];w.saveEmoteData(e,i),w.setCacheHash("emotes",e,n.headers.etag),t(i),this.log("Downloaded "+e)})})}resetEmotes(){const e=Object.keys(zt);this.unloadEmoteData(e);for(const t of e)w.invalidateCache("emotes",t);this.loadEmoteData()}};const Ht=(e,t,s={})=>{const{onContextMenu:n,onClick:i}=s,o=h.createElement(`
\n ${e}\n
`);return n&&o.addEventListener("contextmenu",n),o.addEventListener("click",i),o};var qt=new class extends nt{get name(){return"EmoteMenu"}get collection(){return"emotes"}get category(){return"general"}get id(){return"emoteMenu"}get hideEmojisID(){return"hideEmojiMenu"}get hideEmojis(){return this.get(this.hideEmojisID)}constructor(){super(),this.lastTab="bd-qem-emojis",this.qmeHeader=h.createElement('
\n \n \n
');for(const e of this.qmeHeader.getElementsByTagName("button"))e.addEventListener("click",this.switchMenu.bind(this));this.teContainer=h.createElement('
\n
\n
\n
\n\n
\n
\n
\n
'),this.teContainerInner=this.teContainer.querySelector(".emote-menu-inner"),this.faContainer=h.createElement('
\n
\n
\n
\n\n
\n
\n
\n
'),this.faContainerInner=this.faContainer.querySelector(".emote-menu-inner"),this.observer=new MutationObserver(e=>{for(const t of e)this.observe(t)}),this.enableHideEmojis=this.enableHideEmojis.bind(this),this.disableHideEmojis=this.disableHideEmojis.bind(this),this.updateTwitchEmotes=this.updateTwitchEmotes.bind(this)}async enabled(){return W.alert("Emote Menu Broken","Emote Menu is currently broken, it is recommended to disable this until it is fixed.")}disabled(){E.off("emotes-loaded",this.updateTwitchEmotes),this.observer.disconnect(),this.disableHideEmojis(),this.hideEmojiCancel&&this.hideEmojiCancel()}enableHideEmojis(){const e=document.querySelector(".emojiPicker-3m1S-j");e&&e.classList.add("bd-qme-hidden")}disableHideEmojis(){const e=document.querySelector(".emojiPicker-3m1S-j");e&&e.classList.remove("bd-qme-hidden")}insertEmote(e){const t=u.getTextArea();u.insertText(t[0]," "==t.val().slice(-1)?t.val()+e:t.val()+" "+e)}favContext(e){e.stopPropagation();const t=e.target.closest(".emote-container").children[0],s=$('
Remove
');s.css({top:e.pageY-$("#bd-qem-favourite-container").offset().top,left:e.pageX-$("#bd-qem-favourite-container").offset().left}),$(t).parent().append(s),s.on("click",e=>{e.preventDefault(),e.stopPropagation(),$(t).remove(),Ut.removeFavorite($(t).attr("title")),this.updateFavorites(),$(document).off("mousedown.emotemenu")}),$(document).on("mousedown.emotemenu",(function(e){"removemenu"!=e.target.id&&($("#removemenu").remove(),$(document).off("mousedown.emotemenu"))}))}switchMenu(e){let t="string"==typeof e?e:e.target.id;"bd-qem-emojis"==t&&this.hideEmojis&&(t="bd-qem-favourite");const s=$("#bd-qem-twitch"),n=$("#bd-qem-favourite"),i=$("#bd-qem-emojis");switch(s.removeClass("active"),n.removeClass("active"),i.removeClass("active"),$(".emojiPicker-3m1S-j").hide(),$("#bd-qem-favourite-container").hide(),$("#bd-qem-twitch-container").hide(),t){case"bd-qem-twitch":s.addClass("active"),$("#bd-qem-twitch-container").show();break;case"bd-qem-favourite":n.addClass("active"),$("#bd-qem-favourite-container").show();break;case"bd-qem-emojis":i.addClass("active"),$(".emojiPicker-3m1S-j").show(),$(".emojiPicker-3m1S-j input").focus()}t&&(this.lastTab=t)}observe(e){if(!(e.addedNodes.length&&e.addedNodes[0]instanceof Element))return;const t=e.addedNodes[0];if(!t.classList.contains("layer-v9HyYc")||!t.getElementsByClassName("emojiPicker-3m1S-j").length||t.querySelector(".emojiPicker-3m1S-j").parentElement.classList.contains("animatorLeft-1EQxU0"))return;const s=$(t);this.hideEmojis?s.addClass("bd-qme-hidden"):s.removeClass("bd-qme-hidden"),s.prepend(this.qmeHeader),s.append(this.teContainer),s.append(this.faContainer),this.switchMenu(this.lastTab)}updateTwitchEmotes(){for(;this.teContainerInner.firstChild;)this.teContainerInner.firstChild.remove();for(const e in Ut.getCategory("TwitchGlobal")){if(!Ut.getCategory("TwitchGlobal").hasOwnProperty(e))continue;const t=Ut.getUrl("TwitchGlobal",e),s=Ht(e,t,{onClick:this.insertEmote.bind(this,e)});this.teContainerInner.append(s)}}updateFavorites(){for(;this.faContainerInner.firstChild;)this.faContainerInner.firstChild.remove();for(const e in Ut.favorites){const t=Ut.favorites[e],s=Ht(e,t,{onClick:this.insertEmote.bind(this,e),onContextMenu:this.favContext.bind(this)});this.faContainerInner.append(s)}Ut.saveFavorites()}},$t=new class extends nt{get name(){return"DeveloperMode"}get category(){return"developer"}get id(){return"developerMode"}get selectorModeID(){return"copySelector"}get selectorMode(){return this.get(this.selectorModeID)}constructor(){super(),this.copySelectorListener=this.copySelectorListener.bind(this)}enabled(){document.addEventListener("contextmenu",this.copySelectorListener)}disabled(){document.removeEventListener("contextmenu",this.copySelectorListener)}copySelectorListener(e){e.stopPropagation();const t=this.getSelector(e.target);setImmediate((function(){let s=h.query(".contextMenu-HLZMGh");if(!s){const t=h.query("#app-mount"),n=h.createElement('
');s=h.createElement('
'),n.append(s),t.append(n),n.style.top=e.clientY+"px",n.style.left=e.clientX+"px",n.style.zIndex="1002";const i=function(e){e.keyCode&&27!==e.keyCode||(n.remove(),document.removeEventListener("click",i),document.removeEventListener("contextmenu",i),document.removeEventListener("keyup",i))};document.addEventListener("click",i),document.addEventListener("contextmenu",i),document.addEventListener("keyup",i)}const n=h.createElement('
'),i=h.createElement('
');i.append(h.createElement(`
${k.Developer.copySelector}
`)),i.addEventListener("click",()=>{f.ElectronModule.copy(t),s.style.display="none"}),n.append(i),s.append(n)}))}getSelector(e){if(e.id)return"#"+e.id;const t=this.getRules(e),s=t[t.length-1];return s?s.selectorText:e.classList.length?"."+Array.from(e.classList).join("."):"."+Array.from(e.parentElement.classList).join(".")}getRules(e,t=e.ownerDocument.styleSheets){return[...t].filter(e=>!e.href||!e.href.includes("BetterDiscordApp")).map(e=>[...e.cssRules||[]]).flat().filter(t=>t&&t.selectorText&&e.matches(t.selectorText)&&t.style.length&&t.selectorText.split(", ").length<8&&!t.selectorText.split(", ").includes("*"))}},Wt=new class extends nt{get name(){return"Debugger"}get category(){return"developer"}get id(){return"debuggerHotkey"}enabled(){document.addEventListener("keydown",this.debugListener)}disabled(){document.removeEventListener("keydown",this.debugListener)}debugListener(e){119!==e.which&&118!=e.which||(e.preventDefault(),e.stopImmediatePropagation())}};const _t=s(0),Gt=s(2),Qt=s(1),Vt=_t.remote.BrowserWindow;var Zt=new class extends nt{get name(){return"ReactDevTools"}get category(){return"developer"}get id(){return"reactDevTools"}initialize(){super.initialize(),this.findExtension()}findExtension(){let e="";if(e="win32"===process.platform?Qt.resolve(process.env.LOCALAPPDATA,"Google/Chrome/User Data"):"linux"===process.platform?Qt.resolve(process.env.HOME,".config/google-chrome"):"darwin"===process.platform?Qt.resolve(process.env.HOME,"Library/Application Support/Google/Chrome"):Qt.resolve(process.env.HOME,".config/chromium"),e+="/Default/Extensions/fmkadmapgofadopljbjfkapdkoienihi/",Gt.existsSync(e)){const t=Gt.readdirSync(e);e=Qt.resolve(e,t[t.length-1])}this.extensionPath=e,this.isExtensionInstalled=Gt.existsSync(e)}enabled(){if(this.isExtensionInstalled||this.findExtension(),!this.isExtensionInstalled)return W.alert(k.ReactDevTools.notFound,k.ReactDevTools.notFoundDetails);Vt.addDevToolsExtension(this.extensionPath)?this.log("Successfully installed react devtools."):this.error("Couldn't find react devtools in chrome extensions!")}disabled(){this.isExtensionInstalled&&Vt.removeDevToolsExtension("React Developer Tools")}};class Yt extends O.Component{render(){return O.createElement("svg",{className:"bd-logo "+this.props.className,height:"100%",width:this.props.size||"16px",viewBox:"0 0 2000 2000",style:{fillRule:"evenodd",clipRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"}},O.createElement("metadata",null),O.createElement("defs",null,O.createElement("filter",{id:"shadow1"},O.createElement("feDropShadow",{dx:"20",dy:"0",stdDeviation:"20",floodColor:"rgba(0,0,0,0.35)"})),O.createElement("filter",{id:"shadow2"},O.createElement("feDropShadow",{dx:"15",dy:"0",stdDeviation:"20",floodColor:"rgba(255,255,255,0.15)"})),O.createElement("filter",{id:"shadow3"},O.createElement("feDropShadow",{dx:"10",dy:"0",stdDeviation:"20",floodColor:"rgba(0,0,0,0.35)"}))),O.createElement("g",null,O.createElement("path",{style:{filter:"url(#shadow3)"},fill:"#171717",opacity:"1",d:"M1195.44+135.442L1195.44+135.442L997.6+136.442C1024.2+149.742+1170.34+163.542+1193.64+179.742C1264.34+228.842+1319.74+291.242+1358.24+365.042C1398.14+441.642+1419.74+530.642+1422.54+629.642L1422.54+630.842L1422.54+632.042C1422.54+773.142+1422.54+1228.14+1422.54+1369.14L1422.54+1370.34L1422.54+1371.54C1419.84+1470.54+1398.24+1559.54+1358.24+1636.14C1319.74+1709.94+1264.44+1772.34+1193.64+1821.44C1171.04+1837.14+1025.7+1850.54+1000+1863.54L1193.54+1864.54C1539.74+1866.44+1864.54+1693.34+1864.54+1296.64L1864.54+716.942C1866.44+312.442+1541.64+135.442+1195.44+135.442Z"}),O.createElement("path",{style:{filter:"url(#shadow2)"},fill:"#3E82E5",opacity:"1",d:"M1695.54+631.442C1685.84+278.042+1409.34+135.442+1052.94+135.442L361.74+136.442L803.74+490.442L1060.74+490.442C1335.24+490.442+1335.24+835.342+1060.74+835.342L1060.74+1164.84C1150.22+1164.84+1210.53+1201.48+1241.68+1250.87C1306.07+1353+1245.76+1509.64+1060.74+1509.64L361.74+1863.54L1052.94+1864.54C1409.24+1864.54+1685.74+1721.94+1695.54+1368.54C1695.54+1205.94+1651.04+1084.44+1572.64+999.942C1651.04+915.542+1695.54+794.042+1695.54+631.442Z"}),O.createElement("path",{style:{filter:"url(#shadow1)"},fill:"#FFFFFF",opacity:"1",d:"M1469.25+631.442C1459.55+278.042+1183.05+135.442+826.65+135.442L135.45+135.442L135.45+1004C135.45+1004+135.427+1255.21+355.626+1255.21C575.825+1255.21+575.848+1004+575.848+1004L577.45+490.442L834.45+490.442C1108.95+490.442+1108.95+835.342+834.45+835.342L664.65+835.342L664.65+1164.84L834.45+1164.84C923.932+1164.84+984.244+1201.48+1015.39+1250.87C1079.78+1353+1019.47+1509.64+834.45+1509.64L135.45+1509.64L135.45+1864.54L826.65+1864.54C1182.95+1864.54+1459.45+1721.94+1469.25+1368.54C1469.25+1205.94+1424.75+1084.44+1346.35+999.942C1424.75+915.542+1469.25+794.042+1469.25+631.442Z"})))}}const Jt=f.React,Kt=g.getByDisplayName("Tooltip");var Xt=new class{initialize(){u.suppressErrors(this.patchSocial.bind(this),"BD Social Patch")(),u.suppressErrors(this.patchGuildPills.bind(this),"BD Guild Pills Patch")(),u.suppressErrors(this.patchGuildListItems.bind(this),"BD Guild List Items Patch")(),u.suppressErrors(this.patchGuildSeparator.bind(this),"BD Guild Separator Patch")(),u.suppressErrors(this.patchMessageHeader.bind(this),"BD Message Header Patch")(),u.suppressErrors(this.patchMemberList.bind(this),"BD Member List Patch")()}patchSocial(){if(this.socialPatch)return;const e=g.getByDisplayName("TabBar"),t=g.getByDisplayName("Anchor");e&&(this.socialPatch=L.after("ComponentPatcher",e.prototype,"render",(e,s,n)=>{const o=n.props.children;if(!o||!o.length||o.length<3)return;if("Separator"!==o[o.length-3].type.displayName)return;if(!o[o.length-2].type.toString().includes("socialLinks"))return;if(t){const e=o[o.length-2].type,s=function(){const s=e(...arguments);return s.props.children.push(f.React.createElement(t,{className:"bd-social-link",href:"https://twitter.com/BandagedBD",title:"BandagedBD",target:"_blank"},f.React.createElement(Yt,{size:"16px",className:"bd-social-logo"}))),s};o[o.length-2].type=s}const r=f.React.createElement("div",{className:"colorMuted-HdFt4q size12-3cLvbJ"},"Injector "+i.version),a=`(${i.hash?i.hash.substring(0,7):i.branch})`,l=f.React.createElement("div",{className:"colorMuted-HdFt4q size12-3cLvbJ"},`BBD ${i.bbdVersion} `,f.React.createElement("span",{className:"versionHash-2gXjIB da-versionHash"},a)),d=o[o.length-1].type;o[o.length-1].type=function(){const e=d(...arguments);return e.props.children.splice(e.props.children.length-1,0,r),e.props.children.splice(1,0,l),e}}))}patchGuildListItems(){if(this.guildListItemsPatch)return;const e=f.GuildClasses.listItem.split(" ")[0],t=f.GuildClasses.blobContainer.split(" ")[0],s=u.getReactInstance(document.querySelector(`.${e} .${t}`).parentElement).return.type;s&&(this.guildListItemsPatch=L.after("ComponentPatcher",s.prototype,"render",(e,t,s)=>{if(!s||!e)return;const n=e.props;return s.props.className+=" bd-guild",n.unread&&(s.props.className+=" bd-unread"),n.selected&&(s.props.className+=" bd-selected"),n.audio&&(s.props.className+=" bd-audio"),n.video&&(s.props.className+=" bd-video"),n.badge&&(s.props.className+=" bd-badge"),n.animatable&&(s.props.className+=" bd-animatable"),s}))}patchGuildPills(){if(this.guildPillPatch)return;const e=g.getModule(e=>e.default&&!e.default.displayName&&e.default.toString&&e.default.toString().includes("translate3d"));e&&(this.guildPillPatch=L.after("ComponentPatcher",e,"default",(e,t,s)=>{const n=t[0];return n.unread&&(s.props.className+=" bd-unread"),n.selected&&(s.props.className+=" bd-selected"),n.hovered&&(s.props.className+=" bd-hovered"),s}))}patchGuildSeparator(){if(this.guildSeparatorPatch)return;const e=g.getByDisplayName("Guilds"),t=g.getByProps("renderListItem");if(!t||!e)return;const s=function(){const e=t.Separator(...arguments);return e.props.className+=" bd-guild-separator",e};this.guildSeparatorPatch=L.after("ComponentPatcher",e.prototype,"render",(e,t,n)=>{const i=u.findInReactTree(n,e=>e.type&&!e.type.displayName&&"function"==typeof e.type&&u.isEmpty(e.props));i&&(i.type=s)})}patchMessageHeader(){if(this.messageHeaderPatch)return;const e=g.getByProps("MessageTimestamp"),t=g.find(e=>"Anchor"==e.displayName);t&&e&&e.default&&(this.messageHeaderPatch=L.after("ComponentPatcher",e,"default",(e,s,n)=>{const i=u.getNestedProp(s[0],"message.author"),o=u.getNestedProp(n,"props.children.1.props.children.1.props.children");o&&i&&i.id&&"249746236008169473"===i.id&&Array.isArray(o)&&o.push(Jt.createElement(Kt,{color:"black",position:"top",text:"BandagedBD Developer"},e=>Jt.createElement(t,Object.assign({className:"bd-chat-badge",href:"https://github.com/rauenzi/BetterDiscordApp",title:"BandagedBD",target:"_blank"},e),Jt.createElement(Yt,{size:"16px",className:"bd-logo"}))))}))}patchMemberList(){if(this.memberListPatch)return;const e=g.findByDisplayName("MemberListItem"),t=g.find(e=>"Anchor"==e.displayName);t&&e&&e.prototype&&e.prototype.renderDecorators&&(this.memberListPatch=L.after("ComponentPatcher",e.prototype,"renderDecorators",(e,s,n)=>{const i=u.getNestedProp(e,"props.user"),o=u.getNestedProp(n,"props.children");o&&i&&i.id&&"249746236008169473"===i.id&&Array.isArray(o)&&o.push(Jt.createElement(Kt,{color:"black",position:"top",text:"BandagedBD Developer"},e=>Jt.createElement(t,Object.assign({className:"bd-member-badge",href:"https://github.com/rauenzi/BetterDiscordApp",title:"BandagedBD",target:"_blank"},e),Jt.createElement(Yt,{size:"16px",className:"bd-logo"}))))}))}};const{ipcRenderer:es}=s(0),ts=f.GuildClasses;!function(){const e=Object.getOwnPropertyDescriptor(HTMLIFrameElement.prototype,"contentWindow").get;Object.defineProperty(HTMLIFrameElement.prototype,"contentWindow",{get:function(){const t=Reflect.apply(e,this,arguments);return new Proxy(t,{getOwnPropertyDescriptor:function(e,t){if("localStorage"!==t)return Object.getOwnPropertyDescriptor(e,t)},get:function(e,t){if("localStorage"===t)return null;const s=e[t];return"function"==typeof s?s.bind(e):s}})}}),Object.defineProperty(Reflect,"apply",{value:Reflect.apply,writable:!1,configurable:!1}),Object.defineProperty(Function.prototype,"bind",{value:Function.prototype.bind,writable:!1,configurable:!1});const t=XMLHttpRequest.prototype.open;XMLHttpRequest.prototype.open=function(){const e=arguments[1];return e.toLowerCase().includes("api/webhooks")?null:Reflect.apply(t,this,arguments)}}(),function(){const e="betterdiscord/",t=s(4),n=t._load;t._load=function(t){if("betterdiscord"===t||t.startsWith(e)){if("bdapi"==t.substr(e.length))return Xe}return n.apply(this,arguments)}}(),window.BdApi=Xe,st.show(),new class{constructor(){es.invoke("bd-config","get").then(e=>{this.hasStarted||(Object.assign(i,e),this.init())})}get dependencies(){return[{name:"jquery",type:"script",url:"//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js",backup:"//cdn.jsdelivr.net/gh/jquery/jquery@2.0.0/jquery.min.js",local:null},{name:"bd-stylesheet",type:"style",url:"//cdn.staticaly.com/gh/{{repo}}/BetterDiscordApp/{{hash}}/dist/style.min.css",backup:"//rauenzi.github.io/BetterDiscordApp/dist/style.min.css",local:"{{localServer}}/BetterDiscordApp/dist/style.min.css"}]}setConfig(e){this.hasStarted||Object.assign(i,e)}async init(){if(this.hasStarted)return;this.hasStarted=!0;let e=new Promise(e=>e());if(window.$&&window.jQuery||(e=this.loadDependencies()),w.initialize(),await D.initialize(),i.versioni.version&&W.showConfirmationModal(k.Startup.updateAvailable,k.Startup.updateInfo.format({version:t}),{confirmText:k.Startup.updateNow,cancelText:k.Startup.maybeLater,onConfirm:async()=>{const e=()=>{W.alert(k.Startup.updateFailed,k.Startup.manualUpdate)};try{if(!await this.updateInjector())return e();const t=s(0).remote.app;t.relaunch(),t.exit()}catch(t){e()}}}),c.log("Startup","Initializing Settings"),T.initialize(),await this.waitForGuilds(),F.initialize(),Xt.initialize();for(const e in n)n[e].initialize();await e,c.log("Startup","Loading Plugins");const o=Ve.initialize();c.log("Startup","Loading Themes");const r=Ye.initialize();c.log("Startup","Removing Loading Icon"),st.hide(),c.log("Startup","Collecting Startup Errors"),W.showAddonErrors({plugins:o,themes:r});const a=w.getBDData("version");i.bbdVersion>a&&(W.showChangelogModal(l),w.setBDData("version",i.bbdVersion))}waitForGuilds(){let e=0;return new Promise(t=>{const s=function(){e++,"complete"!=document.readyState&&setTimeout(s,100);const n=ts.wrapper.split(" ")[0],o=ts.listItem.split(" ")[0],r=ts.blobContainer.split(" ")[0];return document.querySelectorAll(`.${n} .${o} .${r}`).length>0||e>=50?t(i.deferLoaded=!0):void setTimeout(s,100)};s()})}async loadDependencies(){for(const e of this.dependencies){const t=u.formatString(i.local&&null!=e.local?e.local:e.url,{repo:i.repo,hash:i.hash,localServer:i.localServer});c.log("Startup",`Loading Resource (${t})`);const s=("script"==e.type?C.injectScript:C.linkStyle).bind(C);try{await s(e.name,t)}catch(n){const o=u.formatString(e.backup,{minified:i.minified?".min":""});c.stacktrace("Startup",`Could not load ${t}. Using backup ${o}`,n);try{await s(e.name,o)}catch(s){c.stacktrace("Startup",`Could not load ${t}. Using backup ${o}`,n),"jquery"===e.name&&W.alert(k.Startup.jqueryFailed,k.Startup.jqueryFailedDetails)}}}}async updateInjector(){const e=w.injectionPath;if(!e)return!1;const t=s(2),n=s(1),i=s(6),o=s(7),r=s(8),a=s(3),l=n.resolve(e,".."),d=n.basename(e),h="https://github.com/rauenzi/BetterDiscordApp/archive/injector.zip",u=n.resolve(l,"injector.zip"),p=n.resolve(l,"BetterDiscordApp-injector");c.log("InjectorUpdate","Downloading "+h);let m=await new Promise(e=>{a.get({url:h,encoding:null},async(s,n,i)=>{if(s||200!==n.statusCode)return e(!1);await new Promise(e=>t.exists(u,e))&&await new Promise(e=>t.rename(u,`${u}.bak${Math.round(performance.now())}`,e)),c.log("InjectorUpdate","Writing "+u),t.writeFile(u,i,t=>e(!t))})});if(!m)return m;await new Promise(e=>t.exists(p,e))&&await new Promise(e=>t.rename(p,`${p}.bak${Math.round(performance.now())}`,e));const g=await new Promise(e=>o.open(u,{lazyEntries:!0},(t,s)=>e(s)));g.on("entry",(function(e){if(e.fileName.endsWith("/"))return g.readEntry();c.log("InjectorUpdate","Extracting "+e.fileName);const s=n.resolve(l,e.fileName);r.sync(n.dirname(s)),g.openReadStream(e,(function(e,n){if(e)return m=!1;n.on("end",(function(){g.readEntry()})),n.pipe(t.createWriteStream(s))}))})),g.readEntry(),await new Promise(e=>g.once("end",e));const f=n.resolve(l,`${d}.bak${Math.round(performance.now())}`);return await new Promise(s=>t.rename(e,f,s)),c.log("InjectorUpdate",`Renaming ${n.basename(p)} to ${d}`),m=await new Promise(s=>t.rename(p,e,e=>s(!e))),m?m?(await new Promise(e=>i(f,e)),await new Promise(e=>t.unlink(u,e)),c.log("InjectorUpdate","Injector Updated!"),m):(c.err("InjectorUpdate","Something went wrong... restoring backups."),await new Promise(e=>i(p,e)),await new Promise(s=>t.rename(f,e,s)),m):(c.err("InjectorUpdate","Failed to rename the final directory"),m)}}}]); \ No newline at end of file diff --git a/dist/style.css b/dist/style.css index 48b2765d..26cb76ec 100644 --- a/dist/style.css +++ b/dist/style.css @@ -1 +1,2277 @@ -.react-error{color:red;font-weight:700;font-family:Arial,Helvetica,sans-serif;cursor:pointer}.bd-settings-group.collapsible .bd-settings-title{display:flex;justify-content:space-between}.bd-settings-group.collapsible .bd-settings-title::after{content:"";background:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxOS4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iQ2FscXVlXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSItOTUwIDUzMiAxOCAxOCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAtOTUwIDUzMiAxOCAxODsiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4NCgkuc3Qwe2ZpbGw6bm9uZTt9DQoJLnN0MXtmaWxsOm5vbmU7c3Ryb2tlOiNGRkZGRkY7c3Ryb2tlLXdpZHRoOjEuNTtzdHJva2UtbWl0ZXJsaW1pdDoxMDt9DQo8L3N0eWxlPg0KPHBhdGggY2xhc3M9InN0MCIgZD0iTS05MzIsNTMydjE4aC0xOHYtMThILTkzMnoiLz4NCjxwb2x5bGluZSBjbGFzcz0ic3QxIiBwb2ludHM9Ii05MzYuNiw1MzguOCAtOTQxLDU0My4yIC05NDUuNCw1MzguOCAiLz4NCjwvc3ZnPg0K);height:20px;width:20px;display:inline-block;vertical-align:bottom;transition:transform .3s ease;transform:rotate(0)}.bd-settings-group.collapsed .bd-settings-title::after{transition:transform .3s ease;transform:rotate(90deg)}.bd-settings-container{height:auto;overflow:hidden;transition:height 300ms cubic-bezier(.47,0,.745,.715)}.bd-settings-group.collapsed .bd-settings-container{height:0}.bd-settings-group~.bd-settings-group .bd-settings-title{margin-top:30px;transition:margin-top 300ms ease}.bd-settings-group.collapsed+.bd-settings-group .bd-settings-title{margin-top:0}.bd-settings-group.collapsible .bd-settings-title{order:1;align-items:center}.bd-settings-group.collapsible .bd-settings-title::before{content:"";background-color:rgba(114,118,125,.3);height:2px;order:2;flex:1;margin:0 10px 0 15px}.bd-settings-group.collapsible .bd-settings-title::after{order:3}.bd-settings-title.bd-settings-group-title{margin-bottom:10px}.checkbox-item{display:flex}.checkbox-item .checkbox-label{margin-right:8px}#bd-connection{margin-left:10px}.bd-button{background-color:#3e82e5;color:#fff;border-radius:3px;padding:2px 6px}.bd-button:hover{background-color:#3875ce}.bd-button:active{background-color:#3268b7}.bd-footnote{color:#b9bbbe;font-size:11px}.bd-button-next,.bd-button-reconnect{margin:5px 10px 10px 0;width:100%;min-height:20px}.bd-server-card{position:relative;border-width:1px;border-style:solid;border-radius:5px;background:rgba(32,34,37,.6);border-color:#202225;margin-bottom:8px}.bd-server-header,.bd-server-footer{display:flex;color:#b9bbbe}.bd-server-header{text-transform:uppercase;letter-spacing:.5px}.bd-server-card .bd-button{margin-top:4px}.bd-button.bd-button-success{background-color:#3ac15c}.bd-button.bd-button-success:hover{background-color:#34ae53}.bd-button.bd-button-success:active{background-color:#2e9a4a}#bbd-version{font-size:12px;font-weight:600;color:#72767d;padding:2px 10px}.settings-open .bd-close{cursor:pointer;float:right}@keyframes open-window{0%{transform:scale(.9)}to{transform:none}}.floating-window{animation:open-window 200ms ease;min-width:200px;min-height:300px;box-shadow:0 2px 10px 0 rgba(0,0,0,.2);display:flex;flex-direction:column;-webkit-app-region:no-drag;position:fixed;z-index:1001;box-sizing:border-box}.floating-window.modal-open{z-index:999}.floating-window.resizable{overflow:auto;resize:both;padding-bottom:10px;background:#202225}.floating-window-titlebar{width:100%;display:flex;justify-content:space-between;align-items:center;background:#202225;color:#fff;border-bottom:1px solid #272822}.floating-window-content{background:#2f3129;color:#fff;flex:1}.floating-window-titlebar .title{flex:1;text-align:center;padding:2px 0}.floating-window-buttons{display:flex}.floating-window-buttons .button{cursor:pointer;padding:0 2px}.floating-window-buttons .button svg{fill:#dcddde;margin-top:1.5px}.floating-window-buttons .button:hover svg{fill:#fff}.floating-window-buttons .button:hover{background-color:#36393f}.floating-window-buttons .close-button:hover{background-color:#f04747}.floating-window-buttons .close-button:hover svg path.fill{fill:#fff}.floating-window-content #bd-editor-panel{display:flex;flex-direction:column;flex:1}.floating-window-content{display:flex;flex-direction:column}.floating-window .editor-wrapper{flex:1}.floating-window .ace_editor{height:auto;flex:1}.floating-window #bd-editor-controls{height:auto;background:#202225;border:0;box-shadow:0 1px 0 0 #2f3129 inset}.bd-addon-controls{display:flex;align-items:center;justify-content:space-between}.bd-addon-controls .bd-search{font-size:13px;margin:0;width:200px}.bd-addon-dropdowns{display:flex}.bd-select-wrapper+.bd-select-wrapper{margin-left:10px}.bd-select-wrapper{color:#f6f6f7;font-size:13px;display:flex;align-items:center}.bd-select-wrapper label{opacity:.3;margin-right:5px}.bd-select{position:relative;cursor:pointer;color:#f6f6f7;font-size:13px;display:flex;align-items:center;justify-content:space-between;background-color:rgba(0,0,0,.1);border:1px solid rgba(0,0,0,.3);border-radius:3px;padding:5px 5px 5px 0}.bd-select.bd-select-transparent{background:0 0;border:0;padding:0}.bd-select-value{padding-left:12px}.bd-select-arrow{margin-left:10px}.bd-select .bd-select-options{position:absolute;background:#2f3136;border-radius:0 0 3px 3px;max-height:300px;min-width:calc(100% + 2px);overflow-y:auto;box-shadow:rgba(0,0,0,.3) 0 1px 5px 0;border:1px solid rgba(0,0,0,.3);border-top:0;margin-top:-1px;margin-left:-1px;z-index:2;top:100%}.bd-select-transparent .bd-select-options{border:1px solid rgba(0,0,0,.3);margin-top:3px;border-radius:3px}.bd-select .bd-select-option{padding:8px 12px;cursor:pointer;white-space:pre}.bd-select .bd-select-option:hover,.bd-select .bd-select-option.selected{background:#26272b}.bd-search-wrapper{padding:3px;border-radius:3px;outline:0;border:0;background-color:#202225;color:#fff;display:flex;align-items:center}.bd-search{padding:2px 3px;background:0 0;border:0;color:#fff;flex:1}.bd-search-wrapper>svg{margin-right:2px}.bd-setting-item .bd-select{min-width:200px}.bd-settings-group.expanded .bd-settings-container:not(.animating){overflow:visible}.bd-switch{background-color:#72767d;border-radius:14px;width:42px;height:24px;opacity:1;overflow:hidden;user-select:none;position:relative;display:block;flex:0 0 auto;transition:background .15s ease-in-out,box-shadow .15s ease-in-out,border .15s ease-in-out,opacity .15s ease-in-out;margin-left:10px;box-shadow:inset 0 1px 1px rgba(0,0,0,.15)}.bd-switch::before{content:"";display:block;position:absolute;top:0;left:0;bottom:0;right:0;z-index:0;opacity:0;background-color:#000}.bd-switch::after{content:"";display:block;position:absolute;background-color:#fff;z-index:1;width:18px;margin:3px;border-radius:9px;height:18px;left:0;transition:transform .15s ease-in-out,width .1s ease-in-out,left .1s ease-in-out;box-shadow:0 2px 4px rgba(0,0,0,.3)}.bd-switch .bd-checkbox{position:absolute;width:100%;height:100%;opacity:0;padding:0;margin:0;z-index:2;cursor:pointer}.bd-switch-checked{background-color:#3e82e5}.bd-switch-checked::after{transform:translate3d(18px,0,0)}.bd-switch-disabled{opacity:.3;cursor:not-allowed}.bd-setting-item{display:flex;flex-direction:column;margin-bottom:20px}.bd-setting-header{display:flex;justify-content:space-between;align-items:center}.bd-setting-header label{font-weight:500;cursor:pointer;overflow:hidden;word-wrap:break-word;font-size:16px;line-height:24px;color:#f6f6f7}.bd-setting-note{color:#72767d;margin-top:4px;font-size:14px;line-height:20px;font-weight:500}.bd-setting-divider{width:100%;height:1px;margin-top:20px;background-color:rgba(114,118,125,.3)}.bd-controls+.bd-addon-list{margin-top:10px}.bd-addon-button{cursor:pointer}.bd-addon-button+.bd-addon-button{margin-left:5px}#emote-container{padding:10px}.emote-container{display:inline-block;padding:2px;border-radius:5px;width:30px;height:30px;position:relative}.emote-icon{max-width:100%;max-height:100%;position:absolute;margin:auto;top:0;right:0;bottom:0;left:0;cursor:pointer}.emote.stop-animation{animation:none!important}.emote-container:hover{background:rgba(123,123,123,.37)}.emoteflip,.emotespinflip{transform:scaleX(-1)}.emotespin{animation:1s emote-spin infinite linear}.emote1spin{animation:1s emote-spin-reverse infinite linear}.emotespin2{animation:.5s emote-spin infinite linear}.emote2spin{animation:.5s emote-spin-reverse infinite linear}.emotespin3{animation:.2s emote-spin infinite linear}.emote3spin{animation:.2s emote-spin-reverse infinite linear}.emotepulse{animation:1s emote-pulse infinite linear}.emotetr{transform:translateX(-3px)}.emotebl{transform:translateY(-3px)}.emotebr{transform:translate(-3px,-3px)}.emoteshake{animation:1s emote-shake infinite linear}.emoteflap{transform:scaleY(-1)!important}.emoteshake2{animation:emote-shake2 .3s linear infinite}.emoteshake3{animation:emote-shake3 .1s linear infinite}@keyframes emote-shake2{25%{transform:translate(-1px,-1px)}50%{transform:translate(-1px,1px)}75%{transform:translate(1px,1px)}75%{transform:translate(1px,-1px)}}@keyframes emote-shake3{25%{transform:translate(-1px,-1px)}50%{transform:translate(-1px,1px)}75%{transform:translate(1px,1px)}75%{transform:translate(1px,-1px)}}@keyframes emote-spin{0%{transform:rotate(0deg)}to{transform:rotate(360deg)}}@keyframes emote-spin-reverse{0%{transform:rotate(0deg)}to{transform:rotate(-360deg)}}@keyframes emote-pulse{0%{-webkit-transform:scale(1,1)}50%{-webkit-transform:scale(1.2,1.2)}to{-webkit-transform:scale(1,1)}}@keyframes emote-shake{10%,90%{transform:translate3d(-1px,0,0)}20%,80%{transform:translate3d(2px,0,0)}30%,50%,70%{transform:translate3d(-4px,0,0)}40%,60%{transform:translate3d(4px,0,0)}}#removemenu{width:auto;background:#505050;position:absolute;z-index:999999;display:none;box-shadow:0 0 2px #000;padding:2px;left:25px;display:block!important;cursor:pointer;color:#fff;position:fixed}#removemenu ul a{text-decoration:none;color:#fff;padding:3px}.emotewrapper{position:relative;display:inline-flex;object-fit:contain;margin:-.1em .05em -.2em .1em;vertical-align:top}.emotewrapper.jumboable{margin-bottom:0;margin-top:.2em;vertical-align:-.3em}.emote{height:1.45em}.emote.jumboable{height:2rem}.emotewrapper:hover .fav{display:block}.fav{display:none;position:absolute;width:15px;height:15px;right:-7px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAzFBMVEUAAABQUFBMTExLS0tNTU1MTExNTU1NTU1MTExMTExNTU1LS0tEREBEREBEREBEREBJSUhLS0tLS0tEREBNTU1NTU1NTU1EREArKyhNTU1NTU0AAABMTExKSklMTExNTU1NTU1NTU1KSkpMTExKSkhNTU1KSkpISEZNTU1LS0tAQDxOTk5KSkpLS0tNTU1MTExMTEx/f39MTExMTExLS0pLS0tMTExNTU1NTU1LS0pNTU1NTU1NTU1NTU1NTU1NTUxNTU1NTU1NTUxMTEzB8C/5AAAAOnRSTlMAI8X96oWAgYSF68QBAg0PMCb9BIuLgQUD4N0Bh0mKhZSOQ4gcrKscaW8QRE6fmJyjAshASceG7cIpqQOxTQAAALVJREFUGFddx6FOA0EYAOGZvd07Qm6vVCAAgUUgQEDfX/YZMAigqaFN7iC5tsmPqGPUN/AvUVeoEbGOCElJz08Uzeixqu4AqomVVSNngOVjTqDGZSl3UFtPGV2ot2zaq96YM9p5Ddzcf/nTTAlj+/sNtNu8OcwkIsbPBtrUfMQeEhGQmHbmGIFMwLPzu6UMIwBNgToshgq8Nr2ki+Oy7ebDHp70LRPWB6OZgfWLWei7fJonOOsPCGA9kVlssOoAAAAASUVORK5CYII=);border:0;background-size:100% 100%;background-repeat:no-repeat;background-color:#303030;border-radius:5px;top:-7px;cursor:pointer}.fav.active{background-color:#ff0}.emojiPicker-3m1S-j{box-shadow:none;border-top:none;border-radius:0 0 5px 5px}#bd-qem{border-radius:5px 5px 0 0;background:#fff;border-bottom:1px solid rgba(0,0,0,.1)!important;height:30px;display:flex;flex-direction:row;padding-right:1px!important}#bd-qem button{border-left:1px solid #efefef;background:0 0;box-shadow:#cecece 1px 0 0 0;flex-grow:1}#bd-qem button:hover{background:#ececec}#bd-qem-twitch{border-radius:5px 0 0 0;order:2}#bd-qem-emojis{border-radius:0 5px 0 0;order:3}#bd-qem-favourite{order:3}#bd-qem button.active{background-color:#e2e2e2}#bd-qem-twitch-container,#bd-qem-favourite-container{width:346px;height:329px;background-color:#fff;border-radius:0 0 5px 5px}#bd-qem-twitch-container .scroller-wrap,#bd-qem-favourite-container .scroller-wrap{height:100%}.emote-menu-inner{padding:5px 0 0 15px}.bd-qme-hidden #bd-qem-emojis{display:none}#bd-pub-li{height:20px;margin-bottom:10px;overflow:hidden}#bd-pub-button{border-radius:4px;background-color:#2f3136;color:#b9bbbe;text-align:center;font-size:12px;line-height:20px;height:20px}.bd-server-card .bd-server-tags{flex:1 1 auto;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;width:0;line-height:24px;font-size:12px;color:#b9bbbe;font-weight:700;margin-right:10px}.bd-server-card.bd-server-card-pinned{margin-bottom:15px}.bd-server-card.bd-server-card-pinned:after{background:#3a71c1;content:"";height:3px;width:100%;display:block;margin-top:7px;position:absolute;top:100%}.bd-server-description-container{color:#b9bbbe;min-height:65px;max-height:65px;border-top:1px solid #3f4146;border-bottom:1px solid #3f4146;padding-top:5px;font-size:13px}.bd-server-header{justify-content:space-between;font-weight:600}.bd-server-card{display:flex}.bd-server-content{padding:5px 10px;flex:1}.bd-server-image{min-width:115px;min-height:115px;max-width:115px;max-height:115px}.bd-server-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;padding-right:15px;max-width:330px;flex:1 1 50%}.bd-layer{-ms-flex-direction:column;-webkit-box-direction:normal;-webkit-box-orient:vertical;bottom:0;display:-webkit-box;display:-ms-flexbox;display:flex;flex-direction:column;left:0;position:absolute;right:0;top:0}#pubslayer button{background:#7289da;color:#fff;font-size:14px;font-weight:500;line-height:16px;padding:2px 16px;border:0;border-radius:3px;transition:background-color .17s ease}#pubslayer button:hover{background-color:#677bc4}#pubslayer input{color:#f6f6f7;background-color:rgba(0,0,0,.1);border-color:rgba(0,0,0,.3);padding:10px;height:30px;border-width:1px;border-style:solid;border-radius:3px;outline:0;transition:background-color .15s ease,border .15s ease}#bd-editor-panel{display:flex;flex-direction:column}#bd-editor-controls button{margin:0 5px 0 0;background:0 0;color:#fff;height:26px;font-weight:600;border-radius:3px;display:flex;align-items:center}#bd-editor-controls button:hover{background:rgba(255,255,255,.05)}#bd-editor-controls button svg{fill:#fff}#bd-editor-controls button:last-of-type{margin-right:0}#bd-editor-controls{display:flex;align-items:center;justify-content:space-between;background:#272822;color:#fff;border:0;box-shadow:0 1px 0 0 #2f3129 inset;padding:5px}.editor-wrapper{display:flex}.ace_editor{line-height:normal;font-family:Consolas,monospace;box-sizing:border-box;height:calc(100vh - 250px);font-size:14px;width:100%}.bd-monokai .editor .ace_gutter{background:#2f3136}.bd-monokai .ace_editor{background:#292b2f}.bd-monokai #bd-editor-controls{background:#202225}.theme-light #bd-editor-controls{background:#e8e8e8;border:1px solid #fff;border-top:1px solid #adadad;box-shadow:inset 0 1px 0 0 #fff}.controls-section{display:flex;align-items:center}.controls-section .checkbox-inner{width:14px;height:14px}.controls-section .checkbox-inner .checkbox:checked+span::after{left:2px;top:-2px}.controls-section .checkbox-label{font-size:14px}#floating-editor-window{min-width:340px;min-height:280px;max-height:900px;max-width:750px}.floating-addon-window{min-width:535px;min-height:605px;max-height:90%;max-width:90%}#ace_settingsmenu_container{background:rgba(0,0,0,.7)!important}body #ace_settingsmenu{padding-top:35px}body .ace_closeButton{position:absolute;top:8px;right:12px;z-index:10000;padding:0;cursor:pointer;background:0 0;border:0}body .ace_closeButton::before{content:"✖";color:#36393f}body .ace_closeButton:active{transform:translateY(2px)}#bd-editor-controls .help-text{margin-top:8px;margin-bottom:3px;font-size:14px}#bd-editor-controls .help-text .inline{background:#2f3129;padding:.2em;margin:-.2em 0;border-radius:3px}.bd-social-logo{opacity:.6}.bd-social-link:hover .bd-social-logo{opacity:1}.standardSidebarView-3F1I7i .bd-versioninfo-wrapper{bottom:0;left:0;position:fixed;background:inherit;right:0;padding:5px}.standardSidebarView-3F1I7i .bd-versioninfo-wrapper span{color:#b9bbbe;font-weight:600;font-size:11px}.standardSidebarView-3F1I7i .bd-versioninfo-wrapper a{font-size:11px}.bd-button-title{margin-left:10px}.bd-switch-item{flex-direction:column;margin-top:8px}.bd-switch-item h3{font-size:16px;font-weight:500;line-height:24px;flex:1}.theme-dark .bd-switch-item h3{color:#f6f6f7}.theme-light .bd-switch-item h3{color:#4f545c}.bd-switch-item .bd-switch-wrapper{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;position:relative;width:44px;height:24px;display:block;flex:0 0 auto}.bd-switch-item .bd-switch-wrapper input{position:absolute;opacity:0;cursor:pointer;width:100%;height:100%;z-index:1}.bd-switch-item .bd-switch-wrapper .bd-switch{background:#7289da;position:absolute;top:0;right:0;bottom:0;left:0;background:#72767d;border-radius:14px;transition:background .15s ease-in-out,box-shadow .15s ease-in-out,border .15s ease-in-out}.bd-switch-item .bd-switch-wrapper .bd-switch:before{content:"";display:block;width:18px;height:18px;position:absolute;top:3px;left:3px;bottom:3px;background:#f6f6f7;border-radius:10px;transition:all .15s ease;box-shadow:0 3px 1px 0 rgba(0,0,0,.05),0 2px 2px 0 rgba(0,0,0,.1),0 3px 3px 0 rgba(0,0,0,.05)}.bd-switch-item .bd-switch-wrapper .bd-switch.checked{background:#7289da}.bd-switch-item .bd-switch-wrapper .bd-switch.checked:before{transform:translateX(20px)}#bd-settingspane-container .scroller-wrap{height:100%}#bd-settingspane-container .scroller-wrap .scroller{display:flex}.bd-reload{cursor:pointer;vertical-align:top;fill:#dcddde}.bd-reload:hover{fill:#fff}.bd-reload-header{margin-left:5px}.bd-reload-card{margin-right:5px}.bd-controls{display:flex}.bd-addon-list{user-select:text}.bd-addon-list .bd-addon-card{max-height:175px;margin-bottom:20px;padding:5px 8px;border:1px solid transparent;border-radius:5px;overflow:hidden}.theme-dark .bd-addon-list .bd-addon-card{background-color:rgba(32,34,37,.6);color:#f6f6f7;border-color:#202225}.theme-light .bd-addon-list .bd-addon-card{background-color:#f8f9f9;color:#4f545c;border-color:#dcddde}.bd-addon-list .bd-addon-card.settings-open{max-height:800px;overflow-y:auto}.bd-addon-list .bd-addon-header{font-size:12px;font-weight:700;display:flex;align-items:center;justify-content:space-between;padding-bottom:5px;border-bottom:1px solid transparent;overflow:hidden}.theme-dark .bd-addon-list .bd-addon-header{color:#f6f6f7;border-bottom-color:rgba(114,118,125,.3)}.theme-light .bd-addon-list .bd-addon-header{color:#4f545c;border-bottom-color:rgba(185,187,190,.3)}.bd-addon-list .bd-description{word-break:break-word;max-height:100px;margin:5px 0;padding:5px 0;overflow-y:auto}.theme-dark .bd-addon-list .bd-description{color:#b9bbbe}.theme-light .bd-addon-list .bd-description{color:#72767d}.bd-addon-list .scroller::-webkit-scrollbar-track-piece,.bd-addon-list .scroller::-webkit-scrollbar-thumb{border-radius:0!important;border-color:transparent}.bd-addon-list .bd-footer{font-size:12px;font-weight:700;display:flex;align-items:center;justify-content:space-between;padding-top:5px;border-top:1px solid transparent;overflow:hidden}.theme-dark .bd-addon-list .bd-footer{border-top-color:rgba(114,118,125,.3)}.theme-light .bd-addon-list .bd-footer{border-top-color:rgba(185,187,190,.3)}.bd-addon-list .bd-footer button{padding:3px 16px;transition:opacity 250ms ease}.bd-addon-list .bd-footer button:disabled{opacity:.4}.bd-addon-list .bd-footer a{color:#3e82e5}.bd-addon-list .bd-footer a:hover{text-decoration:underline}@keyframes bd-backdrop{to{opacity:.85}}@keyframes bd-modal-wrapper{to{transform:scale(1);opacity:1}}@keyframes bd-backdrop-closing{to{opacity:0}}@keyframes bd-modal-wrapper-closing{to{transform:scale(.7);opacity:0}}.bd-backdrop{animation:bd-backdrop 250ms ease;animation-fill-mode:forwards;opacity:0;background-color:#000;transform:translateZ(0)}.bd-modal-wrapper.closing .bd-backdrop{animation:bd-backdrop-closing 200ms linear;animation-fill-mode:forwards;animation-delay:50ms;opacity:.85}.bd-modal-wrapper.closing .bd-modal{animation:bd-modal-wrapper-closing 250ms cubic-bezier(.19,1,.22,1);animation-fill-mode:forwards;opacity:1;transform:scale(1)}.bd-modal-wrapper .bd-modal{animation:bd-modal-wrapper 250ms cubic-bezier(.175,.885,.32,1.275);animation-fill-mode:forwards;transform:scale(.7);transform-origin:50% 50%;display:flex;align-items:center;box-sizing:border-box;contain:content;justify-content:center;top:0;left:0;bottom:0;right:0;opacity:0;pointer-events:none;position:absolute;z-index:1000}.bd-modal-wrapper .bd-modal-inner{display:flex;contain:layout;flex-direction:column;pointer-events:auto;border:1px solid rgba(28,36,43,.6);border-radius:5px;box-shadow:0 2px 10px 0 rgba(0,0,0,.2);overflow:hidden;max-height:660px;min-height:200px;width:440px;user-select:text}.bd-modal-wrapper .bd-content-modal .bd-modal-inner{height:500px;width:700px}.bd-modal-wrapper .header{background-color:#35393e;box-shadow:0 2px 3px 0 rgba(0,0,0,.2);padding:12px 20px;z-index:1;color:#fff;font-size:16px;font-weight:700;line-height:19px}.bd-modal-wrapper .bd-modal-body{background-color:#36393f;color:#fff;flex-direction:row;overflow:hidden;display:flex;flex-direction:column;flex:1;contain:layout;position:relative}.bd-modal-wrapper .scroller{padding:10px}.bd-modal-wrapper .bd-content-modal .bd-modal-body{padding:0}.bd-modal-wrapper .scroller{overflow-y:auto}.bd-modal-wrapper .footer{display:flex;justify-content:flex-end;padding:10px 20px}.bd-modal-wrapper .footer button{min-height:32px;min-width:60px;align-items:center;display:flex;font-size:14px;font-weight:500;justify-content:center;line-height:16px;padding:2px 16px;user-select:none}.bd-modal-wrapper .tab-bar-container{align-items:center;border-bottom:0;background:rgba(0,0,0,.2);box-shadow:0 2px 3px 0 rgba(0,0,0,.1);display:flex;flex-direction:row;justify-content:space-between;margin-bottom:15px}.bd-modal-wrapper .tab-bar.TOP{margin:0;border:0;display:flex;flex-direction:row;justify-content:space-between;align-items:center}.bd-modal-wrapper .tab-bar-container .tab-bar-item{margin:0 15px;padding:15px 0;color:#fff!important;opacity:.5;transition:opacity 200ms ease;border-bottom:2px solid transparent}.bd-modal-wrapper .tab-bar-container .tab-bar-item:hover{border-color:#fff;cursor:pointer}.bd-modal-wrapper .tab-bar-container .tab-bar-item.selected{opacity:1;border-color:#fff}.bd-modal-wrapper .tab-bar.TOP .tab-bar-item+.tab-bar-item{margin:0}.bd-modal-wrapper .table-header{display:flex;justify-content:space-between;color:#fff;font-weight:700;padding-bottom:10px;margin:3px 15px 0 15px;border-bottom:1px solid #fff;font-size:14px}.bd-modal-wrapper .table-column{width:25%}.bd-modal-wrapper .table-column.column-error{width:50%}.bd-modal-wrapper .table-column{word-wrap:break-word}.bd-modal-wrapper .errors{display:flex;flex-direction:column;padding:0;font-size:14px;padding:0 5px}.bd-modal-wrapper .error{display:flex;color:#fff;border-bottom:1px solid rgba(255,255,255,.25);padding:15px 0;align-items:center}.bd-modal-wrapper .error-link{color:#3e82e5;font-weight:500}.bd-modal-wrapper .bd-content-modal .scroller{padding-top:0}.bd-toasts{position:fixed;display:flex;top:0;flex-direction:column;align-items:center;justify-content:flex-end;pointer-events:none;z-index:4000}@keyframes bd-toast-up{0%{transform:translateY(0);opacity:0}}.bd-toast{animation:bd-toast-up 300ms ease;transform:translateY(-10px);background:#36393f;padding:10px;border-radius:5px;box-shadow:0 0 0 1px rgba(32,34,37,.6),0 2px 10px 0 rgba(0,0,0,.2);font-weight:500;color:#fff;user-select:text;font-size:14px;opacity:1;margin-top:10px;pointer-events:none;user-select:none}@keyframes bd-toast-down{to{transform:translateY(0);opacity:0}}.bd-toast.closing{animation:bd-toast-down 200ms ease;animation-fill-mode:forwards;opacity:1;transform:translateY(-10px)}.bd-toast.icon{padding-left:30px;background-size:20px 20px;background-repeat:no-repeat;background-position:6px 50%}.bd-toast.toast-info{background-color:#4a90e2}.bd-toast.toast-info.icon{background-image:url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjRkZGRkZGIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMSAxNWgtMnYtNmgydjZ6bTAtOGgtMlY3aDJ2MnoiLz48L3N2Zz4=)}.bd-toast.toast-success{background-color:#43b581}.bd-toast.toast-success.icon{background-image:url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjRkZGRkZGIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptLTIgMTVsLTUtNSAxLjQxLTEuNDFMMTAgMTQuMTdsNy41OS03LjU5TDE5IDhsLTkgOXoiLz48L3N2Zz4=)}.bd-toast.toast-danger,.bd-toast.toast-error{background-color:#f04747}.bd-toast.toast-danger.icon,.bd-toast.toast-error.icon{background-image:url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjRkZGRkZGIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTEyIDJDNi40NyAyIDIgNi40NyAyIDEyczQuNDcgMTAgMTAgMTAgMTAtNC40NyAxMC0xMFMxNy41MyAyIDEyIDJ6bTUgMTMuNTlMMTUuNTkgMTcgMTIgMTMuNDEgOC40MSAxNyA3IDE1LjU5IDEwLjU5IDEyIDcgOC40MSA4LjQxIDcgMTIgMTAuNTkgMTUuNTkgNyAxNyA4LjQxIDEzLjQxIDEyIDE3IDE1LjU5eiIvPiAgICA8cGF0aCBkPSJNMCAwaDI0djI0SDB6IiBmaWxsPSJub25lIi8+PC9zdmc+)}.bd-toast.toast-warning,.bd-toast.toast-warn{background-color:#ffa600;color:#fff}.bd-toast.toast-warning.icon,.bd-toast.toast-warn.icon{background-image:url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjRkZGRkZGIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMSAyMWgyMkwxMiAyIDEgMjF6bTEyLTNoLTJ2LTJoMnYyem0wLTRoLTJ2LTRoMnY0eiIvPjwvc3ZnPg==)}.bd-minimal .divider-32i8lo{opacity:0}.bd-minimal .large-3ChYtB{max-width:20px;max-height:20px;background-size:100%;margin-right:2px;margin-top:0;border-radius:0}.bd-minimal .content-3dzVd8{border-left:2px solid #ebebeb;padding-left:2px}.bd-minimal .theme-dark .content-3dzVd8{border-left:2px solid #303030}.bd-minimal .username-_4ZSMR{font-size:small}.bd-minimal .container-1YxwTf{padding:5px}.bd-minimal .embed-IeVjo6{padding:2px}.bd-minimal .membersWrap-2h-GB4{min-width:0}.bd-minimal .members-1998pB .small-5Os1Bb{max-width:15px;max-height:15px;background-size:15px 15px}.bd-minimal .members-1998pB .small-5Os1Bb .status-oxiHuE{height:5px;width:5px}.bd-minimal .members-1998pB .member-3W1lQa{padding:5px}.bd-minimal .members-1998pB .memberInner-2CPc3V{transform:scale(.9)}.bd-minimal .members-1998pB .membersGroup-v9BXpm{margin-top:3px;transform:scale(.9)}.bd-minimal.bd-minimal-chan .channels-Ie2l6A{display:none}.bd-minimal .channels-Ie2l6A header span{font-size:12px}.bd-minimal .channels-Ie2l6A{width:160px}.bd-minimal .containerDefault-3GGEv_{transform:scale(.9)}.bd-minimal .content-3at_AU{transform:scale(.9)}.bd-minimal .icon-1_QxNX{width:14px;height:14px}.bd-minimal .wrapper-1Rf91z .scroller-2FKFPG .listItem-2P_4kh{width:20px;height:20px;background-size:100%;font-size:15px;line-height:20px;margin:0 12.5px 8px}.bd-minimal .wrapper-1Rf91z .scroller-2FKFPG .wrapper-25eVIn a,.bd-minimal .listItem-2P_4kh .wrapper-25eVIn .icon-27yU2q{width:20px;height:20px;background-size:100%;font-size:15px;line-height:20px}.bd-minimal .listItem-2P_4kh .wrapper-25eVIn{width:20px;height:20px;background-size:100%;font-size:15px;line-height:20px}.bd-minimal .listItem-2P_4kh svg,.bd-minimal .listItem-2P_4kh foreignObject[mask]{mask:none}.bd-minimal .wrapper-1Rf91z .scroller-2FKFPG .homeIcon-tEMBK1{width:10px;height:10px;background-size:100%;font-size:15px;line-height:20px}.bd-minimal .circleIconButton-jET_ig{height:20px;width:20px}.bd-minimal .circleIconButton-jET_ig svg{height:14px;width:14px}.bd-minimal .wrapper-1Rf91z .scroller-2FKFPG .friendsOnline-_wi_fM{margin-left:-15px;font-size:7px}.bd-minimal #bd-pub-li{height:16px}.bd-minimal #bd-pub-button{font-size:8px;line-height:16px;height:16px}.bd-minimal .wrapper-1Rf91z,.bd-minimal .wrapper-1Rf91z .scrollerWrap-1IAIlv,.bd-minimal .wrapper-1Rf91z .scroller-2FKFPG{width:45px}.bd-minimal .wrapper-1Rf91z .guildSeparator-3s64Iy{margin-left:-15px}.bd-minimal .wrapper-1Rf91z .scroller-2FKFPG .listItem-2P_4kh .wrapper-sa6paO{height:20px;margin-top:0;margin-left:-12.5px}.bd-minimal .wrapper-1Rf91z .scroller-2FKFPG .iconBadge-2wi9r4{width:12px;height:12px;background-size:12px}.bd-minimal .container-2Thooq .avatarSmall-3ACRaI{width:15px;height:15px;background-size:15px 15px}.bd-minimal .container-2Thooq .avatarSmall-3ACRaI .status-oxiHuE{height:5px;width:5px}.bd-minimal .container-2Thooq .accountDetails-3k9g4n{transform:scale(.8)}.bd-minimal .container-2Thooq .button-2b6hmh{height:14px;width:14px;background-size:14px 14px;margin-left:3px}.bd-minimal .container-2Thooq .button-2b6hmh svg{height:14px;width:14px}.bd-dark #bd-qem-favourite-container,.bd-dark #bd-qem-twitch-container{background-color:#353535}.bd-dark #bd-qem{border-bottom:1px solid #464646!important;background:#353535}.bd-dark #bd-qem button{background:#353535;border-left:1px solid #242424;box-shadow:#424242 1px 0 0 0;color:#fff}.bd-dark #bd-qem button.active{background-color:#292929}.bd-dark #bd-qem button:hover{background-color:#303030}.bd-dark #bd-qem-favourite-container,.bd-dark #bd-qem-twitch-container{background-color:#353535}.bd-dark .emojiPicker-3m1S-j{background-color:#353535}.bd-dark .emojiPicker-3m1S-j .category-2U57w6{background-color:#353535}.bd-dark .emojiPicker-3m1S-j .header-1nkwgG .searchBar-2pWH0_{background-color:#2b2b2b}.bd-dark .emojiPicker-3m1S-j .searchBar-2pWH0_ input{color:#fff}.bd-dark .emojiPicker-3m1S-j .searchBar-2pWH0_ input::-webkit-input-placeholder{color:#fff}.bd-dark .emojiPicker-3m1S-j .scroller-3vODG7 .emojiItem-109bjA.selected-39BZ4S{background-color:rgba(123,123,123,.37)}.bd-dark .emojiPicker-3m1S-j .dimmer-3iH-5D.visible-3k45bQ{background-color:rgba(62,62,62,.65)}.bd-dark .emojiPicker-3m1S-j .diversitySelector-tmmMv0 .popout-2nUePc{background:#353535;border-color:#202020}.bd-dark #bd-qem-favourite-container .scroller::-webkit-scrollbar,.bd-dark #bd-qem-favourite-container .scroller::-webkit-scrollbar-track,.bd-dark #bd-qem-favourite-container .scroller::-webkit-scrollbar-track-piece,.bd-dark #bd-qem-twitch-container .scroller::-webkit-scrollbar,.bd-dark #bd-qem-twitch-container .scroller::-webkit-scrollbar-track,.bd-dark #bd-qem-twitch-container .scroller::-webkit-scrollbar-track-piece,.bd-dark .emojiPicker-3m1S-j .scroller-3vODG7::-webkit-scrollbar,.bd-dark .emojiPicker-3m1S-j .scroller-3vODG7::-webkit-scrollbar-track,.bd-dark .emojiPicker-3m1S-j .scroller-3vODG7::-webkit-scrollbar-track-piece{background-color:#303030!important;border-color:#303030!important}.bd-dark #bd-qem-twitch-container .scroller::-webkit-scrollbar-thumb,.bd-dark #bd-qem-favourite-container .scroller::-webkit-scrollbar-thumb,.bd-dark .emojiPicker-3g68GS .scroller-3vODG7::-webkit-scrollbar-thumb{border-color:#202020!important;background-color:#202020!important}.bd-dark .theme-light .slide-2pHaq5{background:#36393f}.bd-dark .theme-dark .action-1lSjCi,.bd-dark .theme-light .action-1lSjCi{background:#2f3136}.bd-dark .theme-dark .or-3THJsp,.bd-dark .theme-light .or-3THJsp{background:#2f3136;order:2;height:56px;width:56px;top:103px;line-height:56px;left:calc(50% - 29px);border-radius:50%;border:2px solid #484b52}.bd-dark .create-3jownz{order:1}.bd-dark .join-33Tr-7{order:3}.bd-dark .theme-dark .actionIcon-2IISM_,.bd-dark .theme-light .actionIcon-2IISM_{filter:grayscale(100%) brightness(60%)}.bd-dark .theme-light .footer-2yfCgX{background:#2f3136}.bd-dark .regionSelectModal-12e-57{background:#36393f}.bd-dark .regionSelectModal-12e-57 .regionSelectModalOption-2DSIZ3{background:#2f3136;border:2px solid #484b52}.bd-dark~div #ace_settingsmenu{color:#f6f6f7;background:#36393f;box-shadow:0 0 0 1px rgba(32,34,37,.6),0 2px 10px 0 rgba(0,0,0,.2)}.bd-dark~div #ace_settingsmenu select,.bd-dark~div #ace_settingsmenu input[type=text]{color:#f6f6f7;background:#2f3136;border:1px solid #484b52}.bd-dark~div .ace_closeButton::before{color:#f6f6f7}.bd-chat-badge{vertical-align:bottom;line-height:1.375rem;display:inline-block;height:1.25rem}.bd-member-badge{height:15px;margin-left:4px}.bd-sidebar-header{display:flex;justify-content:space-between}.bd-sidebar-header .bd-changelog-button{height:16px}.bd-sidebar-header .bd-icon{cursor:pointer;fill:#72767d}.bd-sidebar-header .bd-icon:hover{fill:#fff} \ No newline at end of file +/* stylelint-disable no-descending-specificity */ + +#bd-editor-panel { + display: flex; + flex-direction: column; +} + +#bd-editor-controls button { + margin: 0 5px 0 0; + background: none; + color: #fff; + height: 26px; + font-weight: 600; + border-radius: 3px; + display: flex; + align-items: center; +} + +#bd-editor-controls button:hover { + background: rgba(255, 255, 255, 0.05); +} + +#bd-editor-controls button svg { + fill: white; +} + +#bd-editor-controls button:last-of-type { + margin-right: 0; +} + +#bd-editor-controls { + display: flex; + align-items: center; + justify-content: space-between; + background: #272822; + color: #fff; + border: none; + box-shadow: 0 1px 0 0 #2f3129 inset; + padding: 5px; +} + +.editor-wrapper { + display: flex; +} + +.ace_editor { + line-height: normal; + font-family: Consolas, monospace; + box-sizing: border-box; + height: calc(100vh - 250px); + font-size: 14px; + width: 100%; +} + +.bd-monokai .editor .ace_gutter { + background: #2f3136; +} + +.bd-monokai .ace_editor { + background: #292b2f; +} + +.bd-monokai #bd-editor-controls { + background: #202225; +} + +.theme-light #bd-editor-controls { + background: #e8e8e8; + border: 1px solid #fff; + border-top: 1px solid #adadad; + box-shadow: inset 0 1px 0 0 white; +} + +.controls-section { + display: flex; + align-items: center; +} + +.controls-section .checkbox-inner { + width: 14px; + height: 14px; +} + +.controls-section .checkbox-inner .checkbox:checked + span::after { + left: 2px; + top: -2px; +} + +.controls-section .checkbox-label { + font-size: 14px; +} + +/* Ace Editor Settings */ + +#ace_settingsmenu_container { + background: rgba(0, 0, 0, 0.7) !important; /* stylelint-disable-line important */ +} + +body #ace_settingsmenu { + padding-top: 35px; +} + +body .ace_closeButton { + position: absolute; + top: 8px; + right: 12px; + z-index: 10000; + padding: 0; + cursor: pointer; + background: none; + border: none; +} + +body .ace_closeButton::before { + content: "✖"; + color: #36393f; +} + +body .ace_closeButton:active { + transform: translateY(2px); +} + +/* editor help text */ + +#bd-editor-controls .help-text { + margin-top: 8px; + margin-bottom: 3px; + font-size: 14px; +} + +#bd-editor-controls .help-text .inline { + background: #2f3129; + padding: 0.2em; + margin: -0.2em 0; + border-radius: 3px; +} + +/* Emoji Picker */ + +.bd-dark #bd-qem-favourite-container, +.bd-dark #bd-qem-twitch-container { + background-color: #353535; +} + +.bd-dark #bd-qem { + border-bottom: 1px solid #464646; + background: #353535; +} + +.bd-dark #bd-qem button { + background: #353535; + border-left: 1px solid #242424; + box-shadow: #424242 1px 0 0 0; + color: #fff; +} + +.bd-dark #bd-qem button.active { + background-color: #292929; +} + +.bd-dark #bd-qem button:hover { + background-color: #303030; +} + +.bd-dark .emojiPicker-3m1S-j { + background-color: #353535; +} + +.bd-dark .emojiPicker-3m1S-j .category-2U57w6 { + background-color: #353535; +} + +.bd-dark .emojiPicker-3m1S-j .header-1nkwgG .searchBar-2pWH0_ { + background-color: #2b2b2b; +} + +.bd-dark .emojiPicker-3m1S-j .searchBar-2pWH0_ input { + color: #fff; +} + +.bd-dark .emojiPicker-3m1S-j .searchBar-2pWH0_ input::-webkit-input-placeholder { + color: #fff; +} + +.bd-dark .emojiPicker-3m1S-j .scroller-3vODG7 .emojiItem-109bjA.selected-39BZ4S { + background-color: rgba(123, 123, 123, 0.37); +} + +.bd-dark .emojiPicker-3m1S-j .dimmer-3iH-5D.visible-3k45bQ { + background-color: rgba(62, 62, 62, 0.65); +} + +.bd-dark .emojiPicker-3m1S-j .diversitySelector-tmmMv0 .popout-2nUePc { + background: #353535; + border-color: #202020; +} + +.bd-dark #bd-qem-favourite-container .scroller::-webkit-scrollbar, +.bd-dark #bd-qem-favourite-container .scroller::-webkit-scrollbar-track, +.bd-dark #bd-qem-favourite-container .scroller::-webkit-scrollbar-track-piece, +.bd-dark #bd-qem-twitch-container .scroller::-webkit-scrollbar, +.bd-dark #bd-qem-twitch-container .scroller::-webkit-scrollbar-track, +.bd-dark #bd-qem-twitch-container .scroller::-webkit-scrollbar-track-piece, +.bd-dark .emojiPicker-3m1S-j .scroller-3vODG7::-webkit-scrollbar, +.bd-dark .emojiPicker-3m1S-j .scroller-3vODG7::-webkit-scrollbar-track, +.bd-dark .emojiPicker-3m1S-j .scroller-3vODG7::-webkit-scrollbar-track-piece { + background-color: #303030 !important; + border-color: #303030 !important; +} + +.bd-dark #bd-qem-twitch-container .scroller::-webkit-scrollbar-thumb, +.bd-dark #bd-qem-favourite-container .scroller::-webkit-scrollbar-thumb, +.bd-dark .emojiPicker-3g68GS .scroller-3vODG7::-webkit-scrollbar-thumb { + border-color: #202020 !important; + background-color: #202020 !important; +} + +/* add/create server */ + +.bd-dark .theme-light .slide-2pHaq5 { + background: #36393f; +} + +.bd-dark .theme-dark .action-1lSjCi, +.bd-dark .theme-light .action-1lSjCi { + background: #2f3136; +} + +/* centered or */ + +.bd-dark .theme-dark .or-3THJsp, +.bd-dark .theme-light .or-3THJsp { + background: #2f3136; + order: 2; + height: 56px; + width: 56px; + top: 103px; + line-height: 56px; + left: calc(50% - 29px); + border-radius: 50%; + border: 2px solid #484b52; +} + +.bd-dark .create-3jownz { + order: 1; +} + +.bd-dark .join-33Tr-7 { + order: 3; +} + +.bd-dark .theme-dark .actionIcon-2IISM_, +.bd-dark .theme-light .actionIcon-2IISM_ { + filter: grayscale(100%) brightness(60%); +} + +.bd-dark .theme-light .footer-2yfCgX { + background: #2f3136; +} + +/* Region Select */ + +.bd-dark .regionSelectModal-12e-57 { + background: #36393f; +} + +.bd-dark .regionSelectModal-12e-57 .regionSelectModalOption-2DSIZ3 { + background: #2f3136; + border: 2px solid #484b52; +} + +/* Ace Editor Settings */ + +.bd-dark ~ div #ace_settingsmenu { + color: #f6f6f7; + background: #36393f; + box-shadow: 0 0 0 1px rgba(32, 34, 37, 0.6), 0 2px 10px 0 rgba(0, 0, 0, 0.2); +} + +.bd-dark ~ div #ace_settingsmenu select, +.bd-dark ~ div #ace_settingsmenu input[type="text"] { + color: #f6f6f7; + background: #2f3136; + border: 1px solid #484b52; +} + +.bd-dark ~ div .ace_closeButton::before { + color: #f6f6f7; +} + +#removemenu { + width: auto; + background: #505050; + z-index: 999999; + box-shadow: 0 0 2px #000; + padding: 2px; + left: 25px; + display: block; + cursor: pointer; + color: #fff; + position: fixed; +} + +#removemenu ul a { + text-decoration: none; + color: #fff; + padding: 3px; +} + +.emotewrapper { + position: relative; + display: inline-flex; + object-fit: contain; + margin: -0.1em 0.05em -0.2em 0.1em; + vertical-align: top; +} + +.emotewrapper.jumboable { + margin-bottom: 0; + margin-top: 0.2em; + vertical-align: -0.3em; +} + +.emote { + height: 1.45em; +} + +.emote.jumboable { + height: 2rem; +} + +.fav { + display: none; + position: absolute; + width: 15px; + height: 15px; + right: -7px; + background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAzFBMVEUAAABQUFBMTExLS0tNTU1MTExNTU1NTU1MTExMTExNTU1LS0tEREBEREBEREBEREBJSUhLS0tLS0tEREBNTU1NTU1NTU1EREArKyhNTU1NTU0AAABMTExKSklMTExNTU1NTU1NTU1KSkpMTExKSkhNTU1KSkpISEZNTU1LS0tAQDxOTk5KSkpLS0tNTU1MTExMTEx/f39MTExMTExLS0pLS0tMTExNTU1NTU1LS0pNTU1NTU1NTU1NTU1NTU1NTUxNTU1NTU1NTUxMTEzB8C/5AAAAOnRSTlMAI8X96oWAgYSF68QBAg0PMCb9BIuLgQUD4N0Bh0mKhZSOQ4gcrKscaW8QRE6fmJyjAshASceG7cIpqQOxTQAAALVJREFUGFddx6FOA0EYAOGZvd07Qm6vVCAAgUUgQEDfX/YZMAigqaFN7iC5tsmPqGPUN/AvUVeoEbGOCElJz08Uzeixqu4AqomVVSNngOVjTqDGZSl3UFtPGV2ot2zaq96YM9p5Ddzcf/nTTAlj+/sNtNu8OcwkIsbPBtrUfMQeEhGQmHbmGIFMwLPzu6UMIwBNgToshgq8Nr2ki+Oy7ebDHp70LRPWB6OZgfWLWei7fJonOOsPCGA9kVlssOoAAAAASUVORK5CYII="); + border: none; + background-size: 100% 100%; + background-repeat: no-repeat; + background-color: #303030; + border-radius: 5px; + top: -7px; + cursor: pointer; +} + +.fav.active { + background-color: yellow; +} + +.emotewrapper:hover .fav { + display: block; +} + +.emojiPicker-3m1S-j { + box-shadow: none; + border-top: none; + border-radius: 0 0 5px 5px; +} + +#bd-qem { + border-radius: 5px 5px 0 0; + background: #fff; + border-bottom: 1px solid rgba(0, 0, 0, 0.1); + height: 30px; + display: flex; + flex-direction: row; + padding-right: 1px; +} + +#bd-qem button { + border-left: 1px solid #efefef; + background: transparent; + box-shadow: #cecece 1px 0 0 0; + flex-grow: 1; +} + +#bd-qem button:hover { + background: #ececec; +} + +#bd-qem-twitch { + border-radius: 5px 0 0 0; + order: 2; +} + +#bd-qem-emojis { + border-radius: 0 5px 0 0; + order: 3; +} + +#bd-qem-favourite { + order: 3; +} + +#bd-qem button.active { + background-color: #e2e2e2; +} + +#bd-qem-twitch-container, +#bd-qem-favourite-container { + width: 346px; + height: 329px; + background-color: #fff; + border-radius: 0 0 5px 5px; +} + +#bd-qem-twitch-container .scroller-wrap, +#bd-qem-favourite-container .scroller-wrap { + height: 100%; +} + +.emote-menu-inner { + padding: 5px 0 0 15px; +} + +.bd-qme-hidden #bd-qem-emojis { + display: none; +} + +#emote-container { + padding: 10px; +} + +.emote-container { + display: inline-block; + padding: 2px; + border-radius: 5px; + width: 30px; + height: 30px; + position: relative; +} + +.emote-icon { + max-width: 100%; + max-height: 100%; + position: absolute; + margin: auto; + top: 0; + right: 0; + bottom: 0; + left: 0; + cursor: pointer; +} + +.emote.stop-animation { + animation: none; +} + +.emote-container:hover { + background: rgba(123, 123, 123, 0.37); +} + +.emoteflip, +.emotespinflip { + transform: scaleX(-1); +} + +.emotespin { + animation: 1s emote-spin infinite linear; +} + +.emote1spin { + animation: 1s emote-spin-reverse infinite linear; +} + +.emotespin2 { + animation: 0.5s emote-spin infinite linear; +} + +.emote2spin { + animation: 0.5s emote-spin-reverse infinite linear; +} + +.emotespin3 { + animation: 0.2s emote-spin infinite linear; +} + +.emote3spin { + animation: 0.2s emote-spin-reverse infinite linear; +} + +.emotepulse { + animation: 1s emote-pulse infinite linear; +} + +.emotetr { + transform: translateX(-3px); +} + +.emotebl { + transform: translateY(-3px); +} + +.emotebr { + transform: translate(-3px, -3px); +} + +.emoteshake { + animation: 1s emote-shake infinite linear; +} + +.emoteflap { + transform: scaleY(-1); +} + +.emoteshake2 { + animation: emote-shake2 0.3s linear infinite; +} + +.emoteshake3 { + animation: emote-shake3 0.1s linear infinite; +} + +@keyframes emote-shake2 { + 25% { + transform: translate(-1px, -1px); + } + + 50% { + transform: translate(-1px, 1px); + } + + 75% { + transform: translate(1px, 1px); + } + + 75% { + transform: translate(1px, -1px); + } +} + +@keyframes emote-shake3 { + 25% { + transform: translate(-1px, -1px); + } + + 50% { + transform: translate(-1px, 1px); + } + + 75% { + transform: translate(1px, 1px); + } + + 75% { + transform: translate(1px, -1px); + } +} + +@keyframes emote-spin { + from { + transform: rotate(0deg); + } + + to { + transform: rotate(360deg); + } +} + +@keyframes emote-spin-reverse { + from { + transform: rotate(0deg); + } + + to { + transform: rotate(-360deg); + } +} + +@keyframes emote-pulse { + 0% { + -webkit-transform: scale(1, 1); + } + + 50% { + -webkit-transform: scale(1.2, 1.2); + } + + 100% { + -webkit-transform: scale(1, 1); + } +} + +@keyframes emote-shake { + 10%, + 90% { + transform: translate3d(-1px, 0, 0); + } + + 20%, + 80% { + transform: translate3d(2px, 0, 0); + } + + 30%, + 50%, + 70% { + transform: translate3d(-4px, 0, 0); + } + + 40%, + 60% { + transform: translate3d(4px, 0, 0); + } +} + +/* Messages */ + +.bd-minimal .divider-32i8lo { + opacity: 0; +} + +/* message avatars */ + +.bd-minimal .large-3ChYtB { + max-width: 20px; + max-height: 20px; + background-size: 100%; + margin-right: 2px; + margin-top: 0; + border-radius: 0; +} + +/* message content */ + +.bd-minimal .content-3dzVd8 { + border-left: 2px solid #ebebeb; + padding-left: 2px; +} + +.bd-minimal .theme-dark .content-3dzVd8 { + border-left: 2px solid #303030; +} + +/* message username */ + +.bd-minimal .username-_4ZSMR { + font-size: small; +} + +/* message group */ + +.bd-minimal .container-1YxwTf { + padding: 5px; +} + +/* message embed */ + +.bd-minimal .embed-IeVjo6 { + padding: 2px; +} + +/* Member List */ + +.bd-minimal .membersWrap-2h-GB4 { + min-width: 0; +} + +/* member list avatars */ + +.bd-minimal .members-1998pB .small-5Os1Bb { + max-width: 15px; + max-height: 15px; + background-size: 15px 15px; +} + +/* member list avatars */ + +.bd-minimal .members-1998pB .small-5Os1Bb .status-oxiHuE { + height: 5px; + width: 5px; +} + +/* member list list item */ + +.bd-minimal .members-1998pB .member-3W1lQa { + padding: 5px; +} + +/* member list item inner */ + +.bd-minimal .members-1998pB .memberInner-2CPc3V { + transform: scale(0.9); +} + +/* member list role label */ + +.bd-minimal .members-1998pB .membersGroup-v9BXpm { + margin-top: 3px; + transform: scale(0.9); +} + +/* channel list */ + +.bd-minimal .channels-Ie2l6A { + width: 160px; +} + +/* Channel List */ + +.bd-minimal.bd-minimal-chan .channels-Ie2l6A { + display: none; +} + +/* channel list guild name */ + +.bd-minimal .channels-Ie2l6A header span { + font-size: 12px; +} + +/* channel item */ + +.bd-minimal .containerDefault-3GGEv_ { + transform: scale(0.9); +} + +/* channel name */ + +.bd-minimal .content-3at_AU { + transform: scale(0.9); +} + +/* channel icon */ + +.bd-minimal .icon-1_QxNX { + width: 14px; + height: 14px; +} + +/* Guild List */ + +.bd-minimal .wrapper-1Rf91z .scroller-2FKFPG .listItem-2P_4kh { + width: 20px; + height: 20px; + background-size: 100%; + font-size: 15px; + line-height: 20px; + margin: 0 12.5px 8px; +} + +/* guild link and icon */ + +.bd-minimal .wrapper-1Rf91z .scroller-2FKFPG .wrapper-25eVIn a, +.bd-minimal .listItem-2P_4kh .wrapper-25eVIn .icon-27yU2q { + width: 20px; + height: 20px; + background-size: 100%; + font-size: 15px; + line-height: 20px; +} + +/* guild inner */ + +.bd-minimal .listItem-2P_4kh .wrapper-25eVIn { + width: 20px; + height: 20px; + background-size: 100%; + font-size: 15px; + line-height: 20px; +} + +.bd-minimal .listItem-2P_4kh svg, +.bd-minimal .listItem-2P_4kh foreignObject[mask] { + mask: none; +} + +/* home icon */ + +.bd-minimal .wrapper-1Rf91z .scroller-2FKFPG .homeIcon-tEMBK1 { + width: 10px; + height: 10px; + background-size: 100%; + font-size: 15px; + line-height: 20px; +} + +/* add and search */ + +.bd-minimal .circleIconButton-jET_ig { + height: 20px; + width: 20px; +} + +.bd-minimal .circleIconButton-jET_ig svg { + height: 14px; + width: 14px; +} + +/* friends online */ + +.bd-minimal .wrapper-1Rf91z .scroller-2FKFPG .friendsOnline-_wi_fM { + margin-left: -15px; + font-size: 7px; +} + +/* public servers button */ + +.bd-minimal #bd-pub-li { + height: 16px; +} + +.bd-minimal #bd-pub-button { + font-size: 8px; + line-height: 16px; + height: 16px; +} + +/* guild list */ + +.bd-minimal .wrapper-1Rf91z, +.bd-minimal .wrapper-1Rf91z .scrollerWrap-1IAIlv, +.bd-minimal .wrapper-1Rf91z .scroller-2FKFPG { + width: 45px; +} + +/* separator */ + +.bd-minimal .wrapper-1Rf91z .guildSeparator-3s64Iy { + margin-left: -15px; +} + +/* unread icon */ + +.bd-minimal .wrapper-1Rf91z .scroller-2FKFPG .listItem-2P_4kh .wrapper-sa6paO { + height: 20px; + margin-top: 0; + margin-left: -12.5px; +} + +/* audio/video */ + +.bd-minimal .wrapper-1Rf91z .scroller-2FKFPG .iconBadge-2wi9r4 { + width: 12px; + height: 12px; + background-size: 12px; +} + +/* Account Container */ + +.bd-minimal .container-2Thooq .avatarSmall-3ACRaI { + width: 15px; + height: 15px; + background-size: 15px 15px; +} + +/* status */ + +.bd-minimal .container-2Thooq .avatarSmall-3ACRaI .status-oxiHuE { + height: 5px; + width: 5px; +} + +/* username and discrim */ + +.bd-minimal .container-2Thooq .accountDetails-3k9g4n { + transform: scale(0.8); +} + +/* 3 buttons */ + +.bd-minimal .container-2Thooq .button-2b6hmh { + height: 14px; + width: 14px; + background-size: 14px 14px; + margin-left: 3px; +} + +/* 3 buttons icons */ + +.bd-minimal .container-2Thooq .button-2b6hmh svg { + height: 14px; + width: 14px; +} + +#bd-pub-li { + height: 20px; + margin-bottom: 10px; + overflow: hidden; +} + +#bd-pub-button { + border-radius: 4px; + background-color: rgb(47, 49, 54); + color: #b9bbbe; + text-align: center; + font-size: 12px; + line-height: 20px; + height: 20px; +} + +.bd-server-card .bd-server-tags { + flex: 1 1 auto; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + width: 0; + line-height: 24px; + font-size: 12px; + color: #b9bbbe; + font-weight: 700; + margin-right: 10px; +} + +/* .ui-card.ui-card-primary.bd-server-card:first-child { + margin-bottom: 13px; +} + +.ui-card.ui-card-primary.bd-server-card:first-child:after { + border: 3px solid #7289da; + content: ""; + display: block; + position: absolute; + left: 0; + right: 0; + margin-top: 4px; +} */ + +.bd-server-card.bd-server-card-pinned { + margin-bottom: 15px; +} + +.bd-server-card.bd-server-card-pinned::after { + background: #3a71c1; + content: ""; + height: 3px; + width: 100%; + display: block; + margin-top: 7px; + position: absolute; + top: 100%; +} + +.bd-server-description-container { + color: #b9bbbe; + min-height: 65px; + max-height: 65px; + border-top: 1px solid #3f4146; + border-bottom: 1px solid #3f4146; + padding-top: 5px; + font-size: 13px; +} + +.bd-server-header { + text-transform: uppercase; + letter-spacing: 0.5px; + justify-content: space-between; + font-weight: 600; +} + +.bd-server-card { + display: flex; + position: relative; + border-width: 1px; + border-style: solid; + border-radius: 5px; + background: rgba(32, 34, 37, 0.6); + border-color: #202225; + margin-bottom: 8px; +} + +.bd-server-header, +.bd-server-footer { + display: flex; + color: #b9bbbe; +} + +.bd-server-card .bd-button { + margin-top: 4px; +} + +.bd-server-content { + padding: 5px 10px; + flex: 1; +} + +.bd-server-image { + min-width: 115px; + min-height: 115px; + max-width: 115px; + max-height: 115px; +} + +.bd-server-name { + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + padding-right: 15px; + max-width: 330px; + flex: 1 1 50%; +} + +.bd-layer { + -ms-flex-direction: column; + -webkit-box-direction: normal; + -webkit-box-orient: vertical; + bottom: 0; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + flex-direction: column; + left: 0; + position: absolute; + right: 0; + top: 0; +} + +/* #pubslayer .ui-tab-bar-item { + color: #b9bbbe; + padding-top: 6px; + padding-bottom: 6px; + margin-bottom: 2px; + padding: 6px 10px; + position: relative; + font-size: 16px; + line-height: 20px; + border-radius: 3px; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; + flex-shrink: 0; + font-weight: 500; + cursor: pointer; +} + +#pubslayer .ui-tab-bar-item:hover { + color: #f6f6f7; + background-color: hsla(216,4%,74%,.1); +} + +#pubslayer .ui-tab-bar-item.selected { + color: #fff; + background-color: #7289da; +} + +#pubslayer .ui-tab-bar-header { + color: #72767d; + padding: 6px 10px; + font-size: 12px; + line-height: 16px; + text-transform: uppercase; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; + flex-shrink: 0; + font-weight: 500; +} + +#pubslayer #bd-settings-sidebar .ui-tab-bar-separator { + background-color: hsla(218,5%,47%,.3); + margin-left: 10px; + margin-right: 10px; + height: 1px; + margin-bottom: 8px; + margin-top: 8px; +} + +#pubslayer h2.ui-form-title { + color: #f6f6f7; + text-transform: uppercase; + font-weight: 600; +} + +#pubslayer h5.ui-form-title { + color: #f6f6f7; +} */ + +#pubslayer button { + background: #7289da; + color: #fff; + font-size: 14px; + font-weight: 500; + line-height: 16px; + padding: 2px 16px; + border: none; + border-radius: 3px; + transition: background-color 0.17s ease; +} + +#pubslayer button:hover { + background-color: #677bc4; +} + +#pubslayer input { + color: #f6f6f7; + background-color: rgba(0, 0, 0, 0.1); + border-color: rgba(0, 0, 0, 0.3); + padding: 10px; + height: 30px; + border-width: 1px; + border-style: solid; + border-radius: 3px; + outline: none; + transition: background-color 0.15s ease, border 0.15s ease; +} + +#bd-connection { + margin-left: 10px; +} + +.bd-footnote { + color: #b9bbbe; + font-size: 11px; +} + +.bd-button-next, +.bd-button-reconnect { + margin: 5px 10px 10px 0; + width: 100%; + min-height: 20px; +} + +.bd-reload { + cursor: pointer; + vertical-align: top; + fill: #dcddde; +} + +.bd-reload:hover { + fill: #fff; +} + +.bd-reload-header { + margin-left: 5px; +} + +.bd-reload-card { + margin-right: 5px; +} + +.bd-controls { + display: flex; +} + +.bd-addon-list { + user-select: text; +} + +.bd-addon-list .bd-addon-card { + max-height: 175px; + margin-bottom: 20px; + padding: 5px 8px; + border: 1px solid transparent; + border-radius: 5px; + overflow: hidden; +} + +.theme-dark .bd-addon-list .bd-addon-card { + background-color: rgba(32, 34, 37, 0.6); + color: #f6f6f7; + border-color: #202225; +} + +.theme-light .bd-addon-list .bd-addon-card { + background-color: #f8f9f9; + color: #4f545c; + border-color: #dcddde; +} + +.bd-addon-list .bd-addon-card.settings-open { + max-height: 800px; + overflow-y: auto; +} + +.bd-addon-list .bd-addon-header { + font-size: 12px; + font-weight: 700; + display: flex; + align-items: center; + justify-content: space-between; + padding-bottom: 5px; + border-bottom: 1px solid transparent; + overflow: hidden; +} + +.theme-dark .bd-addon-list .bd-addon-header { + color: #f6f6f7; + border-bottom-color: rgba(114, 118, 125, 0.3); +} + +.theme-light .bd-addon-list .bd-addon-header { + color: #4f545c; + border-bottom-color: rgba(185, 187, 190, 0.3); +} + +.bd-addon-list .bd-description { + word-break: break-word; + max-height: 100px; + margin: 5px 0; + padding: 5px 0; + overflow-y: auto; +} + +.theme-dark .bd-addon-list .bd-description { + color: #b9bbbe; +} + +.theme-light .bd-addon-list .bd-description { + color: #72767d; +} + +.bd-addon-list .scroller::-webkit-scrollbar-track-piece, +.bd-addon-list .scroller::-webkit-scrollbar-thumb { + border-radius: 0 !important; + border-color: transparent; +} + +.bd-addon-list .bd-footer { + font-size: 12px; + font-weight: 700; + display: flex; + align-items: center; + justify-content: space-between; + padding-top: 5px; + border-top: 1px solid transparent; + overflow: hidden; +} + +.theme-dark .bd-addon-list .bd-footer { + border-top-color: rgba(114, 118, 125, 0.3); +} + +.theme-light .bd-addon-list .bd-footer { + border-top-color: rgba(185, 187, 190, 0.3); +} + +.bd-addon-list .bd-footer button { + padding: 3px 16px; + transition: opacity 250ms ease; +} + +.bd-addon-list .bd-footer button:disabled { + opacity: 0.4; +} + +.bd-addon-list .bd-footer a { + color: #3e82e5; +} + +.bd-addon-list .bd-footer a:hover { + text-decoration: underline; +} + +.bd-controls + .bd-addon-list { + margin-top: 10px; +} + +.bd-addon-button { + cursor: pointer; +} + +.bd-addon-button + .bd-addon-button { + margin-left: 5px; +} + +.bd-search-wrapper { + padding: 3px; + border-radius: 3px; + outline: none; + border: 0; + background-color: #202225; + color: #fff; + display: flex; + align-items: center; +} + +.bd-search { + padding: 2px 3px; + background: none; + border: 0; + color: #fff; + flex: 1; +} + +.bd-search-wrapper > svg { + margin-right: 2px; +} + +.bd-addon-controls { + display: flex; + align-items: center; + justify-content: space-between; +} + +.bd-addon-controls .bd-search { + font-size: 13px; + margin: 0; + width: 200px; +} + +.bd-addon-dropdowns { + display: flex; +} + +/* Error Boundary stuff */ + +.react-error { + color: red; + font-weight: bold; + font-family: Arial, Helvetica, sans-serif; + cursor: pointer; +} + +.settings-open .bd-close { + cursor: pointer; + float: right; +} + +.bd-social-logo { + opacity: 0.6; +} + +.bd-social-link:hover .bd-social-logo { + opacity: 1; +} + +.standardSidebarView-3F1I7i .bd-versioninfo-wrapper { + bottom: 0; + left: 0; + position: fixed; + background: inherit; + right: 0; + padding: 5px; +} + +.standardSidebarView-3F1I7i .bd-versioninfo-wrapper span { + color: #b9bbbe; + font-weight: 600; + font-size: 11px; +} + +.standardSidebarView-3F1I7i .bd-versioninfo-wrapper a { + font-size: 11px; +} + +.bd-button-title { + margin-left: 10px; +} + +/* #bd-settings-sidebar .ui-tab-bar-item { + font-size: 16px; + font-weight: 500; + line-height: 20px; + text-overflow: ellipsis; + white-space: nowrap; + cursor: pointer; + flex-shrink: 0; + padding: 6px 10px; + border-radius: 3px; + position: relative; + overflow: hidden; +} +#bd-settings-sidebar .ui-tab-bar-item.selected { + cursor: default; +} +.theme-dark #bd-settings-sidebar .ui-tab-bar-item { + color: #b9bbbe; +} +.theme-dark #bd-settings-sidebar .ui-tab-bar-item:hover { + background-color: rgba(185,187,190,.1); + color: #f6f6f7; +} +.theme-dark #bd-settings-sidebar .ui-tab-bar-item.selected { + background-color: #7289da; + color: #fff; +} +.theme-light #bd-settings-sidebar .ui-tab-bar-item { + color: #72767d; +} +.theme-light #bd-settings-sidebar .ui-tab-bar-item:hover { + background-color: rgba(79,84,92,.1); + color: #4f545c; +} +.theme-light #bd-settings-sidebar .ui-tab-bar-item.selected { + background-color: #7289da; + color: #fff; +} + +#bd-settings-sidebar .ui-tab-bar-header { + font-size: 12px; + font-weight: 700; + line-height: 16px; + text-transform: uppercase; + text-overflow: ellipsis; + white-space: nowrap; + flex-shrink: 0; + padding: 6px 10px; + overflow: hidden; +} +.theme-dark #bd-settings-sidebar .ui-tab-bar-header { + color: #72767d; +} +.theme-light #bd-settings-sidebar .ui-tab-bar-header { + color: #b9bbbe; +} + +#bd-settings-sidebar .ui-tab-bar-separator { + height: 1px; + margin: 8px 10px; +} +.theme-dark #bd-settings-sidebar .ui-tab-bar-separator { + background-color: rgba(114,118,125,.3); +} +.theme-light #bd-settings-sidebar .ui-tab-bar-separator { + background-color: rgba(185,187,190,.3); +} + +.ui-flex { + display: flex; +} + +#bd-settingspane-container h2.ui-form-title { + font-size: 16px; + font-weight: 600; + line-height: 20px; + text-transform: uppercase; + display: inline-block; + margin-bottom: 20px; +} +.theme-dark #bd-settingspane-container h2.ui-form-title { + color: #f6f6f7; +} +.theme-light #bd-settingspane-container h2.ui-form-title { + color: #4f545c; +} */ + +.bd-switch { + background-color: #72767d; + border-radius: 14px; + width: 42px; + height: 24px; + opacity: 1; + overflow: hidden; + user-select: none; + position: relative; + display: block; + flex: 0 0 auto; + transition: background 0.15s ease-in-out, box-shadow 0.15s ease-in-out, border 0.15s ease-in-out, opacity 0.15s ease-in-out; + margin-left: 10px; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.15); +} + +.bd-switch::before { + content: ""; + display: block; + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + z-index: 0; + opacity: 0; + background-color: #000; +} + +.bd-switch::after { + content: ""; + display: block; + position: absolute; + background-color: #fff; + z-index: 1; + width: 18px; + margin: 3px; + border-radius: 9px; + height: 18px; + left: 0; + transition: transform 0.15s ease-in-out, width 0.1s ease-in-out, left 0.1s ease-in-out; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.3); +} + +.bd-switch .bd-checkbox { + position: absolute; + width: 100%; + height: 100%; + opacity: 0; + padding: 0; + margin: 0; + z-index: 2; + cursor: pointer; +} + +.bd-switch-checked { + background-color: #3e82e5; +} + +.bd-switch-checked::after { + transform: translate3d(18px, 0, 0); +} + +.bd-switch-disabled { + opacity: 0.3; + cursor: not-allowed; +} + +.bd-switch-item { + flex-direction: column; + margin-top: 8px; +} + +.bd-switch-item h3 { + font-size: 16px; + font-weight: 500; + line-height: 24px; + flex: 1; +} + +.theme-dark .bd-switch-item h3 { + color: #f6f6f7; +} + +.theme-light .bd-switch-item h3 { + color: #4f545c; +} + +/* .ui-switch-item .style-description { + font-size: 14px; + font-weight: 500; + line-height: 20px; + margin-bottom: 10px; + padding-bottom: 10px; + border-bottom: 1px solid hsla(218,5%,47%,.3); +} +.theme-dark .ui-switch-item .style-description { + color: #72767d; +} +.theme-light .ui-switch-item .style-description { + color: rgba(114,118,125,.6); +} */ + +.bd-switch-item .bd-switch-wrapper { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + position: relative; + width: 44px; + height: 24px; + display: block; + flex: 0 0 auto; +} + +.bd-switch-item .bd-switch-wrapper input { + position: absolute; + opacity: 0; + cursor: pointer; + width: 100%; + height: 100%; + z-index: 1; +} + +.bd-switch-item .bd-switch-wrapper .bd-switch { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + background: #72767d; + border-radius: 14px; + transition: background 0.15s ease-in-out, box-shadow 0.15s ease-in-out, border 0.15s ease-in-out; +} + +.bd-switch-item .bd-switch-wrapper .bd-switch::before { + content: ""; + display: block; + width: 18px; + height: 18px; + position: absolute; + top: 3px; + left: 3px; + bottom: 3px; + background: #f6f6f7; + border-radius: 10px; + transition: all 0.15s ease; + box-shadow: 0 3px 1px 0 rgba(0, 0, 0, 0.05), 0 2px 2px 0 rgba(0, 0, 0, 0.1), 0 3px 3px 0 rgba(0, 0, 0, 0.05); +} + +.bd-switch-item .bd-switch-wrapper .bd-switch.checked { + background: #7289da; +} + +.bd-switch-item .bd-switch-wrapper .bd-switch.checked::before { + transform: translateX(20px); +} + +#bd-settingspane-container .scroller-wrap { + height: 100%; +} + +#bd-settingspane-container .scroller-wrap .scroller { + display: flex; +} + +.bd-select-wrapper { + color: #f6f6f7; + font-size: 13px; + display: flex; + align-items: center; +} + +.bd-select-wrapper + .bd-select-wrapper { + margin-left: 10px; +} + +.bd-select-wrapper label { + opacity: 0.3; + margin-right: 5px; +} + +.bd-select { + position: relative; + cursor: pointer; + color: #f6f6f7; + font-size: 13px; + display: flex; + align-items: center; + justify-content: space-between; + background-color: rgba(0, 0, 0, 0.1); + border: 1px solid rgba(0, 0, 0, 0.3); + border-radius: 3px; + padding: 5px 5px 5px 0; +} + +.bd-select.bd-select-transparent { + background: none; + border: none; + padding: 0; +} + +.bd-select-value { + padding-left: 12px; +} + +.bd-select-arrow { + margin-left: 10px; +} + +.bd-select .bd-select-options { + position: absolute; + background: #2f3136; + border-radius: 0 0 3px 3px; + max-height: 300px; + min-width: calc(100% + 2px); + overflow-y: auto; + box-shadow: rgba(0, 0, 0, 0.3) 0 1px 5px 0; + border: 1px solid rgba(0, 0, 0, 0.3); + border-top: 0; + margin-top: -1px; + margin-left: -1px; + z-index: 2; + top: 100%; +} + +.bd-select-transparent .bd-select-options { + border: 1px solid rgba(0, 0, 0, 0.3); + margin-top: 3px; + border-radius: 3px; +} + +.bd-select .bd-select-option { + padding: 8px 12px; + cursor: pointer; + white-space: pre; +} + +.bd-select .bd-select-option:hover, +.bd-select .bd-select-option.selected { + background: #26272b; +} + +.bd-setting-item .bd-select { + min-width: 200px; +} + +.bd-setting-item { + display: flex; + flex-direction: column; + margin-bottom: 20px; +} + +.bd-setting-header { + display: flex; + justify-content: space-between; + align-items: center; +} + +.bd-setting-header label { + font-weight: 500; + cursor: pointer; + overflow: hidden; + word-wrap: break-word; + font-size: 16px; + line-height: 24px; + color: #f6f6f7; +} + +.bd-setting-note { + color: #72767d; + margin-top: 4px; + font-size: 14px; + line-height: 20px; + font-weight: 500; +} + +.bd-setting-divider { + width: 100%; + height: 1px; + margin-top: 20px; + background-color: rgba(114, 118, 125, 0.3); +} + +.bd-settings-container { + height: auto; + overflow: hidden; + transition: height 300ms cubic-bezier(0.47, 0, 0.745, 0.715); +} + +.bd-settings-group.collapsed .bd-settings-container { + height: 0; +} + +.bd-settings-group.expanded .bd-settings-container:not(.animating) { + overflow: visible; +} + +.bd-settings-group.collapsible .bd-settings-title { + display: flex; + justify-content: space-between; + align-items: center; + order: 1; +} + +.bd-settings-group.collapsible .bd-settings-title::before { + content: ""; + background-color: rgba(114, 118, 125, 0.3); + height: 2px; + order: 2; + flex: 1; + margin: 0 10px 0 15px; +} + +.bd-settings-group.collapsible .bd-settings-title::after { + content: ""; + background: url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxOS4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iQ2FscXVlXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSItOTUwIDUzMiAxOCAxOCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAtOTUwIDUzMiAxOCAxODsiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4NCgkuc3Qwe2ZpbGw6bm9uZTt9DQoJLnN0MXtmaWxsOm5vbmU7c3Ryb2tlOiNGRkZGRkY7c3Ryb2tlLXdpZHRoOjEuNTtzdHJva2UtbWl0ZXJsaW1pdDoxMDt9DQo8L3N0eWxlPg0KPHBhdGggY2xhc3M9InN0MCIgZD0iTS05MzIsNTMydjE4aC0xOHYtMThILTkzMnoiLz4NCjxwb2x5bGluZSBjbGFzcz0ic3QxIiBwb2ludHM9Ii05MzYuNiw1MzguOCAtOTQxLDU0My4yIC05NDUuNCw1MzguOCAiLz4NCjwvc3ZnPg0K"); + height: 20px; + width: 20px; + display: inline-block; + vertical-align: bottom; + transition: transform 0.3s ease; + transform: rotate(0); + order: 3; +} + +.bd-settings-group.collapsed .bd-settings-title::after { + transition: transform 0.3s ease; + transform: rotate(90deg); +} + +.bd-settings-group ~ .bd-settings-group .bd-settings-title { + margin-top: 30px; + transition: margin-top 300ms ease; +} + +.bd-settings-group.collapsed + .bd-settings-group .bd-settings-title { + margin-top: 0; +} + +.bd-settings-title.bd-settings-group-title { + margin-bottom: 10px; +} + +.checkbox-item { + display: flex; +} + +.checkbox-item .checkbox-label { + margin-right: 8px; +} + +@keyframes open-window { + from { + transform: scale(0.9); + } + + to { + transform: none; + } +} + +.floating-window { + animation: open-window 200ms ease; + min-width: 200px; + min-height: 300px; + box-shadow: 0 2px 10px 0 rgba(0, 0, 0, 0.2); + display: flex; + flex-direction: column; + -webkit-app-region: no-drag; + position: fixed; + z-index: 1001; + box-sizing: border-box; +} + +.floating-window.modal-open { + z-index: 999; +} + +.floating-window.resizable { + overflow: auto; + resize: both; + padding-bottom: 10px; + background: #202225; +} + +.floating-window-titlebar { + width: 100%; + display: flex; + justify-content: space-between; + align-items: center; + background: #202225; /* #2F3129background-color: #202225; */ + color: white; + border-bottom: 1px solid #272822; +} + +.floating-window-content { + display: flex; + flex-direction: column; + background: #2f3129; + color: white; + flex: 1; +} + +.floating-window-titlebar .title { + /* font-weight: bold; */ + flex: 1; + text-align: center; + padding: 2px 0; +} + +.floating-window-buttons { + display: flex; +} + +.floating-window-buttons .button { + cursor: pointer; + padding: 0 2px; +} + +.floating-window-buttons .button svg { + fill: #dcddde; + margin-top: 1.5px; +} + +.floating-window-buttons .button:hover svg { + fill: white; +} + +.floating-window-buttons .button:hover { + background-color: #36393f; +} + +.floating-window-buttons .close-button:hover { + background-color: #f04747; +} + +.floating-window-buttons .close-button:hover svg path.fill { + fill: white; +} + +.floating-window-content #bd-editor-panel { + display: flex; + flex-direction: column; + flex: 1; +} + +.floating-window .editor-wrapper { + flex: 1; +} + +.floating-window .ace_editor { + height: auto; + flex: 1; +} + +.floating-window #bd-editor-controls { + height: auto; + background: #202225; + border: none; + box-shadow: 0 1px 0 0 #2f3129 inset; +} + +#floating-editor-window { + min-width: 340px; + min-height: 280px; + max-height: 900px; + max-width: 750px; +} + +.floating-addon-window { + min-width: 535px; + min-height: 605px; + max-height: 90%; + max-width: 90%; +} + +@keyframes bd-backdrop { + to { + opacity: 0.85; + } +} + +@keyframes bd-modal-wrapper { + to { + transform: scale(1); + opacity: 1; + } +} + +@keyframes bd-backdrop-closing { + to { + opacity: 0; + } +} + +@keyframes bd-modal-wrapper-closing { + to { + transform: scale(0.7); + opacity: 0; + } +} + +.bd-backdrop { + animation: bd-backdrop 250ms ease; + animation-fill-mode: forwards; + opacity: 0; + background-color: rgb(0, 0, 0); + transform: translateZ(0); +} + +.bd-modal-wrapper.closing .bd-backdrop { + animation: bd-backdrop-closing 200ms linear; + animation-fill-mode: forwards; + animation-delay: 50ms; + opacity: 0.85; +} + +.bd-modal-wrapper .bd-modal { + animation: bd-modal-wrapper 250ms cubic-bezier(0.175, 0.885, 0.32, 1.275); + animation-fill-mode: forwards; + transform: scale(0.7); + transform-origin: 50% 50%; + display: flex; + align-items: center; + box-sizing: border-box; + contain: content; + justify-content: center; + top: 0; + left: 0; + bottom: 0; + right: 0; + opacity: 0; + pointer-events: none; + position: absolute; + z-index: 1000; +} + +.bd-modal-wrapper.closing .bd-modal { + animation: bd-modal-wrapper-closing 250ms cubic-bezier(0.19, 1, 0.22, 1); + animation-fill-mode: forwards; + opacity: 1; + transform: scale(1); +} + +.bd-modal-wrapper .bd-modal-inner { + display: flex; + contain: layout; + flex-direction: column; + pointer-events: auto; + border: 1px solid rgba(28, 36, 43, 0.6); + border-radius: 5px; + box-shadow: 0 2px 10px 0 rgba(0, 0, 0, 0.2); + overflow: hidden; + max-height: 660px; + min-height: 200px; + width: 440px; + user-select: text; +} + +.bd-modal-wrapper .bd-content-modal .bd-modal-inner { + height: 500px; + width: 700px; +} + +.bd-modal-wrapper .header { + background-color: #35393e; + box-shadow: 0 2px 3px 0 rgba(0, 0, 0, 0.2); + padding: 12px 20px; + z-index: 1; + color: #fff; + font-size: 16px; + font-weight: 700; + line-height: 19px; +} + +.bd-modal-wrapper .bd-modal-body { + background-color: #36393f; + color: #fff; + overflow: hidden; + display: flex; + flex-direction: column; + flex: 1; + contain: layout; + position: relative; +} + +.bd-modal-wrapper .scroller { + padding: 10px; + overflow-y: auto; +} + +.bd-modal-wrapper .bd-content-modal .bd-modal-body { + padding: 0; +} + +.bd-modal-wrapper .footer { + display: flex; + justify-content: flex-end; + padding: 10px 20px; +} + +.bd-modal-wrapper .footer button { + min-height: 32px; + min-width: 60px; + align-items: center; + display: flex; + font-size: 14px; + font-weight: 500; + justify-content: center; + line-height: 16px; + padding: 2px 16px; + user-select: none; +} + +.bd-modal-wrapper .tab-bar-container { + align-items: center; + border-bottom: 0; + background: rgba(0, 0, 0, 0.2); + box-shadow: 0 2px 3px 0 rgba(0, 0, 0, 0.1); + display: flex; + flex-direction: row; + justify-content: space-between; + margin-bottom: 15px; +} + +.bd-modal-wrapper .tab-bar.TOP { + margin: 0; + border: 0; + display: flex; + flex-direction: row; + justify-content: space-between; + align-items: center; +} + +.bd-modal-wrapper .tab-bar-container .tab-bar-item { + margin: 0 15px; + padding: 15px 0; + color: #fff; + opacity: 0.5; + transition: opacity 200ms ease; + border-bottom: 2px solid transparent; +} + +.bd-modal-wrapper .tab-bar-container .tab-bar-item:hover { + border-color: #fff; + cursor: pointer; +} + +.bd-modal-wrapper .tab-bar-container .tab-bar-item.selected { + opacity: 1; + border-color: #fff; +} + +.bd-modal-wrapper .tab-bar.TOP .tab-bar-item + .tab-bar-item { + margin: 0; +} + +.bd-modal-wrapper .table-header { + display: flex; + justify-content: space-between; + color: #fff; + font-weight: 700; + padding-bottom: 10px; + margin: 3px 15px 0 15px; + border-bottom: 1px solid #fff; + font-size: 14px; +} + +.bd-modal-wrapper .table-column { + width: 25%; + word-wrap: break-word; +} + +.bd-modal-wrapper .table-column.column-error { + width: 50%; +} + +.bd-modal-wrapper .errors { + display: flex; + flex-direction: column; + font-size: 14px; + padding: 0 5px; +} + +.bd-modal-wrapper .error { + display: flex; + color: #fff; + border-bottom: 1px solid rgba(255, 255, 255, 0.25); + padding: 15px 0; + align-items: center; +} + +.bd-modal-wrapper .error-link { + color: #3e82e5; + font-weight: 500; +} + +.bd-modal-wrapper .bd-content-modal .scroller { + padding-top: 0; +} + +.bd-sidebar-header { + display: flex; + justify-content: space-between; +} + +.bd-sidebar-header .bd-changelog-button { + height: 16px; +} + +.bd-sidebar-header .bd-icon { + cursor: pointer; + fill: #72767d; +} + +.bd-sidebar-header .bd-icon:hover { + fill: #fff; +} + +.bd-toasts { + position: fixed; + display: flex; + top: 0; + flex-direction: column; + align-items: center; + justify-content: flex-end; + pointer-events: none; + z-index: 4000; +} + +@keyframes bd-toast-up { + from { + transform: translateY(0); + opacity: 0; + } +} + +.bd-toast { + animation: bd-toast-up 300ms ease; + transform: translateY(-10px); + background: #36393f; + padding: 10px; + border-radius: 5px; + box-shadow: 0 0 0 1px rgba(32, 34, 37, 0.6), 0 2px 10px 0 rgba(0, 0, 0, 0.2); + font-weight: 500; + color: #fff; + font-size: 14px; + opacity: 1; + margin-top: 10px; + pointer-events: none; + user-select: none; +} + +@keyframes bd-toast-down { + to { + transform: translateY(0); + opacity: 0; + } +} + +.bd-toast.closing { + animation: bd-toast-down 200ms ease; + animation-fill-mode: forwards; + opacity: 1; + transform: translateY(-10px); +} + +.bd-toast.icon { + padding-left: 30px; + background-size: 20px 20px; + background-repeat: no-repeat; + background-position: 6px 50%; +} + +.bd-toast.toast-info { + background-color: #4a90e2; +} + +.bd-toast.toast-info.icon { + background-image: url("data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjRkZGRkZGIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMSAxNWgtMnYtNmgydjZ6bTAtOGgtMlY3aDJ2MnoiLz48L3N2Zz4="); +} + +.bd-toast.toast-success { + background-color: #43b581; +} + +.bd-toast.toast-success.icon { + background-image: url("data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjRkZGRkZGIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptLTIgMTVsLTUtNSAxLjQxLTEuNDFMMTAgMTQuMTdsNy41OS03LjU5TDE5IDhsLTkgOXoiLz48L3N2Zz4="); +} + +.bd-toast.toast-danger, +.bd-toast.toast-error { + background-color: #f04747; +} + +.bd-toast.toast-danger.icon, +.bd-toast.toast-error.icon { + background-image: url("data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjRkZGRkZGIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTEyIDJDNi40NyAyIDIgNi40NyAyIDEyczQuNDcgMTAgMTAgMTAgMTAtNC40NyAxMC0xMFMxNy41MyAyIDEyIDJ6bTUgMTMuNTlMMTUuNTkgMTcgMTIgMTMuNDEgOC40MSAxNyA3IDE1LjU5IDEwLjU5IDEyIDcgOC40MSA4LjQxIDcgMTIgMTAuNTkgMTUuNTkgNyAxNyA4LjQxIDEzLjQxIDEyIDE3IDE1LjU5eiIvPiAgICA8cGF0aCBkPSJNMCAwaDI0djI0SDB6IiBmaWxsPSJub25lIi8+PC9zdmc+"); +} + +.bd-toast.toast-warning, +.bd-toast.toast-warn { + background-color: #ffa600; + color: white; +} + +.bd-toast.toast-warning.icon, +.bd-toast.toast-warn.icon { + background-image: url("data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjRkZGRkZGIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMSAyMWgyMkwxMiAyIDEgMjF6bTEyLTNoLTJ2LTJoMnYyem0wLTRoLTJ2LTRoMnY0eiIvPjwvc3ZnPg=="); +} + +.bd-button { + background-color: #3e82e5; + color: white; + border-radius: 3px; + padding: 2px 6px; +} + +.bd-button:hover { + background-color: rgb(56, 117, 206); +} + +.bd-button:active { + background-color: rgb(50, 104, 183); +} + +.bd-button.bd-button-success { + background-color: #3ac15c; +} + +.bd-button.bd-button-success:hover { + background-color: rgb(52, 174, 83); +} + +.bd-button.bd-button-success:active { + background-color: rgb(46, 154, 74); +} + +.bd-chat-badge { + vertical-align: bottom; + line-height: 1.375rem; + display: inline-block; + height: 1.25rem; +} + +.bd-member-badge { + height: 15px; + margin-left: 4px; +} diff --git a/dist/style.min.css b/dist/style.min.css new file mode 100644 index 00000000..fed7239b --- /dev/null +++ b/dist/style.min.css @@ -0,0 +1 @@ +#bd-editor-panel{display:flex;flex-direction:column}#bd-editor-controls button{margin:0 5px 0 0;background:0 0;color:#fff;height:26px;font-weight:600;border-radius:3px;display:flex;align-items:center}#bd-editor-controls button:hover{background:rgba(255,255,255,.05)}#bd-editor-controls button svg{fill:#fff}#bd-editor-controls button:last-of-type{margin-right:0}#bd-editor-controls{display:flex;align-items:center;justify-content:space-between;background:#272822;color:#fff;border:0;box-shadow:0 1px 0 0 #2f3129 inset;padding:5px}.editor-wrapper{display:flex}.ace_editor{line-height:normal;font-family:Consolas,monospace;box-sizing:border-box;height:calc(100vh - 250px);font-size:14px;width:100%}.bd-monokai .editor .ace_gutter{background:#2f3136}.bd-monokai .ace_editor{background:#292b2f}.bd-monokai #bd-editor-controls{background:#202225}.theme-light #bd-editor-controls{background:#e8e8e8;border:1px solid #fff;border-top:1px solid #adadad;box-shadow:inset 0 1px 0 0 #fff}.controls-section{display:flex;align-items:center}.controls-section .checkbox-inner{width:14px;height:14px}.controls-section .checkbox-inner .checkbox:checked+span::after{left:2px;top:-2px}.controls-section .checkbox-label{font-size:14px}#ace_settingsmenu_container{background:rgba(0,0,0,.7)!important}body #ace_settingsmenu{padding-top:35px}body .ace_closeButton{position:absolute;top:8px;right:12px;z-index:10000;padding:0;cursor:pointer;background:0 0;border:0}body .ace_closeButton::before{content:"✖";color:#36393f}body .ace_closeButton:active{transform:translateY(2px)}#bd-editor-controls .help-text{margin-top:8px;margin-bottom:3px;font-size:14px}#bd-editor-controls .help-text .inline{background:#2f3129;padding:.2em;margin:-.2em 0;border-radius:3px}.bd-dark #bd-qem-favourite-container,.bd-dark #bd-qem-twitch-container{background-color:#353535}.bd-dark #bd-qem{border-bottom:1px solid #464646;background:#353535}.bd-dark #bd-qem button{background:#353535;border-left:1px solid #242424;box-shadow:#424242 1px 0 0 0;color:#fff}.bd-dark #bd-qem button.active{background-color:#292929}.bd-dark #bd-qem button:hover{background-color:#303030}.bd-dark .emojiPicker-3m1S-j{background-color:#353535}.bd-dark .emojiPicker-3m1S-j .category-2U57w6{background-color:#353535}.bd-dark .emojiPicker-3m1S-j .header-1nkwgG .searchBar-2pWH0_{background-color:#2b2b2b}.bd-dark .emojiPicker-3m1S-j .searchBar-2pWH0_ input{color:#fff}.bd-dark .emojiPicker-3m1S-j .searchBar-2pWH0_ input::-webkit-input-placeholder{color:#fff}.bd-dark .emojiPicker-3m1S-j .scroller-3vODG7 .emojiItem-109bjA.selected-39BZ4S{background-color:rgba(123,123,123,.37)}.bd-dark .emojiPicker-3m1S-j .dimmer-3iH-5D.visible-3k45bQ{background-color:rgba(62,62,62,.65)}.bd-dark .emojiPicker-3m1S-j .diversitySelector-tmmMv0 .popout-2nUePc{background:#353535;border-color:#202020}.bd-dark #bd-qem-favourite-container .scroller::-webkit-scrollbar,.bd-dark #bd-qem-favourite-container .scroller::-webkit-scrollbar-track,.bd-dark #bd-qem-favourite-container .scroller::-webkit-scrollbar-track-piece,.bd-dark #bd-qem-twitch-container .scroller::-webkit-scrollbar,.bd-dark #bd-qem-twitch-container .scroller::-webkit-scrollbar-track,.bd-dark #bd-qem-twitch-container .scroller::-webkit-scrollbar-track-piece,.bd-dark .emojiPicker-3m1S-j .scroller-3vODG7::-webkit-scrollbar,.bd-dark .emojiPicker-3m1S-j .scroller-3vODG7::-webkit-scrollbar-track,.bd-dark .emojiPicker-3m1S-j .scroller-3vODG7::-webkit-scrollbar-track-piece{background-color:#303030!important;border-color:#303030!important}.bd-dark #bd-qem-twitch-container .scroller::-webkit-scrollbar-thumb,.bd-dark #bd-qem-favourite-container .scroller::-webkit-scrollbar-thumb,.bd-dark .emojiPicker-3g68GS .scroller-3vODG7::-webkit-scrollbar-thumb{border-color:#202020!important;background-color:#202020!important}.bd-dark .theme-light .slide-2pHaq5{background:#36393f}.bd-dark .theme-dark .action-1lSjCi,.bd-dark .theme-light .action-1lSjCi{background:#2f3136}.bd-dark .theme-dark .or-3THJsp,.bd-dark .theme-light .or-3THJsp{background:#2f3136;order:2;height:56px;width:56px;top:103px;line-height:56px;left:calc(50% - 29px);border-radius:50%;border:2px solid #484b52}.bd-dark .create-3jownz{order:1}.bd-dark .join-33Tr-7{order:3}.bd-dark .theme-dark .actionIcon-2IISM_,.bd-dark .theme-light .actionIcon-2IISM_{filter:grayscale(100%) brightness(60%)}.bd-dark .theme-light .footer-2yfCgX{background:#2f3136}.bd-dark .regionSelectModal-12e-57{background:#36393f}.bd-dark .regionSelectModal-12e-57 .regionSelectModalOption-2DSIZ3{background:#2f3136;border:2px solid #484b52}.bd-dark~div #ace_settingsmenu{color:#f6f6f7;background:#36393f;box-shadow:0 0 0 1px rgba(32,34,37,.6),0 2px 10px 0 rgba(0,0,0,.2)}.bd-dark~div #ace_settingsmenu select,.bd-dark~div #ace_settingsmenu input[type=text]{color:#f6f6f7;background:#2f3136;border:1px solid #484b52}.bd-dark~div .ace_closeButton::before{color:#f6f6f7}#removemenu{width:auto;background:#505050;z-index:999999;box-shadow:0 0 2px #000;padding:2px;left:25px;display:block;cursor:pointer;color:#fff;position:fixed}#removemenu ul a{text-decoration:none;color:#fff;padding:3px}.emotewrapper{position:relative;display:inline-flex;object-fit:contain;margin:-.1em .05em -.2em .1em;vertical-align:top}.emotewrapper.jumboable{margin-bottom:0;margin-top:.2em;vertical-align:-.3em}.emote{height:1.45em}.emote.jumboable{height:2rem}.fav{display:none;position:absolute;width:15px;height:15px;right:-7px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAzFBMVEUAAABQUFBMTExLS0tNTU1MTExNTU1NTU1MTExMTExNTU1LS0tEREBEREBEREBEREBJSUhLS0tLS0tEREBNTU1NTU1NTU1EREArKyhNTU1NTU0AAABMTExKSklMTExNTU1NTU1NTU1KSkpMTExKSkhNTU1KSkpISEZNTU1LS0tAQDxOTk5KSkpLS0tNTU1MTExMTEx/f39MTExMTExLS0pLS0tMTExNTU1NTU1LS0pNTU1NTU1NTU1NTU1NTU1NTUxNTU1NTU1NTUxMTEzB8C/5AAAAOnRSTlMAI8X96oWAgYSF68QBAg0PMCb9BIuLgQUD4N0Bh0mKhZSOQ4gcrKscaW8QRE6fmJyjAshASceG7cIpqQOxTQAAALVJREFUGFddx6FOA0EYAOGZvd07Qm6vVCAAgUUgQEDfX/YZMAigqaFN7iC5tsmPqGPUN/AvUVeoEbGOCElJz08Uzeixqu4AqomVVSNngOVjTqDGZSl3UFtPGV2ot2zaq96YM9p5Ddzcf/nTTAlj+/sNtNu8OcwkIsbPBtrUfMQeEhGQmHbmGIFMwLPzu6UMIwBNgToshgq8Nr2ki+Oy7ebDHp70LRPWB6OZgfWLWei7fJonOOsPCGA9kVlssOoAAAAASUVORK5CYII=);border:0;background-size:100% 100%;background-repeat:no-repeat;background-color:#303030;border-radius:5px;top:-7px;cursor:pointer}.fav.active{background-color:#ff0}.emotewrapper:hover .fav{display:block}.emojiPicker-3m1S-j{box-shadow:none;border-top:none;border-radius:0 0 5px 5px}#bd-qem{border-radius:5px 5px 0 0;background:#fff;border-bottom:1px solid rgba(0,0,0,.1);height:30px;display:flex;flex-direction:row;padding-right:1px}#bd-qem button{border-left:1px solid #efefef;background:0 0;box-shadow:#cecece 1px 0 0 0;flex-grow:1}#bd-qem button:hover{background:#ececec}#bd-qem-twitch{border-radius:5px 0 0 0;order:2}#bd-qem-emojis{border-radius:0 5px 0 0;order:3}#bd-qem-favourite{order:3}#bd-qem button.active{background-color:#e2e2e2}#bd-qem-twitch-container,#bd-qem-favourite-container{width:346px;height:329px;background-color:#fff;border-radius:0 0 5px 5px}#bd-qem-twitch-container .scroller-wrap,#bd-qem-favourite-container .scroller-wrap{height:100%}.emote-menu-inner{padding:5px 0 0 15px}.bd-qme-hidden #bd-qem-emojis{display:none}#emote-container{padding:10px}.emote-container{display:inline-block;padding:2px;border-radius:5px;width:30px;height:30px;position:relative}.emote-icon{max-width:100%;max-height:100%;position:absolute;margin:auto;top:0;right:0;bottom:0;left:0;cursor:pointer}.emote.stop-animation{animation:none}.emote-container:hover{background:rgba(123,123,123,.37)}.emoteflip,.emotespinflip{transform:scaleX(-1)}.emotespin{animation:1s emote-spin infinite linear}.emote1spin{animation:1s emote-spin-reverse infinite linear}.emotespin2{animation:.5s emote-spin infinite linear}.emote2spin{animation:.5s emote-spin-reverse infinite linear}.emotespin3{animation:.2s emote-spin infinite linear}.emote3spin{animation:.2s emote-spin-reverse infinite linear}.emotepulse{animation:1s emote-pulse infinite linear}.emotetr{transform:translateX(-3px)}.emotebl{transform:translateY(-3px)}.emotebr{transform:translate(-3px,-3px)}.emoteshake{animation:1s emote-shake infinite linear}.emoteflap{transform:scaleY(-1)}.emoteshake2{animation:emote-shake2 .3s linear infinite}.emoteshake3{animation:emote-shake3 .1s linear infinite}@keyframes emote-shake2{25%{transform:translate(-1px,-1px)}50%{transform:translate(-1px,1px)}75%{transform:translate(1px,1px)}75%{transform:translate(1px,-1px)}}@keyframes emote-shake3{25%{transform:translate(-1px,-1px)}50%{transform:translate(-1px,1px)}75%{transform:translate(1px,1px)}75%{transform:translate(1px,-1px)}}@keyframes emote-spin{0%{transform:rotate(0deg)}to{transform:rotate(360deg)}}@keyframes emote-spin-reverse{0%{transform:rotate(0deg)}to{transform:rotate(-360deg)}}@keyframes emote-pulse{0%{-webkit-transform:scale(1,1)}50%{-webkit-transform:scale(1.2,1.2)}to{-webkit-transform:scale(1,1)}}@keyframes emote-shake{10%,90%{transform:translate3d(-1px,0,0)}20%,80%{transform:translate3d(2px,0,0)}30%,50%,70%{transform:translate3d(-4px,0,0)}40%,60%{transform:translate3d(4px,0,0)}}.bd-minimal .divider-32i8lo{opacity:0}.bd-minimal .large-3ChYtB{max-width:20px;max-height:20px;background-size:100%;margin-right:2px;margin-top:0;border-radius:0}.bd-minimal .content-3dzVd8{border-left:2px solid #ebebeb;padding-left:2px}.bd-minimal .theme-dark .content-3dzVd8{border-left:2px solid #303030}.bd-minimal .username-_4ZSMR{font-size:small}.bd-minimal .container-1YxwTf{padding:5px}.bd-minimal .embed-IeVjo6{padding:2px}.bd-minimal .membersWrap-2h-GB4{min-width:0}.bd-minimal .members-1998pB .small-5Os1Bb{max-width:15px;max-height:15px;background-size:15px 15px}.bd-minimal .members-1998pB .small-5Os1Bb .status-oxiHuE{height:5px;width:5px}.bd-minimal .members-1998pB .member-3W1lQa{padding:5px}.bd-minimal .members-1998pB .memberInner-2CPc3V{transform:scale(.9)}.bd-minimal .members-1998pB .membersGroup-v9BXpm{margin-top:3px;transform:scale(.9)}.bd-minimal .channels-Ie2l6A{width:160px}.bd-minimal.bd-minimal-chan .channels-Ie2l6A{display:none}.bd-minimal .channels-Ie2l6A header span{font-size:12px}.bd-minimal .containerDefault-3GGEv_{transform:scale(.9)}.bd-minimal .content-3at_AU{transform:scale(.9)}.bd-minimal .icon-1_QxNX{width:14px;height:14px}.bd-minimal .wrapper-1Rf91z .scroller-2FKFPG .listItem-2P_4kh{width:20px;height:20px;background-size:100%;font-size:15px;line-height:20px;margin:0 12.5px 8px}.bd-minimal .wrapper-1Rf91z .scroller-2FKFPG .wrapper-25eVIn a,.bd-minimal .listItem-2P_4kh .wrapper-25eVIn .icon-27yU2q{width:20px;height:20px;background-size:100%;font-size:15px;line-height:20px}.bd-minimal .listItem-2P_4kh .wrapper-25eVIn{width:20px;height:20px;background-size:100%;font-size:15px;line-height:20px}.bd-minimal .listItem-2P_4kh svg,.bd-minimal .listItem-2P_4kh foreignObject[mask]{mask:none}.bd-minimal .wrapper-1Rf91z .scroller-2FKFPG .homeIcon-tEMBK1{width:10px;height:10px;background-size:100%;font-size:15px;line-height:20px}.bd-minimal .circleIconButton-jET_ig{height:20px;width:20px}.bd-minimal .circleIconButton-jET_ig svg{height:14px;width:14px}.bd-minimal .wrapper-1Rf91z .scroller-2FKFPG .friendsOnline-_wi_fM{margin-left:-15px;font-size:7px}.bd-minimal #bd-pub-li{height:16px}.bd-minimal #bd-pub-button{font-size:8px;line-height:16px;height:16px}.bd-minimal .wrapper-1Rf91z,.bd-minimal .wrapper-1Rf91z .scrollerWrap-1IAIlv,.bd-minimal .wrapper-1Rf91z .scroller-2FKFPG{width:45px}.bd-minimal .wrapper-1Rf91z .guildSeparator-3s64Iy{margin-left:-15px}.bd-minimal .wrapper-1Rf91z .scroller-2FKFPG .listItem-2P_4kh .wrapper-sa6paO{height:20px;margin-top:0;margin-left:-12.5px}.bd-minimal .wrapper-1Rf91z .scroller-2FKFPG .iconBadge-2wi9r4{width:12px;height:12px;background-size:12px}.bd-minimal .container-2Thooq .avatarSmall-3ACRaI{width:15px;height:15px;background-size:15px 15px}.bd-minimal .container-2Thooq .avatarSmall-3ACRaI .status-oxiHuE{height:5px;width:5px}.bd-minimal .container-2Thooq .accountDetails-3k9g4n{transform:scale(.8)}.bd-minimal .container-2Thooq .button-2b6hmh{height:14px;width:14px;background-size:14px 14px;margin-left:3px}.bd-minimal .container-2Thooq .button-2b6hmh svg{height:14px;width:14px}#bd-pub-li{height:20px;margin-bottom:10px;overflow:hidden}#bd-pub-button{border-radius:4px;background-color:#2f3136;color:#b9bbbe;text-align:center;font-size:12px;line-height:20px;height:20px}.bd-server-card .bd-server-tags{flex:1 1 auto;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;width:0;line-height:24px;font-size:12px;color:#b9bbbe;font-weight:700;margin-right:10px}.bd-server-card.bd-server-card-pinned{margin-bottom:15px}.bd-server-card.bd-server-card-pinned::after{background:#3a71c1;content:"";height:3px;width:100%;display:block;margin-top:7px;position:absolute;top:100%}.bd-server-description-container{color:#b9bbbe;min-height:65px;max-height:65px;border-top:1px solid #3f4146;border-bottom:1px solid #3f4146;padding-top:5px;font-size:13px}.bd-server-header{text-transform:uppercase;letter-spacing:.5px;justify-content:space-between;font-weight:600}.bd-server-card{display:flex;position:relative;border-width:1px;border-style:solid;border-radius:5px;background:rgba(32,34,37,.6);border-color:#202225;margin-bottom:8px}.bd-server-header,.bd-server-footer{display:flex;color:#b9bbbe}.bd-server-card .bd-button{margin-top:4px}.bd-server-content{padding:5px 10px;flex:1}.bd-server-image{min-width:115px;min-height:115px;max-width:115px;max-height:115px}.bd-server-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;padding-right:15px;max-width:330px;flex:1 1 50%}.bd-layer{-ms-flex-direction:column;-webkit-box-direction:normal;-webkit-box-orient:vertical;bottom:0;display:-webkit-box;display:-ms-flexbox;display:flex;flex-direction:column;left:0;position:absolute;right:0;top:0}#pubslayer button{background:#7289da;color:#fff;font-size:14px;font-weight:500;line-height:16px;padding:2px 16px;border:0;border-radius:3px;transition:background-color .17s ease}#pubslayer button:hover{background-color:#677bc4}#pubslayer input{color:#f6f6f7;background-color:rgba(0,0,0,.1);border-color:rgba(0,0,0,.3);padding:10px;height:30px;border-width:1px;border-style:solid;border-radius:3px;outline:0;transition:background-color .15s ease,border .15s ease}#bd-connection{margin-left:10px}.bd-footnote{color:#b9bbbe;font-size:11px}.bd-button-next,.bd-button-reconnect{margin:5px 10px 10px 0;width:100%;min-height:20px}.bd-reload{cursor:pointer;vertical-align:top;fill:#dcddde}.bd-reload:hover{fill:#fff}.bd-reload-header{margin-left:5px}.bd-reload-card{margin-right:5px}.bd-controls{display:flex}.bd-addon-list{user-select:text}.bd-addon-list .bd-addon-card{max-height:175px;margin-bottom:20px;padding:5px 8px;border:1px solid transparent;border-radius:5px;overflow:hidden}.theme-dark .bd-addon-list .bd-addon-card{background-color:rgba(32,34,37,.6);color:#f6f6f7;border-color:#202225}.theme-light .bd-addon-list .bd-addon-card{background-color:#f8f9f9;color:#4f545c;border-color:#dcddde}.bd-addon-list .bd-addon-card.settings-open{max-height:800px;overflow-y:auto}.bd-addon-list .bd-addon-header{font-size:12px;font-weight:700;display:flex;align-items:center;justify-content:space-between;padding-bottom:5px;border-bottom:1px solid transparent;overflow:hidden}.theme-dark .bd-addon-list .bd-addon-header{color:#f6f6f7;border-bottom-color:rgba(114,118,125,.3)}.theme-light .bd-addon-list .bd-addon-header{color:#4f545c;border-bottom-color:rgba(185,187,190,.3)}.bd-addon-list .bd-description{word-break:break-word;max-height:100px;margin:5px 0;padding:5px 0;overflow-y:auto}.theme-dark .bd-addon-list .bd-description{color:#b9bbbe}.theme-light .bd-addon-list .bd-description{color:#72767d}.bd-addon-list .scroller::-webkit-scrollbar-track-piece,.bd-addon-list .scroller::-webkit-scrollbar-thumb{border-radius:0!important;border-color:transparent}.bd-addon-list .bd-footer{font-size:12px;font-weight:700;display:flex;align-items:center;justify-content:space-between;padding-top:5px;border-top:1px solid transparent;overflow:hidden}.theme-dark .bd-addon-list .bd-footer{border-top-color:rgba(114,118,125,.3)}.theme-light .bd-addon-list .bd-footer{border-top-color:rgba(185,187,190,.3)}.bd-addon-list .bd-footer button{padding:3px 16px;transition:opacity 250ms ease}.bd-addon-list .bd-footer button:disabled{opacity:.4}.bd-addon-list .bd-footer a{color:#3e82e5}.bd-addon-list .bd-footer a:hover{text-decoration:underline}.bd-controls+.bd-addon-list{margin-top:10px}.bd-addon-button{cursor:pointer}.bd-addon-button+.bd-addon-button{margin-left:5px}.bd-search-wrapper{padding:3px;border-radius:3px;outline:0;border:0;background-color:#202225;color:#fff;display:flex;align-items:center}.bd-search{padding:2px 3px;background:0 0;border:0;color:#fff;flex:1}.bd-search-wrapper>svg{margin-right:2px}.bd-addon-controls{display:flex;align-items:center;justify-content:space-between}.bd-addon-controls .bd-search{font-size:13px;margin:0;width:200px}.bd-addon-dropdowns{display:flex}.react-error{color:red;font-weight:700;font-family:Arial,Helvetica,sans-serif;cursor:pointer}.settings-open .bd-close{cursor:pointer;float:right}.bd-social-logo{opacity:.6}.bd-social-link:hover .bd-social-logo{opacity:1}.standardSidebarView-3F1I7i .bd-versioninfo-wrapper{bottom:0;left:0;position:fixed;background:inherit;right:0;padding:5px}.standardSidebarView-3F1I7i .bd-versioninfo-wrapper span{color:#b9bbbe;font-weight:600;font-size:11px}.standardSidebarView-3F1I7i .bd-versioninfo-wrapper a{font-size:11px}.bd-button-title{margin-left:10px}.bd-switch{background-color:#72767d;border-radius:14px;width:42px;height:24px;opacity:1;overflow:hidden;user-select:none;position:relative;display:block;flex:0 0 auto;transition:background .15s ease-in-out,box-shadow .15s ease-in-out,border .15s ease-in-out,opacity .15s ease-in-out;margin-left:10px;box-shadow:inset 0 1px 1px rgba(0,0,0,.15)}.bd-switch::before{content:"";display:block;position:absolute;top:0;left:0;bottom:0;right:0;z-index:0;opacity:0;background-color:#000}.bd-switch::after{content:"";display:block;position:absolute;background-color:#fff;z-index:1;width:18px;margin:3px;border-radius:9px;height:18px;left:0;transition:transform .15s ease-in-out,width .1s ease-in-out,left .1s ease-in-out;box-shadow:0 2px 4px rgba(0,0,0,.3)}.bd-switch .bd-checkbox{position:absolute;width:100%;height:100%;opacity:0;padding:0;margin:0;z-index:2;cursor:pointer}.bd-switch-checked{background-color:#3e82e5}.bd-switch-checked::after{transform:translate3d(18px,0,0)}.bd-switch-disabled{opacity:.3;cursor:not-allowed}.bd-switch-item{flex-direction:column;margin-top:8px}.bd-switch-item h3{font-size:16px;font-weight:500;line-height:24px;flex:1}.theme-dark .bd-switch-item h3{color:#f6f6f7}.theme-light .bd-switch-item h3{color:#4f545c}.bd-switch-item .bd-switch-wrapper{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;position:relative;width:44px;height:24px;display:block;flex:0 0 auto}.bd-switch-item .bd-switch-wrapper input{position:absolute;opacity:0;cursor:pointer;width:100%;height:100%;z-index:1}.bd-switch-item .bd-switch-wrapper .bd-switch{position:absolute;top:0;right:0;bottom:0;left:0;background:#72767d;border-radius:14px;transition:background .15s ease-in-out,box-shadow .15s ease-in-out,border .15s ease-in-out}.bd-switch-item .bd-switch-wrapper .bd-switch::before{content:"";display:block;width:18px;height:18px;position:absolute;top:3px;left:3px;bottom:3px;background:#f6f6f7;border-radius:10px;transition:all .15s ease;box-shadow:0 3px 1px 0 rgba(0,0,0,.05),0 2px 2px 0 rgba(0,0,0,.1),0 3px 3px 0 rgba(0,0,0,.05)}.bd-switch-item .bd-switch-wrapper .bd-switch.checked{background:#7289da}.bd-switch-item .bd-switch-wrapper .bd-switch.checked::before{transform:translateX(20px)}#bd-settingspane-container .scroller-wrap{height:100%}#bd-settingspane-container .scroller-wrap .scroller{display:flex}.bd-select-wrapper{color:#f6f6f7;font-size:13px;display:flex;align-items:center}.bd-select-wrapper+.bd-select-wrapper{margin-left:10px}.bd-select-wrapper label{opacity:.3;margin-right:5px}.bd-select{position:relative;cursor:pointer;color:#f6f6f7;font-size:13px;display:flex;align-items:center;justify-content:space-between;background-color:rgba(0,0,0,.1);border:1px solid rgba(0,0,0,.3);border-radius:3px;padding:5px 5px 5px 0}.bd-select.bd-select-transparent{background:0 0;border:0;padding:0}.bd-select-value{padding-left:12px}.bd-select-arrow{margin-left:10px}.bd-select .bd-select-options{position:absolute;background:#2f3136;border-radius:0 0 3px 3px;max-height:300px;min-width:calc(100% + 2px);overflow-y:auto;box-shadow:rgba(0,0,0,.3) 0 1px 5px 0;border:1px solid rgba(0,0,0,.3);border-top:0;margin-top:-1px;margin-left:-1px;z-index:2;top:100%}.bd-select-transparent .bd-select-options{border:1px solid rgba(0,0,0,.3);margin-top:3px;border-radius:3px}.bd-select .bd-select-option{padding:8px 12px;cursor:pointer;white-space:pre}.bd-select .bd-select-option:hover,.bd-select .bd-select-option.selected{background:#26272b}.bd-setting-item .bd-select{min-width:200px}.bd-setting-item{display:flex;flex-direction:column;margin-bottom:20px}.bd-setting-header{display:flex;justify-content:space-between;align-items:center}.bd-setting-header label{font-weight:500;cursor:pointer;overflow:hidden;word-wrap:break-word;font-size:16px;line-height:24px;color:#f6f6f7}.bd-setting-note{color:#72767d;margin-top:4px;font-size:14px;line-height:20px;font-weight:500}.bd-setting-divider{width:100%;height:1px;margin-top:20px;background-color:rgba(114,118,125,.3)}.bd-settings-container{height:auto;overflow:hidden;transition:height 300ms cubic-bezier(.47,0,.745,.715)}.bd-settings-group.collapsed .bd-settings-container{height:0}.bd-settings-group.expanded .bd-settings-container:not(.animating){overflow:visible}.bd-settings-group.collapsible .bd-settings-title{display:flex;justify-content:space-between;align-items:center;order:1}.bd-settings-group.collapsible .bd-settings-title::before{content:"";background-color:rgba(114,118,125,.3);height:2px;order:2;flex:1;margin:0 10px 0 15px}.bd-settings-group.collapsible .bd-settings-title::after{content:"";background:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxOS4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iQ2FscXVlXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSItOTUwIDUzMiAxOCAxOCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAtOTUwIDUzMiAxOCAxODsiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4NCgkuc3Qwe2ZpbGw6bm9uZTt9DQoJLnN0MXtmaWxsOm5vbmU7c3Ryb2tlOiNGRkZGRkY7c3Ryb2tlLXdpZHRoOjEuNTtzdHJva2UtbWl0ZXJsaW1pdDoxMDt9DQo8L3N0eWxlPg0KPHBhdGggY2xhc3M9InN0MCIgZD0iTS05MzIsNTMydjE4aC0xOHYtMThILTkzMnoiLz4NCjxwb2x5bGluZSBjbGFzcz0ic3QxIiBwb2ludHM9Ii05MzYuNiw1MzguOCAtOTQxLDU0My4yIC05NDUuNCw1MzguOCAiLz4NCjwvc3ZnPg0K);height:20px;width:20px;display:inline-block;vertical-align:bottom;transition:transform .3s ease;transform:rotate(0);order:3}.bd-settings-group.collapsed .bd-settings-title::after{transition:transform .3s ease;transform:rotate(90deg)}.bd-settings-group~.bd-settings-group .bd-settings-title{margin-top:30px;transition:margin-top 300ms ease}.bd-settings-group.collapsed+.bd-settings-group .bd-settings-title{margin-top:0}.bd-settings-title.bd-settings-group-title{margin-bottom:10px}.checkbox-item{display:flex}.checkbox-item .checkbox-label{margin-right:8px}@keyframes open-window{0%{transform:scale(.9)}to{transform:none}}.floating-window{animation:open-window 200ms ease;min-width:200px;min-height:300px;box-shadow:0 2px 10px 0 rgba(0,0,0,.2);display:flex;flex-direction:column;-webkit-app-region:no-drag;position:fixed;z-index:1001;box-sizing:border-box}.floating-window.modal-open{z-index:999}.floating-window.resizable{overflow:auto;resize:both;padding-bottom:10px;background:#202225}.floating-window-titlebar{width:100%;display:flex;justify-content:space-between;align-items:center;background:#202225;color:#fff;border-bottom:1px solid #272822}.floating-window-content{display:flex;flex-direction:column;background:#2f3129;color:#fff;flex:1}.floating-window-titlebar .title{flex:1;text-align:center;padding:2px 0}.floating-window-buttons{display:flex}.floating-window-buttons .button{cursor:pointer;padding:0 2px}.floating-window-buttons .button svg{fill:#dcddde;margin-top:1.5px}.floating-window-buttons .button:hover svg{fill:#fff}.floating-window-buttons .button:hover{background-color:#36393f}.floating-window-buttons .close-button:hover{background-color:#f04747}.floating-window-buttons .close-button:hover svg path.fill{fill:#fff}.floating-window-content #bd-editor-panel{display:flex;flex-direction:column;flex:1}.floating-window .editor-wrapper{flex:1}.floating-window .ace_editor{height:auto;flex:1}.floating-window #bd-editor-controls{height:auto;background:#202225;border:0;box-shadow:0 1px 0 0 #2f3129 inset}#floating-editor-window{min-width:340px;min-height:280px;max-height:900px;max-width:750px}.floating-addon-window{min-width:535px;min-height:605px;max-height:90%;max-width:90%}@keyframes bd-backdrop{to{opacity:.85}}@keyframes bd-modal-wrapper{to{transform:scale(1);opacity:1}}@keyframes bd-backdrop-closing{to{opacity:0}}@keyframes bd-modal-wrapper-closing{to{transform:scale(.7);opacity:0}}.bd-backdrop{animation:bd-backdrop 250ms ease;animation-fill-mode:forwards;opacity:0;background-color:#000;transform:translateZ(0)}.bd-modal-wrapper.closing .bd-backdrop{animation:bd-backdrop-closing 200ms linear;animation-fill-mode:forwards;animation-delay:50ms;opacity:.85}.bd-modal-wrapper .bd-modal{animation:bd-modal-wrapper 250ms cubic-bezier(.175,.885,.32,1.275);animation-fill-mode:forwards;transform:scale(.7);transform-origin:50% 50%;display:flex;align-items:center;box-sizing:border-box;contain:content;justify-content:center;top:0;left:0;bottom:0;right:0;opacity:0;pointer-events:none;position:absolute;z-index:1000}.bd-modal-wrapper.closing .bd-modal{animation:bd-modal-wrapper-closing 250ms cubic-bezier(.19,1,.22,1);animation-fill-mode:forwards;opacity:1;transform:scale(1)}.bd-modal-wrapper .bd-modal-inner{display:flex;contain:layout;flex-direction:column;pointer-events:auto;border:1px solid rgba(28,36,43,.6);border-radius:5px;box-shadow:0 2px 10px 0 rgba(0,0,0,.2);overflow:hidden;max-height:660px;min-height:200px;width:440px;user-select:text}.bd-modal-wrapper .bd-content-modal .bd-modal-inner{height:500px;width:700px}.bd-modal-wrapper .header{background-color:#35393e;box-shadow:0 2px 3px 0 rgba(0,0,0,.2);padding:12px 20px;z-index:1;color:#fff;font-size:16px;font-weight:700;line-height:19px}.bd-modal-wrapper .bd-modal-body{background-color:#36393f;color:#fff;overflow:hidden;display:flex;flex-direction:column;flex:1;contain:layout;position:relative}.bd-modal-wrapper .scroller{padding:10px;overflow-y:auto}.bd-modal-wrapper .bd-content-modal .bd-modal-body{padding:0}.bd-modal-wrapper .footer{display:flex;justify-content:flex-end;padding:10px 20px}.bd-modal-wrapper .footer button{min-height:32px;min-width:60px;align-items:center;display:flex;font-size:14px;font-weight:500;justify-content:center;line-height:16px;padding:2px 16px;user-select:none}.bd-modal-wrapper .tab-bar-container{align-items:center;border-bottom:0;background:rgba(0,0,0,.2);box-shadow:0 2px 3px 0 rgba(0,0,0,.1);display:flex;flex-direction:row;justify-content:space-between;margin-bottom:15px}.bd-modal-wrapper .tab-bar.TOP{margin:0;border:0;display:flex;flex-direction:row;justify-content:space-between;align-items:center}.bd-modal-wrapper .tab-bar-container .tab-bar-item{margin:0 15px;padding:15px 0;color:#fff;opacity:.5;transition:opacity 200ms ease;border-bottom:2px solid transparent}.bd-modal-wrapper .tab-bar-container .tab-bar-item:hover{border-color:#fff;cursor:pointer}.bd-modal-wrapper .tab-bar-container .tab-bar-item.selected{opacity:1;border-color:#fff}.bd-modal-wrapper .tab-bar.TOP .tab-bar-item+.tab-bar-item{margin:0}.bd-modal-wrapper .table-header{display:flex;justify-content:space-between;color:#fff;font-weight:700;padding-bottom:10px;margin:3px 15px 0 15px;border-bottom:1px solid #fff;font-size:14px}.bd-modal-wrapper .table-column{width:25%;word-wrap:break-word}.bd-modal-wrapper .table-column.column-error{width:50%}.bd-modal-wrapper .errors{display:flex;flex-direction:column;font-size:14px;padding:0 5px}.bd-modal-wrapper .error{display:flex;color:#fff;border-bottom:1px solid rgba(255,255,255,.25);padding:15px 0;align-items:center}.bd-modal-wrapper .error-link{color:#3e82e5;font-weight:500}.bd-modal-wrapper .bd-content-modal .scroller{padding-top:0}.bd-sidebar-header{display:flex;justify-content:space-between}.bd-sidebar-header .bd-changelog-button{height:16px}.bd-sidebar-header .bd-icon{cursor:pointer;fill:#72767d}.bd-sidebar-header .bd-icon:hover{fill:#fff}.bd-toasts{position:fixed;display:flex;top:0;flex-direction:column;align-items:center;justify-content:flex-end;pointer-events:none;z-index:4000}@keyframes bd-toast-up{0%{transform:translateY(0);opacity:0}}.bd-toast{animation:bd-toast-up 300ms ease;transform:translateY(-10px);background:#36393f;padding:10px;border-radius:5px;box-shadow:0 0 0 1px rgba(32,34,37,.6),0 2px 10px 0 rgba(0,0,0,.2);font-weight:500;color:#fff;font-size:14px;opacity:1;margin-top:10px;pointer-events:none;user-select:none}@keyframes bd-toast-down{to{transform:translateY(0);opacity:0}}.bd-toast.closing{animation:bd-toast-down 200ms ease;animation-fill-mode:forwards;opacity:1;transform:translateY(-10px)}.bd-toast.icon{padding-left:30px;background-size:20px 20px;background-repeat:no-repeat;background-position:6px 50%}.bd-toast.toast-info{background-color:#4a90e2}.bd-toast.toast-info.icon{background-image:url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjRkZGRkZGIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMSAxNWgtMnYtNmgydjZ6bTAtOGgtMlY3aDJ2MnoiLz48L3N2Zz4=)}.bd-toast.toast-success{background-color:#43b581}.bd-toast.toast-success.icon{background-image:url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjRkZGRkZGIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptLTIgMTVsLTUtNSAxLjQxLTEuNDFMMTAgMTQuMTdsNy41OS03LjU5TDE5IDhsLTkgOXoiLz48L3N2Zz4=)}.bd-toast.toast-danger,.bd-toast.toast-error{background-color:#f04747}.bd-toast.toast-danger.icon,.bd-toast.toast-error.icon{background-image:url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjRkZGRkZGIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTEyIDJDNi40NyAyIDIgNi40NyAyIDEyczQuNDcgMTAgMTAgMTAgMTAtNC40NyAxMC0xMFMxNy41MyAyIDEyIDJ6bTUgMTMuNTlMMTUuNTkgMTcgMTIgMTMuNDEgOC40MSAxNyA3IDE1LjU5IDEwLjU5IDEyIDcgOC40MSA4LjQxIDcgMTIgMTAuNTkgMTUuNTkgNyAxNyA4LjQxIDEzLjQxIDEyIDE3IDE1LjU5eiIvPiAgICA8cGF0aCBkPSJNMCAwaDI0djI0SDB6IiBmaWxsPSJub25lIi8+PC9zdmc+)}.bd-toast.toast-warning,.bd-toast.toast-warn{background-color:#ffa600;color:#fff}.bd-toast.toast-warning.icon,.bd-toast.toast-warn.icon{background-image:url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjRkZGRkZGIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMSAyMWgyMkwxMiAyIDEgMjF6bTEyLTNoLTJ2LTJoMnYyem0wLTRoLTJ2LTRoMnY0eiIvPjwvc3ZnPg==)}.bd-button{background-color:#3e82e5;color:#fff;border-radius:3px;padding:2px 6px}.bd-button:hover{background-color:#3875ce}.bd-button:active{background-color:#3268b7}.bd-button.bd-button-success{background-color:#3ac15c}.bd-button.bd-button-success:hover{background-color:#34ae53}.bd-button.bd-button-success:active{background-color:#2e9a4a}.bd-chat-badge{vertical-align:bottom;line-height:1.375rem;display:inline-block;height:1.25rem}.bd-member-badge{height:15px;margin-left:4px} \ No newline at end of file diff --git a/gulpfile.js b/gulpfile.js index 7fa04d6b..39378098 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -1,16 +1,30 @@ const gulp = require("gulp"); +const postcss = require("gulp-postcss"); const rename = require("gulp-rename"); -const csso = require("gulp-csso"); +const postcssImport = require("postcss-easy-import"); +const postcssCSSO = require("postcss-csso"); + +gulp.task("build-css", buildCSS); gulp.task("minify-css", minifyCSS); gulp.task("watch-css", function() { return gulp.watch(["./src/styles/index.css"], minifyCSS); }); -function minifyCSS() { +function runBuild(minified) { + const plugins = [postcssImport]; + if (minified) plugins.push(postcssCSSO({restructure: false})); return gulp.src("./src/styles/index.css") - .pipe(csso({restructure: false})) - .pipe(rename("style.css")) + .pipe(postcss(plugins)) + .pipe(rename(minified ? "style.min.css" : "style.css")) .pipe(gulp.dest("./dist")); +} + +function buildCSS() { + return runBuild(false); +} + +function minifyCSS() { + return runBuild(true); } \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 4393c27d..bbc793eb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "bandagedbd", - "version": "0.2.3", + "version": "1.0.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -1116,12 +1116,87 @@ "to-fast-properties": "^2.0.0" } }, + "@nodelib/fs.scandir": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz", + "integrity": "sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.3", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz", + "integrity": "sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz", + "integrity": "sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.3", + "fastq": "^1.6.0" + } + }, + "@stylelint/postcss-css-in-js": { + "version": "0.37.2", + "resolved": "https://registry.npmjs.org/@stylelint/postcss-css-in-js/-/postcss-css-in-js-0.37.2.tgz", + "integrity": "sha512-nEhsFoJurt8oUmieT8qy4nk81WRHmJynmVwn/Vts08PL9fhgIsMhk1GId5yAN643OzqEEb5S/6At2TZW7pqPDA==", + "dev": true, + "requires": { + "@babel/core": ">=7.9.0" + } + }, + "@stylelint/postcss-markdown": { + "version": "0.36.1", + "resolved": "https://registry.npmjs.org/@stylelint/postcss-markdown/-/postcss-markdown-0.36.1.tgz", + "integrity": "sha512-iDxMBWk9nB2BPi1VFQ+Dc5+XpvODBHw2n3tYpaBZuEAFQlbtF9If0Qh5LTTwSi/XwdbJ2jt+0dis3i8omyggpw==", + "dev": true, + "requires": { + "remark": "^12.0.0", + "unist-util-find-all-after": "^3.0.1" + } + }, + "@types/color-name": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", + "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", + "dev": true + }, "@types/json-schema": { "version": "7.0.5", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.5.tgz", "integrity": "sha512-7+2BITlgjgDhH0vvwZU/HZJVyk+2XUlvxXe8dFMedNX/aMkaOq++rMAFXc0tM7ij15QaWlbdQASBR9dihi+bDQ==", "dev": true }, + "@types/minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-aaI6OtKcrwCX8G7aWbNh7i8GOfY=", + "dev": true + }, + "@types/normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==", + "dev": true + }, + "@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "dev": true + }, + "@types/unist": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.3.tgz", + "integrity": "sha512-FvUupuM3rlRsRtCN+fDudtmytGO6iHJuuRKS1Ss0pG5z8oX0diNEw94UEL7hgDbpN94rgaK5R7sWm6RrSkZuAQ==", + "dev": true + }, "@webassemblyjs/ast": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", @@ -1315,6 +1390,12 @@ "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", "dev": true }, + "acorn-jsx": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz", + "integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==", + "dev": true + }, "ajv": { "version": "6.12.3", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.3.tgz", @@ -1409,6 +1490,15 @@ "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", "dev": true }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, "arr-diff": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", @@ -1451,6 +1541,17 @@ "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", "dev": true }, + "array-includes": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.1.tgz", + "integrity": "sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0", + "is-string": "^1.0.5" + } + }, "array-initial": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/array-initial/-/array-initial-1.1.0.tgz", @@ -1511,12 +1612,41 @@ } } }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, "array-unique": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", "dev": true }, + "array.prototype.flatmap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.2.3.tgz", + "integrity": "sha512-OOEk+lkePcg+ODXIpvuU9PAryCikCJyo7GlDG1upleEpQRx6mzL9puEBkozQ5iAx20KV0l3DbyQwqciJtqe5Pg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1" + } + }, + "arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "dev": true + }, "asn1.js": { "version": "4.10.1", "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", @@ -1569,6 +1699,12 @@ "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", "dev": true }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true + }, "async-done": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.2.tgz", @@ -1602,6 +1738,21 @@ "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", "dev": true }, + "autoprefixer": { + "version": "9.8.5", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.5.tgz", + "integrity": "sha512-C2p5KkumJlsTHoNv9w31NrBRgXhf6eCMteJuHZi2xhkgC+5Vm40MEtCKPhc0qdgAOhox0YPy1SQHTAky05UoKg==", + "dev": true, + "requires": { + "browserslist": "^4.12.0", + "caniuse-lite": "^1.0.30001097", + "colorette": "^1.2.0", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^7.0.32", + "postcss-value-parser": "^4.1.0" + } + }, "babel-loader": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.1.0.tgz", @@ -1641,6 +1792,12 @@ "now-and-later": "^2.0.0" } }, + "bail": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz", + "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==", + "dev": true + }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", @@ -1980,18 +2137,67 @@ "unset-value": "^1.0.0" } }, + "caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", + "dev": true, + "requires": { + "callsites": "^2.0.0" + }, + "dependencies": { + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "dev": true + } + } + }, + "caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", + "dev": true, + "requires": { + "caller-callsite": "^2.0.0" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, "camelcase": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true }, + "camelcase-keys": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", + "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "map-obj": "^4.0.0", + "quick-lru": "^4.0.1" + } + }, "caniuse-lite": { "version": "1.0.30001102", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001102.tgz", "integrity": "sha512-fOjqRmHjRXv1H1YD6QVLb96iKqnu17TjcLSaX64TwhGYed0P1E1CCWZ9OujbbK4Z/7zax7zAzvQidzdtjx8RcA==", "dev": true }, + "ccount": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.0.5.tgz", + "integrity": "sha512-MOli1W+nfbPLlKEhInaxhRdp7KVLFxLN5ykwzHgLsLI3H3gs5jjFAK4Eoj3OzzcxCtumDaI8onoVDeQyWaNTkw==", + "dev": true + }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -2003,6 +2209,30 @@ "supports-color": "^5.3.0" } }, + "character-entities": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", + "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", + "dev": true + }, + "character-entities-html4": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-1.1.4.tgz", + "integrity": "sha512-HRcDxZuZqMx3/a+qrzxdBKBPUpxWEq9xw2OPZ3a/174ihfrQKVsFhqtthBInFy1zZ9GgZyFXOatNujm8M+El3g==", + "dev": true + }, + "character-entities-legacy": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", + "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", + "dev": true + }, + "character-reference-invalid": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", + "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", + "dev": true + }, "chokidar": { "version": "2.1.8", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", @@ -2136,6 +2366,15 @@ "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=", "dev": true }, + "clone-regexp": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clone-regexp/-/clone-regexp-2.2.0.tgz", + "integrity": "sha512-beMpP7BOtTipFuW8hrJvREQ2DrRu3BE7by0ZpibtfBA+qfHYvMGTc2Yb1JMYPKg/JUw0CHYvpg796aNTSW9z7Q==", + "dev": true, + "requires": { + "is-regexp": "^2.0.0" + } + }, "clone-stats": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", @@ -2159,6 +2398,12 @@ "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", "dev": true }, + "collapse-white-space": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.6.tgz", + "integrity": "sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ==", + "dev": true + }, "collection-map": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/collection-map/-/collection-map-1.0.0.tgz", @@ -2201,6 +2446,12 @@ "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", "dev": true }, + "colorette": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz", + "integrity": "sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==", + "dev": true + }, "commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -2312,6 +2563,39 @@ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", "dev": true }, + "cosmiconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "dev": true, + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" + }, + "dependencies": { + "parse-json": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz", + "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1", + "lines-and-columns": "^1.1.6" + } + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + } + } + }, "create-ecdh": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", @@ -2407,6 +2691,12 @@ } } }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true + }, "csso": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/csso/-/csso-4.0.3.tgz", @@ -2447,12 +2737,36 @@ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", "dev": true }, + "decamelize-keys": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", + "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", + "dev": true, + "requires": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "dependencies": { + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + } + } + }, "decode-uri-component": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", "dev": true }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, "default-compare": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz", @@ -2561,12 +2875,87 @@ } } }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + }, + "dependencies": { + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + } + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + }, + "dependencies": { + "domelementtype": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.1.tgz", + "integrity": "sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ==", + "dev": true + }, + "entities": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.3.tgz", + "integrity": "sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ==", + "dev": true + } + } + }, "domain-browser": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", "dev": true }, + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "dev": true + }, + "domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "dev": true, + "requires": { + "domelementtype": "1" + } + }, + "domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, "duplexify": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", @@ -2662,6 +3051,29 @@ } } }, + "enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "requires": { + "ansi-colors": "^4.1.1" + }, + "dependencies": { + "ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true + } + } + }, + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "dev": true + }, "errno": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", @@ -2680,6 +3092,36 @@ "is-arrayish": "^0.2.1" } }, + "es-abstract": { + "version": "1.17.6", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", + "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.0", + "is-regex": "^1.1.0", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, "es5-ext": { "version": "0.10.53", "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", @@ -2736,6 +3178,249 @@ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, + "eslint": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.5.0.tgz", + "integrity": "sha512-vlUP10xse9sWt9SGRtcr1LAC67BENcQMFeV+w5EvLEoFe3xJ8cF1Skd0msziRx/VMC+72B4DxreCE+OR12OA6Q==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "eslint-scope": "^5.1.0", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^1.3.0", + "espree": "^7.2.0", + "esquery": "^1.2.0", + "esutils": "^2.0.2", + "file-entry-cache": "^5.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.0.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash": "^4.17.19", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^5.2.3", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "eslint-scope": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.0.tgz", + "integrity": "sha512-iiGRvtxWqgtx5m8EyQUJihBloE4EnYeGE/bz1wSPwJE6tZuJUtHlhqDM4Xj2ukE8Dyy1+HCZ4hE0fzIVMzb58w==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "eslint-plugin-react": { + "version": "7.20.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.20.3.tgz", + "integrity": "sha512-txbo090buDeyV0ugF3YMWrzLIUqpYTsWSDZV9xLSmExE1P/Kmgg9++PD931r+KEWS66O1c9R4srLVVHmeHpoAg==", + "dev": true, + "requires": { + "array-includes": "^3.1.1", + "array.prototype.flatmap": "^1.2.3", + "doctrine": "^2.1.0", + "has": "^1.0.3", + "jsx-ast-utils": "^2.4.1", + "object.entries": "^1.1.2", + "object.fromentries": "^2.0.2", + "object.values": "^1.1.1", + "prop-types": "^15.7.2", + "resolve": "^1.17.0", + "string.prototype.matchall": "^4.0.2" + }, + "dependencies": { + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + } + } + }, "eslint-scope": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", @@ -2746,6 +3431,63 @@ "estraverse": "^4.1.1" } }, + "eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + }, + "espree": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.2.0.tgz", + "integrity": "sha512-H+cQ3+3JYRMEIOl87e7QdHX70ocly5iW4+dttuR8iYSPr/hXKFb+7dBsZ7+u1adC4VrnPlTkv0+OwuPnDop19g==", + "dev": true, + "requires": { + "acorn": "^7.3.1", + "acorn-jsx": "^5.2.0", + "eslint-visitor-keys": "^1.3.0" + }, + "dependencies": { + "acorn": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.3.1.tgz", + "integrity": "sha512-tLc0wSnatxAQHVHUapaHdz72pi9KUyHjq5KyHjGg9Y8Ifdc79pTh2XvI6I1/chZbnM7QtNKzh66ooDogPZSleA==", + "dev": true + } + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "esquery": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", + "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.1.0.tgz", + "integrity": "sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw==", + "dev": true + } + } + }, "esrecurse": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", @@ -2783,6 +3525,15 @@ "safe-buffer": "^5.1.1" } }, + "execall": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/execall/-/execall-2.0.0.tgz", + "integrity": "sha512-0FU2hZ5Hh6iQnarpRtQurM/aAvp3RIbfvgLHrcqJYzhXyV2KFruhuChf9NC6waAhiUR7FFtlugkI4p7f2Fqlow==", + "dev": true, + "requires": { + "clone-regexp": "^2.1.0" + } + }, "expand-brackets": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", @@ -2954,18 +3705,110 @@ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, + "fast-glob": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.4.tgz", + "integrity": "sha512-kr/Oo6PX51265qeuCYsyGypiO5uJFgBS0jksyG7FUeCyQzNwYnzrNIMR1NXfkZXsMYXYLRAHgISHBz8gQcxKHQ==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.0", + "merge2": "^1.3.0", + "micromatch": "^4.0.2", + "picomatch": "^2.2.1" + }, + "dependencies": { + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + } + } + }, "fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "fastq": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.8.0.tgz", + "integrity": "sha512-SMIZoZdLh/fgofivvIkmknUXyPnvxRE3DhtZ5Me3Mrsk5gyPL42F0xr51TdRXskBxHfMp+07bcYzfsYEsSQA9Q==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, "figgy-pudding": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", "dev": true }, + "file-entry-cache": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", + "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "dev": true, + "requires": { + "flat-cache": "^2.0.1" + } + }, "file-uri-to-path": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", @@ -3047,6 +3890,34 @@ "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==", "dev": true }, + "flat-cache": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "dev": true, + "requires": { + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" + }, + "dependencies": { + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "flatted": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", + "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", + "dev": true + }, "flush-write-stream": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", @@ -3136,6 +4007,12 @@ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, "gensync": { "version": "1.0.0-beta.1", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", @@ -3148,6 +4025,12 @@ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true }, + "get-stdin": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz", + "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==", + "dev": true + }, "get-value": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", @@ -3251,6 +4134,26 @@ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true }, + "globby": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.1.tgz", + "integrity": "sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" + } + }, + "globjoin": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz", + "integrity": "sha1-L0SUrIkZ43Z8XLtpHp9GMyQoXUM=", + "dev": true + }, "glogg": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.2.tgz", @@ -3260,6 +4163,15 @@ "sparkles": "^1.0.0" } }, + "gonzales-pe": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/gonzales-pe/-/gonzales-pe-4.3.0.tgz", + "integrity": "sha512-otgSPpUmdWJ43VXyiNgEYE4luzHCL2pz4wQ0OnDluC6Eg4Ko3Vexy/SrSynglw/eR+OhkzmqFCZa/OFa/RgAOQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, "graceful-fs": { "version": "4.1.15", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", @@ -3398,14 +4310,16 @@ } } }, - "gulp-csso": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/gulp-csso/-/gulp-csso-4.0.1.tgz", - "integrity": "sha512-Kg8gqmd6XcUlMTdBbqdCEcpHumc8ytc4khgm9AXeCjl8eHx7b6tC11y8haizFI+Zw/cSHL6HCj7GwGLwxxBUFQ==", + "gulp-postcss": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/gulp-postcss/-/gulp-postcss-8.0.0.tgz", + "integrity": "sha512-Wtl6vH7a+8IS/fU5W9IbOpcaLqKxd5L1DUOzaPmlnCbX1CrG0aWdwVnC3Spn8th0m8D59YbysV5zPUe1n/GJYg==", "dev": true, "requires": { - "csso": "^4.0.0", - "plugin-error": "^1.0.0", + "fancy-log": "^1.3.2", + "plugin-error": "^1.0.1", + "postcss": "^7.0.2", + "postcss-load-config": "^2.0.0", "vinyl-sourcemaps-apply": "^0.2.1" } }, @@ -3424,6 +4338,21 @@ "glogg": "^1.0.0" } }, + "hard-rejection": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", + "dev": true + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -3540,6 +4469,39 @@ "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", "dev": true }, + "html-tags": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.1.0.tgz", + "integrity": "sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg==", + "dev": true + }, + "htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", + "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "dev": true, + "requires": { + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, "https-browserify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", @@ -3558,6 +4520,54 @@ "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", "dev": true }, + "ignore": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "dev": true + }, + "import-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz", + "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=", + "dev": true, + "requires": { + "import-from": "^2.1.0" + } + }, + "import-fresh": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", + "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + } + } + }, + "import-from": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz", + "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + } + }, + "import-lazy": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", + "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", + "dev": true + }, "import-local": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", @@ -3574,6 +4584,18 @@ "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", "dev": true }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true + }, + "indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", + "dev": true + }, "infer-owner": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", @@ -3602,6 +4624,17 @@ "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", "dev": true }, + "internal-slot": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.2.tgz", + "integrity": "sha512-2cQNfwhAfJIkU4KZPkDI+Gj5yNNnbqi40W9Gge6dfnk4TocEVm00B3bdiL+JINrbGJil2TeHvM4rETGzk/f/0g==", + "dev": true, + "requires": { + "es-abstract": "^1.17.0-next.1", + "has": "^1.0.3", + "side-channel": "^1.0.2" + } + }, "interpret": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", @@ -3653,6 +4686,28 @@ } } }, + "is-alphabetical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", + "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", + "dev": true + }, + "is-alphanumeric": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-alphanumeric/-/is-alphanumeric-1.0.0.tgz", + "integrity": "sha1-Spzvcdr0wAHB2B1j0UDPU/1oifQ=", + "dev": true + }, + "is-alphanumerical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", + "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", + "dev": true, + "requires": { + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" + } + }, "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -3674,6 +4729,12 @@ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "dev": true }, + "is-callable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz", + "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==", + "dev": true + }, "is-data-descriptor": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", @@ -3694,6 +4755,18 @@ } } }, + "is-date-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", + "dev": true + }, + "is-decimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", + "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", + "dev": true + }, "is-descriptor": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", @@ -3713,6 +4786,12 @@ } } }, + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", + "dev": true + }, "is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", @@ -3740,6 +4819,12 @@ "is-extglob": "^2.1.1" } }, + "is-hexadecimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", + "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", + "dev": true + }, "is-negated-glob": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", @@ -3766,6 +4851,12 @@ } } }, + "is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true + }, "is-plain-object": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", @@ -3775,6 +4866,21 @@ "isobject": "^3.0.1" } }, + "is-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.0.tgz", + "integrity": "sha512-iI97M8KTWID2la5uYXlkbSDQIg4F6o1sYboZKKTDpnDQMLtUL86zxhgDet3Q2SriaYsyGqZ6Mn2SjbRKeLHdqw==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-regexp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-2.1.0.tgz", + "integrity": "sha512-OZ4IlER3zmRIoB9AqNhEggVxqIH4ofDns5nRrPS6yQxXE1TPCUpFznBfRQmQa8uC+pXqjMnukiJBxCisIxiLGA==", + "dev": true + }, "is-relative": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", @@ -3784,6 +4890,27 @@ "is-unc-path": "^1.0.0" } }, + "is-string": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "dev": true + }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, "is-unc-path": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", @@ -3805,12 +4932,24 @@ "integrity": "sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao=", "dev": true }, + "is-whitespace-character": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz", + "integrity": "sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w==", + "dev": true + }, "is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", "dev": true }, + "is-word-character": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.4.tgz", + "integrity": "sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA==", + "dev": true + }, "is-wsl": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", @@ -3841,6 +4980,16 @@ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true }, + "js-yaml": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", + "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, "jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", @@ -3874,6 +5023,16 @@ "minimist": "^1.2.5" } }, + "jsx-ast-utils": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.4.1.tgz", + "integrity": "sha512-z1xSldJ6imESSzOjd3NNkieVJKRlKYSOtMG8SFyCj2FIrvSaSuli/WjpBkEzCBoR9bYYYFgqJw61Xhu7Lcgk+w==", + "dev": true, + "requires": { + "array-includes": "^3.1.1", + "object.assign": "^4.1.0" + } + }, "just-debounce": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/just-debounce/-/just-debounce-1.0.0.tgz", @@ -3886,6 +5045,12 @@ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true }, + "known-css-properties": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.19.0.tgz", + "integrity": "sha512-eYboRV94Vco725nKMlpkn3nV2+96p9c3gKXRsYqAJSswSENvBhN7n5L+uDhY58xQa0UukWsDMTGELzmD8Q+wTA==", + "dev": true + }, "last-run": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/last-run/-/last-run-1.1.1.tgz", @@ -3938,6 +5103,16 @@ "leven": "^3.1.0" } }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, "liftoff": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz", @@ -3954,6 +5129,12 @@ "resolve": "^1.1.7" } }, + "lines-and-columns": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", + "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", + "dev": true + }, "load-json-file": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", @@ -4019,6 +5200,73 @@ "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", "dev": true }, + "log-symbols": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz", + "integrity": "sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA==", + "dev": true, + "requires": { + "chalk": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "longest-streak": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz", + "integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==", + "dev": true + }, "loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", @@ -4062,6 +5310,12 @@ "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", "dev": true }, + "map-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.1.0.tgz", + "integrity": "sha512-glc9y00wgtwcDmp7GaE/0b0OnxpNJsVf3ael/An6Fe2Q51LLwN1er6sdomLRzz5h0+yMpiYLhWYF5R7HeqVd4g==", + "dev": true + }, "map-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", @@ -4071,6 +5325,21 @@ "object-visit": "^1.0.0" } }, + "markdown-escapes": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.4.tgz", + "integrity": "sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg==", + "dev": true + }, + "markdown-table": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-2.0.0.tgz", + "integrity": "sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A==", + "dev": true, + "requires": { + "repeat-string": "^1.0.0" + } + }, "matchdep": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz", @@ -4106,6 +5375,12 @@ } } }, + "mathml-tag-names": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz", + "integrity": "sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==", + "dev": true + }, "md5.js": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", @@ -4117,6 +5392,15 @@ "safe-buffer": "^5.1.2" } }, + "mdast-util-compact": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-compact/-/mdast-util-compact-2.0.1.tgz", + "integrity": "sha512-7GlnT24gEwDrdAwEHrU4Vv5lLWrEer4KOkAiKT9nYstsTad7Oc1TwqT2zIMKRdZF7cTuaf+GA1E4Kv7jJh8mPA==", + "dev": true, + "requires": { + "unist-util-visit": "^2.0.0" + } + }, "mdn-data": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.6.tgz", @@ -4133,6 +5417,144 @@ "readable-stream": "^2.0.1" } }, + "meow": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/meow/-/meow-7.0.1.tgz", + "integrity": "sha512-tBKIQqVrAHqwit0vfuFPY3LlzJYkEOFyKa3bPgxzNl6q/RtN8KQ+ALYEASYuFayzSAsjlhXj/JZ10rH85Q6TUw==", + "dev": true, + "requires": { + "@types/minimist": "^1.2.0", + "arrify": "^2.0.1", + "camelcase": "^6.0.0", + "camelcase-keys": "^6.2.2", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "^4.0.2", + "normalize-package-data": "^2.5.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.13.1", + "yargs-parser": "^18.1.3" + }, + "dependencies": { + "camelcase": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.0.0.tgz", + "integrity": "sha512-8KMDF1Vz2gzOq54ONPJS65IvTUaB1cHJ2DMM7MbPmLZljDH1qpzzLsWdiN9pHh6qvkRVDTi/07+eNGch/oLU4w==", + "dev": true + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "parse-json": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz", + "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1", + "lines-and-columns": "^1.1.6" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true + } + } + }, + "read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "requires": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "dependencies": { + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + } + } + }, + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + } + } + } + } + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, "micromatch": { "version": "3.1.10", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", @@ -4172,6 +5594,12 @@ } } }, + "min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true + }, "minimalistic-assert": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", @@ -4199,6 +5627,31 @@ "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", "dev": true }, + "minimist-options": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", + "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", + "dev": true, + "requires": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0", + "kind-of": "^6.0.3" + }, + "dependencies": { + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true + } + } + }, "mississippi": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", @@ -4311,6 +5764,12 @@ "to-regex": "^3.0.1" } }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, "neo-async": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", @@ -4401,6 +5860,18 @@ "remove-trailing-separator": "^1.0.1" } }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "dev": true + }, + "normalize-selector": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/normalize-selector/-/normalize-selector-0.2.0.tgz", + "integrity": "sha1-0LFF62kRicY6eNIB3E/bEpPvDAM=", + "dev": true + }, "now-and-later": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz", @@ -4410,6 +5881,12 @@ "once": "^1.3.2" } }, + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", + "dev": true + }, "number-is-nan": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", @@ -4453,6 +5930,12 @@ } } }, + "object-inspect": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", + "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==", + "dev": true + }, "object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", @@ -4492,6 +5975,29 @@ "isobject": "^3.0.0" } }, + "object.entries": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.2.tgz", + "integrity": "sha512-BQdB9qKmb/HyNdMNWVr7O3+z5MUIx3aiegEIJqjMBbBf0YT9RRxTJSim4mzFqtyr7PDAHigq0N9dO0m0tRakQA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "has": "^1.0.3" + } + }, + "object.fromentries": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.2.tgz", + "integrity": "sha512-r3ZiBH7MQppDJVLx6fhD618GKNG40CZYH9wgwdhKxBDDbQgjeWGGd4AtkZad84d291YxvWe7bJGuE65Anh0dxQ==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, "object.map": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", @@ -4521,6 +6027,18 @@ "make-iterator": "^1.0.0" } }, + "object.values": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz", + "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -4530,6 +6048,20 @@ "wrappy": "1" } }, + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + } + }, "ordered-read-streams": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz", @@ -4595,6 +6127,15 @@ "readable-stream": "^2.1.5" } }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, "parse-asn1": { "version": "5.1.5", "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz", @@ -4609,6 +6150,20 @@ "safe-buffer": "^5.1.1" } }, + "parse-entities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", + "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", + "dev": true, + "requires": { + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" + } + }, "parse-filepath": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", @@ -4734,8 +6289,7 @@ "version": "2.2.2", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", - "dev": true, - "optional": true + "dev": true }, "pify": { "version": "4.0.1", @@ -4794,6 +6348,306 @@ "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", "dev": true }, + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss-csso": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-csso/-/postcss-csso-4.0.0.tgz", + "integrity": "sha512-Yh9Ug0w3+T/LZIh1vGJQY8+hE13yFRHpINoAmgOhvu9lBmG1jyHkAprGHEHlGjWODJzB4DCNBVBb6Cs0QEoglQ==", + "dev": true, + "requires": { + "csso": "^4.0.2" + } + }, + "postcss-easy-import": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-easy-import/-/postcss-easy-import-3.0.0.tgz", + "integrity": "sha512-cfNsear/v8xlkl9v5Wm8y4Do/puiDQTFF+WX2Fo++h7oKt1fKWVVW/5Ca8hslYDQWnjndrg813cA23Pt1jsYdg==", + "dev": true, + "requires": { + "globby": "^6.1.0", + "is-glob": "^4.0.0", + "lodash": "^4.17.4", + "object-assign": "^4.0.1", + "pify": "^3.0.0", + "postcss": "^6.0.11", + "postcss-import": "^10.0.0", + "resolve": "^1.1.7" + }, + "dependencies": { + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "postcss-html": { + "version": "0.36.0", + "resolved": "https://registry.npmjs.org/postcss-html/-/postcss-html-0.36.0.tgz", + "integrity": "sha512-HeiOxGcuwID0AFsNAL0ox3mW6MHH5cstWN1Z3Y+n6H+g12ih7LHdYxWwEA/QmrebctLjo79xz9ouK3MroHwOJw==", + "dev": true, + "requires": { + "htmlparser2": "^3.10.0" + } + }, + "postcss-import": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-10.0.0.tgz", + "integrity": "sha1-TIXJewmRNsxeoCQNwd/b/eTi674=", + "dev": true, + "requires": { + "object-assign": "^4.0.1", + "postcss": "^6.0.1", + "postcss-value-parser": "^3.2.3", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "dependencies": { + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "postcss-less": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/postcss-less/-/postcss-less-3.1.4.tgz", + "integrity": "sha512-7TvleQWNM2QLcHqvudt3VYjULVB49uiW6XzEUFmvwHzvsOEF5MwBrIXZDJQvJNFGjJQTzSzZnDoCJ8h/ljyGXA==", + "dev": true, + "requires": { + "postcss": "^7.0.14" + } + }, + "postcss-load-config": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.0.tgz", + "integrity": "sha512-4pV3JJVPLd5+RueiVVB+gFOAa7GWc25XQcMp86Zexzke69mKf6Nx9LRcQywdz7yZI9n1udOxmLuAwTBypypF8Q==", + "dev": true, + "requires": { + "cosmiconfig": "^5.0.0", + "import-cwd": "^2.0.0" + }, + "dependencies": { + "cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "dev": true, + "requires": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + } + }, + "import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "dev": true, + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + } + } + }, + "postcss-media-query-parser": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", + "integrity": "sha1-J7Ocb02U+Bsac7j3Y1HGCeXO8kQ=", + "dev": true + }, + "postcss-reporter": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-6.0.1.tgz", + "integrity": "sha512-LpmQjfRWyabc+fRygxZjpRxfhRf9u/fdlKf4VHG4TSPbV2XNsuISzYW1KL+1aQzx53CAppa1bKG4APIB/DOXXw==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "lodash": "^4.17.11", + "log-symbols": "^2.2.0", + "postcss": "^7.0.7" + }, + "dependencies": { + "log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "dev": true, + "requires": { + "chalk": "^2.0.1" + } + } + } + }, + "postcss-resolve-nested-selector": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz", + "integrity": "sha1-Kcy8fDfe36wwTp//C/FZaz9qDk4=", + "dev": true + }, + "postcss-safe-parser": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-4.0.2.tgz", + "integrity": "sha512-Uw6ekxSWNLCPesSv/cmqf2bY/77z11O7jZGPax3ycZMFU/oi2DMH9i89AdHc1tRwFg/arFoEwX0IS3LCUxJh1g==", + "dev": true, + "requires": { + "postcss": "^7.0.26" + } + }, + "postcss-sass": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/postcss-sass/-/postcss-sass-0.4.4.tgz", + "integrity": "sha512-BYxnVYx4mQooOhr+zer0qWbSPYnarAy8ZT7hAQtbxtgVf8gy+LSLT/hHGe35h14/pZDTw1DsxdbrwxBN++H+fg==", + "dev": true, + "requires": { + "gonzales-pe": "^4.3.0", + "postcss": "^7.0.21" + } + }, + "postcss-scss": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-2.1.1.tgz", + "integrity": "sha512-jQmGnj0hSGLd9RscFw9LyuSVAa5Bl1/KBPqG1NQw9w8ND55nY4ZEsdlVuYJvLPpV+y0nwTV5v/4rHPzZRihQbA==", + "dev": true, + "requires": { + "postcss": "^7.0.6" + } + }, + "postcss-selector-parser": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz", + "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + }, + "postcss-syntax": { + "version": "0.36.2", + "resolved": "https://registry.npmjs.org/postcss-syntax/-/postcss-syntax-0.36.2.tgz", + "integrity": "sha512-nBRg/i7E3SOHWxF3PpF5WnJM/jQ1YpY9000OaVXlAQj6Zp/kIqJxEDWIZ67tAd7NLuk7zqN4yqe9nc0oNAOs1w==", + "dev": true + }, + "postcss-value-parser": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", + "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", + "dev": true + }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true + }, "pretty-hrtime": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", @@ -4812,12 +6666,29 @@ "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", "dev": true }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true + }, "promise-inflight": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", "dev": true }, + "prop-types": { + "version": "15.7.2", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", + "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", + "dev": true, + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.8.1" + } + }, "prr": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", @@ -4885,6 +6756,12 @@ "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", "dev": true }, + "quick-lru": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", + "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", + "dev": true + }, "randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -4904,6 +6781,29 @@ "safe-buffer": "^5.1.0" } }, + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true + }, + "read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha1-5mTvMRYRZsl1HNvo28+GtftY93Q=", + "dev": true, + "requires": { + "pify": "^2.3.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, "read-pkg": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", @@ -4981,6 +6881,16 @@ "resolve": "^1.1.6" } }, + "redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dev": true, + "requires": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + } + }, "regenerate": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.1.tgz", @@ -5021,6 +6931,22 @@ "safe-regex": "^1.1.0" } }, + "regexp.prototype.flags": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz", + "integrity": "sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "regexpp": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", + "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", + "dev": true + }, "regexpu-core": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.0.tgz", @@ -5058,6 +6984,63 @@ } } }, + "remark": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/remark/-/remark-12.0.1.tgz", + "integrity": "sha512-gS7HDonkdIaHmmP/+shCPejCEEW+liMp/t/QwmF0Xt47Rpuhl32lLtDV1uKWvGoq+kxr5jSgg5oAIpGuyULjUw==", + "dev": true, + "requires": { + "remark-parse": "^8.0.0", + "remark-stringify": "^8.0.0", + "unified": "^9.0.0" + } + }, + "remark-parse": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-8.0.3.tgz", + "integrity": "sha512-E1K9+QLGgggHxCQtLt++uXltxEprmWzNfg+MxpfHsZlrddKzZ/hZyWHDbK3/Ap8HJQqYJRXP+jHczdL6q6i85Q==", + "dev": true, + "requires": { + "ccount": "^1.0.0", + "collapse-white-space": "^1.0.2", + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-whitespace-character": "^1.0.0", + "is-word-character": "^1.0.0", + "markdown-escapes": "^1.0.0", + "parse-entities": "^2.0.0", + "repeat-string": "^1.5.4", + "state-toggle": "^1.0.0", + "trim": "0.0.1", + "trim-trailing-lines": "^1.0.0", + "unherit": "^1.0.4", + "unist-util-remove-position": "^2.0.0", + "vfile-location": "^3.0.0", + "xtend": "^4.0.1" + } + }, + "remark-stringify": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-8.1.1.tgz", + "integrity": "sha512-q4EyPZT3PcA3Eq7vPpT6bIdokXzFGp9i85igjmhRyXWmPs0Y6/d2FYwUNotKAWyLch7g0ASZJn/KHHcHZQ163A==", + "dev": true, + "requires": { + "ccount": "^1.0.0", + "is-alphanumeric": "^1.0.0", + "is-decimal": "^1.0.0", + "is-whitespace-character": "^1.0.0", + "longest-streak": "^2.0.1", + "markdown-escapes": "^1.0.0", + "markdown-table": "^2.0.0", + "mdast-util-compact": "^2.0.0", + "parse-entities": "^2.0.0", + "repeat-string": "^1.5.4", + "state-toggle": "^1.0.0", + "stringify-entities": "^3.0.0", + "unherit": "^1.0.4", + "xtend": "^4.0.1" + } + }, "remove-bom-buffer": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz", @@ -5181,6 +7164,12 @@ "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", "dev": true }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, "rimraf": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", @@ -5200,6 +7189,12 @@ "inherits": "^2.0.1" } }, + "run-parallel": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.9.tgz", + "integrity": "sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q==", + "dev": true + }, "run-queue": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", @@ -5319,6 +7314,39 @@ "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", "dev": true }, + "side-channel": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.2.tgz", + "integrity": "sha512-7rL9YlPHg7Ancea1S96Pa8/QWb4BtXL/TZvS6B8XFetGBeuhAsfmUspK6DokBeZ64+Kj9TCNRD/30pVz1BvQNA==", + "dev": true, + "requires": { + "es-abstract": "^1.17.0-next.1", + "object-inspect": "^1.7.0" + } + }, + "signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "dev": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + } + }, "snapdragon": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", @@ -5513,6 +7541,12 @@ "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", "dev": true }, + "specificity": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/specificity/-/specificity-0.4.1.tgz", + "integrity": "sha512-1klA3Gi5PD1Wv9Q0wUoOQN1IWAuPu0D1U03ThXTr0cJ20+/iq2tHSDnK7Kk/0LXJ1ztUB2/1Os0wKmfyNgUQfg==", + "dev": true + }, "split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", @@ -5522,6 +7556,12 @@ "extend-shallow": "^3.0.0" } }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, "ssri": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", @@ -5537,6 +7577,12 @@ "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", "dev": true }, + "state-toggle": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.3.tgz", + "integrity": "sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ==", + "dev": true + }, "static-extend": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", @@ -5631,6 +7677,40 @@ } } }, + "string.prototype.matchall": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.2.tgz", + "integrity": "sha512-N/jp6O5fMf9os0JU3E72Qhf590RSRZU/ungsL/qJUYVTNv7hTG0P/dbPjxINVN9jpscu3nzYwKESU3P3RY5tOg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0", + "has-symbols": "^1.0.1", + "internal-slot": "^1.0.2", + "regexp.prototype.flags": "^1.3.0", + "side-channel": "^1.0.2" + } + }, + "string.prototype.trimend": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", + "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "string.prototype.trimstart": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", + "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, "string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", @@ -5640,6 +7720,19 @@ "safe-buffer": "~5.1.0" } }, + "stringify-entities": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-3.0.1.tgz", + "integrity": "sha512-Lsk3ISA2++eJYqBMPKcr/8eby1I6L0gP0NlxF8Zja6c05yr/yCYyb2c9PwXjd08Ib3If1vn1rbs1H5ZtVuOfvQ==", + "dev": true, + "requires": { + "character-entities-html4": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.2", + "is-hexadecimal": "^1.0.0" + } + }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", @@ -5658,6 +7751,281 @@ "is-utf8": "^0.2.0" } }, + "strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "requires": { + "min-indent": "^1.0.0" + } + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "style-search": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz", + "integrity": "sha1-eVjHk+R+MuB9K1yv5cC/jhLneQI=", + "dev": true + }, + "stylelint": { + "version": "13.6.1", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-13.6.1.tgz", + "integrity": "sha512-XyvKyNE7eyrqkuZ85Citd/Uv3ljGiuYHC6UiztTR6sWS9rza8j3UeQv/eGcQS9NZz/imiC4GKdk1EVL3wst5vw==", + "dev": true, + "requires": { + "@stylelint/postcss-css-in-js": "^0.37.1", + "@stylelint/postcss-markdown": "^0.36.1", + "autoprefixer": "^9.8.0", + "balanced-match": "^1.0.0", + "chalk": "^4.1.0", + "cosmiconfig": "^6.0.0", + "debug": "^4.1.1", + "execall": "^2.0.0", + "file-entry-cache": "^5.0.1", + "get-stdin": "^8.0.0", + "global-modules": "^2.0.0", + "globby": "^11.0.1", + "globjoin": "^0.1.4", + "html-tags": "^3.1.0", + "ignore": "^5.1.8", + "import-lazy": "^4.0.0", + "imurmurhash": "^0.1.4", + "known-css-properties": "^0.19.0", + "leven": "^3.1.0", + "lodash": "^4.17.15", + "log-symbols": "^4.0.0", + "mathml-tag-names": "^2.1.3", + "meow": "^7.0.1", + "micromatch": "^4.0.2", + "normalize-selector": "^0.2.0", + "postcss": "^7.0.32", + "postcss-html": "^0.36.0", + "postcss-less": "^3.1.4", + "postcss-media-query-parser": "^0.2.3", + "postcss-reporter": "^6.0.1", + "postcss-resolve-nested-selector": "^0.1.1", + "postcss-safe-parser": "^4.0.2", + "postcss-sass": "^0.4.4", + "postcss-scss": "^2.1.1", + "postcss-selector-parser": "^6.0.2", + "postcss-syntax": "^0.36.2", + "postcss-value-parser": "^4.1.0", + "resolve-from": "^5.0.0", + "slash": "^3.0.0", + "specificity": "^0.4.1", + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "style-search": "^0.1.0", + "sugarss": "^2.0.0", + "svg-tags": "^1.0.0", + "table": "^5.4.6", + "v8-compile-cache": "^2.1.1", + "write-file-atomic": "^3.0.3" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "global-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", + "dev": true, + "requires": { + "global-prefix": "^3.0.0" + } + }, + "global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", + "dev": true, + "requires": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + } + } + }, + "stylelint-config-recommended": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-3.0.0.tgz", + "integrity": "sha512-F6yTRuc06xr1h5Qw/ykb2LuFynJ2IxkKfCMf+1xqPffkxh0S09Zc902XCffcsw/XMFq/OzQ1w54fLIDtmRNHnQ==", + "dev": true + }, + "stylelint-config-standard": { + "version": "20.0.0", + "resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-20.0.0.tgz", + "integrity": "sha512-IB2iFdzOTA/zS4jSVav6z+wGtin08qfj+YyExHB3LF9lnouQht//YyB0KZq9gGz5HNPkddHOzcY8HsUey6ZUlA==", + "dev": true, + "requires": { + "stylelint-config-recommended": "^3.0.0" + } + }, + "sugarss": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/sugarss/-/sugarss-2.0.0.tgz", + "integrity": "sha512-WfxjozUk0UVA4jm+U1d736AUpzSrNsQcIbyOkoE364GrtWmIrFdk5lksEupgWMD4VaT/0kVx1dobpiDumSgmJQ==", + "dev": true, + "requires": { + "postcss": "^7.0.2" + } + }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -5677,6 +8045,24 @@ "es6-symbol": "^3.1.1" } }, + "svg-tags": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", + "integrity": "sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q=", + "dev": true + }, + "table": { + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", + "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "dev": true, + "requires": { + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + } + }, "tapable": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", @@ -5738,6 +8124,12 @@ } } }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, "through2": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", @@ -5846,6 +8238,30 @@ "through2": "^2.0.3" } }, + "trim": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", + "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=", + "dev": true + }, + "trim-newlines": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.0.tgz", + "integrity": "sha512-C4+gOpvmxaSMKuEf9Qc134F1ZuOHVXKRbtEflf4NTtuuJDEIJ9p5PXsalL8SkeRw+qit1Mo+yuvMPAKwWg/1hA==", + "dev": true + }, + "trim-trailing-lines": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.3.tgz", + "integrity": "sha512-4ku0mmjXifQcTVfYDfR5lpgV7zVqPg6zV9rdZmwOPqq0+Zq19xDqEgagqVbc4pOOShbncuAOIs59R3+3gcF3ZA==", + "dev": true + }, + "trough": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz", + "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==", + "dev": true + }, "tslib": { "version": "1.13.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", @@ -5864,12 +8280,36 @@ "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", "dev": true }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "type-fest": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", + "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", + "dev": true + }, "typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", "dev": true }, + "typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "requires": { + "is-typedarray": "^1.0.0" + } + }, "unc-path-regex": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", @@ -5899,6 +8339,16 @@ "integrity": "sha1-XkvaMI5KiirlhPm5pDWaSZglzFA=", "dev": true }, + "unherit": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/unherit/-/unherit-1.1.3.tgz", + "integrity": "sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ==", + "dev": true, + "requires": { + "inherits": "^2.0.0", + "xtend": "^4.0.0" + } + }, "unicode-canonical-property-names-ecmascript": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", @@ -5927,6 +8377,28 @@ "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", "dev": true }, + "unified": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/unified/-/unified-9.0.0.tgz", + "integrity": "sha512-ssFo33gljU3PdlWLjNp15Inqb77d6JnJSfyplGJPT/a+fNRNyCBeveBAYJdO5khKdF6WVHa/yYCC7Xl6BDwZUQ==", + "dev": true, + "requires": { + "bail": "^1.0.0", + "extend": "^3.0.0", + "is-buffer": "^2.0.0", + "is-plain-obj": "^2.0.0", + "trough": "^1.0.0", + "vfile": "^4.0.0" + }, + "dependencies": { + "is-buffer": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", + "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==", + "dev": true + } + } + }, "union-value": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", @@ -5939,6 +8411,12 @@ "set-value": "^2.0.1" } }, + "uniq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", + "dev": true + }, "unique-filename": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", @@ -5967,6 +8445,60 @@ "through2-filter": "^3.0.0" } }, + "unist-util-find-all-after": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/unist-util-find-all-after/-/unist-util-find-all-after-3.0.1.tgz", + "integrity": "sha512-0GICgc++sRJesLwEYDjFVJPJttBpVQaTNgc6Jw0Jhzvfs+jtKePEMu+uD+PqkRUrAvGQqwhpDwLGWo1PK8PDEw==", + "dev": true, + "requires": { + "unist-util-is": "^4.0.0" + } + }, + "unist-util-is": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.0.2.tgz", + "integrity": "sha512-Ofx8uf6haexJwI1gxWMGg6I/dLnF2yE+KibhD3/diOqY2TinLcqHXCV6OI5gFVn3xQqDH+u0M625pfKwIwgBKQ==", + "dev": true + }, + "unist-util-remove-position": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-2.0.1.tgz", + "integrity": "sha512-fDZsLYIe2uT+oGFnuZmy73K6ZxOPG/Qcm+w7jbEjaFcJgbQ6cqjs/eSPzXhsmGpAsWPkqZM9pYjww5QTn3LHMA==", + "dev": true, + "requires": { + "unist-util-visit": "^2.0.0" + } + }, + "unist-util-stringify-position": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", + "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", + "dev": true, + "requires": { + "@types/unist": "^2.0.2" + } + }, + "unist-util-visit": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz", + "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0", + "unist-util-visit-parents": "^3.0.0" + } + }, + "unist-util-visit-parents": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.0.tgz", + "integrity": "sha512-0g4wbluTF93npyPrp/ymd3tCDTMnP0yo2akFD2FIBAYXq/Sga3lwaU1D8OYKbtpioaI6CkDcQ6fsMnmtzt7htw==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0" + } + }, "unset-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", @@ -6098,6 +8630,49 @@ "integrity": "sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM=", "dev": true }, + "vfile": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.1.1.tgz", + "integrity": "sha512-lRjkpyDGjVlBA7cDQhQ+gNcvB1BGaTHYuSOcY3S7OhDmBtnzX95FhtZZDecSTDm6aajFymyve6S5DN4ZHGezdQ==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "replace-ext": "1.0.0", + "unist-util-stringify-position": "^2.0.0", + "vfile-message": "^2.0.0" + }, + "dependencies": { + "is-buffer": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", + "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==", + "dev": true + }, + "replace-ext": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", + "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", + "dev": true + } + } + }, + "vfile-location": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-3.0.1.tgz", + "integrity": "sha512-yYBO06eeN/Ki6Kh1QAkgzYpWT1d3Qln+ZCtSbJqFExPl1S3y2qqotJQXoh6qEvl/jDlgpUJolBn3PItVnnZRqQ==", + "dev": true + }, + "vfile-message": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", + "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" + } + }, "vinyl": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.0.tgz", @@ -6487,6 +9062,12 @@ "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", "dev": true }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, "worker-farm": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", @@ -6534,6 +9115,27 @@ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, + "write": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", + "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", + "dev": true, + "requires": { + "mkdirp": "^0.5.1" + } + }, + "write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, "xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", @@ -6552,6 +9154,12 @@ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "dev": true }, + "yaml": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.0.tgz", + "integrity": "sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg==", + "dev": true + }, "yargs": { "version": "13.3.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", diff --git a/package.json b/package.json index e0918166..01424fd1 100644 --- a/package.json +++ b/package.json @@ -7,10 +7,17 @@ "build": "webpack --progress --colors", "watch": "webpack --progress --colors --watch", "build-prod": "webpack --progress --colors --mode production -o dist/index.min.js --devtool none", - "test": "echo \"Error: no test specified\" && exit 1", - "minify": "npm run build-prod && npm run minify-css", + "lint-js": "eslint --ext .jsx,.js src/", + + "build-css": "gulp build-css", + "watch-css": "gulp watch-css", "minify-css": "gulp minify-css", - "watch-css": "gulp watch-css" + "lint-css": "stylelint src/styles/*.css && stylelint src/styles/**/*.css && stylelint dist/style.css", + + "minify": "npm run build-prod && npm run minify-css", + "build-all": "npm run build-prod && npm run build-css && npm run minify-css", + "lint": "npm run lint-js && npm run lint-css", + "test": "echo \"Error: no test specified\" && exit 1" }, "repository": { "type": "git", @@ -29,9 +36,15 @@ "@babel/register": "^7.10.5", "babel-loader": "^8.1.0", "circular-dependency-plugin": "^5.2.0", + "eslint": "^7.5.0", + "eslint-plugin-react": "^7.20.3", "gulp": "^4.0.2", - "gulp-csso": "^4.0.1", + "gulp-postcss": "^8.0.0", "gulp-rename": "^2.0.0", + "postcss-csso": "^4.0.0", + "postcss-easy-import": "^3.0.0", + "stylelint": "^13.6.1", + "stylelint-config-standard": "^20.0.0", "webpack": "^4.43.0", "webpack-cli": "^3.3.12" } diff --git a/src/index.js b/src/index.js index ef47d49d..f0cb105d 100644 --- a/src/index.js +++ b/src/index.js @@ -1,8 +1,8 @@ import secure from "./secure"; import patchModuleLoad from "./moduleloader"; -import Core from "./modules/core"; -import BdApi from "./modules/pluginapi"; import LoadingIcon from "./loadingicon"; +import BetterDiscord from "./modules/core"; +import BdApi from "./modules/pluginapi"; // Perform some setup secure(); @@ -10,4 +10,5 @@ patchModuleLoad(); window.BdApi = BdApi; // Add loading icon at the bottom right -LoadingIcon.show(); \ No newline at end of file +LoadingIcon.show(); +new BetterDiscord(); \ No newline at end of file diff --git a/src/modules/core.js b/src/modules/core.js index c53f4515..25c2acad 100644 --- a/src/modules/core.js +++ b/src/modules/core.js @@ -21,7 +21,7 @@ import Utilities from "./utilities"; const {ipcRenderer} = require("electron"); const GuildClasses = DiscordModules.GuildClasses; -export default new class Core { +export default class Core { constructor() { ipcRenderer.invoke("bd-config", "get").then(injectorConfig => { if (this.hasStarted) return; @@ -42,9 +42,9 @@ export default new class Core { { name: "bd-stylesheet", type: "style", - url: "//cdn.staticaly.com/gh/{{repo}}/BetterDiscordApp/{{hash}}/dist/style.css", - backup: "//rauenzi.github.io/BetterDiscordApp/dist/style.css", - local: "{{localServer}}/BetterDiscordApp/dist/style.css" + url: "//cdn.staticaly.com/gh/{{repo}}/BetterDiscordApp/{{hash}}/dist/style.min.css", + backup: "//rauenzi.github.io/BetterDiscordApp/dist/style.min.css", + local: "{{localServer}}/BetterDiscordApp/dist/style.min.css" } ]; } @@ -247,4 +247,4 @@ export default new class Core { Logger.log("InjectorUpdate", "Injector Updated!"); return success; } -}; \ No newline at end of file +} \ No newline at end of file diff --git a/src/modules/logger.js b/src/modules/logger.js index f2c99a9f..43942909 100644 --- a/src/modules/logger.js +++ b/src/modules/logger.js @@ -90,7 +90,7 @@ export default class Logger { } static parseType(type) { - return LogTypes.hasOwnProperty(type) ? LogTypes[type] : "log"; + return LogTypes[type] || "log"; } } \ No newline at end of file diff --git a/src/styles/builtins/customcss.css b/src/styles/builtins/customcss.css new file mode 100644 index 00000000..6d464ae8 --- /dev/null +++ b/src/styles/builtins/customcss.css @@ -0,0 +1,132 @@ +#bd-editor-panel { + display: flex; + flex-direction: column; +} + +#bd-editor-controls button { + margin: 0 5px 0 0; + background: none; + color: #fff; + height: 26px; + font-weight: 600; + border-radius: 3px; + display: flex; + align-items: center; +} + +#bd-editor-controls button:hover { + background: rgba(255, 255, 255, 0.05); +} + +#bd-editor-controls button svg { + fill: white; +} + +#bd-editor-controls button:last-of-type { + margin-right: 0; +} + +#bd-editor-controls { + display: flex; + align-items: center; + justify-content: space-between; + background: #272822; + color: #fff; + border: none; + box-shadow: 0 1px 0 0 #2f3129 inset; + padding: 5px; +} + +.editor-wrapper { + display: flex; +} + +.ace_editor { + line-height: normal; + font-family: Consolas, monospace; + box-sizing: border-box; + height: calc(100vh - 250px); + font-size: 14px; + width: 100%; +} + +.bd-monokai .editor .ace_gutter { + background: #2f3136; +} + +.bd-monokai .ace_editor { + background: #292b2f; +} + +.bd-monokai #bd-editor-controls { + background: #202225; +} + +.theme-light #bd-editor-controls { + background: #e8e8e8; + border: 1px solid #fff; + border-top: 1px solid #adadad; + box-shadow: inset 0 1px 0 0 white; +} + +.controls-section { + display: flex; + align-items: center; +} + +.controls-section .checkbox-inner { + width: 14px; + height: 14px; +} + +.controls-section .checkbox-inner .checkbox:checked + span::after { + left: 2px; + top: -2px; +} + +.controls-section .checkbox-label { + font-size: 14px; +} + +/* Ace Editor Settings */ +#ace_settingsmenu_container { + background: rgba(0, 0, 0, 0.7) !important; /* stylelint-disable-line important */ +} + +body #ace_settingsmenu { + padding-top: 35px; +} + +body .ace_closeButton { + position: absolute; + top: 8px; + right: 12px; + z-index: 10000; + padding: 0; + cursor: pointer; + background: none; + border: none; +} + +body .ace_closeButton::before { + content: "✖"; + color: #36393f; +} + +body .ace_closeButton:active { + transform: translateY(2px); +} + +/* editor help text */ +#bd-editor-controls .help-text { + margin-top: 8px; + margin-bottom: 3px; + font-size: 14px; +} + +#bd-editor-controls .help-text .inline { + background: #2f3129; + padding: 0.2em; + margin: -0.2em 0; + border-radius: 3px; +} \ No newline at end of file diff --git a/src/styles/builtins/darkmode.css b/src/styles/builtins/darkmode.css new file mode 100644 index 00000000..853451da --- /dev/null +++ b/src/styles/builtins/darkmode.css @@ -0,0 +1,147 @@ +/* Emoji Picker */ +.bd-dark #bd-qem-favourite-container, +.bd-dark #bd-qem-twitch-container { + background-color: #353535; +} + +.bd-dark #bd-qem { + border-bottom: 1px solid #464646; + background: #353535; +} + +.bd-dark #bd-qem button { + background: #353535; + border-left: 1px solid #242424; + box-shadow: #424242 1px 0 0 0; + color: #fff; +} + +.bd-dark #bd-qem button.active { + background-color: #292929; +} + +.bd-dark #bd-qem button:hover { + background-color: #303030; +} + +.bd-dark .emojiPicker-3m1S-j { + background-color: #353535; +} + +.bd-dark .emojiPicker-3m1S-j .category-2U57w6 { + background-color: #353535; +} + +.bd-dark .emojiPicker-3m1S-j .header-1nkwgG .searchBar-2pWH0_ { + background-color: #2b2b2b; +} + +.bd-dark .emojiPicker-3m1S-j .searchBar-2pWH0_ input { + color: #fff; +} + +.bd-dark .emojiPicker-3m1S-j .searchBar-2pWH0_ input::-webkit-input-placeholder { + color: #fff; +} + +.bd-dark .emojiPicker-3m1S-j .scroller-3vODG7 .emojiItem-109bjA.selected-39BZ4S { + background-color: rgba(123, 123, 123, 0.37); +} + +.bd-dark .emojiPicker-3m1S-j .dimmer-3iH-5D.visible-3k45bQ { + background-color: rgba(62, 62, 62, 0.65); +} + +.bd-dark .emojiPicker-3m1S-j .diversitySelector-tmmMv0 .popout-2nUePc { + background: #353535; + border-color: #202020; +} + +.bd-dark #bd-qem-favourite-container .scroller::-webkit-scrollbar, +.bd-dark #bd-qem-favourite-container .scroller::-webkit-scrollbar-track, +.bd-dark #bd-qem-favourite-container .scroller::-webkit-scrollbar-track-piece, +.bd-dark #bd-qem-twitch-container .scroller::-webkit-scrollbar, +.bd-dark #bd-qem-twitch-container .scroller::-webkit-scrollbar-track, +.bd-dark #bd-qem-twitch-container .scroller::-webkit-scrollbar-track-piece, +.bd-dark .emojiPicker-3m1S-j .scroller-3vODG7::-webkit-scrollbar, +.bd-dark .emojiPicker-3m1S-j .scroller-3vODG7::-webkit-scrollbar-track, +.bd-dark .emojiPicker-3m1S-j .scroller-3vODG7::-webkit-scrollbar-track-piece { + background-color: #303030 !important; + border-color: #303030 !important; +} + +.bd-dark #bd-qem-twitch-container .scroller::-webkit-scrollbar-thumb, +.bd-dark #bd-qem-favourite-container .scroller::-webkit-scrollbar-thumb, +.bd-dark .emojiPicker-3g68GS .scroller-3vODG7::-webkit-scrollbar-thumb { + border-color: #202020 !important; + background-color: #202020 !important; +} + +/* add/create server */ +.bd-dark .theme-light .slide-2pHaq5 { + background: #36393f; +} + +.bd-dark .theme-dark .action-1lSjCi, +.bd-dark .theme-light .action-1lSjCi { + background: #2f3136; +} + +/* centered or */ +.bd-dark .theme-dark .or-3THJsp, +.bd-dark .theme-light .or-3THJsp { + background: #2f3136; + order: 2; + height: 56px; + width: 56px; + top: 103px; + line-height: 56px; + left: calc(50% - 29px); + border-radius: 50%; + border: 2px solid #484b52; +} + +.bd-dark .create-3jownz { + order: 1; +} + +.bd-dark .join-33Tr-7 { + order: 3; +} + +.bd-dark .theme-dark .actionIcon-2IISM_, +.bd-dark .theme-light .actionIcon-2IISM_ { + filter: grayscale(100%) brightness(60%); +} + +.bd-dark .theme-light .footer-2yfCgX { + background: #2f3136; +} + +/* Region Select */ +.bd-dark .regionSelectModal-12e-57 { + background: #36393f; +} + +.bd-dark .regionSelectModal-12e-57 .regionSelectModalOption-2DSIZ3 { + background: #2f3136; + border: 2px solid #484b52; +} + +/* Ace Editor Settings */ +.bd-dark ~ div #ace_settingsmenu { + color: #f6f6f7; + background: #36393f; + box-shadow: 0 0 0 1px rgba(32, 34, 37, 0.6), 0 2px 10px 0 rgba(0, 0, 0, 0.2); +} + +.bd-dark ~ div #ace_settingsmenu select, +.bd-dark ~ div #ace_settingsmenu input[type="text"] { + color: #f6f6f7; + background: #2f3136; + border: 1px solid #484b52; +} + +.bd-dark ~ div .ace_closeButton::before { + color: #f6f6f7; +} \ No newline at end of file diff --git a/src/styles/builtins/emotemenu.css b/src/styles/builtins/emotemenu.css new file mode 100644 index 00000000..6bc0ecec --- /dev/null +++ b/src/styles/builtins/emotemenu.css @@ -0,0 +1,130 @@ +#removemenu { + width: auto; + background: #505050; + z-index: 999999; + box-shadow: 0 0 2px #000; + padding: 2px; + left: 25px; + display: block; + cursor: pointer; + color: #fff; + position: fixed; +} + +#removemenu ul a { + text-decoration: none; + color: #fff; + padding: 3px; +} + +.emotewrapper { + position: relative; + display: inline-flex; + object-fit: contain; + margin: -0.1em 0.05em -0.2em 0.1em; + vertical-align: top; +} + +.emotewrapper.jumboable { + margin-bottom: 0; + margin-top: 0.2em; + vertical-align: -0.3em; +} + +.emote { + height: 1.45em; +} + +.emote.jumboable { + height: 2rem; +} + +.fav { + display: none; + position: absolute; + width: 15px; + height: 15px; + right: -7px; + background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAzFBMVEUAAABQUFBMTExLS0tNTU1MTExNTU1NTU1MTExMTExNTU1LS0tEREBEREBEREBEREBJSUhLS0tLS0tEREBNTU1NTU1NTU1EREArKyhNTU1NTU0AAABMTExKSklMTExNTU1NTU1NTU1KSkpMTExKSkhNTU1KSkpISEZNTU1LS0tAQDxOTk5KSkpLS0tNTU1MTExMTEx/f39MTExMTExLS0pLS0tMTExNTU1NTU1LS0pNTU1NTU1NTU1NTU1NTU1NTUxNTU1NTU1NTUxMTEzB8C/5AAAAOnRSTlMAI8X96oWAgYSF68QBAg0PMCb9BIuLgQUD4N0Bh0mKhZSOQ4gcrKscaW8QRE6fmJyjAshASceG7cIpqQOxTQAAALVJREFUGFddx6FOA0EYAOGZvd07Qm6vVCAAgUUgQEDfX/YZMAigqaFN7iC5tsmPqGPUN/AvUVeoEbGOCElJz08Uzeixqu4AqomVVSNngOVjTqDGZSl3UFtPGV2ot2zaq96YM9p5Ddzcf/nTTAlj+/sNtNu8OcwkIsbPBtrUfMQeEhGQmHbmGIFMwLPzu6UMIwBNgToshgq8Nr2ki+Oy7ebDHp70LRPWB6OZgfWLWei7fJonOOsPCGA9kVlssOoAAAAASUVORK5CYII="); + border: none; + background-size: 100% 100%; + background-repeat: no-repeat; + background-color: #303030; + border-radius: 5px; + top: -7px; + cursor: pointer; +} + +.fav.active { + background-color: yellow; +} + +.emotewrapper:hover .fav { + display: block; +} + +.emojiPicker-3m1S-j { + box-shadow: none; + border-top: none; + border-radius: 0 0 5px 5px; +} + +#bd-qem { + border-radius: 5px 5px 0 0; + background: #fff; + border-bottom: 1px solid rgba(0, 0, 0, 0.1); + height: 30px; + display: flex; + flex-direction: row; + padding-right: 1px; +} + +#bd-qem button { + border-left: 1px solid #efefef; + background: transparent; + box-shadow: #cecece 1px 0 0 0; + flex-grow: 1; +} + +#bd-qem button:hover { + background: #ececec; +} + +#bd-qem-twitch { + border-radius: 5px 0 0 0; + order: 2; +} + +#bd-qem-emojis { + border-radius: 0 5px 0 0; + order: 3; +} + +#bd-qem-favourite { + order: 3; +} + +#bd-qem button.active { + background-color: #e2e2e2; +} + +#bd-qem-twitch-container, +#bd-qem-favourite-container { + width: 346px; + height: 329px; + background-color: #fff; + border-radius: 0 0 5px 5px; +} + +#bd-qem-twitch-container .scroller-wrap, +#bd-qem-favourite-container .scroller-wrap { + height: 100%; +} + +.emote-menu-inner { + padding: 5px 0 0 15px; +} + +.bd-qme-hidden #bd-qem-emojis { + display: none; +} \ No newline at end of file diff --git a/src/styles/builtins/emotes.css b/src/styles/builtins/emotes.css new file mode 100644 index 00000000..65a2e018 --- /dev/null +++ b/src/styles/builtins/emotes.css @@ -0,0 +1,186 @@ +#emote-container { + padding: 10px; +} + +.emote-container { + display: inline-block; + padding: 2px; + border-radius: 5px; + width: 30px; + height: 30px; + position: relative; +} + +.emote-icon { + max-width: 100%; + max-height: 100%; + position: absolute; + margin: auto; + top: 0; + right: 0; + bottom: 0; + left: 0; + cursor: pointer; +} + +.emote.stop-animation { + animation: none; +} + +.emote-container:hover { + background: rgba(123, 123, 123, 0.37); +} + +.emoteflip, +.emotespinflip { + transform: scaleX(-1); +} + +.emotespin { + animation: 1s emote-spin infinite linear; +} + +.emote1spin { + animation: 1s emote-spin-reverse infinite linear; +} + +.emotespin2 { + animation: 0.5s emote-spin infinite linear; +} + +.emote2spin { + animation: 0.5s emote-spin-reverse infinite linear; +} + +.emotespin3 { + animation: 0.2s emote-spin infinite linear; +} + +.emote3spin { + animation: 0.2s emote-spin-reverse infinite linear; +} + +.emotepulse { + animation: 1s emote-pulse infinite linear; +} + +.emotetr { + transform: translateX(-3px); +} + +.emotebl { + transform: translateY(-3px); +} + +.emotebr { + transform: translate(-3px, -3px); +} + +.emoteshake { + animation: 1s emote-shake infinite linear; +} + +.emoteflap { + transform: scaleY(-1); +} + +.emoteshake2 { + animation: emote-shake2 0.3s linear infinite; +} + +.emoteshake3 { + animation: emote-shake3 0.1s linear infinite; +} + +@keyframes emote-shake2 { + 25% { + transform: translate(-1px, -1px); + } + + 50% { + transform: translate(-1px, 1px); + } + + 75% { + transform: translate(1px, 1px); + } + + 75% { + transform: translate(1px, -1px); + } +} + +@keyframes emote-shake3 { + 25% { + transform: translate(-1px, -1px); + } + + 50% { + transform: translate(-1px, 1px); + } + + 75% { + transform: translate(1px, 1px); + } + + 75% { + transform: translate(1px, -1px); + } +} + +@keyframes emote-spin { + from { + transform: rotate(0deg); + } + + to { + transform: rotate(360deg); + } +} + +@keyframes emote-spin-reverse { + from { + transform: rotate(0deg); + } + + to { + transform: rotate(-360deg); + } +} + +@keyframes emote-pulse { + 0% { + -webkit-transform: scale(1, 1); + } + + 50% { + -webkit-transform: scale(1.2, 1.2); + } + + 100% { + -webkit-transform: scale(1, 1); + } +} + +@keyframes emote-shake { + 10%, + 90% { + transform: translate3d(-1px, 0, 0); + } + + 20%, + 80% { + transform: translate3d(2px, 0, 0); + } + + 30%, + 50%, + 70% { + transform: translate3d(-4px, 0, 0); + } + + 40%, + 60% { + transform: translate3d(4px, 0, 0); + } +} diff --git a/src/styles/builtins/minimalmode.css b/src/styles/builtins/minimalmode.css new file mode 100644 index 00000000..15dd2e6c --- /dev/null +++ b/src/styles/builtins/minimalmode.css @@ -0,0 +1,233 @@ +/* Messages */ +.bd-minimal .divider-32i8lo { + opacity: 0; +} + +/* message avatars */ +.bd-minimal .large-3ChYtB { + max-width: 20px; + max-height: 20px; + background-size: 100%; + margin-right: 2px; + margin-top: 0; + border-radius: 0; +} + +/* message content */ +.bd-minimal .content-3dzVd8 { + border-left: 2px solid #ebebeb; + padding-left: 2px; +} + +.bd-minimal .theme-dark .content-3dzVd8 { + border-left: 2px solid #303030; +} + +/* message username */ +.bd-minimal .username-_4ZSMR { + font-size: small; +} + +/* message group */ +.bd-minimal .container-1YxwTf { + padding: 5px; +} + +/* message embed */ +.bd-minimal .embed-IeVjo6 { + padding: 2px; +} + +/* Member List */ +.bd-minimal .membersWrap-2h-GB4 { + min-width: 0; +} + +/* member list avatars */ +.bd-minimal .members-1998pB .small-5Os1Bb { + max-width: 15px; + max-height: 15px; + background-size: 15px 15px; +} + +/* member list avatars */ +.bd-minimal .members-1998pB .small-5Os1Bb .status-oxiHuE { + height: 5px; + width: 5px; +} + +/* member list list item */ +.bd-minimal .members-1998pB .member-3W1lQa { + padding: 5px; +} + +/* member list item inner */ +.bd-minimal .members-1998pB .memberInner-2CPc3V { + transform: scale(0.9); +} + +/* member list role label */ +.bd-minimal .members-1998pB .membersGroup-v9BXpm { + margin-top: 3px; + transform: scale(0.9); +} + +/* channel list */ +.bd-minimal .channels-Ie2l6A { + width: 160px; +} + +/* Channel List */ +.bd-minimal.bd-minimal-chan .channels-Ie2l6A { + display: none; +} + +/* channel list guild name */ +.bd-minimal .channels-Ie2l6A header span { + font-size: 12px; +} + +/* channel item */ +.bd-minimal .containerDefault-3GGEv_ { + transform: scale(0.9); +} + +/* channel name */ +.bd-minimal .content-3at_AU { + transform: scale(0.9); +} + +/* channel icon */ +.bd-minimal .icon-1_QxNX { + width: 14px; + height: 14px; +} + +/* Guild List */ +.bd-minimal .wrapper-1Rf91z .scroller-2FKFPG .listItem-2P_4kh { + width: 20px; + height: 20px; + background-size: 100%; + font-size: 15px; + line-height: 20px; + margin: 0 12.5px 8px; +} + +/* guild link and icon */ +.bd-minimal .wrapper-1Rf91z .scroller-2FKFPG .wrapper-25eVIn a, +.bd-minimal .listItem-2P_4kh .wrapper-25eVIn .icon-27yU2q { + width: 20px; + height: 20px; + background-size: 100%; + font-size: 15px; + line-height: 20px; +} + +/* guild inner */ +.bd-minimal .listItem-2P_4kh .wrapper-25eVIn { + width: 20px; + height: 20px; + background-size: 100%; + font-size: 15px; + line-height: 20px; +} + +.bd-minimal .listItem-2P_4kh svg, +.bd-minimal .listItem-2P_4kh foreignObject[mask] { + mask: none; +} + +/* home icon */ +.bd-minimal .wrapper-1Rf91z .scroller-2FKFPG .homeIcon-tEMBK1 { + width: 10px; + height: 10px; + background-size: 100%; + font-size: 15px; + line-height: 20px; +} + +/* add and search */ +.bd-minimal .circleIconButton-jET_ig { + height: 20px; + width: 20px; +} + +.bd-minimal .circleIconButton-jET_ig svg { + height: 14px; + width: 14px; +} + +/* friends online */ +.bd-minimal .wrapper-1Rf91z .scroller-2FKFPG .friendsOnline-_wi_fM { + margin-left: -15px; + font-size: 7px; +} + +/* public servers button */ +.bd-minimal #bd-pub-li { + height: 16px; +} + +.bd-minimal #bd-pub-button { + font-size: 8px; + line-height: 16px; + height: 16px; +} + +/* guild list */ +.bd-minimal .wrapper-1Rf91z, +.bd-minimal .wrapper-1Rf91z .scrollerWrap-1IAIlv, +.bd-minimal .wrapper-1Rf91z .scroller-2FKFPG { + width: 45px; +} + +/* separator */ +.bd-minimal .wrapper-1Rf91z .guildSeparator-3s64Iy { + margin-left: -15px; +} + +/* unread icon */ +.bd-minimal .wrapper-1Rf91z .scroller-2FKFPG .listItem-2P_4kh .wrapper-sa6paO { + height: 20px; + margin-top: 0; + margin-left: -12.5px; +} + +/* audio/video */ +.bd-minimal .wrapper-1Rf91z .scroller-2FKFPG .iconBadge-2wi9r4 { + width: 12px; + height: 12px; + background-size: 12px; +} + +/* Account Container */ +.bd-minimal .container-2Thooq .avatarSmall-3ACRaI { + width: 15px; + height: 15px; + background-size: 15px 15px; +} + +/* status */ +.bd-minimal .container-2Thooq .avatarSmall-3ACRaI .status-oxiHuE { + height: 5px; + width: 5px; +} + +/* username and discrim */ +.bd-minimal .container-2Thooq .accountDetails-3k9g4n { + transform: scale(0.8); +} + +/* 3 buttons */ +.bd-minimal .container-2Thooq .button-2b6hmh { + height: 14px; + width: 14px; + background-size: 14px 14px; + margin-left: 3px; +} + +/* 3 buttons icons */ +.bd-minimal .container-2Thooq .button-2b6hmh svg { + height: 14px; + width: 14px; +} diff --git a/src/styles/builtins/publicservers.css b/src/styles/builtins/publicservers.css new file mode 100644 index 00000000..ec15107c --- /dev/null +++ b/src/styles/builtins/publicservers.css @@ -0,0 +1,236 @@ +#bd-pub-li { + height: 20px; + margin-bottom: 10px; + overflow: hidden; +} + +#bd-pub-button { + border-radius: 4px; + background-color: rgb(47, 49, 54); + color: #b9bbbe; + text-align: center; + font-size: 12px; + line-height: 20px; + height: 20px; +} + +.bd-server-card .bd-server-tags { + flex: 1 1 auto; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + width: 0; + line-height: 24px; + font-size: 12px; + color: #b9bbbe; + font-weight: 700; + margin-right: 10px; +} + +/* .ui-card.ui-card-primary.bd-server-card:first-child { + margin-bottom: 13px; +} + +.ui-card.ui-card-primary.bd-server-card:first-child:after { + border: 3px solid #7289da; + content: ""; + display: block; + position: absolute; + left: 0; + right: 0; + margin-top: 4px; +} */ + +.bd-server-card.bd-server-card-pinned { + margin-bottom: 15px; +} + +.bd-server-card.bd-server-card-pinned::after { + background: #3a71c1; + content: ""; + height: 3px; + width: 100%; + display: block; + margin-top: 7px; + position: absolute; + top: 100%; +} + +.bd-server-description-container { + color: #b9bbbe; + min-height: 65px; + max-height: 65px; + border-top: 1px solid #3f4146; + border-bottom: 1px solid #3f4146; + padding-top: 5px; + font-size: 13px; +} + +.bd-server-header { + text-transform: uppercase; + letter-spacing: 0.5px; + justify-content: space-between; + font-weight: 600; +} + +.bd-server-card { + display: flex; + position: relative; + border-width: 1px; + border-style: solid; + border-radius: 5px; + background: rgba(32, 34, 37, 0.6); + border-color: #202225; + margin-bottom: 8px; +} + +.bd-server-header, +.bd-server-footer { + display: flex; + color: #b9bbbe; +} + +.bd-server-card .bd-button { + margin-top: 4px; +} + +.bd-server-content { + padding: 5px 10px; + flex: 1; +} + +.bd-server-image { + min-width: 115px; + min-height: 115px; + max-width: 115px; + max-height: 115px; +} + +.bd-server-name { + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + padding-right: 15px; + max-width: 330px; + flex: 1 1 50%; +} + +.bd-layer { + -ms-flex-direction: column; + -webkit-box-direction: normal; + -webkit-box-orient: vertical; + bottom: 0; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + flex-direction: column; + left: 0; + position: absolute; + right: 0; + top: 0; +} + +/* #pubslayer .ui-tab-bar-item { + color: #b9bbbe; + padding-top: 6px; + padding-bottom: 6px; + margin-bottom: 2px; + padding: 6px 10px; + position: relative; + font-size: 16px; + line-height: 20px; + border-radius: 3px; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; + flex-shrink: 0; + font-weight: 500; + cursor: pointer; +} + +#pubslayer .ui-tab-bar-item:hover { + color: #f6f6f7; + background-color: hsla(216,4%,74%,.1); +} + +#pubslayer .ui-tab-bar-item.selected { + color: #fff; + background-color: #7289da; +} + +#pubslayer .ui-tab-bar-header { + color: #72767d; + padding: 6px 10px; + font-size: 12px; + line-height: 16px; + text-transform: uppercase; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; + flex-shrink: 0; + font-weight: 500; +} + +#pubslayer #bd-settings-sidebar .ui-tab-bar-separator { + background-color: hsla(218,5%,47%,.3); + margin-left: 10px; + margin-right: 10px; + height: 1px; + margin-bottom: 8px; + margin-top: 8px; +} + +#pubslayer h2.ui-form-title { + color: #f6f6f7; + text-transform: uppercase; + font-weight: 600; +} + +#pubslayer h5.ui-form-title { + color: #f6f6f7; +} */ + +#pubslayer button { + background: #7289da; + color: #fff; + font-size: 14px; + font-weight: 500; + line-height: 16px; + padding: 2px 16px; + border: none; + border-radius: 3px; + transition: background-color 0.17s ease; +} + +#pubslayer button:hover { + background-color: #677bc4; +} + +#pubslayer input { + color: #f6f6f7; + background-color: rgba(0, 0, 0, 0.1); + border-color: rgba(0, 0, 0, 0.3); + padding: 10px; + height: 30px; + border-width: 1px; + border-style: solid; + border-radius: 3px; + outline: none; + transition: background-color 0.15s ease, border 0.15s ease; +} + +#bd-connection { + margin-left: 10px; +} + +.bd-footnote { + color: #b9bbbe; + font-size: 11px; +} + +.bd-button-next, +.bd-button-reconnect { + margin: 5px 10px 10px 0; + width: 100%; + min-height: 20px; +} \ No newline at end of file diff --git a/src/styles/buttons.css b/src/styles/buttons.css new file mode 100644 index 00000000..89187db8 --- /dev/null +++ b/src/styles/buttons.css @@ -0,0 +1,26 @@ +.bd-button { + background-color: #3e82e5; + color: white; + border-radius: 3px; + padding: 2px 6px; +} + +.bd-button:hover { + background-color: rgb(56, 117, 206); +} + +.bd-button:active { + background-color: rgb(50, 104, 183); +} + +.bd-button.bd-button-success { + background-color: #3ac15c; +} + +.bd-button.bd-button-success:hover { + background-color: rgb(52, 174, 83); +} + +.bd-button.bd-button-success:active { + background-color: rgb(46, 154, 74); +} \ No newline at end of file diff --git a/src/styles/index.css b/src/styles/index.css index 3e6feffc..1a573702 100644 --- a/src/styles/index.css +++ b/src/styles/index.css @@ -1,2339 +1,17 @@ -/* Error Boundary stuff */ -.react-error { - color: red; - font-weight: bold; - font-family: Arial, Helvetica, sans-serif; - cursor: pointer; -} - -.bd-settings-group.collapsible .bd-settings-title { - display: flex; - justify-content: space-between; -} -.bd-settings-group.collapsible .bd-settings-title::after { - content: ""; - background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxOS4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iQ2FscXVlXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSItOTUwIDUzMiAxOCAxOCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAtOTUwIDUzMiAxOCAxODsiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4NCgkuc3Qwe2ZpbGw6bm9uZTt9DQoJLnN0MXtmaWxsOm5vbmU7c3Ryb2tlOiNGRkZGRkY7c3Ryb2tlLXdpZHRoOjEuNTtzdHJva2UtbWl0ZXJsaW1pdDoxMDt9DQo8L3N0eWxlPg0KPHBhdGggY2xhc3M9InN0MCIgZD0iTS05MzIsNTMydjE4aC0xOHYtMThILTkzMnoiLz4NCjxwb2x5bGluZSBjbGFzcz0ic3QxIiBwb2ludHM9Ii05MzYuNiw1MzguOCAtOTQxLDU0My4yIC05NDUuNCw1MzguOCAiLz4NCjwvc3ZnPg0K); - height: 20px; - width: 20px; - display: inline-block; - vertical-align: bottom; - transition: transform .3s ease; - transform: rotate(0); -} - -.bd-settings-group.collapsed .bd-settings-title::after { - transition: transform .3s ease; - transform: rotate(90deg); -} - -.bd-settings-container { - height: auto; - overflow: hidden; - transition: height 300ms cubic-bezier(0.47, 0, 0.745, 0.715); -} - -.bd-settings-group.collapsed .bd-settings-container { - height: 0px; -} - -.bd-settings-group ~ .bd-settings-group .bd-settings-title { - margin-top: 30px; - transition: margin-top 300ms ease; -} - -.bd-settings-group.collapsed + .bd-settings-group .bd-settings-title { - margin-top: 0px; -} - -.bd-settings-group.collapsible .bd-settings-title { - order: 1; - align-items: center; -} - -.bd-settings-group.collapsible .bd-settings-title::before { - content: ""; - background-color: rgba(114,118,125,.3); - height: 2px; - order: 2; - flex: 1; - margin: 0 10px 0 15px; -} - -.bd-settings-group.collapsible .bd-settings-title::after { - order: 3; -} - -.bd-settings-title.bd-settings-group-title { - margin-bottom: 10px; -} - -.checkbox-item { - display: flex; -} - -.checkbox-item .checkbox-label { - margin-right: 8px; -} - -#bd-connection { - margin-left: 10px; -} - -.bd-button { - background-color: #3E82E5; - color: white; - border-radius: 3px; - padding: 2px 6px; -} - -.bd-button:hover { - background-color: rgb(56,117,206); -} - -.bd-button:active { - background-color: rgb(50,104,183); -} - -.bd-footnote { - color: #b9bbbe; - font-size: 11px; -} - -.bd-button-next, -.bd-button-reconnect { - margin: 5px 10px 10px 0; - width: 100%; - min-height: 20px; -} - -.bd-server-card { - position: relative; - border-width: 1px; - border-style: solid; - border-radius: 5px; - background: rgba(32,34,37,.6); - border-color: #202225; - margin-bottom: 8px; -} - -.bd-server-header, -.bd-server-footer { - display: flex; - color: #b9bbbe; -} - -.bd-server-header { - text-transform: uppercase; - letter-spacing: 0.5px; -} - -.bd-server-card .bd-button { - margin-top: 4px; -} - -.bd-button.bd-button-success { - background-color: #3ac15c; -} - -.bd-button.bd-button-success:hover { - background-color: rgb(52,174,83); -} - -.bd-button.bd-button-success:active { - background-color: rgb(46,154,74); -} - -#bbd-version { - font-size: 12px; - font-weight: 600; - color: #72767d; - padding: 2px 10px; -} - -.settings-open .bd-close { - cursor: pointer; - float: right; -} - - - -@keyframes open-window { - from { - transform: scale(0.9); - } - to { - transform: none; - } -} - - -.floating-window { - animation: open-window 200ms ease; - min-width: 200px; - min-height: 300px; - box-shadow: 0 2px 10px 0 rgba(0,0,0,.2); - display: flex; - flex-direction: column; - -webkit-app-region: no-drag; - position: fixed; - z-index: 1001; - box-sizing: border-box; -} - -.floating-window.modal-open { - z-index: 999; -} - -.floating-window.resizable { - overflow: auto; - resize: both; - padding-bottom: 10px; - background: #202225; -} - -.floating-window-titlebar { - width: 100%; - display: flex; - justify-content: space-between; - align-items: center; - background: #202225;/*#2F3129background-color: #202225;*/ - color: white; - border-bottom: 1px solid #272822; -} - -.floating-window-content { - background: #2F3129; - /* padding: 5px; */ - color: white; - flex: 1; -} - -.floating-window-titlebar .title { - /* font-weight: bold; */ - flex: 1; - text-align: center; - padding: 2px 0; -} - -.floating-window-buttons { - display: flex; -} - -.floating-window-buttons .button { - cursor: pointer; - padding: 0 2px; -} - -.floating-window-buttons .button svg { - fill: #dcddde; - margin-top: 1.5px; -} - -.floating-window-buttons .button:hover svg { - fill: white; -} - -.floating-window-buttons .button:hover { - background-color: #36393F; -} - -.floating-window-buttons .close-button:hover { - background-color: #f04747; -} - -.floating-window-buttons .close-button:hover svg path.fill { - fill: white; -} - - - - - -.floating-window-content #bd-editor-panel { - display: flex; - flex-direction: column; - flex: 1; -} - -.floating-window-content { - display: flex; - flex-direction: column; -} - -.floating-window .editor-wrapper { - flex: 1; -} - -.floating-window .ace_editor { - height: auto; - flex: 1; -} - -.floating-window #bd-editor-controls { - height: auto; - background: #202225; - border: none; - box-shadow: 0px 1px 0px 0px #2F3129 inset; -} - - - - - - - - - - - -.bd-addon-controls { - display: flex; - align-items: center; - justify-content: space-between; -} - -.bd-addon-controls .bd-search { - font-size: 13px; - margin: 0; - width: 200px; -} - -.bd-addon-dropdowns { - display: flex; -} - -.bd-select-wrapper + .bd-select-wrapper { - margin-left: 10px; -} - -.bd-select-wrapper { - color: #f6f6f7; - font-size: 13px; - display: flex; - align-items: center; -} - -.bd-select-wrapper label { - opacity: .3; - margin-right: 5px; -} - -.bd-select { - position: relative; - cursor: pointer; - color: #f6f6f7; - font-size: 13px; - display: flex; - align-items: center; - justify-content: space-between; - background-color: rgba(0, 0, 0, 0.1); - border: 1px solid rgba(0, 0, 0, 0.3); - border-radius: 3px; - padding: 5px 5px 5px 0; -} - -.bd-select.bd-select-transparent { - background: none; - border: none; - padding: 0; -} - -.bd-select-value { - padding-left: 12px; -} - -.bd-select-arrow { - margin-left: 10px; -} - -.bd-select .bd-select-options { - position: absolute; - background: #2F3136; - border-radius: 0 0 3px 3px; - max-height: 300px; - min-width: calc(100% + 2px); - overflow-y: auto; - box-shadow: rgba(0, 0, 0, 0.3) 0px 1px 5px 0px; - border: 1px solid rgba(0, 0, 0, 0.3); - border-top: 0; - margin-top: -1px; - margin-left: -1px; - z-index: 2; - top: 100%; -} - -.bd-select-transparent .bd-select-options { - border: 1px solid rgba(0, 0, 0, 0.3); - margin-top: 3px; - border-radius: 3px; -} - -.bd-select .bd-select-option { - padding: 8px 12px; - cursor: pointer; - white-space: pre; -} - -.bd-select .bd-select-option:hover, -.bd-select .bd-select-option.selected { - background: #26272B; -} - - - - -.bd-search-wrapper { - padding: 3px; - border-radius: 3px; - outline: none; - border: 0; - background-color: #202225; - color: #fff; - display: flex; - align-items: center; -} - -.bd-search { - padding: 2px 3px; - background: none; - border: 0; - color: #fff; - flex: 1; -} - -.bd-search-wrapper > svg { - margin-right: 2px; -} - - -.bd-setting-item .bd-select { - min-width: 200px; -} - - - - - -.bd-settings-group.expanded .bd-settings-container:not(.animating) { - overflow: visible; -} - - -.bd-switch { -background-color: #72767d; - border-radius: 14px; - width: 42px; - height: 24px; - opacity: 1; - overflow: hidden; - user-select: none; - position: relative; - display: block; - flex: 0 0 auto; - transition: background .15s ease-in-out,box-shadow .15s ease-in-out,border .15s ease-in-out,opacity .15s ease-in-out; -margin-left: 10px; -box-shadow: inset 0 1px 1px rgba(0,0,0,.15); -} - -.bd-switch::before { - content: ""; - display: block; - position: absolute; - top: 0; - left: 0; - bottom: 0; - right: 0; - z-index: 0; - opacity: 0; -background-color: #000; -} - -.bd-switch::after { - content: ""; - display: block; - position: absolute; - background-color: #fff; - z-index: 1; - width: 18px; - margin: 3px; - border-radius: 9px; - height: 18px; - left: 0; - transition: transform .15s ease-in-out,width .1s ease-in-out,left .1s ease-in-out; - box-shadow: 0 2px 4px rgba(0,0,0,.3); -} - -.bd-switch .bd-checkbox { - position: absolute; - width: 100%; - height: 100%; - opacity: 0; - padding: 0; - margin: 0; - z-index: 2; - cursor: pointer; -} - -.bd-switch-checked { - background-color: #3E82E5; -} - -.bd-switch-checked::after { - transform: translate3d(18px,0,0); -} - -.bd-switch-disabled { - opacity: .3; - cursor: not-allowed; -} - - - - - -.bd-setting-item { - display: flex; - flex-direction: column; - margin-bottom: 20px; -} - -.bd-setting-header { - display: flex; - justify-content: space-between; - align-items: center; -} - -.bd-setting-header label { - font-weight: 500; - cursor: pointer; - overflow: hidden; - word-wrap: break-word; - font-size: 16px; - line-height: 24px; - color: #f6f6f7; -} - -.bd-setting-note { - color: #72767d; - margin-top: 4px; - font-size: 14px; - line-height: 20px; - font-weight: 500; -} - -.bd-setting-divider { - width: 100%; - height: 1px; - margin-top: 20px; - background-color: rgba(114,118,125,.3); -} - -.bd-controls + .bd-addon-list { - margin-top: 10px; -} - - -.bd-addon-button { - cursor: pointer; -} - -.bd-addon-button + .bd-addon-button { - margin-left: 5px; -} - - - - - - -/* BEGIN EMOTE STYLING */ -/* =================== */ -#emote-container { - padding: 10px; -} - -.emote-container { - display: inline-block; - padding: 2px; - border-radius: 5px; - width: 30px; - height: 30px; - position: relative; -} - -.emote-icon { - max-width: 100%; - max-height: 100%; - position: absolute; - margin: auto; - top: 0; - right: 0; - bottom: 0; - left: 0; - cursor: pointer; -} - -.emote.stop-animation {animation: none!important;} - -.emote-container:hover { - background: rgba(123, 123, 123, 0.37); -} - -.emoteflip, .emotespinflip { - transform: scaleX(-1); -} - -.emotespin { - animation: 1s emote-spin infinite linear; -} - -.emote1spin { - animation: 1s emote-spin-reverse infinite linear; -} - -.emotespin2 { - animation: 0.5s emote-spin infinite linear; -} - -.emote2spin { - animation: 0.5s emote-spin-reverse infinite linear; -} - -.emotespin3 { - animation: 0.2s emote-spin infinite linear; -} - -.emote3spin { - animation: 0.2s emote-spin-reverse infinite linear; -} - -.emotepulse { - animation: 1s emote-pulse infinite linear; -} - -.emotetr { - transform: translateX(-3px); -} - -.emotebl { - transform: translateY(-3px); -} - -.emotebr { - transform: translate(-3px, -3px); -} - -.emoteshake { - animation: 1s emote-shake infinite linear; -} - -.emoteflap { - transform: scaleY(-1) !important; -} - -.emoteshake2 { - animation: emote-shake2 0.3s linear infinite; -} - -.emoteshake3 { - animation: emote-shake3 0.1s linear infinite; -} - -@keyframes emote-shake2 { - 25% { - transform: translate(-1px, -1px); - } - 50% { - transform: translate(-1px, 1px); - } - 75% { - transform: translate(1px, 1px); - } - 75% { - transform: translate(1px, -1px); - } -} -@keyframes emote-shake3 { - 25% { - transform: translate(-1px, -1px); - } - 50% { - transform: translate(-1px, 1px); - } - 75% { - transform: translate(1px, 1px); - } - 75% { - transform: translate(1px, -1px); - } -} -@keyframes emote-spin { - from { - transform: rotate(0deg); - } - to { - transform: rotate(360deg); - } -} -@keyframes emote-spin-reverse { - from { - transform: rotate(0deg); - } - to { - transform: rotate(-360deg); - } -} -@keyframes emote-pulse { - 0% { - -webkit-transform: scale(1, 1); - } - 50% { - -webkit-transform: scale(1.2, 1.2); - } - 100% { - -webkit-transform: scale(1, 1); - } -} -@keyframes emote-shake { - 10%, 90% { - transform: translate3d(-1px, 0, 0); - } - 20%, 80% { - transform: translate3d(2px, 0, 0); - } - 30%, 50%, 70% { - transform: translate3d(-4px, 0, 0); - } - 40%, 60% { - transform: translate3d(4px, 0, 0); - } -} -/* =================== */ -/* END EMOTE STYLING */ - -/* BEGIN EMOTE MENU */ -/* ================ */ - -#removemenu { - width: auto; - background: #505050; - position: absolute; - z-index: 999999; - display: none; - box-shadow: 0 0 2px #000; - padding: 2px; - left: 25px; - display: block !important; - cursor: pointer; - color: #FFF; - position: fixed; -} -#removemenu ul a { - text-decoration: none; - color: #FFF; - padding: 3px; -} - -.emotewrapper { - position: relative; - display: inline-flex; - object-fit: contain; - margin: -.1em .05em -.2em .1em; - vertical-align: top; -} - -.emotewrapper.jumboable { - margin-bottom: 0; - margin-top: .2em; - vertical-align: -.3em; -} - -.emote { - height: 1.45em; -} - -.emote.jumboable { - height: 2rem; -} - -.emotewrapper:hover .fav { - display: block; -} - -.fav { - display: none; - position: absolute; - width: 15px; - height: 15px; - right: -7px; - background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAzFBMVEUAAABQUFBMTExLS0tNTU1MTExNTU1NTU1MTExMTExNTU1LS0tEREBEREBEREBEREBJSUhLS0tLS0tEREBNTU1NTU1NTU1EREArKyhNTU1NTU0AAABMTExKSklMTExNTU1NTU1NTU1KSkpMTExKSkhNTU1KSkpISEZNTU1LS0tAQDxOTk5KSkpLS0tNTU1MTExMTEx/f39MTExMTExLS0pLS0tMTExNTU1NTU1LS0pNTU1NTU1NTU1NTU1NTU1NTUxNTU1NTU1NTUxMTEzB8C/5AAAAOnRSTlMAI8X96oWAgYSF68QBAg0PMCb9BIuLgQUD4N0Bh0mKhZSOQ4gcrKscaW8QRE6fmJyjAshASceG7cIpqQOxTQAAALVJREFUGFddx6FOA0EYAOGZvd07Qm6vVCAAgUUgQEDfX/YZMAigqaFN7iC5tsmPqGPUN/AvUVeoEbGOCElJz08Uzeixqu4AqomVVSNngOVjTqDGZSl3UFtPGV2ot2zaq96YM9p5Ddzcf/nTTAlj+/sNtNu8OcwkIsbPBtrUfMQeEhGQmHbmGIFMwLPzu6UMIwBNgToshgq8Nr2ki+Oy7ebDHp70LRPWB6OZgfWLWei7fJonOOsPCGA9kVlssOoAAAAASUVORK5CYII="); - border: none; - background-size: 100% 100%; - background-repeat: no-repeat; - background-color: #303030; - border-radius: 5px; - top: -7px; - cursor: pointer; -} - -.fav.active { - background-color: yellow; -} - -.emojiPicker-3m1S-j { - box-shadow: none; - border-top: none; - border-radius: 0 0 5px 5px; -} - -#bd-qem { - border-radius: 5px 5px 0 0; - background: #FFF; - border-bottom: 1px solid rgba(0, 0, 0, 0.1) !important; - height: 30px; - display: flex; - flex-direction: row; - padding-right: 1px !important; -} -#bd-qem button { - border-left: 1px solid #EFEFEF; - background: transparent; - box-shadow: #CECECE 1px 0 0 0; - flex-grow: 1; -} -#bd-qem button:hover { - background: #ECECEC; -} - -#bd-qem-twitch { - border-radius: 5px 0 0 0; - order: 2; -} - -#bd-qem-emojis { - border-radius: 0 5px 0 0; - order: 3; -} - -#bd-qem-favourite { - order: 3; -} - -#bd-qem button.active { - background-color: #E2E2E2; -} - -#bd-qem-twitch-container, #bd-qem-favourite-container { - width: 346px; - height: 329px; - background-color: #FFF; - border-radius: 0 0 5px 5px; -} - -#bd-qem-twitch-container .scroller-wrap, #bd-qem-favourite-container .scroller-wrap { - height: 100%; -} - -.emote-menu-inner { - padding: 5px 0 0 15px; -} - -.bd-qme-hidden #bd-qem-emojis { - display: none; -} -/* ================ */ -/* END EMOTE MENU */ - - - - - -/* BEGIN PUBLIC SERVERS */ -/* ==================== */ -#bd-pub-li { - height: 20px; - margin-bottom: 10px; - overflow: hidden; -} - -#bd-pub-button { - border-radius: 4px; - background-color: rgb(47, 49, 54); - color: #b9bbbe; - text-align: center; - font-size: 12px; - line-height: 20px; - height: 20px; -} - -.bd-server-card .bd-server-tags { - flex: 1 1 auto; - text-overflow: ellipsis; - white-space: nowrap; - overflow: hidden; - width: 0; - line-height: 24px; - font-size: 12px; - color: #b9bbbe; - font-weight: 700; - margin-right: 10px; -} - -/* .ui-card.ui-card-primary.bd-server-card:first-child { - margin-bottom: 13px; -} - -.ui-card.ui-card-primary.bd-server-card:first-child:after { - border: 3px solid #7289da; - content: ""; - display: block; - position: absolute; - left: 0; - right: 0; - margin-top: 4px; -} */ - -.bd-server-card.bd-server-card-pinned { - margin-bottom: 15px; -} - -.bd-server-card.bd-server-card-pinned:after { - background: #3a71c1; - content: ""; - height: 3px; - width: 100%; - display: block; - margin-top: 7px; - position: absolute; - top: 100%; -} - -.bd-server-description-container { - color: #b9bbbe; - min-height: 65px; - max-height: 65px; - border-top: 1px solid #3f4146; - border-bottom: 1px solid #3f4146; - padding-top: 5px; - font-size: 13px; -} - -.bd-server-header { - justify-content: space-between; - font-weight: 600; -} - -.bd-server-card { - display: flex; -} - -.bd-server-content { - padding: 5px 10px; - flex: 1; -} - -.bd-server-image { - min-width: 115px; - min-height: 115px; - max-width: 115px; - max-height: 115px; -} - -.bd-server-name { - text-overflow: ellipsis; - white-space: nowrap; - overflow: hidden; - padding-right: 15px; - max-width: 330px; - flex: 1 1 50%; -} - -.bd-layer { - -ms-flex-direction: column; - -webkit-box-direction: normal; - -webkit-box-orient: vertical; - bottom: 0; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - flex-direction: column; - left: 0; - position: absolute; - right: 0; - top: 0; -} - -/* #pubslayer .ui-tab-bar-item { - color: #b9bbbe; - padding-top: 6px; - padding-bottom: 6px; - margin-bottom: 2px; - padding: 6px 10px; - position: relative; - font-size: 16px; - line-height: 20px; - border-radius: 3px; - white-space: nowrap; - text-overflow: ellipsis; - overflow: hidden; - flex-shrink: 0; - font-weight: 500; - cursor: pointer; -} - -#pubslayer .ui-tab-bar-item:hover { - color: #f6f6f7; - background-color: hsla(216,4%,74%,.1); -} - -#pubslayer .ui-tab-bar-item.selected { - color: #fff; - background-color: #7289da; -} - -#pubslayer .ui-tab-bar-header { - color: #72767d; - padding: 6px 10px; - font-size: 12px; - line-height: 16px; - text-transform: uppercase; - white-space: nowrap; - text-overflow: ellipsis; - overflow: hidden; - flex-shrink: 0; - font-weight: 500; -} - -#pubslayer #bd-settings-sidebar .ui-tab-bar-separator { - background-color: hsla(218,5%,47%,.3); - margin-left: 10px; - margin-right: 10px; - height: 1px; - margin-bottom: 8px; - margin-top: 8px; -} - -#pubslayer h2.ui-form-title { - color: #f6f6f7; - text-transform: uppercase; - font-weight: 600; -} - -#pubslayer h5.ui-form-title { - color: #f6f6f7; -} */ - -#pubslayer button { -background: #7289da; - color: #FFF; - font-size: 14px; - font-weight: 500; - line-height: 16px; - padding: 2px 16px; - border: none; - border-radius: 3px; - transition: background-color .17s ease; -} - -#pubslayer button:hover { -background-color: #677bc4; -} - -#pubslayer input { -color: #f6f6f7; - background-color: rgba(0,0,0,.1); - border-color: rgba(0,0,0,.3); - padding: 10px; - height: 30px; - border-width: 1px; - border-style: solid; - border-radius: 3px; - outline: none; - transition: background-color .15s ease,border .15s ease; -} -/* ==================== */ -/* END PUBLIC SERVERS */ - - - - - -/* BEGIN CSS EDITOR */ -/* ================ */ -#bd-editor-panel { - display: flex; - flex-direction: column; -} - -#bd-editor-controls button { - margin: 0 5px 0 0; - background: none; - color: #FFF; - height: 26px; - font-weight: 600; - border-radius: 3px; - display: flex; - align-items: center; -} - -#bd-editor-controls button:hover { - background: rgba(255,255,255,0.05); -} - -#bd-editor-controls button svg { - fill: white; -} - -#bd-editor-controls button:last-of-type { - margin-right: 0; -} - -#bd-editor-controls { - display: flex; - align-items: center; - justify-content: space-between; - background: #272822; - color: #FFF; - border: none; - box-shadow: 0px 1px 0px 0px #2F3129 inset; - padding: 5px; -} - - -.editor-wrapper { - display: flex; -} - -.ace_editor { - line-height: normal; - font-family: Consolas, monospace; - box-sizing: border-box; - height: calc(100vh - 250px); - font-size: 14px; - width: 100%; -} - -.bd-monokai .editor .ace_gutter { - background: #2F3136; -} - -.bd-monokai .ace_editor { - background: #292B2F; -} - -.bd-monokai #bd-editor-controls { - background: #202225; -} - -.theme-light #bd-editor-controls { - background: #E8E8E8; - border: 1px solid #FFF; - border-top: 1px solid #ADADAD; - box-shadow: inset 0px 1px 0px 0px white; -} - -.controls-section { - display: flex; - align-items: center -} - -.controls-section .checkbox-inner { - width: 14px; - height: 14px; -} - -.controls-section .checkbox-inner .checkbox:checked+span::after { - left: 2px; - top: -2px; -} - -.controls-section .checkbox-label { - font-size: 14px; -} - - - - - -#floating-editor-window { - min-width: 340px; - min-height: 280px; - max-height: 900px; - max-width: 750px; -} - -.floating-addon-window { - min-width: 535px; - min-height: 605px; - max-height: 90%; - max-width: 90%; -} - -/* Ace Editor Settings */ -#ace_settingsmenu_container { - background: rgba(0,0,0, 0.7)!important; -} - -body #ace_settingsmenu { - padding-top: 35px; -} - -body .ace_closeButton { - position: absolute; - top: 8px; - right: 12px; - z-index: 10000; - padding: 0; - cursor: pointer; - background: none; - border: none; -} - -body .ace_closeButton::before { - content: "✖"; - color: #36393f; -} - -body .ace_closeButton:active { - transform: translateY(2px); -} - -/* editor help text */ -#bd-editor-controls .help-text { - margin-top: 8px; - margin-bottom: 3px; - font-size: 14px; -} - -#bd-editor-controls .help-text .inline { - background: #2F3129; - padding: .2em; - margin: -.2em 0; - border-radius: 3px; -} -/* ================ */ -/* END CSS EDITOR */ - - - - - -/* BEGIN BD SETTINGS */ -/* ================= */ - -.bd-social-logo { - opacity: 0.6; -} - -.bd-social-link:hover .bd-social-logo { - opacity: 1; -} - -.standardSidebarView-3F1I7i .bd-versioninfo-wrapper { - bottom: 0; - left: 0; - position: fixed; - background: inherit; - right: 0; - padding: 5px; -} - -.standardSidebarView-3F1I7i .bd-versioninfo-wrapper span { - color: #b9bbbe; - font-weight: 600; - font-size: 11px; -} - -.standardSidebarView-3F1I7i .bd-versioninfo-wrapper a { - font-size: 11px; -} - -.bd-button-title { - margin-left: 10px; -} - -/* #bd-settings-sidebar .ui-tab-bar-item { - font-size: 16px; - font-weight: 500; - line-height: 20px; - text-overflow: ellipsis; - white-space: nowrap; - cursor: pointer; - flex-shrink: 0; - padding: 6px 10px; - border-radius: 3px; - position: relative; - overflow: hidden; -} -#bd-settings-sidebar .ui-tab-bar-item.selected { - cursor: default; -} -.theme-dark #bd-settings-sidebar .ui-tab-bar-item { - color: #b9bbbe; -} -.theme-dark #bd-settings-sidebar .ui-tab-bar-item:hover { - background-color: rgba(185,187,190,.1); - color: #f6f6f7; -} -.theme-dark #bd-settings-sidebar .ui-tab-bar-item.selected { - background-color: #7289da; - color: #fff; -} -.theme-light #bd-settings-sidebar .ui-tab-bar-item { - color: #72767d; -} -.theme-light #bd-settings-sidebar .ui-tab-bar-item:hover { - background-color: rgba(79,84,92,.1); - color: #4f545c; -} -.theme-light #bd-settings-sidebar .ui-tab-bar-item.selected { - background-color: #7289da; - color: #fff; -} - -#bd-settings-sidebar .ui-tab-bar-header { - font-size: 12px; - font-weight: 700; - line-height: 16px; - text-transform: uppercase; - text-overflow: ellipsis; - white-space: nowrap; - flex-shrink: 0; - padding: 6px 10px; - overflow: hidden; -} -.theme-dark #bd-settings-sidebar .ui-tab-bar-header { - color: #72767d; -} -.theme-light #bd-settings-sidebar .ui-tab-bar-header { - color: #b9bbbe; -} - -#bd-settings-sidebar .ui-tab-bar-separator { - height: 1px; - margin: 8px 10px; -} -.theme-dark #bd-settings-sidebar .ui-tab-bar-separator { - background-color: rgba(114,118,125,.3); -} -.theme-light #bd-settings-sidebar .ui-tab-bar-separator { - background-color: rgba(185,187,190,.3); -} - -.ui-flex { - display: flex; -} - -#bd-settingspane-container h2.ui-form-title { - font-size: 16px; - font-weight: 600; - line-height: 20px; - text-transform: uppercase; - display: inline-block; - margin-bottom: 20px; -} -.theme-dark #bd-settingspane-container h2.ui-form-title { - color: #f6f6f7; -} -.theme-light #bd-settingspane-container h2.ui-form-title { - color: #4f545c; -} */ - -.bd-switch-item { - flex-direction: column; - margin-top: 8px; -} - -.bd-switch-item h3 { - font-size: 16px; - font-weight: 500; - line-height: 24px; - flex: 1; -} -.theme-dark .bd-switch-item h3 { - color: #f6f6f7; -} -.theme-light .bd-switch-item h3 { - color: #4f545c; -} - -/* .ui-switch-item .style-description { - font-size: 14px; - font-weight: 500; - line-height: 20px; - margin-bottom: 10px; - padding-bottom: 10px; - border-bottom: 1px solid hsla(218,5%,47%,.3); -} -.theme-dark .ui-switch-item .style-description { - color: #72767d; -} -.theme-light .ui-switch-item .style-description { - color: rgba(114,118,125,.6); -} */ - -.bd-switch-item .bd-switch-wrapper { - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - position: relative; - width: 44px; - height: 24px; - display: block; - flex: 0 0 auto; -} - -.bd-switch-item .bd-switch-wrapper input { - position: absolute; - opacity: 0; - cursor: pointer; - width: 100%; - height: 100%; - z-index: 1; -} - -.bd-switch-item .bd-switch-wrapper .bd-switch { - background: #7289da; - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - background: #72767d; - border-radius: 14px; - transition: background .15s ease-in-out,box-shadow .15s ease-in-out,border .15s ease-in-out; -} - -.bd-switch-item .bd-switch-wrapper .bd-switch:before { - content: ""; - display: block; - width: 18px; - height: 18px; - position: absolute; - top: 3px; - left: 3px; - bottom: 3px; - background: #f6f6f7; - border-radius: 10px; - transition: all .15s ease; - box-shadow: 0 3px 1px 0 rgba(0,0,0,.05),0 2px 2px 0 rgba(0,0,0,.1),0 3px 3px 0 rgba(0,0,0,.05); -} - -.bd-switch-item .bd-switch-wrapper .bd-switch.checked { - background: #7289da; -} - -.bd-switch-item .bd-switch-wrapper .bd-switch.checked:before { - transform: translateX(20px); -} - -#bd-settingspane-container .scroller-wrap { - height: 100%; -} - -#bd-settingspane-container .scroller-wrap .scroller { - display: flex; -} -/* .content-column .ui-form-title:first-child { - margin-top: 0; -} */ -/* ================= */ -/* END BD SETTINGS */ - - - - - -/* BEGIN PLUGIN/THEME LIST */ -/* ======================= */ -.bd-reload { - cursor: pointer; - vertical-align: top; - fill: #dcddde; -} - -.bd-reload:hover { - fill: #fff; -} - -.bd-reload-header { - margin-left: 5px; -} - -.bd-reload-card { - margin-right: 5px; -} - -.bd-controls { - display: flex; -} - -.bd-addon-list { - user-select: text; -} - -.bd-addon-list .bd-addon-card { - max-height: 175px; - margin-bottom: 20px; - padding: 5px 8px; - border: 1px solid transparent; - border-radius: 5px; - overflow: hidden; -} -.theme-dark .bd-addon-list .bd-addon-card { - background-color: rgba(32,34,37,.6); - color: #f6f6f7; - border-color: #202225; -} -.theme-light .bd-addon-list .bd-addon-card { - background-color: #f8f9f9; - color: #4f545c; - border-color: #dcddde; -} - -.bd-addon-list .bd-addon-card.settings-open { - max-height: 800px; - overflow-y: auto; -} - -.bd-addon-list .bd-addon-header { - font-size: 12px; - font-weight: 700; - display: flex; - align-items: center; - justify-content: space-between; - padding-bottom: 5px; - border-bottom: 1px solid transparent; - overflow: hidden; -} -.theme-dark .bd-addon-list .bd-addon-header { - color: #f6f6f7; - border-bottom-color: rgba(114,118,125,.3); -} -.theme-light .bd-addon-list .bd-addon-header { - color: #4f545c; - border-bottom-color: rgba(185,187,190,.3); -} - -.bd-addon-list .bd-description { - word-break: break-word; - max-height: 100px; - margin: 5px 0; - padding: 5px 0; - overflow-y: auto; -} -.theme-dark .bd-addon-list .bd-description { - color: #b9bbbe; -} -.theme-light .bd-addon-list .bd-description { - color: #72767d; -} - -.bd-addon-list .scroller::-webkit-scrollbar-track-piece, -.bd-addon-list .scroller::-webkit-scrollbar-thumb { - border-radius:0 !important; - border-color:transparent; -} - -.bd-addon-list .bd-footer { - font-size: 12px; - font-weight: 700; - display: flex; - align-items: center; - justify-content: space-between; - padding-top: 5px; - border-top: 1px solid transparent; - overflow: hidden; -} -.theme-dark .bd-addon-list .bd-footer { - border-top-color: rgba(114,118,125,.3); -} -.theme-light .bd-addon-list .bd-footer { - border-top-color: rgba(185,187,190,.3); -} - -.bd-addon-list .bd-footer button { - padding: 3px 16px; - transition: opacity 250ms ease; -} - -.bd-addon-list .bd-footer button:disabled { - opacity: 0.4; -} - -.bd-addon-list .bd-footer a { - color: #3E82E5; -} - -.bd-addon-list .bd-footer a:hover { - text-decoration: underline; -} -/* ======================= */ -/* END PLUGIN/THEME LIST */ - - - - -/* BEGIN MODALS */ -/* ============ */ -@keyframes bd-backdrop { - to { opacity: 0.85; } -} - -@keyframes bd-modal-wrapper { - to { transform: scale(1); opacity: 1; } -} - -@keyframes bd-backdrop-closing { - to { opacity: 0; } -} - -@keyframes bd-modal-wrapper-closing { - to { transform: scale(0.7); opacity: 0; } -} - -.bd-backdrop { - animation: bd-backdrop 250ms ease; - animation-fill-mode: forwards; - opacity: 0; - background-color: rgb(0, 0, 0); - transform: translateZ(0px); -} - -.bd-modal-wrapper.closing .bd-backdrop { - animation: bd-backdrop-closing 200ms linear; - animation-fill-mode: forwards; - animation-delay: 50ms; - opacity: 0.85; -} - -.bd-modal-wrapper.closing .bd-modal { - animation: bd-modal-wrapper-closing 250ms cubic-bezier(0.19, 1, 0.22, 1); - animation-fill-mode: forwards; - opacity: 1; - transform: scale(1); -} - -.bd-modal-wrapper .bd-modal { - animation: bd-modal-wrapper 250ms cubic-bezier(0.175, 0.885, 0.32, 1.275); - animation-fill-mode: forwards; - transform: scale(0.7); - transform-origin: 50% 50%; - display: flex; - align-items: center; - box-sizing: border-box; - contain: content; - justify-content: center; - top: 0; - left: 0; - bottom: 0; - right: 0; - opacity: 0; - pointer-events: none; - position: absolute; - z-index: 1000; -} - -.bd-modal-wrapper .bd-modal-inner { - display: flex; - contain: layout; - flex-direction: column; - pointer-events: auto; - border: 1px solid rgba(28,36,43,.6); - border-radius: 5px; - box-shadow: 0 2px 10px 0 rgba(0,0,0,.2); - overflow: hidden; - max-height: 660px; - min-height: 200px; - width: 440px; - user-select: text; -} - -.bd-modal-wrapper .bd-content-modal .bd-modal-inner { - height: 500px; - width: 700px; -} - -.bd-modal-wrapper .header { - background-color: #35393e; - box-shadow: 0 2px 3px 0 rgba(0,0,0,.2); - padding: 12px 20px; - z-index: 1; - color: #fff; - font-size: 16px; - font-weight: 700; - line-height: 19px; -} - -.bd-modal-wrapper .bd-modal-body { - background-color: #36393f; - color: #fff; - flex-direction: row; - overflow: hidden; - display: flex; - flex-direction: column; - flex: 1; - contain: layout; - position: relative; -} - -.bd-modal-wrapper .scroller { - padding: 10px; -} - -.bd-modal-wrapper .bd-content-modal .bd-modal-body { - padding: 0; -} - -.bd-modal-wrapper .scroller { - overflow-y: auto; -} - -.bd-modal-wrapper .footer { - display: flex; - justify-content: flex-end; - padding: 10px 20px; -} - -.bd-modal-wrapper .footer button { - min-height: 32px; - min-width: 60px; - align-items: center; - display: flex; - font-size: 14px; - font-weight: 500; - justify-content: center; - line-height: 16px; - padding: 2px 16px; - user-select: none; -} -.bd-modal-wrapper .tab-bar-container { - align-items: center; - border-bottom: 0; - background: rgba(0,0,0, 0.2); - box-shadow: 0 2px 3px 0 rgba(0,0,0,.1); - display: flex; - flex-direction: row; - justify-content: space-between; - margin-bottom: 15px; -} - -.bd-modal-wrapper .tab-bar.TOP { - margin: 0; - border: 0; - display: flex; - flex-direction: row; - justify-content: space-between; - align-items: center; -} - -.bd-modal-wrapper .tab-bar-container .tab-bar-item { - margin: 0 15px; - padding: 15px 0; - color: #fff !important; - opacity: 0.5; - transition: opacity 200ms ease; - border-bottom: 2px solid transparent; -} - -.bd-modal-wrapper .tab-bar-container .tab-bar-item:hover { - border-color: #fff; - cursor: pointer; -} - -.bd-modal-wrapper .tab-bar-container .tab-bar-item.selected { - opacity: 1; - border-color: #fff; -} - -.bd-modal-wrapper .tab-bar.TOP .tab-bar-item+.tab-bar-item { - margin: 0; -} - -.bd-modal-wrapper .table-header { - display: flex; - justify-content: space-between; - color: #fff; - font-weight: 700; - padding-bottom: 10px; - margin: 3px 15px 0 15px; - border-bottom: 1px solid #fff; - font-size: 14px; -} - -.bd-modal-wrapper .table-column { - width: 25%; -} - -.bd-modal-wrapper .table-column.column-error { - width: 50%; -} - -.bd-modal-wrapper .table-column { - word-wrap: break-word; -} - -.bd-modal-wrapper .errors { - display: flex; - flex-direction: column; - padding: 0; - font-size: 14px; - padding: 0 5px; -} - -.bd-modal-wrapper .error { - display: flex; - color: #fff; - border-bottom: 1px solid rgba(255,255,255, 0.25); - padding: 15px 0; - align-items: center; -} - -.bd-modal-wrapper .error-link { - color: #3E82E5; - font-weight: 500; -} - -.bd-modal-wrapper .bd-content-modal .scroller { - padding-top: 0; -} -/* ============ */ -/* END MODALS */ - - - -/* BEGIN TOASTS */ -/* ============ */ -.bd-toasts { - position: fixed; - display: flex; - top: 0; - flex-direction: column; - align-items: center; - justify-content: flex-end; - pointer-events: none; - z-index: 4000; -} - -@keyframes bd-toast-up { - from { - transform: translateY(0); - opacity: 0; - } -} - -.bd-toast { - animation: bd-toast-up 300ms ease; - transform: translateY(-10px); - background: #36393F; - padding: 10px; - border-radius: 5px; - box-shadow: 0 0 0 1px rgba(32,34,37,.6), 0 2px 10px 0 rgba(0,0,0,.2); - font-weight: 500; - color: #fff; - user-select: text; - font-size: 14px; - opacity: 1; - margin-top: 10px; - pointer-events: none; - user-select: none; -} - -@keyframes bd-toast-down { - to { - transform: translateY(0px); - opacity: 0; - } -} - -.bd-toast.closing { - animation: bd-toast-down 200ms ease; - animation-fill-mode: forwards; - opacity: 1; - transform: translateY(-10px); -} - - -.bd-toast.icon { - padding-left: 30px; - background-size: 20px 20px; - background-repeat: no-repeat; - background-position: 6px 50%; -} - -.bd-toast.toast-info { - background-color: #4a90e2; -} - -.bd-toast.toast-info.icon { - background-image: url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjRkZGRkZGIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMSAxNWgtMnYtNmgydjZ6bTAtOGgtMlY3aDJ2MnoiLz48L3N2Zz4=); -} - -.bd-toast.toast-success { - background-color: #43b581; -} - -.bd-toast.toast-success.icon { - background-image: url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjRkZGRkZGIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptLTIgMTVsLTUtNSAxLjQxLTEuNDFMMTAgMTQuMTdsNy41OS03LjU5TDE5IDhsLTkgOXoiLz48L3N2Zz4=); -} -.bd-toast.toast-danger, -.bd-toast.toast-error { - background-color: #f04747; -} - -.bd-toast.toast-danger.icon, -.bd-toast.toast-error.icon { - background-image: url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjRkZGRkZGIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTEyIDJDNi40NyAyIDIgNi40NyAyIDEyczQuNDcgMTAgMTAgMTAgMTAtNC40NyAxMC0xMFMxNy41MyAyIDEyIDJ6bTUgMTMuNTlMMTUuNTkgMTcgMTIgMTMuNDEgOC40MSAxNyA3IDE1LjU5IDEwLjU5IDEyIDcgOC40MSA4LjQxIDcgMTIgMTAuNTkgMTUuNTkgNyAxNyA4LjQxIDEzLjQxIDEyIDE3IDE1LjU5eiIvPiAgICA8cGF0aCBkPSJNMCAwaDI0djI0SDB6IiBmaWxsPSJub25lIi8+PC9zdmc+); -} - -.bd-toast.toast-warning, -.bd-toast.toast-warn { - background-color: #FFA600; - color: white; -} - -.bd-toast.toast-warning.icon, -.bd-toast.toast-warn.icon { - background-image: url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjRkZGRkZGIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMSAyMWgyMkwxMiAyIDEgMjF6bTEyLTNoLTJ2LTJoMnYyem0wLTRoLTJ2LTRoMnY0eiIvPjwvc3ZnPg==); -} -/* ============ */ -/* END TOASTS */ - - - - - - -/* BEGIN MINIMAL MODE */ -/* ================== */ - -/* Messages */ -/* message divider */ -.bd-minimal .divider-32i8lo {opacity: 0;} - -/* message avatars */ -.bd-minimal .large-3ChYtB { - max-width: 20px; - max-height: 20px; - background-size: 100%; - margin-right: 2px; - margin-top: 0; - border-radius: 0; -} - -/* message content */ -.bd-minimal .content-3dzVd8 { - border-left: 2px solid #EBEBEB; - padding-left: 2px; -} -.bd-minimal .theme-dark .content-3dzVd8 { - border-left: 2px solid #303030; -} - -/* message username */ -.bd-minimal .username-_4ZSMR { - font-size: small; -} - -/* message group */ -.bd-minimal .container-1YxwTf { - padding: 5px; -} - -/* message embed */ -.bd-minimal .embed-IeVjo6 { - padding: 2px; -} - -/* Member List */ -/* member list wrap */ -.bd-minimal .membersWrap-2h-GB4 { - min-width: 0px; -} - -/* member list avatars */ -.bd-minimal .members-1998pB .small-5Os1Bb { - max-width: 15px; - max-height: 15px; - background-size: 15px 15px; -} - -/* member list avatars */ -.bd-minimal .members-1998pB .small-5Os1Bb .status-oxiHuE { - height: 5px; - width: 5px; -} - -/* member list list item */ -.bd-minimal .members-1998pB .member-3W1lQa { - padding: 5px; -} - -/* member list item inner */ -.bd-minimal .members-1998pB .memberInner-2CPc3V { - transform: scale(0.9); -} - -/* member list role label */ -.bd-minimal .members-1998pB .membersGroup-v9BXpm { - margin-top: 3px; - transform: scale(0.9); -} - - -/* Channel List */ -/* Hide Channel Mode */ -.bd-minimal.bd-minimal-chan .channels-Ie2l6A { - display: none; -} - -/* channel list guild name */ -.bd-minimal .channels-Ie2l6A header span { - font-size: 12px; -} - -/* channel list */ -.bd-minimal .channels-Ie2l6A { - width: 160px; -} - -/* channel item */ -.bd-minimal .containerDefault-3GGEv_ { - transform: scale(0.9); -} - -/* channel name */ -.bd-minimal .content-3at_AU { - transform: scale(0.9); -} - -/* channel icon */ -.bd-minimal .icon-1_QxNX { - width: 14px; - height: 14px; -} - - -/* Guild List */ -/* guild */ -.bd-minimal .wrapper-1Rf91z .scroller-2FKFPG .listItem-2P_4kh { - width: 20px; - height: 20px; - background-size: 100%; - font-size: 15px; - line-height: 20px; - margin: 0 12.5px 8px; -} - -/* guild link and icon */ -.bd-minimal .wrapper-1Rf91z .scroller-2FKFPG .wrapper-25eVIn a, -.bd-minimal .listItem-2P_4kh .wrapper-25eVIn .icon-27yU2q { - width: 20px; - height: 20px; - background-size: 100%; - font-size: 15px; - line-height: 20px; -} - -/* guild inner */ -.bd-minimal .listItem-2P_4kh .wrapper-25eVIn { - width: 20px; - height: 20px; - background-size: 100%; - font-size: 15px; - line-height: 20px; -} -.bd-minimal .listItem-2P_4kh svg, -.bd-minimal .listItem-2P_4kh foreignObject[mask] { - mask: none; -} - -/* home icon */ -.bd-minimal .wrapper-1Rf91z .scroller-2FKFPG .homeIcon-tEMBK1 { - width: 10px; - height: 10px; - background-size: 100%; - font-size: 15px; - line-height: 20px; -} - -/* add and search */ -.bd-minimal .circleIconButton-jET_ig { - height: 20px; - width: 20px; -} - -.bd-minimal .circleIconButton-jET_ig svg { - height: 14px; - width: 14px; -} - -/* friends online */ -.bd-minimal .wrapper-1Rf91z .scroller-2FKFPG .friendsOnline-_wi_fM { - margin-left: -15px; - font-size: 7px; -} - -/* public servers button */ -.bd-minimal #bd-pub-li { - height: 16px; -} -.bd-minimal #bd-pub-button { - font-size: 8px; - line-height: 16px; - height: 16px; -} - -/* guild list */ -.bd-minimal .wrapper-1Rf91z, -.bd-minimal .wrapper-1Rf91z .scrollerWrap-1IAIlv, -.bd-minimal .wrapper-1Rf91z .scroller-2FKFPG { - width: 45px; -} - -/* separator */ -.bd-minimal .wrapper-1Rf91z .guildSeparator-3s64Iy { - margin-left: -15px; -} - -/* unread icon */ -.bd-minimal .wrapper-1Rf91z .scroller-2FKFPG .listItem-2P_4kh .wrapper-sa6paO { - height: 20px; - margin-top: 0px; - margin-left: -12.5px; -} - -/* audio/video */ -.bd-minimal .wrapper-1Rf91z .scroller-2FKFPG .iconBadge-2wi9r4 { - width: 12px; - height: 12px; - background-size: 12px; -} - - -/* Account Container */ -/* avatar */ -.bd-minimal .container-2Thooq .avatarSmall-3ACRaI { - width: 15px; - height: 15px; - background-size: 15px 15px; -} - -/* status */ -.bd-minimal .container-2Thooq .avatarSmall-3ACRaI .status-oxiHuE { - height: 5px; - width: 5px; -} - -/* username and discrim */ -.bd-minimal .container-2Thooq .accountDetails-3k9g4n { - transform: scale(0.8); -} - -/* 3 buttons */ -.bd-minimal .container-2Thooq .button-2b6hmh { - height: 14px; - width: 14px; - background-size: 14px 14px; - margin-left: 3px; -} - -/* 3 buttons icons */ -.bd-minimal .container-2Thooq .button-2b6hmh svg { - height: 14px; - width: 14px; -} -/* ================== */ -/* END MINIMAL MODE */ - - - -/* BEGIN DARK MODE */ -/* =============== */ -/* Emoji Picker */ -.bd-dark #bd-qem-favourite-container, -.bd-dark #bd-qem-twitch-container { - background-color: #353535; -} - -.bd-dark #bd-qem { - border-bottom: 1px solid #464646 !important; - background: #353535; -} - -.bd-dark #bd-qem button { - background: #353535; - border-left: 1px solid #242424; - box-shadow: #424242 1px 0 0 0; - color: #FFF; -} - -.bd-dark #bd-qem button.active { - background-color: #292929; -} - -.bd-dark #bd-qem button:hover { - background-color: #303030; -} -.bd-dark #bd-qem-favourite-container, -.bd-dark #bd-qem-twitch-container { - background-color: #353535; -} - -.bd-dark .emojiPicker-3m1S-j { - background-color: #353535; -} - -.bd-dark .emojiPicker-3m1S-j .category-2U57w6 { - background-color: #353535; -} - -.bd-dark .emojiPicker-3m1S-j .header-1nkwgG .searchBar-2pWH0_ { - background-color: #2B2B2B; -} - -.bd-dark .emojiPicker-3m1S-j .searchBar-2pWH0_ input { - color: #FFF; -} - -.bd-dark .emojiPicker-3m1S-j .searchBar-2pWH0_ input::-webkit-input-placeholder { - color: #FFF; -} - -.bd-dark .emojiPicker-3m1S-j .scroller-3vODG7 .emojiItem-109bjA.selected-39BZ4S { - background-color: rgba(123, 123, 123, 0.37); -} - -.bd-dark .emojiPicker-3m1S-j .dimmer-3iH-5D.visible-3k45bQ { - background-color: rgba(62, 62, 62, 0.65); -} - -.bd-dark .emojiPicker-3m1S-j .diversitySelector-tmmMv0 .popout-2nUePc { - background: #353535; - border-color: #202020; -} - -.bd-dark #bd-qem-favourite-container .scroller::-webkit-scrollbar, -.bd-dark #bd-qem-favourite-container .scroller::-webkit-scrollbar-track, -.bd-dark #bd-qem-favourite-container .scroller::-webkit-scrollbar-track-piece, -.bd-dark #bd-qem-twitch-container .scroller::-webkit-scrollbar, -.bd-dark #bd-qem-twitch-container .scroller::-webkit-scrollbar-track, -.bd-dark #bd-qem-twitch-container .scroller::-webkit-scrollbar-track-piece, -.bd-dark .emojiPicker-3m1S-j .scroller-3vODG7::-webkit-scrollbar, -.bd-dark .emojiPicker-3m1S-j .scroller-3vODG7::-webkit-scrollbar-track, -.bd-dark .emojiPicker-3m1S-j .scroller-3vODG7::-webkit-scrollbar-track-piece { - background-color: #303030 !important; - border-color: #303030 !important; -} - -.bd-dark #bd-qem-twitch-container .scroller::-webkit-scrollbar-thumb, -.bd-dark #bd-qem-favourite-container .scroller::-webkit-scrollbar-thumb, -.bd-dark .emojiPicker-3g68GS .scroller-3vODG7::-webkit-scrollbar-thumb { - border-color: #202020 !important; - background-color: #202020 !important; -} - -/* add/create server */ -.bd-dark .theme-light .slide-2pHaq5 { - background: #36393f; -} - -.bd-dark .theme-dark .action-1lSjCi, -.bd-dark .theme-light .action-1lSjCi { - background: #2F3136; -} - -/* centered or */ -.bd-dark .theme-dark .or-3THJsp, -.bd-dark .theme-light .or-3THJsp { - background: #2F3136; - order: 2; - height: 56px; - width: 56px; - top: 103px; - line-height: 56px; - left: calc(50% - 29px); - border-radius: 50%; - border: 2px solid #484B52; -} - -.bd-dark .create-3jownz { - order: 1; -} - -.bd-dark .join-33Tr-7 { - order: 3; -} - -.bd-dark .theme-dark .actionIcon-2IISM_, -.bd-dark .theme-light .actionIcon-2IISM_ { - filter: grayscale(100%) brightness(60%); -} - -.bd-dark .theme-light .footer-2yfCgX { - background: #2F3136; -} - -/* Region Select */ -.bd-dark .regionSelectModal-12e-57 { - background: #36393f; -} - -.bd-dark .regionSelectModal-12e-57 .regionSelectModalOption-2DSIZ3 { - background: #2F3136; - border: 2px solid #484B52; -} - -/* Ace Editor Settings */ -.bd-dark ~ div #ace_settingsmenu { - color: #f6f6f7; - background: #36393f; - box-shadow: 0 0 0 1px rgba(32,34,37,.6),0 2px 10px 0 rgba(0,0,0,.2); -} - -.bd-dark ~ div #ace_settingsmenu select, -.bd-dark ~ div #ace_settingsmenu input[type="text"] { - color: #f6f6f7; - background: #2F3136; - border: 1px solid #484B52; -} - -.bd-dark ~ div .ace_closeButton::before { - color: #f6f6f7; -} - -/* =============== */ -/* END DARK MODE */ - +/* stylelint-disable no-descending-specificity */ +@import "./builtins/*"; +@import "./ui/*"; +@import "./buttons.css"; .bd-chat-badge { - vertical-align: bottom; - line-height: 1.375rem; - display: inline-block; - height: 1.25rem; + vertical-align: bottom; + line-height: 1.375rem; + display: inline-block; + height: 1.25rem; } .bd-member-badge { - height: 15px; - margin-left: 4px; + height: 15px; + margin-left: 4px; } - -.bd-sidebar-header { - display: flex; - justify-content: space-between; -} - -.bd-sidebar-header .bd-changelog-button { - height: 16px; -} - -.bd-sidebar-header .bd-icon { - cursor: pointer; - fill: #72767d; -} - -.bd-sidebar-header .bd-icon:hover { - fill: #fff; -} \ No newline at end of file diff --git a/src/styles/ui/addonlist.css b/src/styles/ui/addonlist.css new file mode 100644 index 00000000..c89a25e1 --- /dev/null +++ b/src/styles/ui/addonlist.css @@ -0,0 +1,194 @@ +.bd-reload { + cursor: pointer; + vertical-align: top; + fill: #dcddde; +} + +.bd-reload:hover { + fill: #fff; +} + +.bd-reload-header { + margin-left: 5px; +} + +.bd-reload-card { + margin-right: 5px; +} + +.bd-controls { + display: flex; +} + +.bd-addon-list { + user-select: text; +} + +.bd-addon-list .bd-addon-card { + max-height: 175px; + margin-bottom: 20px; + padding: 5px 8px; + border: 1px solid transparent; + border-radius: 5px; + overflow: hidden; +} + +.theme-dark .bd-addon-list .bd-addon-card { + background-color: rgba(32, 34, 37, 0.6); + color: #f6f6f7; + border-color: #202225; +} + +.theme-light .bd-addon-list .bd-addon-card { + background-color: #f8f9f9; + color: #4f545c; + border-color: #dcddde; +} + +.bd-addon-list .bd-addon-card.settings-open { + max-height: 800px; + overflow-y: auto; +} + +.bd-addon-list .bd-addon-header { + font-size: 12px; + font-weight: 700; + display: flex; + align-items: center; + justify-content: space-between; + padding-bottom: 5px; + border-bottom: 1px solid transparent; + overflow: hidden; +} + +.theme-dark .bd-addon-list .bd-addon-header { + color: #f6f6f7; + border-bottom-color: rgba(114, 118, 125, 0.3); +} + +.theme-light .bd-addon-list .bd-addon-header { + color: #4f545c; + border-bottom-color: rgba(185, 187, 190, 0.3); +} + +.bd-addon-list .bd-description { + word-break: break-word; + max-height: 100px; + margin: 5px 0; + padding: 5px 0; + overflow-y: auto; +} + +.theme-dark .bd-addon-list .bd-description { + color: #b9bbbe; +} + +.theme-light .bd-addon-list .bd-description { + color: #72767d; +} + +.bd-addon-list .scroller::-webkit-scrollbar-track-piece, +.bd-addon-list .scroller::-webkit-scrollbar-thumb { + border-radius: 0 !important; + border-color: transparent; +} + +.bd-addon-list .bd-footer { + font-size: 12px; + font-weight: 700; + display: flex; + align-items: center; + justify-content: space-between; + padding-top: 5px; + border-top: 1px solid transparent; + overflow: hidden; +} + +.theme-dark .bd-addon-list .bd-footer { + border-top-color: rgba(114, 118, 125, 0.3); +} + +.theme-light .bd-addon-list .bd-footer { + border-top-color: rgba(185, 187, 190, 0.3); +} + +.bd-addon-list .bd-footer button { + padding: 3px 16px; + transition: opacity 250ms ease; +} + +.bd-addon-list .bd-footer button:disabled { + opacity: 0.4; +} + +.bd-addon-list .bd-footer a { + color: #3e82e5; +} + +.bd-addon-list .bd-footer a:hover { + text-decoration: underline; +} + +.bd-controls + .bd-addon-list { + margin-top: 10px; +} + +.bd-addon-button { + cursor: pointer; +} + +.bd-addon-button + .bd-addon-button { + margin-left: 5px; +} + +.bd-search-wrapper { + padding: 3px; + border-radius: 3px; + outline: none; + border: 0; + background-color: #202225; + color: #fff; + display: flex; + align-items: center; +} + +.bd-search { + padding: 2px 3px; + background: none; + border: 0; + color: #fff; + flex: 1; +} + +.bd-search-wrapper > svg { + margin-right: 2px; +} + +.bd-addon-controls { + display: flex; + align-items: center; + justify-content: space-between; +} + +.bd-addon-controls .bd-search { + font-size: 13px; + margin: 0; + width: 200px; +} + +.bd-addon-dropdowns { + display: flex; +} + +/* Error Boundary stuff */ +.react-error { + color: red; + font-weight: bold; + font-family: Arial, Helvetica, sans-serif; + cursor: pointer; +} + +.settings-open .bd-close { + cursor: pointer; + float: right; +} \ No newline at end of file diff --git a/src/styles/ui/bdsettings.css b/src/styles/ui/bdsettings.css new file mode 100644 index 00000000..13c9d86b --- /dev/null +++ b/src/styles/ui/bdsettings.css @@ -0,0 +1,469 @@ +.bd-social-logo { + opacity: 0.6; +} + +.bd-social-link:hover .bd-social-logo { + opacity: 1; +} + +.standardSidebarView-3F1I7i .bd-versioninfo-wrapper { + bottom: 0; + left: 0; + position: fixed; + background: inherit; + right: 0; + padding: 5px; +} + +.standardSidebarView-3F1I7i .bd-versioninfo-wrapper span { + color: #b9bbbe; + font-weight: 600; + font-size: 11px; +} + +.standardSidebarView-3F1I7i .bd-versioninfo-wrapper a { + font-size: 11px; +} + +.bd-button-title { + margin-left: 10px; +} + +/* #bd-settings-sidebar .ui-tab-bar-item { + font-size: 16px; + font-weight: 500; + line-height: 20px; + text-overflow: ellipsis; + white-space: nowrap; + cursor: pointer; + flex-shrink: 0; + padding: 6px 10px; + border-radius: 3px; + position: relative; + overflow: hidden; +} +#bd-settings-sidebar .ui-tab-bar-item.selected { + cursor: default; +} +.theme-dark #bd-settings-sidebar .ui-tab-bar-item { + color: #b9bbbe; +} +.theme-dark #bd-settings-sidebar .ui-tab-bar-item:hover { + background-color: rgba(185,187,190,.1); + color: #f6f6f7; +} +.theme-dark #bd-settings-sidebar .ui-tab-bar-item.selected { + background-color: #7289da; + color: #fff; +} +.theme-light #bd-settings-sidebar .ui-tab-bar-item { + color: #72767d; +} +.theme-light #bd-settings-sidebar .ui-tab-bar-item:hover { + background-color: rgba(79,84,92,.1); + color: #4f545c; +} +.theme-light #bd-settings-sidebar .ui-tab-bar-item.selected { + background-color: #7289da; + color: #fff; +} + +#bd-settings-sidebar .ui-tab-bar-header { + font-size: 12px; + font-weight: 700; + line-height: 16px; + text-transform: uppercase; + text-overflow: ellipsis; + white-space: nowrap; + flex-shrink: 0; + padding: 6px 10px; + overflow: hidden; +} +.theme-dark #bd-settings-sidebar .ui-tab-bar-header { + color: #72767d; +} +.theme-light #bd-settings-sidebar .ui-tab-bar-header { + color: #b9bbbe; +} + +#bd-settings-sidebar .ui-tab-bar-separator { + height: 1px; + margin: 8px 10px; +} +.theme-dark #bd-settings-sidebar .ui-tab-bar-separator { + background-color: rgba(114,118,125,.3); +} +.theme-light #bd-settings-sidebar .ui-tab-bar-separator { + background-color: rgba(185,187,190,.3); +} + +.ui-flex { + display: flex; +} + +#bd-settingspane-container h2.ui-form-title { + font-size: 16px; + font-weight: 600; + line-height: 20px; + text-transform: uppercase; + display: inline-block; + margin-bottom: 20px; +} +.theme-dark #bd-settingspane-container h2.ui-form-title { + color: #f6f6f7; +} +.theme-light #bd-settingspane-container h2.ui-form-title { + color: #4f545c; +} */ + +.bd-switch { + background-color: #72767d; + border-radius: 14px; + width: 42px; + height: 24px; + opacity: 1; + overflow: hidden; + user-select: none; + position: relative; + display: block; + flex: 0 0 auto; + transition: background 0.15s ease-in-out, box-shadow 0.15s ease-in-out, border 0.15s ease-in-out, opacity 0.15s ease-in-out; + margin-left: 10px; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.15); +} + +.bd-switch::before { + content: ""; + display: block; + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + z-index: 0; + opacity: 0; + background-color: #000; +} + +.bd-switch::after { + content: ""; + display: block; + position: absolute; + background-color: #fff; + z-index: 1; + width: 18px; + margin: 3px; + border-radius: 9px; + height: 18px; + left: 0; + transition: transform 0.15s ease-in-out, width 0.1s ease-in-out, left 0.1s ease-in-out; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.3); +} + +.bd-switch .bd-checkbox { + position: absolute; + width: 100%; + height: 100%; + opacity: 0; + padding: 0; + margin: 0; + z-index: 2; + cursor: pointer; +} + +.bd-switch-checked { + background-color: #3e82e5; +} + +.bd-switch-checked::after { + transform: translate3d(18px, 0, 0); +} + +.bd-switch-disabled { + opacity: 0.3; + cursor: not-allowed; +} + +.bd-switch-item { + flex-direction: column; + margin-top: 8px; +} + +.bd-switch-item h3 { + font-size: 16px; + font-weight: 500; + line-height: 24px; + flex: 1; +} + +.theme-dark .bd-switch-item h3 { + color: #f6f6f7; +} + +.theme-light .bd-switch-item h3 { + color: #4f545c; +} + +/* .ui-switch-item .style-description { + font-size: 14px; + font-weight: 500; + line-height: 20px; + margin-bottom: 10px; + padding-bottom: 10px; + border-bottom: 1px solid hsla(218,5%,47%,.3); +} +.theme-dark .ui-switch-item .style-description { + color: #72767d; +} +.theme-light .ui-switch-item .style-description { + color: rgba(114,118,125,.6); +} */ + +.bd-switch-item .bd-switch-wrapper { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + position: relative; + width: 44px; + height: 24px; + display: block; + flex: 0 0 auto; +} + +.bd-switch-item .bd-switch-wrapper input { + position: absolute; + opacity: 0; + cursor: pointer; + width: 100%; + height: 100%; + z-index: 1; +} + +.bd-switch-item .bd-switch-wrapper .bd-switch { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + background: #72767d; + border-radius: 14px; + transition: background 0.15s ease-in-out, box-shadow 0.15s ease-in-out, border 0.15s ease-in-out; +} + +.bd-switch-item .bd-switch-wrapper .bd-switch::before { + content: ""; + display: block; + width: 18px; + height: 18px; + position: absolute; + top: 3px; + left: 3px; + bottom: 3px; + background: #f6f6f7; + border-radius: 10px; + transition: all 0.15s ease; + box-shadow: 0 3px 1px 0 rgba(0, 0, 0, 0.05), 0 2px 2px 0 rgba(0, 0, 0, 0.1), 0 3px 3px 0 rgba(0, 0, 0, 0.05); +} + +.bd-switch-item .bd-switch-wrapper .bd-switch.checked { + background: #7289da; +} + +.bd-switch-item .bd-switch-wrapper .bd-switch.checked::before { + transform: translateX(20px); +} + +#bd-settingspane-container .scroller-wrap { + height: 100%; +} + +#bd-settingspane-container .scroller-wrap .scroller { + display: flex; +} + +.bd-select-wrapper { + color: #f6f6f7; + font-size: 13px; + display: flex; + align-items: center; +} + +.bd-select-wrapper + .bd-select-wrapper { + margin-left: 10px; +} + +.bd-select-wrapper label { + opacity: 0.3; + margin-right: 5px; +} + +.bd-select { + position: relative; + cursor: pointer; + color: #f6f6f7; + font-size: 13px; + display: flex; + align-items: center; + justify-content: space-between; + background-color: rgba(0, 0, 0, 0.1); + border: 1px solid rgba(0, 0, 0, 0.3); + border-radius: 3px; + padding: 5px 5px 5px 0; +} + +.bd-select.bd-select-transparent { + background: none; + border: none; + padding: 0; +} + +.bd-select-value { + padding-left: 12px; +} + +.bd-select-arrow { + margin-left: 10px; +} + +.bd-select .bd-select-options { + position: absolute; + background: #2f3136; + border-radius: 0 0 3px 3px; + max-height: 300px; + min-width: calc(100% + 2px); + overflow-y: auto; + box-shadow: rgba(0, 0, 0, 0.3) 0 1px 5px 0; + border: 1px solid rgba(0, 0, 0, 0.3); + border-top: 0; + margin-top: -1px; + margin-left: -1px; + z-index: 2; + top: 100%; +} + +.bd-select-transparent .bd-select-options { + border: 1px solid rgba(0, 0, 0, 0.3); + margin-top: 3px; + border-radius: 3px; +} + +.bd-select .bd-select-option { + padding: 8px 12px; + cursor: pointer; + white-space: pre; +} + +.bd-select .bd-select-option:hover, +.bd-select .bd-select-option.selected { + background: #26272b; +} + +.bd-setting-item .bd-select { + min-width: 200px; +} + +.bd-setting-item { + display: flex; + flex-direction: column; + margin-bottom: 20px; +} + +.bd-setting-header { + display: flex; + justify-content: space-between; + align-items: center; +} + +.bd-setting-header label { + font-weight: 500; + cursor: pointer; + overflow: hidden; + word-wrap: break-word; + font-size: 16px; + line-height: 24px; + color: #f6f6f7; +} + +.bd-setting-note { + color: #72767d; + margin-top: 4px; + font-size: 14px; + line-height: 20px; + font-weight: 500; +} + +.bd-setting-divider { + width: 100%; + height: 1px; + margin-top: 20px; + background-color: rgba(114, 118, 125, 0.3); +} + +.bd-settings-container { + height: auto; + overflow: hidden; + transition: height 300ms cubic-bezier(0.47, 0, 0.745, 0.715); +} + +.bd-settings-group.collapsed .bd-settings-container { + height: 0; +} + +.bd-settings-group.expanded .bd-settings-container:not(.animating) { + overflow: visible; +} + +.bd-settings-group.collapsible .bd-settings-title { + display: flex; + justify-content: space-between; + align-items: center; + order: 1; +} + +.bd-settings-group.collapsible .bd-settings-title::before { + content: ""; + background-color: rgba(114, 118, 125, 0.3); + height: 2px; + order: 2; + flex: 1; + margin: 0 10px 0 15px; +} + +.bd-settings-group.collapsible .bd-settings-title::after { + content: ""; + background: url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxOS4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iQ2FscXVlXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSItOTUwIDUzMiAxOCAxOCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAtOTUwIDUzMiAxOCAxODsiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4NCgkuc3Qwe2ZpbGw6bm9uZTt9DQoJLnN0MXtmaWxsOm5vbmU7c3Ryb2tlOiNGRkZGRkY7c3Ryb2tlLXdpZHRoOjEuNTtzdHJva2UtbWl0ZXJsaW1pdDoxMDt9DQo8L3N0eWxlPg0KPHBhdGggY2xhc3M9InN0MCIgZD0iTS05MzIsNTMydjE4aC0xOHYtMThILTkzMnoiLz4NCjxwb2x5bGluZSBjbGFzcz0ic3QxIiBwb2ludHM9Ii05MzYuNiw1MzguOCAtOTQxLDU0My4yIC05NDUuNCw1MzguOCAiLz4NCjwvc3ZnPg0K"); + height: 20px; + width: 20px; + display: inline-block; + vertical-align: bottom; + transition: transform 0.3s ease; + transform: rotate(0); + order: 3; +} + +.bd-settings-group.collapsed .bd-settings-title::after { + transition: transform 0.3s ease; + transform: rotate(90deg); +} + +.bd-settings-group ~ .bd-settings-group .bd-settings-title { + margin-top: 30px; + transition: margin-top 300ms ease; +} + +.bd-settings-group.collapsed + .bd-settings-group .bd-settings-title { + margin-top: 0; +} + +.bd-settings-title.bd-settings-group-title { + margin-bottom: 10px; +} + +.checkbox-item { + display: flex; +} + +.checkbox-item .checkbox-label { + margin-right: 8px; +} \ No newline at end of file diff --git a/src/styles/ui/floatingwindow.css b/src/styles/ui/floatingwindow.css new file mode 100644 index 00000000..65affc06 --- /dev/null +++ b/src/styles/ui/floatingwindow.css @@ -0,0 +1,124 @@ +@keyframes open-window { + from { + transform: scale(0.9); + } + + to { + transform: none; + } +} + +.floating-window { + animation: open-window 200ms ease; + min-width: 200px; + min-height: 300px; + box-shadow: 0 2px 10px 0 rgba(0, 0, 0, 0.2); + display: flex; + flex-direction: column; + -webkit-app-region: no-drag; + position: fixed; + z-index: 1001; + box-sizing: border-box; +} + +.floating-window.modal-open { + z-index: 999; +} + +.floating-window.resizable { + overflow: auto; + resize: both; + padding-bottom: 10px; + background: #202225; +} + +.floating-window-titlebar { + width: 100%; + display: flex; + justify-content: space-between; + align-items: center; + background: #202225; /* #2F3129background-color: #202225; */ + color: white; + border-bottom: 1px solid #272822; +} + +.floating-window-content { + display: flex; + flex-direction: column; + background: #2f3129; + color: white; + flex: 1; +} + +.floating-window-titlebar .title { + /* font-weight: bold; */ + flex: 1; + text-align: center; + padding: 2px 0; +} + +.floating-window-buttons { + display: flex; +} + +.floating-window-buttons .button { + cursor: pointer; + padding: 0 2px; +} + +.floating-window-buttons .button svg { + fill: #dcddde; + margin-top: 1.5px; +} + +.floating-window-buttons .button:hover svg { + fill: white; +} + +.floating-window-buttons .button:hover { + background-color: #36393f; +} + +.floating-window-buttons .close-button:hover { + background-color: #f04747; +} + +.floating-window-buttons .close-button:hover svg path.fill { + fill: white; +} + +.floating-window-content #bd-editor-panel { + display: flex; + flex-direction: column; + flex: 1; +} + +.floating-window .editor-wrapper { + flex: 1; +} + +.floating-window .ace_editor { + height: auto; + flex: 1; +} + +.floating-window #bd-editor-controls { + height: auto; + background: #202225; + border: none; + box-shadow: 0 1px 0 0 #2f3129 inset; +} + +#floating-editor-window { + min-width: 340px; + min-height: 280px; + max-height: 900px; + max-width: 750px; +} + +.floating-addon-window { + min-width: 535px; + min-height: 605px; + max-height: 90%; + max-width: 90%; +} \ No newline at end of file diff --git a/src/styles/ui/modals.css b/src/styles/ui/modals.css new file mode 100644 index 00000000..60691e84 --- /dev/null +++ b/src/styles/ui/modals.css @@ -0,0 +1,224 @@ +@keyframes bd-backdrop { + to { + opacity: 0.85; + } +} + +@keyframes bd-modal-wrapper { + to { + transform: scale(1); + opacity: 1; + } +} + +@keyframes bd-backdrop-closing { + to { + opacity: 0; + } +} + +@keyframes bd-modal-wrapper-closing { + to { + transform: scale(0.7); + opacity: 0; + } +} + +.bd-backdrop { + animation: bd-backdrop 250ms ease; + animation-fill-mode: forwards; + opacity: 0; + background-color: rgb(0, 0, 0); + transform: translateZ(0); +} + +.bd-modal-wrapper.closing .bd-backdrop { + animation: bd-backdrop-closing 200ms linear; + animation-fill-mode: forwards; + animation-delay: 50ms; + opacity: 0.85; +} + +.bd-modal-wrapper .bd-modal { + animation: bd-modal-wrapper 250ms cubic-bezier(0.175, 0.885, 0.32, 1.275); + animation-fill-mode: forwards; + transform: scale(0.7); + transform-origin: 50% 50%; + display: flex; + align-items: center; + box-sizing: border-box; + contain: content; + justify-content: center; + top: 0; + left: 0; + bottom: 0; + right: 0; + opacity: 0; + pointer-events: none; + position: absolute; + z-index: 1000; +} + +.bd-modal-wrapper.closing .bd-modal { + animation: bd-modal-wrapper-closing 250ms cubic-bezier(0.19, 1, 0.22, 1); + animation-fill-mode: forwards; + opacity: 1; + transform: scale(1); +} + +.bd-modal-wrapper .bd-modal-inner { + display: flex; + contain: layout; + flex-direction: column; + pointer-events: auto; + border: 1px solid rgba(28, 36, 43, 0.6); + border-radius: 5px; + box-shadow: 0 2px 10px 0 rgba(0, 0, 0, 0.2); + overflow: hidden; + max-height: 660px; + min-height: 200px; + width: 440px; + user-select: text; +} + +.bd-modal-wrapper .bd-content-modal .bd-modal-inner { + height: 500px; + width: 700px; +} + +.bd-modal-wrapper .header { + background-color: #35393e; + box-shadow: 0 2px 3px 0 rgba(0, 0, 0, 0.2); + padding: 12px 20px; + z-index: 1; + color: #fff; + font-size: 16px; + font-weight: 700; + line-height: 19px; +} + +.bd-modal-wrapper .bd-modal-body { + background-color: #36393f; + color: #fff; + overflow: hidden; + display: flex; + flex-direction: column; + flex: 1; + contain: layout; + position: relative; +} + +.bd-modal-wrapper .scroller { + padding: 10px; + overflow-y: auto; +} + +.bd-modal-wrapper .bd-content-modal .bd-modal-body { + padding: 0; +} + +.bd-modal-wrapper .footer { + display: flex; + justify-content: flex-end; + padding: 10px 20px; +} + +.bd-modal-wrapper .footer button { + min-height: 32px; + min-width: 60px; + align-items: center; + display: flex; + font-size: 14px; + font-weight: 500; + justify-content: center; + line-height: 16px; + padding: 2px 16px; + user-select: none; +} + +.bd-modal-wrapper .tab-bar-container { + align-items: center; + border-bottom: 0; + background: rgba(0, 0, 0, 0.2); + box-shadow: 0 2px 3px 0 rgba(0, 0, 0, 0.1); + display: flex; + flex-direction: row; + justify-content: space-between; + margin-bottom: 15px; +} + +.bd-modal-wrapper .tab-bar.TOP { + margin: 0; + border: 0; + display: flex; + flex-direction: row; + justify-content: space-between; + align-items: center; +} + +.bd-modal-wrapper .tab-bar-container .tab-bar-item { + margin: 0 15px; + padding: 15px 0; + color: #fff; + opacity: 0.5; + transition: opacity 200ms ease; + border-bottom: 2px solid transparent; +} + +.bd-modal-wrapper .tab-bar-container .tab-bar-item:hover { + border-color: #fff; + cursor: pointer; +} + +.bd-modal-wrapper .tab-bar-container .tab-bar-item.selected { + opacity: 1; + border-color: #fff; +} + +.bd-modal-wrapper .tab-bar.TOP .tab-bar-item + .tab-bar-item { + margin: 0; +} + +.bd-modal-wrapper .table-header { + display: flex; + justify-content: space-between; + color: #fff; + font-weight: 700; + padding-bottom: 10px; + margin: 3px 15px 0 15px; + border-bottom: 1px solid #fff; + font-size: 14px; +} + +.bd-modal-wrapper .table-column { + width: 25%; + word-wrap: break-word; +} + +.bd-modal-wrapper .table-column.column-error { + width: 50%; +} + +.bd-modal-wrapper .errors { + display: flex; + flex-direction: column; + font-size: 14px; + padding: 0 5px; +} + +.bd-modal-wrapper .error { + display: flex; + color: #fff; + border-bottom: 1px solid rgba(255, 255, 255, 0.25); + padding: 15px 0; + align-items: center; +} + +.bd-modal-wrapper .error-link { + color: #3e82e5; + font-weight: 500; +} + +.bd-modal-wrapper .bd-content-modal .scroller { + padding-top: 0; +} \ No newline at end of file diff --git a/src/styles/ui/sidebar.css b/src/styles/ui/sidebar.css new file mode 100644 index 00000000..2eb58e2d --- /dev/null +++ b/src/styles/ui/sidebar.css @@ -0,0 +1,17 @@ +.bd-sidebar-header { + display: flex; + justify-content: space-between; +} + +.bd-sidebar-header .bd-changelog-button { + height: 16px; +} + +.bd-sidebar-header .bd-icon { + cursor: pointer; + fill: #72767d; +} + +.bd-sidebar-header .bd-icon:hover { + fill: #fff; +} diff --git a/src/styles/ui/toasts.css b/src/styles/ui/toasts.css new file mode 100644 index 00000000..70372bb6 --- /dev/null +++ b/src/styles/ui/toasts.css @@ -0,0 +1,91 @@ +.bd-toasts { + position: fixed; + display: flex; + top: 0; + flex-direction: column; + align-items: center; + justify-content: flex-end; + pointer-events: none; + z-index: 4000; +} + +@keyframes bd-toast-up { + from { + transform: translateY(0); + opacity: 0; + } +} + +.bd-toast { + animation: bd-toast-up 300ms ease; + transform: translateY(-10px); + background: #36393f; + padding: 10px; + border-radius: 5px; + box-shadow: 0 0 0 1px rgba(32, 34, 37, 0.6), 0 2px 10px 0 rgba(0, 0, 0, 0.2); + font-weight: 500; + color: #fff; + font-size: 14px; + opacity: 1; + margin-top: 10px; + pointer-events: none; + user-select: none; +} + +@keyframes bd-toast-down { + to { + transform: translateY(0); + opacity: 0; + } +} + +.bd-toast.closing { + animation: bd-toast-down 200ms ease; + animation-fill-mode: forwards; + opacity: 1; + transform: translateY(-10px); +} + +.bd-toast.icon { + padding-left: 30px; + background-size: 20px 20px; + background-repeat: no-repeat; + background-position: 6px 50%; +} + +.bd-toast.toast-info { + background-color: #4a90e2; +} + +.bd-toast.toast-info.icon { + background-image: url("data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjRkZGRkZGIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMSAxNWgtMnYtNmgydjZ6bTAtOGgtMlY3aDJ2MnoiLz48L3N2Zz4="); +} + +.bd-toast.toast-success { + background-color: #43b581; +} + +.bd-toast.toast-success.icon { + background-image: url("data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjRkZGRkZGIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptLTIgMTVsLTUtNSAxLjQxLTEuNDFMMTAgMTQuMTdsNy41OS03LjU5TDE5IDhsLTkgOXoiLz48L3N2Zz4="); +} + +.bd-toast.toast-danger, +.bd-toast.toast-error { + background-color: #f04747; +} + +.bd-toast.toast-danger.icon, +.bd-toast.toast-error.icon { + background-image: url("data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjRkZGRkZGIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTEyIDJDNi40NyAyIDIgNi40NyAyIDEyczQuNDcgMTAgMTAgMTAgMTAtNC40NyAxMC0xMFMxNy41MyAyIDEyIDJ6bTUgMTMuNTlMMTUuNTkgMTcgMTIgMTMuNDEgOC40MSAxNyA3IDE1LjU5IDEwLjU5IDEyIDcgOC40MSA4LjQxIDcgMTIgMTAuNTkgMTUuNTkgNyAxNyA4LjQxIDEzLjQxIDEyIDE3IDE1LjU5eiIvPiAgICA8cGF0aCBkPSJNMCAwaDI0djI0SDB6IiBmaWxsPSJub25lIi8+PC9zdmc+"); +} + +.bd-toast.toast-warning, +.bd-toast.toast-warn { + background-color: #ffa600; + color: white; +} + +.bd-toast.toast-warning.icon, +.bd-toast.toast-warn.icon { + background-image: url("data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjRkZGRkZGIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMSAyMWgyMkwxMiAyIDEgMjF6bTEyLTNoLTJ2LTJoMnYyem0wLTRoLTJ2LTRoMnY0eiIvPjwvc3ZnPg=="); +} \ No newline at end of file diff --git a/src/ui/errorboundary.jsx b/src/ui/errorboundary.jsx index 6f20fe5a..fee9e3fa 100644 --- a/src/ui/errorboundary.jsx +++ b/src/ui/errorboundary.jsx @@ -6,7 +6,7 @@ export default class ErrorBoundary extends React.Component { this.state = {hasError: false}; } - componentDidCatch(error, errorInfo) { + componentDidCatch() { this.setState({hasError: true}); } diff --git a/webpack.config.js b/webpack.config.js index 5fbff39d..0de68013 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -8,10 +8,7 @@ module.exports = { entry: "./src/index.js", output: { filename: "index.js", - path: path.resolve(__dirname, "dist"), - library: "Core", - libraryTarget: "var", - libraryExport: "default" + path: path.resolve(__dirname, "dist") }, externals: { electron: `require("electron")`, @@ -51,7 +48,7 @@ module.exports = { plugins: [ new CircularDependencyPlugin({ // exclude detection of files based on a RegExp - exclude: /a\.js|node_modules/, + exclude: /node_modules/, // add errors to webpack instead of warnings // failOnError: true, // set the current working directory for displaying module paths