`);\n cmi.append(_modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].createElement(`
${_modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].Developer.copySelector}
`));\n cmi.addEventListener(\"click\", () => {\n _modules_modules_js__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");
/***/ }),
/***/ "./src/builtins/developer/debugger.js":
/*!********************************************!*\
!*** ./src/builtins/developer/debugger.js ***!
\********************************************/
/*! exports provided: default */
/***/ (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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYnVpbHRpbnMvZGV2ZWxvcGVyL2RlYnVnZ2VyLmpzP2JkNWUiXSwibmFtZXMiOlsiRGV2ZWxvcGVyTW9kZSIsIkJ1aWx0aW4iLCJuYW1lIiwiY2F0ZWdvcnkiLCJpZCIsImVuYWJsZWQiLCJkb2N1bWVudCIsImFkZEV2ZW50TGlzdGVuZXIiLCJkZWJ1Z0xpc3RlbmVyIiwiZGlzYWJsZWQiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiZSIsIndoaWNoIiwicHJldmVudERlZmF1bHQiLCJzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUVlLG1FQUFJLE1BQU1BLGFBQU4sU0FBNEJDLHdEQUE1QixDQUFvQztBQUNuRCxNQUFJQyxJQUFKLEdBQVc7QUFBQyxXQUFPLFVBQVA7QUFBbUI7O0FBQy9CLE1BQUlDLFFBQUosR0FBZTtBQUFDLFdBQU8sV0FBUDtBQUFvQjs7QUFDcEMsTUFBSUMsRUFBSixHQUFTO0FBQUMsV0FBTyxnQkFBUDtBQUF5Qjs7QUFFbkNDLFNBQU8sR0FBRztBQUNOQyxZQUFRLENBQUNDLGdCQUFULENBQTBCLFNBQTFCLEVBQXFDLEtBQUtDLGFBQTFDO0FBQ0g7O0FBRURDLFVBQVEsR0FBRztBQUNQSCxZQUFRLENBQUNJLG1CQUFULENBQTZCLFNBQTdCLEVBQXdDLEtBQUtGLGFBQTdDO0FBQ0g7O0FBRURBLGVBQWEsQ0FBQ0csQ0FBRCxFQUFJO0FBQ2IsUUFBSUEsQ0FBQyxDQUFDQyxLQUFGLEtBQVksR0FBWixJQUFtQkQsQ0FBQyxDQUFDQyxLQUFGLElBQVcsR0FBbEMsRUFBdUM7QUFBRTtBQUNyQyxlQURtQyxDQUN6Qjs7QUFDVkQsT0FBQyxDQUFDRSxjQUFGO0FBQ0FGLE9BQUMsQ0FBQ0csd0JBQUY7QUFDRjtBQUNMOztBQW5Ca0QsQ0FBeEMsRUFBZiIsImZpbGUiOiIuL3NyYy9idWlsdGlucy9kZXZlbG9wZXIvZGVidWdnZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQnVpbHRpbiBmcm9tIFwiLi4vLi4vc3RydWN0cy9idWlsdGluXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBuZXcgY2xhc3MgRGV2ZWxvcGVyTW9kZSBleHRlbmRzIEJ1aWx0aW4ge1xyXG4gICAgZ2V0IG5hbWUoKSB7cmV0dXJuIFwiRGVidWdnZXJcIjt9XHJcbiAgICBnZXQgY2F0ZWdvcnkoKSB7cmV0dXJuIFwiZGV2ZWxvcGVyXCI7fVxyXG4gICAgZ2V0IGlkKCkge3JldHVybiBcImRlYnVnZ2VySG90a2V5XCI7fVxyXG5cclxuICAgIGVuYWJsZWQoKSB7XHJcbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwgdGhpcy5kZWJ1Z0xpc3RlbmVyKTtcclxuICAgIH1cclxuXHJcbiAgICBkaXNhYmxlZCgpIHtcclxuICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLCB0aGlzLmRlYnVnTGlzdGVuZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIGRlYnVnTGlzdGVuZXIoZSkge1xyXG4gICAgICAgIGlmIChlLndoaWNoID09PSAxMTkgfHwgZS53aGljaCA9PSAxMTgpIHsgLy9GOFxyXG4gICAgICAgICAgICBkZWJ1Z2dlcjsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1kZWJ1Z2dlclxyXG4gICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgIH1cclxuICAgIH1cclxufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/builtins/developer/debugger.js\n");
/***/ }),
/***/ "./src/builtins/developer/reactdevtools.js":
/*!*************************************************!*\
!*** ./src/builtins/developer/reactdevtools.js ***!
\*************************************************/
/*! exports provided: default */
/***/ (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_modules_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../modules/modules.js */ \"./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_modules_js__WEBPACK_IMPORTED_MODULE_2__[\"Strings\"].ReactDevTools.notFound, _modules_modules_js__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/NzkzNyJdLCJuYW1lcyI6WyJlbGVjdHJvbiIsInJlcXVpcmUiLCJmcyIsInBhdGgiLCJCcm93c2VyV2luZG93IiwicmVtb3RlIiwiUmVhY3REZXZUb29scyIsIkJ1aWx0aW4iLCJuYW1lIiwiY2F0ZWdvcnkiLCJpZCIsImluaXRpYWxpemUiLCJmaW5kRXh0ZW5zaW9uIiwiZXh0ZW5zaW9uUGF0aCIsInByb2Nlc3MiLCJwbGF0Zm9ybSIsInJlc29sdmUiLCJlbnYiLCJMT0NBTEFQUERBVEEiLCJIT01FIiwiZXhpc3RzU3luYyIsInZlcnNpb25zIiwicmVhZGRpclN5bmMiLCJsZW5ndGgiLCJpc0V4dGVuc2lvbkluc3RhbGxlZCIsImVuYWJsZWQiLCJNb2RhbHMiLCJhbGVydCIsIlN0cmluZ3MiLCJub3RGb3VuZCIsIm5vdEZvdW5kRGV0YWlscyIsImRpZEluc3RhbGwiLCJhZGREZXZUb29sc0V4dGVuc2lvbiIsImxvZyIsImVycm9yIiwiZGlzYWJsZWQiLCJyZW1vdmVEZXZUb29sc0V4dGVuc2lvbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7O0FBRUEsTUFBTUEsUUFBUSxHQUFHQyxtQkFBTyxDQUFDLDBCQUFELENBQXhCOztBQUNBLE1BQU1DLEVBQUUsR0FBR0QsbUJBQU8sQ0FBQyxjQUFELENBQWxCOztBQUNBLE1BQU1FLElBQUksR0FBR0YsbUJBQU8sQ0FBQyxrQkFBRCxDQUFwQjs7QUFFQSxNQUFNRyxhQUFhLEdBQUdKLFFBQVEsQ0FBQ0ssTUFBVCxDQUFnQkQsYUFBdEM7QUFFZSxtRUFBSSxNQUFNRSxhQUFOLFNBQTRCQyx3REFBNUIsQ0FBb0M7QUFDbkQsTUFBSUMsSUFBSixHQUFXO0FBQUMsV0FBTyxlQUFQO0FBQXdCOztBQUNwQyxNQUFJQyxRQUFKLEdBQWU7QUFBQyxXQUFPLFdBQVA7QUFBb0I7O0FBQ3BDLE1BQUlDLEVBQUosR0FBUztBQUFDLFdBQU8sZUFBUDtBQUF3Qjs7QUFFbENDLFlBQVUsR0FBRztBQUNULFVBQU1BLFVBQU47QUFDQSxTQUFLQyxhQUFMO0FBQ0g7O0FBRURBLGVBQWEsR0FBRztBQUNaLFFBQUlDLGFBQWEsR0FBRyxFQUFwQjtBQUNBLFFBQUlDLE9BQU8sQ0FBQ0MsUUFBUixLQUFxQixPQUF6QixFQUFrQ0YsYUFBYSxHQUFHVixJQUFJLENBQUNhLE9BQUwsQ0FBYUYsT0FBTyxDQUFDRyxHQUFSLENBQVlDLFlBQXpCLEVBQXVDLHlCQUF2QyxDQUFoQixDQUFsQyxLQUNLLElBQUlKLE9BQU8sQ0FBQ0MsUUFBUixLQUFxQixPQUF6QixFQUFrQ0YsYUFBYSxHQUFHVixJQUFJLENBQUNhLE9BQUwsQ0FBYUYsT0FBTyxDQUFDRyxHQUFSLENBQVlFLElBQXpCLEVBQStCLHVCQUEvQixDQUFoQixDQUFsQyxLQUNBLElBQUlMLE9BQU8sQ0FBQ0MsUUFBUixLQUFxQixRQUF6QixFQUFtQ0YsYUFBYSxHQUFHVixJQUFJLENBQUNhLE9BQUwsQ0FBYUYsT0FBTyxDQUFDRyxHQUFSLENBQVlFLElBQXpCLEVBQStCLDJDQUEvQixDQUFoQixDQUFuQyxLQUNBTixhQUFhLEdBQUdWLElBQUksQ0FBQ2EsT0FBTCxDQUFhRixPQUFPLENBQUNHLEdBQVIsQ0FBWUUsSUFBekIsRUFBK0Isa0JBQS9CLENBQWhCO0FBQ0xOLGlCQUFhLElBQUksdURBQWpCOztBQUNBLFFBQUlYLEVBQUUsQ0FBQ2tCLFVBQUgsQ0FBY1AsYUFBZCxDQUFKLEVBQWtDO0FBQzlCLFlBQU1RLFFBQVEsR0FBR25CLEVBQUUsQ0FBQ29CLFdBQUgsQ0FBZVQsYUFBZixDQUFqQjtBQUNBQSxtQkFBYSxHQUFHVixJQUFJLENBQUNhLE9BQUwsQ0FBYUgsYUFBYixFQUE0QlEsUUFBUSxDQUFDQSxRQUFRLENBQUNFLE1BQVQsR0FBa0IsQ0FBbkIsQ0FBcEMsQ0FBaEI7QUFDSDs7QUFDRCxTQUFLVixhQUFMLEdBQXFCQSxhQUFyQjtBQUNBLFNBQUtXLG9CQUFMLEdBQTRCdEIsRUFBRSxDQUFDa0IsVUFBSCxDQUFjUCxhQUFkLENBQTVCO0FBQ0g7O0FBRURZLFNBQU8sR0FBRztBQUNOLFFBQUksQ0FBQyxLQUFLRCxvQkFBVixFQUFnQyxLQUFLWixhQUFMO0FBQ2hDLFFBQUksQ0FBQyxLQUFLWSxvQkFBVixFQUFnQyxPQUFPRSxrREFBTSxDQUFDQyxLQUFQLENBQWFDLDJEQUFPLENBQUN0QixhQUFSLENBQXNCdUIsUUFBbkMsRUFBNkNELDJEQUFPLENBQUN0QixhQUFSLENBQXNCd0IsZUFBbkUsQ0FBUDtBQUVoQyxVQUFNQyxVQUFVLEdBQUczQixhQUFhLENBQUM0QixvQkFBZCxDQUFtQyxLQUFLbkIsYUFBeEMsQ0FBbkI7QUFDQSxRQUFJa0IsVUFBSixFQUFnQixLQUFLRSxHQUFMLENBQVMsd0NBQVQsRUFBaEIsS0FDSyxLQUFLQyxLQUFMLENBQVcsb0RBQVg7QUFDUjs7QUFFREMsVUFBUSxHQUFHO0FBQ1AsUUFBSSxDQUFDLEtBQUtYLG9CQUFWLEVBQWdDO0FBQ2hDcEIsaUJBQWEsQ0FBQ2dDLHVCQUFkLENBQXNDLHVCQUF0QztBQUNIOztBQXJDa0QsQ0FBeEMsRUFBZiIsImZpbGUiOiIuL3NyYy9idWlsdGlucy9kZXZlbG9wZXIvcmVhY3RkZXZ0b29scy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCdWlsdGluIGZyb20gXCIuLi8uLi9zdHJ1Y3RzL2J1aWx0aW5cIjtcclxuaW1wb3J0IE1vZGFscyBmcm9tIFwiLi4vLi4vdWkvbW9kYWxzXCI7XHJcbmltcG9ydCB7U3RyaW5nc30gZnJvbSBcIm1vZHVsZXNcIjtcclxuXHJcbmNvbnN0IGVsZWN0cm9uID0gcmVxdWlyZShcImVsZWN0cm9uXCIpO1xyXG5jb25zdCBmcyA9IHJlcXVpcmUoXCJmc1wiKTtcclxuY29uc3QgcGF0aCA9IHJlcXVpcmUoXCJwYXRoXCIpO1xyXG5cclxuY29uc3QgQnJvd3NlcldpbmRvdyA9IGVsZWN0cm9uLnJlbW90ZS5Ccm93c2VyV2luZG93O1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgbmV3IGNsYXNzIFJlYWN0RGV2VG9vbHMgZXh0ZW5kcyBCdWlsdGluIHtcclxuICAgIGdldCBuYW1lKCkge3JldHVybiBcIlJlYWN0RGV2VG9vbHNcIjt9XHJcbiAgICBnZXQgY2F0ZWdvcnkoKSB7cmV0dXJuIFwiZGV2ZWxvcGVyXCI7fVxyXG4gICAgZ2V0IGlkKCkge3JldHVybiBcInJlYWN0RGV2VG9vbHNcIjt9XHJcblxyXG4gICAgaW5pdGlhbGl6ZSgpIHtcclxuICAgICAgICBzdXBlci5pbml0aWFsaXplKCk7XHJcbiAgICAgICAgdGhpcy5maW5kRXh0ZW5zaW9uKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZmluZEV4dGVuc2lvbigpIHtcclxuICAgICAgICBsZXQgZXh0ZW5zaW9uUGF0aCA9IFwiXCI7XHJcbiAgICAgICAgaWYgKHByb2Nlc3MucGxhdGZvcm0gPT09IFwid2luMzJcIikgZXh0ZW5zaW9uUGF0aCA9IHBhdGgucmVzb2x2ZShwcm9jZXNzLmVudi5MT0NBTEFQUERBVEEsIFwiR29vZ2xlL0Nocm9tZS9Vc2VyIERhdGFcIik7XHJcbiAgICAgICAgZWxzZSBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gXCJsaW51eFwiKSBleHRlbnNpb25QYXRoID0gcGF0aC5yZXNvbHZlKHByb2Nlc3MuZW52LkhPTUUsIFwiLmNvbmZpZy9nb29nbGUtY2hyb21lXCIpO1xyXG4gICAgICAgIGVsc2UgaWYgKHByb2Nlc3MucGxhdGZvcm0gPT09IFwiZGFyd2luXCIpIGV4dGVuc2lvblBhdGggPSBwYXRoLnJlc29sdmUocHJvY2Vzcy5lbnYuSE9NRSwgXCJMaWJyYXJ5L0FwcGxpY2F0aW9uIFN1cHBvcnQvR29vZ2xlL0Nocm9tZVwiKTtcclxuICAgICAgICBlbHNlIGV4dGVuc2lvblBhdGggPSBwYXRoLnJlc29sdmUocHJvY2Vzcy5lbnYuSE9NRSwgXCIuY29uZmlnL2Nocm9taXVtXCIpO1xyXG4gICAgICAgIGV4dGVuc2lvblBhdGggKz0gXCIvRGVmYXVsdC9FeHRlbnNpb25zL2Zta2FkbWFwZ29mYWRvcGxqYmpma2FwZGtvaWVuaWhpL1wiO1xyXG4gICAgICAgIGlmIChmcy5leGlzdHNTeW5jKGV4dGVuc2lvblBhdGgpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHZlcnNpb25zID0gZnMucmVhZGRpclN5bmMoZXh0ZW5zaW9uUGF0aCk7XHJcbiAgICAgICAgICAgIGV4dGVuc2lvblBhdGggPSBwYXRoLnJlc29sdmUoZXh0ZW5zaW9uUGF0aCwgdmVyc2lvbnNbdmVyc2lvbnMubGVuZ3RoIC0gMV0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmV4dGVuc2lvblBhdGggPSBleHRlbnNpb25QYXRoO1xyXG4gICAgICAgIHRoaXMuaXNFeHRlbnNpb25JbnN0YWxsZWQgPSBmcy5leGlzdHNTeW5jKGV4dGVuc2lvblBhdGgpO1xyXG4gICAgfVxyXG5cclxuICAgIGVuYWJsZWQoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmlzRXh0ZW5zaW9uSW5zdGFsbGVkKSB0aGlzLmZpbmRFeHRlbnNpb24oKTtcclxuICAgICAgICBpZiAoIXRoaXMuaXNFeHRlbnNpb25JbnN0YWxsZWQpIHJldHVybiBNb2RhbHMuYWxlcnQoU3RyaW5ncy5SZWFjdERldlRvb2xzLm5vdEZvdW5kLCBTdHJpbmdzLlJlYWN0RGV2VG9vbHMubm90Rm91bmREZXRhaWxzKTtcclxuXHJcbiAgICAgICAgY29uc3QgZGlkSW5zdGFsbCA9IEJyb3dzZXJXaW5kb3cuYWRkRGV2VG9vbHNFeHRlbnNpb24odGhpcy5leHRlbnNpb25QYXRoKTtcclxuICAgICAgICBpZiAoZGlkSW5zdGFsbCkgdGhpcy5sb2coXCJTdWNjZXNzZnVsbHkgaW5zdGFsbGVkIHJlYWN0IGRldnRvb2xzLlwiKTtcclxuICAgICAgICBlbHNlIHRoaXMuZXJyb3IoXCJDb3VsZG4ndCBmaW5kIHJlYWN0IGRldnRvb2xzIGluIGNocm9tZSBleHRlbnNpb25zIVwiKTtcclxuICAgIH1cclxuXHJcbiAgICBkaXNhYmxlZCgpIHtcclxuICAgICAgICBpZiAoIXRoaXMuaXNFeHRlbnNpb25JbnN0YWxsZWQpIHJldHVybjtcclxuICAgICAgICBCcm93c2VyV2luZG93LnJlbW92ZURldlRvb2xzRXh0ZW5zaW9uKFwiUmVhY3QgRGV2ZWxvcGVyIFRvb2xzXCIpO1xyXG4gICAgfVxyXG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/builtins/developer/reactdevtools.js\n");
/***/ }),
/***/ "./src/builtins/emotes/emotemenu.js":
/*!******************************************!*\
!*** ./src/builtins/emotes/emotemenu.js ***!
\******************************************/
/*! exports provided: default */
/***/ (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_modules_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../modules/modules.js */ \"./src/modules/modules.js\");\n/* harmony import */ var _tabs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./tabs */ \"./src/builtins/emotes/tabs.js\");\n\n\n\nconst EmojiPicker = _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].find(m => m.type && m.type.displayName == \"ExpressionPicker\");\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 }\n\n enabled() {\n this.before(EmojiPicker, \"type\", (_, [args], ret) => {\n if (args.expressionPickerView == \"emoji\" && this.hideEmojis) args.expressionPickerView = \"gif\";\n });\n this.after(EmojiPicker, \"type\", (_, [args], ret) => {\n const head = _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"Utilities\"].getNestedProp(ret, \"props.children.props.children.1.props.children.0.props.children.props.children\");\n const body = _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"Utilities\"].getNestedProp(ret, \"props.children.props.children.1.props.children\");\n if (!head || !body) return ret;\n const selected = args.expressionPickerView;\n const currentTab = _tabs__WEBPACK_IMPORTED_MODULE_2__[\"default\"].find(e => e.id === selected);\n let tabProps = head[0].props;\n head.push(..._tabs__WEBPACK_IMPORTED_MODULE_2__[\"default\"].map(e => _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(\"div\", {\n id: e.id + \"-tab\",\n role: \"tab\",\n \"aria-selected\": selected == e.id,\n className: tabProps.className\n }, _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(tabProps.children.type, {\n viewType: e.id,\n isActive: selected == e.id,\n setActiveView: tabProps.children.props.setActiveView\n }, e.label))));\n if (currentTab) body[2] = currentTab.element();\n if (this.hideEmojis) head.splice(head.findIndex(e => e.props.id == \"emoji-picker-tab\"), 1);\n });\n }\n\n disabled() {\n this.unpatchAll();\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYnVpbHRpbnMvZW1vdGVzL2Vtb3RlbWVudS5qcz9mMjJlIl0sIm5hbWVzIjpbIkVtb2ppUGlja2VyIiwiV2VicGFja01vZHVsZXMiLCJmaW5kIiwibSIsInR5cGUiLCJkaXNwbGF5TmFtZSIsIkVtb3RlTWVudSIsIkJ1aWx0aW4iLCJuYW1lIiwiY29sbGVjdGlvbiIsImNhdGVnb3J5IiwiaWQiLCJoaWRlRW1vamlzSUQiLCJoaWRlRW1vamlzIiwiZ2V0IiwiY29uc3RydWN0b3IiLCJlbmFibGVkIiwiYmVmb3JlIiwiXyIsImFyZ3MiLCJyZXQiLCJleHByZXNzaW9uUGlja2VyVmlldyIsImFmdGVyIiwiaGVhZCIsIlV0aWxpdGllcyIsImdldE5lc3RlZFByb3AiLCJib2R5Iiwic2VsZWN0ZWQiLCJjdXJyZW50VGFiIiwiVGFicyIsImUiLCJ0YWJQcm9wcyIsInByb3BzIiwicHVzaCIsIm1hcCIsIlJlYWN0IiwiY3JlYXRlRWxlbWVudCIsInJvbGUiLCJjbGFzc05hbWUiLCJjaGlsZHJlbiIsInZpZXdUeXBlIiwiaXNBY3RpdmUiLCJzZXRBY3RpdmVWaWV3IiwibGFiZWwiLCJlbGVtZW50Iiwic3BsaWNlIiwiZmluZEluZGV4IiwiZGlzYWJsZWQiLCJ1bnBhdGNoQWxsIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBLE1BQU1BLFdBQVcsR0FBR0Msa0VBQWMsQ0FBQ0MsSUFBZixDQUFvQkMsQ0FBQyxJQUFJQSxDQUFDLENBQUNDLElBQUYsSUFBVUQsQ0FBQyxDQUFDQyxJQUFGLENBQU9DLFdBQVAsSUFBc0Isa0JBQXpELENBQXBCO0FBQ2UsbUVBQUksTUFBTUMsU0FBTixTQUF3QkMsd0RBQXhCLENBQWdDO0FBQy9DLE1BQUlDLElBQUosR0FBVztBQUFDLFdBQU8sV0FBUDtBQUFvQjs7QUFDaEMsTUFBSUMsVUFBSixHQUFpQjtBQUFDLFdBQU8sUUFBUDtBQUFpQjs7QUFDbkMsTUFB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b3J0IEJ1aWx0aW4gZnJvbSBcIi4uLy4uL3N0cnVjdHMvYnVpbHRpblwiO1xyXG5pbXBvcnQge1V0aWxpdGllcywgV2VicGFja01vZHVsZXMsIFJlYWN0fSBmcm9tIFwibW9kdWxlc1wiO1xyXG5pbXBvcnQgVGFicyBmcm9tIFwiLi90YWJzXCI7XHJcbmNvbnN0IEVtb2ppUGlja2VyID0gV2VicGFja01vZHVsZXMuZmluZChtID0+IG0udHlwZSAmJiBtLnR5cGUuZGlzcGxheU5hbWUgPT0gXCJFeHByZXNzaW9uUGlja2VyXCIpO1xyXG5leHBvcnQgZGVmYXVsdCBuZXcgY2xhc3MgRW1vdGVNZW51IGV4dGVuZHMgQnVpbHRpbiB7XHJcbiAgICBnZXQgbmFtZSgpIHtyZXR1cm4gXCJFbW90ZU1lbnVcIjt9XHJcbiAgICBnZXQgY29sbGVjdGlvbigpIHtyZXR1cm4gXCJlbW90ZXNcIjt9XHJcbiAgICBnZXQgY2F0ZWdvcnkoKSB7cmV0dXJuIFwiZ2VuZXJhbFwiO31cclxuICAgIGdldCBpZCgpIHtyZXR1cm4gXCJlbW90ZU1lbnVcIjt9XHJcbiAgICBnZXQgaGlkZUVtb2ppc0lEKCkge3JldHVybiBcImhpZGVFbW9qaU1lbnVcIjt9XHJcbiAgICBnZXQgaGlkZUVtb2ppcygpIHtyZXR1cm4gdGhpcy5nZXQodGhpcy5oaWRlRW1vamlzSUQpO31cclxuXHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgfVxyXG4gICAgZW5hYmxlZCgpIHtcclxuICAgICAgICB0aGlzLmJlZm9yZShFbW9qaVBpY2tlciwgXCJ0eXBlXCIsIChfLCBbYXJnc10sIHJldCkgPT4ge1xyXG4gICAgICAgICAgICBpZihhcmdzLmV4cHJlc3Npb25QaWNrZXJWaWV3ID09IFwiZW1vamlcIiAmJiB0aGlzLmhpZGVFbW9qaXMpIGFyZ3MuZXhwcmVzc2lvblBpY2tlclZpZXcgPSBcImdpZlwiO1xyXG4gICAgICAgIH0pOyBcclxuXHRcdHRoaXMuYWZ0ZXIoRW1vamlQaWNrZXIsIFwidHlwZVwiLCAoXywgW2FyZ3NdLCByZXQpID0+IHtcclxuXHRcdFx0Y29uc3QgaGVhZCA9IFV0aWxpdGllcy5nZXROZXN0ZWRQcm9wKHJldCwgXCJwcm9wcy5jaGlsZHJlbi5wcm9wcy5jaGlsZHJlbi4xLnByb3BzLmNoaWxkcmVuLjAucHJvcHMuY2hpbGRyZW4ucHJvcHMuY2hpbGRyZW5cIik7XHJcblx0XHRcdGNvbnN0IGJvZHkgPSBVdGlsaXRpZXMuZ2V0TmVzdGVkUHJvcChyZXQsIFwicHJvcHMuY2hpbGRyZW4ucHJvcHMuY2hpbGRyZW4uMS5wcm9wcy5jaGlsZHJlblwiKTtcclxuXHRcdFx0aWYoIWhlYWQgfHwgIWJvZHkpIHJldHVybiByZXQ7XHJcblx0XHRcdGNvbnN0IHNlbGVjdGVkID0gYXJncy5leHByZXNzaW9uUGlja2VyVmlldztcclxuICAgICAgICAgICAgY29uc3QgY3VycmVudFRhYiA9IFRhYnMuZmluZChlID0+IGUuaWQgPT09IHNlbGVjdGVkKTtcclxuXHRcdFx0bGV0IHRhYlByb3BzID0gaGVhZFswXS5wcm9wcztcclxuXHRcdFx0aGVhZC5wdXNoKFxyXG4gICAgICAgICAgICAgICAgLi4uVGFicy5tYXAoZSA9PiBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtcclxuICAgICAgICAgICAgICAgICAgICBpZDogZS5pZCtcIi10YWJcIixcclxuICAgICAgICAgICAgICAgICAgICByb2xlOiBcInRhYlwiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiYXJpYS1zZWxlY3RlZFwiOiBzZWxlY3RlZCA9PSBlLmlkLFxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogdGFiUHJvcHMuY2xhc3NOYW1lLFxyXG4gICAgICAgICAgICAgICAgfSwgUmVhY3QuY3JlYXRlRWxlbWVudCh0YWJQcm9wcy5jaGlsZHJlbi50eXBlLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmlld1R5cGU6IGUuaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgaXNBY3RpdmU6IHNlbGVjdGVkID09IGUuaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgc2V0QWN0aXZlVmlldzogdGFiUHJvcHMuY2hpbGRyZW4ucHJvcHMuc2V0QWN0aXZlVmlld1xyXG4gICAgICAgICAgICAgICAgfSwgZS5sYWJlbCkpXHJcbiAgICAgICAgICAgICkpO1xyXG4gICAgICAgICAgICBpZihjdXJyZW50VGFiKSBib2R5WzJdID0gY3VycmVudFRhYi5lbGVtZW50KCk7XHJcbiAgICAgICAgICAgIGlmKHRoaXMuaGlkZUVtb2ppcykgaGVhZC5zcGxpY2UoaGVhZC5maW5kSW5kZXgoZT0+ZS5wcm9wcy5pZCA9PSBcImVtb2ppLXBpY2tlci10YWJcIiksIDEpO1xyXG5cdFx0fSlcclxuXHR9XHJcblxyXG4gICAgZGlzYWJsZWQoKSB7XHJcbiAgICAgICAgdGhpcy51bnBhdGNoQWxsKCk7XHJcbiAgICB9XHJcblxyXG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/builtins/emotes/emotemenu.js\n");
/***/ }),
/***/ "./src/builtins/emotes/emotes.js":
/*!***************************************!*\
!*** ./src/builtins/emotes/emotes.js ***!
\***************************************/
/*! exports provided: default */
/***/ (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_data_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../data/data.js */ \"./src/data/data.js\");\n/* harmony import */ var _modules_modules_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../modules/modules.js */ \"./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_modules_js__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_modules_js__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_modules_js__WEBPACK_IMPORTED_MODULE_2__[\"Utilities\"].repoUrl(`assets/emotes/${category.toLowerCase()}.json`);\n }\n\n initialize() {\n super.initialize();\n const storedFavorites = _modules_modules_js__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_modules_js__WEBPACK_IMPORTED_MODULE_2__[\"Settings\"].registerCollection(\"emotes\", \"Emotes\", _data_data_js__WEBPACK_IMPORTED_MODULE_1__[\"EmoteConfig\"], {\n title: _modules_modules_js__WEBPACK_IMPORTED_MODULE_2__[\"Strings\"].Emotes.clearEmotes,\n onClick: this.resetEmotes\n });\n await this.getBlacklist();\n await this.loadEmoteData();\n _modules_modules_js__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].on(\"emotes-favorite-added\", this.addFavorite);\n _modules_modules_js__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].on(\"emotes-favorite-removed\", this.removeFavorite);\n _modules_modules_js__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].on(\"setting-updated\", this.onCategoryToggle);\n this.patchMessageContent();\n }\n\n disabled() {\n _modules_modules_js__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].off(\"setting-updated\", this.onCategoryToggle);\n _modules_modules_js__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].off(\"emotes-favorite-added\", this.addFavorite);\n _modules_modules_js__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].off(\"emotes-favorite-removed\", this.removeFavorite);\n _modules_modules_js__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_modules_js__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_modules_js__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_modules_js__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_modules_js__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_modules_js__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_modules_js__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_modules_js__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_modules_js__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_modules_js__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_modules_js__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_modules_js__WEBPACK_IMPORTED_MODULE_2__[\"Events\"].dispatch(\"emotes-loaded\");\n _ui_toasts__WEBPACK_IMPORTED_MODULE_4__[\"default\"].show(_modules_modules_js__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_modules_js__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].saveEmoteData(category, parsedData);\n _modules_modules_js__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_modules_js__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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYnVpbHRpbnMvZW1vdGVzL2Vtb3Rlcy5qcz9jNGNjIl0sIm5hbWVzIjpbInJlcXVlc3QiLCJyZXF1aXJlIiwiRW1vdGVVUkxzIiwiVHdpdGNoR2xvYmFsIiwiRm9ybWF0dGFibGVTdHJpbmciLCJUd2l0Y2hTdWJzY3JpYmVyIiwiRnJhbmtlckZhY2VaIiwiQlRUViIsIkVtb3RlcyIsImJsYWNrbGlzdCIsIm92ZXJyaWRlcyIsIm1vZGlmaWVycyIsIkVtb3RlTW9kdWxlIiwiQnVpbHRpbiIsIm5hbWUiLCJjb2xsZWN0aW9uIiwiY2F0ZWdvcnkiLCJpZCIsImNhdGVnb3JpZXMiLCJPYmplY3QiLCJrZXlzIiwiZmlsdGVyIiwiayIsImlzQ2F0ZWdvcnlFbmFibGVkIiwic2hvdWxkRG93bmxvYWQiLCJTZXR0aW5ncyIsImdldCIsInRvTG93ZXJDYXNlIiwiTWVzc2FnZUNvbXBvbmVudCIsIldlYnBhY2tNb2R1bGVzIiwiZmluZCIsIm0iLCJkZWZhdWx0IiwiZGlzcGxheU5hbWUiLCJmYXZvcml0ZXMiLCJmYXZvcml0ZUVtb3RlcyIsImdldFVybCIsImZvcm1hdCIsImdldENhdGVnb3J5IiwiZ2V0UmVtb3RlRmlsZSIsIlV0aWxpdGllcyIsInJlcG9VcmwiLCJpbml0aWFsaXplIiwic3RvcmVkRmF2b3JpdGVzIiwiRGF0YVN0b3JlIiwiZ2V0QkREYXRhIiwiYWRkRmF2b3JpdGUiLCJiaW5kIiwicmVtb3ZlRmF2b3JpdGUiLCJvbkNhdGVnb3J5VG9nZ2xlIiwicmVzZXRFbW90ZXMiLCJlbmFibGVkIiwicmVnaXN0ZXJDb2xsZWN0aW9uIiwiRW1vdGVDb25maWciLCJ0aXRsZSIsIlN0cmluZ3MiLCJjbGVhckVtb3RlcyIsIm9uQ2xpY2siLCJnZXRCbGFja2xpc3QiLCJsb2FkRW1vdGVEYXRhIiwiRXZlbnRzIiwib24iLCJwYXRjaE1lc3NhZ2VDb250ZW50IiwiZGlzYWJsZWQiLCJvZmYiLCJyZW1vdmVDb2xsZWN0aW9uIiwiZW1wdHlFbW90ZXMiLCJjYW5jZWxFbW90ZVJlbmRlciIsImNhdCIsInVubG9hZEVtb3RlRGF0YSIsInVybCIsImhhc093blByb3BlcnR5Iiwic2F2ZUZhdm9yaXRlcyIsImlzRmF2b3JpdGUiLCJzZXRCRERhdGEiLCJhc3NpZ24iLCJiZWZvcmUiLCJ0aGlzT2JqIiwiYXJncyIsIm5vZGVzIiwiY2hpbGRyZW5NZXNzYWdlQ29udGVudCIsInByb3BzIiwiY29udGVudCIsImxlbmd0aCIsIm4iLCJub2RlIiwid29yZHMiLCJzcGxpdCIsImMiLCJjbGVuIiwidyIsIndsZW4iLCJlbW90ZSIsImVtb3RlU3BsaXQiLCJlbW90ZU5hbWUiLCJlbW90ZU1vZGlmaWVyIiwiZW1vdGVPdmVycmlkZSIsInNsaWNlIiwiaW5jbHVkZXMiLCJjdXJyZW50IiwicmVzdWx0cyIsIm1hdGNoIiwiUmVnRXhwIiwiZXNjYXBlIiwicHJlIiwic3Vic3RyaW5nIiwiaW5kZXgiLCJwb3N0IiwiZW1vdGVDb21wb25lbnQiLCJEaXNjb3JkTW9kdWxlcyIsIlJlYWN0IiwiY3JlYXRlRWxlbWVudCIsIkJERW1vdGUiLCJtb2RpZmllciIsInNwbGljZSIsIm9ubHlFbW90ZXMiLCJldmVyeSIsInIiLCJyZXBsYWNlIiwidHlwZSIsImNoaWxkcmVuIiwiZW1vamlOYW1lIiwianVtYm9hYmxlIiwiZXhpc3RzIiwiZW1vdGVzRXhpc3QiLCJ2YWxpZCIsImlzQ2FjaGVWYWxpZCIsInVzZUNhY2hlIiwibGlzdCIsImdldEVtb3RlRGF0YSIsImRvd25sb2FkRW1vdGVzIiwicHVzaCIsImVyciIsIlByb21pc2UiLCJyZXNvbHZlIiwiZXRhZyIsImdldENhY2hlSGFzaCIsImhlYWQiLCJoZWFkZXJzIiwicmVzcCIsInN0YXR1c0NvZGUiLCJBcnJheSIsImlzQXJyYXkiLCJhbGwiLCJtYXAiLCJUb2FzdHMiLCJzaG93IiwibG9hZGluZyIsImVtb3Rlc0xvYWRlZCIsImRhdGEiLCJsb2ciLCJjYWNoZWREYXRhIiwiaGFzRGF0YSIsInNldFRpbWVvdXQiLCJkaXNwYXRjaCIsImxvYWRlZCIsIm9wdGlvbnMiLCJ0aW1lb3V0IiwianNvbiIsImVycm9yIiwicmVzcG9uc2UiLCJwYXJzZWREYXRhIiwic3RhY2t0cmFjZSIsInNhdmVFbW90ZURhdGEiLCJzZXRDYWNoZUhhc2giLCJpbnZhbGlkYXRlQ2FjaGUiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUNBLE1BQU1BLE9BQU8sR0FBR0MsbUJBQU8sQ0FBQyx3QkFBRCxDQUF2Qjs7QUFFQSxNQUFNQyxTQUFTLEdBQUc7QUFDZEMsY0FBWSxFQUFFLElBQUlDLHVEQUFKLENBQXVCLHNEQUF2QixDQURBO0FBRWRDLGtCQUFnQixFQUFFLElBQUlELHVEQUFKLENBQXVCLHNEQUF2QixDQUZKO0FBR2RFLGNBQVksRUFBRSxJQUFJRix1REFBSixDQUF1QixnREFBdkIsQ0FIQTtBQUlkRyxNQUFJLEVBQUUsSUFBSUgsdURBQUosQ0FBdUIsMkNBQXZCO0FBSlEsQ0FBbEI7QUFPQSxNQUFNSSxNQUFNLEdBQUc7QUFDWEwsY0FBWSxFQUFFLEVBREg7QUFFWEUsa0JBQWdCLEVBQUUsRUFGUDtBQUdYRSxNQUFJLEVBQUUsRUFISztBQUlYRCxjQUFZLEVBQUU7QUFKSCxDQUFmO0FBT0EsTUFBTUcsU0FBUyxHQUFHLEVBQWxCO0FBQ0EsTUFBTUMsU0FBUyxHQUFHLENBQUMsUUFBRCxFQUFXLFlBQVgsRUFBeUIsTUFBekIsRUFBaUMsS0FBakMsQ0FBbEI7QUFDQSxNQUFNQyxTQUFTLEdBQUcsQ0FBQyxNQUFELEVBQVMsTUFBVCxFQUFpQixPQUFqQixFQUEwQixPQUExQixFQUFtQyxPQUFuQyxFQUE0QyxPQUE1QyxFQUFxRCxPQUFyRCxFQUE4RCxPQUE5RCxFQUF1RSxJQUF2RSxFQUE2RSxJQUE3RSxFQUFtRixJQUFuRixFQUF5RixPQUF6RixFQUFrRyxRQUFsRyxFQUE0RyxRQUE1RyxFQUFzSCxNQUF0SCxDQUFsQjtBQUVlLG1FQUFJLE1B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QTtBQUNBIiwiZmlsZSI6Ii4vc3JjL2J1aWx0aW5zL2Vtb3Rlcy9lbW90ZXMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQnVpbHRpbiBmcm9tIFwiLi4vLi4vc3RydWN0cy9idWlsdGluXCI7XHJcblxyXG5pbXBvcnQge0Vtb3RlQ29uZmlnfSBmcm9tIFwiZGF0YVwiO1xyXG5pbXBvcnQge1V0aWxpdGllcywgV2VicGFja01vZHVsZXMsIERhdGFTdG9yZSwgRGlzY29yZE1vZHVsZXMsIEV2ZW50cywgU2V0dGluZ3MsIFN0cmluZ3N9IGZyb20gXCJtb2R1bGVzXCI7XHJcbmltcG9ydCBCREVtb3RlIGZyb20gXCIuLi8uLi91aS9lbW90ZVwiO1xyXG5pbXBvcnQgVG9hc3RzIGZyb20gXCIuLi8uLi91aS90b2FzdHNcIjtcclxuaW1wb3J0IEZvcm1hdHRhYmxlU3RyaW5nIGZyb20gXCIuLi8uLi9zdHJ1Y3RzL3N0cmluZ1wiO1xyXG5jb25zdCByZXF1ZXN0ID0gcmVxdWlyZShcInJlcXVlc3RcIik7XHJcblxyXG5jb25zdCBFbW90ZVVSTHMgPSB7XHJcbiAgICBUd2l0Y2hHbG9iYWw6IG5ldyBGb3JtYXR0YWJsZVN0cmluZyhgaHR0cHM6Ly9zdGF0aWMtY2RuLmp0dm53Lm5ldC9lbW90aWNvbnMvdjEve3tpZH19LzEuMGApLFxyXG4gICAgVHdpdGNoU3Vic2NyaWJlcjogbmV3IEZvcm1hdHRhYmxlU3RyaW5nKGBodHRwczovL3N0YXRpYy1jZG4uanR2bncubmV0L2Vtb3RpY29ucy92MS97e2lkfX0vMS4wYCksXHJcbiAgICBGcmFua2VyRmFjZVo6IG5ldyBGb3JtYXR0YWJsZVN0cmluZyhgaHR0cHM6Ly9jZG4uZnJhbmtlcmZhY2V6LmNvbS9lbW90aWNvbi97e2lkfX0vMWApLFxyXG4gICAgQlRUVjogbmV3IEZvcm1hdHRhYmxlU3RyaW5nKGBodHRwczovL2Nkbi5iZXR0ZXJ0dHYubmV0L2Vtb3RlL3t7aWR9fS8xeGApLFxyXG59O1xyXG5cclxuY29uc3QgRW1vdGVzID0ge1xyXG4gICAgVHdpdGNoR2xvYmFsOiB7fSxcclxuICAgIFR3aXRjaFN1YnNjcmliZXI6IHt9LFxyXG4gICAgQlRUVjoge30sXHJcbiAgICBGcmFua2VyRmFjZVo6IHt9XHJcbn07XHJcblxyXG5jb25zdCBibGFja2xpc3QgPSBbXTtcclxuY29uc3Qgb3ZlcnJpZGVzID0gW1widHdpdGNoXCIsIFwic3Vic2NyaWJlclwiLCBcImJ0dHZcIiwgXCJmZnpcIl07XHJcbmNvbnN0IG1vZGlmaWVycyA9IFtcImZsaXBcIiwgXCJzcGluXCIsIFwicHVsc2VcIiwgXCJzcGluMlwiLCBcInNwaW4zXCIsIFwiMXNwaW5cIiwgXCIyc3BpblwiLCBcIjNzcGluXCIsIFwidHJcIiwgXCJibFwiLCBcImJyXCIsIFwic2hha2VcIiwgXCJzaGFrZTJcIiwgXCJzaGFrZTNcIiwgXCJmbGFwXCJdO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgbmV3IGNsYXNzIEVtb3RlTW9kdWxlIGV4dGVuZHMgQnVpbHRpbiB7XHJcbiAgICBnZXQgbmFtZSgpIHtyZXR1cm4gXCJFbW90ZXNcIjt9XHJcbiAgICBnZXQgY29sbGVjdGlvbigpIHtyZXR1cm4gXCJzZXR0aW5nc1wiO31cclxuICAgIGdldCBjYXRlZ29yeSgpIHtyZXR1cm4gXCJnZW5lcmFsXCI7fVxyXG4gICAgZ2V0IGlkKCkge3JldHVybiBcImVtb3Rlc1wiO31cclxuICAgIGdldCBjYXRlZ29yaWVzKCkge3JldHVybiBPYmplY3Qua2V5cyhFbW90ZXMpLmZpbHRlcihrID0+IHRoaXMuaXNDYXRlZ29yeUVuYWJsZWQoaykpO31cclxuICAgIGdldCBzaG91bGREb3dubG9hZCgpIHtyZXR1cm4gU2V0dGluZ3MuZ2V0KFwiZW1vdGVzXCIsIHRoaXMuY2F0ZWdvcnksIFwiZG93bmxvYWRcIik7fVxyXG5cclxuICAgIGlzQ2F0ZWdvcnlFbmFibGVkKGlkKSB7cmV0dXJuIHN1cGVyLmdldChcImVtb3Rlc1wiLCBcImNhdGVnb3JpZXNcIiwgaWQudG9Mb3dlckNhc2UoKSk7fVxyXG5cclxuICAgIGdldChpZCkge3JldHVybiBzdXBlci5nZXQoXCJlbW90ZXNcIiwgXCJnZW5lcmFsXCIsIGlkKTt9XHJcblxyXG4gICAgZ2V0IE1lc3NhZ2VDb21wb25lbnQoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmZpbmQobSA9PiBtLmRlZmF1bHQgJiYgbS5kZWZhdWx0LmRpc3BsYXlOYW1lICYmIG0uZGVmYXVsdC5kaXNwbGF5TmFtZSA9PSBcIk1lc3NhZ2VcIik7fVxyXG5cclxuICAgIGdldCBFbW90ZXMoKSB7cmV0dXJuIEVtb3Rlczt9XHJcbiAgICBnZXQgVHdpdGNoR2xvYmFsKCkge3JldHVybiBFbW90ZXMuVHdpdGNoR2xvYmFsO31cclxuICAgIGdldCBUd2l0Y2hTdWJzY3JpYmVyKCkge3JldHVybiBFbW90ZXMuVHdpdGNoU3Vic2NyaWJlcjt9XHJcbiAgICBnZXQgQlRUVigpIHtyZXR1cm4gRW1vdGVzLkJUVFY7fVxyXG4gICAgZ2V0IEZyYW5rZXJGYWNlWigpIHtyZXR1cm4gRW1vdGVzLkZyYW5rZXJGYWNlWjt9XHJcbiAgICBnZXQgYmxhY2tsaXN0KCkge3JldHVybiBibGFja2xpc3Q7fVxyXG4gICAgZ2V0IGZhdm9yaXRlcygpIHtyZXR1cm4gdGhpcy5mYXZvcml0ZUVtb3Rlczt9XHJcbiAgICBnZXRVcmwoY2F0ZWdvcnksIG5hbWUpIHtyZXR1cm4gRW1vdGVVUkxzW2NhdGVnb3J5XS5mb3JtYXQoe2lkOiBFbW90ZXNbY2F0ZWdvcnldW25hbWVdfSk7fVxyXG5cclxuICAgIGdldENhdGVnb3J5KGNhdGVnb3J5KSB7cmV0dXJuIEVtb3Rlc1tjYXRlZ29yeV07fVxyXG4gICAgZ2V0UmVtb3RlRmlsZShjYXRlZ29yeSkge3JldHVybiBVdGlsaXRpZXMucmVwb1VybChgYXNzZXRzL2Vtb3Rlcy8ke2NhdGVnb3J5LnRvTG93ZXJDYXNlKCl9Lmpzb25gKTt9XHJcblxyXG4gICAgaW5pdGlhbGl6ZSgpIHtcclxuICAgICAgICBzdXBlci5pbml0aWFsaXplKCk7XHJcbiAgICAgICAgY29uc3Qgc3RvcmVkRmF2b3JpdGVzID0gRGF0YVN0b3JlLmdldEJERGF0YShcImZhdm9yaXRlRW1vdGVzXCIpO1xyXG4gICAgICAgIHRoaXMuZmF2b3JpdGVFbW90ZXMgPSBzdG9yZWRGYXZvcml0ZXMgfHwge307XHJcbiAgICAgICAgdGhpcy5hZGRGYXZvcml0ZSA9IHRoaXMuYWRkRmF2b3JpdGUuYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLnJlbW92ZUZhdm9yaXRlID0gdGhpcy5yZW1vdmVGYXZvcml0ZS5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMub25DYXRlZ29yeVRvZ2dsZSA9IHRoaXMub25DYXRlZ29yeVRvZ2dsZS5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMucmVzZXRFbW90ZXMgPSB0aGlzLnJlc2V0RW1vdGVzLmJpbmQodGhpcyk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZW5hYmxlZCgpIHtcclxuICAgICAgICBTZXR0aW5ncy5yZWdpc3RlckNvbGxlY3Rpb24oXCJlbW90ZXNcIiwgXCJFbW90ZXNcIiwgRW1vdGVDb25maWcsIHt0aXRsZTogU3RyaW5ncy5FbW90ZXMuY2xlYXJFbW90ZXMsIG9uQ2xpY2s6IHRoaXMucmVzZXRFbW90ZXN9KTtcclxuICAgICAgICBhd2FpdCB0aGlzLmdldEJsYWNrbGlzdCgpO1xyXG4gICAgICAgIGF3YWl0IHRoaXMubG9hZEVtb3RlRGF0YSgpO1xyXG5cclxuICAgICAgICBFdmVudHMub24oXCJlbW90ZXMtZmF2b3JpdGUtYWRkZWRcIiwgdGhpcy5hZGRGYXZvcml0ZSk7XHJcbiAgICAgICAgRXZlbnRzLm9uKFwiZW1vdGVzLWZhdm9yaXRlLXJlbW92ZWRcIiwgdGhpcy5yZW1vdmVGYXZvcml0ZSk7XHJcbiAgICAgICAgRXZlbnRzLm9uKFwic2V0dGluZy11cGRhdGVkXCIsIHRoaXMub25DYXRlZ29yeVRvZ2dsZSk7XHJcbiAgICAgICAgdGhpcy5wYXRjaE1lc3NhZ2VDb250ZW50KCk7XHJcbiAgICB9XHJcblxyXG4gICAgZGlzYWJsZWQoKSB7XHJcbiAgICAgICAgRXZlbnRzLm9mZihcInNldHRpbmctdXBkYXRlZFwiLCB0aGlzLm9uQ2F0ZWdvcnlUb2dnbGUpO1xyXG4gICAgICAgIEV2ZW50cy5vZmYoXCJlbW90ZXMtZmF2b3JpdGUtYWRkZWRcIiwgdGhpcy5hZGRGYXZvcml0ZSk7XHJcbiAgICAgICAgRXZlbnRzLm9mZihcImVtb3Rlcy1mYXZvcml0ZS1yZW1vdmVkXCIsIHRoaXMucmVtb3ZlRmF2b3JpdGUpO1xyXG4gICAgICAgIFNldHRpbmdzLnJlbW92ZUNvbGxlY3Rpb24oXCJlbW90ZXNcIik7XHJcbiAgICAgICAgdGhpcy5lbXB0eUVtb3RlcygpO1xyXG4gICAgICAgIGlmICghdGhpcy5jYW5jZWxFbW90ZVJlbmRlcikgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMuY2FuY2VsRW1vdGVSZW5kZXIoKTtcclxuICAgICAgICBkZWxldGUgdGhpcy5jYW5jZWxFbW90ZVJlbmRlcjtcclxuICAgIH1cclxuXHJcbiAgICBvbkNhdGVnb3J5VG9nZ2xlKGNvbGxlY3Rpb24sIGNhdCwgY2F0ZWdvcnksIGVuYWJsZWQpIHtcclxuICAgICAgICBpZiAoY29sbGVjdGlvbiAhPSBcImVtb3Rlc1wiIHx8IGNhdCAhPSBcImNhdGVnb3JpZXNcIikgcmV0dXJuO1xyXG4gICAgICAgIGlmIChlbmFibGVkKSByZXR1cm4gdGhpcy5sb2FkRW1vdGVEYXRhKGNhdGVnb3J5KTtcclxuICAgICAgICByZXR1cm4gdGhpcy51bmxvYWRFbW90ZURhdGEoY2F0ZWdvcnkpO1xyXG4gICAgfVxyXG5cclxuICAgIGFkZEZhdm9yaXRlKG5hbWUsIHVybCkge1xyXG4gICAgICAgIGlmICghdGhpcy5mYXZvcml0ZUVtb3Rlcy5oYXNPd25Qcm9wZXJ0eShuYW1lKSkgdGhpcy5mYXZvcml0ZUVtb3Rlc1tuYW1lXSA9IHVybDtcclxuICAgICAgICB0aGlzLnNhdmVGYXZvcml0ZXMoKTtcclxuICAgIH1cclxuXHJcbiAgICByZW1vdmVGYXZvcml0ZShuYW1lKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmZhdm9yaXRlRW1vdGVzLmhhc093blByb3BlcnR5KG5hbWUpKSByZXR1cm47XHJcbiAgICAgICAgZGVsZXRlIHRoaXMuZmF2b3JpdGVFbW90ZXNbbmFtZV07XHJcbiAgICAgICAgdGhpcy5zYXZlRmF2b3JpdGVzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaXNGYXZvcml0ZShuYW1lKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZmF2b3JpdGVFbW90ZXMuaGFzT3duUHJvcGVydHkobmFtZSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2F2ZUZhdm9yaXRlcygpIHtcclxuICAgICAgICBEYXRhU3RvcmUuc2V0QkREYXRhKFwiZmF2b3JpdGVFbW90ZXNcIiwgdGhpcy5mYXZvcml0ZUVtb3Rlcyk7XHJcbiAgICB9XHJcblxyXG4gICAgZW1wdHlFbW90ZXMoKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBjYXQgaW4gRW1vdGVzKSBPYmplY3QuYXNzaWduKEVtb3Rlcywge1tjYXRdOiB7fX0pO1xyXG4gICAgfVxyXG5cclxuICAgIHBhdGNoTWVzc2FnZUNvbnRlbnQoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuY2FuY2VsRW1vdGVSZW5kZXIpIHJldHVybjtcclxuICAgICAgICB0aGlzLmNhbmNlbEVtb3RlUmVuZGVyID0gdGhpcy5iZWZvcmUodGhpcy5NZXNzYWdlQ29tcG9uZW50LCBcImRlZmF1bHRcIiwgKHRoaXNPYmosIGFyZ3MpID0+IHtcclxuICAgICAgICAgICAgY29uc3Qgbm9kZXMgPSBhcmdzWzBdLmNoaWxkcmVuTWVzc2FnZUNvbnRlbnQucHJvcHMuY29udGVudDtcclxuICAgICAgICAgICAgaWYgKCFub2RlcyB8fCAhbm9kZXMubGVuZ3RoKSByZXR1cm47XHJcbiAgICAgICAgICAgIGZvciAobGV0IG4gPSAwOyBuIDwgbm9kZXMubGVuZ3RoOyBuKyspIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG5vZGUgPSBub2Rlc1tuXTtcclxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Yobm9kZSkgIT09IFwic3RyaW5nXCIpIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgd29yZHMgPSBub2RlLnNwbGl0KC8oW15cXHNdKykoW1xcc118JCkvZyk7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBjID0gMCwgY2xlbiA9IHRoaXMuY2F0ZWdvcmllcy5sZW5ndGg7IGMgPCBjbGVuOyBjKyspIHtcclxuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCB3ID0gMCwgd2xlbiA9IHdvcmRzLmxlbmd0aDsgdyA8IHdsZW47IHcrKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlbW90ZSA9IHdvcmRzW3ddO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlbW90ZVNwbGl0ID0gZW1vdGUuc3BsaXQoXCI6XCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlbW90ZU5hbWUgPSBlbW90ZVNwbGl0WzBdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgZW1vdGVNb2RpZmllciA9IGVtb3RlU3BsaXRbMV0gPyBlbW90ZVNwbGl0WzFdIDogXCJcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGVtb3RlT3ZlcnJpZGUgPSBlbW90ZU1vZGlmaWVyLnNsaWNlKDApO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVtb3RlTmFtZS5sZW5ndGggPCA0IHx8IGJsYWNrbGlzdC5pbmNsdWRlcyhlbW90ZU5hbWUpKSBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFtb2RpZmllcnMuaW5jbHVkZXMoZW1vdGVNb2RpZmllcikgfHwgIVNldHRpbmdzLmdldChcImVtb3Rlc1wiLCBcImdlbmVyYWxcIiwgXCJtb2RpZmllcnNcIikpIGVtb3RlTW9kaWZpZXIgPSBcIlwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW92ZXJyaWRlcy5pbmNsdWRlcyhlbW90ZU92ZXJyaWRlKSkgZW1vdGVPdmVycmlkZSA9IFwiXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgZW1vdGVNb2RpZmllciA9IGVtb3RlT3ZlcnJpZGU7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgY3VycmVudCA9IHRoaXMuY2F0ZWdvcmllc1tjXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVtb3RlT3ZlcnJpZGUgPT09IFwidHdpdGNoXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChFbW90ZXMuVHdpdGNoR2xvYmFsW2Vtb3RlTmFtZV0pIGN1cnJlbnQgPSBcIlR3aXRjaEdsb2JhbFwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoRW1vdGVzLlR3aXRjaFN1YnNjcmliZXJbZW1vdGVOYW1lXSkgY3VycmVudCA9IFwiVHdpdGNoU3Vic2NyaWJlclwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGVtb3RlT3ZlcnJpZGUgPT09IFwic3Vic2NyaWJlclwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoRW1vdGVzLlR3aXRjaFN1YnNjcmliZXJbZW1vdGVOYW1lXSkgY3VycmVudCA9IFwiVHdpdGNoU3Vic2NyaWJlclwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGVtb3RlT3ZlcnJpZGUgPT09IFwiYnR0dlwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoRW1vdGVzLkJUVFZbZW1vdGVOYW1lXSkgY3VycmVudCA9IFwiQlRUVlwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGVtb3RlT3ZlcnJpZGUgPT09IFwiZmZ6XCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChFbW90ZXMuRnJhbmtlckZhY2VaW2Vtb3RlTmFtZV0pIGN1cnJlbnQgPSBcIkZyYW5rZXJGYWNlWlwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIUVtb3Rlc1tjdXJyZW50XVtlbW90ZU5hbWVdKSBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0cyA9IG5vZGVzW25dLm1hdGNoKG5ldyBSZWdFeHAoYChbXFxcXHNdfF4pJHtVdGlsaXRpZXMuZXNjYXBlKGVtb3RlTW9kaWZpZXIgPyBlbW90ZU5hbWUgKyBcIjpcIiArIGVtb3RlTW9kaWZpZXIgOiBlbW90ZU5hbWUpfShbXFxcXHNdfCQpYCkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdHMpIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmUgPSBub2Rlc1tuXS5zdWJzdHJpbmcoMCwgcmVzdWx0cy5pbmRleCArIHJlc3VsdHNbMV0ubGVuZ3RoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcG9zdCA9IG5vZGVzW25dLnN1YnN0cmluZyhyZXN1bHRzLmluZGV4ICsgcmVzdWx0c1swXS5sZW5ndGggLSByZXN1bHRzWzJdLmxlbmd0aCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVzW25dID0gcHJlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlbW90ZUNvbXBvbmVudCA9IERpc2NvcmRNb2R1bGVzLlJlYWN0LmNyZWF0ZUVsZW1lbnQoQkRFbW90ZSwge25hbWU6IGVtb3RlTmFtZSwgdXJsOiBFbW90ZVVSTHNbY3VycmVudF0uZm9ybWF0KHtpZDogRW1vdGVzW2N1cnJlbnRdW2Vtb3RlTmFtZV19KSwgbW9kaWZpZXI6IGVtb3RlTW9kaWZpZXIsIGlzRmF2b3JpdGU6IHRoaXMuaXNGYXZvcml0ZShlbW90ZU5hbWUpfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVzLnNwbGljZShuICsgMSwgMCwgcG9zdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVzLnNwbGljZShuICsgMSwgMCwgZW1vdGVDb21wb25lbnQpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBvbmx5RW1vdGVzID0gbm9kZXMuZXZlcnkociA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mKHIpID09IFwic3RyaW5nXCIgJiYgci5yZXBsYWNlKC9cXHMqLywgXCJcIikgPT0gXCJcIikgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChyLnR5cGUgJiYgci50eXBlLm5hbWUgPT0gXCJCREVtb3RlXCIpIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoci5wcm9wcyAmJiByLnByb3BzLmNoaWxkcmVuICYmIHIucHJvcHMuY2hpbGRyZW4ucHJvcHMgJiYgci5wcm9wcy5jaGlsZHJlbi5wcm9wcy5lbW9qaU5hbWUpIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgaWYgKCFvbmx5RW1vdGVzKSByZXR1cm47XHJcblxyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IG5vZGUgb2Ygbm9kZXMpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Yobm9kZSkgIT0gXCJvYmplY3RcIikgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICBpZiAobm9kZS50eXBlLm5hbWUgPT0gXCJCREVtb3RlXCIpIG5vZGUucHJvcHMuanVtYm9hYmxlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUucHJvcHMgJiYgbm9kZS5wcm9wcy5jaGlsZHJlbiAmJiBub2RlLnByb3BzLmNoaWxkcmVuLnByb3BzICYmIG5vZGUucHJvcHMuY2hpbGRyZW4ucHJvcHMuZW1vamlOYW1lKSBub2RlLnByb3BzLmNoaWxkcmVuLnByb3BzLmp1bWJvYWJsZSA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBnZXRCbGFja2xpc3QoKSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgY29uc3QgY2F0ZWdvcnkgPSBcIkJsYWNrbGlzdFwiO1xyXG4gICAgICAgICAgICBjb25zdCBleGlzdHMgPSBEYXRhU3RvcmUuZW1vdGVzRXhpc3QoY2F0ZWdvcnkpO1xyXG4gICAgICAgICAgICBjb25zdCB2YWxpZCA9IGF3YWl0IHRoaXMuaXNDYWNoZVZhbGlkKGNhdGVnb3J5KTtcclxuICAgICAgICAgICAgY29uc3QgdXNlQ2FjaGUgPSAodmFsaWQpIHx8ICghdmFsaWQgJiYgZXhpc3RzICYmICF0aGlzLnNob3VsZERvd25sb2FkKTtcclxuICAgICAgICAgICAgY29uc3QgbGlzdCA9IHVzZUNhY2hlID8gRGF0YVN0b3JlLmdldEVtb3RlRGF0YShjYXRlZ29yeSkgOiBhd2FpdCB0aGlzLmRvd25sb2FkRW1vdGVzKGNhdGVnb3J5KTtcclxuICAgICAgICAgICAgYmxhY2tsaXN0LnB1c2goLi4ubGlzdCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChlcnIpIHtcclxuICAgICAgICAgICAgLy8gVE9ETzogTG9nIHRoaXNcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaXNDYWNoZVZhbGlkKGNhdGVnb3J5KSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBldGFnID0gRGF0YVN0b3JlLmdldENhY2hlSGFzaChcImVtb3Rlc1wiLCBjYXRlZ29yeSk7XHJcbiAgICAgICAgICAgIGlmICghZXRhZykgcmV0dXJuIHJlc29sdmUoZmFsc2UpO1xyXG4gICAgICAgICAgICByZXF1ZXN0LmhlYWQoe3VybDogdGhpcy5nZXRSZW1vdGVGaWxlKGNhdGVnb3J5KSwgaGVhZGVyczoge1wiSWYtTm9uZS1NYXRjaFwiOiBldGFnfX0sIChlcnIsIHJlc3ApID0+IHtcclxuICAgICAgICAgICAgICAgIHJlc29sdmUocmVzcC5zdGF0dXNDb2RlID09IDMwNCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGxvYWRFbW90ZURhdGEoY2F0ZWdvcmllcykge1xyXG4gICAgICAgIGlmICghY2F0ZWdvcmllcykgY2F0ZWdvcmllcyA9IHRoaXMuY2F0ZWdvcmllcztcclxuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoY2F0ZWdvcmllcykpIGNhdGVnb3JpZXMgPSBbY2F0ZWdvcmllc107XHJcbiAgICAgICAgY29uc3QgYWxsID0gT2JqZWN0LmtleXMoRW1vdGVzKTtcclxuICAgICAgICBjYXRlZ29yaWVzID0gY2F0ZWdvcmllcy5tYXAoayA9PiBhbGwuZmluZChjID0+IGMudG9Mb3dlckNhc2UoKSA9PSBrLnRvTG93ZXJDYXNlKCkpKTtcclxuICAgICAgICBUb2FzdHMuc2hvdyhTdHJpbmdzLkVtb3Rlcy5sb2FkaW5nLCB7dHlwZTogXCJpbmZvXCJ9KTtcclxuICAgICAgICB0aGlzLmVtb3Rlc0xvYWRlZCA9IGZhbHNlO1xyXG5cclxuICAgICAgICBmb3IgKGNvbnN0IGNhdGVnb3J5IG9mIGNhdGVnb3JpZXMpIHtcclxuICAgICAgICAgICAgY29uc3QgZXhpc3RzID0gRGF0YVN0b3JlLmVtb3Rlc0V4aXN0KGNhdGVnb3J5KTtcclxuICAgICAgICAgICAgY29uc3QgdmFsaWQgPSBhd2FpdCB0aGlzLmlzQ2FjaGVWYWxpZChjYXRlZ29yeSk7XHJcbiAgICAgICAgICAgIGNvbnN0IHVzZUNhY2hlID0gKHZhbGlkKSB8fCAoIXZhbGlkICYmIGV4aXN0cyAmJiAhdGhpcy5zaG91bGREb3dubG9hZCk7XHJcbiAgICAgICAgICAgIGxldCBkYXRhID0gbnVsbDtcclxuICAgICAgICAgICAgaWYgKHVzZUNhY2hlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvZyhgTG9hZGluZyAke2NhdGVnb3J5fSBlbW90ZXMgZnJvbSBsb2NhbCBjYWNoZS5gKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNhY2hlZERhdGEgPSBEYXRhU3RvcmUuZ2V0RW1vdGVEYXRhKGNhdGVnb3J5KTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGhhc0RhdGEgPSBPYmplY3Qua2V5cyhjYWNoZWREYXRhKS5sZW5ndGggPiAwO1xyXG4gICAgICAgICAgICAgICAgaWYgKGhhc0RhdGEpIGRhdGEgPSBjYWNoZWREYXRhO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICghZGF0YSkgZGF0YSA9IGF3YWl0IHRoaXMuZG93bmxvYWRFbW90ZXMoY2F0ZWdvcnkpO1xyXG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKEVtb3Rlc1tjYXRlZ29yeV0sIGRhdGEpO1xyXG4gICAgICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZShyID0+IHNldFRpbWVvdXQociwgMTAwMCkpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5lbW90ZXNMb2FkZWQgPSB0cnVlO1xyXG4gICAgICAgIEV2ZW50cy5kaXNwYXRjaChcImVtb3Rlcy1sb2FkZWRcIik7XHJcbiAgICAgICAgVG9hc3RzLnNob3coU3RyaW5ncy5FbW90ZXMubG9hZGVkLCB7dHlwZTogXCJzdWNjZXNzXCJ9KTtcclxuICAgIH1cclxuXHJcbiAgICB1bmxvYWRFbW90ZURhdGEoY2F0ZWdvcmllcykge1xyXG4gICAgICAgIGlmICghY2F0ZWdvcmllcykgY2F0ZWdvcmllcyA9IHRoaXMuY2F0ZWdvcmllcztcclxuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoY2F0ZWdvcmllcykpIGNhdGVnb3JpZXMgPSBbY2F0ZWdvcmllc107XHJcbiAgICAgICAgY29uc3QgYWxsID0gT2JqZWN0LmtleXMoRW1vdGVzKTtcclxuICAgICAgICBjYXRlZ29yaWVzID0gY2F0ZWdvcmllcy5tYXAoayA9PiBhbGwuZmluZChjID0+IGMudG9Mb3dlckNhc2UoKSA9PSBrLnRvTG93ZXJDYXNlKCkpKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGNhdGVnb3J5IG9mIGNhdGVnb3JpZXMpIHtcclxuICAgICAgICAgICAgZGVsZXRlIEVtb3Rlc1tjYXRlZ29yeV07XHJcbiAgICAgICAgICAgIEVtb3Rlc1tjYXRlZ29yeV0gPSB7fTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZG93bmxvYWRFbW90ZXMoY2F0ZWdvcnkpIHtcclxuICAgICAgICBjb25zdCB1cmwgPSB0aGlzLmdldFJlbW90ZUZpbGUoY2F0ZWdvcnkpO1xyXG4gICAgICAgIHRoaXMubG9nKGBEb3dubG9hZGluZyAke2NhdGVnb3J5fSBmcm9tICR7dXJsfWApO1xyXG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7dXJsOiB1cmwsIHRpbWVvdXQ6IDEwMDAwLCBqc29uOiB0cnVlfTtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XHJcbiAgICAgICAgICAgIHJlcXVlc3QuZ2V0KG9wdGlvbnMsIChlcnJvciwgcmVzcG9uc2UsIHBhcnNlZERhdGEpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChlcnJvciB8fCByZXNwb25zZS5zdGF0dXNDb2RlICE9IDIwMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhY2t0cmFjZShgQ291bGQgbm90IGRvd25sb2FkICR7Y2F0ZWdvcnl9IGVtb3Rlcy5gLCBlcnJvcik7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUoe30pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgZW1vdGUgaW4gcGFyc2VkRGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChlbW90ZS5sZW5ndGggPCA0IHx8IGJsYWNrbGlzdC5pbmNsdWRlcyhlbW90ZSkgfHwgIXBhcnNlZERhdGFbZW1vdGVdKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBwYXJzZWREYXRhW2Vtb3RlXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIC8vIHBhcnNlZERhdGFbZW1vdGVdID0gRW1vdGVVUkxzW2NhdGVnb3J5XS5mb3JtYXQoe2lkOiBwYXJzZWREYXRhW2Vtb3RlXX0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgRGF0YVN0b3JlLnNhdmVFbW90ZURhdGEoY2F0ZWdvcnksIHBhcnNlZERhdGEpO1xyXG4gICAgICAgICAgICAgICAgRGF0YVN0b3JlLnNldENhY2hlSGFzaChcImVtb3Rlc1wiLCBjYXRlZ29yeSwgcmVzcG9uc2UuaGVhZGVycy5ldGFnKTtcclxuICAgICAgICAgICAgICAgIHJlc29sdmUocGFyc2VkRGF0YSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvZyhgRG93bmxvYWRlZCAke2NhdGVnb3J5fWApO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICByZXNldEVtb3RlcygpIHtcclxuICAgICAgICBjb25zdCBjYXRlZ29yaWVzID0gT2JqZWN0LmtleXMoRW1vdGVzKTtcclxuICAgICAgICB0aGlzLnVubG9hZEVtb3RlRGF0YShjYXRlZ29yaWVzKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGNhdCBvZiBjYXRlZ29yaWVzKSBEYXRhU3RvcmUuaW52YWxpZGF0ZUNhY2hlKFwiZW1vdGVzXCIsIGNhdCk7XHJcbiAgICAgICAgdGhpcy5sb2FkRW1vdGVEYXRhKCk7XHJcbiAgICB9XHJcbn07XHJcblxyXG5cclxuLy8gKGFzeW5jICgpID0+IHtcclxuLy8gICAgIGNvbnN0IGVtb3RlRGF0YSA9IGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xyXG4vLyAgICAgICAgIGNvbnN0IHJlcSA9IHJlcXVpcmUoXCJyZXF1ZXN0XCIpO1xyXG4vLyAgICAgICAgIHJlcS5nZXQoe3VybDogXCJodHRwczovL3R3aXRjaGVtb3Rlcy5jb20vYXBpX2NhY2hlL3YzL2dsb2JhbC5qc29uXCIsIGpzb246IHRydWV9LCAoZXJyLCByZXNwLCBwYXJzZWREYXRhKSA9PiB7XHJcbi8vICAgICAgICAgICAgIGZvciAoY29uc3QgZW1vdGUgaW4gcGFyc2VkRGF0YSkge1xyXG4vLyAgICAgICAgICAgICAgICAgaWYgKGVtb3RlLmxlbmd0aCA8IDQgfHwgd2luZG93LmJlbW90ZXMuaW5jbHVkZXMoZW1vdGUpKSB7XHJcbi8vICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHBhcnNlZERhdGFbZW1vdGVdO1xyXG4vLyAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4vLyAgICAgICAgICAgICAgICAgfVxyXG4vLyAgICAgICAgICAgICAgICAgcGFyc2VkRGF0YVtlbW90ZV0gPSBwYXJzZWREYXRhW2Vtb3RlXS5pZDtcclxuLy8gICAgICAgICAgICAgfVxyXG4vLyAgICAgICAgICAgICByZXNvbHZlKHBhcnNlZERhdGEpO1xyXG4vLyAgICAgICAgIH0pO1xyXG4vLyAgICAgfSk7XHJcbi8vICAgICBjb25zdCBmcyA9IHJlcXVpcmUoXCJmc1wiKTtcclxuLy8gICAgIGZzLndyaXRlRmlsZVN5bmMoXCJaOlxcXFxQcm9ncmFtbWluZ1xcXFxCZXR0ZXJEaXNjb3JkU3R1ZmZcXFxcQmV0dGVyRGlzY29yZEFwcFxcXFxkYXRhXFxcXGVtb3Rlc1xcXFxnbG9iYWwuanNvblwiLCBKU09OLnN0cmluZ2lmeShlbW90ZURhdGEpKTtcclxuLy8gICAgIHJldHVybiBlbW90ZURhdGE7XHJcbi8vIH0pKCk7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/builtins/emotes/emotes.js\n");
/***/ }),
/***/ "./src/builtins/emotes/tabs.js":
/*!*************************************!*\
!*** ./src/builtins/emotes/tabs.js ***!
\*************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../modules/modules.js */ \"./src/modules/modules.js\");\n/* harmony import */ var _emotes__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./emotes */ \"./src/builtins/emotes/emotes.js\");\n/* harmony import */ var _ui_emotemenucard__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../ui/emotemenucard */ \"./src/ui/emotemenucard.jsx\");\n/* harmony import */ var _ui_emoteicon__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../ui/emoteicon */ \"./src/ui/emoteicon.jsx\");\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ([{\n id: \"twitchEmotes\",\n label: \"Twitch Emotes\",\n element: () => _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_ui_emotemenucard__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n type: \"twitch\"\n }, Object.keys(_emotes__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getCategory(\"TwitchGlobal\")).map(emote => {\n const url = _emotes__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getUrl(\"TwitchGlobal\", emote);\n return _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_ui_emoteicon__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n emote,\n url\n });\n }))\n}, {\n id: \"favoriteEmotes\",\n label: \"Favorite Emotes\",\n element: () => _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_ui_emotemenucard__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n type: \"favourite\"\n }, Object.entries(_emotes__WEBPACK_IMPORTED_MODULE_1__[\"default\"].favorites).map(([emote, url]) => {\n return _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_ui_emoteicon__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n emote,\n url\n });\n }))\n}]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYnVpbHRpbnMvZW1vdGVzL3RhYnMuanM/NjgzOCJdLCJuYW1lcyI6WyJpZCIsImxhYmVsIiwiZWxlbWVudCIsIlJlYWN0IiwiY3JlYXRlRWxlbWVudCIsIkVtb3RlTWVudUNhcmQiLCJ0eXBlIiwiT2JqZWN0Iiwia2V5cyIsIkVtb3RlTW9kdWxlIiwiZ2V0Q2F0ZWdvcnkiLCJtYXAiLCJlbW90ZSIsInVybCIsImdldFVybCIsIkVtb3RlSWNvbiIsImVudHJpZXMiLCJmYXZvcml0ZXMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNlLGdFQUNYO0FBQ0lBLElBQUUsRUFBRSxjQURSO0FBRUlDLE9BQUssRUFBRSxlQUZYO0FBR0lDLFNBQU8sRUFBRSxNQUFNQyx5REFBSyxDQUFDQyxhQUFOLENBQW9CQyx5REFBcEIsRUFBbUM7QUFDOUNDLFFBQUksRUFBRTtBQUR3QyxHQUFuQyxFQUVaQyxNQUFNLENBQUNDLElBQVAsQ0FBWUMsK0NBQVcsQ0FBQ0MsV0FBWixDQUF3QixjQUF4QixDQUFaLEVBQXFEQyxHQUFyRCxDQUF5REMsS0FBSyxJQUFHO0FBQ2hFLFVBQU1DLEdBQUcsR0FBR0osK0NBQVcsQ0FBQ0ssTUFBWixDQUFtQixjQUFuQixFQUFtQ0YsS0FBbkMsQ0FBWjtBQUNBLFdBQU9ULHlEQUFLLENBQUNDLGFBQU4sQ0FBb0JXLHFEQUFwQixFQUErQjtBQUFDSCxXQUFEO0FBQVFDO0FBQVIsS0FBL0IsQ0FBUDtBQUNILEdBSEUsQ0FGWTtBQUhuQixDQURXLEVBV1g7QUFDSWIsSUFBRSxFQUFFLGdCQURSO0FBRUlDLE9BQUssRUFBRSxpQkFGWDtBQUdJQyxTQUFPLEVBQUUsTUFBTUMseURBQUssQ0FBQ0MsYUFBTixDQUFvQkMseURBQXBCLEVBQW1DO0FBQzlDQyxRQUFJLEVBQUU7QUFEd0MsR0FBbkMsRUFFWkMsTUFBTSxDQUFDUyxPQUFQLENBQWVQLCtDQUFXLENBQUNRLFNBQTNCLEVBQXNDTixHQUF0QyxDQUEwQyxDQUFDLENBQUNDLEtBQUQsRUFBUUMsR0FBUixDQUFELEtBQWtCO0FBQzNELFdBQU9WLHlEQUFLLENBQUNDLGFBQU4sQ0FBb0JXLHFEQUFwQixFQUErQjtBQUFDSCxXQUFEO0FBQVFDO0FBQVIsS0FBL0IsQ0FBUDtBQUNILEdBRkUsQ0FGWTtBQUhuQixDQVhXLENBQWYiLCJmaWxlIjoiLi9zcmMvYnVpbHRpbnMvZW1vdGVzL3RhYnMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlYWN0fSBmcm9tIFwibW9kdWxlc1wiO1xyXG5pbXBvcnQgRW1vdGVNb2R1bGUgZnJvbSBcIi4vZW1vdGVzXCI7XHJcbmltcG9ydCBFbW90ZU1lbnVDYXJkIGZyb20gXCIuLi8uLi91aS9lbW90ZW1lbnVjYXJkXCI7XHJcbmltcG9ydCBFbW90ZUljb24gZnJvbSBcIi4uLy4uL3VpL2Vtb3RlaWNvblwiO1xyXG5leHBvcnQgZGVmYXVsdCBbXHJcbiAgICB7XHJcbiAgICAgICAgaWQ6IFwidHdpdGNoRW1vdGVzXCIsXHJcbiAgICAgICAgbGFiZWw6IFwiVHdpdGNoIEVtb3Rlc1wiLFxyXG4gICAgICAgIGVsZW1lbnQ6ICgpID0+IFJlYWN0LmNyZWF0ZUVsZW1lbnQoRW1vdGVNZW51Q2FyZCwge1xyXG4gICAgICAgICAgICB0eXBlOiBcInR3aXRjaFwiXHJcbiAgICAgICAgfSwgT2JqZWN0LmtleXMoRW1vdGVNb2R1bGUuZ2V0Q2F0ZWdvcnkoXCJUd2l0Y2hHbG9iYWxcIikpLm1hcChlbW90ZT0+IHtcclxuICAgICAgICAgICAgY29uc3QgdXJsID0gRW1vdGVNb2R1bGUuZ2V0VXJsKFwiVHdpdGNoR2xvYmFsXCIsIGVtb3RlKTtcclxuICAgICAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRW1vdGVJY29uLCB7ZW1vdGUsIHVybH0pO1xyXG4gICAgICAgIH0pKVxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBpZDogXCJmYXZvcml0ZUVtb3Rlc1wiLFxyXG4gICAgICAgIGxhYmVsOiBcIkZhdm9yaXRlIEVtb3Rlc1wiLFxyXG4gICAgICAgIGVsZW1lbnQ6ICgpID0+IFJlYWN0LmNyZWF0ZUVsZW1lbnQoRW1vdGVNZW51Q2FyZCwge1xyXG4gICAgICAgICAgICB0eXBlOiBcImZhdm91cml0ZVwiXHJcbiAgICAgICAgfSwgT2JqZWN0LmVudHJpZXMoRW1vdGVNb2R1bGUuZmF2b3JpdGVzKS5tYXAoKFtlbW90ZSwgdXJsXSkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChFbW90ZUljb24sIHtlbW90ZSwgdXJsfSk7XHJcbiAgICAgICAgfSkpXHJcbiAgICB9XHJcbl0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/builtins/emotes/tabs.js\n");
/***/ }),
/***/ "./src/builtins/general/24hour.js":
/*!****************************************!*\
!*** ./src/builtins/general/24hour.js ***!
\****************************************/
/*! exports provided: default */
/***/ (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_modules_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../modules/modules.js */ \"./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_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"DiscordModules\"].TimeFormatter, \"calendarFormat\", convert); // Called in Cozy mode\n\n this.after(_modules_modules_js__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/MWZlNSJdLCJuYW1lcyI6WyJUd2VudHlGb3VySG91ciIsIkJ1aWx0aW4iLCJuYW1lIiwiY2F0ZWdvcnkiLCJpZCIsImVuYWJsZWQiLCJpbmplY3QyNEhvdXIiLCJkaXNhYmxlZCIsInVucGF0Y2hBbGwiLCJ0d2VsdmVIb3VyIiwiUmVnRXhwIiwiY29udmVydCIsInRoaXNPYmplY3QiLCJhcmdzIiwicmV0dXJuVmFsdWUiLCJtYXRjaGVkIiwibWF0Y2giLCJsZW5ndGgiLCJyZXBsYWNlIiwicGFkU3RhcnQiLCJwYXJzZUludCIsImFmdGVyIiwiRGlzY29yZE1vZHVsZXMiLCJUaW1lRm9ybWF0dGVyIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBRWUsbUVBQUksTUFBTUEsY0FBTixTQUE2QkMsd0RBQTdCLENBQXFDO0FBQ3BELE1BQUlDLElBQUosR0FBVztBQUFDLFdBQU8sUUFBUDtBQUFpQjs7QUFDN0IsTUFBSUMsUUFBSixHQUFlO0FBQUMsV0FBTyxTQUFQO0FBQWtCOztBQUNsQyxNQUFJQyxFQUFKLEdBQVM7QUFBQyxXQUFPLGdCQUFQO0FBQXlCOztBQUVuQ0MsU0FBTyxHQUFHO0FBQ04sU0FBS0MsWUFBTDtBQUNIOztBQUVEQyxVQUFRLEdBQUc7QUFDUCxTQUFLQyxVQUFMO0FBQ0g7O0FBRURGLGNBQVksR0FBRztBQUNYLFVBQU1HLFVBQVUsR0FBRyxJQUFJQyxNQUFKLENBQVkscUNBQVosQ0FBbkI7O0FBQ0EsVUFBTUMsT0FBTyxHQUFHLENBQUNDLFVBQUQsRUFBYUMsSUFBYixFQUFtQkMsV0FBbkIsS0FBbUM7QUFDL0MsWUFBTUMsT0FBTyxHQUFHRCxXQUFXLENBQUNFLEtBQVosQ0FBa0JQLFVBQWxCLENBQWhCO0FBQ0EsVUFBSSxDQUFDTSxPQUFELElBQVlBLE9BQU8sQ0FBQ0UsTUFBUixLQUFtQixDQUFuQyxFQUFzQztBQUN0QyxVQUFJRixPQUFPLENBQUMsQ0FBRCxDQUFQLEtBQWUsSUFBbkIsRUFBeUIsT0FBT0QsV0FBVyxHQUFHQSxXQUFXLENBQUNJLE9BQVosQ0FBb0JILE9BQU8sQ0FBQyxDQUFELENBQTNCLEVBQWlDLEdBQUVBLE9BQU8sQ0FBQyxDQUFELENBQVAsS0FBZSxJQUFmLEdBQXNCLElBQXRCLEdBQTZCQSxPQUFPLENBQUMsQ0FBRCxDQUFQLENBQVdJLFFBQVgsQ0FBb0IsQ0FBcEIsRUFBdUIsR0FBdkIsQ0FBNEIsSUFBR0osT0FBTyxDQUFDLENBQUQsQ0FBSSxFQUExRyxDQUFyQjtBQUN6QixhQUFPRCxXQUFXLEdBQUdBLFdBQVcsQ0FBQ0ksT0FBWixDQUFvQkgsT0FBTyxDQUFDLENBQUQsQ0FBM0IsRUFBaUMsR0FBRUEsT0FBTyxDQUFDLENBQUQsQ0FBUCxLQUFlLElBQWYsR0FBc0IsSUFBdEIsR0FBNkJLLFFBQVEsQ0FBQ0wsT0FBTyxDQUFDLENBQUQsQ0FBUixDQUFSLEdBQXVCLEVBQUcsSUFBR0EsT0FBTyxDQUFDLENBQUQsQ0FBSSxFQUF4RyxDQUFyQjtBQUNILEtBTEQ7O0FBT0EsU0FBS00sS0FBTCxDQUFXQyxrRUFBYyxDQUFDQyxhQUExQixFQUF5QyxnQkFBekMsRUFBMkRaLE9BQTNELEVBVFcsQ0FTMEQ7O0FBQ3JFLFNBQUtVLEtBQUwsQ0FBV0Msa0VBQWMsQ0FBQ0MsYUFBMUIsRUFBeUMsWUFBekMsRUFBdURaLE9BQXZELEVBVlcsQ0FVc0Q7QUFDcEU7O0FBeEJtRCxDQUF6QyxFQUFmIiwiZmlsZSI6Ii4vc3JjL2J1aWx0aW5zL2dlbmVyYWwvMjRob3VyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJ1aWx0aW4gZnJvbSBcIi4uLy4uL3N0cnVjdHMvYnVpbHRpblwiO1xyXG5pbXBvcnQge0Rpc2NvcmRNb2R1bGVzfSBmcm9tIFwibW9kdWxlc1wiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgbmV3IGNsYXNzIFR3ZW50eUZvdXJIb3VyIGV4dGVuZHMgQnVpbHRpbiB7XHJcbiAgICBnZXQgbmFtZSgpIHtyZXR1cm4gXCIyNEhvdXJcIjt9XHJcbiAgICBnZXQgY2F0ZWdvcnkoKSB7cmV0dXJuIFwiZ2VuZXJhbFwiO31cclxuICAgIGdldCBpZCgpIHtyZXR1cm4gXCJ0d2VudHlGb3VySG91clwiO31cclxuXHJcbiAgICBlbmFibGVkKCkge1xyXG4gICAgICAgIHRoaXMuaW5qZWN0MjRIb3VyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZGlzYWJsZWQoKSB7XHJcbiAgICAgICAgdGhpcy51bnBhdGNoQWxsKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaW5qZWN0MjRIb3VyKCkge1xyXG4gICAgICAgIGNvbnN0IHR3ZWx2ZUhvdXIgPSBuZXcgUmVnRXhwKGAoWzAtOV17MSwyfSk6KFswLTldezEsMn0pXFxcXHMoQU18UE0pYCk7XHJcbiAgICAgICAgY29uc3QgY29udmVydCA9ICh0aGlzT2JqZWN0LCBhcmdzLCByZXR1cm5WYWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBtYXRjaGVkID0gcmV0dXJuVmFsdWUubWF0Y2godHdlbHZlSG91cik7XHJcbiAgICAgICAgICAgIGlmICghbWF0Y2hlZCB8fCBtYXRjaGVkLmxlbmd0aCAhPT0gNCkgcmV0dXJuO1xyXG4gICAgICAgICAgICBpZiAobWF0Y2hlZFszXSA9PT0gXCJBTVwiKSByZXR1cm4gcmV0dXJuVmFsdWUgPSByZXR1cm5WYWx1ZS5yZXBsYWNlKG1hdGNoZWRbMF0sIGAke21hdGNoZWRbMV0gPT09IFwiMTJcIiA/IFwiMDBcIiA6IG1hdGNoZWRbMV0ucGFkU3RhcnQoMiwgXCIwXCIpfToke21hdGNoZWRbMl19YCk7XHJcbiAgICAgICAgICAgIHJldHVybiByZXR1cm5WYWx1ZSA9IHJldHVyblZhbHVlLnJlcGxhY2UobWF0Y2hlZFswXSwgYCR7bWF0Y2hlZFsxXSA9PT0gXCIxMlwiID8gXCIxMlwiIDogcGFyc2VJbnQobWF0Y2hlZFsxXSkgKyAxMn06JHttYXRjaGVkWzJdfWApO1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHRoaXMuYWZ0ZXIoRGlzY29yZE1vZHVsZXMuVGltZUZvcm1hdHRlciwgXCJjYWxlbmRhckZvcm1hdFwiLCBjb252ZXJ0KTsgLy8gQ2FsbGVkIGluIENvenkgbW9kZVxyXG4gICAgICAgIHRoaXMuYWZ0ZXIoRGlzY29yZE1vZHVsZXMuVGltZUZvcm1hdHRlciwgXCJkYXRlRm9ybWF0XCIsIGNvbnZlcnQpOyAvLyBDYWxsZWQgaW4gQ29tcGFjdCBtb2RlXHJcbiAgICB9XHJcbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/builtins/general/24hour.js\n");
/***/ }),
/***/ "./src/builtins/general/classnormalizer.js":
/*!*************************************************!*\
!*** ./src/builtins/general/classnormalizer.js ***!
\*************************************************/
/*! exports provided: default */
/***/ (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_modules_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../modules/modules.js */ \"./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_modules_js__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_modules_js__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");
/***/ }),
/***/ "./src/builtins/general/publicservers.js":
/*!***********************************************!*\
!*** ./src/builtins/general/publicservers.js ***!
\***********************************************/
/*! exports provided: default */
/***/ (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_modules_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../modules/modules.js */ \"./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_modules_js__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_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].find(m => m.default && m.default.displayName == \"NavigableGuilds\");\n const GuildListOld = _modules_modules_js__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_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].query(\"#bd-pub-li\").remove();\n }\n\n _appendButton() {\n const wrapper = _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"DiscordModules\"].GuildClasses.wrapper.split(\" \")[0];\n const guilds = _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].query(`.${wrapper} .scroller-2TZvBN >:first-child`);\n _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].after(guilds, this.button);\n }\n\n openPublicServers() {\n LayerStack.pushLayer(() => _modules_modules_js__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_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].createElement(`
`);\n const label = _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].createElement(`
${_modules_modules_js__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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYnVpbHRpbnMvZ2VuZXJhbC9wdWJsaWNzZXJ2ZXJzLmpzPzhiN2UiXSwibmFtZXMiOlsiTGF5ZXJTdGFjayIsIldlYnBhY2tNb2R1bGVzIiwiZ2V0QnlQcm9wcyIsIlB1YmxpY1NlcnZlcnMiLCJCdWlsdGluIiwibmFtZSIsImNhdGVnb3J5IiwiaWQiLCJlbmFibGVkIiwiR3VpbGRMaXN0IiwiZmluZCIsIm0iLCJkZWZhdWx0IiwiZGlzcGxheU5hbWUiLCJHdWlsZExpc3RPbGQiLCJmaW5kQnlEaXNwbGF5TmFtZSIsIndhcm4iLCJndWlsZFBhdGNoIiwiYWZ0ZXIiLCJwcm90b3R5cGUiLCJfYXBwZW5kQnV0dG9uIiwiZGlzYWJsZWQiLCJ1bnBhdGNoQWxsIiwiRE9NIiwicXVlcnkiLCJyZW1vdmUiLCJ3cmFwcGVyIiwiRGlzY29yZE1vZHVsZXMiLCJHdWlsZENsYXNzZXMiLCJzcGxpdCIsImd1aWxkcyIsImJ1dHRvbiIsIm9wZW5QdWJsaWNTZXJ2ZXJzIiwicHVzaExheWVyIiwiUmVhY3QiLCJjcmVhdGVFbGVtZW50IiwiUHVibGljU2VydmVyc01lbnUiLCJjbG9zZSIsInBvcExheWVyIiwiYnRuIiwibGlzdEl0ZW0iLCJsYWJlbCIsImNpcmNsZUJ1dHRvbk1hc2siLCJTdHJpbmdzIiwiYWRkRXZlbnRMaXN0ZW5lciIsImFwcGVuZCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFFQSxNQUFNQSxVQUFVLEdBQUdDLGtFQUFjLENBQUNDLFVBQWYsQ0FBMEIsV0FBMUIsQ0FBbkI7QUFFZSxtRUFBSSxNQUFNQyxhQUFOLFNBQTRCQyx3REFBNUIsQ0FBb0M7QUFDbkQsTUFBSUMsSUFBSixHQUFXO0FBQUMsV0FBTyxlQUFQO0FBQXdCOztBQUNwQyxNQUFJQyxRQUFKLEdBQWU7QUFBQyxXQUFPLFNBQVA7QUFBa0I7O0FBQ2xDLE1BQUlDLEVBQUosR0FBUztBQUFDLFdBQU8sZUFBUDtBQUF3Qjs7QUFFbENDLFNBQU8sR0FBRztBQUNOLFVBQU1DLFNBQVMsR0FBR1Isa0VBQWMsQ0FBQ1MsSUFBZixDQUFvQkMsQ0FBQyxJQUFJQSxDQUFDLENBQUNDLE9BQUYsSUFBYUQsQ0FBQyxDQUFDQyxPQUFGLENBQVVDLFdBQVYsSUFBeUIsaUJBQS9ELENBQWxCO0FBQ0EsVUFBTUMsWUFBWSxHQUFHYixrRUFBYyxDQUFDYyxpQkFBZixDQUFpQyxRQUFqQyxDQUFyQjtBQUNBLFFBQUksQ0FBQ04sU0FBRCxJQUFjLENBQUNLLFlBQW5CLEVBQWlDLEtBQUtFLElBQUwsQ0FBVSxnQ0FBVjtBQUNqQyxTQUFLQyxVQUFMLEdBQWtCLEtBQUtDLEtBQUwsQ0FBV1QsU0FBUyxHQUFHQSxTQUFILEdBQWVLLFlBQVksQ0FBQ0ssU0FBaEQsRUFBMkRWLFNBQVMsR0FBRyxTQUFILEdBQWUsUUFBbkYsRUFBNkYsS0FBS1csYUFBbEcsQ0FBbEI7O0FBQ0EsU0FBS0EsYUFBTDtBQUNIOztBQUVEQyxVQUFRLEdBQUc7QUFDUCxTQUFLQyxVQUFMO0FBQ0FDLDJEQUFHLENBQUNDLEtBQUosQ0FBVSxZQUFWLEVBQXdCQyxNQUF4QjtBQUNIOztBQUVETCxlQUFhLEdBQUc7QUFDWixVQUFNTSxPQUFPLEdBQUdDLGtFQUFjLENBQUNDLFlBQWYsQ0FBNEJGLE9BQTVCLENBQW9DRyxLQUFwQyxDQUEwQyxHQUExQyxFQUErQyxDQUEvQyxDQUFoQjtBQUNBLFVBQU1DLE1BQU0sR0FBR1AsdURBQUcsQ0FBQ0MsS0FBSixDQUFXLElBQUdFLE9BQVEsaUNBQXRCLENBQWY7QUFDQUgsMkRBQUcsQ0FBQ0wsS0FBSixDQUFVWSxNQUFWLEVBQWtCLEtBQUtDLE1BQXZCO0FBQ0g7O0FBRURDLG1CQUFpQixHQUFHO0FBQ2hCaEMsY0FBVSxDQUFDaUMsU0FBWCxDQUFxQixNQUFNTixrRUFBYyxDQUFDTyxLQUFmLENBQXFCQyxhQUFyQixDQUFtQ0MsOERBQW5DLEVBQXNEO0FBQUNDLFdBQUssRUFBRXJDLFVBQVUsQ0FBQ3NDO0FBQW5CLEtBQXRELENBQTNCO0FBQ0g7O0FBRUQsTUFBSVAsTUFBSixHQUFhO0FBQ1QsVUFBTVEsR0FBRyxHQUFHaEIsdURBQUcsQ0FBQ1ksYUFBSixDQUFtQiw4QkFBNkJSLGtFQUFjLENBQUNDLFlBQWYsQ0FBNEJZLFFBQVMsSUFBckYsQ0FBWjtBQUNBLFVBQU1DLEtBQUssR0FBR2xCLHVEQUFHLENBQUNZLGFBQUosQ0FBbUIsa0NBQWlDLG9CQUFvQlIsa0VBQWMsQ0FBQ0MsWUFBZixDQUE0QmMsZ0JBQWlCLEtBQUlDLDJEQUFPLENBQUN4QyxhQUFSLENBQXNCNEIsTUFBTyxRQUF0SixDQUFkO0FBQ0FVLFNBQUssQ0FBQ0csZ0JBQU4sQ0FBdUIsT0FBdkIsRUFBZ0MsTUFBTTtBQUFDLFdBQUtaLGlCQUFMO0FBQTBCLEtBQWpFO0FBQ0FPLE9BQUcsQ0FBQ00sTUFBSixDQUFXSixLQUFYO0FBQ0EsV0FBT0YsR0FBUDtBQUNIOztBQWxDa0QsQ0FBeEMsRUFBZiIsImZpbGUiOiIuL3NyYy9idWlsdGlucy9nZW5lcmFsL3B1YmxpY3NlcnZlcnMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQnVpbHRpbiBmcm9tIFwiLi4vLi4vc3RydWN0cy9idWlsdGluXCI7XHJcbmltcG9ydCB7RGlzY29yZE1vZHVsZXMsIFdlYnBhY2tNb2R1bGVzLCBTdHJpbmdzLCBET019IGZyb20gXCJtb2R1bGVzXCI7XHJcbmltcG9ydCBQdWJsaWNTZXJ2ZXJzTWVudSBmcm9tIFwiLi4vLi4vdWkvcHVibGljc2VydmVycy9tZW51XCI7XHJcblxyXG5jb25zdCBMYXllclN0YWNrID0gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcInB1c2hMYXllclwiKTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IG5ldyBjbGFzcyBQdWJsaWNTZXJ2ZXJzIGV4dGVuZHMgQnVpbHRpbiB7XHJcbiAgICBnZXQgbmFtZSgpIHtyZXR1cm4gXCJQdWJsaWNTZXJ2ZXJzXCI7fVxyXG4gICAgZ2V0IGNhdGVnb3J5KCkge3JldHVybiBcImdlbmVyYWxcIjt9XHJcbiAgICBnZXQgaWQoKSB7cmV0dXJuIFwicHVibGljU2VydmVyc1wiO31cclxuXHJcbiAgICBlbmFibGVkKCkge1xyXG4gICAgICAgIGNvbnN0IEd1aWxkTGlzdCA9IFdlYnBhY2tNb2R1bGVzLmZpbmQobSA9PiBtLmRlZmF1bHQgJiYgbS5kZWZhdWx0LmRpc3BsYXlOYW1lID09IFwiTmF2aWdhYmxlR3VpbGRzXCIpO1xyXG4gICAgICAgIGNvbnN0IEd1aWxkTGlzdE9sZCA9IFdlYnBhY2tNb2R1bGVzLmZpbmRCeURpc3BsYXlOYW1lKFwiR3VpbGRzXCIpO1xyXG4gICAgICAgIGlmICghR3VpbGRMaXN0ICYmICFHdWlsZExpc3RPbGQpIHRoaXMud2FybihcIkNhbid0IGZpbmQgR3VpbGRMaXN0IGNvbXBvbmVudFwiKTtcclxuICAgICAgICB0aGlzLmd1aWxkUGF0Y2ggPSB0aGlzLmFmdGVyKEd1aWxkTGlzdCA/IEd1aWxkTGlzdCA6IEd1aWxkTGlzdE9sZC5wcm90b3R5cGUsIEd1aWxkTGlzdCA/IFwiZGVmYXVsdFwiIDogXCJyZW5kZXJcIiwgdGhpcy5fYXBwZW5kQnV0dG9uKTtcclxuICAgICAgICB0aGlzLl9hcHBlbmRCdXR0b24oKTtcclxuICAgIH1cclxuXHJcbiAgICBkaXNhYmxlZCgpIHtcclxuICAgICAgICB0aGlzLnVucGF0Y2hBbGwoKTtcclxuICAgICAgICBET00ucXVlcnkoXCIjYmQtcHViLWxpXCIpLnJlbW92ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIF9hcHBlbmRCdXR0b24oKSB7XHJcbiAgICAgICAgY29uc3Qgd3JhcHBlciA9IERpc2NvcmRNb2R1bGVzLkd1aWxkQ2xhc3Nlcy53cmFwcGVyLnNwbGl0KFwiIFwiKVswXTtcclxuICAgICAgICBjb25zdCBndWlsZHMgPSBET00ucXVlcnkoYC4ke3dyYXBwZXJ9IC5zY3JvbGxlci0yVFp2Qk4gPjpmaXJzdC1jaGlsZGApO1xyXG4gICAgICAgIERPTS5hZnRlcihndWlsZHMsIHRoaXMuYnV0dG9uKTtcclxuICAgIH1cclxuXHJcbiAgICBvcGVuUHVibGljU2VydmVycygpIHtcclxuICAgICAgICBMYXllclN0YWNrLnB1c2hMYXllcigoKSA9PiBEaXNjb3JkTW9kdWxlcy5SZWFjdC5jcmVhdGVFbGVtZW50KFB1YmxpY1NlcnZlcnNNZW51LCB7Y2xvc2U6IExheWVyU3RhY2sucG9wTGF5ZXJ9KSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGJ1dHRvbigpIHtcclxuICAgICAgICBjb25zdCBidG4gPSBET00uY3JlYXRlRWxlbWVudChgPGRpdiBpZD1cImJkLXB1Yi1saVwiIGNsYXNzPVwiJHtEaXNjb3JkTW9kdWxlcy5HdWlsZENsYXNzZXMubGlzdEl0ZW19XCI+YCk7XHJcbiAgICAgICAgY29uc3QgbGFiZWwgPSBET00uY3JlYXRlRWxlbWVudChgPGRpdiBpZD1cImJkLXB1Yi1idXR0b25cIiBjbGFzcz1cIiR7XCJ3cmFwcGVyLTI1ZVZJbiBcIiArIERpc2NvcmRNb2R1bGVzLkd1aWxkQ2xhc3Nlcy5jaXJjbGVCdXR0b25NYXNrfVwiPiR7U3RyaW5ncy5QdWJsaWNTZXJ2ZXJzLmJ1dHRvbn08L2Rpdj5gKTtcclxuICAgICAgICBsYWJlbC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgKCkgPT4ge3RoaXMub3BlblB1YmxpY1NlcnZlcnMoKTt9KTtcclxuICAgICAgICBidG4uYXBwZW5kKGxhYmVsKTtcclxuICAgICAgICByZXR1cm4gYnRuO1xyXG4gICAgfVxyXG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/builtins/general/publicservers.js\n");
/***/ }),
/***/ "./src/builtins/general/voicedisconnect.js":
/*!*************************************************!*\
!*** ./src/builtins/general/voicedisconnect.js ***!
\*************************************************/
/*! exports provided: default */
/***/ (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_modules_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../modules/modules.js */ \"./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_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"DiscordModules\"].ChannelActions.selectVoiceChannel(null, null);\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYnVpbHRpbnMvZ2VuZXJhbC92b2ljZWRpc2Nvbm5lY3QuanM/OThhZiJdLCJuYW1lcyI6WyJEYXJrTW9kZSIsIkJ1aWx0aW4iLCJuYW1lIiwiY2F0ZWdvcnkiLCJpZCIsImNvbnN0cnVjdG9yIiwiYmVmb3JlVW5sb2FkIiwiYmluZCIsImVuYWJsZWQiLCJ3aW5kb3ciLCJhZGRFdmVudExpc3RlbmVyIiwiZGlzYWJsZWQiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiRGlzY29yZE1vZHVsZXMiLCJDaGFubmVsQWN0aW9ucyIsInNlbGVjdFZvaWNlQ2hhbm5lbCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUVlLG1FQUFJLE1BQU1BLFFBQU4sU0FBdUJDLHdEQUF2QixDQUErQjtBQUM5QyxNQUFJQyxJQUFKLEdBQVc7QUFBQyxXQUFPLGlCQUFQO0FBQTBCOztBQUN0QyxNQUFJQyxRQUFKLEdBQWU7QUFBQyxXQUFPLFNBQVA7QUFBa0I7O0FBQ2xDLE1BQUlDLEVBQUosR0FBUztBQUFDLFdBQU8saUJBQVA7QUFBMEI7O0FBRXBDQyxhQUFXLEdBQUc7QUFDVjtBQUNBLFNBQUtDLFlBQUwsR0FBb0IsS0FBS0EsWUFBTCxDQUFrQkMsSUFBbEIsQ0FBdUIsSUFBdkIsQ0FBcEI7QUFDSDs7QUFFREMsU0FBTyxHQUFHO0FBQ05DLFVBQU0sQ0FBQ0MsZ0JBQVAsQ0FBd0IsY0FBeEIsRUFBd0MsS0FBS0osWUFBN0M7QUFDSDs7QUFFREssVUFBUSxHQUFHO0FBQ1BGLFVBQU0sQ0FBQ0csbUJBQVAsQ0FBMkIsY0FBM0IsRUFBMkMsS0FBS04sWUFBaEQ7QUFDSDs7QUFFREEsY0FBWSxHQUFHO0FBQ1hPLHNFQUFjLENBQUNDLGNBQWYsQ0FBOEJDLGtCQUE5QixDQUFpRCxJQUFqRCxFQUF1RCxJQUF2RDtBQUNIOztBQXBCNkMsQ0FBbkMsRUFBZiIsImZpbGUiOiIuL3NyYy9idWlsdGlucy9nZW5lcmFsL3ZvaWNlZGlzY29ubmVjdC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCdWlsdGluIGZyb20gXCIuLi8uLi9zdHJ1Y3RzL2J1aWx0aW5cIjtcclxuaW1wb3J0IHtEaXNjb3JkTW9kdWxlc30gZnJvbSBcIm1vZHVsZXNcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IG5ldyBjbGFzcyBEYXJrTW9kZSBleHRlbmRzIEJ1aWx0aW4ge1xyXG4gICAgZ2V0IG5hbWUoKSB7cmV0dXJuIFwiVm9pY2VEaXNjb25uZWN0XCI7fVxyXG4gICAgZ2V0IGNhdGVnb3J5KCkge3JldHVybiBcImdlbmVyYWxcIjt9XHJcbiAgICBnZXQgaWQoKSB7cmV0dXJuIFwidm9pY2VEaXNjb25uZWN0XCI7fVxyXG5cclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgdGhpcy5iZWZvcmVVbmxvYWQgPSB0aGlzLmJlZm9yZVVubG9hZC5iaW5kKHRoaXMpO1xyXG4gICAgfVxyXG5cclxuICAgIGVuYWJsZWQoKSB7XHJcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJiZWZvcmV1bmxvYWRcIiwgdGhpcy5iZWZvcmVVbmxvYWQpO1xyXG4gICAgfVxyXG5cclxuICAgIGRpc2FibGVkKCkge1xyXG4gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwiYmVmb3JldW5sb2FkXCIsIHRoaXMuYmVmb3JlVW5sb2FkKTtcclxuICAgIH1cclxuXHJcbiAgICBiZWZvcmVVbmxvYWQoKSB7XHJcbiAgICAgICAgRGlzY29yZE1vZHVsZXMuQ2hhbm5lbEFjdGlvbnMuc2VsZWN0Vm9pY2VDaGFubmVsKG51bGwsIG51bGwpO1xyXG4gICAgfVxyXG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/builtins/general/voicedisconnect.js\n");
/***/ }),
/***/ "./src/builtins/windowprefs.js":
/*!*************************************!*\
!*** ./src/builtins/windowprefs.js ***!
\*************************************/
/*! exports provided: default */
/***/ (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_modules_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../modules/modules.js */ \"./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_modules_js__WEBPACK_IMPORTED_MODULE_2__[\"Strings\"].WindowPrefs.enabledInfo);\n }\n\n disabled() {\n this.deleteWindowPreference(\"transparent\");\n this.deleteWindowPreference(\"backgroundColor\");\n this.showModal(_modules_modules_js__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_modules_js__WEBPACK_IMPORTED_MODULE_2__[\"Strings\"].Modals.additionalInfo, info, {\n confirmText: _modules_modules_js__WEBPACK_IMPORTED_MODULE_2__[\"Strings\"].Modals.restartNow,\n cancelText: _modules_modules_js__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_modules_js__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].getData(\"windowprefs\") || {};\n return prefs[key];\n }\n\n setWindowPreference(key, value) {\n const prefs = _modules_modules_js__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].getData(\"windowprefs\") || {};\n prefs[key] = value;\n _modules_modules_js__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].setData(\"windowprefs\", prefs);\n }\n\n deleteWindowPreference(key) {\n const prefs = _modules_modules_js__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].getData(\"windowprefs\") || {};\n delete prefs[key];\n _modules_modules_js__WEBPACK_IMPORTED_MODULE_2__[\"DataStore\"].setData(\"windowprefs\", prefs);\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvYnVpbHRpbnMvd2luZG93cHJlZnMuanM/YjRhNyJdLCJuYW1lcyI6WyJXaW5kb3dQcmVmcyIsIkJ1aWx0aW4iLCJuYW1lIiwiY2F0ZWdvcnkiLCJpZCIsImVuYWJsZWQiLCJzZXRXaW5kb3dQcmVmZXJlbmNlIiwic2hvd01vZGFsIiwiU3RyaW5ncyIsImVuYWJsZWRJbmZvIiwiZGlzYWJsZWQiLCJkZWxldGVXaW5kb3dQcmVmZXJlbmNlIiwiZGlzYWJsZWRJbmZvIiwiaW5mbyIsImluaXRpYWxpemVkIiwiTW9kYWxzIiwic2hvd0NvbmZpcm1hdGlvbk1vZGFsIiwiYWRkaXRpb25hbEluZm8iLCJjb25maXJtVGV4dCIsInJlc3RhcnROb3ciLCJjYW5jZWxUZXh0IiwicmVzdGFydExhdGVyIiwib25Db25maXJtIiwiYXBwIiwicmVxdWlyZSIsInJlbW90ZSIsInJlbGF1bmNoIiwiZXhpdCIsImdldFdpbmRvd1ByZWZlcmVuY2UiLCJrZXkiLCJwcmVmcyIsIkRhdGFTdG9yZSIsImdldERhdGEiLCJ2YWx1ZSIsInNldERhdGEiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBRWUsbUVBQUksTUFBTUEsV0FBTixTQUEwQkMsd0RBQTFCLENBQWtDO0FBQ2pELE1BQUlDLElBQUosR0FBVztBQUFDLFdBQU8sYUFBUDtBQUFzQjs7QUFDbEMsTUFBSUMsUUFBSixHQUFlO0FBQUMsV0FBTyxRQUFQO0FBQWlCOztBQUNqQyxNQUFJQyxFQUFKLEdBQVM7QUFBQyxXQUFPLGNBQVA7QUFBdUI7O0FBRWpDQyxTQUFPLEdBQUc7QUFDTixTQUFLQyxtQkFBTCxDQUF5QixhQUF6QixFQUF3QyxJQUF4QztBQUNBLFNBQUtBLG1CQUFMLENBQXlCLGlCQUF6QixFQUE0QyxXQUE1QztBQUNBLFNBQUtDLFNBQUwsQ0FBZUMsMkRBQU8sQ0FBQ1IsV0FBUixDQUFvQlMsV0FBbkM7QUFDSDs7QUFFREMsVUFBUSxHQUFHO0FBQ1AsU0FBS0Msc0JBQUwsQ0FBNEIsYUFBNUI7QUFDQSxTQUFLQSxzQkFBTCxDQUE0QixpQkFBNUI7QUFDQSxTQUFLSixTQUFMLENBQWVDLDJEQUFPLENBQUNSLFdBQVIsQ0FBb0JZLFlBQW5DO0FBQ0g7O0FBRURMLFdBQVMsQ0FBQ00sSUFBRCxFQUFPO0FBQ1osUUFBSSxDQUFDLEtBQUtDLFdBQVYsRUFBdUI7QUFDdkJDLHNEQUFNLENBQUNDLHFCQUFQLENBQTZCUiwyREFBTyxDQUFDTyxNQUFSLENBQWVFLGNBQTVDLEVBQTRESixJQUE1RCxFQUFrRTtBQUM5REssaUJBQVcsRUFBRVYsMkRBQU8sQ0FBQ08sTUFBUixDQUFlSSxVQURrQztBQUU5REMsZ0JBQVUsRUFBRVosMkRBQU8sQ0FBQ08sTUFBUixDQUFlTSxZQUZtQztBQUc5REMsZUFBUyxFQUFFLE1BQU07QUFDYixjQUFNQyxHQUFHLEdBQUdDLG1CQUFPLENBQUMsMEJBQUQsQ0FBUCxDQUFvQkMsTUFBcEIsQ0FBMkJGLEdBQXZDOztBQUNBQSxXQUFHLENBQUNHLFFBQUo7QUFDQUgsV0FBRyxDQUFDSSxJQUFKO0FBQ0g7QUFQNkQsS0FBbEU7QUFTSDs7QUFFREMscUJBQW1CLENBQUNDLEdBQUQsRUFBTTtBQUNyQixVQUFNQyxLQUFLLEdBQUdDLDZEQUFTLENBQUNDLE9BQVYsQ0FBa0IsYUFBbEIsS0FBb0MsRUFBbEQ7QUFDQSxXQUFPRixLQUFLLENBQUNELEdBQUQsQ0FBWjtBQUNIOztBQUVEdkIscUJBQW1CLENBQUN1QixHQUFELEVBQU1JLEtBQU4sRUFBYTtBQUM1QixVQUFNSCxLQUFLLEdBQUdDLDZEQUFTLENBQUNDLE9BQVYsQ0FBa0IsYUFBbEIsS0FBb0MsRUFBbEQ7QUFDQUYsU0FBSyxDQUFDRCxHQUFELENBQUwsR0FBYUksS0FBYjtBQUNBRixpRUFBUyxDQUFDRyxPQUFWLENBQWtCLGFBQWxCLEVBQWlDSixLQUFqQztBQUNIOztBQUVEbkIsd0JBQXNCLENBQUNrQixHQUFELEVBQU07QUFDeEIsVUFBTUMsS0FBSyxHQUFHQyw2REFBUyxDQUFDQyxPQUFWLENBQWtCLGFBQWxCLEtBQW9DLEVBQWxEO0FBQ0EsV0FBT0YsS0FBSyxDQUFDRCxHQUFELENBQVo7QUFDQUUsaUVBQVMsQ0FBQ0csT0FBVixDQUFrQixhQUFsQixFQUFpQ0osS0FBakM7QUFDSDs7QUE3Q2dELENBQXRDLEVBQWYiLCJmaWxlIjoiLi9zcmMvYnVpbHRpbnMvd2luZG93cHJlZnMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQnVpbHRpbiBmcm9tIFwiLi4vc3RydWN0cy9idWlsdGluXCI7XHJcbmltcG9ydCBNb2RhbHMgZnJvbSBcIi4uL3VpL21vZGFsc1wiO1xyXG5pbXBvcnQge0RhdGFTdG9yZSwgU3RyaW5nc30gZnJvbSBcIm1vZHVsZXNcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IG5ldyBjbGFzcyBXaW5kb3dQcmVmcyBleHRlbmRzIEJ1aWx0aW4ge1xyXG4gICAgZ2V0IG5hbWUoKSB7cmV0dXJuIFwiV2luZG93UHJlZnNcIjt9XHJcbiAgICBnZXQgY2F0ZWdvcnkoKSB7cmV0dXJuIFwid2luZG93XCI7fVxyXG4gICAgZ2V0IGlkKCkge3JldHVybiBcInRyYW5zcGFyZW5jeVwiO31cclxuXHJcbiAgICBlbmFibGVkKCkge1xyXG4gICAgICAgIHRoaXMuc2V0V2luZG93UHJlZmVyZW5jZShcInRyYW5zcGFyZW50XCIsIHRydWUpO1xyXG4gICAgICAgIHRoaXMuc2V0V2luZG93UHJlZmVyZW5jZShcImJhY2tncm91bmRDb2xvclwiLCBcIiMwMDAwMDAwMFwiKTtcclxuICAgICAgICB0aGlzLnNob3dNb2RhbChTdHJpbmdzLldpbmRvd1ByZWZzLmVuYWJsZWRJbmZvKTtcclxuICAgIH1cclxuXHJcbiAgICBkaXNhYmxlZCgpIHtcclxuICAgICAgICB0aGlzLmRlbGV0ZVdpbmRvd1ByZWZlcmVuY2UoXCJ0cmFuc3BhcmVudFwiKTtcclxuICAgICAgICB0aGlzLmRlbGV0ZVdpbmRvd1ByZWZlcmVuY2UoXCJiYWNrZ3JvdW5kQ29sb3JcIik7XHJcbiAgICAgICAgdGhpcy5zaG93TW9kYWwoU3RyaW5ncy5XaW5kb3dQcmVmcy5kaXNhYmxlZEluZm8pO1xyXG4gICAgfVxyXG5cclxuICAgIHNob3dNb2RhbChpbmZvKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmluaXRpYWxpemVkKSByZXR1cm47XHJcbiAgICAgICAgTW9kYWxzLnNob3dDb25maXJtYXRpb25Nb2RhbChTdHJpbmdzLk1vZGFscy5hZGRpdGlvbmFsSW5mbywgaW5mbywge1xyXG4gICAgICAgICAgICBjb25maXJtVGV4dDogU3RyaW5ncy5Nb2RhbHMucmVzdGFydE5vdyxcclxuICAgICAgICAgICAgY2FuY2VsVGV4dDogU3RyaW5ncy5Nb2RhbHMucmVzdGFydExhdGVyLFxyXG4gICAgICAgICAgICBvbkNvbmZpcm06ICgpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGFwcCA9IHJlcXVpcmUoXCJlbGVjdHJvblwiKS5yZW1vdGUuYXBwO1xyXG4gICAgICAgICAgICAgICAgYXBwLnJlbGF1bmNoKCk7XHJcbiAgICAgICAgICAgICAgICBhcHAuZXhpdCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0V2luZG93UHJlZmVyZW5jZShrZXkpIHtcclxuICAgICAgICBjb25zdCBwcmVmcyA9IERhdGFTdG9yZS5nZXREYXRhKFwid2luZG93cHJlZnNcIikgfHwge307XHJcbiAgICAgICAgcmV0dXJuIHByZWZzW2tleV07XHJcbiAgICB9XHJcblxyXG4gICAgc2V0V2luZG93UHJlZmVyZW5jZShrZXksIHZhbHVlKSB7XHJcbiAgICAgICAgY29uc3QgcHJlZnMgPSBEYXRhU3RvcmUuZ2V0RGF0YShcIndpbmRvd3ByZWZzXCIpIHx8IHt9O1xyXG4gICAgICAgIHByZWZzW2tleV0gPSB2YWx1ZTtcclxuICAgICAgICBEYXRhU3RvcmUuc2V0RGF0YShcIndpbmRvd3ByZWZzXCIsIHByZWZzKTtcclxuICAgIH1cclxuXHJcbiAgICBkZWxldGVXaW5kb3dQcmVmZXJlbmNlKGtleSkge1xyXG4gICAgICAgIGNvbnN0IHByZWZzID0gRGF0YVN0b3JlLmdldERhdGEoXCJ3aW5kb3dwcmVmc1wiKSB8fCB7fTtcclxuICAgICAgICBkZWxldGUgcHJlZnNba2V5XTtcclxuICAgICAgICBEYXRhU3RvcmUuc2V0RGF0YShcIndpbmRvd3ByZWZzXCIsIHByZWZzKTtcclxuICAgIH1cclxufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/builtins/windowprefs.js\n");
/***/ }),
/***/ "./src/data/changelog.js":
/*!*******************************!*\
!*** ./src/data/changelog.js ***!
\*******************************/
/*! exports provided: default */
/***/ (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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvZGF0YS9jaGFuZ2Vsb2cuanM/Zjg5YyJdLCJuYW1lcyI6WyJkZXNjcmlwdGlvbiIsImNoYW5nZXMiLCJ0aXRsZSIsIml0ZW1zIiwidHlwZSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBZTtBQUNYQSxhQUFXLEVBQUUsc0RBREY7QUFFWEMsU0FBTyxFQUFFLENBQ0w7QUFDSUMsU0FBSyxFQUFFLGFBRFg7QUFFSUMsU0FBSyxFQUFFLENBQ0gsaUpBREcsRUFFSCwwSkFGRztBQUZYLEdBREssRUFRTDtBQUNJRCxTQUFLLEVBQUUsT0FEWDtBQUVJRSxRQUFJLEVBQUUsT0FGVjtBQUdJRCxTQUFLLEVBQUUsQ0FDSCw0Q0FERyxFQUVILG9DQUZHLEVBR0gsNEZBSEc7QUFIWCxHQVJLLEVBaUJMO0FBQ0lELFNBQUssRUFBRSxhQURYO0FBRUlFLFFBQUksRUFBRSxVQUZWO0FBR0lELFNBQUssRUFBRSxDQUNILHVJQURHLEVBRUgsb0tBRkc7QUFIWCxHQWpCSztBQUZFLENBQWYiLCJmaWxlIjoiLi9zcmMvZGF0YS9jaGFuZ2Vsb2cuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCB7XHJcbiAgICBkZXNjcmlwdGlvbjogXCJEb24ndCBiZSBzaG9ja2VkLCB0aGlzIG1vZGFsIGlzIHN1cHBvc2VkIHRvIGJlIGhlcmUuXCIsXHJcbiAgICBjaGFuZ2VzOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICB0aXRsZTogXCJXaGF0J3MgTmV3P1wiLFxyXG4gICAgICAgICAgICBpdGVtczogW1xyXG4gICAgICAgICAgICAgICAgXCIqKkJhbmRhZ2VkQkQgd2lsbCBub3cga2VlcCB5b3UgdXBkYXRlZCB3aXRoIGNoYW5nZWxvZ3MhKiogSSB3aWxsIHRyeSB0byBvbmx5IHNob3cgYSBjaGFuZ2Vsb2cgd2hlbiB0aGVyZSdzIG1vcmUgdGhhbiBhIHRpbnkgb3IgaW50ZXJuYWwgY2hhbmdlLlwiLFxyXG4gICAgICAgICAgICAgICAgXCIqKlR3aXR0ZXIgKEBCYW5kYWdlZEJEKSoqIEkgY3JlYXRlZCBhIFR3aXR0ZXIgdG8gdHJ5IGFuZCBwcm92aWRlIHN1cHBvcnQgYW5kIHN1Y2ggZm9yIHRob3NlIHdpdGhvdXQgYWNjZXNzIHRvIHRoZSBzZXJ2ZXIuIGh0dHBzOi8vVHdpdHRlci5jb20vQmFuZGFnZWRCRFwiXHJcbiAgICAgICAgICAgIF1cclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgdGl0bGU6IFwiRml4ZXNcIixcclxuICAgICAgICAgICAgdHlwZTogXCJmaXhlZFwiLFxyXG4gICAgICAgICAgICBpdGVtczogW1xyXG4gICAgICAgICAgICAgICAgXCIqKkNvbG9yZWQgVGV4dCoqIG9wdGlvbiBzaG91bGQgd29yayBhZ2Fpbi5cIixcclxuICAgICAgICAgICAgICAgIFwiKipFbW90ZXMqKiBzaG91bGQgc2hvdyB1cCBpbiBjaGF0LlwiLFxyXG4gICAgICAgICAgICAgICAgXCJGaXhlZCBhIGJ1ZyB3aGVyZSBCQkQgYXR0ZW1wdGVkIHRvIHBhdGNoIHRoZSBUYWJCYXIgbW9kdWxlIGluY29ycmVjdGx5LiAoVGhhbmtzLCBEZXZpbEJybylcIlxyXG4gICAgICAgICAgICBdXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHRpdGxlOiBcIk1pbm9yIFN0dWZmXCIsXHJcbiAgICAgICAgICAgIHR5cGU6IFwiaW1wcm92ZWRcIixcclxuICAgICAgICAgICAgaXRlbXM6IFtcclxuICAgICAgICAgICAgICAgIFwiKipDb2xvdXItPkNvbG9yLioqIFN3YXBwZWQgdG8gdXNpbmcgRW5nbGlzaC1VUyBzcGVsbGluZyBieSBkZWZhdWx0IHRvIGJlIGNvbnNpc3RlbnQsIGFuZCB0byBwb3RlbnRpYWxseSBiZSBwcmVwYXJlZCBmb3IgbG9jYWxpemF0aW9uLlwiLFxyXG4gICAgICAgICAgICAgICAgXCIqKlZlcnNpb25zIHNpbXBsaWZpZWQuKiogVGhlIEJhbmRhZ2VkQkQgdmVyc2lvbiBub3cgaW50ZWdyYXRlcyBpbnRvIERpc2NvcmQncyBhdCB0aGUgYm90dG9tLWxlZnQgb2Ygc2V0dGluZ3MgaW5zdGVhZCBvZiByYW5kb21seSBiZWluZyBhIHBhcnQgb2YgdGhlIHNldHRpbmcgbGlzdC5cIlxyXG4gICAgICAgICAgICBdXHJcbiAgICAgICAgfVxyXG4gICAgXVxyXG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/data/changelog.js\n");
/***/ }),
/***/ "./src/data/config.js":
/*!****************************!*\
!*** ./src/data/config.js ***!
\****************************/
/*! exports provided: default */
/***/ (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 localPath: \"\",\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/NGJhYSJdLCJuYW1lcyI6WyJsb2NhbCIsImxvY2FsUGF0aCIsImxvY2FsU2VydmVyIiwibWluaWZpZWQiLCJ2ZXJzaW9uIiwiYnJhbmNoIiwicmVwbyIsIm1pblN1cHBvcnRlZFZlcnNpb24iLCJiYmRWZXJzaW9uIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFlO0FBQ1hBLE9BQUssRUFBRSxLQURJO0FBRVhDLFdBQVMsRUFBRSxFQUZBO0FBR1hDLGFBQVcsRUFBRSxrQkFIRjtBQUlYQyxVQUFRLEVBQUUsSUFKQztBQUtYQyxTQUFPLEVBQUUsT0FMRTtBQU1YQyxRQUFNLEVBQUUsUUFORztBQU9YQyxNQUFJLEVBQUUsU0FQSztBQVFYQyxxQkFBbUIsRUFBRSxPQVJWO0FBU1hDLFlBQVUsRUFBRTtBQVRELENBQWYiLCJmaWxlIjoiLi9zcmMvZGF0YS9jb25maWcuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCB7XHJcbiAgICBsb2NhbDogZmFsc2UsXHJcbiAgICBsb2NhbFBhdGg6IFwiXCIsXHJcbiAgICBsb2NhbFNlcnZlcjogXCIvL2xvY2FsaG9zdDo4MDgwXCIsXHJcbiAgICBtaW5pZmllZDogdHJ1ZSxcclxuICAgIHZlcnNpb246IFwiMC4zLjBcIixcclxuICAgIGJyYW5jaDogXCJtYXN0ZXJcIixcclxuICAgIHJlcG86IFwicmF1ZW56aVwiLFxyXG4gICAgbWluU3VwcG9ydGVkVmVyc2lvbjogXCIwLjMuMFwiLFxyXG4gICAgYmJkVmVyc2lvbjogXCIxLjAuMFwiXHJcbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/data/config.js\n");
/***/ }),
/***/ "./src/data/data.js":
/*!**************************!*\
!*** ./src/data/data.js ***!
\**************************/
/*! exports provided: Config, EmoteConfig, SettingsConfig, Strings, Changelog */
/***/ (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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvZGF0YS9kYXRhLmpzP2Q1YzciXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL3NyYy9kYXRhL2RhdGEuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQge2RlZmF1bHQgYXMgQ29uZmlnfSBmcm9tIFwiLi9jb25maWdcIjtcclxuZXhwb3J0IHtkZWZhdWx0IGFzIEVtb3RlQ29uZmlnfSBmcm9tIFwiLi9zZXR0aW5ncy9lbW90ZWNvbmZpZ1wiO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgU2V0dGluZ3NDb25maWd9IGZyb20gXCIuL3NldHRpbmdzL2NvbmZpZ1wiO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgU3RyaW5nc30gZnJvbSBcIi4vc3RyaW5nc1wiO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgQ2hhbmdlbG9nfSBmcm9tIFwiLi9jaGFuZ2Vsb2dcIjsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/data/data.js\n");
/***/ }),
/***/ "./src/data/settings/config.js":
/*!*************************************!*\
!*** ./src/data/settings/config.js ***!
\*************************************/
/*! exports provided: default */
/***/ (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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvZGF0YS9zZXR0aW5ncy9jb25maWcuanM/ZmY4ZSJdLCJuYW1lcyI6WyJ0eXBlIiwiaWQiLCJjb2xsYXBzaWJsZSIsInNldHRpbmdzIiwidmFsdWUiLCJlbmFibGVXaXRoIiwic2hvd24iLCJvcHRpb25zIiwiaGlkZGVuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFlLGdFQUNYO0FBQ0lBLE1BQUksRUFBRSxVQURWO0FBRUlDLElBQUUsRUFBRSxTQUZSO0FBR0lDLGFBQVcsRUFBRSxJQUhqQjtBQUlJQyxVQUFRLEVBQUUsQ0FDTjtBQUFDSCxRQUFJLEVBQUUsUUFBUDtBQUFpQkMsTUFBRSxFQUFFLFFBQXJCO0FBQStCRyxTQUFLLEVBQUU7QUFBdEMsR0FETSxFQUVOO0FBQUNKLFFBQUksRUFBRSxRQUFQO0FBQWlCQyxNQUFFLEVBQUUsZUFBckI7QUFBc0NHLFNBQUssRUFBRTtBQUE3QyxHQUZNLEVBR047QUFBQ0osUUFBSSxFQUFFLFFBQVA7QUFBaUJDLE1BQUUsRUFBRSxpQkFBckI7QUFBd0NHLFNBQUssRUFBRTtBQUEvQyxHQUhNLEVBSU47QUFBQ0osUUFBSSxFQUFFLFFBQVA7QUFBaUJDLE1BQUUsRUFBRSxnQkFBckI7QUFBdUNHLFNBQUssRUFBRTtBQUE5QyxHQUpNLEVBS047QUFBQ0osUUFBSSxFQUFFLFFBQVA7QUFBaUJDLE1BQUUsRUFBRSxpQkFBckI7QUFBd0NHLFNBQUssRUFBRTtBQUEvQyxHQUxNLEVBTU47QUFBQ0osUUFBSSxFQUFFLFFBQVA7QUFBaUJDLE1BQUUsRUFBRSxZQUFyQjtBQUFtQ0csU0FBSyxFQUFFO0FBQTFDLEdBTk07QUFKZCxDQURXLEVBY1g7QUFDSUosTUFBSSxFQUFFLFVBRFY7QUFFSUMsSUFBRSxFQUFFLFlBRlI7QUFHSUMsYUFBVyxFQUFFLElBSGpCO0FBSUlDLFVBQVEsRUFBRSxDQUNOO0FBQUNILFFBQUksRUFBRSxRQUFQO0FBQWlCQyxNQUFFLEVBQUUsV0FBckI7QUFBa0NHLFNBQUssRUFB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QUNILFFBQUksRUFBRSxRQUFQO0FBQWlCQyxNQUFFLEVBQUUsY0FBckI7QUFBcUNHLFNBQUssRUFBRTtBQUE1QyxHQURNLEVBRU47QUFBQ0osUUFBSSxFQUFFLFFBQVA7QUFBaUJDLE1BQUUsRUFBRSxPQUFyQjtBQUE4QkcsU0FBSyxFQUFFLEtBQXJDO0FBQTRDSSxVQUFNLEVBQUU7QUFBcEQsR0FGTTtBQUxkLENBNURXLENBQWYiLCJmaWxlIjoiLi9zcmMvZGF0YS9zZXR0aW5ncy9jb25maWcuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBbXHJcbiAgICB7XHJcbiAgICAgICAgdHlwZTogXCJjYXRlZ29yeVwiLFxyXG4gICAgICAgIGlkOiBcImdlbmVyYWxcIixcclxuICAgICAgICBjb2xsYXBzaWJsZTogdHJ1ZSxcclxuICAgICAgICBzZXR0aW5nczogW1xyXG4gICAgICAgICAgICB7dHlwZTogXCJzd2l0Y2hcIiwgaWQ6IFwiZW1vdGVzXCIsIHZhbHVlOiB0cnVlfSxcclxuICAgICAgICAgICAge3R5cGU6IFwic3dpdGNoXCIsIGlkOiBcInB1YmxpY1NlcnZlcnNcIiwgdmFsdWU6IHRydWV9LFxyXG4gICAgICAgICAgICB7dHlwZTogXCJzd2l0Y2hcIiwgaWQ6IFwidm9pY2VEaXNjb25uZWN0XCIsIHZhbHVlOiBmYWxzZX0sXHJcbiAgICAgICAgICAgIHt0eXBlOiBcInN3aXRjaFwiLCBpZDogXCJ0d2VudHlGb3VySG91clwiLCB2YWx1ZTogZmFsc2V9LFxyXG4gICAgICAgICAgICB7dHlwZTogXCJzd2l0Y2hcIiwgaWQ6IFwiY2xhc3NOb3JtYWxpemVyXCIsIHZhbHVlOiB0cnVlfSxcclxuICAgICAgICAgICAge3R5cGU6IFwic3dpdGNoXCIsIGlkOiBcInNob3dUb2FzdHNcIiwgdmFsdWU6IHRydWV9XHJcbiAgICAgICAgXVxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICB0eXBlOiBcImNhdGVnb3J5XCIsXHJcbiAgICAgICAgaWQ6IFwiYXBwZWFyYW5jZVwiLFxyXG4gICAgICAgIGNvbGxhcHNpYmxlOiB0cnVlLFxyXG4gICAgICAgIHNldHRpbmdzOiBbXHJcbiAgICAgICAgICAgIHt0eXBlOiBcInN3aXRjaFwiLCBpZDogXCJ2b2ljZU1vZGVcIiwgdmFsdWU6IGZhbHNlfSxcclxuICAgICAgICAgICAge3R5cGU6IFwic3dpdGNoXCIsIGlkOiBcIm1pbmltYWxNb2RlXCIsIHZhbHVlOiBmYWxzZX0sXHJcbiAgICAgICAgICAgIHt0eXBlOiBcInN3aXRjaFwiLCBpZDogXCJoaWRlQ2hhbm5lbHNcIiwgdmFsdWU6IGZhbHNlLCBlbmFibGVXaXRoOiBcIm1pbmltYWxNb2RlXCJ9LFxyXG4gICAgICAgICAgICB7dHlwZTogXCJzd2l0Y2hcIiwgaWQ6IFwiZGFya01vZGVcIiwgdmFsdWU6IHRydWV9LFxyXG4gICAgICAgICAgICB7dHlwZTogXCJzd2l0Y2hcIiwgaWQ6IFwiY29sb3JlZFRleHRcIiwgdmFsdWU6IGZhbHNlfVxyXG4gICAgICAgIF1cclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgdHlwZTogXCJjYXRlZ29yeVwiLFxyXG4gICAgICAgIGlkOiBcImFkZG9uc1wiLFxyXG4gICAgICAgIGNvbGxhcHNpYmxlOiB0cnVlLFxyXG4gICAgICAgIHNob3duOiBmYWxzZSxcclxuICAgICAgICBzZXR0aW5nczogW1xyXG4gICAgICAgICAgICB7dHlwZTogXCJzd2l0Y2hcIiwgaWQ6IFwiYWRkb25FcnJvcnNcIiwgdmFsdWU6IHRydWV9LFxyXG4gICAgICAgICAgICB7dHlwZTogXCJzd2l0Y2hcIiwgaWQ6IFwiYXV0b1Njcm9sbFwiLCB2YWx1ZTogdHJ1ZX0sXHJcbiAgICAgICAgICAgIHt0eXBlOiBcInN3aXRjaFwiLCBpZDogXCJhdXRvUmVsb2FkXCIsIHZhbHVlOiB0cnVlfSxcclxuICAgICAgICAgICAge3R5cGU6IFwiZHJvcGRvd25cIiwgaWQ6IFwiZWRpdEFjdGlvblwiLCB2YWx1ZTogXCJkZXRhY2hlZFwiLCBvcHRpb25zOiBbe3ZhbHVlOiBcImRldGFjaGVkXCJ9LCB7dmFsdWU6IFwic3lzdGVtXCJ9XX1cclxuICAgICAgICBdXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIHR5cGU6IFwiY2F0ZWdvcnlcIixcclxuICAgICAgICBpZDogXCJjdXN0b21jc3NcIixcclxuICAgICAgICBjb2xsYXBzaWJsZTogdHJ1ZSxcclxuICAgICAgICBzaG93bjogZmFsc2UsXHJcbiAgICAgICAgc2V0dGluZ3M6IFtcclxuICAgICAgICAgICAge3R5cGU6IFwic3dpdGNoXCIsIGlkOiBcImN1c3RvbWNzc1wiLCB2YWx1ZTogdHJ1ZX0sXHJcbiAgICAgICAgICAgIHt0eXBlOiBcInN3aXRjaFwiLCBpZDogXCJsaXZlVXBkYXRlXCIsIHZhbHVlOiBmYWxzZX0sXHJcbiAgICAgICAgICAgIHt0eXBlOiBcImRyb3Bkb3duXCIsIGlkOiBcIm9wZW5BY3Rpb25cIiwgdmFsdWU6IFwic2V0dGluZ3NcIiwgb3B0aW9uczogW3t2YWx1ZTogXCJzZXR0aW5nc1wifSwge3ZhbHVlOiBcImRldGFjaGVkXCJ9LCB7dmFsdWU6IFwic3lzdGVtXCJ9XX1cclxuICAgICAgICBdXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIHR5cGU6IFwiY2F0ZWdvcnlcIixcclxuICAgICAgICBpZDogXCJkZXZlbG9wZXJcIixcclxuICAgICAgICBjb2xsYXBzaWJsZTogdHJ1ZSxcclxuICAgICAgICBzaG93bjogZmFsc2UsXHJcbiAgICAgICAgc2V0dGluZ3M6IFtcclxuICAgICAgICAgICAge3R5cGU6IFwic3dpdGNoXCIsIGlkOiBcImRlYnVnZ2VySG90a2V5XCIsIHZhbHVlOiBmYWxzZX0sXHJcbiAgICAgICAgICAgIHt0eXBlOiBcInN3aXRjaFwiLCBpZDogXCJjb3B5U2VsZWN0b3JcIiwgdmFsdWU6IGZhbHNlfSxcclxuICAgICAgICAgICAge3R5cGU6IFwic3dpdGNoXCIsIGlkOiBcInJlYWN0RGV2VG9vbHNcIiwgdmFsdWU6IGZhbHNlfVxyXG4gICAgICAgIF1cclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgdHlwZTogXCJjYXRlZ29yeVwiLFxyXG4gICAgICAgIGlkOiBcIndpbmRvd1wiLFxyXG4gICAgICAgIGNvbGxhcHNpYmxlOiB0cnVlLFxyXG4gICAgICAgIHNob3duOiBmYWxzZSxcclxuICAgICAgICBzZXR0aW5nczogW1xyXG4gICAgICAgICAgICB7dHlwZTogXCJzd2l0Y2hcIiwgaWQ6IFwidHJhbnNwYXJlbmN5XCIsIHZhbHVlOiBmYWxzZX0sXHJcbiAgICAgICAgICAgIHt0eXBlOiBcInN3aXRjaFwiLCBpZDogXCJmcmFtZVwiLCB2YWx1ZTogZmFsc2UsIGhpZGRlbjogdHJ1ZX1cclxuICAgICAgICBdXHJcbiAgICB9XHJcbl07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/data/settings/config.js\n");
/***/ }),
/***/ "./src/data/settings/emoteconfig.js":
/*!******************************************!*\
!*** ./src/data/settings/emoteconfig.js ***!
\******************************************/
/*! exports provided: default */
/***/ (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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvZGF0YS9zZXR0aW5ncy9lbW90ZWNvbmZpZy5qcz84NTk3Il0sIm5hbWVzIjpbInR5cGUiLCJpZCIsIm5hbWUiLCJjb2xsYXBzaWJsZSIsInNldHRpbmdzIiwidmFsdWUiLCJlbmFibGVXaXRoIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFlLGdFQUNYO0FBQ0lBLE1BQUksRUFBRSxVQURWO0FBRUlDLElBQUUsRUFBRSxTQUZSO0FBR0lDLE1BQUksRUFBRSxTQUhWO0FBSUlDLGFBQVcsRUFBRSxJQUpqQjtBQUtJQyxVQUFRLEVBQUUsQ0FDTjtBQUFDSixRQUFJLEVBQUUsUUFBUDtBQUFpQkMsTUFBRSxFQUFFLFVBQXJCO0FBQWlDSSxTQUFLLEVBQUU7QUFBeEMsR0FETSxFQUVOO0FBQUNMLFFBQUksRUFBRSxRQUFQO0FBQWlCQyxNQUFFLEVBQUUsV0FBckI7QUFBa0NJLFNBQUssRUFBRTtBQUF6QyxHQUZNLEVBR047QUFBQ0wsUUFBSSxFQUFFLFFBQVA7QUFBaUJDLE1BQUUsRUFBRSxlQUFyQjtBQUFzQ0ksU0FBSyxFQUFFLEtBQTdDO0FBQW9EQyxjQUFVLEVBQUU7QUFBaEUsR0FITSxFQUlOO0FBQUNOLFFBQUksRUFBRSxRQUFQO0FBQWlCQyxNQUFFLEVBQUUsV0FBckI7QUFBa0NJLFNBQUssRUFBRTtBQUF6QyxHQUpNLEVBS047QUFBQ0wsUUFBSSxFQUFFLFFBQVA7QUFBaUJDLE1BQUUsRUFBRSxXQUFyQjtBQUFrQ0ksU0FBSyxFQUFFO0FBQXpDLEdBTE0sRUFNTjtBQUFDTCxRQUFJLEVBQUUsUUFBUDtBQUFpQkMsTUFBRSxFQUFFLGdCQUFyQjtBQUF1Q0ksU0FBSyxFQUFFO0FBQTlDLEdBTk07QUFMZCxDQURXLEVBZVg7QUFDSUwsTUFBSSxFQUFFLFVBRFY7QUFFSUMsSUFBRSxFQUFFLFlBRlI7QUFHSUMsTUFBSSxFQUFFLFlBSFY7QUFJSUMsYUFBVyxFQUFFLElBSmpCO0FBS0lDLFVBQVEsRUFBRSxDQUNOO0FBQUNKLFFBQUksRUFBRSxRQUFQO0FBQWlCQyxNQUFFLEVBQUUsY0FBckI7QUFBcUNJLFNBQUssRUFBRTtBQUE1QyxHQURNLEVBRU47QUFBQ0wsUUFBSSxFQUFFLFFBQVA7QUFBaUJDLE1BQUUsRUFBRSxrQkFBckI7QUFBeUNJLFNBQUssRUFBRTtBQUFoRCxHQUZNLEVBR047QUFBQ0wsUUFBSSxFQUFFLFFBQVA7QUFBaUJDLE1BQUUsRUFBRSxjQUFyQjtBQUFxQ0ksU0FBSyxFQUFFO0FBQTVDLEdBSE0sRUFJTjtBQUFDTCxRQUFJLEVBQUUsUUFBUDtBQUFpQkMsTUFBRSxFQUFFLE1BQXJCO0FBQTZCSSxTQUFLLEVBQUU7QUFBcEMsR0FKTTtBQUxkLENBZlcsQ0FBZiIsImZpbGUiOiIuL3NyYy9kYXRhL3NldHRpbmdzL2Vtb3RlY29uZmlnLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgW1xyXG4gICAge1xyXG4gICAgICAgIHR5cGU6IFwiY2F0ZWdvcnlcIixcclxuICAgICAgICBpZDogXCJnZW5lcmFsXCIsXHJcbiAgICAgICAgbmFtZTogXCJHZW5lcmFsXCIsXHJcbiAgICAgICAgY29sbGFwc2libGU6IHRydWUsXHJcbiAgICAgICAgc2V0dGluZ3M6IFtcclxuICAgICAgICAgICAge3R5cGU6IFwic3dpdGNoXCIsIGlkOiBcImRvd25sb2FkXCIsIHZhbHVlOiB0cnVlfSxcclxuICAgICAgICAgICAge3R5cGU6IFwic3dpdGNoXCIsIGlkOiBcImVtb3RlTWVudVwiLCB2YWx1ZTogdHJ1ZX0sXHJcbiAgICAgICAgICAgIHt0eXBlOiBcInN3aXRjaFwiLCBpZDogXCJoaWRlRW1vamlNZW51XCIsIHZhbHVlOiBmYWxzZSwgZW5hYmxlV2l0aDogXCJlbW90ZU1lbnVcIn0sXHJcbiAgICAgICAgICAgIHt0eXBlOiBcInN3aXRjaFwiLCBpZDogXCJzaG93TmFtZXNcIiwgdmFsdWU6IHRydWV9LFxyXG4gICAgICAgICAgICB7dHlwZTogXCJzd2l0Y2hcIiwgaWQ6IFwibW9kaWZpZXJzXCIsIHZhbHVlOiB0cnVlfSxcclxuICAgICAgICAgICAge3R5cGU6IFwic3dpdGNoXCIsIGlkOiBcImFuaW1hdGVPbkhvdmVyXCIsIHZhbHVlOiBmYWxzZX1cclxuICAgICAgICBdXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIHR5cGU6IFwiY2F0ZWdvcnlcIixcclxuICAgICAgICBpZDogXCJjYXRlZ29yaWVzXCIsXHJcbiAgICAgICAgbmFtZTogXCJDYXRlZ29yaWVzXCIsXHJcbiAgICAgICAgY29sbGFwc2libGU6IHRydWUsXHJcbiAgICAgICAgc2V0dGluZ3M6IFtcclxuICAgICAgICAgICAge3R5cGU6IFwic3dpdGNoXCIsIGlkOiBcInR3aXRjaGdsb2JhbFwiLCB2YWx1ZTogdHJ1ZX0sXHJcbiAgICAgICAgICAgIHt0eXBlOiBcInN3aXRjaFwiLCBpZDogXCJ0d2l0Y2hzdWJzY3JpYmVyXCIsIHZhbHVlOiBmYWxzZX0sXHJcbiAgICAgICAgICAgIHt0eXBlOiBcInN3aXRjaFwiLCBpZDogXCJmcmFua2VyZmFjZXpcIiwgdmFsdWU6IHRydWV9LFxyXG4gICAgICAgICAgICB7dHlwZTogXCJzd2l0Y2hcIiwgaWQ6IFwiYnR0dlwiLCB2YWx1ZTogdHJ1ZX1cclxuICAgICAgICBdXHJcbiAgICB9XHJcbl07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/data/settings/emoteconfig.js\n");
/***/ }),
/***/ "./src/data/strings.js":
/*!*****************************!*\
!*** ./src/data/strings.js ***!
\*****************************/
/*! exports provided: default */
/***/ (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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvZGF0YS9zdHJpbmdzLmpzP2JjNzEiXSwibmFtZXMiOlsiUGFuZWxzIiwicGx1Z2lucyIsInRoZW1lcyIsImN1c3RvbWNzcyIsIkNvbGxlY3Rpb25zIiwic2V0dGluZ3MiLCJuYW1lIiwiZ2VuZXJhbCIsImVtb3RlcyIsIm5vdGUiLCJwdWJsaWNTZXJ2ZXJzIiwidm9pY2VEaXNjb25uZWN0IiwidHdlbnR5Rm91ckhvdXIiLCJjbGFzc05vcm1hbGl6ZXIiLCJzaG93VG9hc3RzIiwiYXBwZWFyYW5jZSIsInZvaWNlTW9kZSIsIm1pbmltYWxNb2RlIiwiaGlkZUNoYW5uZWxzIiwiZGFya01vZGUiLCJjb2xvcmVkVGV4dCIsImFkZG9ucyIsImFkZG9uRXJyb3JzIiwiYXV0b1Njcm9sbCIsImF1dG9SZWxvYWQiLCJlZGl0QWN0aW9uIiwib3B0aW9ucyIsImRldGFjaGVkIiwic3lzdGVtIiwibGl2ZVVwZGF0ZSIsInN0YXJ0RGV0YWNoZWQiLCJuYXRpdmVPcGVuIiwib3BlbkFjdGlvbiIsImRldmVsb3BlciIsImRlYnVnZ2VySG90a2V5IiwiY29weVNlbGVjdG9yIiwicmVhY3REZXZUb29scyIsIndpbmRvdyIsInRyYW5zcGFyZW5jeSIsImZyYW1lIiwiZG93bmxvYWQiLCJlbW90ZU1lbnUiLCJoaWRlRW1vamlNZW51IiwiYXV0b0NhcHMiLCJzaG93TmFtZXMiLCJtb2RpZmllcnMiLCJhbmltYXRlT25Ib3ZlciIsImNhdGVnb3JpZXMiLCJ0d2l0Y2hnbG9iYWwiLCJ0d2l0Y2hzdWJzY3JpYmVyIiwiZnJhbmtlcmZhY2V6IiwiYnR0diIsIkFkZG9ucyIsInRpdGxlIiwib3BlbkZvbGRlciIsInJlbG9hZCIsImFkZG9uU2V0dGluZ3MiLCJ3ZWJzaXRlIiwic291cmNlIiwiaW52aXRlIiwiZG9uYXRlIiwicGF0cmVvbiIsImF1dGhvciIsInZlcnNpb24iLCJhZGRlZCIsIm1vZGlmaWVkIiwic2VhcmNoIiwiZWRpdEFkZG9uIiwiZGVsZXRlQWRkb24iLCJjb25maXJtRGVsZXRlIiwiY29uZmlybWF0aW9uVGV4dCIsImVuYWJsZWQiLCJkaXNhYmxlZCIsImNvdWxkTm90RW5hYmxlIiwiY291bGROb3REaXNhYmxlIiwiY291bGROb3RTdGFydCIsImNvdWxkTm90U3RvcCIsIm1ldGhvZEVycm9yIiwidW5rbm93bkF1dGhvciIsIm5vRGVzY3JpcHRpb24iLCJDdXN0b21DU1MiLCJ1cGRhdGUiLCJzYXZlIiwib3Blbk5hdGl2ZSIsIm9wZW5EZXRhY2hlZCIsImVkaXRvclRpdGxlIiwiRGV2ZWxvcGVyIiwiRW1vdGVzIiwibG9hZGluZyIsImxvYWRlZCIsImNsZWFyRW1vdGVzIiwiZmF2b3JpdGVBY3Rpb24iLCJQdWJsaWNTZXJ2ZXJzIiwiYnV0dG9uIiwiam9pbiIsImpvaW5pbmciLCJqb2luZWQiLCJsb2FkTW9yZSIsIm5vdENvbm5lY3RlZCIsImNvbm5lY3QiLCJyZWNvbm5lY3QiLCJjb25uZWN0aW9uIiwicmVzdWx0cyIsInF1ZXJ5IiwiTW9kYWxzIiwiY29uZmlybUFjdGlvbiIsIm9rYXkiLCJjYW5jZWwiLCJjbG9zZSIsIm1lc3NhZ2UiLCJlcnJvciIsInJlc3RhcnRSZXF1aXJlZCIsInJlc3RhcnROb3ciLCJyZXN0YXJ0TGF0ZXIiLCJhZGRpdGlvbmFsSW5mbyIsIlJlYWN0RGV2VG9vbHMiLCJub3RGb3VuZCIsIm5vdEZvdW5kRGV0YWlscyIsIlNvcnRpbmciLCJzb3J0QnkiLCJvcmRlciIsImFzY2VuZGluZyIsImRlc2NlbmRpbmciLCJTdGFydHVwIiwibm90U3VwcG9ydGVkIiwidmVyc2lvbk1pc21hdGNoIiwiaW5jb21wYXRpYmxlQXBwIiwidXBkYXRlTm93IiwibWF5YmVMYXRlciIsInVwZGF0ZUF2YWlsYWJsZSIsInVwZGF0ZUluZm8iLCJ1cGRhdGVGYWlsZWQiLCJtYW51YWxVcGRhdGUiLCJqcXVlcnlGYWlsZWQiLCJqcXVlcnlGYWlsZWREZXRhaWxzIiwiV2luZG93UHJlZnMiLCJlbmFibGVkSW5mbyIsImRpc2FibGVkSW5mbyJd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O0FBR0pDLFVBQU0sRUFBRSxRQUhKO0FBSUpDLFNBQUssRUFBRSxPQUpIO0FBS0p0RyxRQUFJLEVBQUUsTUFMRjtBQU1KdUcsV0FBTyxFQUFFLFNBTkw7QUFPSkMsU0FBSyxFQUFFLE9BUEg7QUFRSnhGLGVBQVcsRUFBRSxjQVJUO0FBU0p5RixtQkFBZSxFQUFFLGtCQVRiO0FBVUpDLGNBQVUsRUFBRSxhQVZSO0FBV0pDLGdCQUFZLEVBQUUsZUFYVjtBQVlKQyxrQkFBYyxFQUFFO0FBWlosR0EvUEc7QUE2UVhDLGVBQWEsRUFBRTtBQUNiQyxZQUFRLEVBQUUscUJBREc7QUFFYkMsbUJBQWUsRUFBRTtBQUZKLEdBN1FKO0FBaVJYQyxTQUFPLEVBQUU7QUFDTEMsVUFBTSxFQUFFLFNBREg7QUFFTEMsU0FBSyxFQUFFLE9BRkY7QUFHTEMsYUFBUyxFQUFFLFdBSE47QUFJTEMsY0FBVSxFQUFFO0FBSlAsR0FqUkU7QUF1UlhDLFNBQU8sRUFBRTtBQUNMQyxnQkFBWSxFQUFFLGVBRFQ7QUFFTEMsbUJBQWUsRUFBRSx5TUFGWjtBQUdMQyxtQkFBZSxFQUFFLHNFQUhaO0FBSUxDLGFBQVMsRUFBRSxZQUpOO0FBS0xDLGNBQVUsRUFBRSxhQUxQO0FBTUxDLG1CQUFlLEVBQUUsa0JBTlo7QUFPTEMsY0FBVSxFQUFFLDJIQVBQO0FBUUxDLGdCQUFZLEVBQUUsa0JBUlQ7QUFTTEMsZ0JBQVksRUFBRSw0S0FUVDtBQVVMQyxnQkFBWSxFQUFFLHVCQVZUO0FBV0xDLHVCQUFtQixFQUFFO0FBWGhCLEdBdlJFO0FBb1NYQyxhQUFXLEVBQUU7QUFDVEMsZUFBVyxFQUFFLHlOQURKO0FBRVRDLGdCQUFZLEVBQUU7QUFGTDtBQXBTRixDQUFmIiwiZmlsZSI6Ii4vc3JjL2RhdGEvc3RyaW5ncy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IHtcclxuICAgIFBhbmVsczoge1xyXG4gICAgICAgIHBsdWdpbnM6IFwiUGx1Z2luc1wiLFxyXG4gICAgICAgIHRoZW1lczogXCJUaGVtZXNcIixcclxuICAgICAgICBjdXN0b21jc3M6IFwiQ3VzdG9tIENTU1wiXHJcbiAgICB9LFxyXG4gICAgQ29sbGVjdGlvbnM6IHtcclxuICAgICAgICBzZXR0aW5nczoge1xyXG4gICAgICAgICAgICBuYW1lOiBcIlNldHRpbmdzXCIsXHJcbiAgICAgICAgICAgIGdlbmVyYWw6IHtcclxuICAgICAgICAgICAgICAgIG5hbWU6IFwiR2VuZXJhbFwiLFxyXG4gICAgICAgICAgICAgICAgZW1vdGVzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJFbW90ZSBTeXN0ZW1cIixcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkVuYWJsZXMgQkQncyBlbW90ZSBzeXN0ZW1cIlxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHB1YmxpY1NlcnZlcnM6IHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIlB1YmxpYyBTZXJ2ZXJzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJEaXNwbGF5IHB1YmxpYyBzZXJ2ZXJzIGJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgdm9pY2VEaXNjb25uZWN0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJWb2ljZSBEaXNjb25uZWN0XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJEaXNjb25uZWN0IGZyb20gdm9pY2Ugc2VydmVyIHdoZW4gY2xvc2luZyBEaXNjb3JkXCJcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB0d2VudHlGb3VySG91cjoge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiMjQtSG91ciBUaW1lc3RhbXBzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJIaWRlcyBjaGFubmVscyB3aGVuIGluIG1pbmltYWwgbW9kZVwiXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgY2xhc3NOb3JtYWxpemVyOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJOb3JtYWxpemUgQ2xhc3Nlc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiQWRkcyBzdGFibGUgY2xhc3NlcyB0byBlbGVtZW50cyB0byBoZWxwIHRoZW1lcy4gKGUuZy4gYWRkcyAuZGEtY2hhbm5lbHMgdG8gLmNoYW5uZWxzLUllMmw2QSlcIlxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHNob3dUb2FzdHM6IHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIlNob3cgVG9hc3RzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJTaG93cyBhIHNtYWxsIG5vdGlmaWNhdGlvbiBmb3IgaW1wb3J0YW50IGluZm9ybWF0aW9uXCJcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgYXBwZWFyYW5jZToge1xyXG4gICAgICAgICAgICAgICAgbmFtZTogXCJBcHBlYXJhbmNlXCIsXHJcbiAgICAgICAgICAgICAgICB2b2ljZU1vZGU6IHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIlZvaWNlIE1vZGVcIixcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkhpZGVzIGV2ZXJ5dGhpbmcgdGhhdCBpc24ndCB2b2ljZSBjaGF0XCJcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBtaW5pbWFsTW9kZToge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiTWluaW1hbCBNb2RlXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJIaWRlIGVsZW1lbnRzIGFuZCByZWR1Y2UgdGhlIHNpemUgb2YgZWxlbWVudHNcIlxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGhpZGVDaGFubmVsczoge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiSGlkZSBDaGFubmVsc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiSGlkZXMgY2hhbm5lbHMgd2hlbiBpbiBtaW5pbWFsIG1vZGVcIlxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGRhcmtNb2RlOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJEYXJrIE1vZGVcIixcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBcIk1ha2UgY2VydGFpbiBlbGVtZW50cyBkYXJrIGJ5IGRlZmF1bHRcIlxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGNvbG9yZWRUZXh0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJDb2xvcmVkIFRleHRcIixcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBcIk1ha2UgdGV4dCBjb2xvdXIgdGhlIHNhbWUgYXMgcm9sZSBjb2xvclwiXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGFkZG9uczoge1xyXG4gICAgICAgICAgICAgICAgbmFtZTogXCJBZGRvbiBNYW5hZ2VyXCIsXHJcbiAgICAgICAgICAgICAgICBhZGRvbkVycm9yczoge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiU2hvdyBBZGRvbiBFcnJvcnNcIixcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBcIlNob3dzIGEgbW9kYWwgd2l0aCBwbHVnaW4vdGhlbWUgZXJyb3JzXCJcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBhdXRvU2Nyb2xsOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJTY3JvbGwgVG8gU2V0dGluZ3NcIixcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkF1dG8tc2Nyb2xscyB0byBhIHBsdWdpbidzIHNldHRpbmdzIHdoZW4gdGhlIGJ1dHRvbiBpcyBjbGlja2VkIChvbmx5IGlmIG91dCBvZiB2aWV3KVwiXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgYXV0b1JlbG9hZDoge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiQXV0b21hdGljIExvYWRpbmdcIixcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkF1dG9tYXRpY2FsbHkgbG9hZHMsIHJlbG9hZHMsIGFuZCB1bmxvYWRzIHBsdWdpbnMgYW5kIHRoZW1lc1wiXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgZWRpdEFjdGlvbjoge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiRWRpdCBBY3Rpb25cIixcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBcIldoZXJlIHBsdWdpbnMgJiB0aGVtZXMgYXBwZWFyIHdoZW4gZWRpdGluZ1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWNoZWQ6IFwiRGV0YWNoZWQgV2luZG93XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN5c3RlbTogXCJTeXN0ZW0gRWRpdG9yXCJcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGN1c3RvbWNzczoge1xyXG4gICAgICAgICAgICAgICAgbmFtZTogXCJDdXN0b20gQ1NTXCIsXHJcbiAgICAgICAgICAgICAgICBjdXN0b21jc3M6IHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIkN1c3RvbSBDU1NcIixcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkVuYWJsZXMgdGhlIEN1c3RvbSBDU1MgdGFiXCJcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBsaXZlVXBkYXRlOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJMaXZlIFVwZGF0ZVwiLFxyXG4gICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiVXBkYXRlcyB0aGUgY3NzIGFzIHlvdSB0eXBlXCJcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBzdGFydERldGFjaGVkOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJTdGFydCBEZXRhY2hlZFwiLFxyXG4gICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiQ2xpY2tpbmcgdGhlIEN1c3RvbSBDU1MgdGFiIG9wZW5zIHRoZSBlZGl0b3IgaW4gYSBzZXBhcmF0ZSB3aW5kb3dcIixcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBuYXRpdmVPcGVuOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJPcGVuIGluIE5hdGl2ZSBFZGl0b3JcIixcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkNsaWNraW5nIHRoZSBDdXN0b20gQ1NTIHRhYiBvcGVucyB5b3VyIGN1c3RvbSBjc3MgaW4geW91ciBuYXRpdmUgZWRpdG9yXCJcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBvcGVuQWN0aW9uOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJFZGl0b3IgTG9jYXRpb25cIixcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBcIldoZXJlIEN1c3RvbSBDU1Mgc2hvdWxkIG9wZW4gYnkgZGVmYXVsdFwiLFxyXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3M6IFwiU2V0dGluZ3MgTWVudVwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXRhY2hlZDogXCJEZXRhY2hlZCBXaW5kb3dcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3lzdGVtOiBcIlN5c3RlbSBFZGl0b3JcIlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZGV2ZWxvcGVyOiB7XHJcbiAgICAgICAgICAgICAgICBuYW1lOiBcIkRldmVsb3BlciBTZXR0aW5nc1wiLFxyXG4gICAgICAgICAgICAgICAgZGVidWdnZXJIb3RrZXk6IHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIkRlYnVnZ2VyIEhvdGtleVwiLFxyXG4gICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiQWxsb3dzIGFjdGl2YXRpbmcgZGVidWdnZXIgd2hlbiBwcmVzc2luZyBGOFwiXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgY29weVNlbGVjdG9yOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJDb3B5IFNlbGVjdG9yXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJBZGRzIGEgXFxcIkNvcHkgU2VsZWN0b3JcXFwiIG9wdGlvbiB0byBjb250ZXh0IG1lbnVzIHdoZW4gZGV2ZWxvcGVyIG1vZGUgaXMgYWN0aXZlXCJcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICByZWFjdERldlRvb2xzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJSZWFjdCBEZXZlbG9wZXIgVG9vbHNcIixcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkluamVjdHMgeW91ciBsb2NhbCBpbnN0YWxsYXRpb24gb2YgUmVhY3QgRGV2ZWxvcGVyIFRvb2xzIGludG8gRGlzY29yZFwiXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHdpbmRvdzoge1xyXG4gICAgICAgICAgICAgICAgbmFtZTogXCJXaW5kb3cgUHJlZmVyZW5jZXNcIixcclxuICAgICAgICAgICAgICAgIHRyYW5zcGFyZW5jeToge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiRW5hYmxlIFRyYW5zcGFyZW5jeVwiLFxyXG4gICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiRW5hYmxlcyB0aGUgbWFpbiB3aW5kb3cgdG8gYmUgc2VlLXRocm91Z2ggKHJlcXVpcmVzIHJlc3RhcnQpXCJcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBmcmFtZToge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiV2luZG93IEZyYW1lXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJBZGRzIHRoZSBuYXRpdmUgb3Mgd2luZG93IGZyYW1lIHRvIHRoZSBtYWluIHdpbmRvd1wiXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVtb3Rlczoge1xyXG4gICAgICAgICAgICBuYW1lOiBcIkVtb3Rlc1wiLFxyXG4gICAgICAgICAgICBnZW5lcmFsOiB7XHJcbiAgICAgICAgICAgICAgICBuYW1lOiBcIkdlbmVyYWxcIixcclxuICAgICAgICAgICAgICAgIGRvd25sb2FkOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJEb3dubG9hZCBFbW90ZXNcIixcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkRvd25sb2FkIGVtb3RlcyB3aGVuZXZlciB0aGV5IGFyZSBvdXQgb2YgZGF0ZVwiXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgZW1vdGVNZW51OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJFbW90ZSBNZW51XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJTaG93IFR3aXRjaC9GYXZvdXJpdGUgZW1vdGVzIGluIGVtb3RlIG1lbnVcIlxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGhpZGVFbW9qaU1lbnU6IHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIkhpZGUgRW1vamkgTWVudVwiLFxyXG4gICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiSGlkZXMgRGlzY29yZCdzIGVtb2ppIG1lbnUgd2hlbiB1c2luZyBlbW90ZSBtZW51XCJcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBhdXRvQ2Fwczoge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiRW1vdGUgQXV0b2NhcGl0YWxpemF0aW9uXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJBdXRvY2FwaXRhbGl6ZSBlbW90ZSBjb21tYW5kc1wiXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgc2hvd05hbWVzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJTaG93IE5hbWVzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJTaG93IGVtb3RlIG5hbWVzIG9uIGhvdmVyXCJcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBtb2RpZmllcnM6IHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIlNob3cgRW1vdGUgTW9kaWZpZXJzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJFbmFibGUgZW1vdGUgbW9kcyAoZmxpcCwgc3BpbiwgcHVsc2UsIHNwaW4yLCBzcGluMywgMXNwaW4sIDJzcGluLCAzc3BpbiwgdHIsIGJsLCBiciwgc2hha2UsIHNoYWtlMiwgc2hha2UzLCBmbGFwKVwiXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgYW5pbWF0ZU9uSG92ZXI6IHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIkFuaW1hdGUgT24gSG92ZXJcIixcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBcIk9ubHkgYW5pbWF0ZSB0aGUgZW1vdGUgbW9kaWZpZXJzIG9uIGhvdmVyXCJcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgY2F0ZWdvcmllczoge1xyXG4gICAgICAgICAgICAgICAgbmFtZTogXCJDYXRlZ29yaWVzXCIsXHJcbiAgICAgICAgICAgICAgICB0d2l0Y2hnbG9iYWw6IHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIlR3aXRjaCBHbG9iYWxzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJTaG93IFR3aXRjaCBnbG9iYWwgZW1vdGVzXCJcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB0d2l0Y2hzdWJzY3JpYmVyOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJUd2l0Y2ggU3Vic2NyaWJlcnNcIixcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBcIlNob3cgVHdpdGNoIHN1YnNjcmliZXIgZW1vdGVzXCJcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBmcmFua2VyZmFjZXo6IHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIkZyYW5rZXJGYWNlWlwiLFxyXG4gICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiU2hvdyBlbW90ZXMgZnJvbSBGRlpcIlxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGJ0dHY6IHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIkJldHRlclRUVlwiLFxyXG4gICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiU2hvdyBlbW90ZXMgZnJvbSBCVFRWXCJcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH0sXHJcbiAgICBBZGRvbnM6IHtcclxuICAgICAgICB0aXRsZTogXCJ7e25hbWV9fSB2e3t2ZXJzaW9ufX0gYnkge3thdXRob3J9fVwiLFxyXG4gICAgICAgIG9wZW5Gb2xkZXI6IFwiT3BlbiB7e3R5cGV9fSBGb2xkZXJcIixcclxuICAgICAgICByZWxvYWQ6IFwiUmVsb2FkXCIsXHJcbiAgICAgICAgYWRkb25TZXR0aW5nczogXCJTZXR0aW5nc1wiLFxyXG4gICAgICAgIHdlYnNpdGU6IFwiV2Vic2l0ZVwiLFxyXG4gICAgICAgIHNvdXJjZTogXCJTb3VyY2VcIixcclxuICAgICAgICBpbnZpdGU6IFwiU3VwcG9ydCBTZXJ2ZXJcIixcclxuICAgICAgICBkb25hdGU6IFwiRG9uYXRlXCIsXHJcbiAgICAgICAgcGF0cmVvbjogXCJQYXRyZW9uXCIsXHJcbiAgICAgICAgbmFtZTogXCJOYW1lXCIsXHJcbiAgICAgICAgYXV0aG9yOiBcIkF1dGhvclwiLFxyXG4gICAgICAgIHZlcnNpb246IFwiVmVyc2lvblwiLFxyXG4gICAgICAgIGFkZGVkOiBcIkRhdGUgQWRkZWRcIixcclxuICAgICAgICBtb2RpZmllZDogXCJEYXRlIE1vZGlmaWVkXCIsXHJcbiAgICAgICAgc2VhcmNoOiBcIlNlYXJjaCB7e3R5cGV9fVwiLFxyXG4gICAgICAgIGVkaXRBZGRvbjogXCJFZGl0XCIsXHJcbiAgICAgICAgZGVsZXRlQWRkb246IFwiRGVsZXRlXCIsXHJcbiAgICAgICAgY29uZmlybURlbGV0ZTogXCJBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIHt7bmFtZX19P1wiLFxyXG4gICAgICAgIGNvbmZpcm1hdGlvblRleHQ6IFwiWW91IGhhdmUgdW5zYXZlZCBjaGFuZ2VzIHRvIHt7bmFtZX19LiBDbG9zaW5nIHRoaXMgd2luZG93IHdpbGwgbG9zZSBhbGwgdGhvc2UgY2hhbmdlcy5cIixcclxuICAgICAgICBlbmFibGVkOiBcInt7bmFtZX19IGhhcyBiZWVuIGVuYWJsZWQuXCIsXHJcbiAgICAgICAgZGlzYWJsZWQ6IFwie3tuYW1lfX0gaGFzIGJlZW4gZGlzYWJsZWQuXCIsXHJcbiAgICAgICAgY291bGROb3RFbmFibGU6IFwie3tuYW1lfX0gY291bGQgbm90IGJlIGVuYWJsZWQuXCIsXHJcbiAgICAgICAgY291bGROb3REaXNhYmxlOiBcInt7bmFtZX19IGNvdWxkIG5vdCBiZSBkaXNhYmxlZC5cIixcclxuICAgICAgICBjb3VsZE5vdFN0YXJ0OiBcInt7bmFtZX19IGNvdWxkIG5vdCBiZSBzdGFydGVkLlwiLFxyXG4gICAgICAgIGNvdWxkTm90U3RvcDogXCJ7e25hbWV9fSBjb3VsZCBub3QgYmUgc3RvcHBlZC5cIixcclxuICAgICAgICBtZXRob2RFcnJvcjogXCJ7e21ldGhvZH19IGNvdWxkIG5vdCBiZSBmaXJlZC5cIixcclxuICAgICAgICB1bmtub3duQXV0aG9yOiBcIlVua25vd24gQXV0aG9yXCIsXHJcbiAgICAgICAgbm9EZXNjcmlwdGlvbjogXCJEZXNjcmlwdGlvbiBub3QgcHJvdmlkZWQuXCJcclxuICAgIH0sXHJcbiAgICBDdXN0b21DU1M6IHtcclxuICAgICAgICBjb25maXJtYXRpb25UZXh0OiBcIllvdSBoYXZlIHVuc2F2ZWQgY2hhbmdlcyB0byB5b3VyIEN1c3RvbSBDU1MuIENsb3NpbmcgdGhpcyB3aW5kb3cgd2lsbCBsb3NlIGFsbCB0aG9zZSBjaGFuZ2VzLlwiLFxyXG4gICAgICAgIHVwZGF0ZTogXCJVcGRhdGVcIixcclxuICAgICAgICBzYXZlOiBcIlNhdmVcIixcclxuICAgICAgICBvcGVuTmF0aXZlOiBcIk9wZW4gaW4gU3lzdGVtIEVkaXRvclwiLFxyXG4gICAgICAgIG9wZW5EZXRhY2hlZDogXCJEZXRhY2ggV2luZG93XCIsXHJcbiAgICAgICAgc2V0dGluZ3M6IFwiRWRpdG9yIFNldHRpbmdzXCIsXHJcbiAgICAgICAgZWRpdG9yVGl0bGU6IFwiQ3VzdG9tIENTUyBFZGl0b3JcIlxyXG4gICAgfSxcclxuICAgIERldmVsb3Blcjoge1xyXG4gICAgICAgIGNvcHlTZWxlY3RvcjogXCJDb3B5IFNlbGVjdG9yXCJcclxuICAgIH0sXHJcbiAgICBFbW90ZXM6IHtcclxuICAgICAgICBsb2FkaW5nOiBcIkxvYWRpbmcgZW1vdGVzIGluIHRoZSBiYWNrZ3JvdW5kIGRvIG5vdCByZWxvYWQuXCIsXHJcbiAgICAgICAgbG9hZGVkOiBcIkFsbCBlbW90ZXMgc3VjY2Vzc2Z1bGx5IGxvYWRlZC5cIixcclxuICAgICAgICBjbGVhckVtb3RlczogXCJDbGVhciBFbW90ZSBEYXRhXCIsXHJcbiAgICAgICAgZmF2b3JpdGVBY3Rpb246IFwiRmF2b3JpdGUhXCJcclxuICAgIH0sXHJcbiAgICBQdWJsaWNTZXJ2ZXJzOiB7XHJcbiAgICAgICAgYnV0dG9uOiBcInB1YmxpY1wiLFxyXG4gICAgICAgIGpvaW46IFwiSm9pblwiLFxyXG4gICAgICAgIGpvaW5pbmc6IFwiSm9pbmluZ1wiLFxyXG4gICAgICAgIGpvaW5lZDogXCJKb2luZWRcIixcclxuICAgICAgICBsb2FkaW5nOiBcIkxvYWRpbmdcIixcclxuICAgICAgICBsb2FkTW9yZTogXCJMb2FkIE1vcmVcIixcclxuICAgICAgICBub3RDb25uZWN0ZWQ6IFwiTm90IGNvbm5lY3RlZCB0byBEaXNjb3JkU2VydmVycy5jb20hXCIsXHJcbiAgICAgICAgc2VhcmNoOiBcIlNlYXJjaFwiLFxyXG4gICAgICAgIGNvbm5lY3Q6IFwiQ29ubmVjdFwiLFxyXG4gICAgICAgIHJlY29ubmVjdDogXCJSZWNvbm5lY3RcIixcclxuICAgICAgICBjYXRlZ29yaWVzOiBcIkNhdGVnb3JpZXNcIixcclxuICAgICAgICBjb25uZWN0aW9uOiBcIkNvbm5lY3RlZCBhczoge3t1c2VybmFtZX19I3t7ZGlzY3JpbWluYXRvcn19XCIsXHJcbiAgICAgICAgcmVzdWx0czogXCJTaG93aW5nIHt7c3RhcnR9fS17e2VuZH19IG9mIHt7dG90YWx9fSByZXN1bHRzIGluIHt7Y2F0ZWdvcnl9fVwiLFxyXG4gICAgICAgIHF1ZXJ5OiBcImZvciB7e3F1ZXJ5fX1cIlxyXG4gICAgfSxcclxuICAgIE1vZGFsczoge1xyXG4gICAgICAgIGNvbmZpcm1BY3Rpb246IFwiQXJlIFlvdSBTdXJlP1wiLFxyXG4gICAgICAgIG9rYXk6IFwiT2theVwiLFxyXG4gICAgICAgIGNhbmNlbDogXCJDYW5jZWxcIixcclxuICAgICAgICBjbG9zZTogXCJDbG9zZVwiLFxyXG4gICAgICAgIG5hbWU6IFwiTmFtZVwiLFxyXG4gICAgICAgIG1lc3NhZ2U6IFwiTWVzc2FnZVwiLFxyXG4gICAgICAgIGVycm9yOiBcIkVycm9yXCIsXHJcbiAgICAgICAgYWRkb25FcnJvcnM6IFwiQWRkb24gRXJyb3JzXCIsXHJcbiAgICAgICAgcmVzdGFydFJlcXVpcmVkOiBcIlJlc3RhcnQgUmVxdWlyZWRcIixcclxuICAgICAgICByZXN0YXJ0Tm93OiBcIlJlc3RhcnQgTm93XCIsXHJcbiAgICAgICAgcmVzdGFydExhdGVyOiBcIlJlc3RhcnQgTGF0ZXJcIixcclxuICAgICAgICBhZGRpdGlvbmFsSW5mbzogXCJBZGRpdGlvbmFsIEluZm9cIlxyXG4gICAgfSxcclxuICAgIFJlYWN0RGV2VG9vbHM6IHtcclxuICAgICAgbm90Rm91bmQ6IFwiRXh0ZW5zaW9uIE5vdCBGb3VuZFwiLFxyXG4gICAgICBub3RGb3VuZERldGFpbHM6IFwiVW5hYmxlIHRvIGZpbmQgdGhlIFJlYWN0IERldmVsb3BlciBUb29scyBleHRlbnNpb24gb24geW91ciBQQy4gUGxlYXNlIGluc3RhbGwgdGhlIGV4dGVuc2lvbiBvbiB5b3VyIGxvY2FsIENocm9tZSBpbnN0YWxsYXRpb24uXCIgIFxyXG4gICAgfSxcclxuICAgIFNvcnRpbmc6IHtcclxuICAgICAgICBzb3J0Qnk6IFwiU29ydCBCeVwiLFxyXG4gICAgICAgIG9yZGVyOiBcIk9yZGVyXCIsXHJcbiAgICAgICAgYXNjZW5kaW5nOiBcIkFzY2VuZGluZ1wiLFxyXG4gICAgICAgIGRlc2NlbmRpbmc6IFwiRGVzY2VuZGluZ1wiXHJcbiAgICB9LFxyXG4gICAgU3RhcnR1cDoge1xyXG4gICAgICAgIG5vdFN1cHBvcnRlZDogXCJOb3QgU3VwcG9ydGVkXCIsXHJcbiAgICAgICAgdmVyc2lvbk1pc21hdGNoOiBcIkJhbmRhZ2VkQkQgSW5qZWN0b3Igdnt7aW5qZWN0b3J9fSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBsYXRlc3QgcmVtb3RlICh2e3tyZW1vdGV9fSkuXFxuXFxuUGxlYXNlIGRvd25sb2FkIHRoZSBsYXRlc3QgdmVyc2lvbiBmcm9tIFtHaXRIdWJdKGh0dHBzOi8vZ2l0aHViLmNvbS9yYXVlbnppL0JldHRlckRpc2NvcmRBcHAvcmVsZWFzZXMvbGF0ZXN0KVwiLFxyXG4gICAgICAgIGluY29tcGF0aWJsZUFwcDogXCJCYW5kYWdlZEJEIGRvZXMgbm90IHdvcmsgd2l0aCB7e2FwcH19LiBQbGVhc2UgdW5pbnN0YWxsIG9uZSBvZiB0aGVtLlwiLFxyXG4gICAgICAgIHVwZGF0ZU5vdzogXCJVcGRhdGUgTm93XCIsXHJcbiAgICAgICAgbWF5YmVMYXRlcjogXCJNYXliZSBMYXRlclwiLFxyXG4gICAgICAgIHVwZGF0ZUF2YWlsYWJsZTogXCJVcGRhdGUgQXZhaWxhYmxlXCIsXHJcbiAgICAgICAgdXBkYXRlSW5mbzogXCJUaGVyZSBpcyBhbiB1cGRhdGUgYXZhaWxhYmxlIGZvciBCYW5kYWdlZEJEJ3MgSW5qZWN0b3IgKHt7dmVyc2lvbn19KS5cXG5cXG5Zb3UgY2FuIGVpdGhlciB1cGRhdGUgYW5kIHJlc3RhcnQgbm93LCBvciBsYXRlci5cIixcclxuICAgICAgICB1cGRhdGVGYWlsZWQ6IFwiQ291bGQgTm90IFVwZGF0ZVwiLFxyXG4gICAgICAgIG1hbnVhbFVwZGF0ZTogXCJVbmFibGUgdG8gdXBkYXRlIGF1dG9tYXRpY2FsbHksIHBsZWFzZSBkb3dubG9hZCB0aGUgaW5zdGFsbGVyIGFuZCByZWluc3RhbGwgbm9ybWFsbHkuXFxuXFxuW0Rvd25sb2FkIEluc3RhbGxlcl0oaHR0cHM6Ly9naXRodWIuY29tL3JhdWVuemkvQmV0dGVyRGlzY29yZEFwcC9yZWxlYXNlcy9sYXRlc3QpXCIsXHJcbiAgICAgICAganF1ZXJ5RmFpbGVkOiBcImpRdWVyeSBGYWlsZWQgVG8gTG9hZFwiLFxyXG4gICAgICAgIGpxdWVyeUZhaWxlZERldGFpbHM6IFwialF1ZXJ5IGNvdWxkIG5vdCBiZSBsb2FkZWQsIGFuZCBzb21lIHBsdWdpbnMgbWF5IG5vdCB3b3JrIHByb3Blcmx5LiBQcm9jZWVkIGF0IHlvdXIgb3duIHJpc2suXCJcclxuICAgIH0sXHJcbiAgICBXaW5kb3dQcmVmczoge1xyXG4gICAgICAgIGVuYWJsZWRJbmZvOiBcIlRoaXMgb3B0aW9uIHJlcXVpcmVzIGEgdHJhbnNwYXJlbnQgdGhlbWUgaW4gb3JkZXIgdG8gd29yayBwcm9wZXJseS4gT24gV2luZG93cyB0aGlzIG1heSBicmVhayB5b3VyIGFlcm8gc25hcHBpbmcgYW5kIG1heGltaXppbmcuXFxuXFxuSW4gb3JkZXIgdG8gdGFrZSBlZmZlY3QsIERpc2NvcmQgbmVlZHMgdG8gYmUgcmVzdGFydGVkLiBEbyB5b3Ugd2FudCB0byByZXN0YXJ0IG5vdz9cIixcclxuICAgICAgICBkaXNhYmxlZEluZm86IFwiSW4gb3JkZXIgdG8gdGFrZSBlZmZlY3QsIERpc2NvcmQgbmVlZHMgdG8gYmUgcmVzdGFydGVkLiBEbyB5b3Ugd2FudCB0byByZXN0YXJ0IG5vdz9cIlxyXG4gICAgfVxyXG59O1xyXG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/data/strings.js\n");
/***/ }),
/***/ "./src/index.js":
/*!**********************!*\
!*** ./src/index.js ***!
\**********************/
/*! no exports provided */
/***/ (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 _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");
/***/ }),
/***/ "./src/loadingicon.js":
/*!****************************!*\
!*** ./src/loadingicon.js ***!
\****************************/
/*! exports provided: default */
/***/ (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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbG9hZGluZ2ljb24uanM/MTk5NiJdLCJuYW1lcyI6WyJjc3MiLCJpY29uU3R5bGUiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJ0ZXh0Q29udGVudCIsImxvYWRpbmdJY29uIiwiaWQiLCJjbGFzc05hbWUiLCJ0aXRsZSIsInNob3ciLCJib2R5IiwiYXBwZW5kQ2hpbGQiLCJoaWRlIiwicmVtb3ZlIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBLE1BQU1BLEdBQUcsR0FBSTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3NCQUFiO0FBMEJBLE1BQU1DLFNBQVMsR0FBR0MsUUFBUSxDQUFDQyxhQUFULENBQXVCLE9BQXZCLENBQWxCO0FBQ0FGLFNBQVMsQ0FBQ0csV0FBVixHQUF3QkosR0FBeEI7QUFFQSxNQUFNSyxXQUFXLEdBQUdILFFBQVEsQ0FBQ0MsYUFBVCxDQUF1QixLQUF2QixDQUFwQjtBQUNBRSxXQUFXLENBQUNDLEVBQVosR0FBaUIsaUJBQWpCO0FBQ0FELFdBQVcsQ0FBQ0UsU0FBWixHQUF3QixhQUF4QjtBQUNBRixXQUFXLENBQUNHLEtBQVosR0FBb0IsMEJBQXBCO0FBRWUscUVBQU07QUFDakIsU0FBT0MsSUFBUCxHQUFjO0FBQ1ZQLFlBQVEsQ0FBQ1EsSUFBVCxDQUFjQyxXQUFkLENBQTBCVixTQUExQjtBQUNBQyxZQUFRLENBQUNRLElBQVQsQ0FBY0MsV0FBZCxDQUEwQk4sV0FBMUI7QUFDSDs7QUFFRCxTQUFPTyxJQUFQLEdBQWM7QUFDVixRQUFJWCxTQUFKLEVBQWVBLFNBQVMsQ0FBQ1ksTUFBVjtBQUNmLFFBQUlSLFdBQUosRUFBaUJBLFdBQVcsQ0FBQ1EsTUFBWjtBQUNwQjs7QUFUZ0IsQyIsImZpbGUiOiIuL3NyYy9sb2FkaW5naWNvbi5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGNzcyA9IGAvKiBCRUdJTiBWMiBMT0FERVIgKi9cclxuLyogPT09PT09PT09PT09PT09ICovXHJcblxyXG4jYmQtbG9hZGluZy1pY29uIHtcclxuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lJSE4wWVc1a1lXeHZibVU5SW01dklqOCtJRHdoUkU5RFZGbFFSU0J6ZG1jZ1VGVkNURWxESUNJdEx5OVhNME12TDBSVVJDQlRWa2NnTVM0eEx5OUZUaUlnSW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTDBkeVlYQm9hV056TDFOV1J5OHhMakV2UkZSRUwzTjJaekV4TG1SMFpDSStQSE4yWnlCb1pXbG5hSFE5SWpFd01DVWlJSE4wZVd4bFBTSm1hV3hzTFhKMWJHVTZaWFpsYm05a1pEdGpiR2x3TFhKMWJHVTZaWFpsYm05a1pEdHpkSEp2YTJVdGJHbHVaV05oY0RweWIzVnVaRHR6ZEhKdmEyVXRiR2x1WldwdmFXNDZjbTkxYm1RN0lpQjRiV3h1Y3pwNGJHbHVhejBpYUhSMGNEb3ZMM2QzZHk1M015NXZjbWN2TVRrNU9TOTRiR2x1YXlJZ2VHMXNibk05SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpJd01EQXZjM1puSWlCNGJXdzZjM0JoWTJVOUluQnlaWE5sY25abElpQjNhV1IwYUQwaU1UQXdKU0lnZG1WeWMybHZiajBpTVM0eElpQjJhV1YzUW05NFBTSXdJREFnTWpBd01DQXlNREF3SWo0Z0lDQWdQRzFsZEdGa1lYUmhJQzgrSUNBZ0lEeGtaV1p6UGlBZ0lDQWdJQ0FnUEdacGJIUmxjaUJwWkQwaWMyaGhaRzkzTVNJK0lDQWdJQ0FnSUNBOFptVkVjbTl3VTJoaFpHOTNJR1I0UFNJeU1DSWdaSGs5SWpBaUlITjBaRVJsZG1saGRHbHZiajBpTWpBaUlHWnNiMjlrTFdOdmJHOXlQU0p5WjJKaEtEQXNNQ3d3TERBdU16VXBJaTgrSUNBZ0lDQWdJQ0E4TDJacGJIUmxjajRnSUNBZ0lDQWdJRHhtYVd4MFpYSWdhV1E5SW5Ob1lXUnZkeklpUGlBZ0lDQWdJQ0FnUEdabFJISnZjRk5vWVdSdmR5QmtlRDBpTVRVaUlHUjVQU0l3SWlCemRHUkVaWFpwWVhScGIyNDlJakl3SWlCbWJHOXZaQzFqYjJ4dmNqMGljbWRpWVNneU5UVXNNalUxTERJMU5Td3dMakUxS1NJdlBpQWdJQ0FnSUNBZ1BDOW1hV3gwWlhJK0lDQWdJQ0FnSUNBOFptbHNkR1Z5SUdsa1BTSnphR0ZrYjNjeklqNGdJQ0FnSUNBZ0lEeG1aVVJ5YjNCVGFHRmtiM2NnWkhnOUlqRXdJaUJrZVQwaU1DSWdjM1JrUkdWMmFXRjBhVzl1UFNJeU1DSWdabXh2YjJRdFkyOXNiM0k5SW5KblltRW9NQ3d3TERBc01DNHpOU2tpTHo0Z0lDQWdJQ0FnSUR3dlptbHNkR1Z5UGlBZ0lDQThMMlJsWm5NK0lDQWdJRHhuUGlBZ0lDQWdJQ0FnUEhCaGRHZ2djM1I1YkdVOUltWnBiSFJsY2pvZ2RYSnNLQ056YUdGa2IzY3pLU0lnWkQwaVRURXhPVFV1TkRRck1UTTFMalEwTWt3eE1UazFMalEwS3pFek5TNDBOREpNT1RrM0xqWXJNVE0yTGpRME1rTXhNREkwTGpJck1UUTVMamMwTWlzeE1UY3dMak0wS3pFMk15NDFORElyTVRFNU15NDJOQ3N4TnprdU56UXlRekV5TmpRdU16UXJNakk0TGpnME1pc3hNekU1TGpjMEt6STVNUzR5TkRJck1UTTFPQzR5TkNzek5qVXVNRFF5UXpFek9UZ3VNVFFyTkRReExqWTBNaXN4TkRFNUxqYzBLelV6TUM0Mk5ESXJNVFF5TWk0MU5DczJNamt1TmpReVRERTBNakl1TlRRck5qTXdMamcwTWt3eE5ESXlMalUwS3pZek1pNHdOREpETVRReU1pNDFOQ3MzTnpNdU1UUXlLekUwTWpJdU5UUXJNVEl5T0M0eE5Dc3hOREl5TGpVMEt6RXpOamt1TVRSTU1UUXlNaTQxTkNzeE16Y3dMak0wVERFME1qSXVOVFFyTVRNM01TNDFORU14TkRFNUxqZzBLekUwTnpBdU5UUXJNVE01T0M0eU5Dc3hOVFU1TGpVMEt6RXpOVGd1TWpRck1UWXpOaTR4TkVNeE16RTVMamMwS3pFM01Ea3VPVFFyTVRJMk5DNDBOQ3N4TnpjeUxqTTBLekV4T1RNdU5qUXJNVGd5TVM0ME5FTXhNVGN4TGpBMEt6RTRNemN1TVRRck1UQXlOUzQzS3pFNE5UQXVOVFFyTVRBd01Dc3hPRFl6TGpVMFRERXhPVE11TlRRck1UZzJOQzQxTkVNeE5UTTVMamMwS3pFNE5qWXVORFFyTVRnMk5DNDFOQ3N4TmprekxqTTBLekU0TmpRdU5UUXJNVEk1Tmk0Mk5Fd3hPRFkwTGpVMEt6Y3hOaTQ1TkRKRE1UZzJOaTQwTkNzek1USXVORFF5S3pFMU5ERXVOalFyTVRNMUxqUTBNaXN4TVRrMUxqUTBLekV6TlM0ME5ESmFJaUJtYVd4c1BTSWpNVGN4TnpFM0lpQnZjR0ZqYVhSNVBTSXhJaTgrSUNBZ0lDQWdJQ0E4Y0dGMGFDQnpkSGxzWlQwaVptbHNkR1Z5T2lCMWNtd29JM05vWVdSdmR6SXBJaUJrUFNKTk1UWTVOUzQxTkNzMk16RXVORFF5UXpFMk9EVXVPRFFyTWpjNExqQTBNaXN4TkRBNUxqTTBLekV6TlM0ME5ESXJNVEExTWk0NU5Dc3hNelV1TkRReVRETTJNUzQzTkNzeE16WXVORFF5VERnd015NDNOQ3MwT1RBdU5EUXlUREV3TmpBdU56UXJORGt3TGpRME1rTXhNek0xTGpJMEt6UTVNQzQwTkRJck1UTXpOUzR5TkNzNE16VXVNelF5S3pFd05qQXVOelFyT0RNMUxqTTBNa3d4TURZd0xqYzBLekV4TmpRdU9EUkRNVEUxTUM0eU1pc3hNVFkwTGpnMEt6RXlNVEF1TlRNck1USXdNUzQwT0NzeE1qUXhMalk0S3pFeU5UQXVPRGRETVRNd05pNHdOeXN4TXpVekt6RXlORFV1TnpZck1UVXdPUzQyTkNzeE1EWXdMamMwS3pFMU1Ea3VOalJNTXpZeExqYzBLekU0TmpNdU5UUk1NVEExTWk0NU5Dc3hPRFkwTGpVMFF6RTBNRGt1TWpRck1UZzJOQzQxTkNzeE5qZzFMamMwS3pFM01qRXVPVFFyTVRZNU5TNDFOQ3N4TXpZNExqVTBRekUyT1RVdU5UUXJNVEl3TlM0NU5Dc3hOalV4TGpBMEt6RXdPRFF1TkRRck1UVTNNaTQyTkNzNU9Ua3VPVFF5UXpFMk5URXVNRFFyT1RFMUxqVTBNaXN4TmprMUxqVTBLemM1TkM0d05ESXJNVFk1TlM0MU5DczJNekV1TkRReVdpSWdabWxzYkQwaUl6TkZPREpGTlNJZ2IzQmhZMmwwZVQwaU1TSXZQaUFnSUNBZ0lDQWdQSEJoZEdnZ2MzUjViR1U5SW1acGJIUmxjam9nZFhKc0tDTnphR0ZrYjNjeEtTSWdaRDBpVFRFME5qa3VNalVyTmpNeExqUTBNa014TkRVNUxqVTFLekkzT0M0d05ESXJNVEU0TXk0d05Tc3hNelV1TkRReUt6Z3lOaTQyTlNzeE16VXVORFF5VERFek5TNDBOU3N4TXpVdU5EUXlUREV6TlM0ME5Tc3hNREEwUXpFek5TNDBOU3N4TURBMEt6RXpOUzQwTWpjck1USTFOUzR5TVNzek5UVXVOakkyS3pFeU5UVXVNakZETlRjMUxqZ3lOU3N4TWpVMUxqSXhLelUzTlM0NE5EZ3JNVEF3TkNzMU56VXVPRFE0S3pFd01EUk1OVGMzTGpRMUt6UTVNQzQwTkRKTU9ETTBMalExS3pRNU1DNDBOREpETVRFd09DNDVOU3MwT1RBdU5EUXlLekV4TURndU9UVXJPRE0xTGpNME1pczRNelF1TkRVck9ETTFMak0wTWt3Mk5qUXVOalVyT0RNMUxqTTBNa3cyTmpRdU5qVXJNVEUyTkM0NE5FdzRNelF1TkRVck1URTJOQzQ0TkVNNU1qTXVPVE15S3pFeE5qUXVPRFFyT1RnMExqSTBOQ3N4TWpBeExqUTRLekV3TVRVdU16a3JNVEkxTUM0NE4wTXhNRGM1TGpjNEt6RXpOVE1yTVRBeE9TNDBOeXN4TlRBNUxqWTBLemd6TkM0ME5Tc3hOVEE1TGpZMFRERXpOUzQwTlNzeE5UQTVMalkwVERFek5TNDBOU3N4T0RZMExqVTBURGd5Tmk0Mk5Tc3hPRFkwTGpVMFF6RXhPREl1T1RVck1UZzJOQzQxTkNzeE5EVTVMalExS3pFM01qRXVPVFFyTVRRMk9TNHlOU3N4TXpZNExqVTBRekUwTmprdU1qVXJNVEl3TlM0NU5Dc3hOREkwTGpjMUt6RXdPRFF1TkRRck1UTTBOaTR6TlNzNU9Ua3VPVFF5UXpFME1qUXVOelVyT1RFMUxqVTBNaXN4TkRZNUxqSTFLemM1TkM0d05ESXJNVFEyT1M0eU5TczJNekV1TkRReVdpSWdabWxzYkQwaUkwWkdSa1pHUmlJZ2IzQmhZMmwwZVQwaU1TSXZQaUFnSUNBOEwyYytQQzl6ZG1jKyk7XHJcbn1cclxuI2JkLWxvYWRpbmctaWNvbiB7XHJcbiAgcG9zaXRpb246IGZpeGVkO1xyXG4gIGJvdHRvbTo1cHg7XHJcbiAgcmlnaHQ6NXB4O1xyXG4gIHotaW5kZXg6IDIxNDc0ODM2NDc7XHJcbiAgZGlzcGxheTogYmxvY2s7XHJcbiAgd2lkdGg6IDIwcHg7XHJcbiAgaGVpZ2h0OiAyMHB4O1xyXG4gIGJhY2tncm91bmQtc2l6ZTogMTAwJSAxMDAlO1xyXG4gIGFuaW1hdGlvbjogYmQtbG9hZGluZy1hbmltYXRpb24gMS41cyBlYXNlLWluLW91dCBpbmZpbml0ZTtcclxufVxyXG5cclxuQGtleWZyYW1lcyBiZC1sb2FkaW5nLWFuaW1hdGlvbiB7XHJcbiAgMCUgeyBvcGFjaXR5OiAwLjA1OyB9XHJcbiAgNTAlIHsgb3BhY2l0eTogMC42OyB9XHJcbiAgMTAwJSB7IG9wYWNpdHk6IDAuMDU7IH1cclxufVxyXG4vKiA9PT09PT09PT09PT09PT0gKi9cclxuLyogIEVORCBWMiBMT0FERVIgICovYDtcclxuXHJcbmNvbnN0IGljb25TdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiKTtcclxuaWNvblN0eWxlLnRleHRDb250ZW50ID0gY3NzO1xyXG5cclxuY29uc3QgbG9hZGluZ0ljb24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xyXG5sb2FkaW5nSWNvbi5pZCA9IFwiYmQtbG9hZGluZy1pY29uXCI7XHJcbmxvYWRpbmdJY29uLmNsYXNzTmFtZSA9IFwiYmQtbG9hZGVydjJcIjtcclxubG9hZGluZ0ljb24udGl0bGUgPSBcIkJhbmRhZ2VkQkQgaXMgbG9hZGluZy4uLlwiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3Mge1xyXG4gICAgc3RhdGljIHNob3coKSB7XHJcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpY29uU3R5bGUpO1xyXG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobG9hZGluZ0ljb24pO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBoaWRlKCkge1xyXG4gICAgICAgIGlmIChpY29uU3R5bGUpIGljb25TdHlsZS5yZW1vdmUoKTtcclxuICAgICAgICBpZiAobG9hZGluZ0ljb24pIGxvYWRpbmdJY29uLnJlbW92ZSgpO1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/loadingicon.js\n");
/***/ }),
/***/ "./src/moduleloader.js":
/*!*****************************!*\
!*** ./src/moduleloader.js ***!
\*****************************/
/*! exports provided: default */
/***/ (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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlbG9hZGVyLmpzP2I5YzMiXSwibmFtZXMiOlsibmFtZXNwYWNlIiwicHJlZml4IiwiTW9kdWxlIiwicmVxdWlyZSIsImxvYWQiLCJfbG9hZCIsInJlcXVlc3QiLCJzdGFydHNXaXRoIiwicmVxdWVzdGVkIiwic3Vic3RyIiwibGVuZ3RoIiwiQmRBcGkiLCJhcHBseSIsImFyZ3VtZW50cyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBRWUsMkVBQVc7QUFDdEIsUUFBTUEsU0FBUyxHQUFHLGVBQWxCO0FBQ0EsUUFBTUMsTUFBTSxHQUFJLEdBQUVELFNBQVUsR0FBNUI7O0FBQ0EsUUFBTUUsTUFBTSxHQUFHQyxtQkFBTyxDQUFDLHNCQUFELENBQXRCOztBQUNBLFFBQU1DLElBQUksR0FBR0YsTUFBTSxDQUFDRyxLQUFwQjs7QUFFQUgsUUFBTSxDQUFDRyxLQUFQLEdBQWUsVUFBU0MsT0FBVCxFQUFrQjtBQUM3QixRQUFJQSxPQUFPLEtBQUtOLFNBQVosSUFBeUJNLE9BQU8sQ0FBQ0MsVUFBUixDQUFtQk4sTUFBbkIsQ0FBN0IsRUFBeUQ7QUFDckQsWUFBTU8sU0FBUyxHQUFHRixPQUFPLENBQUNHLE1BQVIsQ0FBZVIsTUFBTSxDQUFDUyxNQUF0QixDQUFsQjtBQUNBLFVBQUlGLFNBQVMsSUFBSSxPQUFqQixFQUEwQixPQUFPRywwREFBUDtBQUM3Qjs7QUFFRCxXQUFPUCxJQUFJLENBQUNRLEtBQUwsQ0FBVyxJQUFYLEVBQWlCQyxTQUFqQixDQUFQO0FBQ0gsR0FQRDs7QUFTQSxTQUFPLFlBQVc7QUFDZFgsVUFBTSxDQUFDRyxLQUFQLEdBQWVELElBQWY7QUFDSCxHQUZEO0FBR0gsQyIsImZpbGUiOiIuL3NyYy9tb2R1bGVsb2FkZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQmRBcGkgZnJvbSBcIi4vbW9kdWxlcy9wbHVnaW5hcGlcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xyXG4gICAgY29uc3QgbmFtZXNwYWNlID0gXCJiZXR0ZXJkaXNjb3JkXCI7XHJcbiAgICBjb25zdCBwcmVmaXggPSBgJHtuYW1lc3BhY2V9L2A7XHJcbiAgICBjb25zdCBNb2R1bGUgPSByZXF1aXJlKFwibW9kdWxlXCIpO1xyXG4gICAgY29uc3QgbG9hZCA9IE1vZHVsZS5fbG9hZDtcclxuXHJcbiAgICBNb2R1bGUuX2xvYWQgPSBmdW5jdGlvbihyZXF1ZXN0KSB7XHJcbiAgICAgICAgaWYgKHJlcXVlc3QgPT09IG5hbWVzcGFjZSB8fCByZXF1ZXN0LnN0YXJ0c1dpdGgocHJlZml4KSkge1xyXG4gICAgICAgICAgICBjb25zdCByZXF1ZXN0ZWQgPSByZXF1ZXN0LnN1YnN0cihwcmVmaXgubGVuZ3RoKTtcclxuICAgICAgICAgICAgaWYgKHJlcXVlc3RlZCA9PSBcImJkYXBpXCIpIHJldHVybiBCZEFwaTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBsb2FkLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiBmdW5jdGlvbigpIHtcclxuICAgICAgICBNb2R1bGUuX2xvYWQgPSBsb2FkO1xyXG4gICAgfTtcclxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/moduleloader.js\n");
/***/ }),
/***/ "./src/modules/addonmanager.js":
/*!*************************************!*\
!*** ./src/modules/addonmanager.js ***!
\*************************************/
/*! exports provided: default */
/***/ (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,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");
/***/ }),
/***/ "./src/modules/componentpatcher.js":
/*!*****************************************!*\
!*** ./src/modules/componentpatcher.js ***!
\*****************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _data_data_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../data/data.js */ \"./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_data_js__WEBPACK_IMPORTED_MODULE_0__[\"Config\"].version}`);\n const versionHash = `(${_data_data_js__WEBPACK_IMPORTED_MODULE_0__[\"Config\"].hash ? _data_data_js__WEBPACK_IMPORTED_MODULE_0__[\"Config\"].hash.substring(0, 7) : _data_data_js__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_data_js__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");
/***/ }),
/***/ "./src/modules/core.js":
/*!*****************************!*\
!*** ./src/modules/core.js ***!
\*****************************/
/*! exports provided: default */
/***/ (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 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_data_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../data/data.js */ \"./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_builtins_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../builtins/builtins.js */ \"./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/* harmony import */ var _modules_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./modules.js */ \"./src/modules/modules.js\");\nconst fs = __webpack_require__(/*! fs */ \"fs\");\n\nconst path = __webpack_require__(/*! path */ \"path\");\n\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\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_data_js__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 localPath: \"style.min.css\"\n }];\n }\n\n setConfig(config) {\n if (this.hasStarted) return;\n Object.assign(_data_data_js__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_data_js__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].version < _data_data_js__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_data_js__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].version,\n remote: _data_data_js__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_data_js__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].updater ? _data_data_js__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].updater.LatestVersion : _data_data_js__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].latestVersion;\n\n if (latestLocalVersion > _data_data_js__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_builtins_js__WEBPACK_IMPORTED_MODULE_7__) _builtins_builtins_js__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_data_js__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].bbdVersion > previousVersion) {\n _ui_modals__WEBPACK_IMPORTED_MODULE_8__[\"default\"].showChangelogModal(_data_data_js__WEBPACK_IMPORTED_MODULE_2__[\"Changelog\"]);\n _datastore__WEBPACK_IMPORTED_MODULE_10__[\"default\"].setBDData(\"version\", _data_data_js__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_data_js__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].deferLoaded = true);else if (timesChecked >= 50) return resolve(_data_data_js__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 if (_data_data_js__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].local && _data_data_js__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].localPath && data.localPath) {\n if (fs.existsSync(path.resolve(_data_data_js__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].localPath, data.localPath))) {\n const css = fs.readFileSync(path.resolve(_data_data_js__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].localPath, data.localPath)).toString();\n _dommanager__WEBPACK_IMPORTED_MODULE_3__[\"default\"].injectStyle(data.name, css);\n continue;\n }\n }\n\n const url = _utilities__WEBPACK_IMPORTED_MODULE_15__[\"default\"].formatString(_data_data_js__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].local && data.local != null ? data.local : data.url, {\n repo: _data_data_js__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].repo,\n hash: _data_data_js__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].hash,\n localServer: _data_data_js__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_data_js__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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9jb3JlLmpzP2I2ZGUiXSwibmFtZXMiOlsiZnMiLCJyZXF1aXJlIiwicGF0aCIsImlwY1JlbmRlcmVyIiwiR3VpbGRDbGFzc2VzIiwiRGlzY29yZE1vZHVsZXMiLCJDb3JlIiwiY29uc3RydWN0b3IiLCJpbnZva2UiLCJ0aGVuIiwiaW5qZWN0b3JDb25maWciLCJoYXNTdGFydGVkIiwiT2JqZWN0IiwiYXNzaWduIiwiQ29uZmlnIiwiaW5pdCIsImRlcGVuZGVuY2llcyIsIm5hbWUiLCJ0eXBlIiwidXJsIiwiYmFja3VwIiwibG9jYWwiLCJsb2NhbFBhdGgiLCJzZXRDb25maWciLCJjb25maWciLCJkZXBlbmRlbmN5UHJvbWlzZSIsIlByb21pc2UiLCJyIiwid2luZG93IiwiJCIsImpRdWVyeSIsImxvYWREZXBlbmRlbmNpZXMiLCJEYXRhU3RvcmUiLCJpbml0aWFsaXplIiwiTG9jYWxlTWFuYWdlciIsInZlcnNpb24iLCJtaW5TdXBwb3J0ZWRWZXJzaW9uIiwiTW9kYWxzIiwiYWxlcnQiLCJTdHJpbmdzIiwiU3RhcnR1cCIsIm5vdFN1cHBvcnRlZCIsInZlcnNpb25NaXNtYXRjaCIsImZvcm1hdCIsImluamVjdG9yIiwicmVtb3RlIiwiYmJkVmVyc2lvbiIsIkVEIiwiaW5jb21wYXRpYmxlQXBwIiwiYXBwIiwiV2ViU29ja2V0IiwiaW5jbHVkZXMiLCJsYXRlc3RMb2NhbFZlcnNpb24iLCJ1cGRhdGVyIiwiTGF0ZXN0VmVyc2lvbiIsImxhdGVzdFZlcnNpb24iLCJzaG93Q29uZmlybWF0aW9uTW9kYWwiLCJ1cGRhdGVBdmFpbGFibGUiLCJ1cGRhdGVJbmZvIiwiY29uZmlybVRleHQiLCJ1cGRhdGVOb3ciLCJjYW5jZWxUZXh0IiwibWF5YmVMYXRlciIsIm9uQ29uZmlybSIsIm9uVXBkYXRlRmFpbGVkIiwidXBkYXRlRmFpbGVkIiwibWFudWFsVXBkYXRlIiwiZGlkVXBkYXRlIiwidXBkYXRlSW5qZWN0b3IiLCJyZWxhdW5jaCIsImV4aXQiLCJlcnIiLCJMb2dnZXIiLCJsb2ciLCJTZXR0aW5ncyIsIndhaXRGb3JHdWlsZHMiLCJSZWFjdENvbXBvbmVudHMiLCJDb21wb25lbnRQYXRjaGVyIiwibW9kdWxlIiwiQnVpbHRpbnMiLCJwbHVnaW5FcnJvcnMiLCJQbHVnaW5NYW5hZ2VyIiwidGhlbWVFcnJvcnMiLCJUaGVtZU1hbmFnZXIiLCJMb2FkaW5nSWNvbiIsImhpZGUiLCJzaG93QWRkb25FcnJvcnMiLCJwbHVnaW5zIiwidGhlbWVzIiwicHJldmlvdXNWZXJzaW9uIiwiZ2V0QkREYXRhIiwic2hvd0NoYW5nZWxvZ01vZGFsIiwiQ2hhbmdlbG9nIiwic2V0QkREYXRhIiwidGltZXNDaGVja2VkIiwicmVzb2x2ZSIsImNoZWNrRm9yR3VpbGRzIiwiZG9jdW1lbnQiLCJyZWFkeVN0YXRlIiwic2V0VGltZW91dCIsIndyYXBwZXIiLCJzcGxpdCIsImd1aWxkIiwibGlzdEl0ZW0iLCJibG9iIiwiYmxvYkNvbnRhaW5lciIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJsZW5ndGgiLCJkZWZlckxvYWRlZCIsImRhdGEiLCJleGlzdHNTeW5jIiwiY3NzIiwicmVhZEZpbGVTeW5jIiwidG9TdHJpbmciLCJET01NYW5hZ2VyIiwiaW5qZWN0U3R5bGUiLCJVdGlsaXRpZXMiLCJmb3JtYXRTdHJpbmciLCJyZXBvIiwiaGFzaCIsImxvY2FsU2VydmVyIiwiaW5qZWN0U2NyaXB0IiwibGlua1N0eWxlIiwiYmluZCIsIm1pbmlmaWVkIiwic3RhY2t0cmFjZSIsImUiLCJqcXVlcnlGYWlsZWQiLCJqcXVlcnlGYWlsZWREZXRhaWxzIiwiaW5qZWN0aW9uUGF0aCIsInJtcmYiLCJ5YXV6bCIsIm1rZGlycCIsInJlcXVlc3QiLCJwYXJlbnRQYXRoIiwiZm9sZGVyTmFtZSIsImJhc2VuYW1lIiwiemlwTGluayIsInNhdmVkWmlwIiwiZXh0cmFjdGVkRm9sZGVyIiwic3VjY2VzcyIsImdldCIsImVuY29kaW5nIiwiZXJyb3IiLCJyZXNwb25zZSIsImJvZHkiLCJzdGF0dXNDb2RlIiwiYWxyZWFkeUV4aXN0cyIsInJlcyIsImV4aXN0cyIsInJlbmFtZSIsIk1hdGgiLCJyb3VuZCIsInBlcmZvcm1hbmNlIiwibm93Iiwid3JpdGVGaWxlIiwiemlwZmlsZSIsIm9wZW4iLCJsYXp5RW50cmllcyIsInppcCIsIm9uIiwiZW50cnkiLCJmaWxlTmFtZSIsImVuZHNXaXRoIiwicmVhZEVudHJ5IiwiZnVsbFBhdGgiLCJzeW5jIiwiZGlybmFtZSIsIm9wZW5SZWFkU3RyZWFtIiwicmVhZFN0cmVhbSIsInBpcGUiLCJjcmVhdGVXcml0ZVN0cmVhbSIsIm9uY2UiLCJiYWNrdXBGb2xkZXIiLCJ1bmxpbmsiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsTUFBTUEsRUFBRSxHQUFHQyxtQkFBTyxDQUFDLGNBQUQsQ0FBbEI7O0FBQ0EsTUFBTUMsSUFBSSxHQUFHRCxtQkFBTyxDQUFDLGtCQUFELENBQXBCOztBQUVBO0FBRUE7Q0FFQTtBQUNBOztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsTUFBTTtBQUFDRTtBQUFELElBQWdCRixtQkFBTyxDQUFDLDBCQUFELENBQTdCOztBQUNBLE1BQU1HLFlBQVksR0FBR0Msd0RBQWMsQ0FBQ0QsWUFBcEM7QUFFZSxNQUFNRSxJQUFOLENBQVc7QUFDdEJDLGFBQVcsR0FBRztBQUNWSixlQUFXLENBQUNLLE1BQVosQ0FBbUIsV0FBbkIsRUFBZ0MsS0FBaEMsRUFBdUNDLElBQXZDLENBQTRDQyxjQUFjLElBQUk7QUFDMUQsVUFBSSxLQUFLQyxVQUFULEVBQXFCO0FBQ3JCQyxZQUFNLENBQUNDLE1BQVAsQ0FBY0Msb0RBQWQsRUFBc0JKLGNBQXRCO0FBQ0EsV0FBS0ssSUFBTDtBQUNI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SWxILE9BQUosQ0FBWXFFLE9BQU8sSUFBSS9GLEVBQUUsQ0FBQ3NKLE1BQUgsQ0FBVVgsZUFBVixFQUEyQlYsYUFBM0IsRUFBMEMxRCxHQUFHLElBQUl3QixPQUFPLENBQUMsQ0FBQ3hCLEdBQUYsQ0FBeEQsQ0FBdkIsQ0FBaEI7O0FBQ0EsUUFBSSxDQUFDcUUsT0FBTCxFQUFjO0FBQ1ZwRSxxREFBTSxDQUFDRCxHQUFQLENBQVcsZ0JBQVgsRUFBNkIsc0NBQTdCO0FBQ0EsYUFBT3FFLE9BQVA7QUFDSCxLQXBFa0IsQ0FzRW5COzs7QUFDQSxRQUFJLENBQUNBLE9BQUwsRUFBYztBQUNWcEUscURBQU0sQ0FBQ0QsR0FBUCxDQUFXLGdCQUFYLEVBQTZCLDRDQUE3QjtBQUNBLFlBQU0sSUFBSTdDLE9BQUosQ0FBWXFFLE9BQU8sSUFBSW1DLElBQUksQ0FBQ1MsZUFBRCxFQUFrQjVDLE9BQWxCLENBQTNCLENBQU47QUFDQSxZQUFNLElBQUlyRSxPQUFKLENBQVlxRSxPQUFPLElBQUkvRixFQUFFLENBQUNzSixNQUFILENBQVV1QixZQUFWLEVBQXdCNUMsYUFBeEIsRUFBdUNsQyxPQUF2QyxDQUF2QixDQUFOO0FBQ0EsYUFBTzZDLE9BQVA7QUFDSCxLQTVFa0IsQ0E4RW5CO0FBQ0E7OztBQUNBLFVBQU0sSUFBSWxILE9BQUosQ0FBWXFFLE9BQU8sSUFBSW1DLElBQUksQ0FBQzJDLFlBQUQsRUFBZTlFLE9BQWYsQ0FBM0IsQ0FBTjtBQUNBLFVBQU0sSUFBSXJFLE9BQUosQ0FBWXFFLE9BQU8sSUFBSS9GLEVBQUUsQ0FBQzhLLE1BQUgsQ0FBVXBDLFFBQVYsRUFBb0IzQyxPQUFwQixDQUF2QixDQUFOO0FBRUF2QixtREFBTSxDQUFDQyxHQUFQLENBQVcsZ0JBQVgsRUFBNkIsbUJBQTdCO0FBQ0EsV0FBT21FLE9BQVA7QUFDSDs7QUF6T3FCIiwiZmlsZSI6Ii4vc3JjL21vZHVsZXMvY29yZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGZzID0gcmVxdWlyZShcImZzXCIpO1xyXG5jb25zdCBwYXRoID0gcmVxdWlyZShcInBhdGhcIik7XHJcblxyXG5pbXBvcnQgTG9jYWxlTWFuYWdlciBmcm9tIFwiLi9sb2NhbGVtYW5hZ2VyXCI7XHJcblxyXG5pbXBvcnQgTG9nZ2VyIGZyb20gXCIuL2xvZ2dlclwiO1xyXG5pbXBvcnQge0NvbmZpZywgQ2hhbmdlbG9nfSBmcm9tIFwiZGF0YVwiO1xyXG4vLyBpbXBvcnQgRW1vdGVNb2R1bGUgZnJvbSBcIi4vZW1vdGVzXCI7XHJcbi8vIGltcG9ydCBRdWlja0Vtb3RlTWVudSBmcm9tIFwiLi4vYnVpbHRpbnMvZW1vdGVtZW51XCI7XHJcbmltcG9ydCBET01NYW5hZ2VyIGZyb20gXCIuL2RvbW1hbmFnZXJcIjtcclxuaW1wb3J0IFBsdWdpbk1hbmFnZXIgZnJvbSBcIi4vcGx1Z2lubWFuYWdlclwiO1xyXG5pbXBvcnQgVGhlbWVNYW5hZ2VyIGZyb20gXCIuL3RoZW1lbWFuYWdlclwiO1xyXG5pbXBvcnQgU2V0dGluZ3MgZnJvbSBcIi4vc2V0dGluZ3NtYW5hZ2VyXCI7XHJcbmltcG9ydCAqIGFzIEJ1aWx0aW5zIGZyb20gXCJidWlsdGluc1wiO1xyXG5pbXBvcnQgTW9kYWxzIGZyb20gXCIuLi91aS9tb2RhbHNcIjtcclxuaW1wb3J0IFJlYWN0Q29tcG9uZW50cyBmcm9tIFwiLi9yZWFjdGNvbXBvbmVudHNcIjtcclxuaW1wb3J0IERhdGFTdG9yZSBmcm9tIFwiLi9kYXRhc3RvcmVcIjtcclxuaW1wb3J0IERpc2NvcmRNb2R1bGVzIGZyb20gXCIuL2Rpc2NvcmRtb2R1bGVzXCI7XHJcbmltcG9ydCBDb21wb25lbnRQYXRjaGVyIGZyb20gXCIuL2NvbXBvbmVudHBhdGNoZXJcIjtcclxuaW1wb3J0IFN0cmluZ3MgZnJvbSBcIi4vc3RyaW5nc1wiO1xyXG5pbXBvcnQgTG9hZGluZ0ljb24gZnJvbSBcIi4uL2xvYWRpbmdpY29uXCI7XHJcbmltcG9ydCBVdGlsaXRpZXMgZnJvbSBcIi4vdXRpbGl0aWVzXCI7XHJcbmltcG9ydCB7IERPTSB9IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5jb25zdCB7aXBjUmVuZGVyZXJ9ID0gcmVxdWlyZShcImVsZWN0cm9uXCIpO1xyXG5jb25zdCBHdWlsZENsYXNzZXMgPSBEaXNjb3JkTW9kdWxlcy5HdWlsZENsYXNzZXM7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb3JlIHtcclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIGlwY1JlbmRlcmVyLmludm9rZShcImJkLWNvbmZpZ1wiLCBcImdldFwiKS50aGVuKGluamVjdG9yQ29uZmlnID0+IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuaGFzU3RhcnRlZCkgcmV0dXJuO1xyXG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKENvbmZpZywgaW5qZWN0b3JDb25maWcpO1xyXG4gICAgICAgICAgICB0aGlzLmluaXQoKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgZGVwZW5kZW5jaWVzKCkge1xyXG4gICAgICAgIHJldHVybiBbXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIG5hbWU6IFwianF1ZXJ5XCIsXHJcbiAgICAgICAgICAgICAgICB0eXBlOiBcInNjcmlwdFwiLFxyXG4gICAgICAgICAgICAgICAgdXJsOiBcIi8vYWpheC5nb29nbGVhcGlzLmNvbS9hamF4L2xpYnMvanF1ZXJ5LzIuMC4wL2pxdWVyeS5taW4uanNcIixcclxuICAgICAgICAgICAgICAgIGJhY2t1cDogXCIvL2Nkbi5qc2RlbGl2ci5uZXQvZ2gvanF1ZXJ5L2pxdWVyeUAyLjAuMC9qcXVlcnkubWluLmpzXCIsXHJcbiAgICAgICAgICAgICAgICBsb2NhbDogbnVsbFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBuYW1lOiBcImJkLXN0eWxlc2hlZXRcIixcclxuICAgICAgICAgICAgICAgIHR5cGU6IFwic3R5bGVcIixcclxuICAgICAgICAgICAgICAgIHVybDogXCIvL2Nkbi5zdGF0aWNhbHkuY29tL2doL3t7cmVwb319L0JldHRlckRpc2NvcmRBcHAve3toYXNofX0vZGlzdC9zdHlsZS5taW4uY3NzXCIsXHJcbiAgICAgICAgICAgICAgICBiYWNrdXA6IFwiLy9yYXVlbnppLmdpdGh1Yi5pby9CZXR0ZXJEaXNjb3JkQXBwL2Rpc3Qvc3R5bGUubWluLmNzc1wiLFxyXG4gICAgICAgICAgICAgICAgbG9jYWw6IFwie3tsb2NhbFNlcnZlcn19L0JldHRlckRpc2NvcmRBcHAvZGlzdC9zdHlsZS5taW4uY3NzXCIsXHJcbiAgICAgICAgICAgICAgICBsb2NhbFBhdGg6IFwic3R5bGUubWluLmNzc1wiXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICBdO1xyXG4gICAgfVxyXG5cclxuICAgIHNldENvbmZpZyhjb25maWcpIHtcclxuICAgICAgICBpZiAodGhpcy5oYXNTdGFydGVkKSByZXR1cm47XHJcbiAgICAgICAgT2JqZWN0LmFzc2lnbihDb25maWcsIGNvbmZpZyk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgaW5pdCgpIHtcclxuICAgICAgICBpZiAodGhpcy5oYXNTdGFydGVkKSByZXR1cm47XHJcbiAgICAgICAgdGhpcy5oYXNTdGFydGVkID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgLy8gTG9hZCBkZXBlbmRlbmNpZXMgYXN5bmNocm9ub3VzbHkgaWYgdGhleSBkb24ndCBleGlzdFxyXG4gICAgICAgIGxldCBkZXBlbmRlbmN5UHJvbWlzZSA9IG5ldyBQcm9taXNlKHIgPT4gcigpKTtcclxuICAgICAgICBpZiAoIXdpbmRvdy4kIHx8ICF3aW5kb3cualF1ZXJ5KSBkZXBlbmRlbmN5UHJvbWlzZSA9IHRoaXMubG9hZERlcGVuZGVuY2llcygpO1xyXG5cclxuICAgICAgICBEYXRhU3RvcmUuaW5pdGlhbGl6ZSgpO1xyXG4gICAgICAgIGF3YWl0IExvY2FsZU1hbmFnZXIuaW5pdGlhbGl6ZSgpO1xyXG5cclxuICAgICAgICBpZiAoQ29uZmlnLnZlcnNpb24gPCBDb25maWcubWluU3VwcG9ydGVkVmVyc2lvbikgcmV0dXJuIE1vZGFscy5hbGVydChTdHJpbmdzLlN0YXJ0dXAubm90U3VwcG9ydGVkLCBTdHJpbmdzLlN0YXJ0dXAudmVyc2lvbk1pc21hdGNoLmZvcm1hdCh7aW5qZWN0b3I6IENvbmZpZy52ZXJzaW9uLCByZW1vdGU6IENvbmZpZy5iYmRWZXJzaW9ufSkpO1xyXG4gICAgICAgIGlmICh3aW5kb3cuRUQpIHJldHVybiBNb2RhbHMuYWxlcnQoU3RyaW5ncy5TdGFydHVwLm5vdFN1cHBvcnRlZCwgU3RyaW5ncy5TdGFydHVwLmluY29tcGF0aWJsZUFwcC5mb3JtYXQoe2FwcDogXCJFbmhhbmNlZERpc2NvcmRcIn0pKTtcclxuICAgICAgICBpZiAod2luZG93LldlYlNvY2tldCAmJiB3aW5kb3cuV2ViU29ja2V0Lm5hbWUgJiYgd2luZG93LldlYlNvY2tldC5uYW1lLmluY2x1ZGVzKFwiUGF0Y2hlZFwiKSkgcmV0dXJuIE1vZGFscy5hbGVydChTdHJpbmdzLlN0YXJ0dXAubm90U3VwcG9ydGVkLCBTdHJpbmdzLlN0YXJ0dXAuaW5jb21wYXRpYmxlQXBwLmZvcm1hdCh7YXBwOiBcIlBvd2VyY29yZFwifSkpO1xyXG5cclxuICAgICAgICBjb25zdCBsYXRlc3RMb2NhbFZlcnNpb24gPSBDb25maWcudXBkYXRlciA/IENvbmZpZy51cGRhdGVyLkxhdGVzdFZlcnNpb24gOiBDb25maWcubGF0ZXN0VmVyc2lvbjtcclxuICAgICAgICBpZiAobGF0ZXN0TG9jYWxWZXJzaW9uID4gQ29uZmlnLnZlcnNpb24pIHtcclxuICAgICAgICAgICAgTW9kYWxzLnNob3dDb25maXJtYXRpb25Nb2RhbChTdHJpbmdzLlN0YXJ0dXAudXBkYXRlQXZhaWxhYmxlLCBTdHJpbmdzLlN0YXJ0dXAudXBkYXRlSW5mby5mb3JtYXQoe3ZlcnNpb246IGxhdGVzdExvY2FsVmVyc2lvbn0pLCB7XHJcbiAgICAgICAgICAgICAgICBjb25maXJtVGV4dDogU3RyaW5ncy5TdGFydHVwLnVwZGF0ZU5vdyxcclxuICAgICAgICAgICAgICAgIGNhbmNlbFRleHQ6IFN0cmluZ3MuU3RhcnR1cC5tYXliZUxhdGVyLFxyXG4gICAgICAgICAgICAgICAgb25Db25maXJtOiBhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgb25VcGRhdGVGYWlsZWQgPSAoKSA9PiB7IE1vZGFscy5hbGVydChTdHJpbmdzLlN0YXJ0dXAudXBkYXRlRmFpbGVkLCBTdHJpbmdzLlN0YXJ0dXAubWFudWFsVXBkYXRlKTsgfTtcclxuICAgICAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkaWRVcGRhdGUgPSBhd2FpdCB0aGlzLnVwZGF0ZUluamVjdG9yKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZGlkVXBkYXRlKSByZXR1cm4gb25VcGRhdGVGYWlsZWQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYXBwID0gcmVxdWlyZShcImVsZWN0cm9uXCIpLnJlbW90ZS5hcHA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcC5yZWxhdW5jaCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBhcHAuZXhpdCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uVXBkYXRlRmFpbGVkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG5cclxuICAgICAgICBMb2dnZXIubG9nKFwiU3RhcnR1cFwiLCBcIkluaXRpYWxpemluZyBTZXR0aW5nc1wiKTtcclxuICAgICAgICBTZXR0aW5ncy5pbml0aWFsaXplKCk7XHJcblxyXG4gICAgICAgIC8vIERPTU1hbmFnZXIuaW5pdGlhbGl6ZSgpO1xyXG4gICAgICAgIGF3YWl0IHRoaXMud2FpdEZvckd1aWxkcygpO1xyXG4gICAgICAgIFJlYWN0Q29tcG9uZW50cy5pbml0aWFsaXplKCk7XHJcbiAgICAgICAgQ29tcG9uZW50UGF0Y2hlci5pbml0aWFsaXplKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBtb2R1bGUgaW4gQnVpbHRpbnMpIEJ1aWx0aW5zW21vZHVsZV0uaW5pdGlhbGl6ZSgpO1xyXG5cclxuICAgICAgICBhd2FpdCBkZXBlbmRlbmN5UHJvbWlzZTtcclxuICAgICAgICBMb2dnZXIubG9nKFwiU3RhcnR1cFwiLCBcIkxvYWRpbmcgUGx1Z2luc1wiKTtcclxuICAgICAgICBjb25zdCBwbHVnaW5FcnJvcnMgPSBQbHVnaW5NYW5hZ2VyLmluaXRpYWxpemUoKTtcclxuXHJcbiAgICAgICAgTG9nZ2VyLmxvZyhcIlN0YXJ0dXBcIiwgXCJMb2FkaW5nIFRoZW1lc1wiKTtcclxuICAgICAgICBjb25zdCB0aGVtZUVycm9ycyA9IFRoZW1lTWFuYWdlci5pbml0aWFsaXplKCk7XHJcblxyXG4gICAgICAgIExvZ2dlci5sb2coXCJTdGFydHVwXCIsIFwiUmVtb3ZpbmcgTG9hZGluZyBJY29uXCIpO1xyXG4gICAgICAgIExvYWRpbmdJY29uLmhpZGUoKTtcclxuXHJcbiAgICAgICAgLy8gU2hvdyBsb2FkaW5nIGVycm9yc1xyXG4gICAgICAgIExvZ2dlci5sb2coXCJTdGFydHVwXCIsIFwiQ29sbGVjdGluZyBTdGFydHVwIEVycm9yc1wiKTtcclxuICAgICAgICBNb2RhbHMuc2hvd0FkZG9uRXJyb3JzKHtwbHVnaW5zOiBwbHVnaW5FcnJvcnMsIHRoZW1lczogdGhlbWVFcnJvcnN9KTtcclxuXHJcbiAgICAgICAgY29uc3QgcHJldmlvdXNWZXJzaW9uID0gRGF0YVN0b3JlLmdldEJERGF0YShcInZlcnNpb25cIik7XHJcbiAgICAgICAgaWYgKENvbmZpZy5iYmRWZXJzaW9uID4gcHJldmlvdXNWZXJzaW9uKSB7XHJcbiAgICAgICAgICAgIE1vZGFscy5zaG93Q2hhbmdlbG9nTW9kYWwoQ2hhbmdlbG9nKTtcclxuICAgICAgICAgICAgRGF0YVN0b3JlLnNldEJERGF0YShcInZlcnNpb25cIiwgQ29uZmlnLmJiZFZlcnNpb24pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB3YWl0Rm9yR3VpbGRzKCkge1xyXG4gICAgICAgIGxldCB0aW1lc0NoZWNrZWQgPSAwO1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcclxuICAgICAgICAgICAgY29uc3QgY2hlY2tGb3JHdWlsZHMgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICB0aW1lc0NoZWNrZWQrKztcclxuICAgICAgICAgICAgICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlICE9IFwiY29tcGxldGVcIikgc2V0VGltZW91dChjaGVja0Zvckd1aWxkcywgMTAwKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHdyYXBwZXIgPSBHdWlsZENsYXNzZXMud3JhcHBlci5zcGxpdChcIiBcIilbMF07XHJcbiAgICAgICAgICAgICAgICBjb25zdCBndWlsZCA9IEd1aWxkQ2xhc3Nlcy5saXN0SXRlbS5zcGxpdChcIiBcIilbMF07XHJcbiAgICAgICAgICAgICAgICBjb25zdCBibG9iID0gR3VpbGRDbGFzc2VzLmJsb2JDb250YWluZXIuc3BsaXQoXCIgXCIpWzBdO1xyXG4gICAgICAgICAgICAgICAgaWYgKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYC4ke3dyYXBwZXJ9IC4ke2d1aWxkfSAuJHtibG9ifWApLmxlbmd0aCA+IDApIHJldHVybiByZXNvbHZlKENvbmZpZy5kZWZlckxvYWRlZCA9IHRydWUpO1xyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodGltZXNDaGVja2VkID49IDUwKSByZXR1cm4gcmVzb2x2ZShDb25maWcuZGVmZXJMb2FkZWQgPSB0cnVlKTtcclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoY2hlY2tGb3JHdWlsZHMsIDEwMCk7XHJcbiAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICBjaGVja0Zvckd1aWxkcygpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGxvYWREZXBlbmRlbmNpZXMoKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBkYXRhIG9mIHRoaXMuZGVwZW5kZW5jaWVzKSB7XHJcbiAgICAgICAgICAgIGlmIChDb25maWcubG9jYWwgJiYgQ29uZmlnLmxvY2FsUGF0aCAmJiBkYXRhLmxvY2FsUGF0aCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmMocGF0aC5yZXNvbHZlKENvbmZpZy5sb2NhbFBhdGgsIGRhdGEubG9jYWxQYXRoKSkpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjc3MgPSBmcy5yZWFkRmlsZVN5bmMocGF0aC5yZXNvbHZlKENvbmZpZy5sb2NhbFBhdGgsIGRhdGEubG9jYWxQYXRoKSkudG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgICAgICAgICBET01NYW5hZ2VyLmluamVjdFN0eWxlKGRhdGEubmFtZSwgY3NzKTtcclxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCB1cmwgPSBVdGlsaXRpZXMuZm9ybWF0U3RyaW5nKChDb25maWcubG9jYWwgJiYgZGF0YS5sb2NhbCAhPSBudWxsKSA/IGRhdGEubG9jYWwgOiBkYXRhLnVybCwge3JlcG86IENvbmZpZy5yZXBvLCBoYXNoOiBDb25maWcuaGFzaCwgbG9jYWxTZXJ2ZXI6IENvbmZpZy5sb2NhbFNlcnZlcn0pO1xyXG4gICAgICAgICAgICBMb2dnZXIubG9nKGBTdGFydHVwYCwgYExvYWRpbmcgUmVzb3VyY2UgKCR7dXJsfSlgKTtcclxuXHRcdFx0Y29uc3QgaW5qZWN0b3IgPSAoZGF0YS50eXBlID09IFwic2NyaXB0XCIgPyBET01NYW5hZ2VyLmluamVjdFNjcmlwdCA6IERPTU1hbmFnZXIubGlua1N0eWxlKS5iaW5kKERPTU1hbmFnZXIpO1xyXG5cdFx0XHR0cnkge1xyXG5cdFx0XHRcdGF3YWl0IGluamVjdG9yKGRhdGEubmFtZSwgdXJsKTtcclxuXHRcdFx0fVxyXG5cdFx0XHRjYXRjaCAoZXJyKSB7XHJcblx0XHRcdFx0Y29uc3QgYmFja3VwID0gVXRpbGl0aWVzLmZvcm1hdFN0cmluZyhkYXRhLmJhY2t1cCwge21pbmlmaWVkOiBDb25maWcubWluaWZpZWQgPyBcIi5taW5cIiA6IFwiXCJ9KTtcclxuXHRcdFx0XHRMb2dnZXIuc3RhY2t0cmFjZShgU3RhcnR1cGAsIGBDb3VsZCBub3QgbG9hZCAke3VybH0uIFVzaW5nIGJhY2t1cCAke2JhY2t1cH1gLCBlcnIpO1xyXG5cdFx0XHRcdHRyeSB7XHJcblx0XHRcdFx0XHRhd2FpdCBpbmplY3RvcihkYXRhLm5hbWUsIGJhY2t1cCk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgTG9nZ2VyLnN0YWNrdHJhY2UoYFN0YXJ0dXBgLCBgQ291bGQgbm90IGxvYWQgJHt1cmx9LiBVc2luZyBiYWNrdXAgJHtiYWNrdXB9YCwgZXJyKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5uYW1lID09PSBcImpxdWVyeVwiKSAgTW9kYWxzLmFsZXJ0KFN0cmluZ3MuU3RhcnR1cC5qcXVlcnlGYWlsZWQsIFN0cmluZ3MuU3RhcnR1cC5qcXVlcnlGYWlsZWREZXRhaWxzKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgdXBkYXRlSW5qZWN0b3IoKSB7XHJcbiAgICAgICAgY29uc3QgaW5qZWN0aW9uUGF0aCA9IERhdGFTdG9yZS5pbmplY3Rpb25QYXRoO1xyXG4gICAgICAgIGlmICghaW5qZWN0aW9uUGF0aCkgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgICAgICBjb25zdCBmcyA9IHJlcXVpcmUoXCJmc1wiKTtcclxuICAgICAgICBjb25zdCBwYXRoID0gcmVxdWlyZShcInBhdGhcIik7XHJcbiAgICAgICAgY29uc3Qgcm1yZiA9IHJlcXVpcmUoXCJyaW1yYWZcIik7XHJcbiAgICAgICAgY29uc3QgeWF1emwgPSByZXF1aXJlKFwieWF1emxcIik7XHJcbiAgICAgICAgY29uc3QgbWtkaXJwID0gcmVxdWlyZShcIm1rZGlycFwiKTtcclxuICAgICAgICBjb25zdCByZXF1ZXN0ID0gcmVxdWlyZShcInJlcXVlc3RcIik7XHJcblxyXG4gICAgICAgIGNvbnN0IHBhcmVudFBhdGggPSBwYXRoLnJlc29sdmUoaW5qZWN0aW9uUGF0aCwgXCIuLlwiKTtcclxuICAgICAgICBjb25zdCBmb2xkZXJOYW1lID0gcGF0aC5iYXNlbmFtZShpbmplY3Rpb25QYXRoKTtcclxuICAgICAgICBjb25zdCB6aXBMaW5rID0gXCJodHRwczovL2dpdGh1Yi5jb20vcmF1ZW56aS9CZXR0ZXJEaXNjb3JkQXBwL2FyY2hpdmUvaW5qZWN0b3IuemlwXCI7XHJcbiAgICAgICAgY29uc3Qgc2F2ZWRaaXAgPSBwYXRoLnJlc29sdmUocGFyZW50UGF0aCwgXCJpbmplY3Rvci56aXBcIik7XHJcbiAgICAgICAgY29uc3QgZXh0cmFjdGVkRm9sZGVyID0gcGF0aC5yZXNvbHZlKHBhcmVudFBhdGgsIFwiQmV0dGVyRGlzY29yZEFwcC1pbmplY3RvclwiKTtcclxuXHJcbiAgICAgICAgLy8gRG93bmxvYWQgdGhlIGluamVjdG9yIHppcCBmaWxlXHJcbiAgICAgICAgTG9nZ2VyLmxvZyhcIkluamVjdG9yVXBkYXRlXCIsIFwiRG93bmxvYWRpbmcgXCIgKyB6aXBMaW5rKTtcclxuICAgICAgICBsZXQgc3VjY2VzcyA9IGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xyXG4gICAgICAgICAgICByZXF1ZXN0LmdldCh7dXJsOiB6aXBMaW5rLCBlbmNvZGluZzogbnVsbH0sIGFzeW5jIChlcnJvciwgcmVzcG9uc2UsIGJvZHkpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChlcnJvciB8fCByZXNwb25zZS5zdGF0dXNDb2RlICE9PSAyMDApIHJldHVybiByZXNvbHZlKGZhbHNlKTtcclxuICAgICAgICAgICAgICAgIC8vIFNhdmUgYSBiYWNrdXAgaW4gY2FzZSBzb21lb25lIGhhcyB0aGVpciBvd24gY29weVxyXG4gICAgICAgICAgICAgICAgY29uc3QgYWxyZWFkeUV4aXN0cyA9IGF3YWl0IG5ldyBQcm9taXNlKHJlcyA9PiBmcy5leGlzdHMoc2F2ZWRaaXAsIHJlcykpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGFscmVhZHlFeGlzdHMpIGF3YWl0IG5ldyBQcm9taXNlKHJlcyA9PiBmcy5yZW5hbWUoc2F2ZWRaaXAsIGAke3NhdmVkWmlwfS5iYWske01hdGgucm91bmQocGVyZm9ybWFuY2Uubm93KCkpfWAsIHJlcykpO1xyXG5cclxuICAgICAgICAgICAgICAgIExvZ2dlci5sb2coXCJJbmplY3RvclVwZGF0ZVwiLCBcIldyaXRpbmcgXCIgKyBzYXZlZFppcCk7XHJcbiAgICAgICAgICAgICAgICBmcy53cml0ZUZpbGUoc2F2ZWRaaXAsIGJvZHksIGVyciA9PiByZXNvbHZlKCFlcnIpKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaWYgKCFzdWNjZXNzKSByZXR1cm4gc3VjY2VzcztcclxuXHJcbiAgICAgICAgLy8gQ2hlY2sgYW5kIGRlbGV0ZSByZW5hbWUgZXh0cmFjdGlvblxyXG4gICAgICAgIGNvbnN0IGFscmVhZHlFeGlzdHMgPSBhd2FpdCBuZXcgUHJvbWlzZShyZXMgPT4gZnMuZXhpc3RzKGV4dHJhY3RlZEZvbGRlciwgcmVzKSk7XHJcbiAgICAgICAgaWYgKGFscmVhZHlFeGlzdHMpIGF3YWl0IG5ldyBQcm9taXNlKHJlcyA9PiBmcy5yZW5hbWUoZXh0cmFjdGVkRm9sZGVyLCBgJHtleHRyYWN0ZWRGb2xkZXJ9LmJhayR7TWF0aC5yb3VuZChwZXJmb3JtYW5jZS5ub3coKSl9YCwgcmVzKSk7XHJcblxyXG4gICAgICAgIC8vIFVuemlwIHRoZSBkb3dubG9hZGVkIHppcCBmaWxlXHJcbiAgICAgICAgY29uc3QgemlwZmlsZSA9IGF3YWl0IG5ldyBQcm9taXNlKHIgPT4geWF1emwub3BlbihzYXZlZFppcCwge2xhenlFbnRyaWVzOiB0cnVlfSwgKGVyciwgemlwKSA9PiByKHppcCkpKTtcclxuICAgICAgICB6aXBmaWxlLm9uKFwiZW50cnlcIiwgZnVuY3Rpb24gKGVudHJ5KSB7XHJcbiAgICAgICAgICAgIC8vIFNraXAgZGlyZWN0b3JpZXMsIHRoZXkgYXJlIGhhbmRsZWQgd2l0aCBta2RpcnBcclxuICAgICAgICAgICAgaWYgKGVudHJ5LmZpbGVOYW1lLmVuZHNXaXRoKFwiL1wiKSkgcmV0dXJuIHppcGZpbGUucmVhZEVudHJ5KCk7XHJcblxyXG4gICAgICAgICAgICBMb2dnZXIubG9nKFwiSW5qZWN0b3JVcGRhdGVcIiwgXCJFeHRyYWN0aW5nIFwiICsgZW50cnkuZmlsZU5hbWUpO1xyXG4gICAgICAgICAgICAvLyBNYWtlIGFueSBuZWVkZWQgcGFyZW50IGRpcmVjdG9yaWVzXHJcbiAgICAgICAgICAgIGNvbnN0IGZ1bGxQYXRoID0gcGF0aC5yZXNvbHZlKHBhcmVudFBhdGgsIGVudHJ5LmZpbGVOYW1lKTtcclxuICAgICAgICAgICAgbWtkaXJwLnN5bmMocGF0aC5kaXJuYW1lKGZ1bGxQYXRoKSk7XHJcbiAgICAgICAgICAgIHppcGZpbGUub3BlblJlYWRTdHJlYW0oZW50cnksIGZ1bmN0aW9uIChlcnIsIHJlYWRTdHJlYW0pIHtcclxuICAgICAgICAgICAgICAgIGlmIChlcnIpIHJldHVybiBzdWNjZXNzID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICByZWFkU3RyZWFtLm9uKFwiZW5kXCIsIGZ1bmN0aW9uICgpIHsgemlwZmlsZS5yZWFkRW50cnkoKTsgfSk7IC8vIEdvIHRvIG5leHQgZmlsZSBhZnRlciB0aGlzXHJcbiAgICAgICAgICAgICAgICByZWFkU3RyZWFtLnBpcGUoZnMuY3JlYXRlV3JpdGVTdHJlYW0oZnVsbFBhdGgpKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgemlwZmlsZS5yZWFkRW50cnkoKTsgLy8gU3RhcnQgcmVhZGluZ1xyXG5cclxuXHJcbiAgICAgICAgLy8gV2FpdCBmb3IgdGhlIGZpbmFsIGZpbGUgdG8gZmluaXNoXHJcbiAgICAgICAgYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiB6aXBmaWxlLm9uY2UoXCJlbmRcIiwgcmVzb2x2ZSkpO1xyXG5cclxuICAgICAgICAvLyBTYXZlIGEgYmFja3VwIGluIGNhc2Ugc29tZXRoaW5nIGdvZXMgd3JvbmcgZHVyaW5nIGZpbmFsIHN0ZXBcclxuICAgICAgICBjb25zdCBiYWNrdXBGb2xkZXIgPSBwYXRoLnJlc29sdmUocGFyZW50UGF0aCwgYCR7Zm9sZGVyTmFtZX0uYmFrJHtNYXRoLnJvdW5kKHBlcmZvcm1hbmNlLm5vdygpKX1gKTtcclxuICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IGZzLnJlbmFtZShpbmplY3Rpb25QYXRoLCBiYWNrdXBGb2xkZXIsIHJlc29sdmUpKTtcclxuXHJcbiAgICAgICAgLy8gUmVuYW1lIHRoZSBleHRyYWN0ZWQgZm9sZGVyIHRvIHdoYXQgaXQgc2hvdWxkIGJlXHJcbiAgICAgICAgTG9nZ2VyLmxvZyhcIkluamVjdG9yVXBkYXRlXCIsIGBSZW5hbWluZyAke3BhdGguYmFzZW5hbWUoZXh0cmFjdGVkRm9sZGVyKX0gdG8gJHtmb2xkZXJOYW1lfWApO1xyXG4gICAgICAgIHN1Y2Nlc3MgPSBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IGZzLnJlbmFtZShleHRyYWN0ZWRGb2xkZXIsIGluamVjdGlvblBhdGgsIGVyciA9PiByZXNvbHZlKCFlcnIpKSk7XHJcbiAgICAgICAgaWYgKCFzdWNjZXNzKSB7XHJcbiAgICAgICAgICAgIExvZ2dlci5lcnIoXCJJbmplY3RvclVwZGF0ZVwiLCBcIkZhaWxlZCB0byByZW5hbWUgdGhlIGZpbmFsIGRpcmVjdG9yeVwiKTtcclxuICAgICAgICAgICAgcmV0dXJuIHN1Y2Nlc3M7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBJZiByZW5hbWUgaGFkIGlzc3VlcywgZGVsZXRlIHdoYXQgd2UgdHJpZWQgdG8gcmVuYW1lIGFuZCByZXN0b3JlIGJhY2t1cFxyXG4gICAgICAgIGlmICghc3VjY2Vzcykge1xyXG4gICAgICAgICAgICBMb2dnZXIuZXJyKFwiSW5qZWN0b3JVcGRhdGVcIiwgXCJTb21ldGhpbmcgd2VudCB3cm9uZy4uLiByZXN0b3JpbmcgYmFja3Vwcy5cIik7XHJcbiAgICAgICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gcm1yZihleHRyYWN0ZWRGb2xkZXIsIHJlc29sdmUpKTtcclxuICAgICAgICAgICAgYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiBmcy5yZW5hbWUoYmFja3VwRm9sZGVyLCBpbmplY3Rpb25QYXRoLCByZXNvbHZlKSk7XHJcbiAgICAgICAgICAgIHJldHVybiBzdWNjZXNzO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gSWYgd2UndmUgZ290dGVuIHRvIHRoaXMgcG9pbnQsIGV2ZXJ5dGhpbmcgc2hvdWxkIGhhdmUgZ29uZSBzbW9vdGhseS5cclxuICAgICAgICAvLyBDbGVhbnVwIHRoZSBiYWNrdXAgZm9sZGVyIHRoZW4gcmVtb3ZlIHRoZSB6aXBcclxuICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHJtcmYoYmFja3VwRm9sZGVyLCByZXNvbHZlKSk7XHJcbiAgICAgICAgYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiBmcy51bmxpbmsoc2F2ZWRaaXAsIHJlc29sdmUpKTtcclxuXHJcbiAgICAgICAgTG9nZ2VyLmxvZyhcIkluamVjdG9yVXBkYXRlXCIsIFwiSW5qZWN0b3IgVXBkYXRlZCFcIik7XHJcbiAgICAgICAgcmV0dXJuIHN1Y2Nlc3M7XHJcbiAgICB9XHJcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/modules/core.js\n");
/***/ }),
/***/ "./src/modules/datastore.js":
/*!**********************************!*\
!*** ./src/modules/datastore.js ***!
\**********************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _data_data_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../data/data.js */ \"./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_data_js__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_data_js__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");
/***/ }),
/***/ "./src/modules/discordmodules.js":
/*!***************************************!*\
!*** ./src/modules/discordmodules.js ***!
\***************************************/
/*! exports provided: default */
/***/ (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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9kaXNjb3JkbW9kdWxlcy5qcz9hNTRkIl0sIm5hbWVzIjpbIlV0aWxpdGllcyIsIm1lbW9pemVPYmplY3QiLCJSZWFjdCIsIldlYnBhY2tNb2R1bGVzIiwiZ2V0QnlQcm9wcyIsIlJlYWN0RE9NIiwiRmx1eCIsIkV2ZW50cyIsImdldEJ5UHJvdG90eXBlcyIsIkd1aWxkU3RvcmUiLCJTb3J0ZWRHdWlsZFN0b3JlIiwiU2VsZWN0ZWRHdWlsZFN0b3JlIiwiR3VpbGRTeW5jIiwiR3VpbGRJbmZvIiwiR3VpbGRDaGFubmVsc1N0b3JlIiwiR3VpbGRNZW1iZXJTdG9yZSIsIk1lbWJlckNvdW50U3RvcmUiLCJHdWlsZEVtb2ppU3RvcmUiLCJHdWlsZEFjdGlvbnMiLCJHdWlsZFBlcm1pc3Npb25zIiwiQ2hhbm5lbFN0b3JlIiwiU2VsZWN0ZWRDaGFubmVsU3RvcmUiLCJDaGFubmVsQWN0aW9ucyIsIlByaXZhdGVDaGFubmVsQWN0aW9ucyIsIkNoYW5uZWxTZWxlY3RvciIsIlVzZXJJbmZvU3RvcmUiLCJVc2VyU2V0dGluZ3NTdG9yZSIsIkFjY291bnRNYW5hZ2VyIiwiVXNlclNldHRpbmdzVXBkYXRlciIsIk9ubGluZVdhdGNoZXIiLCJDdXJyZW50VXNlcklkbGUiLCJSZWxhdGlvbnNoaXBTdG9yZSIsIlJlbGF0aW9uc2hpcE1hbmFnZXIiLCJNZW50aW9uU3RvcmUiLCJVc2VyU3RvcmUiLCJVc2VyU3RhdHVzU3RvcmUiLCJVc2VyVHlwaW5nU3RvcmUiLCJVc2VyQWN0aXZpdHlTdG9yZSIsIlVzZXJOYW1lUmVzb2x2ZXIiLCJVc2VyTm90ZVN0b3JlIiwiVXNlck5vdGVBY3Rpb25zIiwiRW1vamlJbmZvIiwiRW1vamlVdGlscyIsIkVtb2ppU3RvcmUiLCJJbnZpdGVTdG9yZSIsIkludml0ZVJlc29sdmVyIiwiSW52aXRlQWN0aW9ucyIsIkRpc2NvcmRDb25zdGFudHMiLCJEaXNjb3JkUGVybWlzc2lvbnMiLCJQZXJtaXNzaW9ucyIsIlBlcm1pc3Npb25VdGlscyIsIkNvbG9yQ29udmVydGVyIiwiQ29sb3JTaGFkZXIiLCJUaW55Q29sb3IiLCJDbGFzc1Jlc29sdmVyIiwiQnV0dG9uRGF0YSIsIkljb25OYW1lcyIsIk5hdmlnYXRpb25VdGlscyIsIk1lc3NhZ2VTdG9yZSIsIk1lc3NhZ2VBY3Rpb25zIiwiTWVzc2FnZVF1ZXVlIiwiTWVzc2FnZVBhcnNlciIsImhsanMiLCJTaW1wbGVNYXJrZG93biIsIkV4cGVyaW1lbnRTdG9yZSIsIkV4cGVyaW1lbnRzTWFuYWdlciIsIkN1cnJlbnRFeHBlcmltZW50IiwiSW1hZ2VSZXNvbHZlciIsIkltYWdlVXRpbHMiLCJBdmF0YXJEZWZhdWx0cyIsIldpbmRvd0luZm8iLCJUYWdJbmZvIiwiRE9NSW5mbyIsIkxvY2FsZU1hbmFnZXIiLCJNb21lbnQiLCJMb2NhdGlvbk1hbmFnZXIiLCJUaW1lc3RhbXBzIiwiVGltZUZvcm1hdHRlciIsIlN0cmluZ3MiLCJNZXNzYWdlcyIsIlN0cmluZ0Zvcm1hdHMiLCJTdHJpbmdVdGlscyIsIlVSTFBhcnNlciIsIkV4dHJhVVJMcyIsIkROREFjdGlvbnMiLCJETkRTb3VyY2VzIiwiRE5ET2JqZWN0cyIsIk1lZGlhRGV2aWNlSW5mbyIsIk1lZGlhSW5mbyIsIk1lZGlhRW5naW5lSW5mbyIsIlZvaWNlSW5mbyIsIlZpZGVvU3RyZWFtIiwiU291bmRNb2R1bGUiLCJFbGVjdHJvbk1vZHVsZSIsIkRpc3BhdGNoZXIiLCJQYXRoVXRpbHMiLCJOb3RpZmljYXRpb25Nb2R1bGUiLCJSb3V0ZXJNb2R1bGUiLCJBUElNb2R1bGUiLCJBbmFseXRpY0V2ZW50cyIsIktleUdlbmVyYXRvciIsImdldEJ5UmVnZXgiLCJCdWZmZXJzIiwiRGV2aWNlU3RvcmUiLCJTb2Z0d2FyZUluZm8iLCJDdXJyZW50Q29udGV4dCIsIkd1aWxkQ2xhc3NlcyIsImd1aWxkc1dyYXBwZXIiLCJndWlsZHMiLCJwaWxsIiwiT2JqZWN0IiwiYXNzaWduIiwiTGF5ZXJTdGFjayJdLCJtYXBw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QXlDLFVBQXpDLENBQWY7QUFDQSxVQUFNeUcsSUFBSSxHQUFHMUcsdURBQWMsQ0FBQ0MsVUFBZixDQUEwQixlQUExQixDQUFiO0FBQ0EsV0FBTzBHLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjLEVBQWQsRUFBa0JKLGFBQWxCLEVBQWlDQyxNQUFqQyxFQUF5Q0MsSUFBekMsQ0FBUDtBQUNILEdBOUlrQzs7QUFnSm5DLE1BQUlHLFVBQUosR0FBaUI7QUFBQyxXQUFPN0csdURBQWMsQ0FBQ0MsVUFBZixDQUEwQixXQUExQixDQUFQO0FBQStDOztBQWhKOUIsQ0FBeEIsQ0FBZiIsImZpbGUiOiIuL3NyYy9tb2R1bGVzL2Rpc2NvcmRtb2R1bGVzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIEEgbGFyZ2UgbGlzdCBvZiBrbm93biBhbmQgdXNlZnVsIHdlYnBhY2sgbW9kdWxlcyBpbnRlcm5hbCB0byBEaXNjb3JkLlxyXG4gKlxyXG4gKiBAbW9kdWxlIERpc2NvcmRNb2R1bGVzXHJcbiAqIEB2ZXJzaW9uIDAuMC4zXHJcbiAqL1xyXG5cclxuaW1wb3J0IFV0aWxpdGllcyBmcm9tIFwiLi91dGlsaXRpZXNcIjtcclxuaW1wb3J0IFdlYnBhY2tNb2R1bGVzIGZyb20gXCIuL3dlYnBhY2ttb2R1bGVzXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBVdGlsaXRpZXMubWVtb2l6ZU9iamVjdCh7XHJcbiAgICBnZXQgUmVhY3QoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJjcmVhdGVFbGVtZW50XCIsIFwiY2xvbmVFbGVtZW50XCIpO30sXHJcbiAgICBnZXQgUmVhY3RET00oKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJyZW5kZXJcIiwgXCJmaW5kRE9NTm9kZVwiKTt9LFxyXG4gICAgZ2V0IEZsdXgoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJjb25uZWN0U3RvcmVzXCIpO30sXHJcbiAgICBnZXQgRXZlbnRzKCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3RvdHlwZXMoXCJzZXRNYXhMaXN0ZW5lcnNcIiwgXCJlbWl0XCIpO30sXHJcblxyXG4gICAgLyogR3VpbGQgSW5mbywgU3RvcmVzLCBhbmQgVXRpbGl0aWVzICovXHJcbiAgICBnZXQgR3VpbGRTdG9yZSgpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcImdldEd1aWxkXCIpO30sXHJcbiAgICBnZXQgU29ydGVkR3VpbGRTdG9yZSgpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcImdldFNvcnRlZEd1aWxkc1wiKTt9LFxyXG4gICAgZ2V0IFNlbGVjdGVkR3VpbGRTdG9yZSgpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcImdldExhc3RTZWxlY3RlZEd1aWxkSWRcIik7fSxcclxuICAgIGdldCBHdWlsZFN5bmMoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJnZXRTeW5jZWRHdWlsZHNcIik7fSxcclxuICAgIGdldCBHdWlsZEluZm8oKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJnZXRBY3JvbnltXCIpO30sXHJcbiAgICBnZXQgR3VpbGRDaGFubmVsc1N0b3JlKCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiZ2V0Q2hhbm5lbHNcIiwgXCJnZXREZWZhdWx0Q2hhbm5lbFwiKTt9LFxyXG4gICAgZ2V0IEd1aWxkTWVtYmVyU3RvcmUoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJnZXRNZW1iZXJcIik7fSxcclxuICAgIGdldCBNZW1iZXJDb3VudFN0b3JlKCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiZ2V0TWVtYmVyQ291bnRzXCIpO30sXHJcbiAgICBnZXQgR3VpbGRFbW9qaVN0b3JlKCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiZ2V0RW1vamlzXCIpO30sXHJcbiAgICBnZXQgR3VpbGRBY3Rpb25zKCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwibWFya0d1aWxkQXNSZWFkXCIpO30sXHJcbiAgICBnZXQgR3VpbGRQZXJtaXNzaW9ucygpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcImdldEd1aWxkUGVybWlzc2lvbnNcIik7fSxcclxuXHJcbiAgICAvKiBDaGFubmVsIFN0b3JlICYgQWN0aW9ucyAqL1xyXG4gICAgZ2V0IENoYW5uZWxTdG9yZSgpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcImdldENoYW5uZWxzXCIsIFwiZ2V0RE1Gcm9tVXNlcklkXCIpO30sXHJcbiAgICBnZXQgU2VsZWN0ZWRDaGFubmVsU3RvcmUoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJnZXRMYXN0U2VsZWN0ZWRDaGFubmVsSWRcIik7fSxcclxuICAgIGdldCBDaGFubmVsQWN0aW9ucygpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcInNlbGVjdENoYW5uZWxcIik7fSxcclxuICAgIGdldCBQcml2YXRlQ2hhbm5lbEFjdGlvbnMoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJvcGVuUHJpdmF0ZUNoYW5uZWxcIik7fSxcclxuICAgIGdldCBDaGFubmVsU2VsZWN0b3IoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJzZWxlY3RHdWlsZFwiLCBcInNlbGVjdENoYW5uZWxcIik7fSxcclxuXHJcbiAgICAvKiBDdXJyZW50IFVzZXIgSW5mbywgU3RhdGUgYW5kIFNldHRpbmdzICovXHJcbiAgICBnZXQgVXNlckluZm9TdG9yZSgpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcImdldFRva2VuXCIpO30sXHJcbiAgICBnZXQgVXNlclNldHRpbmdzU3RvcmUoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJndWlsZFBvc2l0aW9uc1wiKTt9LFxyXG4gICAgZ2V0IEFjY291bnRNYW5hZ2VyKCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwicmVnaXN0ZXJcIiwgXCJsb2dpblwiKTt9LFxyXG4gICAgZ2V0IFVzZXJTZXR0aW5nc1VwZGF0ZXIoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJ1cGRhdGVSZW1vdGVTZXR0aW5nc1wiKTt9LFxyXG4gICAgZ2V0IE9ubGluZVdhdGNoZXIoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJpc09ubGluZVwiKTt9LFxyXG4gICAgZ2V0IEN1cnJlbnRVc2VySWRsZSgpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcImdldElkbGVUaW1lXCIpO30sXHJcbiAgICBnZXQgUmVsYXRpb25zaGlwU3RvcmUoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJpc0Jsb2NrZWRcIiwgXCJnZXRGcmllbmRJRHNcIik7fSxcclxuICAgIGdldCBSZWxhdGlvbnNoaXBNYW5hZ2VyKCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiYWRkUmVsYXRpb25zaGlwXCIpO30sXHJcbiAgICBnZXQgTWVudGlvblN0b3JlKCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiZ2V0TWVudGlvbnNcIik7fSxcclxuXHJcbiAgICAvKiBVc2VyIFN0b3JlcyBhbmQgVXRpbHMgKi9cclxuICAgIGdldCBVc2VyU3RvcmUoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJnZXRDdXJyZW50VXNlclwiKTt9LFxyXG4gICAgZ2V0IFVzZXJTdGF0dXNTdG9yZSgpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcImdldFN0YXR1c1wiLCBcImdldFN0YXRlXCIpO30sXHJcbiAgICBnZXQgVXNlclR5cGluZ1N0b3JlKCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiaXNUeXBpbmdcIik7fSxcclxuICAgIGdldCBVc2VyQWN0aXZpdHlTdG9yZSgpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcImdldEFjdGl2aXR5XCIpO30sXHJcbiAgICBnZXQgVXNlck5hbWVSZXNvbHZlcigpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcImdldE5hbWVcIik7fSxcclxuICAgIGdldCBVc2VyTm90ZVN0b3JlKCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiZ2V0Tm90ZVwiKTt9LFxyXG4gICAgZ2V0IFVzZXJOb3RlQWN0aW9ucygpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcInVwZGF0ZU5vdGVcIik7fSxcclxuXHJcbiAgICAvKiBFbW9qaSBTdG9yZSBhbmQgVXRpbHMgKi9cclxuICAgIGdldCBFbW9qaUluZm8oKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJpc0Vtb2ppRGlzYWJsZWRcIik7fSxcclxuICAgIGdldCBFbW9qaVV0aWxzKCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiZ2V0R3VpbGRFbW9qaVwiKTt9LFxyXG4gICAgZ2V0IEVtb2ppU3RvcmUoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJnZXRCeUNhdGVnb3J5XCIsIFwiRU1PSklfTkFNRV9SRVwiKTt9LFxyXG5cclxuICAgIC8qIEludml0ZSBTdG9yZSBhbmQgVXRpbHMgKi9cclxuICAgIGdldCBJbnZpdGVTdG9yZSgpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcImdldEludml0ZXNcIik7fSxcclxuICAgIGdldCBJbnZpdGVSZXNvbHZlcigpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcImZpbmRJbnZpdGVcIik7fSxcclxuICAgIGdldCBJbnZpdGVBY3Rpb25zKCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiYWNjZXB0SW52aXRlXCIpO30sXHJcblxyXG4gICAgLyogRGlzY29yZCBPYmplY3RzICYgVXRpbHMgKi9cclxuICAgIGdldCBEaXNjb3JkQ29uc3RhbnRzKCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiUGVybWlzc2lvbnNcIiwgXCJBY3Rpdml0eVR5cGVzXCIsIFwiU3RhdHVzVHlwZXNcIik7fSxcclxuICAgIGdldCBEaXNjb3JkUGVybWlzc2lvbnMoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJQZXJtaXNzaW9uc1wiLCBcIkFjdGl2aXR5VHlwZXNcIiwgXCJTdGF0dXNUeXBlc1wiKS5QZXJtaXNzaW9uczt9LFxyXG4gICAgZ2V0IFBlcm1pc3Npb25VdGlscygpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcImdldEhpZ2hlc3RSb2xlXCIpO30sXHJcbiAgICBnZXQgQ29sb3JDb252ZXJ0ZXIoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJoZXgyaW50XCIpO30sXHJcbiAgICBnZXQgQ29sb3JTaGFkZXIoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJkYXJrZW5cIik7fSxcclxuICAgIGdldCBUaW55Q29sb3IoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvdG90eXBlcyhcInRvUmdiXCIpO30sXHJcbiAgICBnZXQgQ2xhc3NSZXNvbHZlcigpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcImdldENsYXNzXCIpO30sXHJcbiAgICBnZXQgQnV0dG9uRGF0YSgpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcIkJ1dHRvblNpemVzXCIpO30sXHJcbiAgICBnZXQgSWNvbk5hbWVzKCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiSWNvbk5hbWVzXCIpO30sXHJcbiAgICBnZXQgTmF2aWdhdGlvblV0aWxzKCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwidHJhbnNpdGlvblRvXCIsIFwicmVwbGFjZVdpdGhcIiwgXCJnZXRIaXN0b3J5XCIpO30sXHJcblxyXG4gICAgLyogRGlzY29yZCBNZXNzYWdlcyAqL1xyXG4gICAgZ2V0IE1lc3NhZ2VTdG9yZSgpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcImdldE1lc3NhZ2VzXCIpO30sXHJcbiAgICBnZXQgTWVzc2FnZUFjdGlvbnMoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJqdW1wVG9NZXNzYWdlXCIsIFwiX3NlbmRNZXNzYWdlXCIpO30sXHJcbiAgICBnZXQgTWVzc2FnZVF1ZXVlKCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiZW5xdWV1ZVwiKTt9LFxyXG4gICAgZ2V0IE1lc3NhZ2VQYXJzZXIoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJjcmVhdGVNZXNzYWdlXCIsIFwicGFyc2VcIiwgXCJ1bnBhcnNlXCIpO30sXHJcblxyXG4gICAgLyogVGV4dCBQcm9jZXNzaW5nICovXHJcbiAgICBnZXQgaGxqcygpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcImhpZ2hsaWdodFwiLCBcImhpZ2hsaWdodEJsb2NrXCIpO30sXHJcbiAgICBnZXQgU2ltcGxlTWFya2Rvd24oKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJwYXJzZUJsb2NrXCIsIFwicGFyc2VJbmxpbmVcIiwgXCJkZWZhdWx0T3V0cHV0XCIpO30sXHJcblxyXG4gICAgLyogRXhwZXJpbWVudHMgKi9cclxuICAgIGdldCBFeHBlcmltZW50U3RvcmUoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJnZXRFeHBlcmltZW50T3ZlcnJpZGVzXCIpO30sXHJcbiAgICBnZXQgRXhwZXJpbWVudHNNYW5hZ2VyKCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiaXNEZXZlbG9wZXJcIik7fSxcclxuICAgIGdldCBDdXJyZW50RXhwZXJpbWVudCgpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcImdldEV4cGVyaW1lbnRJZFwiKTt9LFxyXG5cclxuICAgIC8qIEltYWdlcywgQXZhdGFycyBhbmQgVXRpbHMgKi9cclxuICAgIGdldCBJbWFnZVJlc29sdmVyKCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiZ2V0VXNlckF2YXRhclVSTFwiLCBcImdldEd1aWxkSWNvblVSTFwiKTt9LFxyXG4gICAgZ2V0IEltYWdlVXRpbHMoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJnZXRTaXplZEltYWdlU3JjXCIpO30sXHJcbiAgICBnZXQgQXZhdGFyRGVmYXVsdHMoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJnZXRVc2VyQXZhdGFyVVJMXCIsIFwiREVGQVVMVF9BVkFUQVJTXCIpO30sXHJcblxyXG4gICAgLyogV2luZG93LCBET00sIEhUTUwgKi9cclxuICAgIGdldCBXaW5kb3dJbmZvKCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiaXNGb2N1c2VkXCIsIFwid2luZG93U2l6ZVwiKTt9LFxyXG4gICAgZ2V0IFRhZ0luZm8oKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJWQUxJRF9UQUdfTkFNRVNcIik7fSxcclxuICAgIGdldCBET01JbmZvKCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiY2FuVXNlRE9NXCIpO30sXHJcblxyXG4gICAgLyogTG9jYWxlL0xvY2F0aW9uIGFuZCBUaW1lICovXHJcbiAgICBnZXQgTG9jYWxlTWFuYWdlcigpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcInNldExvY2FsZVwiKTt9LFxyXG4gICAgZ2V0IE1vbWVudCgpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcInBhcnNlWm9uZVwiKTt9LFxyXG4gICAgZ2V0IExvY2F0aW9uTWFuYWdlcigpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcImNyZWF0ZUxvY2F0aW9uXCIpO30sXHJcbiAgICBnZXQgVGltZXN0YW1wcygpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcImZyb21UaW1lc3RhbXBcIik7fSxcclxuICAgIGdldCBUaW1lRm9ybWF0dGVyKCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiZGF0ZUZvcm1hdFwiKTt9LFxyXG5cclxuICAgIC8qIFN0cmluZ3MgYW5kIFV0aWxzICovXHJcbiAgICBnZXQgU3RyaW5ncygpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcIk1lc3NhZ2VzXCIpLk1lc3NhZ2VzO30sXHJcbiAgICBnZXQgU3RyaW5nRm9ybWF0cygpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcImFcIiwgXCJ6XCIpO30sXHJcbiAgICBnZXQgU3RyaW5nVXRpbHMoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJ0b0FTQ0lJXCIpO30sXHJcblxyXG4gICAgLyogVVJMcyBhbmQgVXRpbHMgKi9cclxuICAgIGdldCBVUkxQYXJzZXIoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJVcmxcIiwgXCJwYXJzZVwiKTt9LFxyXG4gICAgZ2V0IEV4dHJhVVJMcygpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcImdldEFydGljbGVVUkxcIik7fSxcclxuXHJcbiAgICAvKiBEcmFnICYgRHJvcCAqL1xyXG4gICAgZ2V0IEROREFjdGlvbnMoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJiZWdpbkRyYWdcIik7fSxcclxuICAgIGdldCBETkRTb3VyY2VzKCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiYWRkVGFyZ2V0XCIpO30sXHJcbiAgICBnZXQgRE5ET2JqZWN0cygpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcIkRyYWdTb3VyY2VcIik7fSxcclxuXHJcbiAgICAvKiBNZWRpYSBTdHVmZiAoQXVkaW8vVmlkZW8pICovXHJcbiAgICBnZXQgTWVkaWFEZXZpY2VJbmZvKCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiQ29kZWNzXCIsIFwiU1VQUE9SVEVEX0JST1dTRVJTXCIpO30sXHJcbiAgICBnZXQgTWVkaWFJbmZvKCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiZ2V0T3V0cHV0Vm9sdW1lXCIpO30sXHJcbiAgICBnZXQgTWVkaWFFbmdpbmVJbmZvKCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiTWVkaWFFbmdpbmVGZWF0dXJlc1wiKTt9LFxyXG4gICAgZ2V0IFZvaWNlSW5mbygpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcIkVjaG9DYW5jZWxsYXRpb25cIik7fSxcclxuICAgIGdldCBWaWRlb1N0cmVhbSgpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcImdldFZpZGVvU3RyZWFtXCIpO30sXHJcbiAgICBnZXQgU291bmRNb2R1bGUoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJwbGF5U291bmRcIik7fSxcclxuXHJcbiAgICAvKiBFbGVjdHJvbiAmIE90aGVyIEludGVybmFscyB3aXRoIFV0aWxzKi9cclxuICAgIGdldCBFbGVjdHJvbk1vZHVsZSgpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcInNldEJhZGdlXCIpO30sXHJcbiAgICBnZXQgRGlzcGF0Y2hlcigpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcImRpcnR5RGlzcGF0Y2hcIik7fSxcclxuICAgIGdldCBQYXRoVXRpbHMoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJoYXNCYXNlbmFtZVwiKTt9LFxyXG4gICAgZ2V0IE5vdGlmaWNhdGlvbk1vZHVsZSgpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcInNob3dOb3RpZmljYXRpb25cIik7fSxcclxuICAgIGdldCBSb3V0ZXJNb2R1bGUoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJSb3V0ZXJcIik7fSxcclxuICAgIGdldCBBUElNb2R1bGUoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJnZXRBUElCYXNlVVJMXCIpO30sXHJcbiAgICBnZXQgQW5hbHl0aWNFdmVudHMoKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJBbmFseXRpY0V2ZW50Q29uZmlnc1wiKTt9LFxyXG4gICAgZ2V0IEtleUdlbmVyYXRvcigpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlSZWdleCgvXCJiaW5hcnlcIi8pO30sXHJcbiAgICBnZXQgQnVmZmVycygpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcIkJ1ZmZlclwiLCBcImtNYXhMZW5ndGhcIik7fSxcclxuICAgIGdldCBEZXZpY2VTdG9yZSgpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcImdldERldmljZXNcIik7fSxcclxuICAgIGdldCBTb2Z0d2FyZUluZm8oKSB7cmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJvc1wiKTt9LFxyXG4gICAgZ2V0IEN1cnJlbnRDb250ZXh0KCkge3JldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwic2V0VGFnc0NvbnRleHRcIik7fSxcclxuXHJcbiAgICAvKiBDb21tb25seSBVc2VkIENsYXNzZXMgKi9cclxuICAgIGdldCBHdWlsZENsYXNzZXMoKSB7XHJcbiAgICAgICAgY29uc3QgZ3VpbGRzV3JhcHBlciA9IFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJ3cmFwcGVyXCIsIFwidW5yZWFkTWVudGlvbnNCYXJcIik7XHJcbiAgICAgICAgY29uc3QgZ3VpbGRzID0gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcImd1aWxkc0Vycm9yXCIsIFwic2VsZWN0ZWRcIik7XHJcbiAgICAgICAgY29uc3QgcGlsbCA9IFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJibG9iQ29udGFpbmVyXCIpO1xyXG4gICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBndWlsZHNXcmFwcGVyLCBndWlsZHMsIHBpbGwpO1xyXG4gICAgfSxcclxuXHJcbiAgICBnZXQgTGF5ZXJTdGFjaygpIHtyZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcInB1c2hMYXllclwiKTt9XHJcbn0pOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/discordmodules.js\n");
/***/ }),
/***/ "./src/modules/dommanager.js":
/*!***********************************!*\
!*** ./src/modules/dommanager.js ***!
\***********************************/
/*! exports provided: default */
/***/ (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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9kb21tYW5hZ2VyLmpzP2NkNWMiXSwibmFtZXMiOlsiRE9NTWFuYWdlciIsImJkSGVhZCIsImdldEVsZW1lbnQiLCJiZEJvZHkiLCJiZFNjcmlwdHMiLCJiZFN0eWxlcyIsImJkVGhlbWVzIiwiYmRDdXN0b21DU1MiLCJlc2NhcGVJRCIsImlkIiwicmVwbGFjZSIsImUiLCJiYXNlRWxlbWVudCIsImRvY3VtZW50IiwiTm9kZSIsInF1ZXJ5U2VsZWN0b3IiLCJjcmVhdGVFbGVtZW50IiwidGFnIiwib3B0aW9ucyIsImNsYXNzTmFtZSIsInRhcmdldCIsImVsZW1lbnQiLCJhcHBlbmQiLCJyZW1vdmVTdHlsZSIsImV4aXN0cyIsInJlbW92ZSIsImluamVjdFN0eWxlIiwiY3NzIiwic3R5bGUiLCJ0ZXh0Q29udGVudCIsInVubGlua1N0eWxlIiwibGlua1N0eWxlIiwidXJsIiwiUHJvbWlzZSIsInJlc29sdmUiLCJsaW5rIiwicmVsIiwiaHJlZiIsIm9ubG9hZCIsInJlbW92ZVRoZW1lIiwiaW5qZWN0VGhlbWUiLCJ1cGRhdGVDdXN0b21DU1MiLCJyZW1vdmVTY3JpcHQiLCJpbmplY3RTY3JpcHQiLCJzY3JpcHQiLCJzcmMiLCJoZWFkIiwiYm9keSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFlLE1BQU1BLFVBQU4sQ0FBaUI7QUFFNUIsYUFBV0MsTUFBWCxHQUFvQjtBQUFDLFdBQU8sS0FBS0MsVUFBTCxDQUFnQixTQUFoQixDQUFQO0FBQW1DOztBQUN4RCxhQUFXQyxNQUFYLEdBQW9CO0FBQUMsV0FBTyxLQUFLRCxVQUFMLENBQWdCLFNBQWhCLENBQVA7QUFBbUM7O0FBQ3hELGFBQVdFLFNBQVgsR0FBdUI7QUFBQyxXQUFPLEtBQUtGLFVBQUwsQ0FBZ0IsWUFBaEIsQ0FBUDtBQUFzQzs7QUFDOUQsYUFBV0csUUFBWCxHQUFzQjtBQUFDLFdBQU8sS0FBS0gsVUFBTCxDQUFnQixXQUFoQixDQUFQO0FBQXFDOztB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cy9kb21tYW5hZ2VyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgY2xhc3MgRE9NTWFuYWdlciB7XHJcblxyXG4gICAgc3RhdGljIGdldCBiZEhlYWQoKSB7cmV0dXJuIHRoaXMuZ2V0RWxlbWVudChcImJkLWhlYWRcIik7fVxyXG4gICAgc3RhdGljIGdldCBiZEJvZHkoKSB7cmV0dXJuIHRoaXMuZ2V0RWxlbWVudChcImJkLWJvZHlcIik7fVxyXG4gICAgc3RhdGljIGdldCBiZFNjcmlwdHMoKSB7cmV0dXJuIHRoaXMuZ2V0RWxlbWVudChcImJkLXNjcmlwdHNcIik7fVxyXG4gICAgc3RhdGljIGdldCBiZFN0eWxlcygpIHtyZXR1cm4gdGhpcy5nZXRFbGVtZW50KFwiYmQtc3R5bGVzXCIpO31cclxuICAgIHN0YXRpYyBnZXQgYmRUaGVtZXMoKSB7cmV0dXJuIHRoaXMuZ2V0RWxlbWVudChcImJkLXRoZW1lc1wiKTt9XHJcbiAgICBzdGF0aWMgZ2V0IGJkQ3VzdG9tQ1NTKCkge3JldHVybiB0aGlzLmdldEVsZW1lbnQoXCIjY3VzdG9tY3NzXCIpO31cclxuICAgIC8vIHN0YXRpYyBnZXQgYmRUb29sdGlwcygpIHsgcmV0dXJuIHRoaXMuZ2V0RWxlbWVudChcImJkLXRvb2x0aXBzXCIpIHx8IHRoaXMuY3JlYXRlRWxlbWVudChcImJkLXRvb2x0aXBzXCIpLmFwcGVuZFRvKHRoaXMuYmRCb2R5KTsgfVxyXG4gICAgLy8gc3RhdGljIGdldCBiZE1vZGFscygpIHsgcmV0dXJuIHRoaXMuZ2V0RWxlbWVudChcImJkLW1vZGFsc1wiKSB8fCB0aGlzLmNyZWF0ZUVsZW1lbnQoXCJiZC1tb2RhbHNcIikuYXBwZW5kVG8odGhpcy5iZEJvZHkpOyB9XHJcbiAgICAvLyBzdGF0aWMgZ2V0IGJkVG9hc3RzKCkgeyByZXR1cm4gdGhpcy5nZXRFbGVtZW50KFwiYmQtdG9hc3RzXCIpIHx8IHRoaXMuY3JlYXRlRWxlbWVudChcImJkLXRvYXN0c1wiKS5hcHBlbmRUbyh0aGlzLmJkQm9keSk7IH1cclxuXHJcbiAgICAvLyBzdGF0aWMgaW5pdGlhbGl6ZSgpIHtcclxuICAgIC8vICAgICB0aGlzLmNyZWF0ZUVsZW1lbnQoXCJiZC1oZWFkXCIsIHt0YXJnZXQ6IGRvY3VtZW50LmhlYWR9KTtcclxuICAgIC8vICAgICB0aGlzLmNyZWF0ZUVsZW1lbnQoXCJiZC1ib2R5XCIsIHt0YXJnZXQ6IGRvY3VtZW50LmJvZHl9KTtcclxuICAgIC8vICAgICB0aGlzLmNyZWF0ZUVsZW1lbnQoXCJiZC1zY3JpcHRzXCIsIHt0YXJnZXQ6IHRoaXMuYmRIZWFkfSk7XHJcbiAgICAvLyAgICAgdGhpcy5jcmVhdGVFbGVtZW50KFwiYmQtc3R5bGVzXCIsIHt0YXJnZXQ6IHRoaXMuYmRIZWFkfSk7XHJcbiAgICAvLyAgICAgdGhpcy5jcmVhdGVFbGVtZW50KFwiYmQtdGhlbWVzXCIsIHt0YXJnZXQ6IHRoaXMuYmRIZWFkfSk7XHJcbiAgICAvLyAgICAgdGhpcy5jcmVhdGVFbGVtZW50KFwic3R5bGVcIiwge2lkOiBcImN1c3RvbWNzc1wiLCB0YXJnZXQ6IHRoaXMuYmRIZWFkfSk7XHJcbiAgICAvLyB9XHJcblxyXG4gICAgc3RhdGljIGVzY2FwZUlEKGlkKSB7XHJcbiAgICAgICAgcmV0dXJuIGlkLnJlcGxhY2UoL15bXmEtel0rfFteXFx3LV0rL2dpLCBcIi1cIik7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGdldEVsZW1lbnQoZSwgYmFzZUVsZW1lbnQgPSBkb2N1bWVudCkge1xyXG4gICAgICAgIGlmIChlIGluc3RhbmNlb2YgTm9kZSkgcmV0dXJuIGU7XHJcbiAgICAgICAgcmV0dXJuIGJhc2VFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoZSk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGNyZWF0ZUVsZW1lbnQodGFnLCBvcHRpb25zID0ge30pIHtcclxuICAgICAgICBjb25zdCB7Y2xhc3NOYW1lLCBpZCwgdGFyZ2V0fSA9IG9wdGlvbnM7XHJcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGFnKTtcclxuICAgICAgICBpZiAoY2xhc3NOYW1lKSBlbGVtZW50LmNsYXNzTmFtZSA9IGNsYXNzTmFtZTtcclxuICAgICAgICBpZiAoaWQpIGVsZW1lbnQuaWQgPSBpZDtcclxuICAgICAgICBpZiAodGFyZ2V0KSB0aGlzLmdldEVsZW1lbnQodGFyZ2V0KS5hcHBlbmQoZWxlbWVudCk7XHJcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIHJlbW92ZVN0eWxlKGlkKSB7XHJcbiAgICAgICAgaWQgPSB0aGlzLmVzY2FwZUlEKGlkKTtcclxuICAgICAgICBjb25zdCBleGlzdHMgPSB0aGlzLmdldEVsZW1lbnQoYCMke2lkfWAsIHRoaXMuYmRTdHlsZXMpO1xyXG4gICAgICAgIGlmIChleGlzdHMpIGV4aXN0cy5yZW1vdmUoKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgaW5qZWN0U3R5bGUoaWQsIGNzcykge1xyXG4gICAgICAgIGlkID0gdGhpcy5lc2NhcGVJRChpZCk7XHJcbiAgICAgICAgY29uc3Qgc3R5bGUgPSB0aGlzLmdldEVsZW1lbnQoYCMke2lkfWAsIHRoaXMuYmRTdHlsZXMpIHx8IHRoaXMuY3JlYXRlRWxlbWVudChcInN0eWxlXCIsIHtpZH0pO1xyXG4gICAgICAgIHN0eWxlLnRleHRDb250ZW50ID0gY3NzO1xyXG4gICAgICAgIHRoaXMuYmRTdHlsZXMuYXBwZW5kKHN0eWxlKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgdW5saW5rU3R5bGUoaWQpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5yZW1vdmVTdHlsZShpZCk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGxpbmtTdHlsZShpZCwgdXJsKSB7XHJcbiAgICAgICAgaWQgPSB0aGlzLmVzY2FwZUlEKGlkKTtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGxpbmsgPSB0aGlzLmdldEVsZW1lbnQoYCMke2lkfWAsIHRoaXMuYmRTdHlsZXMpIHx8IHRoaXMuY3JlYXRlRWxlbWVudChcImxpbmtcIiwge2lkfSk7XHJcbiAgICAgICAgICAgIGxpbmsucmVsID0gXCJzdHlsZXNoZWV0XCI7XHJcbiAgICAgICAgICAgIGxpbmsuaHJlZiA9IHVybDtcclxuICAgICAgICAgICAgbGluay5vbmxvYWQgPSByZXNvbHZlO1xyXG4gICAgICAgICAgICB0aGlzLmJkU3R5bGVzLmFwcGVuZChsaW5rKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgcmVtb3ZlVGhlbWUoaWQpIHtcclxuICAgICAgICBpZCA9IHRoaXMuZXNjYXBlSUQoaWQpO1xyXG4gICAgICAgIGNvbnN0IGV4aXN0cyA9IHRoaXMuZ2V0RWxlbWVudChgIyR7aWR9YCwgdGhpcy5iZFRoZW1lcyk7XHJcbiAgICAgICAgaWYgKGV4aXN0cykgZXhpc3RzLnJlbW92ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBpbmplY3RUaGVtZShpZCwgY3NzKSB7XHJcbiAgICAgICAgaWQgPSB0aGlzLmVzY2FwZUlEKGlkKTtcclxuICAgICAgICBjb25zdCBzdHlsZSA9IHRoaXMuZ2V0RWxlbWVudChgIyR7aWR9YCwgdGhpcy5iZFRoZW1lcykgfHwgdGhpcy5jcmVhdGVFbGVtZW50KFwic3R5bGVcIiwge2lkfSk7XHJcbiAgICAgICAgc3R5bGUudGV4dENvbnRlbnQgPSBjc3M7XHJcbiAgICAgICAgdGhpcy5iZFRoZW1lcy5hcHBlbmQoc3R5bGUpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyB1cGRhdGVDdXN0b21DU1MoY3NzKSB7XHJcbiAgICAgICAgdGhpcy5iZEN1c3RvbUNTUy50ZXh0Q29udGVudCA9IGNzcztcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgcmVtb3ZlU2NyaXB0KGlkKSB7XHJcbiAgICAgICAgaWQgPSB0aGlzLmVzY2FwZUlEKGlkKTtcclxuICAgICAgICBjb25zdCBleGlzdHMgPSB0aGlzLmdldEVsZW1lbnQoYCMke2lkfWAsIHRoaXMuYmRTY3JpcHRzKTtcclxuICAgICAgICBpZiAoZXhpc3RzKSBleGlzdHMucmVtb3ZlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGluamVjdFNjcmlwdChpZCwgdXJsKSB7XHJcbiAgICAgICAgaWQgPSB0aGlzLmVzY2FwZUlEKGlkKTtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHNjcmlwdCA9IHRoaXMuZ2V0RWxlbWVudChgIyR7aWR9YCwgdGhpcy5iZFNjcmlwdHMpIHx8IHRoaXMuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiLCB7aWR9KTtcclxuICAgICAgICAgICAgc2NyaXB0LnNyYyA9IHVybDtcclxuICAgICAgICAgICAgc2NyaXB0Lm9ubG9hZCA9IHJlc29sdmU7XHJcbiAgICAgICAgICAgIHRoaXMuYmRTY3JpcHRzLmFwcGVuZChzY3JpcHQpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59XHJcblxyXG5ET01NYW5hZ2VyLmNyZWF0ZUVsZW1lbnQoXCJiZC1oZWFkXCIsIHt0YXJnZXQ6IGRvY3VtZW50LmhlYWR9KTtcclxuRE9NTWFuYWdlci5jcmVhdGVFbGVtZW50KFwiYmQtYm9keVwiLCB7dGFyZ2V0OiBkb2N1bWVudC5ib2R5fSk7XHJcbkRPTU1hbmFnZXIuY3JlYXRlRWxlbWVudChcImJkLXNjcmlwdHNcIiwge3RhcmdldDogRE9NTWFuYWdlci5iZEhlYWR9KTtcclxuRE9NTWFuYWdlci5jcmVhdGVFbGVtZW50KFwiYmQtc3R5bGVzXCIsIHt0YXJnZXQ6IERPTU1hbmFnZXIuYmRIZWFkfSk7XHJcbkRPTU1hbmFnZXIuY3JlYXRlRWxlbWVudChcImJkLXRoZW1lc1wiLCB7dGFyZ2V0OiBET01NYW5hZ2VyLmJkSGVhZH0pO1xyXG5ET01NYW5hZ2VyLmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiLCB7aWQ6IFwiY3VzdG9tY3NzXCIsIHRhcmdldDogRE9NTWFuYWdlci5iZEhlYWR9KTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/modules/dommanager.js\n");
/***/ }),
/***/ "./src/modules/domtools.js":
/*!*********************************!*\
!*** ./src/modules/domtools.js ***!
\*********************************/
/*! exports provided: default */
/***/ (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,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");
/***/ }),
/***/ "./src/modules/emitter.js":
/*!********************************!*\
!*** ./src/modules/emitter.js ***!
\********************************/
/*! exports provided: default */
/***/ (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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9lbWl0dGVyLmpzP2U5M2EiXSwibmFtZXMiOlsiRXZlbnRFbWl0dGVyIiwicmVxdWlyZSIsIkJERXZlbnRzIiwiY29uc3RydWN0b3IiLCJzZXRNYXhMaXN0ZW5lcnMiLCJkaXNwYXRjaCIsImV2ZW50TmFtZSIsImFyZ3MiLCJlbWl0Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBLE1BQU1BLFlBQVksR0FBR0MsbUJBQU8sQ0FBQyxzQkFBRCxDQUE1Qjs7QUFDZSxtRUFBSSxNQUFNQyxRQUFOLFNBQXVCRixZQUF2QixDQUFvQztBQUNuREcsYUFBVyxHQUFHO0FBQ1Y7QUFDQSxTQUFLQyxlQUFMLENBQXFCLEVBQXJCO0FBQ0g7O0FBQ0RDLFVBQVEsQ0FBQ0MsU0FBRCxFQUFZLEdBQUdDLElBQWYsRUFBcUI7QUFDekIsU0FBS0MsSUFBTCxDQUFVRixTQUFWLEVBQXFCLEdBQUdDLElBQXhCO0FBQ0g7O0FBUGtELENBQXhDLEVBQWYiLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9lbWl0dGVyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgRXZlbnRFbWl0dGVyID0gcmVxdWlyZShcImV2ZW50c1wiKTtcclxuZXhwb3J0IGRlZmF1bHQgbmV3IGNsYXNzIEJERXZlbnRzIGV4dGVuZHMgRXZlbnRFbWl0dGVyIHtcclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgdGhpcy5zZXRNYXhMaXN0ZW5lcnMoMjApO1xyXG4gICAgfVxyXG4gICAgZGlzcGF0Y2goZXZlbnROYW1lLCAuLi5hcmdzKSB7XHJcbiAgICAgICAgdGhpcy5lbWl0KGV2ZW50TmFtZSwgLi4uYXJncyk7XHJcbiAgICB9XHJcbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/emitter.js\n");
/***/ }),
/***/ "./src/modules/localemanager.js":
/*!**************************************!*\
!*** ./src/modules/localemanager.js ***!
\**************************************/
/*! exports provided: default */
/***/ (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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9sb2NhbGVtYW5hZ2VyLmpzPzIzOWQiXSwibmFtZXMiOlsicmVxdWVzdCIsInJlcXVpcmUiLCJEaXNwYXRjaGVyIiwiRGlzY29yZENvbnN0YW50cyIsIlVzZXJTZXR0aW5nc1N0b3JlIiwiRGlzY29yZE1vZHVsZXMiLCJMb2NhbGVNYW5hZ2VyIiwiZGlzY29yZExvY2FsZSIsImxvY2FsZSIsInNwbGl0IiwiZGVmYXVsdExvY2FsZSIsImNvbnN0cnVjdG9yIiwic3RyaW5ncyIsImluaXRpYWxpemUiLCJzZXRMb2NhbGUiLCJzdWJzY3JpYmUiLCJBY3Rpb25UeXBlcyIsIlVTRVJfU0VUVElOR1NfVVBEQVRFIiwic2V0dGluZ3MiLCJuZXdMb2NhbGUiLCJuZXdTdHJpbmdzIiwiZ2V0TG9jYWxlU3RyaW5ncyIsIkRlZmF1bHRTdHJpbmdzIiwiVXRpbGl0aWVzIiwiZXh0ZW5kIiwiRXZlbnRzIiwiZW1pdCIsImhhc2giLCJEYXRhU3RvcmUiLCJnZXRDYWNoZUhhc2giLCJkb3dubG9hZExvY2FsZSIsImludmFsaWQiLCJnZXRMb2NhbGUiLCJQcm9taXNlIiwicmVzb2x2ZSIsIm9wdGlvbnMiLCJ1cmwiLCJyZXBvVXJsIiwidGltZW91dCIsImpzb24iLCJoZWFkZXJzIiwiZ2V0IiwiZXJyIiwicmVzcCIsInN0YXR1c0NvZGUiLCJzYXZlTG9jYWxlIiwic2V0Q2FjaGVIYXNoIiwiZXRhZyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFDQSxNQUFNQSxPQUFPLEdBQUdDLG1CQUFPLENBQUMsd0JBQUQsQ0FBdkI7O0FBRUEsTUFBTTtBQUFDQyxZQUFEO0FBQWFDLGtCQUFiO0FBQStCQztBQUEvQixJQUFvREMsdURBQTFEO0FBRWUsbUVBQUksTUFBTUMsYUFBTixDQUFvQjtBQUN0QyxNQUFJQyxhQUFKLEdBQW9CO0FBQUMsV0FBT0gsaUJBQWlC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SSxDQUFDSCxPQUFMLENBQWFPLElBQXZEO0FBQ0FiLGVBQU8sQ0FBQ2QsVUFBRCxDQUFQO0FBQ0EsT0FMRDtBQU1BLEtBYk0sQ0FBUDtBQWNBOztBQXREcUMsQ0FBeEIsRUFBZiIsImZpbGUiOiIuL3NyYy9tb2R1bGVzL2xvY2FsZW1hbmFnZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRGVmYXVsdFN0cmluZ3MgZnJvbSBcIi4uL2RhdGEvc3RyaW5nc1wiO1xyXG5pbXBvcnQgRGlzY29yZE1vZHVsZXMgZnJvbSBcIi4vZGlzY29yZG1vZHVsZXNcIjtcclxuaW1wb3J0IFV0aWxpdGllcyBmcm9tIFwiLi91dGlsaXRpZXNcIjtcclxuaW1wb3J0IEV2ZW50cyBmcm9tIFwiLi9lbWl0dGVyXCI7XHJcbmltcG9ydCBEYXRhU3RvcmUgZnJvbSBcIi4vZGF0YXN0b3JlXCI7XHJcbmNvbnN0IHJlcXVlc3QgPSByZXF1aXJlKFwicmVxdWVzdFwiKTtcclxuXHJcbmNvbnN0IHtEaXNwYXRjaGVyLCBEaXNjb3JkQ29uc3RhbnRzLCBVc2VyU2V0dGluZ3NTdG9yZX0gPSBEaXNjb3JkTW9kdWxlcztcclxuXHJcbmV4cG9ydCBkZWZhdWx0IG5ldyBjbGFzcyBMb2NhbGVNYW5hZ2VyIHtcclxuXHRnZXQgZGlzY29yZExvY2FsZSgpIHtyZXR1cm4gVXNlclNldHRpbmdzU3RvcmUubG9jYWxlLnNwbGl0KFwiLVwiKVswXTt9XHJcblx0Z2V0IGRlZmF1bHRMb2NhbGUoKSB7cmV0dXJuIFwiZW5cIjt9XHJcblxyXG5cdGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIHRoaXMubG9jYWxlID0gXCJcIjtcclxuICAgICAgICB0aGlzLnN0cmluZ3MgPSB7fTtcclxuXHR9XHJcblxyXG5cdGFzeW5jIGluaXRpYWxpemUoKSB7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5zZXRMb2NhbGUodGhpcy5kaXNjb3JkTG9jYWxlKTtcclxuICAgICAgICBEaXNwYXRjaGVyLnN1YnNjcmliZShEaXNjb3JkQ29uc3RhbnRzLkFjdGlvblR5cGVzLlVTRVJfU0VUVElOR1NfVVBEQVRFLCAoe3NldHRpbmdzfSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBuZXdMb2NhbGUgPSBzZXR0aW5ncy5sb2NhbGU7XHJcbiAgICAgICAgICAgIGlmIChuZXdMb2NhbGUgJiYgbmV3TG9jYWxlICE9IHRoaXMubG9jYWxlKSB0aGlzLnNldExvY2FsZShuZXdMb2NhbGUuc3BsaXQoXCItXCIpWzBdKTtcclxuICAgICAgICB9KTtcclxuXHR9XHJcblxyXG5cdGFzeW5jIHNldExvY2FsZShuZXdMb2NhbGUpIHtcclxuICAgICAgICBsZXQgbmV3U3RyaW5ncztcclxuICAgICAgICBpZiAobmV3TG9jYWxlICE9IHRoaXMuZGVmYXVsdExvY2FsZSkge1xyXG5cdFx0XHRuZXdTdHJpbmdzID0gYXdhaXQgdGhpcy5nZXRMb2NhbGVTdHJpbmdzKG5ld0xvY2FsZSk7XHJcbiAgICAgICAgICAgIGlmICghbmV3U3RyaW5ncykgcmV0dXJuIHRoaXMuc2V0TG9jYWxlKHRoaXMuZGVmYXVsdExvY2FsZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBuZXdTdHJpbmdzID0gRGVmYXVsdFN0cmluZ3M7XHJcbiAgICAgICAgfVxyXG5cdFx0dGhpcy5sb2NhbGUgPSBuZXdMb2NhbGU7XHJcblx0XHRVdGlsaXRpZXMuZXh0ZW5kKHRoaXMuc3RyaW5ncywgbmV3U3RyaW5ncyk7XHJcblx0XHRFdmVudHMuZW1pdChcInN0cmluZ3MtdXBkYXRlZFwiKTtcclxuXHR9XHJcblxyXG5cdGFzeW5jIGdldExvY2FsZVN0cmluZ3MobG9jYWxlKSB7XHJcblx0XHRjb25zdCBoYXNoID0gRGF0YVN0b3JlLmdldENhY2hlSGFzaChcImxvY2FsZXNcIiwgbG9jYWxlKTtcclxuXHRcdGlmICghaGFzaCkgcmV0dXJuIGF3YWl0IHRoaXMuZG93bmxvYWRMb2NhbGUobG9jYWxlKTtcclxuXHRcdGNvbnN0IGludmFsaWQgPSBhd2FpdCB0aGlzLmRvd25sb2FkTG9jYWxlKGxvY2FsZSwgaGFzaCk7XHJcblx0XHRpZiAoIWludmFsaWQpIHJldHVybiBEYXRhU3RvcmUuZ2V0TG9jYWxlKGxvY2FsZSk7XHJcblx0XHRyZXR1cm4gaW52YWxpZDtcclxuXHR9XHJcblxyXG5cdGRvd25sb2FkTG9jYWxlKGxvY2FsZSwgaGFzaCA9IFwiXCIpIHtcclxuXHRcdHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcclxuXHRcdFx0Y29uc3Qgb3B0aW9ucyA9IHtcclxuXHRcdFx0XHR1cmw6IFV0aWxpdGllcy5yZXBvVXJsKGBhc3NldHMvbG9jYWxlcy8ke2xvY2FsZX0uanNvbmApLFxyXG5cdFx0XHRcdHRpbWVvdXQ6IDIwMDAsXHJcblx0XHRcdFx0anNvbjogdHJ1ZVxyXG5cdFx0XHR9O1xyXG5cdFx0XHRpZiAoaGFzaCkgb3B0aW9ucy5oZWFkZXJzID0ge1wiSWYtTm9uZS1NYXRjaFwiOiBoYXNofTtcclxuXHRcdFx0cmVxdWVzdC5nZXQob3B0aW9ucywgKGVyciwgcmVzcCwgbmV3U3RyaW5ncykgPT4ge1xyXG5cdFx0XHRcdGlmIChlcnIgfHwgcmVzcC5zdGF0dXNDb2RlICE9PSAyMDApIHJldHVybiByZXNvbHZlKG51bGwpO1xyXG5cdFx0XHRcdERhdGFTdG9yZS5zYXZlTG9jYWxlKGxvY2FsZSwgbmV3U3RyaW5ncyk7XHJcblx0XHRcdFx0RGF0YVN0b3JlLnNldENhY2hlSGFzaChcImxvY2FsZXNcIiwgbG9jYWxlLCByZXNwLmhlYWRlcnMuZXRhZyk7XHJcblx0XHRcdFx0cmVzb2x2ZShuZXdTdHJpbmdzKTtcclxuXHRcdFx0fSk7XHJcblx0XHR9KTtcclxuXHR9XHJcbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/localemanager.js\n");
/***/ }),
/***/ "./src/modules/logger.js":
/*!*******************************!*\
!*** ./src/modules/logger.js ***!
\*******************************/
/*! exports provided: LogTypes, default */
/***/ (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[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");
/***/ }),
/***/ "./src/modules/modules.js":
/*!********************************!*\
!*** ./src/modules/modules.js ***!
\********************************/
/*! exports provided: WebpackModules, React, ReactDOM, DiscordModules, Utilities, DataStore, Events, Settings, DOMManager, DOM, Logger, Patcher, ReactComponents, LocaleManager, Strings */
/***/ (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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9tb2R1bGVzLmpzPzE0ZGIiXSwibmFtZXMiOlsiUmVhY3QiLCJEaXNjb3JkTW9kdWxlcyIsIlJlYWN0RE9NIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ08sTUFBTUEsS0FBSyxHQUFHQyx1REFBYyxDQUFDRCxLQUE3QjtBQUNBLE1BQU1FLFFBQVEsR0FBR0QsdURBQWMsQ0FBQ0MsUUFBaEM7QUFDUDtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vc3JjL21vZHVsZXMvbW9kdWxlcy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7ZGVmYXVsdCBhcyBXZWJwYWNrTW9kdWxlc30gZnJvbSBcIi4vd2VicGFja21vZHVsZXNcIjtcclxuXHJcbmltcG9ydCBEaXNjb3JkTW9kdWxlcyBmcm9tIFwiLi9kaXNjb3JkbW9kdWxlc1wiO1xyXG5leHBvcnQgY29uc3QgUmVhY3QgPSBEaXNjb3JkTW9kdWxlcy5SZWFjdDtcclxuZXhwb3J0IGNvbnN0IFJlYWN0RE9NID0gRGlzY29yZE1vZHVsZXMuUmVhY3RET007XHJcbmV4cG9ydCB7RGlzY29yZE1vZHVsZXN9O1xyXG5cclxuZXhwb3J0IHtkZWZhdWx0IGFzIFV0aWxpdGllc30gZnJvbSBcIi4vdXRpbGl0aWVzXCI7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBEYXRhU3RvcmV9IGZyb20gXCIuL2RhdGFzdG9yZVwiO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgRXZlbnRzfSBmcm9tIFwiLi9lbWl0dGVyXCI7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBTZXR0aW5nc30gZnJvbSBcIi4vc2V0dGluZ3NtYW5hZ2VyXCI7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBET01NYW5hZ2VyfSBmcm9tIFwiLi9kb21tYW5hZ2VyXCI7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBET019IGZyb20gXCIuL2RvbXRvb2xzXCI7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBMb2dnZXJ9IGZyb20gXCIuL2xvZ2dlclwiO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgUGF0Y2hlcn0gZnJvbSBcIi4vcGF0Y2hlclwiO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgUmVhY3RDb21wb25lbnRzfSBmcm9tIFwiLi9yZWFjdGNvbXBvbmVudHNcIjtcclxuZXhwb3J0IHtkZWZhdWx0IGFzIExvY2FsZU1hbmFnZXJ9IGZyb20gXCIuL2xvY2FsZW1hbmFnZXJcIjtcclxuZXhwb3J0IHtkZWZhdWx0IGFzIFN0cmluZ3N9IGZyb20gXCIuL3N0cmluZ3NcIjsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/modules/modules.js\n");
/***/ }),
/***/ "./src/modules/patcher.js":
/*!********************************!*\
!*** ./src/modules/patcher.js ***!
\********************************/
/*! exports provided: default */
/***/ (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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9wYXRjaGVyLmpzPzI1NTAiXSwibmFtZXMiOlsiUGF0Y2hlciIsInBhdGNoZXMiLCJfcGF0Y2hlcyIsImdldFBhdGNoZXNCeUNhbGxlciIsIm5hbWUiLCJwYXRjaCIsImNoaWxkUGF0Y2giLCJjaGlsZHJlbiIsImNhbGxlciIsInB1c2giLCJ1bnBhdGNoQWxsIiwidW5wYXRjaCIsInJlc29sdmVNb2R1bGUiLCJtb2R1bGUiLCJGdW5jdGlvbiIsIk9iamVjdCIsIkFycmF5IiwiRGlzY29yZE1vZHVsZXMiLCJXZWJwYWNrTW9kdWxlcyIsImZpbmRCeVVuaXF1ZVByb3BlcnRpZXMiLCJtYWtlT3ZlcnJpZGUiLCJyZXR1cm5WYWx1ZSIsInVuZGVmaW5lZCIsImxlbmd0aCIsIm9yaWdpbmFsRnVuY3Rpb24iLCJhcHBseSIsImFyZ3VtZW50cyIsInN1cGVyUGF0Y2giLCJmaWx0ZXIiLCJjIiwidHlwZSIsImNhbGxiYWNrIiwiZXJyIiwiTG9nZ2VyIiwiZnVuY3Rpb25OYW1lIiwiaW5zdGVhZHMiLCJpbnN0ZWFkUGF0Y2giLCJ0ZW1wUmV0dXJuIiwiYmluZCIsInNsYXZlUGF0Y2giLCJyZVBhdGNoIiwicHJveHlGdW5jdGlvbiIsIm1ha2VQYXRjaCIsInJldmVydCIsImNvdW50ZXIiLCJiZWZvcmUiLCJtb2R1bGVUb1BhdGNoIiwib3B0aW9ucyIsInB1c2hDaGlsZFBhdGNoIiwiYXNzaWduIiwiYWZ0ZXIiLCJpbnN0ZWFkIiwiZm9yY2VQYXRjaCIsImRpc3BsYXlOYW1lIiwiY29uc3RydWN0b3IiLCJwYXRjaElkIiwiZmluZCIsInAiLCJjaGlsZCIsImlkIiwic3BsaWNlIiwiZmluZEluZGV4IiwiY3BhdGNoIiwicGF0Y2hOdW0iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7Ozs7Ozs7O0FBVUE7QUFDQTtBQUNBO0FBRWUsTUFBTUEsT0FBTixDQUFjO0FBRXpCLGFBQVdDLE9BQVgsR0FB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LENBQXRCLEVBQTBHLENBQTFHOztBQUNBLFlBQUl6QixLQUFLLENBQUNFLFFBQU4sQ0FBZWdCLE1BQWYsSUFBeUIsQ0FBN0IsRUFBZ0M7QUFDM0MsZ0JBQU13QyxRQUFRLEdBQUcsS0FBSzlELE9BQUwsQ0FBYTRELFNBQWIsQ0FBdUJKLENBQUMsSUFBSUEsQ0FBQyxDQUFDNUMsTUFBRixJQUFZQSxNQUFaLElBQXNCNEMsQ0FBQyxDQUFDdkIsWUFBRixJQUFrQkEsWUFBcEUsQ0FBakI7QUFDQSxlQUFLakMsT0FBTCxDQUFhOEQsUUFBYixFQUF1QnBCLE1BQXZCO0FBQ0EsZUFBSzFDLE9BQUwsQ0FBYTJELE1BQWIsQ0FBb0JHLFFBQXBCLEVBQThCLENBQTlCO0FBQ0E7QUFDUTtBQVpTLEtBQWQ7QUFjQTFELFNBQUssQ0FBQ0UsUUFBTixDQUFlRSxJQUFmLENBQW9CaUQsS0FBcEI7QUFDQXJELFNBQUssQ0FBQ3VDLE9BQU47QUFDQSxXQUFPYyxLQUFLLENBQUMvQyxPQUFiO0FBQ0g7O0FBbE53QiIsImZpbGUiOiIuL3NyYy9tb2R1bGVzL3BhdGNoZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogUGF0Y2hlciB0aGF0IGNhbiBwYXRjaCBvdGhlciBmdW5jdGlvbnMgYWxsb3dpbmcgeW91IHRvIHJ1biBjb2RlIGJlZm9yZSwgYWZ0ZXIgb3JcclxuICogaW5zdGVhZCBvZiB0aGUgb3JpZ2luYWwgZnVuY3Rpb24uIENhbiBhbHNvIGFsdGVyIGFyZ3VtZW50cyBhbmQgcmV0dXJuIHZhbHVlcy5cclxuICpcclxuICogVGhpcyBpcyBmcm9tIFplcmVib3MnIGxpYnJhcnkge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9Kc1N1Y2tzL0JldHRlckRpc2NvcmRBcHAvYmxvYi9tYXN0ZXIvY2xpZW50L3NyYy9tb2R1bGVzL3BhdGNoZXIuanN9XHJcbiAqXHJcbiAqIEBtb2R1bGUgUGF0Y2hlclxyXG4gKiBAdmVyc2lvbiAwLjAuMlxyXG4gKi9cclxuXHJcbmltcG9ydCBMb2dnZXIgZnJvbSBcIi4vbG9nZ2VyXCI7XHJcbmltcG9ydCBEaXNjb3JkTW9kdWxlcyBmcm9tIFwiLi9kaXNjb3JkbW9kdWxlc1wiO1xyXG5pbXBvcnQgV2VicGFja01vZHVsZXMgZnJvbSBcIi4vd2VicGFja21vZHVsZXNcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBhdGNoZXIge1xyXG5cclxuICAgIHN0YXRpYyBnZXQgcGF0Y2hlcygpIHsgcmV0dXJuIHRoaXMuX3BhdGNoZXMgfHwgKHRoaXMuX3BhdGNoZXMgPSBbXSk7IH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHVybnMgYWxsIHRoZSBwYXRjaGVzIGRvbmUgYnkgYSBzcGVjaWZpYyBjYWxsZXJcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIC0gTmFtZSBvZiB0aGUgcGF0Y2ggY2FsbGVyXHJcbiAgICAgKiBAbWV0aG9kXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBnZXRQYXRjaGVzQnlDYWxsZXIobmFtZSkge1xyXG5cdFx0aWYgKCFuYW1lKSByZXR1cm4gW107XHJcbiAgICAgICAgY29uc3QgcGF0Y2hlcyA9IFtdO1xyXG4gICAgICAgIGZvciAoY29uc3QgcGF0Y2ggb2YgdGhpcy5wYXRjaGVzKSB7XHJcblx0XHRcdGZvciAoY29uc3QgY2hpbGRQYXRjaCBvZiBwYXRjaC5jaGlsZHJlbikge1xyXG5cdFx0XHRcdGlmIChjaGlsZFBhdGNoLmNhbGxlciA9PT0gbmFtZSkgcGF0Y2hlcy5wdXNoKGNoaWxkUGF0Y2gpO1xyXG5cdFx0XHR9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBwYXRjaGVzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVW5wYXRjaGVzIGFsbCBwYXRjaGVzIHBhc3NlZCwgb3Igd2hlbiBhIHN0cmluZyBpcyBwYXNzZWQgdW5wYXRjaGVzIGFsbFxyXG4gICAgICogcGF0Y2hlcyBkb25lIGJ5IHRoYXQgc3BlY2lmaWMgY2FsbGVyLlxyXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGNoZXMgLSBFaXRoZXIgYW4gYXJyYXkgb2YgcGF0Y2hlcyB0byB1bnBhdGNoIG9yIGEgY2FsbGVyIG5hbWVcclxuICAgICAqL1xyXG4gICAgc3RhdGljIHVucGF0Y2hBbGwocGF0Y2hlcykge1xyXG4gICAgICAgIGlmICh0eXBlb2YgcGF0Y2hlcyA9PT0gXCJzdHJpbmdcIikgcGF0Y2hlcyA9IHRoaXMuZ2V0UGF0Y2hlc0J5Q2FsbGVyKHBhdGNoZXMpO1xyXG5cclxuICAgICAgICBmb3IgKGNvbnN0IHBhdGNoIG9mIHBhdGNoZXMpIHtcclxuXHRcdFx0cGF0Y2gudW5wYXRjaCgpO1xyXG4gICAgICAgIH1cclxuXHR9XHJcblxyXG5cdHN0YXRpYyByZXNvbHZlTW9kdWxlKG1vZHVsZSkge1xyXG4gICAgICAgIGlmIChtb2R1bGUgaW5zdGFuY2VvZiBGdW5jdGlvbiB8fCAobW9kdWxlIGluc3RhbmNlb2YgT2JqZWN0ICYmICEobW9kdWxlIGluc3RhbmNlb2YgQXJyYXkpKSkgcmV0dXJuIG1vZHVsZTtcclxuICAgICAgICBpZiAodHlwZW9mIG1vZHVsZSA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIERpc2NvcmRNb2R1bGVzW21vZHVsZV07XHJcbiAgICAgICAgaWYgKG1vZHVsZSBpbnN0YW5jZW9mIEFycmF5KSByZXR1cm4gV2VicGFja01vZHVsZXMuZmluZEJ5VW5pcXVlUHJvcGVydGllcyhtb2R1bGUpO1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG5cdH1cclxuXHJcbiAgICBzdGF0aWMgbWFrZU92ZXJyaWRlKHBhdGNoKSB7XHJcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgbGV0IHJldHVyblZhbHVlID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICBpZiAoIXBhdGNoLmNoaWxkcmVuIHx8ICFwYXRjaC5jaGlsZHJlbi5sZW5ndGgpIHJldHVybiBwYXRjaC5vcmlnaW5hbEZ1bmN0aW9uLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3Qgc3VwZXJQYXRjaCBvZiBwYXRjaC5jaGlsZHJlbi5maWx0ZXIoYyA9PiBjLnR5cGUgPT09IFwiYmVmb3JlXCIpKSB7XHJcbiAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgIHN1cGVyUGF0Y2guY2FsbGJhY2sodGhpcywgYXJndW1lbnRzKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcclxuICAgICAgICAgICAgICAgICAgICBMb2dnZXIuZXJyKFwiUGF0Y2hlclwiLCBgQ291bGQgbm90IGZpcmUgYmVmb3JlIGNhbGxiYWNrIG9mICR7cGF0Y2guZnVuY3Rpb25OYW1lfSBmb3IgJHtzdXBlclBhdGNoLmNhbGxlcn1gLCBlcnIpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBjb25zdCBpbnN0ZWFkcyA9IHBhdGNoLmNoaWxkcmVuLmZpbHRlcihjID0+IGMudHlwZSA9PT0gXCJpbnN0ZWFkXCIpO1xyXG4gICAgICAgICAgICBpZiAoIWluc3RlYWRzLmxlbmd0aCkge3JldHVyblZhbHVlID0gcGF0Y2gub3JpZ2luYWxGdW5jdGlvbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO31cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGluc3RlYWRQYXRjaCBvZiBpbnN0ZWFkcykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XHJcblx0XHRcdFx0XHRcdGNvbnN0IHRlbXBSZXR1cm4gPSBpbnN0ZWFkUGF0Y2guY2FsbGJhY2sodGhpcywgYXJndW1lbnRzLCBwYXRjaC5vcmlnaW5hbEZ1bmN0aW9uLmJpbmQodGhpcykpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mKHRlbXBSZXR1cm4pICE9PSBcInVuZGVmaW5lZFwiKSByZXR1cm5WYWx1ZSA9IHRlbXBSZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2VyLmVycihcIlBhdGNoZXJcIiwgYENvdWxkIG5vdCBmaXJlIGluc3RlYWQgY2FsbGJhY2sgb2YgJHtwYXRjaC5mdW5jdGlvbk5hbWV9IGZvciAke2luc3RlYWRQYXRjaC5jYWxsZXJ9YCwgZXJyKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGZvciAoY29uc3Qgc2xhdmVQYXRjaCBvZiBwYXRjaC5jaGlsZHJlbi5maWx0ZXIoYyA9PiBjLnR5cGUgPT09IFwiYWZ0ZXJcIikpIHtcclxuICAgICAgICAgICAgICAgIHRyeSB7XHJcblx0XHRcdFx0XHRjb25zdCB0ZW1wUmV0dXJuID0gc2xhdmVQYXRjaC5jYWxsYmFjayh0aGlzLCBhcmd1bWVudHMsIHJldHVyblZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mKHRlbXBSZXR1cm4pICE9PSBcInVuZGVmaW5lZFwiKSByZXR1cm5WYWx1ZSA9IHRlbXBSZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgTG9nZ2VyLmVycihcIlBhdGNoZXJcIiwgYENvdWxkIG5vdCBmaXJlIGFmdGVyIGNhbGxiYWNrIG9mICR7cGF0Y2guZnVuY3Rpb25OYW1lfSBmb3IgJHtzbGF2ZVBhdGNoLmNhbGxlcn1gLCBlcnIpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiByZXR1cm5WYWx1ZTtcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyByZVBhdGNoKHBhdGNoKSB7XHJcbiAgICAgICAgcGF0Y2gucHJveHlGdW5jdGlvbiA9IHBhdGNoLm1vZHVsZVtwYXRjaC5mdW5jdGlvbk5hbWVdID0gdGhpcy5tYWtlT3ZlcnJpZGUocGF0Y2gpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBtYWtlUGF0Y2gobW9kdWxlLCBmdW5jdGlvbk5hbWUsIG5hbWUpIHtcclxuICAgICAgICBjb25zdCBwYXRjaCA9IHtcclxuXHRcdFx0bmFtZSxcclxuICAgICAgICAgICAgbW9kdWxlLFxyXG4gICAgICAgICAgICBmdW5jdGlvbk5hbWUsXHJcbiAgICAgICAgICAgIG9yaWdpbmFsRnVuY3Rpb246IG1vZHVsZVtmdW5jdGlvbk5hbWVdLFxyXG4gICAgICAgICAgICBwcm94eUZ1bmN0aW9uOiBudWxsLFxyXG4gICAgICAgICAgICByZXZlcnQ6ICgpID0+IHsgLy8gQ2FsbGluZyByZXZlcnQgd2lsbCBkZXN0cm95IGFueSBwYXRjaGVzIGFkZGVkIHRvIHRoZSBzYW1lIG1vZHVsZSBhZnRlciB0aGlzXHJcbiAgICAgICAgICAgICAgICBwYXRjaC5tb2R1bGVbcGF0Y2guZnVuY3Rpb25OYW1lXSA9IHBhdGNoLm9yaWdpbmFsRnVuY3Rpb247XHJcbiAgICAgICAgICAgICAgICBwYXRjaC5wcm94eUZ1bmN0aW9uID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIHBhdGNoLmNoaWxkcmVuID0gW107XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGNvdW50ZXI6IDAsXHJcbiAgICAgICAgICAgIGNoaWxkcmVuOiBbXVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgcGF0Y2gucHJveHlGdW5jdGlvbiA9IG1vZHVsZVtmdW5jdGlvbk5hbWVdID0gdGhpcy5tYWtlT3ZlcnJpZGUocGF0Y2gpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnBhdGNoZXMucHVzaChwYXRjaCksIHBhdGNoO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRnVuY3Rpb24gd2l0aCBubyBhcmd1bWVudHMgYW5kIG5vIHJldHVybiB2YWx1ZSB0aGF0IG1heSBiZSBjYWxsZWQgdG8gcmV2ZXJ0IGNoYW5nZXMgbWFkZSBieSB7QGxpbmsgbW9kdWxlOlBhdGNoZXJ9LCByZXN0b3JpbmcgKHVucGF0Y2hpbmcpIG9yaWdpbmFsIG1ldGhvZC5cclxuICAgICAqIEBjYWxsYmFjayBtb2R1bGU6UGF0Y2hlcn51bnBhdGNoXHJcbiAgICAgKi9cclxuXHJcbiAgICAvKipcclxuICAgICAqIEEgY2FsbGJhY2sgdGhhdCBtb2RpZmllcyBtZXRob2QgbG9naWMuIFRoaXMgY2FsbGJhY2sgaXMgY2FsbGVkIG9uIGVhY2ggY2FsbCBvZiB0aGUgb3JpZ2luYWwgbWV0aG9kIGFuZCBpcyBwcm92aWRlZCBhbGwgZGF0YSBhYm91dCBvcmlnaW5hbCBjYWxsLiBBbnkgb2YgdGhlIGRhdGEgY2FuIGJlIG1vZGlmaWVkIGlmIG5lY2Vzc2FyeSwgYnV0IGRvIHNvIHdpc2VseS5cclxuICAgICAqXHJcbiAgICAgKiBUaGUgdGhpcmQgYXJndW1lbnQgZm9yIHRoZSBjYWxsYmFjayB3aWxsIGJlIGB1bmRlZmluZWRgIGZvciBgYmVmb3JlYCBwYXRjaGVzLiBgb3JpZ2luYWxGdW5jdGlvbmAgZm9yIGBpbnN0ZWFkYCBwYXRjaGVzIGFuZCBgcmV0dXJuVmFsdWVgIGZvciBgYWZ0ZXJgIHBhdGNoZXMuXHJcbiAgICAgKlxyXG4gICAgICogQGNhbGxiYWNrIG1vZHVsZTpQYXRjaGVyfnBhdGNoQ2FsbGJhY2tcclxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSB0aGlzT2JqZWN0IC0gYHRoaXNgIGluIHRoZSBjb250ZXh0IG9mIHRoZSBvcmlnaW5hbCBmdW5jdGlvbi5cclxuICAgICAqIEBwYXJhbSB7YXJndW1lbnRzfSBhcmd1bWVudHMgLSBUaGUgb3JpZ2luYWwgYXJndW1lbnRzIG9mIHRoZSBvcmlnaW5hbCBmdW5jdGlvbi5cclxuICAgICAqIEBwYXJhbSB7KGZ1bmN0aW9ufCopfSBleHRyYVZhbHVlIC0gRm9yIGBpbnN0ZWFkYCBwYXRjaGVzLCB0aGlzIGlzIHRoZSBvcmlnaW5hbCBmdW5jdGlvbiBmcm9tIHRoZSBtb2R1bGUuIEZvciBgYWZ0ZXJgIHBhdGNoZXMsIHRoaXMgaXMgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgZnVuY3Rpb24uXHJcbiAgICAgKiBAcmV0dXJuIHsqfSBNYWtlcyBzZW5zZSBvbmx5IHdoZW4gdXNpbmcgYW4gYGluc3RlYWRgIG9yIGBhZnRlcmAgcGF0Y2guIElmIHNvbWV0aGluZyBvdGhlciB0aGFuIGB1bmRlZmluZWRgIGlzIHJldHVybmVkLCB0aGUgcmV0dXJuZWQgdmFsdWUgcmVwbGFjZXMgdGhlIHZhbHVlIG9mIGByZXR1cm5WYWx1ZWAuIElmIHVzZWQgZm9yIGBiZWZvcmVgIHRoZSByZXR1cm4gdmFsdWUgaXMgaWdub3JlZC5cclxuICAgICAqL1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhpcyBtZXRob2QgcGF0Y2hlcyBvbnRvIGFub3RoZXIgZnVuY3Rpb24sIGFsbG93aW5nIHlvdXIgY29kZSB0byBydW4gYmVmb3JlaGFuZC5cclxuICAgICAqIFVzaW5nIHRoaXMsIHlvdSBhcmUgYWxzbyBhYmxlIHRvIG1vZGlmeSB0aGUgaW5jb21pbmcgYXJndW1lbnRzIGJlZm9yZSB0aGUgb3JpZ2luYWwgbWV0aG9kIGlzIHJ1bi5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gY2FsbGVyIC0gTmFtZSBvZiB0aGUgY2FsbGVyIG9mIHRoZSBwYXRjaCBmdW5jdGlvbi4gVXNpbmcgdGhpcyB5b3UgY2FuIHVuZG8gYWxsIHBhdGNoZXMgd2l0aCB0aGUgc2FtZSBuYW1lIHVzaW5nIHtAbGluayBtb2R1bGU6UGF0Y2hlci51bnBhdGNoQWxsfS4gVXNlIGBcIlwiYCBpZiB5b3UgZG9uJ3QgY2FyZS5cclxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBtb2R1bGVUb1BhdGNoIC0gT2JqZWN0IHdpdGggdGhlIGZ1bmN0aW9uIHRvIGJlIHBhdGNoZWQuIENhbiBhbHNvIHBhdGNoIGFuIG9iamVjdCdzIHByb3RvdHlwZS5cclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBmdW5jdGlvbk5hbWUgLSBOYW1lIG9mIHRoZSBtZXRob2QgdG8gYmUgcGF0Y2hlZFxyXG4gICAgICogQHBhcmFtIHttb2R1bGU6UGF0Y2hlcn5wYXRjaENhbGxiYWNrfSBjYWxsYmFjayAtIEZ1bmN0aW9uIHRvIHJ1biBiZWZvcmUgdGhlIG9yaWdpbmFsIG1ldGhvZFxyXG4gICAgICogQHBhcmFtIHtvYmplY3R9IG9wdGlvbnMgLSBPYmplY3QgdXNlZCB0byBwYXNzIGFkZGl0aW9uYWwgb3B0aW9ucy5cclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5kaXNwbGF5TmFtZV0gWW91IGNhbiBwcm92aWRlIG1lYW5pbmdmdWwgbmFtZSBmb3IgY2xhc3Mvb2JqZWN0IHByb3ZpZGVkIGluIGB3aGF0YCBwYXJhbSBmb3IgbG9nZ2luZyBwdXJwb3Nlcy4gQnkgZGVmYXVsdCwgdGhpcyBmdW5jdGlvbiB3aWxsIHRyeSB0byBkZXRlcm1pbmUgbmFtZSBhdXRvbWF0aWNhbGx5LlxyXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5mb3JjZVBhdGNoPXRydWVdIFNldCB0byBgdHJ1ZWAgdG8gcGF0Y2ggZXZlbiBpZiB0aGUgZnVuY3Rpb24gZG9lc250IGV4aXN0LiAoQWRkcyBub29wIGZ1bmN0aW9uIGluIHBsYWNlKS5cclxuICAgICAqIEByZXR1cm4ge21vZHVsZTpQYXRjaGVyfnVucGF0Y2h9IEZ1bmN0aW9uIHdpdGggbm8gYXJndW1lbnRzIGFuZCBubyByZXR1cm4gdmFsdWUgdGhhdCBzaG91bGQgYmUgY2FsbGVkIHRvIGNhbmNlbCAodW5wYXRjaCkgdGhpcyBwYXRjaC4gWW91IHNob3VsZCBzYXZlIGFuZCBydW4gaXQgd2hlbiB5b3VyIHBsdWdpbiBpcyBzdG9wcGVkLlxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgYmVmb3JlKGNhbGxlciwgbW9kdWxlVG9QYXRjaCwgZnVuY3Rpb25OYW1lLCBjYWxsYmFjaywgb3B0aW9ucyA9IHt9KSB7IHJldHVybiB0aGlzLnB1c2hDaGlsZFBhdGNoKGNhbGxlciwgbW9kdWxlVG9QYXRjaCwgZnVuY3Rpb25OYW1lLCBjYWxsYmFjaywgT2JqZWN0LmFzc2lnbihvcHRpb25zLCB7dHlwZTogXCJiZWZvcmVcIn0pKTsgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhpcyBtZXRob2QgcGF0Y2hlcyBvbnRvIGFub3RoZXIgZnVuY3Rpb24sIGFsbG93aW5nIHlvdXIgY29kZSB0byBydW4gYWZ0ZXIuXHJcbiAgICAgKiBVc2luZyB0aGlzLCB5b3UgYXJlIGFsc28gYWJsZSB0byBtb2RpZnkgdGhlIHJldHVybiB2YWx1ZSwgdXNpbmcgdGhlIHJldHVybiBvZiB5b3VyIGNvZGUgaW5zdGVhZC5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gY2FsbGVyIC0gTmFtZSBvZiB0aGUgY2FsbGVyIG9mIHRoZSBwYXRjaCBmdW5jdGlvbi4gVXNpbmcgdGhpcyB5b3UgY2FuIHVuZG8gYWxsIHBhdGNoZXMgd2l0aCB0aGUgc2FtZSBuYW1lIHVzaW5nIHtAbGluayBtb2R1bGU6UGF0Y2hlci51bnBhdGNoQWxsfS4gVXNlIGBcIlwiYCBpZiB5b3UgZG9uJ3QgY2FyZS5cclxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBtb2R1bGVUb1BhdGNoIC0gT2JqZWN0IHdpdGggdGhlIGZ1bmN0aW9uIHRvIGJlIHBhdGNoZWQuIENhbiBhbHNvIHBhdGNoIGFuIG9iamVjdCdzIHByb3RvdHlwZS5cclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBmdW5jdGlvbk5hbWUgLSBOYW1lIG9mIHRoZSBtZXRob2QgdG8gYmUgcGF0Y2hlZFxyXG4gICAgICogQHBhcmFtIHttb2R1bGU6UGF0Y2hlcn5wYXRjaENhbGxiYWNrfSBjYWxsYmFjayAtIEZ1bmN0aW9uIHRvIHJ1biBpbnN0ZWFkIG9mIHRoZSBvcmlnaW5hbCBtZXRob2RcclxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBvcHRpb25zIC0gT2JqZWN0IHVzZWQgdG8gcGFzcyBhZGRpdGlvbmFsIG9wdGlvbnMuXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMuZGlzcGxheU5hbWVdIFlvdSBjYW4gcHJvdmlkZSBtZWFuaW5nZnVsIG5hbWUgZm9yIGNsYXNzL29iamVjdCBwcm92aWRlZCBpbiBgd2hhdGAgcGFyYW0gZm9yIGxvZ2dpbmcgcHVycG9zZXMuIEJ5IGRlZmF1bHQsIHRoaXMgZnVuY3Rpb24gd2lsbCB0cnkgdG8gZGV0ZXJtaW5lIG5hbWUgYXV0b21hdGljYWxseS5cclxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMuZm9yY2VQYXRjaD10cnVlXSBTZXQgdG8gYHRydWVgIHRvIHBhdGNoIGV2ZW4gaWYgdGhlIGZ1bmN0aW9uIGRvZXNudCBleGlzdC4gKEFkZHMgbm9vcCBmdW5jdGlvbiBpbiBwbGFjZSkuXHJcbiAgICAgKiBAcmV0dXJuIHttb2R1bGU6UGF0Y2hlcn51bnBhdGNofSBGdW5jdGlvbiB3aXRoIG5vIGFyZ3VtZW50cyBhbmQgbm8gcmV0dXJuIHZhbHVlIHRoYXQgc2hvdWxkIGJlIGNhbGxlZCB0byBjYW5jZWwgKHVucGF0Y2gpIHRoaXMgcGF0Y2guIFlvdSBzaG91bGQgc2F2ZSBhbmQgcnVuIGl0IHdoZW4geW91ciBwbHVnaW4gaXMgc3RvcHBlZC5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGFmdGVyKGNhbGxlciwgbW9kdWxlVG9QYXRjaCwgZnVuY3Rpb25OYW1lLCBjYWxsYmFjaywgb3B0aW9ucyA9IHt9KSB7IHJldHVybiB0aGlzLnB1c2hDaGlsZFBhdGNoKGNhbGxlciwgbW9kdWxlVG9QYXRjaCwgZnVuY3Rpb25OYW1lLCBjYWxsYmFjaywgT2JqZWN0LmFzc2lnbihvcHRpb25zLCB7dHlwZTogXCJhZnRlclwifSkpOyB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGlzIG1ldGhvZCBwYXRjaGVzIG9udG8gYW5vdGhlciBmdW5jdGlvbiwgYWxsb3dpbmcgeW91ciBjb2RlIHRvIHJ1biBpbnN0ZWFkLlxyXG4gICAgICogVXNpbmcgdGhpcywgeW91IGFyZSBhbHNvIGFibGUgdG8gbW9kaWZ5IHRoZSByZXR1cm4gdmFsdWUsIHVzaW5nIHRoZSByZXR1cm4gb2YgeW91ciBjb2RlIGluc3RlYWQuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGNhbGxlciAtIE5hbWUgb2YgdGhlIGNhbGxlciBvZiB0aGUgcGF0Y2ggZnVuY3Rpb24uIFVzaW5nIHRoaXMgeW91IGNhbiB1bmRvIGFsbCBwYXRjaGVzIHdpdGggdGhlIHNhbWUgbmFtZSB1c2luZyB7QGxpbmsgbW9kdWxlOlBhdGNoZXIudW5wYXRjaEFsbH0uIFVzZSBgXCJcImAgaWYgeW91IGRvbid0IGNhcmUuXHJcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gbW9kdWxlVG9QYXRjaCAtIE9iamVjdCB3aXRoIHRoZSBmdW5jdGlvbiB0byBiZSBwYXRjaGVkLiBDYW4gYWxzbyBwYXRjaCBhbiBvYmplY3QncyBwcm90b3R5cGUuXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZnVuY3Rpb25OYW1lIC0gTmFtZSBvZiB0aGUgbWV0aG9kIHRvIGJlIHBhdGNoZWRcclxuICAgICAqIEBwYXJhbSB7bW9kdWxlOlBhdGNoZXJ+cGF0Y2hDYWxsYmFja30gY2FsbGJhY2sgLSBGdW5jdGlvbiB0byBydW4gYWZ0ZXIgdGhlIG9yaWdpbmFsIG1ldGhvZFxyXG4gICAgICogQHBhcmFtIHtvYmplY3R9IG9wdGlvbnMgLSBPYmplY3QgdXNlZCB0byBwYXNzIGFkZGl0aW9uYWwgb3B0aW9ucy5cclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5kaXNwbGF5TmFtZV0gWW91IGNhbiBwcm92aWRlIG1lYW5pbmdmdWwgbmFtZSBmb3IgY2xhc3Mvb2JqZWN0IHByb3ZpZGVkIGluIGB3aGF0YCBwYXJhbSBmb3IgbG9nZ2luZyBwdXJwb3Nlcy4gQnkgZGVmYXVsdCwgdGhpcyBmdW5jdGlvbiB3aWxsIHRyeSB0byBkZXRlcm1pbmUgbmFtZSBhdXRvbWF0aWNhbGx5LlxyXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5mb3JjZVBhdGNoPXRydWVdIFNldCB0byBgdHJ1ZWAgdG8gcGF0Y2ggZXZlbiBpZiB0aGUgZnVuY3Rpb24gZG9lc250IGV4aXN0LiAoQWRkcyBub29wIGZ1bmN0aW9uIGluIHBsYWNlKS5cclxuICAgICAqIEByZXR1cm4ge21vZHVsZTpQYXRjaGVyfnVucGF0Y2h9IEZ1bmN0aW9uIHdpdGggbm8gYXJndW1lbnRzIGFuZCBubyByZXR1cm4gdmFsdWUgdGhhdCBzaG91bGQgYmUgY2FsbGVkIHRvIGNhbmNlbCAodW5wYXRjaCkgdGhpcyBwYXRjaC4gWW91IHNob3VsZCBzYXZlIGFuZCBydW4gaXQgd2hlbiB5b3VyIHBsdWdpbiBpcyBzdG9wcGVkLlxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgaW5zdGVhZChjYWxsZXIsIG1vZHVsZVRvUGF0Y2gsIGZ1bmN0aW9uTmFtZSwgY2FsbGJhY2ssIG9wdGlvbnMgPSB7fSkgeyByZXR1cm4gdGhpcy5wdXNoQ2hpbGRQYXRjaChjYWxsZXIsIG1vZHVsZVRvUGF0Y2gsIGZ1bmN0aW9uTmFtZSwgY2FsbGJhY2ssIE9iamVjdC5hc3NpZ24ob3B0aW9ucywge3R5cGU6IFwiaW5zdGVhZFwifSkpOyB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGlzIG1ldGhvZCBwYXRjaGVzIG9udG8gYW5vdGhlciBmdW5jdGlvbiwgYWxsb3dpbmcgeW91ciBjb2RlIHRvIHJ1biBiZWZvcmUsIGluc3RlYWQgb3IgYWZ0ZXIgdGhlIG9yaWdpbmFsIGZ1bmN0aW9uLlxyXG4gICAgICogVXNpbmcgdGhpcyB5b3UgYXJlIGFibGUgdG8gbW9kaWZ5IHRoZSBpbmNvbWluZyBhcmd1bWVudHMgYmVmb3JlIHRoZSBvcmlnaW5hbCBmdW5jdGlvbiBpcyBydW4gYXMgd2VsbCBhcyB0aGUgcmV0dXJuXHJcbiAgICAgKiB2YWx1ZSBiZWZvcmUgdGhlIG9yaWdpbmFsIGZ1bmN0aW9uIGFjdHVhbGx5IHJldHVybnMuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGNhbGxlciAtIE5hbWUgb2YgdGhlIGNhbGxlciBvZiB0aGUgcGF0Y2ggZnVuY3Rpb24uIFVzaW5nIHRoaXMgeW91IGNhbiB1bmRvIGFsbCBwYXRjaGVzIHdpdGggdGhlIHNhbWUgbmFtZSB1c2luZyB7QGxpbmsgbW9kdWxlOlBhdGNoZXIudW5wYXRjaEFsbH0uIFVzZSBgXCJcImAgaWYgeW91IGRvbid0IGNhcmUuXHJcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gbW9kdWxlVG9QYXRjaCAtIE9iamVjdCB3aXRoIHRoZSBmdW5jdGlvbiB0byBiZSBwYXRjaGVkLiBDYW4gYWxzbyBwYXRjaCBhbiBvYmplY3QncyBwcm90b3R5cGUuXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZnVuY3Rpb25OYW1lIC0gTmFtZSBvZiB0aGUgbWV0aG9kIHRvIGJlIHBhdGNoZWRcclxuICAgICAqIEBwYXJhbSB7bW9kdWxlOlBhdGNoZXJ+cGF0Y2hDYWxsYmFja30gY2FsbGJhY2sgLSBGdW5jdGlvbiB0byBydW4gYWZ0ZXIgdGhlIG9yaWdpbmFsIG1ldGhvZFxyXG4gICAgICogQHBhcmFtIHtvYmplY3R9IG9wdGlvbnMgLSBPYmplY3QgdXNlZCB0byBwYXNzIGFkZGl0aW9uYWwgb3B0aW9ucy5cclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy50eXBlPWFmdGVyXSAtIERldGVybWluZXMgd2hldGhlciB0byBydW4gdGhlIGZ1bmN0aW9uIGBiZWZvcmVgLCBgaW5zdGVhZGAsIG9yIGBhZnRlcmAgdGhlIG9yaWdpbmFsLlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLmRpc3BsYXlOYW1lXSBZb3UgY2FuIHByb3ZpZGUgbWVhbmluZ2Z1bCBuYW1lIGZvciBjbGFzcy9vYmplY3QgcHJvdmlkZWQgaW4gYHdoYXRgIHBhcmFtIGZvciBsb2dnaW5nIHB1cnBvc2VzLiBCeSBkZWZhdWx0LCB0aGlzIGZ1bmN0aW9uIHdpbGwgdHJ5IHRvIGRldGVybWluZSBuYW1lIGF1dG9tYXRpY2FsbHkuXHJcbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLmZvcmNlUGF0Y2g9dHJ1ZV0gU2V0IHRvIGB0cnVlYCB0byBwYXRjaCBldmVuIGlmIHRoZSBmdW5jdGlvbiBkb2VzbnQgZXhpc3QuIChBZGRzIG5vb3AgZnVuY3Rpb24gaW4gcGxhY2UpLlxyXG4gICAgICogQHJldHVybiB7bW9kdWxlOlBhdGNoZXJ+dW5wYXRjaH0gRnVuY3Rpb24gd2l0aCBubyBhcmd1bWVudHMgYW5kIG5vIHJldHVybiB2YWx1ZSB0aGF0IHNob3VsZCBiZSBjYWxsZWQgdG8gY2FuY2VsICh1bnBhdGNoKSB0aGlzIHBhdGNoLiBZb3Ugc2hvdWxkIHNhdmUgYW5kIHJ1biBpdCB3aGVuIHlvdXIgcGx1Z2luIGlzIHN0b3BwZWQuXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBwdXNoQ2hpbGRQYXRjaChjYWxsZXIsIG1vZHVsZVRvUGF0Y2gsIGZ1bmN0aW9uTmFtZSwgY2FsbGJhY2ssIG9wdGlvbnMgPSB7fSkge1xyXG5cdFx0Y29uc3Qge3R5cGUgPSBcImFmdGVyXCIsIGZvcmNlUGF0Y2ggPSB0cnVlfSA9IG9wdGlvbnM7XHJcblx0XHRjb25zdCBtb2R1bGUgPSB0aGlzLnJlc29sdmVNb2R1bGUobW9kdWxlVG9QYXRjaCk7XHJcblx0XHRpZiAoIW1vZHVsZSkgcmV0dXJuIG51bGw7XHJcblx0XHRpZiAoIW1vZHVsZVtmdW5jdGlvbk5hbWVdICYmIGZvcmNlUGF0Y2gpIG1vZHVsZVtmdW5jdGlvbk5hbWVdID0gZnVuY3Rpb24oKSB7fTtcclxuXHRcdGlmICghKG1vZHVsZVtmdW5jdGlvbk5hbWVdIGluc3RhbmNlb2YgRnVuY3Rpb24pKSByZXR1cm4gbnVsbDtcclxuXHJcblx0XHRpZiAodHlwZW9mIG1vZHVsZVRvUGF0Y2ggPT09IFwic3RyaW5nXCIpIG9wdGlvbnMuZGlzcGxheU5hbWUgPSBtb2R1bGVUb1BhdGNoO1xyXG4gICAgICAgIGNvbnN0IGRpc3BsYXlOYW1lID0gb3B0aW9ucy5kaXNwbGF5TmFtZSB8fCBtb2R1bGUuZGlzcGxheU5hbWUgfHwgbW9kdWxlLm5hbWUgfHwgbW9kdWxlLmNvbnN0cnVjdG9yLmRpc3BsYXlOYW1lIHx8IG1vZHVsZS5jb25zdHJ1Y3Rvci5uYW1lO1xyXG5cclxuXHRcdGNvbnN0IHBhdGNoSWQgPSBgJHtkaXNwbGF5TmFtZX0uJHtmdW5jdGlvbk5hbWV9YDtcclxuICAgICAgICBjb25zdCBwYXRjaCA9IHRoaXMucGF0Y2hlcy5maW5kKHAgPT4gcC5tb2R1bGUgPT0gbW9kdWxlICYmIHAuZnVuY3Rpb25OYW1lID09IGZ1bmN0aW9uTmFtZSkgfHwgdGhpcy5tYWtlUGF0Y2gobW9kdWxlLCBmdW5jdGlvbk5hbWUsIHBhdGNoSWQpO1xyXG4gICAgICAgIGlmICghcGF0Y2gucHJveHlGdW5jdGlvbikgdGhpcy5yZVBhdGNoKHBhdGNoKTtcclxuICAgICAgICBjb25zdCBjaGlsZCA9IHtcclxuICAgICAgICAgICAgY2FsbGVyLFxyXG4gICAgICAgICAgICB0eXBlLFxyXG4gICAgICAgICAgICBpZDogcGF0Y2guY291bnRlcixcclxuICAgICAgICAgICAgY2FsbGJhY2ssXHJcbiAgICAgICAgICAgIHVucGF0Y2g6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgIHBhdGNoLmNoaWxkcmVuLnNwbGljZShwYXRjaC5jaGlsZHJlbi5maW5kSW5kZXgoY3BhdGNoID0+IGNwYXRjaC5pZCA9PT0gY2hpbGQuaWQgJiYgY3BhdGNoLnR5cGUgPT09IHR5cGUpLCAxKTtcclxuICAgICAgICAgICAgICAgIGlmIChwYXRjaC5jaGlsZHJlbi5sZW5ndGggPD0gMCkge1xyXG5cdFx0XHRcdFx0Y29uc3QgcGF0Y2hOdW0gPSB0aGlzLnBhdGNoZXMuZmluZEluZGV4KHAgPT4gcC5tb2R1bGUgPT0gbW9kdWxlICYmIHAuZnVuY3Rpb25OYW1lID09IGZ1bmN0aW9uTmFtZSk7XHJcblx0XHRcdFx0XHR0aGlzLnBhdGNoZXNbcGF0Y2hOdW1dLnJldmVydCgpO1xyXG5cdFx0XHRcdFx0dGhpcy5wYXRjaGVzLnNwbGljZShwYXRjaE51bSwgMSk7XHJcblx0XHRcdFx0fVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgICAgICBwYXRjaC5jaGlsZHJlbi5wdXNoKGNoaWxkKTtcclxuICAgICAgICBwYXRjaC5jb3VudGVyKys7XHJcbiAgICAgICAgcmV0dXJuIGNoaWxkLnVucGF0Y2g7XHJcbiAgICB9XHJcblxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/patcher.js\n");
/***/ }),
/***/ "./src/modules/pluginapi.js":
/*!**********************************!*\
!*** ./src/modules/pluginapi.js ***!
\**********************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _data_data_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../data/data.js */ \"./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/* harmony import */ var _builtins_emotes_emotes__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../builtins/emotes/emotes */ \"./src/builtins/emotes/emotes.js\");\n\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 new Proxy(_builtins_emotes_emotes__WEBPACK_IMPORTED_MODULE_13__[\"default\"].Emotes, {\n get() {\n return _builtins_emotes_emotes__WEBPACK_IMPORTED_MODULE_13__[\"default\"].Emotes;\n },\n\n set() {\n _logger__WEBPACK_IMPORTED_MODULE_11__[\"default\"].warn(\"Emotes\", \"Addon policy for plugins #5 https://github.com/rauenzi/BetterDiscordApp/wiki/Addon-Policies#plugins\");\n }\n\n });\n },\n\n get version() {\n return _data_data_js__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/NmE5MyJdLCJuYW1lcyI6WyJCZEFwaSIsIlJlYWN0IiwiRGlzY29yZE1vZHVsZXMiLCJSZWFjdERPTSIsIldpbmRvd0NvbmZpZ0ZpbGUiLCJzZXR0aW5ncyIsIlNldHRpbmdzIiwiY29sbGVjdGlvbnMiLCJlbW90ZXMiLCJQcm94eSIsIkVtb3RlcyIsImdldCIsInNldCIsIkxvZ2dlciIsIndhcm4iLCJ2ZXJzaW9uIiwiQ29uZmlnIiwiZ2V0QWxsV2luZG93UHJlZmVyZW5jZXMiLCJEYXRhU3RvcmUiLCJnZXREYXRhIiwiZ2V0V2luZG93UHJlZmVyZW5jZSIsImtleSIsInNldFdpbmRvd1ByZWZlcmVuY2UiLCJ2YWx1ZSIsInByZWZzIiwic2V0RGF0YSIsImluamVjdENTUyIsImlkIiwiY3NzIiwiRE9NTWFuYWdlciIsImluamVjdFN0eWxlIiwiY2xlYXJDU1MiLCJyZW1vdmVTdHlsZSIsImxpbmtKUyIsInVybCIsImluamVjdFNjcmlwdCIsInVubGlua0pTIiwicmVtb3ZlU2NyaXB0IiwiYWxlcnQiLCJ0aXRsZSIsImNvbnRlbnQiLCJNb2RhbHMiLCJzaG93Q29uZmlybWF0aW9uTW9kYWwiLCJvcHRpb25zIiwic2hvd1RvYXN0IiwiVG9hc3RzIiwic2hvdyIsImZpbmRNb2R1bGUiLCJmaWx0ZXIiLCJXZWJwYWNrTW9kdWxlcyIsImdldE1vZHVsZSIsImZpbmRBbGxNb2R1bGVzIiwiZmluZE1vZHVsZUJ5UHJvcHMiLCJwcm9wcyIsImdldEJ5UHJvcHMiLCJmaW5kTW9kdWxlQnlQcm90b3R5cGVzIiwicHJvdG9zIiwiZ2V0QnlQcm90b3R5cGVzIiwiZmluZE1vZHVsZUJ5RGlzcGxheU5hbWUiLCJuYW1lIiwiZ2V0QnlEaXNwbGF5TmFtZSIsImdldEludGVybmFsSW5zdGFuY2UiLCJub2RlIiwid2luZG93IiwialF1ZXJ5IiwiRWxlbWVudCIsInVuZGVmaW5lZCIsIlV0aWxpdGllcyIsImdldFJlYWN0SW5zdGFuY2UiLCJsb2FkRGF0YSIsInBsdWdpbk5hbWUiLCJnZXRQbHVnaW5EYXRhIiwic2F2ZURhdGEiLCJkYXRhIiwic2V0UGx1Z2luRGF0YSIsImRlbGV0ZURhdGEiLCJkZWxldGVQbHVnaW5EYXRhIiwibW9ua2V5UGF0Y2giLCJ3aGF0IiwibWV0aG9kTmFtZSIsImJlZm9yZSIsImFmdGVyIiwiaW5zdGVhZCIsIm9uY2UiLCJwYXRjaFR5cGUiLCJlcnIiLCJvcmlnaW5hbE1ldGhvZCIsImNhbGxPcmlnaW5hbE1ldGhvZCIsImFwcGx5IiwidGhpc09iamVjdCIsIm1ldGhvZEFyZ3VtZW50cyIsImNhbmNlbFBhdGNoIiwiUGF0Y2hlciIsImFyZ3MiLCJyZXR1cm5WYWx1ZSIsIlJlZmxlY3QiLCJvblJlbW92ZWQiLCJjYWxsYmFjayIsInN1cHByZXNzRXJyb3JzIiwibWV0aG9kIiwibWVzc2FnZSIsInRlc3RKU09OIiwiZ2V0UGx1Z2luIiwiUGx1Z2luTWFuYWdlciIsImFkZG9uTGlzdCIsImZpbmQiLCJhIiwiaXNQbHVnaW5FbmFibGVkIiwicGx1Z2luIiwiaXNFbmFibGVkIiwiaXNUaGVtZUVuYWJsZWQiLCJ0aGVtZSIsIlRoZW1lTWFuYWdlciIsImlzU2V0dGluZ0VuYWJsZWQiLCJjb2xsZWN0aW9uIiwiY2F0ZWdvcnkiLCJlbmFibGVTZXR0aW5nIiwiZGlzYWJsZVNldHRpbmciLCJ0b2dnbGVTZXR0aW5nIiwiZ2V0QkREYXRhIiwic2V0QkREYXRhIiwibWFrZUFkZG9uQVBJIiwibWFuYWdlciIsIkFkZG9uQVBJIiwiZm9sZGVyIiwiYWRkb25Gb2xkZXIiLCJpZE9yRmlsZSIsImVuYWJsZSIsImlkT3JBZGRvbiIsImVuYWJsZUFkZG9uIiwiZGlzYWJsZSIsImRpc2FibGVBZGRvbiIsInRvZ2dsZSIsInRvZ2dsZUFkZG9uIiwicmVsb2FkIiwiaWRPckZpbGVPckFkZG9uIiwicmVsb2FkQWRkb24iLCJnZXRBZGRvbiIsImdldEFsbCIsIm1hcCIsIlBsdWdpbnMiLCJUaGVtZXMiLCJwYXRjaCIsImNhbGxlciIsIm1vZHVsZVRvUGF0Y2giLCJmdW5jdGlvbk5hbWUiLCJ0eXBlIiwicHVzaENoaWxkUGF0Y2giLCJPYmplY3QiLCJhc3NpZ24iLCJ1bnBhdGNoQWxsIiwiZnJlZXplIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUEsTUFBTUEsS0FBSyxHQUFHO0FBQ1YsTUFBSUMsS0FBSixHQUFZO0FBQUUsV0FBT0MsdURBQWMsQ0FBQ0QsS0FBdEI7QUFBOEIsR0FEbEM7O0FBRVYsTUFBSUUsUUFBSixHQUFlO0FBQUUsV0FBT0QsdURBQWMsQ0FBQ0MsUUFBdEI7QUFBaUMsR0FGeEM7O0FBR1YsTUFBSUMsZ0JBQUosR0FBdUI7QUFBQyxXQUFPLEVBQVA7QUFBVyxHQUh6Qjs7QUFJVixNQUFJQyxRQUFKLEdBQWU7QUFBQyxXQUFPQyx5REFBUSxDQUFDQyxXQUFoQjtBQUE2QixHQUpuQzs7QUFLVixNQUFJQyxNQUFKLEdBQWE7QUFBQyxXQUFPLElBQUlDLEtBQUosQ0FBVUMsZ0VBQU0sQ0FBQ0EsTUFBakIsRUFBeUI7QUFDMUNDLFNBQUcsR0FBRztBQUFFLGVBQU9ELGdFQUFNLENBQUNBLE1BQWQ7QUFBcUIsT0FEYTs7QUFFMUNFLFNBQUcsR0FBRztBQUFFQyx3REFBTSxDQUFDQyxJQUFQLENBQVksUUFBWixFQUFzQixxR0FBdEI7QUFBOEg7O0FBRjVGLEtBQXpCLENBQVA7QUFHVixHQVJNOztBQVNWLE1BQUlDLE9BQUosR0FBYztBQUFDLFdBQU9DLG9EQUFNLENBQUNELE9BQWQ7QUFBdUI7O0FBVDVCLENBQWQ7O0FBWUFmLEtBQUssQ0FBQ2lCLHVCQUFOLEdBQWdDLFlBQVc7QUFDdkMsU0FBT0Msa0RBQVMsQ0FBQ0MsT0FBVixDQUFrQixhQUFsQixLQUFvQyxFQUEzQztBQUNILENBRkQ7O0FBSUFuQixLQUFLLENBQUNvQixtQkFBTixHQUE0QixVQUFTQyxHQUFULEVBQWM7QUFDdEMsU0FBTyxLQUFLSix1QkFBTCxHQUErQkksR0FBL0IsQ0FBUDtBQUNILENBRkQ7O0FBSUFyQixLQUFLLENBQUNzQixtQkFBTixHQUE0QixVQUFTRCxHQUFULEVBQWNFLEtBQWQsRUFBcUI7QUFDN0MsUUFBTUMsS0FBSyxHQUFHLEtBQUtQLHVCQUFMLEVBQWQ7QUFDQU8sT0FBSyxDQUFDSCxHQUFELENBQUwsR0FBYUUsS0FBYjtBQUNBLFNBQU9MLGtEQUFTLENBQUNPLE9BQVYsQ0FBa0IsYUFBbEIsRUFBaUNELEtBQWpDLENBQVA7QUFDSCxDQUpELEMsQ0FNQTtBQUNBO0FBQ0E7OztBQUNBeEIsS0FBSyxDQUFDMEIsU0FBTixHQUFrQixVQUFVQyxFQUFWLEVBQWNDLEdBQWQsRUFBbUI7QUFDakNDLHFEQUFVLENBQUNDLFdBQVgsQ0FBdUJILEVBQXZCLEVBQTJCQyxHQUEzQjtBQUNILENBRkQsQyxDQUlBO0FBQ0E7OztBQUNBNUIsS0FBSyxDQUFDK0IsUUFBTixHQUFpQixVQUFVSixFQUFWLEVBQWM7QUFDM0JFLHFEQUFVLENBQUNHLFdBQVgsQ0FBdUJMLEVBQXZCO0FBQ0gsQ0FGRCxDLENBSUE7QUFDQTtBQUNBOzs7QUFDQTNCLEtBQUssQ0FBQ2lDLE1BQU4sR0FBZSxVQUFVTixFQUFWLEVBQWNPLEdBQWQsRUFBbUI7QUFDOUIsU0FBT0wsbURBQVUsQ0FBQ00sWUFBWCxDQUF3QlIsRUFBeEIsRUFBNEJPLEdBQTVCLENBQVA7QUFDSCxDQUZELEMsQ0FJQTtBQUNBOzs7QUFDQWxDLEtBQUssQ0FBQ29DLFFBQU4sR0FBaUIsVUFBVVQsRUFBVixFQUFjO0FBQzNCRSxxREFBVSxDQUFDUSxZQUFYLENBQXdCVixFQUF4QjtBQUNILENBRkQ7QUFJQTs7Ozs7OztBQUtBM0IsS0FBSyxDQUFDc0MsS0FBTixHQUFjLFVBQVVDLEtBQVYsRUFBaUJDLE9BQWpCLEVBQTBCO0FBQ3BDQyxvREFBTSxDQUFDSCxLQUFQLENBQWFDLEtBQWIsRUFBb0JDLE9BQXBCO0FBQ0gsQ0FGRDtBQUlBOzs7Ozs7Ozs7Ozs7O0FBV0F4QyxLQUFLLENBQUMwQyxxQkFBTixHQUE4QixVQUFVSCxLQUFWLEVBQWlCQyxPQUFqQixFQUEwQkcsT0FBTyxHQUFHLEVBQXBDLEVBQXdDO0FBQ2xFLFNBQU9GLGtEQUFNLENBQUNDLHFCQUFQLENBQTZCSCxLQUE3QixFQUFvQ0MsT0FBcEMsRUFBNkNHLE9BQTdDLENBQVA7QUFDSCxDQUZEO0FBSUE7Ozs7Ozs7Ozs7OztBQVVBM0MsS0FBSyxDQUFDNEMsU0FBTixHQUFrQixVQUFTSixPQUFULEVBQWtCRyxPQUFPLEdBQUcsRUFBNUIsRUFBZ0M7QUFDOUNFLG9EQUFNLENBQUNDLElBQVAsQ0FBWU4sT0FBWixFQUFxQkcsT0FBckI7QUFDSCxDQUZELEMsQ0FJQTs7O0FBQ0EzQyxLQUFLLENBQUMrQyxVQUFOLEdBQW1CLFVBQVNDLE1BQVQsRUFBaUI7QUFDaEMsU0FBT0MsdURBQWMsQ0FBQ0MsU0FBZixDQUF5QkYsTUFBekIsQ0FBUDtBQUNILENBRkQsQyxDQUlBOzs7QUFDQWhELEtBQUssQ0FBQ21ELGNBQU4sR0FBdUIsVUFBU0gsTUFBVCxFQUFpQjtBQUNwQyxTQUFPQyx1REFBYyxDQUFDQyxTQUFmLENBQXlCRixNQUF6QixFQUFpQyxLQUFqQyxDQUFQO0FBQ0gsQ0FGRCxDLENBSUE7OztBQUNBaEQsS0FBSyxDQUFDb0QsaUJBQU4sR0FBMEIsVUFBUyxHQUFHQyxLQUFaLEVBQW1CO0FBQ3pDLFNBQU9KLHVEQUFjLENBQUNLLFVBQWYsQ0FBMEIsR0FBR0QsS0FBN0IsQ0FBUDtBQUNILENBRkQ7O0FBSUFyRCxLQUFLLENBQUN1RCxzQkFBTixHQUErQixVQUFTLEdBQUdDLE1BQVosRUFBb0I7QUFDL0MsU0FBT1AsdURBQWMsQ0FBQ1EsZUFBZixDQUErQixHQUFHRCxNQUFsQyxDQUFQO0FBQ0gsQ0FGRDs7QUFJQXhELEtBQUssQ0FBQzBELHVCQUFOLEdBQWdDLFVBQVNDLElBQVQsRUFBZTtBQUMzQyxTQUFPVix1REFBYyxDQUFDVyxnQkFBZixDQUFnQ0QsSUFBaEMsQ0FBUDtBQUNILENBRkQsQyxDQUlBOzs7QUFDQTNELEtBQUssQ0FBQzZELG1CQUFOLEdBQTRCLFVBQVNDLElBQVQsRUFBZTtBQUN2QyxNQUFJLEVBQUVBLElBQUksWUFBWUMsTUFBTSxDQUFDQyxNQUF6QixLQUFvQyxFQUFFRixJQUFJLFlBQVlHLE9BQWxCLENBQXhDLEVBQW9FLE9BQU9DLFNBQVA7QUFDcEUsTUFBSUosSUFBSSxZQUFZRSxNQUFwQixFQUE0QkYsSUFBSSxHQUFHQSxJQUFJLENBQUMsQ0FBRCxDQUFYO0FBQzVCLFNBQU9LLGtEQUFTLENBQUNDLGdCQUFWLENBQTJCTixJQUEzQixDQUFQO0FBQ0gsQ0FKRCxDLENBTUE7OztBQUNBOUQsS0FBSyxDQUFDcUUsUUFBTixHQUFpQixVQUFTQyxVQUFULEVBQXFCakQsR0FBckIsRUFBMEI7QUFDdkMsU0FBT0gsa0RBQVMsQ0FBQ3FELGFBQVYsQ0FBd0JELFVBQXhCLEVBQW9DakQsR0FBcEMsQ0FBUDtBQUNILENBRkQ7O0FBSUFyQixLQUFLLENBQUNtQixPQUFOLEdBQWdCbkIsS0FBSyxDQUFDcUUsUUFBdEIsQyxDQUVBOztBQUNBckUsS0FBSyxDQUFDd0UsUUFBTixHQUFpQixVQUFTRixVQUFULEVBQXFCakQsR0FBckIsRUFBMEJvRCxJQUExQixFQUFnQztBQUM3QyxTQUFPdkQsa0RBQVMsQ0FBQ3dELGFBQVYsQ0FBd0JKLFVBQXhCLEVBQW9DakQsR0FBcEMsRUFBeUNvRCxJQUF6QyxDQUFQO0FBQ0gsQ0FGRDs7QUFJQXpFLEtBQUssQ0FBQ3lCLE9BQU4sR0FBZ0J6QixLQUFLLENBQUN3RSxRQUF0QixDLENBRUE7O0FBQ0F4RSxLQUFLLENBQUMyRSxVQUFOLEdBQW1CLFVBQVNMLFVBQVQsRUFBcUJqRCxHQUFyQixFQUEwQjtBQUN6QyxTQUFPSCxrREFBUyxDQUFDMEQsZ0JBQVYsQ0FBMkJOLFVBQTNCLEVBQXVDakQsR0FBdkMsQ0FBUDtBQUNILENBRkQsQyxDQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0FyQixLQUFLLENBQUM2RSxXQUFOLEdBQW9CLFVBQVNDLElBQVQsRUFBZUMsVUFBZixFQUEyQnBDLE9BQTNCLEVBQW9DO0FBQ3BELFFBQU07QUFBQ3FDLFVBQUQ7QUFBU0MsU0FBVDtBQUFnQkMsV0FBaEI7QUFBeUJDLFFBQUksR0FBRztBQUFoQyxNQUF5Q3hDLE9BQS9DO0FBQ0EsUUFBTXlDLFNBQVMsR0FBR0osTUFBTSxHQUFHLFFBQUgsR0FBY0MsS0FBSyxHQUFHLE9BQUgsR0FBYUMsT0FBTyxHQUFHLFNBQUgsR0FBZSxFQUE5RTtBQUNBLE1BQUksQ0FBQ0UsU0FBTCxFQUFnQixPQUFPdkUsZ0RBQU0sQ0FBQ3dFLEdBQVAsQ0FBVyxPQUFYLEVBQW9CLDZDQUFwQixDQUFQO0FBQ2hCLFFBQU1DLGNBQWMsR0FBR1IsSUFBSSxDQUFDQyxVQUFELENBQTNCO0FBQ0EsUUFBTU4sSUFBSSxHQUFHO0FBQ1RhLGtCQUFjLEVBQUVBLGNBRFA7QUFFVEMsc0JBQWtCLEVBQUUsTUFBTWQsSUFBSSxDQUFDYSxjQUFMLENBQW9CRSxLQUFwQixDQUEwQmYsSUFBSSxDQUFDZ0IsVUFBL0IsRUFBMkNoQixJQUFJLENBQUNpQixlQUFoRDtBQUZqQixHQUFiO0FBSUFqQixNQUFJLENBQUNrQixXQUFMLEdBQW1CQyxpREFBTyxDQUFDUixTQUFELENBQVAsQ0FBbUIsT0FBbkIsRUFBNEJOLElBQTVCLEVBQWtDQyxVQUFsQyxFQUE4QyxDQUFDVSxVQUFELEVBQWFJLElBQWIsRUFBbUJDLFdBQW5CLEtBQW1DO0FBQ2hHckIsUUFBSSxDQUFDZ0IsVUFBTCxHQUFrQkEsVUFBbEI7QUFDQWhCLFFBQUksQ0FBQ2lCLGVBQUwsR0FBdUJHLElBQXZCO0FBQ0FwQixRQUFJLENBQUNxQixXQUFMLEdBQW1CQSxXQUFuQjs7QUFDQSxRQUFJO0FBQ0FDLGFBQU8sQ0FBQ1AsS0FBUixDQUFjN0MsT0FBTyxDQUFDeUMsU0FBRCxDQUFyQixFQUFrQyxJQUFsQyxFQUF3QyxDQUFDWCxJQUFELENBQXhDO0FBQ0EsVUFBSVUsSUFBSixFQUFVVixJQUFJLENBQUNrQixXQUFMO0FBQ2IsS0FIRCxDQUlBLE9BQU9OLEdBQVAsRUFBWSxDQUNSO0FBQ0g7QUFDSixHQVhrQixDQUFuQjtBQVlILENBckJELEMsQ0FzQkE7OztBQUNBckYsS0FBSyxDQUFDZ0csU0FBTixHQUFrQixVQUFTbEMsSUFBVCxFQUFlbUMsUUFBZixFQUF5QjtBQUN2QyxTQUFPOUIsa0RBQVMsQ0FBQzZCLFNBQVYsQ0FBb0JsQyxJQUFwQixFQUEwQm1DLFFBQTFCLENBQVA7QUFDSCxDQUZELEMsQ0FJQTs7O0FBQ0FqRyxLQUFLLENBQUNrRyxjQUFOLEdBQXVCLFVBQVNDLE1BQVQsRUFBaUJDLE9BQWpCLEVBQTBCO0FBQzdDLFNBQU9qQyxrREFBUyxDQUFDK0IsY0FBVixDQUF5QkMsTUFBekIsRUFBaUNDLE9BQWpDLENBQVA7QUFDSCxDQUZELEMsQ0FJQTs7O0FBQ0FwRyxLQUFLLENBQUNxRyxRQUFOLEdBQWlCLFVBQVM1QixJQUFULEVBQWU7QUFDNUIsU0FBT04sa0RBQVMsQ0FBQ2tDLFFBQVYsQ0FBbUI1QixJQUFuQixDQUFQO0FBQ0gsQ0FGRCxDLENBSUE7QUFDQTs7O0FBQ0F6RSxLQUFLLENBQUNzRyxTQUFOLEdBQWtCLFVBQVUzQyxJQUFWLEVBQWdCO0FBQzlCOUMsa0RBQU0sQ0FBQ0MsSUFBUCxDQUFZLE9BQVosRUFBcUIsMkVBQXJCO0FBQ0EsU0FBT3lGLHNEQUFhLENBQUNDLFNBQWQsQ0FBd0JDLElBQXhCLENBQTZCQyxDQUFDLElBQUlBLENBQUMsQ0FBQy9DLElBQUYsSUFBVUEsSUFBNUMsQ0FBUDtBQUNILENBSEQ7O0FBS0EzRCxLQUFLLENBQUMyRyxlQUFOLEdBQXdCLFVBQVNoRCxJQUFULEVBQWU7QUFDbkM5QyxrREFBTSxDQUFDQyxJQUFQLENBQVksT0FBWixFQUFxQixpRkFBckI7QUFDQSxRQUFNOEYsTUFBTSxHQUFHLEtBQUtOLFNBQUwsQ0FBZTNDLElBQWYsQ0FBZjtBQUNBLE1BQUksQ0FBQ2lELE1BQUwsRUFBYSxPQUFPLEtBQVA7QUFDYixTQUFPTCxzREFBYSxDQUFDTSxTQUFkLENBQXdCRCxNQUFNLENBQUNqRixFQUEvQixDQUFQO0FBQ0gsQ0FMRDs7QUFPQTNCLEtBQUssQ0FBQzhHLGNBQU4sR0FBdUIsVUFBU25ELElBQVQsRUFBZTtBQUNsQzlDLGtEQUFNLENBQUNDLElBQVAsQ0FBWSxPQUFaLEVBQXFCLCtFQUFyQjtBQUNBLFFBQU1pRyxLQUFLLEdBQUdDLHFEQUFZLENBQUNSLFNBQWIsQ0FBdUJDLElBQXZCLENBQTRCQyxDQUFDLElBQUlBLENBQUMsQ0FBQy9DLElBQUYsSUFBVUEsSUFBM0MsQ0FBZDtBQUNBLE1BQUksQ0FBQ29ELEtBQUwsRUFBWSxPQUFPLEtBQVA7QUFDWixTQUFPQyxxREFBWSxDQUFDSCxTQUFiLENBQXVCRSxLQUFLLENBQUNwRixFQUE3QixDQUFQO0FBQ0gsQ0FMRDs7QUFPQTNCLEtBQUssQ0FBQ2lILGdCQUFOLEdBQXlCLFVBQVNDLFVBQVQsRUFBcUJDLFFBQXJCLEVBQStCeEYsRUFBL0IsRUFBbUM7QUFDeEQsU0FBT3JCLHlEQUFRLENBQUNLLEdBQVQsQ0FBYXVHLFVBQWIsRUFBeUJDLFFBQXpCLEVBQW1DeEYsRUFBbkMsQ0FBUDtBQUNILENBRkQ7O0FBSUEzQixLQUFLLENBQUNvSCxhQUFOLEdBQXNCLFVBQVNGLFVBQVQsRUFBcUJDLFFBQXJCLEVBQStCeEYsRUFBL0IsRUFBbUM7QUFDckQsU0FBT3JCLHlEQUFRLENBQUNNLEdBQVQsQ0FBYXNHLFVBQWIsRUFBeUJDLFFBQXpCLEVBQW1DeEYsRUFBbkMsRUFBdUMsSUFBdkMsQ0FBUDtBQUNILENBRkQ7O0FBSUEzQixLQUFLLENBQUNxSCxjQUFOLEdBQXVCLFVBQVNILFVBQVQsRUFBcUJDLFFBQXJCLEVBQStCeEYsRUFBL0IsRUFBbUM7QUFDdEQsU0FBT3JCLHlEQUFRLENBQUNNLEdBQVQsQ0FBYXNHLFVBQWIsRUFBeUJDLFFBQXpCLEVBQW1DeEYsRUFBbkMsRUFBdUMsS0FBdkMsQ0FBUDtBQUNILENBRkQ7O0FBSUEzQixLQUFLLENBQUNzSCxhQUFOLEdBQXNCLFVBQVNKLFVBQVQsRUFBcUJDLFFBQXJCLEVBQStCeEYsRUFBL0IsRUFBbUM7QUFDckQsU0FBT3JCLHlEQUFRLENBQUNNLEdBQVQsQ0FBYXNHLFVBQWIsRUFBeUJDLFFBQXpCLEVBQW1DeEYsRUFBbkMsRUFBdUMsQ0FBQ3JCLHlEQUFRLENBQUNLLEdBQVQsQ0FBYXVHLFVBQWIsRUFBeUJDLFFBQXpCLEVBQW1DeEYsRUFBbkMsQ0FBeEMsQ0FBUDtBQUNILENBRkQsQyxDQUlBOzs7QUFDQTNCLEtBQUssQ0FBQ3VILFNBQU4sR0FBa0IsVUFBU2xHLEdBQVQsRUFBYztBQUM1QixTQUFPSCxrREFBUyxDQUFDcUcsU0FBVixDQUFvQmxHLEdBQXBCLENBQVA7QUFDSCxDQUZELEMsQ0FJQTs7O0FBQ0FyQixLQUFLLENBQUN3SCxTQUFOLEdBQWtCLFVBQVNuRyxHQUFULEVBQWNvRCxJQUFkLEVBQW9CO0FBQ2xDLFNBQU92RCxrREFBUyxDQUFDc0csU0FBVixDQUFvQm5HLEdBQXBCLEVBQXlCb0QsSUFBekIsQ0FBUDtBQUNILENBRkQ7O0FBSUEsTUFBTWdELFlBQVksR0FBSUMsT0FBRCxJQUFhLElBQUksTUFBTUMsUUFBTixDQUFlO0FBQ2pELE1BQUlDLE1BQUosR0FBYTtBQUFDLFdBQU9GLE9BQU8sQ0FBQ0csV0FBZjtBQUE0Qjs7QUFDMUNoQixXQUFTLENBQUNpQixRQUFELEVBQVc7QUFBQyxXQUFPSixPQUFPLENBQUNiLFNBQVIsQ0FBa0JpQixRQUFsQixDQUFQO0FBQW9DOztBQUN6REMsUUFBTSxDQUFDQyxTQUFELEVBQVk7QUFBQyxXQUFPTixPQUFPLENBQUNPLFdBQVIsQ0FBb0JELFNBQXBCLENBQVA7QUFBdUM7O0FBQzFERSxTQUFPLENBQUNGLFNBQUQsRUFBWTtBQUFDLFdBQU9OLE9BQU8sQ0FBQ1MsWUFBUixDQUFxQkgsU0FBckIsQ0FBUDtBQUF3Qzs7QUFDNURJLFFBQU0sQ0FBQ0osU0FBRCxFQUFZO0FBQUMsV0FBT04sT0FBTyxDQUFDVyxXQUFSLENBQW9CTCxTQUFwQixDQUFQO0FBQXVDOztBQUMxRE0sUUFBTSxDQUFDQyxlQUFELEVBQWtCO0FBQUMsV0FBT2IsT0FBTyxDQUFDYyxXQUFSLENBQW9CRCxlQUFwQixDQUFQO0FBQTZDOztBQUN0RTVILEtBQUcsQ0FBQ21ILFFBQUQsRUFBVztBQUFDLFdBQU9KLE9BQU8sQ0FBQ2UsUUFBUixDQUFpQlgsUUFBakIsQ0FBUDtBQUFtQzs7QUFDbERZLFFBQU0sR0FBRztBQUFDLFdBQU9oQixPQUFPLENBQUNsQixTQUFSLENBQWtCbUMsR0FBbEIsQ0FBc0JqQyxDQUFDLElBQUlnQixPQUFPLENBQUNlLFFBQVIsQ0FBaUIvQixDQUFDLENBQUMvRSxFQUFuQixDQUEzQixDQUFQO0FBQTJEOztBQVJwQixDQUFuQixFQUFsQzs7QUFXQTNCLEtBQUssQ0FBQzRJLE9BQU4sR0FBZ0JuQixZQUFZLENBQUNsQixzREFBRCxDQUE1QjtBQUNBdkcsS0FBSyxDQUFDNkksTUFBTixHQUFlcEIsWUFBWSxDQUFDVCxxREFBRCxDQUEzQjtBQUNBaEgsS0FBSyxDQUFDNEYsT0FBTixHQUFnQjtBQUNaa0QsT0FBSyxFQUFFLENBQUNDLE1BQUQsRUFBU0MsYUFBVCxFQUF3QkMsWUFBeEIsRUFBc0NoRCxRQUF0QyxFQUFnRHRELE9BQU8sR0FBRyxFQUExRCxLQUFpRTtBQUNwRSxRQUFJLE9BQU9vRyxNQUFQLEtBQW1CLFFBQXZCLEVBQWlDLE9BQU9sSSxnREFBTSxDQUFDd0UsR0FBUCxDQUFXLGVBQVgsRUFBNEIsK0RBQTVCLENBQVA7QUFDakMsUUFBSTFDLE9BQU8sQ0FBQ3VHLElBQVIsS0FBaUIsUUFBakIsSUFBNkJ2RyxPQUFPLENBQUN1RyxJQUFSLEtBQWlCLFNBQTlDLElBQTJEdkcsT0FBTyxDQUFDdUcsSUFBUixLQUFpQixPQUFoRixFQUF5RixPQUFPckksZ0RBQU0sQ0FBQ3dFLEdBQVAsQ0FBVyxlQUFYLEVBQTRCLHFEQUE1QixDQUFQO0FBQ3pGLFdBQU9PLGlEQUFPLENBQUN1RCxjQUFSLENBQXVCSixNQUF2QixFQUErQkMsYUFBL0IsRUFBOENDLFlBQTlDLEVBQTREaEQsUUFBNUQsRUFBc0V0RCxPQUF0RSxDQUFQO0FBQ0gsR0FMVztBQU1acUMsUUFBTSxFQUFFLENBQUMrRCxNQUFELEVBQVNDLGFBQVQsRUFBd0JDLFlBQXhCLEVBQXNDaEQsUUFBdEMsRUFBZ0R0RCxPQUFPLEdBQUcsRUFBMUQsS0FBaUUzQyxLQUFLLENBQUM0RixPQUFOLENBQWNrRCxLQUFkLENBQW9CQyxNQUFwQixFQUE0QkMsYUFBNUIsRUFBMkNDLFlBQTNDLEVBQXlEaEQsUUFBekQsRUFBbUVtRCxNQUFNLENBQUNDLE1BQVAsQ0FBYzFHLE9BQWQsRUFBdUI7QUFBQ3VHLFFBQUksRUFBRTtBQUFQLEdBQXZCLENBQW5FLENBTjdEO0FBT1poRSxTQUFPLEVBQUUsQ0FBQzZELE1BQUQsRUFBU0MsYUFBVCxFQUF3QkMsWUFBeEIsRUFBc0NoRCxRQUF0QyxFQUFnRHRELE9BQU8sR0FBRyxFQUExRCxLQUFpRTNDLEtBQUssQ0FBQzRGLE9BQU4sQ0FBY2tELEtBQWQsQ0FBb0JDLE1BQXBCLEVBQTRCQyxhQUE1QixFQUEyQ0MsWUFBM0MsRUFBeURoRCxRQUF6RCxFQUFtRW1ELE1BQU0sQ0FBQ0MsTUFBUCxDQUFjMUcsT0FBZCxFQUF1QjtBQUFDdUcsUUFBSSxFQUFFO0FBQVAsR0FBdkIsQ0FBbkUsQ0FQOUQ7QUFRWmpFLE9BQUssRUFBRSxDQUFDOEQsTUFBRCxFQUFTQyxhQUFULEVBQXdCQyxZQUF4QixFQUFzQ2hELFFBQXRDLEVBQWdEdEQsT0FBTyxHQUFHLEVBQTFELEtBQWlFM0MsS0FBSyxDQUFDNEYsT0FBTixDQUFja0QsS0FBZCxDQUFvQkMsTUFBcEIsRUFBNEJDLGFBQTVCLEVBQTJDQyxZQUEzQyxFQUF5RGhELFFBQXpELEVBQW1FbUQsTUFBTSxDQUFDQyxNQUFQLENBQWMxRyxPQUFkLEVBQXVCO0FBQUN1RyxRQUFJLEVBQUU7QUFBUCxHQUF2QixDQUFuRSxDQVI1RDtBQVNaSSxZQUFVLEVBQUdQLE1BQUQsSUFBWTtBQUNwQixRQUFJLE9BQU9BLE1BQVAsS0FBbUIsUUFBdkIsRUFBaUMsT0FBT2xJLGdEQUFNLENBQUN3RSxHQUFQLENBQVcsZUFBWCxFQUE0QixvRUFBNUIsQ0FBUDtBQUNqQyxXQUFPTyxpREFBTyxDQUFDMEQsVUFBUixDQUFtQlAsTUFBbkIsQ0FBUDtBQUNIO0FBWlcsQ0FBaEI7QUFlQUssTUFBTSxDQUFDRyxNQUFQLENBQWN2SixLQUFkO0FBQ0FvSixNQUFNLENBQUNHLE1BQVAsQ0FBY3ZKLEtBQUssQ0FBQzRJLE9BQXBCO0FBQ0FRLE1BQU0sQ0FBQ0csTUFBUCxDQUFjdkosS0FBSyxDQUFDNkksTUFBcEI7QUFDQU8sTUFBTSxDQUFDRyxNQUFQLENBQWN2SixLQUFLLENBQUM0RixPQUFwQjtBQUVlNUYsb0VBQWYiLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9wbHVnaW5hcGkuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbmZpZ30gZnJvbSBcImRhdGFcIjtcclxuaW1wb3J0IFV0aWxpdGllcyBmcm9tIFwiLi91dGlsaXRpZXNcIjtcclxuaW1wb3J0IFdlYnBhY2tNb2R1bGVzIGZyb20gXCIuL3dlYnBhY2ttb2R1bGVzXCI7XHJcbmltcG9ydCBEaXNjb3JkTW9kdWxlcyBmcm9tIFwiLi9kaXNjb3JkbW9kdWxlc1wiO1xyXG5pbXBvcnQgRGF0YVN0b3JlIGZyb20gXCIuL2RhdGFzdG9yZVwiO1xyXG5pbXBvcnQgRE9NTWFuYWdlciBmcm9tIFwiLi9kb21tYW5hZ2VyXCI7XHJcbmltcG9ydCBUb2FzdHMgZnJvbSBcIi4uL3VpL3RvYXN0c1wiO1xyXG5pbXBvcnQgTW9kYWxzIGZyb20gXCIuLi91aS9tb2RhbHNcIjtcclxuaW1wb3J0IFBsdWdpbk1hbmFnZXIgZnJvbSBcIi4vcGx1Z2lubWFuYWdlclwiO1xyXG5pbXBvcnQgVGhlbWVNYW5hZ2VyIGZyb20gXCIuL3RoZW1lbWFuYWdlclwiO1xyXG5pbXBvcnQgU2V0dGluZ3MgZnJvbSBcIi4vc2V0dGluZ3NtYW5hZ2VyXCI7XHJcbmltcG9ydCBMb2dnZXIgZnJvbSBcIi4vbG9nZ2VyXCI7XHJcbmltcG9ydCBQYXRjaGVyIGZyb20gXCIuL3BhdGNoZXJcIjtcclxuaW1wb3J0IEVtb3RlcyBmcm9tIFwiLi4vYnVpbHRpbnMvZW1vdGVzL2Vtb3Rlc1wiO1xyXG5cclxuY29uc3QgQmRBcGkgPSB7XHJcbiAgICBnZXQgUmVhY3QoKSB7IHJldHVybiBEaXNjb3JkTW9kdWxlcy5SZWFjdDsgfSxcclxuICAgIGdldCBSZWFjdERPTSgpIHsgcmV0dXJuIERpc2NvcmRNb2R1bGVzLlJlYWN0RE9NOyB9LFxyXG4gICAgZ2V0IFdpbmRvd0NvbmZpZ0ZpbGUoKSB7cmV0dXJuIFwiXCI7fSxcclxuICAgIGdldCBzZXR0aW5ncygpIHtyZXR1cm4gU2V0dGluZ3MuY29sbGVjdGlvbnM7fSxcclxuICAgIGdldCBlbW90ZXMoKSB7cmV0dXJuIG5ldyBQcm94eShFbW90ZXMuRW1vdGVzLCB7XHJcbiAgICAgICAgZ2V0KCkgeyByZXR1cm4gRW1vdGVzLkVtb3Rlc30sXHJcbiAgICAgICAgc2V0KCkgeyBMb2dnZXIud2FybihcIkVtb3Rlc1wiLCBcIkFkZG9uIHBvbGljeSBmb3IgcGx1Z2lucyAjNSBodHRwczovL2dpdGh1Yi5jb20vcmF1ZW56aS9CZXR0ZXJEaXNjb3JkQXBwL3dpa2kvQWRkb24tUG9saWNpZXMjcGx1Z2luc1wiKTt9XHJcbiAgICB9KTt9LFxyXG4gICAgZ2V0IHZlcnNpb24oKSB7cmV0dXJuIENvbmZpZy52ZXJzaW9uO31cclxufTtcclxuXHJcbkJkQXBpLmdldEFsbFdpbmRvd1ByZWZlcmVuY2VzID0gZnVuY3Rpb24oKSB7XHJcbiAgICByZXR1cm4gRGF0YVN0b3JlLmdldERhdGEoXCJ3aW5kb3dwcmVmc1wiKSB8fCB7fTtcclxufTtcclxuXHJcbkJkQXBpLmdldFdpbmRvd1ByZWZlcmVuY2UgPSBmdW5jdGlvbihrZXkpIHtcclxuICAgIHJldHVybiB0aGlzLmdldEFsbFdpbmRvd1ByZWZlcmVuY2VzKClba2V5XTtcclxufTtcclxuXHJcbkJkQXBpLnNldFdpbmRvd1ByZWZlcmVuY2UgPSBmdW5jdGlvbihrZXksIHZhbHVlKSB7XHJcbiAgICBjb25zdCBwcmVmcyA9IHRoaXMuZ2V0QWxsV2luZG93UHJlZmVyZW5jZXMoKTtcclxuICAgIHByZWZzW2tleV0gPSB2YWx1ZTtcclxuICAgIHJldHVybiBEYXRhU3RvcmUuc2V0RGF0YShcIndpbmRvd3ByZWZzXCIsIHByZWZzKTtcclxufTtcclxuXHJcbi8vSW5qZWN0IENTUyB0byBkb2N1bWVudCBoZWFkXHJcbi8vaWQgPSBpZCBvZiBlbGVtZW50XHJcbi8vY3NzID0gY3VzdG9tIGNzc1xyXG5CZEFwaS5pbmplY3RDU1MgPSBmdW5jdGlvbiAoaWQsIGNzcykge1xyXG4gICAgRE9NTWFuYWdlci5pbmplY3RTdHlsZShpZCwgY3NzKTtcclxufTtcclxuXHJcbi8vQ2xlYXIgY3NzL3JlbW92ZSBhbnkgZWxlbWVudFxyXG4vL2lkID0gaWQgb2YgZWxlbWVudFxyXG5CZEFwaS5jbGVhckNTUyA9IGZ1bmN0aW9uIChpZCkge1xyXG4gICAgRE9NTWFuYWdlci5yZW1vdmVTdHlsZShpZCk7XHJcbn07XHJcblxyXG4vL0luamVjdCBDU1MgdG8gZG9jdW1lbnQgaGVhZFxyXG4vL2lkID0gaWQgb2YgZWxlbWVudFxyXG4vL2NzcyA9IGN1c3RvbSBjc3NcclxuQmRBcGkubGlua0pTID0gZnVuY3Rpb24gKGlkLCB1cmwpIHtcclxuICAgIHJldHVybiBET01NYW5hZ2VyLmluamVjdFNjcmlwdChpZCwgdXJsKTtcclxufTtcclxuXHJcbi8vQ2xlYXIgY3NzL3JlbW92ZSBhbnkgZWxlbWVudFxyXG4vL2lkID0gaWQgb2YgZWxlbWVudFxyXG5CZEFwaS51bmxpbmtKUyA9IGZ1bmN0aW9uIChpZCkge1xyXG4gICAgRE9NTWFuYWdlci5yZW1vdmVTY3JpcHQoaWQpO1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIFNob3dzIGEgZ2VuZXJpYyBidXQgdmVyeSBjdXN0b21pemFibGUgbW9kYWwuXHJcbiAqIEBwYXJhbSB7c3RyaW5nfSB0aXRsZSAtIHRpdGxlIG9mIHRoZSBtb2RhbFxyXG4gKiBAcGFyYW0ge3N0cmluZ30gY29udGVudCAtIGEgc3RyaW5nIG9mIHRleHQgdG8gZGlzcGxheSBpbiB0aGUgbW9kYWxcclxuICovXHJcbkJkQXBpLmFsZXJ0ID0gZnVuY3Rpb24gKHRpdGxlLCBjb250ZW50KSB7XHJcbiAgICBNb2RhbHMuYWxlcnQodGl0bGUsIGNvbnRlbnQpO1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIFNob3dzIGEgZ2VuZXJpYyBidXQgdmVyeSBjdXN0b21pemFibGUgY29uZmlybWF0aW9uIG1vZGFsIHdpdGggb3B0aW9uYWwgY29uZmlybSBhbmQgY2FuY2VsIGNhbGxiYWNrcy5cclxuICogQHBhcmFtIHtzdHJpbmd9IHRpdGxlIC0gdGl0bGUgb2YgdGhlIG1vZGFsXHJcbiAqIEBwYXJhbSB7KHN0cmluZ3xSZWFjdEVsZW1lbnR8QXJyYXk8c3RyaW5nfFJlYWN0RWxlbWVudD4pfSBjaGlsZHJlbiAtIGEgc2luZ2xlIG9yIG1peGVkIGFycmF5IG9mIHJlYWN0IGVsZW1lbnRzIGFuZCBzdHJpbmdzLiBFdmVyeXRoaW5nIGlzIHdyYXBwZWQgaW4gRGlzY29yZCdzIGBUZXh0RWxlbWVudGAgY29tcG9uZW50IHNvIHN0cmluZ3Mgd2lsbCBzaG93IGFuZCByZW5kZXIgcHJvcGVybHkuXHJcbiAqIEBwYXJhbSB7b2JqZWN0fSBbb3B0aW9uc10gLSBvcHRpb25zIHRvIG1vZGlmeSB0aGUgbW9kYWxcclxuICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5kYW5nZXI9ZmFsc2VdIC0gd2hldGhlciB0aGUgbWFpbiBidXR0b24gc2hvdWxkIGJlIHJlZCBvciBub3RcclxuICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLmNvbmZpcm1UZXh0PU9rYXldIC0gdGV4dCBmb3IgdGhlIGNvbmZpcm1hdGlvbi9zdWJtaXQgYnV0dG9uXHJcbiAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5jYW5jZWxUZXh0PUNhbmNlbF0gLSB0ZXh0IGZvciB0aGUgY2FuY2VsIGJ1dHRvblxyXG4gKiBAcGFyYW0ge2NhbGxhYmxlfSBbb3B0aW9ucy5vbkNvbmZpcm09Tk9PUF0gLSBjYWxsYmFjayB0byBvY2N1ciB3aGVuIGNsaWNraW5nIHRoZSBzdWJtaXQgYnV0dG9uXHJcbiAqIEBwYXJhbSB7Y2FsbGFibGV9IFtvcHRpb25zLm9uQ2FuY2VsPU5PT1BdIC0gY2FsbGJhY2sgdG8gb2NjdXIgd2hlbiBjbGlja2luZyB0aGUgY2FuY2VsIGJ1dHRvblxyXG4gKi9cclxuQmRBcGkuc2hvd0NvbmZpcm1hdGlvbk1vZGFsID0gZnVuY3Rpb24gKHRpdGxlLCBjb250ZW50LCBvcHRpb25zID0ge30pIHtcclxuICAgIHJldHVybiBNb2RhbHMuc2hvd0NvbmZpcm1hdGlvbk1vZGFsKHRpdGxlLCBjb250ZW50LCBvcHRpb25zKTtcclxufTtcclxuXHJcbi8qKlxyXG4gKiBUaGlzIHNob3dzIGEgdG9hc3Qgc2ltaWxhciB0byBhbmRyb2lkIHRvd2FyZHMgdGhlIGJvdHRvbSBvZiB0aGUgc2NyZWVuLlxyXG4gKlxyXG4gKiBAcGFyYW0ge3N0cmluZ30gY29udGVudCBUaGUgc3RyaW5nIHRvIHNob3cgaW4gdGhlIHRvYXN0LlxyXG4gKiBAcGFyYW0ge29iamVjdH0gb3B0aW9ucyBPcHRpb25zIG9iamVjdC4gT3B0aW9uYWwgcGFyYW1ldGVyLlxyXG4gKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMudHlwZT1cIlwiXSBDaGFuZ2VzIHRoZSB0eXBlIG9mIHRoZSB0b2FzdCBzdHlsaXN0aWNhbGx5IGFuZCBzZW1hbnRpY2FsbHkuIENob2ljZXM6IFwiXCIsIFwiaW5mb1wiLCBcInN1Y2Nlc3NcIiwgXCJkYW5nZXJcIi9cImVycm9yXCIsIFwid2FybmluZ1wiL1wid2FyblwiLiBEZWZhdWx0OiBcIlwiXHJcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMuaWNvbj10cnVlXSBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGljb24gc2hvdWxkIHNob3cgY29ycmVzcG9uZGluZyB0byB0aGUgdHlwZS4gQSB0b2FzdCB3aXRob3V0IHR5cGUgd2lsbCBhbHdheXMgaGF2ZSBubyBpY29uLiBEZWZhdWx0OiB0cnVlXHJcbiAqIEBwYXJhbSB7bnVtYmVyfSBbb3B0aW9ucy50aW1lb3V0PTMwMDBdIEFkanVzdHMgdGhlIHRpbWUgKGluIG1zKSB0aGUgdG9hc3Qgc2hvdWxkIGJlIHNob3duIGZvciBiZWZvcmUgZGlzYXBwZWFyaW5nIGF1dG9tYXRpY2FsbHkuIERlZmF1bHQ6IDMwMDBcclxuICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5mb3JjZVNob3c9ZmFsc2VdIFdoZXRoZXIgdG8gZm9yY2Ugc2hvd2luZyB0aGUgdG9hc3QgYW5kIGlnbm9yZSB0aGUgYmQgc2V0dGluZ1xyXG4gKi9cclxuQmRBcGkuc2hvd1RvYXN0ID0gZnVuY3Rpb24oY29udGVudCwgb3B0aW9ucyA9IHt9KSB7XHJcbiAgICBUb2FzdHMuc2hvdyhjb250ZW50LCBvcHRpb25zKTtcclxufTtcclxuXHJcbi8vIEZpbmRzIG1vZHVsZVxyXG5CZEFwaS5maW5kTW9kdWxlID0gZnVuY3Rpb24oZmlsdGVyKSB7XHJcbiAgICByZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0TW9kdWxlKGZpbHRlcik7XHJcbn07XHJcblxyXG4vLyBGaW5kcyBtb2R1bGVcclxuQmRBcGkuZmluZEFsbE1vZHVsZXMgPSBmdW5jdGlvbihmaWx0ZXIpIHtcclxuICAgIHJldHVybiBXZWJwYWNrTW9kdWxlcy5nZXRNb2R1bGUoZmlsdGVyLCBmYWxzZSk7XHJcbn07XHJcblxyXG4vLyBGaW5kcyBtb2R1bGVcclxuQmRBcGkuZmluZE1vZHVsZUJ5UHJvcHMgPSBmdW5jdGlvbiguLi5wcm9wcykge1xyXG4gICAgcmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoLi4ucHJvcHMpO1xyXG59O1xyXG5cclxuQmRBcGkuZmluZE1vZHVsZUJ5UHJvdG90eXBlcyA9IGZ1bmN0aW9uKC4uLnByb3Rvcykge1xyXG4gICAgcmV0dXJuIFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvdG90eXBlcyguLi5wcm90b3MpO1xyXG59O1xyXG5cclxuQmRBcGkuZmluZE1vZHVsZUJ5RGlzcGxheU5hbWUgPSBmdW5jdGlvbihuYW1lKSB7XHJcbiAgICByZXR1cm4gV2VicGFja01vZHVsZXMuZ2V0QnlEaXNwbGF5TmFtZShuYW1lKTtcclxufTtcclxuXHJcbi8vIEdldHMgcmVhY3QgaW5zdGFuY2VcclxuQmRBcGkuZ2V0SW50ZXJuYWxJbnN0YW5jZSA9IGZ1bmN0aW9uKG5vZGUpIHtcclxuICAgIGlmICghKG5vZGUgaW5zdGFuY2VvZiB3aW5kb3cualF1ZXJ5KSAmJiAhKG5vZGUgaW5zdGFuY2VvZiBFbGVtZW50KSkgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgIGlmIChub2RlIGluc3RhbmNlb2YgalF1ZXJ5KSBub2RlID0gbm9kZVswXTtcclxuICAgIHJldHVybiBVdGlsaXRpZXMuZ2V0UmVhY3RJbnN0YW5jZShub2RlKTtcclxufTtcclxuXHJcbi8vIEdldHMgZGF0YVxyXG5CZEFwaS5sb2FkRGF0YSA9IGZ1bmN0aW9uKHBsdWdpbk5hbWUsIGtleSkge1xyXG4gICAgcmV0dXJuIERhdGFTdG9yZS5nZXRQbHVnaW5EYXRhKHBsdWdpbk5hbWUsIGtleSk7XHJcbn07XHJcblxyXG5CZEFwaS5nZXREYXRhID0gQmRBcGkubG9hZERhdGE7XHJcblxyXG4vLyBTZXRzIGRhdGFcclxuQmRBcGkuc2F2ZURhdGEgPSBmdW5jdGlvbihwbHVnaW5OYW1lLCBrZXksIGRhdGEpIHtcclxuICAgIHJldHVybiBEYXRhU3RvcmUuc2V0UGx1Z2luRGF0YShwbHVnaW5OYW1lLCBrZXksIGRhdGEpO1xyXG59O1xyXG5cclxuQmRBcGkuc2V0RGF0YSA9IEJkQXBpLnNhdmVEYXRhO1xyXG5cclxuLy8gRGVsZXRlcyBkYXRhXHJcbkJkQXBpLmRlbGV0ZURhdGEgPSBmdW5jdGlvbihwbHVnaW5OYW1lLCBrZXkpIHtcclxuICAgIHJldHVybiBEYXRhU3RvcmUuZGVsZXRlUGx1Z2luRGF0YShwbHVnaW5OYW1lLCBrZXkpO1xyXG59O1xyXG5cclxuLy8gUGF0Y2hlcyBvdGhlciBmdW5jdGlvbnNcclxuLy8gQmRBcGkubW9ua2V5UGF0Y2ggPSBmdW5jdGlvbih3aGF0LCBtZXRob2ROYW1lLCBvcHRpb25zKSB7XHJcbi8vICAgICBjb25zdCB7YmVmb3JlLCBhZnRlciwgaW5zdGVhZCwgb25jZSA9IGZhbHNlLCBzaWxlbnQgPSBmYWxzZSwgZm9yY2UgPSBmYWxzZX0gPSBvcHRpb25zO1xyXG4vLyAgICAgY29uc3QgZGlzcGxheU5hbWUgPSBvcHRpb25zLmRpc3BsYXlOYW1lIHx8IHdoYXQuZGlzcGxheU5hbWUgfHwgd2hhdC5uYW1lIHx8IHdoYXQuY29uc3RydWN0b3IuZGlzcGxheU5hbWUgfHwgd2hhdC5jb25zdHJ1Y3Rvci5uYW1lO1xyXG4vLyAgICAgaWYgKCFzaWxlbnQpIGNvbnNvbGUubG9nKFwicGF0Y2hcIiwgbWV0aG9kTmFtZSwgXCJvZlwiLCBkaXNwbGF5TmFtZSk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tY29uc29sZVxyXG4vLyAgICAgaWYgKCF3aGF0W21ldGhvZE5hbWVdKSB7XHJcbi8vICAgICAgICAgaWYgKGZvcmNlKSB3aGF0W21ldGhvZE5hbWVdID0gZnVuY3Rpb24oKSB7fTtcclxuLy8gICAgICAgICBlbHNlIHJldHVybiBjb25zb2xlLmVycm9yKG1ldGhvZE5hbWUsIFwiZG9lcyBub3QgZXhpc3QgZm9yXCIsIGRpc3BsYXlOYW1lKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1jb25zb2xlXHJcbi8vICAgICB9XHJcbi8vICAgICBjb25zdCBvcmlnTWV0aG9kID0gd2hhdFttZXRob2ROYW1lXTtcclxuLy8gICAgIGNvbnN0IGNhbmNlbCA9ICgpID0+IHtcclxuLy8gICAgICAgICBpZiAoIXNpbGVudCkgY29uc29sZS5sb2coXCJ1bnBhdGNoXCIsIG1ldGhvZE5hbWUsIFwib2ZcIiwgZGlzcGxheU5hbWUpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWNvbnNvbGVcclxuLy8gICAgICAgICB3aGF0W21ldGhvZE5hbWVdID0gb3JpZ01ldGhvZDtcclxuLy8gICAgIH07XHJcbi8vICAgICB3aGF0W21ldGhvZE5hbWVdID0gZnVuY3Rpb24oKSB7XHJcbi8vICAgICAgICAgY29uc3QgZGF0YSA9IHtcclxuLy8gICAgICAgICAgICAgdGhpc09iamVjdDogdGhpcyxcclxuLy8gICAgICAgICAgICAgbWV0aG9kQXJndW1lbnRzOiBhcmd1bWVudHMsXHJcbi8vICAgICAgICAgICAgIGNhbmNlbFBhdGNoOiBjYW5jZWwsXHJcbi8vICAgICAgICAgICAgIG9yaWdpbmFsTWV0aG9kOiBvcmlnTWV0aG9kLFxyXG4vLyAgICAgICAgICAgICBjYWxsT3JpZ2luYWxNZXRob2Q6ICgpID0+IGRhdGEucmV0dXJuVmFsdWUgPSBkYXRhLm9yaWdpbmFsTWV0aG9kLmFwcGx5KGRhdGEudGhpc09iamVjdCwgZGF0YS5tZXRob2RBcmd1bWVudHMpXHJcbi8vICAgICAgICAgfTtcclxuLy8gICAgICAgICBpZiAoaW5zdGVhZCkge1xyXG4vLyAgICAgICAgICAgICBjb25zdCB0ZW1wUmV0ID0gVXRpbGl0aWVzLnN1cHByZXNzRXJyb3JzKGluc3RlYWQsIFwiYGluc3RlYWRgIGNhbGxiYWNrIG9mIFwiICsgd2hhdFttZXRob2ROYW1lXS5kaXNwbGF5TmFtZSkoZGF0YSk7XHJcbi8vICAgICAgICAgICAgIGlmICh0ZW1wUmV0ICE9PSB1bmRlZmluZWQpIGRhdGEucmV0dXJuVmFsdWUgPSB0ZW1wUmV0O1xyXG4vLyAgICAgICAgIH1cclxuLy8gICAgICAgICBlbHNlIHtcclxuLy8gICAgICAgICAgICAgaWYgKGJlZm9yZSkgVXRpbGl0aWVzLnN1cHByZXNzRXJyb3JzKGJlZm9yZSwgXCJgYmVmb3JlYCBjYWxsYmFjayBvZiBcIiArIHdoYXRbbWV0aG9kTmFtZV0uZGlzcGxheU5hbWUpKGRhdGEpO1xyXG4vLyAgICAgICAgICAgICBkYXRhLmNhbGxPcmlnaW5hbE1ldGhvZCgpO1xyXG4vLyAgICAgICAgICAgICBpZiAoYWZ0ZXIpIFV0aWxpdGllcy5zdXBwcmVzc0Vycm9ycyhhZnRlciwgXCJgYWZ0ZXJgIGNhbGxiYWNrIG9mIFwiICsgd2hhdFttZXRob2ROYW1lXS5kaXNwbGF5TmFtZSkoZGF0YSk7XHJcbi8vICAgICAgICAgfVxyXG4vLyAgICAgICAgIGlmIChvbmNlKSBjYW5jZWwoKTtcclxuLy8gICAgICAgICByZXR1cm4gZGF0YS5yZXR1cm5WYWx1ZTtcclxuLy8gICAgIH07XHJcbi8vICAgICB3aGF0W21ldGhvZE5hbWVdLl9fbW9ua2V5UGF0Y2hlZCA9IHRydWU7XHJcbi8vICAgICBpZiAoIXdoYXRbbWV0aG9kTmFtZV0uX19vcmlnaW5hbE1ldGhvZCkgd2hhdFttZXRob2ROYW1lXS5fX29yaWdpbmFsTWV0aG9kID0gb3JpZ01ldGhvZDtcclxuLy8gICAgIHdoYXRbbWV0aG9kTmFtZV0uZGlzcGxheU5hbWUgPSBcInBhdGNoZWQgXCIgKyAod2hhdFttZXRob2ROYW1lXS5kaXNwbGF5TmFtZSB8fCBtZXRob2ROYW1lKTtcclxuLy8gICAgIHJldHVybiBjYW5jZWw7XHJcbi8vIH07XHJcbkJkQXBpLm1vbmtleVBhdGNoID0gZnVuY3Rpb24od2hhdCwgbWV0aG9kTmFtZSwgb3B0aW9ucykge1xyXG4gICAgY29uc3Qge2JlZm9yZSwgYWZ0ZXIsIGluc3RlYWQsIG9uY2UgPSBmYWxzZX0gPSBvcHRpb25zO1xyXG4gICAgY29uc3QgcGF0Y2hUeXBlID0gYmVmb3JlID8gXCJiZWZvcmVcIiA6IGFmdGVyID8gXCJhZnRlclwiIDogaW5zdGVhZCA/IFwiaW5zdGVhZFwiIDogXCJcIjtcclxuICAgIGlmICghcGF0Y2hUeXBlKSByZXR1cm4gTG9nZ2VyLmVycihcIkJkQXBpXCIsIFwiTXVzdCBwcm92aWRlIG9uZSBvZjogYWZ0ZXIsIGJlZm9yZSwgaW5zdGVhZFwiKTtcclxuICAgIGNvbnN0IG9yaWdpbmFsTWV0aG9kID0gd2hhdFttZXRob2ROYW1lXTtcclxuICAgIGNvbnN0IGRhdGEgPSB7XHJcbiAgICAgICAgb3JpZ2luYWxNZXRob2Q6IG9yaWdpbmFsTWV0aG9kLFxyXG4gICAgICAgIGNhbGxPcmlnaW5hbE1ldGhvZDogKCkgPT4gZGF0YS5vcmlnaW5hbE1ldGhvZC5hcHBseShkYXRhLnRoaXNPYmplY3QsIGRhdGEubWV0aG9kQXJndW1lbnRzKVxyXG4gICAgfTtcclxuICAgIGRhdGEuY2FuY2VsUGF0Y2ggPSBQYXRjaGVyW3BhdGNoVHlwZV0oXCJCZEFwaVwiLCB3aGF0LCBtZXRob2ROYW1lLCAodGhpc09iamVjdCwgYXJncywgcmV0dXJuVmFsdWUpID0+IHtcclxuICAgICAgICBkYXRhLnRoaXNPYmplY3QgPSB0aGlzT2JqZWN0O1xyXG4gICAgICAgIGRhdGEubWV0aG9kQXJndW1lbnRzID0gYXJncztcclxuICAgICAgICBkYXRhLnJldHVyblZhbHVlID0gcmV0dXJuVmFsdWU7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgUmVmbGVjdC5hcHBseShvcHRpb25zW3BhdGNoVHlwZV0sIG51bGwsIFtkYXRhXSk7XHJcbiAgICAgICAgICAgIGlmIChvbmNlKSBkYXRhLmNhbmNlbFBhdGNoKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChlcnIpIHtcclxuICAgICAgICAgICAgLy8gTG9nZ2VyLmVycihcIm1vbmtleVBhdGNoXCIsIGBFcnJvciBpbiB0aGUgJHtwYXRjaFR5cGV9IG9mICR7bWV0aG9kTmFtZX1gKTtcclxuICAgICAgICB9XHJcbiAgICB9KTtcclxufTtcclxuLy8gRXZlbnQgd2hlbiBlbGVtZW50IGlzIHJlbW92ZWRcclxuQmRBcGkub25SZW1vdmVkID0gZnVuY3Rpb24obm9kZSwgY2FsbGJhY2spIHtcclxuICAgIHJldHVybiBVdGlsaXRpZXMub25SZW1vdmVkKG5vZGUsIGNhbGxiYWNrKTtcclxufTtcclxuXHJcbi8vIFdyYXBzIGZ1bmN0aW9uIGluIHRyeS4uY2F0Y2hcclxuQmRBcGkuc3VwcHJlc3NFcnJvcnMgPSBmdW5jdGlvbihtZXRob2QsIG1lc3NhZ2UpIHtcclxuICAgIHJldHVybiBVdGlsaXRpZXMuc3VwcHJlc3NFcnJvcnMobWV0aG9kLCBtZXNzYWdlKTtcclxufTtcclxuXHJcbi8vIFRlc3RzIGZvciB2YWxpZCBKU09OXHJcbkJkQXBpLnRlc3RKU09OID0gZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgcmV0dXJuIFV0aWxpdGllcy50ZXN0SlNPTihkYXRhKTtcclxufTtcclxuXHJcbi8vR2V0IGFub3RoZXIgcGx1Z2luXHJcbi8vbmFtZSA9IG5hbWUgb2YgcGx1Z2luXHJcbkJkQXBpLmdldFBsdWdpbiA9IGZ1bmN0aW9uIChuYW1lKSB7XHJcbiAgICBMb2dnZXIud2FybihcIkJkQXBpXCIsIFwiZ2V0UGx1Z2luIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSBtYWtlIHVzZSBvZiB0aGUgYWRkb24gYXBpIChCZEFwaS5QbHVnaW5zKVwiKTtcclxuICAgIHJldHVybiBQbHVnaW5NYW5hZ2VyLmFkZG9uTGlzdC5maW5kKGEgPT4gYS5uYW1lID09IG5hbWUpO1xyXG59O1xyXG5cclxuQmRBcGkuaXNQbHVnaW5FbmFibGVkID0gZnVuY3Rpb24obmFtZSkge1xyXG4gICAgTG9nZ2VyLndhcm4oXCJCZEFwaVwiLCBcImlzUGx1Z2luRW5hYmxlZCBpcyBkZXByZWNhdGVkLiBQbGVhc2UgbWFrZSB1c2Ugb2YgdGhlIGFkZG9uIGFwaSAoQmRBcGkuUGx1Z2lucylcIik7XHJcbiAgICBjb25zdCBwbHVnaW4gPSB0aGlzLmdldFBsdWdpbihuYW1lKTtcclxuICAgIGlmICghcGx1Z2luKSByZXR1cm4gZmFsc2U7XHJcbiAgICByZXR1cm4gUGx1Z2luTWFuYWdlci5pc0VuYWJsZWQocGx1Z2luLmlkKTtcclxufTtcclxuXHJcbkJkQXBpLmlzVGhlbWVFbmFibGVkID0gZnVuY3Rpb24obmFtZSkge1xyXG4gICAgTG9nZ2VyLndhcm4oXCJCZEFwaVwiLCBcImlzVGhlbWVFbmFibGVkIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSBtYWtlIHVzZSBvZiB0aGUgYWRkb24gYXBpIChCZEFwaS5UaGVtZXMpXCIpO1xyXG4gICAgY29uc3QgdGhlbWUgPSBUaGVtZU1hbmFnZXIuYWRkb25MaXN0LmZpbmQoYSA9PiBhLm5hbWUgPT0gbmFtZSk7XHJcbiAgICBpZiAoIXRoZW1lKSByZXR1cm4gZmFsc2U7XHJcbiAgICByZXR1cm4gVGhlbWVNYW5hZ2VyLmlzRW5hYmxlZCh0aGVtZS5pZCk7XHJcbn07XHJcblxyXG5CZEFwaS5pc1NldHRpbmdFbmFibGVkID0gZnVuY3Rpb24oY29sbGVjdGlvbiwgY2F0ZWdvcnksIGlkKSB7XHJcbiAgICByZXR1cm4gU2V0dGluZ3MuZ2V0KGNvbGxlY3Rpb24sIGNhdGVnb3J5LCBpZCk7XHJcbn07XHJcblxyXG5CZEFwaS5lbmFibGVTZXR0aW5nID0gZnVuY3Rpb24oY29sbGVjdGlvbiwgY2F0ZWdvcnksIGlkKSB7XHJcbiAgICByZXR1cm4gU2V0dGluZ3Muc2V0KGNvbGxlY3Rpb24sIGNhdGVnb3J5LCBpZCwgdHJ1ZSk7XHJcbn07XHJcblxyXG5CZEFwaS5kaXNhYmxlU2V0dGluZyA9IGZ1bmN0aW9uKGNvbGxlY3Rpb24sIGNhdGVnb3J5LCBpZCkge1xyXG4gICAgcmV0dXJuIFNldHRpbmdzLnNldChjb2xsZWN0aW9uLCBjYXRlZ29yeSwgaWQsIGZhbHNlKTtcclxufTtcclxuXHJcbkJkQXBpLnRvZ2dsZVNldHRpbmcgPSBmdW5jdGlvbihjb2xsZWN0aW9uLCBjYXRlZ29yeSwgaWQpIHtcclxuICAgIHJldHVybiBTZXR0aW5ncy5zZXQoY29sbGVjdGlvbiwgY2F0ZWdvcnksIGlkLCAhU2V0dGluZ3MuZ2V0KGNvbGxlY3Rpb24sIGNhdGVnb3J5LCBpZCkpO1xyXG59O1xyXG5cclxuLy8gR2V0cyBkYXRhXHJcbkJkQXBpLmdldEJERGF0YSA9IGZ1bmN0aW9uKGtleSkge1xyXG4gICAgcmV0dXJuIERhdGFTdG9yZS5nZXRCRERhdGEoa2V5KTtcclxufTtcclxuXHJcbi8vIFNldHMgZGF0YVxyXG5CZEFwaS5zZXRCRERhdGEgPSBmdW5jdGlvbihrZXksIGRhdGEpIHtcclxuICAgIHJldHVybiBEYXRhU3RvcmUuc2V0QkREYXRhKGtleSwgZGF0YSk7XHJcbn07XHJcblxyXG5jb25zdCBtYWtlQWRkb25BUEkgPSAobWFuYWdlcikgPT4gbmV3IGNsYXNzIEFkZG9uQVBJIHtcclxuICAgIGdldCBmb2xkZXIoKSB7cmV0dXJuIG1hbmFnZXIuYWRkb25Gb2xkZXI7fVxyXG4gICAgaXNFbmFibGVkKGlkT3JGaWxlKSB7cmV0dXJuIG1hbmFnZXIuaXNFbmFibGVkKGlkT3JGaWxlKTt9XHJcbiAgICBlbmFibGUoaWRPckFkZG9uKSB7cmV0dXJuIG1hbmFnZXIuZW5hYmxlQWRkb24oaWRPckFkZG9uKTt9XHJcbiAgICBkaXNhYmxlKGlkT3JBZGRvbikge3JldHVybiBtYW5hZ2VyLmRpc2FibGVBZGRvbihpZE9yQWRkb24pO31cclxuICAgIHRvZ2dsZShpZE9yQWRkb24pIHtyZXR1cm4gbWFuYWdlci50b2dnbGVBZGRvbihpZE9yQWRkb24pO31cclxuICAgIHJlbG9hZChpZE9yRmlsZU9yQWRkb24pIHtyZXR1cm4gbWFuYWdlci5yZWxvYWRBZGRvbihpZE9yRmlsZU9yQWRkb24pO31cclxuICAgIGdldChpZE9yRmlsZSkge3JldHVybiBtYW5hZ2VyLmdldEFkZG9uKGlkT3JGaWxlKTt9XHJcbiAgICBnZXRBbGwoKSB7cmV0dXJuIG1hbmFnZXIuYWRkb25MaXN0Lm1hcChhID0+IG1hbmFnZXIuZ2V0QWRkb24oYS5pZCkpO31cclxufTtcclxuXHJcbkJkQXBpLlBsdWdpbnMgPSBtYWtlQWRkb25BUEkoUGx1Z2luTWFuYWdlcik7XHJcbkJkQXBpLlRoZW1lcyA9IG1ha2VBZGRvbkFQSShUaGVtZU1hbmFnZXIpO1xyXG5CZEFwaS5QYXRjaGVyID0ge1xyXG4gICAgcGF0Y2g6IChjYWxsZXIsIG1vZHVsZVRvUGF0Y2gsIGZ1bmN0aW9uTmFtZSwgY2FsbGJhY2ssIG9wdGlvbnMgPSB7fSkgPT4ge1xyXG4gICAgICAgIGlmICh0eXBlb2YoY2FsbGVyKSAhPT0gXCJzdHJpbmdcIikgcmV0dXJuIExvZ2dlci5lcnIoXCJCZEFwaS5QYXRjaGVyXCIsIFwiUGFyYW1ldGVyIDAgb2YgcGF0Y2ggbXVzdCBiZSBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGNhbGxlclwiKTtcclxuICAgICAgICBpZiAob3B0aW9ucy50eXBlICE9PSBcImJlZm9yZVwiICYmIG9wdGlvbnMudHlwZSAhPT0gXCJpbnN0ZWFkXCIgJiYgb3B0aW9ucy50eXBlICE9PSBcImFmdGVyXCIpIHJldHVybiBMb2dnZXIuZXJyKFwiQmRBcGkuUGF0Y2hlclwiLCBcIm9wdGlvbnMudHlwZSBtdXN0IGJlIG9uZSBvZjogYmVmb3JlLCBpbnN0ZWFkLCBhZnRlclwiKTtcclxuICAgICAgICByZXR1cm4gUGF0Y2hlci5wdXNoQ2hpbGRQYXRjaChjYWxsZXIsIG1vZHVsZVRvUGF0Y2gsIGZ1bmN0aW9uTmFtZSwgY2FsbGJhY2ssIG9wdGlvbnMpO1xyXG4gICAgfSxcclxuICAgIGJlZm9yZTogKGNhbGxlciwgbW9kdWxlVG9QYXRjaCwgZnVuY3Rpb25OYW1lLCBjYWxsYmFjaywgb3B0aW9ucyA9IHt9KSA9PiBCZEFwaS5QYXRjaGVyLnBhdGNoKGNhbGxlciwgbW9kdWxlVG9QYXRjaCwgZnVuY3Rpb25OYW1lLCBjYWxsYmFjaywgT2JqZWN0LmFzc2lnbihvcHRpb25zLCB7dHlwZTogXCJiZWZvcmVcIn0pKSxcclxuICAgIGluc3RlYWQ6IChjYWxsZXIsIG1vZHVsZVRvUGF0Y2gsIGZ1bmN0aW9uTmFtZSwgY2FsbGJhY2ssIG9wdGlvbnMgPSB7fSkgPT4gQmRBcGkuUGF0Y2hlci5wYXRjaChjYWxsZXIsIG1vZHVsZVRvUGF0Y2gsIGZ1bmN0aW9uTmFtZSwgY2FsbGJhY2ssIE9iamVjdC5hc3NpZ24ob3B0aW9ucywge3R5cGU6IFwiaW5zdGVhZFwifSkpLFxyXG4gICAgYWZ0ZXI6IChjYWxsZXIsIG1vZHVsZVRvUGF0Y2gsIGZ1bmN0aW9uTmFtZSwgY2FsbGJhY2ssIG9wdGlvbnMgPSB7fSkgPT4gQmRBcGkuUGF0Y2hlci5wYXRjaChjYWxsZXIsIG1vZHVsZVRvUGF0Y2gsIGZ1bmN0aW9uTmFtZSwgY2FsbGJhY2ssIE9iamVjdC5hc3NpZ24ob3B0aW9ucywge3R5cGU6IFwiYWZ0ZXJcIn0pKSxcclxuICAgIHVucGF0Y2hBbGw6IChjYWxsZXIpID0+IHtcclxuICAgICAgICBpZiAodHlwZW9mKGNhbGxlcikgIT09IFwic3RyaW5nXCIpIHJldHVybiBMb2dnZXIuZXJyKFwiQmRBcGkuUGF0Y2hlclwiLCBcIlBhcmFtZXRlciAwIG9mIHVucGF0Y2hBbGwgbXVzdCBiZSBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGNhbGxlclwiKTtcclxuICAgICAgICByZXR1cm4gUGF0Y2hlci51bnBhdGNoQWxsKGNhbGxlcik7XHJcbiAgICB9XHJcbn07XHJcblxyXG5PYmplY3QuZnJlZXplKEJkQXBpKTtcclxuT2JqZWN0LmZyZWV6ZShCZEFwaS5QbHVnaW5zKTtcclxuT2JqZWN0LmZyZWV6ZShCZEFwaS5UaGVtZXMpO1xyXG5PYmplY3QuZnJlZXplKEJkQXBpLlBhdGNoZXIpO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgQmRBcGk7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/pluginapi.js\n");
/***/ }),
/***/ "./src/modules/pluginmanager.js":
/*!**************************************!*\
!*** ./src/modules/pluginmanager.js ***!
\**************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _data_data_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../data/data.js */ \"./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_data_js__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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9wbHVnaW5tYW5hZ2VyLmpzP2QxNzMiXSwibmFtZXMiOlsicGF0aCIsInJlcXVpcmUiLCJlbGVjdHJvblJlbW90ZSIsInJlbW90ZSIsIlBsdWdpbk1hbmFnZXIiLCJBZGRvbk1hbmFnZXIiLCJuYW1lIiwibW9kdWxlRXh0ZW5zaW9uIiwiZXh0ZW5zaW9uIiwiYWRkb25Gb2xkZXIiLCJyZXNvbHZlIiwiQ29uZmlnIiwiZGF0YVBhdGgiLCJwcmVmaXgiLCJsYW5ndWFnZSIsImNvbnN0cnVjdG9yIiwib25Td2l0Y2giLCJiaW5kIiwib2JzZXJ2ZXIiLCJNdXRhdGlvbk9ic2VydmVyIiwibXV0YXRpb25zIiwiaSIsIm1sZW4iLCJsZW5ndGgiLCJvbk11dGF0aW9uIiwiaW5pdGlhbGl6ZSIsImVycm9ycyIsInNldHVwRnVuY3Rpb25zIiwiU2V0dGluZ3MiLCJyZWdpc3RlclBhbmVsIiwiU3RyaW5ncyIsIlBhbmVscyIsInBsdWdpbnMiLCJlbGVtZW50IiwiU2V0dGluZ3NSZW5kZXJlciIsImdldEFkZG9uUGFuZWwiLCJhZGRvbkxpc3QiLCJzdGF0ZSIsImZvbGRlciIsIm9uQ2hhbmdlIiwidG9nZ2xlUGx1Z2luIiwicmVsb2FkIiwicmVsb2FkUGx1Z2luIiwicmVmcmVzaExpc3QiLCJ1cGRhdGVQbHVnaW5MaXN0Iiwic2F2ZUFkZG9uIiwiZWRpdEFkZG9uIiwiZGVsZXRlQWRkb24iLCJ1cGRhdGVMaXN0IiwibG9hZEFsbFBsdWdpbnMiLCJsb2FkQWxsQWRkb25zIiwiZW5hYmxlUGx1Z2luIiwiaWRPckFkZG9uIiwiZW5hYmxlQWRkb24iLCJkaXNhYmxlUGx1Z2luIiwiZGlzYWJsZUFkZG9uIiwiaWQiLCJ0b2dnbGVBZGRvbiIsInVubG9hZFBsdWdpbiIsImlkT3JGaWxlT3JBZGRvbiIsInVubG9hZEFkZG9uIiwibG9hZFBsdWdpbiIsImZpbGVuYW1lIiwiZXJyb3IiLCJsb2FkQWRkb24iLCJNb2RhbHMiLCJzaG93QWRkb25FcnJvcnMiLCJ0aGVtZXMiLCJyZWxvYWRBZGRvbiIsImZpbmQiLCJjIiwiaW5pdGlhbGl6ZUFkZG9uIiwiYWRkb24iLCJ0eXBlIiwiQWRkb25FcnJvciIsIm1lc3NhZ2UiLCJzdGFjayIsInRoZVBsdWdpbiIsInBsdWdpbiIsImdldE5hbWUiLCJhdXRob3IiLCJnZXRBdXRob3IiLCJkZXNjcmlwdGlvbiIsImdldERlc2NyaXB0aW9uIiwidmVyc2lvbiIsImdldFZlcnNpb24iLCJsb2FkIiwiZ2V0RmlsZU1vZGlmaWNhdGlvbiIsIm1vZHVsZSIsImZpbGVDb250ZW50IiwibWV0YSIsIl9jb21waWxlIiwiZGlkRXhwb3J0IiwiVXRpbGl0aWVzIiwiaXNFbXB0eSIsImV4cG9ydHMiLCJMb2dnZXIiLCJ3YXJuIiwiSlNPTiIsInN0cmluZ2lmeSIsInN0YXJ0QWRkb24iLCJzdGFydFBsdWdpbiIsInN0b3BBZGRvbiIsInN0b3BQbHVnaW4iLCJnZXRBZGRvbiIsImdldFBsdWdpbiIsInAiLCJzdGFydCIsImVyciIsIlRvYXN0cyIsIkFkZG9ucyIsImNvdWxkTm90U3RhcnQiLCJmb3JtYXQiLCJzdGFja3RyYWNlIiwiZW5hYmxlZCIsIm1ldGhvZCIsImVtaXQiLCJzaG93Iiwic3RvcCIsImNvdWxkTm90U3RvcCIsImRpc2FibGVkIiwiaWRPckZpbGUiLCJnZXRDdXJyZW50V2ViQ29udGVudHMiLCJvbiIsIm9ic2VydmUiLCJkb2N1bWVudCIsImNoaWxkTGlzdCIsInN1YnRyZWUiLCJtdXRhdGlvbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBOztBQUVBLE1BQU1BLElBQUksR0FBR0MsbUJBQU8sQ0FBQyxrQkFBRCxDQUFwQjs7QUFDQSxNQUFNQyxjQUFjLEdBQUdELG1CQUFPLENBQUMsMEJBQUQsQ0FBUCxDQUFvQkUsTUFBM0M7O0FBRWUs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SSxPQUFPc0IsTUFBTSxDQUFDOUQsUUFBZCxLQUE0QixVQUFoQyxFQUE0QztBQUN4QyxZQUFJO0FBQUU4RCxnQkFBTSxDQUFDOUQsUUFBUDtBQUFvQixTQUExQixDQUNBLE9BQU80RixHQUFQLEVBQVk7QUFBRVoseURBQU0sQ0FBQ2lCLFVBQVAsQ0FBa0IsS0FBSzNHLElBQXZCLEVBQTZCLGlDQUFpQyxLQUFLOEIsU0FBTCxDQUFlZixDQUFmLEVBQWtCZixJQUFuRCxHQUEwRCxHQUF2RixFQUE0RnNHLEdBQTVGO0FBQW1HO0FBQ3BIO0FBQ0o7QUFDSjs7QUFFRHBGLFlBQVUsQ0FBQ3dHLFFBQUQsRUFBVztBQUNqQixTQUFLLElBQUkzRyxDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHLEtBQUtlLFNBQUwsQ0FBZWIsTUFBbkMsRUFBMkNGLENBQUMsRUFBNUMsRUFBZ0Q7QUFDNUMsWUFBTXlELE1BQU0sR0FBRyxLQUFLMUMsU0FBTCxDQUFlZixDQUFmLEVBQWtCeUQsTUFBakM7QUFDQSxVQUFJLENBQUMsS0FBS3pDLEtBQUwsQ0FBVyxLQUFLRCxTQUFMLENBQWVmLENBQWYsRUFBa0JtQyxFQUE3QixDQUFMLEVBQXVDOztBQUN2QyxVQUFJLE9BQU9zQixNQUFNLENBQUM1RCxRQUFkLEtBQTJCLFVBQS9CLEVBQTJDO0FBQ3ZDLFlBQUk7QUFBRTRELGdCQUFNLENBQUM1RCxRQUFQLENBQWdCOEcsUUFBaEI7QUFBNEIsU0FBbEMsQ0FDQSxPQUFPcEIsR0FBUCxFQUFZO0FBQUVaLHlEQUFNLENBQUNpQixVQUFQLENBQWtCLEtBQUszRyxJQUF2QixFQUE2QixpQ0FBaUMsS0FBSzhCLFNBQUwsQ0FBZWYsQ0FBZixFQUFrQmYsSUFBbkQsR0FBMEQsR0FBdkYsRUFBNEZzRyxHQUE1RjtBQUFtRztBQUNwSDtBQUNKO0FBQ0o7O0FBbEt1RCxDQUE3QyxFQUFmIiwiZmlsZSI6Ii4vc3JjL21vZHVsZXMvcGx1Z2lubWFuYWdlci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29uZmlnfSBmcm9tIFwiZGF0YVwiO1xyXG5pbXBvcnQgTG9nZ2VyIGZyb20gXCIuL2xvZ2dlclwiO1xyXG5pbXBvcnQgQWRkb25NYW5hZ2VyIGZyb20gXCIuL2FkZG9ubWFuYWdlclwiO1xyXG5pbXBvcnQgVXRpbGl0aWVzIGZyb20gXCIuL3V0aWxpdGllc1wiO1xyXG5pbXBvcnQgQWRkb25FcnJvciBmcm9tIFwiLi4vc3RydWN0cy9hZGRvbmVycm9yXCI7XHJcbmltcG9ydCBTZXR0aW5ncyBmcm9tIFwiLi9zZXR0aW5nc21hbmFnZXJcIjtcclxuaW1wb3J0IFN0cmluZ3MgZnJvbSBcIi4vc3RyaW5nc1wiO1xyXG5cclxuaW1wb3J0IFRvYXN0cyBmcm9tIFwiLi4vdWkvdG9hc3RzXCI7XHJcbmltcG9ydCBNb2RhbHMgZnJvbSBcIi4uL3VpL21vZGFsc1wiO1xyXG5pbXBvcnQgU2V0dGluZ3NSZW5kZXJlciBmcm9tIFwiLi4vdWkvc2V0dGluZ3NcIjtcclxuXHJcbmNvbnN0IHBhdGggPSByZXF1aXJlKFwicGF0aFwiKTtcclxuY29uc3QgZWxlY3Ryb25SZW1vdGUgPSByZXF1aXJlKFwiZWxlY3Ryb25cIikucmVtb3RlO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgbmV3IGNsYXNzIFBsdWdpbk1hbmFnZXIgZXh0ZW5kcyBBZGRvbk1hbmFnZXIge1xyXG4gICAgZ2V0IG5hbWUoKSB7cmV0dXJuIFwiUGx1Z2luTWFuYWdlclwiO31cclxuICAgIGdldCBtb2R1bGVFeHRlbnNpb24oKSB7cmV0dXJuIFwiLmpzXCI7fVxyXG4gICAgZ2V0IGV4dGVuc2lvbigpIHtyZXR1cm4gXCIucGx1Z2luLmpzXCI7fVxyXG4gICAgZ2V0IGFkZG9uRm9sZGVyKCkge3JldHVybiBwYXRoLnJlc29sdmUoQ29uZmlnLmRhdGFQYXRoLCBcInBsdWdpbnNcIik7fVxyXG4gICAgZ2V0IHByZWZpeCgpIHtyZXR1cm4gXCJwbHVnaW5cIjt9XHJcbiAgICBnZXQgbGFuZ3VhZ2UoKSB7cmV0dXJuIFwiamF2YXNjcmlwdFwiO31cclxuXHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIHRoaXMub25Td2l0Y2ggPSB0aGlzLm9uU3dpdGNoLmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy5vYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKChtdXRhdGlvbnMpID0+IHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDAsIG1sZW4gPSBtdXRhdGlvbnMubGVuZ3RoOyBpIDwgbWxlbjsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9uTXV0YXRpb24obXV0YXRpb25zW2ldKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGluaXRpYWxpemUoKSB7XHJcbiAgICAgICAgY29uc3QgZXJyb3JzID0gc3VwZXIuaW5pdGlhbGl6ZSgpO1xyXG4gICAgICAgIHRoaXMuc2V0dXBGdW5jdGlvbnMoKTtcclxuICAgICAgICBTZXR0aW5ncy5yZWdpc3RlclBhbmVsKFwicGx1Z2luc1wiLCBTdHJpbmdzLlBhbmVscy5wbHVnaW5zLCB7ZWxlbWVudDogKCkgPT4gU2V0dGluZ3NSZW5kZXJlci5nZXRBZGRvblBhbmVsKFN0cmluZ3MuUGFuZWxzLnBsdWdpbnMsIHRoaXMuYWRkb25MaXN0LCB0aGlzLnN0YXRlLCB7XHJcbiAgICAgICAgICAgIGZvbGRlcjogdGhpcy5hZGRvbkZvbGRlcixcclxuICAgICAgICAgICAgb25DaGFuZ2U6IHRoaXMudG9nZ2xlUGx1Z2luLmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgIHJlbG9hZDogdGhpcy5yZWxvYWRQbHVnaW4uYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgcmVmcmVzaExpc3Q6IHRoaXMudXBkYXRlUGx1Z2luTGlzdC5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgICBzYXZlQWRkb246IHRoaXMuc2F2ZUFkZG9uLmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgIGVkaXRBZGRvbjogdGhpcy5lZGl0QWRkb24uYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgZGVsZXRlQWRkb246IHRoaXMuZGVsZXRlQWRkb24uYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgcHJlZml4OiB0aGlzLnByZWZpeFxyXG4gICAgICAgIH0pfSk7XHJcbiAgICAgICAgcmV0dXJuIGVycm9ycztcclxuICAgIH1cclxuXHJcbiAgICAvKiBBbGlhc2VzICovXHJcbiAgICB1cGRhdGVQbHVnaW5MaXN0KCkge3JldHVybiB0aGlzLnVwZGF0ZUxpc3QoKTt9XHJcbiAgICBsb2FkQWxsUGx1Z2lucygpIHtyZXR1cm4gdGhpcy5sb2FkQWxsQWRkb25zKCk7fVxyXG5cclxuICAgIGVuYWJsZVBsdWdpbihpZE9yQWRkb24pIHtyZXR1cm4gdGhpcy5lbmFibGVBZGRvbihpZE9yQWRkb24pO31cclxuICAgIGRpc2FibGVQbHVnaW4oaWRPckFkZG9uKSB7cmV0dXJuIHRoaXMuZGlzYWJsZUFkZG9uKGlkT3JBZGRvbik7fVxyXG4gICAgdG9nZ2xlUGx1Z2luKGlkKSB7cmV0dXJuIHRoaXMudG9nZ2xlQWRkb24oaWQpO31cclxuXHJcbiAgICB1bmxvYWRQbHVnaW4oaWRPckZpbGVPckFkZG9uKSB7cmV0dXJuIHRoaXMudW5sb2FkQWRkb24oaWRPckZpbGVPckFkZG9uKTt9XHJcblxyXG4gICAgbG9hZFBsdWdpbihmaWxlbmFtZSkge1xyXG4gICAgICAgIGNvbnN0IGVycm9yID0gdGhpcy5sb2FkQWRkb24oZmlsZW5hbWUpO1xyXG4gICAgICAgIGlmIChlcnJvcikgTW9kYWxzLnNob3dBZGRvbkVycm9ycyh7dGhlbWVzOiBbZXJyb3JdfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVsb2FkUGx1Z2luKGlkT3JGaWxlT3JBZGRvbikge1xyXG4gICAgICAgIGNvbnN0IGVycm9yID0gdGhpcy5yZWxvYWRBZGRvbihpZE9yRmlsZU9yQWRkb24pO1xyXG4gICAgICAgIGlmIChlcnJvcikgTW9kYWxzLnNob3dBZGRvbkVycm9ycyh7cGx1Z2luczogW2Vycm9yXX0pO1xyXG4gICAgICAgIHJldHVybiB0eXBlb2YoaWRPckZpbGVPckFkZG9uKSA9PSBcInN0cmluZ1wiID8gdGhpcy5hZGRvbkxpc3QuZmluZChjID0+IGMuaWQgPT0gaWRPckZpbGVPckFkZG9uIHx8IGMuZmlsZW5hbWUgPT0gaWRPckZpbGVPckFkZG9uKSA6IGlkT3JGaWxlT3JBZGRvbjtcclxuICAgIH1cclxuXHJcbiAgICAvKiBPdmVycmlkZXMgKi9cclxuICAgIGluaXRpYWxpemVBZGRvbihhZGRvbikge1xyXG4gICAgICAgIGlmICghYWRkb24udHlwZSkgcmV0dXJuIG5ldyBBZGRvbkVycm9yKGFkZG9uLm5hbWUsIGFkZG9uLmZpbGVuYW1lLCBcIlBsdWdpbiBoYWQgbm8gZXhwb3J0c1wiLCB7bWVzc2FnZTogXCJQbHVnaW4gaGFkIG5vIGV4cG9ydHMgb3Igbm8gbmFtZSBwcm9wZXJ0eS5cIiwgc3RhY2s6IFwiXCJ9KTtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBjb25zdCB0aGVQbHVnaW4gPSBuZXcgYWRkb24udHlwZSgpO1xyXG4gICAgICAgICAgICBhZGRvbi5wbHVnaW4gPSB0aGVQbHVnaW47XHJcbiAgICAgICAgICAgIGFkZG9uLm5hbWUgPSB0aGVQbHVnaW4uZ2V0TmFtZSgpIHx8IGFkZG9uLm5hbWU7XHJcbiAgICAgICAgICAgIGFkZG9uLmF1dGhvciA9IHRoZVBsdWdpbi5nZXRBdXRob3IoKSB8fCBhZGRvbi5hdXRob3IgfHwgXCJObyBhdXRob3JcIjtcclxuICAgICAgICAgICAgYWRkb24uZGVzY3JpcHRpb24gPSB0aGVQbHVnaW4uZ2V0RGVzY3JpcHRpb24oKSB8fCBhZGRvbi5kZXNjcmlwdGlvbiB8fCBcIk5vIGRlc2NyaXB0aW9uXCI7XHJcbiAgICAgICAgICAgIGFkZG9uLnZlcnNpb24gPSB0aGVQbHVnaW4uZ2V0VmVyc2lvbigpIHx8IGFkZG9uLnZlcnNpb24gfHwgXCJObyB2ZXJzaW9uXCI7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mKGFkZG9uLnBsdWdpbi5sb2FkKSA9PSBcImZ1bmN0aW9uXCIpIGFkZG9uLnBsdWdpbi5sb2FkKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlW2FkZG9uLmlkXSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBBZGRvbkVycm9yKGFkZG9uLm5hbWUsIGFkZG9uLmZpbGVuYW1lLCBcImxvYWQoKSBjb3VsZCBub3QgYmUgZmlyZWQuXCIsIHttZXNzYWdlOiBlcnJvci5tZXNzYWdlLCBzdGFjazogZXJyb3Iuc3RhY2t9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBjYXRjaCAoZXJyb3IpIHtyZXR1cm4gbmV3IEFkZG9uRXJyb3IoYWRkb24ubmFtZSwgYWRkb24uZmlsZW5hbWUsIFwiQ291bGQgbm90IGJlIGNvbnN0cnVjdGVkLlwiLCB7bWVzc2FnZTogZXJyb3IubWVzc2FnZSwgc3RhY2s6IGVycm9yLnN0YWNrfSk7fVxyXG4gICAgfVxyXG5cclxuICAgIGdldEZpbGVNb2RpZmljYXRpb24obW9kdWxlLCBmaWxlQ29udGVudCwgbWV0YSkge1xyXG4gICAgICAgIG1vZHVsZS5fY29tcGlsZShmaWxlQ29udGVudCwgbW9kdWxlLmZpbGVuYW1lKTtcclxuICAgICAgICBjb25zdCBkaWRFeHBvcnQgPSAhVXRpbGl0aWVzLmlzRW1wdHkobW9kdWxlLmV4cG9ydHMpO1xyXG4gICAgICAgIGlmIChkaWRFeHBvcnQpIHtcclxuICAgICAgICAgICAgbWV0YS50eXBlID0gbW9kdWxlLmV4cG9ydHM7XHJcbiAgICAgICAgICAgIG1vZHVsZS5leHBvcnRzID0gbWV0YTtcclxuICAgICAgICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIExvZ2dlci53YXJuKHRoaXMubmFtZSwgYCR7bWV0YS5uYW1lfSwgcGxlYXNlIHN0YXJ0IGFzc2lnbmluZyBtb2R1bGUuZXhwb3J0c2ApO1xyXG4gICAgICAgIGZpbGVDb250ZW50ICs9IGBcXG5tb2R1bGUuZXhwb3J0cyA9ICR7SlNPTi5zdHJpbmdpZnkobWV0YSl9O1xcbm1vZHVsZS5leHBvcnRzLnR5cGUgPSAke21ldGEuZXhwb3J0cyB8fCBtZXRhLm5hbWV9O2A7XHJcbiAgICAgICAgcmV0dXJuIGZpbGVDb250ZW50O1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXJ0QWRkb24oaWQpIHtyZXR1cm4gdGhpcy5zdGFydFBsdWdpbihpZCk7fVxyXG4gICAgc3RvcEFkZG9uKGlkKSB7cmV0dXJuIHRoaXMuc3RvcFBsdWdpbihpZCk7fVxyXG4gICAgZ2V0QWRkb24oaWQpIHtyZXR1cm4gdGhpcy5nZXRQbHVnaW4oaWQpO31cclxuXHJcbiAgICBzdGFydFBsdWdpbihpZE9yQWRkb24pIHtcclxuICAgICAgICBjb25zdCBhZGRvbiA9IHR5cGVvZihpZE9yQWRkb24pID09IFwic3RyaW5nXCIgPyB0aGlzLmFkZG9uTGlzdC5maW5kKHAgPT4gcC5pZCA9PSBpZE9yQWRkb24pIDogaWRPckFkZG9uO1xyXG4gICAgICAgIGlmICghYWRkb24pIHJldHVybjtcclxuICAgICAgICBjb25zdCBwbHVnaW4gPSBhZGRvbi5wbHVnaW47XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgcGx1Z2luLnN0YXJ0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChlcnIpIHtcclxuICAgICAgICAgICAgdGhpcy5zdGF0ZVthZGRvbi5pZF0gPSBmYWxzZTtcclxuICAgICAgICAgICAgVG9hc3RzLmVycm9yKFN0cmluZ3MuQWRkb25zLmNvdWxkTm90U3RhcnQuZm9ybWF0KHtuYW1lOiBhZGRvbi5uYW1lLCB2ZXJzaW9uOiBhZGRvbi52ZXJzaW9ufSkpO1xyXG4gICAgICAgICAgICBMb2dnZXIuc3RhY2t0cmFjZSh0aGlzLm5hbWUsIGFkZG9uLm5hbWUgKyBcIiBjb3VsZCBub3QgYmUgc3RhcnRlZC5cIiwgZXJyKTtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBBZGRvbkVycm9yKGFkZG9uLm5hbWUsIGFkZG9uLmZpbGVuYW1lLCBTdHJpbmdzLkFkZG9ucy5lbmFibGVkLmZvcm1hdCh7bWV0aG9kOiBcInN0YXJ0KClcIn0pLCB7bWVzc2FnZTogZXJyLm1lc3NhZ2UsIHN0YWNrOiBlcnIuc3RhY2t9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5lbWl0KFwic3RhcnRlZFwiLCBhZGRvbi5pZCk7XHJcbiAgICAgICAgVG9hc3RzLnNob3coU3RyaW5ncy5BZGRvbnMuZW5hYmxlZC5mb3JtYXQoe25hbWU6IGFkZG9uLm5hbWUsIHZlcnNpb246IGFkZG9uLnZlcnNpb259KSk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RvcFBsdWdpbihpZE9yQWRkb24pIHtcclxuICAgICAgICBjb25zdCBhZGRvbiA9IHR5cGVvZihpZE9yQWRkb24pID09IFwic3RyaW5nXCIgPyB0aGlzLmFkZG9uTGlzdC5maW5kKHAgPT4gcC5pZCA9PSBpZE9yQWRkb24pIDogaWRPckFkZG9uO1xyXG4gICAgICAgIGlmICghYWRkb24pIHJldHVybjtcclxuICAgICAgICBjb25zdCBwbHVnaW4gPSBhZGRvbi5wbHVnaW47XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgcGx1Z2luLnN0b3AoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGVycikge1xyXG4gICAgICAgICAgICB0aGlzLnN0YXRlW2FkZG9uLmlkXSA9IGZhbHNlO1xyXG4gICAgICAgICAgICBUb2FzdHMuZXJyb3IoU3RyaW5ncy5BZGRvbnMuY291bGROb3RTdG9wLmZvcm1hdCh7bmFtZTogYWRkb24ubmFtZSwgdmVyc2lvbjogYWRkb24udmVyc2lvbn0pKTtcclxuICAgICAgICAgICAgTG9nZ2VyLnN0YWNrdHJhY2UodGhpcy5uYW1lLCBhZGRvbi5uYW1lICsgXCIgY291bGQgbm90IGJlIHN0b3BwZWQuXCIsIGVycik7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgQWRkb25FcnJvcihhZGRvbi5uYW1lLCBhZGRvbi5maWxlbmFtZSwgU3RyaW5ncy5BZGRvbnMuZW5hYmxlZC5mb3JtYXQoe21ldGhvZDogXCJzdG9wKClcIn0pLCB7bWVzc2FnZTogZXJyLm1lc3NhZ2UsIHN0YWNrOiBlcnIuc3RhY2t9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5lbWl0KFwic3RvcHBlZFwiLCBhZGRvbi5pZCk7XHJcbiAgICAgICAgVG9hc3RzLnNob3coU3RyaW5ncy5BZGRvbnMuZGlzYWJsZWQuZm9ybWF0KHtuYW1lOiBhZGRvbi5uYW1lLCB2ZXJzaW9uOiBhZGRvbi52ZXJzaW9ufSkpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFBsdWdpbihpZE9yRmlsZSkge1xyXG4gICAgICAgIGNvbnN0IGFkZG9uID0gdGhpcy5hZGRvbkxpc3QuZmluZChjID0+IGMuaWQgPT0gaWRPckZpbGUgfHwgYy5maWxlbmFtZSA9PSBpZE9yRmlsZSk7XHJcbiAgICAgICAgaWYgKCFhZGRvbikgcmV0dXJuO1xyXG4gICAgICAgIHJldHVybiBhZGRvbi5wbHVnaW47XHJcbiAgICB9XHJcblxyXG4gICAgc2V0dXBGdW5jdGlvbnMoKSB7XHJcbiAgICAgICAgZWxlY3Ryb25SZW1vdGUuZ2V0Q3VycmVudFdlYkNvbnRlbnRzKCkub24oXCJkaWQtbmF2aWdhdGUtaW4tcGFnZVwiLCB0aGlzLm9uU3dpdGNoLmJpbmQodGhpcykpO1xyXG4gICAgICAgIHRoaXMub2JzZXJ2ZXIub2JzZXJ2ZShkb2N1bWVudCwge1xyXG4gICAgICAgICAgICBjaGlsZExpc3Q6IHRydWUsXHJcbiAgICAgICAgICAgIHN1YnRyZWU6IHRydWVcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBvblN3aXRjaCgpIHtcclxuICAgICAgICB0aGlzLmVtaXQoXCJwYWdlLXN3aXRjaFwiKTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuYWRkb25MaXN0Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHBsdWdpbiA9IHRoaXMuYWRkb25MaXN0W2ldLnBsdWdpbjtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLnN0YXRlW3RoaXMuYWRkb25MaXN0W2ldLmlkXSkgY29udGludWU7XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2YocGx1Z2luLm9uU3dpdGNoKSA9PT0gXCJmdW5jdGlvblwiKSB7XHJcbiAgICAgICAgICAgICAgICB0cnkgeyBwbHVnaW4ub25Td2l0Y2goKTsgfVxyXG4gICAgICAgICAgICAgICAgY2F0Y2ggKGVycikgeyBMb2dnZXIuc3RhY2t0cmFjZSh0aGlzLm5hbWUsIFwiVW5hYmxlIHRvIGZpcmUgb25Td2l0Y2ggZm9yIFwiICsgdGhpcy5hZGRvbkxpc3RbaV0ubmFtZSArIFwiLlwiLCBlcnIpOyB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgb25NdXRhdGlvbihtdXRhdGlvbikge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5hZGRvbkxpc3QubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgY29uc3QgcGx1Z2luID0gdGhpcy5hZGRvbkxpc3RbaV0ucGx1Z2luO1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuc3RhdGVbdGhpcy5hZGRvbkxpc3RbaV0uaWRdKSBjb250aW51ZTtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiBwbHVnaW4ub2JzZXJ2ZXIgPT09IFwiZnVuY3Rpb25cIikge1xyXG4gICAgICAgICAgICAgICAgdHJ5IHsgcGx1Z2luLm9ic2VydmVyKG11dGF0aW9uKTsgfVxyXG4gICAgICAgICAgICAgICAgY2F0Y2ggKGVycikgeyBMb2dnZXIuc3RhY2t0cmFjZSh0aGlzLm5hbWUsIFwiVW5hYmxlIHRvIGZpcmUgb2JzZXJ2ZXIgZm9yIFwiICsgdGhpcy5hZGRvbkxpc3RbaV0ubmFtZSArIFwiLlwiLCBlcnIpOyB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/pluginmanager.js\n");
/***/ }),
/***/ "./src/modules/reactcomponents.js":
/*!****************************************!*\
!*** ./src/modules/reactcomponents.js ***!
\****************************************/
/*! exports provided: default */
/***/ (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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9yZWFjdGNvbXBvbmVudHMuanM/Njk1NCJdLCJuYW1lcyI6WyJSZWFjdCIsIkRpc2NvcmRNb2R1bGVzIiwiY29tcG9uZW50cyIsInVua25vd25Db21wb25lbnRzIiwiU2V0IiwibGlzdGVuZXJzIiwiUmVhY3RDb21wb25lbnRzIiwibmFtZWQiLCJ1bmtub3duIiwiY29uc3RydWN0b3IiLCJQYXRjaGVyIiwiYWZ0ZXIiLCJfIiwiX18iLCJyZXR1cm5WYWx1ZSIsIndhbGtSZW5kZXJUcmVlIiwiaW5zdGVhZCIsIkNvbXBvbmVudCIsInByb3RvdHlwZSIsInRoaXNPYmplY3QiLCJhZGRDb21wb25lbnQiLCJQdXJlQ29tcG9uZW50IiwiaW5pdGlhbGl6ZSIsIndhbGtSZWFjdFRyZWUiLCJkb2N1bWVudCIsInF1ZXJ5U2VsZWN0b3IiLCJfcmVhY3RSb290Q29udGFpbmVyIiwiX2ludGVybmFsUm9vdCIsImN1cnJlbnQiLCJnZXQiLCJuYW1lIiwiZmlsdGVyIiwiUHJvbWlzZSIsInJlc29sdmUiLCJhZGQiLCJjb21wb25lbnQiLCJkaXNwbGF5TmFtZSIsImRlbGV0ZSIsImFkZE5hbWVkQ29tcG9uZW50IiwibGlzdGVuZXIiLCJhZGRVbmtub3duQ29tcG9uZW50IiwiaGFzIiwidHJlZSIsInR5cGUiLCJBcnJheSIsImlzQXJyYXkiLCJ2YWx1ZSIsInByb3BzIiwiY2hpbGRyZW4iLCJjaGlsZCIsInNpYmxpbmciXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFFQSxNQUFNQSxLQUFLLEdBQUdDLHVEQUFjLENBQUNELEtBQTdCO0FBQ0EsTUFBTUUsVUFBVSxHQUFHLEVBQW5CO0FBQ0EsTUFBTUMsaUJBQWlCLEdBQUcsSUFBSUMsR0FBSixFQUExQjtBQUNBLE1BQU1DLFNBQVMsR0FBRyxJQUFJRCxHQUFKLEVBQWxCO0FBRWUsbUVBQUksTUFBTUUsZUFBTixDQUFzQjtBQUVyQyxNQUFJQyxLQUFKLEdB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MkIsSUFBSSxDQUFDSyxLQUFMLENBQVdDLFFBQS9CO0FBQzFDOztBQUVEekIsZUFBYSxDQUFDbUIsSUFBRCxFQUFPO0FBQ2hCLFFBQUksQ0FBQ0EsSUFBTCxFQUFXO0FBQ1gsUUFBSSxPQUFPQSxJQUFJLENBQUNDLElBQVosSUFBcUIsVUFBekIsRUFBcUMsS0FBS3ZCLFlBQUwsQ0FBa0JzQixJQUFJLENBQUNDLElBQXZCO0FBQ3JDLFFBQUlELElBQUksQ0FBQ08sS0FBVCxFQUFnQixLQUFLMUIsYUFBTCxDQUFtQm1CLElBQUksQ0FBQ08sS0FBeEI7QUFDaEIsUUFBSVAsSUFBSSxDQUFDUSxPQUFULEVBQWtCLEtBQUszQixhQUFMLENBQW1CbUIsSUFBSSxDQUFDUSxPQUF4QjtBQUNyQjs7QUFsRm9DLENBQTFCLEVBQWYiLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9yZWFjdGNvbXBvbmVudHMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRGlzY29yZE1vZHVsZXMgZnJvbSBcIi4vZGlzY29yZG1vZHVsZXNcIjtcclxuaW1wb3J0IFBhdGNoZXIgZnJvbSBcIi4vcGF0Y2hlclwiO1xyXG5cclxuY29uc3QgUmVhY3QgPSBEaXNjb3JkTW9kdWxlcy5SZWFjdDtcclxuY29uc3QgY29tcG9uZW50cyA9IHt9O1xyXG5jb25zdCB1bmtub3duQ29tcG9uZW50cyA9IG5ldyBTZXQoKTtcclxuY29uc3QgbGlzdGVuZXJzID0gbmV3IFNldCgpO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgbmV3IGNsYXNzIFJlYWN0Q29tcG9uZW50cyB7XHJcblxyXG4gICAgZ2V0IG5hbWVkKCkge3JldHVybiBjb21wb25lbnRzO31cclxuICAgIGdldCB1bmtub3duKCkge3JldHVybiB1bmtub3duQ29tcG9uZW50czt9XHJcbiAgICBnZXQgbGlzdGVuZXJzKCkge3JldHVybiBsaXN0ZW5lcnM7fVxyXG5cclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIFBhdGNoZXIuYWZ0ZXIoXCJSZWFjdENvbXBvbmVudHNcIiwgUmVhY3QsIFwiY3JlYXRlRWxlbWVudFwiLCAoXywgX18sIHJldHVyblZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMud2Fsa1JlbmRlclRyZWUocmV0dXJuVmFsdWUpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIFBhdGNoZXIuaW5zdGVhZChcIlJlYWN0Q29tcG9uZW50c1wiLCBSZWFjdC5Db21wb25lbnQucHJvdG90eXBlLCBcImNvbXBvbmVudFdpbGxNb3VudFwiLCAodGhpc09iamVjdCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmFkZENvbXBvbmVudCh0aGlzT2JqZWN0LmNvbnN0cnVjdG9yKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBQYXRjaGVyLmluc3RlYWQoXCJSZWFjdENvbXBvbmVudHNcIiwgUmVhY3QuQ29tcG9uZW50LnByb3RvdHlwZSwgXCJVTlNBRkVfY29tcG9uZW50V2lsbE1vdW50XCIsICh0aGlzT2JqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuYWRkQ29tcG9uZW50KHRoaXNPYmplY3QuY29uc3RydWN0b3IpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBQYXRjaGVyLmluc3RlYWQoXCJSZWFjdENvbXBvbmVudHNcIiwgUmVhY3QuUHVyZUNvbXBvbmVudC5wcm90b3R5cGUsIFwiY29tcG9uZW50V2lsbE1vdW50XCIsICh0aGlzT2JqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuYWRkQ29tcG9uZW50KHRoaXNPYmplY3QuY29uc3RydWN0b3IpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIFBhdGNoZXIuaW5zdGVhZChcIlJlYWN0Q29tcG9uZW50c1wiLCBSZWFjdC5QdXJlQ29tcG9uZW50LnByb3RvdHlwZSwgXCJVTlNBRkVfY29tcG9uZW50V2lsbE1vdW50XCIsICh0aGlzT2JqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuYWRkQ29tcG9uZW50KHRoaXNPYmplY3QuY29uc3RydWN0b3IpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGluaXRpYWxpemUoKSB7XHJcbiAgICAgICAgdGhpcy53YWxrUmVhY3RUcmVlKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjYXBwLW1vdW50XCIpLl9yZWFjdFJvb3RDb250YWluZXIuX2ludGVybmFsUm9vdC5jdXJyZW50KTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQobmFtZSwgZmlsdGVyKSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xyXG4gICAgICAgICAgICBpZiAoY29tcG9uZW50c1tuYW1lXSkgcmV0dXJuIHJlc29sdmUoY29tcG9uZW50c1tuYW1lXSk7XHJcbiAgICAgICAgICAgIGxpc3RlbmVycy5hZGQoe25hbWUsIGZpbHRlciwgcmVzb2x2ZX0pO1xyXG4gICAgICAgICAgICBpZiAoIWZpbHRlcikgcmV0dXJuO1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNvbXBvbmVudCBvZiB1bmtub3duQ29tcG9uZW50cykge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFmaWx0ZXIoY29tcG9uZW50KSkgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICBjb21wb25lbnQuZGlzcGxheU5hbWUgPSBuYW1lO1xyXG4gICAgICAgICAgICAgICAgdW5rbm93bkNvbXBvbmVudHMuZGVsZXRlKGNvbXBvbmVudCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFkZE5hbWVkQ29tcG9uZW50KGNvbXBvbmVudCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBhZGROYW1lZENvbXBvbmVudChjb21wb25lbnQpIHtcclxuICAgICAgICBjb25zdCBuYW1lID0gY29tcG9uZW50LmRpc3BsYXlOYW1lO1xyXG4gICAgICAgIGlmICghY29tcG9uZW50c1tuYW1lXSkge1xyXG4gICAgICAgICAgICBjb21wb25lbnRzW25hbWVdID0gY29tcG9uZW50O1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGxpc3RlbmVyIG9mIGxpc3RlbmVycykge1xyXG4gICAgICAgICAgICAgICAgaWYgKGxpc3RlbmVyLm5hbWUgIT09IG5hbWUpIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgbGlzdGVuZXIucmVzb2x2ZShjb21wb25lbnQpO1xyXG4gICAgICAgICAgICAgICAgbGlzdGVuZXJzLmRlbGV0ZShsaXN0ZW5lcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgYWRkVW5rbm93bkNvbXBvbmVudChjb21wb25lbnQpIHtcclxuICAgICAgICBpZiAodW5rbm93bkNvbXBvbmVudHMuaGFzKGNvbXBvbmVudCkpIHJldHVybjtcclxuICAgICAgICBmb3IgKGNvbnN0IGxpc3RlbmVyIG9mIGxpc3RlbmVycykge1xyXG4gICAgICAgICAgICBpZiAoIWxpc3RlbmVyLmZpbHRlciB8fCAhbGlzdGVuZXIuZmlsdGVyKGNvbXBvbmVudCkpIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICBjb21wb25lbnQuZGlzcGxheU5hbWUgPSBsaXN0ZW5lci5uYW1lO1xyXG4gICAgICAgICAgICB0aGlzLmFkZE5hbWVkQ29tcG9uZW50KGNvbXBvbmVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghY29tcG9uZW50LmRpc3BsYXlOYW1lKSB1bmtub3duQ29tcG9uZW50cy5hZGQoY29tcG9uZW50KTtcclxuICAgIH1cclxuXHJcbiAgICBhZGRDb21wb25lbnQoY29tcG9uZW50KSB7XHJcbiAgICAgICAgaWYgKGNvbXBvbmVudC5kaXNwbGF5TmFtZSkgcmV0dXJuIHRoaXMuYWRkTmFtZWRDb21wb25lbnQoY29tcG9uZW50KTtcclxuICAgICAgICByZXR1cm4gdGhpcy5hZGRVbmtub3duQ29tcG9uZW50KGNvbXBvbmVudCk7XHJcbiAgICB9XHJcblxyXG4gICAgd2Fsa1JlbmRlclRyZWUodHJlZSkge1xyXG4gICAgICAgIGlmICghdHJlZSkgcmV0dXJuO1xyXG4gICAgICAgIGlmICh0eXBlb2YodHJlZS50eXBlKSA9PSBcImZ1bmN0aW9uXCIpIHRoaXMuYWRkQ29tcG9uZW50KHRyZWUudHlwZSk7XHJcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodHJlZSkpIGZvciAoY29uc3QgdmFsdWUgb2YgdHJlZSkgdGhpcy53YWxrUmVuZGVyVHJlZSh2YWx1ZSk7XHJcbiAgICAgICAgaWYgKHRyZWUucHJvcHMgJiYgdHJlZS5wcm9wcy5jaGlsZHJlbikgdGhpcy53YWxrUmVuZGVyVHJlZSh0cmVlLnByb3BzLmNoaWxkcmVuKTtcclxuICAgIH1cclxuXHJcbiAgICB3YWxrUmVhY3RUcmVlKHRyZWUpIHtcclxuICAgICAgICBpZiAoIXRyZWUpIHJldHVybjtcclxuICAgICAgICBpZiAodHlwZW9mKHRyZWUudHlwZSkgPT0gXCJmdW5jdGlvblwiKSB0aGlzLmFkZENvbXBvbmVudCh0cmVlLnR5cGUpO1xyXG4gICAgICAgIGlmICh0cmVlLmNoaWxkKSB0aGlzLndhbGtSZWFjdFRyZWUodHJlZS5jaGlsZCk7XHJcbiAgICAgICAgaWYgKHRyZWUuc2libGluZykgdGhpcy53YWxrUmVhY3RUcmVlKHRyZWUuc2libGluZyk7XHJcbiAgICB9XHJcbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/reactcomponents.js\n");
/***/ }),
/***/ "./src/modules/settingsmanager.js":
/*!****************************************!*\
!*** ./src/modules/settingsmanager.js ***!
\****************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _data_data_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../data/data.js */ \"./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_data_js__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/YjJmOSJdLCJuYW1lcyI6WyJTZXR0aW5nc01hbmFnZXIiLCJjb25zdHJ1Y3RvciIsInN0YXRlIiwiY29sbGVjdGlvbnMiLCJwYW5lbHMiLCJ1cGRhdGVTdHJpbmdzIiwiYmluZCIsImluaXRpYWxpemUiLCJyZWdpc3RlckNvbGxlY3Rpb24iLCJTZXR0aW5nc0NvbmZpZyIsIkV2ZW50cyIsIm9uIiwiaWQiLCJuYW1lIiwic2V0dGluZ3MiLCJidXR0b24iLCJmaW5kIiwiYyIsIkxvZ2dlciIsImVycm9yIiwicHVzaCIsInR5cGUiLCJzZXR1cENvbGxlY3Rpb24iLCJsb2FkQ29sbGVjdGlvbiIsInJlbW92ZUNvbGxlY3Rpb24iLCJsb2NhdGlvbiIsImZpbmRJbmRleCIsInNwbGljZSIsInJlZ2lzdGVyUGFuZWwiLCJvcHRpb25zIiwicCIsImVsZW1lbnQiLCJvbkNsaWNrIiwib3JkZXIiLCJzZWN0aW9uIiwibGFiZWwiLCJjbGlja0xpc3RlbmVyIiwiRGlzY29yZE1vZHVsZXMiLCJSZWFjdCIsIkNvbXBvbmVudCIsImNyZWF0ZUVsZW1lbnQiLCJyZW1vdmVQYW5lbCIsImdldFBhdGgiLCJwYXRoIiwiY29sbGVjdGlvbklkIiwiY2F0ZWdvcnlJZCIsImNvbGxlY3Rpb24iLCJsZW5ndGgiLCJjYXRlZ29yeSIsInNldHRpbmciLCJjYXRlZ29yaWVzIiwiY2MiLCJoYXNPd25Qcm9wZXJ0eSIsInZhbHVlIiwicyIsImVuYWJsZVdpdGgiLCJkaXNhYmxlV2l0aCIsInBhdGhTdHJpbmciLCJzcGxpdCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0Iiwib3RoZXIiLCJzYXZlU2V0dGluZ3MiLCJzYXZlQ29sbGVjdGlvbiIsImxvYWRTZXR0aW5ncyIsIkRhdGFTdG9yZSIsInNldERhdGEiLCJwcmV2aW91c1N0YXRlIiwiZ2V0RGF0YSIsImFzc2lnbiIsInVuZGVmaW5lZCIsInNldHRpbmdPYmoiLCJnZXRTZXR0aW5nIiwiZXhpc3RzIiwic29tZSIsIm8iLCJvblNldHRpbmdDaGFuZ2UiLCJkaXNwYXRjaCIsImFyZ3VtZW50cyIsInNldCIsImlkZW50aWZpZXIiLCJjYWxsYmFjayIsImhhbmRsZXIiLCJjb2wiLCJjYXQiLCJvZmYiLCJDUyIsIlN0cmluZ3MiLCJDb2xsZWN0aW9ucyIsIkNhdFN0ciIsIlNldFN0ciIsIm5vdGUiLCJvcHQiLCJwYW5lbCIsIlN0ciIsIlBhbmVscyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFZSxtRUFBSSxNQUFNQSxlQUFOLENBQXNCO0FBRXJDQyxhQUFXLEdBQUc7QUFDVixTQUFLQyxLQUFMLEdBQWEsRUFBYjtBQUNBLFNBQUtDLFdBQUwsR0FBbUIsRUFBbkI7QUFDQSxTQUFLQyxNQUFMLEdBQWMsRUFBZDtBQUNBLFNBQUtDLGFBQUwsR0FBcUIsS0FBS0EsYUFBTCxDQUFtQkMsSUFBbkIsQ0FBd0IsSUFBeEIsQ0FBckI7QUFDSDs7QUFFREMsWUFBVSxHQUFHO0FBQ1QsU0FBS0Msa0JBQUwsQ0FBd0IsVUFBeEIsRUFBb0MsVUFBcEMsRUFBZ0RDLDREQUFoRDtBQUNBQyxvREFBTSxDQUFDQyxFQUFQLENBQVUsaUJBQVYsRUFBNkIsS0FBS04sYUFBbEMsRUFGUyxDQUdUO0FBQ0g7O0FBRURHLG9CQUFrQixDQUFDSSxFQUFELEVBQUtDLElBQUwsRUFBV0MsUUFBWCxFQUFxQkMsTUFBTSxHQUFHLElBQTlCLEVBQW9DO0FBQ2xELFFBQUksS0FBS1osV0FBTCxDQUFpQmEsSUFBakIsQ0FBc0JDLENBQUMsSUFBSUEsQ0FBQyxDQUFDTCxFQUFGLElBQVFBLEVBQW5DLENBQUosRUFBNEMsT0FBT00sK0NBQU0sQ0FBQ0MsS0FBUCxDQUFhLFVBQWIsRUFBeUIsdUNBQXVDUCxFQUFoRSxDQUFQO0FBQzVDLFNBQUtULFdBQUwsQ0FBaUJpQixJQUFqQixDQUFzQjtBQUNsQkMsVUFBSSxFQUFFLFlBRFk7QUFFbEJULFFBQUUsRUFBRUEsRUFGYztBQUdsQkMsVUFBSSxFQUFFQSxJQUhZO0FBSWxCQyxjQUFRLEVBQUVBLFFBSlE7QUFLbEJDLFlBQU0sRUFBRUE7QUFMVSxLQUF0QjtBQU9BLFNBQUtPLGVBQUwsQ0FBcUJWLEVBQXJCO0FBQ0EsU0FBS1csY0FBTCxDQUFvQlgsRUFBcEI7QUFDQSxTQUFLUCxhQUFMO0FBQ0g7O0FBRURtQixrQkFBZ0IsQ0FBQ1osRUFBRCxFQUFLO0FBQ2pCLFVBQU1hLFFBQVEsR0FBRyxLQUFLdEIsV0FBTCxDQUFpQnVCLFNBQWpCLENBQTJCVCxDQUFDLElBQUlBLENBQUMsQ0FBQ0wsRUFBRixJQUFRQSxFQUF4QyxDQUFqQjtBQUNBLFFBQUksQ0FBQ2EsUUFBRCxHQUFZLENBQWhCLEVBQW1CLE9BQU9QLCtDQUFNLENBQUNDLEtBQVAsQ0FBYSxVQUFiLEVBQXlCLDJCQUEyQlAsRUFBcEQsQ0FBUDtBQUNuQixTQUFLVCxXQUFMLENBQWlCd0IsTUFBakIsQ0FBd0JGLFFBQXhCLEVBQWtDLENBQWxDO0FBQ0gsR0FqQ29DLENBbUNyQzs7O0FBQ0FHLGVBQWEsQ0FBQ2hCLEVBQUQsRUFBS0MsSUFBTCxFQUFXZ0IsT0FBWCxFQUFvQjtBQUM3QixRQUFJLEtBQUt6QixNQUFMLENBQVlZLElBQVosQ0FBaUJjLENBQUMsSUFBSUEsQ0FBQyxDQUFDbEIsRUFBRixJQUFRQSxFQUE5QixDQUFKLEVBQXVDLE9BQU9NLCtDQUFNLENBQUNDLEtBQVAsQ0FBYSxVQUFiLEVBQXlCLGtDQUFrQ1AsRUFBM0QsQ0FBUDtBQUN2QyxVQUFNO0FBQUNtQixhQUFEO0FBQVVDLGFBQVY7QUFBbUJDLFdBQUssR0FBRztBQUEzQixRQUFnQ0osT0FBdEM7QUFDQSxVQUFNSyxPQUFPLEdBQUc7QUFBQ3RCLFFBQUQ7QUFBS3FCLFdBQUw7QUFBWUUsV0FBSyxFQUFFdEIsSUFBbkI7QUFBeUJxQixhQUFPLEVBQUV0QjtBQUFsQyxLQUFoQjtBQUNBLFFBQUlvQixPQUFKLEVBQWFFLE9BQU8sQ0FBQ0UsYUFBUixHQUF3QkosT0FBeEI7QUFDYixRQUFJRCxPQUFKLEVBQWFHLE9BQU8sQ0FBQ0gsT0FBUixHQUFrQkEsT0FBTyxZQUFZTSx1REFBYyxDQUFDQyxLQUFmLENBQXFCQyxTQUF4QyxHQUFvRCxNQUFNRix1REFBYyxDQUFDQyxLQUFmLENBQXFCRSxhQUFyQixDQUFtQ1QsT0FBbkMsRUFBNEMsRUFBNUMsQ0FBMUQsR0FBNEcsT0FBT0EsT0FBUCxJQUFtQixVQUFuQixHQUFnQ0EsT0FBaEMsR0FBMEMsTUFBTUEsT0FBOUs7QUFDYixTQUFLM0IsTUFBTCxDQUFZZ0IsSUFBWixDQUFpQmMsT0FBakI7QUFDSDs7QUFFRE8sYUFBVyxDQUFDN0IsRUFBRCxFQUFLO0FBQ1osVUFBTWEsUUFBUSxHQUFHLEtBQUtyQixNQUFMLENBQVlzQixTQUFaLENBQXNCVCxDQUFDLElBQUlBLENBQUMsQ0FBQ0wsRUFBRixJQUFRQSxFQUFuQyxDQUFqQjtBQUNBLFFBQUksQ0FBQ2EsUUFBRCxHQUFZLENBQWhCLEVBQW1CLE9BQU9QLCtDQUFNLENBQUNDLEtBQVAsQ0FBYSxVQUFiLEVBQXlCLDJCQUEyQlAsRUFBcEQsQ0FBUDtBQUNuQixTQUFLUixNQUFMLENBQVl1QixNQUFaLENBQW1CRixRQUFuQixFQUE2QixDQUE3QjtBQUNIOztBQUVEaUIsU0FBTyxDQUFDQyxJQUFELEVBQU9DLFlBQVksR0FBRyxFQUF0QixFQUEwQkMsVUFBVSxHQUFHLEVBQXZDLEVBQTJDO0FBQzlDLFVBQU1DLFVBQVUsR0FBR0gsSUFBSSxDQUFDSSxNQUFMLElBQWUsQ0FBZixHQUFtQkosSUFBSSxDQUFDLENBQUQsQ0FBdkIsR0FBNkJDLFlBQWhEO0FBQ0EsVUFBTUksUUFBUSxHQUFHTCxJQUFJLENBQUNJLE1BQUwsSUFBZSxDQUFmLEdBQW1CSixJQUFJLENBQUMsQ0FBRCxDQUF2QixHQUE2QkEsSUFBSSxDQUFDSSxNQUFMLElBQWUsQ0FBZixHQUFtQkosSUFBSSxDQUFDLENBQUQsQ0FBdkIsR0FBNkJFLFVBQTNFO0FBQ0EsVUFBTUksT0FBTyxHQUFHTixJQUFJLENBQUNBLElBQUksQ0FBQ0ksTUFBTCxHQUFjLENBQWYsQ0FBcEI7QUFDQSxXQUFPO0FBQUNELGdCQUFEO0FBQWFFLGNBQWI7QUFBdUJDO0FBQXZCLEtBQVA7QUFDSDs7QUFFRDNCLGlCQUFlLENBQUNWLEVBQUQsRUFBSztBQUNoQixVQUFNa0MsVUFBVSxHQUFHLEtBQUszQyxXQUFMLENBQWlCYSxJQUFqQixDQUFzQkMsQ0FBQyxJQUFJQSxDQUFDLENBQUNMLEVBQUYsSUFBUUEsRUFBbkMsQ0FBbkI7QUFDQSxRQUFJLENBQUNrQyxVQUFMLEVBQWlCO0FBQ2pCLFVBQU1JLFVBQVUsR0FBR0osVUFBVSxDQUFDaEMsUUFBOUI7QUFDQSxRQUFJLENBQUMsS0FBS1osS0FBTCxDQUFXNEMsVUFBVSxDQUFDbEMsRUFBdEIsQ0FBTCxFQUFnQyxLQUFLVixLQUFMLENBQVc0QyxVQUFVLENBQUNsQyxFQUF0QixJQUE0QixFQUE1Qjs7QUFDaEMsU0FBSyxJQUFJdUMsRUFBRSxHQUFHLENBQWQsRUFBaUJBLEVBQUUsR0FBR0QsVUFBVSxDQUFDSCxNQUFqQyxFQUF5Q0ksRUFBRSxFQUEzQyxFQUErQztBQUMzQyxZQUFNSCxRQUFRLEdBQUdFLFVBQVUsQ0FBQ0MsRUFBRCxDQUEzQjs7QUFDQSxVQUFJSCxRQUFRLENBQUMzQixJQUFULElBQWlCLFVBQXJCLEVBQWlDO0FBQUMsWUFBSSxDQUFDLEtBQUtuQixLQUFMLENBQVc0QyxVQUFVLENBQUNsQyxFQUF0QixFQUEwQndDLGNBQTFCLENBQXlDSixRQUFRLENBQUNwQyxFQUFsRCxDQUFMLEVBQTRELEtBQUtWLEtBQUwsQ0FBVzRDLFVBQVUsQ0FBQ2xDLEVBQXRCLEVBQTBCb0MsUUFBUSxDQUFDcEMsRUFBbkMsSUFBeUNvQyxRQUFRLENBQUNLLEtBQWxEO0FBQXlELE9BQXZKLE1BQ0s7QUFDRCxZQUFJLENBQUMsS0FBS25ELEtBQUwsQ0FBVzRDLFVBQVUsQ0FBQ2xDLEVBQXRCLEVBQTBCd0MsY0FBMUIsQ0FBeUNKLFFBQVEsQ0FBQ3BDLEVBQWxELENBQUwsRUFBNEQsS0FBS1YsS0FBTCxDQUFXNEMsVUFBVSxDQUFDbEMsRUFBdEIsRUFBMEJvQyxRQUFRLENBQUNwQyxFQUFuQyxJQUF5QyxFQUF6Qzs7QUFDNUQsYUFBSyxJQUFJMEMsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR04sUUFBUSxDQUFDbEMsUUFBVCxDQUFrQmlDLE1BQXRDLEVBQThDTyxDQUFDLEVBQS9DLEVBQW1EO0FBQy9DLGdCQUFNTCxPQUFPLEdBQUdELFFBQVEsQ0FBQ2xDLFFBQVQsQ0FBa0J3QyxDQUFsQixDQUFoQjtBQUNBLGNBQUksQ0FBQyxLQUFLcEQsS0FBTCxDQUFXNEMsVUFBVSxDQUFDbEMsRUFBdEIsRUFBMEJvQyxRQUFRLENBQUNwQyxFQUFuQyxFQUF1Q3dDLGNBQXZDLENBQXNESCxPQUFPLENBQUNyQyxFQUE5RCxDQUFMLEVBQXdFLEtBQUtWLEtBQUwsQ0FBVzRDLFVBQVUsQ0FBQ2xDLEVBQXRCLEVBQTBCb0MsUUFBUSxDQUFDcEMsRUFBbkMsRUFBdUNxQyxPQUFPLENBQUNyQyxFQUEvQyxJQUFxRHFDLE9BQU8sQ0FBQ0ksS0FBN0Q7QUFDeEUsY0FBSUosT0FBTyxDQUFDRyxjQUFSLENBQXVCLFVBQXZCLENBQUosRUFBd0M7QUFDeEMsY0FBSSxDQUFDSCxPQUFPLENBQUNNLFVBQVQsSUFBdUIsQ0FBQ04sT0FBTyxDQUFDTyxXQUFwQyxFQUFpRDtBQUNqRCxnQkFBTUMsVUFBVSxHQUFHUixPQUFPLENBQUNNLFVBQVIsSUFBc0JOLE9BQU8sQ0FBQ08sV0FBakQ7QUFDQSxnQkFBTWIsSUFBSSxHQUFHLEtBQUtELE9BQUwsQ0FBYWUsVUFBVSxDQUFDQyxLQUFYLENBQWlCLEdBQWpCLENBQWIsRUFBb0NaLFVBQVUsQ0FBQ2xDLEVBQS9DLEVBQW1Eb0MsUUFBUSxDQUFDcEMsRUFBNUQsQ0FBYjtBQUNBK0MsZ0JBQU0sQ0FBQ0MsY0FBUCxDQUFzQlgsT0FBdEIsRUFBK0IsVUFBL0IsRUFBMkM7QUFDdkNZLGVBQUcsRUFBRSxNQUFNO0FBQ1Asb0JBQU1DLEtBQUssR0FBRyxLQUFLNUQsS0FBTCxDQUFXeUMsSUFBSSxDQUFDRyxVQUFoQixFQUE0QkgsSUFBSSxDQUFDSyxRQUFqQyxFQUEyQ0wsSUFBSSxDQUFDTSxPQUFoRCxDQUFkO0FBQ0EscUJBQU9BLE9BQU8sQ0FBQ00sVUFBUixHQUFxQixDQUFDTyxLQUF0QixHQUE4QkEsS0FBckM7QUFDSDtBQUpzQyxXQUEzQztBQU1IO0FBQ0o7QUFDSjtBQUNKOztBQUVEQyxjQUFZLEdBQUc7QUFDWCxTQUFLLE1BQU1qQixVQUFYLElBQXlCLEtBQUs1QyxLQUE5QixFQUFxQyxLQUFLOEQsY0FBTCxDQUFvQmxCLFVBQXBCO0FBQ3hDOztBQUVEbUIsY0FBWSxHQUFHO0FBQ1gsU0FBSyxNQUFNbkIsVUFBWCxJQUF5QixLQUFLNUMsS0FBOUIsRUFBcUMsS0FBS3FCLGNBQUwsQ0FBb0J1QixVQUFwQjtBQUN4Qzs7QUFFRGtCLGdCQUFjLENBQUNsQixVQUFELEVBQWE7QUFDdkJvQixzREFBUyxDQUFDQyxPQUFWLENBQWtCckIsVUFBbEIsRUFBOEIsS0FBSzVDLEtBQUwsQ0FBVzRDLFVBQVgsQ0FBOUI7QUFDSDs7QUFFRHZCLGdCQUFjLENBQUNYLEVBQUQsRUFBSztBQUNmLFVBQU13RCxhQUFhLEdBQUdGLGtEQUFTLENBQUNHLE9BQVYsQ0FBa0J6RCxFQUFsQixDQUF0QjtBQUNBLFFBQUksQ0FBQ3dELGFBQUwsRUFBb0IsT0FBTyxLQUFLSixjQUFMLENBQW9CcEQsRUFBcEIsQ0FBUDs7QUFDcEIsU0FBSyxNQUFNb0MsUUFBWCxJQUF1QixLQUFLOUMsS0FBTCxDQUFXVSxFQUFYLENBQXZCLEVBQXVDO0FBQ25DLFVBQUksQ0FBQ3dELGFBQWEsQ0FBQ3BCLFFBQUQsQ0FBbEIsRUFBOEJXLE1BQU0sQ0FBQ1csTUFBUCxDQUFjRixhQUFkLEVBQTZCO0FBQUMsU0FBQ3BCLFFBQUQsR0FBWSxLQUFLOUMsS0FBTCxDQUFXVSxFQUFYLEVBQWVvQyxRQUFmO0FBQWIsT0FBN0I7O0FBQzlCLFdBQUssTUFBTUMsT0FBWCxJQUFzQixLQUFLL0MsS0FBTCxDQUFXVSxFQUFYLEVBQWVvQyxRQUFmLENBQXRCLEVBQWdEO0FBQzVDLFlBQUlvQixhQUFhLENBQUNwQixRQUFELENBQWIsQ0FBd0JDLE9BQXhCLEtBQW9Dc0IsU0FBeEMsRUFBbUQ7QUFDbkQsY0FBTUMsVUFBVSxHQUFHLEtBQUtDLFVBQUwsQ0FBZ0I3RCxFQUFoQixFQUFvQm9DLFFBQXBCLEVBQThCQyxPQUE5QixDQUFuQjtBQUNBLFlBQUl1QixVQUFVLENBQUNuRCxJQUFYLElBQW1CLFFBQXZCLEVBQWlDLEtBQUtuQixLQUFMLENBQVdVLEVBQVgsRUFBZW9DLFFBQWYsRUFBeUJDLE9BQXpCLElBQW9DbUIsYUFBYSxDQUFDcEIsUUFBRCxDQUFiLENBQXdCQyxPQUF4QixDQUFwQzs7QUFDakMsWUFBSXVCLFVBQVUsQ0FBQ25ELElBQVgsSUFBbUIsVUFBdkIsRUFBbUM7QUFDL0IsZ0JBQU1xRCxNQUFNLEdBQUdGLFVBQVUsQ0FBQzNDLE9BQVgsQ0FBbUI4QyxJQUFuQixDQUF3QkMsQ0FBQyxJQUFJQSxDQUFDLENBQUN2QixLQUFGLElBQVdlLGFBQWEsQ0FBQ3BCLFFBQUQsQ0FBYixDQUF3QkMsT0FBeEIsQ0FBeEMsQ0FBZjtBQUNBLGNBQUl5QixNQUFKLEVBQVksS0FBS3hFLEtBQUwsQ0FBV1UsRUFBWCxFQUFlb0MsUUFBZixFQUF5QkMsT0FBekIsSUFBb0NtQixhQUFhLENBQUNwQixRQUFELENBQWIsQ0FBd0JDLE9BQXhCLENBQXBDO0FBQ2Y7QUFDSjtBQUNKOztBQUVELFNBQUtlLGNBQUwsQ0FBb0JwRCxFQUFwQixFQWhCZSxDQWdCVTtBQUM1Qjs7QUFFRGlFLGlCQUFlLENBQUMvQixVQUFELEVBQWFFLFFBQWIsRUFBdUJwQyxFQUF2QixFQUEyQnlDLEtBQTNCLEVBQWtDO0FBQzdDLFNBQUtuRCxLQUFMLENBQVc0QyxVQUFYLEVBQXVCRSxRQUF2QixFQUFpQ3BDLEVBQWpDLElBQXVDeUMsS0FBdkM7QUFDQTNDLG9EQUFNLENBQUNvRSxRQUFQLENBQWdCLGlCQUFoQixFQUFtQ2hDLFVBQW5DLEVBQStDRSxRQUEvQyxFQUF5RHBDLEVBQXpELEVBQTZEeUMsS0FBN0Q7QUFDQSxTQUFLVyxjQUFMLENBQW9CbEIsVUFBcEI7QUFDSDs7QUFFRDJCLFlBQVUsQ0FBQzNCLFVBQUQsRUFBYUUsUUFBYixFQUF1QnBDLEVBQXZCLEVBQTJCO0FBQ2pDLFFBQUltRSxTQUFTLENBQUNoQyxNQUFWLElBQW9CLENBQXhCLEVBQTJCLE9BQU8sS0FBSzVDLFdBQUwsQ0FBaUIsQ0FBakIsRUFBb0JhLElBQXBCLENBQXlCQyxDQUFDLElBQUlBLENBQUMsQ0FBQ0wsRUFBRixJQUFRbUUsU0FBUyxDQUFDLENBQUQsQ0FBL0MsRUFBb0RqRSxRQUFwRCxDQUE2REUsSUFBN0QsQ0FBa0VzQyxDQUFDLElBQUlBLENBQUMsQ0FBQzFDLEVBQUYsSUFBUW1FLFNBQVMsQ0FBQyxDQUFELENBQXhGLENBQVA7QUFDM0IsV0FBTyxLQUFLNUUsV0FBTCxDQUFpQmEsSUFBakIsQ0FBc0JDLENBQUMsSUFBSUEsQ0FBQyxDQUFDTCxFQUFGLElBQVFrQyxVQUFuQyxFQUErQ2hDLFFBQS9DLENBQXdERSxJQUF4RCxDQUE2REMsQ0FBQyxJQUFJQSxDQUFDLENBQUNMLEVBQUYsSUFBUW9DLFFBQTFFLEVBQW9GbEMsUUFBcEYsQ0FBNkZFLElBQTdGLENBQWtHc0MsQ0FBQyxJQUFJQSxDQUFDLENBQUMxQyxFQUFGLElBQVFBLEVBQS9HLENBQVA7QUFDSDs7QUFFRGlELEtBQUcsQ0FBQ2YsVUFBRCxFQUFhRSxRQUFiLEVBQXVCcEMsRUFBdkIsRUFBMkI7QUFDMUIsUUFBSW1FLFNBQVMsQ0FBQ2hDLE1BQVYsSUFBb0IsQ0FBeEIsRUFBMkI7QUFDdkJuQyxRQUFFLEdBQUdvQyxRQUFMO0FBQ0FBLGNBQVEsR0FBR0YsVUFBWDtBQUNBQSxnQkFBVSxHQUFHLFVBQWI7QUFDSDs7QUFDRCxRQUFJLENBQUMsS0FBSzVDLEtBQUwsQ0FBVzRDLFVBQVgsQ0FBRCxJQUEyQixDQUFDLEtBQUs1QyxLQUFMLENBQVc0QyxVQUFYLEVBQXVCRSxRQUF2QixDQUFoQyxFQUFrRSxPQUFPLEtBQVA7QUFDbEUsV0FBTyxLQUFLOUMsS0FBTCxDQUFXNEMsVUFBWCxFQUF1QkUsUUFBdkIsRUFBaUNwQyxFQUFqQyxDQUFQO0FBQ0g7O0FBRURvRSxLQUFHLENBQUNsQyxVQUFELEVBQWFFLFFBQWIsRUFBdUJwQyxFQUF2QixFQUEyQnlDLEtBQTNCLEVBQWtDO0FBQ2pDLFFBQUkwQixTQUFTLENBQUNoQyxNQUFWLElBQW9CLENBQXhCLEVBQTJCO0FBQ3ZCTSxXQUFLLEdBQUd6QyxFQUFSO0FBQ0FBLFFBQUUsR0FBR29DLFFBQUw7QUFDQUEsY0FBUSxHQUFHRixVQUFYO0FBQ0FBLGdCQUFVLEdBQUcsVUFBYjtBQUNIOztBQUNELFdBQU8sS0FBSytCLGVBQUwsQ0FBcUIvQixVQUFyQixFQUFpQ0UsUUFBakMsRUFBMkNwQyxFQUEzQyxFQUErQ3lDLEtBQS9DLENBQVA7QUFDSDs7QUFFRDFDLElBQUUsQ0FBQ21DLFVBQUQsRUFBYUUsUUFBYixFQUF1QmlDLFVBQXZCLEVBQW1DQyxRQUFuQyxFQUE2QztBQUMzQyxVQUFNQyxPQUFPLEdBQUcsQ0FBQ0MsR0FBRCxFQUFNQyxHQUFOLEVBQVd6RSxFQUFYLEVBQWV5QyxLQUFmLEtBQXlCO0FBQ3JDLFVBQUkrQixHQUFHLEtBQUt0QyxVQUFSLElBQXNCdUMsR0FBRyxLQUFLckMsUUFBOUIsSUFBMENwQyxFQUFFLEtBQUtxRSxVQUFyRCxFQUFpRTtBQUNqRUMsY0FBUSxDQUFDN0IsS0FBRCxDQUFSO0FBQ0gsS0FIRDs7QUFJQTNDLG9EQUFNLENBQUNDLEVBQVAsQ0FBVSxpQkFBVixFQUE2QndFLE9BQTdCO0FBQ0EsV0FBTyxNQUFNO0FBQUN6RSxzREFBTSxDQUFDNEUsR0FBUCxDQUFXLGlCQUFYLEVBQThCSCxPQUE5QjtBQUF3QyxLQUF0RDtBQUNIOztBQUVEOUUsZUFBYSxHQUFHO0FBQ1o7QUFDQSxTQUFLLElBQUlZLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUcsS0FBS2QsV0FBTCxDQUFpQjRDLE1BQXJDLEVBQTZDOUIsQ0FBQyxFQUE5QyxFQUFrRDtBQUM5QyxZQUFNNkIsVUFBVSxHQUFHLEtBQUszQyxXQUFMLENBQWlCYyxDQUFqQixDQUFuQjtBQUNBLFlBQU1zRSxFQUFFLEdBQUdDLGdEQUFPLENBQUNDLFdBQVIsQ0FBb0IzQyxVQUFVLENBQUNsQyxFQUEvQixDQUFYO0FBQ0EsVUFBSSxDQUFDMkUsRUFBTCxFQUFTO0FBQ1R6QyxnQkFBVSxDQUFDakMsSUFBWCxHQUFrQjBFLEVBQUUsQ0FBQzFFLElBQUgsSUFBV2lDLFVBQVUsQ0FBQ2pDLElBQXhDO0FBQ0EsWUFBTXFDLFVBQVUsR0FBRyxLQUFLL0MsV0FBTCxDQUFpQmMsQ0FBakIsRUFBb0JILFFBQXZDOztBQUNBLFdBQUssSUFBSXVFLEdBQUcsR0FBRyxDQUFmLEVBQWtCQSxHQUFHLEdBQUduQyxVQUFVLENBQUNILE1BQW5DLEVBQTJDc0MsR0FBRyxFQUE5QyxFQUFrRDtBQUM5QyxjQUFNckMsUUFBUSxHQUFHRSxVQUFVLENBQUNtQyxHQUFELENBQTNCO0FBQ0EsY0FBTUssTUFBTSxHQUFHSCxFQUFFLENBQUN2QyxRQUFRLENBQUNwQyxFQUFWLENBQWpCO0FBQ0EsWUFBSSxDQUFDOEUsTUFBTCxFQUFhO0FBQ2IxQyxnQkFBUSxDQUFDbkMsSUFBVCxHQUFnQjZFLE1BQU0sQ0FBQzdFLElBQVAsSUFBZW1DLFFBQVEsQ0FBQ25DLElBQXhDOztBQUNBLGFBQUssSUFBSXlDLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUdOLFFBQVEsQ0FBQ2xDLFFBQVQsQ0FBa0JpQyxNQUF0QyxFQUE4Q08sQ0FBQyxFQUEvQyxFQUFtRDtBQUMvQyxnQkFBTUwsT0FBTyxHQUFHRCxRQUFRLENBQUNsQyxRQUFULENBQWtCd0MsQ0FBbEIsQ0FBaEI7QUFDQSxnQkFBTXFDLE1BQU0sR0FBR0QsTUFBTSxDQUFDekMsT0FBTyxDQUFDckMsRUFBVCxDQUFyQjtBQUNBLGNBQUksQ0FBQytFLE1BQUwsRUFBYTtBQUNiMUMsaUJBQU8sQ0FBQ3BDLElBQVIsR0FBZThFLE1BQU0sQ0FBQzlFLElBQVAsSUFBZW9DLE9BQU8sQ0FBQ3BDLElBQXRDO0FBQ0FvQyxpQkFBTyxDQUFDMkMsSUFBUixHQUFlRCxNQUFNLENBQUNDLElBQVAsSUFBZTNDLE9BQU8sQ0FBQzJDLElBQXRDO0FBQ0EsY0FBSSxDQUFDM0MsT0FBTyxDQUFDcEIsT0FBYixFQUFzQjs7QUFDdEIsZUFBSyxNQUFNZ0UsR0FBWCxJQUFrQjVDLE9BQU8sQ0FBQ3BCLE9BQTFCLEVBQW1DO0FBQy9CZ0UsZUFBRyxDQUFDMUQsS0FBSixHQUFZd0QsTUFBTSxDQUFDOUQsT0FBUCxDQUFlZ0UsR0FBRyxDQUFDakYsRUFBbkIsS0FBMEIrRSxNQUFNLENBQUM5RCxPQUFQLENBQWVnRSxHQUFHLENBQUN4QyxLQUFuQixDQUExQixJQUF1RHdDLEdBQUcsQ0FBQzFELEtBQXZFO0FBQ0g7QUFDSjtBQUNKO0FBQ0osS0F6QlcsQ0EyQlo7OztBQUNBLFNBQUssSUFBSUwsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBRyxLQUFLMUIsTUFBTCxDQUFZMkMsTUFBaEMsRUFBd0NqQixDQUFDLEVBQXpDLEVBQTZDO0FBQ3pDLFlBQU1nRSxLQUFLLEdBQUcsS0FBSzFGLE1BQUwsQ0FBWTBCLENBQVosQ0FBZDtBQUNBLFlBQU1pRSxHQUFHLEdBQUdQLGdEQUFPLENBQUNRLE1BQVIsQ0FBZUYsS0FBSyxDQUFDbEYsRUFBckIsQ0FBWjtBQUNBa0YsV0FBSyxDQUFDM0QsS0FBTixHQUFjNEQsR0FBRyxJQUFJRCxLQUFLLENBQUMzRCxLQUEzQjtBQUNIO0FBQ0o7O0FBOUxvQyxDQUExQixFQUFmIiwiZmlsZSI6Ii4vc3JjL21vZHVsZXMvc2V0dGluZ3NtYW5hZ2VyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtTZXR0aW5nc0NvbmZpZ30gZnJvbSBcImRhdGFcIjtcclxuaW1wb3J0IExvZ2dlciBmcm9tIFwiLi9sb2dnZXJcIjtcclxuaW1wb3J0IERhdGFTdG9yZSBmcm9tIFwiLi9kYXRhc3RvcmVcIjtcclxuaW1wb3J0IEV2ZW50cyBmcm9tIFwiLi9lbWl0dGVyXCI7XHJcbmltcG9ydCBEaXNjb3JkTW9kdWxlcyBmcm9tIFwiLi9kaXNjb3JkbW9kdWxlc1wiO1xyXG5pbXBvcnQgU3RyaW5ncyBmcm9tIFwiLi9zdHJpbmdzXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBuZXcgY2xhc3MgU2V0dGluZ3NNYW5hZ2VyIHtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICB0aGlzLnN0YXRlID0ge307XHJcbiAgICAgICAgdGhpcy5jb2xsZWN0aW9ucyA9IFtdO1xyXG4gICAgICAgIHRoaXMucGFuZWxzID0gW107XHJcbiAgICAgICAgdGhpcy51cGRhdGVTdHJpbmdzID0gdGhpcy51cGRhdGVTdHJpbmdzLmJpbmQodGhpcyk7XHJcbiAgICB9XHJcblxyXG4gICAgaW5pdGlhbGl6ZSgpIHtcclxuICAgICAgICB0aGlzLnJlZ2lzdGVyQ29sbGVjdGlvbihcInNldHRpbmdzXCIsIFwiU2V0dGluZ3NcIiwgU2V0dGluZ3NDb25maWcpO1xyXG4gICAgICAgIEV2ZW50cy5vbihcInN0cmluZ3MtdXBkYXRlZFwiLCB0aGlzLnVwZGF0ZVN0cmluZ3MpO1xyXG4gICAgICAgIC8vIHRoaXMucGF0Y2hTZWN0aW9ucygpO1xyXG4gICAgfVxyXG5cclxuICAgIHJlZ2lzdGVyQ29sbGVjdGlvbihpZCwgbmFtZSwgc2V0dGluZ3MsIGJ1dHRvbiA9IG51bGwpIHtcclxuICAgICAgICBpZiAodGhpcy5jb2xsZWN0aW9ucy5maW5kKGMgPT4gYy5pZCA9PSBpZCkpIHJldHVybiBMb2dnZXIuZXJyb3IoXCJTZXR0aW5nc1wiLCBcIkFscmVhZHkgaGF2ZSBhIGNvbGxlY3Rpb24gd2l0aCBpZCBcIiArIGlkKTtcclxuICAgICAgICB0aGlzLmNvbGxlY3Rpb25zLnB1c2goe1xyXG4gICAgICAgICAgICB0eXBlOiBcImNvbGxlY3Rpb25cIixcclxuICAgICAgICAgICAgaWQ6IGlkLFxyXG4gICAgICAgICAgICBuYW1lOiBuYW1lLFxyXG4gICAgICAgICAgICBzZXR0aW5nczogc2V0dGluZ3MsXHJcbiAgICAgICAgICAgIGJ1dHRvbjogYnV0dG9uXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5zZXR1cENvbGxlY3Rpb24oaWQpO1xyXG4gICAgICAgIHRoaXMubG9hZENvbGxlY3Rpb24oaWQpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlU3RyaW5ncygpO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbW92ZUNvbGxlY3Rpb24oaWQpIHtcclxuICAgICAgICBjb25zdCBsb2NhdGlvbiA9IHRoaXMuY29sbGVjdGlvbnMuZmluZEluZGV4KGMgPT4gYy5pZCA9PSBpZCk7XHJcbiAgICAgICAgaWYgKCFsb2NhdGlvbiA8IDApIHJldHVybiBMb2dnZXIuZXJyb3IoXCJTZXR0aW5nc1wiLCBcIk5vIGNvbGxlY3Rpb24gd2l0aCBpZCBcIiArIGlkKTtcclxuICAgICAgICB0aGlzLmNvbGxlY3Rpb25zLnNwbGljZShsb2NhdGlvbiwgMSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gVE9ETzogTW92ZSB0aGlzIHRvIFNldHRpbmdzUmVuZGVyZXIgYW5kIGFsc28gYWRkIGEgcmVnaXN0ZXJDb250ZW50UGFuZWxcclxuICAgIHJlZ2lzdGVyUGFuZWwoaWQsIG5hbWUsIG9wdGlvbnMpIHtcclxuICAgICAgICBpZiAodGhpcy5wYW5lbHMuZmluZChwID0+IHAuaWQgPT0gaWQpKSByZXR1cm4gTG9nZ2VyLmVycm9yKFwiU2V0dGluZ3NcIiwgXCJBbHJlYWR5IGhhdmUgYSBwYW5lbCB3aXRoIGlkIFwiICsgaWQpO1xyXG4gICAgICAgIGNvbnN0IHtlbGVtZW50LCBvbkNsaWNrLCBvcmRlciA9IDF9ID0gb3B0aW9ucztcclxuICAgICAgICBjb25zdCBzZWN0aW9uID0ge2lkLCBvcmRlciwgbGFiZWw6IG5hbWUsIHNlY3Rpb246IGlkfTtcclxuICAgICAgICBpZiAob25DbGljaykgc2VjdGlvbi5jbGlja0xpc3RlbmVyID0gb25DbGljaztcclxuICAgICAgICBpZiAoZWxlbWVudCkgc2VjdGlvbi5lbGVtZW50ID0gZWxlbWVudCBpbnN0YW5jZW9mIERpc2NvcmRNb2R1bGVzLlJlYWN0LkNvbXBvbmVudCA/ICgpID0+IERpc2NvcmRNb2R1bGVzLlJlYWN0LmNyZWF0ZUVsZW1lbnQoZWxlbWVudCwge30pIDogdHlwZW9mKGVsZW1lbnQpID09IFwiZnVuY3Rpb25cIiA/IGVsZW1lbnQgOiAoKSA9PiBlbGVtZW50O1xyXG4gICAgICAgIHRoaXMucGFuZWxzLnB1c2goc2VjdGlvbik7XHJcbiAgICB9XHJcblxyXG4gICAgcmVtb3ZlUGFuZWwoaWQpIHtcclxuICAgICAgICBjb25zdCBsb2NhdGlvbiA9IHRoaXMucGFuZWxzLmZpbmRJbmRleChjID0+IGMuaWQgPT0gaWQpO1xyXG4gICAgICAgIGlmICghbG9jYXRpb24gPCAwKSByZXR1cm4gTG9nZ2VyLmVycm9yKFwiU2V0dGluZ3NcIiwgXCJObyBjb2xsZWN0aW9uIHdpdGggaWQgXCIgKyBpZCk7XHJcbiAgICAgICAgdGhpcy5wYW5lbHMuc3BsaWNlKGxvY2F0aW9uLCAxKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRQYXRoKHBhdGgsIGNvbGxlY3Rpb25JZCA9IFwiXCIsIGNhdGVnb3J5SWQgPSBcIlwiKSB7XHJcbiAgICAgICAgY29uc3QgY29sbGVjdGlvbiA9IHBhdGgubGVuZ3RoID09IDMgPyBwYXRoWzBdIDogY29sbGVjdGlvbklkO1xyXG4gICAgICAgIGNvbnN0IGNhdGVnb3J5ID0gcGF0aC5sZW5ndGggPT0gMyA/IHBhdGhbMV0gOiBwYXRoLmxlbmd0aCA9PSAyID8gcGF0aFswXSA6IGNhdGVnb3J5SWQ7XHJcbiAgICAgICAgY29uc3Qgc2V0dGluZyA9IHBhdGhbcGF0aC5sZW5ndGggLSAxXTtcclxuICAgICAgICByZXR1cm4ge2NvbGxlY3Rpb24sIGNhdGVnb3J5LCBzZXR0aW5nfTtcclxuICAgIH1cclxuXHJcbiAgICBzZXR1cENvbGxlY3Rpb24oaWQpIHtcclxuICAgICAgICBjb25zdCBjb2xsZWN0aW9uID0gdGhpcy5jb2xsZWN0aW9ucy5maW5kKGMgPT4gYy5pZCA9PSBpZCk7XHJcbiAgICAgICAgaWYgKCFjb2xsZWN0aW9uKSByZXR1cm47XHJcbiAgICAgICAgY29uc3QgY2F0ZWdvcmllcyA9IGNvbGxlY3Rpb24uc2V0dGluZ3M7XHJcbiAgICAgICAgaWYgKCF0aGlzLnN0YXRlW2NvbGxlY3Rpb24uaWRdKSB0aGlzLnN0YXRlW2NvbGxlY3Rpb24uaWRdID0ge307XHJcbiAgICAgICAgZm9yIChsZXQgY2MgPSAwOyBjYyA8IGNhdGVnb3JpZXMubGVuZ3RoOyBjYysrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNhdGVnb3J5ID0gY2F0ZWdvcmllc1tjY107XHJcbiAgICAgICAgICAgIGlmIChjYXRlZ29yeS50eXBlICE9IFwiY2F0ZWdvcnlcIikge2lmICghdGhpcy5zdGF0ZVtjb2xsZWN0aW9uLmlkXS5oYXNPd25Qcm9wZXJ0eShjYXRlZ29yeS5pZCkpIHRoaXMuc3RhdGVbY29sbGVjdGlvbi5pZF1bY2F0ZWdvcnkuaWRdID0gY2F0ZWdvcnkudmFsdWU7fVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5zdGF0ZVtjb2xsZWN0aW9uLmlkXS5oYXNPd25Qcm9wZXJ0eShjYXRlZ29yeS5pZCkpIHRoaXMuc3RhdGVbY29sbGVjdGlvbi5pZF1bY2F0ZWdvcnkuaWRdID0ge307XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBzID0gMDsgcyA8IGNhdGVnb3J5LnNldHRpbmdzLmxlbmd0aDsgcysrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2V0dGluZyA9IGNhdGVnb3J5LnNldHRpbmdzW3NdO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5zdGF0ZVtjb2xsZWN0aW9uLmlkXVtjYXRlZ29yeS5pZF0uaGFzT3duUHJvcGVydHkoc2V0dGluZy5pZCkpIHRoaXMuc3RhdGVbY29sbGVjdGlvbi5pZF1bY2F0ZWdvcnkuaWRdW3NldHRpbmcuaWRdID0gc2V0dGluZy52YWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoc2V0dGluZy5oYXNPd25Qcm9wZXJ0eShcImRpc2FibGVkXCIpKSBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIXNldHRpbmcuZW5hYmxlV2l0aCAmJiAhc2V0dGluZy5kaXNhYmxlV2l0aCkgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcGF0aFN0cmluZyA9IHNldHRpbmcuZW5hYmxlV2l0aCB8fCBzZXR0aW5nLmRpc2FibGVXaXRoO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhdGggPSB0aGlzLmdldFBhdGgocGF0aFN0cmluZy5zcGxpdChcIi5cIiksIGNvbGxlY3Rpb24uaWQsIGNhdGVnb3J5LmlkKTtcclxuICAgICAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoc2V0dGluZywgXCJkaXNhYmxlZFwiLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGdldDogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb3RoZXIgPSB0aGlzLnN0YXRlW3BhdGguY29sbGVjdGlvbl1bcGF0aC5jYXRlZ29yeV1bcGF0aC5zZXR0aW5nXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZXR0aW5nLmVuYWJsZVdpdGggPyAhb3RoZXIgOiBvdGhlcjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHNhdmVTZXR0aW5ncygpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGNvbGxlY3Rpb24gaW4gdGhpcy5zdGF0ZSkgdGhpcy5zYXZlQ29sbGVjdGlvbihjb2xsZWN0aW9uKTtcclxuICAgIH1cclxuXHJcbiAgICBsb2FkU2V0dGluZ3MoKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBjb2xsZWN0aW9uIGluIHRoaXMuc3RhdGUpIHRoaXMubG9hZENvbGxlY3Rpb24oY29sbGVjdGlvbik7XHJcbiAgICB9XHJcblxyXG4gICAgc2F2ZUNvbGxlY3Rpb24oY29sbGVjdGlvbikge1xyXG4gICAgICAgIERhdGFTdG9yZS5zZXREYXRhKGNvbGxlY3Rpb24sIHRoaXMuc3RhdGVbY29sbGVjdGlvbl0pO1xyXG4gICAgfVxyXG5cclxuICAgIGxvYWRDb2xsZWN0aW9uKGlkKSB7XHJcbiAgICAgICAgY29uc3QgcHJldmlvdXNTdGF0ZSA9IERhdGFTdG9yZS5nZXREYXRhKGlkKTtcclxuICAgICAgICBpZiAoIXByZXZpb3VzU3RhdGUpIHJldHVybiB0aGlzLnNhdmVDb2xsZWN0aW9uKGlkKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGNhdGVnb3J5IGluIHRoaXMuc3RhdGVbaWRdKSB7XHJcbiAgICAgICAgICAgIGlmICghcHJldmlvdXNTdGF0ZVtjYXRlZ29yeV0pIE9iamVjdC5hc3NpZ24ocHJldmlvdXNTdGF0ZSwge1tjYXRlZ29yeV06IHRoaXMuc3RhdGVbaWRdW2NhdGVnb3J5XX0pO1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHNldHRpbmcgaW4gdGhpcy5zdGF0ZVtpZF1bY2F0ZWdvcnldKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAocHJldmlvdXNTdGF0ZVtjYXRlZ29yeV1bc2V0dGluZ10gPT0gdW5kZWZpbmVkKSBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHNldHRpbmdPYmogPSB0aGlzLmdldFNldHRpbmcoaWQsIGNhdGVnb3J5LCBzZXR0aW5nKTtcclxuICAgICAgICAgICAgICAgIGlmIChzZXR0aW5nT2JqLnR5cGUgPT0gXCJzd2l0Y2hcIikgdGhpcy5zdGF0ZVtpZF1bY2F0ZWdvcnldW3NldHRpbmddID0gcHJldmlvdXNTdGF0ZVtjYXRlZ29yeV1bc2V0dGluZ107XHJcbiAgICAgICAgICAgICAgICBpZiAoc2V0dGluZ09iai50eXBlID09IFwiZHJvcGRvd25cIikge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGV4aXN0cyA9IHNldHRpbmdPYmoub3B0aW9ucy5zb21lKG8gPT4gby52YWx1ZSA9PSBwcmV2aW91c1N0YXRlW2NhdGVnb3J5XVtzZXR0aW5nXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGV4aXN0cykgdGhpcy5zdGF0ZVtpZF1bY2F0ZWdvcnldW3NldHRpbmddID0gcHJldmlvdXNTdGF0ZVtjYXRlZ29yeV1bc2V0dGluZ107XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuc2F2ZUNvbGxlY3Rpb24oaWQpOyAvLyBpbiBjYXNlIG5ldyB0aGluZ3Mgd2VyZSBhZGRlZFxyXG4gICAgfVxyXG5cclxuICAgIG9uU2V0dGluZ0NoYW5nZShjb2xsZWN0aW9uLCBjYXRlZ29yeSwgaWQsIHZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5zdGF0ZVtjb2xsZWN0aW9uXVtjYXRlZ29yeV1baWRdID0gdmFsdWU7XHJcbiAgICAgICAgRXZlbnRzLmRpc3BhdGNoKFwic2V0dGluZy11cGRhdGVkXCIsIGNvbGxlY3Rpb24sIGNhdGVnb3J5LCBpZCwgdmFsdWUpO1xyXG4gICAgICAgIHRoaXMuc2F2ZUNvbGxlY3Rpb24oY29sbGVjdGlvbik7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0U2V0dGluZyhjb2xsZWN0aW9uLCBjYXRlZ29yeSwgaWQpIHtcclxuICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PSAyKSByZXR1cm4gdGhpcy5jb2xsZWN0aW9uc1swXS5maW5kKGMgPT4gYy5pZCA9PSBhcmd1bWVudHNbMF0pLnNldHRpbmdzLmZpbmQocyA9PiBzLmlkID09IGFyZ3VtZW50c1sxXSk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY29sbGVjdGlvbnMuZmluZChjID0+IGMuaWQgPT0gY29sbGVjdGlvbikuc2V0dGluZ3MuZmluZChjID0+IGMuaWQgPT0gY2F0ZWdvcnkpLnNldHRpbmdzLmZpbmQocyA9PiBzLmlkID09IGlkKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQoY29sbGVjdGlvbiwgY2F0ZWdvcnksIGlkKSB7XHJcbiAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT0gMikge1xyXG4gICAgICAgICAgICBpZCA9IGNhdGVnb3J5O1xyXG4gICAgICAgICAgICBjYXRlZ29yeSA9IGNvbGxlY3Rpb247XHJcbiAgICAgICAgICAgIGNvbGxlY3Rpb24gPSBcInNldHRpbmdzXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghdGhpcy5zdGF0ZVtjb2xsZWN0aW9uXSB8fCAhdGhpcy5zdGF0ZVtjb2xsZWN0aW9uXVtjYXRlZ29yeV0pIHJldHVybiBmYWxzZTtcclxuICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZVtjb2xsZWN0aW9uXVtjYXRlZ29yeV1baWRdO1xyXG4gICAgfVxyXG5cclxuICAgIHNldChjb2xsZWN0aW9uLCBjYXRlZ29yeSwgaWQsIHZhbHVlKSB7XHJcbiAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT0gMykge1xyXG4gICAgICAgICAgICB2YWx1ZSA9IGlkO1xyXG4gICAgICAgICAgICBpZCA9IGNhdGVnb3J5O1xyXG4gICAgICAgICAgICBjYXRlZ29yeSA9IGNvbGxlY3Rpb247XHJcbiAgICAgICAgICAgIGNvbGxlY3Rpb24gPSBcInNldHRpbmdzXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLm9uU2V0dGluZ0NoYW5nZShjb2xsZWN0aW9uLCBjYXRlZ29yeSwgaWQsIHZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBvbihjb2xsZWN0aW9uLCBjYXRlZ29yeSwgaWRlbnRpZmllciwgY2FsbGJhY2spIHtcclxuICAgICAgICBjb25zdCBoYW5kbGVyID0gKGNvbCwgY2F0LCBpZCwgdmFsdWUpID0+IHtcclxuICAgICAgICAgICAgaWYgKGNvbCAhPT0gY29sbGVjdGlvbiB8fCBjYXQgIT09IGNhdGVnb3J5IHx8IGlkICE9PSBpZGVudGlmaWVyKSByZXR1cm47XHJcbiAgICAgICAgICAgIGNhbGxiYWNrKHZhbHVlKTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIEV2ZW50cy5vbihcInNldHRpbmctdXBkYXRlZFwiLCBoYW5kbGVyKTtcclxuICAgICAgICByZXR1cm4gKCkgPT4ge0V2ZW50cy5vZmYoXCJzZXR0aW5nLXVwZGF0ZWRcIiwgaGFuZGxlcik7fTtcclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGVTdHJpbmdzKCkge1xyXG4gICAgICAgIC8vIFVwZGF0ZSBzZXR0aW5ncyBjb2xsZWN0aW9uc1xyXG4gICAgICAgIGZvciAobGV0IGMgPSAwOyBjIDwgdGhpcy5jb2xsZWN0aW9ucy5sZW5ndGg7IGMrKykge1xyXG4gICAgICAgICAgICBjb25zdCBjb2xsZWN0aW9uID0gdGhpcy5jb2xsZWN0aW9uc1tjXTtcclxuICAgICAgICAgICAgY29uc3QgQ1MgPSBTdHJpbmdzLkNvbGxlY3Rpb25zW2NvbGxlY3Rpb24uaWRdO1xyXG4gICAgICAgICAgICBpZiAoIUNTKSBjb250aW51ZTtcclxuICAgICAgICAgICAgY29sbGVjdGlvbi5uYW1lID0gQ1MubmFtZSB8fCBjb2xsZWN0aW9uLm5hbWU7XHJcbiAgICAgICAgICAgIGNvbnN0IGNhdGVnb3JpZXMgPSB0aGlzLmNvbGxlY3Rpb25zW2NdLnNldHRpbmdzO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBjYXQgPSAwOyBjYXQgPCBjYXRlZ29yaWVzLmxlbmd0aDsgY2F0KyspIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNhdGVnb3J5ID0gY2F0ZWdvcmllc1tjYXRdO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgQ2F0U3RyID0gQ1NbY2F0ZWdvcnkuaWRdO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFDYXRTdHIpIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgY2F0ZWdvcnkubmFtZSA9IENhdFN0ci5uYW1lIHx8IGNhdGVnb3J5Lm5hbWU7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBzID0gMDsgcyA8IGNhdGVnb3J5LnNldHRpbmdzLmxlbmd0aDsgcysrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2V0dGluZyA9IGNhdGVnb3J5LnNldHRpbmdzW3NdO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IFNldFN0ciA9IENhdFN0cltzZXR0aW5nLmlkXTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIVNldFN0cikgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICAgICAgc2V0dGluZy5uYW1lID0gU2V0U3RyLm5hbWUgfHwgc2V0dGluZy5uYW1lO1xyXG4gICAgICAgICAgICAgICAgICAgIHNldHRpbmcubm90ZSA9IFNldFN0ci5ub3RlIHx8IHNldHRpbmcubm90ZTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIXNldHRpbmcub3B0aW9ucykgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBvcHQgb2Ygc2V0dGluZy5vcHRpb25zKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdC5sYWJlbCA9IFNldFN0ci5vcHRpb25zW29wdC5pZF0gfHwgU2V0U3RyLm9wdGlvbnNbb3B0LnZhbHVlXSB8fCBvcHQubGFiZWw7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBVcGRhdGUgcGFuZWwgbGFiZWxzXHJcbiAgICAgICAgZm9yIChsZXQgcCA9IDA7IHAgPCB0aGlzLnBhbmVscy5sZW5ndGg7IHArKykge1xyXG4gICAgICAgICAgICBjb25zdCBwYW5lbCA9IHRoaXMucGFuZWxzW3BdO1xyXG4gICAgICAgICAgICBjb25zdCBTdHIgPSBTdHJpbmdzLlBhbmVsc1twYW5lbC5pZF07XHJcbiAgICAgICAgICAgIHBhbmVsLmxhYmVsID0gU3RyIHx8IHBhbmVsLmxhYmVsO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/modules/settingsmanager.js\n");
/***/ }),
/***/ "./src/modules/strings.js":
/*!********************************!*\
!*** ./src/modules/strings.js ***!
\********************************/
/*! exports provided: default */
/***/ (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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbW9kdWxlcy9zdHJpbmdzLmpzPzM1OWUiXSwibmFtZXMiOlsiUHJveHkiLCJMb2NhbGVNYW5hZ2VyIiwic3RyaW5ncyIsImdldCIsImNhdGVnb3J5IiwiaGFzT3duUHJvcGVydHkiLCJvYmoiLCJwcm9wIiwiRm9ybWF0dGFibGVTdHJpbmciXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFFZSxtRUFBSUEsS0FBSixDQUFVQyxzREFBYSxDQUFDQyxPQUF4QixFQUFpQztBQUMvQ0MsS0FBRyxFQUFFLFVBQVNELE9BQVQsRUFBa0JFLFFBQWxCLEVBQTRCO0FBQzFCLFFBQUksQ0FBQ0YsT0FBTyxDQUFDRyxjQUFSLENBQXVCRCxRQUF2QixDQUFMLEVBQXVDO0FBQzVDLGFBQU8sSUFBSUosS0FBSixDQUFVLEVBQVYsRUFBYztBQUNwQkcsV0FBRyxFQUFFLFlBQVc7QUFDZixpQkFBUSxpQkFBZ0JDLFFBQVMsY0FBakM7QUFDQTtBQUhtQixPQUFkLENBQVA7QUFLQTs7QUFDRCxXQUFPLElBQUlKLEtBQUosQ0FBVUUsT0FBTyxDQUFDRSxRQUFELENBQWpCLEVBQTZCO0FBQ25DRCxTQUFHLEVBQUUsVUFBU0csR0FBVCxFQUFjQyxJQUFkLEVBQW9CO0FBQ3hCLFlBQUksT0FBT0QsR0FBRyxDQUFDQyxJQUFELENBQVYsSUFBcUIsUUFBekIsRUFBbUMsT0FBTyxJQUFJQyx1REFBSixDQUFzQkYsR0FBRyxDQUFDQyxJQUFELENBQXpCLENBQVA7QUFDbkMsZUFBT0QsR0FBRyxDQUFDQyxJQUFELENBQVY7QUFDQTtBQUprQyxLQUE3QixDQUFQO0FBTUE7QUFmOEMsQ0FBakMsQ0FBZiIsImZpbGUiOiIuL3NyYy9tb2R1bGVzL3N0cmluZ3MuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9jYWxlTWFuYWdlciBmcm9tIFwiLi9sb2NhbGVtYW5hZ2VyXCI7XHJcbmltcG9ydCBGb3JtYXR0YWJsZVN0cmluZyBmcm9tIFwiLi4vc3RydWN0cy9zdHJpbmdcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IG5ldyBQcm94eShMb2NhbGVNYW5hZ2VyLnN0cmluZ3MsIHtcclxuXHRnZXQ6IGZ1bmN0aW9uKHN0cmluZ3MsIGNhdGVnb3J5KSB7XHJcbiAgICAgICAgaWYgKCFzdHJpbmdzLmhhc093blByb3BlcnR5KGNhdGVnb3J5KSkge1xyXG5cdFx0XHRyZXR1cm4gbmV3IFByb3h5KHt9LCB7XHJcblx0XHRcdFx0Z2V0OiBmdW5jdGlvbigpIHtcclxuXHRcdFx0XHRcdHJldHVybiBgU3RyaW5nIGdyb3VwIFwiJHtjYXRlZ29yeX1cIiBub3QgZm91bmQuYDtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIG5ldyBQcm94eShzdHJpbmdzW2NhdGVnb3J5XSwge1xyXG5cdFx0XHRnZXQ6IGZ1bmN0aW9uKG9iaiwgcHJvcCkge1xyXG5cdFx0XHRcdGlmICh0eXBlb2Yob2JqW3Byb3BdKSA9PSBcInN0cmluZ1wiKSByZXR1cm4gbmV3IEZvcm1hdHRhYmxlU3RyaW5nKG9ialtwcm9wXSk7XHJcblx0XHRcdFx0cmV0dXJuIG9ialtwcm9wXTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0fVxyXG59KTtcclxuXHJcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/strings.js\n");
/***/ }),
/***/ "./src/modules/thememanager.js":
/*!*************************************!*\
!*** ./src/modules/thememanager.js ***!
\*************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _data_data_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../data/data.js */ \"./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_data_js__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/NDA3OCJdLCJuYW1lcyI6WyJwYXRoIiwicmVxdWlyZSIsIlRoZW1lTWFuYWdlciIsIkFkZG9uTWFuYWdlciIsIm5hbWUiLCJtb2R1bGVFeHRlbnNpb24iLCJleHRlbnNpb24iLCJhZGRvbkZvbGRlciIsInJlc29sdmUiLCJDb25maWciLCJkYXRhUGF0aCIsInByZWZpeCIsImxhbmd1YWdlIiwiaW5pdGlhbGl6ZSIsImVycm9ycyIsIlNldHRpbmdzIiwicmVnaXN0ZXJQYW5lbCIsIlN0cmluZ3MiLCJQYW5lbHMiLCJ0aGVtZXMiLCJlbGVtZW50IiwiU2V0dGluZ3NSZW5kZXJlciIsImdldEFkZG9uUGFuZWwiLCJhZGRvbkxpc3QiLCJzdGF0ZSIsImZvbGRlciIsIm9uQ2hhbmdlIiwidG9nZ2xlVGhlbWUiLCJiaW5kIiwicmVsb2FkIiwicmVsb2FkVGhlbWUiLCJyZWZyZXNoTGlzdCIsInVwZGF0ZVRoZW1lTGlzdCIsInNhdmVBZGRvbiIsImVkaXRBZGRvbiIsImRlbGV0ZUFkZG9uIiwidXBkYXRlTGlzdCIsImxvYWRBbGxUaGVtZXMiLCJsb2FkQWxsQWRkb25zIiwiZW5hYmxlVGhlbWUiLCJpZE9yQWRkb24iLCJlbmFibGVBZGRvbiIsImRpc2FibGVUaGVtZSIsImRpc2FibGVBZGRvbiIsImlkIiwidG9nZ2xlQWRkb24iLCJ1bmxvYWRUaGVtZSIsImlkT3JGaWxlT3JBZGRvbiIsInVubG9hZEFkZG9uIiwibG9hZFRoZW1lIiwiZmlsZW5hbWUiLCJlcnJvciIsImxvYWRBZGRvbiIsIk1vZGFscyIsInNob3dBZGRvbkVycm9ycyIsInJlbG9hZEFkZG9uIiwiZ2V0RmlsZU1vZGlmaWNhdGlvbiIsIm1vZHVsZSIsImZpbGVDb250ZW50IiwibWV0YSIsImNzcyIsIkpTT04iLCJzdHJpbmdpZnkiLCJzdGFydEFkZG9uIiwiYWRkVGhlbWUiLCJzdG9wQWRkb24iLCJyZW1vdmVUaGVtZSIsImFkZG9uIiwiZmluZCIsInAiLCJET01NYW5hZ2VyIiwiaW5qZWN0VGhlbWUiLCJUb2FzdHMiLCJzaG93IiwiQWRkb25zIiwiZW5hYmxlZCIsImZvcm1hdCIsInZlcnNpb24iLCJkaXNhYmxlZCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTs7QUFFQSxNQUFNQSxJQUFJLEdBQUdDLG1CQUFPLENBQUMsa0JBQUQsQ0FBcEI7O0FBRWUsbUVBQUksTUFBTUMsWUFBTixTQUEyQkMscURBQTNCLENBQXdDO0FBQ3ZELE1BQUlDLElBQUosR0FBVztBQUFDLFdBQU8sY0FBUDtBQUF1Qjs7QUFDbkMsTUFBSUMsZUFBSixHQUFzQjtBQUFDLFdBQU8sTUFBUDtBQUFlOztBQUN0QyxNQUFJQyxTQUFKLEdBQWdCO0FBQUMsV0FBTyxZQUFQO0FBQXFCOztBQUN0QyxNQUFJQyxXQUFKLEdBQWtCO0FBQUMsV0FBT1AsSUFBSSxDQUFDUSxPQUFMLENBQWFDLG9EQUFNLENBQUNDLFFBQXBCLEVBQThCLFFBQTlCLENBQVA7QUFBZ0Q7O0FBQ25FLE1BQUlDLE1BQUosR0FBYTtBQUFDLFdBQU8sT0FBUDtBQUFnQjs7QUFDOUIsTUFBSUMsUUFBSixHQUFlO0FBQUMsV0FBTyxLQUFQO0FBQWM7O0FBRTlCQyxZQUFVLEdBQUc7QUFDVCxVQUFNQyxNQUFNLEdBQUcsTUFBTUQsVUFBTixFQUFmO0FBQ0FFLDREQUFRLENBQUNDLGFBQVQsQ0FBdUIsUUFBdkIsRUFBaUNDLGdEQUFPLENBQUNDLE1BQVIsQ0FBZUMsTUFBaEQsRUFBd0Q7QUFBQ0MsYUFBTyxFQUFFLE1BQU1DLG9EQUFnQixDQUFDQyxhQUFqQixDQUErQkwsZ0RBQU8sQ0FBQ0MsTUFBUixDQUFlQyxNQUE5QyxFQUFzRCxLQUFLSSxTQUEzRCxFQUFzRSxLQUFLQyxLQUEzRSxFQUFrRjtBQUN0SkMsY0FBTSxFQUFFLEtBQUtsQixXQUR5STtBQUV0Sm1C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T0FBZixDQUF1QkMsTUFBdkIsQ0FBOEI7QUFBQ3hFLFVBQUksRUFBRStELEtBQUssQ0FBQy9ELElBQWI7QUFBbUJ5RSxhQUFPLEVBQUVWLEtBQUssQ0FBQ1U7QUFBbEMsS0FBOUIsQ0FBWjtBQUNIOztBQUVEWCxhQUFXLENBQUMxQixTQUFELEVBQVk7QUFDbkIsVUFBTTJCLEtBQUssR0FBRyxPQUFPM0IsU0FBUCxJQUFxQixRQUFyQixHQUFnQyxLQUFLakIsU0FBTCxDQUFlNkMsSUFBZixDQUFvQkMsQ0FBQyxJQUFJQSxDQUFDLENBQUN6QixFQUFGLElBQVFKLFNBQWpDLENBQWhDLEdBQThFQSxTQUE1RjtBQUNBLFFBQUksQ0FBQzJCLEtBQUwsRUFBWTtBQUNaRyx1REFBVSxDQUFDSixXQUFYLENBQXVCQyxLQUFLLENBQUN2QixFQUE3QjtBQUNBNEIsc0RBQU0sQ0FBQ0MsSUFBUCxDQUFZeEQsZ0RBQU8sQ0FBQ3lELE1BQVIsQ0FBZUksUUFBZixDQUF3QkYsTUFBeEIsQ0FBK0I7QUFBQ3hFLFVBQUksRUFBRStELEtBQUssQ0FBQy9ELElBQWI7QUFBbUJ5RSxhQUFPLEVBQUVWLEtBQUssQ0FBQ1U7QUFBbEMsS0FBL0IsQ0FBWjtBQUNIOztBQWhFc0QsQ0FBNUMsRUFBZiIsImZpbGUiOiIuL3NyYy9tb2R1bGVzL3RoZW1lbWFuYWdlci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29uZmlnfSBmcm9tIFwiZGF0YVwiO1xyXG5pbXBvcnQgQWRkb25NYW5hZ2VyIGZyb20gXCIuL2FkZG9ubWFuYWdlclwiO1xyXG5pbXBvcnQgU2V0dGluZ3MgZnJvbSBcIi4vc2V0dGluZ3NtYW5hZ2VyXCI7XHJcbmltcG9ydCBET01NYW5hZ2VyIGZyb20gXCIuL2RvbW1hbmFnZXJcIjtcclxuaW1wb3J0IFN0cmluZ3MgZnJvbSBcIi4vc3RyaW5nc1wiO1xyXG5cclxuaW1wb3J0IFRvYXN0cyBmcm9tIFwiLi4vdWkvdG9hc3RzXCI7XHJcbmltcG9ydCBNb2RhbHMgZnJvbSBcIi4uL3VpL21vZGFsc1wiO1xyXG5pbXBvcnQgU2V0dGluZ3NSZW5kZXJlciBmcm9tIFwiLi4vdWkvc2V0dGluZ3NcIjtcclxuXHJcbmNvbnN0IHBhdGggPSByZXF1aXJlKFwicGF0aFwiKTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IG5ldyBjbGFzcyBUaGVtZU1hbmFnZXIgZXh0ZW5kcyBBZGRvbk1hbmFnZXIge1xyXG4gICAgZ2V0IG5hbWUoKSB7cmV0dXJuIFwiVGhlbWVNYW5hZ2VyXCI7fVxyXG4gICAgZ2V0IG1vZHVsZUV4dGVuc2lvbigpIHtyZXR1cm4gXCIuY3NzXCI7fVxyXG4gICAgZ2V0IGV4dGVuc2lvbigpIHtyZXR1cm4gXCIudGhlbWUuY3NzXCI7fVxyXG4gICAgZ2V0IGFkZG9uRm9sZGVyKCkge3JldHVybiBwYXRoLnJlc29sdmUoQ29uZmlnLmRhdGFQYXRoLCBcInRoZW1lc1wiKTt9XHJcbiAgICBnZXQgcHJlZml4KCkge3JldHVybiBcInRoZW1lXCI7fVxyXG4gICAgZ2V0IGxhbmd1YWdlKCkge3JldHVybiBcImNzc1wiO31cclxuXHJcbiAgICBpbml0aWFsaXplKCkge1xyXG4gICAgICAgIGNvbnN0IGVycm9ycyA9IHN1cGVyLmluaXRpYWxpemUoKTtcclxuICAgICAgICBTZXR0aW5ncy5yZWdpc3RlclBhbmVsKFwidGhlbWVzXCIsIFN0cmluZ3MuUGFuZWxzLnRoZW1lcywge2VsZW1lbnQ6ICgpID0+IFNldHRpbmdzUmVuZGVyZXIuZ2V0QWRkb25QYW5lbChTdHJpbmdzLlBhbmVscy50aGVtZXMsIHRoaXMuYWRkb25MaXN0LCB0aGlzLnN0YXRlLCB7XHJcbiAgICAgICAgICAgIGZvbGRlcjogdGhpcy5hZGRvbkZvbGRlcixcclxuICAgICAgICAgICAgb25DaGFuZ2U6IHRoaXMudG9nZ2xlVGhlbWUuYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgcmVsb2FkOiB0aGlzLnJlbG9hZFRoZW1lLmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgIHJlZnJlc2hMaXN0OiB0aGlzLnVwZGF0ZVRoZW1lTGlzdC5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgICBzYXZlQWRkb246IHRoaXMuc2F2ZUFkZG9uLmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgIGVkaXRBZGRvbjogdGhpcy5lZGl0QWRkb24uYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgZGVsZXRlQWRkb246IHRoaXMuZGVsZXRlQWRkb24uYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgcHJlZml4OiB0aGlzLnByZWZpeFxyXG4gICAgICAgIH0pfSk7XHJcbiAgICAgICAgcmV0dXJuIGVycm9ycztcclxuICAgIH1cclxuXHJcbiAgICAvKiBBbGlhc2VzICovXHJcbiAgICB1cGRhdGVUaGVtZUxpc3QoKSB7cmV0dXJuIHRoaXMudXBkYXRlTGlzdCgpO31cclxuICAgIGxvYWRBbGxUaGVtZXMoKSB7cmV0dXJuIHRoaXMubG9hZEFsbEFkZG9ucygpO31cclxuXHJcbiAgICBlbmFibGVUaGVtZShpZE9yQWRkb24pIHtyZXR1cm4gdGhpcy5lbmFibGVBZGRvbihpZE9yQWRkb24pO31cclxuICAgIGRpc2FibGVUaGVtZShpZE9yQWRkb24pIHtyZXR1cm4gdGhpcy5kaXNhYmxlQWRkb24oaWRPckFkZG9uKTt9XHJcbiAgICB0b2dnbGVUaGVtZShpZCkge3JldHVybiB0aGlzLnRvZ2dsZUFkZG9uKGlkKTt9XHJcblxyXG4gICAgdW5sb2FkVGhlbWUoaWRPckZpbGVPckFkZG9uKSB7cmV0dXJuIHRoaXMudW5sb2FkQWRkb24oaWRPckZpbGVPckFkZG9uKTt9XHJcblxyXG4gICAgbG9hZFRoZW1lKGZpbGVuYW1lKSB7XHJcbiAgICAgICAgY29uc3QgZXJyb3IgPSB0aGlzLmxvYWRBZGRvbihmaWxlbmFtZSk7XHJcbiAgICAgICAgaWYgKGVycm9yKSBNb2RhbHMuc2hvd0FkZG9uRXJyb3JzKHt0aGVtZXM6IFtlcnJvcl19KTtcclxuICAgIH1cclxuXHJcbiAgICByZWxvYWRUaGVtZShpZE9yRmlsZU9yQWRkb24pIHtcclxuICAgICAgICBjb25zdCBlcnJvciA9IHRoaXMucmVsb2FkQWRkb24oaWRPckZpbGVPckFkZG9uKTtcclxuICAgICAgICBpZiAoZXJyb3IpIE1vZGFscy5zaG93QWRkb25FcnJvcnMoe3RoZW1lczogW2Vycm9yXX0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qIE92ZXJyaWRlcyAqL1xyXG4gICAgZ2V0RmlsZU1vZGlmaWNhdGlvbihtb2R1bGUsIGZpbGVDb250ZW50LCBtZXRhKSB7XHJcbiAgICAgICAgbWV0YS5jc3MgPSBmaWxlQ29udGVudDtcclxuICAgICAgICByZXR1cm4gYG1vZHVsZS5leHBvcnRzID0gJHtKU09OLnN0cmluZ2lmeShtZXRhKX07YDtcclxuICAgIH1cclxuXHJcbiAgICBzdGFydEFkZG9uKGlkKSB7cmV0dXJuIHRoaXMuYWRkVGhlbWUoaWQpO31cclxuICAgIHN0b3BBZGRvbihpZCkge3JldHVybiB0aGlzLnJlbW92ZVRoZW1lKGlkKTt9XHJcblxyXG4gICAgYWRkVGhlbWUoaWRPckFkZG9uKSB7XHJcbiAgICAgICAgY29uc3QgYWRkb24gPSB0eXBlb2YoaWRPckFkZG9uKSA9PSBcInN0cmluZ1wiID8gdGhpcy5hZGRvbkxpc3QuZmluZChwID0+IHAuaWQgPT0gaWRPckFkZG9uKSA6IGlkT3JBZGRvbjtcclxuICAgICAgICBpZiAoIWFkZG9uKSByZXR1cm47XHJcbiAgICAgICAgRE9NTWFuYWdlci5pbmplY3RUaGVtZShhZGRvbi5pZCwgYWRkb24uY3NzKTtcclxuICAgICAgICBUb2FzdHMuc2hvdyhTdHJpbmdzLkFkZG9ucy5lbmFibGVkLmZvcm1hdCh7bmFtZTogYWRkb24ubmFtZSwgdmVyc2lvbjogYWRkb24udmVyc2lvbn0pKTtcclxuICAgIH1cclxuXHJcbiAgICByZW1vdmVUaGVtZShpZE9yQWRkb24pIHtcclxuICAgICAgICBjb25zdCBhZGRvbiA9IHR5cGVvZihpZE9yQWRkb24pID09IFwic3RyaW5nXCIgPyB0aGlzLmFkZG9uTGlzdC5maW5kKHAgPT4gcC5pZCA9PSBpZE9yQWRkb24pIDogaWRPckFkZG9uO1xyXG4gICAgICAgIGlmICghYWRkb24pIHJldHVybjtcclxuICAgICAgICBET01NYW5hZ2VyLnJlbW92ZVRoZW1lKGFkZG9uLmlkKTtcclxuICAgICAgICBUb2FzdHMuc2hvdyhTdHJpbmdzLkFkZG9ucy5kaXNhYmxlZC5mb3JtYXQoe25hbWU6IGFkZG9uLm5hbWUsIHZlcnNpb246IGFkZG9uLnZlcnNpb259KSk7XHJcbiAgICB9XHJcbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/thememanager.js\n");
/***/ }),
/***/ "./src/modules/utilities.js":
/*!**********************************!*\
!*** ./src/modules/utilities.js ***!
\**********************************/
/*! exports provided: default */
/***/ (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_data_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../data/data.js */ \"./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_data_js__WEBPACK_IMPORTED_MODULE_0__[\"Config\"].repo}/BetterDiscordApp/${_data_data_js__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/OTc2OSJdLCJuYW1lcyI6WyJVdGlsaXRpZXMiLCJyZXBvVXJsIiwicGF0aCIsIkNvbmZpZyIsInJlcG8iLCJoYXNoIiwicGFyc2VIVE1MIiwiaHRtbCIsImZyYWdtZW50IiwidGVtcGxhdGUiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJpbm5lckhUTUwiLCJub2RlIiwiY29udGVudCIsImNsb25lTm9kZSIsImNoaWxkTm9kZXMiLCJsZW5ndGgiLCJnZXRUZXh0QXJlYSIsIkRPTSIsInF1ZXJ5IiwiaW5zZXJ0VGV4dCIsInRleHRhcmVhIiwidGV4dCIsImZvY3VzIiwic2VsZWN0aW9uU3RhcnQiLCJzZWxlY3Rpb25FbmQiLCJ2YWx1ZSIsImV4ZWNDb21tYW5kIiwiZXNjYXBlIiwicyIsInJlcGxhY2UiLCJ0ZXN0SlNPTiIsImRhdGEiLCJKU09OIiwicGFyc2UiLCJlcnIiLCJzdXBwcmVzc0Vycm9ycyIsIm1ldGhvZCIsIm1lc3NhZ2UiLCJwYXJhbXMiLCJlIiwiTG9nZ2VyIiwic3RhY2t0cmFjZSIsIm9uUmVtb3ZlZCIsImNhbGxiYWNrIiwib2JzZXJ2ZXIiLCJNdXRhdGlvbk9ic2VydmVyIiwibXV0YXRpb25zIiwibSIsIm11dGF0aW9uIiwibm9kZXMiLCJBcnJheSIsImZyb20iLCJyZW1vdmVkTm9kZXMiLCJkaXJlY3RNYXRjaCIsImluZGV4T2YiLCJwYXJlbnRNYXRjaCIsInNvbWUiLCJwYXJlbnQiLCJjb250YWlucyIsImRpc2Nvbm5lY3QiLCJvYnNlcnZlIiwiYm9keSIsInN1YnRyZWUiLCJjaGlsZExpc3QiLCJpc0VtcHR5Iiwib2JqIiwidW5kZWZpbmVkIiwiaXNBcnJheSIsImtleSIsImhhc093blByb3BlcnR5IiwibWVtb2l6ZU9iamVjdCIsIm9iamVjdCIsInByb3h5IiwiUHJveHkiLCJnZXQiLCJtb2QiLCJPYmplY3QiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJzZXQiLCJlcnJvciIsImRlZmluZVByb3BlcnR5IiwicHJvcCIsImV4dGVuZCIsImV4dGVuZGVlIiwiZXh0ZW5kZXJzIiwiaSIsImZvcm1hdFN0cmluZyIsInN0cmluZyIsInZhbHVlcyIsInZhbCIsInJlcGxhY2VtZW50Iiwic3RyaW5naWZ5IiwidG9TdHJpbmciLCJSZWdFeHAiLCJmaW5kSW5UcmVlIiwidHJlZSIsInNlYXJjaEZpbHRlciIsIndhbGthYmxlIiwiaWdub3JlIiwidGVtcFJldHVybiIsInRvV2FsayIsImtleXMiLCJpbmNsdWRlcyIsImdldE5lc3RlZFByb3AiLCJzcGxpdCIsInJlZHVjZSIsImN1cnJlbnRPYmoiLCJmaW5kSW5SZW5kZXJUcmVlIiwiZmluZEluUmVhY3RUcmVlIiwiZ2V0UmVhY3RJbnN0YW5jZSIsIl9fcmVhY3RJbnRlcm5hbEluc3RhbmNlJCIsImZpbmQiLCJrIiwic3RhcnRzV2l0aCIsImdldE93bmVySW5zdGFuY2UiLCJpbmNsdWRlIiwiZXhjbHVkZSIsImZpbHRlciIsIl8iLCJleGNsdWRpbmciLCJuYW1lRmlsdGVyIiwiZ2V0RGlzcGxheU5hbWUiLCJvd25lciIsInR5cGUiLCJkaXNwbGF5TmFtZSIsIm5hbWUiLCJjbGFzc0ZpbHRlciIsImN1cnIiLCJyZXR1cm4iLCJzdGF0ZU5vZGUiLCJIVE1MRWxlbWVudCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUVlLE1BQU1BLFNBQU4sQ0FBZ0I7QUFFM0IsU0FBT0MsT0FBUCxDQUFlQyxJQUFmLEVBQXFCO0FBQ2pCLFdBQVEsZ0NBQStCQyxvREFBTSxDQUFDQyxJQUFLLHFCQUFvQkQsb0RBQU0sQ0FBQ0UsSUFBSyxJQUFHSCxJQUFLLEVBQTNGO0FBQ0g7QUFFRDs7Ozs7Ozs7Ozs7OztBQVdBLFNBQU9JLFNBQVAsQ0FBaUJDLElBQWpCLEVBQXVCQyxRQUFRLEdBQUcsS0FBbEMsRUFBeUM7QUFDckMsVUFBTUMsUUFBUSxHQUFHQyxRQUFRLENBQUNDLGFBQVQs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O0FBQ25FLFVBQUlELElBQUksS0FBSyxJQUFiLEVBQW1CO0FBQ25CLFlBQU1MLEtBQUssR0FBR0ssSUFBSSxDQUFDRSxTQUFuQjtBQUNBLFVBQUlGLElBQUksS0FBSyxJQUFULElBQWlCLEVBQUVMLEtBQUssWUFBWVEsV0FBbkIsQ0FBakIsSUFBb0RKLFdBQVcsQ0FBQ0MsSUFBRCxDQUEvRCxJQUF5RVYsTUFBTSxDQUFDSyxLQUFELENBQW5GLEVBQTRGLE9BQU9BLEtBQVA7QUFDNUY7O0FBRUQsV0FBTyxJQUFQO0FBQ0E7O0FBalE2QiIsImZpbGUiOiIuL3NyYy9tb2R1bGVzL3V0aWxpdGllcy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29uZmlnfSBmcm9tIFwiZGF0YVwiO1xyXG5pbXBvcnQgTG9nZ2VyIGZyb20gXCIuL2xvZ2dlclwiO1xyXG5pbXBvcnQgRE9NIGZyb20gXCIuL2RvbXRvb2xzXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBVdGlsaXRpZXMge1xyXG5cclxuICAgIHN0YXRpYyByZXBvVXJsKHBhdGgpIHtcclxuICAgICAgICByZXR1cm4gYGh0dHBzOi8vY2RuLnN0YXRpY2FseS5jb20vZ2gvJHtDb25maWcucmVwb30vQmV0dGVyRGlzY29yZEFwcC8ke0NvbmZpZy5oYXNofS8ke3BhdGh9YDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFBhcnNlcyBhIHN0cmluZyBvZiBIVE1MIGFuZCByZXR1cm5zIHRoZSByZXN1bHRzLiBJZiB0aGUgc2Vjb25kIHBhcmFtZXRlciBpcyB0cnVlLFxyXG4gICAgICogdGhlIHBhcnNlZCBIVE1MIHdpbGwgYmUgcmV0dXJuZWQgYXMgYSBkb2N1bWVudCBmcmFnbWVudCB7QHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRG9jdW1lbnRGcmFnbWVudH0uXHJcbiAgICAgKiBUaGlzIGlzIGV4dHJlbWVseSB1c2VmdWwgaWYgeW91IGhhdmUgYSBsaXN0IG9mIGVsZW1lbnRzIGF0IHRoZSB0b3AgbGV2ZWwsIHRoZXkgY2FuIHRoZW4gYmUgYXBwZW5kZWQgYWxsIGF0IG9uY2UgdG8gYW5vdGhlciBub2RlLlxyXG4gICAgICpcclxuICAgICAqIElmIHRoZSBzZWNvbmQgcGFyYW1ldGVyIGlzIGZhbHNlLCB0aGVuIHRoZSByZXR1cm4gdmFsdWUgd2lsbCBiZSB0aGUgbGlzdCBvZiBwYXJzZWRcclxuICAgICAqIG5vZGVzIGFuZCB0aGVyZSB3ZXJlIG11bHRpcGxlIHRvcCBsZXZlbCBub2Rlcywgb3RoZXJ3aXNlIHRoZSBzaW5nbGUgbm9kZSBpcyByZXR1cm5lZC5cclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBodG1sIC0gSFRNTCB0byBiZSBwYXJzZWRcclxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2ZyYWdtZW50PWZhbHNlXSAtIFdoZXRoZXIgb3Igbm90IHRoZSByZXR1cm4gc2hvdWxkIGJlIHRoZSByYXcgYERvY3VtZW50RnJhZ21lbnRgXHJcbiAgICAgKiBAcmV0dXJucyB7KERvY3VtZW50RnJhZ21lbnR8Tm9kZUxpc3R8SFRNTEVsZW1lbnQpfSAtIFRoZSByZXN1bHQgb2YgSFRNTCBwYXJzaW5nXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBwYXJzZUhUTUwoaHRtbCwgZnJhZ21lbnQgPSBmYWxzZSkge1xyXG4gICAgICAgIGNvbnN0IHRlbXBsYXRlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInRlbXBsYXRlXCIpO1xyXG4gICAgICAgIHRlbXBsYXRlLmlubmVySFRNTCA9IGh0bWw7XHJcbiAgICAgICAgY29uc3Qgbm9kZSA9IHRlbXBsYXRlLmNvbnRlbnQuY2xvbmVOb2RlKHRydWUpO1xyXG4gICAgICAgIGlmIChmcmFnbWVudCkgcmV0dXJuIG5vZGU7XHJcbiAgICAgICAgcmV0dXJuIG5vZGUuY2hpbGROb2Rlcy5sZW5ndGggPiAxID8gbm9kZS5jaGlsZE5vZGVzIDogbm9kZS5jaGlsZE5vZGVzWzBdO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBnZXRUZXh0QXJlYSgpIHtcclxuICAgICAgICByZXR1cm4gRE9NLnF1ZXJ5KFwiLmNoYW5uZWxUZXh0QXJlYS0xTERiWUcgdGV4dGFyZWFcIik7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGluc2VydFRleHQodGV4dGFyZWEsIHRleHQpIHtcclxuICAgICAgICB0ZXh0YXJlYS5mb2N1cygpO1xyXG4gICAgICAgIHRleHRhcmVhLnNlbGVjdGlvblN0YXJ0ID0gMDtcclxuICAgICAgICB0ZXh0YXJlYS5zZWxlY3Rpb25FbmQgPSB0ZXh0YXJlYS52YWx1ZS5sZW5ndGg7XHJcbiAgICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoXCJpbnNlcnRUZXh0XCIsIGZhbHNlLCB0ZXh0KTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgZXNjYXBlKHMpIHtcclxuICAgICAgICByZXR1cm4gcy5yZXBsYWNlKC9bLS9cXFxcXiQqKz8uKCl8W1xcXXt9XS9nLCBcIlxcXFwkJlwiKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgdGVzdEpTT04oZGF0YSkge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHJldHVybiBKU09OLnBhcnNlKGRhdGEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIHN1cHByZXNzRXJyb3JzKG1ldGhvZCwgbWVzc2FnZSkge1xyXG4gICAgICAgIHJldHVybiAoLi4ucGFyYW1zKSA9PiB7XHJcbiAgICAgICAgICAgIHRyeSB7IHJldHVybiBtZXRob2QoLi4ucGFyYW1zKTtcdH1cclxuICAgICAgICAgICAgY2F0Y2ggKGUpIHsgTG9nZ2VyLnN0YWNrdHJhY2UoXCJTdXBwcmVzc2VkRXJyb3JcIiwgXCJFcnJvciBvY2N1cnJlZCBpbiBcIiArIG1lc3NhZ2UsIGUpOyB9XHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgb25SZW1vdmVkKG5vZGUsIGNhbGxiYWNrKSB7XHJcbiAgICAgICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IG0gPSAwOyBtIDwgbXV0YXRpb25zLmxlbmd0aDsgbSsrKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBtdXRhdGlvbiA9IG11dGF0aW9uc1ttXTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG5vZGVzID0gQXJyYXkuZnJvbShtdXRhdGlvbi5yZW1vdmVkTm9kZXMpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZGlyZWN0TWF0Y2ggPSBub2Rlcy5pbmRleE9mKG5vZGUpID4gLTE7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBwYXJlbnRNYXRjaCA9IG5vZGVzLnNvbWUocGFyZW50ID0+IHBhcmVudC5jb250YWlucyhub2RlKSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoZGlyZWN0TWF0Y2ggfHwgcGFyZW50TWF0Y2gpIHtcclxuICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBvYnNlcnZlci5vYnNlcnZlKGRvY3VtZW50LmJvZHksIHtzdWJ0cmVlOiB0cnVlLCBjaGlsZExpc3Q6IHRydWV9KTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgaXNFbXB0eShvYmopIHtcclxuICAgICAgICBpZiAob2JqID09IG51bGwgfHwgb2JqID09IHVuZGVmaW5lZCB8fCBvYmogPT0gXCJcIikgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgaWYgKHR5cGVvZihvYmopICE9PSBcIm9iamVjdFwiKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkob2JqKSkgcmV0dXJuIG9iai5sZW5ndGggPT0gMDtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBvYmopIHtcclxuICAgICAgICAgICAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eShrZXkpKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2VuZXJhdGVzIGFuIGF1dG9tYXRpY2FsbHkgbWVtb2l6aW5nIHZlcnNpb24gb2YgYW4gb2JqZWN0LlxyXG4gICAgICogQGF1dGhvciBaZXJlYm9zXHJcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IC0gb2JqZWN0IHRvIG1lbW9pemVcclxuICAgICAqIEByZXR1cm5zIHtQcm94eX0gdGhlIHByb3h5IHRvIHRoZSBvYmplY3QgdGhhdCBtZW1vaXplcyBwcm9wZXJ0aWVzXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBtZW1vaXplT2JqZWN0KG9iamVjdCkge1xyXG4gICAgICAgIGNvbnN0IHByb3h5ID0gbmV3IFByb3h5KG9iamVjdCwge1xyXG4gICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKG9iaiwgbW9kKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIW9iai5oYXNPd25Qcm9wZXJ0eShtb2QpKSByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICAgICAgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqLCBtb2QpLmdldCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gb2JqW21vZF07XHJcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIG9ialttb2RdO1xyXG4gICAgICAgICAgICAgICAgICAgIG9ialttb2RdID0gdmFsdWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gb2JqW21vZF07XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHNldDogZnVuY3Rpb24ob2JqLCBtb2QsIHZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAob2JqLmhhc093blByb3BlcnR5KG1vZCkpIHJldHVybiBMb2dnZXIuZXJyb3IoXCJNZW1vaXplZE9iamVjdFwiLCBcIlRyeWluZyB0byBvdmVyd3JpdGUgZXhpc3RpbmcgcHJvcGVydHlcIik7XHJcbiAgICAgICAgICAgICAgICBvYmpbbW9kXSA9IHZhbHVlO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG9ialttb2RdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm94eSwgXCJoYXNPd25Qcm9wZXJ0eVwiLCB7dmFsdWU6IGZ1bmN0aW9uKHByb3ApIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXNbcHJvcF0gIT09IHVuZGVmaW5lZDtcclxuICAgICAgICB9fSk7XHJcblxyXG4gICAgICAgIHJldHVybiBwcm94eTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIERlZXAgZXh0ZW5kcyBhbiBvYmplY3Qgd2l0aCBhIHNldCBvZiBvdGhlciBvYmplY3RzLiBPYmplY3RzIGxhdGVyIGluIHRoZSBsaXN0XHJcbiAgICAgKiBvZiBgZXh0ZW5kZXJzYCBoYXZlIHByaW9yaXR5LCB0aGF0IGlzIHRvIHNheSBpZiBvbmUgc2V0cyBhIGtleSB0byBiZSBhIHByaW1pdGl2ZSxcclxuICAgICAqIGl0IHdpbGwgYmUgb3ZlcndyaXR0ZW4gd2l0aCB0aGUgbmV4dCBvbmUgd2l0aCB0aGUgc2FtZSBrZXkuIElmIGl0IGlzIGFuIG9iamVjdCxcclxuICAgICAqIGFuZCB0aGUga2V5cyBtYXRjaCwgdGhlIG9iamVjdCBpcyBleHRlbmRlZC4gVGhpcyBoYXBwZW5zIHJlY3Vyc2l2ZWx5LlxyXG4gICAgICogQHBhcmFtIHtvYmplY3R9IGV4dGVuZGVlIC0gT2JqZWN0IHRvIGJlIGV4dGVuZGVkXHJcbiAgICAgKiBAcGFyYW0gey4uLm9iamVjdH0gZXh0ZW5kZXJzIC0gT2JqZWN0cyB0byBleHRlbmQgd2l0aFxyXG4gICAgICogQHJldHVybnMge29iamVjdH0gLSBBIHJlZmVyZW5jZSB0byBgZXh0ZW5kZWVgXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBleHRlbmQoZXh0ZW5kZWUsIC4uLmV4dGVuZGVycykge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZXh0ZW5kZXJzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIGV4dGVuZGVyc1tpXSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGV4dGVuZGVyc1tpXS5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBleHRlbmRlZVtrZXldID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBleHRlbmRlcnNbaV1ba2V5XSA9PT0gXCJvYmplY3RcIikgdGhpcy5leHRlbmQoZXh0ZW5kZWVba2V5XSwgZXh0ZW5kZXJzW2ldW2tleV0pO1xyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHR5cGVvZiBleHRlbmRlcnNbaV1ba2V5XSA9PT0gXCJvYmplY3RcIikgZXh0ZW5kZWVba2V5XSA9IHt9LCB0aGlzLmV4dGVuZChleHRlbmRlZVtrZXldLCBleHRlbmRlcnNbaV1ba2V5XSk7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBleHRlbmRlZVtrZXldID0gZXh0ZW5kZXJzW2ldW2tleV07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGV4dGVuZGVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRm9ybWF0IHN0cmluZ3Mgd2l0aCBwbGFjZWhvbGRlcnMgKGB7e3BsYWNlaG9sZGVyfX1gKSBpbnRvIGZ1bGwgc3RyaW5ncy5cclxuICAgICAqIFF1aWNrIGV4YW1wbGU6IGBQbHVnaW5VdGlsaXRpZXMuZm9ybWF0U3RyaW5nKFwiSGVsbG8sIHt7dXNlcn19XCIsIHt1c2VyOiBcIlplcmVib3NcIn0pYFxyXG4gICAgICogd291bGQgcmV0dXJuIFwiSGVsbG8sIFplcmVib3NcIi5cclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgLSBzdHJpbmcgdG8gZm9ybWF0XHJcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gdmFsdWVzIC0gb2JqZWN0IGxpdGVyYWwgb2YgcGxhY2Vob2xkZXJzIHRvIHJlcGxhY2VtZW50c1xyXG4gICAgICogQHJldHVybnMge3N0cmluZ30gdGhlIHByb3Blcmx5IGZvcm1hdHRlZCBzdHJpbmdcclxuICAgICAqL1xyXG4gICAgc3RhdGljIGZvcm1hdFN0cmluZyhzdHJpbmcsIHZhbHVlcykge1xyXG4gICAgICAgIGZvciAoY29uc3QgdmFsIGluIHZhbHVlcykge1xyXG4gICAgICAgICAgICBsZXQgcmVwbGFjZW1lbnQgPSB2YWx1ZXNbdmFsXTtcclxuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmVwbGFjZW1lbnQpKSByZXBsYWNlbWVudCA9IEpTT04uc3RyaW5naWZ5KHJlcGxhY2VtZW50KTtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZihyZXBsYWNlbWVudCkgPT09IFwib2JqZWN0XCIgJiYgcmVwbGFjZW1lbnQgIT09IG51bGwpIHJlcGxhY2VtZW50ID0gcmVwbGFjZW1lbnQudG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgc3RyaW5nID0gc3RyaW5nLnJlcGxhY2UobmV3IFJlZ0V4cChge3ske3ZhbH19fWAsIFwiZ1wiKSwgcmVwbGFjZW1lbnQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gc3RyaW5nO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRmluZHMgYSB2YWx1ZSwgc3Vib2JqZWN0LCBvciBhcnJheSBmcm9tIGEgdHJlZSB0aGF0IG1hdGNoZXMgYSBzcGVjaWZpYyBmaWx0ZXIuXHJcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gdHJlZSBUcmVlIHRoYXQgc2hvdWxkIGJlIHdhbGtlZFxyXG4gICAgICogQHBhcmFtIHtjYWxsYWJsZX0gc2VhcmNoRmlsdGVyIEZpbHRlciB0byBjaGVjayBhZ2FpbnN0IGVhY2ggb2JqZWN0IGFuZCBzdWJvYmplY3RcclxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBvcHRpb25zIEFkZGl0aW9uYWwgb3B0aW9ucyB0byBjdXN0b21pemUgdGhlIHNlYXJjaFxyXG4gICAgICogQHBhcmFtIHtBcnJheTxzdHJpbmc+fG51bGx9IFtvcHRpb25zLndhbGthYmxlPW51bGxdIEFycmF5IG9mIHN0cmluZ3MgdG8gdXNlIGFzIGtleXMgdGhhdCBhcmUgYWxsb3dlZCB0byBiZSB3YWxrZWQgb24uIE51bGwgdmFsdWUgaW5kaWNhdGVzIGFsbCBrZXlzIGFyZSB3YWxrYWJsZVxyXG4gICAgICogQHBhcmFtIHtBcnJheTxzdHJpbmc+fSBbb3B0aW9ucy5pZ25vcmU9W11dIEFycmF5IG9mIHN0cmluZ3MgdG8gdXNlIGFzIGtleXMgdG8gZXhjbHVkZSBmcm9tIHRoZSBzZWFyY2gsIG1vc3QgaGVscGZ1bCB3aGVuIGB3YWxrYWJsZSA9IG51bGxgLlxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgZmluZEluVHJlZSh0cmVlLCBzZWFyY2hGaWx0ZXIsIHt3YWxrYWJsZSA9IG51bGwsIGlnbm9yZSA9IFtdfSA9IHt9KSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiBzZWFyY2hGaWx0ZXIgPT09IFwic3RyaW5nXCIpIHtcclxuICAgICAgICAgICAgaWYgKHRyZWUuaGFzT3duUHJvcGVydHkoc2VhcmNoRmlsdGVyKSkgcmV0dXJuIHRyZWVbc2VhcmNoRmlsdGVyXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoc2VhcmNoRmlsdGVyKHRyZWUpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0cmVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHR5cGVvZiB0cmVlICE9PSBcIm9iamVjdFwiIHx8IHRyZWUgPT0gbnVsbCkgcmV0dXJuIHVuZGVmaW5lZDtcclxuXHJcbiAgICAgICAgbGV0IHRlbXBSZXR1cm4gPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgaWYgKHRyZWUgaW5zdGFuY2VvZiBBcnJheSkge1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHZhbHVlIG9mIHRyZWUpIHtcclxuICAgICAgICAgICAgICAgIHRlbXBSZXR1cm4gPSB0aGlzLmZpbmRJblRyZWUodmFsdWUsIHNlYXJjaEZpbHRlciwge3dhbGthYmxlLCBpZ25vcmV9KTtcclxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdGVtcFJldHVybiAhPSBcInVuZGVmaW5lZFwiKSByZXR1cm4gdGVtcFJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgY29uc3QgdG9XYWxrID0gd2Fsa2FibGUgPT0gbnVsbCA/IE9iamVjdC5rZXlzKHRyZWUpIDogd2Fsa2FibGU7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IG9mIHRvV2Fsaykge1xyXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZih0cmVlW2tleV0pID09IFwidW5kZWZpbmVkXCIgfHwgaWdub3JlLmluY2x1ZGVzKGtleSkpIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgdGVtcFJldHVybiA9IHRoaXMuZmluZEluVHJlZSh0cmVlW2tleV0sIHNlYXJjaEZpbHRlciwge3dhbGthYmxlLCBpZ25vcmV9KTtcclxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdGVtcFJldHVybiAhPSBcInVuZGVmaW5lZFwiKSByZXR1cm4gdGVtcFJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGVtcFJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgYSBuZXN0ZWQgcHJvcGVydHkgKGlmIGl0IGV4aXN0cykgc2FmZWx5LiBQYXRoIHNob3VsZCBiZSBzb21ldGhpbmcgbGlrZSBgcHJvcC5wcm9wMi5wcm9wM2AuXHJcbiAgICAgKiBOdW1iZXJzIGNhbiBiZSB1c2VkIGZvciBhcnJheXMgYXMgd2VsbCBsaWtlIGBwcm9wLnByb3AyLmFycmF5LjAuaWRgLlxyXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iaiAtIG9iamVjdCB0byBnZXQgbmVzdGVkIHByb3BlcnR5IG9mXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gcGF0aCAtIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBwcm9wZXJ0eSB0byBvYnRhaW5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGdldE5lc3RlZFByb3Aob2JqLCBwYXRoKSB7XHJcbiAgICAgICAgcmV0dXJuIHBhdGguc3BsaXQoL1xccz9cXC5cXHM/LykucmVkdWNlKGZ1bmN0aW9uKGN1cnJlbnRPYmosIHByb3ApIHtcclxuICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRPYmogJiYgY3VycmVudE9ialtwcm9wXTtcclxuICAgICAgICB9LCBvYmopO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRmluZHMgYSB2YWx1ZSwgc3Vib2JqZWN0LCBvciBhcnJheSBmcm9tIGEgdHJlZSB0aGF0IG1hdGNoZXMgYSBzcGVjaWZpYyBmaWx0ZXIuIEdyZWF0IGZvciBwYXRjaGluZyByZW5kZXIgZnVuY3Rpb25zLlxyXG4gICAgICogQHBhcmFtIHtvYmplY3R9IHRyZWUgUmVhY3QgdHJlZSB0byBsb29rIHRocm91Z2guIENhbiBiZSBhIHJlbmRlcmVkIG9iamVjdCBvciBhbiBpbnRlcm5hbCBpbnN0YW5jZS5cclxuICAgICAqIEBwYXJhbSB7Y2FsbGFibGV9IHNlYXJjaEZpbHRlciBGaWx0ZXIgZnVuY3Rpb24gdG8gY2hlY2sgc3Vib2JqZWN0cyBhZ2FpbnN0LlxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgZmluZEluUmVuZGVyVHJlZSh0cmVlLCBzZWFyY2hGaWx0ZXIsIHt3YWxrYWJsZSA9IFtcInByb3BzXCIsIFwiY2hpbGRyZW5cIiwgXCJjaGlsZFwiLCBcInNpYmxpbmdcIl0sIGlnbm9yZSA9IFtdfSA9IHt9KSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZmluZEluVHJlZSh0cmVlLCBzZWFyY2hGaWx0ZXIsIHt3YWxrYWJsZSwgaWdub3JlfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGaW5kcyBhIHZhbHVlLCBzdWJvYmplY3QsIG9yIGFycmF5IGZyb20gYSB0cmVlIHRoYXQgbWF0Y2hlcyBhIHNwZWNpZmljIGZpbHRlci4gR3JlYXQgZm9yIHBhdGNoaW5nIHJlbmRlciBmdW5jdGlvbnMuXHJcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gdHJlZSBSZWFjdCB0cmVlIHRvIGxvb2sgdGhyb3VnaC4gQ2FuIGJlIGEgcmVuZGVyZWQgb2JqZWN0IG9yIGFuIGludGVybmFsIGluc3RhbmNlLlxyXG4gICAgICogQHBhcmFtIHtjYWxsYWJsZX0gc2VhcmNoRmlsdGVyIEZpbHRlciBmdW5jdGlvbiB0byBjaGVjayBzdWJvYmplY3RzIGFnYWluc3QuXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBmaW5kSW5SZWFjdFRyZWUodHJlZSwgc2VhcmNoRmlsdGVyKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZmluZEluVHJlZSh0cmVlLCBzZWFyY2hGaWx0ZXIsIHt3YWxrYWJsZTogW1wicHJvcHNcIiwgXCJjaGlsZHJlblwiLCBcInJldHVyblwiLCBcInN0YXRlTm9kZVwiXX0pO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBnZXRSZWFjdEluc3RhbmNlKG5vZGUpIHtcclxuICAgICAgICBpZiAobm9kZS5fX3JlYWN0SW50ZXJuYWxJbnN0YW5jZSQpIHJldHVybiBub2RlLl9fcmVhY3RJbnRlcm5hbEluc3RhbmNlJDtcclxuICAgICAgICByZXR1cm4gbm9kZVtPYmplY3Qua2V5cyhub2RlKS5maW5kKGsgPT4gay5zdGFydHNXaXRoKFwiX19yZWFjdEludGVybmFsSW5zdGFuY2VcIikpXSB8fCBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG5cdCAqIEdyYWJzIGEgdmFsdWUgZnJvbSB0aGUgcmVhY3QgaW50ZXJuYWwgaW5zdGFuY2UuIEFsbG93cyB5b3UgdG8gZ3JhYlxyXG5cdCAqIGxvbmcgZGVwdGggdmFsdWVzIHNhZmVseSB3aXRob3V0IGFjY2Vzc2luZyBubyBsb25nZXIgdmFsaWQgcHJvcGVydGllcy5cclxuXHQgKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBub2RlIC0gbm9kZSB0byBvYnRhaW4gcmVhY3QgaW5zdGFuY2Ugb2ZcclxuXHQgKiBAcGFyYW0ge29iamVjdH0gb3B0aW9ucyAtIG9wdGlvbnMgZm9yIHRoZSBzZWFyY2hcclxuXHQgKiBAcGFyYW0ge2FycmF5fSBbb3B0aW9ucy5pbmNsdWRlXSAtIGxpc3Qgb2YgaXRlbXMgdG8gaW5jbHVkZSBmcm9tIHRoZSBzZWFyY2hcclxuXHQgKiBAcGFyYW0ge2FycmF5fSBbb3B0aW9ucy5leGNsdWRlPVtcIlBvcG91dFwiLCBcIlRvb2x0aXBcIiwgXCJTY3JvbGxlclwiLCBcIkJhY2tncm91bmRGbGFzaFwiXV0gLSBsaXN0IG9mIGl0ZW1zIHRvIGV4Y2x1ZGUgZnJvbSB0aGUgc2VhcmNoXHJcblx0ICogQHBhcmFtIHtjYWxsYWJsZX0gW29wdGlvbnMuZmlsdGVyPV89Pl9dIC0gZmlsdGVyIHRvIGNoZWNrIHRoZSBjdXJyZW50IGluc3RhbmNlIHdpdGggKHNob3VsZCByZXR1cm4gYSBib29sZWFuKVxyXG5cdCAqIEByZXR1cm4geygqfG51bGwpfSB0aGUgb3duZXIgaW5zdGFuY2Ugb3IgdW5kZWZpbmVkIGlmIG5vdCBmb3VuZC5cclxuXHQgKi9cclxuXHRzdGF0aWMgZ2V0T3duZXJJbnN0YW5jZShub2RlLCB7aW5jbHVkZSwgZXhjbHVkZSA9IFtcIlBvcG91dFwiLCBcIlRvb2x0aXBcIiwgXCJTY3JvbGxlclwiLCBcIkJhY2tncm91bmRGbGFzaFwiXSwgZmlsdGVyID0gXyA9PiBffSA9IHt9KSB7XHJcblx0XHRpZiAobm9kZSA9PT0gdW5kZWZpbmVkKSByZXR1cm4gdW5kZWZpbmVkO1xyXG5cdFx0Y29uc3QgZXhjbHVkaW5nID0gaW5jbHVkZSA9PT0gdW5kZWZpbmVkO1xyXG5cdFx0Y29uc3QgbmFtZUZpbHRlciA9IGV4Y2x1ZGluZyA/IGV4Y2x1ZGUgOiBpbmNsdWRlO1xyXG5cdFx0ZnVuY3Rpb24gZ2V0RGlzcGxheU5hbWUob3duZXIpIHtcclxuXHRcdFx0Y29uc3QgdHlwZSA9IG93bmVyLnR5cGU7XHJcblx0XHRcdGlmICghdHlwZSkgcmV0dXJuIG51bGw7XHJcblx0XHRcdHJldHVybiB0eXBlLmRpc3BsYXlOYW1lIHx8IHR5cGUubmFtZSB8fCBudWxsO1xyXG5cdFx0fVxyXG5cdFx0ZnVuY3Rpb24gY2xhc3NGaWx0ZXIob3duZXIpIHtcclxuXHRcdFx0Y29uc3QgbmFtZSA9IGdldERpc3BsYXlOYW1lKG93bmVyKTtcclxuXHRcdFx0cmV0dXJuIChuYW1lICE9PSBudWxsICYmICEhKG5hbWVGaWx0ZXIuaW5jbHVkZXMobmFtZSkgXiBleGNsdWRpbmcpKTtcclxuXHRcdH1cclxuXHJcblx0XHRsZXQgY3VyciA9IHRoaXMuZ2V0UmVhY3RJbnN0YW5jZShub2RlKTtcclxuXHRcdGZvciAoY3VyciA9IGN1cnIgJiYgY3Vyci5yZXR1cm47IGN1cnIgIT09IG51bGw7IGN1cnIgPSBjdXJyLnJldHVybikge1xyXG5cdFx0XHRpZiAoY3VyciA9PT0gbnVsbCkgY29udGludWU7XHJcblx0XHRcdGNvbnN0IG93bmVyID0gY3Vyci5zdGF0ZU5vZGU7XHJcblx0XHRcdGlmIChjdXJyICE9PSBudWxsICYmICEob3duZXIgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkgJiYgY2xhc3NGaWx0ZXIoY3VycikgJiYgZmlsdGVyKG93bmVyKSkgcmV0dXJuIG93bmVyO1xyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiBudWxsO1xyXG5cdH1cclxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/utilities.js\n");
/***/ }),
/***/ "./src/modules/webpackmodules.js":
/*!***************************************!*\
!*** ./src/modules/webpackmodules.js ***!
\***************************************/
/*! exports provided: Filters, default */
/***/ (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,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");
/***/ }),
/***/ "./src/secure.js":
/*!***********************!*\
!*** ./src/secure.js ***!
\***********************/
/*! exports provided: default */
/***/ (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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvc2VjdXJlLmpzPzZlMmIiXSwibmFtZXMiOlsiY29udGVudFdpbmRvd0dldHRlciIsIk9iamVjdCIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsIkhUTUxJRnJhbWVFbGVtZW50IiwicHJvdG90eXBlIiwiZ2V0IiwiZGVmaW5lUHJvcGVydHkiLCJjb250ZW50V2luZG93IiwiUmVmbGVjdCIsImFwcGx5IiwiYXJndW1lbnRzIiwiUHJveHkiLCJvYmoiLCJwcm9wIiwidW5kZWZpbmVkIiwidmFsIiwiYmluZCIsInZhbHVlIiwid3JpdGFibGUiLCJjb25maWd1cmFibGUiLCJGdW5jdGlvbiIsIm9PcGVuIiwiWE1MSHR0cFJlcXVlc3QiLCJvcGVuIiwidXJsIiwidG9Mb3dlckNhc2UiLCJpbmNsdWRlcyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBZSwyRUFBVztBQUN0QixRQUFNQSxtQkFBbUIsR0FBR0MsTUFBTSxDQUFDQyx3QkFBUCxDQUFnQ0MsaUJBQWlCLENBQUNDLFNBQWxELEVBQTZELGVBQTdELEVBQThFQyxHQUExRztBQUNBSixRQUFNLENBQUNLLGNBQVAsQ0FBc0JILGlCQUFpQixDQUFDQyxTQUF4QyxFQUFtRCxlQUFuRCxFQUFvRTtBQUNoRUMsT0FBRyxFQUFFLFlBQVk7QUFDYixZQUFNRSxhQUFhLEdBQUdDLE9BQU8sQ0FBQ0MsS0FBUixDQUFjVCxtQkFBZCxFQUFtQyxJQUFuQyxFQUF5Q1UsU0FBekMsQ0FBdEI7QUFDQSxhQUFPLElBQUlDLEtBQUosQ0FBVUosYUFBVixFQUF5QjtBQUM1QkwsZ0NBQXdCLEVBQUUsVUFBU1UsR0FBVCxFQUFjQyxJQUFkLEVBQW9CO0FBQzFDLGNBQUlBLElBQUksS0FBSyxjQUFiLEVBQTZCLE9BQU9DLFNBQVA7QUFDN0IsaUJBQU9iLE1BQU0sQ0FBQ0Msd0JBQVAsQ0FBZ0NVLEdBQWhDLEVBQXFDQyxJQUFyQyxDQUFQO0FBQ0gsU0FKMkI7QUFLNUJSLFdBQUcsRUFBRSxVQUFTTyxHQUFULEVBQWNDLElBQWQsRUFBb0I7QUFDckIsY0FBSUEsSUFBSSxLQUFLLGNBQWIsRUFBNkIsT0FBTyxJQUFQO0FBQzdCLGdCQUFNRSxHQUFHLEdBQUdILEdBQUcsQ0FBQ0MsSUFBRCxDQUFmO0FBQ0EsY0FBSSxPQUFPRSxHQUFQLEtBQWUsVUFBbkIsRUFBK0IsT0FBT0EsR0FBRyxDQUFDQyxJQUFKLENBQVNKLEdBQVQsQ0FBUDtBQUMvQixpQkFBT0csR0FBUDtBQUNIO0FBVjJCLE9BQXpCLENBQVA7QUFZSDtBQWYrRCxHQUFwRSxFQUZzQixDQW9CdEI7O0FBQ0FkLFFBQU0sQ0FBQ0ssY0FBUCxDQUFzQkUsT0FBdEIsRUFBK0IsT0FBL0IsRUFBd0M7QUFBQ1MsU0FBSyxFQUFFVCxPQUFPLENBQUNDLEtBQWhCO0FBQXVCUyxZQUFRLEVBQUUsS0FBakM7QUFBd0NDLGdCQUFZLEVBQUU7QUFBdEQsR0FBeEM7QUFDQWxCLFFBQU0sQ0FBQ0ssY0FBUCxDQUFzQmMsUUFBUSxDQUFDaEIsU0FBL0IsRUFBMEMsTUFBMUMsRUFBa0Q7QUFBQ2EsU0FBSyxFQUFFRyxRQUFRLENBQUNoQixTQUFULENBQW1CWSxJQUEzQjtBQUFpQ0UsWUFBUSxFQUFFLEtBQTNDO0FBQWtEQyxnQkFBWSxFQUFFO0FBQWhFLEdBQWxEO0FBRUEsUUFBTUUsS0FBSyxHQUFHQyxjQUFjLENBQUNsQixTQUFmLENBQXlCbUIsSUFBdkM7O0FBQ0FELGdCQUFjLENBQUNsQixTQUFmLENBQXlCbUIsSUFBekIsR0FBZ0MsWUFBVztBQUN2QyxVQUFNQyxHQUFHLEdBQUdkLFNBQVMsQ0FBQyxDQUFELENBQXJCO0FBQ0EsUUFBSWMsR0FBRyxDQUFDQyxXQUFKLEdBQWtCQyxRQUFsQixDQUEyQixjQUEzQixDQUFKLEVBQWdELE9BQU8sSUFBUDtBQUNoRCxXQUFPbEIsT0FBTyxDQUFDQyxLQUFSLENBQWNZLEtBQWQsRUFBcUIsSUFBckIsRUFBMkJYLFNBQTNCLENBQVA7QUFDSCxHQUpEO0FBS0gsQyIsImZpbGUiOiIuL3NyYy9zZWN1cmUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcclxuICAgIGNvbnN0IGNvbnRlbnRXaW5kb3dHZXR0ZXIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEhUTUxJRnJhbWVFbGVtZW50LnByb3RvdHlwZSwgXCJjb250ZW50V2luZG93XCIpLmdldDtcclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShIVE1MSUZyYW1lRWxlbWVudC5wcm90b3R5cGUsIFwiY29udGVudFdpbmRvd1wiLCB7XHJcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNvbnRlbnRXaW5kb3cgPSBSZWZsZWN0LmFwcGx5KGNvbnRlbnRXaW5kb3dHZXR0ZXIsIHRoaXMsIGFyZ3VtZW50cyk7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgUHJveHkoY29udGVudFdpbmRvdywge1xyXG4gICAgICAgICAgICAgICAgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOiBmdW5jdGlvbihvYmosIHByb3ApIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocHJvcCA9PT0gXCJsb2NhbFN0b3JhZ2VcIikgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIHByb3ApO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24ob2JqLCBwcm9wKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHByb3AgPT09IFwibG9jYWxTdG9yYWdlXCIpIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbCA9IG9ialtwcm9wXTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHZhbCA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gdmFsLmJpbmQob2JqKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyBQcmV2ZW50IGludGVyY2VwdGlvbiBieSBwYXRjaGluZyBSZWZsZWN0LmFwcGx5IGFuZCBGdW5jdGlvbi5wcm90b3R5cGUuYmluZFxyXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFJlZmxlY3QsIFwiYXBwbHlcIiwge3ZhbHVlOiBSZWZsZWN0LmFwcGx5LCB3cml0YWJsZTogZmFsc2UsIGNvbmZpZ3VyYWJsZTogZmFsc2V9KTtcclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShGdW5jdGlvbi5wcm90b3R5cGUsIFwiYmluZFwiLCB7dmFsdWU6IEZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kLCB3cml0YWJsZTogZmFsc2UsIGNvbmZpZ3VyYWJsZTogZmFsc2V9KTtcclxuXHJcbiAgICBjb25zdCBvT3BlbiA9IFhNTEh0dHBSZXF1ZXN0LnByb3RvdHlwZS5vcGVuO1xyXG4gICAgWE1MSHR0cFJlcXVlc3QucHJvdG90eXBlLm9wZW4gPSBmdW5jdGlvbigpIHtcclxuICAgICAgICBjb25zdCB1cmwgPSBhcmd1bWVudHNbMV07XHJcbiAgICAgICAgaWYgKHVybC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKFwiYXBpL3dlYmhvb2tzXCIpKSByZXR1cm4gbnVsbDtcclxuICAgICAgICByZXR1cm4gUmVmbGVjdC5hcHBseShvT3BlbiwgdGhpcywgYXJndW1lbnRzKTtcclxuICAgIH07XHJcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/secure.js\n");
/***/ }),
/***/ "./src/structs/addonerror.js":
/*!***********************************!*\
!*** ./src/structs/addonerror.js ***!
\***********************************/
/*! exports provided: default */
/***/ (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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvc3RydWN0cy9hZGRvbmVycm9yLmpzP2VmODAiXSwibmFtZXMiOlsiQWRkb25FcnJvciIsIkVycm9yIiwiY29uc3RydWN0b3IiLCJuYW1lIiwiZmlsZW5hbWUiLCJtZXNzYWdlIiwiZXJyb3IiLCJmaWxlIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQWUsTUFBTUEsVUFBTixTQUF5QkMsS0FBekIsQ0FBK0I7QUFDMUNDLGFBQVcsQ0FBQ0MsSUFBRCxFQUFPQyxRQUFQLEVBQWlCQyxPQUFqQixFQUEwQkMsS0FBMUIsRUFBaUM7QUFDeEMsVUFBTUQsT0FBTjtBQUNBLFNBQUtGLElBQUwsR0FBWUEsSUFBWjtBQUNBLFNBQUtJLElBQUwsR0FBWUgsUUFBWjtBQUNBLFNBQUtFLEtBQUwsR0FBYUEsS0FBYjtBQUNIOztBQU55QyIsImZpbGUiOiIuL3NyYy9zdHJ1Y3RzL2FkZG9uZXJyb3IuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBjbGFzcyBBZGRvbkVycm9yIGV4dGVuZHMgRXJyb3Ige1xyXG4gICAgY29uc3RydWN0b3IobmFtZSwgZmlsZW5hbWUsIG1lc3NhZ2UsIGVycm9yKSB7XHJcbiAgICAgICAgc3VwZXIobWVzc2FnZSk7XHJcbiAgICAgICAgdGhpcy5uYW1lID0gbmFtZTtcclxuICAgICAgICB0aGlzLmZpbGUgPSBmaWxlbmFtZTtcclxuICAgICAgICB0aGlzLmVycm9yID0gZXJyb3I7XHJcbiAgICB9XHJcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/structs/addonerror.js\n");
/***/ }),
/***/ "./src/structs/builtin.js":
/*!********************************!*\
!*** ./src/structs/builtin.js ***!
\********************************/
/*! exports provided: default */
/***/ (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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvc3RydWN0cy9idWlsdGluLmpzPzk1NjIiXSwibmFtZXMiOlsiQnVpbHRpbk1vZHVsZSIsIm5hbWUiLCJjb2xsZWN0aW9uIiwiY2F0ZWdvcnkiLCJpZCIsImluaXRpYWxpemUiLCJTZXR0aW5ncyIsImdldCIsImVuYWJsZSIsIkV2ZW50cyIsIm9uIiwiZW5hYmxlZCIsImRpc2FibGUiLCJpbml0aWFsaXplZCIsInJlZ2lzdGVyU2V0dGluZyIsIm9uRW5hYmxlIiwib25EaXNhYmxlIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwidmFsdWUiLCJsb2ciLCJlIiwic3RhY2t0cmFjZSIsImRpc2FibGVkIiwibWVzc2FnZSIsIkxvZ2dlciIsIndhcm4iLCJlcnJvciIsImVyciIsImJlZm9yZSIsIm9iamVjdCIsImZ1bmMiLCJjYWxsYmFjayIsIlBhdGNoZXIiLCJhZnRlciIsInVucGF0Y2hBbGwiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRWUsTUFBTUEsYUFBTixDQUFvQjtBQUUvQixNQUFJQyxJQUFKLEdBQVc7QUFBQyxXQUFPLGlCQUFQO0FBQTBCOztBQUN0QyxNQUFJQyxVQUFKLEdBQWlCO0FBQUMsV0FBTyxVQUFQO0FBQW1COztBQUNyQyxNQUFJQyxRQUFKLEdBQWU7QUFBQyxXQUFPLFNBQVA7QUFBa0I7O0FBQ2xDLE1BQUlDLEVBQUosR0FBUztBQUFDLFdBQU8sTUFBUDtBQUFlOztBQUV6QixRQUFNQyxVQUFOLEdBQW1CO0FBQ2YsUUFBSUMsZ0VBQVEsQ0FBQ0MsR0FBVCxDQUFhLEtBQUtMLFVBQWxCLEVBQThCLEtBQUtDLFFBQW5DLEVBQTZDLEtBQUtDLEVBQWxELENBQUosRUFBMkQsTUFBTSxLQUFLSSxNQUFMLEVBQU47QUFDM0RDLDREQUFNLENBQUNDLEVBQVAsQ0FBVSxpQkFBVixFQUE2QixDQUFDUixVQUFELEVBQWFDLFFBQWIsRUFBdUJDLEVBQXZC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Q0FBVyxLQUFLbkIsSUFBaEIsRUFBc0IsR0FBR3VCLE9BQXpCO0FBQ0g7O0FBRURFLE1BQUksQ0FBQyxHQUFHRixPQUFKLEVBQWE7QUFDYkMsMkRBQU0sQ0FBQ0MsSUFBUCxDQUFZLEtBQUt6QixJQUFqQixFQUF1QixHQUFHdUIsT0FBMUI7QUFDSDs7QUFFREcsT0FBSyxDQUFDLEdBQUdILE9BQUosRUFBYTtBQUNkQywyREFBTSxDQUFDRyxHQUFQLENBQVcsS0FBSzNCLElBQWhCLEVBQXNCLEdBQUd1QixPQUF6QjtBQUNIOztBQUVERixZQUFVLENBQUNFLE9BQUQsRUFBVUcsS0FBVixFQUFpQjtBQUN2QkYsMkRBQU0sQ0FBQ0gsVUFBUCxDQUFrQixLQUFLckIsSUFBdkIsRUFBNkJ1QixPQUE3QixFQUFzQ0csS0FBdEM7QUFDSDs7QUFFREUsUUFBTSxDQUFDQyxNQUFELEVBQVNDLElBQVQsRUFBZUMsUUFBZixFQUF5QjtBQUMzQixXQUFPQyx3REFBTyxDQUFDSixNQUFSLENBQWUsS0FBSzVCLElBQXBCLEVBQTBCNkIsTUFBMUIsRUFBa0NDLElBQWxDLEVBQXdDQyxRQUF4QyxDQUFQO0FBQ0g7O0FBRURFLE9BQUssQ0FBQ0osTUFBRCxFQUFTQyxJQUFULEVBQWVDLFFBQWYsRUFBeUI7QUFDMUIsV0FBT0Msd0RBQU8sQ0FBQ0MsS0FBUixDQUFjLEtBQUtqQyxJQUFuQixFQUF5QjZCLE1BQXpCLEVBQWlDQyxJQUFqQyxFQUF1Q0MsUUFBdkMsQ0FBUDtBQUNIOztBQUVERyxZQUFVLEdBQUc7QUFDVCxXQUFPRix3REFBTyxDQUFDRSxVQUFSLENBQW1CLEtBQUtsQyxJQUF4QixDQUFQO0FBQ0g7O0FBN0Y4QiIsImZpbGUiOiIuL3NyYy9zdHJ1Y3RzL2J1aWx0aW4uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nZ2VyIGZyb20gXCIuLi9tb2R1bGVzL2xvZ2dlclwiO1xyXG5pbXBvcnQgRXZlbnRzIGZyb20gXCIuLi9tb2R1bGVzL2VtaXR0ZXJcIjtcclxuaW1wb3J0IFNldHRpbmdzIGZyb20gXCIuLi9tb2R1bGVzL3NldHRpbmdzbWFuYWdlclwiO1xyXG5pbXBvcnQgUGF0Y2hlciBmcm9tIFwiLi4vbW9kdWxlcy9wYXRjaGVyXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCdWlsdGluTW9kdWxlIHtcclxuXHJcbiAgICBnZXQgbmFtZSgpIHtyZXR1cm4gXCJVbm5hbWVkIEJ1aWx0aW5cIjt9XHJcbiAgICBnZXQgY29sbGVjdGlvbigpIHtyZXR1cm4gXCJzZXR0aW5nc1wiO31cclxuICAgIGdldCBjYXRlZ29yeSgpIHtyZXR1cm4gXCJnZW5lcmFsXCI7fVxyXG4gICAgZ2V0IGlkKCkge3JldHVybiBcIk5vbmVcIjt9XHJcblxyXG4gICAgYXN5bmMgaW5pdGlhbGl6ZSgpIHtcclxuICAgICAgICBpZiAoU2V0dGluZ3MuZ2V0KHRoaXMuY29sbGVjdGlvbiwgdGhpcy5jYXRlZ29yeSwgdGhpcy5pZCkpIGF3YWl0IHRoaXMuZW5hYmxlKCk7XHJcbiAgICAgICAgRXZlbnRzLm9uKFwic2V0dGluZy11cGRhdGVkXCIsIChjb2xsZWN0aW9uLCBjYXRlZ29yeSwgaWQsIGVuYWJsZWQpID0+IHtcclxuICAgICAgICAgICAgaWYgKGNvbGxlY3Rpb24gIT0gdGhpcy5jb2xsZWN0aW9uIHx8IGNhdGVnb3J5ICE9PSB0aGlzLmNhdGVnb3J5IHx8IGlkICE9PSB0aGlzLmlkKSByZXR1cm47XHJcbiAgICAgICAgICAgIGlmIChlbmFibGVkKSB0aGlzLmVuYWJsZSgpO1xyXG4gICAgICAgICAgICBlbHNlIHRoaXMuZGlzYWJsZSgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHJlZ2lzdGVyU2V0dGluZyhjb2xsZWN0aW9uLCBjYXRlZ29yeSwgaWQsIG9uRW5hYmxlLCBvbkRpc2FibGUpIHtcclxuICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PSA0KSB7XHJcbiAgICAgICAgICAgIGNvbGxlY3Rpb24gPSB0aGlzLmNvbGxlY3Rpb247XHJcbiAgICAgICAgICAgIGNhdGVnb3J5ID0gYXJndW1lbnRzWzBdO1xyXG4gICAgICAgICAgICBpZCA9IGFyZ3VtZW50c1sxXTtcclxuICAgICAgICAgICAgb25FbmFibGUgPSBhcmd1bWVudHNbMl07XHJcbiAgICAgICAgICAgIG9uRGlzYWJsZSA9IGFyZ3VtZW50c1szXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PSAzKSB7XHJcbiAgICAgICAgICAgIGNvbGxlY3Rpb24gPSB0aGlzLmNvbGxlY3Rpb247XHJcbiAgICAgICAgICAgIGNhdGVnb3J5ID0gdGhpcy5jYXRlZ29yeTtcclxuICAgICAgICAgICAgaWQgPSBhcmd1bWVudHNbMF07XHJcbiAgICAgICAgICAgIG9uRW5hYmxlID0gYXJndW1lbnRzWzFdO1xyXG4gICAgICAgICAgICBvbkRpc2FibGUgPSBhcmd1bWVudHNbMl07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBTZXR0aW5ncy5vbihjb2xsZWN0aW9uLCBjYXRlZ29yeSwgaWQsICh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAodmFsdWUpIG9uRW5hYmxlKCk7XHJcbiAgICAgICAgICAgIGVsc2Ugb25EaXNhYmxlKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0KGNvbGxlY3Rpb24sIGNhdGVnb3J5LCBpZCkge1xyXG4gICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09IDIpIHtcclxuICAgICAgICAgICAgY29sbGVjdGlvbiA9IHRoaXMuY29sbGVjdGlvbjtcclxuICAgICAgICAgICAgY2F0ZWdvcnkgPSBhcmd1bWVudHNbMF07XHJcbiAgICAgICAgICAgIGlkID0gYXJndW1lbnRzWzFdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChhcmd1bWVudHMubGVuZ3RoID09IDEpIHtcclxuICAgICAgICAgICAgY29sbGVjdGlvbiA9IHRoaXMuY29sbGVjdGlvbjtcclxuICAgICAgICAgICAgY2F0ZWdvcnkgPSB0aGlzLmNhdGVnb3J5O1xyXG4gICAgICAgICAgICBpZCA9IGFyZ3VtZW50c1swXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIFNldHRpbmdzLmdldChjb2xsZWN0aW9uLCBjYXRlZ29yeSwgaWQpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGVuYWJsZSgpIHtcclxuICAgICAgICB0aGlzLmxvZyhcIkVuYWJsZWRcIik7XHJcbiAgICAgICAgdHJ5IHthd2FpdCB0aGlzLmVuYWJsZWQoKTt9XHJcbiAgICAgICAgY2F0Y2ggKGUpIHt0aGlzLnN0YWNrdHJhY2UoXCJDb3VsZCBub3QgYmUgZW5hYmxlZFwiLCBlKTt9XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZGlzYWJsZSgpIHtcclxuICAgICAgICB0aGlzLmxvZyhcIkRpc2FibGVkXCIpO1xyXG4gICAgICAgIHRyeSB7YXdhaXQgdGhpcy5kaXNhYmxlZCgpO31cclxuICAgICAgICBjYXRjaCAoZSkge3RoaXMuc3RhY2t0cmFjZShcIkNvdWxkIG5vdCBiZSBkaXNhYmxlZFwiLCBlKTt9XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZW5hYmxlZCgpIHt9XHJcbiAgICBhc3luYyBkaXNhYmxlZCgpIHt9XHJcblxyXG4gICAgbG9nKC4uLm1lc3NhZ2UpIHtcclxuICAgICAgICBMb2dnZXIubG9nKHRoaXMubmFtZSwgLi4ubWVzc2FnZSk7XHJcbiAgICB9XHJcblxyXG4gICAgd2FybiguLi5tZXNzYWdlKSB7XHJcbiAgICAgICAgTG9nZ2VyLndhcm4odGhpcy5uYW1lLCAuLi5tZXNzYWdlKTtcclxuICAgIH1cclxuXHJcbiAgICBlcnJvciguLi5tZXNzYWdlKSB7XHJcbiAgICAgICAgTG9nZ2VyLmVycih0aGlzLm5hbWUsIC4uLm1lc3NhZ2UpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YWNrdHJhY2UobWVzc2FnZSwgZXJyb3IpIHtcclxuICAgICAgICBMb2dnZXIuc3RhY2t0cmFjZSh0aGlzLm5hbWUsIG1lc3NhZ2UsIGVycm9yKTtcclxuICAgIH1cclxuXHJcbiAgICBiZWZvcmUob2JqZWN0LCBmdW5jLCBjYWxsYmFjaykge1xyXG4gICAgICAgIHJldHVybiBQYXRjaGVyLmJlZm9yZSh0aGlzLm5hbWUsIG9iamVjdCwgZnVuYywgY2FsbGJhY2spO1xyXG4gICAgfVxyXG5cclxuICAgIGFmdGVyKG9iamVjdCwgZnVuYywgY2FsbGJhY2spIHtcclxuICAgICAgICByZXR1cm4gUGF0Y2hlci5hZnRlcih0aGlzLm5hbWUsIG9iamVjdCwgZnVuYywgY2FsbGJhY2spO1xyXG4gICAgfVxyXG5cclxuICAgIHVucGF0Y2hBbGwoKSB7XHJcbiAgICAgICAgcmV0dXJuIFBhdGNoZXIudW5wYXRjaEFsbCh0aGlzLm5hbWUpO1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/structs/builtin.js\n");
/***/ }),
/***/ "./src/structs/metaerror.js":
/*!**********************************!*\
!*** ./src/structs/metaerror.js ***!
\**********************************/
/*! exports provided: default */
/***/ (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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvc3RydWN0cy9tZXRhZXJyb3IuanM/ZTE5NiJdLCJuYW1lcyI6WyJNZXRhRXJyb3IiLCJFcnJvciIsImNvbnN0cnVjdG9yIiwibWVzc2FnZSIsIm5hbWUiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBZSxNQUFNQSxTQUFOLFNBQXdCQyxLQUF4QixDQUE4QjtBQUN6Q0MsYUFBVyxDQUFDQyxPQUFELEVBQVU7QUFDakIsVUFBTUEsT0FBTjtBQUNBLFNBQUtDLElBQUwsR0FBWSxXQUFaO0FBQ0g7O0FBSndDIiwiZmlsZSI6Ii4vc3JjL3N0cnVjdHMvbWV0YWVycm9yLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgY2xhc3MgTWV0YUVycm9yIGV4dGVuZHMgRXJyb3Ige1xyXG4gICAgY29uc3RydWN0b3IobWVzc2FnZSkge1xyXG4gICAgICAgIHN1cGVyKG1lc3NhZ2UpO1xyXG4gICAgICAgIHRoaXMubmFtZSA9IFwiTWV0YUVycm9yXCI7XHJcbiAgICB9XHJcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/structs/metaerror.js\n");
/***/ }),
/***/ "./src/structs/psconnection.js":
/*!*************************************!*\
!*** ./src/structs/psconnection.js ***!
\*************************************/
/*! exports provided: default */
/***/ (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_modules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../modules/modules.js */ \"./src/modules/modules.js\");\n\nconst SortedGuildStore = _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"WebpackModules\"].getByProps(\"getSortedGuilds\");\nconst AvatarDefaults = _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"WebpackModules\"].getByProps(\"getUserAvatarURL\", \"DEFAULT_AVATARS\");\nconst InviteActions = _modules_modules_js__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/ZWZmNiJdLCJuYW1lcyI6WyJTb3J0ZWRHdWlsZFN0b3JlIiwiV2VicGFja01vZHVsZXMiLCJnZXRCeVByb3BzIiwiQXZhdGFyRGVmYXVsdHMiLCJJbnZpdGVBY3Rpb25zIiwiQnJvd3NlcldpbmRvdyIsInJlcXVpcmUiLCJyZW1vdGUiLCJQdWJsaWNTZXJ2ZXJzQ29ubmVjdGlvbiIsImVuZFBvaW50Iiwiam9pbkVuZFBvaW50IiwiY29ubmVjdEVuZFBvaW50IiwiZ2V0RGVmYXVsdEF2YXRhciIsIkRFRkFVTFRfQVZBVEFSUyIsIk1hdGgiLCJmbG9vciIsInJhbmRvbSIsImhhc0pvaW5lZCIsImlkIiwiZ2V0RmxhdHRlbmVkR3VpbGRJZHMiLCJpbmNsdWRlcyIsInNlYXJjaCIsInRlcm0iLCJjYXRlZ29yeSIsImZyb20iLCJyZXF1ZXN0IiwiUHJvbWlzZSIsInJlc29sdmUiLCJxdWVyaWVzIiwicHVzaCIsInJlcGxhY2UiLCJxdWVyeSIsImpvaW4iLCJnZXQiLCJ1cmwiLCJqc29uIiwiZXJyIiwicmVzcCIsImRhdGEiLCJuZXh0Iiwic2l6ZSIsInNlcnZlcnMiLCJyZXN1bHRzIiwidG90YWwiLCJuYXRpdmUiLCJhY2NlcHRJbnZpdGUiLCJmZXRjaCIsIm1ldGhvZCIsImNyZWRlbnRpYWxzIiwibW9kZSIsImhlYWRlcnMiLCJlIiwiY2hlY2tDb25uZWN0aW9uIiwicmVzcG9uc2UiLCJfYWNjZXNzVG9rZW4iLCJhY2Nlc3NfdG9rZW4iLCJlcnJvciIsImNvbm5lY3QiLCJqb2luV2luZG93Iiwid2luZG93T3B0aW9ucyIsIndlYkNvbnRlbnRzIiwib24iLCJldmVudCIsIm5hdlVybCIsImNsb3NlIiwibG9hZFVSTCIsIndpZHRoIiwiaGVpZ2h0IiwiYmFja2dyb3VuZENvbG9yIiwic2hvdyIsInJlc2l6YWJsZSIsIm1heGltaXphYmxlIiwibWluaW1pemFibGUiLCJhbHdheXNPblRvcCIs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WUFBTStCLFVBQVUsR0FBRyxJQUFJckQsYUFBSixDQUFrQixLQUFLc0QsYUFBdkIsQ0FBbkI7QUFDQSxZQUFNekIsR0FBRyxHQUFJLDBFQUF5RSxLQUFLdkIsZUFBZ0IsRUFBM0c7QUFDQStDLGdCQUFVLENBQUNFLFdBQVgsQ0FBdUJDLEVBQXZCLENBQTBCLGNBQTFCLEVBQTBDLENBQUNDLEtBQUQsRUFBUUMsTUFBUixLQUFtQjtBQUN6RCxZQUFJQSxNQUFNLElBQUksS0FBS3BELGVBQW5CLEVBQW9DO0FBQ3BDK0Msa0JBQVUsQ0FBQ00sS0FBWDtBQUNBckMsZUFBTztBQUNWLE9BSkQ7QUFLQStCLGdCQUFVLENBQUNPLE9BQVgsQ0FBbUIvQixHQUFuQjtBQUNILEtBVE0sQ0FBUDtBQVVIOztBQUVELGFBQVd5QixhQUFYLEdBQTJCO0FBQ3ZCLFdBQU87QUFDSE8sV0FBSyxFQUFFLEdBREo7QUFFSEMsWUFBTSxFQUFFLEdBRkw7QUFHSEMscUJBQWUsRUFBRSxTQUhkO0FBSUhDLFVBQUksRUFBRSxJQUpIO0FBS0hDLGVBQVMsRUFBRSxJQUxSO0FBTUhDLGlCQUFXLEVBQUUsS0FOVjtBQU9IQyxpQkFBVyxFQUFFLEtBUFY7QUFRSEMsaUJBQVcsRUFBRSxJQVJWO0FBU0hDLFdBQUssRUFBRSxLQVRKO0FBVUhDLFlBQU0sRUFBRSxJQVZMO0FBV0hDLG9CQUFjLEVBQUU7QUFDWkMsdUJBQWUsRUFBRTtBQURMO0FBWGIsS0FBUDtBQWVIOztBQXhHd0MiLCJmaWxlIjoiLi9zcmMvc3RydWN0cy9wc2Nvbm5lY3Rpb24uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1dlYnBhY2tNb2R1bGVzfSBmcm9tIFwibW9kdWxlc1wiO1xyXG5cclxuY29uc3QgU29ydGVkR3VpbGRTdG9yZSA9IFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJnZXRTb3J0ZWRHdWlsZHNcIik7XHJcbmNvbnN0IEF2YXRhckRlZmF1bHRzID0gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcImdldFVzZXJBdmF0YXJVUkxcIiwgXCJERUZBVUxUX0FWQVRBUlNcIik7XHJcbmNvbnN0IEludml0ZUFjdGlvbnMgPSBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiYWNjZXB0SW52aXRlXCIpO1xyXG5cclxuY29uc3QgQnJvd3NlcldpbmRvdyA9IHJlcXVpcmUoXCJlbGVjdHJvblwiKS5yZW1vdGUuQnJvd3NlcldpbmRvdztcclxuXHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQdWJsaWNTZXJ2ZXJzQ29ubmVjdGlvbiB7XHJcblxyXG4gICAgc3RhdGljIGdldCBlbmRQb2ludCgpIHtyZXR1cm4gXCJodHRwczovL3NlYXJjaC5kaXNjb3Jkc2VydmVycy5jb21cIjt9XHJcbiAgICBzdGF0aWMgZ2V0IGpvaW5FbmRQb2ludCgpIHtyZXR1cm4gXCJodHRwczovL2ouZGlzY29yZHNlcnZlcnMuY29tXCI7fVxyXG4gICAgc3RhdGljIGdldCBjb25uZWN0RW5kUG9pbnQoKSB7cmV0dXJuIFwiaHR0cHM6Ly9hdXRoLmRpc2NvcmRzZXJ2ZXJzLmNvbS9pbmZvXCI7fVxyXG5cclxuICAgIHN0YXRpYyBnZXREZWZhdWx0QXZhdGFyKCkge1xyXG4gICAgICAgIHJldHVybiBBdmF0YXJEZWZhdWx0cy5ERUZBVUxUX0FWQVRBUlNbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogNSldO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBoYXNKb2luZWQoaWQpIHtcclxuICAgICAgICByZXR1cm4gU29ydGVkR3VpbGRTdG9yZS5nZXRGbGF0dGVuZWRHdWlsZElkcygpLmluY2x1ZGVzKGlkKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgc2VhcmNoKHt0ZXJtID0gXCJcIiwgY2F0ZWdvcnkgPSBcIlwiLCBmcm9tID0gMH0gPSB7fSkge1xyXG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSByZXF1aXJlKFwicmVxdWVzdFwiKTtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHF1ZXJpZXMgPSBbXTtcclxuICAgICAgICAgICAgaWYgKGNhdGVnb3J5KSBxdWVyaWVzLnB1c2goYGNhdGVnb3J5PSR7Y2F0ZWdvcnkucmVwbGFjZSgvIC9nLCBcIiUyMFwiKX1gKTtcclxuICAgICAgICAgICAgaWYgKHRlcm0pIHF1ZXJpZXMucHVzaChgdGVybT0ke3Rlcm0ucmVwbGFjZSgvIC9nLCBcIiUyMFwiKX1gKTtcclxuICAgICAgICAgICAgaWYgKGZyb20pIHF1ZXJpZXMucHVzaChgZnJvbT0ke2Zyb219YCk7XHJcbiAgICAgICAgICAgIGNvbnN0IHF1ZXJ5ID0gYD8ke3F1ZXJpZXMuam9pbihcIiZcIil9YDtcclxuICAgICAgICAgICAgcmVxdWVzdC5nZXQoe3VybDogYCR7dGhpcy5lbmRQb2ludH0ke3F1ZXJ5fSR7cXVlcnkgPyBcIiZzY2hlbWE9bmV3XCIgOiBcIj9zY2hlbWE9bmV3XCJ9YCwganNvbjogdHJ1ZX0sIChlcnIsIHJlc3AsIGRhdGEpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChlcnIpIHJldHVybiByZXNvbHZlKG51bGwpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbmV4dCA9IGRhdGEuc2l6ZSArIGRhdGEuZnJvbTtcclxuICAgICAgICAgICAgICAgIHJlc29sdmUoe1xyXG4gICAgICAgICAgICAgICAgICAgIHNlcnZlcnM6IGRhdGEucmVzdWx0cyxcclxuICAgICAgICAgICAgICAgICAgICBzaXplOiBkYXRhLnNpemUsXHJcbiAgICAgICAgICAgICAgICAgICAgZnJvbTogZGF0YS5mcm9tLFxyXG4gICAgICAgICAgICAgICAgICAgIHRvdGFsOiBkYXRhLnRvdGFsLFxyXG4gICAgICAgICAgICAgICAgICAgIG5leHQ6IG5leHQgPj0gZGF0YS50b3RhbCA/IG51bGwgOiBuZXh0XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGFzeW5jIGpvaW4oaWQsIG5hdGl2ZSA9IGZhbHNlKSB7XHJcbiAgICAgICAgaWYgKG5hdGl2ZSkgcmV0dXJuIEludml0ZUFjdGlvbnMuYWNjZXB0SW52aXRlKGlkKTtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBhd2FpdCBmZXRjaChgJHt0aGlzLmpvaW5FbmRQb2ludH0vJHtpZH1gLHtcclxuICAgICAgICAgICAgICAgIG1ldGhvZDogXCJHRVRcIixcclxuICAgICAgICAgICAgICAgIGNyZWRlbnRpYWxzOiBcImluY2x1ZGVcIixcclxuICAgICAgICAgICAgICAgIG1vZGU6IFwiY29yc1wiLFxyXG4gICAgICAgICAgICAgICAgaGVhZGVyczoge1xyXG4gICAgICAgICAgICAgICAgICAgIFwiQWNjZXB0XCI6IFwiYXBwbGljYXRpb24vanNvblwiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgYXN5bmMgY2hlY2tDb25uZWN0aW9uKCkge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYGh0dHBzOi8vYXV0aC5kaXNjb3Jkc2VydmVycy5jb20vaW5mb2Ase1xyXG4gICAgICAgICAgICAgICAgbWV0aG9kOiBcIkdFVFwiLFxyXG4gICAgICAgICAgICAgICAgY3JlZGVudGlhbHM6IFwiaW5jbHVkZVwiLFxyXG4gICAgICAgICAgICAgICAgbW9kZTogXCJjb3JzXCIsXHJcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgXCJBY2NlcHRcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCJcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKCk7XHJcbiAgICAgICAgICAgIHRoaXMuX2FjY2Vzc1Rva2VuID0gZGF0YS5hY2Nlc3NfdG9rZW47XHJcbiAgICAgICAgICAgIHJldHVybiBkYXRhO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgY29ubmVjdCgpIHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGpvaW5XaW5kb3cgPSBuZXcgQnJvd3NlcldpbmRvdyh0aGlzLndpbmRvd09wdGlvbnMpO1xyXG4gICAgICAgICAgICBjb25zdCB1cmwgPSBgaHR0cHM6Ly9hdXRoLmRpc2NvcmRzZXJ2ZXJzLmNvbS9jb25uZWN0P3Njb3Blcz1ndWlsZHMuam9pbiZwcmV2aW91c1VybD0ke3RoaXMuY29ubmVjdEVuZFBvaW50fWA7XHJcbiAgICAgICAgICAgIGpvaW5XaW5kb3cud2ViQ29udGVudHMub24oXCJkaWQtbmF2aWdhdGVcIiwgKGV2ZW50LCBuYXZVcmwpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChuYXZVcmwgIT0gdGhpcy5jb25uZWN0RW5kUG9pbnQpIHJldHVybjtcclxuICAgICAgICAgICAgICAgIGpvaW5XaW5kb3cuY2xvc2UoKTtcclxuICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGpvaW5XaW5kb3cubG9hZFVSTCh1cmwpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBnZXQgd2luZG93T3B0aW9ucygpIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICB3aWR0aDogMzgwLFxyXG4gICAgICAgICAgICBoZWlnaHQ6IDQ1MCxcclxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBcIiMyODJiMzBcIixcclxuICAgICAgICAgICAgc2hvdzogdHJ1ZSxcclxuICAgICAgICAgICAgcmVzaXphYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICBtYXhpbWl6YWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgIG1pbmltaXphYmxlOiBmYWxzZSxcclxuICAgICAgICAgICAgYWx3YXlzT25Ub3A6IHRydWUsXHJcbiAgICAgICAgICAgIGZyYW1lOiBmYWxzZSxcclxuICAgICAgICAgICAgY2VudGVyOiB0cnVlLFxyXG4gICAgICAgICAgICB3ZWJQcmVmZXJlbmNlczoge1xyXG4gICAgICAgICAgICAgICAgbm9kZUludGVncmF0aW9uOiBmYWxzZVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbn1cclxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/structs/psconnection.js\n");
/***/ }),
/***/ "./src/structs/screen.js":
/*!*******************************!*\
!*** ./src/structs/screen.js ***!
\*******************************/
/*! exports provided: default */
/***/ (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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvc3RydWN0cy9zY3JlZW4uanM/NGIyMSJdLCJuYW1lcyI6WyJTY3JlZW4iLCJ3aWR0aCIsIk1hdGgiLCJtYXgiLCJkb2N1bWVudCIsImRvY3VtZW50RWxlbWVudCIsImNsaWVudFdpZHRoIiwid2luZG93IiwiaW5uZXJXaWR0aCIsImhlaWdodCIsImNsaWVudEhlaWdodCIsImlubmVySGVpZ2h0Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQWUsTUFBTUEsTUFBTixDQUFhO0FBQ3hCO0FBQ0EsYUFBV0MsS0FBWCxHQUFtQjtBQUFFLFdBQU9DLElBQUksQ0FBQ0MsR0FBTCxDQUFTQyxRQUFRLENBQUNDLGVBQVQsQ0FBeUJDLFdBQWxDLEVBQStDQyxNQUFNLENBQUNDLFVBQVAsSUFBcUIsQ0FBcEUsQ0FBUDtBQUFnRjtBQUNyRzs7O0FBQ0EsYUFBV0MsTUFBWCxHQUFvQjtBQUFFLFdBQU9QLElBQUksQ0FBQ0MsR0FBTCxDQUFTQyxRQUFRLENBQUNDLGVBQVQsQ0FBeUJLLFlBQWxDLEVBQWdESCxNQUFNLENBQUNJLFdBQVAsSUFBc0IsQ0FBdEUsQ0FBUDtBQUFrRjs7QUFKaEYiLCJmaWxlIjoiLi9zcmMvc3RydWN0cy9zY3JlZW4uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBjbGFzcyBTY3JlZW4ge1xyXG4gICAgLyoqIERvY3VtZW50L3dpbmRvdyB3aWR0aCAqL1xyXG4gICAgc3RhdGljIGdldCB3aWR0aCgpIHsgcmV0dXJuIE1hdGgubWF4KGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aCwgd2luZG93LmlubmVyV2lkdGggfHwgMCk7IH1cclxuICAgIC8qKiBEb2N1bWVudC93aW5kb3cgaGVpZ2h0ICovXHJcbiAgICBzdGF0aWMgZ2V0IGhlaWdodCgpIHsgcmV0dXJuIE1hdGgubWF4KGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQsIHdpbmRvdy5pbm5lckhlaWdodCB8fCAwKTsgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/structs/screen.js\n");
/***/ }),
/***/ "./src/structs/string.js":
/*!*******************************!*\
!*** ./src/structs/string.js ***!
\*******************************/
/*! exports provided: default */
/***/ (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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvc3RydWN0cy9zdHJpbmcuanM/M2E4ZSJdLCJuYW1lcyI6WyJGb3JtYXR0YWJsZVN0cmluZyIsIlN0cmluZyIsImZvcm1hdCIsInZhbHVlcyIsIlV0aWxpdGllcyIsImZvcm1hdFN0cmluZyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFFZSxNQUFNQSxpQkFBTixTQUFnQ0MsTUFBaEMsQ0FBdUM7QUFDbERDLFFBQU0sQ0FBQ0MsTUFBRCxFQUFTO0FBQ1gsV0FBT0MsMERBQVMsQ0FBQ0MsWUFBVixDQUF1QixJQUF2QixFQUE2QkYsTUFBN0IsQ0FBUDtBQUNIOztBQUhpRCIsImZpbGUiOiIuL3NyYy9zdHJ1Y3RzL3N0cmluZy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBVdGlsaXRpZXMgZnJvbSBcIi4uL21vZHVsZXMvdXRpbGl0aWVzXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBGb3JtYXR0YWJsZVN0cmluZyBleHRlbmRzIFN0cmluZyB7XHJcbiAgICBmb3JtYXQodmFsdWVzKSB7XHJcbiAgICAgICAgcmV0dXJuIFV0aWxpdGllcy5mb3JtYXRTdHJpbmcodGhpcywgdmFsdWVzKTtcclxuICAgIH1cclxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/structs/string.js\n");
/***/ }),
/***/ "./src/ui/customcss/checkbox.jsx":
/*!***************************************!*\
!*** ./src/ui/customcss/checkbox.jsx ***!
\***************************************/
/*! exports provided: default */
/***/ (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_modules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../modules/modules.js */ \"./src/modules/modules.js\");\n\nclass Checkbox extends _modules_modules_js__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_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"checkbox-item\"\n }, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"checkbox-label label-JWQiNe da-label\"\n }, this.props.text), /*#__PURE__*/_modules_modules_js__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_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"checkbox-inner checkboxInner-3yjcPe da-checkboxInner\"\n }, /*#__PURE__*/_modules_modules_js__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_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"span\", null)), /*#__PURE__*/_modules_modules_js__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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvY3VzdG9tY3NzL2NoZWNrYm94LmpzeD8yMmI1Il0sIm5hbWVzIjpbIkNoZWNrYm94IiwiUmVhY3QiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwib25DbGljayIsImJpbmQiLCJzdGF0ZSIsImNoZWNrZWQiLCJyZW5kZXIiLCJ0ZXh0Iiwib25DaGFuZ2UiLCJzZXRTdGF0ZSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFFZSxNQUFNQSxRQUFOLFNBQXVCQyx5REFBSyxDQUFDQyxTQUE3QixDQUF1QztBQUNsREMsYUFBVyxDQUFDQyxLQUFELEVBQVE7QUFDZixVQUFNQSxLQUFOO0FBQ0EsU0FBS0MsT0FBTCxHQUFlLEtBQUtBLE9BQUwsQ0FBYUMsSUFBYixDQUFrQixJQUFsQixDQUFmO0FBQ0EsU0FBS0MsS0FBTCxHQUFhO0FBQUNDLGFBQU8sRUFBRSxLQUFLSixLQUFMLENBQVdJLE9BQVgsSUFBc0I7QUFBaEMsS0FBYjtBQUNIOztBQUVEQyxRQUFNLEdBQUc7QUFDTCx3QkFBTztBQUFLLGVBQVMsRUFBQztBQUFmLG9CQUNIO0FBQUssZUFBUyxFQUFDO0FBQWYsT0FBdUQsS0FBS0wsS0FBTCxDQUFXTSxJQUFsRSxDQURHLGVBRUg7QUFBSyxlQUFTLEVBQUMsMEVBQWY7QUFBMEYsYUFBTyxFQUFFLEtBQUtMO0FBQXhHLG9CQUNJO0FBQUssZUFBUyxFQUFDO0FBQWYsb0JBQ0k7QUFBTyxlQUFTLEVBQUMsb0RBQWpCO0FBQXNFLGFBQU8sRUFBRSxLQUFLRSxLQUFMLENBQVdDLE9BQTFGO0FBQW1HLFVBQUksRUFBQztBQUF4RyxNQURKLGVBRUkscUZBRkosQ0FESixlQUtJLHFGQUxKLENBRkcsQ0FBUDtBQVVIOztBQUVESCxTQUFPLEdBQUc7QUFDTixTQUFLRCxLQUFMLENBQVdPLFFBQVgsQ0FBb0IsQ0FBQyxLQUFLSixLQUFMLENBQVdDLE9BQWhDO0FBQ0EsU0FBS0ksUUFBTCxDQUFjO0FBQUNKLGFBQU8sRUFBRSxDQUFDLEtBQUtELEtBQUwsQ0FBV0M7QUFBdEIsS0FBZDtBQUNIOztBQXZCaUQiLCJmaWxlIjoiLi9zcmMvdWkvY3VzdG9tY3NzL2NoZWNrYm94LmpzeC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhY3R9IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDaGVja2JveCBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XHJcbiAgICBjb25zdHJ1Y3Rvcihwcm9wcykge1xyXG4gICAgICAgIHN1cGVyKHByb3BzKTtcclxuICAgICAgICB0aGlzLm9uQ2xpY2sgPSB0aGlzLm9uQ2xpY2suYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLnN0YXRlID0ge2NoZWNrZWQ6IHRoaXMucHJvcHMuY2hlY2tlZCB8fCBmYWxzZX07XHJcbiAgICB9XHJcblxyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIHJldHVybiA8ZGl2IGNsYXNzTmFtZT1cImNoZWNrYm94LWl0ZW1cIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjaGVja2JveC1sYWJlbCBsYWJlbC1KV1FpTmUgZGEtbGFiZWxcIj57dGhpcy5wcm9wcy50ZXh0fTwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNoZWNrYm94LXdyYXBwZXIgY2hlY2tib3gtM2thZVNVIGRhLWNoZWNrYm94IGNoZWNrYm94LTNFVklTSiBkYS1jaGVja2JveFwiIG9uQ2xpY2s9e3RoaXMub25DbGlja30+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNoZWNrYm94LWlubmVyIGNoZWNrYm94SW5uZXItM3lqY1BlIGRhLWNoZWNrYm94SW5uZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3NOYW1lPVwiY2hlY2tib3ggY2hlY2tib3hFbGVtZW50LTFxVjMzcCBkYS1jaGVja2JveEVsZW1lbnRcIiBjaGVja2VkPXt0aGlzLnN0YXRlLmNoZWNrZWR9IHR5cGU9XCJjaGVja2JveFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8c3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PjtcclxuICAgIH1cclxuXHJcbiAgICBvbkNsaWNrKCkge1xyXG4gICAgICAgIHRoaXMucHJvcHMub25DaGFuZ2UoIXRoaXMuc3RhdGUuY2hlY2tlZCk7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7Y2hlY2tlZDogIXRoaXMuc3RhdGUuY2hlY2tlZH0pO1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/customcss/checkbox.jsx\n");
/***/ }),
/***/ "./src/ui/customcss/csseditor.jsx":
/*!****************************************!*\
!*** ./src/ui/customcss/csseditor.jsx ***!
\****************************************/
/*! exports provided: default */
/***/ (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_modules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../modules/modules.js */ \"./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_modules_js__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_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_reload__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n size: \"18px\"\n }),\n tooltip: _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].CustomCSS.update,\n onClick: this.updateCss\n }, {\n label: _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_save__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n size: \"18px\"\n }),\n tooltip: _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].CustomCSS.save,\n onClick: this.saveCss\n }, {\n label: _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_edit__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n size: \"18px\"\n }),\n tooltip: _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].CustomCSS.openNative,\n onClick: this.openNative\n }, {\n label: _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_cog__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n size: \"18px\"\n }),\n tooltip: _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].CustomCSS.settings,\n onClick: \"showSettings\"\n }, {\n label: _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Collections.settings.customcss.liveUpdate.name,\n type: \"checkbox\",\n onChange: this.toggleLiveUpdate,\n checked: _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Settings\"].get(\"settings\", \"customcss\", \"liveUpdate\"),\n side: \"right\"\n }];\n if (this.openDetached) this.controls.push({\n label: _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_detach__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n size: \"18px\"\n }),\n tooltip: _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].CustomCSS.openDetached,\n onClick: this.openDetached,\n side: \"right\"\n });\n }\n\n componentDidMount() {\n _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].on(\"customcss-updated\", this.updateEditor);\n }\n\n componentWillUnmount() {\n _modules_modules_js__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_modules_js__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_modules_js__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");
/***/ }),
/***/ "./src/ui/customcss/editor.jsx":
/*!*************************************!*\
!*** ./src/ui/customcss/editor.jsx ***!
\*************************************/
/*! exports provided: default */
/***/ (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_modules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../modules/modules.js */ \"./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_modules_js__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_modules_js__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_modules_js__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_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(Tooltip, {\n color: \"black\",\n position: \"top\",\n text: button.tooltip\n }, props => {\n return /*#__PURE__*/_modules_modules_js__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_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n id: \"bd-editor-panel\",\n className: this.props.theme\n }, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n id: \"bd-editor-controls\"\n }, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"controls-section controls-left\"\n }, controlsLeft), /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"controls-section controls-right\"\n }, controlsRight)), /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"editor-wrapper\"\n }, /*#__PURE__*/_modules_modules_js__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/ZmZlMiJdLCJuYW1lcyI6WyJUb29sdGlwIiwiV2VicGFja01vZHVsZXMiLCJnZXRCeURpc3BsYXlOYW1lIiwibGFuZ3VhZ2VzIiwidGhlbWVzIiwiQ29kZUVkaXRvciIsIlJlYWN0IiwiQ29tcG9uZW50IiwiZGVmYXVsdElkIiwiY29uc3RydWN0b3IiLCJwcm9wcyIsImNvbnRyb2wiLCJjb250cm9scyIsInR5cGUiLCJvbkNsaWNrIiwic2hvd1NldHRpbmdzIiwiYmluZCIsInRoZW1lIiwidG9Mb3dlckNhc2UiLCJyZXBsYWNlIiwiaW5jbHVkZXMiLCJkZWZhdWx0UHJvcHMiLCJsYW5ndWFnZSIsIm9uQ2hhbmdlIiwiaWQiLCJmb250U2l6ZSIsImNvbXBvbmVudERpZE1vdW50IiwiZWRpdG9yIiwiYWNlIiwiZWRpdCIsIm9yaWdpbmFsU2hvdyIsImtleUJpbmRpbmciLCIkZGVmYXVsdEhhbmRsZXIiLCJjb21tYW5kcyIsInNob3dTZXR0aW5nc01lbnUiLCJleGVjIiwiYXBwbHkiLCJhcmd1bWVudHMiLCJvYnNlcnZlciIsIk11dGF0aW9uT2JzZXJ2ZXIiLCJtdXRhdGlvbnMiLCJtdXRhdGlvbiIsImFkZGVkTm9kZXMiLCJsZW5ndGgiLCJFbGVtZW50Iiwibm9kZSIsInBhcmVudEVsZW1lbnQiLCJkb2N1bWVudCIsImJvZHkiLCJxdWVyeVNlbGVjdG9yIiwiZGlzY29ubmVjdCIsIm9ic2VydmUiLCJjaGlsZExpc3QiLCJzcGxpdCIsInNldFRoZW1lIiwic2Vzc2lvbiIsInNldE1vZGUiLCJzZXRTaG93UHJpbnRNYXJnaW4iLCJzZXRGb250U2l6ZSIsIm9uIiwiY29tcG9uZW50V2lsbFVubW91bnQiLCJkZXN0cm95IiwidmFsdWUiLCJnZXRWYWx1ZSIsIm5ld1ZhbHVlIiwic2V0VmFsdWUiLCJyZXNpemUiLCJidWlsZENvbnRyb2wiLCJtYWtlQ2hlY2tib3giLCJtYWtlQnV0dG9uIiwiY2hlY2tib3giLCJsYWJlbCIsImNoZWNrZWQiLCJidXR0b24iLCJ0b29sdGlwIiwiZXZlbnQiLCJyZW5kZXIiLCJjb250cm9sc0xlZnQiLCJmaWx0ZXIiLCJjIiwic2lkZSIsIm1hcCIsImNvbnRyb2xzUmlnaHQiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBO0FBRUE7QUFFQSxNQUFNQSxPQUFPLEdBQUdDLGtFQUFjLENBQUNDLGdCQUFmLENBQWdDLFNBQWhDLENBQWhCO0FBRUEsTUFBTUMsU0FBUyxHQUFHLENBQUMsTUFBRCxFQUFTLEtBQVQsRUFBZ0IsY0FBaEIsRUFBZ0MsS0FBaEMsRUFBdUMsYUFBdkMsRUFBc0QsVUFBdEQsRUFBa0UsY0FBbEUsRUFBa0YsWUFBbEYsRUFBZ0csV0FBaEcsRUFBNkcsS0FBN0csRUFBb0gsT0FBcEgsRUFBNkgsVUFBN0gsRUFBeUksT0FBekksRUFBa0osU0FBbEosRUFBNkosT0FBN0osRUFBc0ssUUFBdEssRUFBZ0wsWUFBaEwsRUFBOEwsUUFBOUwsRUFBd00saUJBQXhNLEVBQTJOLGtCQUEzTixFQUErTyxjQUEvTyxFQUErUCxLQUEvUCxFQUFzUSxPQUF0USxFQUErUSxHQUEvUSxFQUFvUixNQUFwUixFQUE0UixNQUE1UixFQUFvUyxZQUFwUyxFQUFrVCxLQUFsVCxFQUF5VCxRQUF6VCxFQUFtVSxPQUFuVSxFQUE0VSxhQUE1VSxFQUEyVixRQUEzVixFQUFxVyxLQUFyVyxFQUE0VyxRQUE1VyxFQUFzWCxLQUF0WCxFQUE2WCxRQUE3WCxFQUF1WSxPQUF2WSxFQUFnWixTQUFoWixFQUEyWixLQUEzWixFQUFrYSxPQUFsYSxFQUEyYSxTQUEzYSxFQUFzYixXQUF0YixFQUFtYyxNQUFuYyxFQUEyYyxXQUEzYyxFQUF3ZCxRQUF4ZCxFQUFrZSxlQUFsZSxFQUFtZixRQUFuZixFQUE2ZixNQUE3ZixFQUFxZ0IsWUFBcmdCLEVBQW1oQixTQUFuaEIsRUFBOGhCLGVBQTloQixFQUEraUIsTUFBL2lCLEVBQXVqQixPQUF2akIsRUFBZ2tCLE1BQWhrQixFQUF3a0IsYUFBeGtCLEVBQXVsQixXQUF2bEIsRUFBb21CLEtBQXBtQixFQUEybUIsSUFBM21CLEVBQWluQixNQUFqbkIsRUFBeW5CLE1BQXpuQixFQUFpb0IsTUFBam9CLEVBQXlvQixZQUF6b0IsRUFBdXBCLE1BQXZwQixFQUErcEIsUUFBL3BCLEVBQXlxQixLQUF6cUIsRUFBZ3JCLE1BQWhyQixFQUF3ckIsS0FBeHJCLEVBQStyQixPQUEvckIsRUFBd3NCLFFBQXhzQixFQUFrdEIsT0FBbHRCLEVBQTJ0QixNQUEzdEIsRUFBbXVCLFFBQW51QixFQUE2dUIsTUFBN3VCLEVBQXF2QixZQUFydkIsRUFBbXdCLFFBQW53QixFQUE2d0IsS0FBN3dCLEVBQW94QixLQUFweEIsRUFBMnhCLFNBQTN4QixFQUFzeUIsUUFBdHlCLEVBQWd6QixVQUFoekIsRUFBNHpCLFVBQTV6QixFQUF3MEIsTUFBeDBCLEVBQWcxQixRQUFoMUIsRUFBMDFCLE1BQTExQixFQUFrMkIsS0FBbDJCLEVBQXkyQixVQUF6MkIsRUFBcTNCLE9BQXIzQixFQUE4M0IsS0FBOTNCLEVBQXE0QixNQUFyNEIsRUFBNjRCLFlBQTc0QixFQUEyNUIsT0FBMzVCLEVBQW82QixRQUFwNkIsRUFBODZCLE1BQTk2QixFQUFzN0IsT0FBdDdCLEVBQSs3QixLQUEvN0IsRUFBczhCLEtBQXQ4QixFQUE2OEIsWUFBNzhCLEVBQTI5QixPQUEzOUIsRUFBbytCLFFBQXArQixFQUE4K0IsWUFBOStCLEVBQTQvQixVQUE1L0IsRUFBd2dDLFFBQXhnQyxFQUFraEMsR0FBbGhDLEVBQXVoQyxPQUF2aEMsRUFBZ2lDLE1BQWhpQyxFQUF3aUMsS0FBeGlDLEVBQStpQyxPQUEvaUMsRUFBd2pDLEtBQXhqQyxFQUErakMsTUFBL2pDLEVBQXVrQyxNQUF2a0MsRUFBK2tDLE1BQS9rQyxFQUF1bEMsTUFBdmxDLEVBQStsQyxPQUEvbEMsRUFBd21DLFFBQXhtQyxFQUFrbkMsTUFBbG5DLEVBQTBuQyxJQUExbkMsRUFBZ29DLEtBQWhvQyxFQUF1b0MsUUFBdm9DLEVBQWlwQyxVQUFqcEMsRUFBNnBDLGNBQTdwQyxFQUE2cUMsT0FBN3FDLEVBQXNyQyxLQUF0ckMsRUFBNnJDLFdBQTdyQyxFQUEwc0MsUUFBMXNDLEVBQW90QyxLQUFwdEMsRUFBMnRDLE9BQTN0QyxFQUFvdUMsS0FBcHVDLEVBQTJ1QyxLQUEzdUMsRUFBa3ZDLE1BQWx2QyxFQUEwdkMsU0FBMXZDLEVBQXF3QyxNQUFyd0MsRUFBNndDLEtBQTd3QyxFQUFveEMsTUFBcHhDLEVBQTR4QyxZQUE1eEMsRUFBMHlDLE1BQTF5QyxFQUFrekMsVUFBbHpDLEVBQTh6QyxVQUE5ekMsRUFBMDBDLFNBQTEwQyxFQUFxMUMsTUFBcjFDLEVBQTYxQyxRQUE3MUMsRUFBdTJDLEtBQXYyQyxFQUE4MkMsUUFBOTJDLEVBQXczQyxNQUF4M0MsRUFBZzRDLFFBQWg0QyxDQUFsQjtBQUNBLE1BQU1DLE1BQU0sR0FBRyxDQUFDLFFBQUQsRUFBVyxRQUFYLEVBQXFCLGdCQUFyQixFQUF1QyxNQUF2QyxFQUErQyxhQUEvQyxFQUE4RCxTQUE5RCxFQUF5RSxRQUF6RSxFQUFtRixVQUFuRixFQUErRixpQkFBL0YsRUFBa0gsVUFBbEgsRUFBOEgsVUFBOUgsRUFBMEksT0FBMUksRUFBbUosUUFBbkosRUFBNkosYUFBN0osRUFBNEssV0FBNUssRUFBeUwsVUFBekwsRUFBcU0sT0FBck0sRUFBOE0saUJBQTlNLEVBQWlPLFFBQWpPLEVBQTJPLFNBQTNPLEVBQXNQLEtBQXRQLEVBQTZQLGNBQTdQLEVBQTZRLFVBQTdRLEVBQXlSLFdBQXpSLEVBQXNTLGdCQUF0UyxFQUF3VCxpQkFBeFQsRUFBMlUsU0FBM1UsRUFBc1YsZ0JBQXRWLEVBQXdXLGdCQUF4VyxFQUEwWCxVQUExWCxFQUFzWSxnQkFBdFksRUFBd1oscUJBQXhaLEVBQSthLHVCQUEvYSxFQUF3Yyx5QkFBeGMsRUFBbWUsVUFBbmUsRUFBK2UsYUFBL2UsQ0FBZjtBQUVlLE1BQU1DLFVBQU4sU0FBeUJDLHlEQUFLLENBQUNDLFNBQS9CLENBQXlDO0FBQ3BELGFBQVdDLFNBQVgsR0FBdUI7QUFBQyxXQUFPLFdBQVA7QUFBb0I7O0FBRTVDQyxhQUFXLENBQUNDLEtBQUQsRUFBUTtBQUNmLFVBQU1BLEtBQU47O0FBRUEsU0FBSyxNQUFNQyxPQUFYLElBQXNCLEtBQUtELEtBQUwsQ0FBV0UsUUFBakMsRUFBMkM7QUFDdkMsVUFBSUQsT0FBTyxDQUFDRSxJQUFSLElBQWdCLFVBQXBCLEVBQWdDO0FBQ2hDLFVBQUlGLE9BQU8sQ0FBQ0csT0FBUixJQUFtQixjQUF2QixFQUF1Q0gsT0FBTyxDQUFDRyxPQUFSLEdBQWtCLEtBQUtDLFlBQUwsQ0FBa0JDLElBQWxCLENBQXVCLElBQXZCLENBQWxCO0FBQzFDOztBQUVELFNBQUtOLEtBQUwsQ0FBV08sS0FBWCxHQUFtQixLQUFLUCxLQUFMLENBQVdPLEtBQVgsQ0FBaUJDLFdBQWpCLEdBQStCQyxPQUEvQixDQUF1QyxJQUF2QyxFQUE2QyxHQUE3QyxDQUFuQjtBQUNBLFFBQUksQ0FBQ2YsTUFBTSxDQUFDZ0IsUUFBUCxDQUFnQixLQUFLVixLQUFMLENBQVdPLEtBQTNCLENBQUwsRUFBd0MsS0FBS1AsS0FBTCxDQUFXTyxLQUFYLEdBQW1CWixVQUFVLENBQUNnQixZQUFYLENBQXdCSixLQUEzQztBQUV4QyxTQUFLUCxLQUFMLENBQVdZLFFBQVgsR0FBc0IsS0FBS1osS0FBTCxDQUFXWSxRQUFYLENBQW9CSixXQUFwQixHQUFrQ0MsT0FBbEMsQ0FBMEMsSUFBMUMsRUFBZ0QsR0FBaEQsQ0FBdEI7QUFDQSxRQUFJLENBQUNoQixTQUFTLENBQUNpQixRQUFWLENBQW1CLEtBQUtWLEtBQUwsQ0FBV1ksUUFBOUIsQ0FBTCxFQUE4QyxLQUFLWixLQUFMLENBQVdZLFFBQVgsR0FBc0JqQixVQUFVLENBQUNnQixZQUFYLENBQXdCQyxRQUE5QztBQUU5QyxTQUFLQyxRQUFMLEdBQWdCLEtBQUtBLFFBQUwsQ0FBY1AsSUFBZCxDQUFtQixJQUFuQixDQUFoQjtBQUNIOztBQUVELGFBQVdLLFlBQVgsR0FBMEI7QUFDdEIsV0FBTztBQUNIVCxjQUFRLEVBQUUsRUFEUDtBQUVISyxXQUFLLEVBQUUsWUFGSjtBQUdISyxjQUFRLEVBQUUsS0FIUDtBQUlIRSxRQUFFLEVBQUUsS0FBS2hCLFNBSk47QUFLSGlCLGNBQVEsRUFBRTtBQUxQLEtBQVA7QUFPSDs7QUFFRCxhQUFXckIsTUFBWCxHQUFvQjtBQUFDLFdBQU9BLE1BQVA7QUFBZTs7QUFFcENzQixtQkFBaUIsR0FBRztBQUNoQixTQUFLQyxNQUFMLEdBQWNDLEdBQUcsQ0FBQ0MsSUFBSixDQUFTLEtBQUtuQixLQUFMLENBQVdjLEVBQXBCLENBQWQsQ0FEZ0IsQ0FHaEI7O0FBQ0EsVUFBTU0sWUFBWSxHQUFHLEtBQUtILE1BQUwsQ0FBWUksVUFBWixDQUF1QkMsZUFBdkIsQ0FBdUNDLFFBQXZDLENBQWdEQyxnQkFBaEQsQ0FBaUVDLElBQXRGOztBQUNBLFNBQUtSLE1BQUwsQ0FBWUksVUFBWixDQUF1QkMsZUFBdkIsQ0FBdUNDLFFBQXZDLENBQWdEQyxnQkFBaEQsQ0FBaUVDLElBQWpFLEdBQXdFLFlBQVc7QUFDL0VMLGtCQUFZLENBQUNNLEtBQWIsQ0FBbUIsSUFBbkIsRUFBeUJDLFNBQXpCO0FBQ0EsWUFBTUMsUUFBUSxHQUFHLElBQUlDLGdCQUFKLENBQXFCQyxTQUFTLElBQUk7QUFDL0MsYUFBSyxNQUFNQyxRQUFYLElBQXVCRCxTQUF2QixFQUFrQztBQUM5QixjQUFJLENBQUNDLFFBQVEsQ0FBQ0MsVUFBVCxDQUFvQkMsTUFBckIsSUFBK0IsRUFBRUYsUUFBUSxDQUFDQyxVQUFULENBQW9CLENBQXBCLGFBQWtDRSxPQUFwQyxDQUFuQyxFQUFpRjtBQUNqRixnQkFBTUMsSUFBSSxHQUFHSixRQUFRLENBQUNDLFVBQVQsQ0FBb0IsQ0FBcEIsQ0FBYjtBQUNBLGNBQUlHLElBQUksQ0FBQ0MsYUFBTCxLQUF1QkMsUUFBUSxDQUFDQyxJQUFoQyxJQUF3QyxDQUFDSCxJQUFJLENBQUNJLGFBQUwsQ0FBbUIsbUJBQW5CLENBQTdDLEVBQXNGO0FBQ3RGSixjQUFJLENBQUNyQixFQUFMLEdBQVUsNEJBQVY7QUFDQWMsa0JBQVEsQ0FBQ1ksVUFBVDtBQUNIO0FBQ0osT0FSZ0IsQ0FBakI7QUFTQVosY0FBUSxDQUFDYSxPQUFULENBQWlCSixRQUFRLENBQUNDLElBQTFCLEVBQWdDO0FBQUNJLGlCQUFTLEVBQUU7QUFBWixPQUFoQztBQUNILEtBWkQ7O0FBY0EsVUFBTW5DLEtBQUssR0FBRyxLQUFLUCxLQUFMLENBQVdPLEtBQVgsSUFBb0JaLFVBQVUsQ0FBQ2dCLFlBQVgsQ0FBd0JKLEtBQTVDLEdBQW9ELEtBQUtQLEtBQUwsQ0FBV08sS0FBWCxDQUFpQm9DLEtBQWpCLENBQXVCLEdBQXZCLEVBQTRCLENBQTVCLENBQXBELEdBQXFGLEtBQUszQyxLQUFMLENBQVdPLEtBQTlHO0FBQ0EsU0FBS1UsTUFBTCxDQUFZMkIsUUFBWixDQUFzQixhQUFZckMsS0FBTSxFQUF4QztBQUNBLFNBQUtVLE1BQUwsQ0FBWTRCLE9BQVosQ0FBb0JDLE9BQXBCLENBQTZCLFlBQVcsS0FBSzlDLEtBQUwsQ0FBV1ksUUFBUyxFQUE1RDtBQUNBLFNBQUtLLE1BQUwsQ0FBWThCLGtCQUFaLENBQStCLEtBQS9CO0FBQ0EsU0FBSzlCLE1BQUwsQ0FBWStCLFdBQVosQ0FBd0IsS0FBS2hELEtBQUwsQ0FBV2UsUUFBbkM7QUFDQSxTQUFLRSxNQUFMLENBQVlnQyxFQUFaLENBQWUsUUFBZixFQUF5QixLQUFLcEMsUUFBOUI7QUFDSDs7QUFFRHFDLHNCQUFvQixHQUFHO0FBQ25CLFNBQUtqQyxNQUFMLENBQVlrQyxPQUFaO0FBQ0g7O0FBRUQsTUFBSUMsS0FBSixHQUFZO0FBQUMsV0FBTyxLQUFLbkMsTUFBTCxDQUFZNEIsT0FBWixDQUFvQlEsUUFBcEIsRUFBUDtBQUF1Qzs7QUFDcEQsTUFBSUQsS0FBSixDQUFVRSxRQUFWLEVBQW9CO0FBQ2hCLFNBQUtyQyxNQUFMLENBQVlzQyxRQUFaLENBQXFCRCxRQUFyQjtBQUNIOztBQUVEekMsVUFBUSxHQUFHO0FBQ1AsUUFBSSxLQUFLYixLQUFMLENBQVdhLFFBQWYsRUFBeUIsS0FBS2IsS0FBTCxDQUFXYSxRQUFYLENBQW9CLEtBQUt1QyxLQUF6QjtBQUM1Qjs7QUFFRC9DLGNBQVksR0FBRztBQUFDLFdBQU8sS0FBS1ksTUFBTCxDQUFZSSxVQUFaLENBQXVCQyxlQUF2QixDQUF1Q0MsUUFBdkMsQ0FBZ0RDLGdCQUFoRCxDQUFpRUMsSUFBakUsQ0FBc0UsS0FBS1IsTUFBM0UsQ0FBUDtBQUEyRjs7QUFDM0d1QyxRQUFNLEdBQUc7QUFBQyxXQUFPLEtBQUt2QyxNQUFMLENBQVl1QyxNQUFaLEVBQVA7QUFBNkI7O0FBRXZDQyxjQUFZLENBQUN4RCxPQUFELEVBQVU7QUFDbEIsUUFBSUEsT0FBTyxDQUFDRSxJQUFSLElBQWdCLFVBQXBCLEVBQWdDLE9BQU8sS0FBS3VELFlBQUwsQ0FBa0J6RCxPQUFsQixDQUFQO0FBQ2hDLFdBQU8sS0FBSzBELFVBQUwsQ0FBZ0IxRCxPQUFoQixDQUFQO0FBQ0g7O0FBRUR5RCxjQUFZLENBQUNFLFFBQUQsRUFBVztBQUNuQix3QkFBTyx3RUFBQyxpREFBRDtBQUFVLFVBQUksRUFBRUEsUUFBUSxDQUFDQyxLQUF6QjtBQUFnQyxjQUFRLEVBQUVELFFBQVEsQ0FBQy9DLFFBQW5EO0FBQTZELGFBQU8sRUFBRStDLFFBQVEsQ0FBQ0U7QUFBL0UsTUFBUDtBQUNIOztBQUVESCxZQUFVLENBQUNJLE1BQUQsRUFBUztBQUNmLHdCQUFPLHdFQUFDLE9BQUQ7QUFBUyxXQUFLLEVBQUMsT0FBZjtBQUF1QixjQUFRLEVBQUMsS0FBaEM7QUFBc0MsVUFBSSxFQUFFQSxNQUFNLENBQUNDO0FBQW5ELE9BQ01oRSxLQUFLLElBQUk7QUFDTiwwQkFBTywrRkFBWUEsS0FBWjtBQUFtQixpQkFBUyxFQUFDLGlCQUE3QjtBQUErQyxlQUFPLEVBQUdpRSxLQUFELElBQVc7QUFBQ0YsZ0JBQU0sQ0FBQzNELE9BQVAsQ0FBZTZELEtBQWYsRUFBc0IsS0FBS2IsS0FBM0I7QUFBbUM7QUFBdkcsVUFBMEdXLE1BQU0sQ0FBQ0YsS0FBakgsQ0FBUDtBQUNILEtBSE4sQ0FBUDtBQUtIOztBQUVESyxRQUFNLEdBQUc7QUFDTCxRQUFJLEtBQUtqRCxNQUFMLElBQWUsS0FBS0EsTUFBTCxDQUFZdUMsTUFBL0IsRUFBdUMsS0FBS3ZDLE1BQUwsQ0FBWXVDLE1BQVo7QUFFdkMsVUFBTVcsWUFBWSxHQUFHLEtBQUtuRSxLQUFMLENBQVdFLFFBQVgsQ0FBb0JrRSxNQUFwQixDQUEyQkMsQ0FBQyxJQUFJQSxDQUFDLENBQUNDLElBQUYsSUFBVSxPQUExQyxFQUFtREMsR0FBbkQsQ0FBdUQsS0FBS2QsWUFBTCxDQUFrQm5ELElBQWxCLENBQXVCLElBQXZCLENBQXZELENBQXJCO0FBQ0EsVUFBTWtFLGFBQWEsR0FBRyxLQUFLeEUsS0FBTCxDQUFXRSxRQUFYLENBQW9Ca0UsTUFBcEIsQ0FBMkJDLENBQUMsSUFBSUEsQ0FBQyxDQUFDQyxJQUFGLElBQVUsT0FBMUMsRUFBbURDLEdBQW5ELENBQXVELEtBQUtkLFlBQUwsQ0FBa0JuRCxJQUFsQixDQUF1QixJQUF2QixDQUF2RCxDQUF0QjtBQUVBLHdCQUFPO0FBQUssUUFBRSxFQUFDLGlCQUFSO0FBQTBCLGVBQVMsRUFBRSxLQUFLTixLQUFMLENBQVdPO0FBQWhELG9CQUNLO0FBQUssUUFBRSxFQUFDO0FBQVIsb0JBQ0k7QUFBSyxlQUFTLEVBQUM7QUFBZixPQUNLNEQsWUFETCxDQURKLGVBSUk7QUFBSyxlQUFTLEVBQUM7QUFBZixPQUNLSyxhQURMLENBSkosQ0FETCxlQVNLO0FBQUssZUFBUyxFQUFDO0FBQWYsb0JBQ0k7QUFBSyxRQUFFLEVBQUUsS0FBS3hFLEtBQUwsQ0FBV2MsRUFBcEI7QUFBd0IsZUFBUyxFQUFFLFlBQVksS0FBS2QsS0FBTCxDQUFXTztBQUExRCxPQUFrRSxLQUFLUCxLQUFMLENBQVdvRCxLQUE3RSxDQURKLENBVEwsQ0FBUDtBQWFIOztBQS9HbUQiLCJmaWxlIjoiLi9zcmMvdWkvY3VzdG9tY3NzL2VkaXRvci5qc3guanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlYWN0LCBXZWJwYWNrTW9kdWxlc30gZnJvbSBcIm1vZHVsZXNcIjtcclxuXHJcbmltcG9ydCBDaGVja2JveCBmcm9tIFwiLi9jaGVja2JveFwiO1xyXG5cclxuY29uc3QgVG9vbHRpcCA9IFdlYnBhY2tNb2R1bGVzLmdldEJ5RGlzcGxheU5hbWUoXCJUb29sdGlwXCIpO1xyXG5cclxuY29uc3QgbGFuZ3VhZ2VzID0gW1wiYWJhcFwiLCBcImFiY1wiLCBcImFjdGlvbnNjcmlwdFwiLCBcImFkYVwiLCBcImFwYWNoZV9jb25mXCIsIFwiYXNjaWlkb2NcIiwgXCJhc3NlbWJseV94ODZcIiwgXCJhdXRvaG90a2V5XCIsIFwiYmF0Y2hmaWxlXCIsIFwiYnJvXCIsIFwiY19jcHBcIiwgXCJjOXNlYXJjaFwiLCBcImNpcnJ1XCIsIFwiY2xvanVyZVwiLCBcImNvYm9sXCIsIFwiY29mZmVlXCIsIFwiY29sZGZ1c2lvblwiLCBcImNzaGFycFwiLCBcImNzb3VuZF9kb2N1bWVudFwiLCBcImNzb3VuZF9vcmNoZXN0cmFcIiwgXCJjc291bmRfc2NvcmVcIiwgXCJjc3NcIiwgXCJjdXJseVwiLCBcImRcIiwgXCJkYXJ0XCIsIFwiZGlmZlwiLCBcImRvY2tlcmZpbGVcIiwgXCJkb3RcIiwgXCJkcm9vbHNcIiwgXCJkdW1teVwiLCBcImR1bW15c3ludGF4XCIsIFwiZWlmZmVsXCIsIFwiZWpzXCIsIFwiZWxpeGlyXCIsIFwiZWxtXCIsIFwiZXJsYW5nXCIsIFwiZm9ydGhcIiwgXCJmb3J0cmFuXCIsIFwiZnRsXCIsIFwiZ2NvZGVcIiwgXCJnaGVya2luXCIsIFwiZ2l0aWdub3JlXCIsIFwiZ2xzbFwiLCBcImdvYnN0b25lc1wiLCBcImdvbGFuZ1wiLCBcImdyYXBocWxzY2hlbWFcIiwgXCJncm9vdnlcIiwgXCJoYW1sXCIsIFwiaGFuZGxlYmFyc1wiLCBcImhhc2tlbGxcIiwgXCJoYXNrZWxsX2NhYmFsXCIsIFwiaGF4ZVwiLCBcImhqc29uXCIsIFwiaHRtbFwiLCBcImh0bWxfZWxpeGlyXCIsIFwiaHRtbF9ydWJ5XCIsIFwiaW5pXCIsIFwiaW9cIiwgXCJqYWNrXCIsIFwiamFkZVwiLCBcImphdmFcIiwgXCJqYXZhc2NyaXB0XCIsIFwianNvblwiLCBcImpzb25pcVwiLCBcImpzcFwiLCBcImpzc21cIiwgXCJqc3hcIiwgXCJqdWxpYVwiLCBcImtvdGxpblwiLCBcImxhdGV4XCIsIFwibGVzc1wiLCBcImxpcXVpZFwiLCBcImxpc3BcIiwgXCJsaXZlc2NyaXB0XCIsIFwibG9naXFsXCIsIFwibHNsXCIsIFwibHVhXCIsIFwibHVhcGFnZVwiLCBcImx1Y2VuZVwiLCBcIm1ha2VmaWxlXCIsIFwibWFya2Rvd25cIiwgXCJtYXNrXCIsIFwibWF0bGFiXCIsIFwibWF6ZVwiLCBcIm1lbFwiLCBcIm11c2hjb2RlXCIsIFwibXlzcWxcIiwgXCJuaXhcIiwgXCJuc2lzXCIsIFwib2JqZWN0aXZlY1wiLCBcIm9jYW1sXCIsIFwicGFzY2FsXCIsIFwicGVybFwiLCBcInBnc3FsXCIsIFwicGhwXCIsIFwicGlnXCIsIFwicG93ZXJzaGVsbFwiLCBcInByYWF0XCIsIFwicHJvbG9nXCIsIFwicHJvcGVydGllc1wiLCBcInByb3RvYnVmXCIsIFwicHl0aG9uXCIsIFwiclwiLCBcInJhem9yXCIsIFwicmRvY1wiLCBcInJlZFwiLCBcInJodG1sXCIsIFwicnN0XCIsIFwicnVieVwiLCBcInJ1c3RcIiwgXCJzYXNzXCIsIFwic2NhZFwiLCBcInNjYWxhXCIsIFwic2NoZW1lXCIsIFwic2Nzc1wiLCBcInNoXCIsIFwic2pzXCIsIFwic21hcnR5XCIsIFwic25pcHBldHNcIiwgXCJzb3lfdGVtcGxhdGVcIiwgXCJzcGFjZVwiLCBcInNxbFwiLCBcInNxbHNlcnZlclwiLCBcInN0eWx1c1wiLCBcInN2Z1wiLCBcInN3aWZ0XCIsIFwidGNsXCIsIFwidGV4XCIsIFwidGV4dFwiLCBcInRleHRpbGVcIiwgXCJ0b21sXCIsIFwidHN4XCIsIFwidHdpZ1wiLCBcInR5cGVzY3JpcHRcIiwgXCJ2YWxhXCIsIFwidmJzY3JpcHRcIiwgXCJ2ZWxvY2l0eVwiLCBcInZlcmlsb2dcIiwgXCJ2aGRsXCIsIFwid29sbG9rXCIsIFwieG1sXCIsIFwieHF1ZXJ5XCIsIFwieWFtbFwiLCBcImRqYW5nb1wiXTtcclxuY29uc3QgdGhlbWVzID0gW1wiY2hyb21lXCIsIFwiY2xvdWRzXCIsIFwiY3JpbXNvbl9lZGl0b3JcIiwgXCJkYXduXCIsIFwiZHJlYW13ZWF2ZXJcIiwgXCJlY2xpcHNlXCIsIFwiZ2l0aHViXCIsIFwiaXBsYXN0aWNcIiwgXCJzb2xhcml6ZWRfbGlnaHRcIiwgXCJ0ZXh0bWF0ZVwiLCBcInRvbW9ycm93XCIsIFwieGNvZGVcIiwgXCJrdXJvaXJcIiwgXCJrYXR6ZW5taWxjaFwiLCBcInNxbHNlcnZlclwiLCBcImFtYmlhbmNlXCIsIFwiY2hhb3NcIiwgXCJjbG91ZHNfbWlkbmlnaHRcIiwgXCJjb2JhbHRcIiwgXCJncnV2Ym94XCIsIFwiZ29iXCIsIFwiaWRsZV9maW5nZXJzXCIsIFwia3JfdGhlbWVcIiwgXCJtZXJiaXZvcmVcIiwgXCJtZXJiaXZvcmVfc29mdFwiLCBcIm1vbm9faW5kdXN0cmlhbFwiLCBcIm1vbm9rYWlcIiwgXCJwYXN0ZWxfb25fZGFya1wiLCBcInNvbGFyaXplZF9kYXJrXCIsIFwidGVybWluYWxcIiwgXCJ0b21vcnJvd19uaWdodFwiLCBcInRvbW9ycm93X25pZ2h0X2JsdWVcIiwgXCJ0b21vcnJvd19uaWdodF9icmlnaHRcIiwgXCJ0b21vcnJvd19uaWdodF9laWdodGllc1wiLCBcInR3aWxpZ2h0XCIsIFwidmlicmFudF9pbmtcIl07XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb2RlRWRpdG9yIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcclxuICAgIHN0YXRpYyBnZXQgZGVmYXVsdElkKCkge3JldHVybiBcImJkLWVkaXRvclwiO31cclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcm9wcykge1xyXG4gICAgICAgIHN1cGVyKHByb3BzKTtcclxuICAgICAgICBcclxuICAgICAgICBmb3IgKGNvbnN0IGNvbnRyb2wgb2YgdGhpcy5wcm9wcy5jb250cm9scykge1xyXG4gICAgICAgICAgICBpZiAoY29udHJvbC50eXBlID09IFwiY2hlY2tib3hcIikgY29udGludWU7XHJcbiAgICAgICAgICAgIGlmIChjb250cm9sLm9uQ2xpY2sgPT0gXCJzaG93U2V0dGluZ3NcIikgY29udHJvbC5vbkNsaWNrID0gdGhpcy5zaG93U2V0dGluZ3MuYmluZCh0aGlzKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMucHJvcHMudGhlbWUgPSB0aGlzLnByb3BzLnRoZW1lLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvIC9nLCBcIl9cIik7XHJcbiAgICAgICAgaWYgKCF0aGVtZXMuaW5jbHVkZXModGhpcy5wcm9wcy50aGVtZSkpIHRoaXMucHJvcHMudGhlbWUgPSBDb2RlRWRpdG9yLmRlZmF1bHRQcm9wcy50aGVtZTtcclxuXHJcbiAgICAgICAgdGhpcy5wcm9wcy5sYW5ndWFnZSA9IHRoaXMucHJvcHMubGFuZ3VhZ2UudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC8gL2csIFwiX1wiKTtcclxuICAgICAgICBpZiAoIWxhbmd1YWdlcy5pbmNsdWRlcyh0aGlzLnByb3BzLmxhbmd1YWdlKSkgdGhpcy5wcm9wcy5sYW5ndWFnZSA9IENvZGVFZGl0b3IuZGVmYXVsdFByb3BzLmxhbmd1YWdlO1xyXG5cclxuICAgICAgICB0aGlzLm9uQ2hhbmdlID0gdGhpcy5vbkNoYW5nZS5iaW5kKHRoaXMpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBnZXQgZGVmYXVsdFByb3BzKCkge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGNvbnRyb2xzOiBbXSxcclxuICAgICAgICAgICAgdGhlbWU6IFwiYmQtbW9ub2thaVwiLFxyXG4gICAgICAgICAgICBsYW5ndWFnZTogXCJjc3NcIixcclxuICAgICAgICAgICAgaWQ6IHRoaXMuZGVmYXVsdElkLFxyXG4gICAgICAgICAgICBmb250U2l6ZTogMTRcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBnZXQgdGhlbWVzKCkge3JldHVybiB0aGVtZXM7fVxyXG5cclxuICAgIGNvbXBvbmVudERpZE1vdW50KCkge1xyXG4gICAgICAgIHRoaXMuZWRpdG9yID0gYWNlLmVkaXQodGhpcy5wcm9wcy5pZCk7XHJcblxyXG4gICAgICAgIC8vIEFkZCBpZCB0byB0aGUgYWNlIG1lbnUgY29udGFpbmVyXHJcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxTaG93ID0gdGhpcy5lZGl0b3Iua2V5QmluZGluZy4kZGVmYXVsdEhhbmRsZXIuY29tbWFuZHMuc2hvd1NldHRpbmdzTWVudS5leGVjO1xyXG4gICAgICAgIHRoaXMuZWRpdG9yLmtleUJpbmRpbmcuJGRlZmF1bHRIYW5kbGVyLmNvbW1hbmRzLnNob3dTZXR0aW5nc01lbnUuZXhlYyA9IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgICAgICBvcmlnaW5hbFNob3cuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcclxuICAgICAgICAgICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcihtdXRhdGlvbnMgPT4ge1xyXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBtdXRhdGlvbiBvZiBtdXRhdGlvbnMpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIW11dGF0aW9uLmFkZGVkTm9kZXMubGVuZ3RoIHx8ICEobXV0YXRpb24uYWRkZWROb2Rlc1swXSBpbnN0YW5jZW9mIEVsZW1lbnQpKSBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBub2RlID0gbXV0YXRpb24uYWRkZWROb2Rlc1swXTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS5wYXJlbnRFbGVtZW50ICE9PSBkb2N1bWVudC5ib2R5IHx8ICFub2RlLnF1ZXJ5U2VsZWN0b3IoXCIjYWNlX3NldHRpbmdzbWVudVwiKSkgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICAgICAgbm9kZS5pZCA9IFwiYWNlX3NldHRpbmdzbWVudV9jb250YWluZXJcIjtcclxuICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBvYnNlcnZlci5vYnNlcnZlKGRvY3VtZW50LmJvZHksIHtjaGlsZExpc3Q6IHRydWV9KTtcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBjb25zdCB0aGVtZSA9IHRoaXMucHJvcHMudGhlbWUgPT0gQ29kZUVkaXRvci5kZWZhdWx0UHJvcHMudGhlbWUgPyB0aGlzLnByb3BzLnRoZW1lLnNwbGl0KFwiLVwiKVsxXSA6IHRoaXMucHJvcHMudGhlbWU7XHJcbiAgICAgICAgdGhpcy5lZGl0b3Iuc2V0VGhlbWUoYGFjZS90aGVtZS8ke3RoZW1lfWApO1xyXG4gICAgICAgIHRoaXMuZWRpdG9yLnNlc3Npb24uc2V0TW9kZShgYWNlL21vZGUvJHt0aGlzLnByb3BzLmxhbmd1YWdlfWApO1xyXG4gICAgICAgIHRoaXMuZWRpdG9yLnNldFNob3dQcmludE1hcmdpbihmYWxzZSk7XHJcbiAgICAgICAgdGhpcy5lZGl0b3Iuc2V0Rm9udFNpemUodGhpcy5wcm9wcy5mb250U2l6ZSk7XHJcbiAgICAgICAgdGhpcy5lZGl0b3Iub24oXCJjaGFuZ2VcIiwgdGhpcy5vbkNoYW5nZSk7XHJcbiAgICB9XHJcblxyXG4gICAgY29tcG9uZW50V2lsbFVubW91bnQoKSB7XHJcbiAgICAgICAgdGhpcy5lZGl0b3IuZGVzdHJveSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCB2YWx1ZSgpIHtyZXR1cm4gdGhpcy5lZGl0b3Iuc2Vzc2lvbi5nZXRWYWx1ZSgpO31cclxuICAgIHNldCB2YWx1ZShuZXdWYWx1ZSkge1xyXG4gICAgICAgIHRoaXMuZWRpdG9yLnNldFZhbHVlKG5ld1ZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBvbkNoYW5nZSgpIHtcclxuICAgICAgICBpZiAodGhpcy5wcm9wcy5vbkNoYW5nZSkgdGhpcy5wcm9wcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBzaG93U2V0dGluZ3MoKSB7cmV0dXJuIHRoaXMuZWRpdG9yLmtleUJpbmRpbmcuJGRlZmF1bHRIYW5kbGVyLmNvbW1hbmRzLnNob3dTZXR0aW5nc01lbnUuZXhlYyh0aGlzLmVkaXRvcik7fVxyXG4gICAgcmVzaXplKCkge3JldHVybiB0aGlzLmVkaXRvci5yZXNpemUoKTt9XHJcblxyXG4gICAgYnVpbGRDb250cm9sKGNvbnRyb2wpIHtcclxuICAgICAgICBpZiAoY29udHJvbC50eXBlID09IFwiY2hlY2tib3hcIikgcmV0dXJuIHRoaXMubWFrZUNoZWNrYm94KGNvbnRyb2wpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLm1ha2VCdXR0b24oY29udHJvbCk7XHJcbiAgICB9XHJcblxyXG4gICAgbWFrZUNoZWNrYm94KGNoZWNrYm94KSB7XHJcbiAgICAgICAgcmV0dXJuIDxDaGVja2JveCB0ZXh0PXtjaGVja2JveC5sYWJlbH0gb25DaGFuZ2U9e2NoZWNrYm94Lm9uQ2hhbmdlfSBjaGVja2VkPXtjaGVja2JveC5jaGVja2VkfSAvPjtcclxuICAgIH1cclxuXHJcbiAgICBtYWtlQnV0dG9uKGJ1dHRvbikge1xyXG4gICAgICAgIHJldHVybiA8VG9vbHRpcCBjb2xvcj1cImJsYWNrXCIgcG9zaXRpb249XCJ0b3BcIiB0ZXh0PXtidXR0b24udG9vbHRpcH0+XHJcbiAgICAgICAgICAgICAgICAgICAge3Byb3BzID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxidXR0b24gey4uLnByb3BzfSBjbGFzc05hbWU9XCJidG4gYnRuLXByaW1hcnlcIiBvbkNsaWNrPXsoZXZlbnQpID0+IHtidXR0b24ub25DbGljayhldmVudCwgdGhpcy52YWx1ZSk7fX0+e2J1dHRvbi5sYWJlbH08L2J1dHRvbj47XHJcbiAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgIDwvVG9vbHRpcD47XHJcbiAgICB9XHJcblxyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmVkaXRvciAmJiB0aGlzLmVkaXRvci5yZXNpemUpIHRoaXMuZWRpdG9yLnJlc2l6ZSgpO1xyXG5cclxuICAgICAgICBjb25zdCBjb250cm9sc0xlZnQgPSB0aGlzLnByb3BzLmNvbnRyb2xzLmZpbHRlcihjID0+IGMuc2lkZSAhPSBcInJpZ2h0XCIpLm1hcCh0aGlzLmJ1aWxkQ29udHJvbC5iaW5kKHRoaXMpKTtcclxuICAgICAgICBjb25zdCBjb250cm9sc1JpZ2h0ID0gdGhpcy5wcm9wcy5jb250cm9scy5maWx0ZXIoYyA9PiBjLnNpZGUgPT0gXCJyaWdodFwiKS5tYXAodGhpcy5idWlsZENvbnRyb2wuYmluZCh0aGlzKSk7XHJcblxyXG4gICAgICAgIHJldHVybiA8ZGl2IGlkPVwiYmQtZWRpdG9yLXBhbmVsXCIgY2xhc3NOYW1lPXt0aGlzLnByb3BzLnRoZW1lfT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPVwiYmQtZWRpdG9yLWNvbnRyb2xzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29udHJvbHMtc2VjdGlvbiBjb250cm9scy1sZWZ0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y29udHJvbHNMZWZ0fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb250cm9scy1zZWN0aW9uIGNvbnRyb2xzLXJpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y29udHJvbHNSaWdodH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJlZGl0b3Itd3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPXt0aGlzLnByb3BzLmlkfSBjbGFzc05hbWU9e1wiZWRpdG9yIFwiICsgdGhpcy5wcm9wcy50aGVtZX0+e3RoaXMucHJvcHMudmFsdWV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj47XHJcbiAgICB9XHJcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/ui/customcss/editor.jsx\n");
/***/ }),
/***/ "./src/ui/emote.js":
/*!*************************!*\
!*** ./src/ui/emote.js ***!
\*************************/
/*! exports provided: default */
/***/ (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_modules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../modules/modules.js */ \"./src/modules/modules.js\");\n\nconst TooltipWrapper = _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"WebpackModules\"].getByDisplayName(\"Tooltip\");\nclass BDEmote extends _modules_modules_js__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_modules_js__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_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].emit(\"emotes-favorite-removed\", this.label);else _modules_modules_js__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_modules_js__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_modules_js__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_modules_js__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_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"input\", {\n className: \"fav\" + (this.state.isFavorite ? \" active\" : \"\"),\n title: _modules_modules_js__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/NmNjYiJdLCJuYW1lcyI6WyJUb29sdGlwV3JhcHBlciIsIldlYnBhY2tNb2R1bGVzIiwiZ2V0QnlEaXNwbGF5TmFtZSIsIkJERW1vdGUiLCJSZWFjdCIsIkNvbXBvbmVudCIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJzdGF0ZSIsInNob3VsZEFuaW1hdGUiLCJhbmltYXRlT25Ib3ZlciIsImlzRmF2b3JpdGUiLCJvbk1vdXNlRW50ZXIiLCJiaW5kIiwib25Nb3VzZUxlYXZlIiwib25DbGljayIsInRvZ2dsZUZhdm9yaXRlIiwiU2V0dGluZ3MiLCJnZXQiLCJsYWJlbCIsIm1vZGlmaWVyIiwibmFtZSIsIm1vZGlmaWVyQ2xhc3MiLCJzZXRTdGF0ZSIsImUiLCJwcmV2ZW50RGVmYXVsdCIsInN0b3BQcm9wYWdhdGlvbiIsIkV2ZW50cyIsImVtaXQiLCJ1cmwiLCJyZW5kZXIiLCJjcmVhdGVFbGVtZW50IiwiY29sb3IiLCJwb3NpdGlvbiIsInRleHQiLCJkZWxheSIsImNoaWxkUHJvcHMiLCJPYmplY3QiLCJhc3NpZ24iLCJjbGFzc05hbWUiLCJqdW1ib2FibGUiLCJkcmFnZ2FibGUiLCJkYXRhTW9kaWZpZXIiLCJhbHQiLCJzcmMiLCJ0aXRsZSIsIlN0cmluZ3MiLCJFbW90ZXMiLCJmYXZvcml0ZUFjdGlvbiIsInR5cGUiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUEsTUFBTUEsY0FBYyxHQUFHQyxrRUFBYyxDQUFDQyxnQkFBZixDQUFnQyxTQUFoQyxDQUF2QjtBQUVlLE1BQU1DLE9BQU4sU0FBc0JDLHlEQUFLLENBQUNDLFNBQTVCLENBQXNDO0FBQ2pEQyxhQUFXLENBQUNDLEtBQUQsRUFBUTtBQUNmLFVBQU1BLEtBQU47QUFFQSxTQUFLQyxLQUFMLEdBQWE7QUFDVEMsbUJBQWEsRUFBRSxDQUFDLEtBQUtDLGNBRFo7QUFFVEMsZ0JBQVUsRUFBRSxLQUFLSixLQUFMLENBQVdJO0FB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LGFBQU4sQ0FBb0IsS0FBcEIsRUFBMkI7QUFDdkJVLGlCQUFTLEVBQUUsS0FEWTtBQUV2QkYsaUJBQVMsRUFBRSxVQUFVLEtBQUtqQixhQUFmLElBQWdDLEtBQUtmLEtBQUwsQ0FBV2lDLFNBQVgsR0FBdUIsWUFBdkIsR0FBc0MsRUFBdEUsS0FBNkUsQ0FBQyxLQUFLaEMsS0FBTCxDQUFXQyxhQUFaLEdBQTRCLGlCQUE1QixHQUFnRCxFQUE3SCxDQUZZO0FBR3ZCaUMsb0JBQVksRUFBRSxLQUFLbkMsS0FBTCxDQUFXYSxRQUhGO0FBSXZCdUIsV0FBRyxFQUFFLEtBQUt4QixLQUphO0FBS3ZCeUIsV0FBRyxFQUFFLEtBQUtyQyxLQUFMLENBQVdzQjtBQUxPLE9BQTNCLENBTkcsRUFhSHpCLHlEQUFLLENBQUMyQixhQUFOLENBQW9CLE9BQXBCLEVBQTZCO0FBQ3pCUSxpQkFBUyxFQUFFLFNBQVMsS0FBSy9CLEtBQUwsQ0FBV0csVUFBWCxHQUF3QixTQUF4QixHQUFvQyxFQUE3QyxDQURjO0FBRXpCa0MsYUFBSyxFQUFFQywyREFBTyxDQUFDQyxNQUFSLENBQWVDLGNBRkc7QUFHekJDLFlBQUksRUFBRSxRQUhtQjtBQUl6QmxDLGVBQU8sRUFBRSxLQUFLQztBQUpXLE9BQTdCLENBYkcsQ0FBUDtBQW9CSCxLQTNCRSxDQUFQO0FBNEJIOztBQTlFZ0QiLCJmaWxlIjoiLi9zcmMvdWkvZW1vdGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1NldHRpbmdzLCBSZWFjdCwgV2VicGFja01vZHVsZXMsIEV2ZW50cywgU3RyaW5nc30gZnJvbSBcIm1vZHVsZXNcIjtcclxuXHJcbmNvbnN0IFRvb2x0aXBXcmFwcGVyID0gV2VicGFja01vZHVsZXMuZ2V0QnlEaXNwbGF5TmFtZShcIlRvb2x0aXBcIik7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCREVtb3RlIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcclxuICAgIGNvbnN0cnVjdG9yKHByb3BzKSB7XHJcbiAgICAgICAgc3VwZXIocHJvcHMpO1xyXG5cclxuICAgICAgICB0aGlzLnN0YXRlID0ge1xyXG4gICAgICAgICAgICBzaG91bGRBbmltYXRlOiAhdGhpcy5hbmltYXRlT25Ib3ZlcixcclxuICAgICAgICAgICAgaXNGYXZvcml0ZTogdGhpcy5wcm9wcy5pc0Zhdm9yaXRlXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgdGhpcy5vbk1vdXNlRW50ZXIgPSB0aGlzLm9uTW91c2VFbnRlci5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMub25Nb3VzZUxlYXZlID0gdGhpcy5vbk1vdXNlTGVhdmUuYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLm9uQ2xpY2sgPSB0aGlzLm9uQ2xpY2suYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLnRvZ2dsZUZhdm9yaXRlID0gdGhpcy50b2dnbGVGYXZvcml0ZS5iaW5kKHRoaXMpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBhbmltYXRlT25Ib3ZlcigpIHtcclxuICAgICAgICByZXR1cm4gU2V0dGluZ3MuZ2V0KFwiZW1vdGVzXCIsIFwiZ2VuZXJhbFwiLCBcImFuaW1hdGVPbkhvdmVyXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBsYWJlbCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wcm9wcy5tb2RpZmllciA/IGAke3RoaXMucHJvcHMubmFtZX06JHt0aGlzLnByb3BzLm1vZGlmaWVyfWAgOiB0aGlzLnByb3BzLm5hbWU7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IG1vZGlmaWVyQ2xhc3MoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvcHMubW9kaWZpZXIgPyBgIGVtb3RlJHt0aGlzLnByb3BzLm1vZGlmaWVyfWAgOiBcIlwiO1xyXG4gICAgfVxyXG5cclxuICAgIG9uTW91c2VFbnRlcigpIHtcclxuICAgICAgICBpZiAoIXRoaXMuc3RhdGUuc2hvdWxkQW5pbWF0ZSAmJiB0aGlzLmFuaW1hdGVPbkhvdmVyKSB0aGlzLnNldFN0YXRlKHtzaG91bGRBbmltYXRlOiB0cnVlfSk7XHJcbiAgICAgICAgLy8gaWYgKCF0aGlzLnN0YXRlLmlzRmF2b3JpdGUgJiYgRW1vdGVNZW51LmZhdm9yaXRlRW1vdGVzW3RoaXMubGFiZWxdKSB0aGlzLnNldFN0YXRlKHtpc0Zhdm9yaXRlOiB0cnVlfSk7XHJcbiAgICAgICAgLy8gZWxzZSBpZiAodGhpcy5zdGF0ZS5pc0Zhdm9yaXRlICYmICFFbW90ZU1lbnUuZmF2b3JpdGVFbW90ZXNbdGhpcy5sYWJlbF0pIHRoaXMuc2V0U3RhdGUoe2lzRmF2b3JpdGU6IGZhbHNlfSk7XHJcbiAgICB9XHJcblxyXG4gICAgb25Nb3VzZUxlYXZlKCkge1xyXG4gICAgICAgIGlmICh0aGlzLnN0YXRlLnNob3VsZEFuaW1hdGUgJiYgdGhpcy5hbmltYXRlT25Ib3ZlcikgdGhpcy5zZXRTdGF0ZSh7c2hvdWxkQW5pbWF0ZTogZmFsc2V9KTtcclxuICAgIH1cclxuXHJcbiAgICBvbkNsaWNrKGUpIHtcclxuICAgICAgICBpZiAodGhpcy5wcm9wcy5vbkNsaWNrKSB0aGlzLnByb3BzLm9uQ2xpY2soZSk7XHJcbiAgICB9XHJcblxyXG4gICAgdG9nZ2xlRmF2b3JpdGUoZSkge1xyXG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgIGlmICh0aGlzLnN0YXRlLmlzRmF2b3JpdGUpIEV2ZW50cy5lbWl0KFwiZW1vdGVzLWZhdm9yaXRlLXJlbW92ZWRcIiwgdGhpcy5sYWJlbCk7XHJcbiAgICAgICAgZWxzZSBFdmVudHMuZW1pdChcImVtb3Rlcy1mYXZvcml0ZS1hZGRlZFwiLCB0aGlzLmxhYmVsLCB0aGlzLnByb3BzLnVybCk7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7aXNGYXZvcml0ZTogIXRoaXMuc3RhdGUuaXNGYXZvcml0ZX0pO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChUb29sdGlwV3JhcHBlciwge1xyXG4gICAgICAgICAgICAgICAgY29sb3I6IFwiYmxhY2tcIixcclxuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBcInRvcFwiLFxyXG4gICAgICAgICAgICAgICAgdGV4dDogdGhpcy5sYWJlbCxcclxuICAgICAgICAgICAgICAgIGRlbGF5OiA3NTBcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgKGNoaWxkUHJvcHMpID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIE9iamVjdC5hc3NpZ24oe1xyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogXCJlbW90ZXdyYXBwZXJcIiArICh0aGlzLnByb3BzLmp1bWJvYWJsZSA/IFwiIGp1bWJvYWJsZVwiIDogXCJcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgb25Nb3VzZUVudGVyOiB0aGlzLm9uTW91c2VFbnRlcixcclxuICAgICAgICAgICAgICAgICAgICBvbk1vdXNlTGVhdmU6IHRoaXMub25Nb3VzZUxlYXZlLFxyXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s6IHRoaXMub25DbGlja1xyXG4gICAgICAgICAgICAgICAgfSwgY2hpbGRQcm9wcyksXHJcbiAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImltZ1wiLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRyYWdnYWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogXCJlbW90ZVwiICsgdGhpcy5tb2RpZmllckNsYXNzICsgKHRoaXMucHJvcHMuanVtYm9hYmxlID8gXCIganVtYm9hYmxlXCIgOiBcIlwiKSArICghdGhpcy5zdGF0ZS5zaG91bGRBbmltYXRlID8gXCIgc3RvcC1hbmltYXRpb25cIiA6IFwiXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhTW9kaWZpZXI6IHRoaXMucHJvcHMubW9kaWZpZXIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFsdDogdGhpcy5sYWJlbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3JjOiB0aGlzLnByb3BzLnVybFxyXG4gICAgICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogXCJmYXZcIiArICh0aGlzLnN0YXRlLmlzRmF2b3JpdGUgPyBcIiBhY3RpdmVcIiA6IFwiXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogU3RyaW5ncy5FbW90ZXMuZmF2b3JpdGVBY3Rpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiYnV0dG9uXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s6IHRoaXMudG9nZ2xlRmF2b3JpdGVcclxuICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/ui/emote.js\n");
/***/ }),
/***/ "./src/ui/emoteicon.jsx":
/*!******************************!*\
!*** ./src/ui/emoteicon.jsx ***!
\******************************/
/*! exports provided: default */
/***/ (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 EmoteIcon; });\n/* harmony import */ var _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../modules/modules.js */ \"./src/modules/modules.js\");\n/* harmony import */ var _builtins_emotes_emotes__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../builtins/emotes/emotes */ \"./src/builtins/emotes/emotes.js\");\n\n\nconst {\n openContextMenu,\n closeContextMenu\n} = _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"WebpackModules\"].getByProps(\"openContextMenu\");\nconst {\n MenuItem,\n MenuGroup\n} = _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"WebpackModules\"].find(m => m.MenuRadioItem && !m.default);\nconst ContextMenu = _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"WebpackModules\"].getByProps(\"default\", \"MenuStyle\").default;\nconst {\n ComponentDispatch\n} = _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"WebpackModules\"].getByProps(\"ComponentDispatch\");\nclass EmoteIcon extends _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n return /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"emote-container\",\n onClick: this.handleOnClick.bind(this),\n onContextMenu: this.handleOnContextMenu.bind(this)\n }, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"img\", {\n src: this.props.url,\n alt: this.props.emote,\n title: this.props.emote\n }));\n }\n\n handleOnClick() {\n this.insertText(this.props.emote);\n }\n\n handleOnContextMenu(e) {\n openContextMenu(e, () => /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(ContextMenu, {\n navId: \"EmoteContextMenu\",\n onClose: closeContextMenu\n }, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(MenuGroup, null, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(MenuItem, {\n label: _builtins_emotes_emotes__WEBPACK_IMPORTED_MODULE_1__[\"default\"].isFavorite(this.props.emote) ? \"Remove Favorite\" : \"Add Favorite\",\n id: \"favorite\",\n action: this.handlefavorite.bind(this),\n onClose: closeContextMenu\n }))));\n }\n\n handlefavorite() {\n closeContextMenu();\n _builtins_emotes_emotes__WEBPACK_IMPORTED_MODULE_1__[\"default\"].isFavorite(this.props.emote) ? _builtins_emotes_emotes__WEBPACK_IMPORTED_MODULE_1__[\"default\"].removeFavorite(this.props.emote) : _builtins_emotes_emotes__WEBPACK_IMPORTED_MODULE_1__[\"default\"].addFavorite(this.props.emote, this.props.url);\n }\n\n insertText(emote) {\n ComponentDispatch.dispatchToLastSubscribed(\"INSERT_TEXT\", {\n content: emote\n });\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvZW1vdGVpY29uLmpzeD83YTYzIl0sIm5hbWVzIjpbIm9wZW5Db250ZXh0TWVudSIsImNsb3NlQ29udGV4dE1lbnUiLCJXZWJwYWNrTW9kdWxlcyIsImdldEJ5UHJvcHMiLCJNZW51SXRlbSIsIk1lbnVHcm91cCIsImZpbmQiLCJtIiwiTWVudVJhZGlvSXRlbSIsImRlZmF1bHQiLCJDb250ZXh0TWVudSIsIkNvbXBvbmVudERpc3BhdGNoIiwiRW1vdGVJY29uIiwiUmVhY3QiLCJDb21wb25lbnQiLCJyZW5kZXIiLCJoYW5kbGVPbkNsaWNrIiwiYmluZCIsImhhbmRsZU9uQ29udGV4dE1lbnUiLCJwcm9wcyIsInVybCIsImVtb3RlIiwiaW5zZXJ0VGV4dCIsImUiLCJFbW90ZU1vZHVsZSIsImlzRmF2b3JpdGUiLCJoYW5kbGVmYXZvcml0ZSIsInJlbW92ZUZhdm9yaXRlIiwiYWRkRmF2b3JpdGUiLCJkaXNwYXRjaFRvTGFzdFN1YnNjcmliZWQiLCJjb250ZW50Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQSxNQUFNO0FBQUNBLGlCQUFEO0FBQWtCQztBQUFsQixJQUFzQ0Msa0VBQWMsQ0FBQ0MsVUFBZixDQUEwQixpQkFBMUIsQ0FBNUM7QUFDQSxNQUFNO0FBQUNDLFVBQUQ7QUFBV0M7QUFBWCxJQUF3Qkgsa0VBQWMsQ0FBQ0ksSUFBZixDQUFvQkMsQ0FBQyxJQUFJQSxDQUFDLENBQUNDLGFBQUYsSUFBbUIsQ0FBQ0QsQ0FBQyxDQUFDRSxPQUEvQyxDQUE5QjtBQUNBLE1BQU1DLFdBQVcsR0FBR1Isa0VBQWMsQ0FBQ0MsVUFBZixDQUEwQixTQUExQixFQUFxQyxXQUFyQyxFQUFrRE0sT0FBdEU7QUFDQSxNQUFNO0FBQUNFO0FBQUQsSUFBc0JULGtFQUFjLENBQUNDLFVBQWYsQ0FBMEIsbUJBQTFCLENBQTVCO0FBQ2UsTUFBTVMsU0FBTixTQUF3QkMseURBQUssQ0FBQ0MsU0FBOUIsQ0FBd0M7QUFDbkRDLFFBQU0sR0FBRztBQUNMLHdCQUFPO0FBQUssZUFBUyxFQUFDLGlCQUFmO0FBQWlDLGFBQU8sRUFBRSxLQUFLQyxhQUFMLENBQW1CQyxJQUFuQixDQUF3QixJQUF4QixDQUExQztBQUF5RSxtQkFBYSxFQUFFLEtBQUtDLG1CQUFMLENBQXlCRCxJQUF6QixDQUE4QixJQUE5QjtBQUF4RixvQkFDSDtBQUFLLFNBQUcsRUFBRSxLQUFLRSxLQUFMLENBQVdDLEdBQXJCO0FBQTBCLFNBQUcsRUFBRSxLQUFLRCxLQUFMLENBQVdFLEtBQTFDO0FBQWlELFdBQUssRUFBRSxLQUFLRixLQUFMLENBQVdFO0FBQW5FLE1BREcsQ0FBUDtBQUdIOztBQUNETCxlQUFhLEdBQUc7QUFDWixTQUFLTSxVQUFMLENBQWdCLEtBQUtILEtBQUwsQ0FBV0UsS0FBM0I7QUFDSDs7QUFDREgscUJBQW1CLENBQUNLLENBQUQsRUFBSTtBQUNuQnZCLG1CQUFlLENBQUN1QixDQUFELEVBQUksbUJBQU0sd0VBQUMsV0FBRDtBQUFhLFdBQUssRUFBQyxrQkFBbkI7QUFBc0MsYUFBTyxFQUFFdEI7QUFBL0Msb0JBQ3JCLHdFQUFDLFNBQUQscUJBQ0ksd0VBQUMsUUFBRDtBQUFVLFdBQUssRUFBRXVCLCtEQUFXLENBQUNDLFVBQVosQ0FBdUIsS0FBS04sS0FBTCxDQUFXRSxLQUFsQyxJQUEyQyxpQkFBM0MsR0FBK0QsY0FBaEY7QUFBZ0csUUFBRSxFQUFDLFVBQW5HO0FBQThHLFlBQU0sRUFBRSxLQUFLSyxjQUFMLENBQW9CVCxJQUFwQixDQUF5QixJQUF6QixDQUF0SDtBQUFzSixhQUFPLEVBQUVoQjtBQUEvSixNQURKLENBRHFCLENBQVYsQ0FBZjtBQUtIOztBQUNEeUIsZ0JBQWMsR0FBRztBQUNiekIsb0JBQWdCO0FBQ2hCdUIsbUVBQVcsQ0FBQ0MsVUFBWixDQUF1QixLQUFLTixLQUFMLENBQVdFLEtBQWxDLElBQTJDRywrREFBVyxDQUFDRyxjQUFaLENBQTJCLEtBQUtSLEtBQUwsQ0FBV0UsS0FBdEMsQ0FBM0MsR0FBMEZHLCtEQUFXLENBQUNJLFdBQVosQ0FBd0IsS0FBS1QsS0FBTCxDQUFXRSxLQUFuQyxFQUEwQyxLQUFLRixLQUFMLENBQVdDLEdBQXJELENBQTFGO0FBQ0g7O0FBQ0RFLFlBQVUsQ0FBQ0QsS0FBRCxFQUFRO0FBQ2RWLHFCQUFpQixDQUFDa0Isd0JBQWxCLENBQTJDLGFBQTNDLEVBQTBEO0FBQUNDLGFBQU8sRUFBRVQ7QUFBVixLQUExRDtBQUNIOztBQXRCa0QiLCJmaWxlIjoiLi9zcmMvdWkvZW1vdGVpY29uLmpzeC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhY3QsIFdlYnBhY2tNb2R1bGVzLCBEaXNjb3JkTW9kdWxlc30gZnJvbSBcIm1vZHVsZXNcIjtcclxuaW1wb3J0IEVtb3RlTW9kdWxlIGZyb20gXCIuLi9idWlsdGlucy9lbW90ZXMvZW1vdGVzXCI7XHJcbmNvbnN0IHtvcGVuQ29udGV4dE1lbnUsIGNsb3NlQ29udGV4dE1lbnV9ID0gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcIm9wZW5Db250ZXh0TWVudVwiKTtcclxuY29uc3Qge01lbnVJdGVtLCBNZW51R3JvdXB9ID0gV2VicGFja01vZHVsZXMuZmluZChtID0+IG0uTWVudVJhZGlvSXRlbSAmJiAhbS5kZWZhdWx0KTtcclxuY29uc3QgQ29udGV4dE1lbnUgPSBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiZGVmYXVsdFwiLCBcIk1lbnVTdHlsZVwiKS5kZWZhdWx0O1xyXG5jb25zdCB7Q29tcG9uZW50RGlzcGF0Y2h9ID0gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcIkNvbXBvbmVudERpc3BhdGNoXCIpO1xyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFbW90ZUljb24gZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIHJldHVybiA8ZGl2IGNsYXNzTmFtZT1cImVtb3RlLWNvbnRhaW5lclwiIG9uQ2xpY2s9e3RoaXMuaGFuZGxlT25DbGljay5iaW5kKHRoaXMpfSBvbkNvbnRleHRNZW51PXt0aGlzLmhhbmRsZU9uQ29udGV4dE1lbnUuYmluZCh0aGlzKX0+XHJcbiAgICAgICAgICAgIDxpbWcgc3JjPXt0aGlzLnByb3BzLnVybH0gYWx0PXt0aGlzLnByb3BzLmVtb3RlfSB0aXRsZT17dGhpcy5wcm9wcy5lbW90ZX0vPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgfVxyXG4gICAgaGFuZGxlT25DbGljaygpIHtcclxuICAgICAgICB0aGlzLmluc2VydFRleHQodGhpcy5wcm9wcy5lbW90ZSk7XHJcbiAgICB9XHJcbiAgICBoYW5kbGVPbkNvbnRleHRNZW51KGUpIHtcclxuICAgICAgICBvcGVuQ29udGV4dE1lbnUoZSwgKCkgPT4gPENvbnRleHRNZW51IG5hdklkPVwiRW1vdGVDb250ZXh0TWVudVwiIG9uQ2xvc2U9e2Nsb3NlQ29udGV4dE1lbnV9PlxyXG4gICAgICAgICAgICA8TWVudUdyb3VwPlxyXG4gICAgICAgICAgICAgICAgPE1lbnVJdGVtIGxhYmVsPXtFbW90ZU1vZHVsZS5pc0Zhdm9yaXRlKHRoaXMucHJvcHMuZW1vdGUpID8gXCJSZW1vdmUgRmF2b3JpdGVcIiA6IFwiQWRkIEZhdm9yaXRlXCJ9IGlkPVwiZmF2b3JpdGVcIiBhY3Rpb249e3RoaXMuaGFuZGxlZmF2b3JpdGUuYmluZCh0aGlzKX0gb25DbG9zZT17Y2xvc2VDb250ZXh0TWVudX0vPlxyXG4gICAgICAgICAgICA8L01lbnVHcm91cD5cclxuICAgICAgICA8L0NvbnRleHRNZW51Pik7XHJcbiAgICB9XHJcbiAgICBoYW5kbGVmYXZvcml0ZSgpIHtcclxuICAgICAgICBjbG9zZUNvbnRleHRNZW51KCk7XHJcbiAgICAgICAgRW1vdGVNb2R1bGUuaXNGYXZvcml0ZSh0aGlzLnByb3BzLmVtb3RlKSA/IEVtb3RlTW9kdWxlLnJlbW92ZUZhdm9yaXRlKHRoaXMucHJvcHMuZW1vdGUpIDogRW1vdGVNb2R1bGUuYWRkRmF2b3JpdGUodGhpcy5wcm9wcy5lbW90ZSwgdGhpcy5wcm9wcy51cmwpO1xyXG4gICAgfVxyXG4gICAgaW5zZXJ0VGV4dChlbW90ZSkge1xyXG4gICAgICAgIENvbXBvbmVudERpc3BhdGNoLmRpc3BhdGNoVG9MYXN0U3Vic2NyaWJlZChcIklOU0VSVF9URVhUXCIsIHtjb250ZW50OiBlbW90ZX0pXHJcbiAgICB9XHJcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/ui/emoteicon.jsx\n");
/***/ }),
/***/ "./src/ui/emotemenucard.jsx":
/*!**********************************!*\
!*** ./src/ui/emotemenucard.jsx ***!
\**********************************/
/*! exports provided: default */
/***/ (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 EmoteMenuCard; });\n/* harmony import */ var _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../modules/modules.js */ \"./src/modules/modules.js\");\n\nconst Scroller = _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"WebpackModules\"].getByDisplayName(\"VerticalScroller\");\nclass EmoteMenuCard extends _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n return /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: `bd-qem-${this.props.type}-container`\n }, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(Scroller, {\n className: \"bd-em-scroller\"\n }, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"emote-menu-inner\"\n }, this.props.children)));\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvZW1vdGVtZW51Y2FyZC5qc3g/NWUzNyJdLCJuYW1lcyI6WyJTY3JvbGxlciIsIldlYnBhY2tNb2R1bGVzIiwiZ2V0QnlEaXNwbGF5TmFtZSIsIkVtb3RlTWVudUNhcmQiLCJSZWFjdCIsIkNvbXBvbmVudCIsInJlbmRlciIsInByb3BzIiwidHlwZSIsImNoaWxkcmVuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBLE1BQU1BLFFBQVEsR0FBR0Msa0VBQWMsQ0FBQ0MsZ0JBQWYsQ0FBZ0Msa0JBQWhDLENBQWpCO0FBQ2UsTUFBTUMsYUFBTixTQUE0QkMseURBQUssQ0FBQ0MsU0FBbEMsQ0FBNEM7QUFDdkRDLFFBQU0sR0FBRztBQUNMLHdCQUFPO0FBQUssZUFBUyxFQUFHLFVBQVMsS0FBS0MsS0FBTCxDQUFXQyxJQUFLO0FBQTFDLG9CQUNILHdFQUFDLFFBQUQ7QUFBVSxlQUFTLEVBQUM7QUFBcEIsb0JBQ0k7QUFBSyxlQUFTLEVBQUM7QUFBZixPQUNLLEtBQUtELEtBQUwsQ0FBV0UsUUFEaEIsQ0FESixDQURHLENBQVA7QUFPSDs7QUFUc0QiLCJmaWxlIjoiLi9zcmMvdWkvZW1vdGVtZW51Y2FyZC5qc3guanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlYWN0LCBXZWJwYWNrTW9kdWxlc30gZnJvbSBcIm1vZHVsZXNcIjtcclxuY29uc3QgU2Nyb2xsZXIgPSBXZWJwYWNrTW9kdWxlcy5nZXRCeURpc3BsYXlOYW1lKFwiVmVydGljYWxTY3JvbGxlclwiKTtcclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRW1vdGVNZW51Q2FyZCBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XHJcbiAgICByZW5kZXIoKSB7XHJcbiAgICAgICAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPXtgYmQtcWVtLSR7dGhpcy5wcm9wcy50eXBlfS1jb250YWluZXJgfT5cclxuICAgICAgICAgICAgPFNjcm9sbGVyIGNsYXNzTmFtZT1cImJkLWVtLXNjcm9sbGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImVtb3RlLW1lbnUtaW5uZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICB7dGhpcy5wcm9wcy5jaGlsZHJlbn1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L1Njcm9sbGVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/emotemenucard.jsx\n");
/***/ }),
/***/ "./src/ui/errorboundary.jsx":
/*!**********************************!*\
!*** ./src/ui/errorboundary.jsx ***!
\**********************************/
/*! exports provided: default */
/***/ (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_modules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../modules/modules.js */ \"./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_modules_js__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_modules_js__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_modules_js__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/ZDZkMSJdLCJuYW1lcyI6WyJFcnJvckJvdW5kYXJ5IiwiUmVhY3QiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwic3RhdGUiLCJoYXNFcnJvciIsImNvbXBvbmVudERpZENhdGNoIiwic2V0U3RhdGUiLCJyZW5kZXIiLCJyZW1vdGUiLCJnZXRDdXJyZW50V2luZG93Iiwib3BlbkRldlRvb2xzIiwiY2hpbGRyZW4iLCJvcmlnaW5hbFJlbmRlciIsInByb3RvdHlwZSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsInNldCIsIkxvZ2dlciIsIndhcm4iLCJnZXQiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ2UsTUFBTUEsYUFBTixTQUE0QkMseURBQUssQ0FBQ0MsU0FBbEMsQ0FBNEM7QUFDdkRDLGFBQVcsQ0FBQ0MsS0FBRCxFQUFRO0FBQ2pCLFVBQU1BLEtBQU47QUFDQSxTQUFLQyxLQUFMLEdBQWE7QUFBQ0MsY0FBUSxFQUFFO0FBQVgsS0FBYjtBQUNEOztBQUVEQyxtQkFBaUIsR0FBRztBQUNsQixTQUFLQyxRQUFMLENBQWM7QUFBQ0YsY0FBUSxFQUFFO0FBQVgsS0FBZDtBQUNEOztBQUVERyxRQUFNLEdBQUc7QUFDUCxRQUFJLEtBQUtKLEtBQUwsQ0FBV0MsUUFBZixFQUF5QixvQkFBTztBQUFLLGFBQU8sRUFBRSxNQUFNSSwrQ0FBTSxDQUFDQyxnQkFBUCxHQUEwQkMsWUFBMUIsRUFBcEI7QUFBOEQsZUFBUyxFQUFDO0FBQXhFLGdGQUFQO0FBQ3pCLFdBQU8sS0FBS1IsS0FBTCxDQUFXUyxRQUFsQjtBQUNEOztBQWJzRDtBQWdCM0QsTUFBTUMsY0FBYyxHQUFHZCxhQUFhLENBQUNlLFNBQWQsQ0FBd0JOLE1BQS9DO0FBQ0FPLE1BQU0sQ0FBQ0MsY0FBUCxDQUFzQmpCLGFBQWEsQ0FBQ2UsU0FBcEMsRUFBK0MsUUFBL0MsRUFBeUQ7QUFDckRHLFlBQVUsRUFBRSxLQUR5QztBQUVyREMsY0FBWSxFQUFFLEtBRnVDO0FBR3JEQyxLQUFHLEVBQUUsWUFBVztBQUFDQyw4REFBTSxDQUFDQyxJQUFQLENBQVksZUFBWixFQUE2QixxR0FBN0I7QUFBcUksR0FIakc7QUFJckRDLEtBQUcsRUFBRSxNQUFNVDtBQUowQyxDQUF6RCIsImZpbGUiOiIuL3NyYy91aS9lcnJvcmJvdW5kYXJ5LmpzeC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhY3QsIExvZ2dlcn0gZnJvbSBcIm1vZHVsZXNcIjtcclxuaW1wb3J0IHtyZW1vdGV9IGZyb20gXCJlbGVjdHJvblwiO1xyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFcnJvckJvdW5kYXJ5IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcclxuICAgIGNvbnN0cnVjdG9yKHByb3BzKSB7XHJcbiAgICAgIHN1cGVyKHByb3BzKTtcclxuICAgICAgdGhpcy5zdGF0ZSA9IHtoYXNFcnJvcjogZmFsc2V9O1xyXG4gICAgfVxyXG5cclxuICAgIGNvbXBvbmVudERpZENhdGNoKCkge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHtoYXNFcnJvcjogdHJ1ZX0pO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgaWYgKHRoaXMuc3RhdGUuaGFzRXJyb3IpIHJldHVybiA8ZGl2IG9uQ2xpY2s9eygpID0+IHJlbW90ZS5nZXRDdXJyZW50V2luZG93KCkub3BlbkRldlRvb2xzKCl9IGNsYXNzTmFtZT1cInJlYWN0LWVycm9yXCI+VGhlcmUgd2FzIGFuIHVuZXhwZWN0ZWQgRXJyb3IuIENsaWNrIHRvIG9wZW4gY29uc29sZSBmb3IgbW9yZSBkZXRhaWxzLjwvZGl2PjsgIFxyXG4gICAgICByZXR1cm4gdGhpcy5wcm9wcy5jaGlsZHJlbjsgXHJcbiAgICB9XHJcbn1cclxuXHJcbmNvbnN0IG9yaWdpbmFsUmVuZGVyID0gRXJyb3JCb3VuZGFyeS5wcm90b3R5cGUucmVuZGVyO1xyXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoRXJyb3JCb3VuZGFyeS5wcm90b3R5cGUsIFwicmVuZGVyXCIsIHtcclxuICAgIGVudW1lcmFibGU6IGZhbHNlLFxyXG4gICAgY29uZmlndXJhYmxlOiBmYWxzZSxcclxuICAgIHNldDogZnVuY3Rpb24oKSB7TG9nZ2VyLndhcm4oXCJFcnJvckJvdW5kYXJ5XCIsIFwiQWRkb24gcG9saWN5IGZvciBwbHVnaW5zICM1IGh0dHBzOi8vZ2l0aHViLmNvbS9yYXVlbnppL0JldHRlckRpc2NvcmRBcHAvd2lraS9BZGRvbi1Qb2xpY2llcyNwbHVnaW5zXCIpO30sXHJcbiAgICBnZXQ6ICgpID0+IG9yaWdpbmFsUmVuZGVyXHJcbn0pOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/errorboundary.jsx\n");
/***/ }),
/***/ "./src/ui/floating/container.jsx":
/*!***************************************!*\
!*** ./src/ui/floating/container.jsx ***!
\***************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../modules/modules.js */ \"./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_modules_js__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_modules_js__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_modules_js__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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvZmxvYXRpbmcvY29udGFpbmVyLmpzeD8xNTY5Il0sIm5hbWVzIjpbIkZsb2F0aW5nV2luZG93Q29udGFpbmVyIiwiUmVhY3QiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwic3RhdGUiLCJ3aW5kb3dzIiwibWluWSIsImFwcENvbnRhaW5lciIsIkRPTSIsInF1ZXJ5Iiwib2Zmc2V0VG9wIiwicmVuZGVyIiwibWFwIiwid2luZG93IiwiY2xvc2UiLCJiaW5kIiwiaWQiLCJjaGlsZHJlbiIsIm9wZW4iLCJzZXRTdGF0ZSIsImZpbHRlciIsInciLCJvbkNsb3NlIiwicm9vdCIsIl9yb290IiwiY29udGFpbmVyIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwiYm9keSIsImFwcGVuZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTtBQUVBOztBQUVBLE1BQU1BLHVCQUFOLFNBQXNDQyx5REFBSyxDQUFDQyxTQUE1QyxDQUFzRDtBQUVsREMsYUFBVyxDQUFDQyxLQUFELEVBQVE7QUFDZixVQUFNQSxLQUFOO0FBQ0EsU0FBS0MsS0FBTCxHQUFhO0FBQUNDLGFBQU8sRUFBRTtBQUFWLEtBQWI7QUFDSDs7QUFFRCxNQUFJQyxJQUFKLEdBQVc7QUFDUCxVQUFNQyxZQUFZLEdBQUdDLHVEQUFHLENBQUNDLEtBQUosQ0FBVyxpQ0FBWCxDQUFyQjtBQUNBLFFBQUlGLFlBQUosRUFBa0IsT0FBT0EsWUFBWSxDQUFDRyxTQUFwQjtBQUNsQixXQUFPLENBQVA7QUFDSDs7QUFFREMsUUFBTSxHQUFHO0FBQ0wsV0FBTyxLQUFLUCxLQUFMLENBQVdDLE9BQVgsQ0FBbUJPLEdBQW5CLENBQXVCQyxNQUFNLGlCQUNoQyx3RUFBQywrQ0FBRCxlQUFvQkEsTUFBcEI7QUFBNEIsV0FBSyxFQUFFLEtBQUtDLEtBQUwsQ0FBV0MsSUFBWCxDQUFnQixJQUFoQixFQUFzQkYsTUFBTSxDQUFDRyxFQUE3QixDQUFuQztBQUFxRSxVQUFJLEVBQUUsS0FBS1Y7QUFBaEYsUUFDU08sTUFBTSxDQUFDSSxRQURoQixDQURHLENBQVA7QUFLSDs7QUFFREMsTUFBSSxDQUFDTCxNQUFELEVBQVM7QUFDVCxTQUFLTSxRQUFMLENBQWM7QUFDVmQsYUFBTyxFQUFFLENBQUMsR0FBRyxLQUFLRCxLQUFMLENBQVdDLE9BQWYsRUFBd0JRLE1BQXhCO0FBREMsS0FBZDtBQUdIOztBQUVEQyxPQUFLLENBQUNFLEVBQUQsRUFBSztBQUNOLFNBQUtHLFFBQUwsQ0FBYztBQUNWZCxhQUFPLEVBQUUsS0FBS0QsS0FBTCxDQUFXQyxPQUFYLENBQW1CZSxNQUFuQixDQUEwQkMsQ0FBQyxJQUFJO0FBQ3BDLFlBQUlBLENBQUMsQ0FBQ0wsRUFBRixJQUFRQSxFQUFSLElBQWNLLENBQUMsQ0FBQ0MsT0FBcEIsRUFBNkJELENBQUMsQ0FBQ0MsT0FBRjtBQUM3QixlQUFPRCxDQUFDLENBQUNMLEVBQUYsSUFBUUEsRUFBZjtBQUNILE9BSFE7QUFEQyxLQUFkO0FBTUg7O0FBRUQsYUFBV0EsRUFBWCxHQUFnQjtBQUFDLFdBQU8sa0JBQVA7QUFBMkI7O0FBQzVDLGFBQVdPLElBQVgsR0FBa0I7QUFDZCxRQUFJLEtBQUtDLEtBQVQsRUFBZ0IsT0FBTyxLQUFLQSxLQUFaO0FBQ2hCLFVBQU1DLFNBQVMsR0FBR0MsUUFBUSxDQUFDQyxhQUFULENBQXVCLEtBQXZCLENBQWxCO0FBQ0FGLGFBQVMsQ0FBQ1QsRUFBVixHQUFlLEtBQUtBLEVBQXBCO0FBQ0FVLFlBQVEsQ0FBQ0UsSUFBVCxDQUFjQyxNQUFkLENBQXFCSixTQUFyQjtBQUNBLFdBQU8sS0FBS0QsS0FBTCxHQUFhQyxTQUFwQjtBQUNIOztBQTNDaUQ7O0FBOEN2QzFCLHNGQUFmIiwiZmlsZSI6Ii4vc3JjL3VpL2Zsb2F0aW5nL2NvbnRhaW5lci5qc3guanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlYWN0LCBET019IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5pbXBvcnQgRmxvYXRpbmdXaW5kb3cgZnJvbSBcIi4vd2luZG93XCI7XHJcblxyXG5jbGFzcyBGbG9hdGluZ1dpbmRvd0NvbnRhaW5lciBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcclxuICAgICAgICBzdXBlcihwcm9wcyk7XHJcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHt3aW5kb3dzOiBbXX07XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IG1pblkoKSB7XHJcbiAgICAgICAgY29uc3QgYXBwQ29udGFpbmVyID0gRE9NLnF1ZXJ5KGAjYXBwLW1vdW50ID4gZGl2W2NsYXNzKj1cImFwcC1cIl1gKTtcclxuICAgICAgICBpZiAoYXBwQ29udGFpbmVyKSByZXR1cm4gYXBwQ29udGFpbmVyLm9mZnNldFRvcDtcclxuICAgICAgICByZXR1cm4gMDtcclxuICAgIH1cclxuXHJcbiAgICByZW5kZXIoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhdGUud2luZG93cy5tYXAod2luZG93ID0+XHJcbiAgICAgICAgICAgIDxGbG9hdGluZ1dpbmRvdyB7Li4ud2luZG93fSBjbG9zZT17dGhpcy5jbG9zZS5iaW5kKHRoaXMsIHdpbmRvdy5pZCl9IG1pblk9e3RoaXMubWluWX0+XHJcbiAgICAgICAgICAgICAgICAgICAge3dpbmRvdy5jaGlsZHJlbn1cclxuICAgICAgICAgICAgPC9GbG9hdGluZ1dpbmRvdz5cclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIG9wZW4od2luZG93KSB7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgIHdpbmRvd3M6IFsuLi50aGlzLnN0YXRlLndpbmRvd3MsIHdpbmRvd11cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBjbG9zZShpZCkge1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICB3aW5kb3dzOiB0aGlzLnN0YXRlLndpbmRvd3MuZmlsdGVyKHcgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHcuaWQgPT0gaWQgJiYgdy5vbkNsb3NlKSB3Lm9uQ2xvc2UoKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB3LmlkICE9IGlkO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBnZXQgaWQoKSB7cmV0dXJuIFwiZmxvYXRpbmctd2luZG93c1wiO31cclxuICAgIHN0YXRpYyBnZXQgcm9vdCgpIHtcclxuICAgICAgICBpZiAodGhpcy5fcm9vdCkgcmV0dXJuIHRoaXMuX3Jvb3Q7XHJcbiAgICAgICAgY29uc3QgY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcclxuICAgICAgICBjb250YWluZXIuaWQgPSB0aGlzLmlkO1xyXG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kKGNvbnRhaW5lcik7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jvb3QgPSBjb250YWluZXI7XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IEZsb2F0aW5nV2luZG93Q29udGFpbmVyOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/floating/container.jsx\n");
/***/ }),
/***/ "./src/ui/floating/window.jsx":
/*!************************************!*\
!*** ./src/ui/floating/window.jsx ***!
\************************************/
/*! exports provided: default */
/***/ (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_modules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../modules/modules.js */ \"./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_modules_js__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_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createRef();\n this.window = _modules_modules_js__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_modules_js__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_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"floating-window-titlebar\",\n ref: this.titlebar\n }, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"span\", {\n className: \"title\"\n }, this.props.title), /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"floating-window-buttons\"\n }, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"button maximize-button\",\n onClick: this.maximize\n }, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_fullscreen__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n size: \"18px\"\n })), /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"button close-button\",\n onClick: this.close\n }, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_close__WEBPACK_IMPORTED_MODULE_2__[\"default\"], null)))), /*#__PURE__*/_modules_modules_js__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_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Modals.confirmAction, this.props.confirmationText, {\n danger: true,\n confirmText: _modules_modules_js__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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QUFZLEdBQUcsT0FBTyxLQUFLekQsS0FBTCxDQUFXeUQsWUFBbEIsSUFBbUMsVUFBbkMsR0FBZ0QsS0FBS3pELEtBQUwsQ0FBV3lELFlBQVgsRUFBaEQsR0FBNEUsS0FBS3pELEtBQUwsQ0FBV3lELFlBQTVHOztBQUNBLFFBQUlBLFlBQUosRUFBa0I7QUFDZCxXQUFLQyxRQUFMLENBQWM7QUFBQ3hELGlCQUFTLEVBQUU7QUFBWixPQUFkO0FBQ0FzRCxpQkFBVyxHQUFHLE1BQU0sS0FBS0MsWUFBTCxFQUFwQjtBQUNBLFdBQUtDLFFBQUwsQ0FBYztBQUFDeEQsaUJBQVMsRUFBRTtBQUFaLE9BQWQ7QUFDSDs7QUFDRCxRQUFJLEtBQUtGLEtBQUwsQ0FBV2UsS0FBWCxJQUFvQnlDLFdBQXhCLEVBQXFDLEtBQUt4RCxLQUFMLENBQVdlLEtBQVg7QUFDeEM7O0FBRUQwQyxjQUFZLEdBQUc7QUFDWCxXQUFPLElBQUlFLE9BQUosQ0FBWUMsT0FBTyxJQUFJO0FBQzFCQyxxREFBTSxDQUFDQyxxQkFBUCxDQUE2QkMsMkRBQU8sQ0FBQ0YsTUFBUixDQUFlRyxhQUE1QyxFQUEyRCxLQUFLaEUsS0FBTCxDQUFXaUUsZ0JBQXRFLEVBQXdGO0FBQ3BGQyxjQUFNLEVBQUUsSUFENEU7QUFFcEZDLG1CQUFXLEVBQUVKLDJEQUFPLENBQUNGLE1BQVIsQ0FBZTlDLEtBRndEO0FBR3BGcUQsaUJBQVMsRUFBRSxNQUFNO0FBQUNSLGlCQUFPLENBQUMsSUFBRCxDQUFQO0FBQWUsU0FIbUQ7QUFJcEZTLGdCQUFRLEVBQUUsTUFBTTtBQUFDVCxpQkFBTyxDQUFDLEtBQUQsQ0FBUDtBQUFnQjtBQUptRCxPQUF4RjtBQU1ILEtBUE0sQ0FBUDtBQVFIOztBQTNKdUQiLCJmaWxlIjoiLi9zcmMvdWkvZmxvYXRpbmcvd2luZG93LmpzeC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhY3QsIFN0cmluZ3N9IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5pbXBvcnQgU2NyZWVuIGZyb20gXCIuLi8uLi9zdHJ1Y3RzL3NjcmVlblwiO1xyXG5pbXBvcnQgQ2xvc2VCdXR0b24gZnJvbSBcIi4uL2ljb25zL2Nsb3NlXCI7XHJcbmltcG9ydCBNYXhpbWl6ZUljb24gZnJvbSBcIi4uL2ljb25zL2Z1bGxzY3JlZW5cIjtcclxuaW1wb3J0IE1vZGFscyBmcm9tIFwiLi4vbW9kYWxzXCI7XHJcblxyXG4vLyBjb25zdCBEcmFnZ2FibGUgPSBXZWJwYWNrTW9kdWxlcy5nZXRCeURpc3BsYXlOYW1lKFwiRHJhZ2dhYmxlXCIpO1xyXG4vLyB7XHJcbi8vICAgICBcImRyYWdBbnl3aGVyZVwiOiB0cnVlLFxyXG4vLyAgICAgXCJjbGFzc05hbWVcIjogXCJwaWN0dXJlSW5QaWN0dXJlV2luZG93LTFCNXFTZVwiLFxyXG4vLyAgICAgXCJtYXhYXCI6IDE5NjksXHJcbi8vICAgICBcIm1heFlcIjogdGhpcy5tYXhZLFxyXG4vLyAgICAgXCJvbkRyYWdTdGFydFwiOiBcIsaSICgpIHt9XCIsXHJcbi8vICAgICBcIm9uRHJhZ1wiOiBcIsaSICgpIHt9XCIsXHJcbi8vICAgICBcIm9uRHJhZ0VuZFwiOiBcIsaSICgpIHt9XCIsXHJcbi8vICAgICBcImNoaWxkcmVuXCI6IFwiPGRpdiAvPlwiLFxyXG4vLyAgICAgXCJpbml0aWFsWFwiOiAwLFxyXG4vLyAgICAgXCJpbml0aWFsWVwiOiAwXHJcbi8vICAgfVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRmxvYXRpbmdXaW5kb3cgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByb3BzKSB7XHJcbiAgICAgICAgc3VwZXIocHJvcHMpO1xyXG5cclxuICAgICAgICB0aGlzLnN0YXRlID0ge21vZGFsT3BlbjogZmFsc2V9O1xyXG5cclxuICAgICAgICB0aGlzLm9mZlggPSAwO1xyXG4gICAgICAgIHRoaXMub2ZmWSA9IDA7XHJcblxyXG4gICAgICAgIHRoaXMubWF4WCA9IHRoaXMucHJvcHMubWF4WCB8fCBTY3JlZW4ud2lkdGg7XHJcbiAgICAgICAgdGhpcy5tYXhZID0gdGhpcy5wcm9wcy5tYXhZIHx8IFNjcmVlbi5oZWlnaHQ7XHJcbiAgICAgICAgdGhpcy5taW5YID0gdGhpcy5wcm9wcy5taW5YIHx8IDA7XHJcbiAgICAgICAgdGhpcy5taW5ZID0gdGhpcy5wcm9wcy5taW5ZIHx8IDA7XHJcblxyXG4gICAgICAgIHRoaXMudGl0bGViYXIgPSBSZWFjdC5jcmVhdGVSZWYoKTtcclxuICAgICAgICB0aGlzLndpbmRvdyA9IFJlYWN0LmNyZWF0ZVJlZigpO1xyXG5cclxuICAgICAgICB0aGlzLmNsb3NlID0gdGhpcy5jbG9zZS5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMubWF4aW1pemUgPSB0aGlzLm1heGltaXplLmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy5vbkRyYWcgPSB0aGlzLm9uRHJhZy5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMub25EcmFnU3RhcnQgPSB0aGlzLm9uRHJhZ1N0YXJ0LmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy5vbkRyYWdTdG9wID0gdGhpcy5vbkRyYWdTdG9wLmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy5vblJlc2l6ZVN0YXJ0ID0gdGhpcy5vblJlc2l6ZVN0YXJ0LmJpbmQodGhpcyk7XHJcbiAgICB9XHJcblxyXG4gICAgY29tcG9uZW50RGlkTW91bnQoKSB7XHJcbiAgICAgICAgdGhpcy53aW5kb3cuY3VycmVudC5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vkb3duXCIsIHRoaXMub25SZXNpemVTdGFydCwgZmFsc2UpO1xyXG4gICAgICAgIHRoaXMudGl0bGViYXIuY3VycmVudC5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vkb3duXCIsIHRoaXMub25EcmFnU3RhcnQsIGZhbHNlKTtcclxuICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwibW91c2V1cFwiLCB0aGlzLm9uRHJhZ1N0b3AsIGZhbHNlKTtcclxuICAgIH1cclxuXHJcbiAgICBvblJlc2l6ZVN0YXJ0KCkge1xyXG4gICAgICAgIHRoaXMuY3VycmVudFdpZHRoID0gdGhpcy53aW5kb3cuY3VycmVudC5vZmZzZXRXaWR0aDtcclxuICAgICAgICB0aGlzLmN1cnJlbnRIZWlnaHQgPSB0aGlzLndpbmRvdy5jdXJyZW50Lm9mZnNldEhlaWdodDtcclxuICAgIH1cclxuXHJcbiAgICBvbkRyYWdTdG9wKCkge1xyXG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZW1vdmVcIiwgdGhpcy5vbkRyYWcsIHRydWUpO1xyXG4gICAgICAgIGNvbnN0IHdpZHRoID0gdGhpcy53aW5kb3cuY3VycmVudC5vZmZzZXRXaWR0aDtcclxuICAgICAgICBjb25zdCBoZWlnaHQgPSB0aGlzLndpbmRvdy5jdXJyZW50Lm9mZnNldEhlaWdodDtcclxuICAgICAgICBpZiAod2lkdGggIT0gdGhpcy5jdXJyZW50V2lkdGggfHwgaGVpZ2h0ICE9IHRoaXMuY3VycmVudEhlaWdodCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5wcm9wcy5vblJlc2l6ZSkgdGhpcy5wcm9wcy5vblJlc2l6ZSgpO1xyXG4gICAgICAgICAgICBjb25zdCBsZWZ0ID0gcGFyc2VJbnQodGhpcy53aW5kb3cuY3VycmVudC5zdHlsZS5sZWZ0KTtcclxuICAgICAgICAgICAgY29uc3QgdG9wID0gcGFyc2VJbnQodGhpcy53aW5kb3cuY3VycmVudC5zdHlsZS50b3ApO1xyXG4gICAgICAgICAgICBpZiAobGVmdCArIHdpZHRoID49IHRoaXMubWF4WCkgdGhpcy53aW5kb3cuY3VycmVudC5zdHlsZS53aWR0aCA9ICh0aGlzLm1heFggLSBsZWZ0KSArIFwicHhcIjtcclxuICAgICAgICAgICAgaWYgKHRvcCArIGhlaWdodCA+PSB0aGlzLm1heFkpIHRoaXMud2luZG93LmN1cnJlbnQuc3R5bGUuaGVpZ2h0ID0gKHRoaXMubWF4WSAtIHRvcCkgKyBcInB4XCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY3VycmVudFdpZHRoID0gd2lkdGg7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50SGVpZ2h0ID0gaGVpZ2h0O1xyXG4gICAgfVxyXG5cclxuICAgIG9uRHJhZ1N0YXJ0KGUpIHtcclxuICAgICAgICBjb25zdCBkaXYgPSB0aGlzLndpbmRvdy5jdXJyZW50O1xyXG4gICAgICAgIHRoaXMub2ZmWSA9IGUuY2xpZW50WSAtIHBhcnNlSW50KGRpdi5vZmZzZXRUb3ApO1xyXG4gICAgICAgIHRoaXMub2ZmWCA9IGUuY2xpZW50WCAtIHBhcnNlSW50KGRpdi5vZmZzZXRMZWZ0KTtcclxuICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vtb3ZlXCIsIHRoaXMub25EcmFnLCB0cnVlKTtcclxuICAgIH1cclxuXHJcbiAgICBvbkRyYWcoZSkge1xyXG4gICAgICAgIGNvbnN0IGRpdiA9IHRoaXMud2luZG93LmN1cnJlbnQ7XHJcbiAgICAgICAgbGV0IG5ld1RvcCA9IChlLmNsaWVudFkgLSB0aGlzLm9mZlkpO1xyXG4gICAgICAgIGlmIChuZXdUb3AgPD0gdGhpcy5taW5ZKSBuZXdUb3AgPSB0aGlzLm1pblk7XHJcbiAgICAgICAgaWYgKG5ld1RvcCArIHRoaXMuY3VycmVudEhlaWdodCA+PSB0aGlzLm1heFkpIG5ld1RvcCA9IHRoaXMubWF4WSAtIHRoaXMuY3VycmVudEhlaWdodDtcclxuXHJcbiAgICAgICAgbGV0IG5ld0xlZnQgPSAoZS5jbGllbnRYIC0gdGhpcy5vZmZYKTtcclxuICAgICAgICBpZiAobmV3TGVmdCA8PSB0aGlzLm1pblgpIG5ld0xlZnQgPSB0aGlzLm1pblg7XHJcbiAgICAgICAgaWYgKG5ld0xlZnQgKyB0aGlzLmN1cnJlbnRXaWR0aCA+PSB0aGlzLm1heFgpIG5ld0xlZnQgPSB0aGlzLm1heFggLSB0aGlzLmN1cnJlbnRXaWR0aDtcclxuXHJcbiAgICAgICAgZGl2LnN0eWxlLnRvcCA9IG5ld1RvcCArIFwicHhcIjtcclxuICAgICAgICBkaXYuc3R5bGUubGVmdCA9IG5ld0xlZnQgKyBcInB4XCI7XHJcbiAgICB9XHJcblxyXG4gICAgY29tcG9uZW50V2lsbFVubW91bnQoKSB7XHJcbiAgICAgICAgdGhpcy50aXRsZWJhci5jdXJyZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZWRvd25cIiwgdGhpcy5vbkRyYWdTdGFydCwgZmFsc2UpO1xyXG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZXVwXCIsIHRoaXMub25EcmFnU3RvcCwgZmFsc2UpO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICBjb25zdCB0b3AgPSB0aGlzLnByb3BzLmNlbnRlciA/IChTY3JlZW4uaGVpZ2h0IC8gMikgLSAodGhpcy5wcm9wcy5oZWlnaHQgLyAyKSA6IHRoaXMucHJvcHMudG9wO1xyXG4gICAgICAgIGNvbnN0IGxlZnQgPSB0aGlzLnByb3BzLmNlbnRlciA/IChTY3JlZW4ud2lkdGggLyAyKSAtICh0aGlzLnByb3BzLndpZHRoIC8gMikgOiB0aGlzLnByb3BzLmxlZnQgO1xyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKHRvcCwgbGVmdCk7XHJcbiAgICAgICAgY29uc3QgY2xhc3NOYW1lID0gYGZsb2F0aW5nLXdpbmRvdyR7YCAke3RoaXMucHJvcHMuY2xhc3NOYW1lfWAgfHwgXCJcIn0ke3RoaXMucHJvcHMucmVzaXphYmxlID8gXCIgcmVzaXphYmxlXCIgOiBcIlwifSR7dGhpcy5zdGF0ZS5tb2RhbE9wZW4gPyBcIiBtb2RhbC1vcGVuXCIgOiBcIlwifWA7XHJcbiAgICAgICAgY29uc3Qgc3R5bGVzID0ge2hlaWdodDogdGhpcy5wcm9wcy5oZWlnaHQsIHdpZHRoOiB0aGlzLnByb3BzLndpZHRoLCBsZWZ0OiBsZWZ0IHx8IDAsIHRvcDogdG9wIHx8IDB9O1xyXG4gICAgICAgIHJldHVybiA8ZGl2IGlkPXt0aGlzLnByb3BzLmlkfSBjbGFzc05hbWU9e2NsYXNzTmFtZX0gcmVmPXt0aGlzLndpbmRvd30gc3R5bGU9e3N0eWxlc30+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbG9hdGluZy13aW5kb3ctdGl0bGViYXJcIiByZWY9e3RoaXMudGl0bGViYXJ9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0aXRsZVwiPnt0aGlzLnByb3BzLnRpdGxlfTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbG9hdGluZy13aW5kb3ctYnV0dG9uc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJidXR0b24gbWF4aW1pemUtYnV0dG9uXCIgb25DbGljaz17dGhpcy5tYXhpbWl6ZX0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPE1heGltaXplSWNvbiBzaXplPVwiMThweFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYnV0dG9uIGNsb3NlLWJ1dHRvblwiIG9uQ2xpY2s9e3RoaXMuY2xvc2V9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDbG9zZUJ1dHRvbiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxvYXRpbmctd2luZG93LWNvbnRlbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3RoaXMucHJvcHMuY2hpbGRyZW59XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj47XHJcbiAgICB9XHJcblxyXG4gICAgbWF4aW1pemUoKSB7XHJcbiAgICAgICAgdGhpcy53aW5kb3cuY3VycmVudC5zdHlsZS53aWR0aCA9IFwiMTAwJVwiO1xyXG4gICAgICAgIHRoaXMud2luZG93LmN1cnJlbnQuc3R5bGUuaGVpZ2h0ID0gXCIxMDAlXCI7XHJcbiAgICAgICAgaWYgKHRoaXMucHJvcHMub25SZXNpemUpIHRoaXMucHJvcHMub25SZXNpemUoKTtcclxuXHJcbiAgICAgICAgY29uc3Qgd2lkdGggPSB0aGlzLndpbmRvdy5jdXJyZW50Lm9mZnNldFdpZHRoO1xyXG4gICAgICAgIGNvbnN0IGhlaWdodCA9IHRoaXMud2luZG93LmN1cnJlbnQub2Zmc2V0SGVpZ2h0O1xyXG4gICAgICAgIGNvbnN0IGxlZnQgPSBwYXJzZUludCh0aGlzLndpbmRvdy5jdXJyZW50LnN0eWxlLmxlZnQpO1xyXG4gICAgICAgIGNvbnN0IHRvcCA9IHBhcnNlSW50KHRoaXMud2luZG93LmN1cnJlbnQuc3R5bGUudG9wKTtcclxuXHJcbiAgICAgICAgY29uc3QgcmlnaHQgPSBsZWZ0ICsgd2lkdGg7XHJcbiAgICAgICAgY29uc3QgYm90dG9tID0gdG9wICsgaGVpZ2h0O1xyXG5cclxuICAgICAgICAvLyBQcmV2ZW50IGV4cGFuZGluZyBvZmYgdGhlIGJvdHRvbSBhbmQgcmlnaHQgYW5kIHJlYWRqdXN0IHBvc2l0aW9uXHJcbiAgICAgICAgaWYgKGJvdHRvbSA+IHRoaXMubWF4WSkgdGhpcy53aW5kb3cuY3VycmVudC5zdHlsZS50b3AgPSAodGhpcy5tYXhZIC0gaGVpZ2h0KSArIFwicHhcIjtcclxuICAgICAgICBpZiAocmlnaHQgPiB0aGlzLm1heFgpIHRoaXMud2luZG93LmN1cnJlbnQuc3R5bGUubGVmdCA9ICh0aGlzLm1heFggLSB3aWR0aCkgKyBcInB4XCI7XHJcblxyXG4gICAgICAgIGNvbnN0IG5ld0xlZnQgPSBwYXJzZUludCh0aGlzLndpbmRvdy5jdXJyZW50LnN0eWxlLmxlZnQpO1xyXG4gICAgICAgIGNvbnN0IG5ld1RvcCA9IHBhcnNlSW50KHRoaXMud2luZG93LmN1cnJlbnQuc3R5bGUudG9wKTtcclxuXHJcbiAgICAgICAgLy8gRm9yIHNtYWxsIHNjcmVlbnMgaXQncyBwb3NzaWJsZSB0aGlzIHB1c2hlcyB1cyBvZmYgdGhlIG90aGVyIGRpcmVjdGlvbi4uLiB3ZSBuZWVkIHRvIHJlYWRqdXN0IHNpemVcclxuICAgICAgICBpZiAobmV3VG9wIDwgdGhpcy5taW5ZKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGRpZmZlcmVuY2UgPSB0aGlzLm1pblkgLSBuZXdUb3A7XHJcbiAgICAgICAgICAgIHRoaXMud2luZG93LmN1cnJlbnQuc3R5bGUudG9wID0gdGhpcy5taW5ZICsgXCJweFwiO1xyXG4gICAgICAgICAgICB0aGlzLndpbmRvdy5jdXJyZW50LnN0eWxlLmhlaWdodCA9IChoZWlnaHQgLSBkaWZmZXJlbmNlKSArIFwicHhcIjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG5ld0xlZnQgPCB0aGlzLm1pblgpIHtcclxuICAgICAgICAgICAgY29uc3QgZGlmZmVyZW5jZSA9IHRoaXMubWluWCAtIG5ld0xlZnQ7XHJcbiAgICAgICAgICAgIHRoaXMud2luZG93LmN1cnJlbnQuc3R5bGUubGVmdCA9IHRoaXMubWluWCArIFwicHhcIjtcclxuICAgICAgICAgICAgdGhpcy53aW5kb3cuY3VycmVudC5zdHlsZS5oZWlnaHQgPSAod2lkdGggLSBkaWZmZXJlbmNlKSArIFwicHhcIjtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgY2xvc2UoKSB7XHJcbiAgICAgICAgbGV0IHNob3VsZENsb3NlID0gdHJ1ZTtcclxuICAgICAgICBjb25zdCBjb25maXJtQ2xvc2UgPSB0eXBlb2YodGhpcy5wcm9wcy5jb25maXJtQ2xvc2UpID09IFwiZnVuY3Rpb25cIiA/IHRoaXMucHJvcHMuY29uZmlybUNsb3NlKCkgOiB0aGlzLnByb3BzLmNvbmZpcm1DbG9zZTtcclxuICAgICAgICBpZiAoY29uZmlybUNsb3NlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe21vZGFsT3BlbjogdHJ1ZX0pO1xyXG4gICAgICAgICAgICBzaG91bGRDbG9zZSA9IGF3YWl0IHRoaXMuY29uZmlybUNsb3NlKCk7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe21vZGFsT3BlbjogZmFsc2V9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMucHJvcHMuY2xvc2UgJiYgc2hvdWxkQ2xvc2UpIHRoaXMucHJvcHMuY2xvc2UoKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25maXJtQ2xvc2UoKSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xyXG4gICAgICAgICAgICBNb2RhbHMuc2hvd0NvbmZpcm1hdGlvbk1vZGFsKFN0cmluZ3MuTW9kYWxzLmNvbmZpcm1BY3Rpb24sIHRoaXMucHJvcHMuY29uZmlybWF0aW9uVGV4dCwge1xyXG4gICAgICAgICAgICAgICAgZGFuZ2VyOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgY29uZmlybVRleHQ6IFN0cmluZ3MuTW9kYWxzLmNsb3NlLFxyXG4gICAgICAgICAgICAgICAgb25Db25maXJtOiAoKSA9PiB7cmVzb2x2ZSh0cnVlKTt9LFxyXG4gICAgICAgICAgICAgICAgb25DYW5jZWw6ICgpID0+IHtyZXNvbHZlKGZhbHNlKTt9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/floating/window.jsx\n");
/***/ }),
/***/ "./src/ui/floatingwindows.js":
/*!***********************************!*\
!*** ./src/ui/floatingwindows.js ***!
\***********************************/
/*! exports provided: default */
/***/ (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_modules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../modules/modules.js */ \"./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_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createRef();\n const container = /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_floating_container__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n ref: containerRef\n });\n const wrapped = _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_modules_modules_js__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_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"DOM\"].createElement(``);\n _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"DOMManager\"].bdBody.append(div);\n _modules_modules_js__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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvZmxvYXRpbmd3aW5kb3dzLmpzPzE3NDMiXSwibmFtZXMiOlsiRmxvYXRpbmdXaW5kb3dzIiwiaW5pdGlhbGl6ZSIsImNvbnRhaW5lclJlZiIsIlJlYWN0IiwiY3JlYXRlUmVmIiwiY29udGFpbmVyIiwid3JhcHBlZCIsImNyZWF0ZUVsZW1lbnQiLCJXZWJwYWNrTW9kdWxlcyIsImdldEJ5UHJvcHMiLCJBcHBMYXllclByb3ZpZGVyIiwicHJvcHMiLCJsYXllckNvbnRleHQiLCJQcm92aWRlciIsInZhbHVlIiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwiZGl2IiwiRE9NIiwiRE9NTWFuYWdlciIsImJkQm9keSIsImFwcGVuZCIsIlJlYWN0RE9NIiwicmVuZGVyIiwicmVmIiwib3BlbiIsIndpbmRvdyIsImN1cnJlbnQiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUVlLE1BQU1BLGVBQU4sQ0FBc0I7QUFDakMsU0FBT0MsVUFBUCxHQUFvQjtBQUNoQixVQUFNQyxZQUFZLEdBQUdDLHlEQUFLLENBQUNDLFNBQU4sRUFBckI7QUFDQSxVQUFNQyxTQUFTLGdCQUFHLHdFQUFDLDJEQUFEO0FBQXlCLFNBQUcsRUFBRUg7QUFBOUIsTUFBbEI7QUFDQSxVQUFNSSxPQUFPLEdBQUdILHlEQUFLLENBQUNJLGFBQU4sQ0FBb0JDLGtFQUFjLENBQUNDLFVBQWYsQ0FBMEIsMkJBQTFCLEVBQXVEQyxnQkFBdkQsR0FBMEVDLEtBQTFFLENBQWdGQyxZQUFoRixDQUE2RkMsUUFBakgsRUFBMkg7QUFBQ0MsV0FBSyxFQUFFLENBQUNDLFFBQVEsQ0FBQ0MsYUFBVCxDQUF1QixxQ0FBdkIsQ0FBRDtBQUFSLEtBQTNILEVBQXFNWCxTQUFyTSxDQUFoQjtBQUNBLFVBQU1ZLEdBQUcsR0FBR0MsdURBQUcsQ0FBQ1gsYUFBSixDQUFtQixtQ0FBbkIsQ0FBWjtBQUNBWSxrRUFBVSxDQUFDQyxNQUFYLENBQWtCQyxNQUFsQixDQUF5QkosR0FBekI7QUFDQUssZ0VBQVEsQ0FBQ0MsTUFBVCxDQUFnQmpCLE9BQWhCLEVBQXlCVyxHQUF6QjtBQUNBLFNBQUtPLEdBQUwsR0FBV3RCLFlBQVg7QUFDSDs7QUFFRCxTQUFPdUIsSUFBUCxDQUFZQyxNQUFaLEVBQW9CO0FBQ2hCLFFBQUksQ0FBQyxLQUFLRixHQUFWLEVBQWUsS0FBS3ZCLFVBQUw7QUFDZixXQUFPLEtBQUt1QixHQUFMLENBQVNHLE9BQVQsQ0FBaUJGLElBQWpCLENBQXNCQyxNQUF0QixDQUFQO0FBQ0g7O0FBZGdDIiwiZmlsZSI6Ii4vc3JjL3VpL2Zsb2F0aW5nd2luZG93cy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7V2VicGFja01vZHVsZXMsIFJlYWN0LCBSZWFjdERPTSwgRE9NLCBET01NYW5hZ2VyfSBmcm9tIFwibW9kdWxlc1wiO1xyXG5pbXBvcnQgRmxvYXRpbmdXaW5kb3dDb250YWluZXIgZnJvbSBcIi4vZmxvYXRpbmcvY29udGFpbmVyXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBGbG9hdGluZ1dpbmRvd3Mge1xyXG4gICAgc3RhdGljIGluaXRpYWxpemUoKSB7XHJcbiAgICAgICAgY29uc3QgY29udGFpbmVyUmVmID0gUmVhY3QuY3JlYXRlUmVmKCk7XHJcbiAgICAgICAgY29uc3QgY29udGFpbmVyID0gPEZsb2F0aW5nV2luZG93Q29udGFpbmVyIHJlZj17Y29udGFpbmVyUmVmfSAvPjtcclxuICAgICAgICBjb25zdCB3cmFwcGVkID0gUmVhY3QuY3JlYXRlRWxlbWVudChXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwiQXBwUmVmZXJlbmNlUG9zaXRpb25MYXllclwiKS5BcHBMYXllclByb3ZpZGVyKCkucHJvcHMubGF5ZXJDb250ZXh0LlByb3ZpZGVyLCB7dmFsdWU6IFtkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI2FwcC1tb3VudCA+IC5sYXllckNvbnRhaW5lci15cWFGY0tcIildfSwgY29udGFpbmVyKTtcclxuICAgICAgICBjb25zdCBkaXYgPSBET00uY3JlYXRlRWxlbWVudChgPGRpdiBpZD1cImZsb2F0aW5nLXdpbmRvd3MtbGF5ZXJcIj5gKTtcclxuICAgICAgICBET01NYW5hZ2VyLmJkQm9keS5hcHBlbmQoZGl2KTtcclxuICAgICAgICBSZWFjdERPTS5yZW5kZXIod3JhcHBlZCwgZGl2KTtcclxuICAgICAgICB0aGlzLnJlZiA9IGNvbnRhaW5lclJlZjtcclxuICAgIH1cclxuICAgIFxyXG4gICAgc3RhdGljIG9wZW4od2luZG93KSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnJlZikgdGhpcy5pbml0aWFsaXplKCk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucmVmLmN1cnJlbnQub3Blbih3aW5kb3cpO1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/floatingwindows.js\n");
/***/ }),
/***/ "./src/ui/icons/bdlogo.jsx":
/*!*********************************!*\
!*** ./src/ui/icons/bdlogo.jsx ***!
\*********************************/
/*! exports provided: default */
/***/ (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_modules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../modules/modules.js */ \"./src/modules/modules.js\");\n\nclass BDLogo extends _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n return /*#__PURE__*/_modules_modules_js__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_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"metadata\", null), /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"defs\", null, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"filter\", {\n id: \"shadow1\"\n }, /*#__PURE__*/_modules_modules_js__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_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"filter\", {\n id: \"shadow2\"\n }, /*#__PURE__*/_modules_modules_js__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_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"filter\", {\n id: \"shadow3\"\n }, /*#__PURE__*/_modules_modules_js__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_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"g\", null, /*#__PURE__*/_modules_modules_js__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_modules_js__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_modules_js__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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvaWNvbnMvYmRsb2dvLmpzeD9iZDg5Il0sIm5hbWVzIjpbIkJETG9nbyIsIlJlYWN0IiwiQ29tcG9uZW50IiwicmVuZGVyIiwicHJvcHMiLCJjbGFzc05hbWUiLCJzaXplIiwiZmlsbFJ1bGUiLCJjbGlwUnVsZSIsInN0cm9rZUxpbmVjYXAiLCJzdHJva2VMaW5lam9pbiIsImZpbHRlciJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFFZSxNQUFNQSxNQUFOLFNBQXFCQyx5REFBSyxDQUFDQyxTQUEzQixDQUFxQztBQUNoREMsUUFBTSxHQUFHO0FBQ0wsd0JBQU87QUFBSyxlQUFTLEVBQUUsYUFBYSxLQUFLQyxLQUFMLENBQVdDLFNBQXhDO0FBQW1ELFlBQU0sRUFBQyxNQUExRDtBQUFpRSxXQUFLLEVBQUUsS0FBS0QsS0FBTCxDQUFXRSxJQUFYLElBQW1CLE1BQTNGO0FBQW1HLGFBQU8sRUFBQyxlQUEzRztBQUEySCxXQUFLLEVBQUU7QUFBQ0MsZ0JBQVEsRUFBRSxTQUFYO0FBQXNCQyxnQkFBUSxFQUFFLFNBQWhDO0FBQTJDQyxxQkFBYSxFQUFFLE9BQTFEO0FBQW1FQyxzQkFBYyxFQUFFO0FBQW5GO0FBQWxJLG9CQUNILHlGQURHLGVBRUgsbUdBQ0k7QUFBUSxRQUFFLEVBQUM7QUFBWCxvQkFBcUI7QUFBYyxRQUFFLEVBQUMsSUFBakI7QUFBc0IsUUFBRSxFQUFDLEdBQXpCO0FBQTZCLGtCQUFZLEVBQUMsSUFBMUM7QUFBK0MsZ0JBQVUsRUFBQztBQUExRCxNQUFyQixDQURKLGVBRUk7QUFBUSxRQUFFLEVBQUM7QUFBWCxvQkFBcUI7QUFBYyxRQUFFLEVBQUMsSUFBakI7QUFBc0IsUUFBRSxFQUFDLEdBQXpCO0FBQTZCLGtCQUFZLEVBQUMsSUFBMUM7QUFBK0MsZ0JBQVUsRUFBQztBQUExRCxNQUFyQixDQUZKLGVBR0k7QUFBUSxRQUFFLEVBQUM7QUFBWCxvQkFBcUI7QUFBYyxRQUFFLEVBQUMsSUFBakI7QUFBc0IsUUFBRSxFQUFDLEdBQXpCO0FBQTZCLGtCQUFZLEVBQUMsSUFBMUM7QUFBK0MsZ0JBQVUsRUFBQztBQUExRCxNQUFyQixDQUhKLENBRkcsZUFPSCxnR0FDSTtBQUFNLFdBQUssRUFBRTtBQUFDQyxjQUFNLEVBQUU7QUFBVCxPQUFiO0FBQXdDLFVBQUksRUFBQyxTQUE3QztBQUF1RCxhQUFPLEVBQUMsR0FBL0Q7QUFBbUUsT0FBQyxFQUFDO0FBQXJFLE1BREosZUFFSTtBQUFNLFdBQUssRUFBRTtBQUFDQSxjQUFNLEVBQUU7QUFBVCxPQUFiO0FBQXdDLFVBQUksRUFBQyxTQUE3QztBQUF1RCxhQUFPLEVBQUMsR0FBL0Q7QUFBbUUsT0FBQyxFQUFDO0FBQXJFLE1BRkosZUFHSTtBQUFNLFdBQUssRUFBRTtBQUFDQSxjQUFNLEVBQUU7QUFBVCxPQUFiO0FBQXdDLFVBQUksRUFBQyxTQUE3QztBQUF1RCxhQUFPLEVBQUMsR0FBL0Q7QUFBbUUsT0FBQyxFQUFDO0FBQXJFLE1BSEosQ0FQRyxDQUFQO0FBYUg7O0FBZitDIiwiZmlsZSI6Ii4vc3JjL3VpL2ljb25zL2JkbG9nby5qc3guanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlYWN0fSBmcm9tIFwibW9kdWxlc1wiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQkRMb2dvIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICByZXR1cm4gPHN2ZyBjbGFzc05hbWU9e1wiYmQtbG9nbyBcIiArIHRoaXMucHJvcHMuY2xhc3NOYW1lfSBoZWlnaHQ9XCIxMDAlXCIgd2lkdGg9e3RoaXMucHJvcHMuc2l6ZSB8fCBcIjE2cHhcIn0gdmlld0JveD1cIjAgMCAyMDAwIDIwMDBcIiBzdHlsZT17e2ZpbGxSdWxlOiBcImV2ZW5vZGRcIiwgY2xpcFJ1bGU6IFwiZXZlbm9kZFwiLCBzdHJva2VMaW5lY2FwOiBcInJvdW5kXCIsIHN0cm9rZUxpbmVqb2luOiBcInJvdW5kXCJ9fT5cclxuICAgICAgICAgICAgPG1ldGFkYXRhIC8+XHJcbiAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgPGZpbHRlciBpZD1cInNoYWRvdzFcIj48ZmVEcm9wU2hhZG93IGR4PVwiMjBcIiBkeT1cIjBcIiBzdGREZXZpYXRpb249XCIyMFwiIGZsb29kQ29sb3I9XCJyZ2JhKDAsMCwwLDAuMzUpXCIgLz48L2ZpbHRlcj5cclxuICAgICAgICAgICAgICAgIDxmaWx0ZXIgaWQ9XCJzaGFkb3cyXCI+PGZlRHJvcFNoYWRvdyBkeD1cIjE1XCIgZHk9XCIwXCIgc3RkRGV2aWF0aW9uPVwiMjBcIiBmbG9vZENvbG9yPVwicmdiYSgyNTUsMjU1LDI1NSwwLjE1KVwiIC8+PC9maWx0ZXI+XHJcbiAgICAgICAgICAgICAgICA8ZmlsdGVyIGlkPVwic2hhZG93M1wiPjxmZURyb3BTaGFkb3cgZHg9XCIxMFwiIGR5PVwiMFwiIHN0ZERldmlhdGlvbj1cIjIwXCIgZmxvb2RDb2xvcj1cInJnYmEoMCwwLDAsMC4zNSlcIiAvPjwvZmlsdGVyPlxyXG4gICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgIDxnPlxyXG4gICAgICAgICAgICAgICAgPHBhdGggc3R5bGU9e3tmaWx0ZXI6IFwidXJsKCNzaGFkb3czKVwifX0gZmlsbD1cIiMxNzE3MTdcIiBvcGFjaXR5PVwiMVwiIGQ9XCJNMTE5NS40NCsxMzUuNDQyTDExOTUuNDQrMTM1LjQ0Mkw5OTcuNisxMzYuNDQyQzEwMjQuMisxNDkuNzQyKzExNzAuMzQrMTYzLjU0MisxMTkzLjY0KzE3OS43NDJDMTI2NC4zNCsyMjguODQyKzEzMTkuNzQrMjkxLjI0MisxMzU4LjI0KzM2NS4wNDJDMTM5OC4xNCs0NDEuNjQyKzE0MTkuNzQrNTMwLjY0MisxNDIyLjU0KzYyOS42NDJMMTQyMi41NCs2MzAuODQyTDE0MjIuNTQrNjMyLjA0MkMxNDIyLjU0Kzc3My4xNDIrMTQyMi41NCsxMjI4LjE0KzE0MjIuNTQrMTM2OS4xNEwxNDIyLjU0KzEzNzAuMzRMMTQyMi41NCsxMzcxLjU0QzE0MTkuODQrMTQ3MC41NCsxMzk4LjI0KzE1NTkuNTQrMTM1OC4yNCsxNjM2LjE0QzEzMTkuNzQrMTcwOS45NCsxMjY0LjQ0KzE3NzIuMzQrMTE5My42NCsxODIxLjQ0QzExNzEuMDQrMTgzNy4xNCsxMDI1LjcrMTg1MC41NCsxMDAwKzE4NjMuNTRMMTE5My41NCsxODY0LjU0QzE1MzkuNzQrMTg2Ni40NCsxODY0LjU0KzE2OTMuMzQrMTg2NC41NCsxMjk2LjY0TDE4NjQuNTQrNzE2Ljk0MkMxODY2LjQ0KzMxMi40NDIrMTU0MS42NCsxMzUuNDQyKzExOTUuNDQrMTM1LjQ0MlpcIiAvPlxyXG4gICAgICAgICAgICAgICAgPHBhdGggc3R5bGU9e3tmaWx0ZXI6IFwidXJsKCNzaGFkb3cyKVwifX0gZmlsbD1cIiMzRTgyRTVcIiBvcGFjaXR5PVwiMVwiIGQ9XCJNMTY5NS41NCs2MzEuNDQyQzE2ODUuODQrMjc4LjA0MisxNDA5LjM0KzEzNS40NDIrMTA1Mi45NCsxMzUuNDQyTDM2MS43NCsxMzYuNDQyTDgwMy43NCs0OTAuNDQyTDEwNjAuNzQrNDkwLjQ0MkMxMzM1LjI0KzQ5MC40NDIrMTMzNS4yNCs4MzUuMzQyKzEwNjAuNzQrODM1LjM0MkwxMDYwLjc0KzExNjQuODRDMTE1MC4yMisxMTY0Ljg0KzEyMTAuNTMrMTIwMS40OCsxMjQxLjY4KzEyNTAuODdDMTMwNi4wNysxMzUzKzEyNDUuNzYrMTUwOS42NCsxMDYwLjc0KzE1MDkuNjRMMzYxLjc0KzE4NjMuNTRMMTA1Mi45NCsxODY0LjU0QzE0MDkuMjQrMTg2NC41NCsxNjg1Ljc0KzE3MjEuOTQrMTY5NS41NCsxMzY4LjU0QzE2OTUuNTQrMTIwNS45NCsxNjUxLjA0KzEwODQuNDQrMTU3Mi42NCs5OTkuOTQyQzE2NTEuMDQrOTE1LjU0MisxNjk1LjU0Kzc5NC4wNDIrMTY5NS41NCs2MzEuNDQyWlwiIC8+XHJcbiAgICAgICAgICAgICAgICA8cGF0aCBzdHlsZT17e2ZpbHRlcjogXCJ1cmwoI3NoYWRvdzEpXCJ9fSBmaWxsPVwiI0ZGRkZGRlwiIG9wYWNpdHk9XCIxXCIgZD1cIk0xNDY5LjI1KzYzMS40NDJDMTQ1OS41NSsyNzguMDQyKzExODMuMDUrMTM1LjQ0Mis4MjYuNjUrMTM1LjQ0MkwxMzUuNDUrMTM1LjQ0MkwxMzUuNDUrMTAwNEMxMzUuNDUrMTAwNCsxMzUuNDI3KzEyNTUuMjErMzU1LjYyNisxMjU1LjIxQzU3NS44MjUrMTI1NS4yMSs1NzUuODQ4KzEwMDQrNTc1Ljg0OCsxMDA0TDU3Ny40NSs0OTAuNDQyTDgzNC40NSs0OTAuNDQyQzExMDguOTUrNDkwLjQ0MisxMTA4Ljk1KzgzNS4zNDIrODM0LjQ1KzgzNS4zNDJMNjY0LjY1KzgzNS4zNDJMNjY0LjY1KzExNjQuODRMODM0LjQ1KzExNjQuODRDOTIzLjkzMisxMTY0Ljg0Kzk4NC4yNDQrMTIwMS40OCsxMDE1LjM5KzEyNTAuODdDMTA3OS43OCsxMzUzKzEwMTkuNDcrMTUwOS42NCs4MzQuNDUrMTUwOS42NEwxMzUuNDUrMTUwOS42NEwxMzUuNDUrMTg2NC41NEw4MjYuNjUrMTg2NC41NEMxMTgyLjk1KzE4NjQuNTQrMTQ1OS40NSsxNzIxLjk0KzE0NjkuMjUrMTM2OC41NEMxNDY5LjI1KzEyMDUuOTQrMTQyNC43NSsxMDg0LjQ0KzEzNDYuMzUrOTk5Ljk0MkMxNDI0Ljc1KzkxNS41NDIrMTQ2OS4yNSs3OTQuMDQyKzE0NjkuMjUrNjMxLjQ0MlpcIiAvPlxyXG4gICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgPC9zdmc+O1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/icons/bdlogo.jsx\n");
/***/ }),
/***/ "./src/ui/icons/close.jsx":
/*!********************************!*\
!*** ./src/ui/icons/close.jsx ***!
\********************************/
/*! exports provided: default */
/***/ (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_modules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../modules/modules.js */ \"./src/modules/modules.js\");\n\nclass CloseButton extends _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n return /*#__PURE__*/_modules_modules_js__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_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"g\", {\n className: \"background\",\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M0 0h12v12H0\"\n }), /*#__PURE__*/_modules_modules_js__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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvaWNvbnMvY2xvc2UuanN4P2JjZTEiXSwibmFtZXMiOlsiQ2xvc2VCdXR0b24iLCJSZWFjdCIsIkNvbXBvbmVudCIsInJlbmRlciIsIndpZHRoIiwiaGVpZ2h0Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVlLE1BQU1BLFdBQU4sU0FBMEJDLHlEQUFLLENBQUNDLFNBQWhDLENBQTBDO0FBQ3JEQyxRQUFNLEdBQUc7QUFDTCx3QkFBTztBQUFLLGFBQU8sRUFBQyxXQUFiO0FBQXlCLFdBQUssRUFBRTtBQUFDQyxhQUFLLEVBQUUsTUFBUjtBQUFnQkMsY0FBTSxFQUFFO0FBQXhCO0FBQWhDLG9CQUNIO0FBQUcsZUFBUyxFQUFDLFlBQWI7QUFBMEIsVUFBSSxFQUFDLE1BQS9CO0FBQXNDLGNBQVEsRUFBQztBQUEvQyxvQkFDSTtBQUFNLE9BQUMsRUFBQztBQUFSLE1BREosZUFFSTtBQUFNLGVBQVMsRUFBQyxNQUFoQjtBQUF1QixVQUFJLEVBQUMsU0FBNUI7QUFBc0MsT0FBQyxFQUFDO0FBQXhDLE1BRkosQ0FERyxDQUFQO0FBTUg7O0FBUm9EIiwiZmlsZSI6Ii4vc3JjL3VpL2ljb25zL2Nsb3NlLmpzeC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhY3R9IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDbG9zZUJ1dHRvbiBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XHJcbiAgICByZW5kZXIoKSB7XHJcbiAgICAgICAgcmV0dXJuIDxzdmcgdmlld0JveD1cIjAgMCAxMiAxMlwiIHN0eWxlPXt7d2lkdGg6IFwiMThweFwiLCBoZWlnaHQ6IFwiMThweFwifX0+XHJcbiAgICAgICAgICAgIDxnIGNsYXNzTmFtZT1cImJhY2tncm91bmRcIiBmaWxsPVwibm9uZVwiIGZpbGxSdWxlPVwiZXZlbm9kZFwiPlxyXG4gICAgICAgICAgICAgICAgPHBhdGggZD1cIk0wIDBoMTJ2MTJIMFwiIC8+XHJcbiAgICAgICAgICAgICAgICA8cGF0aCBjbGFzc05hbWU9XCJmaWxsXCIgZmlsbD1cIiNkY2RkZGVcIiBkPVwiTTkuNSAzLjIwNUw4Ljc5NSAyLjUgNiA1LjI5NSAzLjIwNSAyLjVsLS43MDUuNzA1TDUuMjk1IDYgMi41IDguNzk1bC43MDUuNzA1TDYgNi43MDUgOC43OTUgOS41bC43MDUtLjcwNUw2LjcwNSA2XCIgLz5cclxuICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgIDwvc3ZnPjtcclxuICAgIH1cclxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/icons/close.jsx\n");
/***/ }),
/***/ "./src/ui/icons/cog.jsx":
/*!******************************!*\
!*** ./src/ui/icons/cog.jsx ***!
\******************************/
/*! exports provided: default */
/***/ (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_modules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../modules/modules.js */ \"./src/modules/modules.js\");\n\nclass Cog extends _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n const size = this.props.size || \"20px\";\n return /*#__PURE__*/_modules_modules_js__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_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n fill: \"none\",\n d: \"M0 0h20v20H0V0z\"\n }), /*#__PURE__*/_modules_modules_js__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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvaWNvbnMvY29nLmpzeD8wYWJkIl0sIm5hbWVzIjpbIkNvZyIsIlJlYWN0IiwiQ29tcG9uZW50IiwicmVuZGVyIiwic2l6ZSIsInByb3BzIiwid2lkdGgiLCJoZWlnaHQiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRWUsTUFBTUEsR0FBTixTQUFrQkMseURBQUssQ0FBQ0MsU0FBeEIsQ0FBa0M7QUFDN0NDLFFBQU0sR0FBRztBQUNMLFVBQU1DLElBQUksR0FBRyxLQUFLQyxLQUFMLENBQVdELElBQVgsSUFBbUIsTUFBaEM7QUFDQSx3QkFBTztBQUFLLGFBQU8sRUFBQyxXQUFiO0FBQXlCLFdBQUssRUFBRTtBQUFDRSxhQUFLLEVBQUVGLElBQVI7QUFBY0csY0FBTSxFQUFFSDtBQUF0QjtBQUFoQyxvQkFDQztBQUFNLFVBQUksRUFBQyxNQUFYO0FBQWtCLE9BQUMsRUFBQztBQUFwQixNQURELGVBRUM7QUFBTSxPQUFDLEVBQUM7QUFBUixNQUZELENBQVA7QUFJSDs7QUFQNEMiLCJmaWxlIjoiLi9zcmMvdWkvaWNvbnMvY29nLmpzeC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhY3R9IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb2cgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIGNvbnN0IHNpemUgPSB0aGlzLnByb3BzLnNpemUgfHwgXCIyMHB4XCI7XHJcbiAgICAgICAgcmV0dXJuIDxzdmcgdmlld0JveD1cIjAgMCAyMCAyMFwiIHN0eWxlPXt7d2lkdGg6IHNpemUsIGhlaWdodDogc2l6ZX19PlxyXG4gICAgICAgICAgICAgICAgPHBhdGggZmlsbD1cIm5vbmVcIiBkPVwiTTAgMGgyMHYyMEgwVjB6XCIgLz5cclxuICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTUuOTUgMTAuNzhjLjAzLS4yNS4wNS0uNTEuMDUtLjc4cy0uMDItLjUzLS4wNi0uNzhsMS42OS0xLjMyYy4xNS0uMTIuMTktLjM0LjEtLjUxbC0xLjYtMi43N2MtLjEtLjE4LS4zMS0uMjQtLjQ5LS4xOGwtMS45OS44Yy0uNDItLjMyLS44Ni0uNTgtMS4zNS0uNzhMMTIgMi4zNGMtLjAzLS4yLS4yLS4zNC0uNC0uMzRIOC40Yy0uMiAwLS4zNi4xNC0uMzkuMzRsLS4zIDIuMTJjLS40OS4yLS45NC40Ny0xLjM1Ljc4bC0xLjk5LS44Yy0uMTgtLjA3LS4zOSAwLS40OS4xOGwtMS42IDIuNzdjLS4xLjE4LS4wNi4zOS4xLjUxbDEuNjkgMS4zMmMtLjA0LjI1LS4wNy41Mi0uMDcuNzhzLjAyLjUzLjA2Ljc4TDIuMzcgMTIuMWMtLjE1LjEyLS4xOS4zNC0uMS41MWwxLjYgMi43N2MuMS4xOC4zMS4yNC40OS4xOGwxLjk5LS44Yy40Mi4zMi44Ni41OCAxLjM1Ljc4bC4zIDIuMTJjLjA0LjIuMi4zNC40LjM0aDMuMmMuMiAwIC4zNy0uMTQuMzktLjM0bC4zLTIuMTJjLjQ5LS4yLjk0LS40NyAxLjM1LS43OGwxLjk5LjhjLjE4LjA3LjM5IDAgLjQ5LS4xOGwxLjYtMi43N2MuMS0uMTguMDYtLjM5LS4xLS41MWwtMS42Ny0xLjMyek0xMCAxM2MtMS42NSAwLTMtMS4zNS0zLTNzMS4zNS0zIDMtMyAzIDEuMzUgMyAzLTEuMzUgMy0zIDN6XCIgLz5cclxuICAgICAgICAgICAgICAgPC9zdmc+O1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/icons/cog.jsx\n");
/***/ }),
/***/ "./src/ui/icons/delete.jsx":
/*!*********************************!*\
!*** ./src/ui/icons/delete.jsx ***!
\*********************************/
/*! exports provided: default */
/***/ (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_modules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../modules/modules.js */ \"./src/modules/modules.js\");\n\nclass Delete extends _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n const size = this.props.size || \"24px\";\n return /*#__PURE__*/_modules_modules_js__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_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n fill: \"none\",\n d: \"M0 0h24v24H0V0z\"\n }), /*#__PURE__*/_modules_modules_js__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_modules_js__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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvaWNvbnMvZGVsZXRlLmpzeD81YjBiIl0sIm5hbWVzIjpbIkRlbGV0ZSIsIlJlYWN0IiwiQ29tcG9uZW50IiwicmVuZGVyIiwic2l6ZSIsInByb3BzIiwiY2xhc3NOYW1lIiwid2lkdGgiLCJoZWlnaHQiLCJvbkNsaWNrIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVlLE1BQU1BLE1BQU4sU0FBcUJDLHlEQUFLLENBQUNDLFNBQTNCLENBQXFDO0FBQ2hEQyxRQUFNLEdBQUc7QUFDTCxVQUFNQyxJQUFJLEdBQUcsS0FBS0MsS0FBTCxDQUFXRCxJQUFYLElBQW1CLE1BQWhDO0FBQ0Esd0JBQU87QUFBSyxlQUFTLEVBQUUsS0FBS0MsS0FBTCxDQUFXQyxTQUFYLElBQXdCLEVBQXhDO0FBQTRDLFVBQUksRUFBQyxTQUFqRDtBQUEyRCxhQUFPLEVBQUMsV0FBbkU7QUFBK0UsV0FBSyxFQUFFO0FBQUNDLGFBQUssRUFBRUgsSUFBUjtBQUFjSSxjQUFNLEVBQUVKO0FBQXRCLE9BQXRGO0FBQW1ILGFBQU8sRUFBRSxLQUFLQyxLQUFMLENBQVdJO0FBQXZJLG9CQUNLO0FBQU0sVUFBSSxFQUFDLE1BQVg7QUFBa0IsT0FBQyxFQUFDO0FBQXBCLE1BREwsZUFDNEM7QUFBTSxPQUFDLEVBQUM7QUFBUixNQUQ1QyxlQUVLO0FBQU0sVUFBSSxFQUFDLE1BQVg7QUFBa0IsT0FBQyxFQUFDO0FBQXBCLE1BRkwsQ0FBUDtBQUlIOztBQVArQyIsImZpbGUiOiIuL3NyYy91aS9pY29ucy9kZWxldGUuanN4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtSZWFjdH0gZnJvbSBcIm1vZHVsZXNcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERlbGV0ZSBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XHJcbiAgICByZW5kZXIoKSB7XHJcbiAgICAgICAgY29uc3Qgc2l6ZSA9IHRoaXMucHJvcHMuc2l6ZSB8fCBcIjI0cHhcIjtcclxuICAgICAgICByZXR1cm4gPHN2ZyBjbGFzc05hbWU9e3RoaXMucHJvcHMuY2xhc3NOYW1lIHx8IFwiXCJ9IGZpbGw9XCIjRkZGRkZGXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIHN0eWxlPXt7d2lkdGg6IHNpemUsIGhlaWdodDogc2l6ZX19IG9uQ2xpY2s9e3RoaXMucHJvcHMub25DbGlja30+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbD1cIm5vbmVcIiBkPVwiTTAgMGgyNHYyNEgwVjB6XCIvPjxwYXRoIGQ9XCJNNiAxOWMwIDEuMS45IDIgMiAyaDhjMS4xIDAgMi0uOSAyLTJWN0g2djEyem0yLjQ2LTcuMTJsMS40MS0xLjQxTDEyIDEyLjU5bDIuMTItMi4xMiAxLjQxIDEuNDFMMTMuNDEgMTRsMi4xMiAyLjEyLTEuNDEgMS40MUwxMiAxNS40MWwtMi4xMiAyLjEyLTEuNDEtMS40MUwxMC41OSAxNGwtMi4xMy0yLjEyek0xNS41IDRsLTEtMWgtNWwtMSAxSDV2MmgxNFY0elwiLz5cclxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsPVwibm9uZVwiIGQ9XCJNMCAwaDI0djI0SDB6XCIvPlxyXG4gICAgICAgICAgICAgICAgPC9zdmc+O1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/icons/delete.jsx\n");
/***/ }),
/***/ "./src/ui/icons/detach.jsx":
/*!*********************************!*\
!*** ./src/ui/icons/detach.jsx ***!
\*********************************/
/*! exports provided: default */
/***/ (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_modules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../modules/modules.js */ \"./src/modules/modules.js\");\n\nclass Detach extends _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n const size = this.props.size || \"24px\";\n return /*#__PURE__*/_modules_modules_js__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_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M0 0h24v24H0z\",\n fill: \"none\"\n }), /*#__PURE__*/_modules_modules_js__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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvaWNvbnMvZGV0YWNoLmpzeD8zY2VhIl0sIm5hbWVzIjpbIkRldGFjaCIsIlJlYWN0IiwiQ29tcG9uZW50IiwicmVuZGVyIiwic2l6ZSIsInByb3BzIiwid2lkdGgiLCJoZWlnaHQiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRWUsTUFBTUEsTUFBTixTQUFxQkMseURBQUssQ0FBQ0MsU0FBM0IsQ0FBcUM7QUFDaERDLFFBQU0sR0FBRztBQUNMLFVBQU1DLElBQUksR0FBRyxLQUFLQyxLQUFMLENBQVdELElBQVgsSUFBbUIsTUFBaEM7QUFDQSx3QkFBTztBQUFLLGFBQU8sRUFBQyxXQUFiO0FBQXlCLFdBQUssRUFBRTtBQUFDRSxhQUFLLEVBQUVGLElBQVI7QUFBY0csY0FBTSxFQUFFSDtBQUF0QjtBQUFoQyxvQkFDQztBQUFNLE9BQUMsRUFBQyxlQUFSO0FBQXdCLFVBQUksRUFBQztBQUE3QixNQURELGVBRUM7QUFBTSxPQUFDLEVBQUM7QUFBUixNQUZELENBQVA7QUFJSDs7QUFQK0MiLCJmaWxlIjoiLi9zcmMvdWkvaWNvbnMvZGV0YWNoLmpzeC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhY3R9IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEZXRhY2ggZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIGNvbnN0IHNpemUgPSB0aGlzLnByb3BzLnNpemUgfHwgXCIyNHB4XCI7XHJcbiAgICAgICAgcmV0dXJuIDxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiIHN0eWxlPXt7d2lkdGg6IHNpemUsIGhlaWdodDogc2l6ZX19PlxyXG4gICAgICAgICAgICAgICAgPHBhdGggZD1cIk0wIDBoMjR2MjRIMHpcIiBmaWxsPVwibm9uZVwiIC8+XHJcbiAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE5IDE5SDVWNWg3VjNINWMtMS4xMSAwLTIgLjktMiAydjE0YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0ydi03aC0ydjd6TTE0IDN2MmgzLjU5bC05LjgzIDkuODMgMS40MSAxLjQxTDE5IDYuNDFWMTBoMlYzaC03elwiIC8+XHJcbiAgICAgICAgICAgICAgIDwvc3ZnPjtcclxuICAgIH1cclxufSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/icons/detach.jsx\n");
/***/ }),
/***/ "./src/ui/icons/downarrow.jsx":
/*!************************************!*\
!*** ./src/ui/icons/downarrow.jsx ***!
\************************************/
/*! exports provided: default */
/***/ (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_modules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../modules/modules.js */ \"./src/modules/modules.js\");\n\nclass DownArrow extends _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n const size = this.props.size || \"16px\";\n return /*#__PURE__*/_modules_modules_js__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_modules_js__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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvaWNvbnMvZG93bmFycm93LmpzeD8yMWY1Il0sIm5hbWVzIjpbIkRvd25BcnJvdyIsIlJlYWN0IiwiQ29tcG9uZW50IiwicmVuZGVyIiwic2l6ZSIsInByb3BzIiwiY2xhc3NOYW1lIiwid2lkdGgiLCJoZWlnaHQiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRWUsTUFBTUEsU0FBTixTQUF3QkMseURBQUssQ0FBQ0MsU0FBOUIsQ0FBd0M7QUFDbkRDLFFBQU0sR0FBRztBQUNMLFVBQU1DLElBQUksR0FBRyxLQUFLQyxLQUFMLENBQVdELElBQVgsSUFBbUIsTUFBaEM7QUFDQSx3QkFBTztBQUFLLGVBQVMsRUFBRSxLQUFLQyxLQUFMLENBQVdDLFNBQVgsSUFBd0IsRUFBeEM7QUFBNEMsVUFBSSxFQUFDLFNBQWpEO0FBQTJELGFBQU8sRUFBQyxXQUFuRTtBQUErRSxXQUFLLEVBQUU7QUFBQ0MsYUFBSyxFQUFFSCxJQUFSO0FBQWNJLGNBQU0sRUFBRUo7QUFBdEI7QUFBdEYsb0JBQ0s7QUFBTSxPQUFDLEVBQUM7QUFBUixNQURMLENBQVA7QUFHSDs7QUFOa0QiLCJmaWxlIjoiLi9zcmMvdWkvaWNvbnMvZG93bmFycm93LmpzeC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhY3R9IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEb3duQXJyb3cgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIGNvbnN0IHNpemUgPSB0aGlzLnByb3BzLnNpemUgfHwgXCIxNnB4XCI7XHJcbiAgICAgICAgcmV0dXJuIDxzdmcgY2xhc3NOYW1lPXt0aGlzLnByb3BzLmNsYXNzTmFtZSB8fCBcIlwifSBmaWxsPVwiI0ZGRkZGRlwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBzdHlsZT17e3dpZHRoOiBzaXplLCBoZWlnaHQ6IHNpemV9fT5cclxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTguMTIgOS4yOUwxMiAxMy4xN2wzLjg4LTMuODhjLjM5LS4zOSAxLjAyLS4zOSAxLjQxIDAgLjM5LjM5LjM5IDEuMDIgMCAxLjQxbC00LjU5IDQuNTljLS4zOS4zOS0xLjAyLjM5LTEuNDEgMEw2LjcgMTAuN2MtLjM5LS4zOS0uMzktMS4wMiAwLTEuNDEuMzktLjM4IDEuMDMtLjM5IDEuNDIgMHpcIi8+XHJcbiAgICAgICAgICAgICAgICA8L3N2Zz47XHJcbiAgICB9XHJcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/ui/icons/downarrow.jsx\n");
/***/ }),
/***/ "./src/ui/icons/edit.jsx":
/*!*******************************!*\
!*** ./src/ui/icons/edit.jsx ***!
\*******************************/
/*! exports provided: default */
/***/ (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_modules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../modules/modules.js */ \"./src/modules/modules.js\");\n\nclass Edit extends _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n const size = this.props.size || \"24px\";\n return /*#__PURE__*/_modules_modules_js__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_modules_js__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_modules_js__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/NDZlMyJdLCJuYW1lcyI6WyJFZGl0IiwiUmVhY3QiLCJDb21wb25lbnQiLCJyZW5kZXIiLCJzaXplIiwicHJvcHMiLCJ3aWR0aCIsImhlaWdodCIsIm9uQ2xpY2siXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRWUsTUFBTUEsSUFBTixTQUFtQkMseURBQUssQ0FBQ0MsU0FBekIsQ0FBbUM7QUFDOUNDLFFBQU0sR0FBRztBQUNMLFVBQU1DLElBQUksR0FBRyxLQUFLQyxLQUFMLENBQVdELElBQVgsSUFBbUIsTUFBaEM7QUFDQSx3QkFBTztBQUFLLGFBQU8sRUFBQyxXQUFiO0FBQXlCLFVBQUksRUFBQyxTQUE5QjtBQUF3QyxXQUFLLEVBQUU7QUFBQ0UsYUFBSyxFQUFFRixJQUFSO0FBQWNHLGNBQU0sRUFBRUg7QUFBdEIsT0FBL0M7QUFBNEUsYUFBTyxFQUFFLEtBQUtDLEtBQUwsQ0FBV0c7QUFBaEcsb0JBQ0M7QUFBTSxPQUFDLEVBQUM7QUFBUixNQURELGVBRUM7QUFBTSxPQUFDLEVBQUMsZUFBUjtBQUF3QixVQUFJLEVBQUM7QUFBN0IsTUFGRCxDQUFQO0FBSUg7O0FBUDZDIiwiZmlsZSI6Ii4vc3JjL3VpL2ljb25zL2VkaXQuanN4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtSZWFjdH0gZnJvbSBcIm1vZHVsZXNcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVkaXQgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIGNvbnN0IHNpemUgPSB0aGlzLnByb3BzLnNpemUgfHwgXCIyNHB4XCI7XHJcbiAgICAgICAgcmV0dXJuIDxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCIjRkZGRkZGXCIgc3R5bGU9e3t3aWR0aDogc2l6ZSwgaGVpZ2h0OiBzaXplfX0gb25DbGljaz17dGhpcy5wcm9wcy5vbkNsaWNrfT5cclxuICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMyAxNy4yNVYyMWgzLjc1TDE3LjgxIDkuOTRsLTMuNzUtMy43NUwzIDE3LjI1ek0yMC43MSA3LjA0Yy4zOS0uMzkuMzktMS4wMiAwLTEuNDFsLTIuMzQtMi4zNGMtLjM5LS4zOS0xLjAyLS4zOS0xLjQxIDBsLTEuODMgMS44MyAzLjc1IDMuNzUgMS44My0xLjgzelwiIC8+XHJcbiAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTAgMGgyNHYyNEgwelwiIGZpbGw9XCJub25lXCIgLz5cclxuICAgICAgICAgICAgICAgPC9zdmc+O1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/icons/edit.jsx\n");
/***/ }),
/***/ "./src/ui/icons/fullscreen.jsx":
/*!*************************************!*\
!*** ./src/ui/icons/fullscreen.jsx ***!
\*************************************/
/*! exports provided: default */
/***/ (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_modules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../modules/modules.js */ \"./src/modules/modules.js\");\n\nclass FullScreen extends _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n const size = this.props.size || \"24px\";\n return /*#__PURE__*/_modules_modules_js__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_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n fill: \"none\",\n d: \"M0 0h24v24H0V0z\"\n }), /*#__PURE__*/_modules_modules_js__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/ZjUzMSJdLCJuYW1lcyI6WyJGdWxsU2NyZWVuIiwiUmVhY3QiLCJDb21wb25lbnQiLCJyZW5kZXIiLCJzaXplIiwicHJvcHMiLCJjbGFzc05hbWUiLCJ3aWR0aCIsImhlaWdodCIsIm9uQ2xpY2siXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRWUsTUFBTUEsVUFBTixTQUF5QkMseURBQUssQ0FBQ0MsU0FBL0IsQ0FBeUM7QUFDcERDLFFBQU0sR0FBRztBQUNMLFVBQU1DLElBQUksR0FBRyxLQUFLQyxLQUFMLENBQVdELElBQVgsSUFBbUIsTUFBaEM7QUFDQSx3QkFBTztBQUFLLGVBQVMsRUFBRSxLQUFLQyxLQUFMLENBQVdDLFNBQVgsSUFBd0IsRUFBeEM7QUFBNEMsVUFBSSxFQUFDLFNBQWpEO0FBQTJELGFBQU8sRUFBQyxXQUFuRTtBQUErRSxXQUFLLEVBQUU7QUFBQ0MsYUFBSyxFQUFFSCxJQUFSO0FBQWNJLGNBQU0sRUFBRUo7QUFBdEIsT0FBdEY7QUFBbUgsYUFBTyxFQUFFLEtBQUtDLEtBQUwsQ0FBV0k7QUFBdkksb0JBQ0s7QUFBTSxVQUFJLEVBQUMsTUFBWDtBQUFrQixPQUFDLEVBQUM7QUFBcEIsTUFETCxlQUVLO0FBQU0sT0FBQyxFQUFDO0FBQVIsTUFGTCxDQUFQO0FBSUg7O0FBUG1EIiwiZmlsZSI6Ii4vc3JjL3VpL2ljb25zL2Z1bGxzY3JlZW4uanN4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtSZWFjdH0gZnJvbSBcIm1vZHVsZXNcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZ1bGxTY3JlZW4gZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIGNvbnN0IHNpemUgPSB0aGlzLnByb3BzLnNpemUgfHwgXCIyNHB4XCI7XHJcbiAgICAgICAgcmV0dXJuIDxzdmcgY2xhc3NOYW1lPXt0aGlzLnByb3BzLmNsYXNzTmFtZSB8fCBcIlwifSBmaWxsPVwiI0ZGRkZGRlwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBzdHlsZT17e3dpZHRoOiBzaXplLCBoZWlnaHQ6IHNpemV9fSBvbkNsaWNrPXt0aGlzLnByb3BzLm9uQ2xpY2t9PlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGw9XCJub25lXCIgZD1cIk0wIDBoMjR2MjRIMFYwelwiLz5cclxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTcgMTRINXY1aDV2LTJIN3YtM3ptLTItNGgyVjdoM1Y1SDV2NXptMTIgN2gtM3YyaDV2LTVoLTJ2M3pNMTQgNXYyaDN2M2gyVjVoLTV6XCIvPlxyXG4gICAgICAgICAgICAgICAgPC9zdmc+O1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/icons/fullscreen.jsx\n");
/***/ }),
/***/ "./src/ui/icons/history.jsx":
/*!**********************************!*\
!*** ./src/ui/icons/history.jsx ***!
\**********************************/
/*! exports provided: default */
/***/ (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_modules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../modules/modules.js */ \"./src/modules/modules.js\");\n\nclass History extends _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n const size = this.props.size || \"18px\";\n return /*#__PURE__*/_modules_modules_js__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_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n d: \"M0 0h24v24H0z\",\n fill: \"none\"\n }), /*#__PURE__*/_modules_modules_js__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/NjZiYyJdLCJuYW1lcyI6WyJIaXN0b3J5IiwiUmVhY3QiLCJDb21wb25lbnQiLCJyZW5kZXIiLCJzaXplIiwicHJvcHMiLCJjbGFzc05hbWUiLCJ3aWR0aCIsImhlaWdodCIsIm9uQ2xpY2siXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRWUsTUFBTUEsT0FBTixTQUFzQkMseURBQUssQ0FBQ0MsU0FBNUIsQ0FBc0M7QUFDakRDLFFBQU0sR0FBRztBQUNMLFVBQU1DLElBQUksR0FBRyxLQUFLQyxLQUFMLENBQVdELElBQVgsSUFBbUIsTUFBaEM7QUFDQSx3QkFBTztBQUFLLGFBQU8sRUFBQyxXQUFiO0FBQXlCLFVBQUksRUFBQyxTQUE5QjtBQUF3QyxlQUFTLEVBQUUsS0FBS0MsS0FBTCxDQUFXQyxTQUFYLElBQXdCLEVBQTNFO0FBQStFLFdBQUssRUFBRTtBQUFDQyxhQUFLLEVBQUVILElBQVI7QUFBY0ksY0FBTSxFQUFFSjtBQUF0QixPQUF0RjtBQUFtSCxhQUFPLEVBQUUsS0FBS0MsS0FBTCxDQUFXSTtBQUF2SSxvQkFDQztBQUFNLE9BQUMsRUFBQyxlQUFSO0FBQXdCLFVBQUksRUFBQztBQUE3QixNQURELGVBRUM7QUFBTSxPQUFDLEVBQUM7QUFBUixNQUZELENBQVA7QUFJSDs7QUFQZ0QiLCJmaWxlIjoiLi9zcmMvdWkvaWNvbnMvaGlzdG9yeS5qc3guanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlYWN0fSBmcm9tIFwibW9kdWxlc1wiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSGlzdG9yeSBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XHJcbiAgICByZW5kZXIoKSB7XHJcbiAgICAgICAgY29uc3Qgc2l6ZSA9IHRoaXMucHJvcHMuc2l6ZSB8fCBcIjE4cHhcIjtcclxuICAgICAgICByZXR1cm4gPHN2ZyB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIiNGRkZGRkZcIiBjbGFzc05hbWU9e3RoaXMucHJvcHMuY2xhc3NOYW1lIHx8IFwiXCJ9IHN0eWxlPXt7d2lkdGg6IHNpemUsIGhlaWdodDogc2l6ZX19IG9uQ2xpY2s9e3RoaXMucHJvcHMub25DbGlja30+XHJcbiAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTAgMGgyNHYyNEgwelwiIGZpbGw9XCJub25lXCIvPlxyXG4gICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMyAzYy00Ljk3IDAtOSA0LjAzLTkgOUgxbDMuODkgMy44OS4wNy4xNEw5IDEySDZjMC0zLjg3IDMuMTMtNyA3LTdzNyAzLjEzIDcgNy0zLjEzIDctNyA3Yy0xLjkzIDAtMy42OC0uNzktNC45NC0yLjA2bC0xLjQyIDEuNDJDOC4yNyAxOS45OSAxMC41MSAyMSAxMyAyMWM0Ljk3IDAgOS00LjAzIDktOXMtNC4wMy05LTktOXptLTEgNXY1bDQuMjggMi41NC43Mi0xLjIxLTMuNS0yLjA4VjhIMTJ6XCIvPlxyXG4gICAgICAgICAgICAgICA8L3N2Zz47XHJcbiAgICB9XHJcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/ui/icons/history.jsx\n");
/***/ }),
/***/ "./src/ui/icons/reload.jsx":
/*!*********************************!*\
!*** ./src/ui/icons/reload.jsx ***!
\*********************************/
/*! exports provided: default */
/***/ (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_modules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../modules/modules.js */ \"./src/modules/modules.js\");\n\nclass ReloadIcon extends _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n const size = this.props.size || \"24px\";\n return /*#__PURE__*/_modules_modules_js__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_modules_js__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_modules_js__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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvaWNvbnMvcmVsb2FkLmpzeD8zOGIyIl0sIm5hbWVzIjpbIlJlbG9hZEljb24iLCJSZWFjdCIsIkNvbXBvbmVudCIsInJlbmRlciIsInNpemUiLCJwcm9wcyIsImNsYXNzTmFtZSIsIm9uQ2xpY2siLCJ3aWR0aCIsImhlaWdodCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFFZSxNQUFNQSxVQUFOLFNBQXlCQyx5REFBSyxDQUFDQyxTQUEvQixDQUF5QztBQUNwREMsUUFBTSxHQUFHO0FBQ0wsVUFBTUMsSUFBSSxHQUFHLEtBQUtDLEtBQUwsQ0FBV0QsSUFBWCxJQUFtQixNQUFoQztBQUNBLHdCQUFPO0FBQUssZUFBUyxFQUFFLEtBQUtDLEtBQUwsQ0FBV0MsU0FBWCxJQUF3QixFQUF4QztBQUE0QyxhQUFPLEVBQUUsS0FBS0QsS0FBTCxDQUFXRSxPQUFoRTtBQUF5RSxVQUFJLEVBQUMsU0FBOUU7QUFBd0YsYUFBTyxFQUFDLFdBQWhHO0FBQTRHLFdBQUssRUFBRTtBQUFDQyxhQUFLLEVBQUVKLElBQVI7QUFBY0ssY0FBTSxFQUFFTDtBQUF0QjtBQUFuSCxvQkFDSDtBQUFNLE9BQUMsRUFBQztBQUFSLE1BREcsZUFFSDtBQUFNLFVBQUksRUFBQyxNQUFYO0FBQWtCLE9BQUMsRUFBQztBQUFwQixNQUZHLENBQVA7QUFJSDs7QUFQbUQiLCJmaWxlIjoiLi9zcmMvdWkvaWNvbnMvcmVsb2FkLmpzeC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhY3R9IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSZWxvYWRJY29uIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICBjb25zdCBzaXplID0gdGhpcy5wcm9wcy5zaXplIHx8IFwiMjRweFwiO1xyXG4gICAgICAgIHJldHVybiA8c3ZnIGNsYXNzTmFtZT17dGhpcy5wcm9wcy5jbGFzc05hbWUgfHwgXCJcIn0gb25DbGljaz17dGhpcy5wcm9wcy5vbkNsaWNrfSBmaWxsPVwiI2RjZGRkZVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBzdHlsZT17e3dpZHRoOiBzaXplLCBoZWlnaHQ6IHNpemV9fT5cclxuICAgICAgICAgICAgPHBhdGggZD1cIk0xNy42NSA2LjM1QzE2LjIgNC45IDE0LjIxIDQgMTIgNGMtNC40MiAwLTcuOTkgMy41OC03Ljk5IDhzMy41NyA4IDcuOTkgOGMzLjczIDAgNi44NC0yLjU1IDcuNzMtNmgtMi4wOGMtLjgyIDIuMzMtMy4wNCA0LTUuNjUgNC0zLjMxIDAtNi0yLjY5LTYtNnMyLjY5LTYgNi02YzEuNjYgMCAzLjE0LjY5IDQuMjIgMS43OEwxMyAxMWg3VjRsLTIuMzUgMi4zNXpcIiAvPlxyXG4gICAgICAgICAgICA8cGF0aCBmaWxsPVwibm9uZVwiIGQ9XCJNMCAwaDI0djI0SDB6XCIgLz5cclxuICAgICAgICA8L3N2Zz47XHJcbiAgICB9XHJcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/ui/icons/reload.jsx\n");
/***/ }),
/***/ "./src/ui/icons/save.jsx":
/*!*******************************!*\
!*** ./src/ui/icons/save.jsx ***!
\*******************************/
/*! exports provided: default */
/***/ (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_modules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../modules/modules.js */ \"./src/modules/modules.js\");\n\nclass Save extends _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n const size = this.props.size || \"24px\";\n return /*#__PURE__*/_modules_modules_js__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_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n fill: \"none\",\n d: \"M0 0h24v24H0V0z\"\n }), /*#__PURE__*/_modules_modules_js__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/NTgwZiJdLCJuYW1lcyI6WyJTYXZlIiwiUmVhY3QiLCJDb21wb25lbnQiLCJyZW5kZXIiLCJzaXplIiwicHJvcHMiLCJ3aWR0aCIsImhlaWdodCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFFZSxNQUFNQSxJQUFOLFNBQW1CQyx5REFBSyxDQUFDQyxTQUF6QixDQUFtQztBQUM5Q0MsUUFBTSxHQUFHO0FBQ0wsVUFBTUMsSUFBSSxHQUFHLEtBQUtDLEtBQUwsQ0FBV0QsSUFBWCxJQUFtQixNQUFoQztBQUNBLHdCQUFPO0FBQUssYUFBTyxFQUFDLFdBQWI7QUFBeUIsV0FBSyxFQUFFO0FBQUNFLGFBQUssRUFBRUYsSUFBUjtBQUFjRyxjQUFNLEVBQUVIO0FBQXRCO0FBQWhDLG9CQUNDO0FBQU0sVUFBSSxFQUFDLE1BQVg7QUFBa0IsT0FBQyxFQUFDO0FBQXBCLE1BREQsZUFFQztBQUFNLE9BQUMsRUFBQztBQUFSLE1BRkQsQ0FBUDtBQUlIOztBQVA2QyIsImZpbGUiOiIuL3NyYy91aS9pY29ucy9zYXZlLmpzeC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhY3R9IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTYXZlIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICBjb25zdCBzaXplID0gdGhpcy5wcm9wcy5zaXplIHx8IFwiMjRweFwiO1xyXG4gICAgICAgIHJldHVybiA8c3ZnIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBzdHlsZT17e3dpZHRoOiBzaXplLCBoZWlnaHQ6IHNpemV9fT5cclxuICAgICAgICAgICAgICAgIDxwYXRoIGZpbGw9XCJub25lXCIgZD1cIk0wIDBoMjR2MjRIMFYwelwiIC8+XHJcbiAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE3IDNINWMtMS4xMSAwLTIgLjktMiAydjE0YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjdsLTQtNHptMiAxNkg1VjVoMTEuMTdMMTkgNy44M1YxOXptLTctN2MtMS42NiAwLTMgMS4zNC0zIDNzMS4zNCAzIDMgMyAzLTEuMzQgMy0zLTEuMzQtMy0zLTN6TTYgNmg5djRINnpcIiAvPlxyXG4gICAgICAgICAgICAgICA8L3N2Zz47XHJcbiAgICB9XHJcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/ui/icons/save.jsx\n");
/***/ }),
/***/ "./src/ui/icons/search.jsx":
/*!*********************************!*\
!*** ./src/ui/icons/search.jsx ***!
\*********************************/
/*! exports provided: default */
/***/ (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_modules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../modules/modules.js */ \"./src/modules/modules.js\");\n\nclass Search extends _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n const size = this.props.size || \"16px\";\n return /*#__PURE__*/_modules_modules_js__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_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"path\", {\n fill: \"none\",\n d: \"M0 0h24v24H0V0z\"\n }), /*#__PURE__*/_modules_modules_js__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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvaWNvbnMvc2VhcmNoLmpzeD84MDlmIl0sIm5hbWVzIjpbIlNlYXJjaCIsIlJlYWN0IiwiQ29tcG9uZW50IiwicmVuZGVyIiwic2l6ZSIsInByb3BzIiwiY2xhc3NOYW1lIiwid2lkdGgiLCJoZWlnaHQiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRWUsTUFBTUEsTUFBTixTQUFxQkMseURBQUssQ0FBQ0MsU0FBM0IsQ0FBcUM7QUFDaERDLFFBQU0sR0FBRztBQUNMLFVBQU1DLElBQUksR0FBRyxLQUFLQyxLQUFMLENBQVdELElBQVgsSUFBbUIsTUFBaEM7QUFDQSx3QkFBTztBQUFLLGVBQVMsRUFBRSxLQUFLQyxLQUFMLENBQVdDLFNBQVgsSUFBd0IsRUFBeEM7QUFBNEMsVUFBSSxFQUFDLFNBQWpEO0FBQTJELGFBQU8sRUFBQyxXQUFuRTtBQUErRSxXQUFLLEVBQUU7QUFBQ0MsYUFBSyxFQUFFSCxJQUFSO0FBQWNJLGNBQU0sRUFBRUo7QUFBdEI7QUFBdEYsb0JBQ0s7QUFBTSxVQUFJLEVBQUMsTUFBWDtBQUFrQixPQUFDLEVBQUM7QUFBcEIsTUFETCxlQUVLO0FBQU0sT0FBQyxFQUFDO0FBQVIsTUFGTCxDQUFQO0FBSUg7O0FBUCtDIiwiZmlsZSI6Ii4vc3JjL3VpL2ljb25zL3NlYXJjaC5qc3guanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlYWN0fSBmcm9tIFwibW9kdWxlc1wiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2VhcmNoIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICBjb25zdCBzaXplID0gdGhpcy5wcm9wcy5zaXplIHx8IFwiMTZweFwiO1xyXG4gICAgICAgIHJldHVybiA8c3ZnIGNsYXNzTmFtZT17dGhpcy5wcm9wcy5jbGFzc05hbWUgfHwgXCJcIn0gZmlsbD1cIiNGRkZGRkZcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgc3R5bGU9e3t3aWR0aDogc2l6ZSwgaGVpZ2h0OiBzaXplfX0+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbD1cIm5vbmVcIiBkPVwiTTAgMGgyNHYyNEgwVjB6XCIvPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTUuNSAxNGgtLjc5bC0uMjgtLjI3QzE1LjQxIDEyLjU5IDE2IDExLjExIDE2IDkuNSAxNiA1LjkxIDEzLjA5IDMgOS41IDNTMyA1LjkxIDMgOS41IDUuOTEgMTYgOS41IDE2YzEuNjEgMCAzLjA5LS41OSA0LjIzLTEuNTdsLjI3LjI4di43OWw1IDQuOTlMMjAuNDkgMTlsLTQuOTktNXptLTYgMEM3LjAxIDE0IDUgMTEuOTkgNSA5LjVTNy4wMSA1IDkuNSA1IDE0IDcuMDEgMTQgOS41IDExLjk5IDE0IDkuNSAxNHpcIi8+XHJcbiAgICAgICAgICAgICAgICA8L3N2Zz47XHJcbiAgICB9XHJcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/ui/icons/search.jsx\n");
/***/ }),
/***/ "./src/ui/misc/addoneditor.jsx":
/*!*************************************!*\
!*** ./src/ui/misc/addoneditor.jsx ***!
\*************************************/
/*! exports provided: default */
/***/ (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_modules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../modules/modules.js */ \"./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_modules_js__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_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_save__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n size: \"18px\"\n }),\n tooltip: _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].CustomCSS.save,\n onClick: this.save\n }, {\n label: _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_edit__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n size: \"18px\"\n }),\n tooltip: _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].CustomCSS.openNative,\n onClick: this.openNative\n }, {\n label: _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_cog__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n size: \"18px\"\n }),\n tooltip: _modules_modules_js__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_modules_js__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/ZWI5YyJdLCJuYW1lcyI6WyJBZGRvbkVkaXRvciIsIlJlYWN0IiwiQ29tcG9uZW50IiwiY29uc3RydWN0b3IiLCJwcm9wcyIsImhhc1Vuc2F2ZWRDaGFuZ2VzIiwib25DaGFuZ2UiLCJiaW5kIiwic2F2ZSIsIm9wZW5OYXRpdmUiLCJ1cGRhdGUiLCJjb250cm9scyIsImxhYmVsIiwiY3JlYXRlRWxlbWVudCIsIlNhdmUiLCJzaXplIiwidG9vbHRpcCIsIlN0cmluZ3MiLCJDdXN0b21DU1MiLCJvbkNsaWNrIiwiRWRpdCIsIkNvZyIsInNldHRpbmdzIiwiZm9yY2VVcGRhdGUiLCJ1cGRhdGVFZGl0b3IiLCJuZXdDU1MiLCJlZGl0b3IiLCJ2YWx1ZSIsInNlc3Npb24iLCJnZXRWYWx1ZSIsIm5ld1ZhbHVlIiwic2V0VmFsdWUiLCJzaG93U2V0dGluZ3MiLCJrZXlCaW5kaW5nIiwiJGRlZmF1bHRIYW5kbGVyIiwiY29tbWFuZHMiLCJzaG93U2V0dGluZ3NNZW51IiwiZXhlYyIsInJlc2l6ZSIsInNldEVkaXRvclJlZiIsImVkaXRvclJlZiIsImN1cnJlbnQiLCJyZW5kZXIiLCJsYW5ndWFnZSIsImlkIiwiY29udGVudCIsImV2ZW50Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFZSxNQUFNQSxXQUFOLFNBQTBCQyx5REFBSyxDQUFDQyxTQUFoQyxDQUEwQztBQUVyREMsYUFBVyxDQUFDQyxLQUFELEVBQVE7QUFDZixVQUFNQSxLQUFOO0FBRUEsU0FBS0MsaUJBQUwsR0FBeUIsS0FBekI7QUFDQSxTQUFLQyxRQUFMLEdBQWdCLEtBQUtBLFFBQUwsQ0FBY0MsSUFBZCxDQUFtQixJQUFuQixDQUFoQjtBQUNBLFNBQUtDLElBQUwsR0FBWSxLQUFLQSxJQUFMLENBQVVELElBQVYsQ0FBZSxJQUFmLENB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QXlCLElBQXpCO0FBQ0g7O0FBRURHLE1BQUksQ0FBQ3NDLEtBQUQsRUFBUUQsT0FBUixFQUFpQjtBQUNqQixTQUFLeEMsaUJBQUwsR0FBeUIsS0FBekI7QUFDQSxRQUFJLEtBQUtELEtBQUwsQ0FBV0ksSUFBZixFQUFxQixLQUFLSixLQUFMLENBQVdJLElBQVgsQ0FBZ0JxQyxPQUFoQjtBQUN4Qjs7QUFFRHBDLFlBQVUsR0FBRztBQUNULFFBQUksS0FBS0wsS0FBTCxDQUFXSyxVQUFmLEVBQTJCLEtBQUtMLEtBQUwsQ0FBV0ssVUFBWDtBQUM5Qjs7QUF4RG9EIiwiZmlsZSI6Ii4vc3JjL3VpL21pc2MvYWRkb25lZGl0b3IuanN4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtSZWFjdCwgU3RyaW5nc30gZnJvbSBcIm1vZHVsZXNcIjtcclxuXHJcbmltcG9ydCBFZGl0b3IgZnJvbSBcIi4uL2N1c3RvbWNzcy9lZGl0b3JcIjtcclxuaW1wb3J0IFNhdmUgZnJvbSBcIi4uL2ljb25zL3NhdmVcIjtcclxuaW1wb3J0IEVkaXQgZnJvbSBcIi4uL2ljb25zL2VkaXRcIjtcclxuaW1wb3J0IENvZyBmcm9tIFwiLi4vaWNvbnMvY29nXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBZGRvbkVkaXRvciBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcclxuICAgICAgICBzdXBlcihwcm9wcyk7XHJcblxyXG4gICAgICAgIHRoaXMuaGFzVW5zYXZlZENoYW5nZXMgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm9uQ2hhbmdlID0gdGhpcy5vbkNoYW5nZS5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMuc2F2ZSA9IHRoaXMuc2F2ZS5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMub3Blbk5hdGl2ZSA9IHRoaXMub3Blbk5hdGl2ZS5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlID0gdGhpcy51cGRhdGUuYmluZCh0aGlzKTtcclxuXHJcbiAgICAgICAgdGhpcy5jb250cm9scyA9IFtcclxuICAgICAgICAgICAge2xhYmVsOiBSZWFjdC5jcmVhdGVFbGVtZW50KFNhdmUsIHtzaXplOiBcIjE4cHhcIn0pLCB0b29sdGlwOiBTdHJpbmdzLkN1c3RvbUNTUy5zYXZlLCBvbkNsaWNrOiB0aGlzLnNhdmV9LFxyXG4gICAgICAgICAgICB7bGFiZWw6IFJlYWN0LmNyZWF0ZUVsZW1lbnQoRWRpdCwge3NpemU6IFwiMThweFwifSksIHRvb2x0aXA6IFN0cmluZ3MuQ3VzdG9tQ1NTLm9wZW5OYXRpdmUsIG9uQ2xpY2s6IHRoaXMub3Blbk5hdGl2ZX0sXHJcbiAgICAgICAgICAgIHtsYWJlbDogUmVhY3QuY3JlYXRlRWxlbWVudChDb2csIHtzaXplOiBcIjE4cHhcIn0pLCB0b29sdGlwOiBTdHJpbmdzLkN1c3RvbUNTUy5zZXR0aW5ncywgb25DbGljazogXCJzaG93U2V0dGluZ3NcIn1cclxuICAgICAgICBdO1xyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZSgpIHtcclxuICAgICAgICB0aGlzLmZvcmNlVXBkYXRlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlRWRpdG9yKG5ld0NTUykge1xyXG4gICAgICAgIGlmICghdGhpcy5lZGl0b3IpIHJldHVybjtcclxuICAgICAgICB0aGlzLmVkaXRvci52YWx1ZSA9IG5ld0NTUztcclxuICAgIH1cclxuXHJcbiAgICBnZXQgdmFsdWUoKSB7cmV0dXJuIHRoaXMuZWRpdG9yLnNlc3Npb24uZ2V0VmFsdWUoKTt9XHJcbiAgICBzZXQgdmFsdWUobmV3VmFsdWUpIHtcclxuICAgICAgICB0aGlzLmVkaXRvci5zZXRWYWx1ZShuZXdWYWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2hvd1NldHRpbmdzKCkge3JldHVybiB0aGlzLmVkaXRvci5rZXlCaW5kaW5nLiRkZWZhdWx0SGFuZGxlci5jb21tYW5kcy5zaG93U2V0dGluZ3NNZW51LmV4ZWModGhpcy5lZGl0b3IpO31cclxuICAgIHJlc2l6ZSgpIHtyZXR1cm4gdGhpcy5lZGl0b3IucmVzaXplKCk7fVxyXG5cclxuICAgIHNldEVkaXRvclJlZihlZGl0b3IpIHtcclxuICAgICAgICB0aGlzLmVkaXRvciA9IGVkaXRvcjtcclxuICAgICAgICBpZiAodGhpcy5wcm9wcy5lZGl0b3JSZWYgJiYgdHlwZW9mKHRoaXMucHJvcHMuZWRpdG9yUmVmLmN1cnJlbnQpICE9PSBcInVuZGVmaW5lZFwiKSB0aGlzLnByb3BzLmVkaXRvclJlZi5jdXJyZW50ID0gZWRpdG9yO1xyXG4gICAgICAgIGVsc2UgaWYgKHRoaXMucHJvcHMuZWRpdG9yUmVmKSB0aGlzLnByb3BzLmVkaXRvclJlZiA9IGVkaXRvcjtcclxuICAgIH1cclxuXHJcbiAgICByZW5kZXIoKSB7XHJcbiAgICAgICAgcmV0dXJuIDxFZGl0b3IgcmVmPXt0aGlzLnNldEVkaXRvclJlZi5iaW5kKHRoaXMpfSBsYW5ndWFnZT17dGhpcy5wcm9wcy5sYW5ndWFnZX0gaWQ9e3RoaXMucHJvcHMuaWQgfHwgXCJiZC1hZGRvbi1lZGl0b3JcIn0gY29udHJvbHM9e3RoaXMuY29udHJvbHN9IHZhbHVlPXt0aGlzLnByb3BzLmNvbnRlbnR9IG9uQ2hhbmdlPXt0aGlzLm9uQ2hhbmdlfSAvPjtcclxuICAgIH1cclxuXHJcbiAgICBvbkNoYW5nZSgpIHtcclxuICAgICAgICB0aGlzLmhhc1Vuc2F2ZWRDaGFuZ2VzID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBzYXZlKGV2ZW50LCBjb250ZW50KSB7XHJcbiAgICAgICAgdGhpcy5oYXNVbnNhdmVkQ2hhbmdlcyA9IGZhbHNlO1xyXG4gICAgICAgIGlmICh0aGlzLnByb3BzLnNhdmUpIHRoaXMucHJvcHMuc2F2ZShjb250ZW50KTtcclxuICAgIH1cclxuXHJcbiAgICBvcGVuTmF0aXZlKCkge1xyXG4gICAgICAgIGlmICh0aGlzLnByb3BzLm9wZW5OYXRpdmUpIHRoaXMucHJvcHMub3Blbk5hdGl2ZSgpO1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/misc/addoneditor.jsx\n");
/***/ }),
/***/ "./src/ui/modals.js":
/*!**************************!*\
!*** ./src/ui/modals.js ***!
\**************************/
/*! exports provided: default */
/***/ (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_data_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../data/data.js */ \"./src/data/data.js\");\n/* harmony import */ var _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../modules/modules.js */ \"./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_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"Settings\"].get(\"settings\", \"addons\", \"addonErrors\");\n }\n\n static get ModalActions() {\n return _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"openModal\", \"updateModal\");\n }\n\n static get ModalStack() {\n return _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"push\", \"update\", \"pop\", \"popWithKey\");\n }\n\n static get AlertModal() {\n return _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByPrototypes(\"handleCancel\", \"handleSubmit\", \"handleMinorConfirm\");\n }\n\n static get TextElement() {\n return _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"Sizes\", \"Weights\");\n }\n\n static get ConfirmationModal() {\n return _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].findByDisplayName(\"ConfirmModal\");\n }\n\n static get Markdown() {\n return _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].findByDisplayName(\"Markdown\");\n }\n\n static default(title, content) {\n const modal = _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].createElement(`
`);\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_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].Modals.okay,\n cancelText = _modules_modules_js__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_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(Markdown, null, c) : c);\n return ModalActions.openModal(props => {\n return _modules_modules_js__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_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].createElement(`\n
\n
\n
\n \n
\n
\n
\n
${_modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].Panels.plugins}
\n
${_modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].Panels.themes}
\n
\n
\n \n
\n
\n \n
\n
\n
`);\n\n const generateTab = function (errors) {\n const container = _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].createElement(``);\n\n for (const err of errors) {\n const error = _modules_modules_js__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_modules_js__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_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].removeClass(selected, \"selected\");\n _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].addClass(e.target, \"selected\");\n const scroller = modal.querySelector(\".scroller\");\n scroller.innerHTML = \"\";\n scroller.append(tabs[_modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].index(e.target)]);\n }));\n modal.querySelector(\".footer button\").addEventListener(\"click\", () => {\n _modules_modules_js__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_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"DOM\"].addClass(modal, \"closing\");\n setTimeout(() => {\n modal.remove();\n }, 300);\n });\n _modules_modules_js__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_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"push\", \"update\", \"pop\", \"popWithKey\");\n const ChangelogClasses = _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"fixed\", \"improved\");\n const TextElement = _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].findByDisplayName(\"Text\");\n const FlexChild = _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"Child\");\n const Titles = _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"Tags\", \"default\");\n const Changelog = _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getModule(m => m.defaultProps && m.defaultProps.selectable == false);\n const MarkdownParser = _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"defaultRules\", \"parse\");\n if (!Changelog || !ModalStack || !ChangelogClasses || !TextElement || !FlexChild || !Titles || !MarkdownParser) return _modules_modules_js__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_data_js__WEBPACK_IMPORTED_MODULE_0__[\"Config\"].bbdVersion}`,\n footer\n } = options;\n const ce = _modules_modules_js__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_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getModule(m => m.displayName == \"Anchor\");\n const AnchorClasses = _modules_modules_js__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_modules_js__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");
/***/ }),
/***/ "./src/ui/publicservers/card.jsx":
/*!***************************************!*\
!*** ./src/ui/publicservers/card.jsx ***!
\***************************************/
/*! exports provided: default */
/***/ (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_modules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../modules/modules.js */ \"./src/modules/modules.js\");\n\nclass ServerCard extends _modules_modules_js__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_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.joining}...` : this.state.joined ? _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.joined : _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.join;\n const buttonClass = `bd-button${this.state.joined == true ? \" bd-button-success\" : \"\"}`;\n return /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: `bd-server-card${server.pinned ? \" bd-server-card-pinned\" : \"\"}`\n }, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"img\", {\n className: \"bd-server-image\",\n src: server.iconUrl,\n onError: this.handleError\n }), \",\", /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-server-content\"\n }, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-server-header\"\n }, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"h5\", {\n className: \"bd-server-name\"\n }, server.name), /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"h5\", {\n className: \"bd-server-member-count\"\n }, server.members, \" Members\")), /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-scroller-wrap bd-server-description-container\"\n }, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-scroller bd-server-description\"\n }, server.description)), /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-server-footer\"\n }, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-server-tags\"\n }, server.categories.join(\", \")), /*#__PURE__*/_modules_modules_js__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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvcHVibGljc2VydmVycy9jYXJkLmpzeD83NjAyIl0sIm5hbWVzIjpbIlNlcnZlckNhcmQiLCJSZWFjdCIsIkNvbXBvbmVudCIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJzZXJ2ZXIiLCJpY29uVXJsIiwiZGVmYXVsdEF2YXRhciIsInN0YXRlIiwiaW1hZ2VFcnJvciIsImpvaW5lZCIsImpvaW4iLCJiaW5kIiwiaGFuZGxlRXJyb3IiLCJyZW5kZXIiLCJidXR0b25UZXh0IiwiU3RyaW5ncyIsIlB1YmxpY1NlcnZlcnMiLCJqb2luaW5nIiwiYnV0dG9uQ2xhc3MiLCJwaW5uZWQiLCJuYW1lIiwibWVtYmVycyIsImRlc2NyaXB0aW9uIiwiY2F0ZWdvcmllcyIsInNldFN0YXRlIiwiZGlkSm9pbiIsImlkZW50aWZpZXIiLCJuYXRpdmVqb2luIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVlLE1BQU1BLFVBQU4sU0FBeUJDLHlEQUFLLENBQUNDLFNBQS9CLENBQXlDO0FBQ3BEQyxhQUFXLENBQUNDLEtBQUQsRUFBUTtBQUNmLFVBQU1BLEtBQU47QUFDQSxRQUFJLENBQUMsS0FBS0EsS0FBTCxDQUFXQyxNQUFYLENBQWtCQyxPQUF2QixFQUFnQyxLQUFLRixLQUFMLENBQVdDLE1BQVgsQ0FBa0JDLE9BQWxCLEdBQTRCLEtBQUtGLEtBQUwsQ0FBV0csYUFBWCxFQUE1QjtBQUNoQyxTQUFLQyxLQUFMLEdBQWE7QUFDVEMsZ0JBQVUsRUFBRSxLQURIO0FBRVRDLFlBQU0sRUFBRSxLQUFLTixLQUFMLENBQVdNO0FBRlYsS0FBYjtBQUlBLFNBQUtDLElBQUwsR0FBWSxLQUFLQSxJQUFMLENBQVVDLElBQVYsQ0FBZSxJQUFmLENBQVo7QUFDQSxTQUFLQyxXQUFMLEdBQW1CLEtBQUtBLFdBQUwsQ0FBaUJELElBQWpCLENBQXNCLElBQXRCLENBQW5CO0FBQ0g7O0FBRURFLFFBQU0sR0FBRztBQUNMLFVBQU07QUFBQ1Q7QUFBRCxRQUFXLEtBQUtELEtBQXRCO0FBQ0EsVUFBTVcsVUFBVSxHQUFHLE9BQU8sS0FBS1AsS0FBTCxDQUFXRSxNQUFsQixJQUE2QixRQUE3QixHQUF5QyxHQUFFTSwyREFBTyxDQUFDQyxhQUFSLENBQXNCQyxPQUFRLEtBQXpFLEdBQWdGLEtBQUtWLEtBQUwsQ0FBV0UsTUFBWCxHQUFvQk0sMkRBQU8sQ0FBQ0MsYUFBUixDQUFzQlAsTUFBMUMsR0FBbURNLDJEQUFPLENBQUNDLGFBQVIsQ0FBc0JOLElBQTVLO0FBQ0EsVUFBTVEsV0FBVyxHQUFJLFlBQVcsS0FBS1gsS0FBTCxDQUFXRSxNQUFYLElBQXFCLElBQXJCLEdBQTRCLG9CQUE1QixHQUFtRCxFQUFHLEVBQXRGO0FBQ0Esd0JBQU87QUFBSyxlQUFTLEVBQUcsaUJBQWdCTCxNQUFNLENBQUNlLE1BQVAsR0FBZ0Isd0JBQWhCLEdBQTJDLEVBQUc7QUFBL0Usb0JBQ0M7QUFBSyxlQUFTLEVBQUMsaUJBQWY7QUFBaUMsU0FBRyxFQUFFZixNQUFNLENBQUNDLE9BQTdDO0FBQXNELGFBQU8sRUFBRSxLQUFLTztBQUFwRSxNQURELG9CQUVDO0FBQUssZUFBUyxFQUFDO0FBQWYsb0JBQ0k7QUFBSyxlQUFTLEVBQUM7QUFBZixvQkFDSTtBQUFJLGVBQVMsRUFBQztBQUFkLE9BQWdDUixNQUFNLENBQUNnQixJQUF2QyxDQURKLGVBRUk7QUFBSSxlQUFTLEVBQUM7QUFBZCxPQUF3Q2hCLE1BQU0sQ0FBQ2lCLE9BQS9DLGFBRkosQ0FESixlQUtJO0FBQUssZUFBUyxFQUFDO0FBQWYsb0JBQ0k7QUFBSyxlQUFTLEVBQUM7QUFBZixPQUFvRGpCLE1BQU0sQ0FBQ2tCLFdBQTNELENBREosQ0FMSixlQVFJO0FBQUssZUFBUyxFQUFDO0FBQWYsb0JBQ0k7QUFBSyxlQUFTLEVBQUM7QUFBZixPQUFpQ2xCLE1BQU0sQ0FBQ21CLFVBQVAsQ0FBa0JiLElBQWxCLENBQXVCLElBQXZCLENBQWpDLENBREosZUFFSTtBQUFRLFVBQUksRUFBQyxRQUFiO0FBQXNCLGVBQVMsRUFBRVEsV0FBakM7QUFBOEMsYUFBTyxFQUFFLEtBQUtSO0FBQTVELE9BQW1FSSxVQUFuRSxDQUZKLENBUkosQ0FGRCxDQUFQO0FBZ0JIOztBQUVERixhQUFXLEdBQUc7QUFDVixTQUFLVCxLQUFMLENBQVdDLE1BQVgsQ0FBa0JDLE9BQWxCLEdBQTRCLEtBQUtGLEtBQUwsQ0FBV0csYUFBWCxFQUE1QjtBQUNBLFNBQUtrQixRQUFMLENBQWM7QUFBQ2hCLGdCQUFVLEVBQUU7QUFBYixLQUFkO0FBQ0g7O0FBRUQsUUFBTUUsSUFBTixHQUFhO0FBQ1QsUUFBSSxLQUFLSCxLQUFMLENBQVdFLE1BQWYsRUFBdUI7QUFDdkIsU0FBS2UsUUFBTCxDQUFjO0FBQUNmLFlBQU0sRUFBRTtBQUFULEtBQWQ7QUFDQSxVQUFNZ0IsT0FBTyxHQUFHLE1BQU0sS0FBS3RCLEtBQUwsQ0FBV08sSUFBWCxDQUFnQixLQUFLUCxLQUFMLENBQVdDLE1BQVgsQ0FBa0JzQixVQUFsQyxFQUE4QyxLQUFLdkIsS0FBTCxDQUFXQyxNQUFYLENBQWtCdUIsVUFBaEUsQ0FBdEI7QUFDQSxTQUFLSCxRQUFMLENBQWM7QUFBQ2YsWUFBTSxFQUFFZ0I7QUFBVCxLQUFkO0FBQ0g7O0FBNUNtRCIsImZpbGUiOiIuL3NyYy91aS9wdWJsaWNzZXJ2ZXJzL2NhcmQuanN4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtSZWFjdCwgU3RyaW5nc30gZnJvbSBcIm1vZHVsZXNcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNlcnZlckNhcmQgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xyXG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcclxuICAgICAgICBzdXBlcihwcm9wcyk7XHJcbiAgICAgICAgaWYgKCF0aGlzLnByb3BzLnNlcnZlci5pY29uVXJsKSB0aGlzLnByb3BzLnNlcnZlci5pY29uVXJsID0gdGhpcy5wcm9wcy5kZWZhdWx0QXZhdGFyKCk7XHJcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHtcclxuICAgICAgICAgICAgaW1hZ2VFcnJvcjogZmFsc2UsXHJcbiAgICAgICAgICAgIGpvaW5lZDogdGhpcy5wcm9wcy5qb2luZWRcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMuam9pbiA9IHRoaXMuam9pbi5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMuaGFuZGxlRXJyb3IgPSB0aGlzLmhhbmRsZUVycm9yLmJpbmQodGhpcyk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIGNvbnN0IHtzZXJ2ZXJ9ID0gdGhpcy5wcm9wcztcclxuICAgICAgICBjb25zdCBidXR0b25UZXh0ID0gdHlwZW9mKHRoaXMuc3RhdGUuam9pbmVkKSA9PSBcInN0cmluZ1wiID8gYCR7U3RyaW5ncy5QdWJsaWNTZXJ2ZXJzLmpvaW5pbmd9Li4uYCA6IHRoaXMuc3RhdGUuam9pbmVkID8gU3RyaW5ncy5QdWJsaWNTZXJ2ZXJzLmpvaW5lZCA6IFN0cmluZ3MuUHVibGljU2VydmVycy5qb2luO1xyXG4gICAgICAgIGNvbnN0IGJ1dHRvbkNsYXNzID0gYGJkLWJ1dHRvbiR7dGhpcy5zdGF0ZS5qb2luZWQgPT0gdHJ1ZSA/IFwiIGJkLWJ1dHRvbi1zdWNjZXNzXCIgOiBcIlwifWA7XHJcbiAgICAgICAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPXtgYmQtc2VydmVyLWNhcmQke3NlcnZlci5waW5uZWQgPyBcIiBiZC1zZXJ2ZXItY2FyZC1waW5uZWRcIiA6IFwiXCJ9YH0+XHJcbiAgICAgICAgICAgICAgICA8aW1nIGNsYXNzTmFtZT1cImJkLXNlcnZlci1pbWFnZVwiIHNyYz17c2VydmVyLmljb25Vcmx9IG9uRXJyb3I9e3RoaXMuaGFuZGxlRXJyb3J9IC8+LFxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZC1zZXJ2ZXItY29udGVudFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmQtc2VydmVyLWhlYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aDUgY2xhc3NOYW1lPVwiYmQtc2VydmVyLW5hbWVcIj57c2VydmVyLm5hbWV9PC9oNT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGg1IGNsYXNzTmFtZT1cImJkLXNlcnZlci1tZW1iZXItY291bnRcIj57c2VydmVyLm1lbWJlcnN9IE1lbWJlcnM8L2g1PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJkLXNjcm9sbGVyLXdyYXAgYmQtc2VydmVyLWRlc2NyaXB0aW9uLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJkLXNjcm9sbGVyIGJkLXNlcnZlci1kZXNjcmlwdGlvblwiPntzZXJ2ZXIuZGVzY3JpcHRpb259PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZC1zZXJ2ZXItZm9vdGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmQtc2VydmVyLXRhZ3NcIj57c2VydmVyLmNhdGVnb3JpZXMuam9pbihcIiwgXCIpfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzc05hbWU9e2J1dHRvbkNsYXNzfSBvbkNsaWNrPXt0aGlzLmpvaW59PntidXR0b25UZXh0fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PjtcclxuICAgIH1cclxuXHJcbiAgICBoYW5kbGVFcnJvcigpIHtcclxuICAgICAgICB0aGlzLnByb3BzLnNlcnZlci5pY29uVXJsID0gdGhpcy5wcm9wcy5kZWZhdWx0QXZhdGFyKCk7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7aW1hZ2VFcnJvcjogdHJ1ZX0pO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGpvaW4oKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc3RhdGUuam9pbmVkKSByZXR1cm47XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7am9pbmVkOiBcImpvaW5pbmdcIn0pO1xyXG4gICAgICAgIGNvbnN0IGRpZEpvaW4gPSBhd2FpdCB0aGlzLnByb3BzLmpvaW4odGhpcy5wcm9wcy5zZXJ2ZXIuaWRlbnRpZmllciwgdGhpcy5wcm9wcy5zZXJ2ZXIubmF0aXZlam9pbik7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7am9pbmVkOiBkaWRKb2lufSk7XHJcbiAgICB9XHJcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/ui/publicservers/card.jsx\n");
/***/ }),
/***/ "./src/ui/publicservers/menu.js":
/*!**************************************!*\
!*** ./src/ui/publicservers/menu.js ***!
\**************************************/
/*! exports provided: default */
/***/ (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_modules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../modules/modules.js */ \"./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_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"WebpackModules\"].getByDisplayName(\"SettingsView\");\nclass PublicServers extends _modules_modules_js__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_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_settings_components_search__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n onKeyDown: this.searchKeyDown,\n placeholder: `${_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.search}...`\n });\n }\n\n get title() {\n if (!this.state.user) return _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.notConnected;\n if (this.state.loading) return `${_modules_modules_js__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_modules_js__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_modules_js__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_modules_js__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_modules_js__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_modules_js__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_modules_js__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_modules_js__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_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.loading : _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.loadMore);\n }\n\n get connection() {\n const {\n user\n } = this.state;\n if (!user) return _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n id: \"bd-connection\"\n });\n return _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n id: \"bd-connection\"\n }, _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-footnote\"\n }, _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.connection.format(user)), _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"button\", {\n type: \"button\",\n className: \"bd-button bd-button-reconnect\",\n onClick: this.connect\n }, _modules_modules_js__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_modules_js__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_modules_js__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_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.search\n }, {\n section: \"CUSTOM\",\n element: () => this.searchBox\n }, {\n section: \"HEADER\",\n label: _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].PublicServers.categories\n }, ...categories, {\n section: \"DIVIDER\"\n }, {\n section: \"HEADER\",\n label: _modules_modules_js__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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvcHVibGljc2VydmVycy9tZW51LmpzPzlhY2QiXSwibmFtZXMiOlsiU2V0dGluZ3NWaWV3IiwiV2VicGFja01vZHVsZXMiLCJnZXRCeURpc3BsYXlOYW1lIiwiUHVibGljU2VydmVycyIsIlJlYWN0IiwiQ29tcG9uZW50IiwiY2F0ZWdvcnlCdXR0b25zIiwiY29uc3RydWN0b3IiLCJwcm9wcyIsInN0YXRlIiwiY2F0ZWdvcnkiLCJxdWVyeSIsImxvYWRpbmciLCJ1c2VyIiwicmVzdWx0cyIsInNlcnZlcnMiLCJzaXplIiwiZnJvbSIsInRvdGFsIiwibmV4dCIsImNoYW5nZUNhdGVnb3J5IiwiYmluZCIsInNlYXJjaEtleURvd24iLCJjb25uZWN0IiwibG9hZE5leHRQYWdlIiwiam9pbiIsImNvbXBvbmVudERpZE1vdW50IiwiY2hlY2tDb25uZWN0aW9uIiwidXNlckRhdGEiLCJDb25uZWN0aW9uIiwic2V0U3RhdGUiLCJzZWFyY2giLCJlIiwid2hpY2giLCJ0YXJnZXQiLCJ2YWx1ZSIsInRlcm0iLCJpZCIsIlByb21pc2UiLCJyZXNvbHZlIiwibmF0aXZlIiwic2VhcmNoQm94IiwiU3RyaW5ncyIsInRpdGxlIiwibm90Q29ubmVjdGVkIiwic3RhcnQiLCJlbmQiLCJmb3JtYXQiLCJjb250ZW50IiwiY29ubmVjdEJ1dHRvbiIsIm9uQ2xpY2siLCJwaW5uZWQiLCJiZFNlcnZlciIsIm1hcCIsInNlcnZlciIsImNyZWF0ZUVsZW1lbnQiLCJTZXJ2ZXJDYXJkIiwia2V5IiwiaWRlbnRpZmllciIsImpvaW5lZCIsImhhc0pvaW5lZCIsImRlZmF1bHRBdmF0YXIiLCJnZXREZWZhdWx0QXZhdGFyIiwiU2V0dGluZ3NUaXRsZSIsInRleHQiLCJidXR0b24iLCJuZXh0QnV0dG9uIiwibGVuZ3RoIiwidHlwZSIsImNsYXNzTmFtZSIsImxvYWRNb3JlIiwiY29ubmVjdGlvbiIsInJlY29ubmVjdCIsIm5hbWUiLCJvbmxpbmUiLCJtZW1iZXJzIiwiY2F0ZWdvcmllcyIsImRlc2NyaXB0aW9uIiwiaWNvblVybCIsIm5hdGl2ZWpvaW4iLCJpbnZpdGVfY29kZSIsInJlbmRlciIsInNlY3Rpb24iLCJsYWJlbCIsImVsZW1lbnQiLCJvbkNsb3NlIiwiY2xvc2UiLCJvblNldFNlY3Rpb24iLCJzZWN0aW9ucyIsImhyZWYiLCJ0aGVtZSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUEsTUFBTUEsWUFBWSxHQUFHQyxrRUFBYyxDQUFDQyxnQkFBZixDQUFnQyxjQUFoQyxDQUFyQjtBQUVlLE1BQU1DLGFBQU4sU0FBNEJDLHlEQUFLLENBQUNDLFNBQWxDLENBQTRDO0FBRXZELE1BQUlDLGVBQUosR0FBc0I7QUFDbEIsV0FBTyxDQUFDLEtBQUQsRUFBUSxXQUFSLEVBQXFCLFdBQXJCLEVBQWtDLGdCQUFsQyxFQUFvRCxZQUFwRCxFQUFrRSxXQUFsRSxFQUErRSxnQkFBL0UsRUFBaUcsZUFBakcsRUFBa0gsa0JBQWxILEVBQXNJLE9BQXRJLEVBQStJLFdBQS9JLEVBQTRKLFVBQTVKLEVBQXdLLGFBQXhLLEVBQXVMLE9BQXZMLENBQVA7QUFDSDs7QUFFREMsYUFBVyxDQUFDQyxLQUFELEVBQVE7QUFDZixVQUFNQSxLQUFOO0FBQ0EsU0FBS0MsS0FBTCxHQUFhO0FBQ1RDLGNBQVEsRUFBRSxLQUREO0FBRVRDLFdBQUssRUFBRSxFQUZFO0FBR1RDLGFBQU8sRUFBRSxJQUhBO0FBSVRDLFVBQUksRUFBRSxJQUpHO0FBS1RDLGFBQU8sRUFBRTtBQUNMQyxlQUFPLEVBQUUsRUFESjtBQUVMQyxZQUFJLEVBQUUsQ0FGRDtBQUdMQyxZQUFJLEVBQUUsQ0FIRDtBQUlMQyxhQUFLLEVBQUUsQ0FKRjtBQUtMQyxZQUFJLEVBQUU7QUFMRDtBQUxBLEtBQWI7QUFjQSxTQUFLQyxjQUFMLEdBQXNCLEtBQUtBLGNBQUwsQ0FBb0JDLElBQXBCLENBQXlCLElBQXpCLENBQXRCO0FB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QUNyQ3FGLGFBQU8sRUFBRSxLQUFLN0UsS0FBTCxDQUFXOEUsS0FEaUI7QUFFckNDLGtCQUFZLEVBQUUsS0FBS25FLGNBRmtCO0FBR3JDOEQsYUFBTyxFQUFFLEtBQUt6RSxLQUFMLENBQVdDLFFBSGlCO0FBSXJDOEUsY0FBUSxFQUFFLENBQ047QUFBQ04sZUFBTyxFQUFFLFFBQVY7QUFBb0JDLGFBQUssRUFBRXpDLDJEQUFPLENBQUN2QyxhQUFSLENBQXNCNEI7QUFBakQsT0FETSxFQUVOO0FBQUNtRCxlQUFPLEVBQUUsUUFBVjtBQUFvQkUsZUFBTyxFQUFFLE1BQU0sS0FBSzNDO0FBQXhDLE9BRk0sRUFHTjtBQUFDeUMsZUFBTyxFQUFFLFFBQVY7QUFBb0JDLGFBQUssRUFBRXpDLDJEQUFPLENBQUN2QyxhQUFSLENBQXNCeUU7QUFBakQsT0FITSxFQUlOLEdBQUdBLFVBSkcsRUFLTjtBQUFDTSxlQUFPLEVBQUU7QUFBVixPQUxNLEVBTU47QUFBQ0EsZUFBTyxFQUFFLFFBQVY7QUFBb0JDLGFBQUssRUFBRS9FLHlEQUFLLENBQUNtRCxhQUFOLENBQW9CLEdBQXBCLEVBQXlCO0FBQUNrQyxjQUFJLEVBQUUsNEJBQVA7QUFBcUN2RCxnQkFBTSxFQUFFO0FBQTdDLFNBQXpCLEVBQWlGLG9CQUFqRjtBQUEzQixPQU5NLEVBT047QUFBQ2dELGVBQU8sRUFBRTtBQUFWLE9BUE0sRUFRTjtBQUFDQSxlQUFPLEVBQUUsUUFBVjtBQUFvQkUsZUFBTyxFQUFFLE1BQU0sS0FBS2I7QUFBeEMsT0FSTSxDQUoyQjtBQWNyQ21CLFdBQUssRUFBRTtBQWQ4QixLQUFsQyxDQUFQO0FBZ0JIOztBQWxLc0QiLCJmaWxlIjoiLi9zcmMvdWkvcHVibGljc2VydmVycy9tZW51LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtSZWFjdCwgV2VicGFja01vZHVsZXMsIFN0cmluZ3N9IGZyb20gXCJtb2R1bGVzXCI7XHJcbmltcG9ydCBTZXR0aW5nc1RpdGxlIGZyb20gXCIuLi9zZXR0aW5ncy90aXRsZVwiO1xyXG5pbXBvcnQgU2VydmVyQ2FyZCBmcm9tIFwiLi9jYXJkXCI7XHJcbmltcG9ydCBDb25uZWN0aW9uIGZyb20gXCIuLi8uLi9zdHJ1Y3RzL3BzY29ubmVjdGlvblwiO1xyXG5pbXBvcnQgU2VhcmNoIGZyb20gXCIuLi9zZXR0aW5ncy9jb21wb25lbnRzL3NlYXJjaFwiO1xyXG5cclxuY29uc3QgU2V0dGluZ3NWaWV3ID0gV2VicGFja01vZHVsZXMuZ2V0QnlEaXNwbGF5TmFtZShcIlNldHRpbmdzVmlld1wiKTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFB1YmxpY1NlcnZlcnMgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xyXG5cclxuICAgIGdldCBjYXRlZ29yeUJ1dHRvbnMoKSB7XHJcbiAgICAgICAgcmV0dXJuIFtcIkFsbFwiLCBcIkZQUyBHYW1lc1wiLCBcIk1NTyBHYW1lc1wiLCBcIlN0cmF0ZWd5IEdhbWVzXCIsIFwiTU9CQSBHYW1lc1wiLCBcIlJQRyBHYW1lc1wiLCBcIlRhYmxldG9wIEdhbWVzXCIsIFwiU2FuZGJveCBHYW1lc1wiLCBcIlNpbXVsYXRpb24gR2FtZXNcIiwgXCJNdXNpY1wiLCBcIkNvbW11bml0eVwiLCBcIkxhbmd1YWdlXCIsIFwiUHJvZ3JhbW1pbmdcIiwgXCJPdGhlclwiXTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcm9wcykge1xyXG4gICAgICAgIHN1cGVyKHByb3BzKTtcclxuICAgICAgICB0aGlzLnN0YXRlID0ge1xyXG4gICAgICAgICAgICBjYXRlZ29yeTogXCJBbGxcIixcclxuICAgICAgICAgICAgcXVlcnk6IFwiXCIsXHJcbiAgICAgICAgICAgIGxvYWRpbmc6IHRydWUsXHJcbiAgICAgICAgICAgIHVzZXI6IG51bGwsXHJcbiAgICAgICAgICAgIHJlc3VsdHM6IHtcclxuICAgICAgICAgICAgICAgIHNlcnZlcnM6IFtdLFxyXG4gICAgICAgICAgICAgICAgc2l6ZTogMCxcclxuICAgICAgICAgICAgICAgIGZyb206IDAsXHJcbiAgICAgICAgICAgICAgICB0b3RhbDogMCxcclxuICAgICAgICAgICAgICAgIG5leHQ6IG51bGxcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHRoaXMuY2hhbmdlQ2F0ZWdvcnkgPSB0aGlzLmNoYW5nZUNhdGVnb3J5LmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy5zZWFyY2hLZXlEb3duID0gdGhpcy5zZWFyY2hLZXlEb3duLmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy5jb25uZWN0ID0gdGhpcy5jb25uZWN0LmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy5sb2FkTmV4dFBhZ2UgPSB0aGlzLmxvYWROZXh0UGFnZS5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMuam9pbiA9IHRoaXMuam9pbi5iaW5kKHRoaXMpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbXBvbmVudERpZE1vdW50KCkge1xyXG4gICAgICAgIHRoaXMuY2hlY2tDb25uZWN0aW9uKCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgY2hlY2tDb25uZWN0aW9uKCkge1xyXG4gICAgICAgIGNvbnN0IHVzZXJEYXRhID0gYXdhaXQgQ29ubmVjdGlvbi5jaGVja0Nvbm5lY3Rpb24oKTtcclxuICAgICAgICBpZiAoIXVzZXJEYXRhKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNldFN0YXRlKHtsb2FkaW5nOiB0cnVlLCB1c2VyOiBudWxsfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe3VzZXI6IHVzZXJEYXRhfSk7XHJcbiAgICAgICAgdGhpcy5zZWFyY2goKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBjb25uZWN0KCkge1xyXG4gICAgICAgIGF3YWl0IENvbm5lY3Rpb24uY29ubmVjdCgpO1xyXG4gICAgICAgIHRoaXMuY2hlY2tDb25uZWN0aW9uKCk7XHJcbiAgICB9XHJcblxyXG4gICAgc2VhcmNoS2V5RG93bihlKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc3RhdGUubG9hZGluZyB8fCBlLndoaWNoICE9PSAxMykgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMuc2VhcmNoKGUudGFyZ2V0LnZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBzZWFyY2godGVybSA9IFwiXCIsIGZyb20gPSAwKSB7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7cXVlcnk6IHRlcm0sIGxvYWRpbmc6IHRydWV9KTtcclxuICAgICAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgQ29ubmVjdGlvbi5zZWFyY2goe3Rlcm0sIGNhdGVnb3J5OiB0aGlzLnN0YXRlLmNhdGVnb3J5ID09IFwiQWxsXCIgPyBcIlwiIDogdGhpcy5zdGF0ZS5jYXRlZ29yeSwgZnJvbX0pO1xyXG4gICAgICAgIGlmICghcmVzdWx0cykge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zZXRTdGF0ZSh7cmVzdWx0czoge1xyXG4gICAgICAgICAgICAgICAgc2VydmVyczogW10sXHJcbiAgICAgICAgICAgICAgICBzaXplOiAwLFxyXG4gICAgICAgICAgICAgICAgZnJvbTogMCxcclxuICAgICAgICAgICAgICAgIHRvdGFsOiAwLFxyXG4gICAgICAgICAgICAgICAgbmV4dDogbnVsbFxyXG4gICAgICAgICAgICB9fSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe2xvYWRpbmc6IGZhbHNlLCByZXN1bHRzfSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgY2hhbmdlQ2F0ZWdvcnkoaWQpIHtcclxuICAgICAgICBpZiAodGhpcy5zdGF0ZS5sb2FkaW5nKSByZXR1cm47XHJcbiAgICAgICAgYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiB0aGlzLnNldFN0YXRlKHtjYXRlZ29yeTogaWR9LCByZXNvbHZlKSk7XHJcbiAgICAgICAgdGhpcy5zZWFyY2goKTtcclxuICAgIH1cclxuXHJcbiAgICBsb2FkTmV4dFBhZ2UoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc3RhdGUubG9hZGluZykgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMuc2VhcmNoKHRoaXMuc3RhdGUucXVlcnksIHRoaXMuc3RhdGUucmVzdWx0cy5uZXh0KTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBqb2luKGlkLCBuYXRpdmUgPSBmYWxzZSkge1xyXG4gICAgICAgIHJldHVybiBhd2FpdCBDb25uZWN0aW9uLmpvaW4oaWQsIG5hdGl2ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHNlYXJjaEJveCgpIHtcclxuICAgICAgICByZXR1cm4gPFNlYXJjaCBvbktleURvd249e3RoaXMuc2VhcmNoS2V5RG93bn0gcGxhY2Vob2xkZXI9e2Ake1N0cmluZ3MuUHVibGljU2VydmVycy5zZWFyY2h9Li4uYH0gLz47XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHRpdGxlKCkge1xyXG4gICAgICAgIGlmICghdGhpcy5zdGF0ZS51c2VyKSByZXR1cm4gU3RyaW5ncy5QdWJsaWNTZXJ2ZXJzLm5vdENvbm5lY3RlZDtcclxuICAgICAgICBpZiAodGhpcy5zdGF0ZS5sb2FkaW5nKSByZXR1cm4gYCR7U3RyaW5ncy5QdWJsaWNTZXJ2ZXJzLmxvYWRpbmd9Li4uYDtcclxuICAgICAgICBjb25zdCBzdGFydCA9IHRoaXMuc3RhdGUucmVzdWx0cy5mcm9tICsgMTtcclxuICAgICAgICBjb25zdCB0b3RhbCA9IHRoaXMuc3RhdGUucmVzdWx0cy50b3RhbDtcclxuICAgICAgICBjb25zdCBlbmQgPSB0aGlzLnN0YXRlLnJlc3VsdHMubmV4dCA/IHRoaXMuc3RhdGUucmVzdWx0cy5uZXh0IDogdG90YWw7XHJcbiAgICAgICAgbGV0IHRpdGxlID0gU3RyaW5ncy5QdWJsaWNTZXJ2ZXJzLnJlc3VsdHMuZm9ybWF0KHtzdGFydCwgZW5kLCB0b3RhbCwgY2F0ZWdvcnk6IHRoaXMuc3RhdGUuY2F0ZWdvcnl9KTtcclxuICAgICAgICBpZiAodGhpcy5zdGF0ZS5xdWVyeSkgdGl0bGUgKz0gXCIgXCIgKyBTdHJpbmdzLlB1YmxpY1NlcnZlcnMucXVlcnkuZm9ybWF0KHtxdWVyeTogdGhpcy5zdGF0ZS5xdWVyeX0pO1xyXG4gICAgICAgIHJldHVybiB0aXRsZTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgY29udGVudCgpIHtcclxuICAgICAgICBjb25zdCBjb25uZWN0QnV0dG9uID0gdGhpcy5zdGF0ZS51c2VyID8gbnVsbCA6IHt0aXRsZTogU3RyaW5ncy5QdWJsaWNTZXJ2ZXJzLmNvbm5lY3QsIG9uQ2xpY2s6IHRoaXMuY29ubmVjdH07XHJcbiAgICAgICAgY29uc3QgcGlubmVkID0gdGhpcy5zdGF0ZS5jYXRlZ29yeSA9PSBcIkFsbFwiIHx8ICF0aGlzLnN0YXRlLnVzZXIgPyB0aGlzLmJkU2VydmVyIDogbnVsbDtcclxuICAgICAgICBjb25zdCBzZXJ2ZXJzID0gdGhpcy5zdGF0ZS5yZXN1bHRzLnNlcnZlcnMubWFwKChzZXJ2ZXIpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoU2VydmVyQ2FyZCwge2tleTogc2VydmVyLmlkZW50aWZpZXIsIHNlcnZlcjogc2VydmVyLCBqb2luZWQ6IENvbm5lY3Rpb24uaGFzSm9pbmVkKHNlcnZlci5pZGVudGlmaWVyKSwgam9pbjogdGhpcy5qb2luLCBkZWZhdWx0QXZhdGFyOiBDb25uZWN0aW9uLmdldERlZmF1bHRBdmF0YXJ9KTtcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gW1JlYWN0LmNyZWF0ZUVsZW1lbnQoU2V0dGluZ3NUaXRsZSwge3RleHQ6IHRoaXMudGl0bGUsIGJ1dHRvbjogY29ubmVjdEJ1dHRvbn0pLFxyXG4gICAgICAgICAgICBwaW5uZWQsXHJcbiAgICAgICAgICAgIHNlcnZlcnMsXHJcbiAgICAgICAgICAgIHRoaXMuc3RhdGUucmVzdWx0cy5uZXh0ID8gdGhpcy5uZXh0QnV0dG9uIDogbnVsbCxcclxuICAgICAgICAgICAgdGhpcy5zdGF0ZS5yZXN1bHRzLnNlcnZlcnMubGVuZ3RoID4gMCAmJiBSZWFjdC5jcmVhdGVFbGVtZW50KFNldHRpbmdzVGl0bGUsIHt0ZXh0OiB0aGlzLnRpdGxlfSldO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBuZXh0QnV0dG9uKCkge1xyXG4gICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFwiYnV0dG9uXCIsIHt0eXBlOiBcImJ1dHRvblwiLCBjbGFzc05hbWU6IFwiYmQtYnV0dG9uIGJkLWJ1dHRvbi1uZXh0XCIsIG9uQ2xpY2s6IHRoaXMubG9hZE5leHRQYWdlfSwgdGhpcy5zdGF0ZS5sb2FkaW5nID8gU3RyaW5ncy5QdWJsaWNTZXJ2ZXJzLmxvYWRpbmcgOiBTdHJpbmdzLlB1YmxpY1NlcnZlcnMubG9hZE1vcmUpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBjb25uZWN0aW9uKCkge1xyXG4gICAgICAgIGNvbnN0IHt1c2VyfSA9IHRoaXMuc3RhdGU7XHJcbiAgICAgICAgaWYgKCF1c2VyKSByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7aWQ6IFwiYmQtY29ubmVjdGlvblwifSk7XHJcbiAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge2lkOiBcImJkLWNvbm5lY3Rpb25cIn0sXHJcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge2NsYXNzTmFtZTogXCJiZC1mb290bm90ZVwifSwgU3RyaW5ncy5QdWJsaWNTZXJ2ZXJzLmNvbm5lY3Rpb24uZm9ybWF0KHVzZXIpKSxcclxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImJ1dHRvblwiLCB7dHlwZTogXCJidXR0b25cIiwgY2xhc3NOYW1lOiBcImJkLWJ1dHRvbiBiZC1idXR0b24tcmVjb25uZWN0XCIsIG9uQ2xpY2s6IHRoaXMuY29ubmVjdH0sIFN0cmluZ3MuUHVibGljU2VydmVycy5yZWNvbm5lY3QpXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgYmRTZXJ2ZXIoKSB7XHJcbiAgICAgICAgY29uc3Qgc2VydmVyID0ge1xyXG4gICAgICAgICAgICBuYW1lOiBcIkJldHRlckRpc2NvcmRcIixcclxuICAgICAgICAgICAgb25saW5lOiBcIjc1MDArXCIsXHJcbiAgICAgICAgICAgIG1lbWJlcnM6IFwiMjAwMDArXCIsXHJcbiAgICAgICAgICAgIGNhdGVnb3JpZXM6IFtcImNvbW11bml0eVwiLCBcInByb2dyYW1taW5nXCIsIFwic3VwcG9ydFwiXSxcclxuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiT2ZmaWNpYWwgQmV0dGVyRGlzY29yZCBzZXJ2ZXIgZm9yIHBsdWdpbnMsIHRoZW1lcywgc3VwcG9ydCwgZXRjXCIsXHJcbiAgICAgICAgICAgIGlkZW50aWZpZXI6IFwiODYwMDQ3NDQ5NjY5MTQwNDhcIixcclxuICAgICAgICAgICAgaWNvblVybDogXCJodHRwczovL2Nkbi5kaXNjb3JkYXBwLmNvbS9pY29ucy84NjAwNDc0NDk2NjkxNDA0OC8yOTJlN2Y2YmZmZjJiNzFkZmQxM2U1MDhhODU5YWVkZC53ZWJwXCIsXHJcbiAgICAgICAgICAgIG5hdGl2ZWpvaW46IHRydWUsXHJcbiAgICAgICAgICAgIGludml0ZV9jb2RlOiBcIjBUbWZvNVpiT1JDUnFiQWRcIixcclxuICAgICAgICAgICAgcGlubmVkOiB0cnVlXHJcbiAgICAgICAgfTtcclxuICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChTZXJ2ZXJDYXJkLCB7c2VydmVyOiBzZXJ2ZXIsIHBpbm5lZDogdHJ1ZSwgam9pbmVkOiBDb25uZWN0aW9uLmhhc0pvaW5lZChzZXJ2ZXIuaWRlbnRpZmllciksIGRlZmF1bHRBdmF0YXI6IENvbm5lY3Rpb24uZ2V0RGVmYXVsdEF2YXRhcn0pO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICBjb25zdCBjYXRlZ29yaWVzID0gdGhpcy5jYXRlZ29yeUJ1dHRvbnMubWFwKG5hbWUgPT4gKHtcclxuICAgICAgICAgICAgICAgIHNlY3Rpb246IG5hbWUsXHJcbiAgICAgICAgICAgICAgICBsYWJlbDogbmFtZSxcclxuICAgICAgICAgICAgICAgIGVsZW1lbnQ6ICgpID0+IHRoaXMuY29udGVudFxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoU2V0dGluZ3NWaWV3LCB7XHJcbiAgICAgICAgICAgIG9uQ2xvc2U6IHRoaXMucHJvcHMuY2xvc2UsXHJcbiAgICAgICAgICAgIG9uU2V0U2VjdGlvbjogdGhpcy5jaGFuZ2VDYXRlZ29yeSxcclxuICAgICAgICAgICAgc2VjdGlvbjogdGhpcy5zdGF0ZS5jYXRlZ29yeSxcclxuICAgICAgICAgICAgc2VjdGlvbnM6IFtcclxuICAgICAgICAgICAgICAgIHtzZWN0aW9uOiBcIkhFQURFUlwiLCBsYWJlbDogU3RyaW5ncy5QdWJsaWNTZXJ2ZXJzLnNlYXJjaH0sXHJcbiAgICAgICAgICAgICAgICB7c2VjdGlvbjogXCJDVVNUT01cIiwgZWxlbWVudDogKCkgPT4gdGhpcy5zZWFyY2hCb3h9LFxyXG4gICAgICAgICAgICAgICAge3NlY3Rpb246IFwiSEVBREVSXCIsIGxhYmVsOiBTdHJpbmdzLlB1YmxpY1NlcnZlcnMuY2F0ZWdvcmllc30sXHJcbiAgICAgICAgICAgICAgICAuLi5jYXRlZ29yaWVzLFxyXG4gICAgICAgICAgICAgICAge3NlY3Rpb246IFwiRElWSURFUlwifSxcclxuICAgICAgICAgICAgICAgIHtzZWN0aW9uOiBcIkhFQURFUlwiLCBsYWJlbDogUmVhY3QuY3JlYXRlRWxlbWVudChcImFcIiwge2hyZWY6IFwiaHR0cHM6Ly9kaXNjb3Jkc2VydmVycy5jb21cIiwgdGFyZ2V0OiBcIl9ibGFua1wifSwgXCJEaXNjb3JkU2VydmVycy5jb21cIil9LFxyXG4gICAgICAgICAgICAgICAge3NlY3Rpb246IFwiRElWSURFUlwifSxcclxuICAgICAgICAgICAgICAgIHtzZWN0aW9uOiBcIkNVU1RPTVwiLCBlbGVtZW50OiAoKSA9PiB0aGlzLmNvbm5lY3Rpb259XHJcbiAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgIHRoZW1lOiBcImRhcmtcIlxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59XHJcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/publicservers/menu.js\n");
/***/ }),
/***/ "./src/ui/settings.js":
/*!****************************!*\
!*** ./src/ui/settings.js ***!
\****************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../modules/modules.js */ \"./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_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].on(\"strings-updated\", this.forceUpdate);\n }\n\n onDrawerToggle(collection, group, state) {\n const drawerStates = _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"DataStore\"].getBDData(\"drawerStates\") || {};\n if (!drawerStates[collection]) drawerStates[collection] = {};\n drawerStates[collection][group] = state;\n _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"DataStore\"].setBDData(\"drawerStates\", drawerStates);\n }\n\n getDrawerState(collection, group, defaultValue) {\n const drawerStates = _modules_modules_js__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_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Settings\"].collections.length + _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Settings\"].panels.length;\n onChange(collection, category, id);\n const after = _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Settings\"].collections.length + _modules_modules_js__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_modules_js__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_modules_js__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_modules_js__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_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"ReactComponents\"].get(\"UserSettings\", m => m.prototype && m.prototype.generateSections);\n _modules_modules_js__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_modules_js__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_modules_js__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_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Settings\"].state[collection.id], _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Settings\"].onSettingChange.bind(_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Settings\"], collection.id), collection.button ? collection.button : null)\n });\n }\n\n for (const panel of _modules_modules_js__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_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"WebpackModules\"].getByProps(\"standardSidebarView\").standardSidebarView.split(\" \")[0];\n const node = document.querySelector(`.${viewClass}`);\n if (!node) return;\n const stateNode = _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Utilities\"].findInReactTree(_modules_modules_js__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/NzZiZSJdLCJuYW1lcyI6WyJTZXR0aW5nc1JlbmRlcmVyIiwiY29uc3RydWN0b3IiLCJwYXRjaFNlY3Rpb25zIiwiRXZlbnRzIiwib24iLCJmb3JjZVVwZGF0ZSIsIm9uRHJhd2VyVG9nZ2xlIiwiY29sbGVjdGlvbiIsImdyb3VwIiwic3RhdGUiLCJkcmF3ZXJTdGF0ZXMiLCJEYXRhU3RvcmUiLCJnZXRCRERhdGEiLCJzZXRCRERhdGEiLCJnZXREcmF3ZXJTdGF0ZSIsImRlZmF1bHRWYWx1ZSIsImhhc093blByb3BlcnR5Iiwib25DaGFuZ2UiLCJjYXRlZ29yeSIsImlkIiwiYmVmb3JlIiwiU2V0dGluZ3MiLCJjb2xsZWN0aW9ucyIsImxlbmd0aCIsInBhbmVscyIsImFmdGVyIiwic2V0VGltZW91dCIsImJpbmQiLCJidWlsZFNldHRpbmdzUGFuZWwiLCJ0aXRsZSIsImNvbmZpZyIsImJ1dHRvbiIsImZvckVhY2giLCJzZWN0aW9uIiwic2V0dGluZ3MiLCJpdGVtIiwidmFsdWUiLCJnZXRTZXR0aW5nc1BhbmVsIiwiZ3JvdXBzIiwiUmVhY3QiLCJjcmVhdGVFbGVtZW50IiwiU2V0dGluZ3NUaXRsZSIsInRleHQiLCJtYXAiLCJTZXR0aW5nc0dyb3VwIiwiT2JqZWN0IiwiYXNzaWduIiwic2hvd24iLCJnZXRBZGRvblBhbmVsIiwiYWRkb25MaXN0IiwiYWRkb25TdGF0ZSIsIm9wdGlvbnMiLCJBZGRvbkxpc3QiLCJVc2VyU2V0dGluZ3MiLCJSZWFjdENvbXBvbmVudHMiLCJnZXQiLCJtIiwicHJvdG90eXBlIiwiZ2VuZXJhdGVTZWN0aW9ucyIsIlBhdGNoZXIiLCJ0aGlzT2JqZWN0IiwiX3JlYWN0SW50ZXJuYWxGaWJlciIsInJldHVybiIsIm1lbW9pemVkUHJvcHMiLCJhcmdzIiwicmV0dXJuVmFsdWUiLCJsb2NhdGlvbiIsImZpbmRJbmRleCIsInMiLCJ0b0xvd2VyQ2FzZSIsImluc2VydCIsInNwbGljZSIsImVsZW1lbnQiLCJIZWFkZXIiLCJkaXNhYmxlZCIsIm5hbWUiLCJsYWJlbCIsIm9uU2V0dGluZ0NoYW5nZSIsInBhbmVsIiwic29ydCIsImEiLCJiIiwib3JkZXIiLCJjbGlja0xpc3RlbmVyIiwib25DbGljayIsImV2ZW50Iiwidmlld0NsYXNzIiwiV2VicGFja01vZHVsZXMiLCJnZXRCeVByb3BzIiwic3RhbmRhcmRTaWRlYmFyVmlldyIsInNwbGl0Iiwibm9kZSIsImRvY3VtZW50IiwicXVlcnlTZWxlY3RvciIsInN0YXRlTm9kZSIsIlV0aWxpdGllcyIsImZpbmRJblJlYWN0VHJlZSIsImdldFJlYWN0SW5zdGFuY2UiLCJ3YWxrYWJsZSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVlLG1FQUFJLE1BQU1BLGdCQUFOLENBQXVCO0FBRXRDQyxhQUFXLEdBQUc7QUFDVixTQUFLQyxhQUFMO0FBQ0FDLDhEQUFNLENBQUNDLEVBQVAsQ0FBVSxpQkFBVixFQUE2QixLQUFLQyxXQUFsQztBQUNIOztBQUVEQyxnQkFBYyxDQUFDQyxVQUFELEVBQWFDLEtBQWIsRUFBb0JDLEtBQXBCLEVBQTJCO0FBQ3JDLFVBQU1DLFlBQVksR0FBR0MsNkRBQVMsQ0FBQ0MsU0FBVixDQUFvQixjQUFwQixLQUF1QyxFQUE1RDtBQUNBLFFBQUksQ0FBQ0YsWUFBWSxDQUFDSCxVQUFELENBQWpCLEVBQStCRyxZQUFZLENBQUNILFVBQUQsQ0FBWixHQUEyQixFQUEzQjtBQUMvQkcsZ0JBQVksQ0FBQ0gsVUFBRCxDQUFaLENBQXlCQyxLQUF6QixJQUFrQ0MsS0FBbEM7QUFDQUUsaUVBQVMsQ0FBQ0UsU0FBVixDQUFvQixjQUFwQixFQUFvQ0gsWUFBcEM7QUFDSDs7QUFFREksZ0JBQWMsQ0FBQ1AsVUFBRCxFQUFhQyxLQUFiLEVBQW9CTyxZQUFwQixFQUFrQztBQUM1QyxVQUFNTCxZQUFZLEdBQUdDLDZEQUFTLENBQUNDLFNBQVYsQ0FB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QUFELElBQVdQLEtBQUssQ0FBQ0ssYUFBTixDQUFvQnZCLFVBQXBCLEVBQWdDeUIsS0FBaEMsRUFBdUNwQixXQUF2QyxDQUEzQjtBQUN6QkssY0FBTSxDQUFDUSxLQUFELENBQU47QUFDSDtBQUNKLEtBckJEO0FBc0JBLFNBQUt6RSxXQUFMO0FBQ0g7O0FBRURBLGFBQVcsR0FBRztBQUNWLFVBQU1pRixTQUFTLEdBQUdDLGtFQUFjLENBQUNDLFVBQWYsQ0FBMEIscUJBQTFCLEVBQWlEQyxtQkFBakQsQ0FBcUVDLEtBQXJFLENBQTJFLEdBQTNFLEVBQWdGLENBQWhGLENBQWxCO0FBQ0EsVUFBTUMsSUFBSSxHQUFHQyxRQUFRLENBQUNDLGFBQVQsQ0FBd0IsSUFBR1AsU0FBVSxFQUFyQyxDQUFiO0FBQ0EsUUFBSSxDQUFDSyxJQUFMLEVBQVc7QUFDWCxVQUFNRyxTQUFTLEdBQUdDLDZEQUFTLENBQUNDLGVBQVYsQ0FBMEJELDZEQUFTLENBQUNFLGdCQUFWLENBQTJCTixJQUEzQixDQUExQixFQUE0RG5DLENBQUMsSUFBSUEsQ0FBQyxJQUFJQSxDQUFDLENBQUNFLGdCQUF4RSxFQUEwRjtBQUFDd0MsY0FBUSxFQUFFLENBQUMsUUFBRCxFQUFXLFdBQVg7QUFBWCxLQUExRixDQUFsQjtBQUNBLFFBQUlKLFNBQUosRUFBZUEsU0FBUyxDQUFDekYsV0FBVjtBQUNsQjs7QUEzRnFDLENBQTNCLEVBQWYiLCJmaWxlIjoiLi9zcmMvdWkvc2V0dGluZ3MuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlYWN0LCBXZWJwYWNrTW9kdWxlcywgUGF0Y2hlciwgUmVhY3RDb21wb25lbnRzLCBVdGlsaXRpZXMsIFNldHRpbmdzLCBFdmVudHMsIERhdGFTdG9yZX0gZnJvbSBcIm1vZHVsZXNcIjtcclxuXHJcbmltcG9ydCBBZGRvbkxpc3QgZnJvbSBcIi4vc2V0dGluZ3MvYWRkb25saXN0XCI7XHJcbmltcG9ydCBTZXR0aW5nc0dyb3VwIGZyb20gXCIuL3NldHRpbmdzL2dyb3VwXCI7XHJcbmltcG9ydCBTZXR0aW5nc1RpdGxlIGZyb20gXCIuL3NldHRpbmdzL3RpdGxlXCI7XHJcbmltcG9ydCBIZWFkZXIgZnJvbSBcIi4vc2V0dGluZ3Mvc2lkZWJhcmhlYWRlclwiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgbmV3IGNsYXNzIFNldHRpbmdzUmVuZGVyZXIge1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIHRoaXMucGF0Y2hTZWN0aW9ucygpO1xyXG4gICAgICAgIEV2ZW50cy5vbihcInN0cmluZ3MtdXBkYXRlZFwiLCB0aGlzLmZvcmNlVXBkYXRlKTtcclxuICAgIH1cclxuXHJcbiAgICBvbkRyYXdlclRvZ2dsZShjb2xsZWN0aW9uLCBncm91cCwgc3RhdGUpIHtcclxuICAgICAgICBjb25zdCBkcmF3ZXJTdGF0ZXMgPSBEYXRhU3RvcmUuZ2V0QkREYXRhKFwiZHJhd2VyU3RhdGVzXCIpIHx8IHt9O1xyXG4gICAgICAgIGlmICghZHJhd2VyU3RhdGVzW2NvbGxlY3Rpb25dKSBkcmF3ZXJTdGF0ZXNbY29sbGVjdGlvbl0gPSB7fTtcclxuICAgICAgICBkcmF3ZXJTdGF0ZXNbY29sbGVjdGlvbl1bZ3JvdXBdID0gc3RhdGU7XHJcbiAgICAgICAgRGF0YVN0b3JlLnNldEJERGF0YShcImRyYXdlclN0YXRlc1wiLCBkcmF3ZXJTdGF0ZXMpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldERyYXdlclN0YXRlKGNvbGxlY3Rpb24sIGdyb3VwLCBkZWZhdWx0VmFsdWUpIHtcclxuICAgICAgICBjb25zdCBkcmF3ZXJTdGF0ZXMgPSBEYXRhU3RvcmUuZ2V0QkREYXRhKFwiZHJhd2VyU3RhdGVzXCIpIHx8IHt9O1xyXG4gICAgICAgIGlmICghZHJhd2VyU3RhdGVzW2NvbGxlY3Rpb25dKSByZXR1cm4gZGVmYXVsdFZhbHVlO1xyXG4gICAgICAgIGlmICghZHJhd2VyU3RhdGVzW2NvbGxlY3Rpb25dLmhhc093blByb3BlcnR5KGdyb3VwKSkgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcclxuICAgICAgICByZXR1cm4gZHJhd2VyU3RhdGVzW2NvbGxlY3Rpb25dW2dyb3VwXTtcclxuICAgIH1cclxuXHJcbiAgICBvbkNoYW5nZShvbkNoYW5nZSkge1xyXG4gICAgICAgIHJldHVybiAoY29sbGVjdGlvbiwgY2F0ZWdvcnksIGlkKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGJlZm9yZSA9IFNldHRpbmdzLmNvbGxlY3Rpb25zLmxlbmd0aCArIFNldHRpbmdzLnBhbmVscy5sZW5ndGg7XHJcbiAgICAgICAgICAgIG9uQ2hhbmdlKGNvbGxlY3Rpb24sIGNhdGVnb3J5LCBpZCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGFmdGVyID0gU2V0dGluZ3MuY29sbGVjdGlvbnMubGVuZ3RoICsgU2V0dGluZ3MucGFuZWxzLmxlbmd0aDtcclxuICAgICAgICAgICAgaWYgKGJlZm9yZSAhPSBhZnRlcikgc2V0VGltZW91dCh0aGlzLmZvcmNlVXBkYXRlLmJpbmQodGhpcyksIDUwKTtcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIGJ1aWxkU2V0dGluZ3NQYW5lbChpZCwgdGl0bGUsIGNvbmZpZywgc3RhdGUsIG9uQ2hhbmdlLCBidXR0b24gPSBudWxsKSB7XHJcbiAgICAgICAgY29uZmlnLmZvckVhY2goc2VjdGlvbiA9PiB7XHJcbiAgICAgICAgICAgIHNlY3Rpb24uc2V0dGluZ3MuZm9yRWFjaChpdGVtID0+IGl0ZW0udmFsdWUgPSBzdGF0ZVtzZWN0aW9uLmlkXVtpdGVtLmlkXSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0U2V0dGluZ3NQYW5lbChpZCwgdGl0bGUsIGNvbmZpZywgdGhpcy5vbkNoYW5nZShvbkNoYW5nZSksIGJ1dHRvbik7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0U2V0dGluZ3NQYW5lbChpZCwgdGl0bGUsIGdyb3Vwcywgb25DaGFuZ2UsIGJ1dHRvbiA9IG51bGwpIHtcclxuICAgICAgICByZXR1cm4gW1JlYWN0LmNyZWF0ZUVsZW1lbnQoU2V0dGluZ3NUaXRsZSwge3RleHQ6IHRpdGxlLCBidXR0b246IGJ1dHRvbn0pLCBncm91cHMubWFwKHNlY3Rpb24gPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChTZXR0aW5nc0dyb3VwLCBPYmplY3QuYXNzaWduKHt9LCBzZWN0aW9uLCB7XHJcbiAgICAgICAgICAgICAgICBvbkNoYW5nZTogb25DaGFuZ2UsXHJcbiAgICAgICAgICAgICAgICBvbkRyYXdlclRvZ2dsZTogc3RhdGUgPT4gdGhpcy5vbkRyYXdlclRvZ2dsZShpZCwgc2VjdGlvbi5pZCwgc3RhdGUpLFxyXG4gICAgICAgICAgICAgICAgc2hvd246IHRoaXMuZ2V0RHJhd2VyU3RhdGUoaWQsIHNlY3Rpb24uaWQsIHNlY3Rpb24uaGFzT3duUHJvcGVydHkoXCJzaG93blwiKSA/IHNlY3Rpb24uc2hvd24gOiB0cnVlKVxyXG4gICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgfSldO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEFkZG9uUGFuZWwodGl0bGUsIGFkZG9uTGlzdCwgYWRkb25TdGF0ZSwgb3B0aW9ucyA9IHt9KSB7XHJcbiAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoQWRkb25MaXN0LCBPYmplY3QuYXNzaWduKHt9LCB7XHJcbiAgICAgICAgICAgIHRpdGxlOiB0aXRsZSxcclxuICAgICAgICAgICAgYWRkb25MaXN0OiBhZGRvbkxpc3QsXHJcbiAgICAgICAgICAgIGFkZG9uU3RhdGU6IGFkZG9uU3RhdGVcclxuICAgICAgICB9LCBvcHRpb25zKSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgcGF0Y2hTZWN0aW9ucygpIHtcclxuICAgICAgICBjb25zdCBVc2VyU2V0dGluZ3MgPSBhd2FpdCBSZWFjdENvbXBvbmVudHMuZ2V0KFwiVXNlclNldHRpbmdzXCIsIG0gPT4gbS5wcm90b3R5cGUgJiYgbS5wcm90b3R5cGUuZ2VuZXJhdGVTZWN0aW9ucyk7XHJcbiAgICAgICAgUGF0Y2hlci5hZnRlcihcIlNldHRpbmdzTWFuYWdlclwiLCBVc2VyU2V0dGluZ3MucHJvdG90eXBlLCBcInJlbmRlclwiLCAodGhpc09iamVjdCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzT2JqZWN0Ll9yZWFjdEludGVybmFsRmliZXIucmV0dXJuLnJldHVybi5yZXR1cm4ucmV0dXJuLnJldHVybi5yZXR1cm4ucmV0dXJuLm1lbW9pemVkUHJvcHMuaWQgPSBcInVzZXItc2V0dGluZ3NcIjtcclxuICAgICAgICB9KTtcclxuICAgICAgICBQYXRjaGVyLmFmdGVyKFwiU2V0dGluZ3NNYW5hZ2VyXCIsIFVzZXJTZXR0aW5ncy5wcm90b3R5cGUsIFwiZ2VuZXJhdGVTZWN0aW9uc1wiLCAodGhpc09iamVjdCwgYXJncywgcmV0dXJuVmFsdWUpID0+IHtcclxuICAgICAgICAgICAgbGV0IGxvY2F0aW9uID0gcmV0dXJuVmFsdWUuZmluZEluZGV4KHMgPT4gcy5zZWN0aW9uLnRvTG93ZXJDYXNlKCkgPT0gXCJsaW51eFwiKSArIDE7XHJcbiAgICAgICAgICAgIGNvbnN0IGluc2VydCA9IChzZWN0aW9uKSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm5WYWx1ZS5zcGxpY2UobG9jYXRpb24sIDAsIHNlY3Rpb24pO1xyXG4gICAgICAgICAgICAgICAgbG9jYXRpb24rKztcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgaW5zZXJ0KHtzZWN0aW9uOiBcIkRJVklERVJcIn0pO1xyXG4gICAgICAgICAgICAvLyBIZWFkZXJcclxuICAgICAgICAgICAgaW5zZXJ0KHtzZWN0aW9uOiBcIkNVU1RPTVwiLCBlbGVtZW50OiBIZWFkZXJ9KTtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBjb2xsZWN0aW9uIG9mIFNldHRpbmdzLmNvbGxlY3Rpb25zKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoY29sbGVjdGlvbi5kaXNhYmxlZCkgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICBpbnNlcnQoe1xyXG4gICAgICAgICAgICAgICAgICAgIHNlY3Rpb246IGNvbGxlY3Rpb24ubmFtZSxcclxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogY29sbGVjdGlvbi5uYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQ6ICgpID0+IHRoaXMuYnVpbGRTZXR0aW5nc1BhbmVsKGNvbGxlY3Rpb24uaWQsIGNvbGxlY3Rpb24ubmFtZSwgY29sbGVjdGlvbi5zZXR0aW5ncywgU2V0dGluZ3Muc3RhdGVbY29sbGVjdGlvbi5pZF0sIFNldHRpbmdzLm9uU2V0dGluZ0NoYW5nZS5iaW5kKFNldHRpbmdzLCBjb2xsZWN0aW9uLmlkKSwgY29sbGVjdGlvbi5idXR0b24gPyBjb2xsZWN0aW9uLmJ1dHRvbiA6IG51bGwpXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHBhbmVsIG9mIFNldHRpbmdzLnBhbmVscy5zb3J0KChhLGIpID0+IGEub3JkZXIgPiBiLm9yZGVyKSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHBhbmVsLmNsaWNrTGlzdGVuZXIpIHBhbmVsLm9uQ2xpY2sgPSAoZXZlbnQpID0+IHBhbmVsLmNsaWNrTGlzdGVuZXIodGhpc09iamVjdCwgZXZlbnQsIHJldHVyblZhbHVlKTtcclxuICAgICAgICAgICAgICAgIGluc2VydChwYW5lbCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmZvcmNlVXBkYXRlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZm9yY2VVcGRhdGUoKSB7XHJcbiAgICAgICAgY29uc3Qgdmlld0NsYXNzID0gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcInN0YW5kYXJkU2lkZWJhclZpZXdcIikuc3RhbmRhcmRTaWRlYmFyVmlldy5zcGxpdChcIiBcIilbMF07XHJcbiAgICAgICAgY29uc3Qgbm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYC4ke3ZpZXdDbGFzc31gKTtcclxuICAgICAgICBpZiAoIW5vZGUpIHJldHVybjtcclxuICAgICAgICBjb25zdCBzdGF0ZU5vZGUgPSBVdGlsaXRpZXMuZmluZEluUmVhY3RUcmVlKFV0aWxpdGllcy5nZXRSZWFjdEluc3RhbmNlKG5vZGUpLCBtID0+IG0gJiYgbS5nZW5lcmF0ZVNlY3Rpb25zLCB7d2Fsa2FibGU6IFtcInJldHVyblwiLCBcInN0YXRlTm9kZVwiXX0pO1xyXG4gICAgICAgIGlmIChzdGF0ZU5vZGUpIHN0YXRlTm9kZS5mb3JjZVVwZGF0ZSgpO1xyXG4gICAgfVxyXG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/settings.js\n");
/***/ }),
/***/ "./src/ui/settings/addoncard.jsx":
/*!***************************************!*\
!*** ./src/ui/settings/addoncard.jsx ***!
\***************************************/
/*! exports provided: default */
/***/ (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_modules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../modules/modules.js */ \"./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_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"WebpackModules\"].getByDisplayName(\"Tooltip\");\nclass AddonCard extends _modules_modules_js__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_modules_js__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_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"DOM\"].offset(thisNode);\n const containerOffset = _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"DOM\"].offset(container);\n const original = container.scrollTop;\n const endPoint = thisNodeOffset.top - containerOffset.top + container.scrollTop - 30;\n _modules_modules_js__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_modules_js__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_modules_js__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_modules_js__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_modules_js__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_modules_js__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_modules_js__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_modules_js__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_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-addon-card settings-open bd-switch-item\"\n }, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-close\",\n onClick: this.closeSettings\n }, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_close__WEBPACK_IMPORTED_MODULE_1__[\"default\"], null)), /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", props, /*#__PURE__*/_modules_modules_js__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_modules_js__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_modules_js__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_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"DiscordModules\"].LayerStack.popLayer();\n _modules_modules_js__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_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-footer\"\n }, /*#__PURE__*/_modules_modules_js__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_modules_js__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_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.addonSettings));\n }\n\n makeButton(title, children, action) {\n return /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(Tooltip, {\n color: \"black\",\n position: \"top\",\n text: title\n }, props => {\n return /*#__PURE__*/_modules_modules_js__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_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n id: `${addon.id}-card`,\n className: \"bd-addon-card settings-closed\"\n }, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-addon-header\"\n }, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"span\", {\n className: \"bd-title\"\n }, this.buildTitle(name, version, author)), /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-controls\"\n }, this.props.editAddon && this.makeButton(_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.editAddon, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_edit__WEBPACK_IMPORTED_MODULE_3__[\"default\"], null), this.props.editAddon), this.props.deleteAddon && this.makeButton(_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.deleteAddon, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_icons_delete__WEBPACK_IMPORTED_MODULE_4__[\"default\"], null), this.props.deleteAddon), this.props.showReloadIcon && this.makeButton(_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.reload, /*#__PURE__*/_modules_modules_js__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_modules_js__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_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-description-wrap scroller-wrap fade\"\n }, /*#__PURE__*/_modules_modules_js__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_modules_js__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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvc2V0dGluZ3MvYWRkb25jYXJkLmpzeD82MzczIl0sIm5hbWVzIjpbIlRvb2x0aXAiLCJXZWJwYWNrTW9kdWxlcyIsImdldEJ5RGlzcGxheU5hbWUiLCJBZGRvbkNhcmQiLCJSZWFjdCIsIkNvbXBvbmVudCIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJzdGF0ZSIsInNldHRpbmdzT3BlbiIsInNldHRpbmdzUGFuZWwiLCJwYW5lbFJlZiIsImNyZWF0ZVJlZiIsIm9uQ2hhbmdlIiwiYmluZCIsInJlbG9hZCIsInNob3dTZXR0aW5ncyIsImNsb3NlU2V0dGluZ3MiLCJhZGRvbiIsImlkIiwiZm9yY2VVcGRhdGUiLCJjb21wb25lbnREaWRVcGRhdGUiLCJOb2RlIiwiY3VycmVudCIsImFwcGVuZENoaWxkIiwic2V0SW1tZWRpYXRlIiwiaXNIaWRkZW4iLCJjb250YWluZXIiLCJlbGVtZW50IiwiY1RvcCIsInNjcm9sbFRvcCIsImNCb3R0b20iLCJjbGllbnRIZWlnaHQiLCJlVG9wIiwib2Zmc2V0VG9wIiwiZUJvdHRvbSIsInRoaXNOb2RlIiwiY2xvc2VzdCIsInRoaXNOb2RlT2Zmc2V0IiwiRE9NIiwib2Zmc2V0IiwiY29udGFpbmVyT2Zmc2V0Iiwib3JpZ2luYWwiLCJlbmRQb2ludCIsInRvcCIsImFuaW1hdGUiLCJkdXJhdGlvbiIsInVwZGF0ZSIsInByb2dyZXNzIiwiZ2V0U3RyaW5nIiwidmFsdWUiLCJ0b1N0cmluZyIsImVuYWJsZWQiLCJoYXNTZXR0aW5ncyIsInNldFN0YXRlIiwiaW5uZXJIVE1MIiwiYnVpbGRUaXRsZSIsIm5hbWUiLCJ2ZXJzaW9uIiwiYXV0aG9yIiwidGl0bGUiLCJTdHJpbmdzIiwiQWRkb25zIiwic3BsaXQiLCJuYW1lSW5kZXgiLCJmaW5kSW5kZXgiLCJzIiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTmFtZSIsInZlcnNpb25JbmRleCIsImF1dGhvckluZGV4IiwiZmxhdCIsInNldHRpbmdzQ29tcG9uZW50IiwiZ2V0U2V0dGluZ3NQYW5lbCIsImVyciIsIkxvZ2dlciIsInN0YWNrdHJhY2UiLCJyZWYiLCJ3YXJuIiwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwiLCJjaGlsZCIsIiQkdHlwZW9mIiwiU3ltYm9sIiwiZm9yIiwiYnVpbGRMaW5rIiwid2hpY2giLCJ1cmwiLCJsaW5rIiwib25DbGljayIsImV2ZW50IiwicHJldmVudERlZmF1bHQiLCJzdG9wUHJvcGFnYXRpb24iLCJjb2RlIiwidGVzdGVyIiwidGVzdCIsIm1hdGNoIiwiRGlzY29yZE1vZHVsZXMiLCJMYXllclN0YWNrIiwicG9wTGF5ZXIiLCJJbnZpdGVBY3Rpb25zIiwiYWNjZXB0SW52aXRlQW5kVHJhbnNpdGlvblRvSW52aXRlQ2hhbm5lbCIsImZvb3RlciIsImxpbmtzIiwic29tZSIsImwiLCJsaW5rQ29tcG9uZW50cyIsIm1hcCIsImZpbHRlciIsImMiLCJjb21wIiwiaSIsImxlbmd0aCIsImFkZG9uU2V0dGluZ3MiLCJtYWtlQnV0dG9uIiwiY2hpbGRyZW4iLCJhY3Rpb24iLCJyZW5kZXIiLCJkZXNjcmlwdGlvbiIsImVkaXRBZGRvbiIsImRlbGV0ZUFkZG9uIiwic2hvd1JlbG9hZEljb24iLCJvcmlnaW5hbFJlbmRlciIsInByb3RvdHlwZSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsInNldCIsImdldCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBLE1BQU1BLE9BQU8sR0FBR0Msa0VBQWMsQ0FBQ0MsZ0JBQWYsQ0FBZ0MsU0FBaEMsQ0FBaEI7QUFFZSxNQUFNQyxTQUFOLFNBQXdCQyx5REFBSyxDQUFDQyxTQUE5QixDQUF3QztBQUVuREMsYUFBVyxDQUFDQyxLQUFELEVBQVE7QUFDZixVQUFNQSxLQUFOO0FBQ0EsU0FBS0MsS0FBTCxHQUFhO0FBQ1RDLGtCQUFZLEVBQUU7QUFETCxLQUFiO0FBSUEs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UCxDQUFzQnpILFNBQVMsQ0FBQ3VILFNBQWhDLEVBQTJDLFFBQTNDLEVBQXFEO0FBQ2pERyxZQUFVLEVBQUUsS0FEcUM7QUFFakRDLGNBQVksRUFBRSxLQUZtQztBQUdqREMsS0FBRyxFQUFFLFlBQVc7QUFBQ3BELDhEQUFNLENBQUNHLElBQVAsQ0FBWSxXQUFaLEVBQXlCLHFHQUF6QjtBQUFpSSxHQUhqRztBQUlqRGtELEtBQUcsRUFBRSxNQUFNUDtBQUpzQyxDQUFyRCIsImZpbGUiOiIuL3NyYy91aS9zZXR0aW5ncy9hZGRvbmNhcmQuanN4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtSZWFjdCwgTG9nZ2VyLCBTdHJpbmdzLCBXZWJwYWNrTW9kdWxlcywgRE9NLCBEaXNjb3JkTW9kdWxlc30gZnJvbSBcIm1vZHVsZXNcIjtcclxuaW1wb3J0IENsb3NlQnV0dG9uIGZyb20gXCIuLi9pY29ucy9jbG9zZVwiO1xyXG5pbXBvcnQgUmVsb2FkSWNvbiBmcm9tIFwiLi4vaWNvbnMvcmVsb2FkXCI7XHJcbmltcG9ydCBFZGl0SWNvbiBmcm9tIFwiLi4vaWNvbnMvZWRpdFwiO1xyXG5pbXBvcnQgRGVsZXRlSWNvbiBmcm9tIFwiLi4vaWNvbnMvZGVsZXRlXCI7XHJcbmltcG9ydCBTd2l0Y2ggZnJvbSBcIi4vY29tcG9uZW50cy9zd2l0Y2hcIjtcclxuaW1wb3J0IEVycm9yQm91bmRhcnkgZnJvbSAgXCIuLi9lcnJvcmJvdW5kYXJ5XCI7XHJcblxyXG5jb25zdCBUb29sdGlwID0gV2VicGFja01vZHVsZXMuZ2V0QnlEaXNwbGF5TmFtZShcIlRvb2x0aXBcIik7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBZGRvbkNhcmQgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByb3BzKSB7XHJcbiAgICAgICAgc3VwZXIocHJvcHMpO1xyXG4gICAgICAgIHRoaXMuc3RhdGUgPSB7XHJcbiAgICAgICAgICAgIHNldHRpbmdzT3BlbjogZmFsc2VcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB0aGlzLnNldHRpbmdzUGFuZWwgPSBcIlwiO1xyXG4gICAgICAgIHRoaXMucGFuZWxSZWYgPSBSZWFjdC5jcmVhdGVSZWYoKTtcclxuXHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IHRoaXMub25DaGFuZ2UuYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLnJlbG9hZCA9IHRoaXMucmVsb2FkLmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy5zaG93U2V0dGluZ3MgPSB0aGlzLnNob3dTZXR0aW5ncy5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMuY2xvc2VTZXR0aW5ncyA9IHRoaXMuY2xvc2VTZXR0aW5ncy5iaW5kKHRoaXMpO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbG9hZCgpIHtcclxuICAgICAgICBpZiAoIXRoaXMucHJvcHMucmVsb2FkKSByZXR1cm47XHJcbiAgICAgICAgdGhpcy5wcm9wcy5hZGRvbiA9IHRoaXMucHJvcHMucmVsb2FkKHRoaXMucHJvcHMuYWRkb24uaWQpO1xyXG4gICAgICAgIHRoaXMuZm9yY2VVcGRhdGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBjb21wb25lbnREaWRVcGRhdGUoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnN0YXRlLnNldHRpbmdzT3BlbikgcmV0dXJuO1xyXG4gICAgICAgIGlmICh0aGlzLnNldHRpbmdzUGFuZWwgaW5zdGFuY2VvZiBOb2RlKSB0aGlzLnBhbmVsUmVmLmN1cnJlbnQuYXBwZW5kQ2hpbGQodGhpcy5zZXR0aW5nc1BhbmVsKTtcclxuXHJcbiAgICAgICAgc2V0SW1tZWRpYXRlKCgpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgaXNIaWRkZW4gPSAoY29udGFpbmVyLCBlbGVtZW50KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjVG9wID0gY29udGFpbmVyLnNjcm9sbFRvcDtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNCb3R0b20gPSBjVG9wICsgY29udGFpbmVyLmNsaWVudEhlaWdodDtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGVUb3AgPSBlbGVtZW50Lm9mZnNldFRvcDtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGVCb3R0b20gPSBlVG9wICsgZWxlbWVudC5jbGllbnRIZWlnaHQ7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gIChlVG9wIDwgY1RvcCB8fCBlQm90dG9tID4gY0JvdHRvbSk7XHJcbiAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICBjb25zdCB0aGlzTm9kZSA9IHRoaXMucGFuZWxSZWYuY3VycmVudDtcclxuICAgICAgICAgICAgY29uc3QgY29udGFpbmVyID0gdGhpc05vZGUuY2xvc2VzdChcIi5zY3JvbGxlckJhc2UtMjg5SmloXCIpO1xyXG4gICAgICAgICAgICBpZiAoIWNvbnRhaW5lciB8fCAhaXNIaWRkZW4oY29udGFpbmVyLCB0aGlzTm9kZSkpIHJldHVybjtcclxuICAgICAgICAgICAgY29uc3QgdGhpc05vZGVPZmZzZXQgPSBET00ub2Zmc2V0KHRoaXNOb2RlKTtcclxuICAgICAgICAgICAgY29uc3QgY29udGFpbmVyT2Zmc2V0ID0gRE9NLm9mZnNldChjb250YWluZXIpO1xyXG4gICAgICAgICAgICBjb25zdCBvcmlnaW5hbCA9IGNvbnRhaW5lci5zY3JvbGxUb3A7XHJcbiAgICAgICAgICAgIGNvbnN0IGVuZFBvaW50ID0gdGhpc05vZGVPZmZzZXQudG9wIC0gY29udGFpbmVyT2Zmc2V0LnRvcCArIGNvbnRhaW5lci5zY3JvbGxUb3AgLSAzMDtcclxuICAgICAgICAgICAgRE9NLmFuaW1hdGUoe1xyXG4gICAgICAgICAgICAgICAgZHVyYXRpb246IDMwMCxcclxuICAgICAgICAgICAgICAgIHVwZGF0ZTogZnVuY3Rpb24ocHJvZ3Jlc3MpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZW5kUG9pbnQgPiBvcmlnaW5hbCkgY29udGFpbmVyLnNjcm9sbFRvcCA9IG9yaWdpbmFsICsgKHByb2dyZXNzICogKGVuZFBvaW50IC0gb3JpZ2luYWwpKTtcclxuICAgICAgICAgICAgICAgICAgICBlbHNlIGNvbnRhaW5lci5zY3JvbGxUb3AgPSBvcmlnaW5hbCAtIChwcm9ncmVzcyAqIChvcmlnaW5hbCAtIGVuZFBvaW50KSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFN0cmluZyh2YWx1ZSkge3JldHVybiB0eXBlb2YgdmFsdWUgPT0gXCJzdHJpbmdcIiA/IHZhbHVlIDogdmFsdWUudG9TdHJpbmcoKTt9XHJcblxyXG4gICAgb25DaGFuZ2UoKSB7XHJcbiAgICAgICAgdGhpcy5wcm9wcy5vbkNoYW5nZSAmJiB0aGlzLnByb3BzLm9uQ2hhbmdlKHRoaXMucHJvcHMuYWRkb24uaWQpO1xyXG4gICAgICAgIHRoaXMucHJvcHMuZW5hYmxlZCA9ICF0aGlzLnByb3BzLmVuYWJsZWQ7XHJcbiAgICAgICAgdGhpcy5mb3JjZVVwZGF0ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHNob3dTZXR0aW5ncygpIHtcclxuICAgICAgICBpZiAoIXRoaXMucHJvcHMuaGFzU2V0dGluZ3MpIHJldHVybjtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtzZXR0aW5nc09wZW46IHRydWV9KTtcclxuICAgIH1cclxuXHJcbiAgICBjbG9zZVNldHRpbmdzKCkge1xyXG4gICAgICAgIGlmICh0aGlzLnNldHRpbmdzUGFuZWwgaW5zdGFuY2VvZiBOb2RlKSB0aGlzLnBhbmVsUmVmLmN1cnJlbnQuaW5uZXJIVE1MID0gXCJcIjtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtzZXR0aW5nc09wZW46IGZhbHNlfSk7XHJcbiAgICB9XHJcblxyXG4gICAgYnVpbGRUaXRsZShuYW1lLCB2ZXJzaW9uLCBhdXRob3IpIHtcclxuICAgICAgICBjb25zdCB0aXRsZSA9IFN0cmluZ3MuQWRkb25zLnRpdGxlLnNwbGl0KC8oe3tbQS1aYS16XSt9fSkvKTtcclxuICAgICAgICBjb25zdCBuYW1lSW5kZXggPSB0aXRsZS5maW5kSW5kZXgocyA9PiBzID09IFwie3tuYW1lfX1cIik7XHJcbiAgICAgICAgaWYgKG5hbWVJbmRleCkgdGl0bGVbbmFtZUluZGV4XSA9IFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIHtjbGFzc05hbWU6IFwiYmQtbmFtZVwifSwgbmFtZSk7XHJcbiAgICAgICAgY29uc3QgdmVyc2lvbkluZGV4ID0gdGl0bGUuZmluZEluZGV4KHMgPT4gcyA9PSBcInt7dmVyc2lvbn19XCIpO1xyXG4gICAgICAgIGlmIChuYW1lSW5kZXgpIHRpdGxlW3ZlcnNpb25JbmRleF0gPSBSZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7Y2xhc3NOYW1lOiBcImJkLXZlcnNpb25cIn0sIHZlcnNpb24pO1xyXG4gICAgICAgIGNvbnN0IGF1dGhvckluZGV4ID0gdGl0bGUuZmluZEluZGV4KHMgPT4gcyA9PSBcInt7YXV0aG9yfX1cIik7XHJcbiAgICAgICAgaWYgKG5hbWVJbmRleCkgdGl0bGVbYXV0aG9ySW5kZXhdID0gUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwge2NsYXNzTmFtZTogXCJiZC1hdXRob3JcIn0sIGF1dGhvcik7XHJcbiAgICAgICAgcmV0dXJuIHRpdGxlLmZsYXQoKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgc2V0dGluZ3NDb21wb25lbnQoKSB7XHJcbiAgICAgICAgY29uc3QgYWRkb24gPSB0aGlzLnByb3BzLmFkZG9uO1xyXG4gICAgICAgIGNvbnN0IG5hbWUgPSB0aGlzLmdldFN0cmluZyhhZGRvbi5uYW1lKTtcclxuICAgICAgICB0cnkgeyB0aGlzLnNldHRpbmdzUGFuZWwgPSB0aGlzLnByb3BzLmdldFNldHRpbmdzUGFuZWwoKTsgfVxyXG4gICAgICAgIGNhdGNoIChlcnIpIHsgTG9nZ2VyLnN0YWNrdHJhY2UoXCJBZGRvbiBTZXR0aW5nc1wiLCBcIlVuYWJsZSB0byBnZXQgc2V0dGluZ3MgcGFuZWwgZm9yIFwiICsgbmFtZSArIFwiLlwiLCBlcnIpOyB9XHJcblxyXG4gICAgICAgIGNvbnN0IHByb3BzID0ge2lkOiBgJHtuYW1lfS1zZXR0aW5nc2AsIGNsYXNzTmFtZTogXCJhZGRvbi1zZXR0aW5nc1wiLCByZWY6IHRoaXMucGFuZWxSZWZ9O1xyXG4gICAgICAgIGlmICh0eXBlb2YodGhpcy5zZXR0aW5nc1BhbmVsKSA9PSBcInN0cmluZ1wiKSB7XHJcbiAgICAgICAgICAgIExvZ2dlci53YXJuKFwiQWRkb24gU2V0dGluZ3NcIiwgXCJVc2luZyBhIERPTVN0cmluZyBpcyBvZmZpY2lhbGx5IGRlcHJlY2F0ZWQuXCIpO1xyXG4gICAgICAgICAgICBwcm9wcy5kYW5nZXJvdXNseVNldElubmVySFRNTCA9IHRoaXMuc2V0dGluZ3NQYW5lbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBjaGlsZCA9IG51bGw7XHJcbiAgICAgICAgaWYgKHR5cGVvZih0aGlzLnNldHRpbmdzUGFuZWwpID09PSBcImZ1bmN0aW9uXCIpIGNoaWxkID0gPHRoaXMuc2V0dGluZ3NQYW5lbCAvPjtcclxuICAgICAgICBpZiAodGhpcy5zZXR0aW5nc1BhbmVsLiQkdHlwZW9mICYmIHRoaXMuc2V0dGluZ3NQYW5lbC4kJHR5cGVvZiA9PT0gU3ltYm9sLmZvcihcInJlYWN0LmVsZW1lbnRcIikpIGNoaWxkID0gdGhpcy5zZXR0aW5nc1BhbmVsO1xyXG5cclxuICAgICAgICByZXR1cm4gPGRpdiBjbGFzc05hbWU9XCJiZC1hZGRvbi1jYXJkIHNldHRpbmdzLW9wZW4gYmQtc3dpdGNoLWl0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJkLWNsb3NlXCIgb25DbGljaz17dGhpcy5jbG9zZVNldHRpbmdzfT48Q2xvc2VCdXR0b24gLz48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHsuLi5wcm9wc30+PEVycm9yQm91bmRhcnk+e2NoaWxkfTwvRXJyb3JCb3VuZGFyeT48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PjtcclxuICAgIH1cclxuXHJcbiAgICBidWlsZExpbmsod2hpY2gpIHtcclxuICAgICAgICBjb25zdCB1cmwgPSB0aGlzLnByb3BzLmFkZG9uW3doaWNoXTtcclxuICAgICAgICBpZiAoIXVybCkgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgY29uc3QgbGluayA9IDxhIGNsYXNzTmFtZT1cImJkLWxpbmsgYmQtbGluay13ZWJzaXRlXCIgaHJlZj17dXJsfSB0YXJnZXQ9XCJfYmxhbmtcIiByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCI+e1N0cmluZ3MuQWRkb25zW3doaWNoXX08L2E+O1xyXG4gICAgICAgIGlmICh3aGljaCA9PSBcImludml0ZVwiKSB7XHJcbiAgICAgICAgICAgIGxpbmsucHJvcHMub25DbGljayA9IGZ1bmN0aW9uKGV2ZW50KSB7XHJcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgICAgICBsZXQgY29kZSA9IHVybDtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHRlc3RlciA9IC9cXC5nZ1xcLyguKikkLztcclxuICAgICAgICAgICAgICAgIGlmICh0ZXN0ZXIudGVzdChjb2RlKSkgY29kZSA9IGNvZGUubWF0Y2godGVzdGVyKVsxXTtcclxuICAgICAgICAgICAgICAgIERpc2NvcmRNb2R1bGVzLkxheWVyU3RhY2sucG9wTGF5ZXIoKTtcclxuICAgICAgICAgICAgICAgIERpc2NvcmRNb2R1bGVzLkludml0ZUFjdGlvbnMuYWNjZXB0SW52aXRlQW5kVHJhbnNpdGlvblRvSW52aXRlQ2hhbm5lbChjb2RlKTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGxpbms7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGZvb3RlcigpIHtcclxuICAgICAgICBjb25zdCBsaW5rcyA9IFtcIndlYnNpdGVcIiwgXCJzb3VyY2VcIiwgXCJpbnZpdGVcIiwgXCJkb25hdGVcIiwgXCJwYXRyZW9uXCJdO1xyXG4gICAgICAgIGlmICghbGlua3Muc29tZShsID0+IHRoaXMucHJvcHMuYWRkb25bbF0pICYmICF0aGlzLnByb3BzLmhhc1NldHRpbmdzKSByZXR1cm4gbnVsbDtcclxuICAgICAgICBjb25zdCBsaW5rQ29tcG9uZW50cyA9IGxpbmtzLm1hcCh0aGlzLmJ1aWxkTGluay5iaW5kKHRoaXMpKS5maWx0ZXIoYyA9PiBjKTtcclxuICAgICAgICByZXR1cm4gPGRpdiBjbGFzc05hbWU9XCJiZC1mb290ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJiZC1saW5rc1wiPntsaW5rQ29tcG9uZW50cy5tYXAoKGNvbXAsIGkpID0+IGkgPCBsaW5rQ29tcG9uZW50cy5sZW5ndGggLSAxID8gW2NvbXAsIFwiIHwgXCJdIDogY29tcCkuZmxhdCgpfTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICB7dGhpcy5wcm9wcy5oYXNTZXR0aW5ncyAmJiA8YnV0dG9uIG9uQ2xpY2s9e3RoaXMuc2hvd1NldHRpbmdzfSBjbGFzc05hbWU9XCJiZC1idXR0b24gYmQtYnV0dG9uLWFkZG9uLXNldHRpbmdzXCIgZGlzYWJsZWQ9eyF0aGlzLnByb3BzLmVuYWJsZWR9PntTdHJpbmdzLkFkZG9ucy5hZGRvblNldHRpbmdzfTwvYnV0dG9uPn1cclxuICAgICAgICAgICAgICAgIDwvZGl2PjtcclxuICAgIH1cclxuXHJcbiAgICBtYWtlQnV0dG9uKHRpdGxlLCBjaGlsZHJlbiwgYWN0aW9uKSB7XHJcbiAgICAgICAgcmV0dXJuICA8VG9vbHRpcCBjb2xvcj1cImJsYWNrXCIgcG9zaXRpb249XCJ0b3BcIiB0ZXh0PXt0aXRsZX0+XHJcbiAgICAgICAgICAgICAgICAgICAgeyhwcm9wcykgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPGRpdiB7Li4ucHJvcHN9IGNsYXNzTmFtZT1cImJkLWFkZG9uLWJ1dHRvblwiIG9uQ2xpY2s9e2FjdGlvbn0+e2NoaWxkcmVufTwvZGl2PjtcclxuICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgPC9Ub29sdGlwPjtcclxuICAgIH1cclxuXHJcbiAgICByZW5kZXIoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc3RhdGUuc2V0dGluZ3NPcGVuKSByZXR1cm4gdGhpcy5zZXR0aW5nc0NvbXBvbmVudDtcclxuXHJcbiAgICAgICAgY29uc3QgYWRkb24gPSB0aGlzLnByb3BzLmFkZG9uO1xyXG4gICAgICAgIGNvbnN0IG5hbWUgPSB0aGlzLmdldFN0cmluZyhhZGRvbi5uYW1lKTtcclxuICAgICAgICBjb25zdCBhdXRob3IgPSB0aGlzLmdldFN0cmluZyhhZGRvbi5hdXRob3IpO1xyXG4gICAgICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gdGhpcy5nZXRTdHJpbmcoYWRkb24uZGVzY3JpcHRpb24pO1xyXG4gICAgICAgIGNvbnN0IHZlcnNpb24gPSB0aGlzLmdldFN0cmluZyhhZGRvbi52ZXJzaW9uKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIDxkaXYgaWQ9e2Ake2FkZG9uLmlkfS1jYXJkYH0gY2xhc3NOYW1lPVwiYmQtYWRkb24tY2FyZCBzZXR0aW5ncy1jbG9zZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJkLWFkZG9uLWhlYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiYmQtdGl0bGVcIj57dGhpcy5idWlsZFRpdGxlKG5hbWUsIHZlcnNpb24sIGF1dGhvcil9PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZC1jb250cm9sc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt0aGlzLnByb3BzLmVkaXRBZGRvbiAmJiB0aGlzLm1ha2VCdXR0b24oU3RyaW5ncy5BZGRvbnMuZWRpdEFkZG9uLCA8RWRpdEljb24gLz4sIHRoaXMucHJvcHMuZWRpdEFkZG9uKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dGhpcy5wcm9wcy5kZWxldGVBZGRvbiAmJiB0aGlzLm1ha2VCdXR0b24oU3RyaW5ncy5BZGRvbnMuZGVsZXRlQWRkb24sIDxEZWxldGVJY29uIC8+LCB0aGlzLnByb3BzLmRlbGV0ZUFkZG9uKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dGhpcy5wcm9wcy5zaG93UmVsb2FkSWNvbiAmJiB0aGlzLm1ha2VCdXR0b24oU3RyaW5ncy5BZGRvbnMucmVsb2FkLCA8UmVsb2FkSWNvbiBjbGFzc05hbWU9XCJiZC1yZWxvYWQgYmQtcmVsb2FkLWNhcmRcIiAvPiwgdGhpcy5yZWxvYWQpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTd2l0Y2ggY2hlY2tlZD17dGhpcy5wcm9wcy5lbmFibGVkfSBvbkNoYW5nZT17dGhpcy5vbkNoYW5nZX0gLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmQtZGVzY3JpcHRpb24td3JhcCBzY3JvbGxlci13cmFwIGZhZGVcIj48ZGl2IGNsYXNzTmFtZT1cImJkLWRlc2NyaXB0aW9uIHNjcm9sbGVyXCI+e2Rlc2NyaXB0aW9ufTwvZGl2PjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIHt0aGlzLmZvb3Rlcn1cclxuICAgICAgICAgICAgICAgIDwvZGl2PjtcclxuICAgIH1cclxufVxyXG5cclxuY29uc3Qgb3JpZ2luYWxSZW5kZXIgPSBBZGRvbkNhcmQucHJvdG90eXBlLnJlbmRlcjtcclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KEFkZG9uQ2FyZC5wcm90b3R5cGUsIFwicmVuZGVyXCIsIHtcclxuICAgIGVudW1lcmFibGU6IGZhbHNlLFxyXG4gICAgY29uZmlndXJhYmxlOiBmYWxzZSxcclxuICAgIHNldDogZnVuY3Rpb24oKSB7TG9nZ2VyLndhcm4oXCJBZGRvbkNhcmRcIiwgXCJBZGRvbiBwb2xpY3kgZm9yIHBsdWdpbnMgIzUgaHR0cHM6Ly9naXRodWIuY29tL3JhdWVuemkvQmV0dGVyRGlzY29yZEFwcC93aWtpL0FkZG9uLVBvbGljaWVzI3BsdWdpbnNcIik7fSxcclxuICAgIGdldDogKCkgPT4gb3JpZ2luYWxSZW5kZXJcclxufSk7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/settings/addoncard.jsx\n");
/***/ }),
/***/ "./src/ui/settings/addonlist.jsx":
/*!***************************************!*\
!*** ./src/ui/settings/addonlist.jsx ***!
\***************************************/
/*! exports provided: default */
/***/ (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_modules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../modules/modules.js */ \"./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_modules_js__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_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].on(`${this.props.prefix}-loaded`, this.update);\n _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].on(`${this.props.prefix}-unloaded`, this.update);\n }\n\n componentWillUnmount() {\n _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Events\"].off(`${this.props.prefix}-loaded`, this.update);\n _modules_modules_js__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_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.name,\n value: \"name\"\n }, {\n label: _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.author,\n value: \"author\"\n }, {\n label: _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.version,\n value: \"version\"\n }, {\n label: _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.added,\n value: \"added\"\n }, {\n label: _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.modified,\n value: \"modified\"\n }];\n }\n\n get directions() {\n return [{\n label: _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Sorting.ascending,\n value: true\n }, {\n label: _modules_modules_js__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_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Settings\"].get(\"settings\", \"addons\", \"autoReload\");\n const button = folder ? {\n title: _modules_modules_js__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_modules_js__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_modules_js__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_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-controls bd-addon-controls\"\n }, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_components_search__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n onChange: this.search,\n placeholder: `${_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.search.format({\n type: this.props.title\n })}...`\n }), /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-addon-dropdowns\"\n }, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-select-wrapper\"\n }, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"label\", {\n className: \"bd-label\"\n }, _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Sorting.sortBy, \":\"), /*#__PURE__*/_modules_modules_js__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_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-select-wrapper\"\n }, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"label\", {\n className: \"bd-label\"\n }, _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Sorting.order, \":\"), /*#__PURE__*/_modules_modules_js__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_modules_js__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_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(_errorboundary__WEBPACK_IMPORTED_MODULE_7__[\"default\"], null, /*#__PURE__*/_modules_modules_js__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_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Modals.confirmAction, _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"Strings\"].Addons.confirmDelete.format({\n name: addon.name\n }), {\n danger: true,\n confirmText: _modules_modules_js__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_modules_js__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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvc2V0dGluZ3MvYWRkb25saXN0LmpzeD82NGQyIl0sIm5hbWVzIjpbIkFkZG9uTGlzdCIsIlJlYWN0IiwiQ29tcG9uZW50IiwiY29uc3RydWN0b3IiLCJwcm9wcyIsInN0YXRlIiwic29ydCIsImFzY2VuZGluZyIsInF1ZXJ5IiwiYmluZCIsInJldmVyc2UiLCJzZWFyY2giLCJ1cGRhdGUiLCJjb21wb25lbnREaWRNb3VudCIsIkV2ZW50cyIsIm9uIiwicHJlZml4IiwiY29tcG9uZW50V2lsbFVubW91bnQiLCJvZmYiLCJmb3JjZVVwZGF0ZSIsInJlbG9hZCIsInJlZnJlc2hMaXN0IiwidmFsdWUiLCJzZXRTdGF0ZSIsImV2ZW50IiwidGFyZ2V0IiwidG9Mb2NhbGVMb3dlckNhc2UiLCJzb3J0T3B0aW9ucyIsImxhYmVsIiwiU3RyaW5ncyIsIkFkZG9ucyIsIm5hbWUiLCJhdXRob3IiLCJ2ZXJzaW9uIiwiYWRkZWQiLCJtb2RpZmllZCIsImRpcmVjdGlvbnMiLCJTb3J0aW5nIiwiZGVzY2VuZGluZyIsInJlbmRlciIsInRpdGxlIiwiZm9sZGVyIiwiYWRkb25MaXN0IiwiYWRkb25TdGF0ZSIsIm9uQ2hhbmdlIiwic2hvd1JlbG9hZEljb24iLCJTZXR0aW5ncyIsImdldCIsImJ1dHRvbiIsIm9wZW5Gb2xkZXIiLCJmb3JtYXQiLCJ0eXBlIiwib25DbGljayIsInNoZWxsIiwicmVxdWlyZSIsIm9wZW4iLCJvcGVuSXRlbSIsIm9wZW5QYXRoIiwic29ydGVkQWRkb25zIiwiYSIsImIiLCJmaXJzdCIsInNlY29uZCIsImxvY2FsZUNvbXBhcmUiLCJzb3J0QnkiLCJvcmRlciIsIm1hcCIsImFkZG9uIiwibWF0Y2hlcyIsImluY2x1ZGVzIiwiZGVzY3JpcHRpb24iLCJoYXNTZXR0aW5ncyIsInBsdWdpbiIsImdldFNldHRpbmdzUGFuZWwiLCJnZXRTZXR0aW5ncyIsImVkaXRBZGRvbiIsImlkIiwiZGVsZXRlQWRkb24iLCJmaW5kIiwic2hvdWxkRGVsZXRlIiwiY29uZmlybURlbGV0ZSIsIlByb21pc2UiLCJyZXNvbHZlIiwiTW9kYWxzIiwic2hvd0NvbmZpcm1hdGlvbk1vZGFsIiwiY29uZmlybUFjdGlvbiIsImRhbmdlciIsImNvbmZpcm1UZXh0Iiwib25Db25maXJtIiwib25DYW5jZWwiLCJvcmlnaW5hbFJlbmRlciIsInByb3RvdHlwZSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsInNldCIsIkxvZ2dlciIsIndhcm4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVlLE1BQU1BLFNBQU4sU0FBd0JDLHlEQUFLLENBQUNDLFNBQTlCLENBQXdDO0FBRW5EQyxhQUFXLENBQUNDLEtBQUQsRUFBUTtBQUNmLFVBQU1BLEtBQU47QUFDQSxTQUFLQyxLQUFMLEdBQWE7QUFBQ0MsVUFBSSxFQUFFLE1BQVA7QUFBZUMsZUFBUyxFQUFFLElBQTFCO0FBQWdDQyxXQUFLLEVBQUU7QUFBdkMsS0FBYjtBQUNBLFNBQUtGLElBQUwsR0FBWSxLQUFLQSxJQUFMLENBQVVHLElBQVYsQ0FBZSxJQUFmLENBQVo7QUFDQSxTQUFLQyxPQUFMLEdBQWUsS0FBS0EsT0FBTCxDQUFhRCxJQUFiLENBQWtCLElBQWxCLENBQWY7QUFDQSxTQUFLRSxNQUFMLEdBQWMsS0FBS0EsTUFBTCxDQUFZRixJQUFaLENBQWlCLElBQWpCLENBQWQ7QUFDQSxTQUFLRyxNQUFMLEdBQWMsS0FBS0EsTUFBTCxDQUFZSCxJQUFaLENBQWlCLElBQWpCLENBQWQ7QUFDSDs7QUFFREksbUJBQWlCLEdBQUc7QUFDaEJDLDhEQUFNLENBQUNDLEVBQVAsQ0FBVyxHQUFFLEtBQUtYLEtBQUwsQ0FBV1ksTUFBTyxTQUEvQixFQUF5QyxLQUFLSixNQUE5QztBQUNBRSw4REFBTSxDQUFDQyxF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MkYsU0FBaEMsRUFBMkMsUUFBM0MsRUFBcUQ7QUFDakRHLFlBQVUsRUFBRSxLQURxQztBQUVqREMsY0FBWSxFQUFFLEtBRm1DO0FBR2pEQyxLQUFHLEVBQUUsWUFBVztBQUFDQyw4REFBTSxDQUFDQyxJQUFQLENBQVksV0FBWixFQUF5QixxR0FBekI7QUFBaUksR0FIakc7QUFJakRuRCxLQUFHLEVBQUUsTUFBTTJDO0FBSnNDLENBQXJEIiwiZmlsZSI6Ii4vc3JjL3VpL3NldHRpbmdzL2FkZG9ubGlzdC5qc3guanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlYWN0LCBTZXR0aW5ncywgU3RyaW5ncywgRXZlbnRzLCBMb2dnZXJ9IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5pbXBvcnQgTW9kYWxzIGZyb20gXCIuLi9tb2RhbHNcIjtcclxuaW1wb3J0IFNldHRpbmdzVGl0bGUgZnJvbSBcIi4vdGl0bGVcIjtcclxuaW1wb3J0IFJlbG9hZEljb24gZnJvbSBcIi4uL2ljb25zL3JlbG9hZFwiO1xyXG5pbXBvcnQgQWRkb25DYXJkIGZyb20gXCIuL2FkZG9uY2FyZFwiO1xyXG5pbXBvcnQgRHJvcGRvd24gZnJvbSBcIi4vY29tcG9uZW50cy9kcm9wZG93blwiO1xyXG5pbXBvcnQgU2VhcmNoIGZyb20gXCIuL2NvbXBvbmVudHMvc2VhcmNoXCI7XHJcbmltcG9ydCBFcnJvckJvdW5kYXJ5IGZyb20gIFwiLi4vZXJyb3Jib3VuZGFyeVwiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQWRkb25MaXN0IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcm9wcykge1xyXG4gICAgICAgIHN1cGVyKHByb3BzKTtcclxuICAgICAgICB0aGlzLnN0YXRlID0ge3NvcnQ6IFwibmFtZVwiLCBhc2NlbmRpbmc6IHRydWUsIHF1ZXJ5OiBcIlwifTtcclxuICAgICAgICB0aGlzLnNvcnQgPSB0aGlzLnNvcnQuYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLnJldmVyc2UgPSB0aGlzLnJldmVyc2UuYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLnNlYXJjaCA9IHRoaXMuc2VhcmNoLmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGUgPSB0aGlzLnVwZGF0ZS5iaW5kKHRoaXMpO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBjb21wb25lbnREaWRNb3VudCgpIHtcclxuICAgICAgICBFdmVudHMub24oYCR7dGhpcy5wcm9wcy5wcmVmaXh9LWxvYWRlZGAsIHRoaXMudXBkYXRlKTtcclxuICAgICAgICBFdmVudHMub24oYCR7dGhpcy5wcm9wcy5wcmVmaXh9LXVubG9hZGVkYCwgdGhpcy51cGRhdGUpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xyXG4gICAgICAgIEV2ZW50cy5vZmYoYCR7dGhpcy5wcm9wcy5wcmVmaXh9LWxvYWRlZGAsIHRoaXMudXBkYXRlKTtcclxuICAgICAgICBFdmVudHMub2ZmKGAke3RoaXMucHJvcHMucHJlZml4fS11bmxvYWRlZGAsIHRoaXMudXBkYXRlKTtcclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGUoKSB7XHJcbiAgICAgICAgdGhpcy5mb3JjZVVwZGF0ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbG9hZCgpIHtcclxuICAgICAgICBpZiAodGhpcy5wcm9wcy5yZWZyZXNoTGlzdCkgdGhpcy5wcm9wcy5yZWZyZXNoTGlzdCgpO1xyXG4gICAgICAgIHRoaXMuZm9yY2VVcGRhdGUoKTtcclxuICAgIH1cclxuXHJcbiAgICByZXZlcnNlKHZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7YXNjZW5kaW5nOiB2YWx1ZX0pO1xyXG4gICAgfVxyXG5cclxuICAgIHNvcnQodmFsdWUpIHtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtzb3J0OiB2YWx1ZX0pO1xyXG4gICAgfVxyXG5cclxuICAgIHNlYXJjaChldmVudCkge1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe3F1ZXJ5OiBldmVudC50YXJnZXQudmFsdWUudG9Mb2NhbGVMb3dlckNhc2UoKX0pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBzb3J0T3B0aW9ucygpIHtcclxuICAgICAgICByZXR1cm4gW1xyXG4gICAgICAgICAgICB7bGFiZWw6IFN0cmluZ3MuQWRkb25zLm5hbWUsIHZhbHVlOiBcIm5hbWVcIn0sXHJcbiAgICAgICAgICAgIHtsYWJlbDogU3RyaW5ncy5BZGRvbnMuYXV0aG9yLCB2YWx1ZTogXCJhdXRob3JcIn0sXHJcbiAgICAgICAgICAgIHtsYWJlbDogU3RyaW5ncy5BZGRvbnMudmVyc2lvbiwgdmFsdWU6IFwidmVyc2lvblwifSxcclxuICAgICAgICAgICAge2xhYmVsOiBTdHJpbmdzLkFkZG9ucy5hZGRlZCwgdmFsdWU6IFwiYWRkZWRcIn0sXHJcbiAgICAgICAgICAgIHtsYWJlbDogU3RyaW5ncy5BZGRvbnMubW9kaWZpZWQsIHZhbHVlOiBcIm1vZGlmaWVkXCJ9XHJcbiAgICAgICAgXTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgZGlyZWN0aW9ucygpIHtcclxuICAgICAgICByZXR1cm4gW1xyXG4gICAgICAgICAgICB7bGFiZWw6IFN0cmluZ3MuU29ydGluZy5hc2NlbmRpbmcsIHZhbHVlOiB0cnVlfSxcclxuICAgICAgICAgICAge2xhYmVsOiBTdHJpbmdzLlNvcnRpbmcuZGVzY2VuZGluZywgdmFsdWU6IGZhbHNlfVxyXG4gICAgICAgIF07XHJcbiAgICB9XHJcblxyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIGNvbnN0IHt0aXRsZSwgZm9sZGVyLCBhZGRvbkxpc3QsIGFkZG9uU3RhdGUsIG9uQ2hhbmdlLCByZWxvYWR9ID0gdGhpcy5wcm9wcztcclxuICAgICAgICBjb25zdCBzaG93UmVsb2FkSWNvbiA9ICFTZXR0aW5ncy5nZXQoXCJzZXR0aW5nc1wiLCBcImFkZG9uc1wiLCBcImF1dG9SZWxvYWRcIik7XHJcbiAgICAgICAgY29uc3QgYnV0dG9uID0gZm9sZGVyID8ge3RpdGxlOiBTdHJpbmdzLkFkZG9ucy5vcGVuRm9sZGVyLmZvcm1hdCh7dHlwZTogdGl0bGV9KSwgb25DbGljazogKCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBzaGVsbCA9IHJlcXVpcmUoXCJlbGVjdHJvblwiKS5zaGVsbDtcclxuICAgICAgICAgICAgY29uc3Qgb3BlbiA9IHNoZWxsLm9wZW5JdGVtIHx8IHNoZWxsLm9wZW5QYXRoO1xyXG4gICAgICAgICAgICBvcGVuKGZvbGRlcik7XHJcbiAgICAgICAgfX0gOiBudWxsO1xyXG4gICAgICAgIGNvbnN0IHNvcnRlZEFkZG9ucyA9IGFkZG9uTGlzdC5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGZpcnN0ID0gYVt0aGlzLnN0YXRlLnNvcnRdO1xyXG4gICAgICAgICAgICBjb25zdCBzZWNvbmQgPSBiW3RoaXMuc3RhdGUuc29ydF07XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2YoZmlyc3QpID09IFwic3RyaW5nXCIpIHJldHVybiBmaXJzdC50b0xvY2FsZUxvd2VyQ2FzZSgpLmxvY2FsZUNvbXBhcmUoc2Vjb25kLnRvTG9jYWxlTG93ZXJDYXNlKCkpO1xyXG4gICAgICAgICAgICBpZiAoZmlyc3QgPiBzZWNvbmQpIHJldHVybiAxO1xyXG4gICAgICAgICAgICBpZiAoc2Vjb25kID4gZmlyc3QpIHJldHVybiAtMTtcclxuICAgICAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaWYgKCF0aGlzLnN0YXRlLmFzY2VuZGluZykgc29ydGVkQWRkb25zLnJldmVyc2UoKTtcclxuICAgICAgICByZXR1cm4gW1xyXG4gICAgICAgICAgICA8U2V0dGluZ3NUaXRsZSBrZXk9XCJ0aXRsZVwiIHRleHQ9e3RpdGxlfSBidXR0b249e2J1dHRvbn0gb3RoZXJDaGlsZHJlbj17c2hvd1JlbG9hZEljb24gJiYgPFJlbG9hZEljb24gY2xhc3NOYW1lPVwiYmQtcmVsb2FkXCIgb25DbGljaz17dGhpcy5yZWxvYWQuYmluZCh0aGlzKX0gLz59IC8+LFxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJkLWNvbnRyb2xzIGJkLWFkZG9uLWNvbnRyb2xzXCI+XHJcbiAgICAgICAgICAgICAgICA8U2VhcmNoIG9uQ2hhbmdlPXt0aGlzLnNlYXJjaH0gcGxhY2Vob2xkZXI9e2Ake1N0cmluZ3MuQWRkb25zLnNlYXJjaC5mb3JtYXQoe3R5cGU6IHRoaXMucHJvcHMudGl0bGV9KX0uLi5gfSAvPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZC1hZGRvbi1kcm9wZG93bnNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJkLXNlbGVjdC13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzc05hbWU9XCJiZC1sYWJlbFwiPntTdHJpbmdzLlNvcnRpbmcuc29ydEJ5fTo8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8RHJvcGRvd24gb3B0aW9ucz17dGhpcy5zb3J0T3B0aW9uc30gb25DaGFuZ2U9e3RoaXMuc29ydH0gc3R5bGU9XCJ0cmFuc3BhcmVudFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZC1zZWxlY3Qtd3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3NOYW1lPVwiYmQtbGFiZWxcIj57U3RyaW5ncy5Tb3J0aW5nLm9yZGVyfTo8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8RHJvcGRvd24gb3B0aW9ucz17dGhpcy5kaXJlY3Rpb25zfSBvbkNoYW5nZT17dGhpcy5yZXZlcnNlfSBzdHlsZT1cInRyYW5zcGFyZW50XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj4sXHJcbiAgICAgICAgICAgIDxkaXYga2V5PVwiYWRkb25MaXN0XCIgY2xhc3NOYW1lPXtcImJkLWFkZG9uLWxpc3RcIn0+XHJcbiAgICAgICAgICAgIHtzb3J0ZWRBZGRvbnMubWFwKGFkZG9uID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnN0YXRlLnF1ZXJ5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IG1hdGNoZXMgPSBhZGRvbi5uYW1lLnRvTG9jYWxlTG93ZXJDYXNlKCkuaW5jbHVkZXModGhpcy5zdGF0ZS5xdWVyeSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbWF0Y2hlcyA9IG1hdGNoZXMgfHwgYWRkb24uYXV0aG9yLnRvTG9jYWxlTG93ZXJDYXNlKCkuaW5jbHVkZXModGhpcy5zdGF0ZS5xdWVyeSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbWF0Y2hlcyA9IG1hdGNoZXMgfHwgYWRkb24uZGVzY3JpcHRpb24udG9Mb2NhbGVMb3dlckNhc2UoKS5pbmNsdWRlcyh0aGlzLnN0YXRlLnF1ZXJ5KTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIW1hdGNoZXMpIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY29uc3QgaGFzU2V0dGluZ3MgPSBhZGRvbi50eXBlICYmIHR5cGVvZihhZGRvbi5wbHVnaW4uZ2V0U2V0dGluZ3NQYW5lbCkgPT09IFwiZnVuY3Rpb25cIjtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGdldFNldHRpbmdzID0gaGFzU2V0dGluZ3MgJiYgYWRkb24ucGx1Z2luLmdldFNldHRpbmdzUGFuZWwuYmluZChhZGRvbi5wbHVnaW4pO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIDxFcnJvckJvdW5kYXJ5PjxBZGRvbkNhcmQgZWRpdEFkZG9uPXt0aGlzLmVkaXRBZGRvbi5iaW5kKHRoaXMsIGFkZG9uLmlkKX0gZGVsZXRlQWRkb249e3RoaXMuZGVsZXRlQWRkb24uYmluZCh0aGlzLCBhZGRvbi5pZCl9IHNob3dSZWxvYWRJY29uPXtzaG93UmVsb2FkSWNvbn0ga2V5PXthZGRvbi5pZH0gZW5hYmxlZD17YWRkb25TdGF0ZVthZGRvbi5pZF19IGFkZG9uPXthZGRvbn0gb25DaGFuZ2U9e29uQ2hhbmdlfSByZWxvYWQ9e3JlbG9hZH0gaGFzU2V0dGluZ3M9e2hhc1NldHRpbmdzfSBnZXRTZXR0aW5nc1BhbmVsPXtnZXRTZXR0aW5nc30gLz48L0Vycm9yQm91bmRhcnk+O1xyXG4gICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgXTtcclxuICAgIH1cclxuXHJcbiAgICBlZGl0QWRkb24oaWQpIHtcclxuICAgICAgICBpZiAodGhpcy5wcm9wcy5lZGl0QWRkb24pIHRoaXMucHJvcHMuZWRpdEFkZG9uKGlkKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBkZWxldGVBZGRvbihpZCkge1xyXG4gICAgICAgIGNvbnN0IGFkZG9uID0gdGhpcy5wcm9wcy5hZGRvbkxpc3QuZmluZChhID0+IGEuaWQgPT0gaWQpO1xyXG4gICAgICAgIGNvbnN0IHNob3VsZERlbGV0ZSA9IGF3YWl0IHRoaXMuY29uZmlybURlbGV0ZShhZGRvbik7XHJcbiAgICAgICAgaWYgKCFzaG91bGREZWxldGUpIHJldHVybjtcclxuICAgICAgICBpZiAodGhpcy5wcm9wcy5kZWxldGVBZGRvbikgdGhpcy5wcm9wcy5kZWxldGVBZGRvbihhZGRvbik7XHJcbiAgICB9XHJcblxyXG4gICAgY29uZmlybURlbGV0ZShhZGRvbikge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcclxuICAgICAgICAgICAgTW9kYWxzLnNob3dDb25maXJtYXRpb25Nb2RhbChTdHJpbmdzLk1vZGFscy5jb25maXJtQWN0aW9uLCBTdHJpbmdzLkFkZG9ucy5jb25maXJtRGVsZXRlLmZvcm1hdCh7bmFtZTogYWRkb24ubmFtZX0pLCB7XHJcbiAgICAgICAgICAgICAgICBkYW5nZXI6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBjb25maXJtVGV4dDogU3RyaW5ncy5BZGRvbnMuZGVsZXRlQWRkb24sXHJcbiAgICAgICAgICAgICAgICBvbkNvbmZpcm06ICgpID0+IHtyZXNvbHZlKHRydWUpO30sXHJcbiAgICAgICAgICAgICAgICBvbkNhbmNlbDogKCkgPT4ge3Jlc29sdmUoZmFsc2UpO31cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbn1cclxuXHJcbmNvbnN0IG9yaWdpbmFsUmVuZGVyID0gQWRkb25MaXN0LnByb3RvdHlwZS5yZW5kZXI7XHJcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShBZGRvbkxpc3QucHJvdG90eXBlLCBcInJlbmRlclwiLCB7XHJcbiAgICBlbnVtZXJhYmxlOiBmYWxzZSxcclxuICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXHJcbiAgICBzZXQ6IGZ1bmN0aW9uKCkge0xvZ2dlci53YXJuKFwiQWRkb25MaXN0XCIsIFwiQWRkb24gcG9saWN5IGZvciBwbHVnaW5zICM1IGh0dHBzOi8vZ2l0aHViLmNvbS9yYXVlbnppL0JldHRlckRpc2NvcmRBcHAvd2lraS9BZGRvbi1Qb2xpY2llcyNwbHVnaW5zXCIpO30sXHJcbiAgICBnZXQ6ICgpID0+IG9yaWdpbmFsUmVuZGVyXHJcbn0pOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/settings/addonlist.jsx\n");
/***/ }),
/***/ "./src/ui/settings/components/dropdown.jsx":
/*!*************************************************!*\
!*** ./src/ui/settings/components/dropdown.jsx ***!
\*************************************************/
/*! exports provided: default */
/***/ (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_modules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../modules/modules.js */ \"./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_modules_js__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_modules_js__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_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-select-options\"\n }, this.props.options.map(opt => /*#__PURE__*/_modules_modules_js__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_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: `bd-select${style}${isOpen}`,\n onClick: this.showMenu,\n ref: this.dropdown\n }, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-select-value\"\n }, this.selected.label), /*#__PURE__*/_modules_modules_js__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/NGE5YyJdLCJuYW1lcyI6WyJTZWxlY3QiLCJSZWFjdCIsIkNvbXBvbmVudCIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJzdGF0ZSIsIm9wZW4iLCJ2YWx1ZSIsIm9wdGlvbnMiLCJkcm9wZG93biIsImNyZWF0ZVJlZiIsIm9uQ2hhbmdlIiwiYmluZCIsInNob3dNZW51IiwiaGlkZU1lbnUiLCJldmVudCIsInByZXZlbnREZWZhdWx0Iiwic2V0U3RhdGUiLCJkb2N1bWVudCIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwic2VsZWN0ZWQiLCJmaW5kIiwibyIsIm1hcCIsIm9wdCIsImxhYmVsIiwicmVuZGVyIiwic3R5bGUiLCJpc09wZW4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUVlLE1BQU1BLE1BQU4sU0FBcUJDLHlEQUFLLENBQUNDLFNBQTNCLENBQXFDO0FBQ2hEQyxhQUFXLENBQUNDLEtBQUQsRUFBUTtBQUNmLFVBQU1BLEtBQU47QUFDQSxTQUFLQyxLQUFMLEdBQWE7QUFBQ0MsVUFBSSxFQUFFLEtBQVA7QUFBY0MsV0FBSyxFQUFFLEtBQUtILEtBQUwsQ0FBV0csS0FBWCxJQUFvQixLQUFLSCxLQUFMLENBQVdJLE9BQVgsQ0FBbUIsQ0FBbkIsRUFBc0JEO0FBQS9ELEtBQWI7QUFDQSxTQUFLRSxRQUFMLEdBQWdCUix5REFBSyxDQUFDUyxTQUFOLEVBQWhCO0FBQ0EsU0FBS0MsUUFBTCxHQUFnQixLQUFLQSxRQUFMLENBQWNDLElBQWQsQ0FBbUIsSUFBbkIsQ0FBaEI7QUFDQSxTQUFLQyxRQUFMLEdBQWdCLEtBQUtBLFFBQUwsQ0FBY0QsSUFBZCxDQUFtQixJQUFuQixDQUFoQjtBQUNBLFNBQUtFLFFBQUwsR0FBZ0IsS0FBS0EsUUFBTCxDQUFjRixJQUFkLENBQW1CLElBQW5CLENBQWhCO0FBQ0g7O0FBRURDLFVBQVEsQ0FBQ0UsS0FBRCxFQUFRO0FBQ1pBLFNBQUssQ0FBQ0MsY0FBTjtBQUNBLFNBQUtDLFFBQUwsQ0FBYztBQUFDWCxVQUFJLEVBQUU7QUFBUCxLQUFkLEVBQTRCLE1BQU07QUFDOUJZLGNBQVEsQ0FBQ0MsZ0JBQVQsQ0FBMEIsT0FBMUIsRUFBbUMsS0FBS0wsUUFBeEM7QUFDSCxLQUZEO0FBR0g7O0FBRURBLFVBQVEsR0FBRztBQUNQLFNBQUtHLFFBQUwsQ0FBYztBQUFDWCxVQUFJLEVBQUU7QUFBUCxLQUFkLEVBQTZCLE1BQU07QUFDL0JZLGNBQVEsQ0FBQ0UsbUJBQVQsQ0FBNkIsT0FBN0IsRUFBc0MsS0FBS04sUUFBM0M7QUFDSCxLQUZEO0FBR0g7O0FBRURILFVBQVEsQ0FBQ0osS0FBRCxFQUFRO0FBQ1osU0FBS1UsUUFBTCxDQUFjO0FBQUNWO0FBQUQsS0FBZDtBQUNBLFFBQUksS0FBS0gsS0FBTCxDQUFXTyxRQUFmLEVBQXlCLEtBQUtQLEtBQUwsQ0FBV08sUUFBWCxDQUFvQkosS0FBcEI7QUFDNUI7O0FBRUQsTUFBSWMsUUFBSixHQUFlO0FBQUMsV0FBTyxLQUFLakIsS0FBTCxDQUFXSSxPQUFYLENBQW1CYyxJQUFuQixDQUF3QkMsQ0FBQyxJQUFJQSxDQUFDLENBQUNoQixLQUFGLElBQVcsS0FBS0YsS0FBTCxDQUFXRSxLQUFuRCxDQUFQO0FBQWtFOztBQUVsRixNQUFJQyxPQUFKLEdBQWM7QUFDVixVQUFNYSxRQUFRLEdBQUcsS0FBS0EsUUFBdEI7QUFDQSx3QkFBTztBQUFLLGVBQVMsRUFBQztBQUFmLE9BQ0YsS0FBS2pCLEtBQUwsQ0FBV0ksT0FBWCxDQUFtQmdCLEdBQW5CLENBQXVCQyxHQUFHLGlCQUN2QjtBQUFLLGVBQVMsRUFBRyxtQkFBa0JKLFFBQVEsQ0FBQ2QsS0FBVCxJQUFrQmtCLEdBQUcsQ0FBQ2xCLEtBQXRCLEdBQThCLFdBQTlCLEdBQTRDLEVBQUcsRUFBbEY7QUFBcUYsYUFBTyxFQUFFLEtBQUtJLFFBQUwsQ0FBY0MsSUFBZCxDQUFtQixJQUFuQixFQUF5QmEsR0FBRyxDQUFDbEIsS0FBN0I7QUFBOUYsT0FBb0lrQixHQUFHLENBQUNDLEtBQXhJLENBREgsQ0FERSxDQUFQO0FBS0g7O0FBRURDLFFBQU0sR0FBRztBQUNMLFVBQU1DLEtBQUssR0FBRyxLQUFLeEIsS0FBTCxDQUFXd0IsS0FBWCxJQUFvQixhQUFwQixHQUFvQyx3QkFBcEMsR0FBK0QsRUFBN0U7QUFDQSxVQUFNQyxNQUFNLEdBQUcsS0FBS3hCLEtBQUwsQ0FBV0MsSUFBWCxHQUFrQixZQUFsQixHQUFpQyxFQUFoRDtBQUNBLHdCQUFRO0FBQUssZUFBUyxFQUFHLFlBQVdzQixLQUFNLEdBQUVDLE1BQU8sRUFBM0M7QUFBOEMsYUFBTyxFQUFFLEtBQUtoQixRQUE1RDtBQUFzRSxTQUFHLEVBQUUsS0FBS0o7QUFBaEYsb0JBQ0k7QUFBSyxlQUFTLEVBQUM7QUFBZixPQUFrQyxLQUFLWSxRQUFMLENBQWNLLEtBQWhELENBREosZUFFSSx3RUFBQyx3REFBRDtBQUFPLGVBQVMsRUFBQztBQUFqQixNQUZKLEVBR0ssS0FBS3JCLEtBQUwsQ0FBV0MsSUFBWCxJQUFtQixLQUFLRSxPQUg3QixDQUFSO0FBS0g7O0FBL0MrQyxDLENBa0RwRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL3NyYy91aS9zZXR0aW5ncy9jb21wb25lbnRzL2Ryb3Bkb3duLmpzeC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhY3R9IGZyb20gXCJtb2R1bGVzXCI7XHJcbmltcG9ydCBBcnJvdyBmcm9tIFwiLi4vLi4vaWNvbnMvZG93bmFycm93XCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTZWxlY3QgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xyXG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcclxuICAgICAgICBzdXBlcihwcm9wcyk7XHJcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHtvcGVuOiBmYWxzZSwgdmFsdWU6IHRoaXMucHJvcHMudmFsdWUgfHwgdGhpcy5wcm9wcy5vcHRpb25zWzBdLnZhbHVlfTtcclxuICAgICAgICB0aGlzLmRyb3Bkb3duID0gUmVhY3QuY3JlYXRlUmVmKCk7XHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IHRoaXMub25DaGFuZ2UuYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLnNob3dNZW51ID0gdGhpcy5zaG93TWVudS5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMuaGlkZU1lbnUgPSB0aGlzLmhpZGVNZW51LmJpbmQodGhpcyk7XHJcbiAgICB9XHJcblxyXG4gICAgc2hvd01lbnUoZXZlbnQpIHtcclxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe29wZW46IHRydWV9LCAoKSA9PiB7XHJcbiAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCB0aGlzLmhpZGVNZW51KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBoaWRlTWVudSgpIHtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtvcGVuOiBmYWxzZX0sICgpID0+IHtcclxuICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIHRoaXMuaGlkZU1lbnUpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIG9uQ2hhbmdlKHZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7dmFsdWV9KTtcclxuICAgICAgICBpZiAodGhpcy5wcm9wcy5vbkNoYW5nZSkgdGhpcy5wcm9wcy5vbkNoYW5nZSh2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHNlbGVjdGVkKCkge3JldHVybiB0aGlzLnByb3BzLm9wdGlvbnMuZmluZChvID0+IG8udmFsdWUgPT0gdGhpcy5zdGF0ZS52YWx1ZSk7fVxyXG5cclxuICAgIGdldCBvcHRpb25zKCkge1xyXG4gICAgICAgIGNvbnN0IHNlbGVjdGVkID0gdGhpcy5zZWxlY3RlZDtcclxuICAgICAgICByZXR1cm4gPGRpdiBjbGFzc05hbWU9XCJiZC1zZWxlY3Qtb3B0aW9uc1wiPlxyXG4gICAgICAgICAgICB7dGhpcy5wcm9wcy5vcHRpb25zLm1hcChvcHQgPT4gXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YGJkLXNlbGVjdC1vcHRpb24ke3NlbGVjdGVkLnZhbHVlID09IG9wdC52YWx1ZSA/IFwiIHNlbGVjdGVkXCIgOiBcIlwifWB9IG9uQ2xpY2s9e3RoaXMub25DaGFuZ2UuYmluZCh0aGlzLCBvcHQudmFsdWUpfT57b3B0LmxhYmVsfTwvZGl2PlxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgIDwvZGl2PjtcclxuICAgIH1cclxuXHJcbiAgICByZW5kZXIoKSB7XHJcbiAgICAgICAgY29uc3Qgc3R5bGUgPSB0aGlzLnByb3BzLnN0eWxlID09IFwidHJhbnNwYXJlbnRcIiA/IFwiIGJkLXNlbGVjdC10cmFuc3BhcmVudFwiIDogXCJcIjtcclxuICAgICAgICBjb25zdCBpc09wZW4gPSB0aGlzLnN0YXRlLm9wZW4gPyBcIiBtZW51LW9wZW5cIiA6IFwiXCI7XHJcbiAgICAgICAgcmV0dXJuICA8ZGl2IGNsYXNzTmFtZT17YGJkLXNlbGVjdCR7c3R5bGV9JHtpc09wZW59YH0gb25DbGljaz17dGhpcy5zaG93TWVudX0gcmVmPXt0aGlzLmRyb3Bkb3dufT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJkLXNlbGVjdC12YWx1ZVwiPnt0aGlzLnNlbGVjdGVkLmxhYmVsfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxBcnJvdyBjbGFzc05hbWU9XCJiZC1zZWxlY3QtYXJyb3dcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIHt0aGlzLnN0YXRlLm9wZW4gJiYgdGhpcy5vcHRpb25zfVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+O1xyXG4gICAgfVxyXG59XHJcblxyXG4vLyByZXR1cm4gPGRpdiBjbGFzc05hbWU9XCJiZC1zZWxlY3Qtd3JhcFwiPlxyXG4vLyA8bGFiZWwgY2xhc3NOYW1lPVwiYmQtbGFiZWxcIj57dGhpcy5wcm9wcy5sYWJlbH08L2xhYmVsPlxyXG4vLyA8ZGl2IGNsYXNzTmFtZT17YGJkLXNlbGVjdCR7c3R5bGV9JHtpc09wZW59YH0gb25DbGljaz17dGhpcy5zaG93TWVudX0gcmVmPXt0aGlzLmRyb3Bkb3dufT5cclxuLy8gICAgIDxkaXYgY2xhc3NOYW1lPVwiYmQtc2VsZWN0LWNvbnRyb2xzXCI+XHJcbi8vICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZC1zZWxlY3QtdmFsdWVcIj57dGhpcy5zZWxlY3RlZC5sYWJlbH08L2Rpdj5cclxuLy8gICAgICAgICA8QXJyb3cgY2xhc3NOYW1lPVwiYmQtc2VsZWN0LWFycm93XCIgLz5cclxuLy8gICAgIDwvZGl2PlxyXG4vLyA8L2Rpdj5cclxuLy8ge3RoaXMuc3RhdGUub3BlbiAmJiB0aGlzLm9wdGlvbnN9XHJcbi8vIDwvZGl2PjsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/ui/settings/components/dropdown.jsx\n");
/***/ }),
/***/ "./src/ui/settings/components/item.jsx":
/*!*********************************************!*\
!*** ./src/ui/settings/components/item.jsx ***!
\*********************************************/
/*! exports provided: default */
/***/ (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_modules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../modules/modules.js */ \"./src/modules/modules.js\");\n\nclass SettingItem extends _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n return /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-setting-item\"\n }, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-setting-header\"\n }, /*#__PURE__*/_modules_modules_js__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_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-setting-note\"\n }, this.props.note), /*#__PURE__*/_modules_modules_js__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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvc2V0dGluZ3MvY29tcG9uZW50cy9pdGVtLmpzeD83NjU3Il0sIm5hbWVzIjpbIlNldHRpbmdJdGVtIiwiUmVhY3QiLCJDb21wb25lbnQiLCJyZW5kZXIiLCJwcm9wcyIsImlkIiwibmFtZSIsImNoaWxkcmVuIiwibm90ZSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFFZSxNQUFNQSxXQUFOLFNBQTBCQyx5REFBSyxDQUFDQyxTQUFoQyxDQUEwQztBQUNyREMsUUFBTSxHQUFHO0FBQ0wsd0JBQU87QUFBSyxlQUFTLEVBQUU7QUFBaEIsb0JBQ0s7QUFBSyxlQUFTLEVBQUU7QUFBaEIsb0JBQ0k7QUFBTyxhQUFPLEVBQUUsS0FBS0MsS0FBTCxDQUFXQyxFQUEzQjtBQUErQixlQUFTLEVBQUU7QUFBMUMsT0FBK0QsS0FBS0QsS0FBTCxDQUFXRSxJQUExRSxDQURKLEVBRUssS0FBS0YsS0FBTCxDQUFXRyxRQUZoQixDQURMLGVBS0s7QUFBSyxlQUFTLEVBQUU7QUFBaEIsT0FBb0MsS0FBS0gsS0FBTCxDQUFXSSxJQUEvQyxDQUxMLGVBTUs7QUFBSyxlQUFTLEVBQUU7QUFBaEIsTUFOTCxDQUFQO0FBUUg7O0FBVm9EIiwiZmlsZSI6Ii4vc3JjL3VpL3NldHRpbmdzL2NvbXBvbmVudHMvaXRlbS5qc3guanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlYWN0fSBmcm9tIFwibW9kdWxlc1wiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2V0dGluZ0l0ZW0gZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIHJldHVybiA8ZGl2IGNsYXNzTmFtZT17XCJiZC1zZXR0aW5nLWl0ZW1cIn0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e1wiYmQtc2V0dGluZy1oZWFkZXJcIn0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBodG1sRm9yPXt0aGlzLnByb3BzLmlkfSBjbGFzc05hbWU9e1wiYmQtc2V0dGluZy10aXRsZVwifT57dGhpcy5wcm9wcy5uYW1lfTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt0aGlzLnByb3BzLmNoaWxkcmVufVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtcImJkLXNldHRpbmctbm90ZVwifT57dGhpcy5wcm9wcy5ub3RlfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtcImJkLXNldHRpbmctZGl2aWRlclwifSAvPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+O1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/settings/components/item.jsx\n");
/***/ }),
/***/ "./src/ui/settings/components/search.jsx":
/*!***********************************************!*\
!*** ./src/ui/settings/components/search.jsx ***!
\***********************************************/
/*! exports provided: default */
/***/ (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_modules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../modules/modules.js */ \"./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_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n return /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: \"bd-search-wrapper\"\n }, /*#__PURE__*/_modules_modules_js__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_modules_js__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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvc2V0dGluZ3MvY29tcG9uZW50cy9zZWFyY2guanN4PzY3MjQiXSwibmFtZXMiOlsiU2VhcmNoIiwiUmVhY3QiLCJDb21wb25lbnQiLCJyZW5kZXIiLCJwcm9wcyIsIm9uQ2hhbmdlIiwib25LZXlEb3duIiwicGxhY2Vob2xkZXIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUVlLE1BQU1BLE1BQU4sU0FBcUJDLHlEQUFLLENBQUNDLFNBQTNCLENBQXFDO0FBQ2hEQyxRQUFNLEdBQUc7QUFDTCx3QkFBTztBQUFLLGVBQVMsRUFBQztBQUFmLG9CQUNLO0FBQU8sY0FBUSxFQUFFLEtBQUtDLEtBQUwsQ0FBV0MsUUFBNUI7QUFBc0MsZUFBUyxFQUFFLEtBQUtELEtBQUwsQ0FBV0UsU0FBNUQ7QUFBdUUsVUFBSSxFQUFDLE1BQTVFO0FBQW1GLGVBQVMsRUFBQyxXQUE3RjtBQUF5RyxpQkFBVyxFQUFFLEtBQUtGLEtBQUwsQ0FBV0csV0FBakk7QUFBOEksZUFBUyxFQUFDO0FBQXhKLE1BREwsZUFFSyx3RUFBQyxxREFBRCxPQUZMLENBQVA7QUFJSDs7QUFOK0MiLCJmaWxlIjoiLi9zcmMvdWkvc2V0dGluZ3MvY29tcG9uZW50cy9zZWFyY2guanN4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtSZWFjdH0gZnJvbSBcIm1vZHVsZXNcIjtcclxuaW1wb3J0IFNlYXJjaEljb24gZnJvbSBcIi4uLy4uL2ljb25zL3NlYXJjaFwiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2VhcmNoIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICByZXR1cm4gPGRpdiBjbGFzc05hbWU9XCJiZC1zZWFyY2gtd3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBvbkNoYW5nZT17dGhpcy5wcm9wcy5vbkNoYW5nZX0gb25LZXlEb3duPXt0aGlzLnByb3BzLm9uS2V5RG93bn0gdHlwZT1cInRleHRcIiBjbGFzc05hbWU9XCJiZC1zZWFyY2hcIiBwbGFjZWhvbGRlcj17dGhpcy5wcm9wcy5wbGFjZWhvbGRlcn0gbWF4TGVuZ3RoPVwiNTBcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDxTZWFyY2hJY29uIC8+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj47XHJcbiAgICB9XHJcbn0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/ui/settings/components/search.jsx\n");
/***/ }),
/***/ "./src/ui/settings/components/switch.jsx":
/*!***********************************************!*\
!*** ./src/ui/settings/components/switch.jsx ***!
\***********************************************/
/*! exports provided: default */
/***/ (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_modules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../modules/modules.js */ \"./src/modules/modules.js\");\n\nclass Switch extends _modules_modules_js__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_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: `bd-switch` + enabledClass + checkedClass\n }, /*#__PURE__*/_modules_modules_js__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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvc2V0dGluZ3MvY29tcG9uZW50cy9zd2l0Y2guanN4PzYxZDIiXSwibmFtZXMiOlsiU3dpdGNoIiwiUmVhY3QiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwic3RhdGUiLCJjaGVja2VkIiwib25DaGFuZ2UiLCJiaW5kIiwiZGlzYWJsZWQiLCJzZXRTdGF0ZSIsInJlbmRlciIsImVuYWJsZWRDbGFzcyIsImNoZWNrZWRDbGFzcyIsImlkIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVlLE1BQU1BLE1BQU4sU0FBcUJDLHlEQUFLLENBQUNDLFNBQTNCLENBQXFDO0FBQ2hEQyxhQUFXLENBQUNDLEtBQUQsRUFBUTtBQUNmLFVBQU1BLEtBQU47QUFDQSxTQUFLQyxLQUFMLEdBQWE7QUFBQ0MsYUFBTyxFQUFFLEtBQUtGLEtBQUwsQ0FBV0U7QUFBckIsS0FBYjtBQUNBLFNBQUtDLFFBQUwsR0FBZ0IsS0FBS0EsUUFBTCxDQUFjQyxJQUFkLENBQW1CLElBQW5CLENBQWhCO0FBQ0g7O0FBRURELFVBQVEsR0FBRztBQUNQLFFBQUksS0FBS0gsS0FBTCxDQUFXSyxRQUFmLEVBQXlCO0FBQ3pCLFNBQUtMLEtBQUwsQ0FBV0csUUFBWCxDQUFvQixDQUFDLEtBQUtGLEtBQUwsQ0FBV0MsT0FBaEM7QUFDQSxTQUFLSSxRQUFMLENBQWM7QUFBQ0osYUFBTyxFQUFFLENBQUMsS0FBS0QsS0FBTCxDQUFXQztBQUF0QixLQUFkO0FBQ0g7O0FBRURLLFFBQU0sR0FBRztBQUNMLFVBQU1DLFlBQVksR0FBRyxLQUFLUixLQUFMLENBQVdLLFFBQVgsR0FBc0IscUJBQXRCLEdBQThDLEVBQW5FO0FBQ0EsVUFBTUksWUFBWSxHQUFHLEtBQUtSLEtBQUwsQ0FBV0MsT0FBWCxHQUFxQixvQkFBckIsR0FBNEMsRUFBakU7QUFDQSx3QkFBUTtBQUFLLGVBQVMsRUFBRyxXQUFELEdBQWNNLFlBQWQsR0FBNkJDO0FBQTdDLG9CQUNJO0FBQU8sVUFBSSxFQUFDLFVBQVo7QUFBdUIsUUFBRSxFQUFFLEtBQUtULEtBQUwsQ0FBV1UsRUFBdEM7QUFBMEMsZUFBUyxFQUFHLGFBQXREO0FBQW9FLGNBQVEsRUFBRSxLQUFLVixLQUFMLENBQVdLLFFBQXpGO0FBQW1HLGFBQU8sRUFBRSxLQUFLSixLQUFMLENBQVdDLE9BQXZIO0FBQWdJLGNBQVEsRUFBRSxLQUFLQztBQUEvSSxNQURKLENBQVI7QUFHSDs7QUFuQitDIiwiZmlsZSI6Ii4vc3JjL3VpL3NldHRpbmdzL2NvbXBvbmVudHMvc3dpdGNoLmpzeC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhY3R9IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTd2l0Y2ggZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xyXG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcclxuICAgICAgICBzdXBlcihwcm9wcyk7XHJcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHtjaGVja2VkOiB0aGlzLnByb3BzLmNoZWNrZWR9O1xyXG4gICAgICAgIHRoaXMub25DaGFuZ2UgPSB0aGlzLm9uQ2hhbmdlLmJpbmQodGhpcyk7XHJcbiAgICB9XHJcblxyXG4gICAgb25DaGFuZ2UoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMucHJvcHMuZGlzYWJsZWQpIHJldHVybjtcclxuICAgICAgICB0aGlzLnByb3BzLm9uQ2hhbmdlKCF0aGlzLnN0YXRlLmNoZWNrZWQpO1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe2NoZWNrZWQ6ICF0aGlzLnN0YXRlLmNoZWNrZWR9KTtcclxuICAgIH1cclxuXHJcbiAgICByZW5kZXIoKSB7XHJcbiAgICAgICAgY29uc3QgZW5hYmxlZENsYXNzID0gdGhpcy5wcm9wcy5kaXNhYmxlZCA/IFwiIGJkLXN3aXRjaC1kaXNhYmxlZFwiIDogXCJcIjtcclxuICAgICAgICBjb25zdCBjaGVja2VkQ2xhc3MgPSB0aGlzLnN0YXRlLmNoZWNrZWQgPyBcIiBiZC1zd2l0Y2gtY2hlY2tlZFwiIDogXCJcIjtcclxuICAgICAgICByZXR1cm4gIDxkaXYgY2xhc3NOYW1lPXtgYmQtc3dpdGNoYCArIGVuYWJsZWRDbGFzcyArIGNoZWNrZWRDbGFzc30+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIGlkPXt0aGlzLnByb3BzLmlkfSBjbGFzc05hbWU9e2BiZC1jaGVja2JveGB9IGRpc2FibGVkPXt0aGlzLnByb3BzLmRpc2FibGVkfSBjaGVja2VkPXt0aGlzLnN0YXRlLmNoZWNrZWR9IG9uQ2hhbmdlPXt0aGlzLm9uQ2hhbmdlfSAvPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+O1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/settings/components/switch.jsx\n");
/***/ }),
/***/ "./src/ui/settings/divider.jsx":
/*!*************************************!*\
!*** ./src/ui/settings/divider.jsx ***!
\*************************************/
/*! exports provided: default */
/***/ (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_modules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../modules/modules.js */ \"./src/modules/modules.js\");\n\nclass Divider extends _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].Component {\n render() {\n return /*#__PURE__*/_modules_modules_js__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/YzhjYyJdLCJuYW1lcyI6WyJEaXZpZGVyIiwiUmVhY3QiLCJDb21wb25lbnQiLCJyZW5kZXIiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRWUsTUFBTUEsT0FBTixTQUFzQkMseURBQUssQ0FBQ0MsU0FBNUIsQ0FBc0M7QUFDakRDLFFBQU0sR0FBRztBQUNMLHdCQUFPO0FBQUssZUFBUyxFQUFDO0FBQWYsTUFBUDtBQUNIOztBQUhnRCIsImZpbGUiOiIuL3NyYy91aS9zZXR0aW5ncy9kaXZpZGVyLmpzeC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhY3R9IGZyb20gXCJtb2R1bGVzXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEaXZpZGVyIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICByZXR1cm4gPGRpdiBjbGFzc05hbWU9XCJiZC1kaXZpZGVyIGRpdmlkZXItMzU3M29PIG1hcmdpblRvcDgtMURMWjFuIG1hcmdpbkJvdHRvbTQwLTJ2SXdUdlwiIC8+O1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/settings/divider.jsx\n");
/***/ }),
/***/ "./src/ui/settings/group.jsx":
/*!***********************************!*\
!*** ./src/ui/settings/group.jsx ***!
\***********************************/
/*! exports provided: default */
/***/ (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_modules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../modules/modules.js */ \"./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_modules_js__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_modules_js__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_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"React\"].createElement(\"div\", {\n className: groupClass\n }, /*#__PURE__*/_modules_modules_js__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_modules_js__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_modules_js__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_modules_js__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_modules_js__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_modules_js__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_modules_js__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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvc2V0dGluZ3MvZ3JvdXAuanN4PzFiNzIiXSwibmFtZXMiOlsiYmFzZUNsYXNzTmFtZSIsIkdyb3VwIiwiUmVhY3QiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwiYnV0dG9uIiwiY29sbGFwc2libGUiLCJvcmlnaW5hbCIsIm9uQ2xpY2siLCJldmVudCIsInN0b3BQcm9wYWdhdGlvbiIsImFyZ3VtZW50cyIsImhhc093blByb3BlcnR5Iiwic2hvd24iLCJjb250YWluZXIiLCJjcmVhdGVSZWYiLCJzdGF0ZSIsImNvbGxhcHNlZCIsIm9uQ2hhbmdlIiwiYmluZCIsInRvZ2dsZUNvbGxhcHNlIiwiY3VycmVudCIsInRpbWVvdXQiLCJzdHlsZSIsInNldFByb3BlcnR5Iiwic2Nyb2xsSGVpZ2h0IiwiY2xhc3NMaXN0IiwiYWRkIiwic2V0U3RhdGUiLCJzZXRUaW1lb3V0IiwicmVtb3ZlIiwib25EcmF3ZXJUb2dnbGUiLCJpZCIsInZhbHVlIiwiZm9yY2VVcGRhdGUiLCJyZW5kZXIiLCJzZXR0aW5ncyIsImNvbGxhcHNlQ2xhc3MiLCJncm91cENsYXNzIiwibmFtZSIsImZpbHRlciIsInMiLCJoaWRkZW4iLCJtYXAiLCJzZXR0aW5nIiwiY29tcG9uZW50IiwidHlwZSIsImRpc2FibGVkIiwib3B0aW9ucyIsIm5vdGUiLCJzaG93RGl2aWRlciIsIm9yaWdpbmFsUmVuZGVyIiwicHJvdG90eXBlIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwic2V0IiwiTG9nZ2VyIiwid2FybiIsImdldCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBLE1BQU1BLGFBQWEsR0FBRyxtQkFBdEI7QUFFZSxNQUFNQyxLQUFOLFNBQW9CQyx5REFBSyxDQUFDQyxTQUEx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eUJ5QixPQUFPLENBQUNaLEVBQWpDO0FBQXRGLFFBQVo7QUFDOUIsVUFBSSxDQUFDYSxTQUFMLEVBQWdCLE9BQU8sSUFBUDtBQUNoQiwwQkFBTyx3RUFBQyx3REFBRDtBQUFNLFVBQUUsRUFBRUQsT0FBTyxDQUFDWixFQUFsQjtBQUFzQixXQUFHLEVBQUVZLE9BQU8sQ0FBQ1osRUFBbkM7QUFBdUMsWUFBSSxFQUFFWSxPQUFPLENBQUNMLElBQXJEO0FBQTJELFlBQUksRUFBRUssT0FBTyxDQUFDSztBQUF6RSxTQUFnRkosU0FBaEYsQ0FBUDtBQUNILEtBTkEsQ0FETCxDQUZMLEVBV00sS0FBS3pDLEtBQUwsQ0FBVzhDLFdBQVgsaUJBQTBCLHdFQUFDLGdEQUFELE9BWGhDLENBQVA7QUFhSDs7QUE1RDhDO0FBK0RuRCxNQUFNQyxjQUFjLEdBQUduRCxLQUFLLENBQUNvRCxTQUFOLENBQWdCakIsTUFBdkM7QUFDQWtCLE1BQU0sQ0FBQ0MsY0FBUCxDQUFzQnRELEtBQUssQ0FBQ29ELFNBQTVCLEVBQXVDLFFBQXZDLEVBQWlEO0FBQzdDRyxZQUFVLEVBQUUsS0FEaUM7QUFFN0NDLGNBQVksRUFBRSxLQUYrQjtBQUc3Q0MsS0FBRyxFQUFFLFlBQVc7QUFBQ0MsOERBQU0sQ0FBQ0MsSUFBUCxDQUFZLE9BQVosRUFBcUIscUdBQXJCO0FBQTZILEdBSGpHO0FBSTdDQyxLQUFHLEVBQUUsTUFBTVQ7QUFKa0MsQ0FBakQiLCJmaWxlIjoiLi9zcmMvdWkvc2V0dGluZ3MvZ3JvdXAuanN4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtSZWFjdCwgTG9nZ2VyfSBmcm9tIFwibW9kdWxlc1wiO1xyXG5pbXBvcnQgVGl0bGUgZnJvbSBcIi4vdGl0bGVcIjtcclxuaW1wb3J0IERpdmlkZXIgZnJvbSBcIi4vZGl2aWRlclwiO1xyXG5pbXBvcnQgU3dpdGNoIGZyb20gXCIuL2NvbXBvbmVudHMvc3dpdGNoXCI7XHJcbmltcG9ydCBEcm9wZG93biBmcm9tIFwiLi9jb21wb25lbnRzL2Ryb3Bkb3duXCI7XHJcbmltcG9ydCBJdGVtIGZyb20gXCIuL2NvbXBvbmVudHMvaXRlbVwiO1xyXG5cclxuY29uc3QgYmFzZUNsYXNzTmFtZSA9IFwiYmQtc2V0dGluZ3MtZ3JvdXBcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEdyb3VwIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcclxuICAgIGNvbnN0cnVjdG9yKHByb3BzKSB7XHJcbiAgICAgICAgc3VwZXIocHJvcHMpO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5wcm9wcy5idXR0b24gJiYgdGhpcy5wcm9wcy5jb2xsYXBzaWJsZSkge1xyXG4gICAgICAgICAgICBjb25zdCBvcmlnaW5hbCA9IHRoaXMucHJvcHMuYnV0dG9uLm9uQ2xpY2s7XHJcbiAgICAgICAgICAgIHRoaXMucHJvcHMuYnV0dG9uLm9uQ2xpY2sgPSAoZXZlbnQpID0+IHtcclxuICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICAgICAgb3JpZ2luYWwoLi4uYXJndW1lbnRzKTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5wcm9wcy5oYXNPd25Qcm9wZXJ0eShcInNob3duXCIpKSB0aGlzLnByb3BzLnNob3duID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgdGhpcy5jb250YWluZXIgPSBSZWFjdC5jcmVhdGVSZWYoKTtcclxuICAgICAgICB0aGlzLnN0YXRlID0ge1xyXG4gICAgICAgICAgICBjb2xsYXBzZWQ6IHRoaXMucHJvcHMuY29sbGFwc2libGUgJiYgIXRoaXMucHJvcHMuc2hvd25cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB0aGlzLm9uQ2hhbmdlID0gdGhpcy5vbkNoYW5nZS5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMudG9nZ2xlQ29sbGFwc2UgPSB0aGlzLnRvZ2dsZUNvbGxhcHNlLmJpbmQodGhpcyk7XHJcbiAgICB9XHJcblxyXG4gICAgdG9nZ2xlQ29sbGFwc2UoKSB7XHJcbiAgICAgICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5jb250YWluZXIuY3VycmVudDtcclxuICAgICAgICBjb25zdCB0aW1lb3V0ID0gdGhpcy5zdGF0ZS5jb2xsYXBzZWQgPyAzMDAgOiAxO1xyXG4gICAgICAgIGNvbnRhaW5lci5zdHlsZS5zZXRQcm9wZXJ0eShcImhlaWdodFwiLCBjb250YWluZXIuc2Nyb2xsSGVpZ2h0ICsgXCJweFwiKTtcclxuICAgICAgICBjb250YWluZXIuY2xhc3NMaXN0LmFkZChcImFuaW1hdGluZ1wiKTtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtjb2xsYXBzZWQ6ICF0aGlzLnN0YXRlLmNvbGxhcHNlZH0sICgpID0+IHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICBjb250YWluZXIuc3R5bGUuc2V0UHJvcGVydHkoXCJoZWlnaHRcIiwgXCJcIik7XHJcbiAgICAgICAgICAgIGNvbnRhaW5lci5jbGFzc0xpc3QucmVtb3ZlKFwiYW5pbWF0aW5nXCIpO1xyXG4gICAgICAgIH0sIHRpbWVvdXQpKTtcclxuICAgICAgICBpZiAodGhpcy5wcm9wcy5vbkRyYXdlclRvZ2dsZSkgdGhpcy5wcm9wcy5vbkRyYXdlclRvZ2dsZSh0aGlzLnN0YXRlLmNvbGxhcHNlZCk7XHJcbiAgICB9XHJcblxyXG4gICAgb25DaGFuZ2UoaWQsIHZhbHVlKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnByb3BzLm9uQ2hhbmdlKSByZXR1cm47XHJcbiAgICAgICAgaWYgKHRoaXMucHJvcHMuaWQpIHRoaXMucHJvcHMub25DaGFuZ2UodGhpcy5wcm9wcy5pZCwgaWQsIHZhbHVlKTtcclxuICAgICAgICBlbHNlIHRoaXMucHJvcHMub25DaGFuZ2UoaWQsIHZhbHVlKTtcclxuICAgICAgICB0aGlzLmZvcmNlVXBkYXRlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIGNvbnN0IHtzZXR0aW5nc30gPSB0aGlzLnByb3BzO1xyXG4gICAgICAgIGNvbnN0IGNvbGxhcHNlQ2xhc3MgPSB0aGlzLnByb3BzLmNvbGxhcHNpYmxlID8gYGNvbGxhcHNpYmxlICR7dGhpcy5zdGF0ZS5jb2xsYXBzZWQgPyBcImNvbGxhcHNlZFwiIDogXCJleHBhbmRlZFwifWAgOiBcIlwiO1xyXG4gICAgICAgIGNvbnN0IGdyb3VwQ2xhc3MgPSBgJHtiYXNlQ2xhc3NOYW1lfSAke2NvbGxhcHNlQ2xhc3N9YDtcclxuXHJcbiAgICAgICAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPXtncm91cENsYXNzfT5cclxuICAgICAgICAgICAgICAgICAgICA8VGl0bGUgdGV4dD17dGhpcy5wcm9wcy5uYW1lfSBjb2xsYXBzaWJsZT17dGhpcy5wcm9wcy5jb2xsYXBzaWJsZX0gb25DbGljaz17dGhpcy50b2dnbGVDb2xsYXBzZX0gYnV0dG9uPXt0aGlzLnByb3BzLmJ1dHRvbn0gaXNHcm91cD17dHJ1ZX0gLz5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJkLXNldHRpbmdzLWNvbnRhaW5lclwiIHJlZj17dGhpcy5jb250YWluZXJ9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7c2V0dGluZ3MuZmlsdGVyKHMgPT4gIXMuaGlkZGVuKS5tYXAoKHNldHRpbmcpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjb21wb25lbnQgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmcudHlwZSA9PSBcImRyb3Bkb3duXCIpIGNvbXBvbmVudCA9IDxEcm9wZG93biBkaXNhYmxlZD17c2V0dGluZy5kaXNhYmxlZH0gaWQ9e3NldHRpbmcuaWR9IG9wdGlvbnM9e3NldHRpbmcub3B0aW9uc30gdmFsdWU9e3NldHRpbmcudmFsdWV9IG9uQ2hhbmdlPXt0aGlzLm9uQ2hhbmdlLmJpbmQodGhpcywgc2V0dGluZy5pZCl9IC8+O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmcudHlwZSA9PSBcInN3aXRjaFwiKSBjb21wb25lbnQgPSA8U3dpdGNoIGRpc2FibGVkPXtzZXR0aW5nLmRpc2FibGVkfSBpZD17c2V0dGluZy5pZH0gY2hlY2tlZD17c2V0dGluZy52YWx1ZX0gb25DaGFuZ2U9e3RoaXMub25DaGFuZ2UuYmluZCh0aGlzLCBzZXR0aW5nLmlkKX0gLz47XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbXBvbmVudCkgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPEl0ZW0gaWQ9e3NldHRpbmcuaWR9IGtleT17c2V0dGluZy5pZH0gbmFtZT17c2V0dGluZy5uYW1lfSBub3RlPXtzZXR0aW5nLm5vdGV9Pntjb21wb25lbnR9PC9JdGVtPjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAge3RoaXMucHJvcHMuc2hvd0RpdmlkZXIgJiYgPERpdmlkZXIgLz59XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj47XHJcbiAgICB9XHJcbn1cclxuXHJcbmNvbnN0IG9yaWdpbmFsUmVuZGVyID0gR3JvdXAucHJvdG90eXBlLnJlbmRlcjtcclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KEdyb3VwLnByb3RvdHlwZSwgXCJyZW5kZXJcIiwge1xyXG4gICAgZW51bWVyYWJsZTogZmFsc2UsXHJcbiAgICBjb25maWd1cmFibGU6IGZhbHNlLFxyXG4gICAgc2V0OiBmdW5jdGlvbigpIHtMb2dnZXIud2FybihcIkdyb3VwXCIsIFwiQWRkb24gcG9saWN5IGZvciBwbHVnaW5zICM1IGh0dHBzOi8vZ2l0aHViLmNvbS9yYXVlbnppL0JldHRlckRpc2NvcmRBcHAvd2lraS9BZGRvbi1Qb2xpY2llcyNwbHVnaW5zXCIpO30sXHJcbiAgICBnZXQ6ICgpID0+IG9yaWdpbmFsUmVuZGVyXHJcbn0pOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/ui/settings/group.jsx\n");
/***/ }),
/***/ "./src/ui/settings/sidebarheader.jsx":
/*!*******************************************!*\
!*** ./src/ui/settings/sidebarheader.jsx ***!
\*******************************************/
/*! exports provided: default */
/***/ (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_data_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../data/data.js */ \"./src/data/data.js\");\n/* harmony import */ var _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../modules/modules.js */ \"./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_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getModule(m => m.Header && m.Separator && m.Item);\nconst Tooltip = _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByDisplayName(\"Tooltip\");\nclass SettingsTitle extends _modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"React\"].Component {\n constructor(props) {\n super(props);\n }\n\n render() {\n return /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(\"div\", {\n className: \"bd-sidebar-header\"\n }, /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(SidebarComponents.Header, null, \"BandagedBD\"), /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(Tooltip, {\n color: \"black\",\n position: \"top\",\n text: \"Changelog\"\n }, props => /*#__PURE__*/_modules_modules_js__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(\"div\", _extends({}, props, {\n className: \"bd-changelog-button\",\n onClick: () => _modals__WEBPACK_IMPORTED_MODULE_3__[\"default\"].showChangelogModal(_data_data_js__WEBPACK_IMPORTED_MODULE_0__[\"Changelog\"])\n }), /*#__PURE__*/_modules_modules_js__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/YTk1YSJdLCJuYW1lcyI6WyJTaWRlYmFyQ29tcG9uZW50cyIsIldlYnBhY2tNb2R1bGVzIiwiZ2V0TW9kdWxlIiwibSIsIkhlYWRlciIsIlNlcGFyYXRvciIsIkl0ZW0iLCJUb29sdGlwIiwiZ2V0QnlEaXNwbGF5TmFtZSIsIlNldHRpbmdzVGl0bGUiLCJSZWFjdCIsIkNvbXBvbmVudCIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJyZW5kZXIiLCJNb2RhbHMiLCJzaG93Q2hhbmdlbG9nTW9kYWwiLCJDaGFuZ2Vsb2ciXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQSxNQUFNQSxpQkFBaUIsR0FBR0Msa0VBQWMsQ0FBQ0MsU0FBZixDQUF5QkMsQ0FBQyxJQUFJQSxDQUFDLENBQUNDLE1BQUYsSUFBWUQsQ0FBQyxDQUFDRSxTQUFkLElBQTJCRixDQUFDLENBQUNHLElBQTNELENBQTFCO0FBQ0EsTUFBTUMsT0FBTyxHQUFHTixrRUFBYyxDQUFDTyxnQkFBZixDQUFnQyxTQUFoQyxDQUFoQjtBQUVlLE1BQU1DLGFBQU4sU0FBNEJDLHlEQUFLLENBQUNDLFNBQWxDLENBQTRDO0FBQ3ZEQyxhQUFXLENBQUNDLEtBQUQsRUFBUTtBQUNmLFVBQU1BLEtBQU47QUFDSDs7QUFFREMsUUFBTSxHQUFHO0FBQ0wsd0JBQU87QUFBSyxlQUFTLEVBQUM7QUFBZixvQkFDSyx3RUFBQyxpQkFBRCxDQUFtQixNQUFuQixxQkFETCxlQUVLLHdFQUFDLE9BQUQ7QUFBUyxXQUFLLEVBQUMsT0FBZjtBQUF1QixjQUFRLEVBQUMsS0FBaEM7QUFBc0MsVUFBSSxFQUFDO0FBQTNDLE9BQ0tELEtBQUssaUJBQ0YsNEZBQVNBLEtBQVQ7QUFBZ0IsZUFBUyxFQUFDLHFCQUExQjtBQUFnRCxhQUFPLEVBQUUsTUFBTUUsK0NBQU0sQ0FBQ0Msa0JBQVAsQ0FBMEJDLHVEQUExQjtBQUEvRCxxQkFDSSx3RUFBQyxzREFBRDtBQUFhLGVBQVMsRUFBQyxTQUF2QjtBQUFpQyxVQUFJLEVBQUM7QUFBdEMsTUFESixDQUZSLENBRkwsQ0FBUDtBQVVIOztBQWhCc0QiLCJmaWxlIjoiLi9zcmMvdWkvc2V0dGluZ3Mvc2lkZWJhcmhlYWRlci5qc3guanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZWxvZ30gZnJvbSBcImRhdGFcIjtcclxuaW1wb3J0IHtSZWFjdCwgV2VicGFja01vZHVsZXN9IGZyb20gXCJtb2R1bGVzXCI7XHJcbmltcG9ydCBIaXN0b3J5SWNvbiBmcm9tIFwiLi4vaWNvbnMvaGlzdG9yeVwiO1xyXG5pbXBvcnQgTW9kYWxzIGZyb20gXCIuLi9tb2RhbHNcIjtcclxuXHJcbmNvbnN0IFNpZGViYXJDb21wb25lbnRzID0gV2VicGFja01vZHVsZXMuZ2V0TW9kdWxlKG0gPT4gbS5IZWFkZXIgJiYgbS5TZXBhcmF0b3IgJiYgbS5JdGVtKTtcclxuY29uc3QgVG9vbHRpcCA9IFdlYnBhY2tNb2R1bGVzLmdldEJ5RGlzcGxheU5hbWUoXCJUb29sdGlwXCIpO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2V0dGluZ3NUaXRsZSBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XHJcbiAgICBjb25zdHJ1Y3Rvcihwcm9wcykge1xyXG4gICAgICAgIHN1cGVyKHByb3BzKTtcclxuICAgIH1cclxuXHJcbiAgICByZW5kZXIoKSB7XHJcbiAgICAgICAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPVwiYmQtc2lkZWJhci1oZWFkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8U2lkZWJhckNvbXBvbmVudHMuSGVhZGVyPkJhbmRhZ2VkQkQ8L1NpZGViYXJDb21wb25lbnRzLkhlYWRlcj5cclxuICAgICAgICAgICAgICAgICAgICA8VG9vbHRpcCBjb2xvcj1cImJsYWNrXCIgcG9zaXRpb249XCJ0b3BcIiB0ZXh0PVwiQ2hhbmdlbG9nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtwcm9wcyA9PiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgey4uLnByb3BzfSBjbGFzc05hbWU9XCJiZC1jaGFuZ2Vsb2ctYnV0dG9uXCIgb25DbGljaz17KCkgPT4gTW9kYWxzLnNob3dDaGFuZ2Vsb2dNb2RhbChDaGFuZ2Vsb2cpfT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SGlzdG9yeUljb24gY2xhc3NOYW1lPVwiYmQtaWNvblwiIHNpemU9XCIxNnB4XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgPC9Ub29sdGlwPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+O1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/settings/sidebarheader.jsx\n");
/***/ }),
/***/ "./src/ui/settings/title.jsx":
/*!***********************************!*\
!*** ./src/ui/settings/title.jsx ***!
\***********************************/
/*! exports provided: default */
/***/ (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_modules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../modules/modules.js */ \"./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_modules_js__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_modules_js__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_modules_js__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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvc2V0dGluZ3MvdGl0bGUuanN4P2I1OWIiXSwibmFtZXMiOlsiY2xhc3NOYW1lIiwiY2xhc3NOYW1lMiIsIlNldHRpbmdzVGl0bGUiLCJSZWFjdCIsIkNvbXBvbmVudCIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJyZW5kZXIiLCJiYXNlQ2xhc3MiLCJpc0dyb3VwIiwidGl0bGVDbGFzcyIsIm9uQ2xpY2siLCJ0ZXh0IiwiYnV0dG9uIiwidGl0bGUiLCJvdGhlckNoaWxkcmVuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBLE1BQU1BLFNBQVMsR0FBRywrSkFBbEI7QUFDQSxNQUFNQyxVQUFVLEdBQUcsbVBBQW5CO0FBRWUsTUFBTUMsYUFBTixTQUE0QkMseURBQUssQ0FBQ0MsU0FBbEMsQ0FBNEM7QUFDdkRDLGFBQVcsQ0FBQ0MsS0FBRCxFQUFRO0FBQ2YsVUFBTUEsS0FBTjtBQUNILEdBSHNELENBSTNEOzs7QUFDSUMsUUFBTSxHQUFHO0FBQ0wsVUFBTUMsU0FBUyxHQUFHLEtBQUtGLEtBQUwsQ0FBV0csT0FBWCxHQUFxQlIsVUFBckIsR0FBa0NELFNBQXBEO0FBQ0EsVUFBTVUsVUFBVSxHQUFHLEtBQUtKLEtBQUwsQ0FBV04sU0FBWCxHQUF3QixHQUFFUSxTQUFVLElBQUcsS0FBS0YsS0FBTCxDQUFXTixTQUFVLEVBQTVELEdBQWdFUSxTQUFuRjtBQUNBLHdCQUFPO0FBQUksZUFBUyxFQUFFRSxVQUFmO0FBQTJCLGFBQU8sRUFBRSxNQUFNO0FBQUMsYUFBS0osS0FBTCxDQUFXSyxPQUFYLElBQXNCLEtBQUtMLEtBQUwsQ0FBV0ssT0FBWCxFQUF0QjtBQUE0QztBQUF2RixPQUNFLEtBQUtMLEtBQUwsQ0FBV00sSUFEYixFQUVFLEtBQUtOLEtBQUwsQ0FBV08sTUFBWCxpQkFBcUI7QUFBUSxlQUFTLEVBQUMsMkJBQWxCO0FBQThDLGFBQU8sRUFBRSxLQUFLUCxLQUFMLENBQVdPLE1BQVgsQ0FBa0JGO0FBQXpFLE9BQW1GLEtBQUtMLEtBQUwsQ0FBV08sTUFBWCxDQUFrQkMsS0FBckcsQ0FGdkIsRUFHRSxLQUFLUixLQUFMLENBQVdTLGFBSGIsQ0FBUDtBQUtIOztBQWJzRCIsImZpbGUiOiIuL3NyYy91aS9zZXR0aW5ncy90aXRsZS5qc3guanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlYWN0fSBmcm9tIFwibW9kdWxlc1wiO1xyXG5cclxuY29uc3QgY2xhc3NOYW1lID0gXCJiZC1zZXR0aW5ncy10aXRsZSBoMi0yZ1dFLW8gdGl0bGUtM3NaV1lRIHNpemUxNi0xNGNHejUgaGVpZ2h0MjAtbU8yZUlOIHdlaWdodFNlbWlCb2xkLU5KZXh6aSBkZWZhdWx0Q29sb3ItMV9halgwIGRlZmF1bHRNYXJnaW5oMi0yTFRhVUwgbWFyZ2luQm90dG9tMjAtMzJxSUQ3XCI7XHJcbmNvbnN0IGNsYXNzTmFtZTIgPSBcImJkLXNldHRpbmdzLXRpdGxlIGJkLXNldHRpbmdzLWdyb3VwLXRpdGxlIGg1LTE4XzFuZCB0aXRsZS0zc1pXWVEgc2l6ZTEyLTNSMDg0NSBoZWlnaHQxNi0yTHYzcUEgd2VpZ2h0U2VtaUJvbGQtTkpleHppIGRhLWg1IGRhLXRpdGxlIGRhLXNpemUxMiBkYS1oZWlnaHQxNiBkYS13ZWlnaHRTZW1pQm9sZCBtYXJnaW5Cb3R0b200LTJxazRIeSBkYS1tYXJnaW5Cb3R0b200IG1hcmdpblRvcDgtMURMWjFuIGRhLW1hcmdpblRvcDhcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNldHRpbmdzVGl0bGUgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xyXG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcclxuICAgICAgICBzdXBlcihwcm9wcyk7XHJcbiAgICB9XHJcbi8vaDItMmdXRS1vIHRpdGxlLTNzWldZUSBzaXplMTYtMTRjR3o1IGhlaWdodDIwLW1PMmVJTiB3ZWlnaHRTZW1pQm9sZC1OSmV4emkgZGEtaDIgZGEtdGl0bGUgZGEtc2l6ZTE2IGRhLWhlaWdodDIwIGRhLXdlaWdodFNlbWlCb2xkIGRlZmF1bHRDb2xvci0xX2FqWDAgZGEtZGVmYXVsdENvbG9yIG1hcmdpblRvcDYwLTNQR2J0SyBkYS1tYXJnaW5Ub3A2MCBtYXJnaW5Cb3R0b20yMC0zMnFJRDcgZGEtbWFyZ2luQm90dG9tMjBcclxuICAgIHJlbmRlcigpIHtcclxuICAgICAgICBjb25zdCBiYXNlQ2xhc3MgPSB0aGlzLnByb3BzLmlzR3JvdXAgPyBjbGFzc05hbWUyIDogY2xhc3NOYW1lO1xyXG4gICAgICAgIGNvbnN0IHRpdGxlQ2xhc3MgPSB0aGlzLnByb3BzLmNsYXNzTmFtZSA/IGAke2Jhc2VDbGFzc30gJHt0aGlzLnByb3BzLmNsYXNzTmFtZX1gIDogYmFzZUNsYXNzO1xyXG4gICAgICAgIHJldHVybiA8aDIgY2xhc3NOYW1lPXt0aXRsZUNsYXNzfSBvbkNsaWNrPXsoKSA9PiB7dGhpcy5wcm9wcy5vbkNsaWNrICYmIHRoaXMucHJvcHMub25DbGljaygpO319PlxyXG4gICAgICAgICAgICAgICAge3RoaXMucHJvcHMudGV4dH1cclxuICAgICAgICAgICAgICAgIHt0aGlzLnByb3BzLmJ1dHRvbiAmJiA8YnV0dG9uIGNsYXNzTmFtZT1cImJkLWJ1dHRvbiBiZC1idXR0b24tdGl0bGVcIiBvbkNsaWNrPXt0aGlzLnByb3BzLmJ1dHRvbi5vbkNsaWNrfT57dGhpcy5wcm9wcy5idXR0b24udGl0bGV9PC9idXR0b24+fVxyXG4gICAgICAgICAgICAgICAge3RoaXMucHJvcHMub3RoZXJDaGlsZHJlbn1cclxuICAgICAgICAgICAgICAgIDwvaDI+O1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/settings/title.jsx\n");
/***/ }),
/***/ "./src/ui/toasts.js":
/*!**************************!*\
!*** ./src/ui/toasts.js ***!
\**************************/
/*! exports provided: default */
/***/ (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_modules_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../modules/modules.js */ \"./src/modules/modules.js\");\n\nconst channelsClass = _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"WebpackModules\"].getByProps(\"sidebar\", \"hasNotice\").sidebar.split(\" \")[0];\nconst membersWrapClass = _modules_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"WebpackModules\"].getByProps(\"membersWrap\").membersWrap.split(\" \")[0];\nclass Toasts {\n static get shouldShowToasts() {\n return _modules_modules_js__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_modules_js__WEBPACK_IMPORTED_MODULE_0__[\"DOMManager\"].bdBody.appendChild(toastWrapper);\n }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdWkvdG9hc3RzLmpzP2NmZTUiXSwibmFtZXMiOlsiY2hhbm5lbHNDbGFzcyIsIldlYnBhY2tNb2R1bGVzIiwiZ2V0QnlQcm9wcyIsInNpZGViYXIiLCJzcGxpdCIsIm1lbWJlcnNXcmFwQ2xhc3MiLCJtZW1iZXJzV3JhcCIsIlRvYXN0cyIsInNob3VsZFNob3dUb2FzdHMiLCJTZXR0aW5ncyIsImdldCIsInN1Y2Nlc3MiLCJjb250ZW50Iiwib3B0aW9ucyIsInNob3ciLCJPYmplY3QiLCJhc3NpZ24iLCJ0eXBlIiwiaW5mbyIsIndhcm5pbmciLCJlcnJvciIsImRlZmF1bHQiLCJpY29uIiwidGltZW91dCIsImZvcmNlU2hvdyIsImVuc3VyZUNvbnRhaW5lciIsInRvYXN0RWxlbSIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTGlzdCIsImFkZCIsImlubmVyVGV4dCIsInF1ZXJ5U2VsZWN0b3IiLCJhcHBlbmRDaGlsZCIsInNldFRpbWVvdXQiLCJyZW1vdmUiLCJxdWVyeVNlbGVjdG9yQWxsIiwibGVuZ3RoIiwiY29udGFpbmVyIiwibWVtYmVybGlzdCIsImZvcm0iLCJsZWZ0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwicmlnaHQiLCJ3aWR0aCIsIm9mZnNldFdpZHRoIiwiYm90dG9tIiwib2Zmc2V0SGVpZ2h0IiwidG9hc3RXcmFwcGVyIiwic3R5bGUiLCJzZXRQcm9wZXJ0eSIsIkRPTU1hbmFnZXIiLCJiZEJvZHkiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUEsTUFBTUEsYUFBYSxHQUFHQyxrRUFBYyxDQUFDQyxVQUFmLENBQTBCLFNBQTFCLEVBQXFDLFdBQXJDLEVBQWtEQyxPQUFsRCxDQUEwREMsS0FBMUQsQ0FBZ0UsR0FBaEUsRUFBcUUsQ0FBckUsQ0FBdEI7QUFDQSxNQUFNQyxnQkFBZ0IsR0FBR0osa0VBQWMsQ0FBQ0MsVUFBZixDQUEwQixhQUExQixFQUF5Q0ksV0FBekMs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QUEvQixFQUF1Q1QsSUFBSSxHQUFHLElBQTlDO0FBQ0FPLGdCQUFZLENBQUNDLEtBQWIsQ0FBbUJDLFdBQW5CLENBQStCLE9BQS9CLEVBQXdDTixLQUFLLEdBQUcsSUFBaEQ7QUFDQUksZ0JBQVksQ0FBQ0MsS0FBYixDQUFtQkMsV0FBbkIsQ0FBK0IsUUFBL0IsRUFBeUNKLE1BQU0sR0FBRyxJQUFsRDtBQUNBSyxrRUFBVSxDQUFDQyxNQUFYLENBQWtCbkIsV0FBbEIsQ0FBOEJlLFlBQTlCO0FBQ0g7O0FBL0R1QiIsImZpbGUiOiIuL3NyYy91aS90b2FzdHMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1dlYnBhY2tNb2R1bGVzLCBTZXR0aW5ncywgRE9NTWFuYWdlcn0gZnJvbSBcIm1vZHVsZXNcIjtcclxuXHJcbmNvbnN0IGNoYW5uZWxzQ2xhc3MgPSBXZWJwYWNrTW9kdWxlcy5nZXRCeVByb3BzKFwic2lkZWJhclwiLCBcImhhc05vdGljZVwiKS5zaWRlYmFyLnNwbGl0KFwiIFwiKVswXTtcclxuY29uc3QgbWVtYmVyc1dyYXBDbGFzcyA9IFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJtZW1iZXJzV3JhcFwiKS5tZW1iZXJzV3JhcC5zcGxpdChcIiBcIilbMF07XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUb2FzdHMge1xyXG5cclxuICAgIHN0YXRpYyBnZXQgc2hvdWxkU2hvd1RvYXN0cygpIHtyZXR1cm4gU2V0dGluZ3MuZ2V0KFwic2V0dGluZ3NcIiwgXCJnZW5lcmFsXCIsIFwic2hvd1RvYXN0c1wiKTt9XHJcblxyXG4gICAgLyoqIFNob3J0aGFuZCBmb3IgYHR5cGUgPSBcInN1Y2Nlc3NcImAgZm9yIHtAbGluayBtb2R1bGU6VG9hc3RzLnNob3d9ICovXHJcbiAgICBzdGF0aWMgYXN5bmMgc3VjY2Vzcyhjb250ZW50LCBvcHRpb25zID0ge30pIHtyZXR1cm4gdGhpcy5zaG93KGNvbnRlbnQsIE9iamVjdC5hc3NpZ24ob3B0aW9ucywge3R5cGU6IFwic3VjY2Vzc1wifSkpO31cclxuXHJcbiAgICAvKiogU2hvcnRoYW5kIGZvciBgdHlwZSA9IFwiaW5mb1wiYCBmb3Ige0BsaW5rIG1vZHVsZTpUb2FzdHMuc2hvd30gKi9cclxuICAgIHN0YXRpYyBhc3luYyBpbmZvKGNvbnRlbnQsIG9wdGlvbnMgPSB7fSkge3JldHVybiB0aGlzLnNob3coY29udGVudCwgT2JqZWN0LmFzc2lnbihvcHRpb25zLCB7dHlwZTogXCJpbmZvXCJ9KSk7fVxyXG5cclxuICAgIC8qKiBTaG9ydGhhbmQgZm9yIGB0eXBlID0gXCJ3YXJuaW5nXCJgIGZvciB7QGxpbmsgbW9kdWxlOlRvYXN0cy5zaG93fSAqL1xyXG4gICAgc3RhdGljIGFzeW5jIHdhcm5pbmcoY29udGVudCwgb3B0aW9ucyA9IHt9KSB7cmV0dXJuIHRoaXMuc2hvdyhjb250ZW50LCBPYmplY3QuYXNzaWduKG9wdGlvbnMsIHt0eXBlOiBcIndhcm5pbmdcIn0pKTt9XHJcblxyXG4gICAgLyoqIFNob3J0aGFuZCBmb3IgYHR5cGUgPSBcImVycm9yXCJgIGZvciB7QGxpbmsgbW9kdWxlOlRvYXN0cy5zaG93fSAqL1xyXG4gICAgc3RhdGljIGFzeW5jIGVycm9yKGNvbnRlbnQsIG9wdGlvbnMgPSB7fSkge3JldHVybiB0aGlzLnNob3coY29udGVudCwgT2JqZWN0LmFzc2lnbihvcHRpb25zLCB7dHlwZTogXCJlcnJvclwifSkpO31cclxuXHJcbiAgICAvKiogU2hvcnRoYW5kIGZvciBgdHlwZSA9IFwiZGVmYXVsdFwiYCBmb3Ige0BsaW5rIG1vZHVsZTpUb2FzdHMuc2hvd30gKi9cclxuICAgIHN0YXRpYyBhc3luYyBkZWZhdWx0KGNvbnRlbnQsIG9wdGlvbnMgPSB7fSkge3JldHVybiB0aGlzLnNob3coY29udGVudCwgT2JqZWN0LmFzc2lnbihvcHRpb25zLCB7dHlwZTogXCJcIn0pKTt9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGlzIHNob3dzIGEgdG9hc3Qgc2ltaWxhciB0byBhbmRyb2lkIHRvd2FyZHMgdGhlIGJvdHRvbSBvZiB0aGUgc2NyZWVuLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBjb250ZW50IFRoZSBzdHJpbmcgdG8gc2hvdyBpbiB0aGUgdG9hc3QuXHJcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gb3B0aW9ucyBPcHRpb25zIG9iamVjdC4gT3B0aW9uYWwgcGFyYW1ldGVyLlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLnR5cGU9XCJcIl0gQ2hhbmdlcyB0aGUgdHlwZSBvZiB0aGUgdG9hc3Qgc3R5bGlzdGljYWxseSBhbmQgc2VtYW50aWNhbGx5LiBDaG9pY2VzOiBcIlwiLCBcImluZm9cIiwgXCJzdWNjZXNzXCIsIFwiZGFuZ2VyXCIvXCJlcnJvclwiLCBcIndhcm5pbmdcIi9cIndhcm5cIi4gRGVmYXVsdDogXCJcIlxyXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5pY29uPXRydWVdIERldGVybWluZXMgd2hldGhlciB0aGUgaWNvbiBzaG91bGQgc2hvdyBjb3JyZXNwb25kaW5nIHRvIHRoZSB0eXBlLiBBIHRvYXN0IHdpdGhvdXQgdHlwZSB3aWxsIGFsd2F5cyBoYXZlIG5vIGljb24uIERlZmF1bHQ6IHRydWVcclxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbb3B0aW9ucy50aW1lb3V0PTMwMDBdIEFkanVzdHMgdGhlIHRpbWUgKGluIG1zKSB0aGUgdG9hc3Qgc2hvdWxkIGJlIHNob3duIGZvciBiZWZvcmUgZGlzYXBwZWFyaW5nIGF1dG9tYXRpY2FsbHkuIERlZmF1bHQ6IDMwMDBcclxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMuZm9yY2VTaG93PWZhbHNlXSBXaGV0aGVyIHRvIGZvcmNlIHNob3dpbmcgdGhlIHRvYXN0IGFuZCBpZ25vcmUgdGhlIGJkIHNldHRpbmdcclxuICAgICAqL1xyXG4gICAgc3RhdGljIHNob3coY29udGVudCwgb3B0aW9ucyA9IHt9KSB7XHJcbiAgICAgICAgY29uc3Qge3R5cGUgPSBcIlwiLCBpY29uID0gdHJ1ZSwgdGltZW91dCA9IDMwMDAsIGZvcmNlU2hvdyA9IGZhbHNlfSA9IG9wdGlvbnM7XHJcbiAgICAgICAgaWYgKCF0aGlzLnNob3VsZFNob3dUb2FzdHMgJiYgIWZvcmNlU2hvdykgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMuZW5zdXJlQ29udGFpbmVyKCk7XHJcbiAgICAgICAgY29uc3QgdG9hc3RFbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcclxuICAgICAgICB0b2FzdEVsZW0uY2xhc3NMaXN0LmFkZChcImJkLXRvYXN0XCIpO1xyXG4gICAgICAgIGlmICh0eXBlKSB0b2FzdEVsZW0uY2xhc3NMaXN0LmFkZChcInRvYXN0LVwiICsgdHlwZSk7XHJcbiAgICAgICAgaWYgKHR5cGUgJiYgaWNvbikgdG9hc3RFbGVtLmNsYXNzTGlzdC5hZGQoXCJpY29uXCIpO1xyXG4gICAgICAgIHRvYXN0RWxlbS5pbm5lclRleHQgPSBjb250ZW50O1xyXG4gICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIuYmQtdG9hc3RzXCIpLmFwcGVuZENoaWxkKHRvYXN0RWxlbSk7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRvYXN0RWxlbS5jbGFzc0xpc3QuYWRkKFwiY2xvc2luZ1wiKTtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0b2FzdEVsZW0ucmVtb3ZlKCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYmQtdG9hc3RzIC5iZC10b2FzdFwiKS5sZW5ndGgpIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIuYmQtdG9hc3RzXCIpLnJlbW92ZSgpO1xyXG4gICAgICAgICAgICB9LCAzMDApO1xyXG4gICAgICAgIH0sIHRpbWVvdXQpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBlbnN1cmVDb250YWluZXIoKSB7XHJcbiAgICAgICAgaWYgKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIuYmQtdG9hc3RzXCIpKSByZXR1cm47XHJcbiAgICAgICAgY29uc3QgY29udGFpbmVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgLiR7Y2hhbm5lbHNDbGFzc30gKyBkaXZgKTtcclxuICAgICAgICBjb25zdCBtZW1iZXJsaXN0ID0gY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoYC4ke21lbWJlcnNXcmFwQ2xhc3N9YCk7XHJcbiAgICAgICAgY29uc3QgZm9ybSA9IGNvbnRhaW5lciA/IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKFwiZm9ybVwiKSA6IG51bGw7XHJcbiAgICAgICAgY29uc3QgbGVmdCA9IGNvbnRhaW5lciA/IGNvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0IDogMzEwO1xyXG4gICAgICAgIGNvbnN0IHJpZ2h0ID0gbWVtYmVybGlzdCA/IG1lbWJlcmxpc3QuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdCA6IDA7XHJcbiAgICAgICAgY29uc3Qgd2lkdGggPSByaWdodCA/IHJpZ2h0IC0gY29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQgOiBjb250YWluZXIub2Zmc2V0V2lkdGg7XHJcbiAgICAgICAgY29uc3QgYm90dG9tID0gZm9ybSA/IGZvcm0ub2Zmc2V0SGVpZ2h0IDogODA7XHJcbiAgICAgICAgY29uc3QgdG9hc3RXcmFwcGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcclxuICAgICAgICB0b2FzdFdyYXBwZXIuY2xhc3NMaXN0LmFkZChcImJkLXRvYXN0c1wiKTtcclxuICAgICAgICB0b2FzdFdyYXBwZXIuc3R5bGUuc2V0UHJvcGVydHkoXCJsZWZ0XCIsIGxlZnQgKyBcInB4XCIpO1xyXG4gICAgICAgIHRvYXN0V3JhcHBlci5zdHlsZS5zZXRQcm9wZXJ0eShcIndpZHRoXCIsIHdpZHRoICsgXCJweFwiKTtcclxuICAgICAgICB0b2FzdFdyYXBwZXIuc3R5bGUuc2V0UHJvcGVydHkoXCJib3R0b21cIiwgYm90dG9tICsgXCJweFwiKTtcclxuICAgICAgICBET01NYW5hZ2VyLmJkQm9keS5hcHBlbmRDaGlsZCh0b2FzdFdyYXBwZXIpO1xyXG4gICAgfVxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/toasts.js\n");
/***/ }),
/***/ "electron":
/*!****************************************!*\
!*** external "require(\"electron\")" ***!
\****************************************/
/*! no static exports found */
/***/ (function(module, exports) {
eval("module.exports = require(\"electron\");//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJyZXF1aXJlKFxcXCJlbGVjdHJvblxcXCIpXCI/ZmExZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSIsImZpbGUiOiJlbGVjdHJvbi5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImVsZWN0cm9uXCIpOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///electron\n");
/***/ }),
/***/ "events":
/*!**************************************!*\
!*** external "require(\"events\")" ***!
\**************************************/
/*! no static exports found */
/***/ (function(module, exports) {
eval("module.exports = require(\"events\");//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJyZXF1aXJlKFxcXCJldmVudHNcXFwiKVwiPzk2MTYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEiLCJmaWxlIjoiZXZlbnRzLmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiZXZlbnRzXCIpOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///events\n");
/***/ }),
/***/ "fs":
/*!**********************************!*\
!*** external "require(\"fs\")" ***!
\**********************************/
/*! no static exports found */
/***/ (function(module, exports) {
eval("module.exports = require(\"fs\");//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJyZXF1aXJlKFxcXCJmc1xcXCIpXCI/ZDMwYiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSIsImZpbGUiOiJmcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImZzXCIpOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///fs\n");
/***/ }),
/***/ "mkdirp":
/*!**************************************!*\
!*** external "require(\"mkdirp\")" ***!
\**************************************/
/*! no static exports found */
/***/ (function(module, exports) {
eval("module.exports = require(\"mkdirp\");//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJyZXF1aXJlKFxcXCJta2RpcnBcXFwiKVwiP2E1OTIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEiLCJmaWxlIjoibWtkaXJwLmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwibWtkaXJwXCIpOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///mkdirp\n");
/***/ }),
/***/ "module":
/*!*************************!*\
!*** external "module" ***!
\*************************/
/*! no static exports found */
/***/ (function(module, exports) {
eval("module.exports = require(\"module\");//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtb2R1bGVcIj83YzQ4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6Im1vZHVsZS5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm1vZHVsZVwiKTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///module\n");
/***/ }),
/***/ "path":
/*!************************************!*\
!*** external "require(\"path\")" ***!
\************************************/
/*! no static exports found */
/***/ (function(module, exports) {
eval("module.exports = require(\"path\");//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJyZXF1aXJlKFxcXCJwYXRoXFxcIilcIj8yZjM3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6InBhdGguanMiLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJwYXRoXCIpOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///path\n");
/***/ }),
/***/ "request":
/*!***************************************!*\
!*** external "require(\"request\")" ***!
\***************************************/
/*! no static exports found */
/***/ (function(module, exports) {
eval("module.exports = require(\"request\");//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJyZXF1aXJlKFxcXCJyZXF1ZXN0XFxcIilcIj8yYzVlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6InJlcXVlc3QuanMiLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZXF1ZXN0XCIpOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///request\n");
/***/ }),
/***/ "rimraf":
/*!**************************************!*\
!*** external "require(\"rimraf\")" ***!
\**************************************/
/*! no static exports found */
/***/ (function(module, exports) {
eval("module.exports = require(\"rimraf\");//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJyZXF1aXJlKFxcXCJyaW1yYWZcXFwiKVwiPzQ3YWQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEiLCJmaWxlIjoicmltcmFmLmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmltcmFmXCIpOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///rimraf\n");
/***/ }),
/***/ "yauzl":
/*!*************************************!*\
!*** external "require(\"yauzl\")" ***!
\*************************************/
/*! no static exports found */
/***/ (function(module, exports) {
eval("module.exports = require(\"yauzl\");//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJyZXF1aXJlKFxcXCJ5YXV6bFxcXCIpXCI/NTkyOCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSIsImZpbGUiOiJ5YXV6bC5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInlhdXpsXCIpOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///yauzl\n");
/***/ })
/******/ });