diff --git a/package-lock.json b/package-lock.json index d381566d467..1e3c36a508c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7,13 +7,13 @@ "name": "orchardcore", "hasInstallScript": true, "devDependencies": { - "@babel/core": "^7.16.5", - "@babel/preset-env": "^7.16.5", - "@babel/preset-flow": "7.16.5", + "@babel/core": "^7.16.12", + "@babel/preset-env": "^7.16.11", + "@babel/preset-flow": "7.16.7", "all-contributors-cli": "^6.20.0", "es6-promise": "4.2.8", "glob": "^7.2.0", - "graceful-fs": "4.2.8", + "graceful-fs": "4.2.9", "gulp": "^4.0.2", "gulp-babel": "8.0.0", "gulp-cli": "^2.3.0", @@ -40,45 +40,45 @@ "postcss": "8.4.5", "postcss-rtl": "^1.7.3", "rtlcss": "3.5.0", - "typescript": "^4.5.4" + "typescript": "^4.5.5" } }, "node_modules/@babel/code-frame": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", - "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", + "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", "dev": true, "dependencies": { - "@babel/highlight": "^7.16.0" + "@babel/highlight": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.16.4", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.4.tgz", - "integrity": "sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q==", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.8.tgz", + "integrity": "sha512-m7OkX0IdKLKPpBlJtF561YJal5y/jyI5fNfWbPxh2D/nbzzGI4qRyrD8xO2jB24u7l+5I2a43scCG2IrfjC50Q==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.5.tgz", - "integrity": "sha512-wUcenlLzuWMZ9Zt8S0KmFwGlH6QKRh3vsm/dhDA3CHkiTA45YuG1XkHRcNRl73EFPXDp/d5kVOU0/y7x2w6OaQ==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.16.0", - "@babel/generator": "^7.16.5", - "@babel/helper-compilation-targets": "^7.16.3", - "@babel/helper-module-transforms": "^7.16.5", - "@babel/helpers": "^7.16.5", - "@babel/parser": "^7.16.5", - "@babel/template": "^7.16.0", - "@babel/traverse": "^7.16.5", - "@babel/types": "^7.16.0", + "version": "7.16.12", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.12.tgz", + "integrity": "sha512-dK5PtG1uiN2ikk++5OzSYsitZKny4wOCD0nrO4TqnW4BVBTQ2NGS3NgilvT/TEyxTST7LNyWV/T4tXDoD3fOgg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.16.8", + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helpers": "^7.16.7", + "@babel/parser": "^7.16.12", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.16.10", + "@babel/types": "^7.16.8", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -95,12 +95,12 @@ } }, "node_modules/@babel/generator": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.5.tgz", - "integrity": "sha512-kIvCdjZqcdKqoDbVVdt5R99icaRtrtYhYK/xux5qiWCBmfdvEYMFZ68QCrpE5cbFM1JsuArUNs1ZkuKtTtUcZA==", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.8.tgz", + "integrity": "sha512-1ojZwE9+lOXzcWdWmO6TbUzDfqLD39CmEhN8+2cX9XkDo5yW1OpgfejfliysR2AWLpMamTiOiAp/mtroaymhpw==", "dev": true, "dependencies": { - "@babel/types": "^7.16.0", + "@babel/types": "^7.16.8", "jsesc": "^2.5.1", "source-map": "^0.5.0" }, @@ -109,38 +109,38 @@ } }, "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.0.tgz", - "integrity": "sha512-ItmYF9vR4zA8cByDocY05o0LGUkp1zhbTQOH1NFyl5xXEqlTJQCEJjieriw+aFpxo16swMxUnUiKS7a/r4vtHg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", + "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", "dev": true, "dependencies": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.5.tgz", - "integrity": "sha512-3JEA9G5dmmnIWdzaT9d0NmFRgYnWUThLsDaL7982H0XqqWr56lRrsmwheXFMjR+TMl7QMBb6mzy9kvgr1lRLUA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz", + "integrity": "sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA==", "dev": true, "dependencies": { - "@babel/helper-explode-assignable-expression": "^7.16.0", - "@babel/types": "^7.16.0" + "@babel/helper-explode-assignable-expression": "^7.16.7", + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.16.3", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz", - "integrity": "sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz", + "integrity": "sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.16.0", - "@babel/helper-validator-option": "^7.14.5", + "@babel/compat-data": "^7.16.4", + "@babel/helper-validator-option": "^7.16.7", "browserslist": "^4.17.5", "semver": "^6.3.0" }, @@ -152,18 +152,18 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.5.tgz", - "integrity": "sha512-NEohnYA7mkB8L5JhU7BLwcBdU3j83IziR9aseMueWGeAjblbul3zzb8UvJ3a1zuBiqCMObzCJHFqKIQE6hTVmg==", + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.10.tgz", + "integrity": "sha512-wDeej0pu3WN/ffTxMNCPW5UCiOav8IcLRxSIyp/9+IF2xJUM9h/OYjg0IJLHaL6F8oU8kqMz9nc1vryXhMsgXg==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.0", - "@babel/helper-environment-visitor": "^7.16.5", - "@babel/helper-function-name": "^7.16.0", - "@babel/helper-member-expression-to-functions": "^7.16.5", - "@babel/helper-optimise-call-expression": "^7.16.0", - "@babel/helper-replace-supers": "^7.16.5", - "@babel/helper-split-export-declaration": "^7.16.0" + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-member-expression-to-functions": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -173,12 +173,12 @@ } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.0.tgz", - "integrity": "sha512-3DyG0zAFAZKcOp7aVr33ddwkxJ0Z0Jr5V99y3I690eYLpukJsJvAbzTy1ewoCqsML8SbIrjH14Jc/nSQ4TvNPA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.7.tgz", + "integrity": "sha512-fk5A6ymfp+O5+p2yCkXAu5Kyj6v0xh0RBeNcAkYUMDvvAAoxvSKXn+Jb37t/yWFiQVDFK1ELpUTD8/aLhCPu+g==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-annotate-as-pure": "^7.16.7", "regexpu-core": "^4.7.1" }, "engines": { @@ -189,9 +189,9 @@ } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.0.tgz", - "integrity": "sha512-7hfT8lUljl/tM3h+izTX/pO3W3frz2ok6Pk+gzys8iJqDfZrZy2pXjRTZAvG2YmfHun1X4q8/UZRLatMfqc5Tg==", + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz", + "integrity": "sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==", "dev": true, "dependencies": { "@babel/helper-compilation-targets": "^7.13.0", @@ -208,168 +208,168 @@ } }, "node_modules/@babel/helper-environment-visitor": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.5.tgz", - "integrity": "sha512-ODQyc5AnxmZWm/R2W7fzhamOk1ey8gSguo5SGvF0zcB3uUzRpTRmM/jmLSm9bDMyPlvbyJ+PwPEK0BWIoZ9wjg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", + "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", "dev": true, "dependencies": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-explode-assignable-expression": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.0.tgz", - "integrity": "sha512-Hk2SLxC9ZbcOhLpg/yMznzJ11W++lg5GMbxt1ev6TXUiJB0N42KPC+7w8a+eWGuqDnUYuwStJoZHM7RgmIOaGQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz", + "integrity": "sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ==", "dev": true, "dependencies": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-function-name": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz", - "integrity": "sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz", + "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==", "dev": true, "dependencies": { - "@babel/helper-get-function-arity": "^7.16.0", - "@babel/template": "^7.16.0", - "@babel/types": "^7.16.0" + "@babel/helper-get-function-arity": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-get-function-arity": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz", - "integrity": "sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz", + "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==", "dev": true, "dependencies": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-hoist-variables": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz", - "integrity": "sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", + "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", "dev": true, "dependencies": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.5.tgz", - "integrity": "sha512-7fecSXq7ZrLE+TWshbGT+HyCLkxloWNhTbU2QM1NTI/tDqyf0oZiMcEfYtDuUDCo528EOlt39G1rftea4bRZIw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.7.tgz", + "integrity": "sha512-VtJ/65tYiU/6AbMTDwyoXGPKHgTsfRarivm+YbB5uAzKUyuPjgZSgAFeG87FCigc7KNHu2Pegh1XIT3lXjvz3Q==", "dev": true, "dependencies": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz", - "integrity": "sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", + "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", "dev": true, "dependencies": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.5.tgz", - "integrity": "sha512-CkvMxgV4ZyyioElFwcuWnDCcNIeyqTkCm9BxXZi73RR1ozqlpboqsbGUNvRTflgZtFbbJ1v5Emvm+lkjMYY/LQ==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.16.5", - "@babel/helper-module-imports": "^7.16.0", - "@babel/helper-simple-access": "^7.16.0", - "@babel/helper-split-export-declaration": "^7.16.0", - "@babel/helper-validator-identifier": "^7.15.7", - "@babel/template": "^7.16.0", - "@babel/traverse": "^7.16.5", - "@babel/types": "^7.16.0" + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.7.tgz", + "integrity": "sha512-gaqtLDxJEFCeQbYp9aLAefjhkKdjKcdh6DB7jniIGU3Pz52WAmP268zK0VgPz9hUNkMSYeH976K2/Y6yPadpng==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-simple-access": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.16.7", + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz", - "integrity": "sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz", + "integrity": "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==", "dev": true, "dependencies": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.5.tgz", - "integrity": "sha512-59KHWHXxVA9K4HNF4sbHCf+eJeFe0Te/ZFGqBT4OjXhrwvA04sGfaEGsVTdsjoszq0YTP49RC9UKe5g8uN2RwQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.5.tgz", - "integrity": "sha512-X+aAJldyxrOmN9v3FKp+Hu1NO69VWgYgDGq6YDykwRPzxs5f2N+X988CBXS7EQahDU+Vpet5QYMqLk+nsp+Qxw==", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz", + "integrity": "sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.0", - "@babel/helper-wrap-function": "^7.16.5", - "@babel/types": "^7.16.0" + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-wrap-function": "^7.16.8", + "@babel/types": "^7.16.8" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.5.tgz", - "integrity": "sha512-ao3seGVa/FZCMCCNDuBcqnBFSbdr8N2EW35mzojx3TwfIbdPmNK+JV6+2d5bR0Z71W5ocLnQp9en/cTF7pBJiQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz", + "integrity": "sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.16.5", - "@babel/helper-member-expression-to-functions": "^7.16.5", - "@babel/helper-optimise-call-expression": "^7.16.0", - "@babel/traverse": "^7.16.5", - "@babel/types": "^7.16.0" + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-member-expression-to-functions": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/traverse": "^7.16.7", + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-simple-access": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz", - "integrity": "sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz", + "integrity": "sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g==", "dev": true, "dependencies": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -388,71 +388,71 @@ } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz", - "integrity": "sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", + "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", "dev": true, "dependencies": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.15.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", - "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", + "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", - "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", + "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.5.tgz", - "integrity": "sha512-2J2pmLBqUqVdJw78U0KPNdeE2qeuIyKoG4mKV7wAq3mc4jJG282UgjZw4ZYDnqiWQuS3Y3IYdF/AQ6CpyBV3VA==", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz", + "integrity": "sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.16.0", - "@babel/template": "^7.16.0", - "@babel/traverse": "^7.16.5", - "@babel/types": "^7.16.0" + "@babel/helper-function-name": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.16.8", + "@babel/types": "^7.16.8" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.5.tgz", - "integrity": "sha512-TLgi6Lh71vvMZGEkFuIxzaPsyeYCHQ5jJOOX1f0xXn0uciFuE8cEk0wyBquMcCxBXZ5BJhE2aUB7pnWTD150Tw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.7.tgz", + "integrity": "sha512-9ZDoqtfY7AuEOt3cxchfii6C7GDyyMBffktR5B2jvWv8u2+efwvpnVKXMWzNehqy68tKgAfSwfdw/lWpthS2bw==", "dev": true, "dependencies": { - "@babel/template": "^7.16.0", - "@babel/traverse": "^7.16.5", - "@babel/types": "^7.16.0" + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.16.7", + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", - "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz", + "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.15.7", + "@babel/helper-validator-identifier": "^7.16.7", "chalk": "^2.0.0", "js-tokens": "^4.0.0" }, @@ -461,9 +461,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.16.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.6.tgz", - "integrity": "sha512-Gr86ujcNuPDnNOY8mi383Hvi8IYrJVJYuf3XcuBM/Dgd+bINn/7tHqsj+tKkoreMbmGsFLsltI/JJd8fOFWGDQ==", + "version": "7.16.12", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.12.tgz", + "integrity": "sha512-VfaV15po8RiZssrkPweyvbGVSe4x2y+aciFCgn0n0/SJMR22cwofRV1mtnJQYcSB1wUTaA/X1LnA3es66MCO5A==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -473,12 +473,12 @@ } }, "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.16.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.2.tgz", - "integrity": "sha512-h37CvpLSf8gb2lIJ2CgC3t+EjFbi0t8qS7LCS1xcJIlEXE4czlofwaW7W1HA8zpgOCzI9C1nmoqNR1zWkk0pQg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7.tgz", + "integrity": "sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -488,14 +488,14 @@ } }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.0.tgz", - "integrity": "sha512-4tcFwwicpWTrpl9qjf7UsoosaArgImF85AxqCRZlgc3IQDvkUHjJpruXAL58Wmj+T6fypWTC/BakfEkwIL/pwA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz", + "integrity": "sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", - "@babel/plugin-proposal-optional-chaining": "^7.16.0" + "@babel/plugin-proposal-optional-chaining": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -505,13 +505,13 @@ } }, "node_modules/@babel/plugin-proposal-async-generator-functions": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.5.tgz", - "integrity": "sha512-C/FX+3HNLV6sz7AqbTQqEo1L9/kfrKjxcVtgyBCmvIgOjvuBVUWooDoi7trsLxOzCEo5FccjRvKHkfDsJFZlfA==", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz", + "integrity": "sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5", - "@babel/helper-remap-async-to-generator": "^7.16.5", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-remap-async-to-generator": "^7.16.8", "@babel/plugin-syntax-async-generators": "^7.8.4" }, "engines": { @@ -522,13 +522,13 @@ } }, "node_modules/@babel/plugin-proposal-class-properties": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.5.tgz", - "integrity": "sha512-pJD3HjgRv83s5dv1sTnDbZOaTjghKEz8KUn1Kbh2eAIRhGuyQ1XSeI4xVXU3UlIEVA3DAyIdxqT1eRn7Wcn55A==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz", + "integrity": "sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.16.5", - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -538,13 +538,13 @@ } }, "node_modules/@babel/plugin-proposal-class-static-block": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.5.tgz", - "integrity": "sha512-EEFzuLZcm/rNJ8Q5krK+FRKdVkd6FjfzT9tuSZql9sQn64K0hHA2KLJ0DqVot9/iV6+SsuadC5yI39zWnm+nmQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.7.tgz", + "integrity": "sha512-dgqJJrcZoG/4CkMopzhPJjGxsIe9A8RlkQLnL/Vhhx8AA9ZuaRwGSlscSh42hazc7WSrya/IK7mTeoF0DP9tEw==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.16.5", - "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-class-static-block": "^7.14.5" }, "engines": { @@ -555,12 +555,12 @@ } }, "node_modules/@babel/plugin-proposal-dynamic-import": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.5.tgz", - "integrity": "sha512-P05/SJZTTvHz79LNYTF8ff5xXge0kk5sIIWAypcWgX4BTRUgyHc8wRxJ/Hk+mU0KXldgOOslKaeqnhthcDJCJQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz", + "integrity": "sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-dynamic-import": "^7.8.3" }, "engines": { @@ -571,12 +571,12 @@ } }, "node_modules/@babel/plugin-proposal-export-namespace-from": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.5.tgz", - "integrity": "sha512-i+sltzEShH1vsVydvNaTRsgvq2vZsfyrd7K7vPLUU/KgS0D5yZMe6uipM0+izminnkKrEfdUnz7CxMRb6oHZWw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz", + "integrity": "sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" }, "engines": { @@ -587,12 +587,12 @@ } }, "node_modules/@babel/plugin-proposal-json-strings": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.5.tgz", - "integrity": "sha512-QQJueTFa0y9E4qHANqIvMsuxM/qcLQmKttBACtPCQzGUEizsXDACGonlPiSwynHfOa3vNw0FPMVvQzbuXwh4SQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz", + "integrity": "sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-json-strings": "^7.8.3" }, "engines": { @@ -603,12 +603,12 @@ } }, "node_modules/@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.5.tgz", - "integrity": "sha512-xqibl7ISO2vjuQM+MzR3rkd0zfNWltk7n9QhaD8ghMmMceVguYrNDt7MikRyj4J4v3QehpnrU8RYLnC7z/gZLA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz", + "integrity": "sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" }, "engines": { @@ -619,12 +619,12 @@ } }, "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.5.tgz", - "integrity": "sha512-YwMsTp/oOviSBhrjwi0vzCUycseCYwoXnLiXIL3YNjHSMBHicGTz7GjVU/IGgz4DtOEXBdCNG72pvCX22ehfqg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz", + "integrity": "sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" }, "engines": { @@ -635,12 +635,12 @@ } }, "node_modules/@babel/plugin-proposal-numeric-separator": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.5.tgz", - "integrity": "sha512-DvB9l/TcsCRvsIV9v4jxR/jVP45cslTVC0PMVHvaJhhNuhn2Y1SOhCSFlPK777qLB5wb8rVDaNoqMTyOqtY5Iw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz", + "integrity": "sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-numeric-separator": "^7.10.4" }, "engines": { @@ -651,16 +651,16 @@ } }, "node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.5.tgz", - "integrity": "sha512-UEd6KpChoyPhCoE840KRHOlGhEZFutdPDMGj+0I56yuTTOaT51GzmnEl/0uT41fB/vD2nT+Pci2KjezyE3HmUw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.7.tgz", + "integrity": "sha512-3O0Y4+dw94HA86qSg9IHfyPktgR7q3gpNVAeiKQd+8jBKFaU5NQS1Yatgo4wY+UFNuLjvxcSmzcsHqrhgTyBUA==", "dev": true, "dependencies": { "@babel/compat-data": "^7.16.4", - "@babel/helper-compilation-targets": "^7.16.3", - "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.16.5" + "@babel/plugin-transform-parameters": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -670,12 +670,12 @@ } }, "node_modules/@babel/plugin-proposal-optional-catch-binding": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.5.tgz", - "integrity": "sha512-ihCMxY1Iljmx4bWy/PIMJGXN4NS4oUj1MKynwO07kiKms23pNvIn1DMB92DNB2R0EA882sw0VXIelYGdtF7xEQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz", + "integrity": "sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" }, "engines": { @@ -686,12 +686,12 @@ } }, "node_modules/@babel/plugin-proposal-optional-chaining": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.5.tgz", - "integrity": "sha512-kzdHgnaXRonttiTfKYnSVafbWngPPr2qKw9BWYBESl91W54e+9R5pP70LtWxV56g0f05f/SQrwHYkfvbwcdQ/A==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz", + "integrity": "sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", "@babel/plugin-syntax-optional-chaining": "^7.8.3" }, @@ -703,13 +703,13 @@ } }, "node_modules/@babel/plugin-proposal-private-methods": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.5.tgz", - "integrity": "sha512-+yFMO4BGT3sgzXo+lrq7orX5mAZt57DwUK6seqII6AcJnJOIhBJ8pzKH47/ql/d426uQ7YhN8DpUFirQzqYSUA==", + "version": "7.16.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz", + "integrity": "sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.16.5", - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-create-class-features-plugin": "^7.16.10", + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -719,14 +719,14 @@ } }, "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.5.tgz", - "integrity": "sha512-+YGh5Wbw0NH3y/E5YMu6ci5qTDmAEVNoZ3I54aB6nVEOZ5BQ7QJlwKq5pYVucQilMByGn/bvX0af+uNaPRCabA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz", + "integrity": "sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.0", - "@babel/helper-create-class-features-plugin": "^7.16.5", - "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-private-property-in-object": "^7.14.5" }, "engines": { @@ -737,13 +737,13 @@ } }, "node_modules/@babel/plugin-proposal-unicode-property-regex": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.5.tgz", - "integrity": "sha512-s5sKtlKQyFSatt781HQwv1hoM5BQ9qRH30r+dK56OLDsHmV74mzwJNX7R1yMuE7VZKG5O6q/gmOGSAO6ikTudg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz", + "integrity": "sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.16.0", - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=4" @@ -816,12 +816,12 @@ } }, "node_modules/@babel/plugin-syntax-flow": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.16.5.tgz", - "integrity": "sha512-Nrx+7EAJx1BieBQseZa2pavVH2Rp7hADK2xn7coYqVbWRu9C2OFizYcsKo6TrrqJkJl+qF/+Qqzrk/+XDu4GnA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.16.7.tgz", + "integrity": "sha512-UDo3YGQO0jH6ytzVwgSLv9i/CzMcUjbKenL67dTrAZPPv6GFAtDhe6jqnvmoKzC/7htNTohhos+onPtDMqJwaQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -945,12 +945,12 @@ } }, "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.5.tgz", - "integrity": "sha512-8bTHiiZyMOyfZFULjsCnYOWG059FVMes0iljEHSfARhNgFfpsqE92OrCffv3veSw9rwMkYcFe9bj0ZoXU2IGtQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz", + "integrity": "sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -960,14 +960,14 @@ } }, "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.5.tgz", - "integrity": "sha512-TMXgfioJnkXU+XRoj7P2ED7rUm5jbnDWwlCuFVTpQboMfbSya5WrmubNBAMlk7KXvywpo8rd8WuYZkis1o2H8w==", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz", + "integrity": "sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg==", "dev": true, "dependencies": { - "@babel/helper-module-imports": "^7.16.0", - "@babel/helper-plugin-utils": "^7.16.5", - "@babel/helper-remap-async-to-generator": "^7.16.5" + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-remap-async-to-generator": "^7.16.8" }, "engines": { "node": ">=6.9.0" @@ -977,12 +977,12 @@ } }, "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.5.tgz", - "integrity": "sha512-BxmIyKLjUGksJ99+hJyL/HIxLIGnLKtw772zYDER7UuycDZ+Xvzs98ZQw6NGgM2ss4/hlFAaGiZmMNKvValEjw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz", + "integrity": "sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -992,12 +992,12 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.5.tgz", - "integrity": "sha512-JxjSPNZSiOtmxjX7PBRBeRJTUKTyJ607YUYeT0QJCNdsedOe+/rXITjP08eG8xUpsLfPirgzdCFN+h0w6RI+pQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz", + "integrity": "sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1007,18 +1007,18 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.5.tgz", - "integrity": "sha512-DzJ1vYf/7TaCYy57J3SJ9rV+JEuvmlnvvyvYKFbk5u46oQbBvuB9/0w+YsVsxkOv8zVWKpDmUoj4T5ILHoXevA==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.0", - "@babel/helper-environment-visitor": "^7.16.5", - "@babel/helper-function-name": "^7.16.0", - "@babel/helper-optimise-call-expression": "^7.16.0", - "@babel/helper-plugin-utils": "^7.16.5", - "@babel/helper-replace-supers": "^7.16.5", - "@babel/helper-split-export-declaration": "^7.16.0", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz", + "integrity": "sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", "globals": "^11.1.0" }, "engines": { @@ -1029,12 +1029,12 @@ } }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.5.tgz", - "integrity": "sha512-n1+O7xtU5lSLraRzX88CNcpl7vtGdPakKzww74bVwpAIRgz9JVLJJpOLb0uYqcOaXVM0TL6X0RVeIJGD2CnCkg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz", + "integrity": "sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1044,12 +1044,12 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.5.tgz", - "integrity": "sha512-GuRVAsjq+c9YPK6NeTkRLWyQskDC099XkBSVO+6QzbnOnH2d/4mBVXYStaPrZD3dFRfg00I6BFJ9Atsjfs8mlg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.7.tgz", + "integrity": "sha512-VqAwhTHBnu5xBVDCvrvqJbtLUa++qZaWC0Fgr2mqokBlulZARGyIvZDoqbPlPaKImQ9dKAcCzbv+ul//uqu70A==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1059,13 +1059,13 @@ } }, "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.5.tgz", - "integrity": "sha512-iQiEMt8Q4/5aRGHpGVK2Zc7a6mx7qEAO7qehgSug3SDImnuMzgmm/wtJALXaz25zUj1PmnNHtShjFgk4PDx4nw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz", + "integrity": "sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.16.0", - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1075,12 +1075,12 @@ } }, "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.5.tgz", - "integrity": "sha512-81tijpDg2a6I1Yhj4aWY1l3O1J4Cg/Pd7LfvuaH2VVInAkXtzibz9+zSPdUM1WvuUi128ksstAP0hM5w48vQgg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz", + "integrity": "sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1090,13 +1090,13 @@ } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.5.tgz", - "integrity": "sha512-12rba2HwemQPa7BLIKCzm1pT2/RuQHtSFHdNl41cFiC6oi4tcrp7gjB07pxQvFpcADojQywSjblQth6gJyE6CA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz", + "integrity": "sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==", "dev": true, "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.5", - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1106,13 +1106,13 @@ } }, "node_modules/@babel/plugin-transform-flow-strip-types": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.16.5.tgz", - "integrity": "sha512-skE02E/MptkZdBS4HwoRhjWXqeKQj0BWKEAPfPC+8R4/f6bjQqQ9Nftv/+HkxWwnVxh/E2NV9TNfzLN5H/oiBw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.16.7.tgz", + "integrity": "sha512-mzmCq3cNsDpZZu9FADYYyfZJIOrSONmHcop2XEKPdBNMa4PDC4eEvcOvzZaCNcjKu72v0XQlA5y1g58aLRXdYg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5", - "@babel/plugin-syntax-flow": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-flow": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1122,12 +1122,12 @@ } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.5.tgz", - "integrity": "sha512-+DpCAJFPAvViR17PIMi9x2AE34dll5wNlXO43wagAX2YcRGgEVHCNFC4azG85b4YyyFarvkc/iD5NPrz4Oneqw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz", + "integrity": "sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1137,13 +1137,14 @@ } }, "node_modules/@babel/plugin-transform-function-name": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.5.tgz", - "integrity": "sha512-Fuec/KPSpVLbGo6z1RPw4EE1X+z9gZk1uQmnYy7v4xr4TO9p41v1AoUuXEtyqAI7H+xNJYSICzRqZBhDEkd3kQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz", + "integrity": "sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.16.0", - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1153,12 +1154,12 @@ } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.5.tgz", - "integrity": "sha512-B1j9C/IfvshnPcklsc93AVLTrNVa69iSqztylZH6qnmiAsDDOmmjEYqOm3Ts2lGSgTSywnBNiqC949VdD0/gfw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz", + "integrity": "sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1168,12 +1169,12 @@ } }, "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.5.tgz", - "integrity": "sha512-d57i3vPHWgIde/9Y8W/xSFUndhvhZN5Wu2TjRrN1MVz5KzdUihKnfDVlfP1U7mS5DNj/WHHhaE4/tTi4hIyHwQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz", + "integrity": "sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1183,13 +1184,13 @@ } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.5.tgz", - "integrity": "sha512-oHI15S/hdJuSCfnwIz+4lm6wu/wBn7oJ8+QrkzPPwSFGXk8kgdI/AIKcbR/XnD1nQVMg/i6eNaXpszbGuwYDRQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz", + "integrity": "sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.16.5", - "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", "babel-plugin-dynamic-import-node": "^2.3.3" }, "engines": { @@ -1200,14 +1201,14 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.5.tgz", - "integrity": "sha512-ABhUkxvoQyqhCWyb8xXtfwqNMJD7tx+irIRnUh6lmyFud7Jln1WzONXKlax1fg/ey178EXbs4bSGNd6PngO+SQ==", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.8.tgz", + "integrity": "sha512-oflKPvsLT2+uKQopesJt3ApiaIS2HW+hzHFcwRNtyDGieAeC/dIHZX8buJQ2J2X1rxGPy4eRcUijm3qcSPjYcA==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.16.5", - "@babel/helper-plugin-utils": "^7.16.5", - "@babel/helper-simple-access": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-simple-access": "^7.16.7", "babel-plugin-dynamic-import-node": "^2.3.3" }, "engines": { @@ -1218,15 +1219,15 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.5.tgz", - "integrity": "sha512-53gmLdScNN28XpjEVIm7LbWnD/b/TpbwKbLk6KV4KqC9WyU6rq1jnNmVG6UgAdQZVVGZVoik3DqHNxk4/EvrjA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.7.tgz", + "integrity": "sha512-DuK5E3k+QQmnOqBR9UkusByy5WZWGRxfzV529s9nPra1GE7olmxfqO2FHobEOYSPIjPBTr4p66YDcjQnt8cBmw==", "dev": true, "dependencies": { - "@babel/helper-hoist-variables": "^7.16.0", - "@babel/helper-module-transforms": "^7.16.5", - "@babel/helper-plugin-utils": "^7.16.5", - "@babel/helper-validator-identifier": "^7.15.7", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", "babel-plugin-dynamic-import-node": "^2.3.3" }, "engines": { @@ -1237,13 +1238,13 @@ } }, "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.5.tgz", - "integrity": "sha512-qTFnpxHMoenNHkS3VoWRdwrcJ3FhX567GvDA3hRZKF0Dj8Fmg0UzySZp3AP2mShl/bzcywb/UWAMQIjA1bhXvw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz", + "integrity": "sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.16.5", - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1253,12 +1254,12 @@ } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.5.tgz", - "integrity": "sha512-/wqGDgvFUeKELW6ex6QB7dLVRkd5ehjw34tpXu1nhKC0sFfmaLabIswnpf8JgDyV2NeDmZiwoOb0rAmxciNfjA==", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.8.tgz", + "integrity": "sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.16.0" + "@babel/helper-create-regexp-features-plugin": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1268,12 +1269,12 @@ } }, "node_modules/@babel/plugin-transform-new-target": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.5.tgz", - "integrity": "sha512-ZaIrnXF08ZC8jnKR4/5g7YakGVL6go6V9ql6Jl3ecO8PQaQqFE74CuM384kezju7Z9nGCCA20BqZaR1tJ/WvHg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz", + "integrity": "sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1283,13 +1284,13 @@ } }, "node_modules/@babel/plugin-transform-object-super": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.5.tgz", - "integrity": "sha512-tded+yZEXuxt9Jdtkc1RraW1zMF/GalVxaVVxh41IYwirdRgyAxxxCKZ9XB7LxZqmsjfjALxupNE1MIz9KH+Zg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz", + "integrity": "sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5", - "@babel/helper-replace-supers": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1299,12 +1300,12 @@ } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.5.tgz", - "integrity": "sha512-B3O6AL5oPop1jAVg8CV+haeUte9oFuY85zu0jwnRNZZi3tVAbJriu5tag/oaO2kGaQM/7q7aGPBlTI5/sr9enA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz", + "integrity": "sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1314,12 +1315,12 @@ } }, "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.5.tgz", - "integrity": "sha512-+IRcVW71VdF9pEH/2R/Apab4a19LVvdVsr/gEeotH00vSDVlKD+XgfSIw+cgGWsjDB/ziqGv/pGoQZBIiQVXHg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz", + "integrity": "sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1329,9 +1330,9 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.5.tgz", - "integrity": "sha512-2z+it2eVWU8TtQQRauvGUqZwLy4+7rTfo6wO4npr+fvvN1SW30ZF3O/ZRCNmTuu4F5MIP8OJhXAhRV5QMJOuYg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.7.tgz", + "integrity": "sha512-mF7jOgGYCkSJagJ6XCujSQg+6xC1M77/03K2oBmVJWoFGNUtnVJO4WHKJk3dnPC8HCcj4xBQP1Egm8DWh3Pb3Q==", "dev": true, "dependencies": { "regenerator-transform": "^0.14.2" @@ -1344,12 +1345,12 @@ } }, "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.5.tgz", - "integrity": "sha512-aIB16u8lNcf7drkhXJRoggOxSTUAuihTSTfAcpynowGJOZiGf+Yvi7RuTwFzVYSYPmWyARsPqUGoZWWWxLiknw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz", + "integrity": "sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1359,12 +1360,12 @@ } }, "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.5.tgz", - "integrity": "sha512-ZbuWVcY+MAXJuuW7qDoCwoxDUNClfZxoo7/4swVbOW1s/qYLOMHlm9YRWMsxMFuLs44eXsv4op1vAaBaBaDMVg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz", + "integrity": "sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1374,12 +1375,12 @@ } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.5.tgz", - "integrity": "sha512-5d6l/cnG7Lw4tGHEoga4xSkYp1euP7LAtrah1h1PgJ3JY7yNsjybsxQAnVK4JbtReZ/8z6ASVmd3QhYYKLaKZw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz", + "integrity": "sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" }, "engines": { @@ -1390,12 +1391,12 @@ } }, "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.5.tgz", - "integrity": "sha512-usYsuO1ID2LXxzuUxifgWtJemP7wL2uZtyrTVM4PKqsmJycdS4U4mGovL5xXkfUheds10Dd2PjoQLXw6zCsCbg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz", + "integrity": "sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1405,12 +1406,12 @@ } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.5.tgz", - "integrity": "sha512-gnyKy9RyFhkovex4BjKWL3BVYzUDG6zC0gba7VMLbQoDuqMfJ1SDXs8k/XK41Mmt1Hyp4qNAvGFb9hKzdCqBRQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz", + "integrity": "sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1420,12 +1421,12 @@ } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.5.tgz", - "integrity": "sha512-ldxCkW180qbrvyCVDzAUZqB0TAeF8W/vGJoRcaf75awm6By+PxfJKvuqVAnq8N9wz5Xa6mSpM19OfVKKVmGHSQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz", + "integrity": "sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1435,12 +1436,12 @@ } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.5.tgz", - "integrity": "sha512-shiCBHTIIChGLdyojsKQjoAyB8MBwat25lKM7MJjbe1hE0bgIppD+LX9afr41lLHOhqceqeWl4FkLp+Bgn9o1Q==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz", + "integrity": "sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1450,13 +1451,13 @@ } }, "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.5.tgz", - "integrity": "sha512-GTJ4IW012tiPEMMubd7sD07iU9O/LOo8Q/oU4xNhcaq0Xn8+6TcUQaHtC8YxySo1T+ErQ8RaWogIEeFhKGNPzw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz", + "integrity": "sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.16.0", - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1466,32 +1467,32 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.5.tgz", - "integrity": "sha512-MiJJW5pwsktG61NDxpZ4oJ1CKxM1ncam9bzRtx9g40/WkLRkxFP6mhpkYV0/DxcciqoiHicx291+eUQrXb/SfQ==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.16.4", - "@babel/helper-compilation-targets": "^7.16.3", - "@babel/helper-plugin-utils": "^7.16.5", - "@babel/helper-validator-option": "^7.14.5", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.2", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.0", - "@babel/plugin-proposal-async-generator-functions": "^7.16.5", - "@babel/plugin-proposal-class-properties": "^7.16.5", - "@babel/plugin-proposal-class-static-block": "^7.16.5", - "@babel/plugin-proposal-dynamic-import": "^7.16.5", - "@babel/plugin-proposal-export-namespace-from": "^7.16.5", - "@babel/plugin-proposal-json-strings": "^7.16.5", - "@babel/plugin-proposal-logical-assignment-operators": "^7.16.5", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.5", - "@babel/plugin-proposal-numeric-separator": "^7.16.5", - "@babel/plugin-proposal-object-rest-spread": "^7.16.5", - "@babel/plugin-proposal-optional-catch-binding": "^7.16.5", - "@babel/plugin-proposal-optional-chaining": "^7.16.5", - "@babel/plugin-proposal-private-methods": "^7.16.5", - "@babel/plugin-proposal-private-property-in-object": "^7.16.5", - "@babel/plugin-proposal-unicode-property-regex": "^7.16.5", + "version": "7.16.11", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.11.tgz", + "integrity": "sha512-qcmWG8R7ZW6WBRPZK//y+E3Cli151B20W1Rv7ln27vuPaXU/8TKms6jFdiJtF7UDTxcrb7mZd88tAeK9LjdT8g==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.16.8", + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-option": "^7.16.7", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.7", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.7", + "@babel/plugin-proposal-async-generator-functions": "^7.16.8", + "@babel/plugin-proposal-class-properties": "^7.16.7", + "@babel/plugin-proposal-class-static-block": "^7.16.7", + "@babel/plugin-proposal-dynamic-import": "^7.16.7", + "@babel/plugin-proposal-export-namespace-from": "^7.16.7", + "@babel/plugin-proposal-json-strings": "^7.16.7", + "@babel/plugin-proposal-logical-assignment-operators": "^7.16.7", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.7", + "@babel/plugin-proposal-numeric-separator": "^7.16.7", + "@babel/plugin-proposal-object-rest-spread": "^7.16.7", + "@babel/plugin-proposal-optional-catch-binding": "^7.16.7", + "@babel/plugin-proposal-optional-chaining": "^7.16.7", + "@babel/plugin-proposal-private-methods": "^7.16.11", + "@babel/plugin-proposal-private-property-in-object": "^7.16.7", + "@babel/plugin-proposal-unicode-property-regex": "^7.16.7", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", "@babel/plugin-syntax-class-static-block": "^7.14.5", @@ -1506,44 +1507,44 @@ "@babel/plugin-syntax-optional-chaining": "^7.8.3", "@babel/plugin-syntax-private-property-in-object": "^7.14.5", "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-transform-arrow-functions": "^7.16.5", - "@babel/plugin-transform-async-to-generator": "^7.16.5", - "@babel/plugin-transform-block-scoped-functions": "^7.16.5", - "@babel/plugin-transform-block-scoping": "^7.16.5", - "@babel/plugin-transform-classes": "^7.16.5", - "@babel/plugin-transform-computed-properties": "^7.16.5", - "@babel/plugin-transform-destructuring": "^7.16.5", - "@babel/plugin-transform-dotall-regex": "^7.16.5", - "@babel/plugin-transform-duplicate-keys": "^7.16.5", - "@babel/plugin-transform-exponentiation-operator": "^7.16.5", - "@babel/plugin-transform-for-of": "^7.16.5", - "@babel/plugin-transform-function-name": "^7.16.5", - "@babel/plugin-transform-literals": "^7.16.5", - "@babel/plugin-transform-member-expression-literals": "^7.16.5", - "@babel/plugin-transform-modules-amd": "^7.16.5", - "@babel/plugin-transform-modules-commonjs": "^7.16.5", - "@babel/plugin-transform-modules-systemjs": "^7.16.5", - "@babel/plugin-transform-modules-umd": "^7.16.5", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.5", - "@babel/plugin-transform-new-target": "^7.16.5", - "@babel/plugin-transform-object-super": "^7.16.5", - "@babel/plugin-transform-parameters": "^7.16.5", - "@babel/plugin-transform-property-literals": "^7.16.5", - "@babel/plugin-transform-regenerator": "^7.16.5", - "@babel/plugin-transform-reserved-words": "^7.16.5", - "@babel/plugin-transform-shorthand-properties": "^7.16.5", - "@babel/plugin-transform-spread": "^7.16.5", - "@babel/plugin-transform-sticky-regex": "^7.16.5", - "@babel/plugin-transform-template-literals": "^7.16.5", - "@babel/plugin-transform-typeof-symbol": "^7.16.5", - "@babel/plugin-transform-unicode-escapes": "^7.16.5", - "@babel/plugin-transform-unicode-regex": "^7.16.5", + "@babel/plugin-transform-arrow-functions": "^7.16.7", + "@babel/plugin-transform-async-to-generator": "^7.16.8", + "@babel/plugin-transform-block-scoped-functions": "^7.16.7", + "@babel/plugin-transform-block-scoping": "^7.16.7", + "@babel/plugin-transform-classes": "^7.16.7", + "@babel/plugin-transform-computed-properties": "^7.16.7", + "@babel/plugin-transform-destructuring": "^7.16.7", + "@babel/plugin-transform-dotall-regex": "^7.16.7", + "@babel/plugin-transform-duplicate-keys": "^7.16.7", + "@babel/plugin-transform-exponentiation-operator": "^7.16.7", + "@babel/plugin-transform-for-of": "^7.16.7", + "@babel/plugin-transform-function-name": "^7.16.7", + "@babel/plugin-transform-literals": "^7.16.7", + "@babel/plugin-transform-member-expression-literals": "^7.16.7", + "@babel/plugin-transform-modules-amd": "^7.16.7", + "@babel/plugin-transform-modules-commonjs": "^7.16.8", + "@babel/plugin-transform-modules-systemjs": "^7.16.7", + "@babel/plugin-transform-modules-umd": "^7.16.7", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.8", + "@babel/plugin-transform-new-target": "^7.16.7", + "@babel/plugin-transform-object-super": "^7.16.7", + "@babel/plugin-transform-parameters": "^7.16.7", + "@babel/plugin-transform-property-literals": "^7.16.7", + "@babel/plugin-transform-regenerator": "^7.16.7", + "@babel/plugin-transform-reserved-words": "^7.16.7", + "@babel/plugin-transform-shorthand-properties": "^7.16.7", + "@babel/plugin-transform-spread": "^7.16.7", + "@babel/plugin-transform-sticky-regex": "^7.16.7", + "@babel/plugin-transform-template-literals": "^7.16.7", + "@babel/plugin-transform-typeof-symbol": "^7.16.7", + "@babel/plugin-transform-unicode-escapes": "^7.16.7", + "@babel/plugin-transform-unicode-regex": "^7.16.7", "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.16.0", + "@babel/types": "^7.16.8", "babel-plugin-polyfill-corejs2": "^0.3.0", - "babel-plugin-polyfill-corejs3": "^0.4.0", + "babel-plugin-polyfill-corejs3": "^0.5.0", "babel-plugin-polyfill-regenerator": "^0.3.0", - "core-js-compat": "^3.19.1", + "core-js-compat": "^3.20.2", "semver": "^6.3.0" }, "engines": { @@ -1554,14 +1555,14 @@ } }, "node_modules/@babel/preset-flow": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.16.5.tgz", - "integrity": "sha512-rmC6Nznp4V55N4Zfec87jwd14TdREqwKVJFM/6Z2wTwoeZQr56czjaPRCezqzqc8TsHF7aLP1oczjadIQ058gw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.16.7.tgz", + "integrity": "sha512-6ceP7IyZdUYQ3wUVqyRSQXztd1YmFHWI4Xv11MIqAlE4WqxBSd/FZ61V9k+TS5Gd4mkHOtQtPp9ymRpxH4y1Ug==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5", - "@babel/helper-validator-option": "^7.14.5", - "@babel/plugin-transform-flow-strip-types": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-option": "^7.16.7", + "@babel/plugin-transform-flow-strip-types": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1599,33 +1600,33 @@ } }, "node_modules/@babel/template": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", - "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", + "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.16.0", - "@babel/parser": "^7.16.0", - "@babel/types": "^7.16.0" + "@babel/code-frame": "^7.16.7", + "@babel/parser": "^7.16.7", + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.5.tgz", - "integrity": "sha512-FOCODAzqUMROikDYLYxl4nmwiLlu85rNqBML/A5hKRVXG2LV8d0iMqgPzdYTcIpjZEBB7D6UDU9vxRZiriASdQ==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.16.0", - "@babel/generator": "^7.16.5", - "@babel/helper-environment-visitor": "^7.16.5", - "@babel/helper-function-name": "^7.16.0", - "@babel/helper-hoist-variables": "^7.16.0", - "@babel/helper-split-export-declaration": "^7.16.0", - "@babel/parser": "^7.16.5", - "@babel/types": "^7.16.0", + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.10.tgz", + "integrity": "sha512-yzuaYXoRJBGMlBhsMJoUW7G1UmSb/eXr/JHYM/MsOJgavJibLwASijW7oXBdw3NQ6T0bW7Ty5P/VarOs9cHmqw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.16.8", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/parser": "^7.16.10", + "@babel/types": "^7.16.8", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -1634,12 +1635,12 @@ } }, "node_modules/@babel/types": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", - "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.8.tgz", + "integrity": "sha512-smN2DQc5s4M7fntyjGtyIPbRJv6wW4rU/94fmYJ7PKQuZkC0qGMHXJbg6sNGt12JmVr4k5YaptI/XtiLJBnmIg==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.15.7", + "@babel/helper-validator-identifier": "^7.16.7", "to-fast-properties": "^2.0.0" }, "engines": { @@ -2187,13 +2188,13 @@ } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.4.0.tgz", - "integrity": "sha512-YxFreYwUfglYKdLUGvIF2nJEsGwj+RhWSX/ije3D2vQPOXuyMLMtg/cCGMDpOA7Nd+MwlNdnGODbd2EwUZPlsw==", + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.1.tgz", + "integrity": "sha512-TihqEe4sQcb/QcPJvxe94/9RZuLQuF1+To4WqQcRvc+3J3gLCPIPgDKzGLG6zmQLfH3nn25heRuDNkS2KR4I8A==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.3.0", - "core-js-compat": "^3.18.0" + "@babel/helper-define-polyfill-provider": "^0.3.1", + "core-js-compat": "^3.20.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" @@ -2318,13 +2319,13 @@ } }, "node_modules/browserslist": { - "version": "4.17.6", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.6.tgz", - "integrity": "sha512-uPgz3vyRTlEiCv4ee9KlsKgo2V6qPk7Jsn0KAn2OBqbqKo3iNcPEC1Ti6J4dwnz+aIRfEEEuOzC9IBk8tXUomw==", + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.1.tgz", + "integrity": "sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==", "dev": true, "dependencies": { - "caniuse-lite": "^1.0.30001274", - "electron-to-chromium": "^1.3.886", + "caniuse-lite": "^1.0.30001286", + "electron-to-chromium": "^1.4.17", "escalade": "^3.1.1", "node-releases": "^2.0.1", "picocolors": "^1.0.0" @@ -2408,9 +2409,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001279", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001279.tgz", - "integrity": "sha512-VfEHpzHEXj6/CxggTwSFoZBBYGQfQv9Cf42KPlO79sWXCD1QNKWKsKzFeWL7QpZHJQYAvocqV6Rty1yJMkqWLQ==", + "version": "1.0.30001304", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001304.tgz", + "integrity": "sha512-bdsfZd6K6ap87AGqSHJP/s1V+U6Z5lyrcbBu3ovbCCf8cSYpwTtGrCBObMpJqwxfTbLW6YTIdbb1jEeTelcpYQ==", "dev": true, "funding": { "type": "opencollective", @@ -2819,12 +2820,12 @@ } }, "node_modules/core-js-compat": { - "version": "3.19.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.19.1.tgz", - "integrity": "sha512-Q/VJ7jAF/y68+aUsQJ/afPOewdsGkDtcMb40J8MbuWKlK3Y+wtHq8bTHKPj2WKWLIqmS5JhHs4CzHtz6pT2W6g==", + "version": "3.20.3", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.20.3.tgz", + "integrity": "sha512-c8M5h0IkNZ+I92QhIpuSijOxGAcj3lgpsWdkCqmUTZNwidujF4r3pi6x1DCN+Vcs5qTS2XWWMfWSuCqyupX8gw==", "dev": true, "dependencies": { - "browserslist": "^4.17.6", + "browserslist": "^4.19.1", "semver": "7.0.0" }, "funding": { @@ -3086,9 +3087,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.3.894", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.894.tgz", - "integrity": "sha512-WY8pA4irAZ4cm/Pr7YFPtPLVqj3nU6d0SbfoHF6M7HZNONfPdAnYAarumqQ75go2LuN72uO9wGuCEqnfya/ytg==", + "version": "1.4.57", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.57.tgz", + "integrity": "sha512-FNC+P5K1n6pF+M0zIK+gFCoXcJhhzDViL3DRIGy2Fv5PohuSES1JHR7T+GlwxSxlzx4yYbsuzCZvHxcBSRCIOw==", "dev": true }, "node_modules/emoji-regex": { @@ -3909,9 +3910,9 @@ } }, "node_modules/graceful-fs": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", - "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", + "version": "4.2.9", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", + "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==", "dev": true }, "node_modules/gulp": { @@ -6501,9 +6502,9 @@ "optional": true }, "node_modules/nanoid": { - "version": "3.1.30", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.30.tgz", - "integrity": "sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.2.0.tgz", + "integrity": "sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA==", "dev": true, "bin": { "nanoid": "bin/nanoid.cjs" @@ -6631,15 +6632,23 @@ } }, "node_modules/node-fetch": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.5.tgz", - "integrity": "sha512-mmlIVHJEu5rnIxgEgez6b9GgWXbkZj5YZ7fx+2r94a2E+Uirsp6HsPTPlomfdHtpt/B0cdKviwkoaM6pyvUOpQ==", + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", "dev": true, "dependencies": { "whatwg-url": "^5.0.0" }, "engines": { "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } } }, "node_modules/node-releases": { @@ -9182,9 +9191,9 @@ "dev": true }, "node_modules/typescript": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.4.tgz", - "integrity": "sha512-VgYs2A2QIRuGphtzFV7aQJduJ2gyfTljngLzjpfW9FoYZF6xuw1W0vW9ghCKLfcWrCFxK81CSGRAvS1pn4fIUg==", + "version": "4.5.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.5.tgz", + "integrity": "sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -9767,35 +9776,35 @@ }, "dependencies": { "@babel/code-frame": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", - "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", + "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", "dev": true, "requires": { - "@babel/highlight": "^7.16.0" + "@babel/highlight": "^7.16.7" } }, "@babel/compat-data": { - "version": "7.16.4", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.4.tgz", - "integrity": "sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q==", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.8.tgz", + "integrity": "sha512-m7OkX0IdKLKPpBlJtF561YJal5y/jyI5fNfWbPxh2D/nbzzGI4qRyrD8xO2jB24u7l+5I2a43scCG2IrfjC50Q==", "dev": true }, "@babel/core": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.5.tgz", - "integrity": "sha512-wUcenlLzuWMZ9Zt8S0KmFwGlH6QKRh3vsm/dhDA3CHkiTA45YuG1XkHRcNRl73EFPXDp/d5kVOU0/y7x2w6OaQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.16.0", - "@babel/generator": "^7.16.5", - "@babel/helper-compilation-targets": "^7.16.3", - "@babel/helper-module-transforms": "^7.16.5", - "@babel/helpers": "^7.16.5", - "@babel/parser": "^7.16.5", - "@babel/template": "^7.16.0", - "@babel/traverse": "^7.16.5", - "@babel/types": "^7.16.0", + "version": "7.16.12", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.12.tgz", + "integrity": "sha512-dK5PtG1uiN2ikk++5OzSYsitZKny4wOCD0nrO4TqnW4BVBTQ2NGS3NgilvT/TEyxTST7LNyWV/T4tXDoD3fOgg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.16.8", + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helpers": "^7.16.7", + "@babel/parser": "^7.16.12", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.16.10", + "@babel/types": "^7.16.8", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -9805,76 +9814,76 @@ } }, "@babel/generator": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.5.tgz", - "integrity": "sha512-kIvCdjZqcdKqoDbVVdt5R99icaRtrtYhYK/xux5qiWCBmfdvEYMFZ68QCrpE5cbFM1JsuArUNs1ZkuKtTtUcZA==", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.8.tgz", + "integrity": "sha512-1ojZwE9+lOXzcWdWmO6TbUzDfqLD39CmEhN8+2cX9XkDo5yW1OpgfejfliysR2AWLpMamTiOiAp/mtroaymhpw==", "dev": true, "requires": { - "@babel/types": "^7.16.0", + "@babel/types": "^7.16.8", "jsesc": "^2.5.1", "source-map": "^0.5.0" } }, "@babel/helper-annotate-as-pure": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.0.tgz", - "integrity": "sha512-ItmYF9vR4zA8cByDocY05o0LGUkp1zhbTQOH1NFyl5xXEqlTJQCEJjieriw+aFpxo16swMxUnUiKS7a/r4vtHg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", + "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", "dev": true, "requires": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.16.7" } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.5.tgz", - "integrity": "sha512-3JEA9G5dmmnIWdzaT9d0NmFRgYnWUThLsDaL7982H0XqqWr56lRrsmwheXFMjR+TMl7QMBb6mzy9kvgr1lRLUA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz", + "integrity": "sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA==", "dev": true, "requires": { - "@babel/helper-explode-assignable-expression": "^7.16.0", - "@babel/types": "^7.16.0" + "@babel/helper-explode-assignable-expression": "^7.16.7", + "@babel/types": "^7.16.7" } }, "@babel/helper-compilation-targets": { - "version": "7.16.3", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz", - "integrity": "sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz", + "integrity": "sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA==", "dev": true, "requires": { - "@babel/compat-data": "^7.16.0", - "@babel/helper-validator-option": "^7.14.5", + "@babel/compat-data": "^7.16.4", + "@babel/helper-validator-option": "^7.16.7", "browserslist": "^4.17.5", "semver": "^6.3.0" } }, "@babel/helper-create-class-features-plugin": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.5.tgz", - "integrity": "sha512-NEohnYA7mkB8L5JhU7BLwcBdU3j83IziR9aseMueWGeAjblbul3zzb8UvJ3a1zuBiqCMObzCJHFqKIQE6hTVmg==", + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.10.tgz", + "integrity": "sha512-wDeej0pu3WN/ffTxMNCPW5UCiOav8IcLRxSIyp/9+IF2xJUM9h/OYjg0IJLHaL6F8oU8kqMz9nc1vryXhMsgXg==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.16.0", - "@babel/helper-environment-visitor": "^7.16.5", - "@babel/helper-function-name": "^7.16.0", - "@babel/helper-member-expression-to-functions": "^7.16.5", - "@babel/helper-optimise-call-expression": "^7.16.0", - "@babel/helper-replace-supers": "^7.16.5", - "@babel/helper-split-export-declaration": "^7.16.0" + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-member-expression-to-functions": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7" } }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.0.tgz", - "integrity": "sha512-3DyG0zAFAZKcOp7aVr33ddwkxJ0Z0Jr5V99y3I690eYLpukJsJvAbzTy1ewoCqsML8SbIrjH14Jc/nSQ4TvNPA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.7.tgz", + "integrity": "sha512-fk5A6ymfp+O5+p2yCkXAu5Kyj6v0xh0RBeNcAkYUMDvvAAoxvSKXn+Jb37t/yWFiQVDFK1ELpUTD8/aLhCPu+g==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-annotate-as-pure": "^7.16.7", "regexpu-core": "^4.7.1" } }, "@babel/helper-define-polyfill-provider": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.0.tgz", - "integrity": "sha512-7hfT8lUljl/tM3h+izTX/pO3W3frz2ok6Pk+gzys8iJqDfZrZy2pXjRTZAvG2YmfHun1X4q8/UZRLatMfqc5Tg==", + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz", + "integrity": "sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==", "dev": true, "requires": { "@babel/helper-compilation-targets": "^7.13.0", @@ -9888,132 +9897,132 @@ } }, "@babel/helper-environment-visitor": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.5.tgz", - "integrity": "sha512-ODQyc5AnxmZWm/R2W7fzhamOk1ey8gSguo5SGvF0zcB3uUzRpTRmM/jmLSm9bDMyPlvbyJ+PwPEK0BWIoZ9wjg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", + "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", "dev": true, "requires": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.16.7" } }, "@babel/helper-explode-assignable-expression": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.0.tgz", - "integrity": "sha512-Hk2SLxC9ZbcOhLpg/yMznzJ11W++lg5GMbxt1ev6TXUiJB0N42KPC+7w8a+eWGuqDnUYuwStJoZHM7RgmIOaGQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz", + "integrity": "sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ==", "dev": true, "requires": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.16.7" } }, "@babel/helper-function-name": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz", - "integrity": "sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz", + "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.16.0", - "@babel/template": "^7.16.0", - "@babel/types": "^7.16.0" + "@babel/helper-get-function-arity": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/types": "^7.16.7" } }, "@babel/helper-get-function-arity": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz", - "integrity": "sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz", + "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==", "dev": true, "requires": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.16.7" } }, "@babel/helper-hoist-variables": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz", - "integrity": "sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", + "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", "dev": true, "requires": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.16.7" } }, "@babel/helper-member-expression-to-functions": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.5.tgz", - "integrity": "sha512-7fecSXq7ZrLE+TWshbGT+HyCLkxloWNhTbU2QM1NTI/tDqyf0oZiMcEfYtDuUDCo528EOlt39G1rftea4bRZIw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.7.tgz", + "integrity": "sha512-VtJ/65tYiU/6AbMTDwyoXGPKHgTsfRarivm+YbB5uAzKUyuPjgZSgAFeG87FCigc7KNHu2Pegh1XIT3lXjvz3Q==", "dev": true, "requires": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.16.7" } }, "@babel/helper-module-imports": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz", - "integrity": "sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", + "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", "dev": true, "requires": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.16.7" } }, "@babel/helper-module-transforms": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.5.tgz", - "integrity": "sha512-CkvMxgV4ZyyioElFwcuWnDCcNIeyqTkCm9BxXZi73RR1ozqlpboqsbGUNvRTflgZtFbbJ1v5Emvm+lkjMYY/LQ==", - "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.16.5", - "@babel/helper-module-imports": "^7.16.0", - "@babel/helper-simple-access": "^7.16.0", - "@babel/helper-split-export-declaration": "^7.16.0", - "@babel/helper-validator-identifier": "^7.15.7", - "@babel/template": "^7.16.0", - "@babel/traverse": "^7.16.5", - "@babel/types": "^7.16.0" + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.7.tgz", + "integrity": "sha512-gaqtLDxJEFCeQbYp9aLAefjhkKdjKcdh6DB7jniIGU3Pz52WAmP268zK0VgPz9hUNkMSYeH976K2/Y6yPadpng==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-simple-access": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.16.7", + "@babel/types": "^7.16.7" } }, "@babel/helper-optimise-call-expression": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz", - "integrity": "sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz", + "integrity": "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==", "dev": true, "requires": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.16.7" } }, "@babel/helper-plugin-utils": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.5.tgz", - "integrity": "sha512-59KHWHXxVA9K4HNF4sbHCf+eJeFe0Te/ZFGqBT4OjXhrwvA04sGfaEGsVTdsjoszq0YTP49RC9UKe5g8uN2RwQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", "dev": true }, "@babel/helper-remap-async-to-generator": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.5.tgz", - "integrity": "sha512-X+aAJldyxrOmN9v3FKp+Hu1NO69VWgYgDGq6YDykwRPzxs5f2N+X988CBXS7EQahDU+Vpet5QYMqLk+nsp+Qxw==", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz", + "integrity": "sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.16.0", - "@babel/helper-wrap-function": "^7.16.5", - "@babel/types": "^7.16.0" + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-wrap-function": "^7.16.8", + "@babel/types": "^7.16.8" } }, "@babel/helper-replace-supers": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.5.tgz", - "integrity": "sha512-ao3seGVa/FZCMCCNDuBcqnBFSbdr8N2EW35mzojx3TwfIbdPmNK+JV6+2d5bR0Z71W5ocLnQp9en/cTF7pBJiQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz", + "integrity": "sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==", "dev": true, "requires": { - "@babel/helper-environment-visitor": "^7.16.5", - "@babel/helper-member-expression-to-functions": "^7.16.5", - "@babel/helper-optimise-call-expression": "^7.16.0", - "@babel/traverse": "^7.16.5", - "@babel/types": "^7.16.0" + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-member-expression-to-functions": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/traverse": "^7.16.7", + "@babel/types": "^7.16.7" } }, "@babel/helper-simple-access": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz", - "integrity": "sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz", + "integrity": "sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g==", "dev": true, "requires": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.16.7" } }, "@babel/helper-skip-transparent-expression-wrappers": { @@ -10026,242 +10035,242 @@ } }, "@babel/helper-split-export-declaration": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz", - "integrity": "sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", + "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", "dev": true, "requires": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.16.7" } }, "@babel/helper-validator-identifier": { - "version": "7.15.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", - "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", + "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", "dev": true }, "@babel/helper-validator-option": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", - "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", + "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", "dev": true }, "@babel/helper-wrap-function": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.5.tgz", - "integrity": "sha512-2J2pmLBqUqVdJw78U0KPNdeE2qeuIyKoG4mKV7wAq3mc4jJG282UgjZw4ZYDnqiWQuS3Y3IYdF/AQ6CpyBV3VA==", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz", + "integrity": "sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.16.0", - "@babel/template": "^7.16.0", - "@babel/traverse": "^7.16.5", - "@babel/types": "^7.16.0" + "@babel/helper-function-name": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.16.8", + "@babel/types": "^7.16.8" } }, "@babel/helpers": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.5.tgz", - "integrity": "sha512-TLgi6Lh71vvMZGEkFuIxzaPsyeYCHQ5jJOOX1f0xXn0uciFuE8cEk0wyBquMcCxBXZ5BJhE2aUB7pnWTD150Tw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.7.tgz", + "integrity": "sha512-9ZDoqtfY7AuEOt3cxchfii6C7GDyyMBffktR5B2jvWv8u2+efwvpnVKXMWzNehqy68tKgAfSwfdw/lWpthS2bw==", "dev": true, "requires": { - "@babel/template": "^7.16.0", - "@babel/traverse": "^7.16.5", - "@babel/types": "^7.16.0" + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.16.7", + "@babel/types": "^7.16.7" } }, "@babel/highlight": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", - "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz", + "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.15.7", + "@babel/helper-validator-identifier": "^7.16.7", "chalk": "^2.0.0", "js-tokens": "^4.0.0" } }, "@babel/parser": { - "version": "7.16.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.6.tgz", - "integrity": "sha512-Gr86ujcNuPDnNOY8mi383Hvi8IYrJVJYuf3XcuBM/Dgd+bINn/7tHqsj+tKkoreMbmGsFLsltI/JJd8fOFWGDQ==", + "version": "7.16.12", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.12.tgz", + "integrity": "sha512-VfaV15po8RiZssrkPweyvbGVSe4x2y+aciFCgn0n0/SJMR22cwofRV1mtnJQYcSB1wUTaA/X1LnA3es66MCO5A==", "dev": true }, "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.16.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.2.tgz", - "integrity": "sha512-h37CvpLSf8gb2lIJ2CgC3t+EjFbi0t8qS7LCS1xcJIlEXE4czlofwaW7W1HA8zpgOCzI9C1nmoqNR1zWkk0pQg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7.tgz", + "integrity": "sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.0.tgz", - "integrity": "sha512-4tcFwwicpWTrpl9qjf7UsoosaArgImF85AxqCRZlgc3IQDvkUHjJpruXAL58Wmj+T6fypWTC/BakfEkwIL/pwA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz", + "integrity": "sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", - "@babel/plugin-proposal-optional-chaining": "^7.16.0" + "@babel/plugin-proposal-optional-chaining": "^7.16.7" } }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.5.tgz", - "integrity": "sha512-C/FX+3HNLV6sz7AqbTQqEo1L9/kfrKjxcVtgyBCmvIgOjvuBVUWooDoi7trsLxOzCEo5FccjRvKHkfDsJFZlfA==", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz", + "integrity": "sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5", - "@babel/helper-remap-async-to-generator": "^7.16.5", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-remap-async-to-generator": "^7.16.8", "@babel/plugin-syntax-async-generators": "^7.8.4" } }, "@babel/plugin-proposal-class-properties": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.5.tgz", - "integrity": "sha512-pJD3HjgRv83s5dv1sTnDbZOaTjghKEz8KUn1Kbh2eAIRhGuyQ1XSeI4xVXU3UlIEVA3DAyIdxqT1eRn7Wcn55A==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz", + "integrity": "sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.16.5", - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-proposal-class-static-block": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.5.tgz", - "integrity": "sha512-EEFzuLZcm/rNJ8Q5krK+FRKdVkd6FjfzT9tuSZql9sQn64K0hHA2KLJ0DqVot9/iV6+SsuadC5yI39zWnm+nmQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.7.tgz", + "integrity": "sha512-dgqJJrcZoG/4CkMopzhPJjGxsIe9A8RlkQLnL/Vhhx8AA9ZuaRwGSlscSh42hazc7WSrya/IK7mTeoF0DP9tEw==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.16.5", - "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-class-static-block": "^7.14.5" } }, "@babel/plugin-proposal-dynamic-import": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.5.tgz", - "integrity": "sha512-P05/SJZTTvHz79LNYTF8ff5xXge0kk5sIIWAypcWgX4BTRUgyHc8wRxJ/Hk+mU0KXldgOOslKaeqnhthcDJCJQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz", + "integrity": "sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-dynamic-import": "^7.8.3" } }, "@babel/plugin-proposal-export-namespace-from": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.5.tgz", - "integrity": "sha512-i+sltzEShH1vsVydvNaTRsgvq2vZsfyrd7K7vPLUU/KgS0D5yZMe6uipM0+izminnkKrEfdUnz7CxMRb6oHZWw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz", + "integrity": "sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" } }, "@babel/plugin-proposal-json-strings": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.5.tgz", - "integrity": "sha512-QQJueTFa0y9E4qHANqIvMsuxM/qcLQmKttBACtPCQzGUEizsXDACGonlPiSwynHfOa3vNw0FPMVvQzbuXwh4SQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz", + "integrity": "sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-json-strings": "^7.8.3" } }, "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.5.tgz", - "integrity": "sha512-xqibl7ISO2vjuQM+MzR3rkd0zfNWltk7n9QhaD8ghMmMceVguYrNDt7MikRyj4J4v3QehpnrU8RYLnC7z/gZLA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz", + "integrity": "sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" } }, "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.5.tgz", - "integrity": "sha512-YwMsTp/oOviSBhrjwi0vzCUycseCYwoXnLiXIL3YNjHSMBHicGTz7GjVU/IGgz4DtOEXBdCNG72pvCX22ehfqg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz", + "integrity": "sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" } }, "@babel/plugin-proposal-numeric-separator": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.5.tgz", - "integrity": "sha512-DvB9l/TcsCRvsIV9v4jxR/jVP45cslTVC0PMVHvaJhhNuhn2Y1SOhCSFlPK777qLB5wb8rVDaNoqMTyOqtY5Iw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz", + "integrity": "sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-numeric-separator": "^7.10.4" } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.5.tgz", - "integrity": "sha512-UEd6KpChoyPhCoE840KRHOlGhEZFutdPDMGj+0I56yuTTOaT51GzmnEl/0uT41fB/vD2nT+Pci2KjezyE3HmUw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.7.tgz", + "integrity": "sha512-3O0Y4+dw94HA86qSg9IHfyPktgR7q3gpNVAeiKQd+8jBKFaU5NQS1Yatgo4wY+UFNuLjvxcSmzcsHqrhgTyBUA==", "dev": true, "requires": { "@babel/compat-data": "^7.16.4", - "@babel/helper-compilation-targets": "^7.16.3", - "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.16.5" + "@babel/plugin-transform-parameters": "^7.16.7" } }, "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.5.tgz", - "integrity": "sha512-ihCMxY1Iljmx4bWy/PIMJGXN4NS4oUj1MKynwO07kiKms23pNvIn1DMB92DNB2R0EA882sw0VXIelYGdtF7xEQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz", + "integrity": "sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" } }, "@babel/plugin-proposal-optional-chaining": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.5.tgz", - "integrity": "sha512-kzdHgnaXRonttiTfKYnSVafbWngPPr2qKw9BWYBESl91W54e+9R5pP70LtWxV56g0f05f/SQrwHYkfvbwcdQ/A==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz", + "integrity": "sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", "@babel/plugin-syntax-optional-chaining": "^7.8.3" } }, "@babel/plugin-proposal-private-methods": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.5.tgz", - "integrity": "sha512-+yFMO4BGT3sgzXo+lrq7orX5mAZt57DwUK6seqII6AcJnJOIhBJ8pzKH47/ql/d426uQ7YhN8DpUFirQzqYSUA==", + "version": "7.16.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz", + "integrity": "sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.16.5", - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-create-class-features-plugin": "^7.16.10", + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-proposal-private-property-in-object": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.5.tgz", - "integrity": "sha512-+YGh5Wbw0NH3y/E5YMu6ci5qTDmAEVNoZ3I54aB6nVEOZ5BQ7QJlwKq5pYVucQilMByGn/bvX0af+uNaPRCabA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz", + "integrity": "sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.16.0", - "@babel/helper-create-class-features-plugin": "^7.16.5", - "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-private-property-in-object": "^7.14.5" } }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.5.tgz", - "integrity": "sha512-s5sKtlKQyFSatt781HQwv1hoM5BQ9qRH30r+dK56OLDsHmV74mzwJNX7R1yMuE7VZKG5O6q/gmOGSAO6ikTudg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz", + "integrity": "sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.16.0", - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-syntax-async-generators": { @@ -10310,12 +10319,12 @@ } }, "@babel/plugin-syntax-flow": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.16.5.tgz", - "integrity": "sha512-Nrx+7EAJx1BieBQseZa2pavVH2Rp7hADK2xn7coYqVbWRu9C2OFizYcsKo6TrrqJkJl+qF/+Qqzrk/+XDu4GnA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.16.7.tgz", + "integrity": "sha512-UDo3YGQO0jH6ytzVwgSLv9i/CzMcUjbKenL67dTrAZPPv6GFAtDhe6jqnvmoKzC/7htNTohhos+onPtDMqJwaQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-syntax-json-strings": { @@ -10400,355 +10409,356 @@ } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.5.tgz", - "integrity": "sha512-8bTHiiZyMOyfZFULjsCnYOWG059FVMes0iljEHSfARhNgFfpsqE92OrCffv3veSw9rwMkYcFe9bj0ZoXU2IGtQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz", + "integrity": "sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.5.tgz", - "integrity": "sha512-TMXgfioJnkXU+XRoj7P2ED7rUm5jbnDWwlCuFVTpQboMfbSya5WrmubNBAMlk7KXvywpo8rd8WuYZkis1o2H8w==", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz", + "integrity": "sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.16.0", - "@babel/helper-plugin-utils": "^7.16.5", - "@babel/helper-remap-async-to-generator": "^7.16.5" + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-remap-async-to-generator": "^7.16.8" } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.5.tgz", - "integrity": "sha512-BxmIyKLjUGksJ99+hJyL/HIxLIGnLKtw772zYDER7UuycDZ+Xvzs98ZQw6NGgM2ss4/hlFAaGiZmMNKvValEjw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz", + "integrity": "sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.5.tgz", - "integrity": "sha512-JxjSPNZSiOtmxjX7PBRBeRJTUKTyJ607YUYeT0QJCNdsedOe+/rXITjP08eG8xUpsLfPirgzdCFN+h0w6RI+pQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz", + "integrity": "sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-classes": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.5.tgz", - "integrity": "sha512-DzJ1vYf/7TaCYy57J3SJ9rV+JEuvmlnvvyvYKFbk5u46oQbBvuB9/0w+YsVsxkOv8zVWKpDmUoj4T5ILHoXevA==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.16.0", - "@babel/helper-environment-visitor": "^7.16.5", - "@babel/helper-function-name": "^7.16.0", - "@babel/helper-optimise-call-expression": "^7.16.0", - "@babel/helper-plugin-utils": "^7.16.5", - "@babel/helper-replace-supers": "^7.16.5", - "@babel/helper-split-export-declaration": "^7.16.0", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz", + "integrity": "sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", "globals": "^11.1.0" } }, "@babel/plugin-transform-computed-properties": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.5.tgz", - "integrity": "sha512-n1+O7xtU5lSLraRzX88CNcpl7vtGdPakKzww74bVwpAIRgz9JVLJJpOLb0uYqcOaXVM0TL6X0RVeIJGD2CnCkg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz", + "integrity": "sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-destructuring": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.5.tgz", - "integrity": "sha512-GuRVAsjq+c9YPK6NeTkRLWyQskDC099XkBSVO+6QzbnOnH2d/4mBVXYStaPrZD3dFRfg00I6BFJ9Atsjfs8mlg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.7.tgz", + "integrity": "sha512-VqAwhTHBnu5xBVDCvrvqJbtLUa++qZaWC0Fgr2mqokBlulZARGyIvZDoqbPlPaKImQ9dKAcCzbv+ul//uqu70A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.5.tgz", - "integrity": "sha512-iQiEMt8Q4/5aRGHpGVK2Zc7a6mx7qEAO7qehgSug3SDImnuMzgmm/wtJALXaz25zUj1PmnNHtShjFgk4PDx4nw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz", + "integrity": "sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.16.0", - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.5.tgz", - "integrity": "sha512-81tijpDg2a6I1Yhj4aWY1l3O1J4Cg/Pd7LfvuaH2VVInAkXtzibz9+zSPdUM1WvuUi128ksstAP0hM5w48vQgg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz", + "integrity": "sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.5.tgz", - "integrity": "sha512-12rba2HwemQPa7BLIKCzm1pT2/RuQHtSFHdNl41cFiC6oi4tcrp7gjB07pxQvFpcADojQywSjblQth6gJyE6CA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz", + "integrity": "sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==", "dev": true, "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.5", - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-flow-strip-types": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.16.5.tgz", - "integrity": "sha512-skE02E/MptkZdBS4HwoRhjWXqeKQj0BWKEAPfPC+8R4/f6bjQqQ9Nftv/+HkxWwnVxh/E2NV9TNfzLN5H/oiBw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.16.7.tgz", + "integrity": "sha512-mzmCq3cNsDpZZu9FADYYyfZJIOrSONmHcop2XEKPdBNMa4PDC4eEvcOvzZaCNcjKu72v0XQlA5y1g58aLRXdYg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5", - "@babel/plugin-syntax-flow": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-flow": "^7.16.7" } }, "@babel/plugin-transform-for-of": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.5.tgz", - "integrity": "sha512-+DpCAJFPAvViR17PIMi9x2AE34dll5wNlXO43wagAX2YcRGgEVHCNFC4azG85b4YyyFarvkc/iD5NPrz4Oneqw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz", + "integrity": "sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-function-name": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.5.tgz", - "integrity": "sha512-Fuec/KPSpVLbGo6z1RPw4EE1X+z9gZk1uQmnYy7v4xr4TO9p41v1AoUuXEtyqAI7H+xNJYSICzRqZBhDEkd3kQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz", + "integrity": "sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.16.0", - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-literals": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.5.tgz", - "integrity": "sha512-B1j9C/IfvshnPcklsc93AVLTrNVa69iSqztylZH6qnmiAsDDOmmjEYqOm3Ts2lGSgTSywnBNiqC949VdD0/gfw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz", + "integrity": "sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-member-expression-literals": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.5.tgz", - "integrity": "sha512-d57i3vPHWgIde/9Y8W/xSFUndhvhZN5Wu2TjRrN1MVz5KzdUihKnfDVlfP1U7mS5DNj/WHHhaE4/tTi4hIyHwQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz", + "integrity": "sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.5.tgz", - "integrity": "sha512-oHI15S/hdJuSCfnwIz+4lm6wu/wBn7oJ8+QrkzPPwSFGXk8kgdI/AIKcbR/XnD1nQVMg/i6eNaXpszbGuwYDRQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz", + "integrity": "sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.16.5", - "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.5.tgz", - "integrity": "sha512-ABhUkxvoQyqhCWyb8xXtfwqNMJD7tx+irIRnUh6lmyFud7Jln1WzONXKlax1fg/ey178EXbs4bSGNd6PngO+SQ==", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.8.tgz", + "integrity": "sha512-oflKPvsLT2+uKQopesJt3ApiaIS2HW+hzHFcwRNtyDGieAeC/dIHZX8buJQ2J2X1rxGPy4eRcUijm3qcSPjYcA==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.16.5", - "@babel/helper-plugin-utils": "^7.16.5", - "@babel/helper-simple-access": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-simple-access": "^7.16.7", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.5.tgz", - "integrity": "sha512-53gmLdScNN28XpjEVIm7LbWnD/b/TpbwKbLk6KV4KqC9WyU6rq1jnNmVG6UgAdQZVVGZVoik3DqHNxk4/EvrjA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.7.tgz", + "integrity": "sha512-DuK5E3k+QQmnOqBR9UkusByy5WZWGRxfzV529s9nPra1GE7olmxfqO2FHobEOYSPIjPBTr4p66YDcjQnt8cBmw==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.16.0", - "@babel/helper-module-transforms": "^7.16.5", - "@babel/helper-plugin-utils": "^7.16.5", - "@babel/helper-validator-identifier": "^7.15.7", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-umd": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.5.tgz", - "integrity": "sha512-qTFnpxHMoenNHkS3VoWRdwrcJ3FhX567GvDA3hRZKF0Dj8Fmg0UzySZp3AP2mShl/bzcywb/UWAMQIjA1bhXvw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz", + "integrity": "sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.16.5", - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.5.tgz", - "integrity": "sha512-/wqGDgvFUeKELW6ex6QB7dLVRkd5ehjw34tpXu1nhKC0sFfmaLabIswnpf8JgDyV2NeDmZiwoOb0rAmxciNfjA==", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.8.tgz", + "integrity": "sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.16.0" + "@babel/helper-create-regexp-features-plugin": "^7.16.7" } }, "@babel/plugin-transform-new-target": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.5.tgz", - "integrity": "sha512-ZaIrnXF08ZC8jnKR4/5g7YakGVL6go6V9ql6Jl3ecO8PQaQqFE74CuM384kezju7Z9nGCCA20BqZaR1tJ/WvHg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz", + "integrity": "sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-object-super": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.5.tgz", - "integrity": "sha512-tded+yZEXuxt9Jdtkc1RraW1zMF/GalVxaVVxh41IYwirdRgyAxxxCKZ9XB7LxZqmsjfjALxupNE1MIz9KH+Zg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz", + "integrity": "sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5", - "@babel/helper-replace-supers": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7" } }, "@babel/plugin-transform-parameters": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.5.tgz", - "integrity": "sha512-B3O6AL5oPop1jAVg8CV+haeUte9oFuY85zu0jwnRNZZi3tVAbJriu5tag/oaO2kGaQM/7q7aGPBlTI5/sr9enA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz", + "integrity": "sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-property-literals": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.5.tgz", - "integrity": "sha512-+IRcVW71VdF9pEH/2R/Apab4a19LVvdVsr/gEeotH00vSDVlKD+XgfSIw+cgGWsjDB/ziqGv/pGoQZBIiQVXHg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz", + "integrity": "sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-regenerator": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.5.tgz", - "integrity": "sha512-2z+it2eVWU8TtQQRauvGUqZwLy4+7rTfo6wO4npr+fvvN1SW30ZF3O/ZRCNmTuu4F5MIP8OJhXAhRV5QMJOuYg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.7.tgz", + "integrity": "sha512-mF7jOgGYCkSJagJ6XCujSQg+6xC1M77/03K2oBmVJWoFGNUtnVJO4WHKJk3dnPC8HCcj4xBQP1Egm8DWh3Pb3Q==", "dev": true, "requires": { "regenerator-transform": "^0.14.2" } }, "@babel/plugin-transform-reserved-words": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.5.tgz", - "integrity": "sha512-aIB16u8lNcf7drkhXJRoggOxSTUAuihTSTfAcpynowGJOZiGf+Yvi7RuTwFzVYSYPmWyARsPqUGoZWWWxLiknw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz", + "integrity": "sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.5.tgz", - "integrity": "sha512-ZbuWVcY+MAXJuuW7qDoCwoxDUNClfZxoo7/4swVbOW1s/qYLOMHlm9YRWMsxMFuLs44eXsv4op1vAaBaBaDMVg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz", + "integrity": "sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-spread": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.5.tgz", - "integrity": "sha512-5d6l/cnG7Lw4tGHEoga4xSkYp1euP7LAtrah1h1PgJ3JY7yNsjybsxQAnVK4JbtReZ/8z6ASVmd3QhYYKLaKZw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz", + "integrity": "sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.5.tgz", - "integrity": "sha512-usYsuO1ID2LXxzuUxifgWtJemP7wL2uZtyrTVM4PKqsmJycdS4U4mGovL5xXkfUheds10Dd2PjoQLXw6zCsCbg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz", + "integrity": "sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-template-literals": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.5.tgz", - "integrity": "sha512-gnyKy9RyFhkovex4BjKWL3BVYzUDG6zC0gba7VMLbQoDuqMfJ1SDXs8k/XK41Mmt1Hyp4qNAvGFb9hKzdCqBRQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz", + "integrity": "sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.5.tgz", - "integrity": "sha512-ldxCkW180qbrvyCVDzAUZqB0TAeF8W/vGJoRcaf75awm6By+PxfJKvuqVAnq8N9wz5Xa6mSpM19OfVKKVmGHSQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz", + "integrity": "sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-unicode-escapes": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.5.tgz", - "integrity": "sha512-shiCBHTIIChGLdyojsKQjoAyB8MBwat25lKM7MJjbe1hE0bgIppD+LX9afr41lLHOhqceqeWl4FkLp+Bgn9o1Q==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz", + "integrity": "sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.5.tgz", - "integrity": "sha512-GTJ4IW012tiPEMMubd7sD07iU9O/LOo8Q/oU4xNhcaq0Xn8+6TcUQaHtC8YxySo1T+ErQ8RaWogIEeFhKGNPzw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz", + "integrity": "sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.16.0", - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/preset-env": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.5.tgz", - "integrity": "sha512-MiJJW5pwsktG61NDxpZ4oJ1CKxM1ncam9bzRtx9g40/WkLRkxFP6mhpkYV0/DxcciqoiHicx291+eUQrXb/SfQ==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.16.4", - "@babel/helper-compilation-targets": "^7.16.3", - "@babel/helper-plugin-utils": "^7.16.5", - "@babel/helper-validator-option": "^7.14.5", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.2", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.0", - "@babel/plugin-proposal-async-generator-functions": "^7.16.5", - "@babel/plugin-proposal-class-properties": "^7.16.5", - "@babel/plugin-proposal-class-static-block": "^7.16.5", - "@babel/plugin-proposal-dynamic-import": "^7.16.5", - "@babel/plugin-proposal-export-namespace-from": "^7.16.5", - "@babel/plugin-proposal-json-strings": "^7.16.5", - "@babel/plugin-proposal-logical-assignment-operators": "^7.16.5", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.5", - "@babel/plugin-proposal-numeric-separator": "^7.16.5", - "@babel/plugin-proposal-object-rest-spread": "^7.16.5", - "@babel/plugin-proposal-optional-catch-binding": "^7.16.5", - "@babel/plugin-proposal-optional-chaining": "^7.16.5", - "@babel/plugin-proposal-private-methods": "^7.16.5", - "@babel/plugin-proposal-private-property-in-object": "^7.16.5", - "@babel/plugin-proposal-unicode-property-regex": "^7.16.5", + "version": "7.16.11", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.11.tgz", + "integrity": "sha512-qcmWG8R7ZW6WBRPZK//y+E3Cli151B20W1Rv7ln27vuPaXU/8TKms6jFdiJtF7UDTxcrb7mZd88tAeK9LjdT8g==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.16.8", + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-option": "^7.16.7", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.7", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.7", + "@babel/plugin-proposal-async-generator-functions": "^7.16.8", + "@babel/plugin-proposal-class-properties": "^7.16.7", + "@babel/plugin-proposal-class-static-block": "^7.16.7", + "@babel/plugin-proposal-dynamic-import": "^7.16.7", + "@babel/plugin-proposal-export-namespace-from": "^7.16.7", + "@babel/plugin-proposal-json-strings": "^7.16.7", + "@babel/plugin-proposal-logical-assignment-operators": "^7.16.7", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.7", + "@babel/plugin-proposal-numeric-separator": "^7.16.7", + "@babel/plugin-proposal-object-rest-spread": "^7.16.7", + "@babel/plugin-proposal-optional-catch-binding": "^7.16.7", + "@babel/plugin-proposal-optional-chaining": "^7.16.7", + "@babel/plugin-proposal-private-methods": "^7.16.11", + "@babel/plugin-proposal-private-property-in-object": "^7.16.7", + "@babel/plugin-proposal-unicode-property-regex": "^7.16.7", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", "@babel/plugin-syntax-class-static-block": "^7.14.5", @@ -10763,56 +10773,56 @@ "@babel/plugin-syntax-optional-chaining": "^7.8.3", "@babel/plugin-syntax-private-property-in-object": "^7.14.5", "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-transform-arrow-functions": "^7.16.5", - "@babel/plugin-transform-async-to-generator": "^7.16.5", - "@babel/plugin-transform-block-scoped-functions": "^7.16.5", - "@babel/plugin-transform-block-scoping": "^7.16.5", - "@babel/plugin-transform-classes": "^7.16.5", - "@babel/plugin-transform-computed-properties": "^7.16.5", - "@babel/plugin-transform-destructuring": "^7.16.5", - "@babel/plugin-transform-dotall-regex": "^7.16.5", - "@babel/plugin-transform-duplicate-keys": "^7.16.5", - "@babel/plugin-transform-exponentiation-operator": "^7.16.5", - "@babel/plugin-transform-for-of": "^7.16.5", - "@babel/plugin-transform-function-name": "^7.16.5", - "@babel/plugin-transform-literals": "^7.16.5", - "@babel/plugin-transform-member-expression-literals": "^7.16.5", - "@babel/plugin-transform-modules-amd": "^7.16.5", - "@babel/plugin-transform-modules-commonjs": "^7.16.5", - "@babel/plugin-transform-modules-systemjs": "^7.16.5", - "@babel/plugin-transform-modules-umd": "^7.16.5", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.5", - "@babel/plugin-transform-new-target": "^7.16.5", - "@babel/plugin-transform-object-super": "^7.16.5", - "@babel/plugin-transform-parameters": "^7.16.5", - "@babel/plugin-transform-property-literals": "^7.16.5", - "@babel/plugin-transform-regenerator": "^7.16.5", - "@babel/plugin-transform-reserved-words": "^7.16.5", - "@babel/plugin-transform-shorthand-properties": "^7.16.5", - "@babel/plugin-transform-spread": "^7.16.5", - "@babel/plugin-transform-sticky-regex": "^7.16.5", - "@babel/plugin-transform-template-literals": "^7.16.5", - "@babel/plugin-transform-typeof-symbol": "^7.16.5", - "@babel/plugin-transform-unicode-escapes": "^7.16.5", - "@babel/plugin-transform-unicode-regex": "^7.16.5", + "@babel/plugin-transform-arrow-functions": "^7.16.7", + "@babel/plugin-transform-async-to-generator": "^7.16.8", + "@babel/plugin-transform-block-scoped-functions": "^7.16.7", + "@babel/plugin-transform-block-scoping": "^7.16.7", + "@babel/plugin-transform-classes": "^7.16.7", + "@babel/plugin-transform-computed-properties": "^7.16.7", + "@babel/plugin-transform-destructuring": "^7.16.7", + "@babel/plugin-transform-dotall-regex": "^7.16.7", + "@babel/plugin-transform-duplicate-keys": "^7.16.7", + "@babel/plugin-transform-exponentiation-operator": "^7.16.7", + "@babel/plugin-transform-for-of": "^7.16.7", + "@babel/plugin-transform-function-name": "^7.16.7", + "@babel/plugin-transform-literals": "^7.16.7", + "@babel/plugin-transform-member-expression-literals": "^7.16.7", + "@babel/plugin-transform-modules-amd": "^7.16.7", + "@babel/plugin-transform-modules-commonjs": "^7.16.8", + "@babel/plugin-transform-modules-systemjs": "^7.16.7", + "@babel/plugin-transform-modules-umd": "^7.16.7", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.8", + "@babel/plugin-transform-new-target": "^7.16.7", + "@babel/plugin-transform-object-super": "^7.16.7", + "@babel/plugin-transform-parameters": "^7.16.7", + "@babel/plugin-transform-property-literals": "^7.16.7", + "@babel/plugin-transform-regenerator": "^7.16.7", + "@babel/plugin-transform-reserved-words": "^7.16.7", + "@babel/plugin-transform-shorthand-properties": "^7.16.7", + "@babel/plugin-transform-spread": "^7.16.7", + "@babel/plugin-transform-sticky-regex": "^7.16.7", + "@babel/plugin-transform-template-literals": "^7.16.7", + "@babel/plugin-transform-typeof-symbol": "^7.16.7", + "@babel/plugin-transform-unicode-escapes": "^7.16.7", + "@babel/plugin-transform-unicode-regex": "^7.16.7", "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.16.0", + "@babel/types": "^7.16.8", "babel-plugin-polyfill-corejs2": "^0.3.0", - "babel-plugin-polyfill-corejs3": "^0.4.0", + "babel-plugin-polyfill-corejs3": "^0.5.0", "babel-plugin-polyfill-regenerator": "^0.3.0", - "core-js-compat": "^3.19.1", + "core-js-compat": "^3.20.2", "semver": "^6.3.0" } }, "@babel/preset-flow": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.16.5.tgz", - "integrity": "sha512-rmC6Nznp4V55N4Zfec87jwd14TdREqwKVJFM/6Z2wTwoeZQr56czjaPRCezqzqc8TsHF7aLP1oczjadIQ058gw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.16.7.tgz", + "integrity": "sha512-6ceP7IyZdUYQ3wUVqyRSQXztd1YmFHWI4Xv11MIqAlE4WqxBSd/FZ61V9k+TS5Gd4mkHOtQtPp9ymRpxH4y1Ug==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5", - "@babel/helper-validator-option": "^7.14.5", - "@babel/plugin-transform-flow-strip-types": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-option": "^7.16.7", + "@babel/plugin-transform-flow-strip-types": "^7.16.7" } }, "@babel/preset-modules": { @@ -10838,41 +10848,41 @@ } }, "@babel/template": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", - "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", + "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", "dev": true, "requires": { - "@babel/code-frame": "^7.16.0", - "@babel/parser": "^7.16.0", - "@babel/types": "^7.16.0" + "@babel/code-frame": "^7.16.7", + "@babel/parser": "^7.16.7", + "@babel/types": "^7.16.7" } }, "@babel/traverse": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.5.tgz", - "integrity": "sha512-FOCODAzqUMROikDYLYxl4nmwiLlu85rNqBML/A5hKRVXG2LV8d0iMqgPzdYTcIpjZEBB7D6UDU9vxRZiriASdQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.16.0", - "@babel/generator": "^7.16.5", - "@babel/helper-environment-visitor": "^7.16.5", - "@babel/helper-function-name": "^7.16.0", - "@babel/helper-hoist-variables": "^7.16.0", - "@babel/helper-split-export-declaration": "^7.16.0", - "@babel/parser": "^7.16.5", - "@babel/types": "^7.16.0", + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.10.tgz", + "integrity": "sha512-yzuaYXoRJBGMlBhsMJoUW7G1UmSb/eXr/JHYM/MsOJgavJibLwASijW7oXBdw3NQ6T0bW7Ty5P/VarOs9cHmqw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.16.8", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/parser": "^7.16.10", + "@babel/types": "^7.16.8", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", - "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.8.tgz", + "integrity": "sha512-smN2DQc5s4M7fntyjGtyIPbRJv6wW4rU/94fmYJ7PKQuZkC0qGMHXJbg6sNGt12JmVr4k5YaptI/XtiLJBnmIg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.15.7", + "@babel/helper-validator-identifier": "^7.16.7", "to-fast-properties": "^2.0.0" } }, @@ -11287,13 +11297,13 @@ } }, "babel-plugin-polyfill-corejs3": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.4.0.tgz", - "integrity": "sha512-YxFreYwUfglYKdLUGvIF2nJEsGwj+RhWSX/ije3D2vQPOXuyMLMtg/cCGMDpOA7Nd+MwlNdnGODbd2EwUZPlsw==", + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.1.tgz", + "integrity": "sha512-TihqEe4sQcb/QcPJvxe94/9RZuLQuF1+To4WqQcRvc+3J3gLCPIPgDKzGLG6zmQLfH3nn25heRuDNkS2KR4I8A==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.0", - "core-js-compat": "^3.18.0" + "@babel/helper-define-polyfill-provider": "^0.3.1", + "core-js-compat": "^3.20.0" } }, "babel-plugin-polyfill-regenerator": { @@ -11399,13 +11409,13 @@ } }, "browserslist": { - "version": "4.17.6", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.6.tgz", - "integrity": "sha512-uPgz3vyRTlEiCv4ee9KlsKgo2V6qPk7Jsn0KAn2OBqbqKo3iNcPEC1Ti6J4dwnz+aIRfEEEuOzC9IBk8tXUomw==", + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.1.tgz", + "integrity": "sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001274", - "electron-to-chromium": "^1.3.886", + "caniuse-lite": "^1.0.30001286", + "electron-to-chromium": "^1.4.17", "escalade": "^3.1.1", "node-releases": "^2.0.1", "picocolors": "^1.0.0" @@ -11467,9 +11477,9 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30001279", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001279.tgz", - "integrity": "sha512-VfEHpzHEXj6/CxggTwSFoZBBYGQfQv9Cf42KPlO79sWXCD1QNKWKsKzFeWL7QpZHJQYAvocqV6Rty1yJMkqWLQ==", + "version": "1.0.30001304", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001304.tgz", + "integrity": "sha512-bdsfZd6K6ap87AGqSHJP/s1V+U6Z5lyrcbBu3ovbCCf8cSYpwTtGrCBObMpJqwxfTbLW6YTIdbb1jEeTelcpYQ==", "dev": true }, "chalk": { @@ -11808,12 +11818,12 @@ } }, "core-js-compat": { - "version": "3.19.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.19.1.tgz", - "integrity": "sha512-Q/VJ7jAF/y68+aUsQJ/afPOewdsGkDtcMb40J8MbuWKlK3Y+wtHq8bTHKPj2WKWLIqmS5JhHs4CzHtz6pT2W6g==", + "version": "3.20.3", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.20.3.tgz", + "integrity": "sha512-c8M5h0IkNZ+I92QhIpuSijOxGAcj3lgpsWdkCqmUTZNwidujF4r3pi6x1DCN+Vcs5qTS2XWWMfWSuCqyupX8gw==", "dev": true, "requires": { - "browserslist": "^4.17.6", + "browserslist": "^4.19.1", "semver": "7.0.0" }, "dependencies": { @@ -12033,9 +12043,9 @@ } }, "electron-to-chromium": { - "version": "1.3.894", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.894.tgz", - "integrity": "sha512-WY8pA4irAZ4cm/Pr7YFPtPLVqj3nU6d0SbfoHF6M7HZNONfPdAnYAarumqQ75go2LuN72uO9wGuCEqnfya/ytg==", + "version": "1.4.57", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.57.tgz", + "integrity": "sha512-FNC+P5K1n6pF+M0zIK+gFCoXcJhhzDViL3DRIGy2Fv5PohuSES1JHR7T+GlwxSxlzx4yYbsuzCZvHxcBSRCIOw==", "dev": true }, "emoji-regex": { @@ -12710,9 +12720,9 @@ } }, "graceful-fs": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", - "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", + "version": "4.2.9", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", + "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==", "dev": true }, "gulp": { @@ -14787,9 +14797,9 @@ "optional": true }, "nanoid": { - "version": "3.1.30", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.30.tgz", - "integrity": "sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.2.0.tgz", + "integrity": "sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA==", "dev": true }, "nanomatch": { @@ -14894,9 +14904,9 @@ } }, "node-fetch": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.5.tgz", - "integrity": "sha512-mmlIVHJEu5rnIxgEgez6b9GgWXbkZj5YZ7fx+2r94a2E+Uirsp6HsPTPlomfdHtpt/B0cdKviwkoaM6pyvUOpQ==", + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", "dev": true, "requires": { "whatwg-url": "^5.0.0" @@ -16917,9 +16927,9 @@ "dev": true }, "typescript": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.4.tgz", - "integrity": "sha512-VgYs2A2QIRuGphtzFV7aQJduJ2gyfTljngLzjpfW9FoYZF6xuw1W0vW9ghCKLfcWrCFxK81CSGRAvS1pn4fIUg==", + "version": "4.5.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.5.tgz", + "integrity": "sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==", "dev": true }, "unbox-primitive": { diff --git a/package.json b/package.json index fd95e4913fc..a26a00383f7 100644 --- a/package.json +++ b/package.json @@ -26,13 +26,13 @@ "postinstall": "run-s install:*" }, "devDependencies": { - "@babel/core": "^7.16.5", - "@babel/preset-env": "^7.16.5", - "@babel/preset-flow": "7.16.5", + "@babel/core": "^7.16.12", + "@babel/preset-env": "^7.16.11", + "@babel/preset-flow": "7.16.7", "all-contributors-cli": "^6.20.0", "es6-promise": "4.2.8", "glob": "^7.2.0", - "graceful-fs": "4.2.8", + "graceful-fs": "4.2.9", "gulp": "^4.0.2", "gulp-babel": "8.0.0", "gulp-cli": "^2.3.0", @@ -59,6 +59,6 @@ "postcss": "8.4.5", "postcss-rtl": "^1.7.3", "rtlcss": "3.5.0", - "typescript": "^4.5.4" + "typescript": "^4.5.5" } } diff --git a/src/OrchardCore.Modules/OrchardCore.Apis.GraphQL/package-lock.json b/src/OrchardCore.Modules/OrchardCore.Apis.GraphQL/package-lock.json index 215951f8c06..bc22eb97232 100644 --- a/src/OrchardCore.Modules/OrchardCore.Apis.GraphQL/package-lock.json +++ b/src/OrchardCore.Modules/OrchardCore.Apis.GraphQL/package-lock.json @@ -16,26 +16,26 @@ "react-dom": "^16.8.0" }, "devDependencies": { - "@babel/cli": "^7.16.0", - "@babel/core": "^7.16.5", - "@babel/preset-env": "^7.16.5", - "@babel/preset-react": "^7.16.5", - "@babel/preset-typescript": "^7.16.5", + "@babel/cli": "^7.16.8", + "@babel/core": "^7.16.12", + "@babel/preset-env": "^7.16.11", + "@babel/preset-react": "^7.16.7", + "@babel/preset-typescript": "^7.16.7", "assert": "^2.0.0", "css-loader": "^6.5.1", "null-loader": "^4.0.1", - "prop-types": "15.8.0", + "prop-types": "15.8.1", "style-loader": "^3.3.1", "ts-loader": "^9.2.6", - "typescript": "^4.5.4", - "webpack": "^5.65.0", - "webpack-cli": "^4.9.1" + "typescript": "^4.5.5", + "webpack": "^5.67.0", + "webpack-cli": "^4.9.2" } }, "node_modules/@babel/cli": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.16.0.tgz", - "integrity": "sha512-WLrM42vKX/4atIoQB+eb0ovUof53UUvecb4qGjU2PDDWRiZr50ZpiV8NpcLo7iSxeGYrRG0Mqembsa+UrTAV6Q==", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.16.8.tgz", + "integrity": "sha512-FTKBbxyk5TclXOGmwYyqelqP5IF6hMxaeJskd85jbR5jBfYlwqgwAbJwnixi1ZBbTqKfFuAA95mdmUFeSRwyJA==", "dev": true, "dependencies": { "commander": "^4.0.1", @@ -62,40 +62,40 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", - "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", + "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", "dependencies": { - "@babel/highlight": "^7.16.0" + "@babel/highlight": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.16.4", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.4.tgz", - "integrity": "sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q==", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.8.tgz", + "integrity": "sha512-m7OkX0IdKLKPpBlJtF561YJal5y/jyI5fNfWbPxh2D/nbzzGI4qRyrD8xO2jB24u7l+5I2a43scCG2IrfjC50Q==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.5.tgz", - "integrity": "sha512-wUcenlLzuWMZ9Zt8S0KmFwGlH6QKRh3vsm/dhDA3CHkiTA45YuG1XkHRcNRl73EFPXDp/d5kVOU0/y7x2w6OaQ==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.16.0", - "@babel/generator": "^7.16.5", - "@babel/helper-compilation-targets": "^7.16.3", - "@babel/helper-module-transforms": "^7.16.5", - "@babel/helpers": "^7.16.5", - "@babel/parser": "^7.16.5", - "@babel/template": "^7.16.0", - "@babel/traverse": "^7.16.5", - "@babel/types": "^7.16.0", + "version": "7.16.12", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.12.tgz", + "integrity": "sha512-dK5PtG1uiN2ikk++5OzSYsitZKny4wOCD0nrO4TqnW4BVBTQ2NGS3NgilvT/TEyxTST7LNyWV/T4tXDoD3fOgg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.16.8", + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helpers": "^7.16.7", + "@babel/parser": "^7.16.12", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.16.10", + "@babel/types": "^7.16.8", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -112,12 +112,12 @@ } }, "node_modules/@babel/generator": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.5.tgz", - "integrity": "sha512-kIvCdjZqcdKqoDbVVdt5R99icaRtrtYhYK/xux5qiWCBmfdvEYMFZ68QCrpE5cbFM1JsuArUNs1ZkuKtTtUcZA==", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.8.tgz", + "integrity": "sha512-1ojZwE9+lOXzcWdWmO6TbUzDfqLD39CmEhN8+2cX9XkDo5yW1OpgfejfliysR2AWLpMamTiOiAp/mtroaymhpw==", "dev": true, "dependencies": { - "@babel/types": "^7.16.0", + "@babel/types": "^7.16.8", "jsesc": "^2.5.1", "source-map": "^0.5.0" }, @@ -126,38 +126,38 @@ } }, "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.0.tgz", - "integrity": "sha512-ItmYF9vR4zA8cByDocY05o0LGUkp1zhbTQOH1NFyl5xXEqlTJQCEJjieriw+aFpxo16swMxUnUiKS7a/r4vtHg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", + "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", "dev": true, "dependencies": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.5.tgz", - "integrity": "sha512-3JEA9G5dmmnIWdzaT9d0NmFRgYnWUThLsDaL7982H0XqqWr56lRrsmwheXFMjR+TMl7QMBb6mzy9kvgr1lRLUA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz", + "integrity": "sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA==", "dev": true, "dependencies": { - "@babel/helper-explode-assignable-expression": "^7.16.0", - "@babel/types": "^7.16.0" + "@babel/helper-explode-assignable-expression": "^7.16.7", + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.16.3", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz", - "integrity": "sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz", + "integrity": "sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.16.0", - "@babel/helper-validator-option": "^7.14.5", + "@babel/compat-data": "^7.16.4", + "@babel/helper-validator-option": "^7.16.7", "browserslist": "^4.17.5", "semver": "^6.3.0" }, @@ -169,18 +169,18 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.5.tgz", - "integrity": "sha512-NEohnYA7mkB8L5JhU7BLwcBdU3j83IziR9aseMueWGeAjblbul3zzb8UvJ3a1zuBiqCMObzCJHFqKIQE6hTVmg==", + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.10.tgz", + "integrity": "sha512-wDeej0pu3WN/ffTxMNCPW5UCiOav8IcLRxSIyp/9+IF2xJUM9h/OYjg0IJLHaL6F8oU8kqMz9nc1vryXhMsgXg==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.0", - "@babel/helper-environment-visitor": "^7.16.5", - "@babel/helper-function-name": "^7.16.0", - "@babel/helper-member-expression-to-functions": "^7.16.5", - "@babel/helper-optimise-call-expression": "^7.16.0", - "@babel/helper-replace-supers": "^7.16.5", - "@babel/helper-split-export-declaration": "^7.16.0" + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-member-expression-to-functions": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -190,12 +190,12 @@ } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.0.tgz", - "integrity": "sha512-3DyG0zAFAZKcOp7aVr33ddwkxJ0Z0Jr5V99y3I690eYLpukJsJvAbzTy1ewoCqsML8SbIrjH14Jc/nSQ4TvNPA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.7.tgz", + "integrity": "sha512-fk5A6ymfp+O5+p2yCkXAu5Kyj6v0xh0RBeNcAkYUMDvvAAoxvSKXn+Jb37t/yWFiQVDFK1ELpUTD8/aLhCPu+g==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-annotate-as-pure": "^7.16.7", "regexpu-core": "^4.7.1" }, "engines": { @@ -206,9 +206,9 @@ } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.0.tgz", - "integrity": "sha512-7hfT8lUljl/tM3h+izTX/pO3W3frz2ok6Pk+gzys8iJqDfZrZy2pXjRTZAvG2YmfHun1X4q8/UZRLatMfqc5Tg==", + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz", + "integrity": "sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==", "dev": true, "dependencies": { "@babel/helper-compilation-targets": "^7.13.0", @@ -225,168 +225,168 @@ } }, "node_modules/@babel/helper-environment-visitor": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.5.tgz", - "integrity": "sha512-ODQyc5AnxmZWm/R2W7fzhamOk1ey8gSguo5SGvF0zcB3uUzRpTRmM/jmLSm9bDMyPlvbyJ+PwPEK0BWIoZ9wjg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", + "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", "dev": true, "dependencies": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-explode-assignable-expression": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.0.tgz", - "integrity": "sha512-Hk2SLxC9ZbcOhLpg/yMznzJ11W++lg5GMbxt1ev6TXUiJB0N42KPC+7w8a+eWGuqDnUYuwStJoZHM7RgmIOaGQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz", + "integrity": "sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ==", "dev": true, "dependencies": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-function-name": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz", - "integrity": "sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz", + "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==", "dev": true, "dependencies": { - "@babel/helper-get-function-arity": "^7.16.0", - "@babel/template": "^7.16.0", - "@babel/types": "^7.16.0" + "@babel/helper-get-function-arity": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-get-function-arity": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz", - "integrity": "sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz", + "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==", "dev": true, "dependencies": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-hoist-variables": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz", - "integrity": "sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", + "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", "dev": true, "dependencies": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.5.tgz", - "integrity": "sha512-7fecSXq7ZrLE+TWshbGT+HyCLkxloWNhTbU2QM1NTI/tDqyf0oZiMcEfYtDuUDCo528EOlt39G1rftea4bRZIw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.7.tgz", + "integrity": "sha512-VtJ/65tYiU/6AbMTDwyoXGPKHgTsfRarivm+YbB5uAzKUyuPjgZSgAFeG87FCigc7KNHu2Pegh1XIT3lXjvz3Q==", "dev": true, "dependencies": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz", - "integrity": "sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", + "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", "dev": true, "dependencies": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.5.tgz", - "integrity": "sha512-CkvMxgV4ZyyioElFwcuWnDCcNIeyqTkCm9BxXZi73RR1ozqlpboqsbGUNvRTflgZtFbbJ1v5Emvm+lkjMYY/LQ==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.16.5", - "@babel/helper-module-imports": "^7.16.0", - "@babel/helper-simple-access": "^7.16.0", - "@babel/helper-split-export-declaration": "^7.16.0", - "@babel/helper-validator-identifier": "^7.15.7", - "@babel/template": "^7.16.0", - "@babel/traverse": "^7.16.5", - "@babel/types": "^7.16.0" + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.7.tgz", + "integrity": "sha512-gaqtLDxJEFCeQbYp9aLAefjhkKdjKcdh6DB7jniIGU3Pz52WAmP268zK0VgPz9hUNkMSYeH976K2/Y6yPadpng==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-simple-access": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.16.7", + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz", - "integrity": "sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz", + "integrity": "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==", "dev": true, "dependencies": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.5.tgz", - "integrity": "sha512-59KHWHXxVA9K4HNF4sbHCf+eJeFe0Te/ZFGqBT4OjXhrwvA04sGfaEGsVTdsjoszq0YTP49RC9UKe5g8uN2RwQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.5.tgz", - "integrity": "sha512-X+aAJldyxrOmN9v3FKp+Hu1NO69VWgYgDGq6YDykwRPzxs5f2N+X988CBXS7EQahDU+Vpet5QYMqLk+nsp+Qxw==", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz", + "integrity": "sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.0", - "@babel/helper-wrap-function": "^7.16.5", - "@babel/types": "^7.16.0" + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-wrap-function": "^7.16.8", + "@babel/types": "^7.16.8" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.5.tgz", - "integrity": "sha512-ao3seGVa/FZCMCCNDuBcqnBFSbdr8N2EW35mzojx3TwfIbdPmNK+JV6+2d5bR0Z71W5ocLnQp9en/cTF7pBJiQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz", + "integrity": "sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.16.5", - "@babel/helper-member-expression-to-functions": "^7.16.5", - "@babel/helper-optimise-call-expression": "^7.16.0", - "@babel/traverse": "^7.16.5", - "@babel/types": "^7.16.0" + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-member-expression-to-functions": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/traverse": "^7.16.7", + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-simple-access": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz", - "integrity": "sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz", + "integrity": "sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g==", "dev": true, "dependencies": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -405,69 +405,69 @@ } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz", - "integrity": "sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", + "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", "dev": true, "dependencies": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.15.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", - "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", + "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", - "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", + "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.5.tgz", - "integrity": "sha512-2J2pmLBqUqVdJw78U0KPNdeE2qeuIyKoG4mKV7wAq3mc4jJG282UgjZw4ZYDnqiWQuS3Y3IYdF/AQ6CpyBV3VA==", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz", + "integrity": "sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.16.0", - "@babel/template": "^7.16.0", - "@babel/traverse": "^7.16.5", - "@babel/types": "^7.16.0" + "@babel/helper-function-name": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.16.8", + "@babel/types": "^7.16.8" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.5.tgz", - "integrity": "sha512-TLgi6Lh71vvMZGEkFuIxzaPsyeYCHQ5jJOOX1f0xXn0uciFuE8cEk0wyBquMcCxBXZ5BJhE2aUB7pnWTD150Tw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.7.tgz", + "integrity": "sha512-9ZDoqtfY7AuEOt3cxchfii6C7GDyyMBffktR5B2jvWv8u2+efwvpnVKXMWzNehqy68tKgAfSwfdw/lWpthS2bw==", "dev": true, "dependencies": { - "@babel/template": "^7.16.0", - "@babel/traverse": "^7.16.5", - "@babel/types": "^7.16.0" + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.16.7", + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", - "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz", + "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==", "dependencies": { - "@babel/helper-validator-identifier": "^7.15.7", + "@babel/helper-validator-identifier": "^7.16.7", "chalk": "^2.0.0", "js-tokens": "^4.0.0" }, @@ -476,9 +476,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.16.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.6.tgz", - "integrity": "sha512-Gr86ujcNuPDnNOY8mi383Hvi8IYrJVJYuf3XcuBM/Dgd+bINn/7tHqsj+tKkoreMbmGsFLsltI/JJd8fOFWGDQ==", + "version": "7.16.12", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.12.tgz", + "integrity": "sha512-VfaV15po8RiZssrkPweyvbGVSe4x2y+aciFCgn0n0/SJMR22cwofRV1mtnJQYcSB1wUTaA/X1LnA3es66MCO5A==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -488,12 +488,12 @@ } }, "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.16.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.2.tgz", - "integrity": "sha512-h37CvpLSf8gb2lIJ2CgC3t+EjFbi0t8qS7LCS1xcJIlEXE4czlofwaW7W1HA8zpgOCzI9C1nmoqNR1zWkk0pQg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7.tgz", + "integrity": "sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -503,14 +503,14 @@ } }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.0.tgz", - "integrity": "sha512-4tcFwwicpWTrpl9qjf7UsoosaArgImF85AxqCRZlgc3IQDvkUHjJpruXAL58Wmj+T6fypWTC/BakfEkwIL/pwA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz", + "integrity": "sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", - "@babel/plugin-proposal-optional-chaining": "^7.16.0" + "@babel/plugin-proposal-optional-chaining": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -520,13 +520,13 @@ } }, "node_modules/@babel/plugin-proposal-async-generator-functions": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.5.tgz", - "integrity": "sha512-C/FX+3HNLV6sz7AqbTQqEo1L9/kfrKjxcVtgyBCmvIgOjvuBVUWooDoi7trsLxOzCEo5FccjRvKHkfDsJFZlfA==", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz", + "integrity": "sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5", - "@babel/helper-remap-async-to-generator": "^7.16.5", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-remap-async-to-generator": "^7.16.8", "@babel/plugin-syntax-async-generators": "^7.8.4" }, "engines": { @@ -537,13 +537,13 @@ } }, "node_modules/@babel/plugin-proposal-class-properties": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.5.tgz", - "integrity": "sha512-pJD3HjgRv83s5dv1sTnDbZOaTjghKEz8KUn1Kbh2eAIRhGuyQ1XSeI4xVXU3UlIEVA3DAyIdxqT1eRn7Wcn55A==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz", + "integrity": "sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.16.5", - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -553,13 +553,13 @@ } }, "node_modules/@babel/plugin-proposal-class-static-block": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.5.tgz", - "integrity": "sha512-EEFzuLZcm/rNJ8Q5krK+FRKdVkd6FjfzT9tuSZql9sQn64K0hHA2KLJ0DqVot9/iV6+SsuadC5yI39zWnm+nmQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.7.tgz", + "integrity": "sha512-dgqJJrcZoG/4CkMopzhPJjGxsIe9A8RlkQLnL/Vhhx8AA9ZuaRwGSlscSh42hazc7WSrya/IK7mTeoF0DP9tEw==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.16.5", - "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-class-static-block": "^7.14.5" }, "engines": { @@ -570,12 +570,12 @@ } }, "node_modules/@babel/plugin-proposal-dynamic-import": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.5.tgz", - "integrity": "sha512-P05/SJZTTvHz79LNYTF8ff5xXge0kk5sIIWAypcWgX4BTRUgyHc8wRxJ/Hk+mU0KXldgOOslKaeqnhthcDJCJQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz", + "integrity": "sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-dynamic-import": "^7.8.3" }, "engines": { @@ -586,12 +586,12 @@ } }, "node_modules/@babel/plugin-proposal-export-namespace-from": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.5.tgz", - "integrity": "sha512-i+sltzEShH1vsVydvNaTRsgvq2vZsfyrd7K7vPLUU/KgS0D5yZMe6uipM0+izminnkKrEfdUnz7CxMRb6oHZWw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz", + "integrity": "sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" }, "engines": { @@ -602,12 +602,12 @@ } }, "node_modules/@babel/plugin-proposal-json-strings": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.5.tgz", - "integrity": "sha512-QQJueTFa0y9E4qHANqIvMsuxM/qcLQmKttBACtPCQzGUEizsXDACGonlPiSwynHfOa3vNw0FPMVvQzbuXwh4SQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz", + "integrity": "sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-json-strings": "^7.8.3" }, "engines": { @@ -618,12 +618,12 @@ } }, "node_modules/@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.5.tgz", - "integrity": "sha512-xqibl7ISO2vjuQM+MzR3rkd0zfNWltk7n9QhaD8ghMmMceVguYrNDt7MikRyj4J4v3QehpnrU8RYLnC7z/gZLA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz", + "integrity": "sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" }, "engines": { @@ -634,12 +634,12 @@ } }, "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.5.tgz", - "integrity": "sha512-YwMsTp/oOviSBhrjwi0vzCUycseCYwoXnLiXIL3YNjHSMBHicGTz7GjVU/IGgz4DtOEXBdCNG72pvCX22ehfqg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz", + "integrity": "sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" }, "engines": { @@ -650,12 +650,12 @@ } }, "node_modules/@babel/plugin-proposal-numeric-separator": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.5.tgz", - "integrity": "sha512-DvB9l/TcsCRvsIV9v4jxR/jVP45cslTVC0PMVHvaJhhNuhn2Y1SOhCSFlPK777qLB5wb8rVDaNoqMTyOqtY5Iw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz", + "integrity": "sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-numeric-separator": "^7.10.4" }, "engines": { @@ -666,16 +666,16 @@ } }, "node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.5.tgz", - "integrity": "sha512-UEd6KpChoyPhCoE840KRHOlGhEZFutdPDMGj+0I56yuTTOaT51GzmnEl/0uT41fB/vD2nT+Pci2KjezyE3HmUw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.7.tgz", + "integrity": "sha512-3O0Y4+dw94HA86qSg9IHfyPktgR7q3gpNVAeiKQd+8jBKFaU5NQS1Yatgo4wY+UFNuLjvxcSmzcsHqrhgTyBUA==", "dev": true, "dependencies": { "@babel/compat-data": "^7.16.4", - "@babel/helper-compilation-targets": "^7.16.3", - "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.16.5" + "@babel/plugin-transform-parameters": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -685,12 +685,12 @@ } }, "node_modules/@babel/plugin-proposal-optional-catch-binding": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.5.tgz", - "integrity": "sha512-ihCMxY1Iljmx4bWy/PIMJGXN4NS4oUj1MKynwO07kiKms23pNvIn1DMB92DNB2R0EA882sw0VXIelYGdtF7xEQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz", + "integrity": "sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" }, "engines": { @@ -701,12 +701,12 @@ } }, "node_modules/@babel/plugin-proposal-optional-chaining": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.5.tgz", - "integrity": "sha512-kzdHgnaXRonttiTfKYnSVafbWngPPr2qKw9BWYBESl91W54e+9R5pP70LtWxV56g0f05f/SQrwHYkfvbwcdQ/A==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz", + "integrity": "sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", "@babel/plugin-syntax-optional-chaining": "^7.8.3" }, @@ -718,13 +718,13 @@ } }, "node_modules/@babel/plugin-proposal-private-methods": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.5.tgz", - "integrity": "sha512-+yFMO4BGT3sgzXo+lrq7orX5mAZt57DwUK6seqII6AcJnJOIhBJ8pzKH47/ql/d426uQ7YhN8DpUFirQzqYSUA==", + "version": "7.16.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz", + "integrity": "sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.16.5", - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-create-class-features-plugin": "^7.16.10", + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -734,14 +734,14 @@ } }, "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.5.tgz", - "integrity": "sha512-+YGh5Wbw0NH3y/E5YMu6ci5qTDmAEVNoZ3I54aB6nVEOZ5BQ7QJlwKq5pYVucQilMByGn/bvX0af+uNaPRCabA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz", + "integrity": "sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.0", - "@babel/helper-create-class-features-plugin": "^7.16.5", - "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-private-property-in-object": "^7.14.5" }, "engines": { @@ -752,13 +752,13 @@ } }, "node_modules/@babel/plugin-proposal-unicode-property-regex": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.5.tgz", - "integrity": "sha512-s5sKtlKQyFSatt781HQwv1hoM5BQ9qRH30r+dK56OLDsHmV74mzwJNX7R1yMuE7VZKG5O6q/gmOGSAO6ikTudg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz", + "integrity": "sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.16.0", - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=4" @@ -843,12 +843,12 @@ } }, "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.5.tgz", - "integrity": "sha512-42OGssv9NPk4QHKVgIHlzeLgPOW5rGgfV5jzG90AhcXXIv6hu/eqj63w4VgvRxdvZY3AlYeDgPiSJ3BqAd1Y6Q==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.7.tgz", + "integrity": "sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -960,12 +960,12 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.0.tgz", - "integrity": "sha512-Xv6mEXqVdaqCBfJFyeab0fH2DnUoMsDmhamxsSi4j8nLd4Vtw213WMJr55xxqipC/YVWyPY3K0blJncPYji+dQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.7.tgz", + "integrity": "sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -975,12 +975,12 @@ } }, "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.5.tgz", - "integrity": "sha512-8bTHiiZyMOyfZFULjsCnYOWG059FVMes0iljEHSfARhNgFfpsqE92OrCffv3veSw9rwMkYcFe9bj0ZoXU2IGtQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz", + "integrity": "sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -990,14 +990,14 @@ } }, "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.5.tgz", - "integrity": "sha512-TMXgfioJnkXU+XRoj7P2ED7rUm5jbnDWwlCuFVTpQboMfbSya5WrmubNBAMlk7KXvywpo8rd8WuYZkis1o2H8w==", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz", + "integrity": "sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg==", "dev": true, "dependencies": { - "@babel/helper-module-imports": "^7.16.0", - "@babel/helper-plugin-utils": "^7.16.5", - "@babel/helper-remap-async-to-generator": "^7.16.5" + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-remap-async-to-generator": "^7.16.8" }, "engines": { "node": ">=6.9.0" @@ -1007,12 +1007,12 @@ } }, "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.5.tgz", - "integrity": "sha512-BxmIyKLjUGksJ99+hJyL/HIxLIGnLKtw772zYDER7UuycDZ+Xvzs98ZQw6NGgM2ss4/hlFAaGiZmMNKvValEjw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz", + "integrity": "sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1022,12 +1022,12 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.5.tgz", - "integrity": "sha512-JxjSPNZSiOtmxjX7PBRBeRJTUKTyJ607YUYeT0QJCNdsedOe+/rXITjP08eG8xUpsLfPirgzdCFN+h0w6RI+pQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz", + "integrity": "sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1037,18 +1037,18 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.5.tgz", - "integrity": "sha512-DzJ1vYf/7TaCYy57J3SJ9rV+JEuvmlnvvyvYKFbk5u46oQbBvuB9/0w+YsVsxkOv8zVWKpDmUoj4T5ILHoXevA==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.0", - "@babel/helper-environment-visitor": "^7.16.5", - "@babel/helper-function-name": "^7.16.0", - "@babel/helper-optimise-call-expression": "^7.16.0", - "@babel/helper-plugin-utils": "^7.16.5", - "@babel/helper-replace-supers": "^7.16.5", - "@babel/helper-split-export-declaration": "^7.16.0", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz", + "integrity": "sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", "globals": "^11.1.0" }, "engines": { @@ -1059,12 +1059,12 @@ } }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.5.tgz", - "integrity": "sha512-n1+O7xtU5lSLraRzX88CNcpl7vtGdPakKzww74bVwpAIRgz9JVLJJpOLb0uYqcOaXVM0TL6X0RVeIJGD2CnCkg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz", + "integrity": "sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1074,12 +1074,12 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.5.tgz", - "integrity": "sha512-GuRVAsjq+c9YPK6NeTkRLWyQskDC099XkBSVO+6QzbnOnH2d/4mBVXYStaPrZD3dFRfg00I6BFJ9Atsjfs8mlg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.7.tgz", + "integrity": "sha512-VqAwhTHBnu5xBVDCvrvqJbtLUa++qZaWC0Fgr2mqokBlulZARGyIvZDoqbPlPaKImQ9dKAcCzbv+ul//uqu70A==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1089,13 +1089,13 @@ } }, "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.5.tgz", - "integrity": "sha512-iQiEMt8Q4/5aRGHpGVK2Zc7a6mx7qEAO7qehgSug3SDImnuMzgmm/wtJALXaz25zUj1PmnNHtShjFgk4PDx4nw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz", + "integrity": "sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.16.0", - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1105,12 +1105,12 @@ } }, "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.5.tgz", - "integrity": "sha512-81tijpDg2a6I1Yhj4aWY1l3O1J4Cg/Pd7LfvuaH2VVInAkXtzibz9+zSPdUM1WvuUi128ksstAP0hM5w48vQgg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz", + "integrity": "sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1120,13 +1120,13 @@ } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.5.tgz", - "integrity": "sha512-12rba2HwemQPa7BLIKCzm1pT2/RuQHtSFHdNl41cFiC6oi4tcrp7gjB07pxQvFpcADojQywSjblQth6gJyE6CA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz", + "integrity": "sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==", "dev": true, "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.5", - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1136,12 +1136,12 @@ } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.5.tgz", - "integrity": "sha512-+DpCAJFPAvViR17PIMi9x2AE34dll5wNlXO43wagAX2YcRGgEVHCNFC4azG85b4YyyFarvkc/iD5NPrz4Oneqw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz", + "integrity": "sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1151,13 +1151,14 @@ } }, "node_modules/@babel/plugin-transform-function-name": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.5.tgz", - "integrity": "sha512-Fuec/KPSpVLbGo6z1RPw4EE1X+z9gZk1uQmnYy7v4xr4TO9p41v1AoUuXEtyqAI7H+xNJYSICzRqZBhDEkd3kQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz", + "integrity": "sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.16.0", - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1167,12 +1168,12 @@ } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.5.tgz", - "integrity": "sha512-B1j9C/IfvshnPcklsc93AVLTrNVa69iSqztylZH6qnmiAsDDOmmjEYqOm3Ts2lGSgTSywnBNiqC949VdD0/gfw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz", + "integrity": "sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1182,12 +1183,12 @@ } }, "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.5.tgz", - "integrity": "sha512-d57i3vPHWgIde/9Y8W/xSFUndhvhZN5Wu2TjRrN1MVz5KzdUihKnfDVlfP1U7mS5DNj/WHHhaE4/tTi4hIyHwQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz", + "integrity": "sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1197,13 +1198,13 @@ } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.5.tgz", - "integrity": "sha512-oHI15S/hdJuSCfnwIz+4lm6wu/wBn7oJ8+QrkzPPwSFGXk8kgdI/AIKcbR/XnD1nQVMg/i6eNaXpszbGuwYDRQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz", + "integrity": "sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.16.5", - "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", "babel-plugin-dynamic-import-node": "^2.3.3" }, "engines": { @@ -1214,14 +1215,14 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.5.tgz", - "integrity": "sha512-ABhUkxvoQyqhCWyb8xXtfwqNMJD7tx+irIRnUh6lmyFud7Jln1WzONXKlax1fg/ey178EXbs4bSGNd6PngO+SQ==", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.8.tgz", + "integrity": "sha512-oflKPvsLT2+uKQopesJt3ApiaIS2HW+hzHFcwRNtyDGieAeC/dIHZX8buJQ2J2X1rxGPy4eRcUijm3qcSPjYcA==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.16.5", - "@babel/helper-plugin-utils": "^7.16.5", - "@babel/helper-simple-access": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-simple-access": "^7.16.7", "babel-plugin-dynamic-import-node": "^2.3.3" }, "engines": { @@ -1232,15 +1233,15 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.5.tgz", - "integrity": "sha512-53gmLdScNN28XpjEVIm7LbWnD/b/TpbwKbLk6KV4KqC9WyU6rq1jnNmVG6UgAdQZVVGZVoik3DqHNxk4/EvrjA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.7.tgz", + "integrity": "sha512-DuK5E3k+QQmnOqBR9UkusByy5WZWGRxfzV529s9nPra1GE7olmxfqO2FHobEOYSPIjPBTr4p66YDcjQnt8cBmw==", "dev": true, "dependencies": { - "@babel/helper-hoist-variables": "^7.16.0", - "@babel/helper-module-transforms": "^7.16.5", - "@babel/helper-plugin-utils": "^7.16.5", - "@babel/helper-validator-identifier": "^7.15.7", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", "babel-plugin-dynamic-import-node": "^2.3.3" }, "engines": { @@ -1251,13 +1252,13 @@ } }, "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.5.tgz", - "integrity": "sha512-qTFnpxHMoenNHkS3VoWRdwrcJ3FhX567GvDA3hRZKF0Dj8Fmg0UzySZp3AP2mShl/bzcywb/UWAMQIjA1bhXvw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz", + "integrity": "sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.16.5", - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1267,12 +1268,12 @@ } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.5.tgz", - "integrity": "sha512-/wqGDgvFUeKELW6ex6QB7dLVRkd5ehjw34tpXu1nhKC0sFfmaLabIswnpf8JgDyV2NeDmZiwoOb0rAmxciNfjA==", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.8.tgz", + "integrity": "sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.16.0" + "@babel/helper-create-regexp-features-plugin": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1282,12 +1283,12 @@ } }, "node_modules/@babel/plugin-transform-new-target": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.5.tgz", - "integrity": "sha512-ZaIrnXF08ZC8jnKR4/5g7YakGVL6go6V9ql6Jl3ecO8PQaQqFE74CuM384kezju7Z9nGCCA20BqZaR1tJ/WvHg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz", + "integrity": "sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1297,13 +1298,13 @@ } }, "node_modules/@babel/plugin-transform-object-super": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.5.tgz", - "integrity": "sha512-tded+yZEXuxt9Jdtkc1RraW1zMF/GalVxaVVxh41IYwirdRgyAxxxCKZ9XB7LxZqmsjfjALxupNE1MIz9KH+Zg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz", + "integrity": "sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5", - "@babel/helper-replace-supers": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1313,12 +1314,12 @@ } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.5.tgz", - "integrity": "sha512-B3O6AL5oPop1jAVg8CV+haeUte9oFuY85zu0jwnRNZZi3tVAbJriu5tag/oaO2kGaQM/7q7aGPBlTI5/sr9enA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz", + "integrity": "sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1328,12 +1329,12 @@ } }, "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.5.tgz", - "integrity": "sha512-+IRcVW71VdF9pEH/2R/Apab4a19LVvdVsr/gEeotH00vSDVlKD+XgfSIw+cgGWsjDB/ziqGv/pGoQZBIiQVXHg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz", + "integrity": "sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1343,12 +1344,12 @@ } }, "node_modules/@babel/plugin-transform-react-display-name": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.16.5.tgz", - "integrity": "sha512-dHYCOnzSsXFz8UcdNQIHGvg94qPL/teF7CCiCEMRxmA1G2p5Mq4JnKVowCDxYfiQ9D7RstaAp9kwaSI+sXbnhw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.16.7.tgz", + "integrity": "sha512-qgIg8BcZgd0G/Cz916D5+9kqX0c7nPZyXaP8R2tLNN5tkyIZdG5fEwBrxwplzSnjC1jvQmyMNVwUCZPcbGY7Pg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1358,16 +1359,16 @@ } }, "node_modules/@babel/plugin-transform-react-jsx": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.16.5.tgz", - "integrity": "sha512-+arLIz1d7kmwX0fKxTxbnoeG85ONSnLpvdODa4P3pc1sS7CV1hfmtYWufkW/oYsPnkDrEeQFxhUWcFnrXW7jQQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.16.7.tgz", + "integrity": "sha512-8D16ye66fxiE8m890w0BpPpngG9o9OVBBy0gH2E+2AR7qMR2ZpTYJEqLxAsoroenMId0p/wMW+Blc0meDgu0Ag==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.0", - "@babel/helper-module-imports": "^7.16.0", - "@babel/helper-plugin-utils": "^7.16.5", - "@babel/plugin-syntax-jsx": "^7.16.5", - "@babel/types": "^7.16.0" + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-jsx": "^7.16.7", + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1377,12 +1378,12 @@ } }, "node_modules/@babel/plugin-transform-react-jsx-development": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.16.5.tgz", - "integrity": "sha512-uQSLacMZSGLCxOw20dzo1dmLlKkd+DsayoV54q3MHXhbqgPzoiGerZQgNPl/Ro8/OcXV2ugfnkx+rxdS0sN5Uw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.16.7.tgz", + "integrity": "sha512-RMvQWvpla+xy6MlBpPlrKZCMRs2AGiHOGHY3xRwl0pEeim348dDyxeH4xBsMPbIMhujeq7ihE702eM2Ew0Wo+A==", "dev": true, "dependencies": { - "@babel/plugin-transform-react-jsx": "^7.16.5" + "@babel/plugin-transform-react-jsx": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1392,13 +1393,13 @@ } }, "node_modules/@babel/plugin-transform-react-pure-annotations": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.16.5.tgz", - "integrity": "sha512-0nYU30hCxnCVCbRjSy9ahlhWZ2Sn6khbY4FqR91W+2RbSqkWEbVu2gXh45EqNy4Bq7sRU+H4i0/6YKwOSzh16A==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.16.7.tgz", + "integrity": "sha512-hs71ToC97k3QWxswh2ElzMFABXHvGiJ01IB1TbYQDGeWRKWz/MPUTh5jGExdHvosYKpnJW5Pm3S4+TA3FyX+GA==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.0", - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1408,9 +1409,9 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.5.tgz", - "integrity": "sha512-2z+it2eVWU8TtQQRauvGUqZwLy4+7rTfo6wO4npr+fvvN1SW30ZF3O/ZRCNmTuu4F5MIP8OJhXAhRV5QMJOuYg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.7.tgz", + "integrity": "sha512-mF7jOgGYCkSJagJ6XCujSQg+6xC1M77/03K2oBmVJWoFGNUtnVJO4WHKJk3dnPC8HCcj4xBQP1Egm8DWh3Pb3Q==", "dev": true, "dependencies": { "regenerator-transform": "^0.14.2" @@ -1423,12 +1424,12 @@ } }, "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.5.tgz", - "integrity": "sha512-aIB16u8lNcf7drkhXJRoggOxSTUAuihTSTfAcpynowGJOZiGf+Yvi7RuTwFzVYSYPmWyARsPqUGoZWWWxLiknw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz", + "integrity": "sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1438,12 +1439,12 @@ } }, "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.5.tgz", - "integrity": "sha512-ZbuWVcY+MAXJuuW7qDoCwoxDUNClfZxoo7/4swVbOW1s/qYLOMHlm9YRWMsxMFuLs44eXsv4op1vAaBaBaDMVg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz", + "integrity": "sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1453,12 +1454,12 @@ } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.5.tgz", - "integrity": "sha512-5d6l/cnG7Lw4tGHEoga4xSkYp1euP7LAtrah1h1PgJ3JY7yNsjybsxQAnVK4JbtReZ/8z6ASVmd3QhYYKLaKZw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz", + "integrity": "sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" }, "engines": { @@ -1469,12 +1470,12 @@ } }, "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.5.tgz", - "integrity": "sha512-usYsuO1ID2LXxzuUxifgWtJemP7wL2uZtyrTVM4PKqsmJycdS4U4mGovL5xXkfUheds10Dd2PjoQLXw6zCsCbg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz", + "integrity": "sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1484,12 +1485,12 @@ } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.5.tgz", - "integrity": "sha512-gnyKy9RyFhkovex4BjKWL3BVYzUDG6zC0gba7VMLbQoDuqMfJ1SDXs8k/XK41Mmt1Hyp4qNAvGFb9hKzdCqBRQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz", + "integrity": "sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1499,12 +1500,12 @@ } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.5.tgz", - "integrity": "sha512-ldxCkW180qbrvyCVDzAUZqB0TAeF8W/vGJoRcaf75awm6By+PxfJKvuqVAnq8N9wz5Xa6mSpM19OfVKKVmGHSQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz", + "integrity": "sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1514,14 +1515,14 @@ } }, "node_modules/@babel/plugin-transform-typescript": { - "version": "7.16.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.16.1.tgz", - "integrity": "sha512-NO4XoryBng06jjw/qWEU2LhcLJr1tWkhpMam/H4eas/CDKMX/b2/Ylb6EI256Y7+FVPCawwSM1rrJNOpDiz+Lg==", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.16.8.tgz", + "integrity": "sha512-bHdQ9k7YpBDO2d0NVfkj51DpQcvwIzIusJ7mEUaMlbZq3Kt/U47j24inXZHQ5MDiYpCs+oZiwnXyKedE8+q7AQ==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-typescript": "^7.16.0" + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-typescript": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1531,12 +1532,12 @@ } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.5.tgz", - "integrity": "sha512-shiCBHTIIChGLdyojsKQjoAyB8MBwat25lKM7MJjbe1hE0bgIppD+LX9afr41lLHOhqceqeWl4FkLp+Bgn9o1Q==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz", + "integrity": "sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1546,13 +1547,13 @@ } }, "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.5.tgz", - "integrity": "sha512-GTJ4IW012tiPEMMubd7sD07iU9O/LOo8Q/oU4xNhcaq0Xn8+6TcUQaHtC8YxySo1T+ErQ8RaWogIEeFhKGNPzw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz", + "integrity": "sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.16.0", - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1562,32 +1563,32 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.5.tgz", - "integrity": "sha512-MiJJW5pwsktG61NDxpZ4oJ1CKxM1ncam9bzRtx9g40/WkLRkxFP6mhpkYV0/DxcciqoiHicx291+eUQrXb/SfQ==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.16.4", - "@babel/helper-compilation-targets": "^7.16.3", - "@babel/helper-plugin-utils": "^7.16.5", - "@babel/helper-validator-option": "^7.14.5", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.2", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.0", - "@babel/plugin-proposal-async-generator-functions": "^7.16.5", - "@babel/plugin-proposal-class-properties": "^7.16.5", - "@babel/plugin-proposal-class-static-block": "^7.16.5", - "@babel/plugin-proposal-dynamic-import": "^7.16.5", - "@babel/plugin-proposal-export-namespace-from": "^7.16.5", - "@babel/plugin-proposal-json-strings": "^7.16.5", - "@babel/plugin-proposal-logical-assignment-operators": "^7.16.5", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.5", - "@babel/plugin-proposal-numeric-separator": "^7.16.5", - "@babel/plugin-proposal-object-rest-spread": "^7.16.5", - "@babel/plugin-proposal-optional-catch-binding": "^7.16.5", - "@babel/plugin-proposal-optional-chaining": "^7.16.5", - "@babel/plugin-proposal-private-methods": "^7.16.5", - "@babel/plugin-proposal-private-property-in-object": "^7.16.5", - "@babel/plugin-proposal-unicode-property-regex": "^7.16.5", + "version": "7.16.11", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.11.tgz", + "integrity": "sha512-qcmWG8R7ZW6WBRPZK//y+E3Cli151B20W1Rv7ln27vuPaXU/8TKms6jFdiJtF7UDTxcrb7mZd88tAeK9LjdT8g==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.16.8", + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-option": "^7.16.7", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.7", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.7", + "@babel/plugin-proposal-async-generator-functions": "^7.16.8", + "@babel/plugin-proposal-class-properties": "^7.16.7", + "@babel/plugin-proposal-class-static-block": "^7.16.7", + "@babel/plugin-proposal-dynamic-import": "^7.16.7", + "@babel/plugin-proposal-export-namespace-from": "^7.16.7", + "@babel/plugin-proposal-json-strings": "^7.16.7", + "@babel/plugin-proposal-logical-assignment-operators": "^7.16.7", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.7", + "@babel/plugin-proposal-numeric-separator": "^7.16.7", + "@babel/plugin-proposal-object-rest-spread": "^7.16.7", + "@babel/plugin-proposal-optional-catch-binding": "^7.16.7", + "@babel/plugin-proposal-optional-chaining": "^7.16.7", + "@babel/plugin-proposal-private-methods": "^7.16.11", + "@babel/plugin-proposal-private-property-in-object": "^7.16.7", + "@babel/plugin-proposal-unicode-property-regex": "^7.16.7", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", "@babel/plugin-syntax-class-static-block": "^7.14.5", @@ -1602,44 +1603,44 @@ "@babel/plugin-syntax-optional-chaining": "^7.8.3", "@babel/plugin-syntax-private-property-in-object": "^7.14.5", "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-transform-arrow-functions": "^7.16.5", - "@babel/plugin-transform-async-to-generator": "^7.16.5", - "@babel/plugin-transform-block-scoped-functions": "^7.16.5", - "@babel/plugin-transform-block-scoping": "^7.16.5", - "@babel/plugin-transform-classes": "^7.16.5", - "@babel/plugin-transform-computed-properties": "^7.16.5", - "@babel/plugin-transform-destructuring": "^7.16.5", - "@babel/plugin-transform-dotall-regex": "^7.16.5", - "@babel/plugin-transform-duplicate-keys": "^7.16.5", - "@babel/plugin-transform-exponentiation-operator": "^7.16.5", - "@babel/plugin-transform-for-of": "^7.16.5", - "@babel/plugin-transform-function-name": "^7.16.5", - "@babel/plugin-transform-literals": "^7.16.5", - "@babel/plugin-transform-member-expression-literals": "^7.16.5", - "@babel/plugin-transform-modules-amd": "^7.16.5", - "@babel/plugin-transform-modules-commonjs": "^7.16.5", - "@babel/plugin-transform-modules-systemjs": "^7.16.5", - "@babel/plugin-transform-modules-umd": "^7.16.5", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.5", - "@babel/plugin-transform-new-target": "^7.16.5", - "@babel/plugin-transform-object-super": "^7.16.5", - "@babel/plugin-transform-parameters": "^7.16.5", - "@babel/plugin-transform-property-literals": "^7.16.5", - "@babel/plugin-transform-regenerator": "^7.16.5", - "@babel/plugin-transform-reserved-words": "^7.16.5", - "@babel/plugin-transform-shorthand-properties": "^7.16.5", - "@babel/plugin-transform-spread": "^7.16.5", - "@babel/plugin-transform-sticky-regex": "^7.16.5", - "@babel/plugin-transform-template-literals": "^7.16.5", - "@babel/plugin-transform-typeof-symbol": "^7.16.5", - "@babel/plugin-transform-unicode-escapes": "^7.16.5", - "@babel/plugin-transform-unicode-regex": "^7.16.5", + "@babel/plugin-transform-arrow-functions": "^7.16.7", + "@babel/plugin-transform-async-to-generator": "^7.16.8", + "@babel/plugin-transform-block-scoped-functions": "^7.16.7", + "@babel/plugin-transform-block-scoping": "^7.16.7", + "@babel/plugin-transform-classes": "^7.16.7", + "@babel/plugin-transform-computed-properties": "^7.16.7", + "@babel/plugin-transform-destructuring": "^7.16.7", + "@babel/plugin-transform-dotall-regex": "^7.16.7", + "@babel/plugin-transform-duplicate-keys": "^7.16.7", + "@babel/plugin-transform-exponentiation-operator": "^7.16.7", + "@babel/plugin-transform-for-of": "^7.16.7", + "@babel/plugin-transform-function-name": "^7.16.7", + "@babel/plugin-transform-literals": "^7.16.7", + "@babel/plugin-transform-member-expression-literals": "^7.16.7", + "@babel/plugin-transform-modules-amd": "^7.16.7", + "@babel/plugin-transform-modules-commonjs": "^7.16.8", + "@babel/plugin-transform-modules-systemjs": "^7.16.7", + "@babel/plugin-transform-modules-umd": "^7.16.7", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.8", + "@babel/plugin-transform-new-target": "^7.16.7", + "@babel/plugin-transform-object-super": "^7.16.7", + "@babel/plugin-transform-parameters": "^7.16.7", + "@babel/plugin-transform-property-literals": "^7.16.7", + "@babel/plugin-transform-regenerator": "^7.16.7", + "@babel/plugin-transform-reserved-words": "^7.16.7", + "@babel/plugin-transform-shorthand-properties": "^7.16.7", + "@babel/plugin-transform-spread": "^7.16.7", + "@babel/plugin-transform-sticky-regex": "^7.16.7", + "@babel/plugin-transform-template-literals": "^7.16.7", + "@babel/plugin-transform-typeof-symbol": "^7.16.7", + "@babel/plugin-transform-unicode-escapes": "^7.16.7", + "@babel/plugin-transform-unicode-regex": "^7.16.7", "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.16.0", + "@babel/types": "^7.16.8", "babel-plugin-polyfill-corejs2": "^0.3.0", - "babel-plugin-polyfill-corejs3": "^0.4.0", + "babel-plugin-polyfill-corejs3": "^0.5.0", "babel-plugin-polyfill-regenerator": "^0.3.0", - "core-js-compat": "^3.19.1", + "core-js-compat": "^3.20.2", "semver": "^6.3.0" }, "engines": { @@ -1666,17 +1667,17 @@ } }, "node_modules/@babel/preset-react": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.16.5.tgz", - "integrity": "sha512-3kzUOQeaxY/2vhPDS7CX/KGEGu/1bOYGvdRDJ2U5yjEz5o5jmIeTPLoiQBPGjfhPascLuW5OlMiPzwOOuB6txg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.16.7.tgz", + "integrity": "sha512-fWpyI8UM/HE6DfPBzD8LnhQ/OcH8AgTaqcqP2nGOXEUV+VKBR5JRN9hCk9ai+zQQ57vtm9oWeXguBCPNUjytgA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5", - "@babel/helper-validator-option": "^7.14.5", - "@babel/plugin-transform-react-display-name": "^7.16.5", - "@babel/plugin-transform-react-jsx": "^7.16.5", - "@babel/plugin-transform-react-jsx-development": "^7.16.5", - "@babel/plugin-transform-react-pure-annotations": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-option": "^7.16.7", + "@babel/plugin-transform-react-display-name": "^7.16.7", + "@babel/plugin-transform-react-jsx": "^7.16.7", + "@babel/plugin-transform-react-jsx-development": "^7.16.7", + "@babel/plugin-transform-react-pure-annotations": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1686,14 +1687,14 @@ } }, "node_modules/@babel/preset-typescript": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.16.5.tgz", - "integrity": "sha512-lmAWRoJ9iOSvs3DqOndQpj8XqXkzaiQs50VG/zESiI9D3eoZhGriU675xNCr0UwvsuXrhMAGvyk1w+EVWF3u8Q==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.16.7.tgz", + "integrity": "sha512-WbVEmgXdIyvzB77AQjGBEyYPZx+8tTsO50XtfozQrkW8QB2rLJpH2lgx0TRw5EJrBxOZQ+wCcyPVQvS8tjEHpQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5", - "@babel/helper-validator-option": "^7.14.5", - "@babel/plugin-transform-typescript": "^7.16.1" + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-option": "^7.16.7", + "@babel/plugin-transform-typescript": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1703,9 +1704,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.5.tgz", - "integrity": "sha512-TXWihFIS3Pyv5hzR7j6ihmeLkZfrXGxAr5UfSl8CHf+6q/wpiYDkUau0czckpYG8QmnCIuPpdLtuA9VmuGGyMA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.7.tgz", + "integrity": "sha512-9E9FJowqAsytyOY6LG+1KuueckRL+aQW+mKvXRXnuFGyRAyepJPmEo9vgMfXUA6O9u3IeEdv9MAkppFcaQwogQ==", "dev": true, "dependencies": { "regenerator-runtime": "^0.13.4" @@ -1715,33 +1716,33 @@ } }, "node_modules/@babel/template": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", - "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", + "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.16.0", - "@babel/parser": "^7.16.0", - "@babel/types": "^7.16.0" + "@babel/code-frame": "^7.16.7", + "@babel/parser": "^7.16.7", + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.5.tgz", - "integrity": "sha512-FOCODAzqUMROikDYLYxl4nmwiLlu85rNqBML/A5hKRVXG2LV8d0iMqgPzdYTcIpjZEBB7D6UDU9vxRZiriASdQ==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.16.0", - "@babel/generator": "^7.16.5", - "@babel/helper-environment-visitor": "^7.16.5", - "@babel/helper-function-name": "^7.16.0", - "@babel/helper-hoist-variables": "^7.16.0", - "@babel/helper-split-export-declaration": "^7.16.0", - "@babel/parser": "^7.16.5", - "@babel/types": "^7.16.0", + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.10.tgz", + "integrity": "sha512-yzuaYXoRJBGMlBhsMJoUW7G1UmSb/eXr/JHYM/MsOJgavJibLwASijW7oXBdw3NQ6T0bW7Ty5P/VarOs9cHmqw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.16.8", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/parser": "^7.16.10", + "@babel/types": "^7.16.8", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -1750,12 +1751,12 @@ } }, "node_modules/@babel/types": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", - "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.8.tgz", + "integrity": "sha512-smN2DQc5s4M7fntyjGtyIPbRJv6wW4rU/94fmYJ7PKQuZkC0qGMHXJbg6sNGt12JmVr4k5YaptI/XtiLJBnmIg==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.15.7", + "@babel/helper-validator-identifier": "^7.16.7", "to-fast-properties": "^2.0.0" }, "engines": { @@ -2128,9 +2129,9 @@ } }, "node_modules/@webpack-cli/configtest": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.1.0.tgz", - "integrity": "sha512-ttOkEkoalEHa7RaFYpM0ErK1xc4twg3Am9hfHhL7MVqlHebnkYd2wuI/ZqTDj0cVzZho6PdinY0phFZV3O0Mzg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.1.1.tgz", + "integrity": "sha512-1FBc1f9G4P/AxMqIgfZgeOTuRnwZMten8E7zap5zgpPInnCrP8D4Q81+4CWIch8i/Nf7nXjP0v6CjjbHOrXhKg==", "dev": true, "peerDependencies": { "webpack": "4.x.x || 5.x.x", @@ -2138,9 +2139,9 @@ } }, "node_modules/@webpack-cli/info": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.4.0.tgz", - "integrity": "sha512-F6b+Man0rwE4n0409FyAJHStYA5OIZERxmnUfLVwv0mc0V1wLad3V7jqRlMkgKBeAq07jUvglacNaa6g9lOpuw==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.4.1.tgz", + "integrity": "sha512-PKVGmazEq3oAo46Q63tpMr4HipI3OPfP7LiNOEJg963RMgT0rqheag28NCML0o3GIzA3DmxP1ZIAv9oTX1CUIA==", "dev": true, "dependencies": { "envinfo": "^7.7.3" @@ -2150,9 +2151,9 @@ } }, "node_modules/@webpack-cli/serve": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.6.0.tgz", - "integrity": "sha512-ZkVeqEmRpBV2GHvjjUZqEai2PpUbuq8Bqd//vEYsp63J8WyexI8ppCqVS3Zs0QADf6aWuPdU+0XsPI647PVlQA==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.6.1.tgz", + "integrity": "sha512-gNGTiTrjEVQ0OcVnzsRSqTxaBSr+dmTfm+qJsCDluky8uhdLWep7Gcr62QsAKHTMxjCS/8nEITsmFAhfIx+QSw==", "dev": true, "peerDependencies": { "webpack-cli": "4.x.x" @@ -2323,13 +2324,13 @@ } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.4.0.tgz", - "integrity": "sha512-YxFreYwUfglYKdLUGvIF2nJEsGwj+RhWSX/ije3D2vQPOXuyMLMtg/cCGMDpOA7Nd+MwlNdnGODbd2EwUZPlsw==", + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.1.tgz", + "integrity": "sha512-TihqEe4sQcb/QcPJvxe94/9RZuLQuF1+To4WqQcRvc+3J3gLCPIPgDKzGLG6zmQLfH3nn25heRuDNkS2KR4I8A==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.3.0", - "core-js-compat": "^3.18.0" + "@babel/helper-define-polyfill-provider": "^0.3.1", + "core-js-compat": "^3.20.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" @@ -2416,13 +2417,13 @@ } }, "node_modules/browserslist": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.18.1.tgz", - "integrity": "sha512-8ScCzdpPwR2wQh8IT82CA2VgDwjHyqMovPBZSNH54+tm4Jk2pCuv90gmAdH6J84OCRWi0b4gMe6O6XPXuJnjgQ==", + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.1.tgz", + "integrity": "sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==", "dev": true, "dependencies": { - "caniuse-lite": "^1.0.30001280", - "electron-to-chromium": "^1.3.896", + "caniuse-lite": "^1.0.30001286", + "electron-to-chromium": "^1.4.17", "escalade": "^3.1.1", "node-releases": "^2.0.1", "picocolors": "^1.0.0" @@ -2488,9 +2489,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001282", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001282.tgz", - "integrity": "sha512-YhF/hG6nqBEllymSIjLtR2iWDDnChvhnVJqp+vloyt2tEHFG1yBR+ac2B/rOw0qOK0m0lEXU2dv4E/sMk5P9Kg==", + "version": "1.0.30001304", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001304.tgz", + "integrity": "sha512-bdsfZd6K6ap87AGqSHJP/s1V+U6Z5lyrcbBu3ovbCCf8cSYpwTtGrCBObMpJqwxfTbLW6YTIdbb1jEeTelcpYQ==", "dev": true, "funding": { "type": "opencollective", @@ -2611,12 +2612,12 @@ } }, "node_modules/core-js-compat": { - "version": "3.19.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.19.1.tgz", - "integrity": "sha512-Q/VJ7jAF/y68+aUsQJ/afPOewdsGkDtcMb40J8MbuWKlK3Y+wtHq8bTHKPj2WKWLIqmS5JhHs4CzHtz6pT2W6g==", + "version": "3.20.3", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.20.3.tgz", + "integrity": "sha512-c8M5h0IkNZ+I92QhIpuSijOxGAcj3lgpsWdkCqmUTZNwidujF4r3pi6x1DCN+Vcs5qTS2XWWMfWSuCqyupX8gw==", "dev": true, "dependencies": { - "browserslist": "^4.17.6", + "browserslist": "^4.19.1", "semver": "7.0.0" }, "funding": { @@ -2802,9 +2803,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.3.904", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.904.tgz", - "integrity": "sha512-x5uZWXcVNYkTh4JubD7KSC1VMKz0vZwJUqVwY3ihsW0bst1BXDe494Uqbg3Y0fDGVjJqA8vEeGuvO5foyH2+qw==", + "version": "1.4.57", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.57.tgz", + "integrity": "sha512-FNC+P5K1n6pF+M0zIK+gFCoXcJhhzDViL3DRIGy2Fv5PohuSES1JHR7T+GlwxSxlzx4yYbsuzCZvHxcBSRCIOw==", "dev": true }, "node_modules/emojis-list": { @@ -3295,9 +3296,9 @@ } }, "node_modules/graceful-fs": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", - "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", + "version": "4.2.9", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", + "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==", "dev": true }, "node_modules/graphiql": { @@ -4702,9 +4703,9 @@ "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" }, "node_modules/markdown-it": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.0.tgz", - "integrity": "sha512-T345UZZ6ejQWTjG6PSEHplzNy5m4kF6zvUpHVDv8Snl/pEU0OxIK0jGg8YLVNwJvT8E0YJC7/2UvssJDk/wQCQ==", + "version": "12.3.2", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz", + "integrity": "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==", "dependencies": { "argparse": "^2.0.1", "entities": "~2.1.0", @@ -4825,9 +4826,9 @@ "dev": true }, "node_modules/nanoid": { - "version": "3.1.30", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.30.tgz", - "integrity": "sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.2.0.tgz", + "integrity": "sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA==", "dev": true, "bin": { "nanoid": "bin/nanoid.cjs" @@ -4861,14 +4862,22 @@ } }, "node_modules/node-fetch": { - "version": "2.6.6", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.6.tgz", - "integrity": "sha512-Z8/6vRlTUChSdIgMa51jxQ4lrw/Jy5SOW10ObaA47/RElsAN2c5Pn8bTgFGWn/ibwzXTE8qwr1Yzx28vsecXEA==", + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", "dependencies": { "whatwg-url": "^5.0.0" }, "engines": { "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } } }, "node_modules/node-releases": { @@ -5262,9 +5271,9 @@ "dev": true }, "node_modules/prop-types": { - "version": "15.8.0", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.0.tgz", - "integrity": "sha512-fDGekdaHh65eI3lMi5OnErU6a8Ighg2KjcjQxO7m8VHyWjcPyj5kiOgV1LQDOOOgVy3+5FgjXvdSSX7B8/5/4g==", + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", @@ -6001,9 +6010,9 @@ "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" }, "node_modules/typescript": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.4.tgz", - "integrity": "sha512-VgYs2A2QIRuGphtzFV7aQJduJ2gyfTljngLzjpfW9FoYZF6xuw1W0vW9ghCKLfcWrCFxK81CSGRAvS1pn4fIUg==", + "version": "4.5.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.5.tgz", + "integrity": "sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -6181,9 +6190,9 @@ "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" }, "node_modules/webpack": { - "version": "5.65.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.65.0.tgz", - "integrity": "sha512-Q5or2o6EKs7+oKmJo7LaqZaMOlDWQse9Tm5l1WAfU/ujLGN5Pb0SqGeVkN/4bpPmEqEP5RnVhiqsOtWtUVwGRw==", + "version": "5.67.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.67.0.tgz", + "integrity": "sha512-LjFbfMh89xBDpUMgA1W9Ur6Rn/gnr2Cq1jjHFPo4v6a79/ypznSYbAyPgGhwsxBtMIaEmDD1oJoA7BEYw/Fbrw==", "dev": true, "dependencies": { "@types/eslint-scope": "^3.7.0", @@ -6200,7 +6209,7 @@ "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.4", + "graceful-fs": "^4.2.9", "json-parse-better-errors": "^1.0.2", "loader-runner": "^4.2.0", "mime-types": "^2.1.27", @@ -6209,7 +6218,7 @@ "tapable": "^2.1.1", "terser-webpack-plugin": "^5.1.3", "watchpack": "^2.3.1", - "webpack-sources": "^3.2.2" + "webpack-sources": "^3.2.3" }, "bin": { "webpack": "bin/webpack.js" @@ -6228,15 +6237,15 @@ } }, "node_modules/webpack-cli": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.9.1.tgz", - "integrity": "sha512-JYRFVuyFpzDxMDB+v/nanUdQYcZtqFPGzmlW4s+UkPMFhSpfRNmf1z4AwYcHJVdvEFAM7FFCQdNTpsBYhDLusQ==", + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.9.2.tgz", + "integrity": "sha512-m3/AACnBBzK/kMTcxWHcZFPrw/eQuY4Df1TxvIWfWM2x7mRqBQCqKEd96oCUa9jkapLBaFfRce33eGDb4Pr7YQ==", "dev": true, "dependencies": { "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^1.1.0", - "@webpack-cli/info": "^1.4.0", - "@webpack-cli/serve": "^1.6.0", + "@webpack-cli/configtest": "^1.1.1", + "@webpack-cli/info": "^1.4.1", + "@webpack-cli/serve": "^1.6.1", "colorette": "^2.0.14", "commander": "^7.0.0", "execa": "^5.0.0", @@ -6293,9 +6302,9 @@ } }, "node_modules/webpack-sources": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.2.tgz", - "integrity": "sha512-cp5qdmHnu5T8wRg2G3vZZHoJPN14aqQ89SyQ11NpGH5zEMDCclt49rzo+MaRazk7/UeILhAI+/sEtcM+7Fr0nw==", + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", "dev": true, "engines": { "node": ">=10.13.0" @@ -6429,9 +6438,9 @@ }, "dependencies": { "@babel/cli": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.16.0.tgz", - "integrity": "sha512-WLrM42vKX/4atIoQB+eb0ovUof53UUvecb4qGjU2PDDWRiZr50ZpiV8NpcLo7iSxeGYrRG0Mqembsa+UrTAV6Q==", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.16.8.tgz", + "integrity": "sha512-FTKBbxyk5TclXOGmwYyqelqP5IF6hMxaeJskd85jbR5jBfYlwqgwAbJwnixi1ZBbTqKfFuAA95mdmUFeSRwyJA==", "dev": true, "requires": { "@nicolo-ribaudo/chokidar-2": "2.1.8-no-fsevents.3", @@ -6446,34 +6455,34 @@ } }, "@babel/code-frame": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", - "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", + "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", "requires": { - "@babel/highlight": "^7.16.0" + "@babel/highlight": "^7.16.7" } }, "@babel/compat-data": { - "version": "7.16.4", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.4.tgz", - "integrity": "sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q==", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.8.tgz", + "integrity": "sha512-m7OkX0IdKLKPpBlJtF561YJal5y/jyI5fNfWbPxh2D/nbzzGI4qRyrD8xO2jB24u7l+5I2a43scCG2IrfjC50Q==", "dev": true }, "@babel/core": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.5.tgz", - "integrity": "sha512-wUcenlLzuWMZ9Zt8S0KmFwGlH6QKRh3vsm/dhDA3CHkiTA45YuG1XkHRcNRl73EFPXDp/d5kVOU0/y7x2w6OaQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.16.0", - "@babel/generator": "^7.16.5", - "@babel/helper-compilation-targets": "^7.16.3", - "@babel/helper-module-transforms": "^7.16.5", - "@babel/helpers": "^7.16.5", - "@babel/parser": "^7.16.5", - "@babel/template": "^7.16.0", - "@babel/traverse": "^7.16.5", - "@babel/types": "^7.16.0", + "version": "7.16.12", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.12.tgz", + "integrity": "sha512-dK5PtG1uiN2ikk++5OzSYsitZKny4wOCD0nrO4TqnW4BVBTQ2NGS3NgilvT/TEyxTST7LNyWV/T4tXDoD3fOgg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.16.8", + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helpers": "^7.16.7", + "@babel/parser": "^7.16.12", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.16.10", + "@babel/types": "^7.16.8", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -6483,76 +6492,76 @@ } }, "@babel/generator": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.5.tgz", - "integrity": "sha512-kIvCdjZqcdKqoDbVVdt5R99icaRtrtYhYK/xux5qiWCBmfdvEYMFZ68QCrpE5cbFM1JsuArUNs1ZkuKtTtUcZA==", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.8.tgz", + "integrity": "sha512-1ojZwE9+lOXzcWdWmO6TbUzDfqLD39CmEhN8+2cX9XkDo5yW1OpgfejfliysR2AWLpMamTiOiAp/mtroaymhpw==", "dev": true, "requires": { - "@babel/types": "^7.16.0", + "@babel/types": "^7.16.8", "jsesc": "^2.5.1", "source-map": "^0.5.0" } }, "@babel/helper-annotate-as-pure": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.0.tgz", - "integrity": "sha512-ItmYF9vR4zA8cByDocY05o0LGUkp1zhbTQOH1NFyl5xXEqlTJQCEJjieriw+aFpxo16swMxUnUiKS7a/r4vtHg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", + "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", "dev": true, "requires": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.16.7" } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.5.tgz", - "integrity": "sha512-3JEA9G5dmmnIWdzaT9d0NmFRgYnWUThLsDaL7982H0XqqWr56lRrsmwheXFMjR+TMl7QMBb6mzy9kvgr1lRLUA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz", + "integrity": "sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA==", "dev": true, "requires": { - "@babel/helper-explode-assignable-expression": "^7.16.0", - "@babel/types": "^7.16.0" + "@babel/helper-explode-assignable-expression": "^7.16.7", + "@babel/types": "^7.16.7" } }, "@babel/helper-compilation-targets": { - "version": "7.16.3", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz", - "integrity": "sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz", + "integrity": "sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA==", "dev": true, "requires": { - "@babel/compat-data": "^7.16.0", - "@babel/helper-validator-option": "^7.14.5", + "@babel/compat-data": "^7.16.4", + "@babel/helper-validator-option": "^7.16.7", "browserslist": "^4.17.5", "semver": "^6.3.0" } }, "@babel/helper-create-class-features-plugin": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.5.tgz", - "integrity": "sha512-NEohnYA7mkB8L5JhU7BLwcBdU3j83IziR9aseMueWGeAjblbul3zzb8UvJ3a1zuBiqCMObzCJHFqKIQE6hTVmg==", + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.10.tgz", + "integrity": "sha512-wDeej0pu3WN/ffTxMNCPW5UCiOav8IcLRxSIyp/9+IF2xJUM9h/OYjg0IJLHaL6F8oU8kqMz9nc1vryXhMsgXg==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.16.0", - "@babel/helper-environment-visitor": "^7.16.5", - "@babel/helper-function-name": "^7.16.0", - "@babel/helper-member-expression-to-functions": "^7.16.5", - "@babel/helper-optimise-call-expression": "^7.16.0", - "@babel/helper-replace-supers": "^7.16.5", - "@babel/helper-split-export-declaration": "^7.16.0" + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-member-expression-to-functions": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7" } }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.0.tgz", - "integrity": "sha512-3DyG0zAFAZKcOp7aVr33ddwkxJ0Z0Jr5V99y3I690eYLpukJsJvAbzTy1ewoCqsML8SbIrjH14Jc/nSQ4TvNPA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.7.tgz", + "integrity": "sha512-fk5A6ymfp+O5+p2yCkXAu5Kyj6v0xh0RBeNcAkYUMDvvAAoxvSKXn+Jb37t/yWFiQVDFK1ELpUTD8/aLhCPu+g==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-annotate-as-pure": "^7.16.7", "regexpu-core": "^4.7.1" } }, "@babel/helper-define-polyfill-provider": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.0.tgz", - "integrity": "sha512-7hfT8lUljl/tM3h+izTX/pO3W3frz2ok6Pk+gzys8iJqDfZrZy2pXjRTZAvG2YmfHun1X4q8/UZRLatMfqc5Tg==", + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz", + "integrity": "sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==", "dev": true, "requires": { "@babel/helper-compilation-targets": "^7.13.0", @@ -6566,132 +6575,132 @@ } }, "@babel/helper-environment-visitor": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.5.tgz", - "integrity": "sha512-ODQyc5AnxmZWm/R2W7fzhamOk1ey8gSguo5SGvF0zcB3uUzRpTRmM/jmLSm9bDMyPlvbyJ+PwPEK0BWIoZ9wjg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", + "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", "dev": true, "requires": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.16.7" } }, "@babel/helper-explode-assignable-expression": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.0.tgz", - "integrity": "sha512-Hk2SLxC9ZbcOhLpg/yMznzJ11W++lg5GMbxt1ev6TXUiJB0N42KPC+7w8a+eWGuqDnUYuwStJoZHM7RgmIOaGQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz", + "integrity": "sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ==", "dev": true, "requires": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.16.7" } }, "@babel/helper-function-name": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz", - "integrity": "sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz", + "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.16.0", - "@babel/template": "^7.16.0", - "@babel/types": "^7.16.0" + "@babel/helper-get-function-arity": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/types": "^7.16.7" } }, "@babel/helper-get-function-arity": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz", - "integrity": "sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz", + "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==", "dev": true, "requires": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.16.7" } }, "@babel/helper-hoist-variables": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz", - "integrity": "sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", + "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", "dev": true, "requires": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.16.7" } }, "@babel/helper-member-expression-to-functions": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.5.tgz", - "integrity": "sha512-7fecSXq7ZrLE+TWshbGT+HyCLkxloWNhTbU2QM1NTI/tDqyf0oZiMcEfYtDuUDCo528EOlt39G1rftea4bRZIw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.7.tgz", + "integrity": "sha512-VtJ/65tYiU/6AbMTDwyoXGPKHgTsfRarivm+YbB5uAzKUyuPjgZSgAFeG87FCigc7KNHu2Pegh1XIT3lXjvz3Q==", "dev": true, "requires": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.16.7" } }, "@babel/helper-module-imports": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz", - "integrity": "sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", + "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", "dev": true, "requires": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.16.7" } }, "@babel/helper-module-transforms": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.5.tgz", - "integrity": "sha512-CkvMxgV4ZyyioElFwcuWnDCcNIeyqTkCm9BxXZi73RR1ozqlpboqsbGUNvRTflgZtFbbJ1v5Emvm+lkjMYY/LQ==", - "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.16.5", - "@babel/helper-module-imports": "^7.16.0", - "@babel/helper-simple-access": "^7.16.0", - "@babel/helper-split-export-declaration": "^7.16.0", - "@babel/helper-validator-identifier": "^7.15.7", - "@babel/template": "^7.16.0", - "@babel/traverse": "^7.16.5", - "@babel/types": "^7.16.0" + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.7.tgz", + "integrity": "sha512-gaqtLDxJEFCeQbYp9aLAefjhkKdjKcdh6DB7jniIGU3Pz52WAmP268zK0VgPz9hUNkMSYeH976K2/Y6yPadpng==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-simple-access": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.16.7", + "@babel/types": "^7.16.7" } }, "@babel/helper-optimise-call-expression": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz", - "integrity": "sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz", + "integrity": "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==", "dev": true, "requires": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.16.7" } }, "@babel/helper-plugin-utils": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.5.tgz", - "integrity": "sha512-59KHWHXxVA9K4HNF4sbHCf+eJeFe0Te/ZFGqBT4OjXhrwvA04sGfaEGsVTdsjoszq0YTP49RC9UKe5g8uN2RwQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", "dev": true }, "@babel/helper-remap-async-to-generator": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.5.tgz", - "integrity": "sha512-X+aAJldyxrOmN9v3FKp+Hu1NO69VWgYgDGq6YDykwRPzxs5f2N+X988CBXS7EQahDU+Vpet5QYMqLk+nsp+Qxw==", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz", + "integrity": "sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.16.0", - "@babel/helper-wrap-function": "^7.16.5", - "@babel/types": "^7.16.0" + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-wrap-function": "^7.16.8", + "@babel/types": "^7.16.8" } }, "@babel/helper-replace-supers": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.5.tgz", - "integrity": "sha512-ao3seGVa/FZCMCCNDuBcqnBFSbdr8N2EW35mzojx3TwfIbdPmNK+JV6+2d5bR0Z71W5ocLnQp9en/cTF7pBJiQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz", + "integrity": "sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==", "dev": true, "requires": { - "@babel/helper-environment-visitor": "^7.16.5", - "@babel/helper-member-expression-to-functions": "^7.16.5", - "@babel/helper-optimise-call-expression": "^7.16.0", - "@babel/traverse": "^7.16.5", - "@babel/types": "^7.16.0" + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-member-expression-to-functions": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/traverse": "^7.16.7", + "@babel/types": "^7.16.7" } }, "@babel/helper-simple-access": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz", - "integrity": "sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz", + "integrity": "sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g==", "dev": true, "requires": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.16.7" } }, "@babel/helper-skip-transparent-expression-wrappers": { @@ -6704,240 +6713,240 @@ } }, "@babel/helper-split-export-declaration": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz", - "integrity": "sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", + "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", "dev": true, "requires": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.16.7" } }, "@babel/helper-validator-identifier": { - "version": "7.15.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", - "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==" + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", + "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==" }, "@babel/helper-validator-option": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", - "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", + "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", "dev": true }, "@babel/helper-wrap-function": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.5.tgz", - "integrity": "sha512-2J2pmLBqUqVdJw78U0KPNdeE2qeuIyKoG4mKV7wAq3mc4jJG282UgjZw4ZYDnqiWQuS3Y3IYdF/AQ6CpyBV3VA==", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz", + "integrity": "sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.16.0", - "@babel/template": "^7.16.0", - "@babel/traverse": "^7.16.5", - "@babel/types": "^7.16.0" + "@babel/helper-function-name": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.16.8", + "@babel/types": "^7.16.8" } }, "@babel/helpers": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.5.tgz", - "integrity": "sha512-TLgi6Lh71vvMZGEkFuIxzaPsyeYCHQ5jJOOX1f0xXn0uciFuE8cEk0wyBquMcCxBXZ5BJhE2aUB7pnWTD150Tw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.7.tgz", + "integrity": "sha512-9ZDoqtfY7AuEOt3cxchfii6C7GDyyMBffktR5B2jvWv8u2+efwvpnVKXMWzNehqy68tKgAfSwfdw/lWpthS2bw==", "dev": true, "requires": { - "@babel/template": "^7.16.0", - "@babel/traverse": "^7.16.5", - "@babel/types": "^7.16.0" + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.16.7", + "@babel/types": "^7.16.7" } }, "@babel/highlight": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", - "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz", + "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==", "requires": { - "@babel/helper-validator-identifier": "^7.15.7", + "@babel/helper-validator-identifier": "^7.16.7", "chalk": "^2.0.0", "js-tokens": "^4.0.0" } }, "@babel/parser": { - "version": "7.16.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.6.tgz", - "integrity": "sha512-Gr86ujcNuPDnNOY8mi383Hvi8IYrJVJYuf3XcuBM/Dgd+bINn/7tHqsj+tKkoreMbmGsFLsltI/JJd8fOFWGDQ==", + "version": "7.16.12", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.12.tgz", + "integrity": "sha512-VfaV15po8RiZssrkPweyvbGVSe4x2y+aciFCgn0n0/SJMR22cwofRV1mtnJQYcSB1wUTaA/X1LnA3es66MCO5A==", "dev": true }, "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.16.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.2.tgz", - "integrity": "sha512-h37CvpLSf8gb2lIJ2CgC3t+EjFbi0t8qS7LCS1xcJIlEXE4czlofwaW7W1HA8zpgOCzI9C1nmoqNR1zWkk0pQg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7.tgz", + "integrity": "sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.0.tgz", - "integrity": "sha512-4tcFwwicpWTrpl9qjf7UsoosaArgImF85AxqCRZlgc3IQDvkUHjJpruXAL58Wmj+T6fypWTC/BakfEkwIL/pwA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz", + "integrity": "sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", - "@babel/plugin-proposal-optional-chaining": "^7.16.0" + "@babel/plugin-proposal-optional-chaining": "^7.16.7" } }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.5.tgz", - "integrity": "sha512-C/FX+3HNLV6sz7AqbTQqEo1L9/kfrKjxcVtgyBCmvIgOjvuBVUWooDoi7trsLxOzCEo5FccjRvKHkfDsJFZlfA==", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz", + "integrity": "sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5", - "@babel/helper-remap-async-to-generator": "^7.16.5", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-remap-async-to-generator": "^7.16.8", "@babel/plugin-syntax-async-generators": "^7.8.4" } }, "@babel/plugin-proposal-class-properties": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.5.tgz", - "integrity": "sha512-pJD3HjgRv83s5dv1sTnDbZOaTjghKEz8KUn1Kbh2eAIRhGuyQ1XSeI4xVXU3UlIEVA3DAyIdxqT1eRn7Wcn55A==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz", + "integrity": "sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.16.5", - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-proposal-class-static-block": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.5.tgz", - "integrity": "sha512-EEFzuLZcm/rNJ8Q5krK+FRKdVkd6FjfzT9tuSZql9sQn64K0hHA2KLJ0DqVot9/iV6+SsuadC5yI39zWnm+nmQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.7.tgz", + "integrity": "sha512-dgqJJrcZoG/4CkMopzhPJjGxsIe9A8RlkQLnL/Vhhx8AA9ZuaRwGSlscSh42hazc7WSrya/IK7mTeoF0DP9tEw==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.16.5", - "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-class-static-block": "^7.14.5" } }, "@babel/plugin-proposal-dynamic-import": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.5.tgz", - "integrity": "sha512-P05/SJZTTvHz79LNYTF8ff5xXge0kk5sIIWAypcWgX4BTRUgyHc8wRxJ/Hk+mU0KXldgOOslKaeqnhthcDJCJQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz", + "integrity": "sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-dynamic-import": "^7.8.3" } }, "@babel/plugin-proposal-export-namespace-from": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.5.tgz", - "integrity": "sha512-i+sltzEShH1vsVydvNaTRsgvq2vZsfyrd7K7vPLUU/KgS0D5yZMe6uipM0+izminnkKrEfdUnz7CxMRb6oHZWw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz", + "integrity": "sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" } }, "@babel/plugin-proposal-json-strings": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.5.tgz", - "integrity": "sha512-QQJueTFa0y9E4qHANqIvMsuxM/qcLQmKttBACtPCQzGUEizsXDACGonlPiSwynHfOa3vNw0FPMVvQzbuXwh4SQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz", + "integrity": "sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-json-strings": "^7.8.3" } }, "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.5.tgz", - "integrity": "sha512-xqibl7ISO2vjuQM+MzR3rkd0zfNWltk7n9QhaD8ghMmMceVguYrNDt7MikRyj4J4v3QehpnrU8RYLnC7z/gZLA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz", + "integrity": "sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" } }, "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.5.tgz", - "integrity": "sha512-YwMsTp/oOviSBhrjwi0vzCUycseCYwoXnLiXIL3YNjHSMBHicGTz7GjVU/IGgz4DtOEXBdCNG72pvCX22ehfqg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz", + "integrity": "sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" } }, "@babel/plugin-proposal-numeric-separator": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.5.tgz", - "integrity": "sha512-DvB9l/TcsCRvsIV9v4jxR/jVP45cslTVC0PMVHvaJhhNuhn2Y1SOhCSFlPK777qLB5wb8rVDaNoqMTyOqtY5Iw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz", + "integrity": "sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-numeric-separator": "^7.10.4" } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.5.tgz", - "integrity": "sha512-UEd6KpChoyPhCoE840KRHOlGhEZFutdPDMGj+0I56yuTTOaT51GzmnEl/0uT41fB/vD2nT+Pci2KjezyE3HmUw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.7.tgz", + "integrity": "sha512-3O0Y4+dw94HA86qSg9IHfyPktgR7q3gpNVAeiKQd+8jBKFaU5NQS1Yatgo4wY+UFNuLjvxcSmzcsHqrhgTyBUA==", "dev": true, "requires": { "@babel/compat-data": "^7.16.4", - "@babel/helper-compilation-targets": "^7.16.3", - "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.16.5" + "@babel/plugin-transform-parameters": "^7.16.7" } }, "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.5.tgz", - "integrity": "sha512-ihCMxY1Iljmx4bWy/PIMJGXN4NS4oUj1MKynwO07kiKms23pNvIn1DMB92DNB2R0EA882sw0VXIelYGdtF7xEQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz", + "integrity": "sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" } }, "@babel/plugin-proposal-optional-chaining": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.5.tgz", - "integrity": "sha512-kzdHgnaXRonttiTfKYnSVafbWngPPr2qKw9BWYBESl91W54e+9R5pP70LtWxV56g0f05f/SQrwHYkfvbwcdQ/A==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz", + "integrity": "sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", "@babel/plugin-syntax-optional-chaining": "^7.8.3" } }, "@babel/plugin-proposal-private-methods": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.5.tgz", - "integrity": "sha512-+yFMO4BGT3sgzXo+lrq7orX5mAZt57DwUK6seqII6AcJnJOIhBJ8pzKH47/ql/d426uQ7YhN8DpUFirQzqYSUA==", + "version": "7.16.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz", + "integrity": "sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.16.5", - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-create-class-features-plugin": "^7.16.10", + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-proposal-private-property-in-object": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.5.tgz", - "integrity": "sha512-+YGh5Wbw0NH3y/E5YMu6ci5qTDmAEVNoZ3I54aB6nVEOZ5BQ7QJlwKq5pYVucQilMByGn/bvX0af+uNaPRCabA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz", + "integrity": "sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.16.0", - "@babel/helper-create-class-features-plugin": "^7.16.5", - "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-private-property-in-object": "^7.14.5" } }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.5.tgz", - "integrity": "sha512-s5sKtlKQyFSatt781HQwv1hoM5BQ9qRH30r+dK56OLDsHmV74mzwJNX7R1yMuE7VZKG5O6q/gmOGSAO6ikTudg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz", + "integrity": "sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.16.0", - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-syntax-async-generators": { @@ -6995,12 +7004,12 @@ } }, "@babel/plugin-syntax-jsx": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.5.tgz", - "integrity": "sha512-42OGssv9NPk4QHKVgIHlzeLgPOW5rGgfV5jzG90AhcXXIv6hu/eqj63w4VgvRxdvZY3AlYeDgPiSJ3BqAd1Y6Q==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.7.tgz", + "integrity": "sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-syntax-logical-assignment-operators": { @@ -7076,406 +7085,407 @@ } }, "@babel/plugin-syntax-typescript": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.0.tgz", - "integrity": "sha512-Xv6mEXqVdaqCBfJFyeab0fH2DnUoMsDmhamxsSi4j8nLd4Vtw213WMJr55xxqipC/YVWyPY3K0blJncPYji+dQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.7.tgz", + "integrity": "sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.5.tgz", - "integrity": "sha512-8bTHiiZyMOyfZFULjsCnYOWG059FVMes0iljEHSfARhNgFfpsqE92OrCffv3veSw9rwMkYcFe9bj0ZoXU2IGtQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz", + "integrity": "sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.5.tgz", - "integrity": "sha512-TMXgfioJnkXU+XRoj7P2ED7rUm5jbnDWwlCuFVTpQboMfbSya5WrmubNBAMlk7KXvywpo8rd8WuYZkis1o2H8w==", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz", + "integrity": "sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.16.0", - "@babel/helper-plugin-utils": "^7.16.5", - "@babel/helper-remap-async-to-generator": "^7.16.5" + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-remap-async-to-generator": "^7.16.8" } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.5.tgz", - "integrity": "sha512-BxmIyKLjUGksJ99+hJyL/HIxLIGnLKtw772zYDER7UuycDZ+Xvzs98ZQw6NGgM2ss4/hlFAaGiZmMNKvValEjw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz", + "integrity": "sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.5.tgz", - "integrity": "sha512-JxjSPNZSiOtmxjX7PBRBeRJTUKTyJ607YUYeT0QJCNdsedOe+/rXITjP08eG8xUpsLfPirgzdCFN+h0w6RI+pQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz", + "integrity": "sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-classes": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.5.tgz", - "integrity": "sha512-DzJ1vYf/7TaCYy57J3SJ9rV+JEuvmlnvvyvYKFbk5u46oQbBvuB9/0w+YsVsxkOv8zVWKpDmUoj4T5ILHoXevA==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.16.0", - "@babel/helper-environment-visitor": "^7.16.5", - "@babel/helper-function-name": "^7.16.0", - "@babel/helper-optimise-call-expression": "^7.16.0", - "@babel/helper-plugin-utils": "^7.16.5", - "@babel/helper-replace-supers": "^7.16.5", - "@babel/helper-split-export-declaration": "^7.16.0", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz", + "integrity": "sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", "globals": "^11.1.0" } }, "@babel/plugin-transform-computed-properties": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.5.tgz", - "integrity": "sha512-n1+O7xtU5lSLraRzX88CNcpl7vtGdPakKzww74bVwpAIRgz9JVLJJpOLb0uYqcOaXVM0TL6X0RVeIJGD2CnCkg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz", + "integrity": "sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-destructuring": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.5.tgz", - "integrity": "sha512-GuRVAsjq+c9YPK6NeTkRLWyQskDC099XkBSVO+6QzbnOnH2d/4mBVXYStaPrZD3dFRfg00I6BFJ9Atsjfs8mlg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.7.tgz", + "integrity": "sha512-VqAwhTHBnu5xBVDCvrvqJbtLUa++qZaWC0Fgr2mqokBlulZARGyIvZDoqbPlPaKImQ9dKAcCzbv+ul//uqu70A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.5.tgz", - "integrity": "sha512-iQiEMt8Q4/5aRGHpGVK2Zc7a6mx7qEAO7qehgSug3SDImnuMzgmm/wtJALXaz25zUj1PmnNHtShjFgk4PDx4nw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz", + "integrity": "sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.16.0", - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.5.tgz", - "integrity": "sha512-81tijpDg2a6I1Yhj4aWY1l3O1J4Cg/Pd7LfvuaH2VVInAkXtzibz9+zSPdUM1WvuUi128ksstAP0hM5w48vQgg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz", + "integrity": "sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.5.tgz", - "integrity": "sha512-12rba2HwemQPa7BLIKCzm1pT2/RuQHtSFHdNl41cFiC6oi4tcrp7gjB07pxQvFpcADojQywSjblQth6gJyE6CA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz", + "integrity": "sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==", "dev": true, "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.5", - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-for-of": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.5.tgz", - "integrity": "sha512-+DpCAJFPAvViR17PIMi9x2AE34dll5wNlXO43wagAX2YcRGgEVHCNFC4azG85b4YyyFarvkc/iD5NPrz4Oneqw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz", + "integrity": "sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-function-name": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.5.tgz", - "integrity": "sha512-Fuec/KPSpVLbGo6z1RPw4EE1X+z9gZk1uQmnYy7v4xr4TO9p41v1AoUuXEtyqAI7H+xNJYSICzRqZBhDEkd3kQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz", + "integrity": "sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.16.0", - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-literals": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.5.tgz", - "integrity": "sha512-B1j9C/IfvshnPcklsc93AVLTrNVa69iSqztylZH6qnmiAsDDOmmjEYqOm3Ts2lGSgTSywnBNiqC949VdD0/gfw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz", + "integrity": "sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-member-expression-literals": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.5.tgz", - "integrity": "sha512-d57i3vPHWgIde/9Y8W/xSFUndhvhZN5Wu2TjRrN1MVz5KzdUihKnfDVlfP1U7mS5DNj/WHHhaE4/tTi4hIyHwQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz", + "integrity": "sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.5.tgz", - "integrity": "sha512-oHI15S/hdJuSCfnwIz+4lm6wu/wBn7oJ8+QrkzPPwSFGXk8kgdI/AIKcbR/XnD1nQVMg/i6eNaXpszbGuwYDRQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz", + "integrity": "sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.16.5", - "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.5.tgz", - "integrity": "sha512-ABhUkxvoQyqhCWyb8xXtfwqNMJD7tx+irIRnUh6lmyFud7Jln1WzONXKlax1fg/ey178EXbs4bSGNd6PngO+SQ==", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.8.tgz", + "integrity": "sha512-oflKPvsLT2+uKQopesJt3ApiaIS2HW+hzHFcwRNtyDGieAeC/dIHZX8buJQ2J2X1rxGPy4eRcUijm3qcSPjYcA==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.16.5", - "@babel/helper-plugin-utils": "^7.16.5", - "@babel/helper-simple-access": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-simple-access": "^7.16.7", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.5.tgz", - "integrity": "sha512-53gmLdScNN28XpjEVIm7LbWnD/b/TpbwKbLk6KV4KqC9WyU6rq1jnNmVG6UgAdQZVVGZVoik3DqHNxk4/EvrjA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.7.tgz", + "integrity": "sha512-DuK5E3k+QQmnOqBR9UkusByy5WZWGRxfzV529s9nPra1GE7olmxfqO2FHobEOYSPIjPBTr4p66YDcjQnt8cBmw==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.16.0", - "@babel/helper-module-transforms": "^7.16.5", - "@babel/helper-plugin-utils": "^7.16.5", - "@babel/helper-validator-identifier": "^7.15.7", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-umd": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.5.tgz", - "integrity": "sha512-qTFnpxHMoenNHkS3VoWRdwrcJ3FhX567GvDA3hRZKF0Dj8Fmg0UzySZp3AP2mShl/bzcywb/UWAMQIjA1bhXvw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz", + "integrity": "sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.16.5", - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.5.tgz", - "integrity": "sha512-/wqGDgvFUeKELW6ex6QB7dLVRkd5ehjw34tpXu1nhKC0sFfmaLabIswnpf8JgDyV2NeDmZiwoOb0rAmxciNfjA==", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.8.tgz", + "integrity": "sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.16.0" + "@babel/helper-create-regexp-features-plugin": "^7.16.7" } }, "@babel/plugin-transform-new-target": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.5.tgz", - "integrity": "sha512-ZaIrnXF08ZC8jnKR4/5g7YakGVL6go6V9ql6Jl3ecO8PQaQqFE74CuM384kezju7Z9nGCCA20BqZaR1tJ/WvHg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz", + "integrity": "sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-object-super": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.5.tgz", - "integrity": "sha512-tded+yZEXuxt9Jdtkc1RraW1zMF/GalVxaVVxh41IYwirdRgyAxxxCKZ9XB7LxZqmsjfjALxupNE1MIz9KH+Zg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz", + "integrity": "sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5", - "@babel/helper-replace-supers": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7" } }, "@babel/plugin-transform-parameters": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.5.tgz", - "integrity": "sha512-B3O6AL5oPop1jAVg8CV+haeUte9oFuY85zu0jwnRNZZi3tVAbJriu5tag/oaO2kGaQM/7q7aGPBlTI5/sr9enA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz", + "integrity": "sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-property-literals": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.5.tgz", - "integrity": "sha512-+IRcVW71VdF9pEH/2R/Apab4a19LVvdVsr/gEeotH00vSDVlKD+XgfSIw+cgGWsjDB/ziqGv/pGoQZBIiQVXHg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz", + "integrity": "sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-react-display-name": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.16.5.tgz", - "integrity": "sha512-dHYCOnzSsXFz8UcdNQIHGvg94qPL/teF7CCiCEMRxmA1G2p5Mq4JnKVowCDxYfiQ9D7RstaAp9kwaSI+sXbnhw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.16.7.tgz", + "integrity": "sha512-qgIg8BcZgd0G/Cz916D5+9kqX0c7nPZyXaP8R2tLNN5tkyIZdG5fEwBrxwplzSnjC1jvQmyMNVwUCZPcbGY7Pg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-react-jsx": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.16.5.tgz", - "integrity": "sha512-+arLIz1d7kmwX0fKxTxbnoeG85ONSnLpvdODa4P3pc1sS7CV1hfmtYWufkW/oYsPnkDrEeQFxhUWcFnrXW7jQQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.16.7.tgz", + "integrity": "sha512-8D16ye66fxiE8m890w0BpPpngG9o9OVBBy0gH2E+2AR7qMR2ZpTYJEqLxAsoroenMId0p/wMW+Blc0meDgu0Ag==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.16.0", - "@babel/helper-module-imports": "^7.16.0", - "@babel/helper-plugin-utils": "^7.16.5", - "@babel/plugin-syntax-jsx": "^7.16.5", - "@babel/types": "^7.16.0" + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-jsx": "^7.16.7", + "@babel/types": "^7.16.7" } }, "@babel/plugin-transform-react-jsx-development": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.16.5.tgz", - "integrity": "sha512-uQSLacMZSGLCxOw20dzo1dmLlKkd+DsayoV54q3MHXhbqgPzoiGerZQgNPl/Ro8/OcXV2ugfnkx+rxdS0sN5Uw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.16.7.tgz", + "integrity": "sha512-RMvQWvpla+xy6MlBpPlrKZCMRs2AGiHOGHY3xRwl0pEeim348dDyxeH4xBsMPbIMhujeq7ihE702eM2Ew0Wo+A==", "dev": true, "requires": { - "@babel/plugin-transform-react-jsx": "^7.16.5" + "@babel/plugin-transform-react-jsx": "^7.16.7" } }, "@babel/plugin-transform-react-pure-annotations": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.16.5.tgz", - "integrity": "sha512-0nYU30hCxnCVCbRjSy9ahlhWZ2Sn6khbY4FqR91W+2RbSqkWEbVu2gXh45EqNy4Bq7sRU+H4i0/6YKwOSzh16A==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.16.7.tgz", + "integrity": "sha512-hs71ToC97k3QWxswh2ElzMFABXHvGiJ01IB1TbYQDGeWRKWz/MPUTh5jGExdHvosYKpnJW5Pm3S4+TA3FyX+GA==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.16.0", - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-regenerator": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.5.tgz", - "integrity": "sha512-2z+it2eVWU8TtQQRauvGUqZwLy4+7rTfo6wO4npr+fvvN1SW30ZF3O/ZRCNmTuu4F5MIP8OJhXAhRV5QMJOuYg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.7.tgz", + "integrity": "sha512-mF7jOgGYCkSJagJ6XCujSQg+6xC1M77/03K2oBmVJWoFGNUtnVJO4WHKJk3dnPC8HCcj4xBQP1Egm8DWh3Pb3Q==", "dev": true, "requires": { "regenerator-transform": "^0.14.2" } }, "@babel/plugin-transform-reserved-words": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.5.tgz", - "integrity": "sha512-aIB16u8lNcf7drkhXJRoggOxSTUAuihTSTfAcpynowGJOZiGf+Yvi7RuTwFzVYSYPmWyARsPqUGoZWWWxLiknw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz", + "integrity": "sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.5.tgz", - "integrity": "sha512-ZbuWVcY+MAXJuuW7qDoCwoxDUNClfZxoo7/4swVbOW1s/qYLOMHlm9YRWMsxMFuLs44eXsv4op1vAaBaBaDMVg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz", + "integrity": "sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-spread": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.5.tgz", - "integrity": "sha512-5d6l/cnG7Lw4tGHEoga4xSkYp1euP7LAtrah1h1PgJ3JY7yNsjybsxQAnVK4JbtReZ/8z6ASVmd3QhYYKLaKZw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz", + "integrity": "sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.5.tgz", - "integrity": "sha512-usYsuO1ID2LXxzuUxifgWtJemP7wL2uZtyrTVM4PKqsmJycdS4U4mGovL5xXkfUheds10Dd2PjoQLXw6zCsCbg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz", + "integrity": "sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-template-literals": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.5.tgz", - "integrity": "sha512-gnyKy9RyFhkovex4BjKWL3BVYzUDG6zC0gba7VMLbQoDuqMfJ1SDXs8k/XK41Mmt1Hyp4qNAvGFb9hKzdCqBRQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz", + "integrity": "sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.5.tgz", - "integrity": "sha512-ldxCkW180qbrvyCVDzAUZqB0TAeF8W/vGJoRcaf75awm6By+PxfJKvuqVAnq8N9wz5Xa6mSpM19OfVKKVmGHSQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz", + "integrity": "sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-typescript": { - "version": "7.16.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.16.1.tgz", - "integrity": "sha512-NO4XoryBng06jjw/qWEU2LhcLJr1tWkhpMam/H4eas/CDKMX/b2/Ylb6EI256Y7+FVPCawwSM1rrJNOpDiz+Lg==", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.16.8.tgz", + "integrity": "sha512-bHdQ9k7YpBDO2d0NVfkj51DpQcvwIzIusJ7mEUaMlbZq3Kt/U47j24inXZHQ5MDiYpCs+oZiwnXyKedE8+q7AQ==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-typescript": "^7.16.0" + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-typescript": "^7.16.7" } }, "@babel/plugin-transform-unicode-escapes": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.5.tgz", - "integrity": "sha512-shiCBHTIIChGLdyojsKQjoAyB8MBwat25lKM7MJjbe1hE0bgIppD+LX9afr41lLHOhqceqeWl4FkLp+Bgn9o1Q==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz", + "integrity": "sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.5.tgz", - "integrity": "sha512-GTJ4IW012tiPEMMubd7sD07iU9O/LOo8Q/oU4xNhcaq0Xn8+6TcUQaHtC8YxySo1T+ErQ8RaWogIEeFhKGNPzw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz", + "integrity": "sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.16.0", - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/preset-env": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.5.tgz", - "integrity": "sha512-MiJJW5pwsktG61NDxpZ4oJ1CKxM1ncam9bzRtx9g40/WkLRkxFP6mhpkYV0/DxcciqoiHicx291+eUQrXb/SfQ==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.16.4", - "@babel/helper-compilation-targets": "^7.16.3", - "@babel/helper-plugin-utils": "^7.16.5", - "@babel/helper-validator-option": "^7.14.5", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.2", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.0", - "@babel/plugin-proposal-async-generator-functions": "^7.16.5", - "@babel/plugin-proposal-class-properties": "^7.16.5", - "@babel/plugin-proposal-class-static-block": "^7.16.5", - "@babel/plugin-proposal-dynamic-import": "^7.16.5", - "@babel/plugin-proposal-export-namespace-from": "^7.16.5", - "@babel/plugin-proposal-json-strings": "^7.16.5", - "@babel/plugin-proposal-logical-assignment-operators": "^7.16.5", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.5", - "@babel/plugin-proposal-numeric-separator": "^7.16.5", - "@babel/plugin-proposal-object-rest-spread": "^7.16.5", - "@babel/plugin-proposal-optional-catch-binding": "^7.16.5", - "@babel/plugin-proposal-optional-chaining": "^7.16.5", - "@babel/plugin-proposal-private-methods": "^7.16.5", - "@babel/plugin-proposal-private-property-in-object": "^7.16.5", - "@babel/plugin-proposal-unicode-property-regex": "^7.16.5", + "version": "7.16.11", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.11.tgz", + "integrity": "sha512-qcmWG8R7ZW6WBRPZK//y+E3Cli151B20W1Rv7ln27vuPaXU/8TKms6jFdiJtF7UDTxcrb7mZd88tAeK9LjdT8g==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.16.8", + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-option": "^7.16.7", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.7", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.7", + "@babel/plugin-proposal-async-generator-functions": "^7.16.8", + "@babel/plugin-proposal-class-properties": "^7.16.7", + "@babel/plugin-proposal-class-static-block": "^7.16.7", + "@babel/plugin-proposal-dynamic-import": "^7.16.7", + "@babel/plugin-proposal-export-namespace-from": "^7.16.7", + "@babel/plugin-proposal-json-strings": "^7.16.7", + "@babel/plugin-proposal-logical-assignment-operators": "^7.16.7", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.7", + "@babel/plugin-proposal-numeric-separator": "^7.16.7", + "@babel/plugin-proposal-object-rest-spread": "^7.16.7", + "@babel/plugin-proposal-optional-catch-binding": "^7.16.7", + "@babel/plugin-proposal-optional-chaining": "^7.16.7", + "@babel/plugin-proposal-private-methods": "^7.16.11", + "@babel/plugin-proposal-private-property-in-object": "^7.16.7", + "@babel/plugin-proposal-unicode-property-regex": "^7.16.7", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", "@babel/plugin-syntax-class-static-block": "^7.14.5", @@ -7490,44 +7500,44 @@ "@babel/plugin-syntax-optional-chaining": "^7.8.3", "@babel/plugin-syntax-private-property-in-object": "^7.14.5", "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-transform-arrow-functions": "^7.16.5", - "@babel/plugin-transform-async-to-generator": "^7.16.5", - "@babel/plugin-transform-block-scoped-functions": "^7.16.5", - "@babel/plugin-transform-block-scoping": "^7.16.5", - "@babel/plugin-transform-classes": "^7.16.5", - "@babel/plugin-transform-computed-properties": "^7.16.5", - "@babel/plugin-transform-destructuring": "^7.16.5", - "@babel/plugin-transform-dotall-regex": "^7.16.5", - "@babel/plugin-transform-duplicate-keys": "^7.16.5", - "@babel/plugin-transform-exponentiation-operator": "^7.16.5", - "@babel/plugin-transform-for-of": "^7.16.5", - "@babel/plugin-transform-function-name": "^7.16.5", - "@babel/plugin-transform-literals": "^7.16.5", - "@babel/plugin-transform-member-expression-literals": "^7.16.5", - "@babel/plugin-transform-modules-amd": "^7.16.5", - "@babel/plugin-transform-modules-commonjs": "^7.16.5", - "@babel/plugin-transform-modules-systemjs": "^7.16.5", - "@babel/plugin-transform-modules-umd": "^7.16.5", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.5", - "@babel/plugin-transform-new-target": "^7.16.5", - "@babel/plugin-transform-object-super": "^7.16.5", - "@babel/plugin-transform-parameters": "^7.16.5", - "@babel/plugin-transform-property-literals": "^7.16.5", - "@babel/plugin-transform-regenerator": "^7.16.5", - "@babel/plugin-transform-reserved-words": "^7.16.5", - "@babel/plugin-transform-shorthand-properties": "^7.16.5", - "@babel/plugin-transform-spread": "^7.16.5", - "@babel/plugin-transform-sticky-regex": "^7.16.5", - "@babel/plugin-transform-template-literals": "^7.16.5", - "@babel/plugin-transform-typeof-symbol": "^7.16.5", - "@babel/plugin-transform-unicode-escapes": "^7.16.5", - "@babel/plugin-transform-unicode-regex": "^7.16.5", + "@babel/plugin-transform-arrow-functions": "^7.16.7", + "@babel/plugin-transform-async-to-generator": "^7.16.8", + "@babel/plugin-transform-block-scoped-functions": "^7.16.7", + "@babel/plugin-transform-block-scoping": "^7.16.7", + "@babel/plugin-transform-classes": "^7.16.7", + "@babel/plugin-transform-computed-properties": "^7.16.7", + "@babel/plugin-transform-destructuring": "^7.16.7", + "@babel/plugin-transform-dotall-regex": "^7.16.7", + "@babel/plugin-transform-duplicate-keys": "^7.16.7", + "@babel/plugin-transform-exponentiation-operator": "^7.16.7", + "@babel/plugin-transform-for-of": "^7.16.7", + "@babel/plugin-transform-function-name": "^7.16.7", + "@babel/plugin-transform-literals": "^7.16.7", + "@babel/plugin-transform-member-expression-literals": "^7.16.7", + "@babel/plugin-transform-modules-amd": "^7.16.7", + "@babel/plugin-transform-modules-commonjs": "^7.16.8", + "@babel/plugin-transform-modules-systemjs": "^7.16.7", + "@babel/plugin-transform-modules-umd": "^7.16.7", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.8", + "@babel/plugin-transform-new-target": "^7.16.7", + "@babel/plugin-transform-object-super": "^7.16.7", + "@babel/plugin-transform-parameters": "^7.16.7", + "@babel/plugin-transform-property-literals": "^7.16.7", + "@babel/plugin-transform-regenerator": "^7.16.7", + "@babel/plugin-transform-reserved-words": "^7.16.7", + "@babel/plugin-transform-shorthand-properties": "^7.16.7", + "@babel/plugin-transform-spread": "^7.16.7", + "@babel/plugin-transform-sticky-regex": "^7.16.7", + "@babel/plugin-transform-template-literals": "^7.16.7", + "@babel/plugin-transform-typeof-symbol": "^7.16.7", + "@babel/plugin-transform-unicode-escapes": "^7.16.7", + "@babel/plugin-transform-unicode-regex": "^7.16.7", "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.16.0", + "@babel/types": "^7.16.8", "babel-plugin-polyfill-corejs2": "^0.3.0", - "babel-plugin-polyfill-corejs3": "^0.4.0", + "babel-plugin-polyfill-corejs3": "^0.5.0", "babel-plugin-polyfill-regenerator": "^0.3.0", - "core-js-compat": "^3.19.1", + "core-js-compat": "^3.20.2", "semver": "^6.3.0" } }, @@ -7545,75 +7555,75 @@ } }, "@babel/preset-react": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.16.5.tgz", - "integrity": "sha512-3kzUOQeaxY/2vhPDS7CX/KGEGu/1bOYGvdRDJ2U5yjEz5o5jmIeTPLoiQBPGjfhPascLuW5OlMiPzwOOuB6txg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.16.7.tgz", + "integrity": "sha512-fWpyI8UM/HE6DfPBzD8LnhQ/OcH8AgTaqcqP2nGOXEUV+VKBR5JRN9hCk9ai+zQQ57vtm9oWeXguBCPNUjytgA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5", - "@babel/helper-validator-option": "^7.14.5", - "@babel/plugin-transform-react-display-name": "^7.16.5", - "@babel/plugin-transform-react-jsx": "^7.16.5", - "@babel/plugin-transform-react-jsx-development": "^7.16.5", - "@babel/plugin-transform-react-pure-annotations": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-option": "^7.16.7", + "@babel/plugin-transform-react-display-name": "^7.16.7", + "@babel/plugin-transform-react-jsx": "^7.16.7", + "@babel/plugin-transform-react-jsx-development": "^7.16.7", + "@babel/plugin-transform-react-pure-annotations": "^7.16.7" } }, "@babel/preset-typescript": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.16.5.tgz", - "integrity": "sha512-lmAWRoJ9iOSvs3DqOndQpj8XqXkzaiQs50VG/zESiI9D3eoZhGriU675xNCr0UwvsuXrhMAGvyk1w+EVWF3u8Q==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.16.7.tgz", + "integrity": "sha512-WbVEmgXdIyvzB77AQjGBEyYPZx+8tTsO50XtfozQrkW8QB2rLJpH2lgx0TRw5EJrBxOZQ+wCcyPVQvS8tjEHpQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5", - "@babel/helper-validator-option": "^7.14.5", - "@babel/plugin-transform-typescript": "^7.16.1" + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-option": "^7.16.7", + "@babel/plugin-transform-typescript": "^7.16.7" } }, "@babel/runtime": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.5.tgz", - "integrity": "sha512-TXWihFIS3Pyv5hzR7j6ihmeLkZfrXGxAr5UfSl8CHf+6q/wpiYDkUau0czckpYG8QmnCIuPpdLtuA9VmuGGyMA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.7.tgz", + "integrity": "sha512-9E9FJowqAsytyOY6LG+1KuueckRL+aQW+mKvXRXnuFGyRAyepJPmEo9vgMfXUA6O9u3IeEdv9MAkppFcaQwogQ==", "dev": true, "requires": { "regenerator-runtime": "^0.13.4" } }, "@babel/template": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", - "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", + "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", "dev": true, "requires": { - "@babel/code-frame": "^7.16.0", - "@babel/parser": "^7.16.0", - "@babel/types": "^7.16.0" + "@babel/code-frame": "^7.16.7", + "@babel/parser": "^7.16.7", + "@babel/types": "^7.16.7" } }, "@babel/traverse": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.5.tgz", - "integrity": "sha512-FOCODAzqUMROikDYLYxl4nmwiLlu85rNqBML/A5hKRVXG2LV8d0iMqgPzdYTcIpjZEBB7D6UDU9vxRZiriASdQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.16.0", - "@babel/generator": "^7.16.5", - "@babel/helper-environment-visitor": "^7.16.5", - "@babel/helper-function-name": "^7.16.0", - "@babel/helper-hoist-variables": "^7.16.0", - "@babel/helper-split-export-declaration": "^7.16.0", - "@babel/parser": "^7.16.5", - "@babel/types": "^7.16.0", + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.10.tgz", + "integrity": "sha512-yzuaYXoRJBGMlBhsMJoUW7G1UmSb/eXr/JHYM/MsOJgavJibLwASijW7oXBdw3NQ6T0bW7Ty5P/VarOs9cHmqw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.16.8", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/parser": "^7.16.10", + "@babel/types": "^7.16.8", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", - "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.8.tgz", + "integrity": "sha512-smN2DQc5s4M7fntyjGtyIPbRJv6wW4rU/94fmYJ7PKQuZkC0qGMHXJbg6sNGt12JmVr4k5YaptI/XtiLJBnmIg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.15.7", + "@babel/helper-validator-identifier": "^7.16.7", "to-fast-properties": "^2.0.0" } }, @@ -7962,25 +7972,25 @@ } }, "@webpack-cli/configtest": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.1.0.tgz", - "integrity": "sha512-ttOkEkoalEHa7RaFYpM0ErK1xc4twg3Am9hfHhL7MVqlHebnkYd2wuI/ZqTDj0cVzZho6PdinY0phFZV3O0Mzg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.1.1.tgz", + "integrity": "sha512-1FBc1f9G4P/AxMqIgfZgeOTuRnwZMten8E7zap5zgpPInnCrP8D4Q81+4CWIch8i/Nf7nXjP0v6CjjbHOrXhKg==", "dev": true, "requires": {} }, "@webpack-cli/info": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.4.0.tgz", - "integrity": "sha512-F6b+Man0rwE4n0409FyAJHStYA5OIZERxmnUfLVwv0mc0V1wLad3V7jqRlMkgKBeAq07jUvglacNaa6g9lOpuw==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.4.1.tgz", + "integrity": "sha512-PKVGmazEq3oAo46Q63tpMr4HipI3OPfP7LiNOEJg963RMgT0rqheag28NCML0o3GIzA3DmxP1ZIAv9oTX1CUIA==", "dev": true, "requires": { "envinfo": "^7.7.3" } }, "@webpack-cli/serve": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.6.0.tgz", - "integrity": "sha512-ZkVeqEmRpBV2GHvjjUZqEai2PpUbuq8Bqd//vEYsp63J8WyexI8ppCqVS3Zs0QADf6aWuPdU+0XsPI647PVlQA==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.6.1.tgz", + "integrity": "sha512-gNGTiTrjEVQ0OcVnzsRSqTxaBSr+dmTfm+qJsCDluky8uhdLWep7Gcr62QsAKHTMxjCS/8nEITsmFAhfIx+QSw==", "dev": true, "requires": {} }, @@ -8109,13 +8119,13 @@ } }, "babel-plugin-polyfill-corejs3": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.4.0.tgz", - "integrity": "sha512-YxFreYwUfglYKdLUGvIF2nJEsGwj+RhWSX/ije3D2vQPOXuyMLMtg/cCGMDpOA7Nd+MwlNdnGODbd2EwUZPlsw==", + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.1.tgz", + "integrity": "sha512-TihqEe4sQcb/QcPJvxe94/9RZuLQuF1+To4WqQcRvc+3J3gLCPIPgDKzGLG6zmQLfH3nn25heRuDNkS2KR4I8A==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.0", - "core-js-compat": "^3.18.0" + "@babel/helper-define-polyfill-provider": "^0.3.1", + "core-js-compat": "^3.20.0" } }, "babel-plugin-polyfill-regenerator": { @@ -8173,13 +8183,13 @@ } }, "browserslist": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.18.1.tgz", - "integrity": "sha512-8ScCzdpPwR2wQh8IT82CA2VgDwjHyqMovPBZSNH54+tm4Jk2pCuv90gmAdH6J84OCRWi0b4gMe6O6XPXuJnjgQ==", + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.1.tgz", + "integrity": "sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001280", - "electron-to-chromium": "^1.3.896", + "caniuse-lite": "^1.0.30001286", + "electron-to-chromium": "^1.4.17", "escalade": "^3.1.1", "node-releases": "^2.0.1", "picocolors": "^1.0.0" @@ -8215,9 +8225,9 @@ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" }, "caniuse-lite": { - "version": "1.0.30001282", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001282.tgz", - "integrity": "sha512-YhF/hG6nqBEllymSIjLtR2iWDDnChvhnVJqp+vloyt2tEHFG1yBR+ac2B/rOw0qOK0m0lEXU2dv4E/sMk5P9Kg==", + "version": "1.0.30001304", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001304.tgz", + "integrity": "sha512-bdsfZd6K6ap87AGqSHJP/s1V+U6Z5lyrcbBu3ovbCCf8cSYpwTtGrCBObMpJqwxfTbLW6YTIdbb1jEeTelcpYQ==", "dev": true }, "chalk": { @@ -8317,12 +8327,12 @@ } }, "core-js-compat": { - "version": "3.19.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.19.1.tgz", - "integrity": "sha512-Q/VJ7jAF/y68+aUsQJ/afPOewdsGkDtcMb40J8MbuWKlK3Y+wtHq8bTHKPj2WKWLIqmS5JhHs4CzHtz6pT2W6g==", + "version": "3.20.3", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.20.3.tgz", + "integrity": "sha512-c8M5h0IkNZ+I92QhIpuSijOxGAcj3lgpsWdkCqmUTZNwidujF4r3pi6x1DCN+Vcs5qTS2XWWMfWSuCqyupX8gw==", "dev": true, "requires": { - "browserslist": "^4.17.6", + "browserslist": "^4.19.1", "semver": "7.0.0" }, "dependencies": { @@ -8457,9 +8467,9 @@ "integrity": "sha512-hYf+jZNNqJBD2GiMYb+5mqOIX4R4RRHXU3qWMWYN+rqcR2/YpRL2bUHr8C8fU+5DNvqYjJ8YvMGSLuVPWU1cNg==" }, "electron-to-chromium": { - "version": "1.3.904", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.904.tgz", - "integrity": "sha512-x5uZWXcVNYkTh4JubD7KSC1VMKz0vZwJUqVwY3ihsW0bst1BXDe494Uqbg3Y0fDGVjJqA8vEeGuvO5foyH2+qw==", + "version": "1.4.57", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.57.tgz", + "integrity": "sha512-FNC+P5K1n6pF+M0zIK+gFCoXcJhhzDViL3DRIGy2Fv5PohuSES1JHR7T+GlwxSxlzx4yYbsuzCZvHxcBSRCIOw==", "dev": true }, "emojis-list": { @@ -8830,9 +8840,9 @@ } }, "graceful-fs": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", - "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", + "version": "4.2.9", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", + "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==", "dev": true }, "graphiql": { @@ -9873,9 +9883,9 @@ "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" }, "markdown-it": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.0.tgz", - "integrity": "sha512-T345UZZ6ejQWTjG6PSEHplzNy5m4kF6zvUpHVDv8Snl/pEU0OxIK0jGg8YLVNwJvT8E0YJC7/2UvssJDk/wQCQ==", + "version": "12.3.2", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz", + "integrity": "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==", "requires": { "argparse": "^2.0.1", "entities": "~2.1.0", @@ -9964,9 +9974,9 @@ "dev": true }, "nanoid": { - "version": "3.1.30", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.30.tgz", - "integrity": "sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.2.0.tgz", + "integrity": "sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA==", "dev": true }, "neo-async": { @@ -9981,9 +9991,9 @@ "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==" }, "node-fetch": { - "version": "2.6.6", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.6.tgz", - "integrity": "sha512-Z8/6vRlTUChSdIgMa51jxQ4lrw/Jy5SOW10ObaA47/RElsAN2c5Pn8bTgFGWn/ibwzXTE8qwr1Yzx28vsecXEA==", + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", "requires": { "whatwg-url": "^5.0.0" } @@ -10254,9 +10264,9 @@ "dev": true }, "prop-types": { - "version": "15.8.0", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.0.tgz", - "integrity": "sha512-fDGekdaHh65eI3lMi5OnErU6a8Ighg2KjcjQxO7m8VHyWjcPyj5kiOgV1LQDOOOgVy3+5FgjXvdSSX7B8/5/4g==", + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", "requires": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", @@ -10786,9 +10796,9 @@ "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" }, "typescript": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.4.tgz", - "integrity": "sha512-VgYs2A2QIRuGphtzFV7aQJduJ2gyfTljngLzjpfW9FoYZF6xuw1W0vW9ghCKLfcWrCFxK81CSGRAvS1pn4fIUg==" + "version": "4.5.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.5.tgz", + "integrity": "sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==" }, "uc.micro": { "version": "1.0.6", @@ -10928,9 +10938,9 @@ "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" }, "webpack": { - "version": "5.65.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.65.0.tgz", - "integrity": "sha512-Q5or2o6EKs7+oKmJo7LaqZaMOlDWQse9Tm5l1WAfU/ujLGN5Pb0SqGeVkN/4bpPmEqEP5RnVhiqsOtWtUVwGRw==", + "version": "5.67.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.67.0.tgz", + "integrity": "sha512-LjFbfMh89xBDpUMgA1W9Ur6Rn/gnr2Cq1jjHFPo4v6a79/ypznSYbAyPgGhwsxBtMIaEmDD1oJoA7BEYw/Fbrw==", "dev": true, "requires": { "@types/eslint-scope": "^3.7.0", @@ -10947,7 +10957,7 @@ "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.4", + "graceful-fs": "^4.2.9", "json-parse-better-errors": "^1.0.2", "loader-runner": "^4.2.0", "mime-types": "^2.1.27", @@ -10956,19 +10966,19 @@ "tapable": "^2.1.1", "terser-webpack-plugin": "^5.1.3", "watchpack": "^2.3.1", - "webpack-sources": "^3.2.2" + "webpack-sources": "^3.2.3" } }, "webpack-cli": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.9.1.tgz", - "integrity": "sha512-JYRFVuyFpzDxMDB+v/nanUdQYcZtqFPGzmlW4s+UkPMFhSpfRNmf1z4AwYcHJVdvEFAM7FFCQdNTpsBYhDLusQ==", + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.9.2.tgz", + "integrity": "sha512-m3/AACnBBzK/kMTcxWHcZFPrw/eQuY4Df1TxvIWfWM2x7mRqBQCqKEd96oCUa9jkapLBaFfRce33eGDb4Pr7YQ==", "dev": true, "requires": { "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^1.1.0", - "@webpack-cli/info": "^1.4.0", - "@webpack-cli/serve": "^1.6.0", + "@webpack-cli/configtest": "^1.1.1", + "@webpack-cli/info": "^1.4.1", + "@webpack-cli/serve": "^1.6.1", "colorette": "^2.0.14", "commander": "^7.0.0", "execa": "^5.0.0", @@ -10998,9 +11008,9 @@ } }, "webpack-sources": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.2.tgz", - "integrity": "sha512-cp5qdmHnu5T8wRg2G3vZZHoJPN14aqQ89SyQ11NpGH5zEMDCclt49rzo+MaRazk7/UeILhAI+/sEtcM+7Fr0nw==", + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", "dev": true }, "whatwg-url": { diff --git a/src/OrchardCore.Modules/OrchardCore.Apis.GraphQL/package.json b/src/OrchardCore.Modules/OrchardCore.Apis.GraphQL/package.json index d36f2b91832..065b1140fc1 100644 --- a/src/OrchardCore.Modules/OrchardCore.Apis.GraphQL/package.json +++ b/src/OrchardCore.Modules/OrchardCore.Apis.GraphQL/package.json @@ -12,20 +12,20 @@ "react-dom": "^16.8.0" }, "devDependencies": { - "@babel/cli": "^7.16.0", - "@babel/core": "^7.16.5", - "@babel/preset-env": "^7.16.5", - "@babel/preset-react": "^7.16.5", - "@babel/preset-typescript": "^7.16.5", + "@babel/cli": "^7.16.8", + "@babel/core": "^7.16.12", + "@babel/preset-env": "^7.16.11", + "@babel/preset-react": "^7.16.7", + "@babel/preset-typescript": "^7.16.7", "assert": "^2.0.0", "css-loader": "^6.5.1", "null-loader": "^4.0.1", - "prop-types": "15.8.0", + "prop-types": "15.8.1", "style-loader": "^3.3.1", "ts-loader": "^9.2.6", - "typescript": "^4.5.4", - "webpack": "^5.65.0", - "webpack-cli": "^4.9.1" + "typescript": "^4.5.5", + "webpack": "^5.67.0", + "webpack-cli": "^4.9.2" }, "scripts": { "build": "webpack --mode production" diff --git a/src/OrchardCore.Modules/OrchardCore.AuditTrail/package-lock.json b/src/OrchardCore.Modules/OrchardCore.AuditTrail/package-lock.json index f011ffefa44..5b734dcd05d 100644 --- a/src/OrchardCore.Modules/OrchardCore.AuditTrail/package-lock.json +++ b/src/OrchardCore.Modules/OrchardCore.AuditTrail/package-lock.json @@ -16,29 +16,29 @@ "react-dom": "^16.0.0" }, "devDependencies": { - "@babel/cli": "^7.16.0", - "@babel/core": "^7.16.5", - "@babel/preset-env": "^7.16.5", - "@babel/preset-react": "^7.16.5", - "@babel/preset-typescript": "^7.16.5", + "@babel/cli": "^7.16.8", + "@babel/core": "^7.16.12", + "@babel/preset-env": "^7.16.11", + "@babel/preset-react": "^7.16.7", + "@babel/preset-typescript": "^7.16.7", "@types/react": "^17.0.38", "@types/react-dom": "^17.0.11", "assert": "^2.0.0", "css-loader": "^6.5.1", "null-loader": "^4.0.1", - "prop-types": "15.8.0", + "prop-types": "15.8.1", "sass-loader": "^12.4.0", "style-loader": "^3.3.1", "ts-loader": "^9.2.6", - "typescript": "^4.5.4", - "webpack": "^5.65.0", - "webpack-cli": "^4.9.1" + "typescript": "^4.5.5", + "webpack": "^5.67.0", + "webpack-cli": "^4.9.2" } }, "node_modules/@babel/cli": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.16.0.tgz", - "integrity": "sha512-WLrM42vKX/4atIoQB+eb0ovUof53UUvecb4qGjU2PDDWRiZr50ZpiV8NpcLo7iSxeGYrRG0Mqembsa+UrTAV6Q==", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.16.8.tgz", + "integrity": "sha512-FTKBbxyk5TclXOGmwYyqelqP5IF6hMxaeJskd85jbR5jBfYlwqgwAbJwnixi1ZBbTqKfFuAA95mdmUFeSRwyJA==", "dev": true, "dependencies": { "commander": "^4.0.1", @@ -65,40 +65,40 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", - "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", + "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", "dependencies": { - "@babel/highlight": "^7.16.0" + "@babel/highlight": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.16.4", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.4.tgz", - "integrity": "sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q==", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.8.tgz", + "integrity": "sha512-m7OkX0IdKLKPpBlJtF561YJal5y/jyI5fNfWbPxh2D/nbzzGI4qRyrD8xO2jB24u7l+5I2a43scCG2IrfjC50Q==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.5.tgz", - "integrity": "sha512-wUcenlLzuWMZ9Zt8S0KmFwGlH6QKRh3vsm/dhDA3CHkiTA45YuG1XkHRcNRl73EFPXDp/d5kVOU0/y7x2w6OaQ==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.16.0", - "@babel/generator": "^7.16.5", - "@babel/helper-compilation-targets": "^7.16.3", - "@babel/helper-module-transforms": "^7.16.5", - "@babel/helpers": "^7.16.5", - "@babel/parser": "^7.16.5", - "@babel/template": "^7.16.0", - "@babel/traverse": "^7.16.5", - "@babel/types": "^7.16.0", + "version": "7.16.12", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.12.tgz", + "integrity": "sha512-dK5PtG1uiN2ikk++5OzSYsitZKny4wOCD0nrO4TqnW4BVBTQ2NGS3NgilvT/TEyxTST7LNyWV/T4tXDoD3fOgg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.16.8", + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helpers": "^7.16.7", + "@babel/parser": "^7.16.12", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.16.10", + "@babel/types": "^7.16.8", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -115,12 +115,12 @@ } }, "node_modules/@babel/generator": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.5.tgz", - "integrity": "sha512-kIvCdjZqcdKqoDbVVdt5R99icaRtrtYhYK/xux5qiWCBmfdvEYMFZ68QCrpE5cbFM1JsuArUNs1ZkuKtTtUcZA==", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.8.tgz", + "integrity": "sha512-1ojZwE9+lOXzcWdWmO6TbUzDfqLD39CmEhN8+2cX9XkDo5yW1OpgfejfliysR2AWLpMamTiOiAp/mtroaymhpw==", "dev": true, "dependencies": { - "@babel/types": "^7.16.0", + "@babel/types": "^7.16.8", "jsesc": "^2.5.1", "source-map": "^0.5.0" }, @@ -129,38 +129,38 @@ } }, "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.0.tgz", - "integrity": "sha512-ItmYF9vR4zA8cByDocY05o0LGUkp1zhbTQOH1NFyl5xXEqlTJQCEJjieriw+aFpxo16swMxUnUiKS7a/r4vtHg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", + "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", "dev": true, "dependencies": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.5.tgz", - "integrity": "sha512-3JEA9G5dmmnIWdzaT9d0NmFRgYnWUThLsDaL7982H0XqqWr56lRrsmwheXFMjR+TMl7QMBb6mzy9kvgr1lRLUA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz", + "integrity": "sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA==", "dev": true, "dependencies": { - "@babel/helper-explode-assignable-expression": "^7.16.0", - "@babel/types": "^7.16.0" + "@babel/helper-explode-assignable-expression": "^7.16.7", + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.16.3", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz", - "integrity": "sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz", + "integrity": "sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.16.0", - "@babel/helper-validator-option": "^7.14.5", + "@babel/compat-data": "^7.16.4", + "@babel/helper-validator-option": "^7.16.7", "browserslist": "^4.17.5", "semver": "^6.3.0" }, @@ -172,18 +172,18 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.5.tgz", - "integrity": "sha512-NEohnYA7mkB8L5JhU7BLwcBdU3j83IziR9aseMueWGeAjblbul3zzb8UvJ3a1zuBiqCMObzCJHFqKIQE6hTVmg==", + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.10.tgz", + "integrity": "sha512-wDeej0pu3WN/ffTxMNCPW5UCiOav8IcLRxSIyp/9+IF2xJUM9h/OYjg0IJLHaL6F8oU8kqMz9nc1vryXhMsgXg==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.0", - "@babel/helper-environment-visitor": "^7.16.5", - "@babel/helper-function-name": "^7.16.0", - "@babel/helper-member-expression-to-functions": "^7.16.5", - "@babel/helper-optimise-call-expression": "^7.16.0", - "@babel/helper-replace-supers": "^7.16.5", - "@babel/helper-split-export-declaration": "^7.16.0" + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-member-expression-to-functions": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -193,12 +193,12 @@ } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.0.tgz", - "integrity": "sha512-3DyG0zAFAZKcOp7aVr33ddwkxJ0Z0Jr5V99y3I690eYLpukJsJvAbzTy1ewoCqsML8SbIrjH14Jc/nSQ4TvNPA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.7.tgz", + "integrity": "sha512-fk5A6ymfp+O5+p2yCkXAu5Kyj6v0xh0RBeNcAkYUMDvvAAoxvSKXn+Jb37t/yWFiQVDFK1ELpUTD8/aLhCPu+g==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-annotate-as-pure": "^7.16.7", "regexpu-core": "^4.7.1" }, "engines": { @@ -209,9 +209,9 @@ } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.0.tgz", - "integrity": "sha512-7hfT8lUljl/tM3h+izTX/pO3W3frz2ok6Pk+gzys8iJqDfZrZy2pXjRTZAvG2YmfHun1X4q8/UZRLatMfqc5Tg==", + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz", + "integrity": "sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==", "dev": true, "dependencies": { "@babel/helper-compilation-targets": "^7.13.0", @@ -228,167 +228,167 @@ } }, "node_modules/@babel/helper-environment-visitor": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.5.tgz", - "integrity": "sha512-ODQyc5AnxmZWm/R2W7fzhamOk1ey8gSguo5SGvF0zcB3uUzRpTRmM/jmLSm9bDMyPlvbyJ+PwPEK0BWIoZ9wjg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", + "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", "dev": true, "dependencies": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-explode-assignable-expression": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.0.tgz", - "integrity": "sha512-Hk2SLxC9ZbcOhLpg/yMznzJ11W++lg5GMbxt1ev6TXUiJB0N42KPC+7w8a+eWGuqDnUYuwStJoZHM7RgmIOaGQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz", + "integrity": "sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ==", "dev": true, "dependencies": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-function-name": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz", - "integrity": "sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz", + "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==", "dev": true, "dependencies": { - "@babel/helper-get-function-arity": "^7.16.0", - "@babel/template": "^7.16.0", - "@babel/types": "^7.16.0" + "@babel/helper-get-function-arity": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-get-function-arity": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz", - "integrity": "sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz", + "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==", "dev": true, "dependencies": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-hoist-variables": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz", - "integrity": "sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", + "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", "dev": true, "dependencies": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.5.tgz", - "integrity": "sha512-7fecSXq7ZrLE+TWshbGT+HyCLkxloWNhTbU2QM1NTI/tDqyf0oZiMcEfYtDuUDCo528EOlt39G1rftea4bRZIw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.7.tgz", + "integrity": "sha512-VtJ/65tYiU/6AbMTDwyoXGPKHgTsfRarivm+YbB5uAzKUyuPjgZSgAFeG87FCigc7KNHu2Pegh1XIT3lXjvz3Q==", "dev": true, "dependencies": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz", - "integrity": "sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", + "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", "dependencies": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.5.tgz", - "integrity": "sha512-CkvMxgV4ZyyioElFwcuWnDCcNIeyqTkCm9BxXZi73RR1ozqlpboqsbGUNvRTflgZtFbbJ1v5Emvm+lkjMYY/LQ==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.16.5", - "@babel/helper-module-imports": "^7.16.0", - "@babel/helper-simple-access": "^7.16.0", - "@babel/helper-split-export-declaration": "^7.16.0", - "@babel/helper-validator-identifier": "^7.15.7", - "@babel/template": "^7.16.0", - "@babel/traverse": "^7.16.5", - "@babel/types": "^7.16.0" + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.7.tgz", + "integrity": "sha512-gaqtLDxJEFCeQbYp9aLAefjhkKdjKcdh6DB7jniIGU3Pz52WAmP268zK0VgPz9hUNkMSYeH976K2/Y6yPadpng==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-simple-access": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.16.7", + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz", - "integrity": "sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz", + "integrity": "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==", "dev": true, "dependencies": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.5.tgz", - "integrity": "sha512-59KHWHXxVA9K4HNF4sbHCf+eJeFe0Te/ZFGqBT4OjXhrwvA04sGfaEGsVTdsjoszq0YTP49RC9UKe5g8uN2RwQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.5.tgz", - "integrity": "sha512-X+aAJldyxrOmN9v3FKp+Hu1NO69VWgYgDGq6YDykwRPzxs5f2N+X988CBXS7EQahDU+Vpet5QYMqLk+nsp+Qxw==", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz", + "integrity": "sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.0", - "@babel/helper-wrap-function": "^7.16.5", - "@babel/types": "^7.16.0" + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-wrap-function": "^7.16.8", + "@babel/types": "^7.16.8" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.5.tgz", - "integrity": "sha512-ao3seGVa/FZCMCCNDuBcqnBFSbdr8N2EW35mzojx3TwfIbdPmNK+JV6+2d5bR0Z71W5ocLnQp9en/cTF7pBJiQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz", + "integrity": "sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.16.5", - "@babel/helper-member-expression-to-functions": "^7.16.5", - "@babel/helper-optimise-call-expression": "^7.16.0", - "@babel/traverse": "^7.16.5", - "@babel/types": "^7.16.0" + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-member-expression-to-functions": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/traverse": "^7.16.7", + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-simple-access": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz", - "integrity": "sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz", + "integrity": "sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g==", "dev": true, "dependencies": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -407,69 +407,69 @@ } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz", - "integrity": "sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", + "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", "dev": true, "dependencies": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.15.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", - "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", + "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", - "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", + "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.5.tgz", - "integrity": "sha512-2J2pmLBqUqVdJw78U0KPNdeE2qeuIyKoG4mKV7wAq3mc4jJG282UgjZw4ZYDnqiWQuS3Y3IYdF/AQ6CpyBV3VA==", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz", + "integrity": "sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.16.0", - "@babel/template": "^7.16.0", - "@babel/traverse": "^7.16.5", - "@babel/types": "^7.16.0" + "@babel/helper-function-name": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.16.8", + "@babel/types": "^7.16.8" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.5.tgz", - "integrity": "sha512-TLgi6Lh71vvMZGEkFuIxzaPsyeYCHQ5jJOOX1f0xXn0uciFuE8cEk0wyBquMcCxBXZ5BJhE2aUB7pnWTD150Tw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.7.tgz", + "integrity": "sha512-9ZDoqtfY7AuEOt3cxchfii6C7GDyyMBffktR5B2jvWv8u2+efwvpnVKXMWzNehqy68tKgAfSwfdw/lWpthS2bw==", "dev": true, "dependencies": { - "@babel/template": "^7.16.0", - "@babel/traverse": "^7.16.5", - "@babel/types": "^7.16.0" + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.16.7", + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", - "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz", + "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==", "dependencies": { - "@babel/helper-validator-identifier": "^7.15.7", + "@babel/helper-validator-identifier": "^7.16.7", "chalk": "^2.0.0", "js-tokens": "^4.0.0" }, @@ -478,9 +478,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.16.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.6.tgz", - "integrity": "sha512-Gr86ujcNuPDnNOY8mi383Hvi8IYrJVJYuf3XcuBM/Dgd+bINn/7tHqsj+tKkoreMbmGsFLsltI/JJd8fOFWGDQ==", + "version": "7.16.12", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.12.tgz", + "integrity": "sha512-VfaV15po8RiZssrkPweyvbGVSe4x2y+aciFCgn0n0/SJMR22cwofRV1mtnJQYcSB1wUTaA/X1LnA3es66MCO5A==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -490,12 +490,12 @@ } }, "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.16.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.2.tgz", - "integrity": "sha512-h37CvpLSf8gb2lIJ2CgC3t+EjFbi0t8qS7LCS1xcJIlEXE4czlofwaW7W1HA8zpgOCzI9C1nmoqNR1zWkk0pQg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7.tgz", + "integrity": "sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -505,14 +505,14 @@ } }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.0.tgz", - "integrity": "sha512-4tcFwwicpWTrpl9qjf7UsoosaArgImF85AxqCRZlgc3IQDvkUHjJpruXAL58Wmj+T6fypWTC/BakfEkwIL/pwA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz", + "integrity": "sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", - "@babel/plugin-proposal-optional-chaining": "^7.16.0" + "@babel/plugin-proposal-optional-chaining": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -522,13 +522,13 @@ } }, "node_modules/@babel/plugin-proposal-async-generator-functions": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.5.tgz", - "integrity": "sha512-C/FX+3HNLV6sz7AqbTQqEo1L9/kfrKjxcVtgyBCmvIgOjvuBVUWooDoi7trsLxOzCEo5FccjRvKHkfDsJFZlfA==", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz", + "integrity": "sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5", - "@babel/helper-remap-async-to-generator": "^7.16.5", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-remap-async-to-generator": "^7.16.8", "@babel/plugin-syntax-async-generators": "^7.8.4" }, "engines": { @@ -539,13 +539,13 @@ } }, "node_modules/@babel/plugin-proposal-class-properties": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.5.tgz", - "integrity": "sha512-pJD3HjgRv83s5dv1sTnDbZOaTjghKEz8KUn1Kbh2eAIRhGuyQ1XSeI4xVXU3UlIEVA3DAyIdxqT1eRn7Wcn55A==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz", + "integrity": "sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.16.5", - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -555,13 +555,13 @@ } }, "node_modules/@babel/plugin-proposal-class-static-block": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.5.tgz", - "integrity": "sha512-EEFzuLZcm/rNJ8Q5krK+FRKdVkd6FjfzT9tuSZql9sQn64K0hHA2KLJ0DqVot9/iV6+SsuadC5yI39zWnm+nmQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.7.tgz", + "integrity": "sha512-dgqJJrcZoG/4CkMopzhPJjGxsIe9A8RlkQLnL/Vhhx8AA9ZuaRwGSlscSh42hazc7WSrya/IK7mTeoF0DP9tEw==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.16.5", - "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-class-static-block": "^7.14.5" }, "engines": { @@ -572,12 +572,12 @@ } }, "node_modules/@babel/plugin-proposal-dynamic-import": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.5.tgz", - "integrity": "sha512-P05/SJZTTvHz79LNYTF8ff5xXge0kk5sIIWAypcWgX4BTRUgyHc8wRxJ/Hk+mU0KXldgOOslKaeqnhthcDJCJQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz", + "integrity": "sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-dynamic-import": "^7.8.3" }, "engines": { @@ -588,12 +588,12 @@ } }, "node_modules/@babel/plugin-proposal-export-namespace-from": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.5.tgz", - "integrity": "sha512-i+sltzEShH1vsVydvNaTRsgvq2vZsfyrd7K7vPLUU/KgS0D5yZMe6uipM0+izminnkKrEfdUnz7CxMRb6oHZWw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz", + "integrity": "sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" }, "engines": { @@ -604,12 +604,12 @@ } }, "node_modules/@babel/plugin-proposal-json-strings": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.5.tgz", - "integrity": "sha512-QQJueTFa0y9E4qHANqIvMsuxM/qcLQmKttBACtPCQzGUEizsXDACGonlPiSwynHfOa3vNw0FPMVvQzbuXwh4SQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz", + "integrity": "sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-json-strings": "^7.8.3" }, "engines": { @@ -620,12 +620,12 @@ } }, "node_modules/@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.5.tgz", - "integrity": "sha512-xqibl7ISO2vjuQM+MzR3rkd0zfNWltk7n9QhaD8ghMmMceVguYrNDt7MikRyj4J4v3QehpnrU8RYLnC7z/gZLA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz", + "integrity": "sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" }, "engines": { @@ -636,12 +636,12 @@ } }, "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.5.tgz", - "integrity": "sha512-YwMsTp/oOviSBhrjwi0vzCUycseCYwoXnLiXIL3YNjHSMBHicGTz7GjVU/IGgz4DtOEXBdCNG72pvCX22ehfqg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz", + "integrity": "sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" }, "engines": { @@ -652,12 +652,12 @@ } }, "node_modules/@babel/plugin-proposal-numeric-separator": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.5.tgz", - "integrity": "sha512-DvB9l/TcsCRvsIV9v4jxR/jVP45cslTVC0PMVHvaJhhNuhn2Y1SOhCSFlPK777qLB5wb8rVDaNoqMTyOqtY5Iw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz", + "integrity": "sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-numeric-separator": "^7.10.4" }, "engines": { @@ -668,16 +668,16 @@ } }, "node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.5.tgz", - "integrity": "sha512-UEd6KpChoyPhCoE840KRHOlGhEZFutdPDMGj+0I56yuTTOaT51GzmnEl/0uT41fB/vD2nT+Pci2KjezyE3HmUw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.7.tgz", + "integrity": "sha512-3O0Y4+dw94HA86qSg9IHfyPktgR7q3gpNVAeiKQd+8jBKFaU5NQS1Yatgo4wY+UFNuLjvxcSmzcsHqrhgTyBUA==", "dev": true, "dependencies": { "@babel/compat-data": "^7.16.4", - "@babel/helper-compilation-targets": "^7.16.3", - "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.16.5" + "@babel/plugin-transform-parameters": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -687,12 +687,12 @@ } }, "node_modules/@babel/plugin-proposal-optional-catch-binding": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.5.tgz", - "integrity": "sha512-ihCMxY1Iljmx4bWy/PIMJGXN4NS4oUj1MKynwO07kiKms23pNvIn1DMB92DNB2R0EA882sw0VXIelYGdtF7xEQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz", + "integrity": "sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" }, "engines": { @@ -703,12 +703,12 @@ } }, "node_modules/@babel/plugin-proposal-optional-chaining": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.5.tgz", - "integrity": "sha512-kzdHgnaXRonttiTfKYnSVafbWngPPr2qKw9BWYBESl91W54e+9R5pP70LtWxV56g0f05f/SQrwHYkfvbwcdQ/A==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz", + "integrity": "sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", "@babel/plugin-syntax-optional-chaining": "^7.8.3" }, @@ -720,13 +720,13 @@ } }, "node_modules/@babel/plugin-proposal-private-methods": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.5.tgz", - "integrity": "sha512-+yFMO4BGT3sgzXo+lrq7orX5mAZt57DwUK6seqII6AcJnJOIhBJ8pzKH47/ql/d426uQ7YhN8DpUFirQzqYSUA==", + "version": "7.16.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz", + "integrity": "sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.16.5", - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-create-class-features-plugin": "^7.16.10", + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -736,14 +736,14 @@ } }, "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.5.tgz", - "integrity": "sha512-+YGh5Wbw0NH3y/E5YMu6ci5qTDmAEVNoZ3I54aB6nVEOZ5BQ7QJlwKq5pYVucQilMByGn/bvX0af+uNaPRCabA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz", + "integrity": "sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.0", - "@babel/helper-create-class-features-plugin": "^7.16.5", - "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-private-property-in-object": "^7.14.5" }, "engines": { @@ -754,13 +754,13 @@ } }, "node_modules/@babel/plugin-proposal-unicode-property-regex": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.5.tgz", - "integrity": "sha512-s5sKtlKQyFSatt781HQwv1hoM5BQ9qRH30r+dK56OLDsHmV74mzwJNX7R1yMuE7VZKG5O6q/gmOGSAO6ikTudg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz", + "integrity": "sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.16.0", - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=4" @@ -845,12 +845,12 @@ } }, "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.5.tgz", - "integrity": "sha512-42OGssv9NPk4QHKVgIHlzeLgPOW5rGgfV5jzG90AhcXXIv6hu/eqj63w4VgvRxdvZY3AlYeDgPiSJ3BqAd1Y6Q==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.7.tgz", + "integrity": "sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -962,12 +962,12 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.0.tgz", - "integrity": "sha512-Xv6mEXqVdaqCBfJFyeab0fH2DnUoMsDmhamxsSi4j8nLd4Vtw213WMJr55xxqipC/YVWyPY3K0blJncPYji+dQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.7.tgz", + "integrity": "sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -977,12 +977,12 @@ } }, "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.5.tgz", - "integrity": "sha512-8bTHiiZyMOyfZFULjsCnYOWG059FVMes0iljEHSfARhNgFfpsqE92OrCffv3veSw9rwMkYcFe9bj0ZoXU2IGtQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz", + "integrity": "sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -992,14 +992,14 @@ } }, "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.5.tgz", - "integrity": "sha512-TMXgfioJnkXU+XRoj7P2ED7rUm5jbnDWwlCuFVTpQboMfbSya5WrmubNBAMlk7KXvywpo8rd8WuYZkis1o2H8w==", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz", + "integrity": "sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg==", "dev": true, "dependencies": { - "@babel/helper-module-imports": "^7.16.0", - "@babel/helper-plugin-utils": "^7.16.5", - "@babel/helper-remap-async-to-generator": "^7.16.5" + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-remap-async-to-generator": "^7.16.8" }, "engines": { "node": ">=6.9.0" @@ -1009,12 +1009,12 @@ } }, "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.5.tgz", - "integrity": "sha512-BxmIyKLjUGksJ99+hJyL/HIxLIGnLKtw772zYDER7UuycDZ+Xvzs98ZQw6NGgM2ss4/hlFAaGiZmMNKvValEjw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz", + "integrity": "sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1024,12 +1024,12 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.5.tgz", - "integrity": "sha512-JxjSPNZSiOtmxjX7PBRBeRJTUKTyJ607YUYeT0QJCNdsedOe+/rXITjP08eG8xUpsLfPirgzdCFN+h0w6RI+pQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz", + "integrity": "sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1039,18 +1039,18 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.5.tgz", - "integrity": "sha512-DzJ1vYf/7TaCYy57J3SJ9rV+JEuvmlnvvyvYKFbk5u46oQbBvuB9/0w+YsVsxkOv8zVWKpDmUoj4T5ILHoXevA==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.0", - "@babel/helper-environment-visitor": "^7.16.5", - "@babel/helper-function-name": "^7.16.0", - "@babel/helper-optimise-call-expression": "^7.16.0", - "@babel/helper-plugin-utils": "^7.16.5", - "@babel/helper-replace-supers": "^7.16.5", - "@babel/helper-split-export-declaration": "^7.16.0", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz", + "integrity": "sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", "globals": "^11.1.0" }, "engines": { @@ -1061,12 +1061,12 @@ } }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.5.tgz", - "integrity": "sha512-n1+O7xtU5lSLraRzX88CNcpl7vtGdPakKzww74bVwpAIRgz9JVLJJpOLb0uYqcOaXVM0TL6X0RVeIJGD2CnCkg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz", + "integrity": "sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1076,12 +1076,12 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.5.tgz", - "integrity": "sha512-GuRVAsjq+c9YPK6NeTkRLWyQskDC099XkBSVO+6QzbnOnH2d/4mBVXYStaPrZD3dFRfg00I6BFJ9Atsjfs8mlg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.7.tgz", + "integrity": "sha512-VqAwhTHBnu5xBVDCvrvqJbtLUa++qZaWC0Fgr2mqokBlulZARGyIvZDoqbPlPaKImQ9dKAcCzbv+ul//uqu70A==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1091,13 +1091,13 @@ } }, "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.5.tgz", - "integrity": "sha512-iQiEMt8Q4/5aRGHpGVK2Zc7a6mx7qEAO7qehgSug3SDImnuMzgmm/wtJALXaz25zUj1PmnNHtShjFgk4PDx4nw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz", + "integrity": "sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.16.0", - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1107,12 +1107,12 @@ } }, "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.5.tgz", - "integrity": "sha512-81tijpDg2a6I1Yhj4aWY1l3O1J4Cg/Pd7LfvuaH2VVInAkXtzibz9+zSPdUM1WvuUi128ksstAP0hM5w48vQgg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz", + "integrity": "sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1122,13 +1122,13 @@ } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.5.tgz", - "integrity": "sha512-12rba2HwemQPa7BLIKCzm1pT2/RuQHtSFHdNl41cFiC6oi4tcrp7gjB07pxQvFpcADojQywSjblQth6gJyE6CA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz", + "integrity": "sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==", "dev": true, "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.5", - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1138,12 +1138,12 @@ } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.5.tgz", - "integrity": "sha512-+DpCAJFPAvViR17PIMi9x2AE34dll5wNlXO43wagAX2YcRGgEVHCNFC4azG85b4YyyFarvkc/iD5NPrz4Oneqw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz", + "integrity": "sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1153,13 +1153,14 @@ } }, "node_modules/@babel/plugin-transform-function-name": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.5.tgz", - "integrity": "sha512-Fuec/KPSpVLbGo6z1RPw4EE1X+z9gZk1uQmnYy7v4xr4TO9p41v1AoUuXEtyqAI7H+xNJYSICzRqZBhDEkd3kQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz", + "integrity": "sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.16.0", - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1169,12 +1170,12 @@ } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.5.tgz", - "integrity": "sha512-B1j9C/IfvshnPcklsc93AVLTrNVa69iSqztylZH6qnmiAsDDOmmjEYqOm3Ts2lGSgTSywnBNiqC949VdD0/gfw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz", + "integrity": "sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1184,12 +1185,12 @@ } }, "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.5.tgz", - "integrity": "sha512-d57i3vPHWgIde/9Y8W/xSFUndhvhZN5Wu2TjRrN1MVz5KzdUihKnfDVlfP1U7mS5DNj/WHHhaE4/tTi4hIyHwQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz", + "integrity": "sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1199,13 +1200,13 @@ } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.5.tgz", - "integrity": "sha512-oHI15S/hdJuSCfnwIz+4lm6wu/wBn7oJ8+QrkzPPwSFGXk8kgdI/AIKcbR/XnD1nQVMg/i6eNaXpszbGuwYDRQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz", + "integrity": "sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.16.5", - "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", "babel-plugin-dynamic-import-node": "^2.3.3" }, "engines": { @@ -1216,14 +1217,14 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.5.tgz", - "integrity": "sha512-ABhUkxvoQyqhCWyb8xXtfwqNMJD7tx+irIRnUh6lmyFud7Jln1WzONXKlax1fg/ey178EXbs4bSGNd6PngO+SQ==", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.8.tgz", + "integrity": "sha512-oflKPvsLT2+uKQopesJt3ApiaIS2HW+hzHFcwRNtyDGieAeC/dIHZX8buJQ2J2X1rxGPy4eRcUijm3qcSPjYcA==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.16.5", - "@babel/helper-plugin-utils": "^7.16.5", - "@babel/helper-simple-access": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-simple-access": "^7.16.7", "babel-plugin-dynamic-import-node": "^2.3.3" }, "engines": { @@ -1234,15 +1235,15 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.5.tgz", - "integrity": "sha512-53gmLdScNN28XpjEVIm7LbWnD/b/TpbwKbLk6KV4KqC9WyU6rq1jnNmVG6UgAdQZVVGZVoik3DqHNxk4/EvrjA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.7.tgz", + "integrity": "sha512-DuK5E3k+QQmnOqBR9UkusByy5WZWGRxfzV529s9nPra1GE7olmxfqO2FHobEOYSPIjPBTr4p66YDcjQnt8cBmw==", "dev": true, "dependencies": { - "@babel/helper-hoist-variables": "^7.16.0", - "@babel/helper-module-transforms": "^7.16.5", - "@babel/helper-plugin-utils": "^7.16.5", - "@babel/helper-validator-identifier": "^7.15.7", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", "babel-plugin-dynamic-import-node": "^2.3.3" }, "engines": { @@ -1253,13 +1254,13 @@ } }, "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.5.tgz", - "integrity": "sha512-qTFnpxHMoenNHkS3VoWRdwrcJ3FhX567GvDA3hRZKF0Dj8Fmg0UzySZp3AP2mShl/bzcywb/UWAMQIjA1bhXvw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz", + "integrity": "sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.16.5", - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1269,12 +1270,12 @@ } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.5.tgz", - "integrity": "sha512-/wqGDgvFUeKELW6ex6QB7dLVRkd5ehjw34tpXu1nhKC0sFfmaLabIswnpf8JgDyV2NeDmZiwoOb0rAmxciNfjA==", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.8.tgz", + "integrity": "sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.16.0" + "@babel/helper-create-regexp-features-plugin": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1284,12 +1285,12 @@ } }, "node_modules/@babel/plugin-transform-new-target": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.5.tgz", - "integrity": "sha512-ZaIrnXF08ZC8jnKR4/5g7YakGVL6go6V9ql6Jl3ecO8PQaQqFE74CuM384kezju7Z9nGCCA20BqZaR1tJ/WvHg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz", + "integrity": "sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1299,13 +1300,13 @@ } }, "node_modules/@babel/plugin-transform-object-super": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.5.tgz", - "integrity": "sha512-tded+yZEXuxt9Jdtkc1RraW1zMF/GalVxaVVxh41IYwirdRgyAxxxCKZ9XB7LxZqmsjfjALxupNE1MIz9KH+Zg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz", + "integrity": "sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5", - "@babel/helper-replace-supers": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1315,12 +1316,12 @@ } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.5.tgz", - "integrity": "sha512-B3O6AL5oPop1jAVg8CV+haeUte9oFuY85zu0jwnRNZZi3tVAbJriu5tag/oaO2kGaQM/7q7aGPBlTI5/sr9enA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz", + "integrity": "sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1330,12 +1331,12 @@ } }, "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.5.tgz", - "integrity": "sha512-+IRcVW71VdF9pEH/2R/Apab4a19LVvdVsr/gEeotH00vSDVlKD+XgfSIw+cgGWsjDB/ziqGv/pGoQZBIiQVXHg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz", + "integrity": "sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1345,12 +1346,12 @@ } }, "node_modules/@babel/plugin-transform-react-display-name": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.16.5.tgz", - "integrity": "sha512-dHYCOnzSsXFz8UcdNQIHGvg94qPL/teF7CCiCEMRxmA1G2p5Mq4JnKVowCDxYfiQ9D7RstaAp9kwaSI+sXbnhw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.16.7.tgz", + "integrity": "sha512-qgIg8BcZgd0G/Cz916D5+9kqX0c7nPZyXaP8R2tLNN5tkyIZdG5fEwBrxwplzSnjC1jvQmyMNVwUCZPcbGY7Pg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1360,16 +1361,16 @@ } }, "node_modules/@babel/plugin-transform-react-jsx": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.16.5.tgz", - "integrity": "sha512-+arLIz1d7kmwX0fKxTxbnoeG85ONSnLpvdODa4P3pc1sS7CV1hfmtYWufkW/oYsPnkDrEeQFxhUWcFnrXW7jQQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.16.7.tgz", + "integrity": "sha512-8D16ye66fxiE8m890w0BpPpngG9o9OVBBy0gH2E+2AR7qMR2ZpTYJEqLxAsoroenMId0p/wMW+Blc0meDgu0Ag==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.0", - "@babel/helper-module-imports": "^7.16.0", - "@babel/helper-plugin-utils": "^7.16.5", - "@babel/plugin-syntax-jsx": "^7.16.5", - "@babel/types": "^7.16.0" + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-jsx": "^7.16.7", + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1379,12 +1380,12 @@ } }, "node_modules/@babel/plugin-transform-react-jsx-development": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.16.5.tgz", - "integrity": "sha512-uQSLacMZSGLCxOw20dzo1dmLlKkd+DsayoV54q3MHXhbqgPzoiGerZQgNPl/Ro8/OcXV2ugfnkx+rxdS0sN5Uw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.16.7.tgz", + "integrity": "sha512-RMvQWvpla+xy6MlBpPlrKZCMRs2AGiHOGHY3xRwl0pEeim348dDyxeH4xBsMPbIMhujeq7ihE702eM2Ew0Wo+A==", "dev": true, "dependencies": { - "@babel/plugin-transform-react-jsx": "^7.16.5" + "@babel/plugin-transform-react-jsx": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1394,13 +1395,13 @@ } }, "node_modules/@babel/plugin-transform-react-pure-annotations": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.16.5.tgz", - "integrity": "sha512-0nYU30hCxnCVCbRjSy9ahlhWZ2Sn6khbY4FqR91W+2RbSqkWEbVu2gXh45EqNy4Bq7sRU+H4i0/6YKwOSzh16A==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.16.7.tgz", + "integrity": "sha512-hs71ToC97k3QWxswh2ElzMFABXHvGiJ01IB1TbYQDGeWRKWz/MPUTh5jGExdHvosYKpnJW5Pm3S4+TA3FyX+GA==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.0", - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1410,9 +1411,9 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.5.tgz", - "integrity": "sha512-2z+it2eVWU8TtQQRauvGUqZwLy4+7rTfo6wO4npr+fvvN1SW30ZF3O/ZRCNmTuu4F5MIP8OJhXAhRV5QMJOuYg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.7.tgz", + "integrity": "sha512-mF7jOgGYCkSJagJ6XCujSQg+6xC1M77/03K2oBmVJWoFGNUtnVJO4WHKJk3dnPC8HCcj4xBQP1Egm8DWh3Pb3Q==", "dev": true, "dependencies": { "regenerator-transform": "^0.14.2" @@ -1425,12 +1426,12 @@ } }, "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.5.tgz", - "integrity": "sha512-aIB16u8lNcf7drkhXJRoggOxSTUAuihTSTfAcpynowGJOZiGf+Yvi7RuTwFzVYSYPmWyARsPqUGoZWWWxLiknw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz", + "integrity": "sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1440,12 +1441,12 @@ } }, "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.5.tgz", - "integrity": "sha512-ZbuWVcY+MAXJuuW7qDoCwoxDUNClfZxoo7/4swVbOW1s/qYLOMHlm9YRWMsxMFuLs44eXsv4op1vAaBaBaDMVg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz", + "integrity": "sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1455,12 +1456,12 @@ } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.5.tgz", - "integrity": "sha512-5d6l/cnG7Lw4tGHEoga4xSkYp1euP7LAtrah1h1PgJ3JY7yNsjybsxQAnVK4JbtReZ/8z6ASVmd3QhYYKLaKZw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz", + "integrity": "sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" }, "engines": { @@ -1471,12 +1472,12 @@ } }, "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.5.tgz", - "integrity": "sha512-usYsuO1ID2LXxzuUxifgWtJemP7wL2uZtyrTVM4PKqsmJycdS4U4mGovL5xXkfUheds10Dd2PjoQLXw6zCsCbg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz", + "integrity": "sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1486,12 +1487,12 @@ } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.5.tgz", - "integrity": "sha512-gnyKy9RyFhkovex4BjKWL3BVYzUDG6zC0gba7VMLbQoDuqMfJ1SDXs8k/XK41Mmt1Hyp4qNAvGFb9hKzdCqBRQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz", + "integrity": "sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1501,12 +1502,12 @@ } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.5.tgz", - "integrity": "sha512-ldxCkW180qbrvyCVDzAUZqB0TAeF8W/vGJoRcaf75awm6By+PxfJKvuqVAnq8N9wz5Xa6mSpM19OfVKKVmGHSQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz", + "integrity": "sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1516,14 +1517,14 @@ } }, "node_modules/@babel/plugin-transform-typescript": { - "version": "7.16.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.16.1.tgz", - "integrity": "sha512-NO4XoryBng06jjw/qWEU2LhcLJr1tWkhpMam/H4eas/CDKMX/b2/Ylb6EI256Y7+FVPCawwSM1rrJNOpDiz+Lg==", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.16.8.tgz", + "integrity": "sha512-bHdQ9k7YpBDO2d0NVfkj51DpQcvwIzIusJ7mEUaMlbZq3Kt/U47j24inXZHQ5MDiYpCs+oZiwnXyKedE8+q7AQ==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-typescript": "^7.16.0" + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-typescript": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1533,12 +1534,12 @@ } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.5.tgz", - "integrity": "sha512-shiCBHTIIChGLdyojsKQjoAyB8MBwat25lKM7MJjbe1hE0bgIppD+LX9afr41lLHOhqceqeWl4FkLp+Bgn9o1Q==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz", + "integrity": "sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1548,13 +1549,13 @@ } }, "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.5.tgz", - "integrity": "sha512-GTJ4IW012tiPEMMubd7sD07iU9O/LOo8Q/oU4xNhcaq0Xn8+6TcUQaHtC8YxySo1T+ErQ8RaWogIEeFhKGNPzw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz", + "integrity": "sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.16.0", - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1564,32 +1565,32 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.5.tgz", - "integrity": "sha512-MiJJW5pwsktG61NDxpZ4oJ1CKxM1ncam9bzRtx9g40/WkLRkxFP6mhpkYV0/DxcciqoiHicx291+eUQrXb/SfQ==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.16.4", - "@babel/helper-compilation-targets": "^7.16.3", - "@babel/helper-plugin-utils": "^7.16.5", - "@babel/helper-validator-option": "^7.14.5", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.2", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.0", - "@babel/plugin-proposal-async-generator-functions": "^7.16.5", - "@babel/plugin-proposal-class-properties": "^7.16.5", - "@babel/plugin-proposal-class-static-block": "^7.16.5", - "@babel/plugin-proposal-dynamic-import": "^7.16.5", - "@babel/plugin-proposal-export-namespace-from": "^7.16.5", - "@babel/plugin-proposal-json-strings": "^7.16.5", - "@babel/plugin-proposal-logical-assignment-operators": "^7.16.5", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.5", - "@babel/plugin-proposal-numeric-separator": "^7.16.5", - "@babel/plugin-proposal-object-rest-spread": "^7.16.5", - "@babel/plugin-proposal-optional-catch-binding": "^7.16.5", - "@babel/plugin-proposal-optional-chaining": "^7.16.5", - "@babel/plugin-proposal-private-methods": "^7.16.5", - "@babel/plugin-proposal-private-property-in-object": "^7.16.5", - "@babel/plugin-proposal-unicode-property-regex": "^7.16.5", + "version": "7.16.11", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.11.tgz", + "integrity": "sha512-qcmWG8R7ZW6WBRPZK//y+E3Cli151B20W1Rv7ln27vuPaXU/8TKms6jFdiJtF7UDTxcrb7mZd88tAeK9LjdT8g==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.16.8", + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-option": "^7.16.7", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.7", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.7", + "@babel/plugin-proposal-async-generator-functions": "^7.16.8", + "@babel/plugin-proposal-class-properties": "^7.16.7", + "@babel/plugin-proposal-class-static-block": "^7.16.7", + "@babel/plugin-proposal-dynamic-import": "^7.16.7", + "@babel/plugin-proposal-export-namespace-from": "^7.16.7", + "@babel/plugin-proposal-json-strings": "^7.16.7", + "@babel/plugin-proposal-logical-assignment-operators": "^7.16.7", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.7", + "@babel/plugin-proposal-numeric-separator": "^7.16.7", + "@babel/plugin-proposal-object-rest-spread": "^7.16.7", + "@babel/plugin-proposal-optional-catch-binding": "^7.16.7", + "@babel/plugin-proposal-optional-chaining": "^7.16.7", + "@babel/plugin-proposal-private-methods": "^7.16.11", + "@babel/plugin-proposal-private-property-in-object": "^7.16.7", + "@babel/plugin-proposal-unicode-property-regex": "^7.16.7", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", "@babel/plugin-syntax-class-static-block": "^7.14.5", @@ -1604,44 +1605,44 @@ "@babel/plugin-syntax-optional-chaining": "^7.8.3", "@babel/plugin-syntax-private-property-in-object": "^7.14.5", "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-transform-arrow-functions": "^7.16.5", - "@babel/plugin-transform-async-to-generator": "^7.16.5", - "@babel/plugin-transform-block-scoped-functions": "^7.16.5", - "@babel/plugin-transform-block-scoping": "^7.16.5", - "@babel/plugin-transform-classes": "^7.16.5", - "@babel/plugin-transform-computed-properties": "^7.16.5", - "@babel/plugin-transform-destructuring": "^7.16.5", - "@babel/plugin-transform-dotall-regex": "^7.16.5", - "@babel/plugin-transform-duplicate-keys": "^7.16.5", - "@babel/plugin-transform-exponentiation-operator": "^7.16.5", - "@babel/plugin-transform-for-of": "^7.16.5", - "@babel/plugin-transform-function-name": "^7.16.5", - "@babel/plugin-transform-literals": "^7.16.5", - "@babel/plugin-transform-member-expression-literals": "^7.16.5", - "@babel/plugin-transform-modules-amd": "^7.16.5", - "@babel/plugin-transform-modules-commonjs": "^7.16.5", - "@babel/plugin-transform-modules-systemjs": "^7.16.5", - "@babel/plugin-transform-modules-umd": "^7.16.5", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.5", - "@babel/plugin-transform-new-target": "^7.16.5", - "@babel/plugin-transform-object-super": "^7.16.5", - "@babel/plugin-transform-parameters": "^7.16.5", - "@babel/plugin-transform-property-literals": "^7.16.5", - "@babel/plugin-transform-regenerator": "^7.16.5", - "@babel/plugin-transform-reserved-words": "^7.16.5", - "@babel/plugin-transform-shorthand-properties": "^7.16.5", - "@babel/plugin-transform-spread": "^7.16.5", - "@babel/plugin-transform-sticky-regex": "^7.16.5", - "@babel/plugin-transform-template-literals": "^7.16.5", - "@babel/plugin-transform-typeof-symbol": "^7.16.5", - "@babel/plugin-transform-unicode-escapes": "^7.16.5", - "@babel/plugin-transform-unicode-regex": "^7.16.5", + "@babel/plugin-transform-arrow-functions": "^7.16.7", + "@babel/plugin-transform-async-to-generator": "^7.16.8", + "@babel/plugin-transform-block-scoped-functions": "^7.16.7", + "@babel/plugin-transform-block-scoping": "^7.16.7", + "@babel/plugin-transform-classes": "^7.16.7", + "@babel/plugin-transform-computed-properties": "^7.16.7", + "@babel/plugin-transform-destructuring": "^7.16.7", + "@babel/plugin-transform-dotall-regex": "^7.16.7", + "@babel/plugin-transform-duplicate-keys": "^7.16.7", + "@babel/plugin-transform-exponentiation-operator": "^7.16.7", + "@babel/plugin-transform-for-of": "^7.16.7", + "@babel/plugin-transform-function-name": "^7.16.7", + "@babel/plugin-transform-literals": "^7.16.7", + "@babel/plugin-transform-member-expression-literals": "^7.16.7", + "@babel/plugin-transform-modules-amd": "^7.16.7", + "@babel/plugin-transform-modules-commonjs": "^7.16.8", + "@babel/plugin-transform-modules-systemjs": "^7.16.7", + "@babel/plugin-transform-modules-umd": "^7.16.7", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.8", + "@babel/plugin-transform-new-target": "^7.16.7", + "@babel/plugin-transform-object-super": "^7.16.7", + "@babel/plugin-transform-parameters": "^7.16.7", + "@babel/plugin-transform-property-literals": "^7.16.7", + "@babel/plugin-transform-regenerator": "^7.16.7", + "@babel/plugin-transform-reserved-words": "^7.16.7", + "@babel/plugin-transform-shorthand-properties": "^7.16.7", + "@babel/plugin-transform-spread": "^7.16.7", + "@babel/plugin-transform-sticky-regex": "^7.16.7", + "@babel/plugin-transform-template-literals": "^7.16.7", + "@babel/plugin-transform-typeof-symbol": "^7.16.7", + "@babel/plugin-transform-unicode-escapes": "^7.16.7", + "@babel/plugin-transform-unicode-regex": "^7.16.7", "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.16.0", + "@babel/types": "^7.16.8", "babel-plugin-polyfill-corejs2": "^0.3.0", - "babel-plugin-polyfill-corejs3": "^0.4.0", + "babel-plugin-polyfill-corejs3": "^0.5.0", "babel-plugin-polyfill-regenerator": "^0.3.0", - "core-js-compat": "^3.19.1", + "core-js-compat": "^3.20.2", "semver": "^6.3.0" }, "engines": { @@ -1668,17 +1669,17 @@ } }, "node_modules/@babel/preset-react": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.16.5.tgz", - "integrity": "sha512-3kzUOQeaxY/2vhPDS7CX/KGEGu/1bOYGvdRDJ2U5yjEz5o5jmIeTPLoiQBPGjfhPascLuW5OlMiPzwOOuB6txg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.16.7.tgz", + "integrity": "sha512-fWpyI8UM/HE6DfPBzD8LnhQ/OcH8AgTaqcqP2nGOXEUV+VKBR5JRN9hCk9ai+zQQ57vtm9oWeXguBCPNUjytgA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5", - "@babel/helper-validator-option": "^7.14.5", - "@babel/plugin-transform-react-display-name": "^7.16.5", - "@babel/plugin-transform-react-jsx": "^7.16.5", - "@babel/plugin-transform-react-jsx-development": "^7.16.5", - "@babel/plugin-transform-react-pure-annotations": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-option": "^7.16.7", + "@babel/plugin-transform-react-display-name": "^7.16.7", + "@babel/plugin-transform-react-jsx": "^7.16.7", + "@babel/plugin-transform-react-jsx-development": "^7.16.7", + "@babel/plugin-transform-react-pure-annotations": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1688,14 +1689,14 @@ } }, "node_modules/@babel/preset-typescript": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.16.5.tgz", - "integrity": "sha512-lmAWRoJ9iOSvs3DqOndQpj8XqXkzaiQs50VG/zESiI9D3eoZhGriU675xNCr0UwvsuXrhMAGvyk1w+EVWF3u8Q==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.16.7.tgz", + "integrity": "sha512-WbVEmgXdIyvzB77AQjGBEyYPZx+8tTsO50XtfozQrkW8QB2rLJpH2lgx0TRw5EJrBxOZQ+wCcyPVQvS8tjEHpQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.5", - "@babel/helper-validator-option": "^7.14.5", - "@babel/plugin-transform-typescript": "^7.16.1" + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-option": "^7.16.7", + "@babel/plugin-transform-typescript": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -1716,33 +1717,33 @@ } }, "node_modules/@babel/template": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", - "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", + "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.16.0", - "@babel/parser": "^7.16.0", - "@babel/types": "^7.16.0" + "@babel/code-frame": "^7.16.7", + "@babel/parser": "^7.16.7", + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.5.tgz", - "integrity": "sha512-FOCODAzqUMROikDYLYxl4nmwiLlu85rNqBML/A5hKRVXG2LV8d0iMqgPzdYTcIpjZEBB7D6UDU9vxRZiriASdQ==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.16.0", - "@babel/generator": "^7.16.5", - "@babel/helper-environment-visitor": "^7.16.5", - "@babel/helper-function-name": "^7.16.0", - "@babel/helper-hoist-variables": "^7.16.0", - "@babel/helper-split-export-declaration": "^7.16.0", - "@babel/parser": "^7.16.5", - "@babel/types": "^7.16.0", + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.10.tgz", + "integrity": "sha512-yzuaYXoRJBGMlBhsMJoUW7G1UmSb/eXr/JHYM/MsOJgavJibLwASijW7oXBdw3NQ6T0bW7Ty5P/VarOs9cHmqw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.16.8", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/parser": "^7.16.10", + "@babel/types": "^7.16.8", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -1751,11 +1752,11 @@ } }, "node_modules/@babel/types": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", - "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.8.tgz", + "integrity": "sha512-smN2DQc5s4M7fntyjGtyIPbRJv6wW4rU/94fmYJ7PKQuZkC0qGMHXJbg6sNGt12JmVr4k5YaptI/XtiLJBnmIg==", "dependencies": { - "@babel/helper-validator-identifier": "^7.15.7", + "@babel/helper-validator-identifier": "^7.16.7", "to-fast-properties": "^2.0.0" }, "engines": { @@ -2063,9 +2064,9 @@ } }, "node_modules/@webpack-cli/configtest": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.1.0.tgz", - "integrity": "sha512-ttOkEkoalEHa7RaFYpM0ErK1xc4twg3Am9hfHhL7MVqlHebnkYd2wuI/ZqTDj0cVzZho6PdinY0phFZV3O0Mzg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.1.1.tgz", + "integrity": "sha512-1FBc1f9G4P/AxMqIgfZgeOTuRnwZMten8E7zap5zgpPInnCrP8D4Q81+4CWIch8i/Nf7nXjP0v6CjjbHOrXhKg==", "dev": true, "peerDependencies": { "webpack": "4.x.x || 5.x.x", @@ -2073,9 +2074,9 @@ } }, "node_modules/@webpack-cli/info": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.4.0.tgz", - "integrity": "sha512-F6b+Man0rwE4n0409FyAJHStYA5OIZERxmnUfLVwv0mc0V1wLad3V7jqRlMkgKBeAq07jUvglacNaa6g9lOpuw==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.4.1.tgz", + "integrity": "sha512-PKVGmazEq3oAo46Q63tpMr4HipI3OPfP7LiNOEJg963RMgT0rqheag28NCML0o3GIzA3DmxP1ZIAv9oTX1CUIA==", "dev": true, "dependencies": { "envinfo": "^7.7.3" @@ -2085,9 +2086,9 @@ } }, "node_modules/@webpack-cli/serve": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.6.0.tgz", - "integrity": "sha512-ZkVeqEmRpBV2GHvjjUZqEai2PpUbuq8Bqd//vEYsp63J8WyexI8ppCqVS3Zs0QADf6aWuPdU+0XsPI647PVlQA==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.6.1.tgz", + "integrity": "sha512-gNGTiTrjEVQ0OcVnzsRSqTxaBSr+dmTfm+qJsCDluky8uhdLWep7Gcr62QsAKHTMxjCS/8nEITsmFAhfIx+QSw==", "dev": true, "peerDependencies": { "webpack-cli": "4.x.x" @@ -2256,13 +2257,13 @@ } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.4.0.tgz", - "integrity": "sha512-YxFreYwUfglYKdLUGvIF2nJEsGwj+RhWSX/ije3D2vQPOXuyMLMtg/cCGMDpOA7Nd+MwlNdnGODbd2EwUZPlsw==", + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.1.tgz", + "integrity": "sha512-TihqEe4sQcb/QcPJvxe94/9RZuLQuF1+To4WqQcRvc+3J3gLCPIPgDKzGLG6zmQLfH3nn25heRuDNkS2KR4I8A==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.3.0", - "core-js-compat": "^3.18.0" + "@babel/helper-define-polyfill-provider": "^0.3.1", + "core-js-compat": "^3.20.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" @@ -2346,13 +2347,13 @@ } }, "node_modules/browserslist": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.18.1.tgz", - "integrity": "sha512-8ScCzdpPwR2wQh8IT82CA2VgDwjHyqMovPBZSNH54+tm4Jk2pCuv90gmAdH6J84OCRWi0b4gMe6O6XPXuJnjgQ==", + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.1.tgz", + "integrity": "sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==", "dev": true, "dependencies": { - "caniuse-lite": "^1.0.30001280", - "electron-to-chromium": "^1.3.896", + "caniuse-lite": "^1.0.30001286", + "electron-to-chromium": "^1.4.17", "escalade": "^3.1.1", "node-releases": "^2.0.1", "picocolors": "^1.0.0" @@ -2396,9 +2397,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001282", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001282.tgz", - "integrity": "sha512-YhF/hG6nqBEllymSIjLtR2iWDDnChvhnVJqp+vloyt2tEHFG1yBR+ac2B/rOw0qOK0m0lEXU2dv4E/sMk5P9Kg==", + "version": "1.0.30001304", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001304.tgz", + "integrity": "sha512-bdsfZd6K6ap87AGqSHJP/s1V+U6Z5lyrcbBu3ovbCCf8cSYpwTtGrCBObMpJqwxfTbLW6YTIdbb1jEeTelcpYQ==", "dev": true, "funding": { "type": "opencollective", @@ -2511,12 +2512,12 @@ } }, "node_modules/core-js-compat": { - "version": "3.19.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.19.1.tgz", - "integrity": "sha512-Q/VJ7jAF/y68+aUsQJ/afPOewdsGkDtcMb40J8MbuWKlK3Y+wtHq8bTHKPj2WKWLIqmS5JhHs4CzHtz6pT2W6g==", + "version": "3.20.3", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.20.3.tgz", + "integrity": "sha512-c8M5h0IkNZ+I92QhIpuSijOxGAcj3lgpsWdkCqmUTZNwidujF4r3pi6x1DCN+Vcs5qTS2XWWMfWSuCqyupX8gw==", "dev": true, "dependencies": { - "browserslist": "^4.17.6", + "browserslist": "^4.19.1", "semver": "7.0.0" }, "funding": { @@ -2670,9 +2671,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.3.904", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.904.tgz", - "integrity": "sha512-x5uZWXcVNYkTh4JubD7KSC1VMKz0vZwJUqVwY3ihsW0bst1BXDe494Uqbg3Y0fDGVjJqA8vEeGuvO5foyH2+qw==", + "version": "1.4.57", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.57.tgz", + "integrity": "sha512-FNC+P5K1n6pF+M0zIK+gFCoXcJhhzDViL3DRIGy2Fv5PohuSES1JHR7T+GlwxSxlzx4yYbsuzCZvHxcBSRCIOw==", "dev": true }, "node_modules/emojis-list": { @@ -3075,9 +3076,9 @@ } }, "node_modules/graceful-fs": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", - "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", + "version": "4.2.9", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", + "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==", "dev": true }, "node_modules/has": { @@ -3822,9 +3823,9 @@ "dev": true }, "node_modules/nanoid": { - "version": "3.1.30", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.30.tgz", - "integrity": "sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.2.0.tgz", + "integrity": "sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA==", "dev": true, "bin": { "nanoid": "bin/nanoid.cjs" @@ -4237,9 +4238,9 @@ "dev": true }, "node_modules/prop-types": { - "version": "15.8.0", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.0.tgz", - "integrity": "sha512-fDGekdaHh65eI3lMi5OnErU6a8Ighg2KjcjQxO7m8VHyWjcPyj5kiOgV1LQDOOOgVy3+5FgjXvdSSX7B8/5/4g==", + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", @@ -4920,9 +4921,9 @@ } }, "node_modules/typescript": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.4.tgz", - "integrity": "sha512-VgYs2A2QIRuGphtzFV7aQJduJ2gyfTljngLzjpfW9FoYZF6xuw1W0vW9ghCKLfcWrCFxK81CSGRAvS1pn4fIUg==", + "version": "4.5.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.5.tgz", + "integrity": "sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -5030,9 +5031,9 @@ } }, "node_modules/webpack": { - "version": "5.65.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.65.0.tgz", - "integrity": "sha512-Q5or2o6EKs7+oKmJo7LaqZaMOlDWQse9Tm5l1WAfU/ujLGN5Pb0SqGeVkN/4bpPmEqEP5RnVhiqsOtWtUVwGRw==", + "version": "5.67.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.67.0.tgz", + "integrity": "sha512-LjFbfMh89xBDpUMgA1W9Ur6Rn/gnr2Cq1jjHFPo4v6a79/ypznSYbAyPgGhwsxBtMIaEmDD1oJoA7BEYw/Fbrw==", "dev": true, "dependencies": { "@types/eslint-scope": "^3.7.0", @@ -5049,7 +5050,7 @@ "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.4", + "graceful-fs": "^4.2.9", "json-parse-better-errors": "^1.0.2", "loader-runner": "^4.2.0", "mime-types": "^2.1.27", @@ -5058,7 +5059,7 @@ "tapable": "^2.1.1", "terser-webpack-plugin": "^5.1.3", "watchpack": "^2.3.1", - "webpack-sources": "^3.2.2" + "webpack-sources": "^3.2.3" }, "bin": { "webpack": "bin/webpack.js" @@ -5077,15 +5078,15 @@ } }, "node_modules/webpack-cli": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.9.1.tgz", - "integrity": "sha512-JYRFVuyFpzDxMDB+v/nanUdQYcZtqFPGzmlW4s+UkPMFhSpfRNmf1z4AwYcHJVdvEFAM7FFCQdNTpsBYhDLusQ==", + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.9.2.tgz", + "integrity": "sha512-m3/AACnBBzK/kMTcxWHcZFPrw/eQuY4Df1TxvIWfWM2x7mRqBQCqKEd96oCUa9jkapLBaFfRce33eGDb4Pr7YQ==", "dev": true, "dependencies": { "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^1.1.0", - "@webpack-cli/info": "^1.4.0", - "@webpack-cli/serve": "^1.6.0", + "@webpack-cli/configtest": "^1.1.1", + "@webpack-cli/info": "^1.4.1", + "@webpack-cli/serve": "^1.6.1", "colorette": "^2.0.14", "commander": "^7.0.0", "execa": "^5.0.0", @@ -5142,9 +5143,9 @@ } }, "node_modules/webpack-sources": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.2.tgz", - "integrity": "sha512-cp5qdmHnu5T8wRg2G3vZZHoJPN14aqQ89SyQ11NpGH5zEMDCclt49rzo+MaRazk7/UeILhAI+/sEtcM+7Fr0nw==", + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", "dev": true, "engines": { "node": ">=10.13.0" @@ -5242,9 +5243,9 @@ }, "dependencies": { "@babel/cli": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.16.0.tgz", - "integrity": "sha512-WLrM42vKX/4atIoQB+eb0ovUof53UUvecb4qGjU2PDDWRiZr50ZpiV8NpcLo7iSxeGYrRG0Mqembsa+UrTAV6Q==", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.16.8.tgz", + "integrity": "sha512-FTKBbxyk5TclXOGmwYyqelqP5IF6hMxaeJskd85jbR5jBfYlwqgwAbJwnixi1ZBbTqKfFuAA95mdmUFeSRwyJA==", "dev": true, "requires": { "@nicolo-ribaudo/chokidar-2": "2.1.8-no-fsevents.3", @@ -5259,34 +5260,34 @@ } }, "@babel/code-frame": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", - "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", + "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", "requires": { - "@babel/highlight": "^7.16.0" + "@babel/highlight": "^7.16.7" } }, "@babel/compat-data": { - "version": "7.16.4", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.4.tgz", - "integrity": "sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q==", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.8.tgz", + "integrity": "sha512-m7OkX0IdKLKPpBlJtF561YJal5y/jyI5fNfWbPxh2D/nbzzGI4qRyrD8xO2jB24u7l+5I2a43scCG2IrfjC50Q==", "dev": true }, "@babel/core": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.5.tgz", - "integrity": "sha512-wUcenlLzuWMZ9Zt8S0KmFwGlH6QKRh3vsm/dhDA3CHkiTA45YuG1XkHRcNRl73EFPXDp/d5kVOU0/y7x2w6OaQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.16.0", - "@babel/generator": "^7.16.5", - "@babel/helper-compilation-targets": "^7.16.3", - "@babel/helper-module-transforms": "^7.16.5", - "@babel/helpers": "^7.16.5", - "@babel/parser": "^7.16.5", - "@babel/template": "^7.16.0", - "@babel/traverse": "^7.16.5", - "@babel/types": "^7.16.0", + "version": "7.16.12", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.12.tgz", + "integrity": "sha512-dK5PtG1uiN2ikk++5OzSYsitZKny4wOCD0nrO4TqnW4BVBTQ2NGS3NgilvT/TEyxTST7LNyWV/T4tXDoD3fOgg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.16.8", + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helpers": "^7.16.7", + "@babel/parser": "^7.16.12", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.16.10", + "@babel/types": "^7.16.8", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -5296,76 +5297,76 @@ } }, "@babel/generator": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.5.tgz", - "integrity": "sha512-kIvCdjZqcdKqoDbVVdt5R99icaRtrtYhYK/xux5qiWCBmfdvEYMFZ68QCrpE5cbFM1JsuArUNs1ZkuKtTtUcZA==", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.8.tgz", + "integrity": "sha512-1ojZwE9+lOXzcWdWmO6TbUzDfqLD39CmEhN8+2cX9XkDo5yW1OpgfejfliysR2AWLpMamTiOiAp/mtroaymhpw==", "dev": true, "requires": { - "@babel/types": "^7.16.0", + "@babel/types": "^7.16.8", "jsesc": "^2.5.1", "source-map": "^0.5.0" } }, "@babel/helper-annotate-as-pure": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.0.tgz", - "integrity": "sha512-ItmYF9vR4zA8cByDocY05o0LGUkp1zhbTQOH1NFyl5xXEqlTJQCEJjieriw+aFpxo16swMxUnUiKS7a/r4vtHg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", + "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", "dev": true, "requires": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.16.7" } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.5.tgz", - "integrity": "sha512-3JEA9G5dmmnIWdzaT9d0NmFRgYnWUThLsDaL7982H0XqqWr56lRrsmwheXFMjR+TMl7QMBb6mzy9kvgr1lRLUA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz", + "integrity": "sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA==", "dev": true, "requires": { - "@babel/helper-explode-assignable-expression": "^7.16.0", - "@babel/types": "^7.16.0" + "@babel/helper-explode-assignable-expression": "^7.16.7", + "@babel/types": "^7.16.7" } }, "@babel/helper-compilation-targets": { - "version": "7.16.3", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz", - "integrity": "sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz", + "integrity": "sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA==", "dev": true, "requires": { - "@babel/compat-data": "^7.16.0", - "@babel/helper-validator-option": "^7.14.5", + "@babel/compat-data": "^7.16.4", + "@babel/helper-validator-option": "^7.16.7", "browserslist": "^4.17.5", "semver": "^6.3.0" } }, "@babel/helper-create-class-features-plugin": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.5.tgz", - "integrity": "sha512-NEohnYA7mkB8L5JhU7BLwcBdU3j83IziR9aseMueWGeAjblbul3zzb8UvJ3a1zuBiqCMObzCJHFqKIQE6hTVmg==", + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.10.tgz", + "integrity": "sha512-wDeej0pu3WN/ffTxMNCPW5UCiOav8IcLRxSIyp/9+IF2xJUM9h/OYjg0IJLHaL6F8oU8kqMz9nc1vryXhMsgXg==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.16.0", - "@babel/helper-environment-visitor": "^7.16.5", - "@babel/helper-function-name": "^7.16.0", - "@babel/helper-member-expression-to-functions": "^7.16.5", - "@babel/helper-optimise-call-expression": "^7.16.0", - "@babel/helper-replace-supers": "^7.16.5", - "@babel/helper-split-export-declaration": "^7.16.0" + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-member-expression-to-functions": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7" } }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.0.tgz", - "integrity": "sha512-3DyG0zAFAZKcOp7aVr33ddwkxJ0Z0Jr5V99y3I690eYLpukJsJvAbzTy1ewoCqsML8SbIrjH14Jc/nSQ4TvNPA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.7.tgz", + "integrity": "sha512-fk5A6ymfp+O5+p2yCkXAu5Kyj6v0xh0RBeNcAkYUMDvvAAoxvSKXn+Jb37t/yWFiQVDFK1ELpUTD8/aLhCPu+g==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-annotate-as-pure": "^7.16.7", "regexpu-core": "^4.7.1" } }, "@babel/helper-define-polyfill-provider": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.0.tgz", - "integrity": "sha512-7hfT8lUljl/tM3h+izTX/pO3W3frz2ok6Pk+gzys8iJqDfZrZy2pXjRTZAvG2YmfHun1X4q8/UZRLatMfqc5Tg==", + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz", + "integrity": "sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==", "dev": true, "requires": { "@babel/helper-compilation-targets": "^7.13.0", @@ -5379,131 +5380,131 @@ } }, "@babel/helper-environment-visitor": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.5.tgz", - "integrity": "sha512-ODQyc5AnxmZWm/R2W7fzhamOk1ey8gSguo5SGvF0zcB3uUzRpTRmM/jmLSm9bDMyPlvbyJ+PwPEK0BWIoZ9wjg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", + "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", "dev": true, "requires": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.16.7" } }, "@babel/helper-explode-assignable-expression": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.0.tgz", - "integrity": "sha512-Hk2SLxC9ZbcOhLpg/yMznzJ11W++lg5GMbxt1ev6TXUiJB0N42KPC+7w8a+eWGuqDnUYuwStJoZHM7RgmIOaGQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz", + "integrity": "sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ==", "dev": true, "requires": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.16.7" } }, "@babel/helper-function-name": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz", - "integrity": "sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz", + "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.16.0", - "@babel/template": "^7.16.0", - "@babel/types": "^7.16.0" + "@babel/helper-get-function-arity": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/types": "^7.16.7" } }, "@babel/helper-get-function-arity": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz", - "integrity": "sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz", + "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==", "dev": true, "requires": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.16.7" } }, "@babel/helper-hoist-variables": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz", - "integrity": "sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", + "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", "dev": true, "requires": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.16.7" } }, "@babel/helper-member-expression-to-functions": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.5.tgz", - "integrity": "sha512-7fecSXq7ZrLE+TWshbGT+HyCLkxloWNhTbU2QM1NTI/tDqyf0oZiMcEfYtDuUDCo528EOlt39G1rftea4bRZIw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.7.tgz", + "integrity": "sha512-VtJ/65tYiU/6AbMTDwyoXGPKHgTsfRarivm+YbB5uAzKUyuPjgZSgAFeG87FCigc7KNHu2Pegh1XIT3lXjvz3Q==", "dev": true, "requires": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.16.7" } }, "@babel/helper-module-imports": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz", - "integrity": "sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", + "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", "requires": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.16.7" } }, "@babel/helper-module-transforms": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.5.tgz", - "integrity": "sha512-CkvMxgV4ZyyioElFwcuWnDCcNIeyqTkCm9BxXZi73RR1ozqlpboqsbGUNvRTflgZtFbbJ1v5Emvm+lkjMYY/LQ==", - "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.16.5", - "@babel/helper-module-imports": "^7.16.0", - "@babel/helper-simple-access": "^7.16.0", - "@babel/helper-split-export-declaration": "^7.16.0", - "@babel/helper-validator-identifier": "^7.15.7", - "@babel/template": "^7.16.0", - "@babel/traverse": "^7.16.5", - "@babel/types": "^7.16.0" + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.7.tgz", + "integrity": "sha512-gaqtLDxJEFCeQbYp9aLAefjhkKdjKcdh6DB7jniIGU3Pz52WAmP268zK0VgPz9hUNkMSYeH976K2/Y6yPadpng==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-simple-access": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.16.7", + "@babel/types": "^7.16.7" } }, "@babel/helper-optimise-call-expression": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz", - "integrity": "sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz", + "integrity": "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==", "dev": true, "requires": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.16.7" } }, "@babel/helper-plugin-utils": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.5.tgz", - "integrity": "sha512-59KHWHXxVA9K4HNF4sbHCf+eJeFe0Te/ZFGqBT4OjXhrwvA04sGfaEGsVTdsjoszq0YTP49RC9UKe5g8uN2RwQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", "dev": true }, "@babel/helper-remap-async-to-generator": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.5.tgz", - "integrity": "sha512-X+aAJldyxrOmN9v3FKp+Hu1NO69VWgYgDGq6YDykwRPzxs5f2N+X988CBXS7EQahDU+Vpet5QYMqLk+nsp+Qxw==", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz", + "integrity": "sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.16.0", - "@babel/helper-wrap-function": "^7.16.5", - "@babel/types": "^7.16.0" + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-wrap-function": "^7.16.8", + "@babel/types": "^7.16.8" } }, "@babel/helper-replace-supers": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.5.tgz", - "integrity": "sha512-ao3seGVa/FZCMCCNDuBcqnBFSbdr8N2EW35mzojx3TwfIbdPmNK+JV6+2d5bR0Z71W5ocLnQp9en/cTF7pBJiQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz", + "integrity": "sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==", "dev": true, "requires": { - "@babel/helper-environment-visitor": "^7.16.5", - "@babel/helper-member-expression-to-functions": "^7.16.5", - "@babel/helper-optimise-call-expression": "^7.16.0", - "@babel/traverse": "^7.16.5", - "@babel/types": "^7.16.0" + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-member-expression-to-functions": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/traverse": "^7.16.7", + "@babel/types": "^7.16.7" } }, "@babel/helper-simple-access": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz", - "integrity": "sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz", + "integrity": "sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g==", "dev": true, "requires": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.16.7" } }, "@babel/helper-skip-transparent-expression-wrappers": { @@ -5516,240 +5517,240 @@ } }, "@babel/helper-split-export-declaration": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz", - "integrity": "sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", + "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", "dev": true, "requires": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.16.7" } }, "@babel/helper-validator-identifier": { - "version": "7.15.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", - "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==" + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", + "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==" }, "@babel/helper-validator-option": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", - "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", + "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", "dev": true }, "@babel/helper-wrap-function": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.5.tgz", - "integrity": "sha512-2J2pmLBqUqVdJw78U0KPNdeE2qeuIyKoG4mKV7wAq3mc4jJG282UgjZw4ZYDnqiWQuS3Y3IYdF/AQ6CpyBV3VA==", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz", + "integrity": "sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.16.0", - "@babel/template": "^7.16.0", - "@babel/traverse": "^7.16.5", - "@babel/types": "^7.16.0" + "@babel/helper-function-name": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.16.8", + "@babel/types": "^7.16.8" } }, "@babel/helpers": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.5.tgz", - "integrity": "sha512-TLgi6Lh71vvMZGEkFuIxzaPsyeYCHQ5jJOOX1f0xXn0uciFuE8cEk0wyBquMcCxBXZ5BJhE2aUB7pnWTD150Tw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.7.tgz", + "integrity": "sha512-9ZDoqtfY7AuEOt3cxchfii6C7GDyyMBffktR5B2jvWv8u2+efwvpnVKXMWzNehqy68tKgAfSwfdw/lWpthS2bw==", "dev": true, "requires": { - "@babel/template": "^7.16.0", - "@babel/traverse": "^7.16.5", - "@babel/types": "^7.16.0" + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.16.7", + "@babel/types": "^7.16.7" } }, "@babel/highlight": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", - "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz", + "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==", "requires": { - "@babel/helper-validator-identifier": "^7.15.7", + "@babel/helper-validator-identifier": "^7.16.7", "chalk": "^2.0.0", "js-tokens": "^4.0.0" } }, "@babel/parser": { - "version": "7.16.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.6.tgz", - "integrity": "sha512-Gr86ujcNuPDnNOY8mi383Hvi8IYrJVJYuf3XcuBM/Dgd+bINn/7tHqsj+tKkoreMbmGsFLsltI/JJd8fOFWGDQ==", + "version": "7.16.12", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.12.tgz", + "integrity": "sha512-VfaV15po8RiZssrkPweyvbGVSe4x2y+aciFCgn0n0/SJMR22cwofRV1mtnJQYcSB1wUTaA/X1LnA3es66MCO5A==", "dev": true }, "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.16.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.2.tgz", - "integrity": "sha512-h37CvpLSf8gb2lIJ2CgC3t+EjFbi0t8qS7LCS1xcJIlEXE4czlofwaW7W1HA8zpgOCzI9C1nmoqNR1zWkk0pQg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7.tgz", + "integrity": "sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.0.tgz", - "integrity": "sha512-4tcFwwicpWTrpl9qjf7UsoosaArgImF85AxqCRZlgc3IQDvkUHjJpruXAL58Wmj+T6fypWTC/BakfEkwIL/pwA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz", + "integrity": "sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", - "@babel/plugin-proposal-optional-chaining": "^7.16.0" + "@babel/plugin-proposal-optional-chaining": "^7.16.7" } }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.5.tgz", - "integrity": "sha512-C/FX+3HNLV6sz7AqbTQqEo1L9/kfrKjxcVtgyBCmvIgOjvuBVUWooDoi7trsLxOzCEo5FccjRvKHkfDsJFZlfA==", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz", + "integrity": "sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5", - "@babel/helper-remap-async-to-generator": "^7.16.5", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-remap-async-to-generator": "^7.16.8", "@babel/plugin-syntax-async-generators": "^7.8.4" } }, "@babel/plugin-proposal-class-properties": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.5.tgz", - "integrity": "sha512-pJD3HjgRv83s5dv1sTnDbZOaTjghKEz8KUn1Kbh2eAIRhGuyQ1XSeI4xVXU3UlIEVA3DAyIdxqT1eRn7Wcn55A==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz", + "integrity": "sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.16.5", - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-proposal-class-static-block": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.5.tgz", - "integrity": "sha512-EEFzuLZcm/rNJ8Q5krK+FRKdVkd6FjfzT9tuSZql9sQn64K0hHA2KLJ0DqVot9/iV6+SsuadC5yI39zWnm+nmQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.7.tgz", + "integrity": "sha512-dgqJJrcZoG/4CkMopzhPJjGxsIe9A8RlkQLnL/Vhhx8AA9ZuaRwGSlscSh42hazc7WSrya/IK7mTeoF0DP9tEw==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.16.5", - "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-class-static-block": "^7.14.5" } }, "@babel/plugin-proposal-dynamic-import": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.5.tgz", - "integrity": "sha512-P05/SJZTTvHz79LNYTF8ff5xXge0kk5sIIWAypcWgX4BTRUgyHc8wRxJ/Hk+mU0KXldgOOslKaeqnhthcDJCJQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz", + "integrity": "sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-dynamic-import": "^7.8.3" } }, "@babel/plugin-proposal-export-namespace-from": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.5.tgz", - "integrity": "sha512-i+sltzEShH1vsVydvNaTRsgvq2vZsfyrd7K7vPLUU/KgS0D5yZMe6uipM0+izminnkKrEfdUnz7CxMRb6oHZWw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz", + "integrity": "sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" } }, "@babel/plugin-proposal-json-strings": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.5.tgz", - "integrity": "sha512-QQJueTFa0y9E4qHANqIvMsuxM/qcLQmKttBACtPCQzGUEizsXDACGonlPiSwynHfOa3vNw0FPMVvQzbuXwh4SQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz", + "integrity": "sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-json-strings": "^7.8.3" } }, "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.5.tgz", - "integrity": "sha512-xqibl7ISO2vjuQM+MzR3rkd0zfNWltk7n9QhaD8ghMmMceVguYrNDt7MikRyj4J4v3QehpnrU8RYLnC7z/gZLA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz", + "integrity": "sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" } }, "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.5.tgz", - "integrity": "sha512-YwMsTp/oOviSBhrjwi0vzCUycseCYwoXnLiXIL3YNjHSMBHicGTz7GjVU/IGgz4DtOEXBdCNG72pvCX22ehfqg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz", + "integrity": "sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" } }, "@babel/plugin-proposal-numeric-separator": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.5.tgz", - "integrity": "sha512-DvB9l/TcsCRvsIV9v4jxR/jVP45cslTVC0PMVHvaJhhNuhn2Y1SOhCSFlPK777qLB5wb8rVDaNoqMTyOqtY5Iw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz", + "integrity": "sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-numeric-separator": "^7.10.4" } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.5.tgz", - "integrity": "sha512-UEd6KpChoyPhCoE840KRHOlGhEZFutdPDMGj+0I56yuTTOaT51GzmnEl/0uT41fB/vD2nT+Pci2KjezyE3HmUw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.7.tgz", + "integrity": "sha512-3O0Y4+dw94HA86qSg9IHfyPktgR7q3gpNVAeiKQd+8jBKFaU5NQS1Yatgo4wY+UFNuLjvxcSmzcsHqrhgTyBUA==", "dev": true, "requires": { "@babel/compat-data": "^7.16.4", - "@babel/helper-compilation-targets": "^7.16.3", - "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.16.5" + "@babel/plugin-transform-parameters": "^7.16.7" } }, "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.5.tgz", - "integrity": "sha512-ihCMxY1Iljmx4bWy/PIMJGXN4NS4oUj1MKynwO07kiKms23pNvIn1DMB92DNB2R0EA882sw0VXIelYGdtF7xEQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz", + "integrity": "sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" } }, "@babel/plugin-proposal-optional-chaining": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.5.tgz", - "integrity": "sha512-kzdHgnaXRonttiTfKYnSVafbWngPPr2qKw9BWYBESl91W54e+9R5pP70LtWxV56g0f05f/SQrwHYkfvbwcdQ/A==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz", + "integrity": "sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", "@babel/plugin-syntax-optional-chaining": "^7.8.3" } }, "@babel/plugin-proposal-private-methods": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.5.tgz", - "integrity": "sha512-+yFMO4BGT3sgzXo+lrq7orX5mAZt57DwUK6seqII6AcJnJOIhBJ8pzKH47/ql/d426uQ7YhN8DpUFirQzqYSUA==", + "version": "7.16.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz", + "integrity": "sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.16.5", - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-create-class-features-plugin": "^7.16.10", + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-proposal-private-property-in-object": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.5.tgz", - "integrity": "sha512-+YGh5Wbw0NH3y/E5YMu6ci5qTDmAEVNoZ3I54aB6nVEOZ5BQ7QJlwKq5pYVucQilMByGn/bvX0af+uNaPRCabA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz", + "integrity": "sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.16.0", - "@babel/helper-create-class-features-plugin": "^7.16.5", - "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/plugin-syntax-private-property-in-object": "^7.14.5" } }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.5.tgz", - "integrity": "sha512-s5sKtlKQyFSatt781HQwv1hoM5BQ9qRH30r+dK56OLDsHmV74mzwJNX7R1yMuE7VZKG5O6q/gmOGSAO6ikTudg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz", + "integrity": "sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.16.0", - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-syntax-async-generators": { @@ -5807,12 +5808,12 @@ } }, "@babel/plugin-syntax-jsx": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.5.tgz", - "integrity": "sha512-42OGssv9NPk4QHKVgIHlzeLgPOW5rGgfV5jzG90AhcXXIv6hu/eqj63w4VgvRxdvZY3AlYeDgPiSJ3BqAd1Y6Q==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.7.tgz", + "integrity": "sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-syntax-logical-assignment-operators": { @@ -5888,406 +5889,407 @@ } }, "@babel/plugin-syntax-typescript": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.0.tgz", - "integrity": "sha512-Xv6mEXqVdaqCBfJFyeab0fH2DnUoMsDmhamxsSi4j8nLd4Vtw213WMJr55xxqipC/YVWyPY3K0blJncPYji+dQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.7.tgz", + "integrity": "sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.5.tgz", - "integrity": "sha512-8bTHiiZyMOyfZFULjsCnYOWG059FVMes0iljEHSfARhNgFfpsqE92OrCffv3veSw9rwMkYcFe9bj0ZoXU2IGtQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz", + "integrity": "sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.5.tgz", - "integrity": "sha512-TMXgfioJnkXU+XRoj7P2ED7rUm5jbnDWwlCuFVTpQboMfbSya5WrmubNBAMlk7KXvywpo8rd8WuYZkis1o2H8w==", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz", + "integrity": "sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.16.0", - "@babel/helper-plugin-utils": "^7.16.5", - "@babel/helper-remap-async-to-generator": "^7.16.5" + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-remap-async-to-generator": "^7.16.8" } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.5.tgz", - "integrity": "sha512-BxmIyKLjUGksJ99+hJyL/HIxLIGnLKtw772zYDER7UuycDZ+Xvzs98ZQw6NGgM2ss4/hlFAaGiZmMNKvValEjw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz", + "integrity": "sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.5.tgz", - "integrity": "sha512-JxjSPNZSiOtmxjX7PBRBeRJTUKTyJ607YUYeT0QJCNdsedOe+/rXITjP08eG8xUpsLfPirgzdCFN+h0w6RI+pQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz", + "integrity": "sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-classes": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.5.tgz", - "integrity": "sha512-DzJ1vYf/7TaCYy57J3SJ9rV+JEuvmlnvvyvYKFbk5u46oQbBvuB9/0w+YsVsxkOv8zVWKpDmUoj4T5ILHoXevA==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.16.0", - "@babel/helper-environment-visitor": "^7.16.5", - "@babel/helper-function-name": "^7.16.0", - "@babel/helper-optimise-call-expression": "^7.16.0", - "@babel/helper-plugin-utils": "^7.16.5", - "@babel/helper-replace-supers": "^7.16.5", - "@babel/helper-split-export-declaration": "^7.16.0", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz", + "integrity": "sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", "globals": "^11.1.0" } }, "@babel/plugin-transform-computed-properties": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.5.tgz", - "integrity": "sha512-n1+O7xtU5lSLraRzX88CNcpl7vtGdPakKzww74bVwpAIRgz9JVLJJpOLb0uYqcOaXVM0TL6X0RVeIJGD2CnCkg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz", + "integrity": "sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-destructuring": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.5.tgz", - "integrity": "sha512-GuRVAsjq+c9YPK6NeTkRLWyQskDC099XkBSVO+6QzbnOnH2d/4mBVXYStaPrZD3dFRfg00I6BFJ9Atsjfs8mlg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.7.tgz", + "integrity": "sha512-VqAwhTHBnu5xBVDCvrvqJbtLUa++qZaWC0Fgr2mqokBlulZARGyIvZDoqbPlPaKImQ9dKAcCzbv+ul//uqu70A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.5.tgz", - "integrity": "sha512-iQiEMt8Q4/5aRGHpGVK2Zc7a6mx7qEAO7qehgSug3SDImnuMzgmm/wtJALXaz25zUj1PmnNHtShjFgk4PDx4nw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz", + "integrity": "sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.16.0", - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.5.tgz", - "integrity": "sha512-81tijpDg2a6I1Yhj4aWY1l3O1J4Cg/Pd7LfvuaH2VVInAkXtzibz9+zSPdUM1WvuUi128ksstAP0hM5w48vQgg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz", + "integrity": "sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.5.tgz", - "integrity": "sha512-12rba2HwemQPa7BLIKCzm1pT2/RuQHtSFHdNl41cFiC6oi4tcrp7gjB07pxQvFpcADojQywSjblQth6gJyE6CA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz", + "integrity": "sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==", "dev": true, "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.5", - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-for-of": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.5.tgz", - "integrity": "sha512-+DpCAJFPAvViR17PIMi9x2AE34dll5wNlXO43wagAX2YcRGgEVHCNFC4azG85b4YyyFarvkc/iD5NPrz4Oneqw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz", + "integrity": "sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-function-name": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.5.tgz", - "integrity": "sha512-Fuec/KPSpVLbGo6z1RPw4EE1X+z9gZk1uQmnYy7v4xr4TO9p41v1AoUuXEtyqAI7H+xNJYSICzRqZBhDEkd3kQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz", + "integrity": "sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.16.0", - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-literals": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.5.tgz", - "integrity": "sha512-B1j9C/IfvshnPcklsc93AVLTrNVa69iSqztylZH6qnmiAsDDOmmjEYqOm3Ts2lGSgTSywnBNiqC949VdD0/gfw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz", + "integrity": "sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-member-expression-literals": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.5.tgz", - "integrity": "sha512-d57i3vPHWgIde/9Y8W/xSFUndhvhZN5Wu2TjRrN1MVz5KzdUihKnfDVlfP1U7mS5DNj/WHHhaE4/tTi4hIyHwQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz", + "integrity": "sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.5.tgz", - "integrity": "sha512-oHI15S/hdJuSCfnwIz+4lm6wu/wBn7oJ8+QrkzPPwSFGXk8kgdI/AIKcbR/XnD1nQVMg/i6eNaXpszbGuwYDRQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz", + "integrity": "sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.16.5", - "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.5.tgz", - "integrity": "sha512-ABhUkxvoQyqhCWyb8xXtfwqNMJD7tx+irIRnUh6lmyFud7Jln1WzONXKlax1fg/ey178EXbs4bSGNd6PngO+SQ==", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.8.tgz", + "integrity": "sha512-oflKPvsLT2+uKQopesJt3ApiaIS2HW+hzHFcwRNtyDGieAeC/dIHZX8buJQ2J2X1rxGPy4eRcUijm3qcSPjYcA==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.16.5", - "@babel/helper-plugin-utils": "^7.16.5", - "@babel/helper-simple-access": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-simple-access": "^7.16.7", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.5.tgz", - "integrity": "sha512-53gmLdScNN28XpjEVIm7LbWnD/b/TpbwKbLk6KV4KqC9WyU6rq1jnNmVG6UgAdQZVVGZVoik3DqHNxk4/EvrjA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.7.tgz", + "integrity": "sha512-DuK5E3k+QQmnOqBR9UkusByy5WZWGRxfzV529s9nPra1GE7olmxfqO2FHobEOYSPIjPBTr4p66YDcjQnt8cBmw==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.16.0", - "@babel/helper-module-transforms": "^7.16.5", - "@babel/helper-plugin-utils": "^7.16.5", - "@babel/helper-validator-identifier": "^7.15.7", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-umd": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.5.tgz", - "integrity": "sha512-qTFnpxHMoenNHkS3VoWRdwrcJ3FhX567GvDA3hRZKF0Dj8Fmg0UzySZp3AP2mShl/bzcywb/UWAMQIjA1bhXvw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz", + "integrity": "sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.16.5", - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.5.tgz", - "integrity": "sha512-/wqGDgvFUeKELW6ex6QB7dLVRkd5ehjw34tpXu1nhKC0sFfmaLabIswnpf8JgDyV2NeDmZiwoOb0rAmxciNfjA==", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.8.tgz", + "integrity": "sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.16.0" + "@babel/helper-create-regexp-features-plugin": "^7.16.7" } }, "@babel/plugin-transform-new-target": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.5.tgz", - "integrity": "sha512-ZaIrnXF08ZC8jnKR4/5g7YakGVL6go6V9ql6Jl3ecO8PQaQqFE74CuM384kezju7Z9nGCCA20BqZaR1tJ/WvHg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz", + "integrity": "sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-object-super": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.5.tgz", - "integrity": "sha512-tded+yZEXuxt9Jdtkc1RraW1zMF/GalVxaVVxh41IYwirdRgyAxxxCKZ9XB7LxZqmsjfjALxupNE1MIz9KH+Zg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz", + "integrity": "sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5", - "@babel/helper-replace-supers": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7" } }, "@babel/plugin-transform-parameters": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.5.tgz", - "integrity": "sha512-B3O6AL5oPop1jAVg8CV+haeUte9oFuY85zu0jwnRNZZi3tVAbJriu5tag/oaO2kGaQM/7q7aGPBlTI5/sr9enA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz", + "integrity": "sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-property-literals": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.5.tgz", - "integrity": "sha512-+IRcVW71VdF9pEH/2R/Apab4a19LVvdVsr/gEeotH00vSDVlKD+XgfSIw+cgGWsjDB/ziqGv/pGoQZBIiQVXHg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz", + "integrity": "sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-react-display-name": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.16.5.tgz", - "integrity": "sha512-dHYCOnzSsXFz8UcdNQIHGvg94qPL/teF7CCiCEMRxmA1G2p5Mq4JnKVowCDxYfiQ9D7RstaAp9kwaSI+sXbnhw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.16.7.tgz", + "integrity": "sha512-qgIg8BcZgd0G/Cz916D5+9kqX0c7nPZyXaP8R2tLNN5tkyIZdG5fEwBrxwplzSnjC1jvQmyMNVwUCZPcbGY7Pg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-react-jsx": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.16.5.tgz", - "integrity": "sha512-+arLIz1d7kmwX0fKxTxbnoeG85ONSnLpvdODa4P3pc1sS7CV1hfmtYWufkW/oYsPnkDrEeQFxhUWcFnrXW7jQQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.16.7.tgz", + "integrity": "sha512-8D16ye66fxiE8m890w0BpPpngG9o9OVBBy0gH2E+2AR7qMR2ZpTYJEqLxAsoroenMId0p/wMW+Blc0meDgu0Ag==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.16.0", - "@babel/helper-module-imports": "^7.16.0", - "@babel/helper-plugin-utils": "^7.16.5", - "@babel/plugin-syntax-jsx": "^7.16.5", - "@babel/types": "^7.16.0" + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-jsx": "^7.16.7", + "@babel/types": "^7.16.7" } }, "@babel/plugin-transform-react-jsx-development": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.16.5.tgz", - "integrity": "sha512-uQSLacMZSGLCxOw20dzo1dmLlKkd+DsayoV54q3MHXhbqgPzoiGerZQgNPl/Ro8/OcXV2ugfnkx+rxdS0sN5Uw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.16.7.tgz", + "integrity": "sha512-RMvQWvpla+xy6MlBpPlrKZCMRs2AGiHOGHY3xRwl0pEeim348dDyxeH4xBsMPbIMhujeq7ihE702eM2Ew0Wo+A==", "dev": true, "requires": { - "@babel/plugin-transform-react-jsx": "^7.16.5" + "@babel/plugin-transform-react-jsx": "^7.16.7" } }, "@babel/plugin-transform-react-pure-annotations": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.16.5.tgz", - "integrity": "sha512-0nYU30hCxnCVCbRjSy9ahlhWZ2Sn6khbY4FqR91W+2RbSqkWEbVu2gXh45EqNy4Bq7sRU+H4i0/6YKwOSzh16A==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.16.7.tgz", + "integrity": "sha512-hs71ToC97k3QWxswh2ElzMFABXHvGiJ01IB1TbYQDGeWRKWz/MPUTh5jGExdHvosYKpnJW5Pm3S4+TA3FyX+GA==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.16.0", - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-regenerator": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.5.tgz", - "integrity": "sha512-2z+it2eVWU8TtQQRauvGUqZwLy4+7rTfo6wO4npr+fvvN1SW30ZF3O/ZRCNmTuu4F5MIP8OJhXAhRV5QMJOuYg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.7.tgz", + "integrity": "sha512-mF7jOgGYCkSJagJ6XCujSQg+6xC1M77/03K2oBmVJWoFGNUtnVJO4WHKJk3dnPC8HCcj4xBQP1Egm8DWh3Pb3Q==", "dev": true, "requires": { "regenerator-transform": "^0.14.2" } }, "@babel/plugin-transform-reserved-words": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.5.tgz", - "integrity": "sha512-aIB16u8lNcf7drkhXJRoggOxSTUAuihTSTfAcpynowGJOZiGf+Yvi7RuTwFzVYSYPmWyARsPqUGoZWWWxLiknw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz", + "integrity": "sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.5.tgz", - "integrity": "sha512-ZbuWVcY+MAXJuuW7qDoCwoxDUNClfZxoo7/4swVbOW1s/qYLOMHlm9YRWMsxMFuLs44eXsv4op1vAaBaBaDMVg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz", + "integrity": "sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-spread": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.5.tgz", - "integrity": "sha512-5d6l/cnG7Lw4tGHEoga4xSkYp1euP7LAtrah1h1PgJ3JY7yNsjybsxQAnVK4JbtReZ/8z6ASVmd3QhYYKLaKZw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz", + "integrity": "sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-plugin-utils": "^7.16.7", "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.5.tgz", - "integrity": "sha512-usYsuO1ID2LXxzuUxifgWtJemP7wL2uZtyrTVM4PKqsmJycdS4U4mGovL5xXkfUheds10Dd2PjoQLXw6zCsCbg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz", + "integrity": "sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-template-literals": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.5.tgz", - "integrity": "sha512-gnyKy9RyFhkovex4BjKWL3BVYzUDG6zC0gba7VMLbQoDuqMfJ1SDXs8k/XK41Mmt1Hyp4qNAvGFb9hKzdCqBRQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz", + "integrity": "sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.5.tgz", - "integrity": "sha512-ldxCkW180qbrvyCVDzAUZqB0TAeF8W/vGJoRcaf75awm6By+PxfJKvuqVAnq8N9wz5Xa6mSpM19OfVKKVmGHSQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz", + "integrity": "sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-typescript": { - "version": "7.16.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.16.1.tgz", - "integrity": "sha512-NO4XoryBng06jjw/qWEU2LhcLJr1tWkhpMam/H4eas/CDKMX/b2/Ylb6EI256Y7+FVPCawwSM1rrJNOpDiz+Lg==", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.16.8.tgz", + "integrity": "sha512-bHdQ9k7YpBDO2d0NVfkj51DpQcvwIzIusJ7mEUaMlbZq3Kt/U47j24inXZHQ5MDiYpCs+oZiwnXyKedE8+q7AQ==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.16.0", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-typescript": "^7.16.0" + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-typescript": "^7.16.7" } }, "@babel/plugin-transform-unicode-escapes": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.5.tgz", - "integrity": "sha512-shiCBHTIIChGLdyojsKQjoAyB8MBwat25lKM7MJjbe1hE0bgIppD+LX9afr41lLHOhqceqeWl4FkLp+Bgn9o1Q==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz", + "integrity": "sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.5.tgz", - "integrity": "sha512-GTJ4IW012tiPEMMubd7sD07iU9O/LOo8Q/oU4xNhcaq0Xn8+6TcUQaHtC8YxySo1T+ErQ8RaWogIEeFhKGNPzw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz", + "integrity": "sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.16.0", - "@babel/helper-plugin-utils": "^7.16.5" + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/preset-env": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.5.tgz", - "integrity": "sha512-MiJJW5pwsktG61NDxpZ4oJ1CKxM1ncam9bzRtx9g40/WkLRkxFP6mhpkYV0/DxcciqoiHicx291+eUQrXb/SfQ==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.16.4", - "@babel/helper-compilation-targets": "^7.16.3", - "@babel/helper-plugin-utils": "^7.16.5", - "@babel/helper-validator-option": "^7.14.5", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.2", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.0", - "@babel/plugin-proposal-async-generator-functions": "^7.16.5", - "@babel/plugin-proposal-class-properties": "^7.16.5", - "@babel/plugin-proposal-class-static-block": "^7.16.5", - "@babel/plugin-proposal-dynamic-import": "^7.16.5", - "@babel/plugin-proposal-export-namespace-from": "^7.16.5", - "@babel/plugin-proposal-json-strings": "^7.16.5", - "@babel/plugin-proposal-logical-assignment-operators": "^7.16.5", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.5", - "@babel/plugin-proposal-numeric-separator": "^7.16.5", - "@babel/plugin-proposal-object-rest-spread": "^7.16.5", - "@babel/plugin-proposal-optional-catch-binding": "^7.16.5", - "@babel/plugin-proposal-optional-chaining": "^7.16.5", - "@babel/plugin-proposal-private-methods": "^7.16.5", - "@babel/plugin-proposal-private-property-in-object": "^7.16.5", - "@babel/plugin-proposal-unicode-property-regex": "^7.16.5", + "version": "7.16.11", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.11.tgz", + "integrity": "sha512-qcmWG8R7ZW6WBRPZK//y+E3Cli151B20W1Rv7ln27vuPaXU/8TKms6jFdiJtF7UDTxcrb7mZd88tAeK9LjdT8g==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.16.8", + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-option": "^7.16.7", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.7", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.7", + "@babel/plugin-proposal-async-generator-functions": "^7.16.8", + "@babel/plugin-proposal-class-properties": "^7.16.7", + "@babel/plugin-proposal-class-static-block": "^7.16.7", + "@babel/plugin-proposal-dynamic-import": "^7.16.7", + "@babel/plugin-proposal-export-namespace-from": "^7.16.7", + "@babel/plugin-proposal-json-strings": "^7.16.7", + "@babel/plugin-proposal-logical-assignment-operators": "^7.16.7", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.7", + "@babel/plugin-proposal-numeric-separator": "^7.16.7", + "@babel/plugin-proposal-object-rest-spread": "^7.16.7", + "@babel/plugin-proposal-optional-catch-binding": "^7.16.7", + "@babel/plugin-proposal-optional-chaining": "^7.16.7", + "@babel/plugin-proposal-private-methods": "^7.16.11", + "@babel/plugin-proposal-private-property-in-object": "^7.16.7", + "@babel/plugin-proposal-unicode-property-regex": "^7.16.7", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", "@babel/plugin-syntax-class-static-block": "^7.14.5", @@ -6302,44 +6304,44 @@ "@babel/plugin-syntax-optional-chaining": "^7.8.3", "@babel/plugin-syntax-private-property-in-object": "^7.14.5", "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-transform-arrow-functions": "^7.16.5", - "@babel/plugin-transform-async-to-generator": "^7.16.5", - "@babel/plugin-transform-block-scoped-functions": "^7.16.5", - "@babel/plugin-transform-block-scoping": "^7.16.5", - "@babel/plugin-transform-classes": "^7.16.5", - "@babel/plugin-transform-computed-properties": "^7.16.5", - "@babel/plugin-transform-destructuring": "^7.16.5", - "@babel/plugin-transform-dotall-regex": "^7.16.5", - "@babel/plugin-transform-duplicate-keys": "^7.16.5", - "@babel/plugin-transform-exponentiation-operator": "^7.16.5", - "@babel/plugin-transform-for-of": "^7.16.5", - "@babel/plugin-transform-function-name": "^7.16.5", - "@babel/plugin-transform-literals": "^7.16.5", - "@babel/plugin-transform-member-expression-literals": "^7.16.5", - "@babel/plugin-transform-modules-amd": "^7.16.5", - "@babel/plugin-transform-modules-commonjs": "^7.16.5", - "@babel/plugin-transform-modules-systemjs": "^7.16.5", - "@babel/plugin-transform-modules-umd": "^7.16.5", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.5", - "@babel/plugin-transform-new-target": "^7.16.5", - "@babel/plugin-transform-object-super": "^7.16.5", - "@babel/plugin-transform-parameters": "^7.16.5", - "@babel/plugin-transform-property-literals": "^7.16.5", - "@babel/plugin-transform-regenerator": "^7.16.5", - "@babel/plugin-transform-reserved-words": "^7.16.5", - "@babel/plugin-transform-shorthand-properties": "^7.16.5", - "@babel/plugin-transform-spread": "^7.16.5", - "@babel/plugin-transform-sticky-regex": "^7.16.5", - "@babel/plugin-transform-template-literals": "^7.16.5", - "@babel/plugin-transform-typeof-symbol": "^7.16.5", - "@babel/plugin-transform-unicode-escapes": "^7.16.5", - "@babel/plugin-transform-unicode-regex": "^7.16.5", + "@babel/plugin-transform-arrow-functions": "^7.16.7", + "@babel/plugin-transform-async-to-generator": "^7.16.8", + "@babel/plugin-transform-block-scoped-functions": "^7.16.7", + "@babel/plugin-transform-block-scoping": "^7.16.7", + "@babel/plugin-transform-classes": "^7.16.7", + "@babel/plugin-transform-computed-properties": "^7.16.7", + "@babel/plugin-transform-destructuring": "^7.16.7", + "@babel/plugin-transform-dotall-regex": "^7.16.7", + "@babel/plugin-transform-duplicate-keys": "^7.16.7", + "@babel/plugin-transform-exponentiation-operator": "^7.16.7", + "@babel/plugin-transform-for-of": "^7.16.7", + "@babel/plugin-transform-function-name": "^7.16.7", + "@babel/plugin-transform-literals": "^7.16.7", + "@babel/plugin-transform-member-expression-literals": "^7.16.7", + "@babel/plugin-transform-modules-amd": "^7.16.7", + "@babel/plugin-transform-modules-commonjs": "^7.16.8", + "@babel/plugin-transform-modules-systemjs": "^7.16.7", + "@babel/plugin-transform-modules-umd": "^7.16.7", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.8", + "@babel/plugin-transform-new-target": "^7.16.7", + "@babel/plugin-transform-object-super": "^7.16.7", + "@babel/plugin-transform-parameters": "^7.16.7", + "@babel/plugin-transform-property-literals": "^7.16.7", + "@babel/plugin-transform-regenerator": "^7.16.7", + "@babel/plugin-transform-reserved-words": "^7.16.7", + "@babel/plugin-transform-shorthand-properties": "^7.16.7", + "@babel/plugin-transform-spread": "^7.16.7", + "@babel/plugin-transform-sticky-regex": "^7.16.7", + "@babel/plugin-transform-template-literals": "^7.16.7", + "@babel/plugin-transform-typeof-symbol": "^7.16.7", + "@babel/plugin-transform-unicode-escapes": "^7.16.7", + "@babel/plugin-transform-unicode-regex": "^7.16.7", "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.16.0", + "@babel/types": "^7.16.8", "babel-plugin-polyfill-corejs2": "^0.3.0", - "babel-plugin-polyfill-corejs3": "^0.4.0", + "babel-plugin-polyfill-corejs3": "^0.5.0", "babel-plugin-polyfill-regenerator": "^0.3.0", - "core-js-compat": "^3.19.1", + "core-js-compat": "^3.20.2", "semver": "^6.3.0" } }, @@ -6357,28 +6359,28 @@ } }, "@babel/preset-react": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.16.5.tgz", - "integrity": "sha512-3kzUOQeaxY/2vhPDS7CX/KGEGu/1bOYGvdRDJ2U5yjEz5o5jmIeTPLoiQBPGjfhPascLuW5OlMiPzwOOuB6txg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.16.7.tgz", + "integrity": "sha512-fWpyI8UM/HE6DfPBzD8LnhQ/OcH8AgTaqcqP2nGOXEUV+VKBR5JRN9hCk9ai+zQQ57vtm9oWeXguBCPNUjytgA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5", - "@babel/helper-validator-option": "^7.14.5", - "@babel/plugin-transform-react-display-name": "^7.16.5", - "@babel/plugin-transform-react-jsx": "^7.16.5", - "@babel/plugin-transform-react-jsx-development": "^7.16.5", - "@babel/plugin-transform-react-pure-annotations": "^7.16.5" + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-option": "^7.16.7", + "@babel/plugin-transform-react-display-name": "^7.16.7", + "@babel/plugin-transform-react-jsx": "^7.16.7", + "@babel/plugin-transform-react-jsx-development": "^7.16.7", + "@babel/plugin-transform-react-pure-annotations": "^7.16.7" } }, "@babel/preset-typescript": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.16.5.tgz", - "integrity": "sha512-lmAWRoJ9iOSvs3DqOndQpj8XqXkzaiQs50VG/zESiI9D3eoZhGriU675xNCr0UwvsuXrhMAGvyk1w+EVWF3u8Q==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.16.7.tgz", + "integrity": "sha512-WbVEmgXdIyvzB77AQjGBEyYPZx+8tTsO50XtfozQrkW8QB2rLJpH2lgx0TRw5EJrBxOZQ+wCcyPVQvS8tjEHpQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.5", - "@babel/helper-validator-option": "^7.14.5", - "@babel/plugin-transform-typescript": "^7.16.1" + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-option": "^7.16.7", + "@babel/plugin-transform-typescript": "^7.16.7" } }, "@babel/runtime": { @@ -6390,40 +6392,40 @@ } }, "@babel/template": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", - "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", + "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", "dev": true, "requires": { - "@babel/code-frame": "^7.16.0", - "@babel/parser": "^7.16.0", - "@babel/types": "^7.16.0" + "@babel/code-frame": "^7.16.7", + "@babel/parser": "^7.16.7", + "@babel/types": "^7.16.7" } }, "@babel/traverse": { - "version": "7.16.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.5.tgz", - "integrity": "sha512-FOCODAzqUMROikDYLYxl4nmwiLlu85rNqBML/A5hKRVXG2LV8d0iMqgPzdYTcIpjZEBB7D6UDU9vxRZiriASdQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.16.0", - "@babel/generator": "^7.16.5", - "@babel/helper-environment-visitor": "^7.16.5", - "@babel/helper-function-name": "^7.16.0", - "@babel/helper-hoist-variables": "^7.16.0", - "@babel/helper-split-export-declaration": "^7.16.0", - "@babel/parser": "^7.16.5", - "@babel/types": "^7.16.0", + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.10.tgz", + "integrity": "sha512-yzuaYXoRJBGMlBhsMJoUW7G1UmSb/eXr/JHYM/MsOJgavJibLwASijW7oXBdw3NQ6T0bW7Ty5P/VarOs9cHmqw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.16.8", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/parser": "^7.16.10", + "@babel/types": "^7.16.8", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", - "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.8.tgz", + "integrity": "sha512-smN2DQc5s4M7fntyjGtyIPbRJv6wW4rU/94fmYJ7PKQuZkC0qGMHXJbg6sNGt12JmVr4k5YaptI/XtiLJBnmIg==", "requires": { - "@babel/helper-validator-identifier": "^7.15.7", + "@babel/helper-validator-identifier": "^7.16.7", "to-fast-properties": "^2.0.0" } }, @@ -6727,25 +6729,25 @@ } }, "@webpack-cli/configtest": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.1.0.tgz", - "integrity": "sha512-ttOkEkoalEHa7RaFYpM0ErK1xc4twg3Am9hfHhL7MVqlHebnkYd2wuI/ZqTDj0cVzZho6PdinY0phFZV3O0Mzg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.1.1.tgz", + "integrity": "sha512-1FBc1f9G4P/AxMqIgfZgeOTuRnwZMten8E7zap5zgpPInnCrP8D4Q81+4CWIch8i/Nf7nXjP0v6CjjbHOrXhKg==", "dev": true, "requires": {} }, "@webpack-cli/info": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.4.0.tgz", - "integrity": "sha512-F6b+Man0rwE4n0409FyAJHStYA5OIZERxmnUfLVwv0mc0V1wLad3V7jqRlMkgKBeAq07jUvglacNaa6g9lOpuw==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.4.1.tgz", + "integrity": "sha512-PKVGmazEq3oAo46Q63tpMr4HipI3OPfP7LiNOEJg963RMgT0rqheag28NCML0o3GIzA3DmxP1ZIAv9oTX1CUIA==", "dev": true, "requires": { "envinfo": "^7.7.3" } }, "@webpack-cli/serve": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.6.0.tgz", - "integrity": "sha512-ZkVeqEmRpBV2GHvjjUZqEai2PpUbuq8Bqd//vEYsp63J8WyexI8ppCqVS3Zs0QADf6aWuPdU+0XsPI647PVlQA==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.6.1.tgz", + "integrity": "sha512-gNGTiTrjEVQ0OcVnzsRSqTxaBSr+dmTfm+qJsCDluky8uhdLWep7Gcr62QsAKHTMxjCS/8nEITsmFAhfIx+QSw==", "dev": true, "requires": {} }, @@ -6878,13 +6880,13 @@ } }, "babel-plugin-polyfill-corejs3": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.4.0.tgz", - "integrity": "sha512-YxFreYwUfglYKdLUGvIF2nJEsGwj+RhWSX/ije3D2vQPOXuyMLMtg/cCGMDpOA7Nd+MwlNdnGODbd2EwUZPlsw==", + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.1.tgz", + "integrity": "sha512-TihqEe4sQcb/QcPJvxe94/9RZuLQuF1+To4WqQcRvc+3J3gLCPIPgDKzGLG6zmQLfH3nn25heRuDNkS2KR4I8A==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.0", - "core-js-compat": "^3.18.0" + "@babel/helper-define-polyfill-provider": "^0.3.1", + "core-js-compat": "^3.20.0" } }, "babel-plugin-polyfill-regenerator": { @@ -6946,13 +6948,13 @@ } }, "browserslist": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.18.1.tgz", - "integrity": "sha512-8ScCzdpPwR2wQh8IT82CA2VgDwjHyqMovPBZSNH54+tm4Jk2pCuv90gmAdH6J84OCRWi0b4gMe6O6XPXuJnjgQ==", + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.1.tgz", + "integrity": "sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001280", - "electron-to-chromium": "^1.3.896", + "caniuse-lite": "^1.0.30001286", + "electron-to-chromium": "^1.4.17", "escalade": "^3.1.1", "node-releases": "^2.0.1", "picocolors": "^1.0.0" @@ -6980,9 +6982,9 @@ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" }, "caniuse-lite": { - "version": "1.0.30001282", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001282.tgz", - "integrity": "sha512-YhF/hG6nqBEllymSIjLtR2iWDDnChvhnVJqp+vloyt2tEHFG1yBR+ac2B/rOw0qOK0m0lEXU2dv4E/sMk5P9Kg==", + "version": "1.0.30001304", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001304.tgz", + "integrity": "sha512-bdsfZd6K6ap87AGqSHJP/s1V+U6Z5lyrcbBu3ovbCCf8cSYpwTtGrCBObMpJqwxfTbLW6YTIdbb1jEeTelcpYQ==", "dev": true }, "chalk": { @@ -7074,12 +7076,12 @@ } }, "core-js-compat": { - "version": "3.19.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.19.1.tgz", - "integrity": "sha512-Q/VJ7jAF/y68+aUsQJ/afPOewdsGkDtcMb40J8MbuWKlK3Y+wtHq8bTHKPj2WKWLIqmS5JhHs4CzHtz6pT2W6g==", + "version": "3.20.3", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.20.3.tgz", + "integrity": "sha512-c8M5h0IkNZ+I92QhIpuSijOxGAcj3lgpsWdkCqmUTZNwidujF4r3pi6x1DCN+Vcs5qTS2XWWMfWSuCqyupX8gw==", "dev": true, "requires": { - "browserslist": "^4.17.6", + "browserslist": "^4.19.1", "semver": "7.0.0" }, "dependencies": { @@ -7188,9 +7190,9 @@ "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==" }, "electron-to-chromium": { - "version": "1.3.904", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.904.tgz", - "integrity": "sha512-x5uZWXcVNYkTh4JubD7KSC1VMKz0vZwJUqVwY3ihsW0bst1BXDe494Uqbg3Y0fDGVjJqA8vEeGuvO5foyH2+qw==", + "version": "1.4.57", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.57.tgz", + "integrity": "sha512-FNC+P5K1n6pF+M0zIK+gFCoXcJhhzDViL3DRIGy2Fv5PohuSES1JHR7T+GlwxSxlzx4yYbsuzCZvHxcBSRCIOw==", "dev": true }, "emojis-list": { @@ -7498,9 +7500,9 @@ "dev": true }, "graceful-fs": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", - "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", + "version": "4.2.9", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", + "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==", "dev": true }, "has": { @@ -8028,9 +8030,9 @@ "dev": true }, "nanoid": { - "version": "3.1.30", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.30.tgz", - "integrity": "sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.2.0.tgz", + "integrity": "sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA==", "dev": true }, "neo-async": { @@ -8307,9 +8309,9 @@ "dev": true }, "prop-types": { - "version": "15.8.0", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.0.tgz", - "integrity": "sha512-fDGekdaHh65eI3lMi5OnErU6a8Ighg2KjcjQxO7m8VHyWjcPyj5kiOgV1LQDOOOgVy3+5FgjXvdSSX7B8/5/4g==", + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", "requires": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", @@ -8800,9 +8802,9 @@ } }, "typescript": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.4.tgz", - "integrity": "sha512-VgYs2A2QIRuGphtzFV7aQJduJ2gyfTljngLzjpfW9FoYZF6xuw1W0vW9ghCKLfcWrCFxK81CSGRAvS1pn4fIUg==", + "version": "4.5.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.5.tgz", + "integrity": "sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==", "dev": true }, "unbox-primitive": { @@ -8885,9 +8887,9 @@ } }, "webpack": { - "version": "5.65.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.65.0.tgz", - "integrity": "sha512-Q5or2o6EKs7+oKmJo7LaqZaMOlDWQse9Tm5l1WAfU/ujLGN5Pb0SqGeVkN/4bpPmEqEP5RnVhiqsOtWtUVwGRw==", + "version": "5.67.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.67.0.tgz", + "integrity": "sha512-LjFbfMh89xBDpUMgA1W9Ur6Rn/gnr2Cq1jjHFPo4v6a79/ypznSYbAyPgGhwsxBtMIaEmDD1oJoA7BEYw/Fbrw==", "dev": true, "requires": { "@types/eslint-scope": "^3.7.0", @@ -8904,7 +8906,7 @@ "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.4", + "graceful-fs": "^4.2.9", "json-parse-better-errors": "^1.0.2", "loader-runner": "^4.2.0", "mime-types": "^2.1.27", @@ -8913,19 +8915,19 @@ "tapable": "^2.1.1", "terser-webpack-plugin": "^5.1.3", "watchpack": "^2.3.1", - "webpack-sources": "^3.2.2" + "webpack-sources": "^3.2.3" } }, "webpack-cli": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.9.1.tgz", - "integrity": "sha512-JYRFVuyFpzDxMDB+v/nanUdQYcZtqFPGzmlW4s+UkPMFhSpfRNmf1z4AwYcHJVdvEFAM7FFCQdNTpsBYhDLusQ==", + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.9.2.tgz", + "integrity": "sha512-m3/AACnBBzK/kMTcxWHcZFPrw/eQuY4Df1TxvIWfWM2x7mRqBQCqKEd96oCUa9jkapLBaFfRce33eGDb4Pr7YQ==", "dev": true, "requires": { "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^1.1.0", - "@webpack-cli/info": "^1.4.0", - "@webpack-cli/serve": "^1.6.0", + "@webpack-cli/configtest": "^1.1.1", + "@webpack-cli/info": "^1.4.1", + "@webpack-cli/serve": "^1.6.1", "colorette": "^2.0.14", "commander": "^7.0.0", "execa": "^5.0.0", @@ -8955,9 +8957,9 @@ } }, "webpack-sources": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.2.tgz", - "integrity": "sha512-cp5qdmHnu5T8wRg2G3vZZHoJPN14aqQ89SyQ11NpGH5zEMDCclt49rzo+MaRazk7/UeILhAI+/sEtcM+7Fr0nw==", + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", "dev": true }, "which": { diff --git a/src/OrchardCore.Modules/OrchardCore.AuditTrail/package.json b/src/OrchardCore.Modules/OrchardCore.AuditTrail/package.json index 89599043fb6..264a63c8efc 100644 --- a/src/OrchardCore.Modules/OrchardCore.AuditTrail/package.json +++ b/src/OrchardCore.Modules/OrchardCore.AuditTrail/package.json @@ -12,23 +12,23 @@ "react-dom": "^16.0.0" }, "devDependencies": { - "@babel/cli": "^7.16.0", - "@babel/core": "^7.16.5", - "@babel/preset-env": "^7.16.5", - "@babel/preset-react": "^7.16.5", - "@babel/preset-typescript": "^7.16.5", + "@babel/cli": "^7.16.8", + "@babel/core": "^7.16.12", + "@babel/preset-env": "^7.16.11", + "@babel/preset-react": "^7.16.7", + "@babel/preset-typescript": "^7.16.7", "@types/react": "^17.0.38", "@types/react-dom": "^17.0.11", "assert": "^2.0.0", "css-loader": "^6.5.1", "null-loader": "^4.0.1", - "prop-types": "15.8.0", + "prop-types": "15.8.1", "sass-loader": "^12.4.0", "style-loader": "^3.3.1", "ts-loader": "^9.2.6", - "typescript": "^4.5.4", - "webpack": "^5.65.0", - "webpack-cli": "^4.9.1" + "typescript": "^4.5.5", + "webpack": "^5.67.0", + "webpack-cli": "^4.9.2" }, "scripts": { "build": "webpack --mode production" diff --git a/src/OrchardCore.Modules/OrchardCore.Media/wwwroot/Scripts/media.js b/src/OrchardCore.Modules/OrchardCore.Media/wwwroot/Scripts/media.js index ccac66636ae..a69bca45447 100644 --- a/src/OrchardCore.Modules/OrchardCore.Media/wwwroot/Scripts/media.js +++ b/src/OrchardCore.Modules/OrchardCore.Media/wwwroot/Scripts/media.js @@ -1725,1661 +1725,1661 @@ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" = } }); }); -function initializeAttachedMediaField(el, idOfUploadButton, uploadAction, mediaItemUrl, allowMultiple, allowMediaText, allowAnchors, tempUploadFolder) { - var target = $(document.getElementById($(el).data('for'))); - var initialPaths = target.data("init"); - var mediaFieldEditor = $(el); - var idprefix = mediaFieldEditor.attr("id"); - var mediaFieldApp; - mediaFieldApps.push(mediaFieldApp = new Vue({ - el: mediaFieldEditor.get(0), - data: { - mediaItems: [], - selectedMedia: null, - smallThumbs: false, - idPrefix: idprefix, - initialized: false, - allowMediaText: allowMediaText, - backupMediaText: '', - allowAnchors: allowAnchors, - backupAnchor: null - }, - created: function created() { - var self = this; - self.currentPrefs = JSON.parse(localStorage.getItem('mediaFieldPrefs')); - }, - computed: { - paths: { - get: function get() { - var mediaPaths = []; +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } - if (!this.initialized) { - return JSON.stringify(initialPaths); - } +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } - this.mediaItems.forEach(function (x) { - if (x.mediaPath === 'not-found') { - return; - } +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } - mediaPaths.push({ - path: x.mediaPath, - isRemoved: x.isRemoved, - isNew: x.isNew, - mediaText: x.mediaText, - anchor: x.anchor - }); - }); - return JSON.stringify(mediaPaths); - }, - set: function set(values) { - var self = this; - var mediaPaths = values || []; - var signal = $.Deferred(); - var items = []; - var length = 0; - mediaPaths.forEach(function (x, i) { - items.push({ - name: ' ' + x.path, - mime: '', - mediaPath: '', - anchor: x.anchor - }); // don't remove the space. Something different is needed or it wont react when the real name arrives. +var initialized; +var mediaApp; +var bus = new Vue(); - promise = $.when(signal).done(function () { - $.ajax({ - url: mediaItemUrl + "?path=" + encodeURIComponent(x.path), - method: 'GET', - success: function success(data) { - data.vuekey = data.name + i.toString(); // Because a unique key is required by Vue on v-for +function initializeMediaApplication(displayMediaApplication, mediaApplicationUrl, pathBase) { + if (initialized) { + return; + } - data.mediaText = x.mediaText; // This value is not returned from the ajax call. + initialized = true; - data.anchor = x.anchor; // This value is not returned from the ajax call. + if (!mediaApplicationUrl) { + console.error('mediaApplicationUrl variable is not defined'); + } - items.splice(i, 1, data); + $.ajax({ + url: mediaApplicationUrl, + method: 'GET', + success: function success(content) { + $('.ta-content').append(content); + $(document).trigger('mediaapplication:ready'); + var _root = { + name: $('#t-mediaLibrary').text(), + path: '', + folder: '', + isDirectory: true + }; + mediaApp = new Vue({ + el: '#mediaApp', + data: { + selectedFolder: {}, + mediaItems: [], + selectedMedias: [], + errors: [], + dragDropThumbnail: new Image(), + smallThumbs: false, + gridView: false, + mediaFilter: '', + sortBy: '', + sortAsc: true, + itemsInPage: [] + }, + created: function created() { + var self = this; + self.dragDropThumbnail.src = (pathBase || '') + '/OrchardCore.Media/Images/drag-thumbnail.png'; + bus.$on('folderSelected', function (folder) { + self.selectedFolder = folder; + }); + bus.$on('folderDeleted', function () { + self.selectRoot(); + }); + bus.$on('folderAdded', function (folder) { + self.selectedFolder = folder; + folder.selected = true; + }); + bus.$on('mediaListMoved', function (errorInfo) { + self.loadFolder(self.selectedFolder); - if (items.length === ++length) { - items.forEach(function (x) { - self.mediaItems.push(x); - }); - self.initialized = true; - } - }, - error: function error(_error) { - console.log(JSON.stringify(_error)); - items.splice(i, 1, { - name: x.path, - mime: '', - mediaPath: 'not-found', - mediaText: '', - anchor: { - x: 0.5, - y: 0.5 - } - }); + if (errorInfo) { + self.errors.push(errorInfo); + } + }); + bus.$on('mediaRenamed', function (newName, newPath, oldPath) { + var media = self.mediaItems.filter(function (item) { + return item.mediaPath === oldPath; + })[0]; + media.mediaPath = newPath; + media.name = newName; + }); + bus.$on('createFolderRequested', function (media) { + self.createFolder(); + }); + bus.$on('deleteFolderRequested', function (media) { + self.deleteFolder(); + }); // common handlers for actions in both grid and table view. - if (items.length === ++length) { - items.forEach(function (x) { - self.mediaItems.push(x); - }); - self.initialized = true; - } - } - }); - }); + bus.$on('sortChangeRequested', function (newSort) { + self.changeSort(newSort); }); - signal.resolve(); - } - }, - fileSize: function fileSize() { - return Math.round(this.selectedMedia.size / 1024); - }, - canAddMedia: function canAddMedia() { - var nonRemovedMediaItems = []; + bus.$on('mediaToggleRequested', function (media) { + self.toggleSelectionOfMedia(media); + }); + bus.$on('renameMediaRequested', function (media) { + self.renameMedia(media); + }); + bus.$on('deleteMediaRequested', function (media) { + self.deleteMediaItem(media); + }); + bus.$on('mediaDragStartRequested', function (media, e) { + self.handleDragStart(media, e); + }); // handler for pager events - for (var i = 0; i < this.mediaItems.length; i++) { - if (!this.mediaItems[i].isRemoved) { - nonRemovedMediaItems.push(this.mediaItems[i]); - } - } + bus.$on('pagerEvent', function (itemsInPage) { + self.itemsInPage = itemsInPage; + self.selectedMedias = []; + }); - return nonRemovedMediaItems.length === 0 || nonRemovedMediaItems.length > 0 && allowMultiple; - }, - thumbSize: function thumbSize() { - return this.smallThumbs ? 120 : 240; - }, - currentPrefs: { - get: function get() { - return { - smallThumbs: this.smallThumbs - }; - }, - set: function set(newPrefs) { - if (!newPrefs) { + if (!localStorage.getItem('mediaApplicationPrefs')) { + self.selectedFolder = _root; return; } - this.smallThumbs = newPrefs.smallThumbs; - } - } - }, - mounted: function mounted() { - var self = this; - self.paths = initialPaths; - self.$on('selectAndDeleteMediaRequested', function (media) { - self.selectAndDeleteMedia(media); - }); - self.$on('selectMediaRequested', function (media) { - self.selectMedia(media); - }); - var selector = '#' + idOfUploadButton; - var editorId = mediaFieldEditor.attr('id'); - $(selector).fileupload({ - limitConcurrentUploads: 20, - dropZone: $('#' + editorId), - dataType: 'json', - url: uploadAction, - add: function add(e, data) { - var count = data.files.length; - var i; + self.currentPrefs = JSON.parse(localStorage.getItem('mediaApplicationPrefs')); + }, + computed: { + isHome: function isHome() { + return this.selectedFolder == _root; + }, + parents: function parents() { + var p = []; + parentFolder = this.selectedFolder; - for (i = 0; i < count; i++) { - data.files[i].uploadName = self.getUniqueId() + data.files[i].name; - } + while (parentFolder && parentFolder.path != '') { + p.unshift(parentFolder); + parentFolder = parentFolder.parent; + } - data.submit(); - }, - formData: function formData() { - var antiForgeryToken = $("input[name=__RequestVerificationToken]").val(); - return [{ - name: 'path', - value: tempUploadFolder - }, { - name: '__RequestVerificationToken', - value: antiForgeryToken - }]; - }, - done: function done(e, data) { - var newMediaItems = []; - var errormsg = ""; + return p; + }, + root: function root() { + return _root; + }, + filteredMediaItems: function filteredMediaItems() { + var self = this; + self.selectedMedias = []; + var filtered = self.mediaItems.filter(function (item) { + return item.name.toLowerCase().indexOf(self.mediaFilter.toLowerCase()) > -1; + }); - if (data.result.files.length > 0) { - for (var i = 0; i < data.result.files.length; i++) { - data.result.files[i].isNew = true; //if error is defined probably the file type is not allowed + switch (self.sortBy) { + case 'size': + filtered.sort(function (a, b) { + return self.sortAsc ? a.size - b.size : b.size - a.size; + }); + break; - if (data.result.files[i].error === undefined || data.result.files[i].error === null) newMediaItems.push(data.result.files[i]);else errormsg += data.result.files[i].error + "\n"; - } - } + case 'mime': + filtered.sort(function (a, b) { + return self.sortAsc ? a.mime.toLowerCase().localeCompare(b.mime.toLowerCase()) : b.mime.toLowerCase().localeCompare(a.mime.toLowerCase()); + }); + break; - if (errormsg !== "") { - alert(errormsg); - return; - } + case 'lastModify': + filtered.sort(function (a, b) { + return self.sortAsc ? a.lastModify - b.lastModify : b.lastModify - a.lastModify; + }); + break; - console.log(newMediaItems); + default: + filtered.sort(function (a, b) { + return self.sortAsc ? a.name.toLowerCase().localeCompare(b.name.toLowerCase()) : b.name.toLowerCase().localeCompare(a.name.toLowerCase()); + }); + } - if (newMediaItems.length > 1 && allowMultiple === false) { - alert($('#onlyOneItemMessage').val()); - mediaFieldApp.mediaItems.push(newMediaItems[0]); - mediaFieldApp.initialized = true; - } else { - mediaFieldApp.mediaItems = mediaFieldApp.mediaItems.concat(newMediaItems); - mediaFieldApp.initialized = true; + return filtered; + }, + hiddenCount: function hiddenCount() { + var result = 0; + result = this.mediaItems.length - this.filteredMediaItems.length; + return result; + }, + thumbSize: function thumbSize() { + return this.smallThumbs ? 100 : 240; + }, + currentPrefs: { + get: function get() { + return { + smallThumbs: this.smallThumbs, + selectedFolder: this.selectedFolder, + gridView: this.gridView + }; + }, + set: function set(newPrefs) { + if (!newPrefs) { + return; + } + + this.smallThumbs = newPrefs.smallThumbs; + this.selectedFolder = newPrefs.selectedFolder; + this.gridView = newPrefs.gridView; + } } }, - error: function error(jqXHR, textStatus, errorThrown) { - console.log('error on upload!!'); - console.log(jqXHR); - console.log(textStatus); - console.log(errorThrown); - } - }); - }, - methods: { - selectMedia: function selectMedia(media) { - this.selectedMedia = media; - }, - getUniqueId: function getUniqueId() { - return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { - var r = Math.random() * 16 | 0, - v = c === 'x' ? r : r & 0x3 | 0x8; - return v.toString(16); - }); - }, - removeSelected: function removeSelected(event) { - var removed = {}; - - if (this.selectedMedia) { - var index = this.mediaItems && this.mediaItems.indexOf(this.selectedMedia); - - if (index > -1) { - removed = this.mediaItems[index]; - removed.isRemoved = true; //this.mediaItems.splice([index], 1, removed); - - this.mediaItems.splice(index, 1); + watch: { + currentPrefs: function currentPrefs(newPrefs) { + localStorage.setItem('mediaApplicationPrefs', JSON.stringify(newPrefs)); + }, + selectedFolder: function selectedFolder(newFolder) { + this.mediaFilter = ''; + this.selectedFolder = newFolder; + this.loadFolder(newFolder); } - } else { - // The remove button can also remove a unique media item - if (this.mediaItems.length === 1) { - removed = this.mediaItems[index]; - removed.isRemoved = true; //this.mediaItems.splice(0, 1, removed); + }, + mounted: function mounted() { + this.$refs.rootFolder.toggle(); + }, + methods: { + uploadUrl: function uploadUrl() { + return this.selectedFolder ? $('#uploadFiles').val() + "?path=" + encodeURIComponent(this.selectedFolder.path) : null; + }, + selectRoot: function selectRoot() { + this.selectedFolder = this.root; + }, + loadFolder: function loadFolder(folder) { + this.errors = []; + this.selectedMedias = []; + var self = this; + $.ajax({ + url: $('#getMediaItemsUrl').val() + "?path=" + encodeURIComponent(folder.path), + method: 'GET', + success: function success(data) { + data.forEach(function (item) { + item.open = false; + }); + self.mediaItems = data; + self.selectedMedias = []; + self.sortBy = ''; + self.sortAsc = true; + }, + error: function error(_error) { + console.log('error loading folder:' + folder.path); + self.selectRoot(); + } + }); + }, + selectAll: function selectAll() { + this.selectedMedias = []; - this.mediaItems.splice(0, 1); - } - } + for (var i = 0; i < this.filteredMediaItems.length; i++) { + this.selectedMedias.push(this.filteredMediaItems[i]); + } + }, + unSelectAll: function unSelectAll() { + this.selectedMedias = []; + }, + invertSelection: function invertSelection() { + var temp = []; - this.selectedMedia = null; - }, - showMediaTextModal: function showMediaTextModal(event) { - $(this.$refs.mediaTextModal).modal(); - this.backupMediaText = this.selectedMedia.mediaText; - }, - cancelMediaTextModal: function cancelMediaTextModal(event) { - $(this.$refs.mediaTextModal).modal('hide'); - this.selectedMedia.mediaText = this.backupMediaText; - }, - showAnchorModal: function showAnchorModal(event) { - $(this.$refs.anchoringModal).modal(); // Cause a refresh to recalc heights. + for (var i = 0; i < this.filteredMediaItems.length; i++) { + if (this.isMediaSelected(this.filteredMediaItems[i]) == false) { + temp.push(this.filteredMediaItems[i]); + } + } - this.selectedMedia.anchor = { - x: this.selectedMedia.anchor.x, - y: this.selectedMedia.anchor.y - }; - this.backupAnchor = this.selectedMedia.anchor; - }, - cancelAnchoringModal: function cancelAnchoringModal(event) { - $(this.$refs.anchoringModal).modal('hide'); - this.selectedMedia.anchor = this.backupAnchor; - }, - resetAnchor: function resetAnchor(event) { - this.selectedMedia.anchor = { - x: 0.5, - y: 0.5 - }; - }, - onAnchorDrop: function onAnchorDrop(event) { - var image = this.$refs.anchorImage; - this.selectedMedia.anchor = { - x: event.offsetX / image.clientWidth, - y: event.offsetY / image.clientHeight - }; - }, - anchorLeft: function anchorLeft() { - if (this.$refs.anchorImage && this.$refs.modalBody && this.selectedMedia) { - // When image is shrunk compare against the modal body. - var offset = (this.$refs.modalBody.clientWidth - this.$refs.anchorImage.clientWidth) / 2; - var position = this.selectedMedia.anchor.x * this.$refs.anchorImage.clientWidth + offset; + this.selectedMedias = temp; + }, + toggleSelectionOfMedia: function toggleSelectionOfMedia(media) { + if (this.isMediaSelected(media) == true) { + this.selectedMedias.splice(this.selectedMedias.indexOf(media), 1); + } else { + this.selectedMedias.push(media); + } + }, + isMediaSelected: function isMediaSelected(media) { + var result = this.selectedMedias.some(function (element, index, array) { + return element.url.toLowerCase() === media.url.toLowerCase(); + }); + return result; + }, + deleteFolder: function deleteFolder() { + var folder = this.selectedFolder; + var self = this; // The root folder can't be deleted - if (position < 17) { - // Adjust so the target doesn't show outside image. - position = 17; - } else { - position = position - 8; // Adjust to hit the mouse pointer. - } + if (folder == this.root.model) { + return; + } - return position + 'px'; - } else { - return '0'; - } - }, - anchorTop: function anchorTop() { - if (this.$refs.anchorImage && this.selectedMedia) { - var position = this.selectedMedia.anchor.y * this.$refs.anchorImage.clientHeight; + confirmDialog(_objectSpread(_objectSpread({}, $("#deleteFolder").data()), {}, { + callback: function callback(resp) { + if (resp) { + $.ajax({ + url: $('#deleteFolderUrl').val() + "?path=" + encodeURIComponent(folder.path), + method: 'POST', + data: { + __RequestVerificationToken: $("input[name='__RequestVerificationToken']").val() + }, + success: function success(data) { + bus.$emit('deleteFolder', folder); + }, + error: function error(_error2) { + console.error(_error2.responseText); + } + }); + } + } + })); + }, + createFolder: function createFolder() { + $('#createFolderModal-errors').empty(); + $('#createFolderModal').modal('show'); + $('#createFolderModal .modal-body input').val('').focus(); + }, + renameMedia: function renameMedia(media) { + $('#renameMediaModal-errors').empty(); + $('#renameMediaModal').modal('show'); + $('#old-item-name').val(media.name); + $('#renameMediaModal .modal-body input').val(media.name).focus(); + }, + selectAndDeleteMedia: function selectAndDeleteMedia(media) { + this.deleteMedia(); + }, + deleteMediaList: function deleteMediaList() { + var mediaList = this.selectedMedias; + var self = this; - if (position < 15) { - // Adjustment so the target doesn't show outside image. - position = 15; - } else { - position = position + 5; // Adjust to hit the mouse pointer. - } + if (mediaList.length < 1) { + return; + } - return position + 'px'; - } else { - return '0'; - } - }, - setAnchor: function setAnchor(event) { - var image = this.$refs.anchorImage; - this.selectedMedia.anchor = { - x: event.offsetX / image.clientWidth, - y: event.offsetY / image.clientHeight - }; - }, - addMediaFiles: function addMediaFiles(files) { - if (files.length > 1 && allowMultiple === false) { - alert($('#onlyOneItemMessage').val()); - mediaFieldApp.mediaItems.push(files[0]); - mediaFieldApp.initialized = true; - } else { - mediaFieldApp.mediaItems = mediaFieldApp.mediaItems.concat(files); - mediaFieldApp.initialized = true; - } - }, - selectAndDeleteMedia: function selectAndDeleteMedia(media) { - var self = this; - self.selectedMedia = media; // setTimeout because sometimes - // removeSelected was called even before the media was set. + confirmDialog(_objectSpread(_objectSpread({}, $("#deleteMedia").data()), {}, { + callback: function callback(resp) { + if (resp) { + var paths = []; - setTimeout(function () { - self.removeSelected(); - }, 100); - } - }, - watch: { - mediaItems: { - deep: true, - handler: function handler() { - // Trigger preview rendering - setTimeout(function () { - $(document).trigger('contentpreview:render'); - }, 100); - } - }, - currentPrefs: function currentPrefs(newPrefs) { - localStorage.setItem('mediaFieldPrefs', JSON.stringify(newPrefs)); - } - } - })); -} -function initializeMediaField(el, modalBodyElement, mediaItemUrl, allowMultiple, allowMediaText, allowAnchors) { - var target = $(document.getElementById($(el).data('for'))); - var initialPaths = target.data("init"); - var mediaFieldEditor = $(el); - var idprefix = mediaFieldEditor.attr("id"); - var mediaFieldApp; - mediaFieldApps.push(mediaFieldApp = new Vue({ - el: mediaFieldEditor.get(0), - data: { - mediaItems: [], - selectedMedia: null, - smallThumbs: false, - idPrefix: idprefix, - initialized: false, - allowMediaText: allowMediaText, - backupMediaText: '', - allowAnchors: allowAnchors, - backupAnchor: null - }, - created: function created() { - var self = this; - self.currentPrefs = JSON.parse(localStorage.getItem('mediaFieldPrefs')); - }, - computed: { - paths: { - get: function get() { - var mediaPaths = []; + for (var i = 0; i < mediaList.length; i++) { + paths.push(mediaList[i].mediaPath); + } - if (!this.initialized) { - return JSON.stringify(initialPaths); - } + $.ajax({ + url: $('#deleteMediaListUrl').val(), + method: 'POST', + data: { + __RequestVerificationToken: $("input[name='__RequestVerificationToken']").val(), + paths: paths + }, + success: function success(data) { + for (var i = 0; i < self.selectedMedias.length; i++) { + var index = self.mediaItems && self.mediaItems.indexOf(self.selectedMedias[i]); - this.mediaItems.forEach(function (x) { - if (x.mediaPath === 'not-found') { - return; - } + if (index > -1) { + self.mediaItems.splice(index, 1); + bus.$emit('mediaDeleted', self.selectedMedias[i]); + } + } - mediaPaths.push({ - path: x.mediaPath, - mediaText: x.mediaText, - anchor: x.anchor - }); - }); - return JSON.stringify(mediaPaths); - }, - set: function set(values) { - var self = this; - var mediaPaths = values || []; - var signal = $.Deferred(); - var items = []; - var length = 0; - mediaPaths.forEach(function (x, i) { - items.push({ - name: ' ' + x.path, - mime: '', - mediaPath: '' - }); // don't remove the space. Something different is needed or it wont react when the real name arrives. + self.selectedMedias = []; + }, + error: function error(_error3) { + console.error(_error3.responseText); + } + }); + } + } + })); + }, + deleteMediaItem: function deleteMediaItem(media) { + var self = this; - promise = $.when(signal).done(function () { - $.ajax({ - url: mediaItemUrl + "?path=" + encodeURIComponent(x.path), - method: 'GET', - success: function success(data) { - data.vuekey = data.name + i.toString(); - data.mediaText = x.mediaText; // This value is not returned from the ajax call. + if (!media) { + return; + } - data.anchor = x.anchor; // This value is not returned from the ajax call. + confirmDialog(_objectSpread(_objectSpread({}, $("#deleteMedia").data()), {}, { + callback: function callback(resp) { + if (resp) { + $.ajax({ + url: $('#deleteMediaUrl').val() + "?path=" + encodeURIComponent(media.mediaPath), + method: 'POST', + data: { + __RequestVerificationToken: $("input[name='__RequestVerificationToken']").val() + }, + success: function success(data) { + var index = self.mediaItems && self.mediaItems.indexOf(media); - items.splice(i, 1, data); + if (index > -1) { + self.mediaItems.splice(index, 1); + bus.$emit('mediaDeleted', media); + } //self.selectedMedia = null; - if (items.length === ++length) { - items.forEach(function (y) { - self.mediaItems.push(y); - }); - self.initialized = true; - } - }, - error: function error(_error) { - console.log(_error); - items.splice(i, 1, { - name: x.path, - mime: '', - mediaPath: 'not-found', - mediaText: '', - anchor: { - x: 0, - y: 0 + }, + error: function error(_error4) { + console.error(_error4.responseText); } }); - - if (items.length === ++length) { - items.forEach(function (x) { - self.mediaItems.push(x); - }); - self.initialized = true; - } } - }); - }); - }); - signal.resolve(); - } - }, - fileSize: function fileSize() { - return Math.round(this.selectedMedia.size / 1024); - }, - canAddMedia: function canAddMedia() { - return this.mediaItems.length === 0 || this.mediaItems.length > 0 && allowMultiple; - }, - thumbSize: function thumbSize() { - return this.smallThumbs ? 120 : 240; - }, - currentPrefs: { - get: function get() { - return { - smallThumbs: this.smallThumbs - }; - }, - set: function set(newPrefs) { - if (!newPrefs) { - return; - } + } + })); + }, + handleDragStart: function handleDragStart(media, e) { + // first part of move media to folder: + // prepare the data that will be handled by the folder component on drop event + var mediaNames = []; + this.selectedMedias.forEach(function (item) { + mediaNames.push(item.name); + }); // in case the user drags an unselected item, we select it first - this.smallThumbs = newPrefs.smallThumbs; + if (this.isMediaSelected(media) == false) { + mediaNames.push(media.name); + this.selectedMedias.push(media); + } + + e.dataTransfer.setData('mediaNames', JSON.stringify(mediaNames)); + e.dataTransfer.setData('sourceFolder', this.selectedFolder.path); + e.dataTransfer.setDragImage(this.dragDropThumbnail, 10, 10); + e.dataTransfer.effectAllowed = 'move'; + }, + handleScrollWhileDrag: function handleScrollWhileDrag(e) { + if (e.clientY < 150) { + window.scrollBy(0, -10); + } + + if (e.clientY > window.innerHeight - 100) { + window.scrollBy(0, 10); + } + }, + changeSort: function changeSort(newSort) { + if (this.sortBy == newSort) { + this.sortAsc = !this.sortAsc; + } else { + this.sortAsc = true; + this.sortBy = newSort; + } + } } - } - }, - mounted: function mounted() { - var self = this; - self.paths = initialPaths; - self.$on('selectAndDeleteMediaRequested', function (media) { - self.selectAndDeleteMedia(media); - }); - self.$on('selectMediaRequested', function (media) { - self.selectMedia(media); - }); - self.$on('filesUploaded', function (files) { - self.addMediaFiles(files); }); - }, - methods: { - selectMedia: function selectMedia(media) { - this.selectedMedia = media; - }, - showModal: function showModal(event) { - var self = this; - - if (self.canAddMedia) { - $("#mediaApp").detach().appendTo($(modalBodyElement).find('.modal-body')); - $("#mediaApp").show(); - var modal = $(modalBodyElement).modal(); - $(modalBodyElement).find('.mediaFieldSelectButton').off('click').on('click', function (v) { - self.addMediaFiles(mediaApp.selectedMedias); // we don't want the included medias to be still selected the next time we open the modal. + $('#create-folder-name').keypress(function (e) { + var key = e.which; - mediaApp.selectedMedias = []; - modal.modal('hide'); - return true; - }); + if (key == 13) { + // the enter key code + $('#modalFooterOk').click(); + return false; } - }, - showMediaTextModal: function showMediaTextModal(event) { - $(this.$refs.mediaTextModal).modal(); - this.backupMediaText = this.selectedMedia.mediaText; - }, - cancelMediaTextModal: function cancelMediaTextModal(event) { - $(this.$refs.mediaTextModal).modal('hide'); - this.selectedMedia.mediaText = this.backupMediaText; - }, - showAnchorModal: function showAnchorModal(event) { - $(this.$refs.anchoringModal).modal(); // Cause a refresh to recalc heights. + }); + $('#modalFooterOk').on('click', function (e) { + var name = $('#create-folder-name').val(); - this.selectedMedia.anchor = { - x: this.selectedMedia.anchor.x, - y: this.selectedMedia.anchor.y - }; - this.backupAnchor = this.selectedMedia.anchor; - }, - cancelAnchoringModal: function cancelAnchoringModal(event) { - $(this.$refs.anchoringModal).modal('hide'); - this.selectedMedia.anchor = this.backupAnchor; - }, - resetAnchor: function resetAnchor(event) { - this.selectedMedia.anchor = { - x: 0.5, - y: 0.5 - }; - }, - onAnchorDrop: function onAnchorDrop(event) { - var image = this.$refs.anchorImage; - this.selectedMedia.anchor = { - x: event.offsetX / image.clientWidth, - y: event.offsetY / image.clientHeight - }; - }, - anchorLeft: function anchorLeft() { - if (this.$refs.anchorImage && this.$refs.modalBody && this.selectedMedia) { - // When image is shrunk compare against the modal body. - var offset = (this.$refs.modalBody.clientWidth - this.$refs.anchorImage.clientWidth) / 2; - var position = this.selectedMedia.anchor.x * this.$refs.anchorImage.clientWidth + offset; - var anchorIcon = Math.round(this.$refs.modalBody.querySelector('.icon-media-anchor').clientWidth); + if (name === "") { + return; + } - if (Number.isInteger(anchorIcon)) { - position = position - anchorIcon / 2; + $.ajax({ + url: $('#createFolderUrl').val() + "?path=" + encodeURIComponent(mediaApp.selectedFolder.path) + "&name=" + encodeURIComponent(name), + method: 'POST', + data: { + __RequestVerificationToken: $("input[name='__RequestVerificationToken']").val() + }, + success: function success(data) { + bus.$emit('addFolder', mediaApp.selectedFolder, data); + $('#createFolderModal').modal('hide'); + }, + error: function error(_error5) { + $('#createFolderModal-errors').empty(); + var errorMessage = JSON.parse(_error5.responseText).value; + $('').text(errorMessage).appendTo($('#createFolderModal-errors')); } + }); + }); + $('#renameMediaModalFooterOk').on('click', function (e) { + var newName = $('#new-item-name').val(); + var oldName = $('#old-item-name').val(); - return position + 'px'; - } else { - return '0'; - } - }, - anchorTop: function anchorTop() { - if (this.$refs.anchorImage && this.selectedMedia) { - var position = this.selectedMedia.anchor.y * this.$refs.anchorImage.clientHeight; - return position + 'px'; - } else { - return '0'; + if (newName === "") { + return; } - }, - setAnchor: function setAnchor(event) { - var image = this.$refs.anchorImage; - this.selectedMedia.anchor = { - x: event.offsetX / image.clientWidth, - y: event.offsetY / image.clientHeight - }; - }, - addMediaFiles: function addMediaFiles(files) { - if (files.length > 1 && allowMultiple === false) { - alert($('#onlyOneItemMessage').val()); - mediaFieldApp.mediaItems.push(files[0]); - mediaFieldApp.initialized = true; - } else { - mediaFieldApp.mediaItems = mediaFieldApp.mediaItems.concat(files); - mediaFieldApp.initialized = true; + + var currentFolder = mediaApp.selectedFolder.path + "/"; + + if (currentFolder === "/") { + currentFolder = ""; } - }, - removeSelected: function removeSelected(event) { - if (this.selectedMedia) { - var index = this.mediaItems && this.mediaItems.indexOf(this.selectedMedia); - if (index > -1) { - this.mediaItems.splice(index, 1); - } - } else { - // The remove button can also remove a unique media item - if (this.mediaItems.length === 1) { - this.mediaItems.splice(0, 1); - } + var newPath = currentFolder + newName; + var oldPath = currentFolder + oldName; + + if (newPath.toLowerCase() === oldPath.toLowerCase()) { + $('#renameMediaModal').modal('hide'); + return; } - this.selectedMedia = null; - }, - selectAndDeleteMedia: function selectAndDeleteMedia(media) { - var self = this; - self.selectedMedia = media; // setTimeout because sometimes removeSelected was called even before the media was set. + $.ajax({ + url: $('#renameMediaUrl').val() + "?oldPath=" + encodeURIComponent(oldPath) + "&newPath=" + encodeURIComponent(newPath), + method: 'POST', + data: { + __RequestVerificationToken: $("input[name='__RequestVerificationToken']").val() + }, + success: function success(data) { + $('#renameMediaModal').modal('hide'); + bus.$emit('mediaRenamed', newName, newPath, oldPath); + }, + error: function error(_error6) { + $('#renameMediaModal-errors').empty(); + var errorMessage = JSON.parse(_error6.responseText).value; + $('').text(errorMessage).appendTo($('#renameMediaModal-errors')); + } + }); + }); - setTimeout(function () { - self.removeSelected(); - }, 100); + if (displayMediaApplication) { + document.getElementById('mediaApp').style.display = ""; } + + $(document).trigger('mediaApp:ready'); }, - watch: { - mediaItems: { - deep: true, - handler: function handler() { - // Trigger preview rendering - setTimeout(function () { - $(document).trigger('contentpreview:render'); - }, 100); - } - }, - currentPrefs: function currentPrefs(newPrefs) { - localStorage.setItem('mediaFieldPrefs', JSON.stringify(newPrefs)); - } + error: function error(_error7) { + console.error(_error7.responseText); } - })); + }); } -// different media field editors will add themselves to this array -var mediaFieldApps = []; -// component -// different media field editors share this component to present the thumbs. -Vue.component('mediaFieldThumbsContainer', { - template: '\ -
\ -
\ -
\ - {{T.noImages}}\ -
\ -
\ - \ -
  • \ -
    \ -
    \ - \ - \ -
    \ -
    \ - \ - \ - {{ media.isNew ? media.name.substr(36) : media.name }}\ -
    \ -
    \ -
    \ -
    \ - \ - {{ T.mediaNotFound }}\ - {{ T.discardWarning }}\ -
    \ -
    \ - \ - {{ media.name }}\ -
    \ -
    \ -
  • \ -
    \ -
    \ - ', +$(document).on('mediaApp:ready', function () { + $('#fileupload').fileupload({ + dropZone: $('#mediaApp'), + limitConcurrentUploads: 20, + dataType: 'json', + url: $('#uploadFiles').val(), + formData: function formData() { + var antiForgeryToken = $("input[name=__RequestVerificationToken]").val(); + return [{ + name: 'path', + value: mediaApp.selectedFolder.path + }, { + name: '__RequestVerificationToken', + value: antiForgeryToken + }]; + }, + done: function done(e, data) { + $.each(data.result.files, function (index, file) { + if (!file.error) { + mediaApp.mediaItems.push(file); + } + }); + } + }); +}); +$(document).bind('dragover', function (e) { + var dt = e.originalEvent.dataTransfer; + + if (dt.types && (dt.types.indexOf ? dt.types.indexOf('Files') != -1 : dt.types.contains('Files'))) { + var dropZone = $('#customdropzone'), + timeout = window.dropZoneTimeout; + + if (timeout) { + clearTimeout(timeout); + } else { + dropZone.addClass('in'); + } + + var hoveredDropZone = $(e.target).closest(dropZone); + window.dropZoneTimeout = setTimeout(function () { + window.dropZoneTimeout = null; + dropZone.removeClass('in'); + }, 100); + } +}); +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +// component +Vue.component('folder', { + template: "\n
  • \n
    \n \n \n
    {{model.name}}
    \n
    \n \n \n
    \n \n
    \n
      \n \n \n
    \n
  • \n "), + props: { + model: Object, + selectedInMediaApp: Object, + level: Number + }, data: function data() { return { - T: {} + open: false, + children: null, + // not initialized state (for lazy-loading) + parent: null, + isHovered: false, + padding: 0 }; }, - props: { - mediaItems: Array, - selectedMedia: Object, - thumbSize: Number, - idPrefix: String + computed: { + empty: function empty() { + return !this.children || this.children.length == 0; + }, + isSelected: function isSelected() { + return this.selectedInMediaApp.name == this.model.name && this.selectedInMediaApp.path == this.model.path; + }, + isRoot: function isRoot() { + return this.model.path === ''; + } + }, + mounted: function mounted() { + if (this.isRoot == false && this.isAncestorOfSelectedFolder()) { + this.toggle(); + } + + this.padding = this.level < 3 ? 16 : 16 + this.level * 8; }, created: function created() { - var self = this; // retrieving localized strings from view + var self = this; + bus.$on('deleteFolder', function (folder) { + if (self.children) { + var index = self.children && self.children.indexOf(folder); - self.T.mediaNotFound = $('#t-media-not-found').val(); - self.T.discardWarning = $('#t-discard-warning').val(); - self.T.noImages = $('#t-no-images').val(); + if (index > -1) { + self.children.splice(index, 1); + bus.$emit('folderDeleted'); + } + } + }); + bus.$on('addFolder', function (target, folder) { + if (self.model == target) { + if (self.children !== null) { + self.children.push(folder); + } + + folder.parent = self.model; + bus.$emit('folderAdded', folder); + } + }); }, methods: { - selectAndDeleteMedia: function selectAndDeleteMedia(media) { - this.$parent.$emit('selectAndDeleteMediaRequested', media); + isAncestorOfSelectedFolder: function isAncestorOfSelectedFolder() { + parentFolder = mediaApp.selectedFolder; + + while (parentFolder) { + if (parentFolder.path == this.model.path) { + return true; + } + + parentFolder = parentFolder.parent; + } + + return false; }, - selectMedia: function selectMedia(media) { - this.$parent.$emit('selectMediaRequested', media); + toggle: function toggle() { + this.open = !this.open; + + if (this.open && !this.children) { + this.loadChildren(); + } }, - buildMediaUrl: function buildMediaUrl(url, thumbSize) { - return url + (url.indexOf('?') == -1 ? '?' : '&') + 'width=' + thumbSize + '&height=' + thumbSize; - } - } -}); -function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } + select: function select() { + bus.$emit('folderSelected', this.model); + this.loadChildren(); + }, + createFolder: function createFolder() { + bus.$emit('createFolderRequested'); + }, + deleteFolder: function deleteFolder() { + bus.$emit('deleteFolderRequested'); + }, + loadChildren: function loadChildren() { + var self = this; -function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } + if (this.open == false) { + this.open = true; + } -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + $.ajax({ + url: $('#getFoldersUrl').val() + "?path=" + encodeURIComponent(self.model.path), + method: 'GET', + success: function success(data) { + self.children = data; + self.children.forEach(function (c) { + c.parent = self.model; + }); + }, + error: function error(_error) { + emtpy = false; + console.error(_error.responseText); + } + }); + }, + handleDragOver: function handleDragOver(e) { + this.isHovered = true; + }, + handleDragLeave: function handleDragLeave(e) { + this.isHovered = false; + }, + moveMediaToFolder: function moveMediaToFolder(folder, e) { + var self = this; + self.isHovered = false; + var mediaNames = JSON.parse(e.dataTransfer.getData('mediaNames')); -var initialized; -var mediaApp; -var bus = new Vue(); + if (mediaNames.length < 1) { + return; + } -function initializeMediaApplication(displayMediaApplication, mediaApplicationUrl, pathBase) { - if (initialized) { - return; - } + var sourceFolder = e.dataTransfer.getData('sourceFolder'); + var targetFolder = folder.path; - initialized = true; + if (sourceFolder === '') { + sourceFolder = 'root'; + } - if (!mediaApplicationUrl) { - console.error('mediaApplicationUrl variable is not defined'); - } + if (targetFolder === '') { + targetFolder = 'root'; + } - $.ajax({ - url: mediaApplicationUrl, - method: 'GET', - success: function success(content) { - $('.ta-content').append(content); - $(document).trigger('mediaapplication:ready'); - var _root = { - name: $('#t-mediaLibrary').text(), - path: '', - folder: '', - isDirectory: true - }; - mediaApp = new Vue({ - el: '#mediaApp', - data: { - selectedFolder: {}, - mediaItems: [], - selectedMedias: [], - errors: [], - dragDropThumbnail: new Image(), - smallThumbs: false, - gridView: false, - mediaFilter: '', - sortBy: '', - sortAsc: true, - itemsInPage: [] - }, - created: function created() { - var self = this; - self.dragDropThumbnail.src = (pathBase || '') + '/OrchardCore.Media/Images/drag-thumbnail.png'; - bus.$on('folderSelected', function (folder) { - self.selectedFolder = folder; - }); - bus.$on('folderDeleted', function () { - self.selectRoot(); - }); - bus.$on('folderAdded', function (folder) { - self.selectedFolder = folder; - folder.selected = true; - }); - bus.$on('mediaListMoved', function (errorInfo) { - self.loadFolder(self.selectedFolder); - - if (errorInfo) { - self.errors.push(errorInfo); - } - }); - bus.$on('mediaRenamed', function (newName, newPath, oldPath) { - var media = self.mediaItems.filter(function (item) { - return item.mediaPath === oldPath; - })[0]; - media.mediaPath = newPath; - media.name = newName; - }); - bus.$on('createFolderRequested', function (media) { - self.createFolder(); - }); - bus.$on('deleteFolderRequested', function (media) { - self.deleteFolder(); - }); // common handlers for actions in both grid and table view. - - bus.$on('sortChangeRequested', function (newSort) { - self.changeSort(newSort); - }); - bus.$on('mediaToggleRequested', function (media) { - self.toggleSelectionOfMedia(media); - }); - bus.$on('renameMediaRequested', function (media) { - self.renameMedia(media); - }); - bus.$on('deleteMediaRequested', function (media) { - self.deleteMediaItem(media); - }); - bus.$on('mediaDragStartRequested', function (media, e) { - self.handleDragStart(media, e); - }); // handler for pager events - - bus.$on('pagerEvent', function (itemsInPage) { - self.itemsInPage = itemsInPage; - self.selectedMedias = []; - }); - - if (!localStorage.getItem('mediaApplicationPrefs')) { - self.selectedFolder = _root; - return; - } - - self.currentPrefs = JSON.parse(localStorage.getItem('mediaApplicationPrefs')); - }, - computed: { - isHome: function isHome() { - return this.selectedFolder == _root; - }, - parents: function parents() { - var p = []; - parentFolder = this.selectedFolder; - - while (parentFolder && parentFolder.path != '') { - p.unshift(parentFolder); - parentFolder = parentFolder.parent; - } + if (sourceFolder === targetFolder) { + alert($('#sameFolderMessage').val()); + return; + } - return p; - }, - root: function root() { - return _root; - }, - filteredMediaItems: function filteredMediaItems() { - var self = this; - self.selectedMedias = []; - var filtered = self.mediaItems.filter(function (item) { - return item.name.toLowerCase().indexOf(self.mediaFilter.toLowerCase()) > -1; + confirmDialog(_objectSpread(_objectSpread({}, $("#moveMedia").data()), {}, { + callback: function callback(resp) { + if (resp) { + $.ajax({ + url: $('#moveMediaListUrl').val(), + method: 'POST', + data: { + __RequestVerificationToken: $("input[name='__RequestVerificationToken']").val(), + mediaNames: mediaNames, + sourceFolder: sourceFolder, + targetFolder: targetFolder + }, + success: function success() { + bus.$emit('mediaListMoved'); // MediaApp will listen to this, and then it will reload page so the moved medias won't be there anymore + }, + error: function error(_error2) { + console.error(_error2.responseText); + bus.$emit('mediaListMoved', _error2.responseText); + } }); + } + } + })); + } + } +}); +// component +Vue.component('media-items-grid', { + template: "\n
      \n
    1. \n
      \n \n \n
      \n
      \n \n \n \n {{ media.name }}\n
      \n
    2. \n
    \n ", + data: function data() { + return { + T: {} + }; + }, + props: { + filteredMediaItems: Array, + selectedMedias: Array, + thumbSize: Number + }, + created: function created() { + var self = this; // retrieving localized strings from view - switch (self.sortBy) { - case 'size': - filtered.sort(function (a, b) { - return self.sortAsc ? a.size - b.size : b.size - a.size; - }); - break; - - case 'mime': - filtered.sort(function (a, b) { - return self.sortAsc ? a.mime.toLowerCase().localeCompare(b.mime.toLowerCase()) : b.mime.toLowerCase().localeCompare(a.mime.toLowerCase()); - }); - break; + self.T.editButton = $('#t-edit-button').val(); + self.T.deleteButton = $('#t-delete-button').val(); + }, + methods: { + isMediaSelected: function isMediaSelected(media) { + var result = this.selectedMedias.some(function (element, index, array) { + return element.url.toLowerCase() === media.url.toLowerCase(); + }); + return result; + }, + buildMediaUrl: function buildMediaUrl(url, thumbSize) { + return url + (url.indexOf('?') == -1 ? '?' : '&') + 'width=' + thumbSize + '&height=' + thumbSize; + }, + toggleSelectionOfMedia: function toggleSelectionOfMedia(media) { + bus.$emit('mediaToggleRequested', media); + }, + renameMedia: function renameMedia(media) { + bus.$emit('renameMediaRequested', media); + }, + deleteMedia: function deleteMedia(media) { + bus.$emit('deleteMediaRequested', media); + }, + dragStart: function dragStart(media, e) { + bus.$emit('mediaDragStartRequested', media, e); + } + } +}); +// component +Vue.component('media-items-table', { + template: "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    {{ T.imageHeader }}\n {{ T.nameHeader }}\n \n \n {{ T.lastModifyHeader }} \n \n \n \n {{ T.sizeHeader }}\n \n \n \n \n {{ T.typeHeader }}\n \n \n
    \n
    \n \n \n
    \n
    \n \n \n
    {{ printDateTime(media.lastModify) }}
    \n
    \n
    {{ isNaN(media.size)? 0 : Math.round(media.size / 1024) }} KB
    \n
    \n
    {{ media.mime }}
    \n
    \n ", + data: function data() { + return { + T: {} + }; + }, + props: { + sortBy: String, + sortAsc: Boolean, + filteredMediaItems: Array, + selectedMedias: Array, + thumbSize: Number + }, + created: function created() { + var self = this; + self.T.imageHeader = $('#t-image-header').val(); + self.T.nameHeader = $('#t-name-header').val(); + self.T.lastModifyHeader = $('#t-lastModify-header').val(); + self.T.sizeHeader = $('#t-size-header').val(); + self.T.typeHeader = $('#t-type-header').val(); + self.T.editButton = $('#t-edit-button').val(); + self.T.deleteButton = $('#t-delete-button').val(); + self.T.viewButton = $('#t-view-button').val(); + }, + methods: { + isMediaSelected: function isMediaSelected(media) { + var result = this.selectedMedias.some(function (element, index, array) { + return element.url.toLowerCase() === media.url.toLowerCase(); + }); + return result; + }, + buildMediaUrl: function buildMediaUrl(url, thumbSize) { + return url + (url.indexOf('?') == -1 ? '?' : '&') + 'width=' + thumbSize + '&height=' + thumbSize; + }, + changeSort: function changeSort(newSort) { + bus.$emit('sortChangeRequested', newSort); + }, + toggleSelectionOfMedia: function toggleSelectionOfMedia(media) { + bus.$emit('mediaToggleRequested', media); + }, + renameMedia: function renameMedia(media) { + bus.$emit('renameMediaRequested', media); + }, + deleteMedia: function deleteMedia(media) { + bus.$emit('deleteMediaRequested', media); + }, + dragStart: function dragStart(media, e) { + bus.$emit('mediaDragStartRequested', media, e); + }, + printDateTime: function printDateTime(datemillis) { + var d = new Date(datemillis); + return d.toLocaleString(); + } + } +}); +// This component receives a list of all the items, unpaged. +// As the user interacts with the pager, it raises events with the items in the current page. +// It's the parent's responsibility to listen for these events and display the received items +// component +Vue.component('pager', { + template: "\n
    \n \n \n
    \n ", + props: { + sourceItems: Array + }, + data: function data() { + return { + pageSize: 10, + pageSizeOptions: [10, 30, 50, 100], + current: 0, + T: {} + }; + }, + created: function created() { + var self = this; // retrieving localized strings from view - case 'lastModify': - filtered.sort(function (a, b) { - return self.sortAsc ? a.lastModify - b.lastModify : b.lastModify - a.lastModify; - }); - break; + self.T.pagerFirstButton = $('#t-pager-first-button').val(); + self.T.pagerPreviousButton = $('#t-pager-previous-button').val(); + self.T.pagerNextButton = $('#t-pager-next-button').val(); + self.T.pagerLastButton = $('#t-pager-last-button').val(); + self.T.pagerPageSizeLabel = $('#t-pager-page-size-label').val(); + self.T.pagerPageLabel = $('#t-pager-page-label').val(); + self.T.pagerTotalLabel = $('#t-pager-total-label').val(); + }, + methods: { + next: function next() { + this.current = this.current + 1; + }, + previous: function previous() { + this.current = this.current - 1; + }, + goFirst: function goFirst() { + this.current = 0; + }, + goLast: function goLast() { + this.current = this.totalPages - 1; + }, + goTo: function goTo(targetPage) { + this.current = targetPage; + } + }, + computed: { + total: function total() { + return this.sourceItems ? this.sourceItems.length : 0; + }, + totalPages: function totalPages() { + var pages = Math.ceil(this.total / this.pageSize); + return pages > 0 ? pages : 1; + }, + isLastPage: function isLastPage() { + return this.current + 1 >= this.totalPages; + }, + isFirstPage: function isFirstPage() { + return this.current === 0; + }, + canDoNext: function canDoNext() { + return !this.isLastPage; + }, + canDoPrev: function canDoPrev() { + return !this.isFirstPage; + }, + canDoFirst: function canDoFirst() { + return !this.isFirstPage; + }, + canDoLast: function canDoLast() { + return !this.isLastPage; + }, + // this computed is only to have a central place where we detect changes and leverage Vue JS reactivity to raise our event. + // That event will be handled by the parent media app to display the items in the page. + // this logic will not run if the computed property is not used in the template. We use a dummy "data-computed-trigger" attribute for that. + itemsInCurrentPage: function itemsInCurrentPage() { + var start = this.pageSize * this.current; + var end = start + this.pageSize; + var result = this.sourceItems.slice(start, end); + bus.$emit('pagerEvent', result); + return result; + }, + pageLinks: function pageLinks() { + var links = []; + links.push(this.current + 1); // Add 2 items before current - default: - filtered.sort(function (a, b) { - return self.sortAsc ? a.name.toLowerCase().localeCompare(b.name.toLowerCase()) : b.name.toLowerCase().localeCompare(a.name.toLowerCase()); - }); - } + var beforeCurrent = this.current > 0 ? this.current : -1; + links.unshift(beforeCurrent); + var beforeBeforeCurrent = this.current > 1 ? this.current - 1 : -1; + links.unshift(beforeBeforeCurrent); // Add 2 items after current - return filtered; - }, - hiddenCount: function hiddenCount() { - var result = 0; - result = this.mediaItems.length - this.filteredMediaItems.length; - return result; - }, - thumbSize: function thumbSize() { - return this.smallThumbs ? 100 : 240; - }, - currentPrefs: { - get: function get() { - return { - smallThumbs: this.smallThumbs, - selectedFolder: this.selectedFolder, - gridView: this.gridView - }; - }, - set: function set(newPrefs) { - if (!newPrefs) { - return; - } + var afterCurrent = this.totalPages - this.current > 1 ? this.current + 2 : -1; + links.push(afterCurrent); + var afterAfterCurrent = this.totalPages - this.current > 2 ? this.current + 3 : -1; + links.push(afterAfterCurrent); + return links; + } + }, + watch: { + sourceItems: function sourceItems() { + this.current = 0; // resetting current page after receiving a new list of unpaged items + }, + pageSize: function pageSize() { + this.current = 0; + } + } +}); +// component +Vue.component('sortIndicator', { + template: "\n
    \n \n \n
    \n ", + props: { + colname: String, + selectedcolname: String, + asc: Boolean + }, + computed: { + isActive: function isActive() { + return this.colname.toLowerCase() == this.selectedcolname.toLowerCase(); + } + } +}); +function initializeAttachedMediaField(el, idOfUploadButton, uploadAction, mediaItemUrl, allowMultiple, allowMediaText, allowAnchors, tempUploadFolder) { + var target = $(document.getElementById($(el).data('for'))); + var initialPaths = target.data("init"); + var mediaFieldEditor = $(el); + var idprefix = mediaFieldEditor.attr("id"); + var mediaFieldApp; + mediaFieldApps.push(mediaFieldApp = new Vue({ + el: mediaFieldEditor.get(0), + data: { + mediaItems: [], + selectedMedia: null, + smallThumbs: false, + idPrefix: idprefix, + initialized: false, + allowMediaText: allowMediaText, + backupMediaText: '', + allowAnchors: allowAnchors, + backupAnchor: null + }, + created: function created() { + var self = this; + self.currentPrefs = JSON.parse(localStorage.getItem('mediaFieldPrefs')); + }, + computed: { + paths: { + get: function get() { + var mediaPaths = []; - this.smallThumbs = newPrefs.smallThumbs; - this.selectedFolder = newPrefs.selectedFolder; - this.gridView = newPrefs.gridView; - } - } - }, - watch: { - currentPrefs: function currentPrefs(newPrefs) { - localStorage.setItem('mediaApplicationPrefs', JSON.stringify(newPrefs)); - }, - selectedFolder: function selectedFolder(newFolder) { - this.mediaFilter = ''; - this.selectedFolder = newFolder; - this.loadFolder(newFolder); + if (!this.initialized) { + return JSON.stringify(initialPaths); } - }, - mounted: function mounted() { - this.$refs.rootFolder.toggle(); - }, - methods: { - uploadUrl: function uploadUrl() { - return this.selectedFolder ? $('#uploadFiles').val() + "?path=" + encodeURIComponent(this.selectedFolder.path) : null; - }, - selectRoot: function selectRoot() { - this.selectedFolder = this.root; - }, - loadFolder: function loadFolder(folder) { - this.errors = []; - this.selectedMedias = []; - var self = this; - $.ajax({ - url: $('#getMediaItemsUrl').val() + "?path=" + encodeURIComponent(folder.path), - method: 'GET', - success: function success(data) { - data.forEach(function (item) { - item.open = false; - }); - self.mediaItems = data; - self.selectedMedias = []; - self.sortBy = ''; - self.sortAsc = true; - }, - error: function error(_error) { - console.log('error loading folder:' + folder.path); - self.selectRoot(); - } - }); - }, - selectAll: function selectAll() { - this.selectedMedias = []; - - for (var i = 0; i < this.filteredMediaItems.length; i++) { - this.selectedMedias.push(this.filteredMediaItems[i]); - } - }, - unSelectAll: function unSelectAll() { - this.selectedMedias = []; - }, - invertSelection: function invertSelection() { - var temp = []; - for (var i = 0; i < this.filteredMediaItems.length; i++) { - if (this.isMediaSelected(this.filteredMediaItems[i]) == false) { - temp.push(this.filteredMediaItems[i]); - } + this.mediaItems.forEach(function (x) { + if (x.mediaPath === 'not-found') { + return; } - this.selectedMedias = temp; - }, - toggleSelectionOfMedia: function toggleSelectionOfMedia(media) { - if (this.isMediaSelected(media) == true) { - this.selectedMedias.splice(this.selectedMedias.indexOf(media), 1); - } else { - this.selectedMedias.push(media); - } - }, - isMediaSelected: function isMediaSelected(media) { - var result = this.selectedMedias.some(function (element, index, array) { - return element.url.toLowerCase() === media.url.toLowerCase(); + mediaPaths.push({ + path: x.mediaPath, + isRemoved: x.isRemoved, + isNew: x.isNew, + mediaText: x.mediaText, + anchor: x.anchor }); - return result; - }, - deleteFolder: function deleteFolder() { - var folder = this.selectedFolder; - var self = this; // The root folder can't be deleted + }); + return JSON.stringify(mediaPaths); + }, + set: function set(values) { + var self = this; + var mediaPaths = values || []; + var signal = $.Deferred(); + var items = []; + var length = 0; + mediaPaths.forEach(function (x, i) { + items.push({ + name: ' ' + x.path, + mime: '', + mediaPath: '', + anchor: x.anchor + }); // don't remove the space. Something different is needed or it wont react when the real name arrives. - if (folder == this.root.model) { - return; - } + promise = $.when(signal).done(function () { + $.ajax({ + url: mediaItemUrl + "?path=" + encodeURIComponent(x.path), + method: 'GET', + success: function success(data) { + data.vuekey = data.name + i.toString(); // Because a unique key is required by Vue on v-for - confirmDialog(_objectSpread(_objectSpread({}, $("#deleteFolder").data()), {}, { - callback: function callback(resp) { - if (resp) { - $.ajax({ - url: $('#deleteFolderUrl').val() + "?path=" + encodeURIComponent(folder.path), - method: 'POST', - data: { - __RequestVerificationToken: $("input[name='__RequestVerificationToken']").val() - }, - success: function success(data) { - bus.$emit('deleteFolder', folder); - }, - error: function error(_error2) { - console.error(_error2.responseText); - } - }); - } - } - })); - }, - createFolder: function createFolder() { - $('#createFolderModal-errors').empty(); - $('#createFolderModal').modal('show'); - $('#createFolderModal .modal-body input').val('').focus(); - }, - renameMedia: function renameMedia(media) { - $('#renameMediaModal-errors').empty(); - $('#renameMediaModal').modal('show'); - $('#old-item-name').val(media.name); - $('#renameMediaModal .modal-body input').val(media.name).focus(); - }, - selectAndDeleteMedia: function selectAndDeleteMedia(media) { - this.deleteMedia(); - }, - deleteMediaList: function deleteMediaList() { - var mediaList = this.selectedMedias; - var self = this; + data.mediaText = x.mediaText; // This value is not returned from the ajax call. - if (mediaList.length < 1) { - return; - } + data.anchor = x.anchor; // This value is not returned from the ajax call. - confirmDialog(_objectSpread(_objectSpread({}, $("#deleteMedia").data()), {}, { - callback: function callback(resp) { - if (resp) { - var paths = []; + items.splice(i, 1, data); - for (var i = 0; i < mediaList.length; i++) { - paths.push(mediaList[i].mediaPath); + if (items.length === ++length) { + items.forEach(function (x) { + self.mediaItems.push(x); + }); + self.initialized = true; } - - $.ajax({ - url: $('#deleteMediaListUrl').val(), - method: 'POST', - data: { - __RequestVerificationToken: $("input[name='__RequestVerificationToken']").val(), - paths: paths - }, - success: function success(data) { - for (var i = 0; i < self.selectedMedias.length; i++) { - var index = self.mediaItems && self.mediaItems.indexOf(self.selectedMedias[i]); - - if (index > -1) { - self.mediaItems.splice(index, 1); - bus.$emit('mediaDeleted', self.selectedMedias[i]); - } - } - - self.selectedMedias = []; - }, - error: function error(_error3) { - console.error(_error3.responseText); + }, + error: function error(_error) { + console.log(JSON.stringify(_error)); + items.splice(i, 1, { + name: x.path, + mime: '', + mediaPath: 'not-found', + mediaText: '', + anchor: { + x: 0.5, + y: 0.5 } }); + + if (items.length === ++length) { + items.forEach(function (x) { + self.mediaItems.push(x); + }); + self.initialized = true; + } } - } - })); - }, - deleteMediaItem: function deleteMediaItem(media) { - var self = this; + }); + }); + }); + signal.resolve(); + } + }, + fileSize: function fileSize() { + return Math.round(this.selectedMedia.size / 1024); + }, + canAddMedia: function canAddMedia() { + var nonRemovedMediaItems = []; - if (!media) { - return; - } + for (var i = 0; i < this.mediaItems.length; i++) { + if (!this.mediaItems[i].isRemoved) { + nonRemovedMediaItems.push(this.mediaItems[i]); + } + } + + return nonRemovedMediaItems.length === 0 || nonRemovedMediaItems.length > 0 && allowMultiple; + }, + thumbSize: function thumbSize() { + return this.smallThumbs ? 120 : 240; + }, + currentPrefs: { + get: function get() { + return { + smallThumbs: this.smallThumbs + }; + }, + set: function set(newPrefs) { + if (!newPrefs) { + return; + } + + this.smallThumbs = newPrefs.smallThumbs; + } + } + }, + mounted: function mounted() { + var self = this; + self.paths = initialPaths; + self.$on('selectAndDeleteMediaRequested', function (media) { + self.selectAndDeleteMedia(media); + }); + self.$on('selectMediaRequested', function (media) { + self.selectMedia(media); + }); + var selector = '#' + idOfUploadButton; + var editorId = mediaFieldEditor.attr('id'); + $(selector).fileupload({ + limitConcurrentUploads: 20, + dropZone: $('#' + editorId), + dataType: 'json', + url: uploadAction, + add: function add(e, data) { + var count = data.files.length; + var i; - confirmDialog(_objectSpread(_objectSpread({}, $("#deleteMedia").data()), {}, { - callback: function callback(resp) { - if (resp) { - $.ajax({ - url: $('#deleteMediaUrl').val() + "?path=" + encodeURIComponent(media.mediaPath), - method: 'POST', - data: { - __RequestVerificationToken: $("input[name='__RequestVerificationToken']").val() - }, - success: function success(data) { - var index = self.mediaItems && self.mediaItems.indexOf(media); + for (i = 0; i < count; i++) { + data.files[i].uploadName = self.getUniqueId() + data.files[i].name; + } - if (index > -1) { - self.mediaItems.splice(index, 1); - bus.$emit('mediaDeleted', media); - } //self.selectedMedia = null; + data.submit(); + }, + formData: function formData() { + var antiForgeryToken = $("input[name=__RequestVerificationToken]").val(); + return [{ + name: 'path', + value: tempUploadFolder + }, { + name: '__RequestVerificationToken', + value: antiForgeryToken + }]; + }, + done: function done(e, data) { + var newMediaItems = []; + var errormsg = ""; - }, - error: function error(_error4) { - console.error(_error4.responseText); - } - }); - } - } - })); - }, - handleDragStart: function handleDragStart(media, e) { - // first part of move media to folder: - // prepare the data that will be handled by the folder component on drop event - var mediaNames = []; - this.selectedMedias.forEach(function (item) { - mediaNames.push(item.name); - }); // in case the user drags an unselected item, we select it first + if (data.result.files.length > 0) { + for (var i = 0; i < data.result.files.length; i++) { + data.result.files[i].isNew = true; //if error is defined probably the file type is not allowed - if (this.isMediaSelected(media) == false) { - mediaNames.push(media.name); - this.selectedMedias.push(media); + if (data.result.files[i].error === undefined || data.result.files[i].error === null) newMediaItems.push(data.result.files[i]);else errormsg += data.result.files[i].error + "\n"; } + } - e.dataTransfer.setData('mediaNames', JSON.stringify(mediaNames)); - e.dataTransfer.setData('sourceFolder', this.selectedFolder.path); - e.dataTransfer.setDragImage(this.dragDropThumbnail, 10, 10); - e.dataTransfer.effectAllowed = 'move'; - }, - handleScrollWhileDrag: function handleScrollWhileDrag(e) { - if (e.clientY < 150) { - window.scrollBy(0, -10); - } + if (errormsg !== "") { + alert(errormsg); + return; + } - if (e.clientY > window.innerHeight - 100) { - window.scrollBy(0, 10); - } - }, - changeSort: function changeSort(newSort) { - if (this.sortBy == newSort) { - this.sortAsc = !this.sortAsc; - } else { - this.sortAsc = true; - this.sortBy = newSort; - } + console.log(newMediaItems); + + if (newMediaItems.length > 1 && allowMultiple === false) { + alert($('#onlyOneItemMessage').val()); + mediaFieldApp.mediaItems.push(newMediaItems[0]); + mediaFieldApp.initialized = true; + } else { + mediaFieldApp.mediaItems = mediaFieldApp.mediaItems.concat(newMediaItems); + mediaFieldApp.initialized = true; } + }, + error: function error(jqXHR, textStatus, errorThrown) { + console.log('error on upload!!'); + console.log(jqXHR); + console.log(textStatus); + console.log(errorThrown); } }); - $('#create-folder-name').keypress(function (e) { - var key = e.which; + }, + methods: { + selectMedia: function selectMedia(media) { + this.selectedMedia = media; + }, + getUniqueId: function getUniqueId() { + return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { + var r = Math.random() * 16 | 0, + v = c === 'x' ? r : r & 0x3 | 0x8; + return v.toString(16); + }); + }, + removeSelected: function removeSelected(event) { + var removed = {}; - if (key == 13) { - // the enter key code - $('#modalFooterOk').click(); - return false; - } - }); - $('#modalFooterOk').on('click', function (e) { - var name = $('#create-folder-name').val(); + if (this.selectedMedia) { + var index = this.mediaItems && this.mediaItems.indexOf(this.selectedMedia); - if (name === "") { - return; - } + if (index > -1) { + removed = this.mediaItems[index]; + removed.isRemoved = true; //this.mediaItems.splice([index], 1, removed); - $.ajax({ - url: $('#createFolderUrl').val() + "?path=" + encodeURIComponent(mediaApp.selectedFolder.path) + "&name=" + encodeURIComponent(name), - method: 'POST', - data: { - __RequestVerificationToken: $("input[name='__RequestVerificationToken']").val() - }, - success: function success(data) { - bus.$emit('addFolder', mediaApp.selectedFolder, data); - $('#createFolderModal').modal('hide'); - }, - error: function error(_error5) { - $('#createFolderModal-errors').empty(); - var errorMessage = JSON.parse(_error5.responseText).value; - $('').text(errorMessage).appendTo($('#createFolderModal-errors')); + this.mediaItems.splice(index, 1); } - }); - }); - $('#renameMediaModalFooterOk').on('click', function (e) { - var newName = $('#new-item-name').val(); - var oldName = $('#old-item-name').val(); + } else { + // The remove button can also remove a unique media item + if (this.mediaItems.length === 1) { + removed = this.mediaItems[index]; + removed.isRemoved = true; //this.mediaItems.splice(0, 1, removed); - if (newName === "") { - return; + this.mediaItems.splice(0, 1); + } } - var currentFolder = mediaApp.selectedFolder.path + "/"; + this.selectedMedia = null; + }, + showMediaTextModal: function showMediaTextModal(event) { + $(this.$refs.mediaTextModal).modal(); + this.backupMediaText = this.selectedMedia.mediaText; + }, + cancelMediaTextModal: function cancelMediaTextModal(event) { + $(this.$refs.mediaTextModal).modal('hide'); + this.selectedMedia.mediaText = this.backupMediaText; + }, + showAnchorModal: function showAnchorModal(event) { + $(this.$refs.anchoringModal).modal(); // Cause a refresh to recalc heights. - if (currentFolder === "/") { - currentFolder = ""; - } + this.selectedMedia.anchor = { + x: this.selectedMedia.anchor.x, + y: this.selectedMedia.anchor.y + }; + this.backupAnchor = this.selectedMedia.anchor; + }, + cancelAnchoringModal: function cancelAnchoringModal(event) { + $(this.$refs.anchoringModal).modal('hide'); + this.selectedMedia.anchor = this.backupAnchor; + }, + resetAnchor: function resetAnchor(event) { + this.selectedMedia.anchor = { + x: 0.5, + y: 0.5 + }; + }, + onAnchorDrop: function onAnchorDrop(event) { + var image = this.$refs.anchorImage; + this.selectedMedia.anchor = { + x: event.offsetX / image.clientWidth, + y: event.offsetY / image.clientHeight + }; + }, + anchorLeft: function anchorLeft() { + if (this.$refs.anchorImage && this.$refs.modalBody && this.selectedMedia) { + // When image is shrunk compare against the modal body. + var offset = (this.$refs.modalBody.clientWidth - this.$refs.anchorImage.clientWidth) / 2; + var position = this.selectedMedia.anchor.x * this.$refs.anchorImage.clientWidth + offset; - var newPath = currentFolder + newName; - var oldPath = currentFolder + oldName; + if (position < 17) { + // Adjust so the target doesn't show outside image. + position = 17; + } else { + position = position - 8; // Adjust to hit the mouse pointer. + } - if (newPath.toLowerCase() === oldPath.toLowerCase()) { - $('#renameMediaModal').modal('hide'); - return; + return position + 'px'; + } else { + return '0'; } + }, + anchorTop: function anchorTop() { + if (this.$refs.anchorImage && this.selectedMedia) { + var position = this.selectedMedia.anchor.y * this.$refs.anchorImage.clientHeight; - $.ajax({ - url: $('#renameMediaUrl').val() + "?oldPath=" + encodeURIComponent(oldPath) + "&newPath=" + encodeURIComponent(newPath), - method: 'POST', - data: { - __RequestVerificationToken: $("input[name='__RequestVerificationToken']").val() - }, - success: function success(data) { - $('#renameMediaModal').modal('hide'); - bus.$emit('mediaRenamed', newName, newPath, oldPath); - }, - error: function error(_error6) { - $('#renameMediaModal-errors').empty(); - var errorMessage = JSON.parse(_error6.responseText).value; - $('').text(errorMessage).appendTo($('#renameMediaModal-errors')); + if (position < 15) { + // Adjustment so the target doesn't show outside image. + position = 15; + } else { + position = position + 5; // Adjust to hit the mouse pointer. } - }); - }); - if (displayMediaApplication) { - document.getElementById('mediaApp').style.display = ""; - } + return position + 'px'; + } else { + return '0'; + } + }, + setAnchor: function setAnchor(event) { + var image = this.$refs.anchorImage; + this.selectedMedia.anchor = { + x: event.offsetX / image.clientWidth, + y: event.offsetY / image.clientHeight + }; + }, + addMediaFiles: function addMediaFiles(files) { + if (files.length > 1 && allowMultiple === false) { + alert($('#onlyOneItemMessage').val()); + mediaFieldApp.mediaItems.push(files[0]); + mediaFieldApp.initialized = true; + } else { + mediaFieldApp.mediaItems = mediaFieldApp.mediaItems.concat(files); + mediaFieldApp.initialized = true; + } + }, + selectAndDeleteMedia: function selectAndDeleteMedia(media) { + var self = this; + self.selectedMedia = media; // setTimeout because sometimes + // removeSelected was called even before the media was set. - $(document).trigger('mediaApp:ready'); + setTimeout(function () { + self.removeSelected(); + }, 100); + } }, - error: function error(_error7) { - console.error(_error7.responseText); + watch: { + mediaItems: { + deep: true, + handler: function handler() { + // Trigger preview rendering + setTimeout(function () { + $(document).trigger('contentpreview:render'); + }, 100); + } + }, + currentPrefs: function currentPrefs(newPrefs) { + localStorage.setItem('mediaFieldPrefs', JSON.stringify(newPrefs)); + } } - }); + })); } -$(document).on('mediaApp:ready', function () { - $('#fileupload').fileupload({ - dropZone: $('#mediaApp'), - limitConcurrentUploads: 20, - dataType: 'json', - url: $('#uploadFiles').val(), - formData: function formData() { - var antiForgeryToken = $("input[name=__RequestVerificationToken]").val(); - return [{ - name: 'path', - value: mediaApp.selectedFolder.path - }, { - name: '__RequestVerificationToken', - value: antiForgeryToken - }]; +function initializeMediaField(el, modalBodyElement, mediaItemUrl, allowMultiple, allowMediaText, allowAnchors) { + var target = $(document.getElementById($(el).data('for'))); + var initialPaths = target.data("init"); + var mediaFieldEditor = $(el); + var idprefix = mediaFieldEditor.attr("id"); + var mediaFieldApp; + mediaFieldApps.push(mediaFieldApp = new Vue({ + el: mediaFieldEditor.get(0), + data: { + mediaItems: [], + selectedMedia: null, + smallThumbs: false, + idPrefix: idprefix, + initialized: false, + allowMediaText: allowMediaText, + backupMediaText: '', + allowAnchors: allowAnchors, + backupAnchor: null }, - done: function done(e, data) { - $.each(data.result.files, function (index, file) { - if (!file.error) { - mediaApp.mediaItems.push(file); - } - }); - } - }); -}); -$(document).bind('dragover', function (e) { - var dt = e.originalEvent.dataTransfer; - - if (dt.types && (dt.types.indexOf ? dt.types.indexOf('Files') != -1 : dt.types.contains('Files'))) { - var dropZone = $('#customdropzone'), - timeout = window.dropZoneTimeout; - - if (timeout) { - clearTimeout(timeout); - } else { - dropZone.addClass('in'); - } + created: function created() { + var self = this; + self.currentPrefs = JSON.parse(localStorage.getItem('mediaFieldPrefs')); + }, + computed: { + paths: { + get: function get() { + var mediaPaths = []; - var hoveredDropZone = $(e.target).closest(dropZone); - window.dropZoneTimeout = setTimeout(function () { - window.dropZoneTimeout = null; - dropZone.removeClass('in'); - }, 100); - } -}); -function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } + if (!this.initialized) { + return JSON.stringify(initialPaths); + } -function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } + this.mediaItems.forEach(function (x) { + if (x.mediaPath === 'not-found') { + return; + } -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + mediaPaths.push({ + path: x.mediaPath, + mediaText: x.mediaText, + anchor: x.anchor + }); + }); + return JSON.stringify(mediaPaths); + }, + set: function set(values) { + var self = this; + var mediaPaths = values || []; + var signal = $.Deferred(); + var items = []; + var length = 0; + mediaPaths.forEach(function (x, i) { + items.push({ + name: ' ' + x.path, + mime: '', + mediaPath: '' + }); // don't remove the space. Something different is needed or it wont react when the real name arrives. -// component -Vue.component('folder', { - template: "\n
  • \n \n
      \n \n \n
    \n
  • \n "), - props: { - model: Object, - selectedInMediaApp: Object, - level: Number - }, - data: function data() { - return { - open: false, - children: null, - // not initialized state (for lazy-loading) - parent: null, - isHovered: false, - padding: 0 - }; - }, - computed: { - empty: function empty() { - return !this.children || this.children.length == 0; - }, - isSelected: function isSelected() { - return this.selectedInMediaApp.name == this.model.name && this.selectedInMediaApp.path == this.model.path; - }, - isRoot: function isRoot() { - return this.model.path === ''; - } - }, - mounted: function mounted() { - if (this.isRoot == false && this.isAncestorOfSelectedFolder()) { - this.toggle(); - } + promise = $.when(signal).done(function () { + $.ajax({ + url: mediaItemUrl + "?path=" + encodeURIComponent(x.path), + method: 'GET', + success: function success(data) { + data.vuekey = data.name + i.toString(); + data.mediaText = x.mediaText; // This value is not returned from the ajax call. - this.padding = this.level < 3 ? 16 : 16 + this.level * 8; - }, - created: function created() { - var self = this; - bus.$on('deleteFolder', function (folder) { - if (self.children) { - var index = self.children && self.children.indexOf(folder); + data.anchor = x.anchor; // This value is not returned from the ajax call. - if (index > -1) { - self.children.splice(index, 1); - bus.$emit('folderDeleted'); - } - } - }); - bus.$on('addFolder', function (target, folder) { - if (self.model == target) { - if (self.children !== null) { - self.children.push(folder); - } + items.splice(i, 1, data); - folder.parent = self.model; - bus.$emit('folderAdded', folder); - } - }); - }, - methods: { - isAncestorOfSelectedFolder: function isAncestorOfSelectedFolder() { - parentFolder = mediaApp.selectedFolder; + if (items.length === ++length) { + items.forEach(function (y) { + self.mediaItems.push(y); + }); + self.initialized = true; + } + }, + error: function error(_error) { + console.log(_error); + items.splice(i, 1, { + name: x.path, + mime: '', + mediaPath: 'not-found', + mediaText: '', + anchor: { + x: 0, + y: 0 + } + }); - while (parentFolder) { - if (parentFolder.path == this.model.path) { - return true; + if (items.length === ++length) { + items.forEach(function (x) { + self.mediaItems.push(x); + }); + self.initialized = true; + } + } + }); + }); + }); + signal.resolve(); } + }, + fileSize: function fileSize() { + return Math.round(this.selectedMedia.size / 1024); + }, + canAddMedia: function canAddMedia() { + return this.mediaItems.length === 0 || this.mediaItems.length > 0 && allowMultiple; + }, + thumbSize: function thumbSize() { + return this.smallThumbs ? 120 : 240; + }, + currentPrefs: { + get: function get() { + return { + smallThumbs: this.smallThumbs + }; + }, + set: function set(newPrefs) { + if (!newPrefs) { + return; + } - parentFolder = parentFolder.parent; - } - - return false; - }, - toggle: function toggle() { - this.open = !this.open; - - if (this.open && !this.children) { - this.loadChildren(); + this.smallThumbs = newPrefs.smallThumbs; + } } }, - select: function select() { - bus.$emit('folderSelected', this.model); - this.loadChildren(); - }, - createFolder: function createFolder() { - bus.$emit('createFolderRequested'); - }, - deleteFolder: function deleteFolder() { - bus.$emit('deleteFolderRequested'); - }, - loadChildren: function loadChildren() { + mounted: function mounted() { var self = this; - - if (this.open == false) { - this.open = true; - } - - $.ajax({ - url: $('#getFoldersUrl').val() + "?path=" + encodeURIComponent(self.model.path), - method: 'GET', - success: function success(data) { - self.children = data; - self.children.forEach(function (c) { - c.parent = self.model; - }); - }, - error: function error(_error) { - emtpy = false; - console.error(_error.responseText); - } + self.paths = initialPaths; + self.$on('selectAndDeleteMediaRequested', function (media) { + self.selectAndDeleteMedia(media); + }); + self.$on('selectMediaRequested', function (media) { + self.selectMedia(media); + }); + self.$on('filesUploaded', function (files) { + self.addMediaFiles(files); }); }, - handleDragOver: function handleDragOver(e) { - this.isHovered = true; - }, - handleDragLeave: function handleDragLeave(e) { - this.isHovered = false; - }, - moveMediaToFolder: function moveMediaToFolder(folder, e) { - var self = this; - self.isHovered = false; - var mediaNames = JSON.parse(e.dataTransfer.getData('mediaNames')); - - if (mediaNames.length < 1) { - return; - } - - var sourceFolder = e.dataTransfer.getData('sourceFolder'); - var targetFolder = folder.path; + methods: { + selectMedia: function selectMedia(media) { + this.selectedMedia = media; + }, + showModal: function showModal(event) { + var self = this; - if (sourceFolder === '') { - sourceFolder = 'root'; - } + if (self.canAddMedia) { + $("#mediaApp").detach().appendTo($(modalBodyElement).find('.modal-body')); + $("#mediaApp").show(); + var modal = $(modalBodyElement).modal(); + $(modalBodyElement).find('.mediaFieldSelectButton').off('click').on('click', function (v) { + self.addMediaFiles(mediaApp.selectedMedias); // we don't want the included medias to be still selected the next time we open the modal. - if (targetFolder === '') { - targetFolder = 'root'; - } + mediaApp.selectedMedias = []; + modal.modal('hide'); + return true; + }); + } + }, + showMediaTextModal: function showMediaTextModal(event) { + $(this.$refs.mediaTextModal).modal(); + this.backupMediaText = this.selectedMedia.mediaText; + }, + cancelMediaTextModal: function cancelMediaTextModal(event) { + $(this.$refs.mediaTextModal).modal('hide'); + this.selectedMedia.mediaText = this.backupMediaText; + }, + showAnchorModal: function showAnchorModal(event) { + $(this.$refs.anchoringModal).modal(); // Cause a refresh to recalc heights. - if (sourceFolder === targetFolder) { - alert($('#sameFolderMessage').val()); - return; - } + this.selectedMedia.anchor = { + x: this.selectedMedia.anchor.x, + y: this.selectedMedia.anchor.y + }; + this.backupAnchor = this.selectedMedia.anchor; + }, + cancelAnchoringModal: function cancelAnchoringModal(event) { + $(this.$refs.anchoringModal).modal('hide'); + this.selectedMedia.anchor = this.backupAnchor; + }, + resetAnchor: function resetAnchor(event) { + this.selectedMedia.anchor = { + x: 0.5, + y: 0.5 + }; + }, + onAnchorDrop: function onAnchorDrop(event) { + var image = this.$refs.anchorImage; + this.selectedMedia.anchor = { + x: event.offsetX / image.clientWidth, + y: event.offsetY / image.clientHeight + }; + }, + anchorLeft: function anchorLeft() { + if (this.$refs.anchorImage && this.$refs.modalBody && this.selectedMedia) { + // When image is shrunk compare against the modal body. + var offset = (this.$refs.modalBody.clientWidth - this.$refs.anchorImage.clientWidth) / 2; + var position = this.selectedMedia.anchor.x * this.$refs.anchorImage.clientWidth + offset; + var anchorIcon = Math.round(this.$refs.modalBody.querySelector('.icon-media-anchor').clientWidth); - confirmDialog(_objectSpread(_objectSpread({}, $("#moveMedia").data()), {}, { - callback: function callback(resp) { - if (resp) { - $.ajax({ - url: $('#moveMediaListUrl').val(), - method: 'POST', - data: { - __RequestVerificationToken: $("input[name='__RequestVerificationToken']").val(), - mediaNames: mediaNames, - sourceFolder: sourceFolder, - targetFolder: targetFolder - }, - success: function success() { - bus.$emit('mediaListMoved'); // MediaApp will listen to this, and then it will reload page so the moved medias won't be there anymore - }, - error: function error(_error2) { - console.error(_error2.responseText); - bus.$emit('mediaListMoved', _error2.responseText); - } - }); + if (Number.isInteger(anchorIcon)) { + position = position - anchorIcon / 2; } + + return position + 'px'; + } else { + return '0'; } - })); - } - } -}); -// component -Vue.component('media-items-grid', { - template: "\n
      \n
    1. \n
      \n \n \n
      \n
      \n \n \n \n {{ media.name }}\n
      \n
    2. \n
    \n ", - data: function data() { - return { - T: {} - }; - }, - props: { - filteredMediaItems: Array, - selectedMedias: Array, - thumbSize: Number - }, - created: function created() { - var self = this; // retrieving localized strings from view + }, + anchorTop: function anchorTop() { + if (this.$refs.anchorImage && this.selectedMedia) { + var position = this.selectedMedia.anchor.y * this.$refs.anchorImage.clientHeight; + return position + 'px'; + } else { + return '0'; + } + }, + setAnchor: function setAnchor(event) { + var image = this.$refs.anchorImage; + this.selectedMedia.anchor = { + x: event.offsetX / image.clientWidth, + y: event.offsetY / image.clientHeight + }; + }, + addMediaFiles: function addMediaFiles(files) { + if (files.length > 1 && allowMultiple === false) { + alert($('#onlyOneItemMessage').val()); + mediaFieldApp.mediaItems.push(files[0]); + mediaFieldApp.initialized = true; + } else { + mediaFieldApp.mediaItems = mediaFieldApp.mediaItems.concat(files); + mediaFieldApp.initialized = true; + } + }, + removeSelected: function removeSelected(event) { + if (this.selectedMedia) { + var index = this.mediaItems && this.mediaItems.indexOf(this.selectedMedia); - self.T.editButton = $('#t-edit-button').val(); - self.T.deleteButton = $('#t-delete-button').val(); - }, - methods: { - isMediaSelected: function isMediaSelected(media) { - var result = this.selectedMedias.some(function (element, index, array) { - return element.url.toLowerCase() === media.url.toLowerCase(); - }); - return result; - }, - buildMediaUrl: function buildMediaUrl(url, thumbSize) { - return url + (url.indexOf('?') == -1 ? '?' : '&') + 'width=' + thumbSize + '&height=' + thumbSize; - }, - toggleSelectionOfMedia: function toggleSelectionOfMedia(media) { - bus.$emit('mediaToggleRequested', media); - }, - renameMedia: function renameMedia(media) { - bus.$emit('renameMediaRequested', media); - }, - deleteMedia: function deleteMedia(media) { - bus.$emit('deleteMediaRequested', media); + if (index > -1) { + this.mediaItems.splice(index, 1); + } + } else { + // The remove button can also remove a unique media item + if (this.mediaItems.length === 1) { + this.mediaItems.splice(0, 1); + } + } + + this.selectedMedia = null; + }, + selectAndDeleteMedia: function selectAndDeleteMedia(media) { + var self = this; + self.selectedMedia = media; // setTimeout because sometimes removeSelected was called even before the media was set. + + setTimeout(function () { + self.removeSelected(); + }, 100); + } }, - dragStart: function dragStart(media, e) { - bus.$emit('mediaDragStartRequested', media, e); + watch: { + mediaItems: { + deep: true, + handler: function handler() { + // Trigger preview rendering + setTimeout(function () { + $(document).trigger('contentpreview:render'); + }, 100); + } + }, + currentPrefs: function currentPrefs(newPrefs) { + localStorage.setItem('mediaFieldPrefs', JSON.stringify(newPrefs)); + } } - } -}); -// component -Vue.component('media-items-table', { - template: "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    {{ T.imageHeader }}\n {{ T.nameHeader }}\n \n \n {{ T.lastModifyHeader }} \n \n \n \n {{ T.sizeHeader }}\n \n \n \n \n {{ T.typeHeader }}\n \n \n
    \n
    \n \n \n
    \n
    \n \n \n
    {{ printDateTime(media.lastModify) }}
    \n
    \n
    {{ isNaN(media.size)? 0 : Math.round(media.size / 1024) }} KB
    \n
    \n
    {{ media.mime }}
    \n
    \n ", + })); +} +// different media field editors will add themselves to this array +var mediaFieldApps = []; +// component +// different media field editors share this component to present the thumbs. +Vue.component('mediaFieldThumbsContainer', { + template: '\ +
    \ +
    \ +
    \ + {{T.noImages}}\ +
    \ +
    \ + \ +
  • \ +
    \ +
    \ + \ + \ +
    \ +
    \ + \ + \ + {{ media.isNew ? media.name.substr(36) : media.name }}\ +
    \ +
    \ +
    \ +
    \ + \ + {{ T.mediaNotFound }}\ + {{ T.discardWarning }}\ +
    \ +
    \ + \ + {{ media.name }}\ +
    \ +
    \ +
  • \ +
    \ +
    \ + ', data: function data() { return { T: {} }; }, props: { - sortBy: String, - sortAsc: Boolean, - filteredMediaItems: Array, - selectedMedias: Array, - thumbSize: Number - }, - created: function created() { - var self = this; - self.T.imageHeader = $('#t-image-header').val(); - self.T.nameHeader = $('#t-name-header').val(); - self.T.lastModifyHeader = $('#t-lastModify-header').val(); - self.T.sizeHeader = $('#t-size-header').val(); - self.T.typeHeader = $('#t-type-header').val(); - self.T.editButton = $('#t-edit-button').val(); - self.T.deleteButton = $('#t-delete-button').val(); - self.T.viewButton = $('#t-view-button').val(); - }, - methods: { - isMediaSelected: function isMediaSelected(media) { - var result = this.selectedMedias.some(function (element, index, array) { - return element.url.toLowerCase() === media.url.toLowerCase(); - }); - return result; - }, - buildMediaUrl: function buildMediaUrl(url, thumbSize) { - return url + (url.indexOf('?') == -1 ? '?' : '&') + 'width=' + thumbSize + '&height=' + thumbSize; - }, - changeSort: function changeSort(newSort) { - bus.$emit('sortChangeRequested', newSort); - }, - toggleSelectionOfMedia: function toggleSelectionOfMedia(media) { - bus.$emit('mediaToggleRequested', media); - }, - renameMedia: function renameMedia(media) { - bus.$emit('renameMediaRequested', media); - }, - deleteMedia: function deleteMedia(media) { - bus.$emit('deleteMediaRequested', media); - }, - dragStart: function dragStart(media, e) { - bus.$emit('mediaDragStartRequested', media, e); - }, - printDateTime: function printDateTime(datemillis) { - var d = new Date(datemillis); - return d.toLocaleString(); - } - } -}); -// This component receives a list of all the items, unpaged. -// As the user interacts with the pager, it raises events with the items in the current page. -// It's the parent's responsibility to listen for these events and display the received items -// component -Vue.component('pager', { - template: "\n
    \n \n \n
    \n ", - props: { - sourceItems: Array - }, - data: function data() { - return { - pageSize: 10, - pageSizeOptions: [10, 30, 50, 100], - current: 0, - T: {} - }; + mediaItems: Array, + selectedMedia: Object, + thumbSize: Number, + idPrefix: String }, created: function created() { var self = this; // retrieving localized strings from view - self.T.pagerFirstButton = $('#t-pager-first-button').val(); - self.T.pagerPreviousButton = $('#t-pager-previous-button').val(); - self.T.pagerNextButton = $('#t-pager-next-button').val(); - self.T.pagerLastButton = $('#t-pager-last-button').val(); - self.T.pagerPageSizeLabel = $('#t-pager-page-size-label').val(); - self.T.pagerPageLabel = $('#t-pager-page-label').val(); - self.T.pagerTotalLabel = $('#t-pager-total-label').val(); + self.T.mediaNotFound = $('#t-media-not-found').val(); + self.T.discardWarning = $('#t-discard-warning').val(); + self.T.noImages = $('#t-no-images').val(); }, methods: { - next: function next() { - this.current = this.current + 1; - }, - previous: function previous() { - this.current = this.current - 1; - }, - goFirst: function goFirst() { - this.current = 0; - }, - goLast: function goLast() { - this.current = this.totalPages - 1; - }, - goTo: function goTo(targetPage) { - this.current = targetPage; - } - }, - computed: { - total: function total() { - return this.sourceItems ? this.sourceItems.length : 0; - }, - totalPages: function totalPages() { - var pages = Math.ceil(this.total / this.pageSize); - return pages > 0 ? pages : 1; - }, - isLastPage: function isLastPage() { - return this.current + 1 >= this.totalPages; - }, - isFirstPage: function isFirstPage() { - return this.current === 0; - }, - canDoNext: function canDoNext() { - return !this.isLastPage; - }, - canDoPrev: function canDoPrev() { - return !this.isFirstPage; - }, - canDoFirst: function canDoFirst() { - return !this.isFirstPage; - }, - canDoLast: function canDoLast() { - return !this.isLastPage; - }, - // this computed is only to have a central place where we detect changes and leverage Vue JS reactivity to raise our event. - // That event will be handled by the parent media app to display the items in the page. - // this logic will not run if the computed property is not used in the template. We use a dummy "data-computed-trigger" attribute for that. - itemsInCurrentPage: function itemsInCurrentPage() { - var start = this.pageSize * this.current; - var end = start + this.pageSize; - var result = this.sourceItems.slice(start, end); - bus.$emit('pagerEvent', result); - return result; + selectAndDeleteMedia: function selectAndDeleteMedia(media) { + this.$parent.$emit('selectAndDeleteMediaRequested', media); }, - pageLinks: function pageLinks() { - var links = []; - links.push(this.current + 1); // Add 2 items before current - - var beforeCurrent = this.current > 0 ? this.current : -1; - links.unshift(beforeCurrent); - var beforeBeforeCurrent = this.current > 1 ? this.current - 1 : -1; - links.unshift(beforeBeforeCurrent); // Add 2 items after current - - var afterCurrent = this.totalPages - this.current > 1 ? this.current + 2 : -1; - links.push(afterCurrent); - var afterAfterCurrent = this.totalPages - this.current > 2 ? this.current + 3 : -1; - links.push(afterAfterCurrent); - return links; - } - }, - watch: { - sourceItems: function sourceItems() { - this.current = 0; // resetting current page after receiving a new list of unpaged items + selectMedia: function selectMedia(media) { + this.$parent.$emit('selectMediaRequested', media); }, - pageSize: function pageSize() { - this.current = 0; - } - } -}); -// component -Vue.component('sortIndicator', { - template: "\n
    \n \n \n
    \n ", - props: { - colname: String, - selectedcolname: String, - asc: Boolean - }, - computed: { - isActive: function isActive() { - return this.colname.toLowerCase() == this.selectedcolname.toLowerCase(); + buildMediaUrl: function buildMediaUrl(url, thumbSize) { + return url + (url.indexOf('?') == -1 ? '?' : '&') + 'width=' + thumbSize + '&height=' + thumbSize; } } }); @@ -3542,4 +3542,4 @@ Vue.component('uploadList', { } } }); -//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImpxdWVyeS5maWxldXBsb2FkLmpzIiwianF1ZXJ5LmlmcmFtZS10cmFuc3BvcnQuanMiLCJNZWRpYUZpZWxkL2F0dGFjaGVkTWVkaWFGaWVsZC5qcyIsIk1lZGlhRmllbGQvbWVkaWFmaWVsZC5qcyIsIk1lZGlhRmllbGQvbWVkaWFmaWVsZHNBcHBzQXJyYXkuanMiLCJNZWRpYUZpZWxkL21lZGlhRmllbGRUaHVtYnNDb250YWluZXIuanMiLCJNZWRpYUFwcC9hcHAuanMiLCJNZWRpYUFwcC9maWxldXBsb2FkLmpzIiwiTWVkaWFBcHAvZm9sZGVyQ29tcG9uZW50LmpzIiwiTWVkaWFBcHAvbWVkaWFJdGVtc0dyaWRDb21wb25lbnQuanMiLCJNZWRpYUFwcC9tZWRpYUl0ZW1zVGFibGVDb21wb25lbnQuanMiLCJNZWRpYUFwcC9wYWdlckNvbXBvbmVudC5qcyIsIk1lZGlhQXBwL3NvcnRJbmRpY2F0b3JDb21wb25lbnQuanMiLCJTaGFyZWQvdXBsb2FkQ29tcG9uZW50LmpzIiwiU2hhcmVkL3VwbG9hZExpc3RDb21wb25lbnQuanMiXSwibmFtZXMiOlsiZmFjdG9yeSIsImRlZmluZSIsImFtZCIsImV4cG9ydHMiLCJyZXF1aXJlIiwid2luZG93IiwialF1ZXJ5IiwiJCIsInN1cHBvcnQiLCJmaWxlSW5wdXQiLCJSZWdFeHAiLCJ0ZXN0IiwibmF2aWdhdG9yIiwidXNlckFnZW50IiwicHJvcCIsInhockZpbGVVcGxvYWQiLCJQcm9ncmVzc0V2ZW50IiwiRmlsZVJlYWRlciIsInhockZvcm1EYXRhRmlsZVVwbG9hZCIsIkZvcm1EYXRhIiwiYmxvYlNsaWNlIiwiQmxvYiIsInByb3RvdHlwZSIsInNsaWNlIiwid2Via2l0U2xpY2UiLCJtb3pTbGljZSIsImdldERyYWdIYW5kbGVyIiwidHlwZSIsImlzRHJhZ092ZXIiLCJlIiwiZGF0YVRyYW5zZmVyIiwib3JpZ2luYWxFdmVudCIsImluQXJyYXkiLCJ0eXBlcyIsIl90cmlnZ2VyIiwiRXZlbnQiLCJkZWxlZ2F0ZWRFdmVudCIsInByZXZlbnREZWZhdWx0IiwiZHJvcEVmZmVjdCIsIndpZGdldCIsIm9wdGlvbnMiLCJkcm9wWm9uZSIsImRvY3VtZW50IiwicGFzdGVab25lIiwidW5kZWZpbmVkIiwicmVwbGFjZUZpbGVJbnB1dCIsInBhcmFtTmFtZSIsInNpbmdsZUZpbGVVcGxvYWRzIiwibGltaXRNdWx0aUZpbGVVcGxvYWRzIiwibGltaXRNdWx0aUZpbGVVcGxvYWRTaXplIiwibGltaXRNdWx0aUZpbGVVcGxvYWRTaXplT3ZlcmhlYWQiLCJzZXF1ZW50aWFsVXBsb2FkcyIsImxpbWl0Q29uY3VycmVudFVwbG9hZHMiLCJmb3JjZUlmcmFtZVRyYW5zcG9ydCIsInJlZGlyZWN0IiwicmVkaXJlY3RQYXJhbU5hbWUiLCJwb3N0TWVzc2FnZSIsIm11bHRpcGFydCIsIm1heENodW5rU2l6ZSIsInVwbG9hZGVkQnl0ZXMiLCJyZWNhbGN1bGF0ZVByb2dyZXNzIiwicHJvZ3Jlc3NJbnRlcnZhbCIsImJpdHJhdGVJbnRlcnZhbCIsImF1dG9VcGxvYWQiLCJ1bmlxdWVGaWxlbmFtZXMiLCJtZXNzYWdlcyIsImkxOG4iLCJtZXNzYWdlIiwiY29udGV4dCIsInRvU3RyaW5nIiwiZWFjaCIsImtleSIsInZhbHVlIiwicmVwbGFjZSIsImZvcm1EYXRhIiwiZm9ybSIsInNlcmlhbGl6ZUFycmF5IiwiYWRkIiwiZGF0YSIsImlzRGVmYXVsdFByZXZlbnRlZCIsImZpbGV1cGxvYWQiLCJwcm9jZXNzIiwiZG9uZSIsInN1Ym1pdCIsInByb2Nlc3NEYXRhIiwiY29udGVudFR5cGUiLCJjYWNoZSIsInRpbWVvdXQiLCJfcHJvbWlzZVBpcGUiLCJwYXJ0cyIsImZuIiwianF1ZXJ5Iiwic3BsaXQiLCJOdW1iZXIiLCJfc3BlY2lhbE9wdGlvbnMiLCJfYmxvYlNsaWNlIiwiYXBwbHkiLCJhcmd1bWVudHMiLCJfQml0cmF0ZVRpbWVyIiwidGltZXN0YW1wIiwiRGF0ZSIsIm5vdyIsImdldFRpbWUiLCJsb2FkZWQiLCJiaXRyYXRlIiwiZ2V0Qml0cmF0ZSIsImludGVydmFsIiwidGltZURpZmYiLCJfaXNYSFJVcGxvYWQiLCJfZ2V0Rm9ybURhdGEiLCJpc0FycmF5IiwibmFtZSIsInB1c2giLCJfZ2V0VG90YWwiLCJmaWxlcyIsInRvdGFsIiwiaW5kZXgiLCJmaWxlIiwic2l6ZSIsIl9pbml0UHJvZ3Jlc3NPYmplY3QiLCJvYmoiLCJwcm9ncmVzcyIsIl9wcm9ncmVzcyIsImV4dGVuZCIsIl9pbml0UmVzcG9uc2VPYmplY3QiLCJfcmVzcG9uc2UiLCJPYmplY3QiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJfb25Qcm9ncmVzcyIsImxlbmd0aENvbXB1dGFibGUiLCJfdGltZSIsIk1hdGgiLCJmbG9vciIsImNodW5rU2l6ZSIsIl9iaXRyYXRlVGltZXIiLCJfaW5pdFByb2dyZXNzTGlzdGVuZXIiLCJ0aGF0IiwieGhyIiwiYWpheFNldHRpbmdzIiwidXBsb2FkIiwib24iLCJvZSIsIl9kZWluaXRQcm9ncmVzc0xpc3RlbmVyIiwib2ZmIiwiX2lzSW5zdGFuY2VPZiIsIl9nZXRVbmlxdWVGaWxlbmFtZSIsIm1hcCIsIlN0cmluZyIsIl8iLCJwMSIsInAyIiwiZXh0IiwiX2luaXRYSFJEYXRhIiwiaGVhZGVycyIsImNvbnRlbnRSYW5nZSIsImJsb2IiLCJlbmNvZGVVUkkiLCJ1cGxvYWROYW1lIiwiZmllbGQiLCJhcHBlbmQiLCJmaWxlTmFtZSIsIl9pbml0SWZyYW1lU2V0dGluZ3MiLCJ0YXJnZXRIb3N0IiwidXJsIiwiZGF0YVR5cGUiLCJsb2NhdGlvbiIsImhvc3QiLCJfaW5pdERhdGFTZXR0aW5ncyIsIl9jaHVua2VkVXBsb2FkIiwiX2dldFBhcmFtTmFtZSIsImlucHV0IiwiaSIsImxlbmd0aCIsIl9pbml0Rm9ybVNldHRpbmdzIiwiaHJlZiIsInRvVXBwZXJDYXNlIiwiZm9ybUFjY2VwdENoYXJzZXQiLCJhdHRyIiwiX2dldEFKQVhTZXR0aW5ncyIsIl9nZXREZWZlcnJlZFN0YXRlIiwiZGVmZXJyZWQiLCJzdGF0ZSIsImlzUmVzb2x2ZWQiLCJpc1JlamVjdGVkIiwiX2VuaGFuY2VQcm9taXNlIiwicHJvbWlzZSIsInN1Y2Nlc3MiLCJlcnJvciIsImZhaWwiLCJjb21wbGV0ZSIsImFsd2F5cyIsIl9nZXRYSFJQcm9taXNlIiwicmVzb2x2ZU9yUmVqZWN0IiwiYXJncyIsImRmZCIsIkRlZmVycmVkIiwicmVzb2x2ZVdpdGgiLCJyZWplY3RXaXRoIiwiYWJvcnQiLCJfYWRkQ29udmVuaWVuY2VNZXRob2RzIiwiZ2V0UHJvbWlzZSIsInJlc29sdmVGdW5jIiwicmVqZWN0RnVuYyIsIl9wcm9jZXNzUXVldWUiLCJlcnJvclRocm93biIsImpxWEhSIiwiX29uU2VuZCIsInByb2Nlc3NpbmciLCJyZXNwb25zZSIsIl9nZXRVcGxvYWRlZEJ5dGVzIiwicmFuZ2UiLCJnZXRSZXNwb25zZUhlYWRlciIsInVwcGVyQnl0ZXNQb3MiLCJwYXJzZUludCIsInRlc3RPbmx5IiwiZnMiLCJ1YiIsIm1jcyIsIm8iLCJjdXJyZW50TG9hZGVkIiwiYWpheCIsInJlc3VsdCIsInRleHRTdGF0dXMiLCJfYmVmb3JlU2VuZCIsIl9hY3RpdmUiLCJfb25Eb25lIiwiX29uRmFpbCIsIl9vbkFsd2F5cyIsImpxWEhSb3JSZXN1bHQiLCJqcVhIUm9yRXJyb3IiLCJhYm9ydGVkIiwic2xvdCIsInBpcGUiLCJzZW5kIiwiX3NlbmRpbmciLCJuZXh0U2xvdCIsIl9zbG90cyIsInNoaWZ0IiwicmVzb2x2ZSIsIl9zZXF1ZW5jZSIsIl9vbkFkZCIsImZpbGVzTGVuZ3RoIiwibGltaXQiLCJsaW1pdFNpemUiLCJvdmVyaGVhZCIsImJhdGNoU2l6ZSIsInBhcmFtTmFtZVNldCIsInBhcmFtTmFtZVNsaWNlIiwiZmlsZVNldCIsImoiLCJvcmlnaW5hbEZpbGVzIiwiZWxlbWVudCIsIm5ld0RhdGEiLCJfcmVwbGFjZUZpbGVJbnB1dCIsImlucHV0Q2xvbmUiLCJjbG9uZSIsInJlc3RvcmVGb2N1cyIsImlzIiwiYWN0aXZlRWxlbWVudCIsImZpbGVJbnB1dENsb25lIiwicmVzZXQiLCJhZnRlciIsImRldGFjaCIsInRyaWdnZXIiLCJjbGVhbkRhdGEiLCJlbCIsIl9oYW5kbGVGaWxlVHJlZUVudHJ5IiwiZW50cnkiLCJwYXRoIiwiZW50cmllcyIsImRpclJlYWRlciIsImVycm9ySGFuZGxlciIsInN1Y2Nlc3NIYW5kbGVyIiwiX2hhbmRsZUZpbGVUcmVlRW50cmllcyIsInJlYWRFbnRyaWVzIiwicmVzdWx0cyIsImNvbmNhdCIsImlzRmlsZSIsIl9maWxlIiwicmVsYXRpdmVQYXRoIiwiaXNEaXJlY3RvcnkiLCJjcmVhdGVSZWFkZXIiLCJ3aGVuIiwiQXJyYXkiLCJfZ2V0RHJvcHBlZEZpbGVzIiwiaXRlbXMiLCJ3ZWJraXRHZXRBc0VudHJ5IiwiZ2V0QXNFbnRyeSIsIml0ZW0iLCJnZXRBc0ZpbGUiLCJtYWtlQXJyYXkiLCJfZ2V0U2luZ2xlRmlsZUlucHV0RmlsZXMiLCJmaWxlU2l6ZSIsIl9nZXRGaWxlSW5wdXRGaWxlcyIsIl9vbkNoYW5nZSIsInRhcmdldCIsIl9vblBhc3RlIiwiY2xpcGJvYXJkRGF0YSIsIl9vbkRyb3AiLCJfb25EcmFnT3ZlciIsIl9vbkRyYWdFbnRlciIsIl9vbkRyYWdMZWF2ZSIsIl9pbml0RXZlbnRIYW5kbGVycyIsIl9vbiIsImRyYWdvdmVyIiwiZHJvcCIsImRyYWdlbnRlciIsImRyYWdsZWF2ZSIsInBhc3RlIiwiY2hhbmdlIiwiX2Rlc3Ryb3lFdmVudEhhbmRsZXJzIiwiX29mZiIsIl9kZXN0cm95IiwiX3NldE9wdGlvbiIsInJlaW5pdCIsIl9zdXBlciIsIl9pbml0U3BlY2lhbE9wdGlvbnMiLCJmaW5kIiwiX2dldFJlZ0V4cCIsInN0ciIsIm1vZGlmaWVycyIsInBvcCIsImpvaW4iLCJfaXNSZWdFeHBPcHRpb24iLCJfaW5pdERhdGFBdHRyaWJ1dGVzIiwiYXR0cmlidXRlcyIsInRvTG93ZXJDYXNlIiwiY2hhckF0IiwiX2NyZWF0ZSIsImFjdGl2ZSIsImRpc2FibGVkIiwicmVqZWN0IiwidGhlbiIsImNvdW50ZXIiLCJqc29uQVBJIiwianNvblBhcnNlIiwiSlNPTiIsImFqYXhUcmFuc3BvcnQiLCJhc3luYyIsImluaXRpYWxJZnJhbWVTcmMiLCJpZnJhbWUiLCJhZGRQYXJhbUNoYXIiLCJjb21wbGV0ZUNhbGxiYWNrIiwiZmlsZUlucHV0Q2xvbmVzIiwicGFyYW1OYW1lcyIsImNvbnRlbnRzIiwiZmlyc3RDaGlsZCIsIkVycm9yIiwiYXBwZW5kVG8iLCJzZXRUaW1lb3V0IiwicmVtb3ZlIiwidmFsIiwicmVtb3ZlQXR0ciIsInJlcGxhY2VXaXRoIiwiYm9keSIsImFqYXhTZXR1cCIsImNvbnZlcnRlcnMiLCJ0ZXh0IiwiaHRtbCIsInhtbERvYyIsImlzWE1MRG9jIiwicGFyc2VYTUwiLCJYTUxEb2N1bWVudCIsInhtbCIsImdsb2JhbEV2YWwiLCJpbml0aWFsaXplQXR0YWNoZWRNZWRpYUZpZWxkIiwiaWRPZlVwbG9hZEJ1dHRvbiIsInVwbG9hZEFjdGlvbiIsIm1lZGlhSXRlbVVybCIsImFsbG93TXVsdGlwbGUiLCJhbGxvd01lZGlhVGV4dCIsImFsbG93QW5jaG9ycyIsInRlbXBVcGxvYWRGb2xkZXIiLCJnZXRFbGVtZW50QnlJZCIsImluaXRpYWxQYXRocyIsIm1lZGlhRmllbGRFZGl0b3IiLCJpZHByZWZpeCIsIm1lZGlhRmllbGRBcHAiLCJtZWRpYUZpZWxkQXBwcyIsIlZ1ZSIsImdldCIsIm1lZGlhSXRlbXMiLCJzZWxlY3RlZE1lZGlhIiwic21hbGxUaHVtYnMiLCJpZFByZWZpeCIsImluaXRpYWxpemVkIiwiYmFja3VwTWVkaWFUZXh0IiwiYmFja3VwQW5jaG9yIiwiY3JlYXRlZCIsInNlbGYiLCJjdXJyZW50UHJlZnMiLCJwYXJzZSIsImxvY2FsU3RvcmFnZSIsImdldEl0ZW0iLCJjb21wdXRlZCIsInBhdGhzIiwibWVkaWFQYXRocyIsInN0cmluZ2lmeSIsImZvckVhY2giLCJ4IiwibWVkaWFQYXRoIiwiaXNSZW1vdmVkIiwiaXNOZXciLCJtZWRpYVRleHQiLCJhbmNob3IiLCJzZXQiLCJ2YWx1ZXMiLCJzaWduYWwiLCJtaW1lIiwiZW5jb2RlVVJJQ29tcG9uZW50IiwibWV0aG9kIiwidnVla2V5Iiwic3BsaWNlIiwiY29uc29sZSIsImxvZyIsInkiLCJyb3VuZCIsImNhbkFkZE1lZGlhIiwibm9uUmVtb3ZlZE1lZGlhSXRlbXMiLCJ0aHVtYlNpemUiLCJuZXdQcmVmcyIsIm1vdW50ZWQiLCIkb24iLCJtZWRpYSIsInNlbGVjdEFuZERlbGV0ZU1lZGlhIiwic2VsZWN0TWVkaWEiLCJzZWxlY3RvciIsImVkaXRvcklkIiwiY291bnQiLCJnZXRVbmlxdWVJZCIsImFudGlGb3JnZXJ5VG9rZW4iLCJuZXdNZWRpYUl0ZW1zIiwiZXJyb3Jtc2ciLCJhbGVydCIsIm1ldGhvZHMiLCJjIiwiciIsInJhbmRvbSIsInYiLCJyZW1vdmVTZWxlY3RlZCIsImV2ZW50IiwicmVtb3ZlZCIsImluZGV4T2YiLCJzaG93TWVkaWFUZXh0TW9kYWwiLCIkcmVmcyIsIm1lZGlhVGV4dE1vZGFsIiwibW9kYWwiLCJjYW5jZWxNZWRpYVRleHRNb2RhbCIsInNob3dBbmNob3JNb2RhbCIsImFuY2hvcmluZ01vZGFsIiwiY2FuY2VsQW5jaG9yaW5nTW9kYWwiLCJyZXNldEFuY2hvciIsIm9uQW5jaG9yRHJvcCIsImltYWdlIiwiYW5jaG9ySW1hZ2UiLCJvZmZzZXRYIiwiY2xpZW50V2lkdGgiLCJvZmZzZXRZIiwiY2xpZW50SGVpZ2h0IiwiYW5jaG9yTGVmdCIsIm1vZGFsQm9keSIsIm9mZnNldCIsInBvc2l0aW9uIiwiYW5jaG9yVG9wIiwic2V0QW5jaG9yIiwiYWRkTWVkaWFGaWxlcyIsIndhdGNoIiwiZGVlcCIsImhhbmRsZXIiLCJzZXRJdGVtIiwiaW5pdGlhbGl6ZU1lZGlhRmllbGQiLCJtb2RhbEJvZHlFbGVtZW50Iiwic2hvd01vZGFsIiwic2hvdyIsIm1lZGlhQXBwIiwic2VsZWN0ZWRNZWRpYXMiLCJhbmNob3JJY29uIiwicXVlcnlTZWxlY3RvciIsImlzSW50ZWdlciIsImNvbXBvbmVudCIsInRlbXBsYXRlIiwiVCIsInByb3BzIiwibWVkaWFOb3RGb3VuZCIsImRpc2NhcmRXYXJuaW5nIiwibm9JbWFnZXMiLCIkcGFyZW50IiwiJGVtaXQiLCJidWlsZE1lZGlhVXJsIiwiYnVzIiwiaW5pdGlhbGl6ZU1lZGlhQXBwbGljYXRpb24iLCJkaXNwbGF5TWVkaWFBcHBsaWNhdGlvbiIsIm1lZGlhQXBwbGljYXRpb25VcmwiLCJwYXRoQmFzZSIsImNvbnRlbnQiLCJyb290IiwiZm9sZGVyIiwic2VsZWN0ZWRGb2xkZXIiLCJlcnJvcnMiLCJkcmFnRHJvcFRodW1ibmFpbCIsIkltYWdlIiwiZ3JpZFZpZXciLCJtZWRpYUZpbHRlciIsInNvcnRCeSIsInNvcnRBc2MiLCJpdGVtc0luUGFnZSIsInNyYyIsInNlbGVjdFJvb3QiLCJzZWxlY3RlZCIsImVycm9ySW5mbyIsImxvYWRGb2xkZXIiLCJuZXdOYW1lIiwibmV3UGF0aCIsIm9sZFBhdGgiLCJmaWx0ZXIiLCJjcmVhdGVGb2xkZXIiLCJkZWxldGVGb2xkZXIiLCJuZXdTb3J0IiwiY2hhbmdlU29ydCIsInRvZ2dsZVNlbGVjdGlvbk9mTWVkaWEiLCJyZW5hbWVNZWRpYSIsImRlbGV0ZU1lZGlhSXRlbSIsImhhbmRsZURyYWdTdGFydCIsImlzSG9tZSIsInBhcmVudHMiLCJwIiwicGFyZW50Rm9sZGVyIiwidW5zaGlmdCIsInBhcmVudCIsImZpbHRlcmVkTWVkaWFJdGVtcyIsImZpbHRlcmVkIiwic29ydCIsImEiLCJiIiwibG9jYWxlQ29tcGFyZSIsImxhc3RNb2RpZnkiLCJoaWRkZW5Db3VudCIsIm5ld0ZvbGRlciIsInJvb3RGb2xkZXIiLCJ0b2dnbGUiLCJ1cGxvYWRVcmwiLCJvcGVuIiwic2VsZWN0QWxsIiwidW5TZWxlY3RBbGwiLCJpbnZlcnRTZWxlY3Rpb24iLCJ0ZW1wIiwiaXNNZWRpYVNlbGVjdGVkIiwic29tZSIsImFycmF5IiwibW9kZWwiLCJjb25maXJtRGlhbG9nIiwiY2FsbGJhY2siLCJyZXNwIiwiX19SZXF1ZXN0VmVyaWZpY2F0aW9uVG9rZW4iLCJyZXNwb25zZVRleHQiLCJlbXB0eSIsImZvY3VzIiwiZGVsZXRlTWVkaWEiLCJkZWxldGVNZWRpYUxpc3QiLCJtZWRpYUxpc3QiLCJtZWRpYU5hbWVzIiwic2V0RGF0YSIsInNldERyYWdJbWFnZSIsImVmZmVjdEFsbG93ZWQiLCJoYW5kbGVTY3JvbGxXaGlsZURyYWciLCJjbGllbnRZIiwic2Nyb2xsQnkiLCJpbm5lckhlaWdodCIsImtleXByZXNzIiwid2hpY2giLCJjbGljayIsImVycm9yTWVzc2FnZSIsIm9sZE5hbWUiLCJjdXJyZW50Rm9sZGVyIiwic3R5bGUiLCJkaXNwbGF5IiwiYmluZCIsImR0IiwiY29udGFpbnMiLCJkcm9wWm9uZVRpbWVvdXQiLCJjbGVhclRpbWVvdXQiLCJhZGRDbGFzcyIsImhvdmVyZWREcm9wWm9uZSIsImNsb3Nlc3QiLCJyZW1vdmVDbGFzcyIsImRpciIsInNlbGVjdGVkSW5NZWRpYUFwcCIsImxldmVsIiwiY2hpbGRyZW4iLCJpc0hvdmVyZWQiLCJwYWRkaW5nIiwiaXNTZWxlY3RlZCIsImlzUm9vdCIsImlzQW5jZXN0b3JPZlNlbGVjdGVkRm9sZGVyIiwibG9hZENoaWxkcmVuIiwic2VsZWN0IiwiZW10cHkiLCJoYW5kbGVEcmFnT3ZlciIsImhhbmRsZURyYWdMZWF2ZSIsIm1vdmVNZWRpYVRvRm9sZGVyIiwiZ2V0RGF0YSIsInNvdXJjZUZvbGRlciIsInRhcmdldEZvbGRlciIsImVkaXRCdXR0b24iLCJkZWxldGVCdXR0b24iLCJkcmFnU3RhcnQiLCJCb29sZWFuIiwiaW1hZ2VIZWFkZXIiLCJuYW1lSGVhZGVyIiwibGFzdE1vZGlmeUhlYWRlciIsInNpemVIZWFkZXIiLCJ0eXBlSGVhZGVyIiwidmlld0J1dHRvbiIsInByaW50RGF0ZVRpbWUiLCJkYXRlbWlsbGlzIiwiZCIsInRvTG9jYWxlU3RyaW5nIiwic291cmNlSXRlbXMiLCJwYWdlU2l6ZSIsInBhZ2VTaXplT3B0aW9ucyIsImN1cnJlbnQiLCJwYWdlckZpcnN0QnV0dG9uIiwicGFnZXJQcmV2aW91c0J1dHRvbiIsInBhZ2VyTmV4dEJ1dHRvbiIsInBhZ2VyTGFzdEJ1dHRvbiIsInBhZ2VyUGFnZVNpemVMYWJlbCIsInBhZ2VyUGFnZUxhYmVsIiwicGFnZXJUb3RhbExhYmVsIiwibmV4dCIsInByZXZpb3VzIiwiZ29GaXJzdCIsImdvTGFzdCIsInRvdGFsUGFnZXMiLCJnb1RvIiwidGFyZ2V0UGFnZSIsInBhZ2VzIiwiY2VpbCIsImlzTGFzdFBhZ2UiLCJpc0ZpcnN0UGFnZSIsImNhbkRvTmV4dCIsImNhbkRvUHJldiIsImNhbkRvRmlyc3QiLCJjYW5Eb0xhc3QiLCJpdGVtc0luQ3VycmVudFBhZ2UiLCJzdGFydCIsImVuZCIsInBhZ2VMaW5rcyIsImxpbmtzIiwiYmVmb3JlQ3VycmVudCIsImJlZm9yZUJlZm9yZUN1cnJlbnQiLCJhZnRlckN1cnJlbnQiLCJhZnRlckFmdGVyQ3VycmVudCIsImNvbG5hbWUiLCJzZWxlY3RlZGNvbG5hbWUiLCJhc2MiLCJpc0FjdGl2ZSIsInBlcmNlbnRhZ2UiLCJoYW5kbGVGYWlsdXJlIiwiZGlzbWlzc1dhcm5pbmciLCJleHBhbmRlZCIsInBlbmRpbmdDb3VudCIsImVycm9yQ291bnQiLCJ1cGxvYWRzIiwiY2xlYXJFcnJvcnMiLCJmaWxlQ291bnQiLCJuZXdGaWxlIiwiYWxyZWFkeUluTGlzdCIsImYiLCJmaWxlVXBsb2FkIiwidXBkYXRlQ291bnQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFDQTtBQUVBLENBQUMsVUFBVUEsT0FBVixFQUFtQjtBQUNsQjs7QUFDQSxNQUFJLE9BQU9DLE1BQVAsS0FBa0IsVUFBbEIsSUFBZ0NBLE1BQU0sQ0FBQ0MsR0FBM0MsRUFBZ0Q7QUFDOUM7QUFDQUQsSUFBQUEsTUFBTSxDQUFDLENBQUMsUUFBRCxFQUFXLHFCQUFYLENBQUQsRUFBb0NELE9BQXBDLENBQU47QUFDRCxHQUhELE1BR08sSUFBSSxRQUFPRyxPQUFQLHlDQUFPQSxPQUFQLE9BQW1CLFFBQXZCLEVBQWlDO0FBQ3RDO0FBQ0FILElBQUFBLE9BQU8sQ0FBQ0ksT0FBTyxDQUFDLFFBQUQsQ0FBUixFQUFvQkEsT0FBTyxDQUFDLDJCQUFELENBQTNCLENBQVA7QUFDRCxHQUhNLE1BR0E7QUFDTDtBQUNBSixJQUFBQSxPQUFPLENBQUNLLE1BQU0sQ0FBQ0MsTUFBUixDQUFQO0FBQ0Q7QUFDRixDQVpELEVBWUcsVUFBVUMsQ0FBVixFQUFhO0FBQ2QsZUFEYyxDQUdkO0FBQ0E7O0FBQ0FBLEVBQUFBLENBQUMsQ0FBQ0MsT0FBRixDQUFVQyxTQUFWLEdBQXNCLEVBQ3BCLElBQUlDLE1BQUosRUFDRTtBQUNBLHNDQUNFLDREQURGLEdBRUUsNEJBRkYsR0FHRSxrQ0FMSixFQU1FQyxJQU5GLENBTU9OLE1BQU0sQ0FBQ08sU0FBUCxDQUFpQkMsU0FOeEIsS0FPQTtBQUNBTixFQUFBQSxDQUFDLENBQUMsc0JBQUQsQ0FBRCxDQUEwQk8sSUFBMUIsQ0FBK0IsVUFBL0IsQ0FUb0IsQ0FBdEIsQ0FMYyxDQWlCZDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUNBUCxFQUFBQSxDQUFDLENBQUNDLE9BQUYsQ0FBVU8sYUFBVixHQUEwQixDQUFDLEVBQUVWLE1BQU0sQ0FBQ1csYUFBUCxJQUF3QlgsTUFBTSxDQUFDWSxVQUFqQyxDQUEzQjtBQUNBVixFQUFBQSxDQUFDLENBQUNDLE9BQUYsQ0FBVVUscUJBQVYsR0FBa0MsQ0FBQyxDQUFDYixNQUFNLENBQUNjLFFBQTNDLENBdkJjLENBeUJkOztBQUNBWixFQUFBQSxDQUFDLENBQUNDLE9BQUYsQ0FBVVksU0FBVixHQUNFZixNQUFNLENBQUNnQixJQUFQLEtBQ0NBLElBQUksQ0FBQ0MsU0FBTCxDQUFlQyxLQUFmLElBQ0NGLElBQUksQ0FBQ0MsU0FBTCxDQUFlRSxXQURoQixJQUVDSCxJQUFJLENBQUNDLFNBQUwsQ0FBZUcsUUFIakIsQ0FERjtBQU1BO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFDRSxXQUFTQyxjQUFULENBQXdCQyxJQUF4QixFQUE4QjtBQUM1QixRQUFJQyxVQUFVLEdBQUdELElBQUksS0FBSyxVQUExQjtBQUNBLFdBQU8sVUFBVUUsQ0FBVixFQUFhO0FBQ2xCQSxNQUFBQSxDQUFDLENBQUNDLFlBQUYsR0FBaUJELENBQUMsQ0FBQ0UsYUFBRixJQUFtQkYsQ0FBQyxDQUFDRSxhQUFGLENBQWdCRCxZQUFwRDtBQUNBLFVBQUlBLFlBQVksR0FBR0QsQ0FBQyxDQUFDQyxZQUFyQjs7QUFDQSxVQUNFQSxZQUFZLElBQ1p2QixDQUFDLENBQUN5QixPQUFGLENBQVUsT0FBVixFQUFtQkYsWUFBWSxDQUFDRyxLQUFoQyxNQUEyQyxDQUFDLENBRDVDLElBRUEsS0FBS0MsUUFBTCxDQUFjUCxJQUFkLEVBQW9CcEIsQ0FBQyxDQUFDNEIsS0FBRixDQUFRUixJQUFSLEVBQWM7QUFBRVMsUUFBQUEsY0FBYyxFQUFFUDtBQUFsQixPQUFkLENBQXBCLE1BQThELEtBSGhFLEVBSUU7QUFDQUEsUUFBQUEsQ0FBQyxDQUFDUSxjQUFGOztBQUNBLFlBQUlULFVBQUosRUFBZ0I7QUFDZEUsVUFBQUEsWUFBWSxDQUFDUSxVQUFiLEdBQTBCLE1BQTFCO0FBQ0Q7QUFDRjtBQUNGLEtBYkQ7QUFjRCxHQXREYSxDQXdEZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQS9CLEVBQUFBLENBQUMsQ0FBQ2dDLE1BQUYsQ0FBUyxvQkFBVCxFQUErQjtBQUM3QkMsSUFBQUEsT0FBTyxFQUFFO0FBQ1A7QUFDQTtBQUNBQyxNQUFBQSxRQUFRLEVBQUVsQyxDQUFDLENBQUNtQyxRQUFELENBSEo7QUFJUDtBQUNBO0FBQ0FDLE1BQUFBLFNBQVMsRUFBRUMsU0FOSjtBQU9QO0FBQ0E7QUFDQTtBQUNBO0FBQ0FuQyxNQUFBQSxTQUFTLEVBQUVtQyxTQVhKO0FBWVA7QUFDQTtBQUNBO0FBQ0E7QUFDQUMsTUFBQUEsZ0JBQWdCLEVBQUUsSUFoQlg7QUFpQlA7QUFDQTtBQUNBO0FBQ0E7QUFDQUMsTUFBQUEsU0FBUyxFQUFFRixTQXJCSjtBQXNCUDtBQUNBO0FBQ0E7QUFDQUcsTUFBQUEsaUJBQWlCLEVBQUUsSUF6Qlo7QUEwQlA7QUFDQTtBQUNBQyxNQUFBQSxxQkFBcUIsRUFBRUosU0E1QmhCO0FBNkJQO0FBQ0E7QUFDQTtBQUNBSyxNQUFBQSx3QkFBd0IsRUFBRUwsU0FoQ25CO0FBaUNQO0FBQ0E7QUFDQTtBQUNBTSxNQUFBQSxnQ0FBZ0MsRUFBRSxHQXBDM0I7QUFxQ1A7QUFDQTtBQUNBQyxNQUFBQSxpQkFBaUIsRUFBRSxLQXZDWjtBQXdDUDtBQUNBO0FBQ0FDLE1BQUFBLHNCQUFzQixFQUFFUixTQTFDakI7QUEyQ1A7QUFDQVMsTUFBQUEsb0JBQW9CLEVBQUUsS0E1Q2Y7QUE2Q1A7QUFDQTtBQUNBQyxNQUFBQSxRQUFRLEVBQUVWLFNBL0NIO0FBZ0RQO0FBQ0E7QUFDQVcsTUFBQUEsaUJBQWlCLEVBQUVYLFNBbERaO0FBbURQO0FBQ0E7QUFDQVksTUFBQUEsV0FBVyxFQUFFWixTQXJETjtBQXNEUDtBQUNBO0FBQ0E7QUFDQWEsTUFBQUEsU0FBUyxFQUFFLElBekRKO0FBMERQO0FBQ0E7QUFDQTtBQUNBO0FBQ0FDLE1BQUFBLFlBQVksRUFBRWQsU0E5RFA7QUErRFA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBZSxNQUFBQSxhQUFhLEVBQUVmLFNBcEVSO0FBcUVQO0FBQ0E7QUFDQTtBQUNBZ0IsTUFBQUEsbUJBQW1CLEVBQUUsSUF4RWQ7QUF5RVA7QUFDQUMsTUFBQUEsZ0JBQWdCLEVBQUUsR0ExRVg7QUEyRVA7QUFDQUMsTUFBQUEsZUFBZSxFQUFFLEdBNUVWO0FBNkVQO0FBQ0FDLE1BQUFBLFVBQVUsRUFBRSxJQTlFTDtBQStFUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0FDLE1BQUFBLGVBQWUsRUFBRXBCLFNBdkZWO0FBeUZQO0FBQ0FxQixNQUFBQSxRQUFRLEVBQUU7QUFDUk4sUUFBQUEsYUFBYSxFQUFFO0FBRFAsT0ExRkg7QUE4RlA7QUFDQTtBQUNBTyxNQUFBQSxJQUFJLEVBQUUsY0FBVUMsT0FBVixFQUFtQkMsT0FBbkIsRUFBNEI7QUFDaEM7QUFDQUQsUUFBQUEsT0FBTyxHQUFHLEtBQUtGLFFBQUwsQ0FBY0UsT0FBZCxLQUEwQkEsT0FBTyxDQUFDRSxRQUFSLEVBQXBDOztBQUNBLFlBQUlELE9BQUosRUFBYTtBQUNYN0QsVUFBQUEsQ0FBQyxDQUFDK0QsSUFBRixDQUFPRixPQUFQLEVBQWdCLFVBQVVHLEdBQVYsRUFBZUMsS0FBZixFQUFzQjtBQUNwQztBQUNBTCxZQUFBQSxPQUFPLEdBQUdBLE9BQU8sQ0FBQ00sT0FBUixDQUFnQixNQUFNRixHQUFOLEdBQVksR0FBNUIsRUFBaUNDLEtBQWpDLENBQVY7QUFDRCxXQUhEO0FBSUQ7O0FBQ0QsZUFBT0wsT0FBUDtBQUNELE9BMUdNO0FBNEdQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQU8sTUFBQUEsUUFBUSxFQUFFLGtCQUFVQyxJQUFWLEVBQWdCO0FBQ3hCLGVBQU9BLElBQUksQ0FBQ0MsY0FBTCxFQUFQO0FBQ0QsT0FuSE07QUFxSFA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQUMsTUFBQUEsR0FBRyxFQUFFLGFBQVVoRCxDQUFWLEVBQWFpRCxJQUFiLEVBQW1CO0FBQ3RCLFlBQUlqRCxDQUFDLENBQUNrRCxrQkFBRixFQUFKLEVBQTRCO0FBQzFCLGlCQUFPLEtBQVA7QUFDRDs7QUFDRCxZQUNFRCxJQUFJLENBQUNmLFVBQUwsSUFDQ2UsSUFBSSxDQUFDZixVQUFMLEtBQW9CLEtBQXBCLElBQ0N4RCxDQUFDLENBQUMsSUFBRCxDQUFELENBQVF5RSxVQUFSLENBQW1CLFFBQW5CLEVBQTZCLFlBQTdCLENBSEosRUFJRTtBQUNBRixVQUFBQSxJQUFJLENBQUNHLE9BQUwsR0FBZUMsSUFBZixDQUFvQixZQUFZO0FBQzlCSixZQUFBQSxJQUFJLENBQUNLLE1BQUw7QUFDRCxXQUZEO0FBR0Q7QUFDRixPQWxKTTtBQW9KUDtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQUMsTUFBQUEsV0FBVyxFQUFFLEtBOU1OO0FBK01QQyxNQUFBQSxXQUFXLEVBQUUsS0EvTU47QUFnTlBDLE1BQUFBLEtBQUssRUFBRSxLQWhOQTtBQWlOUEMsTUFBQUEsT0FBTyxFQUFFO0FBak5GLEtBRG9CO0FBcU43QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0FDLElBQUFBLFlBQVksRUFBRyxZQUFZO0FBQ3pCLFVBQUlDLEtBQUssR0FBR2xGLENBQUMsQ0FBQ21GLEVBQUYsQ0FBS0MsTUFBTCxDQUFZQyxLQUFaLENBQWtCLEdBQWxCLENBQVo7QUFDQSxhQUFPQyxNQUFNLENBQUNKLEtBQUssQ0FBQyxDQUFELENBQU4sQ0FBTixHQUFtQixDQUFuQixJQUF3QkksTUFBTSxDQUFDSixLQUFLLENBQUMsQ0FBRCxDQUFOLENBQU4sR0FBbUIsQ0FBM0MsR0FBK0MsTUFBL0MsR0FBd0QsTUFBL0Q7QUFDRCxLQUhhLEVBMU5lO0FBK043QjtBQUNBO0FBQ0FLLElBQUFBLGVBQWUsRUFBRSxDQUNmLFdBRGUsRUFFZixVQUZlLEVBR2YsV0FIZSxFQUlmLFdBSmUsRUFLZixzQkFMZSxDQWpPWTtBQXlPN0JDLElBQUFBLFVBQVUsRUFDUnhGLENBQUMsQ0FBQ0MsT0FBRixDQUFVWSxTQUFWLElBQ0EsWUFBWTtBQUNWLFVBQUlHLEtBQUssR0FBRyxLQUFLQSxLQUFMLElBQWMsS0FBS0MsV0FBbkIsSUFBa0MsS0FBS0MsUUFBbkQ7QUFDQSxhQUFPRixLQUFLLENBQUN5RSxLQUFOLENBQVksSUFBWixFQUFrQkMsU0FBbEIsQ0FBUDtBQUNELEtBOU8wQjtBQWdQN0JDLElBQUFBLGFBQWEsRUFBRSx5QkFBWTtBQUN6QixXQUFLQyxTQUFMLEdBQWlCQyxJQUFJLENBQUNDLEdBQUwsR0FBV0QsSUFBSSxDQUFDQyxHQUFMLEVBQVgsR0FBd0IsSUFBSUQsSUFBSixHQUFXRSxPQUFYLEVBQXpDO0FBQ0EsV0FBS0MsTUFBTCxHQUFjLENBQWQ7QUFDQSxXQUFLQyxPQUFMLEdBQWUsQ0FBZjs7QUFDQSxXQUFLQyxVQUFMLEdBQWtCLFVBQVVKLEdBQVYsRUFBZUUsTUFBZixFQUF1QkcsUUFBdkIsRUFBaUM7QUFDakQsWUFBSUMsUUFBUSxHQUFHTixHQUFHLEdBQUcsS0FBS0YsU0FBMUI7O0FBQ0EsWUFBSSxDQUFDLEtBQUtLLE9BQU4sSUFBaUIsQ0FBQ0UsUUFBbEIsSUFBOEJDLFFBQVEsR0FBR0QsUUFBN0MsRUFBdUQ7QUFDckQsZUFBS0YsT0FBTCxHQUFlLENBQUNELE1BQU0sR0FBRyxLQUFLQSxNQUFmLEtBQTBCLE9BQU9JLFFBQWpDLElBQTZDLENBQTVEO0FBQ0EsZUFBS0osTUFBTCxHQUFjQSxNQUFkO0FBQ0EsZUFBS0osU0FBTCxHQUFpQkUsR0FBakI7QUFDRDs7QUFDRCxlQUFPLEtBQUtHLE9BQVo7QUFDRCxPQVJEO0FBU0QsS0E3UDRCO0FBK1A3QkksSUFBQUEsWUFBWSxFQUFFLHNCQUFVcEUsT0FBVixFQUFtQjtBQUMvQixhQUNFLENBQUNBLE9BQU8sQ0FBQ2Esb0JBQVQsS0FDRSxDQUFDYixPQUFPLENBQUNpQixTQUFULElBQXNCbEQsQ0FBQyxDQUFDQyxPQUFGLENBQVVPLGFBQWpDLElBQ0NSLENBQUMsQ0FBQ0MsT0FBRixDQUFVVSxxQkFGWixDQURGO0FBS0QsS0FyUTRCO0FBdVE3QjJGLElBQUFBLFlBQVksRUFBRSxzQkFBVXJFLE9BQVYsRUFBbUI7QUFDL0IsVUFBSWtDLFFBQUo7O0FBQ0EsVUFBSW5FLENBQUMsQ0FBQ29CLElBQUYsQ0FBT2EsT0FBTyxDQUFDa0MsUUFBZixNQUE2QixVQUFqQyxFQUE2QztBQUMzQyxlQUFPbEMsT0FBTyxDQUFDa0MsUUFBUixDQUFpQmxDLE9BQU8sQ0FBQ21DLElBQXpCLENBQVA7QUFDRDs7QUFDRCxVQUFJcEUsQ0FBQyxDQUFDdUcsT0FBRixDQUFVdEUsT0FBTyxDQUFDa0MsUUFBbEIsQ0FBSixFQUFpQztBQUMvQixlQUFPbEMsT0FBTyxDQUFDa0MsUUFBZjtBQUNEOztBQUNELFVBQUluRSxDQUFDLENBQUNvQixJQUFGLENBQU9hLE9BQU8sQ0FBQ2tDLFFBQWYsTUFBNkIsUUFBakMsRUFBMkM7QUFDekNBLFFBQUFBLFFBQVEsR0FBRyxFQUFYO0FBQ0FuRSxRQUFBQSxDQUFDLENBQUMrRCxJQUFGLENBQU85QixPQUFPLENBQUNrQyxRQUFmLEVBQXlCLFVBQVVxQyxJQUFWLEVBQWdCdkMsS0FBaEIsRUFBdUI7QUFDOUNFLFVBQUFBLFFBQVEsQ0FBQ3NDLElBQVQsQ0FBYztBQUFFRCxZQUFBQSxJQUFJLEVBQUVBLElBQVI7QUFBY3ZDLFlBQUFBLEtBQUssRUFBRUE7QUFBckIsV0FBZDtBQUNELFNBRkQ7QUFHQSxlQUFPRSxRQUFQO0FBQ0Q7O0FBQ0QsYUFBTyxFQUFQO0FBQ0QsS0F2UjRCO0FBeVI3QnVDLElBQUFBLFNBQVMsRUFBRSxtQkFBVUMsS0FBVixFQUFpQjtBQUMxQixVQUFJQyxLQUFLLEdBQUcsQ0FBWjtBQUNBNUcsTUFBQUEsQ0FBQyxDQUFDK0QsSUFBRixDQUFPNEMsS0FBUCxFQUFjLFVBQVVFLEtBQVYsRUFBaUJDLElBQWpCLEVBQXVCO0FBQ25DRixRQUFBQSxLQUFLLElBQUlFLElBQUksQ0FBQ0MsSUFBTCxJQUFhLENBQXRCO0FBQ0QsT0FGRDtBQUdBLGFBQU9ILEtBQVA7QUFDRCxLQS9SNEI7QUFpUzdCSSxJQUFBQSxtQkFBbUIsRUFBRSw2QkFBVUMsR0FBVixFQUFlO0FBQ2xDLFVBQUlDLFFBQVEsR0FBRztBQUNibEIsUUFBQUEsTUFBTSxFQUFFLENBREs7QUFFYlksUUFBQUEsS0FBSyxFQUFFLENBRk07QUFHYlgsUUFBQUEsT0FBTyxFQUFFO0FBSEksT0FBZjs7QUFLQSxVQUFJZ0IsR0FBRyxDQUFDRSxTQUFSLEVBQW1CO0FBQ2pCbkgsUUFBQUEsQ0FBQyxDQUFDb0gsTUFBRixDQUFTSCxHQUFHLENBQUNFLFNBQWIsRUFBd0JELFFBQXhCO0FBQ0QsT0FGRCxNQUVPO0FBQ0xELFFBQUFBLEdBQUcsQ0FBQ0UsU0FBSixHQUFnQkQsUUFBaEI7QUFDRDtBQUNGLEtBNVM0QjtBQThTN0JHLElBQUFBLG1CQUFtQixFQUFFLDZCQUFVSixHQUFWLEVBQWU7QUFDbEMsVUFBSTFHLElBQUo7O0FBQ0EsVUFBSTBHLEdBQUcsQ0FBQ0ssU0FBUixFQUFtQjtBQUNqQixhQUFLL0csSUFBTCxJQUFhMEcsR0FBRyxDQUFDSyxTQUFqQixFQUE0QjtBQUMxQixjQUFJQyxNQUFNLENBQUN4RyxTQUFQLENBQWlCeUcsY0FBakIsQ0FBZ0NDLElBQWhDLENBQXFDUixHQUFHLENBQUNLLFNBQXpDLEVBQW9EL0csSUFBcEQsQ0FBSixFQUErRDtBQUM3RCxtQkFBTzBHLEdBQUcsQ0FBQ0ssU0FBSixDQUFjL0csSUFBZCxDQUFQO0FBQ0Q7QUFDRjtBQUNGLE9BTkQsTUFNTztBQUNMMEcsUUFBQUEsR0FBRyxDQUFDSyxTQUFKLEdBQWdCLEVBQWhCO0FBQ0Q7QUFDRixLQXpUNEI7QUEyVDdCSSxJQUFBQSxXQUFXLEVBQUUscUJBQVVwRyxDQUFWLEVBQWFpRCxJQUFiLEVBQW1CO0FBQzlCLFVBQUlqRCxDQUFDLENBQUNxRyxnQkFBTixFQUF3QjtBQUN0QixZQUFJN0IsR0FBRyxHQUFHRCxJQUFJLENBQUNDLEdBQUwsR0FBV0QsSUFBSSxDQUFDQyxHQUFMLEVBQVgsR0FBd0IsSUFBSUQsSUFBSixHQUFXRSxPQUFYLEVBQWxDO0FBQUEsWUFDRUMsTUFERjs7QUFFQSxZQUNFekIsSUFBSSxDQUFDcUQsS0FBTCxJQUNBckQsSUFBSSxDQUFDakIsZ0JBREwsSUFFQXdDLEdBQUcsR0FBR3ZCLElBQUksQ0FBQ3FELEtBQVgsR0FBbUJyRCxJQUFJLENBQUNqQixnQkFGeEIsSUFHQWhDLENBQUMsQ0FBQzBFLE1BQUYsS0FBYTFFLENBQUMsQ0FBQ3NGLEtBSmpCLEVBS0U7QUFDQTtBQUNEOztBQUNEckMsUUFBQUEsSUFBSSxDQUFDcUQsS0FBTCxHQUFhOUIsR0FBYjtBQUNBRSxRQUFBQSxNQUFNLEdBQ0o2QixJQUFJLENBQUNDLEtBQUwsQ0FDR3hHLENBQUMsQ0FBQzBFLE1BQUYsR0FBVzFFLENBQUMsQ0FBQ3NGLEtBQWQsSUFBd0JyQyxJQUFJLENBQUN3RCxTQUFMLElBQWtCeEQsSUFBSSxDQUFDNEMsU0FBTCxDQUFlUCxLQUF6RCxDQURGLEtBRUtyQyxJQUFJLENBQUNuQixhQUFMLElBQXNCLENBRjNCLENBREYsQ0Fac0IsQ0FnQnRCO0FBQ0E7O0FBQ0EsYUFBSytELFNBQUwsQ0FBZW5CLE1BQWYsSUFBeUJBLE1BQU0sR0FBR3pCLElBQUksQ0FBQzRDLFNBQUwsQ0FBZW5CLE1BQWpEO0FBQ0EsYUFBS21CLFNBQUwsQ0FBZWxCLE9BQWYsR0FBeUIsS0FBSytCLGFBQUwsQ0FBbUI5QixVQUFuQixDQUN2QkosR0FEdUIsRUFFdkIsS0FBS3FCLFNBQUwsQ0FBZW5CLE1BRlEsRUFHdkJ6QixJQUFJLENBQUNoQixlQUhrQixDQUF6QjtBQUtBZ0IsUUFBQUEsSUFBSSxDQUFDNEMsU0FBTCxDQUFlbkIsTUFBZixHQUF3QnpCLElBQUksQ0FBQ3lCLE1BQUwsR0FBY0EsTUFBdEM7QUFDQXpCLFFBQUFBLElBQUksQ0FBQzRDLFNBQUwsQ0FBZWxCLE9BQWYsR0FBeUIxQixJQUFJLENBQUMwQixPQUFMLEdBQWUxQixJQUFJLENBQUN5RCxhQUFMLENBQW1COUIsVUFBbkIsQ0FDdENKLEdBRHNDLEVBRXRDRSxNQUZzQyxFQUd0Q3pCLElBQUksQ0FBQ2hCLGVBSGlDLENBQXhDLENBekJzQixDQThCdEI7QUFDQTtBQUNBOztBQUNBLGFBQUs1QixRQUFMLENBQ0UsVUFERixFQUVFM0IsQ0FBQyxDQUFDNEIsS0FBRixDQUFRLFVBQVIsRUFBb0I7QUFBRUMsVUFBQUEsY0FBYyxFQUFFUDtBQUFsQixTQUFwQixDQUZGLEVBR0VpRCxJQUhGLEVBakNzQixDQXNDdEI7QUFDQTs7O0FBQ0EsYUFBSzVDLFFBQUwsQ0FDRSxhQURGLEVBRUUzQixDQUFDLENBQUM0QixLQUFGLENBQVEsYUFBUixFQUF1QjtBQUFFQyxVQUFBQSxjQUFjLEVBQUVQO0FBQWxCLFNBQXZCLENBRkYsRUFHRSxLQUFLNkYsU0FIUDtBQUtEO0FBQ0YsS0ExVzRCO0FBNFc3QmMsSUFBQUEscUJBQXFCLEVBQUUsK0JBQVVoRyxPQUFWLEVBQW1CO0FBQ3hDLFVBQUlpRyxJQUFJLEdBQUcsSUFBWDtBQUFBLFVBQ0VDLEdBQUcsR0FBR2xHLE9BQU8sQ0FBQ2tHLEdBQVIsR0FBY2xHLE9BQU8sQ0FBQ2tHLEdBQVIsRUFBZCxHQUE4Qm5JLENBQUMsQ0FBQ29JLFlBQUYsQ0FBZUQsR0FBZixFQUR0QyxDQUR3QyxDQUd4QztBQUNBOztBQUNBLFVBQUlBLEdBQUcsQ0FBQ0UsTUFBUixFQUFnQjtBQUNkckksUUFBQUEsQ0FBQyxDQUFDbUksR0FBRyxDQUFDRSxNQUFMLENBQUQsQ0FBY0MsRUFBZCxDQUFpQixVQUFqQixFQUE2QixVQUFVaEgsQ0FBVixFQUFhO0FBQ3hDLGNBQUlpSCxFQUFFLEdBQUdqSCxDQUFDLENBQUNFLGFBQVgsQ0FEd0MsQ0FFeEM7O0FBQ0FGLFVBQUFBLENBQUMsQ0FBQ3FHLGdCQUFGLEdBQXFCWSxFQUFFLENBQUNaLGdCQUF4QjtBQUNBckcsVUFBQUEsQ0FBQyxDQUFDMEUsTUFBRixHQUFXdUMsRUFBRSxDQUFDdkMsTUFBZDtBQUNBMUUsVUFBQUEsQ0FBQyxDQUFDc0YsS0FBRixHQUFVMkIsRUFBRSxDQUFDM0IsS0FBYjs7QUFDQXNCLFVBQUFBLElBQUksQ0FBQ1IsV0FBTCxDQUFpQnBHLENBQWpCLEVBQW9CVyxPQUFwQjtBQUNELFNBUEQ7O0FBUUFBLFFBQUFBLE9BQU8sQ0FBQ2tHLEdBQVIsR0FBYyxZQUFZO0FBQ3hCLGlCQUFPQSxHQUFQO0FBQ0QsU0FGRDtBQUdEO0FBQ0YsS0E5WDRCO0FBZ1k3QkssSUFBQUEsdUJBQXVCLEVBQUUsaUNBQVV2RyxPQUFWLEVBQW1CO0FBQzFDLFVBQUlrRyxHQUFHLEdBQUdsRyxPQUFPLENBQUNrRyxHQUFSLEdBQWNsRyxPQUFPLENBQUNrRyxHQUFSLEVBQWQsR0FBOEJuSSxDQUFDLENBQUNvSSxZQUFGLENBQWVELEdBQWYsRUFBeEM7O0FBQ0EsVUFBSUEsR0FBRyxDQUFDRSxNQUFSLEVBQWdCO0FBQ2RySSxRQUFBQSxDQUFDLENBQUNtSSxHQUFHLENBQUNFLE1BQUwsQ0FBRCxDQUFjSSxHQUFkLENBQWtCLFVBQWxCO0FBQ0Q7QUFDRixLQXJZNEI7QUF1WTdCQyxJQUFBQSxhQUFhLEVBQUUsdUJBQVV0SCxJQUFWLEVBQWdCNkYsR0FBaEIsRUFBcUI7QUFDbEM7QUFDQSxhQUFPTSxNQUFNLENBQUN4RyxTQUFQLENBQWlCK0MsUUFBakIsQ0FBMEIyRCxJQUExQixDQUErQlIsR0FBL0IsTUFBd0MsYUFBYTdGLElBQWIsR0FBb0IsR0FBbkU7QUFDRCxLQTFZNEI7QUE0WTdCdUgsSUFBQUEsa0JBQWtCLEVBQUUsNEJBQVVuQyxJQUFWLEVBQWdCb0MsR0FBaEIsRUFBcUI7QUFDdkM7QUFDQXBDLE1BQUFBLElBQUksR0FBR3FDLE1BQU0sQ0FBQ3JDLElBQUQsQ0FBYjs7QUFDQSxVQUFJb0MsR0FBRyxDQUFDcEMsSUFBRCxDQUFQLEVBQWU7QUFDYjtBQUNBQSxRQUFBQSxJQUFJLEdBQUdBLElBQUksQ0FBQ3RDLE9BQUwsQ0FDTCw4QkFESyxFQUVMLFVBQVU0RSxDQUFWLEVBQWFDLEVBQWIsRUFBaUJDLEVBQWpCLEVBQXFCO0FBQ25CLGNBQUluQyxLQUFLLEdBQUdrQyxFQUFFLEdBQUd6RCxNQUFNLENBQUN5RCxFQUFELENBQU4sR0FBYSxDQUFoQixHQUFvQixDQUFsQztBQUNBLGNBQUlFLEdBQUcsR0FBR0QsRUFBRSxJQUFJLEVBQWhCO0FBQ0EsaUJBQU8sT0FBT25DLEtBQVAsR0FBZSxHQUFmLEdBQXFCb0MsR0FBNUI7QUFDRCxTQU5JLENBQVA7QUFRQSxlQUFPLEtBQUtOLGtCQUFMLENBQXdCbkMsSUFBeEIsRUFBOEJvQyxHQUE5QixDQUFQO0FBQ0Q7O0FBQ0RBLE1BQUFBLEdBQUcsQ0FBQ3BDLElBQUQsQ0FBSCxHQUFZLElBQVo7QUFDQSxhQUFPQSxJQUFQO0FBQ0QsS0E3WjRCO0FBK1o3QjBDLElBQUFBLFlBQVksRUFBRSxzQkFBVWpILE9BQVYsRUFBbUI7QUFDL0IsVUFBSWlHLElBQUksR0FBRyxJQUFYO0FBQUEsVUFDRS9ELFFBREY7QUFBQSxVQUVFMkMsSUFBSSxHQUFHN0UsT0FBTyxDQUFDMEUsS0FBUixDQUFjLENBQWQsQ0FGVDtBQUFBLFVBR0U7QUFDQXpELE1BQUFBLFNBQVMsR0FBR2pCLE9BQU8sQ0FBQ2lCLFNBQVIsSUFBcUIsQ0FBQ2xELENBQUMsQ0FBQ0MsT0FBRixDQUFVTyxhQUo5QztBQUFBLFVBS0UrQixTQUFTLEdBQ1B2QyxDQUFDLENBQUNvQixJQUFGLENBQU9hLE9BQU8sQ0FBQ00sU0FBZixNQUE4QixPQUE5QixHQUNJTixPQUFPLENBQUNNLFNBQVIsQ0FBa0IsQ0FBbEIsQ0FESixHQUVJTixPQUFPLENBQUNNLFNBUmhCO0FBU0FOLE1BQUFBLE9BQU8sQ0FBQ2tILE9BQVIsR0FBa0JuSixDQUFDLENBQUNvSCxNQUFGLENBQVMsRUFBVCxFQUFhbkYsT0FBTyxDQUFDa0gsT0FBckIsQ0FBbEI7O0FBQ0EsVUFBSWxILE9BQU8sQ0FBQ21ILFlBQVosRUFBMEI7QUFDeEJuSCxRQUFBQSxPQUFPLENBQUNrSCxPQUFSLENBQWdCLGVBQWhCLElBQW1DbEgsT0FBTyxDQUFDbUgsWUFBM0M7QUFDRDs7QUFDRCxVQUFJLENBQUNsRyxTQUFELElBQWNqQixPQUFPLENBQUNvSCxJQUF0QixJQUE4QixDQUFDLEtBQUtYLGFBQUwsQ0FBbUIsTUFBbkIsRUFBMkI1QixJQUEzQixDQUFuQyxFQUFxRTtBQUNuRTdFLFFBQUFBLE9BQU8sQ0FBQ2tILE9BQVIsQ0FBZ0IscUJBQWhCLElBQ0UsMkJBQ0FHLFNBQVMsQ0FBQ3hDLElBQUksQ0FBQ3lDLFVBQUwsSUFBbUJ6QyxJQUFJLENBQUNOLElBQXpCLENBRFQsR0FFQSxHQUhGO0FBSUQ7O0FBQ0QsVUFBSSxDQUFDdEQsU0FBTCxFQUFnQjtBQUNkakIsUUFBQUEsT0FBTyxDQUFDNkMsV0FBUixHQUFzQmdDLElBQUksQ0FBQzFGLElBQUwsSUFBYSwwQkFBbkM7QUFDQWEsUUFBQUEsT0FBTyxDQUFDc0MsSUFBUixHQUFldEMsT0FBTyxDQUFDb0gsSUFBUixJQUFnQnZDLElBQS9CO0FBQ0QsT0FIRCxNQUdPLElBQUk5RyxDQUFDLENBQUNDLE9BQUYsQ0FBVVUscUJBQWQsRUFBcUM7QUFDMUMsWUFBSXNCLE9BQU8sQ0FBQ2dCLFdBQVosRUFBeUI7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQWtCLFVBQUFBLFFBQVEsR0FBRyxLQUFLbUMsWUFBTCxDQUFrQnJFLE9BQWxCLENBQVg7O0FBQ0EsY0FBSUEsT0FBTyxDQUFDb0gsSUFBWixFQUFrQjtBQUNoQmxGLFlBQUFBLFFBQVEsQ0FBQ3NDLElBQVQsQ0FBYztBQUNaRCxjQUFBQSxJQUFJLEVBQUVqRSxTQURNO0FBRVowQixjQUFBQSxLQUFLLEVBQUVoQyxPQUFPLENBQUNvSDtBQUZILGFBQWQ7QUFJRCxXQUxELE1BS087QUFDTHJKLFlBQUFBLENBQUMsQ0FBQytELElBQUYsQ0FBTzlCLE9BQU8sQ0FBQzBFLEtBQWYsRUFBc0IsVUFBVUUsS0FBVixFQUFpQkMsSUFBakIsRUFBdUI7QUFDM0MzQyxjQUFBQSxRQUFRLENBQUNzQyxJQUFULENBQWM7QUFDWkQsZ0JBQUFBLElBQUksRUFDRHhHLENBQUMsQ0FBQ29CLElBQUYsQ0FBT2EsT0FBTyxDQUFDTSxTQUFmLE1BQThCLE9BQTlCLElBQ0NOLE9BQU8sQ0FBQ00sU0FBUixDQUFrQnNFLEtBQWxCLENBREYsSUFFQXRFLFNBSlU7QUFLWjBCLGdCQUFBQSxLQUFLLEVBQUU2QztBQUxLLGVBQWQ7QUFPRCxhQVJEO0FBU0Q7QUFDRixTQXRCRCxNQXNCTztBQUNMLGNBQUlvQixJQUFJLENBQUNRLGFBQUwsQ0FBbUIsVUFBbkIsRUFBK0J6RyxPQUFPLENBQUNrQyxRQUF2QyxDQUFKLEVBQXNEO0FBQ3BEQSxZQUFBQSxRQUFRLEdBQUdsQyxPQUFPLENBQUNrQyxRQUFuQjtBQUNELFdBRkQsTUFFTztBQUNMQSxZQUFBQSxRQUFRLEdBQUcsSUFBSXZELFFBQUosRUFBWDtBQUNBWixZQUFBQSxDQUFDLENBQUMrRCxJQUFGLENBQU8sS0FBS3VDLFlBQUwsQ0FBa0JyRSxPQUFsQixDQUFQLEVBQW1DLFVBQVU0RSxLQUFWLEVBQWlCMkMsS0FBakIsRUFBd0I7QUFDekRyRixjQUFBQSxRQUFRLENBQUNzRixNQUFULENBQWdCRCxLQUFLLENBQUNoRCxJQUF0QixFQUE0QmdELEtBQUssQ0FBQ3ZGLEtBQWxDO0FBQ0QsYUFGRDtBQUdEOztBQUNELGNBQUloQyxPQUFPLENBQUNvSCxJQUFaLEVBQWtCO0FBQ2hCbEYsWUFBQUEsUUFBUSxDQUFDc0YsTUFBVCxDQUNFbEgsU0FERixFQUVFTixPQUFPLENBQUNvSCxJQUZWLEVBR0V2QyxJQUFJLENBQUN5QyxVQUFMLElBQW1CekMsSUFBSSxDQUFDTixJQUgxQjtBQUtELFdBTkQsTUFNTztBQUNMeEcsWUFBQUEsQ0FBQyxDQUFDK0QsSUFBRixDQUFPOUIsT0FBTyxDQUFDMEUsS0FBZixFQUFzQixVQUFVRSxLQUFWLEVBQWlCQyxJQUFqQixFQUF1QjtBQUMzQztBQUNBO0FBQ0Esa0JBQ0VvQixJQUFJLENBQUNRLGFBQUwsQ0FBbUIsTUFBbkIsRUFBMkI1QixJQUEzQixLQUNBb0IsSUFBSSxDQUFDUSxhQUFMLENBQW1CLE1BQW5CLEVBQTJCNUIsSUFBM0IsQ0FGRixFQUdFO0FBQ0Esb0JBQUk0QyxRQUFRLEdBQUc1QyxJQUFJLENBQUN5QyxVQUFMLElBQW1CekMsSUFBSSxDQUFDTixJQUF2Qzs7QUFDQSxvQkFBSXZFLE9BQU8sQ0FBQ3dCLGVBQVosRUFBNkI7QUFDM0JpRyxrQkFBQUEsUUFBUSxHQUFHeEIsSUFBSSxDQUFDUyxrQkFBTCxDQUNUZSxRQURTLEVBRVR6SCxPQUFPLENBQUN3QixlQUZDLENBQVg7QUFJRDs7QUFDRFUsZ0JBQUFBLFFBQVEsQ0FBQ3NGLE1BQVQsQ0FDR3pKLENBQUMsQ0FBQ29CLElBQUYsQ0FBT2EsT0FBTyxDQUFDTSxTQUFmLE1BQThCLE9BQTlCLElBQ0NOLE9BQU8sQ0FBQ00sU0FBUixDQUFrQnNFLEtBQWxCLENBREYsSUFFRXRFLFNBSEosRUFJRXVFLElBSkYsRUFLRTRDLFFBTEY7QUFPRDtBQUNGLGFBdEJEO0FBdUJEO0FBQ0Y7O0FBQ0R6SCxRQUFBQSxPQUFPLENBQUNzQyxJQUFSLEdBQWVKLFFBQWY7QUFDRCxPQXhGOEIsQ0F5Ri9COzs7QUFDQWxDLE1BQUFBLE9BQU8sQ0FBQ29ILElBQVIsR0FBZSxJQUFmO0FBQ0QsS0ExZjRCO0FBNGY3Qk0sSUFBQUEsbUJBQW1CLEVBQUUsNkJBQVUxSCxPQUFWLEVBQW1CO0FBQ3RDLFVBQUkySCxVQUFVLEdBQUc1SixDQUFDLENBQUMsU0FBRCxDQUFELENBQWFPLElBQWIsQ0FBa0IsTUFBbEIsRUFBMEIwQixPQUFPLENBQUM0SCxHQUFsQyxFQUF1Q3RKLElBQXZDLENBQTRDLE1BQTVDLENBQWpCLENBRHNDLENBRXRDOztBQUNBMEIsTUFBQUEsT0FBTyxDQUFDNkgsUUFBUixHQUFtQixhQUFhN0gsT0FBTyxDQUFDNkgsUUFBUixJQUFvQixFQUFqQyxDQUFuQixDQUhzQyxDQUl0Qzs7QUFDQTdILE1BQUFBLE9BQU8sQ0FBQ2tDLFFBQVIsR0FBbUIsS0FBS21DLFlBQUwsQ0FBa0JyRSxPQUFsQixDQUFuQixDQUxzQyxDQU10Qzs7QUFDQSxVQUFJQSxPQUFPLENBQUNjLFFBQVIsSUFBb0I2RyxVQUFwQixJQUFrQ0EsVUFBVSxLQUFLRyxRQUFRLENBQUNDLElBQTlELEVBQW9FO0FBQ2xFL0gsUUFBQUEsT0FBTyxDQUFDa0MsUUFBUixDQUFpQnNDLElBQWpCLENBQXNCO0FBQ3BCRCxVQUFBQSxJQUFJLEVBQUV2RSxPQUFPLENBQUNlLGlCQUFSLElBQTZCLFVBRGY7QUFFcEJpQixVQUFBQSxLQUFLLEVBQUVoQyxPQUFPLENBQUNjO0FBRkssU0FBdEI7QUFJRDtBQUNGLEtBemdCNEI7QUEyZ0I3QmtILElBQUFBLGlCQUFpQixFQUFFLDJCQUFVaEksT0FBVixFQUFtQjtBQUNwQyxVQUFJLEtBQUtvRSxZQUFMLENBQWtCcEUsT0FBbEIsQ0FBSixFQUFnQztBQUM5QixZQUFJLENBQUMsS0FBS2lJLGNBQUwsQ0FBb0JqSSxPQUFwQixFQUE2QixJQUE3QixDQUFMLEVBQXlDO0FBQ3ZDLGNBQUksQ0FBQ0EsT0FBTyxDQUFDc0MsSUFBYixFQUFtQjtBQUNqQixpQkFBSzJFLFlBQUwsQ0FBa0JqSCxPQUFsQjtBQUNEOztBQUNELGVBQUtnRyxxQkFBTCxDQUEyQmhHLE9BQTNCO0FBQ0Q7O0FBQ0QsWUFBSUEsT0FBTyxDQUFDZ0IsV0FBWixFQUF5QjtBQUN2QjtBQUNBO0FBQ0FoQixVQUFBQSxPQUFPLENBQUM2SCxRQUFSLEdBQW1CLGtCQUFrQjdILE9BQU8sQ0FBQzZILFFBQVIsSUFBb0IsRUFBdEMsQ0FBbkI7QUFDRDtBQUNGLE9BWkQsTUFZTztBQUNMLGFBQUtILG1CQUFMLENBQXlCMUgsT0FBekI7QUFDRDtBQUNGLEtBM2hCNEI7QUE2aEI3QmtJLElBQUFBLGFBQWEsRUFBRSx1QkFBVWxJLE9BQVYsRUFBbUI7QUFDaEMsVUFBSS9CLFNBQVMsR0FBR0YsQ0FBQyxDQUFDaUMsT0FBTyxDQUFDL0IsU0FBVCxDQUFqQjtBQUFBLFVBQ0VxQyxTQUFTLEdBQUdOLE9BQU8sQ0FBQ00sU0FEdEI7O0FBRUEsVUFBSSxDQUFDQSxTQUFMLEVBQWdCO0FBQ2RBLFFBQUFBLFNBQVMsR0FBRyxFQUFaO0FBQ0FyQyxRQUFBQSxTQUFTLENBQUM2RCxJQUFWLENBQWUsWUFBWTtBQUN6QixjQUFJcUcsS0FBSyxHQUFHcEssQ0FBQyxDQUFDLElBQUQsQ0FBYjtBQUFBLGNBQ0V3RyxJQUFJLEdBQUc0RCxLQUFLLENBQUM3SixJQUFOLENBQVcsTUFBWCxLQUFzQixTQUQvQjtBQUFBLGNBRUU4SixDQUFDLEdBQUcsQ0FBQ0QsS0FBSyxDQUFDN0osSUFBTixDQUFXLE9BQVgsS0FBdUIsQ0FBQyxDQUFELENBQXhCLEVBQTZCK0osTUFGbkM7O0FBR0EsaUJBQU9ELENBQVAsRUFBVTtBQUNSOUgsWUFBQUEsU0FBUyxDQUFDa0UsSUFBVixDQUFlRCxJQUFmO0FBQ0E2RCxZQUFBQSxDQUFDLElBQUksQ0FBTDtBQUNEO0FBQ0YsU0FSRDs7QUFTQSxZQUFJLENBQUM5SCxTQUFTLENBQUMrSCxNQUFmLEVBQXVCO0FBQ3JCL0gsVUFBQUEsU0FBUyxHQUFHLENBQUNyQyxTQUFTLENBQUNLLElBQVYsQ0FBZSxNQUFmLEtBQTBCLFNBQTNCLENBQVo7QUFDRDtBQUNGLE9BZEQsTUFjTyxJQUFJLENBQUNQLENBQUMsQ0FBQ3VHLE9BQUYsQ0FBVWhFLFNBQVYsQ0FBTCxFQUEyQjtBQUNoQ0EsUUFBQUEsU0FBUyxHQUFHLENBQUNBLFNBQUQsQ0FBWjtBQUNEOztBQUNELGFBQU9BLFNBQVA7QUFDRCxLQWxqQjRCO0FBb2pCN0JnSSxJQUFBQSxpQkFBaUIsRUFBRSwyQkFBVXRJLE9BQVYsRUFBbUI7QUFDcEM7QUFDQTtBQUNBLFVBQUksQ0FBQ0EsT0FBTyxDQUFDbUMsSUFBVCxJQUFpQixDQUFDbkMsT0FBTyxDQUFDbUMsSUFBUixDQUFha0csTUFBbkMsRUFBMkM7QUFDekNySSxRQUFBQSxPQUFPLENBQUNtQyxJQUFSLEdBQWVwRSxDQUFDLENBQUNpQyxPQUFPLENBQUMvQixTQUFSLENBQWtCSyxJQUFsQixDQUF1QixNQUF2QixDQUFELENBQWhCLENBRHlDLENBRXpDO0FBQ0E7O0FBQ0EsWUFBSSxDQUFDMEIsT0FBTyxDQUFDbUMsSUFBUixDQUFha0csTUFBbEIsRUFBMEI7QUFDeEJySSxVQUFBQSxPQUFPLENBQUNtQyxJQUFSLEdBQWVwRSxDQUFDLENBQUMsS0FBS2lDLE9BQUwsQ0FBYS9CLFNBQWIsQ0FBdUJLLElBQXZCLENBQTRCLE1BQTVCLENBQUQsQ0FBaEI7QUFDRDtBQUNGOztBQUNEMEIsTUFBQUEsT0FBTyxDQUFDTSxTQUFSLEdBQW9CLEtBQUs0SCxhQUFMLENBQW1CbEksT0FBbkIsQ0FBcEI7O0FBQ0EsVUFBSSxDQUFDQSxPQUFPLENBQUM0SCxHQUFiLEVBQWtCO0FBQ2hCNUgsUUFBQUEsT0FBTyxDQUFDNEgsR0FBUixHQUFjNUgsT0FBTyxDQUFDbUMsSUFBUixDQUFhN0QsSUFBYixDQUFrQixRQUFsQixLQUErQndKLFFBQVEsQ0FBQ1MsSUFBdEQ7QUFDRCxPQWRtQyxDQWVwQzs7O0FBQ0F2SSxNQUFBQSxPQUFPLENBQUNiLElBQVIsR0FBZSxDQUNiYSxPQUFPLENBQUNiLElBQVIsSUFDQ3BCLENBQUMsQ0FBQ29CLElBQUYsQ0FBT2EsT0FBTyxDQUFDbUMsSUFBUixDQUFhN0QsSUFBYixDQUFrQixRQUFsQixDQUFQLE1BQXdDLFFBQXhDLElBQ0MwQixPQUFPLENBQUNtQyxJQUFSLENBQWE3RCxJQUFiLENBQWtCLFFBQWxCLENBRkYsSUFHQSxFQUphLEVBS2JrSyxXQUxhLEVBQWY7O0FBTUEsVUFDRXhJLE9BQU8sQ0FBQ2IsSUFBUixLQUFpQixNQUFqQixJQUNBYSxPQUFPLENBQUNiLElBQVIsS0FBaUIsS0FEakIsSUFFQWEsT0FBTyxDQUFDYixJQUFSLEtBQWlCLE9BSG5CLEVBSUU7QUFDQWEsUUFBQUEsT0FBTyxDQUFDYixJQUFSLEdBQWUsTUFBZjtBQUNEOztBQUNELFVBQUksQ0FBQ2EsT0FBTyxDQUFDeUksaUJBQWIsRUFBZ0M7QUFDOUJ6SSxRQUFBQSxPQUFPLENBQUN5SSxpQkFBUixHQUE0QnpJLE9BQU8sQ0FBQ21DLElBQVIsQ0FBYXVHLElBQWIsQ0FBa0IsZ0JBQWxCLENBQTVCO0FBQ0Q7QUFDRixLQXBsQjRCO0FBc2xCN0JDLElBQUFBLGdCQUFnQixFQUFFLDBCQUFVckcsSUFBVixFQUFnQjtBQUNoQyxVQUFJdEMsT0FBTyxHQUFHakMsQ0FBQyxDQUFDb0gsTUFBRixDQUFTLEVBQVQsRUFBYSxLQUFLbkYsT0FBbEIsRUFBMkJzQyxJQUEzQixDQUFkOztBQUNBLFdBQUtnRyxpQkFBTCxDQUF1QnRJLE9BQXZCOztBQUNBLFdBQUtnSSxpQkFBTCxDQUF1QmhJLE9BQXZCOztBQUNBLGFBQU9BLE9BQVA7QUFDRCxLQTNsQjRCO0FBNmxCN0I7QUFDQTtBQUNBNEksSUFBQUEsaUJBQWlCLEVBQUUsMkJBQVVDLFFBQVYsRUFBb0I7QUFDckMsVUFBSUEsUUFBUSxDQUFDQyxLQUFiLEVBQW9CO0FBQ2xCLGVBQU9ELFFBQVEsQ0FBQ0MsS0FBVCxFQUFQO0FBQ0Q7O0FBQ0QsVUFBSUQsUUFBUSxDQUFDRSxVQUFULEVBQUosRUFBMkI7QUFDekIsZUFBTyxVQUFQO0FBQ0Q7O0FBQ0QsVUFBSUYsUUFBUSxDQUFDRyxVQUFULEVBQUosRUFBMkI7QUFDekIsZUFBTyxVQUFQO0FBQ0Q7O0FBQ0QsYUFBTyxTQUFQO0FBQ0QsS0ExbUI0QjtBQTRtQjdCO0FBQ0E7QUFDQUMsSUFBQUEsZUFBZSxFQUFFLHlCQUFVQyxPQUFWLEVBQW1CO0FBQ2xDQSxNQUFBQSxPQUFPLENBQUNDLE9BQVIsR0FBa0JELE9BQU8sQ0FBQ3hHLElBQTFCO0FBQ0F3RyxNQUFBQSxPQUFPLENBQUNFLEtBQVIsR0FBZ0JGLE9BQU8sQ0FBQ0csSUFBeEI7QUFDQUgsTUFBQUEsT0FBTyxDQUFDSSxRQUFSLEdBQW1CSixPQUFPLENBQUNLLE1BQTNCO0FBQ0EsYUFBT0wsT0FBUDtBQUNELEtBbm5CNEI7QUFxbkI3QjtBQUNBO0FBQ0FNLElBQUFBLGNBQWMsRUFBRSx3QkFBVUMsZUFBVixFQUEyQjdILE9BQTNCLEVBQW9DOEgsSUFBcEMsRUFBMEM7QUFDeEQsVUFBSUMsR0FBRyxHQUFHNUwsQ0FBQyxDQUFDNkwsUUFBRixFQUFWO0FBQUEsVUFDRVYsT0FBTyxHQUFHUyxHQUFHLENBQUNULE9BQUosRUFEWixDQUR3RCxDQUd4RDs7QUFDQXRILE1BQUFBLE9BQU8sR0FBR0EsT0FBTyxJQUFJLEtBQUs1QixPQUFMLENBQWE0QixPQUF4QixJQUFtQ3NILE9BQTdDOztBQUNBLFVBQUlPLGVBQWUsS0FBSyxJQUF4QixFQUE4QjtBQUM1QkUsUUFBQUEsR0FBRyxDQUFDRSxXQUFKLENBQWdCakksT0FBaEIsRUFBeUI4SCxJQUF6QjtBQUNELE9BRkQsTUFFTyxJQUFJRCxlQUFlLEtBQUssS0FBeEIsRUFBK0I7QUFDcENFLFFBQUFBLEdBQUcsQ0FBQ0csVUFBSixDQUFlbEksT0FBZixFQUF3QjhILElBQXhCO0FBQ0Q7O0FBQ0RSLE1BQUFBLE9BQU8sQ0FBQ2EsS0FBUixHQUFnQkosR0FBRyxDQUFDVCxPQUFwQjtBQUNBLGFBQU8sS0FBS0QsZUFBTCxDQUFxQkMsT0FBckIsQ0FBUDtBQUNELEtBbm9CNEI7QUFxb0I3QjtBQUNBYyxJQUFBQSxzQkFBc0IsRUFBRSxnQ0FBVTNLLENBQVYsRUFBYWlELElBQWIsRUFBbUI7QUFDekMsVUFBSTJELElBQUksR0FBRyxJQUFYO0FBQUEsVUFDRWdFLFVBQVUsR0FBRyxTQUFiQSxVQUFhLENBQVVQLElBQVYsRUFBZ0I7QUFDM0IsZUFBTzNMLENBQUMsQ0FBQzZMLFFBQUYsR0FBYUMsV0FBYixDQUF5QjVELElBQXpCLEVBQStCeUQsSUFBL0IsRUFBcUNSLE9BQXJDLEVBQVA7QUFDRCxPQUhIOztBQUlBNUcsTUFBQUEsSUFBSSxDQUFDRyxPQUFMLEdBQWUsVUFBVXlILFdBQVYsRUFBdUJDLFVBQXZCLEVBQW1DO0FBQ2hELFlBQUlELFdBQVcsSUFBSUMsVUFBbkIsRUFBK0I7QUFDN0I3SCxVQUFBQSxJQUFJLENBQUM4SCxhQUFMLEdBQXFCLEtBQUtBLGFBQUwsR0FBcUIsQ0FBQyxLQUFLQSxhQUFMLElBQ3pDSCxVQUFVLENBQUMsQ0FBQyxJQUFELENBQUQsQ0FEOEIsRUFFdkNoRSxJQUFJLENBQUNqRCxZQUZrQyxFQUVwQixZQUFZO0FBQzlCLGdCQUFJVixJQUFJLENBQUMrSCxXQUFULEVBQXNCO0FBQ3BCLHFCQUFPdE0sQ0FBQyxDQUFDNkwsUUFBRixHQUFhRSxVQUFiLENBQXdCN0QsSUFBeEIsRUFBOEIsQ0FBQzNELElBQUQsQ0FBOUIsRUFBc0M0RyxPQUF0QyxFQUFQO0FBQ0Q7O0FBQ0QsbUJBQU9lLFVBQVUsQ0FBQ3hHLFNBQUQsQ0FBakI7QUFDRCxXQVB1QyxFQVF2Q3dDLElBQUksQ0FBQ2pELFlBUmtDLEVBUXBCa0gsV0FSb0IsRUFRUEMsVUFSTyxDQUExQztBQVNEOztBQUNELGVBQU8sS0FBS0MsYUFBTCxJQUFzQkgsVUFBVSxDQUFDLENBQUMsSUFBRCxDQUFELENBQXZDO0FBQ0QsT0FiRDs7QUFjQTNILE1BQUFBLElBQUksQ0FBQ0ssTUFBTCxHQUFjLFlBQVk7QUFDeEIsWUFBSSxLQUFLbUcsS0FBTCxPQUFpQixTQUFyQixFQUFnQztBQUM5QnhHLFVBQUFBLElBQUksQ0FBQ2dJLEtBQUwsR0FBYSxLQUFLQSxLQUFMLEdBQ1hyRSxJQUFJLENBQUN2RyxRQUFMLENBQ0UsUUFERixFQUVFM0IsQ0FBQyxDQUFDNEIsS0FBRixDQUFRLFFBQVIsRUFBa0I7QUFBRUMsWUFBQUEsY0FBYyxFQUFFUDtBQUFsQixXQUFsQixDQUZGLEVBR0UsSUFIRixNQUlNLEtBSk4sSUFJZTRHLElBQUksQ0FBQ3NFLE9BQUwsQ0FBYWxMLENBQWIsRUFBZ0IsSUFBaEIsQ0FMakI7QUFNRDs7QUFDRCxlQUFPLEtBQUtpTCxLQUFMLElBQWNyRSxJQUFJLENBQUN1RCxjQUFMLEVBQXJCO0FBQ0QsT0FWRDs7QUFXQWxILE1BQUFBLElBQUksQ0FBQ3lILEtBQUwsR0FBYSxZQUFZO0FBQ3ZCLFlBQUksS0FBS08sS0FBVCxFQUFnQjtBQUNkLGlCQUFPLEtBQUtBLEtBQUwsQ0FBV1AsS0FBWCxFQUFQO0FBQ0Q7O0FBQ0QsYUFBS00sV0FBTCxHQUFtQixPQUFuQjs7QUFDQXBFLFFBQUFBLElBQUksQ0FBQ3ZHLFFBQUwsQ0FBYyxNQUFkLEVBQXNCLElBQXRCLEVBQTRCLElBQTVCOztBQUNBLGVBQU91RyxJQUFJLENBQUN1RCxjQUFMLENBQW9CLEtBQXBCLENBQVA7QUFDRCxPQVBEOztBQVFBbEgsTUFBQUEsSUFBSSxDQUFDd0csS0FBTCxHQUFhLFlBQVk7QUFDdkIsWUFBSSxLQUFLd0IsS0FBVCxFQUFnQjtBQUNkLGlCQUFPckUsSUFBSSxDQUFDMkMsaUJBQUwsQ0FBdUIsS0FBSzBCLEtBQTVCLENBQVA7QUFDRDs7QUFDRCxZQUFJLEtBQUtGLGFBQVQsRUFBd0I7QUFDdEIsaUJBQU9uRSxJQUFJLENBQUMyQyxpQkFBTCxDQUF1QixLQUFLd0IsYUFBNUIsQ0FBUDtBQUNEO0FBQ0YsT0FQRDs7QUFRQTlILE1BQUFBLElBQUksQ0FBQ2tJLFVBQUwsR0FBa0IsWUFBWTtBQUM1QixlQUNFLENBQUMsS0FBS0YsS0FBTixJQUNBLEtBQUtGLGFBREwsSUFFQW5FLElBQUksQ0FBQzJDLGlCQUFMLENBQXVCLEtBQUt3QixhQUE1QixNQUErQyxTQUhqRDtBQUtELE9BTkQ7O0FBT0E5SCxNQUFBQSxJQUFJLENBQUMyQyxRQUFMLEdBQWdCLFlBQVk7QUFDMUIsZUFBTyxLQUFLQyxTQUFaO0FBQ0QsT0FGRDs7QUFHQTVDLE1BQUFBLElBQUksQ0FBQ21JLFFBQUwsR0FBZ0IsWUFBWTtBQUMxQixlQUFPLEtBQUtwRixTQUFaO0FBQ0QsT0FGRDtBQUdELEtBanNCNEI7QUFtc0I3QjtBQUNBO0FBQ0FxRixJQUFBQSxpQkFBaUIsRUFBRSwyQkFBVUosS0FBVixFQUFpQjtBQUNsQyxVQUFJSyxLQUFLLEdBQUdMLEtBQUssQ0FBQ00saUJBQU4sQ0FBd0IsT0FBeEIsQ0FBWjtBQUFBLFVBQ0UzSCxLQUFLLEdBQUcwSCxLQUFLLElBQUlBLEtBQUssQ0FBQ3ZILEtBQU4sQ0FBWSxHQUFaLENBRG5CO0FBQUEsVUFFRXlILGFBQWEsR0FBRzVILEtBQUssSUFBSUEsS0FBSyxDQUFDb0YsTUFBTixHQUFlLENBQXhCLElBQTZCeUMsUUFBUSxDQUFDN0gsS0FBSyxDQUFDLENBQUQsQ0FBTixFQUFXLEVBQVgsQ0FGdkQ7QUFHQSxhQUFPNEgsYUFBYSxJQUFJQSxhQUFhLEdBQUcsQ0FBeEM7QUFDRCxLQTFzQjRCO0FBNHNCN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBNUMsSUFBQUEsY0FBYyxFQUFFLHdCQUFVakksT0FBVixFQUFtQitLLFFBQW5CLEVBQTZCO0FBQzNDL0ssTUFBQUEsT0FBTyxDQUFDbUIsYUFBUixHQUF3Qm5CLE9BQU8sQ0FBQ21CLGFBQVIsSUFBeUIsQ0FBakQ7O0FBQ0EsVUFBSThFLElBQUksR0FBRyxJQUFYO0FBQUEsVUFDRXBCLElBQUksR0FBRzdFLE9BQU8sQ0FBQzBFLEtBQVIsQ0FBYyxDQUFkLENBRFQ7QUFBQSxVQUVFc0csRUFBRSxHQUFHbkcsSUFBSSxDQUFDQyxJQUZaO0FBQUEsVUFHRW1HLEVBQUUsR0FBR2pMLE9BQU8sQ0FBQ21CLGFBSGY7QUFBQSxVQUlFK0osR0FBRyxHQUFHbEwsT0FBTyxDQUFDa0IsWUFBUixJQUF3QjhKLEVBSmhDO0FBQUEsVUFLRWpNLEtBQUssR0FBRyxLQUFLd0UsVUFMZjtBQUFBLFVBTUVvRyxHQUFHLEdBQUc1TCxDQUFDLENBQUM2TCxRQUFGLEVBTlI7QUFBQSxVQU9FVixPQUFPLEdBQUdTLEdBQUcsQ0FBQ1QsT0FBSixFQVBaO0FBQUEsVUFRRW9CLEtBUkY7QUFBQSxVQVNFbEUsT0FURjs7QUFVQSxVQUNFLEVBQ0UsS0FBS2hDLFlBQUwsQ0FBa0JwRSxPQUFsQixLQUNBakIsS0FEQSxLQUVDa00sRUFBRSxJQUFJLENBQUNsTixDQUFDLENBQUNvQixJQUFGLENBQU8rTCxHQUFQLE1BQWdCLFVBQWhCLEdBQTZCQSxHQUFHLENBQUNsTCxPQUFELENBQWhDLEdBQTRDa0wsR0FBN0MsSUFBb0RGLEVBRjNELENBREYsS0FLQWhMLE9BQU8sQ0FBQ3NDLElBTlYsRUFPRTtBQUNBLGVBQU8sS0FBUDtBQUNEOztBQUNELFVBQUl5SSxRQUFKLEVBQWM7QUFDWixlQUFPLElBQVA7QUFDRDs7QUFDRCxVQUFJRSxFQUFFLElBQUlELEVBQVYsRUFBYztBQUNabkcsUUFBQUEsSUFBSSxDQUFDdUUsS0FBTCxHQUFhcEosT0FBTyxDQUFDMEIsSUFBUixDQUFhLGVBQWIsQ0FBYjtBQUNBLGVBQU8sS0FBSzhILGNBQUwsQ0FBb0IsS0FBcEIsRUFBMkJ4SixPQUFPLENBQUM0QixPQUFuQyxFQUE0QyxDQUNqRCxJQURpRCxFQUVqRCxPQUZpRCxFQUdqRGlELElBQUksQ0FBQ3VFLEtBSDRDLENBQTVDLENBQVA7QUFLRCxPQWhDMEMsQ0FpQzNDOzs7QUFDQWhELE1BQUFBLE9BQU0sR0FBRyxrQkFBWTtBQUNuQjtBQUNBLFlBQUkrRSxDQUFDLEdBQUdwTixDQUFDLENBQUNvSCxNQUFGLENBQVMsRUFBVCxFQUFhbkYsT0FBYixDQUFSO0FBQUEsWUFDRW9MLGFBQWEsR0FBR0QsQ0FBQyxDQUFDakcsU0FBRixDQUFZbkIsTUFEOUI7QUFFQW9ILFFBQUFBLENBQUMsQ0FBQy9ELElBQUYsR0FBU3JJLEtBQUssQ0FBQ3lHLElBQU4sQ0FDUFgsSUFETyxFQUVQb0csRUFGTyxFQUdQQSxFQUFFLElBQUlsTixDQUFDLENBQUNvQixJQUFGLENBQU8rTCxHQUFQLE1BQWdCLFVBQWhCLEdBQTZCQSxHQUFHLENBQUNDLENBQUQsQ0FBaEMsR0FBc0NELEdBQTFDLENBSEssRUFJUHJHLElBQUksQ0FBQzFGLElBSkUsQ0FBVCxDQUptQixDQVVuQjtBQUNBOztBQUNBZ00sUUFBQUEsQ0FBQyxDQUFDckYsU0FBRixHQUFjcUYsQ0FBQyxDQUFDL0QsSUFBRixDQUFPdEMsSUFBckIsQ0FabUIsQ0FhbkI7O0FBQ0FxRyxRQUFBQSxDQUFDLENBQUNoRSxZQUFGLEdBQ0UsV0FBVzhELEVBQVgsR0FBZ0IsR0FBaEIsSUFBdUJBLEVBQUUsR0FBR0UsQ0FBQyxDQUFDckYsU0FBUCxHQUFtQixDQUExQyxJQUErQyxHQUEvQyxHQUFxRGtGLEVBRHZELENBZG1CLENBZ0JuQjs7QUFDQS9FLFFBQUFBLElBQUksQ0FBQ3ZHLFFBQUwsQ0FBYyxpQkFBZCxFQUFpQyxJQUFqQyxFQUF1Q3lMLENBQXZDLEVBakJtQixDQWtCbkI7OztBQUNBbEYsUUFBQUEsSUFBSSxDQUFDZ0IsWUFBTCxDQUFrQmtFLENBQWxCLEVBbkJtQixDQW9CbkI7OztBQUNBbEYsUUFBQUEsSUFBSSxDQUFDRCxxQkFBTCxDQUEyQm1GLENBQTNCOztBQUNBYixRQUFBQSxLQUFLLEdBQUcsQ0FDTHJFLElBQUksQ0FBQ3ZHLFFBQUwsQ0FBYyxXQUFkLEVBQTJCLElBQTNCLEVBQWlDeUwsQ0FBakMsTUFBd0MsS0FBeEMsSUFBaURwTixDQUFDLENBQUNzTixJQUFGLENBQU9GLENBQVAsQ0FBbEQsSUFDQWxGLElBQUksQ0FBQ3VELGNBQUwsQ0FBb0IsS0FBcEIsRUFBMkIyQixDQUFDLENBQUN2SixPQUE3QixDQUZNLEVBSUxjLElBSkssQ0FJQSxVQUFVNEksTUFBVixFQUFrQkMsVUFBbEIsRUFBOEJqQixLQUE5QixFQUFxQztBQUN6Q1csVUFBQUEsRUFBRSxHQUFHaEYsSUFBSSxDQUFDeUUsaUJBQUwsQ0FBdUJKLEtBQXZCLEtBQWlDVyxFQUFFLEdBQUdFLENBQUMsQ0FBQ3JGLFNBQTdDLENBRHlDLENBRXpDO0FBQ0E7QUFDQTs7QUFDQSxjQUFJc0YsYUFBYSxHQUFHRCxDQUFDLENBQUNyRixTQUFsQixHQUE4QnFGLENBQUMsQ0FBQ2pHLFNBQUYsQ0FBWW5CLE1BQTlDLEVBQXNEO0FBQ3BEa0MsWUFBQUEsSUFBSSxDQUFDUixXQUFMLENBQ0UxSCxDQUFDLENBQUM0QixLQUFGLENBQVEsVUFBUixFQUFvQjtBQUNsQitGLGNBQUFBLGdCQUFnQixFQUFFLElBREE7QUFFbEIzQixjQUFBQSxNQUFNLEVBQUVrSCxFQUFFLEdBQUdFLENBQUMsQ0FBQ2hLLGFBRkc7QUFHbEJ3RCxjQUFBQSxLQUFLLEVBQUVzRyxFQUFFLEdBQUdFLENBQUMsQ0FBQ2hLO0FBSEksYUFBcEIsQ0FERixFQU1FZ0ssQ0FORjtBQVFEOztBQUNEbkwsVUFBQUEsT0FBTyxDQUFDbUIsYUFBUixHQUF3QmdLLENBQUMsQ0FBQ2hLLGFBQUYsR0FBa0I4SixFQUExQztBQUNBRSxVQUFBQSxDQUFDLENBQUNHLE1BQUYsR0FBV0EsTUFBWDtBQUNBSCxVQUFBQSxDQUFDLENBQUNJLFVBQUYsR0FBZUEsVUFBZjtBQUNBSixVQUFBQSxDQUFDLENBQUNiLEtBQUYsR0FBVUEsS0FBVjs7QUFDQXJFLFVBQUFBLElBQUksQ0FBQ3ZHLFFBQUwsQ0FBYyxXQUFkLEVBQTJCLElBQTNCLEVBQWlDeUwsQ0FBakM7O0FBQ0FsRixVQUFBQSxJQUFJLENBQUN2RyxRQUFMLENBQWMsYUFBZCxFQUE2QixJQUE3QixFQUFtQ3lMLENBQW5DOztBQUNBLGNBQUlGLEVBQUUsR0FBR0QsRUFBVCxFQUFhO0FBQ1g7QUFDQTtBQUNBNUUsWUFBQUEsT0FBTTtBQUNQLFdBSkQsTUFJTztBQUNMdUQsWUFBQUEsR0FBRyxDQUFDRSxXQUFKLENBQWdCc0IsQ0FBQyxDQUFDdkosT0FBbEIsRUFBMkIsQ0FBQzBKLE1BQUQsRUFBU0MsVUFBVCxFQUFxQmpCLEtBQXJCLENBQTNCO0FBQ0Q7QUFDRixTQWhDSyxFQWlDTGpCLElBakNLLENBaUNBLFVBQVVpQixLQUFWLEVBQWlCaUIsVUFBakIsRUFBNkJsQixXQUE3QixFQUEwQztBQUM5Q2MsVUFBQUEsQ0FBQyxDQUFDYixLQUFGLEdBQVVBLEtBQVY7QUFDQWEsVUFBQUEsQ0FBQyxDQUFDSSxVQUFGLEdBQWVBLFVBQWY7QUFDQUosVUFBQUEsQ0FBQyxDQUFDZCxXQUFGLEdBQWdCQSxXQUFoQjs7QUFDQXBFLFVBQUFBLElBQUksQ0FBQ3ZHLFFBQUwsQ0FBYyxXQUFkLEVBQTJCLElBQTNCLEVBQWlDeUwsQ0FBakM7O0FBQ0FsRixVQUFBQSxJQUFJLENBQUN2RyxRQUFMLENBQWMsYUFBZCxFQUE2QixJQUE3QixFQUFtQ3lMLENBQW5DOztBQUNBeEIsVUFBQUEsR0FBRyxDQUFDRyxVQUFKLENBQWVxQixDQUFDLENBQUN2SixPQUFqQixFQUEwQixDQUFDMEksS0FBRCxFQUFRaUIsVUFBUixFQUFvQmxCLFdBQXBCLENBQTFCO0FBQ0QsU0F4Q0ssRUF5Q0xkLE1BekNLLENBeUNFLFlBQVk7QUFDbEJ0RCxVQUFBQSxJQUFJLENBQUNNLHVCQUFMLENBQTZCNEUsQ0FBN0I7QUFDRCxTQTNDSyxDQUFSO0FBNENELE9BbEVEOztBQW1FQSxXQUFLbEMsZUFBTCxDQUFxQkMsT0FBckI7O0FBQ0FBLE1BQUFBLE9BQU8sQ0FBQ2EsS0FBUixHQUFnQixZQUFZO0FBQzFCLGVBQU9PLEtBQUssQ0FBQ1AsS0FBTixFQUFQO0FBQ0QsT0FGRDs7QUFHQTNELE1BQUFBLE9BQU07O0FBQ04sYUFBTzhDLE9BQVA7QUFDRCxLQTV6QjRCO0FBOHpCN0JzQyxJQUFBQSxXQUFXLEVBQUUscUJBQVVuTSxDQUFWLEVBQWFpRCxJQUFiLEVBQW1CO0FBQzlCLFVBQUksS0FBS21KLE9BQUwsS0FBaUIsQ0FBckIsRUFBd0I7QUFDdEI7QUFDQTtBQUNBO0FBQ0EsYUFBSy9MLFFBQUwsQ0FBYyxPQUFkLEVBSnNCLENBS3RCOzs7QUFDQSxhQUFLcUcsYUFBTCxHQUFxQixJQUFJLEtBQUtyQyxhQUFULEVBQXJCLENBTnNCLENBT3RCOztBQUNBLGFBQUt3QixTQUFMLENBQWVuQixNQUFmLEdBQXdCLEtBQUttQixTQUFMLENBQWVQLEtBQWYsR0FBdUIsQ0FBL0M7QUFDQSxhQUFLTyxTQUFMLENBQWVsQixPQUFmLEdBQXlCLENBQXpCO0FBQ0QsT0FYNkIsQ0FZOUI7QUFDQTtBQUNBOzs7QUFDQSxXQUFLb0IsbUJBQUwsQ0FBeUI5QyxJQUF6Qjs7QUFDQSxXQUFLeUMsbUJBQUwsQ0FBeUJ6QyxJQUF6Qjs7QUFDQUEsTUFBQUEsSUFBSSxDQUFDNEMsU0FBTCxDQUFlbkIsTUFBZixHQUF3QnpCLElBQUksQ0FBQ3lCLE1BQUwsR0FBY3pCLElBQUksQ0FBQ25CLGFBQUwsSUFBc0IsQ0FBNUQ7QUFDQW1CLE1BQUFBLElBQUksQ0FBQzRDLFNBQUwsQ0FBZVAsS0FBZixHQUF1QnJDLElBQUksQ0FBQ3FDLEtBQUwsR0FBYSxLQUFLRixTQUFMLENBQWVuQyxJQUFJLENBQUNvQyxLQUFwQixLQUE4QixDQUFsRTtBQUNBcEMsTUFBQUEsSUFBSSxDQUFDNEMsU0FBTCxDQUFlbEIsT0FBZixHQUF5QjFCLElBQUksQ0FBQzBCLE9BQUwsR0FBZSxDQUF4QztBQUNBLFdBQUt5SCxPQUFMLElBQWdCLENBQWhCLENBcEI4QixDQXFCOUI7O0FBQ0EsV0FBS3ZHLFNBQUwsQ0FBZW5CLE1BQWYsSUFBeUJ6QixJQUFJLENBQUN5QixNQUE5QjtBQUNBLFdBQUttQixTQUFMLENBQWVQLEtBQWYsSUFBd0JyQyxJQUFJLENBQUNxQyxLQUE3QjtBQUNELEtBdDFCNEI7QUF3MUI3QitHLElBQUFBLE9BQU8sRUFBRSxpQkFBVUosTUFBVixFQUFrQkMsVUFBbEIsRUFBOEJqQixLQUE5QixFQUFxQ3RLLE9BQXJDLEVBQThDO0FBQ3JELFVBQUkyRSxLQUFLLEdBQUczRSxPQUFPLENBQUNrRixTQUFSLENBQWtCUCxLQUE5QjtBQUFBLFVBQ0U4RixRQUFRLEdBQUd6SyxPQUFPLENBQUNxRixTQURyQjs7QUFFQSxVQUFJckYsT0FBTyxDQUFDa0YsU0FBUixDQUFrQm5CLE1BQWxCLEdBQTJCWSxLQUEvQixFQUFzQztBQUNwQztBQUNBO0FBQ0EsYUFBS2MsV0FBTCxDQUNFMUgsQ0FBQyxDQUFDNEIsS0FBRixDQUFRLFVBQVIsRUFBb0I7QUFDbEIrRixVQUFBQSxnQkFBZ0IsRUFBRSxJQURBO0FBRWxCM0IsVUFBQUEsTUFBTSxFQUFFWSxLQUZVO0FBR2xCQSxVQUFBQSxLQUFLLEVBQUVBO0FBSFcsU0FBcEIsQ0FERixFQU1FM0UsT0FORjtBQVFEOztBQUNEeUssTUFBQUEsUUFBUSxDQUFDYSxNQUFULEdBQWtCdEwsT0FBTyxDQUFDc0wsTUFBUixHQUFpQkEsTUFBbkM7QUFDQWIsTUFBQUEsUUFBUSxDQUFDYyxVQUFULEdBQXNCdkwsT0FBTyxDQUFDdUwsVUFBUixHQUFxQkEsVUFBM0M7QUFDQWQsTUFBQUEsUUFBUSxDQUFDSCxLQUFULEdBQWlCdEssT0FBTyxDQUFDc0ssS0FBUixHQUFnQkEsS0FBakM7O0FBQ0EsV0FBSzVLLFFBQUwsQ0FBYyxNQUFkLEVBQXNCLElBQXRCLEVBQTRCTSxPQUE1QjtBQUNELEtBMzJCNEI7QUE2MkI3QjJMLElBQUFBLE9BQU8sRUFBRSxpQkFBVXJCLEtBQVYsRUFBaUJpQixVQUFqQixFQUE2QmxCLFdBQTdCLEVBQTBDckssT0FBMUMsRUFBbUQ7QUFDMUQsVUFBSXlLLFFBQVEsR0FBR3pLLE9BQU8sQ0FBQ3FGLFNBQXZCOztBQUNBLFVBQUlyRixPQUFPLENBQUNvQixtQkFBWixFQUFpQztBQUMvQjtBQUNBO0FBQ0EsYUFBSzhELFNBQUwsQ0FBZW5CLE1BQWYsSUFBeUIvRCxPQUFPLENBQUNrRixTQUFSLENBQWtCbkIsTUFBM0M7QUFDQSxhQUFLbUIsU0FBTCxDQUFlUCxLQUFmLElBQXdCM0UsT0FBTyxDQUFDa0YsU0FBUixDQUFrQlAsS0FBMUM7QUFDRDs7QUFDRDhGLE1BQUFBLFFBQVEsQ0FBQ0gsS0FBVCxHQUFpQnRLLE9BQU8sQ0FBQ3NLLEtBQVIsR0FBZ0JBLEtBQWpDO0FBQ0FHLE1BQUFBLFFBQVEsQ0FBQ2MsVUFBVCxHQUFzQnZMLE9BQU8sQ0FBQ3VMLFVBQVIsR0FBcUJBLFVBQTNDO0FBQ0FkLE1BQUFBLFFBQVEsQ0FBQ0osV0FBVCxHQUF1QnJLLE9BQU8sQ0FBQ3FLLFdBQVIsR0FBc0JBLFdBQTdDOztBQUNBLFdBQUszSyxRQUFMLENBQWMsTUFBZCxFQUFzQixJQUF0QixFQUE0Qk0sT0FBNUI7QUFDRCxLQXozQjRCO0FBMjNCN0I0TCxJQUFBQSxTQUFTLEVBQUUsbUJBQVVDLGFBQVYsRUFBeUJOLFVBQXpCLEVBQXFDTyxZQUFyQyxFQUFtRDlMLE9BQW5ELEVBQTREO0FBQ3JFO0FBQ0E7QUFDQSxXQUFLTixRQUFMLENBQWMsUUFBZCxFQUF3QixJQUF4QixFQUE4Qk0sT0FBOUI7QUFDRCxLQS8zQjRCO0FBaTRCN0J1SyxJQUFBQSxPQUFPLEVBQUUsaUJBQVVsTCxDQUFWLEVBQWFpRCxJQUFiLEVBQW1CO0FBQzFCLFVBQUksQ0FBQ0EsSUFBSSxDQUFDSyxNQUFWLEVBQWtCO0FBQ2hCLGFBQUtxSCxzQkFBTCxDQUE0QjNLLENBQTVCLEVBQStCaUQsSUFBL0I7QUFDRDs7QUFDRCxVQUFJMkQsSUFBSSxHQUFHLElBQVg7QUFBQSxVQUNFcUUsS0FERjtBQUFBLFVBRUV5QixPQUZGO0FBQUEsVUFHRUMsSUFIRjtBQUFBLFVBSUVDLElBSkY7QUFBQSxVQUtFak0sT0FBTyxHQUFHaUcsSUFBSSxDQUFDMEMsZ0JBQUwsQ0FBc0JyRyxJQUF0QixDQUxaO0FBQUEsVUFNRTRKLElBQUksR0FBRyxTQUFQQSxJQUFPLEdBQVk7QUFDakJqRyxRQUFBQSxJQUFJLENBQUNrRyxRQUFMLElBQWlCLENBQWpCLENBRGlCLENBRWpCOztBQUNBbk0sUUFBQUEsT0FBTyxDQUFDK0YsYUFBUixHQUF3QixJQUFJRSxJQUFJLENBQUN2QyxhQUFULEVBQXhCO0FBQ0E0RyxRQUFBQSxLQUFLLEdBQ0hBLEtBQUssSUFDTCxDQUNHLENBQUN5QixPQUFPLElBQ1A5RixJQUFJLENBQUN2RyxRQUFMLENBQ0UsTUFERixFQUVFM0IsQ0FBQyxDQUFDNEIsS0FBRixDQUFRLE1BQVIsRUFBZ0I7QUFBRUMsVUFBQUEsY0FBYyxFQUFFUDtBQUFsQixTQUFoQixDQUZGLEVBR0VXLE9BSEYsTUFJTSxLQUxQLEtBTUNpRyxJQUFJLENBQUN1RCxjQUFMLENBQW9CLEtBQXBCLEVBQTJCeEosT0FBTyxDQUFDNEIsT0FBbkMsRUFBNENtSyxPQUE1QyxDQU5GLElBT0E5RixJQUFJLENBQUNnQyxjQUFMLENBQW9CakksT0FBcEIsQ0FQQSxJQVFBakMsQ0FBQyxDQUFDc04sSUFBRixDQUFPckwsT0FBUCxDQVRGLEVBV0cwQyxJQVhILENBV1EsVUFBVTRJLE1BQVYsRUFBa0JDLFVBQWxCLEVBQThCakIsS0FBOUIsRUFBcUM7QUFDekNyRSxVQUFBQSxJQUFJLENBQUN5RixPQUFMLENBQWFKLE1BQWIsRUFBcUJDLFVBQXJCLEVBQWlDakIsS0FBakMsRUFBd0N0SyxPQUF4QztBQUNELFNBYkgsRUFjR3FKLElBZEgsQ0FjUSxVQUFVaUIsS0FBVixFQUFpQmlCLFVBQWpCLEVBQTZCbEIsV0FBN0IsRUFBMEM7QUFDOUNwRSxVQUFBQSxJQUFJLENBQUMwRixPQUFMLENBQWFyQixLQUFiLEVBQW9CaUIsVUFBcEIsRUFBZ0NsQixXQUFoQyxFQUE2Q3JLLE9BQTdDO0FBQ0QsU0FoQkgsRUFpQkd1SixNQWpCSCxDQWlCVSxVQUFVc0MsYUFBVixFQUF5Qk4sVUFBekIsRUFBcUNPLFlBQXJDLEVBQW1EO0FBQ3pEN0YsVUFBQUEsSUFBSSxDQUFDTSx1QkFBTCxDQUE2QnZHLE9BQTdCOztBQUNBaUcsVUFBQUEsSUFBSSxDQUFDMkYsU0FBTCxDQUNFQyxhQURGLEVBRUVOLFVBRkYsRUFHRU8sWUFIRixFQUlFOUwsT0FKRjs7QUFNQWlHLFVBQUFBLElBQUksQ0FBQ2tHLFFBQUwsSUFBaUIsQ0FBakI7QUFDQWxHLFVBQUFBLElBQUksQ0FBQ3dGLE9BQUwsSUFBZ0IsQ0FBaEI7O0FBQ0EsY0FDRXpMLE9BQU8sQ0FBQ1ksc0JBQVIsSUFDQVosT0FBTyxDQUFDWSxzQkFBUixHQUFpQ3FGLElBQUksQ0FBQ2tHLFFBRnhDLEVBR0U7QUFDQTtBQUNBO0FBQ0EsZ0JBQUlDLFFBQVEsR0FBR25HLElBQUksQ0FBQ29HLE1BQUwsQ0FBWUMsS0FBWixFQUFmOztBQUNBLG1CQUFPRixRQUFQLEVBQWlCO0FBQ2Ysa0JBQUluRyxJQUFJLENBQUMyQyxpQkFBTCxDQUF1QndELFFBQXZCLE1BQXFDLFNBQXpDLEVBQW9EO0FBQ2xEQSxnQkFBQUEsUUFBUSxDQUFDRyxPQUFUO0FBQ0E7QUFDRDs7QUFDREgsY0FBQUEsUUFBUSxHQUFHbkcsSUFBSSxDQUFDb0csTUFBTCxDQUFZQyxLQUFaLEVBQVg7QUFDRDtBQUNGOztBQUNELGNBQUlyRyxJQUFJLENBQUN3RixPQUFMLEtBQWlCLENBQXJCLEVBQXdCO0FBQ3RCO0FBQ0E7QUFDQXhGLFlBQUFBLElBQUksQ0FBQ3ZHLFFBQUwsQ0FBYyxNQUFkO0FBQ0Q7QUFDRixTQS9DSCxDQUZGO0FBa0RBLGVBQU80SyxLQUFQO0FBQ0QsT0E3REg7O0FBOERBLFdBQUtrQixXQUFMLENBQWlCbk0sQ0FBakIsRUFBb0JXLE9BQXBCOztBQUNBLFVBQ0UsS0FBS0EsT0FBTCxDQUFhVyxpQkFBYixJQUNDLEtBQUtYLE9BQUwsQ0FBYVksc0JBQWIsSUFDQyxLQUFLWixPQUFMLENBQWFZLHNCQUFiLElBQXVDLEtBQUt1TCxRQUhoRCxFQUlFO0FBQ0EsWUFBSSxLQUFLbk0sT0FBTCxDQUFhWSxzQkFBYixHQUFzQyxDQUExQyxFQUE2QztBQUMzQ29MLFVBQUFBLElBQUksR0FBR2pPLENBQUMsQ0FBQzZMLFFBQUYsRUFBUDs7QUFDQSxlQUFLeUMsTUFBTCxDQUFZN0gsSUFBWixDQUFpQndILElBQWpCOztBQUNBQyxVQUFBQSxJQUFJLEdBQUdELElBQUksQ0FBQy9GLElBQUksQ0FBQ2pELFlBQU4sQ0FBSixDQUF3QmtKLElBQXhCLENBQVA7QUFDRCxTQUpELE1BSU87QUFDTCxlQUFLTSxTQUFMLEdBQWlCLEtBQUtBLFNBQUwsQ0FBZXZHLElBQUksQ0FBQ2pELFlBQXBCLEVBQWtDa0osSUFBbEMsRUFBd0NBLElBQXhDLENBQWpCO0FBQ0FELFVBQUFBLElBQUksR0FBRyxLQUFLTyxTQUFaO0FBQ0QsU0FSRCxDQVNBO0FBQ0E7QUFDQTs7O0FBQ0FQLFFBQUFBLElBQUksQ0FBQ2xDLEtBQUwsR0FBYSxZQUFZO0FBQ3ZCZ0MsVUFBQUEsT0FBTyxHQUFHLENBQUMzTCxTQUFELEVBQVksT0FBWixFQUFxQixPQUFyQixDQUFWOztBQUNBLGNBQUksQ0FBQ2tLLEtBQUwsRUFBWTtBQUNWLGdCQUFJMEIsSUFBSixFQUFVO0FBQ1JBLGNBQUFBLElBQUksQ0FBQ2xDLFVBQUwsQ0FBZ0I5SixPQUFPLENBQUM0QixPQUF4QixFQUFpQ21LLE9BQWpDO0FBQ0Q7O0FBQ0QsbUJBQU9HLElBQUksRUFBWDtBQUNEOztBQUNELGlCQUFPNUIsS0FBSyxDQUFDUCxLQUFOLEVBQVA7QUFDRCxTQVREOztBQVVBLGVBQU8sS0FBS2QsZUFBTCxDQUFxQmdELElBQXJCLENBQVA7QUFDRDs7QUFDRCxhQUFPQyxJQUFJLEVBQVg7QUFDRCxLQWorQjRCO0FBbStCN0JPLElBQUFBLE1BQU0sRUFBRSxnQkFBVXBOLENBQVYsRUFBYWlELElBQWIsRUFBbUI7QUFDekIsVUFBSTJELElBQUksR0FBRyxJQUFYO0FBQUEsVUFDRXFGLE1BQU0sR0FBRyxJQURYO0FBQUEsVUFFRXRMLE9BQU8sR0FBR2pDLENBQUMsQ0FBQ29ILE1BQUYsQ0FBUyxFQUFULEVBQWEsS0FBS25GLE9BQWxCLEVBQTJCc0MsSUFBM0IsQ0FGWjtBQUFBLFVBR0VvQyxLQUFLLEdBQUdwQyxJQUFJLENBQUNvQyxLQUhmO0FBQUEsVUFJRWdJLFdBQVcsR0FBR2hJLEtBQUssQ0FBQzJELE1BSnRCO0FBQUEsVUFLRXNFLEtBQUssR0FBRzNNLE9BQU8sQ0FBQ1EscUJBTGxCO0FBQUEsVUFNRW9NLFNBQVMsR0FBRzVNLE9BQU8sQ0FBQ1Msd0JBTnRCO0FBQUEsVUFPRW9NLFFBQVEsR0FBRzdNLE9BQU8sQ0FBQ1UsZ0NBUHJCO0FBQUEsVUFRRW9NLFNBQVMsR0FBRyxDQVJkO0FBQUEsVUFTRXhNLFNBQVMsR0FBRyxLQUFLNEgsYUFBTCxDQUFtQmxJLE9BQW5CLENBVGQ7QUFBQSxVQVVFK00sWUFWRjtBQUFBLFVBV0VDLGNBWEY7QUFBQSxVQVlFQyxPQVpGO0FBQUEsVUFhRTdFLENBYkY7QUFBQSxVQWNFOEUsQ0FBQyxHQUFHLENBZE47O0FBZUEsVUFBSSxDQUFDUixXQUFMLEVBQWtCO0FBQ2hCLGVBQU8sS0FBUDtBQUNEOztBQUNELFVBQUlFLFNBQVMsSUFBSWxJLEtBQUssQ0FBQyxDQUFELENBQUwsQ0FBU0ksSUFBVCxLQUFrQjFFLFNBQW5DLEVBQThDO0FBQzVDd00sUUFBQUEsU0FBUyxHQUFHeE0sU0FBWjtBQUNEOztBQUNELFVBQ0UsRUFBRUosT0FBTyxDQUFDTyxpQkFBUixJQUE2Qm9NLEtBQTdCLElBQXNDQyxTQUF4QyxLQUNBLENBQUMsS0FBS3hJLFlBQUwsQ0FBa0JwRSxPQUFsQixDQUZILEVBR0U7QUFDQWlOLFFBQUFBLE9BQU8sR0FBRyxDQUFDdkksS0FBRCxDQUFWO0FBQ0FxSSxRQUFBQSxZQUFZLEdBQUcsQ0FBQ3pNLFNBQUQsQ0FBZjtBQUNELE9BTkQsTUFNTyxJQUFJLEVBQUVOLE9BQU8sQ0FBQ08saUJBQVIsSUFBNkJxTSxTQUEvQixLQUE2Q0QsS0FBakQsRUFBd0Q7QUFDN0RNLFFBQUFBLE9BQU8sR0FBRyxFQUFWO0FBQ0FGLFFBQUFBLFlBQVksR0FBRyxFQUFmOztBQUNBLGFBQUszRSxDQUFDLEdBQUcsQ0FBVCxFQUFZQSxDQUFDLEdBQUdzRSxXQUFoQixFQUE2QnRFLENBQUMsSUFBSXVFLEtBQWxDLEVBQXlDO0FBQ3ZDTSxVQUFBQSxPQUFPLENBQUN6SSxJQUFSLENBQWFFLEtBQUssQ0FBQzNGLEtBQU4sQ0FBWXFKLENBQVosRUFBZUEsQ0FBQyxHQUFHdUUsS0FBbkIsQ0FBYjtBQUNBSyxVQUFBQSxjQUFjLEdBQUcxTSxTQUFTLENBQUN2QixLQUFWLENBQWdCcUosQ0FBaEIsRUFBbUJBLENBQUMsR0FBR3VFLEtBQXZCLENBQWpCOztBQUNBLGNBQUksQ0FBQ0ssY0FBYyxDQUFDM0UsTUFBcEIsRUFBNEI7QUFDMUIyRSxZQUFBQSxjQUFjLEdBQUcxTSxTQUFqQjtBQUNEOztBQUNEeU0sVUFBQUEsWUFBWSxDQUFDdkksSUFBYixDQUFrQndJLGNBQWxCO0FBQ0Q7QUFDRixPQVhNLE1BV0EsSUFBSSxDQUFDaE4sT0FBTyxDQUFDTyxpQkFBVCxJQUE4QnFNLFNBQWxDLEVBQTZDO0FBQ2xESyxRQUFBQSxPQUFPLEdBQUcsRUFBVjtBQUNBRixRQUFBQSxZQUFZLEdBQUcsRUFBZjs7QUFDQSxhQUFLM0UsQ0FBQyxHQUFHLENBQVQsRUFBWUEsQ0FBQyxHQUFHc0UsV0FBaEIsRUFBNkJ0RSxDQUFDLEdBQUdBLENBQUMsR0FBRyxDQUFyQyxFQUF3QztBQUN0QzBFLFVBQUFBLFNBQVMsSUFBSXBJLEtBQUssQ0FBQzBELENBQUQsQ0FBTCxDQUFTdEQsSUFBVCxHQUFnQitILFFBQTdCOztBQUNBLGNBQ0V6RSxDQUFDLEdBQUcsQ0FBSixLQUFVc0UsV0FBVixJQUNBSSxTQUFTLEdBQUdwSSxLQUFLLENBQUMwRCxDQUFDLEdBQUcsQ0FBTCxDQUFMLENBQWF0RCxJQUF6QixHQUFnQytILFFBQWhDLEdBQTJDRCxTQUQzQyxJQUVDRCxLQUFLLElBQUl2RSxDQUFDLEdBQUcsQ0FBSixHQUFROEUsQ0FBUixJQUFhUCxLQUh6QixFQUlFO0FBQ0FNLFlBQUFBLE9BQU8sQ0FBQ3pJLElBQVIsQ0FBYUUsS0FBSyxDQUFDM0YsS0FBTixDQUFZbU8sQ0FBWixFQUFlOUUsQ0FBQyxHQUFHLENBQW5CLENBQWI7QUFDQTRFLFlBQUFBLGNBQWMsR0FBRzFNLFNBQVMsQ0FBQ3ZCLEtBQVYsQ0FBZ0JtTyxDQUFoQixFQUFtQjlFLENBQUMsR0FBRyxDQUF2QixDQUFqQjs7QUFDQSxnQkFBSSxDQUFDNEUsY0FBYyxDQUFDM0UsTUFBcEIsRUFBNEI7QUFDMUIyRSxjQUFBQSxjQUFjLEdBQUcxTSxTQUFqQjtBQUNEOztBQUNEeU0sWUFBQUEsWUFBWSxDQUFDdkksSUFBYixDQUFrQndJLGNBQWxCO0FBQ0FFLFlBQUFBLENBQUMsR0FBRzlFLENBQUMsR0FBRyxDQUFSO0FBQ0EwRSxZQUFBQSxTQUFTLEdBQUcsQ0FBWjtBQUNEO0FBQ0Y7QUFDRixPQXBCTSxNQW9CQTtBQUNMQyxRQUFBQSxZQUFZLEdBQUd6TSxTQUFmO0FBQ0Q7O0FBQ0RnQyxNQUFBQSxJQUFJLENBQUM2SyxhQUFMLEdBQXFCekksS0FBckI7QUFDQTNHLE1BQUFBLENBQUMsQ0FBQytELElBQUYsQ0FBT21MLE9BQU8sSUFBSXZJLEtBQWxCLEVBQXlCLFVBQVVFLEtBQVYsRUFBaUJ3SSxPQUFqQixFQUEwQjtBQUNqRCxZQUFJQyxPQUFPLEdBQUd0UCxDQUFDLENBQUNvSCxNQUFGLENBQVMsRUFBVCxFQUFhN0MsSUFBYixDQUFkO0FBQ0ErSyxRQUFBQSxPQUFPLENBQUMzSSxLQUFSLEdBQWdCdUksT0FBTyxHQUFHRyxPQUFILEdBQWEsQ0FBQ0EsT0FBRCxDQUFwQztBQUNBQyxRQUFBQSxPQUFPLENBQUMvTSxTQUFSLEdBQW9CeU0sWUFBWSxDQUFDbkksS0FBRCxDQUFoQzs7QUFDQXFCLFFBQUFBLElBQUksQ0FBQ2IsbUJBQUwsQ0FBeUJpSSxPQUF6Qjs7QUFDQXBILFFBQUFBLElBQUksQ0FBQ2xCLG1CQUFMLENBQXlCc0ksT0FBekI7O0FBQ0FwSCxRQUFBQSxJQUFJLENBQUMrRCxzQkFBTCxDQUE0QjNLLENBQTVCLEVBQStCZ08sT0FBL0I7O0FBQ0EvQixRQUFBQSxNQUFNLEdBQUdyRixJQUFJLENBQUN2RyxRQUFMLENBQ1AsS0FETyxFQUVQM0IsQ0FBQyxDQUFDNEIsS0FBRixDQUFRLEtBQVIsRUFBZTtBQUFFQyxVQUFBQSxjQUFjLEVBQUVQO0FBQWxCLFNBQWYsQ0FGTyxFQUdQZ08sT0FITyxDQUFUO0FBS0EsZUFBTy9CLE1BQVA7QUFDRCxPQWJEO0FBY0EsYUFBT0EsTUFBUDtBQUNELEtBampDNEI7QUFtakM3QmdDLElBQUFBLGlCQUFpQixFQUFFLDJCQUFVaEwsSUFBVixFQUFnQjtBQUNqQyxVQUFJNkYsS0FBSyxHQUFHN0YsSUFBSSxDQUFDckUsU0FBakI7QUFBQSxVQUNFc1AsVUFBVSxHQUFHcEYsS0FBSyxDQUFDcUYsS0FBTixDQUFZLElBQVosQ0FEZjtBQUFBLFVBRUVDLFlBQVksR0FBR3RGLEtBQUssQ0FBQ3VGLEVBQU4sQ0FBU3hOLFFBQVEsQ0FBQ3lOLGFBQWxCLENBRmpCLENBRGlDLENBSWpDOztBQUNBckwsTUFBQUEsSUFBSSxDQUFDc0wsY0FBTCxHQUFzQkwsVUFBdEI7QUFDQXhQLE1BQUFBLENBQUMsQ0FBQyxlQUFELENBQUQsQ0FBbUJ5SixNQUFuQixDQUEwQitGLFVBQTFCLEVBQXNDLENBQXRDLEVBQXlDTSxLQUF6QyxHQU5pQyxDQU9qQztBQUNBOztBQUNBMUYsTUFBQUEsS0FBSyxDQUFDMkYsS0FBTixDQUFZUCxVQUFaLEVBQXdCUSxNQUF4QixHQVRpQyxDQVVqQztBQUNBOztBQUNBLFVBQUlOLFlBQUosRUFBa0I7QUFDaEJGLFFBQUFBLFVBQVUsQ0FBQ1MsT0FBWCxDQUFtQixPQUFuQjtBQUNELE9BZGdDLENBZWpDOzs7QUFDQWpRLE1BQUFBLENBQUMsQ0FBQ2tRLFNBQUYsQ0FBWTlGLEtBQUssQ0FBQzNCLEdBQU4sQ0FBVSxRQUFWLENBQVosRUFoQmlDLENBaUJqQztBQUNBO0FBQ0E7O0FBQ0EsV0FBS3hHLE9BQUwsQ0FBYS9CLFNBQWIsR0FBeUIsS0FBSytCLE9BQUwsQ0FBYS9CLFNBQWIsQ0FBdUIwSSxHQUF2QixDQUEyQixVQUFVeUIsQ0FBVixFQUFhOEYsRUFBYixFQUFpQjtBQUNuRSxZQUFJQSxFQUFFLEtBQUsvRixLQUFLLENBQUMsQ0FBRCxDQUFoQixFQUFxQjtBQUNuQixpQkFBT29GLFVBQVUsQ0FBQyxDQUFELENBQWpCO0FBQ0Q7O0FBQ0QsZUFBT1csRUFBUDtBQUNELE9BTHdCLENBQXpCLENBcEJpQyxDQTBCakM7QUFDQTs7QUFDQSxVQUFJL0YsS0FBSyxDQUFDLENBQUQsQ0FBTCxLQUFhLEtBQUtpRixPQUFMLENBQWEsQ0FBYixDQUFqQixFQUFrQztBQUNoQyxhQUFLQSxPQUFMLEdBQWVHLFVBQWY7QUFDRDtBQUNGLEtBbGxDNEI7QUFvbEM3QlksSUFBQUEsb0JBQW9CLEVBQUUsOEJBQVVDLEtBQVYsRUFBaUJDLElBQWpCLEVBQXVCO0FBQzNDLFVBQUlwSSxJQUFJLEdBQUcsSUFBWDtBQUFBLFVBQ0UwRCxHQUFHLEdBQUc1TCxDQUFDLENBQUM2TCxRQUFGLEVBRFI7QUFBQSxVQUVFMEUsT0FBTyxHQUFHLEVBRlo7QUFBQSxVQUdFQyxTQUhGO0FBQUEsVUFJRUMsWUFBWSxHQUFHLFNBQWZBLFlBQWUsQ0FBVW5QLENBQVYsRUFBYTtBQUMxQixZQUFJQSxDQUFDLElBQUksQ0FBQ0EsQ0FBQyxDQUFDK08sS0FBWixFQUFtQjtBQUNqQi9PLFVBQUFBLENBQUMsQ0FBQytPLEtBQUYsR0FBVUEsS0FBVjtBQUNELFNBSHlCLENBSTFCO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQXpFLFFBQUFBLEdBQUcsQ0FBQzRDLE9BQUosQ0FBWSxDQUFDbE4sQ0FBRCxDQUFaO0FBQ0QsT0FiSDtBQUFBLFVBY0VvUCxjQUFjLEdBQUcsU0FBakJBLGNBQWlCLENBQVVILE9BQVYsRUFBbUI7QUFDbENySSxRQUFBQSxJQUFJLENBQ0R5SSxzQkFESCxDQUMwQkosT0FEMUIsRUFDbUNELElBQUksR0FBR0QsS0FBSyxDQUFDN0osSUFBYixHQUFvQixHQUR2RCxFQUVHN0IsSUFGSCxDQUVRLFVBQVVnQyxLQUFWLEVBQWlCO0FBQ3JCaUYsVUFBQUEsR0FBRyxDQUFDNEMsT0FBSixDQUFZN0gsS0FBWjtBQUNELFNBSkgsRUFLRzJFLElBTEgsQ0FLUW1GLFlBTFI7QUFNRCxPQXJCSDtBQUFBLFVBc0JFRyxXQUFXLEdBQUcsU0FBZEEsV0FBYyxHQUFZO0FBQ3hCSixRQUFBQSxTQUFTLENBQUNJLFdBQVYsQ0FBc0IsVUFBVUMsT0FBVixFQUFtQjtBQUN2QyxjQUFJLENBQUNBLE9BQU8sQ0FBQ3ZHLE1BQWIsRUFBcUI7QUFDbkJvRyxZQUFBQSxjQUFjLENBQUNILE9BQUQsQ0FBZDtBQUNELFdBRkQsTUFFTztBQUNMQSxZQUFBQSxPQUFPLEdBQUdBLE9BQU8sQ0FBQ08sTUFBUixDQUFlRCxPQUFmLENBQVY7QUFDQUQsWUFBQUEsV0FBVztBQUNaO0FBQ0YsU0FQRCxFQU9HSCxZQVBIO0FBUUQsT0EvQkgsQ0FEMkMsQ0FpQzNDOzs7QUFDQUgsTUFBQUEsSUFBSSxHQUFHQSxJQUFJLElBQUksRUFBZjs7QUFDQSxVQUFJRCxLQUFLLENBQUNVLE1BQVYsRUFBa0I7QUFDaEIsWUFBSVYsS0FBSyxDQUFDVyxLQUFWLEVBQWlCO0FBQ2Y7QUFDQVgsVUFBQUEsS0FBSyxDQUFDVyxLQUFOLENBQVlDLFlBQVosR0FBMkJYLElBQTNCO0FBQ0ExRSxVQUFBQSxHQUFHLENBQUM0QyxPQUFKLENBQVk2QixLQUFLLENBQUNXLEtBQWxCO0FBQ0QsU0FKRCxNQUlPO0FBQ0xYLFVBQUFBLEtBQUssQ0FBQ3ZKLElBQU4sQ0FBVyxVQUFVQSxJQUFWLEVBQWdCO0FBQ3pCQSxZQUFBQSxJQUFJLENBQUNtSyxZQUFMLEdBQW9CWCxJQUFwQjtBQUNBMUUsWUFBQUEsR0FBRyxDQUFDNEMsT0FBSixDQUFZMUgsSUFBWjtBQUNELFdBSEQsRUFHRzJKLFlBSEg7QUFJRDtBQUNGLE9BWEQsTUFXTyxJQUFJSixLQUFLLENBQUNhLFdBQVYsRUFBdUI7QUFDNUJWLFFBQUFBLFNBQVMsR0FBR0gsS0FBSyxDQUFDYyxZQUFOLEVBQVo7QUFDQVAsUUFBQUEsV0FBVztBQUNaLE9BSE0sTUFHQTtBQUNMO0FBQ0E7QUFDQWhGLFFBQUFBLEdBQUcsQ0FBQzRDLE9BQUosQ0FBWSxFQUFaO0FBQ0Q7O0FBQ0QsYUFBTzVDLEdBQUcsQ0FBQ1QsT0FBSixFQUFQO0FBQ0QsS0Ezb0M0QjtBQTZvQzdCd0YsSUFBQUEsc0JBQXNCLEVBQUUsZ0NBQVVKLE9BQVYsRUFBbUJELElBQW5CLEVBQXlCO0FBQy9DLFVBQUlwSSxJQUFJLEdBQUcsSUFBWDtBQUNBLGFBQU9sSSxDQUFDLENBQUNvUixJQUFGLENBQ0ozTCxLQURJLENBRUh6RixDQUZHLEVBR0hBLENBQUMsQ0FBQzRJLEdBQUYsQ0FBTTJILE9BQU4sRUFBZSxVQUFVRixLQUFWLEVBQWlCO0FBQzlCLGVBQU9uSSxJQUFJLENBQUNrSSxvQkFBTCxDQUEwQkMsS0FBMUIsRUFBaUNDLElBQWpDLENBQVA7QUFDRCxPQUZELENBSEcsRUFPSixLQUFLckwsWUFQRCxFQU9lLFlBQVk7QUFDOUIsZUFBT29NLEtBQUssQ0FBQ3RRLFNBQU4sQ0FBZ0IrUCxNQUFoQixDQUF1QnJMLEtBQXZCLENBQTZCLEVBQTdCLEVBQWlDQyxTQUFqQyxDQUFQO0FBQ0QsT0FUSSxDQUFQO0FBVUQsS0F6cEM0QjtBQTJwQzdCNEwsSUFBQUEsZ0JBQWdCLEVBQUUsMEJBQVUvUCxZQUFWLEVBQXdCO0FBQ3hDO0FBQ0FBLE1BQUFBLFlBQVksR0FBR0EsWUFBWSxJQUFJLEVBQS9CO0FBQ0EsVUFBSWdRLEtBQUssR0FBR2hRLFlBQVksQ0FBQ2dRLEtBQXpCOztBQUNBLFVBQ0VBLEtBQUssSUFDTEEsS0FBSyxDQUFDakgsTUFETixLQUVDaUgsS0FBSyxDQUFDLENBQUQsQ0FBTCxDQUFTQyxnQkFBVCxJQUE2QkQsS0FBSyxDQUFDLENBQUQsQ0FBTCxDQUFTRSxVQUZ2QyxDQURGLEVBSUU7QUFDQSxlQUFPLEtBQUtkLHNCQUFMLENBQ0wzUSxDQUFDLENBQUM0SSxHQUFGLENBQU0ySSxLQUFOLEVBQWEsVUFBVUcsSUFBVixFQUFnQjtBQUMzQixjQUFJckIsS0FBSjs7QUFDQSxjQUFJcUIsSUFBSSxDQUFDRixnQkFBVCxFQUEyQjtBQUN6Qm5CLFlBQUFBLEtBQUssR0FBR3FCLElBQUksQ0FBQ0YsZ0JBQUwsRUFBUjs7QUFDQSxnQkFBSW5CLEtBQUosRUFBVztBQUNUO0FBQ0FBLGNBQUFBLEtBQUssQ0FBQ1csS0FBTixHQUFjVSxJQUFJLENBQUNDLFNBQUwsRUFBZDtBQUNEOztBQUNELG1CQUFPdEIsS0FBUDtBQUNEOztBQUNELGlCQUFPcUIsSUFBSSxDQUFDRCxVQUFMLEVBQVA7QUFDRCxTQVhELENBREssQ0FBUDtBQWNEOztBQUNELGFBQU96UixDQUFDLENBQUM2TCxRQUFGLEdBQWEyQyxPQUFiLENBQXFCeE8sQ0FBQyxDQUFDNFIsU0FBRixDQUFZclEsWUFBWSxDQUFDb0YsS0FBekIsQ0FBckIsRUFBc0R3RSxPQUF0RCxFQUFQO0FBQ0QsS0FwckM0QjtBQXNyQzdCMEcsSUFBQUEsd0JBQXdCLEVBQUUsa0NBQVUzUixTQUFWLEVBQXFCO0FBQzdDO0FBQ0FBLE1BQUFBLFNBQVMsR0FBR0YsQ0FBQyxDQUFDRSxTQUFELENBQWI7QUFDQSxVQUFJcVEsT0FBTyxHQUFHclEsU0FBUyxDQUFDSyxJQUFWLENBQWUsU0FBZixDQUFkO0FBQUEsVUFDRW9HLEtBREY7QUFBQSxVQUVFMUMsS0FGRjs7QUFHQSxVQUFJc00sT0FBTyxJQUFJQSxPQUFPLENBQUNqRyxNQUF2QixFQUErQjtBQUM3QixlQUFPLEtBQUtxRyxzQkFBTCxDQUE0QkosT0FBNUIsQ0FBUDtBQUNEOztBQUNENUosTUFBQUEsS0FBSyxHQUFHM0csQ0FBQyxDQUFDNFIsU0FBRixDQUFZMVIsU0FBUyxDQUFDSyxJQUFWLENBQWUsT0FBZixDQUFaLENBQVI7O0FBQ0EsVUFBSSxDQUFDb0csS0FBSyxDQUFDMkQsTUFBWCxFQUFtQjtBQUNqQnJHLFFBQUFBLEtBQUssR0FBRy9ELFNBQVMsQ0FBQ0ssSUFBVixDQUFlLE9BQWYsQ0FBUjs7QUFDQSxZQUFJLENBQUMwRCxLQUFMLEVBQVk7QUFDVixpQkFBT2pFLENBQUMsQ0FBQzZMLFFBQUYsR0FBYTJDLE9BQWIsQ0FBcUIsRUFBckIsRUFBeUJyRCxPQUF6QixFQUFQO0FBQ0QsU0FKZ0IsQ0FLakI7QUFDQTtBQUNBOzs7QUFDQXhFLFFBQUFBLEtBQUssR0FBRyxDQUFDO0FBQUVILFVBQUFBLElBQUksRUFBRXZDLEtBQUssQ0FBQ0MsT0FBTixDQUFjLE9BQWQsRUFBdUIsRUFBdkI7QUFBUixTQUFELENBQVI7QUFDRCxPQVRELE1BU08sSUFBSXlDLEtBQUssQ0FBQyxDQUFELENBQUwsQ0FBU0gsSUFBVCxLQUFrQm5FLFNBQWxCLElBQStCc0UsS0FBSyxDQUFDLENBQUQsQ0FBTCxDQUFTK0MsUUFBNUMsRUFBc0Q7QUFDM0Q7QUFDQTFKLFFBQUFBLENBQUMsQ0FBQytELElBQUYsQ0FBTzRDLEtBQVAsRUFBYyxVQUFVRSxLQUFWLEVBQWlCQyxJQUFqQixFQUF1QjtBQUNuQ0EsVUFBQUEsSUFBSSxDQUFDTixJQUFMLEdBQVlNLElBQUksQ0FBQzRDLFFBQWpCO0FBQ0E1QyxVQUFBQSxJQUFJLENBQUNDLElBQUwsR0FBWUQsSUFBSSxDQUFDZ0wsUUFBakI7QUFDRCxTQUhEO0FBSUQ7O0FBQ0QsYUFBTzlSLENBQUMsQ0FBQzZMLFFBQUYsR0FBYTJDLE9BQWIsQ0FBcUI3SCxLQUFyQixFQUE0QndFLE9BQTVCLEVBQVA7QUFDRCxLQWp0QzRCO0FBbXRDN0I0RyxJQUFBQSxrQkFBa0IsRUFBRSw0QkFBVTdSLFNBQVYsRUFBcUI7QUFDdkMsVUFBSSxFQUFFQSxTQUFTLFlBQVlGLENBQXZCLEtBQTZCRSxTQUFTLENBQUNvSyxNQUFWLEtBQXFCLENBQXRELEVBQXlEO0FBQ3ZELGVBQU8sS0FBS3VILHdCQUFMLENBQThCM1IsU0FBOUIsQ0FBUDtBQUNEOztBQUNELGFBQU9GLENBQUMsQ0FBQ29SLElBQUYsQ0FDSjNMLEtBREksQ0FDRXpGLENBREYsRUFDS0EsQ0FBQyxDQUFDNEksR0FBRixDQUFNMUksU0FBTixFQUFpQixLQUFLMlIsd0JBQXRCLENBREwsRUFFSixLQUFLNU0sWUFGRCxFQUVlLFlBQVk7QUFDOUIsZUFBT29NLEtBQUssQ0FBQ3RRLFNBQU4sQ0FBZ0IrUCxNQUFoQixDQUF1QnJMLEtBQXZCLENBQTZCLEVBQTdCLEVBQWlDQyxTQUFqQyxDQUFQO0FBQ0QsT0FKSSxDQUFQO0FBS0QsS0E1dEM0QjtBQTh0QzdCc00sSUFBQUEsU0FBUyxFQUFFLG1CQUFVMVEsQ0FBVixFQUFhO0FBQ3RCLFVBQUk0RyxJQUFJLEdBQUcsSUFBWDtBQUFBLFVBQ0UzRCxJQUFJLEdBQUc7QUFDTHJFLFFBQUFBLFNBQVMsRUFBRUYsQ0FBQyxDQUFDc0IsQ0FBQyxDQUFDMlEsTUFBSCxDQURQO0FBRUw3TixRQUFBQSxJQUFJLEVBQUVwRSxDQUFDLENBQUNzQixDQUFDLENBQUMyUSxNQUFGLENBQVM3TixJQUFWO0FBRkYsT0FEVDs7QUFLQSxXQUFLMk4sa0JBQUwsQ0FBd0J4TixJQUFJLENBQUNyRSxTQUE3QixFQUF3Q3NMLE1BQXhDLENBQStDLFVBQVU3RSxLQUFWLEVBQWlCO0FBQzlEcEMsUUFBQUEsSUFBSSxDQUFDb0MsS0FBTCxHQUFhQSxLQUFiOztBQUNBLFlBQUl1QixJQUFJLENBQUNqRyxPQUFMLENBQWFLLGdCQUFqQixFQUFtQztBQUNqQzRGLFVBQUFBLElBQUksQ0FBQ3FILGlCQUFMLENBQXVCaEwsSUFBdkI7QUFDRDs7QUFDRCxZQUNFMkQsSUFBSSxDQUFDdkcsUUFBTCxDQUNFLFFBREYsRUFFRTNCLENBQUMsQ0FBQzRCLEtBQUYsQ0FBUSxRQUFSLEVBQWtCO0FBQUVDLFVBQUFBLGNBQWMsRUFBRVA7QUFBbEIsU0FBbEIsQ0FGRixFQUdFaUQsSUFIRixNQUlNLEtBTFIsRUFNRTtBQUNBMkQsVUFBQUEsSUFBSSxDQUFDd0csTUFBTCxDQUFZcE4sQ0FBWixFQUFlaUQsSUFBZjtBQUNEO0FBQ0YsT0FkRDtBQWVELEtBbnZDNEI7QUFxdkM3QjJOLElBQUFBLFFBQVEsRUFBRSxrQkFBVTVRLENBQVYsRUFBYTtBQUNyQixVQUFJaVEsS0FBSyxHQUNMalEsQ0FBQyxDQUFDRSxhQUFGLElBQ0FGLENBQUMsQ0FBQ0UsYUFBRixDQUFnQjJRLGFBRGhCLElBRUE3USxDQUFDLENBQUNFLGFBQUYsQ0FBZ0IyUSxhQUFoQixDQUE4QlosS0FIbEM7QUFBQSxVQUlFaE4sSUFBSSxHQUFHO0FBQUVvQyxRQUFBQSxLQUFLLEVBQUU7QUFBVCxPQUpUOztBQUtBLFVBQUk0SyxLQUFLLElBQUlBLEtBQUssQ0FBQ2pILE1BQW5CLEVBQTJCO0FBQ3pCdEssUUFBQUEsQ0FBQyxDQUFDK0QsSUFBRixDQUFPd04sS0FBUCxFQUFjLFVBQVUxSyxLQUFWLEVBQWlCNkssSUFBakIsRUFBdUI7QUFDbkMsY0FBSTVLLElBQUksR0FBRzRLLElBQUksQ0FBQ0MsU0FBTCxJQUFrQkQsSUFBSSxDQUFDQyxTQUFMLEVBQTdCOztBQUNBLGNBQUk3SyxJQUFKLEVBQVU7QUFDUnZDLFlBQUFBLElBQUksQ0FBQ29DLEtBQUwsQ0FBV0YsSUFBWCxDQUFnQkssSUFBaEI7QUFDRDtBQUNGLFNBTEQ7O0FBTUEsWUFDRSxLQUFLbkYsUUFBTCxDQUNFLE9BREYsRUFFRTNCLENBQUMsQ0FBQzRCLEtBQUYsQ0FBUSxPQUFSLEVBQWlCO0FBQUVDLFVBQUFBLGNBQWMsRUFBRVA7QUFBbEIsU0FBakIsQ0FGRixFQUdFaUQsSUFIRixNQUlNLEtBTFIsRUFNRTtBQUNBLGVBQUttSyxNQUFMLENBQVlwTixDQUFaLEVBQWVpRCxJQUFmO0FBQ0Q7QUFDRjtBQUNGLEtBNXdDNEI7QUE4d0M3QjZOLElBQUFBLE9BQU8sRUFBRSxpQkFBVTlRLENBQVYsRUFBYTtBQUNwQkEsTUFBQUEsQ0FBQyxDQUFDQyxZQUFGLEdBQWlCRCxDQUFDLENBQUNFLGFBQUYsSUFBbUJGLENBQUMsQ0FBQ0UsYUFBRixDQUFnQkQsWUFBcEQ7QUFDQSxVQUFJMkcsSUFBSSxHQUFHLElBQVg7QUFBQSxVQUNFM0csWUFBWSxHQUFHRCxDQUFDLENBQUNDLFlBRG5CO0FBQUEsVUFFRWdELElBQUksR0FBRyxFQUZUOztBQUdBLFVBQUloRCxZQUFZLElBQUlBLFlBQVksQ0FBQ29GLEtBQTdCLElBQXNDcEYsWUFBWSxDQUFDb0YsS0FBYixDQUFtQjJELE1BQTdELEVBQXFFO0FBQ25FaEosUUFBQUEsQ0FBQyxDQUFDUSxjQUFGOztBQUNBLGFBQUt3UCxnQkFBTCxDQUFzQi9QLFlBQXRCLEVBQW9DaUssTUFBcEMsQ0FBMkMsVUFBVTdFLEtBQVYsRUFBaUI7QUFDMURwQyxVQUFBQSxJQUFJLENBQUNvQyxLQUFMLEdBQWFBLEtBQWI7O0FBQ0EsY0FDRXVCLElBQUksQ0FBQ3ZHLFFBQUwsQ0FDRSxNQURGLEVBRUUzQixDQUFDLENBQUM0QixLQUFGLENBQVEsTUFBUixFQUFnQjtBQUFFQyxZQUFBQSxjQUFjLEVBQUVQO0FBQWxCLFdBQWhCLENBRkYsRUFHRWlELElBSEYsTUFJTSxLQUxSLEVBTUU7QUFDQTJELFlBQUFBLElBQUksQ0FBQ3dHLE1BQUwsQ0FBWXBOLENBQVosRUFBZWlELElBQWY7QUFDRDtBQUNGLFNBWEQ7QUFZRDtBQUNGLEtBbHlDNEI7QUFveUM3QjhOLElBQUFBLFdBQVcsRUFBRWxSLGNBQWMsQ0FBQyxVQUFELENBcHlDRTtBQXN5QzdCbVIsSUFBQUEsWUFBWSxFQUFFblIsY0FBYyxDQUFDLFdBQUQsQ0F0eUNDO0FBd3lDN0JvUixJQUFBQSxZQUFZLEVBQUVwUixjQUFjLENBQUMsV0FBRCxDQXh5Q0M7QUEweUM3QnFSLElBQUFBLGtCQUFrQixFQUFFLDhCQUFZO0FBQzlCLFVBQUksS0FBS25NLFlBQUwsQ0FBa0IsS0FBS3BFLE9BQXZCLENBQUosRUFBcUM7QUFDbkMsYUFBS3dRLEdBQUwsQ0FBUyxLQUFLeFEsT0FBTCxDQUFhQyxRQUF0QixFQUFnQztBQUM5QndRLFVBQUFBLFFBQVEsRUFBRSxLQUFLTCxXQURlO0FBRTlCTSxVQUFBQSxJQUFJLEVBQUUsS0FBS1AsT0FGbUI7QUFHOUI7QUFDQVEsVUFBQUEsU0FBUyxFQUFFLEtBQUtOLFlBSmM7QUFLOUI7QUFDQU8sVUFBQUEsU0FBUyxFQUFFLEtBQUtOO0FBTmMsU0FBaEM7O0FBUUEsYUFBS0UsR0FBTCxDQUFTLEtBQUt4USxPQUFMLENBQWFHLFNBQXRCLEVBQWlDO0FBQy9CMFEsVUFBQUEsS0FBSyxFQUFFLEtBQUtaO0FBRG1CLFNBQWpDO0FBR0Q7O0FBQ0QsVUFBSWxTLENBQUMsQ0FBQ0MsT0FBRixDQUFVQyxTQUFkLEVBQXlCO0FBQ3ZCLGFBQUt1UyxHQUFMLENBQVMsS0FBS3hRLE9BQUwsQ0FBYS9CLFNBQXRCLEVBQWlDO0FBQy9CNlMsVUFBQUEsTUFBTSxFQUFFLEtBQUtmO0FBRGtCLFNBQWpDO0FBR0Q7QUFDRixLQTd6QzRCO0FBK3pDN0JnQixJQUFBQSxxQkFBcUIsRUFBRSxpQ0FBWTtBQUNqQyxXQUFLQyxJQUFMLENBQVUsS0FBS2hSLE9BQUwsQ0FBYUMsUUFBdkIsRUFBaUMsbUNBQWpDOztBQUNBLFdBQUsrUSxJQUFMLENBQVUsS0FBS2hSLE9BQUwsQ0FBYUcsU0FBdkIsRUFBa0MsT0FBbEM7O0FBQ0EsV0FBSzZRLElBQUwsQ0FBVSxLQUFLaFIsT0FBTCxDQUFhL0IsU0FBdkIsRUFBa0MsUUFBbEM7QUFDRCxLQW4wQzRCO0FBcTBDN0JnVCxJQUFBQSxRQUFRLEVBQUUsb0JBQVk7QUFDcEIsV0FBS0YscUJBQUw7QUFDRCxLQXYwQzRCO0FBeTBDN0JHLElBQUFBLFVBQVUsRUFBRSxvQkFBVW5QLEdBQVYsRUFBZUMsS0FBZixFQUFzQjtBQUNoQyxVQUFJbVAsTUFBTSxHQUFHcFQsQ0FBQyxDQUFDeUIsT0FBRixDQUFVdUMsR0FBVixFQUFlLEtBQUt1QixlQUFwQixNQUF5QyxDQUFDLENBQXZEOztBQUNBLFVBQUk2TixNQUFKLEVBQVk7QUFDVixhQUFLSixxQkFBTDtBQUNEOztBQUNELFdBQUtLLE1BQUwsQ0FBWXJQLEdBQVosRUFBaUJDLEtBQWpCOztBQUNBLFVBQUltUCxNQUFKLEVBQVk7QUFDVixhQUFLRSxtQkFBTDs7QUFDQSxhQUFLZCxrQkFBTDtBQUNEO0FBQ0YsS0FuMUM0QjtBQXExQzdCYyxJQUFBQSxtQkFBbUIsRUFBRSwrQkFBWTtBQUMvQixVQUFJclIsT0FBTyxHQUFHLEtBQUtBLE9BQW5COztBQUNBLFVBQUlBLE9BQU8sQ0FBQy9CLFNBQVIsS0FBc0JtQyxTQUExQixFQUFxQztBQUNuQ0osUUFBQUEsT0FBTyxDQUFDL0IsU0FBUixHQUFvQixLQUFLbVAsT0FBTCxDQUFhTSxFQUFiLENBQWdCLG9CQUFoQixJQUNoQixLQUFLTixPQURXLEdBRWhCLEtBQUtBLE9BQUwsQ0FBYWtFLElBQWIsQ0FBa0Isb0JBQWxCLENBRko7QUFHRCxPQUpELE1BSU8sSUFBSSxFQUFFdFIsT0FBTyxDQUFDL0IsU0FBUixZQUE2QkYsQ0FBL0IsQ0FBSixFQUF1QztBQUM1Q2lDLFFBQUFBLE9BQU8sQ0FBQy9CLFNBQVIsR0FBb0JGLENBQUMsQ0FBQ2lDLE9BQU8sQ0FBQy9CLFNBQVQsQ0FBckI7QUFDRDs7QUFDRCxVQUFJLEVBQUUrQixPQUFPLENBQUNDLFFBQVIsWUFBNEJsQyxDQUE5QixDQUFKLEVBQXNDO0FBQ3BDaUMsUUFBQUEsT0FBTyxDQUFDQyxRQUFSLEdBQW1CbEMsQ0FBQyxDQUFDaUMsT0FBTyxDQUFDQyxRQUFULENBQXBCO0FBQ0Q7O0FBQ0QsVUFBSSxFQUFFRCxPQUFPLENBQUNHLFNBQVIsWUFBNkJwQyxDQUEvQixDQUFKLEVBQXVDO0FBQ3JDaUMsUUFBQUEsT0FBTyxDQUFDRyxTQUFSLEdBQW9CcEMsQ0FBQyxDQUFDaUMsT0FBTyxDQUFDRyxTQUFULENBQXJCO0FBQ0Q7QUFDRixLQXAyQzRCO0FBczJDN0JvUixJQUFBQSxVQUFVLEVBQUUsb0JBQVVDLEdBQVYsRUFBZTtBQUN6QixVQUFJdk8sS0FBSyxHQUFHdU8sR0FBRyxDQUFDcE8sS0FBSixDQUFVLEdBQVYsQ0FBWjtBQUFBLFVBQ0VxTyxTQUFTLEdBQUd4TyxLQUFLLENBQUN5TyxHQUFOLEVBRGQ7QUFFQXpPLE1BQUFBLEtBQUssQ0FBQ3FKLEtBQU47QUFDQSxhQUFPLElBQUlwTyxNQUFKLENBQVcrRSxLQUFLLENBQUMwTyxJQUFOLENBQVcsR0FBWCxDQUFYLEVBQTRCRixTQUE1QixDQUFQO0FBQ0QsS0EzMkM0QjtBQTYyQzdCRyxJQUFBQSxlQUFlLEVBQUUseUJBQVU3UCxHQUFWLEVBQWVDLEtBQWYsRUFBc0I7QUFDckMsYUFDRUQsR0FBRyxLQUFLLEtBQVIsSUFDQWhFLENBQUMsQ0FBQ29CLElBQUYsQ0FBTzZDLEtBQVAsTUFBa0IsUUFEbEIsSUFFQSxxQkFBcUI3RCxJQUFyQixDQUEwQjZELEtBQTFCLENBSEY7QUFLRCxLQW4zQzRCO0FBcTNDN0I2UCxJQUFBQSxtQkFBbUIsRUFBRSwrQkFBWTtBQUMvQixVQUFJNUwsSUFBSSxHQUFHLElBQVg7QUFBQSxVQUNFakcsT0FBTyxHQUFHLEtBQUtBLE9BRGpCO0FBQUEsVUFFRXNDLElBQUksR0FBRyxLQUFLOEssT0FBTCxDQUFhOUssSUFBYixFQUZULENBRCtCLENBSS9COztBQUNBdkUsTUFBQUEsQ0FBQyxDQUFDK0QsSUFBRixDQUFPLEtBQUtzTCxPQUFMLENBQWEsQ0FBYixFQUFnQjBFLFVBQXZCLEVBQW1DLFVBQVVsTixLQUFWLEVBQWlCOEQsSUFBakIsRUFBdUI7QUFDeEQsWUFBSTNHLEdBQUcsR0FBRzJHLElBQUksQ0FBQ25FLElBQUwsQ0FBVXdOLFdBQVYsRUFBVjtBQUFBLFlBQ0UvUCxLQURGOztBQUVBLFlBQUksU0FBUzdELElBQVQsQ0FBYzRELEdBQWQsQ0FBSixFQUF3QjtBQUN0QjtBQUNBQSxVQUFBQSxHQUFHLEdBQUdBLEdBQUcsQ0FBQ2hELEtBQUosQ0FBVSxDQUFWLEVBQWFrRCxPQUFiLENBQXFCLFNBQXJCLEVBQWdDLFVBQVV1UCxHQUFWLEVBQWU7QUFDbkQsbUJBQU9BLEdBQUcsQ0FBQ1EsTUFBSixDQUFXLENBQVgsRUFBY3hKLFdBQWQsRUFBUDtBQUNELFdBRkssQ0FBTjtBQUdBeEcsVUFBQUEsS0FBSyxHQUFHTSxJQUFJLENBQUNQLEdBQUQsQ0FBWjs7QUFDQSxjQUFJa0UsSUFBSSxDQUFDMkwsZUFBTCxDQUFxQjdQLEdBQXJCLEVBQTBCQyxLQUExQixDQUFKLEVBQXNDO0FBQ3BDQSxZQUFBQSxLQUFLLEdBQUdpRSxJQUFJLENBQUNzTCxVQUFMLENBQWdCdlAsS0FBaEIsQ0FBUjtBQUNEOztBQUNEaEMsVUFBQUEsT0FBTyxDQUFDK0IsR0FBRCxDQUFQLEdBQWVDLEtBQWY7QUFDRDtBQUNGLE9BZEQ7QUFlRCxLQXo0QzRCO0FBMjRDN0JpUSxJQUFBQSxPQUFPLEVBQUUsbUJBQVk7QUFDbkIsV0FBS0osbUJBQUw7O0FBQ0EsV0FBS1IsbUJBQUw7O0FBQ0EsV0FBS2hGLE1BQUwsR0FBYyxFQUFkO0FBQ0EsV0FBS0csU0FBTCxHQUFpQixLQUFLaEQsY0FBTCxDQUFvQixJQUFwQixDQUFqQjtBQUNBLFdBQUsyQyxRQUFMLEdBQWdCLEtBQUtWLE9BQUwsR0FBZSxDQUEvQjs7QUFDQSxXQUFLMUcsbUJBQUwsQ0FBeUIsSUFBekI7O0FBQ0EsV0FBS3dMLGtCQUFMO0FBQ0QsS0FuNUM0QjtBQXE1QzdCO0FBQ0E7QUFDQTJCLElBQUFBLE1BQU0sRUFBRSxrQkFBWTtBQUNsQixhQUFPLEtBQUt6RyxPQUFaO0FBQ0QsS0F6NUM0QjtBQTI1QzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0F4RyxJQUFBQSxRQUFRLEVBQUUsb0JBQVk7QUFDcEIsYUFBTyxLQUFLQyxTQUFaO0FBQ0QsS0FqNkM0QjtBQW02QzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E3QyxJQUFBQSxHQUFHLEVBQUUsYUFBVUMsSUFBVixFQUFnQjtBQUNuQixVQUFJMkQsSUFBSSxHQUFHLElBQVg7O0FBQ0EsVUFBSSxDQUFDM0QsSUFBRCxJQUFTLEtBQUt0QyxPQUFMLENBQWFtUyxRQUExQixFQUFvQztBQUNsQztBQUNEOztBQUNELFVBQUk3UCxJQUFJLENBQUNyRSxTQUFMLElBQWtCLENBQUNxRSxJQUFJLENBQUNvQyxLQUE1QixFQUFtQztBQUNqQyxhQUFLb0wsa0JBQUwsQ0FBd0J4TixJQUFJLENBQUNyRSxTQUE3QixFQUF3Q3NMLE1BQXhDLENBQStDLFVBQVU3RSxLQUFWLEVBQWlCO0FBQzlEcEMsVUFBQUEsSUFBSSxDQUFDb0MsS0FBTCxHQUFhQSxLQUFiOztBQUNBdUIsVUFBQUEsSUFBSSxDQUFDd0csTUFBTCxDQUFZLElBQVosRUFBa0JuSyxJQUFsQjtBQUNELFNBSEQ7QUFJRCxPQUxELE1BS087QUFDTEEsUUFBQUEsSUFBSSxDQUFDb0MsS0FBTCxHQUFhM0csQ0FBQyxDQUFDNFIsU0FBRixDQUFZck4sSUFBSSxDQUFDb0MsS0FBakIsQ0FBYjs7QUFDQSxhQUFLK0gsTUFBTCxDQUFZLElBQVosRUFBa0JuSyxJQUFsQjtBQUNEO0FBQ0YsS0FyN0M0QjtBQXU3QzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTRKLElBQUFBLElBQUksRUFBRSxjQUFVNUosSUFBVixFQUFnQjtBQUNwQixVQUFJQSxJQUFJLElBQUksQ0FBQyxLQUFLdEMsT0FBTCxDQUFhbVMsUUFBMUIsRUFBb0M7QUFDbEMsWUFBSTdQLElBQUksQ0FBQ3JFLFNBQUwsSUFBa0IsQ0FBQ3FFLElBQUksQ0FBQ29DLEtBQTVCLEVBQW1DO0FBQ2pDLGNBQUl1QixJQUFJLEdBQUcsSUFBWDtBQUFBLGNBQ0UwRCxHQUFHLEdBQUc1TCxDQUFDLENBQUM2TCxRQUFGLEVBRFI7QUFBQSxjQUVFVixPQUFPLEdBQUdTLEdBQUcsQ0FBQ1QsT0FBSixFQUZaO0FBQUEsY0FHRW9CLEtBSEY7QUFBQSxjQUlFeUIsT0FKRjs7QUFLQTdDLFVBQUFBLE9BQU8sQ0FBQ2EsS0FBUixHQUFnQixZQUFZO0FBQzFCZ0MsWUFBQUEsT0FBTyxHQUFHLElBQVY7O0FBQ0EsZ0JBQUl6QixLQUFKLEVBQVc7QUFDVCxxQkFBT0EsS0FBSyxDQUFDUCxLQUFOLEVBQVA7QUFDRDs7QUFDREosWUFBQUEsR0FBRyxDQUFDeUksTUFBSixDQUFXLElBQVgsRUFBaUIsT0FBakIsRUFBMEIsT0FBMUI7QUFDQSxtQkFBT2xKLE9BQVA7QUFDRCxXQVBEOztBQVFBLGVBQUs0RyxrQkFBTCxDQUF3QnhOLElBQUksQ0FBQ3JFLFNBQTdCLEVBQXdDc0wsTUFBeEMsQ0FBK0MsVUFBVTdFLEtBQVYsRUFBaUI7QUFDOUQsZ0JBQUlxSCxPQUFKLEVBQWE7QUFDWDtBQUNEOztBQUNELGdCQUFJLENBQUNySCxLQUFLLENBQUMyRCxNQUFYLEVBQW1CO0FBQ2pCc0IsY0FBQUEsR0FBRyxDQUFDeUksTUFBSjtBQUNBO0FBQ0Q7O0FBQ0Q5UCxZQUFBQSxJQUFJLENBQUNvQyxLQUFMLEdBQWFBLEtBQWI7QUFDQTRGLFlBQUFBLEtBQUssR0FBR3JFLElBQUksQ0FBQ3NFLE9BQUwsQ0FBYSxJQUFiLEVBQW1CakksSUFBbkIsQ0FBUjtBQUNBZ0ksWUFBQUEsS0FBSyxDQUFDK0gsSUFBTixDQUNFLFVBQVUvRyxNQUFWLEVBQWtCQyxVQUFsQixFQUE4QmpCLEtBQTlCLEVBQXFDO0FBQ25DWCxjQUFBQSxHQUFHLENBQUM0QyxPQUFKLENBQVlqQixNQUFaLEVBQW9CQyxVQUFwQixFQUFnQ2pCLEtBQWhDO0FBQ0QsYUFISCxFQUlFLFVBQVVBLEtBQVYsRUFBaUJpQixVQUFqQixFQUE2QmxCLFdBQTdCLEVBQTBDO0FBQ3hDVixjQUFBQSxHQUFHLENBQUN5SSxNQUFKLENBQVc5SCxLQUFYLEVBQWtCaUIsVUFBbEIsRUFBOEJsQixXQUE5QjtBQUNELGFBTkg7QUFRRCxXQWxCRDs7QUFtQkEsaUJBQU8sS0FBS3BCLGVBQUwsQ0FBcUJDLE9BQXJCLENBQVA7QUFDRDs7QUFDRDVHLFFBQUFBLElBQUksQ0FBQ29DLEtBQUwsR0FBYTNHLENBQUMsQ0FBQzRSLFNBQUYsQ0FBWXJOLElBQUksQ0FBQ29DLEtBQWpCLENBQWI7O0FBQ0EsWUFBSXBDLElBQUksQ0FBQ29DLEtBQUwsQ0FBVzJELE1BQWYsRUFBdUI7QUFDckIsaUJBQU8sS0FBS2tDLE9BQUwsQ0FBYSxJQUFiLEVBQW1CakksSUFBbkIsQ0FBUDtBQUNEO0FBQ0Y7O0FBQ0QsYUFBTyxLQUFLa0gsY0FBTCxDQUFvQixLQUFwQixFQUEyQmxILElBQUksSUFBSUEsSUFBSSxDQUFDVixPQUF4QyxDQUFQO0FBQ0Q7QUF2K0M0QixHQUEvQjtBQXkrQ0QsQ0FyakREOzs7QUNkQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUVBLENBQUMsVUFBVXBFLE9BQVYsRUFBbUI7QUFDbEI7O0FBQ0EsTUFBSSxPQUFPQyxNQUFQLEtBQWtCLFVBQWxCLElBQWdDQSxNQUFNLENBQUNDLEdBQTNDLEVBQWdEO0FBQzlDO0FBQ0FELElBQUFBLE1BQU0sQ0FBQyxDQUFDLFFBQUQsQ0FBRCxFQUFhRCxPQUFiLENBQU47QUFDRCxHQUhELE1BR08sSUFBSSxRQUFPRyxPQUFQLHlDQUFPQSxPQUFQLE9BQW1CLFFBQXZCLEVBQWlDO0FBQ3RDO0FBQ0FILElBQUFBLE9BQU8sQ0FBQ0ksT0FBTyxDQUFDLFFBQUQsQ0FBUixDQUFQO0FBQ0QsR0FITSxNQUdBO0FBQ0w7QUFDQUosSUFBQUEsT0FBTyxDQUFDSyxNQUFNLENBQUNDLE1BQVIsQ0FBUDtBQUNEO0FBQ0YsQ0FaRCxFQVlHLFVBQVVDLENBQVYsRUFBYTtBQUNkLGVBRGMsQ0FHZDs7QUFDQSxNQUFJdVUsT0FBTyxHQUFHLENBQWQ7QUFBQSxNQUNFQyxPQUFPLEdBQUd4VSxDQURaO0FBQUEsTUFFRXlVLFNBQVMsR0FBRyxXQUZkOztBQUlBLE1BQUksVUFBVTNVLE1BQVYsSUFBb0IsV0FBVzRVLElBQW5DLEVBQXlDO0FBQ3ZDRixJQUFBQSxPQUFPLEdBQUdFLElBQVY7QUFDQUQsSUFBQUEsU0FBUyxHQUFHLE9BQVo7QUFDRCxHQVhhLENBYWQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNBelUsRUFBQUEsQ0FBQyxDQUFDMlUsYUFBRixDQUFnQixRQUFoQixFQUEwQixVQUFVMVMsT0FBVixFQUFtQjtBQUMzQyxRQUFJQSxPQUFPLENBQUMyUyxLQUFaLEVBQW1CO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBLFVBQUlDLGdCQUFnQixHQUFHNVMsT0FBTyxDQUFDNFMsZ0JBQVIsSUFBNEIsbUJBQW5EO0FBQUEsVUFDRXpRLElBREY7QUFBQSxVQUVFMFEsTUFGRjtBQUFBLFVBR0VDLFlBSEY7QUFJQSxhQUFPO0FBQ0w1RyxRQUFBQSxJQUFJLEVBQUUsY0FBVXJGLENBQVYsRUFBYWtNLGdCQUFiLEVBQStCO0FBQ25DNVEsVUFBQUEsSUFBSSxHQUFHcEUsQ0FBQyxDQUFDLHFDQUFELENBQVI7QUFDQW9FLFVBQUFBLElBQUksQ0FBQ3VHLElBQUwsQ0FBVSxnQkFBVixFQUE0QjFJLE9BQU8sQ0FBQ3lJLGlCQUFwQztBQUNBcUssVUFBQUEsWUFBWSxHQUFHLEtBQUszVSxJQUFMLENBQVU2QixPQUFPLENBQUM0SCxHQUFsQixJQUF5QixHQUF6QixHQUErQixHQUE5QyxDQUhtQyxDQUluQzs7QUFDQSxjQUFJNUgsT0FBTyxDQUFDYixJQUFSLEtBQWlCLFFBQXJCLEVBQStCO0FBQzdCYSxZQUFBQSxPQUFPLENBQUM0SCxHQUFSLEdBQWM1SCxPQUFPLENBQUM0SCxHQUFSLEdBQWNrTCxZQUFkLEdBQTZCLGdCQUEzQztBQUNBOVMsWUFBQUEsT0FBTyxDQUFDYixJQUFSLEdBQWUsTUFBZjtBQUNELFdBSEQsTUFHTyxJQUFJYSxPQUFPLENBQUNiLElBQVIsS0FBaUIsS0FBckIsRUFBNEI7QUFDakNhLFlBQUFBLE9BQU8sQ0FBQzRILEdBQVIsR0FBYzVILE9BQU8sQ0FBQzRILEdBQVIsR0FBY2tMLFlBQWQsR0FBNkIsYUFBM0M7QUFDQTlTLFlBQUFBLE9BQU8sQ0FBQ2IsSUFBUixHQUFlLE1BQWY7QUFDRCxXQUhNLE1BR0EsSUFBSWEsT0FBTyxDQUFDYixJQUFSLEtBQWlCLE9BQXJCLEVBQThCO0FBQ25DYSxZQUFBQSxPQUFPLENBQUM0SCxHQUFSLEdBQWM1SCxPQUFPLENBQUM0SCxHQUFSLEdBQWNrTCxZQUFkLEdBQTZCLGVBQTNDO0FBQ0E5UyxZQUFBQSxPQUFPLENBQUNiLElBQVIsR0FBZSxNQUFmO0FBQ0QsV0Fka0MsQ0FlbkM7QUFDQTtBQUNBOzs7QUFDQW1ULFVBQUFBLE9BQU8sSUFBSSxDQUFYO0FBQ0FPLFVBQUFBLE1BQU0sR0FBRzlVLENBQUMsQ0FDUixrQkFDRTZVLGdCQURGLEdBRUUsMkJBRkYsR0FHRU4sT0FIRixHQUlFLGFBTE0sQ0FBRCxDQU1Qak0sRUFOTyxDQU1KLE1BTkksRUFNSSxZQUFZO0FBQ3ZCLGdCQUFJMk0sZUFBSjtBQUFBLGdCQUNFQyxVQUFVLEdBQUdsVixDQUFDLENBQUN1RyxPQUFGLENBQVV0RSxPQUFPLENBQUNNLFNBQWxCLElBQ1ROLE9BQU8sQ0FBQ00sU0FEQyxHQUVULENBQUNOLE9BQU8sQ0FBQ00sU0FBVCxDQUhOO0FBSUF1UyxZQUFBQSxNQUFNLENBQUNyTSxHQUFQLENBQVcsTUFBWCxFQUFtQkgsRUFBbkIsQ0FBc0IsTUFBdEIsRUFBOEIsWUFBWTtBQUN4QyxrQkFBSW9FLFFBQUosQ0FEd0MsQ0FFeEM7QUFDQTs7QUFDQSxrQkFBSTtBQUNGQSxnQkFBQUEsUUFBUSxHQUFHb0ksTUFBTSxDQUFDSyxRQUFQLEVBQVgsQ0FERSxDQUVGO0FBQ0E7QUFDQTs7QUFDQSxvQkFBSSxDQUFDekksUUFBUSxDQUFDcEMsTUFBVixJQUFvQixDQUFDb0MsUUFBUSxDQUFDLENBQUQsQ0FBUixDQUFZMEksVUFBckMsRUFBaUQ7QUFDL0Msd0JBQU0sSUFBSUMsS0FBSixFQUFOO0FBQ0Q7QUFDRixlQVJELENBUUUsT0FBTy9ULENBQVAsRUFBVTtBQUNWb0wsZ0JBQUFBLFFBQVEsR0FBR3JLLFNBQVg7QUFDRCxlQWR1QyxDQWV4QztBQUNBOzs7QUFDQTJTLGNBQUFBLGdCQUFnQixDQUFDLEdBQUQsRUFBTSxTQUFOLEVBQWlCO0FBQUVGLGdCQUFBQSxNQUFNLEVBQUVwSTtBQUFWLGVBQWpCLENBQWhCLENBakJ3QyxDQWtCeEM7QUFDQTs7QUFDQTFNLGNBQUFBLENBQUMsQ0FBQyxrQkFBa0I2VSxnQkFBbEIsR0FBcUMsYUFBdEMsQ0FBRCxDQUFzRFMsUUFBdEQsQ0FDRWxSLElBREY7QUFHQXRFLGNBQUFBLE1BQU0sQ0FBQ3lWLFVBQVAsQ0FBa0IsWUFBWTtBQUM1QjtBQUNBO0FBQ0E7QUFDQW5SLGdCQUFBQSxJQUFJLENBQUNvUixNQUFMO0FBQ0QsZUFMRCxFQUtHLENBTEg7QUFNRCxhQTdCRDtBQThCQXBSLFlBQUFBLElBQUksQ0FDRDdELElBREgsQ0FDUSxRQURSLEVBQ2tCdVUsTUFBTSxDQUFDdlUsSUFBUCxDQUFZLE1BQVosQ0FEbEIsRUFFR0EsSUFGSCxDQUVRLFFBRlIsRUFFa0IwQixPQUFPLENBQUM0SCxHQUYxQixFQUdHdEosSUFISCxDQUdRLFFBSFIsRUFHa0IwQixPQUFPLENBQUNiLElBSDFCOztBQUlBLGdCQUFJYSxPQUFPLENBQUNrQyxRQUFaLEVBQXNCO0FBQ3BCbkUsY0FBQUEsQ0FBQyxDQUFDK0QsSUFBRixDQUFPOUIsT0FBTyxDQUFDa0MsUUFBZixFQUF5QixVQUFVMEMsS0FBVixFQUFpQjJDLEtBQWpCLEVBQXdCO0FBQy9DeEosZ0JBQUFBLENBQUMsQ0FBQyx3QkFBRCxDQUFELENBQ0dPLElBREgsQ0FDUSxNQURSLEVBQ2dCaUosS0FBSyxDQUFDaEQsSUFEdEIsRUFFR2lQLEdBRkgsQ0FFT2pNLEtBQUssQ0FBQ3ZGLEtBRmIsRUFHR3FSLFFBSEgsQ0FHWWxSLElBSFo7QUFJRCxlQUxEO0FBTUQ7O0FBQ0QsZ0JBQ0VuQyxPQUFPLENBQUMvQixTQUFSLElBQ0ErQixPQUFPLENBQUMvQixTQUFSLENBQWtCb0ssTUFEbEIsSUFFQXJJLE9BQU8sQ0FBQ2IsSUFBUixLQUFpQixNQUhuQixFQUlFO0FBQ0E2VCxjQUFBQSxlQUFlLEdBQUdoVCxPQUFPLENBQUMvQixTQUFSLENBQWtCdVAsS0FBbEIsRUFBbEIsQ0FEQSxDQUVBOztBQUNBeE4sY0FBQUEsT0FBTyxDQUFDL0IsU0FBUixDQUFrQjZQLEtBQWxCLENBQXdCLFVBQVVsSixLQUFWLEVBQWlCO0FBQ3ZDLHVCQUFPb08sZUFBZSxDQUFDcE8sS0FBRCxDQUF0QjtBQUNELGVBRkQ7O0FBR0Esa0JBQUk1RSxPQUFPLENBQUNNLFNBQVosRUFBdUI7QUFDckJOLGdCQUFBQSxPQUFPLENBQUMvQixTQUFSLENBQWtCNkQsSUFBbEIsQ0FBdUIsVUFBVThDLEtBQVYsRUFBaUI7QUFDdEM3RyxrQkFBQUEsQ0FBQyxDQUFDLElBQUQsQ0FBRCxDQUFRTyxJQUFSLENBQWEsTUFBYixFQUFxQjJVLFVBQVUsQ0FBQ3JPLEtBQUQsQ0FBVixJQUFxQjVFLE9BQU8sQ0FBQ00sU0FBbEQ7QUFDRCxpQkFGRDtBQUdELGVBVkQsQ0FXQTtBQUNBOzs7QUFDQTZCLGNBQUFBLElBQUksQ0FDRHFGLE1BREgsQ0FDVXhILE9BQU8sQ0FBQy9CLFNBRGxCLEVBRUdLLElBRkgsQ0FFUSxTQUZSLEVBRW1CLHFCQUZuQixFQUdFO0FBSEYsZUFJR0EsSUFKSCxDQUlRLFVBSlIsRUFJb0IscUJBSnBCLEVBYkEsQ0FrQkE7O0FBQ0EwQixjQUFBQSxPQUFPLENBQUMvQixTQUFSLENBQWtCd1YsVUFBbEIsQ0FBNkIsTUFBN0I7QUFDRDs7QUFDRDVWLFlBQUFBLE1BQU0sQ0FBQ3lWLFVBQVAsQ0FBa0IsWUFBWTtBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBblIsY0FBQUEsSUFBSSxDQUFDUSxNQUFMLEdBTDRCLENBTTVCO0FBQ0E7O0FBQ0Esa0JBQUlxUSxlQUFlLElBQUlBLGVBQWUsQ0FBQzNLLE1BQXZDLEVBQStDO0FBQzdDckksZ0JBQUFBLE9BQU8sQ0FBQy9CLFNBQVIsQ0FBa0I2RCxJQUFsQixDQUF1QixVQUFVOEMsS0FBVixFQUFpQnVELEtBQWpCLEVBQXdCO0FBQzdDLHNCQUFJcUYsS0FBSyxHQUFHelAsQ0FBQyxDQUFDaVYsZUFBZSxDQUFDcE8sS0FBRCxDQUFoQixDQUFiLENBRDZDLENBRTdDOztBQUNBN0csa0JBQUFBLENBQUMsQ0FBQ29LLEtBQUQsQ0FBRCxDQUNHN0osSUFESCxDQUNRLE1BRFIsRUFDZ0JrUCxLQUFLLENBQUNsUCxJQUFOLENBQVcsTUFBWCxDQURoQixFQUVHb0ssSUFGSCxDQUVRLE1BRlIsRUFFZ0I4RSxLQUFLLENBQUM5RSxJQUFOLENBQVcsTUFBWCxDQUZoQjtBQUdBOEUsa0JBQUFBLEtBQUssQ0FBQ2tHLFdBQU4sQ0FBa0J2TCxLQUFsQjtBQUNELGlCQVBEO0FBUUQ7QUFDRixhQWxCRCxFQWtCRyxDQWxCSDtBQW1CRCxXQWpHUSxDQUFUO0FBa0dBaEcsVUFBQUEsSUFBSSxDQUFDcUYsTUFBTCxDQUFZcUwsTUFBWixFQUFvQlEsUUFBcEIsQ0FBNkJuVCxRQUFRLENBQUN5VCxJQUF0QztBQUNELFNBdkhJO0FBd0hMNUosUUFBQUEsS0FBSyxFQUFFLGlCQUFZO0FBQ2pCLGNBQUk4SSxNQUFKLEVBQVk7QUFDVjtBQUNBO0FBQ0FBLFlBQUFBLE1BQU0sQ0FBQ3JNLEdBQVAsQ0FBVyxNQUFYLEVBQW1CbEksSUFBbkIsQ0FBd0IsS0FBeEIsRUFBK0JzVSxnQkFBL0I7QUFDRDs7QUFDRCxjQUFJelEsSUFBSixFQUFVO0FBQ1JBLFlBQUFBLElBQUksQ0FBQ29SLE1BQUw7QUFDRDtBQUNGO0FBaklJLE9BQVA7QUFtSUQ7QUFDRixHQTdJRCxFQXZCYyxDQXNLZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFDQXhWLEVBQUFBLENBQUMsQ0FBQzZWLFNBQUYsQ0FBWTtBQUNWQyxJQUFBQSxVQUFVLEVBQUU7QUFDVixxQkFBZSxvQkFBVWhCLE1BQVYsRUFBa0I7QUFDL0IsZUFBT0EsTUFBTSxJQUFJOVUsQ0FBQyxDQUFDOFUsTUFBTSxDQUFDLENBQUQsQ0FBTixDQUFVYyxJQUFYLENBQUQsQ0FBa0JHLElBQWxCLEVBQWpCO0FBQ0QsT0FIUztBQUlWLHFCQUFlLG9CQUFVakIsTUFBVixFQUFrQjtBQUMvQixlQUFPQSxNQUFNLElBQUlOLE9BQU8sQ0FBQ0MsU0FBRCxDQUFQLENBQW1CelUsQ0FBQyxDQUFDOFUsTUFBTSxDQUFDLENBQUQsQ0FBTixDQUFVYyxJQUFYLENBQUQsQ0FBa0JHLElBQWxCLEVBQW5CLENBQWpCO0FBQ0QsT0FOUztBQU9WLHFCQUFlLG9CQUFVakIsTUFBVixFQUFrQjtBQUMvQixlQUFPQSxNQUFNLElBQUk5VSxDQUFDLENBQUM4VSxNQUFNLENBQUMsQ0FBRCxDQUFOLENBQVVjLElBQVgsQ0FBRCxDQUFrQkksSUFBbEIsRUFBakI7QUFDRCxPQVRTO0FBVVYsb0JBQWMsbUJBQVVsQixNQUFWLEVBQWtCO0FBQzlCLFlBQUltQixNQUFNLEdBQUduQixNQUFNLElBQUlBLE1BQU0sQ0FBQyxDQUFELENBQTdCO0FBQ0EsZUFBT21CLE1BQU0sSUFBSWpXLENBQUMsQ0FBQ2tXLFFBQUYsQ0FBV0QsTUFBWCxDQUFWLEdBQ0hBLE1BREcsR0FFSGpXLENBQUMsQ0FBQ21XLFFBQUYsQ0FDR0YsTUFBTSxDQUFDRyxXQUFQLElBQXNCSCxNQUFNLENBQUNHLFdBQVAsQ0FBbUJDLEdBQTFDLElBQ0VyVyxDQUFDLENBQUNpVyxNQUFNLENBQUNMLElBQVIsQ0FBRCxDQUFlSSxJQUFmLEVBRkosQ0FGSjtBQU1ELE9BbEJTO0FBbUJWLHVCQUFpQixzQkFBVWxCLE1BQVYsRUFBa0I7QUFDakMsZUFBT0EsTUFBTSxJQUFJOVUsQ0FBQyxDQUFDc1csVUFBRixDQUFhdFcsQ0FBQyxDQUFDOFUsTUFBTSxDQUFDLENBQUQsQ0FBTixDQUFVYyxJQUFYLENBQUQsQ0FBa0JHLElBQWxCLEVBQWIsQ0FBakI7QUFDRDtBQXJCUztBQURGLEdBQVo7QUF5QkQsQ0FyTkQ7QUNiQSxTQUFTUSw0QkFBVCxDQUFzQ3BHLEVBQXRDLEVBQTBDcUcsZ0JBQTFDLEVBQTREQyxZQUE1RCxFQUEwRUMsWUFBMUUsRUFBd0ZDLGFBQXhGLEVBQXVHQyxjQUF2RyxFQUF1SEMsWUFBdkgsRUFBcUlDLGdCQUFySSxFQUF1SjtBQUVuSixNQUFJN0UsTUFBTSxHQUFHalMsQ0FBQyxDQUFDbUMsUUFBUSxDQUFDNFUsY0FBVCxDQUF3Qi9XLENBQUMsQ0FBQ21RLEVBQUQsQ0FBRCxDQUFNNUwsSUFBTixDQUFXLEtBQVgsQ0FBeEIsQ0FBRCxDQUFkO0FBQ0EsTUFBSXlTLFlBQVksR0FBRy9FLE1BQU0sQ0FBQzFOLElBQVAsQ0FBWSxNQUFaLENBQW5CO0FBRUEsTUFBSTBTLGdCQUFnQixHQUFHalgsQ0FBQyxDQUFDbVEsRUFBRCxDQUF4QjtBQUNBLE1BQUkrRyxRQUFRLEdBQUdELGdCQUFnQixDQUFDdE0sSUFBakIsQ0FBc0IsSUFBdEIsQ0FBZjtBQUNBLE1BQUl3TSxhQUFKO0FBRUFDLEVBQUFBLGNBQWMsQ0FBQzNRLElBQWYsQ0FBb0IwUSxhQUFhLEdBQUcsSUFBSUUsR0FBSixDQUFRO0FBQ3hDbEgsSUFBQUEsRUFBRSxFQUFFOEcsZ0JBQWdCLENBQUNLLEdBQWpCLENBQXFCLENBQXJCLENBRG9DO0FBRXhDL1MsSUFBQUEsSUFBSSxFQUFFO0FBQ0ZnVCxNQUFBQSxVQUFVLEVBQUUsRUFEVjtBQUVGQyxNQUFBQSxhQUFhLEVBQUUsSUFGYjtBQUdGQyxNQUFBQSxXQUFXLEVBQUUsS0FIWDtBQUlGQyxNQUFBQSxRQUFRLEVBQUVSLFFBSlI7QUFLRlMsTUFBQUEsV0FBVyxFQUFFLEtBTFg7QUFNRmYsTUFBQUEsY0FBYyxFQUFFQSxjQU5kO0FBT0ZnQixNQUFBQSxlQUFlLEVBQUUsRUFQZjtBQVFGZixNQUFBQSxZQUFZLEVBQUVBLFlBUlo7QUFTRmdCLE1BQUFBLFlBQVksRUFBRTtBQVRaLEtBRmtDO0FBYXhDQyxJQUFBQSxPQUFPLEVBQUUsbUJBQVk7QUFDakIsVUFBSUMsSUFBSSxHQUFHLElBQVg7QUFFQUEsTUFBQUEsSUFBSSxDQUFDQyxZQUFMLEdBQW9CdEQsSUFBSSxDQUFDdUQsS0FBTCxDQUFXQyxZQUFZLENBQUNDLE9BQWIsQ0FBcUIsaUJBQXJCLENBQVgsQ0FBcEI7QUFDSCxLQWpCdUM7QUFrQnhDQyxJQUFBQSxRQUFRLEVBQUU7QUFDTkMsTUFBQUEsS0FBSyxFQUFFO0FBQ0hmLFFBQUFBLEdBQUcsRUFBRSxlQUFZO0FBQ2IsY0FBSWdCLFVBQVUsR0FBRyxFQUFqQjs7QUFDQSxjQUFJLENBQUMsS0FBS1gsV0FBVixFQUF1QjtBQUNuQixtQkFBT2pELElBQUksQ0FBQzZELFNBQUwsQ0FBZXZCLFlBQWYsQ0FBUDtBQUNIOztBQUNELGVBQUtPLFVBQUwsQ0FBZ0JpQixPQUFoQixDQUF3QixVQUFVQyxDQUFWLEVBQWE7QUFDakMsZ0JBQUlBLENBQUMsQ0FBQ0MsU0FBRixLQUFnQixXQUFwQixFQUFpQztBQUM3QjtBQUNIOztBQUNESixZQUFBQSxVQUFVLENBQUM3UixJQUFYLENBQWdCO0FBQUU2SixjQUFBQSxJQUFJLEVBQUVtSSxDQUFDLENBQUNDLFNBQVY7QUFBcUJDLGNBQUFBLFNBQVMsRUFBRUYsQ0FBQyxDQUFDRSxTQUFsQztBQUE2Q0MsY0FBQUEsS0FBSyxFQUFFSCxDQUFDLENBQUNHLEtBQXREO0FBQTZEQyxjQUFBQSxTQUFTLEVBQUVKLENBQUMsQ0FBQ0ksU0FBMUU7QUFBcUZDLGNBQUFBLE1BQU0sRUFBRUwsQ0FBQyxDQUFDSztBQUEvRixhQUFoQjtBQUNILFdBTEQ7QUFNQSxpQkFBT3BFLElBQUksQ0FBQzZELFNBQUwsQ0FBZUQsVUFBZixDQUFQO0FBQ0gsU0FiRTtBQWNIUyxRQUFBQSxHQUFHLEVBQUUsYUFBVUMsTUFBVixFQUFrQjtBQUNuQixjQUFJakIsSUFBSSxHQUFHLElBQVg7QUFDQSxjQUFJTyxVQUFVLEdBQUdVLE1BQU0sSUFBSSxFQUEzQjtBQUNBLGNBQUlDLE1BQU0sR0FBR2paLENBQUMsQ0FBQzZMLFFBQUYsRUFBYjtBQUNBLGNBQUkwRixLQUFLLEdBQUcsRUFBWjtBQUNBLGNBQUlqSCxNQUFNLEdBQUcsQ0FBYjtBQUNBZ08sVUFBQUEsVUFBVSxDQUFDRSxPQUFYLENBQW1CLFVBQVVDLENBQVYsRUFBYXBPLENBQWIsRUFBZ0I7QUFDL0JrSCxZQUFBQSxLQUFLLENBQUM5SyxJQUFOLENBQVc7QUFBRUQsY0FBQUEsSUFBSSxFQUFFLE1BQU1pUyxDQUFDLENBQUNuSSxJQUFoQjtBQUFzQjRJLGNBQUFBLElBQUksRUFBRSxFQUE1QjtBQUFnQ1IsY0FBQUEsU0FBUyxFQUFFLEVBQTNDO0FBQStDSSxjQUFBQSxNQUFNLEVBQUVMLENBQUMsQ0FBQ0s7QUFBekQsYUFBWCxFQUQrQixDQUNnRDs7QUFDL0UzTixZQUFBQSxPQUFPLEdBQUduTCxDQUFDLENBQUNvUixJQUFGLENBQU82SCxNQUFQLEVBQWV0VSxJQUFmLENBQW9CLFlBQVk7QUFDdEMzRSxjQUFBQSxDQUFDLENBQUNzTixJQUFGLENBQU87QUFDSHpELGdCQUFBQSxHQUFHLEVBQUU2TSxZQUFZLEdBQUcsUUFBZixHQUEwQnlDLGtCQUFrQixDQUFDVixDQUFDLENBQUNuSSxJQUFILENBRDlDO0FBRUg4SSxnQkFBQUEsTUFBTSxFQUFFLEtBRkw7QUFHSGhPLGdCQUFBQSxPQUFPLEVBQUUsaUJBQVU3RyxJQUFWLEVBQWdCO0FBQ3JCQSxrQkFBQUEsSUFBSSxDQUFDOFUsTUFBTCxHQUFjOVUsSUFBSSxDQUFDaUMsSUFBTCxHQUFZNkQsQ0FBQyxDQUFDdkcsUUFBRixFQUExQixDQURxQixDQUNtQjs7QUFDeENTLGtCQUFBQSxJQUFJLENBQUNzVSxTQUFMLEdBQWlCSixDQUFDLENBQUNJLFNBQW5CLENBRnFCLENBRVM7O0FBQzlCdFUsa0JBQUFBLElBQUksQ0FBQ3VVLE1BQUwsR0FBY0wsQ0FBQyxDQUFDSyxNQUFoQixDQUhxQixDQUdHOztBQUN4QnZILGtCQUFBQSxLQUFLLENBQUMrSCxNQUFOLENBQWFqUCxDQUFiLEVBQWdCLENBQWhCLEVBQW1COUYsSUFBbkI7O0FBQ0Esc0JBQUlnTixLQUFLLENBQUNqSCxNQUFOLEtBQWlCLEVBQUVBLE1BQXZCLEVBQStCO0FBQzNCaUgsb0JBQUFBLEtBQUssQ0FBQ2lILE9BQU4sQ0FBYyxVQUFVQyxDQUFWLEVBQWE7QUFDdkJWLHNCQUFBQSxJQUFJLENBQUNSLFVBQUwsQ0FBZ0I5USxJQUFoQixDQUFxQmdTLENBQXJCO0FBQ0gscUJBRkQ7QUFHQVYsb0JBQUFBLElBQUksQ0FBQ0osV0FBTCxHQUFtQixJQUFuQjtBQUNIO0FBQ0osaUJBZEU7QUFlSHRNLGdCQUFBQSxLQUFLLEVBQUUsZUFBVUEsTUFBVixFQUFpQjtBQUNwQmtPLGtCQUFBQSxPQUFPLENBQUNDLEdBQVIsQ0FBWTlFLElBQUksQ0FBQzZELFNBQUwsQ0FBZWxOLE1BQWYsQ0FBWjtBQUNBa0csa0JBQUFBLEtBQUssQ0FBQytILE1BQU4sQ0FBYWpQLENBQWIsRUFBZ0IsQ0FBaEIsRUFBbUI7QUFBRTdELG9CQUFBQSxJQUFJLEVBQUVpUyxDQUFDLENBQUNuSSxJQUFWO0FBQWdCNEksb0JBQUFBLElBQUksRUFBRSxFQUF0QjtBQUEwQlIsb0JBQUFBLFNBQVMsRUFBRSxXQUFyQztBQUFrREcsb0JBQUFBLFNBQVMsRUFBRSxFQUE3RDtBQUFpRUMsb0JBQUFBLE1BQU0sRUFBRTtBQUFFTCxzQkFBQUEsQ0FBQyxFQUFFLEdBQUw7QUFBVWdCLHNCQUFBQSxDQUFDLEVBQUU7QUFBYjtBQUF6RSxtQkFBbkI7O0FBQ0Esc0JBQUlsSSxLQUFLLENBQUNqSCxNQUFOLEtBQWlCLEVBQUVBLE1BQXZCLEVBQStCO0FBQzNCaUgsb0JBQUFBLEtBQUssQ0FBQ2lILE9BQU4sQ0FBYyxVQUFVQyxDQUFWLEVBQWE7QUFDdkJWLHNCQUFBQSxJQUFJLENBQUNSLFVBQUwsQ0FBZ0I5USxJQUFoQixDQUFxQmdTLENBQXJCO0FBQ0gscUJBRkQ7QUFHQVYsb0JBQUFBLElBQUksQ0FBQ0osV0FBTCxHQUFtQixJQUFuQjtBQUNIO0FBQ0o7QUF4QkUsZUFBUDtBQTBCSCxhQTNCUyxDQUFWO0FBNEJILFdBOUJEO0FBZ0NBc0IsVUFBQUEsTUFBTSxDQUFDekssT0FBUDtBQUNIO0FBckRFLE9BREQ7QUF3RE5zRCxNQUFBQSxRQUFRLEVBQUUsb0JBQVk7QUFDbEIsZUFBT2pLLElBQUksQ0FBQzZSLEtBQUwsQ0FBVyxLQUFLbEMsYUFBTCxDQUFtQnpRLElBQW5CLEdBQTBCLElBQXJDLENBQVA7QUFDSCxPQTFESztBQTJETjRTLE1BQUFBLFdBQVcsRUFBRSx1QkFBWTtBQUNyQixZQUFJQyxvQkFBb0IsR0FBRyxFQUEzQjs7QUFDQSxhQUFLLElBQUl2UCxDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHLEtBQUtrTixVQUFMLENBQWdCak4sTUFBcEMsRUFBNENELENBQUMsRUFBN0MsRUFBaUQ7QUFDN0MsY0FBSSxDQUFDLEtBQUtrTixVQUFMLENBQWdCbE4sQ0FBaEIsRUFBbUJzTyxTQUF4QixFQUFtQztBQUMvQmlCLFlBQUFBLG9CQUFvQixDQUFDblQsSUFBckIsQ0FBMEIsS0FBSzhRLFVBQUwsQ0FBZ0JsTixDQUFoQixDQUExQjtBQUNIO0FBQ0o7O0FBRUQsZUFBT3VQLG9CQUFvQixDQUFDdFAsTUFBckIsS0FBZ0MsQ0FBaEMsSUFBcUNzUCxvQkFBb0IsQ0FBQ3RQLE1BQXJCLEdBQThCLENBQTlCLElBQW1DcU0sYUFBL0U7QUFDSCxPQXBFSztBQXFFTmtELE1BQUFBLFNBQVMsRUFBRSxxQkFBWTtBQUNuQixlQUFPLEtBQUtwQyxXQUFMLEdBQW1CLEdBQW5CLEdBQXlCLEdBQWhDO0FBQ0gsT0F2RUs7QUF3RU5PLE1BQUFBLFlBQVksRUFBRTtBQUNWVixRQUFBQSxHQUFHLEVBQUUsZUFBWTtBQUNiLGlCQUFPO0FBQ0hHLFlBQUFBLFdBQVcsRUFBRSxLQUFLQTtBQURmLFdBQVA7QUFHSCxTQUxTO0FBTVZzQixRQUFBQSxHQUFHLEVBQUUsYUFBVWUsUUFBVixFQUFvQjtBQUNyQixjQUFJLENBQUNBLFFBQUwsRUFBZTtBQUNYO0FBQ0g7O0FBQ0QsZUFBS3JDLFdBQUwsR0FBbUJxQyxRQUFRLENBQUNyQyxXQUE1QjtBQUNIO0FBWFM7QUF4RVIsS0FsQjhCO0FBd0d4Q3NDLElBQUFBLE9BQU8sRUFBRSxtQkFBWTtBQUNqQixVQUFJaEMsSUFBSSxHQUFHLElBQVg7QUFFQUEsTUFBQUEsSUFBSSxDQUFDTSxLQUFMLEdBQWFyQixZQUFiO0FBRUFlLE1BQUFBLElBQUksQ0FBQ2lDLEdBQUwsQ0FBUywrQkFBVCxFQUEwQyxVQUFVQyxLQUFWLEVBQWlCO0FBQ3ZEbEMsUUFBQUEsSUFBSSxDQUFDbUMsb0JBQUwsQ0FBMEJELEtBQTFCO0FBQ0gsT0FGRDtBQUlBbEMsTUFBQUEsSUFBSSxDQUFDaUMsR0FBTCxDQUFTLHNCQUFULEVBQWlDLFVBQVVDLEtBQVYsRUFBaUI7QUFDOUNsQyxRQUFBQSxJQUFJLENBQUNvQyxXQUFMLENBQWlCRixLQUFqQjtBQUNILE9BRkQ7QUFJQSxVQUFJRyxRQUFRLEdBQUcsTUFBTTVELGdCQUFyQjtBQUNBLFVBQUk2RCxRQUFRLEdBQUdwRCxnQkFBZ0IsQ0FBQ3RNLElBQWpCLENBQXNCLElBQXRCLENBQWY7QUFFQTNLLE1BQUFBLENBQUMsQ0FBQ29hLFFBQUQsQ0FBRCxDQUFZM1YsVUFBWixDQUF1QjtBQUNuQjVCLFFBQUFBLHNCQUFzQixFQUFFLEVBREw7QUFFbkJYLFFBQUFBLFFBQVEsRUFBRWxDLENBQUMsQ0FBQyxNQUFNcWEsUUFBUCxDQUZRO0FBR25CdlEsUUFBQUEsUUFBUSxFQUFFLE1BSFM7QUFJbkJELFFBQUFBLEdBQUcsRUFBRTRNLFlBSmM7QUFLbkJuUyxRQUFBQSxHQUFHLEVBQUUsYUFBVWhELENBQVYsRUFBYWlELElBQWIsRUFBbUI7QUFDcEIsY0FBSStWLEtBQUssR0FBRy9WLElBQUksQ0FBQ29DLEtBQUwsQ0FBVzJELE1BQXZCO0FBQ0EsY0FBSUQsQ0FBSjs7QUFDQSxlQUFLQSxDQUFDLEdBQUcsQ0FBVCxFQUFZQSxDQUFDLEdBQUdpUSxLQUFoQixFQUF1QmpRLENBQUMsRUFBeEIsRUFBNEI7QUFDeEI5RixZQUFBQSxJQUFJLENBQUNvQyxLQUFMLENBQVcwRCxDQUFYLEVBQWNkLFVBQWQsR0FDSXdPLElBQUksQ0FBQ3dDLFdBQUwsS0FBcUJoVyxJQUFJLENBQUNvQyxLQUFMLENBQVcwRCxDQUFYLEVBQWM3RCxJQUR2QztBQUVIOztBQUNEakMsVUFBQUEsSUFBSSxDQUFDSyxNQUFMO0FBQ0gsU0Fia0I7QUFjbkJULFFBQUFBLFFBQVEsRUFBRSxvQkFBWTtBQUNsQixjQUFJcVcsZ0JBQWdCLEdBQUd4YSxDQUFDLENBQUMsd0NBQUQsQ0FBRCxDQUE0Q3lWLEdBQTVDLEVBQXZCO0FBRUEsaUJBQU8sQ0FDSDtBQUFFalAsWUFBQUEsSUFBSSxFQUFFLE1BQVI7QUFBZ0J2QyxZQUFBQSxLQUFLLEVBQUU2UztBQUF2QixXQURHLEVBRUg7QUFBRXRRLFlBQUFBLElBQUksRUFBRSw0QkFBUjtBQUFzQ3ZDLFlBQUFBLEtBQUssRUFBRXVXO0FBQTdDLFdBRkcsQ0FBUDtBQUlILFNBckJrQjtBQXNCbkI3VixRQUFBQSxJQUFJLEVBQUUsY0FBVXJELENBQVYsRUFBYWlELElBQWIsRUFBbUI7QUFDckIsY0FBSWtXLGFBQWEsR0FBRyxFQUFwQjtBQUNBLGNBQUlDLFFBQVEsR0FBRyxFQUFmOztBQUVBLGNBQUluVyxJQUFJLENBQUNnSixNQUFMLENBQVk1RyxLQUFaLENBQWtCMkQsTUFBbEIsR0FBMkIsQ0FBL0IsRUFBa0M7QUFDOUIsaUJBQUssSUFBSUQsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBRzlGLElBQUksQ0FBQ2dKLE1BQUwsQ0FBWTVHLEtBQVosQ0FBa0IyRCxNQUF0QyxFQUE4Q0QsQ0FBQyxFQUEvQyxFQUFtRDtBQUMvQzlGLGNBQUFBLElBQUksQ0FBQ2dKLE1BQUwsQ0FBWTVHLEtBQVosQ0FBa0IwRCxDQUFsQixFQUFxQnVPLEtBQXJCLEdBQTZCLElBQTdCLENBRCtDLENBRS9DOztBQUNBLGtCQUFHclUsSUFBSSxDQUFDZ0osTUFBTCxDQUFZNUcsS0FBWixDQUFrQjBELENBQWxCLEVBQXFCZ0IsS0FBckIsS0FBK0JoSixTQUEvQixJQUE0Q2tDLElBQUksQ0FBQ2dKLE1BQUwsQ0FBWTVHLEtBQVosQ0FBa0IwRCxDQUFsQixFQUFxQmdCLEtBQXJCLEtBQStCLElBQTlFLEVBQ0lvUCxhQUFhLENBQUNoVSxJQUFkLENBQW1CbEMsSUFBSSxDQUFDZ0osTUFBTCxDQUFZNUcsS0FBWixDQUFrQjBELENBQWxCLENBQW5CLEVBREosS0FHSXFRLFFBQVEsSUFBSW5XLElBQUksQ0FBQ2dKLE1BQUwsQ0FBWTVHLEtBQVosQ0FBa0IwRCxDQUFsQixFQUFxQmdCLEtBQXJCLEdBQTZCLElBQXpDO0FBQ1A7QUFDSjs7QUFFRCxjQUFJcVAsUUFBUSxLQUFLLEVBQWpCLEVBQXFCO0FBQ2pCQyxZQUFBQSxLQUFLLENBQUNELFFBQUQsQ0FBTDtBQUNBO0FBQ0g7O0FBQ0RuQixVQUFBQSxPQUFPLENBQUNDLEdBQVIsQ0FBWWlCLGFBQVo7O0FBQ0EsY0FBSUEsYUFBYSxDQUFDblEsTUFBZCxHQUF1QixDQUF2QixJQUE0QnFNLGFBQWEsS0FBSyxLQUFsRCxFQUF5RDtBQUNyRGdFLFlBQUFBLEtBQUssQ0FBQzNhLENBQUMsQ0FBQyxxQkFBRCxDQUFELENBQXlCeVYsR0FBekIsRUFBRCxDQUFMO0FBQ0EwQixZQUFBQSxhQUFhLENBQUNJLFVBQWQsQ0FBeUI5USxJQUF6QixDQUE4QmdVLGFBQWEsQ0FBQyxDQUFELENBQTNDO0FBQ0F0RCxZQUFBQSxhQUFhLENBQUNRLFdBQWQsR0FBNEIsSUFBNUI7QUFDSCxXQUpELE1BSU87QUFDSFIsWUFBQUEsYUFBYSxDQUFDSSxVQUFkLEdBQTJCSixhQUFhLENBQUNJLFVBQWQsQ0FBeUJ6RyxNQUF6QixDQUFnQzJKLGFBQWhDLENBQTNCO0FBQ0F0RCxZQUFBQSxhQUFhLENBQUNRLFdBQWQsR0FBNEIsSUFBNUI7QUFDSDtBQUNKLFNBbERrQjtBQW1EbkJ0TSxRQUFBQSxLQUFLLEVBQUUsZUFBVWtCLEtBQVYsRUFBaUJpQixVQUFqQixFQUE2QmxCLFdBQTdCLEVBQTBDO0FBQzdDaU4sVUFBQUEsT0FBTyxDQUFDQyxHQUFSLENBQVksbUJBQVo7QUFDQUQsVUFBQUEsT0FBTyxDQUFDQyxHQUFSLENBQVlqTixLQUFaO0FBQ0FnTixVQUFBQSxPQUFPLENBQUNDLEdBQVIsQ0FBWWhNLFVBQVo7QUFDQStMLFVBQUFBLE9BQU8sQ0FBQ0MsR0FBUixDQUFZbE4sV0FBWjtBQUNIO0FBeERrQixPQUF2QjtBQTBESCxLQWxMdUM7QUFtTHhDc08sSUFBQUEsT0FBTyxFQUFFO0FBQ0xULE1BQUFBLFdBQVcsRUFBRSxxQkFBVUYsS0FBVixFQUFpQjtBQUMxQixhQUFLekMsYUFBTCxHQUFxQnlDLEtBQXJCO0FBQ0gsT0FISTtBQUlMTSxNQUFBQSxXQUFXLEVBQUUsdUJBQVk7QUFDckIsZUFBTyx1Q0FBdUNyVyxPQUF2QyxDQUErQyxPQUEvQyxFQUF3RCxVQUFVMlcsQ0FBVixFQUFhO0FBQ3hFLGNBQUlDLENBQUMsR0FBR2pULElBQUksQ0FBQ2tULE1BQUwsS0FBZ0IsRUFBaEIsR0FBcUIsQ0FBN0I7QUFBQSxjQUFnQ0MsQ0FBQyxHQUFHSCxDQUFDLEtBQUssR0FBTixHQUFZQyxDQUFaLEdBQWlCQSxDQUFDLEdBQUcsR0FBSixHQUFVLEdBQS9EO0FBQ0EsaUJBQU9FLENBQUMsQ0FBQ2xYLFFBQUYsQ0FBVyxFQUFYLENBQVA7QUFDSCxTQUhNLENBQVA7QUFJSCxPQVRJO0FBVUxtWCxNQUFBQSxjQUFjLEVBQUUsd0JBQVVDLEtBQVYsRUFBaUI7QUFDN0IsWUFBSUMsT0FBTyxHQUFHLEVBQWQ7O0FBQ0EsWUFBSSxLQUFLM0QsYUFBVCxFQUF3QjtBQUNwQixjQUFJM1EsS0FBSyxHQUFHLEtBQUswUSxVQUFMLElBQW1CLEtBQUtBLFVBQUwsQ0FBZ0I2RCxPQUFoQixDQUF3QixLQUFLNUQsYUFBN0IsQ0FBL0I7O0FBQ0EsY0FBSTNRLEtBQUssR0FBRyxDQUFDLENBQWIsRUFBZ0I7QUFDWnNVLFlBQUFBLE9BQU8sR0FBRyxLQUFLNUQsVUFBTCxDQUFnQjFRLEtBQWhCLENBQVY7QUFDQXNVLFlBQUFBLE9BQU8sQ0FBQ3hDLFNBQVIsR0FBb0IsSUFBcEIsQ0FGWSxDQUdaOztBQUNBLGlCQUFLcEIsVUFBTCxDQUFnQitCLE1BQWhCLENBQXVCelMsS0FBdkIsRUFBOEIsQ0FBOUI7QUFDSDtBQUNKLFNBUkQsTUFTSztBQUNEO0FBQ0EsY0FBSSxLQUFLMFEsVUFBTCxDQUFnQmpOLE1BQWhCLEtBQTJCLENBQS9CLEVBQWtDO0FBQzlCNlEsWUFBQUEsT0FBTyxHQUFHLEtBQUs1RCxVQUFMLENBQWdCMVEsS0FBaEIsQ0FBVjtBQUNBc1UsWUFBQUEsT0FBTyxDQUFDeEMsU0FBUixHQUFvQixJQUFwQixDQUY4QixDQUc5Qjs7QUFDQSxpQkFBS3BCLFVBQUwsQ0FBZ0IrQixNQUFoQixDQUF1QixDQUF2QixFQUEwQixDQUExQjtBQUNIO0FBQ0o7O0FBQ0QsYUFBSzlCLGFBQUwsR0FBcUIsSUFBckI7QUFDSCxPQS9CSTtBQWdDTDZELE1BQUFBLGtCQUFrQixFQUFFLDRCQUFVSCxLQUFWLEVBQWlCO0FBQ2pDbGIsUUFBQUEsQ0FBQyxDQUFDLEtBQUtzYixLQUFMLENBQVdDLGNBQVosQ0FBRCxDQUE2QkMsS0FBN0I7QUFDQSxhQUFLNUQsZUFBTCxHQUF1QixLQUFLSixhQUFMLENBQW1CcUIsU0FBMUM7QUFDSCxPQW5DSTtBQW9DTDRDLE1BQUFBLG9CQUFvQixFQUFFLDhCQUFVUCxLQUFWLEVBQWlCO0FBQ25DbGIsUUFBQUEsQ0FBQyxDQUFDLEtBQUtzYixLQUFMLENBQVdDLGNBQVosQ0FBRCxDQUE2QkMsS0FBN0IsQ0FBbUMsTUFBbkM7QUFDQSxhQUFLaEUsYUFBTCxDQUFtQnFCLFNBQW5CLEdBQStCLEtBQUtqQixlQUFwQztBQUNILE9BdkNJO0FBd0NMOEQsTUFBQUEsZUFBZSxFQUFFLHlCQUFVUixLQUFWLEVBQWlCO0FBQzlCbGIsUUFBQUEsQ0FBQyxDQUFDLEtBQUtzYixLQUFMLENBQVdLLGNBQVosQ0FBRCxDQUE2QkgsS0FBN0IsR0FEOEIsQ0FFOUI7O0FBQ0EsYUFBS2hFLGFBQUwsQ0FBbUJzQixNQUFuQixHQUE0QjtBQUMxQkwsVUFBQUEsQ0FBQyxFQUFFLEtBQUtqQixhQUFMLENBQW1Cc0IsTUFBbkIsQ0FBMEJMLENBREg7QUFFMUJnQixVQUFBQSxDQUFDLEVBQUUsS0FBS2pDLGFBQUwsQ0FBbUJzQixNQUFuQixDQUEwQlc7QUFGSCxTQUE1QjtBQUlBLGFBQUs1QixZQUFMLEdBQW9CLEtBQUtMLGFBQUwsQ0FBbUJzQixNQUF2QztBQUNILE9BaERJO0FBaURMOEMsTUFBQUEsb0JBQW9CLEVBQUUsOEJBQVVWLEtBQVYsRUFBaUI7QUFDbkNsYixRQUFBQSxDQUFDLENBQUMsS0FBS3NiLEtBQUwsQ0FBV0ssY0FBWixDQUFELENBQTZCSCxLQUE3QixDQUFtQyxNQUFuQztBQUNBLGFBQUtoRSxhQUFMLENBQW1Cc0IsTUFBbkIsR0FBNEIsS0FBS2pCLFlBQWpDO0FBQ0gsT0FwREk7QUFxRExnRSxNQUFBQSxXQUFXLEVBQUUscUJBQVVYLEtBQVYsRUFBaUI7QUFDMUIsYUFBSzFELGFBQUwsQ0FBbUJzQixNQUFuQixHQUE0QjtBQUFFTCxVQUFBQSxDQUFDLEVBQUUsR0FBTDtBQUFVZ0IsVUFBQUEsQ0FBQyxFQUFFO0FBQWIsU0FBNUI7QUFDSCxPQXZESTtBQXdETHFDLE1BQUFBLFlBQVksRUFBRSxzQkFBU1osS0FBVCxFQUFnQjtBQUMxQixZQUFJYSxLQUFLLEdBQUcsS0FBS1QsS0FBTCxDQUFXVSxXQUF2QjtBQUNBLGFBQUt4RSxhQUFMLENBQW1Cc0IsTUFBbkIsR0FBNEI7QUFDekJMLFVBQUFBLENBQUMsRUFBRXlDLEtBQUssQ0FBQ2UsT0FBTixHQUFnQkYsS0FBSyxDQUFDRyxXQURBO0FBRXpCekMsVUFBQUEsQ0FBQyxFQUFFeUIsS0FBSyxDQUFDaUIsT0FBTixHQUFnQkosS0FBSyxDQUFDSztBQUZBLFNBQTVCO0FBSUgsT0E5REk7QUErRExDLE1BQUFBLFVBQVUsRUFBRSxzQkFBWTtBQUNwQixZQUFJLEtBQUtmLEtBQUwsQ0FBV1UsV0FBWCxJQUEwQixLQUFLVixLQUFMLENBQVdnQixTQUFyQyxJQUFrRCxLQUFLOUUsYUFBM0QsRUFBMEU7QUFDdEU7QUFDQSxjQUFJK0UsTUFBTSxHQUFHLENBQUMsS0FBS2pCLEtBQUwsQ0FBV2dCLFNBQVgsQ0FBcUJKLFdBQXJCLEdBQW1DLEtBQUtaLEtBQUwsQ0FBV1UsV0FBWCxDQUF1QkUsV0FBM0QsSUFBMEUsQ0FBdkY7QUFDQSxjQUFJTSxRQUFRLEdBQUksS0FBS2hGLGFBQUwsQ0FBbUJzQixNQUFuQixDQUEwQkwsQ0FBMUIsR0FBOEIsS0FBSzZDLEtBQUwsQ0FBV1UsV0FBWCxDQUF1QkUsV0FBdEQsR0FBcUVLLE1BQXBGOztBQUNBLGNBQUlDLFFBQVEsR0FBRyxFQUFmLEVBQW1CO0FBQUU7QUFDakJBLFlBQUFBLFFBQVEsR0FBRyxFQUFYO0FBQ0gsV0FGRCxNQUVPO0FBQ0hBLFlBQUFBLFFBQVEsR0FBR0EsUUFBUSxHQUFHLENBQXRCLENBREcsQ0FDc0I7QUFDNUI7O0FBQ0QsaUJBQU9BLFFBQVEsR0FBRyxJQUFsQjtBQUNILFNBVkQsTUFVTztBQUNILGlCQUFPLEdBQVA7QUFDSDtBQUNKLE9BN0VJO0FBOEVMQyxNQUFBQSxTQUFTLEVBQUUscUJBQVk7QUFDbkIsWUFBSSxLQUFLbkIsS0FBTCxDQUFXVSxXQUFYLElBQTBCLEtBQUt4RSxhQUFuQyxFQUFrRDtBQUM5QyxjQUFJZ0YsUUFBUSxHQUFHLEtBQUtoRixhQUFMLENBQW1Cc0IsTUFBbkIsQ0FBMEJXLENBQTFCLEdBQThCLEtBQUs2QixLQUFMLENBQVdVLFdBQVgsQ0FBdUJJLFlBQXBFOztBQUNBLGNBQUlJLFFBQVEsR0FBRyxFQUFmLEVBQW1CO0FBQUU7QUFDakJBLFlBQUFBLFFBQVEsR0FBRyxFQUFYO0FBQ0gsV0FGRCxNQUVPO0FBQ0hBLFlBQUFBLFFBQVEsR0FBR0EsUUFBUSxHQUFHLENBQXRCLENBREcsQ0FDc0I7QUFDNUI7O0FBQ0QsaUJBQU9BLFFBQVEsR0FBRyxJQUFsQjtBQUNILFNBUkQsTUFRTztBQUNILGlCQUFPLEdBQVA7QUFDSDtBQUNKLE9BMUZJO0FBMkZMRSxNQUFBQSxTQUFTLEVBQUUsbUJBQVV4QixLQUFWLEVBQWlCO0FBQ3hCLFlBQUlhLEtBQUssR0FBRyxLQUFLVCxLQUFMLENBQVdVLFdBQXZCO0FBQ0EsYUFBS3hFLGFBQUwsQ0FBbUJzQixNQUFuQixHQUE0QjtBQUN4QkwsVUFBQUEsQ0FBQyxFQUFFeUMsS0FBSyxDQUFDZSxPQUFOLEdBQWdCRixLQUFLLENBQUNHLFdBREQ7QUFFeEJ6QyxVQUFBQSxDQUFDLEVBQUV5QixLQUFLLENBQUNpQixPQUFOLEdBQWdCSixLQUFLLENBQUNLO0FBRkQsU0FBNUI7QUFJSCxPQWpHSTtBQWtHTE8sTUFBQUEsYUFBYSxFQUFFLHVCQUFVaFcsS0FBVixFQUFpQjtBQUM1QixZQUFLQSxLQUFLLENBQUMyRCxNQUFOLEdBQWUsQ0FBaEIsSUFBdUJxTSxhQUFhLEtBQUssS0FBN0MsRUFBcUQ7QUFDakRnRSxVQUFBQSxLQUFLLENBQUMzYSxDQUFDLENBQUMscUJBQUQsQ0FBRCxDQUF5QnlWLEdBQXpCLEVBQUQsQ0FBTDtBQUNBMEIsVUFBQUEsYUFBYSxDQUFDSSxVQUFkLENBQXlCOVEsSUFBekIsQ0FBOEJFLEtBQUssQ0FBQyxDQUFELENBQW5DO0FBQ0F3USxVQUFBQSxhQUFhLENBQUNRLFdBQWQsR0FBNEIsSUFBNUI7QUFDSCxTQUpELE1BSU87QUFDSFIsVUFBQUEsYUFBYSxDQUFDSSxVQUFkLEdBQTJCSixhQUFhLENBQUNJLFVBQWQsQ0FBeUJ6RyxNQUF6QixDQUFnQ25LLEtBQWhDLENBQTNCO0FBQ0F3USxVQUFBQSxhQUFhLENBQUNRLFdBQWQsR0FBNEIsSUFBNUI7QUFDSDtBQUNKLE9BM0dJO0FBNEdMdUMsTUFBQUEsb0JBQW9CLEVBQUUsOEJBQVVELEtBQVYsRUFBaUI7QUFDbkMsWUFBSWxDLElBQUksR0FBRyxJQUFYO0FBQ0FBLFFBQUFBLElBQUksQ0FBQ1AsYUFBTCxHQUFxQnlDLEtBQXJCLENBRm1DLENBR25DO0FBQ0E7O0FBQ0ExRSxRQUFBQSxVQUFVLENBQUMsWUFBWTtBQUNuQndDLFVBQUFBLElBQUksQ0FBQ2tELGNBQUw7QUFDSCxTQUZTLEVBRVAsR0FGTyxDQUFWO0FBR0g7QUFwSEksS0FuTCtCO0FBeVN4QzJCLElBQUFBLEtBQUssRUFBRTtBQUNIckYsTUFBQUEsVUFBVSxFQUFFO0FBQ1JzRixRQUFBQSxJQUFJLEVBQUUsSUFERTtBQUVSQyxRQUFBQSxPQUZRLHFCQUVHO0FBQ1A7QUFDQXZILFVBQUFBLFVBQVUsQ0FBQyxZQUFZO0FBQUV2VixZQUFBQSxDQUFDLENBQUNtQyxRQUFELENBQUQsQ0FBWThOLE9BQVosQ0FBb0IsdUJBQXBCO0FBQStDLFdBQTlELEVBQWdFLEdBQWhFLENBQVY7QUFDSDtBQUxPLE9BRFQ7QUFRSCtILE1BQUFBLFlBQVksRUFBRSxzQkFBVThCLFFBQVYsRUFBb0I7QUFDOUI1QixRQUFBQSxZQUFZLENBQUM2RSxPQUFiLENBQXFCLGlCQUFyQixFQUF3Q3JJLElBQUksQ0FBQzZELFNBQUwsQ0FBZXVCLFFBQWYsQ0FBeEM7QUFDSDtBQVZFO0FBelNpQyxHQUFSLENBQXBDO0FBc1RIO0FDL1RELFNBQVNrRCxvQkFBVCxDQUE4QjdNLEVBQTlCLEVBQWtDOE0sZ0JBQWxDLEVBQW9EdkcsWUFBcEQsRUFBa0VDLGFBQWxFLEVBQWlGQyxjQUFqRixFQUFpR0MsWUFBakcsRUFBK0c7QUFFM0csTUFBSTVFLE1BQU0sR0FBR2pTLENBQUMsQ0FBQ21DLFFBQVEsQ0FBQzRVLGNBQVQsQ0FBd0IvVyxDQUFDLENBQUNtUSxFQUFELENBQUQsQ0FBTTVMLElBQU4sQ0FBVyxLQUFYLENBQXhCLENBQUQsQ0FBZDtBQUNBLE1BQUl5UyxZQUFZLEdBQUcvRSxNQUFNLENBQUMxTixJQUFQLENBQVksTUFBWixDQUFuQjtBQUVBLE1BQUkwUyxnQkFBZ0IsR0FBR2pYLENBQUMsQ0FBQ21RLEVBQUQsQ0FBeEI7QUFDQSxNQUFJK0csUUFBUSxHQUFHRCxnQkFBZ0IsQ0FBQ3RNLElBQWpCLENBQXNCLElBQXRCLENBQWY7QUFDQSxNQUFJd00sYUFBSjtBQUVBQyxFQUFBQSxjQUFjLENBQUMzUSxJQUFmLENBQW9CMFEsYUFBYSxHQUFHLElBQUlFLEdBQUosQ0FBUTtBQUN4Q2xILElBQUFBLEVBQUUsRUFBRThHLGdCQUFnQixDQUFDSyxHQUFqQixDQUFxQixDQUFyQixDQURvQztBQUV4Qy9TLElBQUFBLElBQUksRUFBRTtBQUNGZ1QsTUFBQUEsVUFBVSxFQUFFLEVBRFY7QUFFRkMsTUFBQUEsYUFBYSxFQUFFLElBRmI7QUFHRkMsTUFBQUEsV0FBVyxFQUFFLEtBSFg7QUFJRkMsTUFBQUEsUUFBUSxFQUFFUixRQUpSO0FBS0ZTLE1BQUFBLFdBQVcsRUFBRSxLQUxYO0FBTUZmLE1BQUFBLGNBQWMsRUFBRUEsY0FOZDtBQU9GZ0IsTUFBQUEsZUFBZSxFQUFFLEVBUGY7QUFRRmYsTUFBQUEsWUFBWSxFQUFFQSxZQVJaO0FBU0ZnQixNQUFBQSxZQUFZLEVBQUU7QUFUWixLQUZrQztBQWF4Q0MsSUFBQUEsT0FBTyxFQUFFLG1CQUFZO0FBQ2pCLFVBQUlDLElBQUksR0FBRyxJQUFYO0FBRUFBLE1BQUFBLElBQUksQ0FBQ0MsWUFBTCxHQUFvQnRELElBQUksQ0FBQ3VELEtBQUwsQ0FBV0MsWUFBWSxDQUFDQyxPQUFiLENBQXFCLGlCQUFyQixDQUFYLENBQXBCO0FBQ0gsS0FqQnVDO0FBa0J4Q0MsSUFBQUEsUUFBUSxFQUFFO0FBQ05DLE1BQUFBLEtBQUssRUFBRTtBQUNIZixRQUFBQSxHQUFHLEVBQUUsZUFBWTtBQUNiLGNBQUlnQixVQUFVLEdBQUcsRUFBakI7O0FBQ0EsY0FBSSxDQUFDLEtBQUtYLFdBQVYsRUFBdUI7QUFDbkIsbUJBQU9qRCxJQUFJLENBQUM2RCxTQUFMLENBQWV2QixZQUFmLENBQVA7QUFDSDs7QUFDRCxlQUFLTyxVQUFMLENBQWdCaUIsT0FBaEIsQ0FBd0IsVUFBVUMsQ0FBVixFQUFhO0FBQ2pDLGdCQUFJQSxDQUFDLENBQUNDLFNBQUYsS0FBZ0IsV0FBcEIsRUFBaUM7QUFDN0I7QUFDSDs7QUFDREosWUFBQUEsVUFBVSxDQUFDN1IsSUFBWCxDQUFnQjtBQUFFNkosY0FBQUEsSUFBSSxFQUFFbUksQ0FBQyxDQUFDQyxTQUFWO0FBQXFCRyxjQUFBQSxTQUFTLEVBQUVKLENBQUMsQ0FBQ0ksU0FBbEM7QUFBNkNDLGNBQUFBLE1BQU0sRUFBRUwsQ0FBQyxDQUFDSztBQUF2RCxhQUFoQjtBQUNILFdBTEQ7QUFNQSxpQkFBT3BFLElBQUksQ0FBQzZELFNBQUwsQ0FBZUQsVUFBZixDQUFQO0FBQ0gsU0FiRTtBQWNIUyxRQUFBQSxHQUFHLEVBQUUsYUFBVUMsTUFBVixFQUFrQjtBQUNuQixjQUFJakIsSUFBSSxHQUFHLElBQVg7QUFDQSxjQUFJTyxVQUFVLEdBQUdVLE1BQU0sSUFBSSxFQUEzQjtBQUNBLGNBQUlDLE1BQU0sR0FBR2paLENBQUMsQ0FBQzZMLFFBQUYsRUFBYjtBQUNBLGNBQUkwRixLQUFLLEdBQUcsRUFBWjtBQUNBLGNBQUlqSCxNQUFNLEdBQUcsQ0FBYjtBQUNBZ08sVUFBQUEsVUFBVSxDQUFDRSxPQUFYLENBQW1CLFVBQVVDLENBQVYsRUFBYXBPLENBQWIsRUFBZ0I7QUFDL0JrSCxZQUFBQSxLQUFLLENBQUM5SyxJQUFOLENBQVc7QUFBRUQsY0FBQUEsSUFBSSxFQUFFLE1BQU1pUyxDQUFDLENBQUNuSSxJQUFoQjtBQUFzQjRJLGNBQUFBLElBQUksRUFBRSxFQUE1QjtBQUFnQ1IsY0FBQUEsU0FBUyxFQUFFO0FBQTNDLGFBQVgsRUFEK0IsQ0FDOEI7O0FBQzdEdk4sWUFBQUEsT0FBTyxHQUFHbkwsQ0FBQyxDQUFDb1IsSUFBRixDQUFPNkgsTUFBUCxFQUFldFUsSUFBZixDQUFvQixZQUFZO0FBQ3RDM0UsY0FBQUEsQ0FBQyxDQUFDc04sSUFBRixDQUFPO0FBQ0h6RCxnQkFBQUEsR0FBRyxFQUFFNk0sWUFBWSxHQUFHLFFBQWYsR0FBMEJ5QyxrQkFBa0IsQ0FBQ1YsQ0FBQyxDQUFDbkksSUFBSCxDQUQ5QztBQUVIOEksZ0JBQUFBLE1BQU0sRUFBRSxLQUZMO0FBR0hoTyxnQkFBQUEsT0FBTyxFQUFFLGlCQUFVN0csSUFBVixFQUFnQjtBQUNyQkEsa0JBQUFBLElBQUksQ0FBQzhVLE1BQUwsR0FBYzlVLElBQUksQ0FBQ2lDLElBQUwsR0FBWTZELENBQUMsQ0FBQ3ZHLFFBQUYsRUFBMUI7QUFDQVMsa0JBQUFBLElBQUksQ0FBQ3NVLFNBQUwsR0FBaUJKLENBQUMsQ0FBQ0ksU0FBbkIsQ0FGcUIsQ0FFUzs7QUFDOUJ0VSxrQkFBQUEsSUFBSSxDQUFDdVUsTUFBTCxHQUFjTCxDQUFDLENBQUNLLE1BQWhCLENBSHFCLENBR0c7O0FBQ3hCdkgsa0JBQUFBLEtBQUssQ0FBQytILE1BQU4sQ0FBYWpQLENBQWIsRUFBZ0IsQ0FBaEIsRUFBbUI5RixJQUFuQjs7QUFDQSxzQkFBSWdOLEtBQUssQ0FBQ2pILE1BQU4sS0FBaUIsRUFBRUEsTUFBdkIsRUFBK0I7QUFDM0JpSCxvQkFBQUEsS0FBSyxDQUFDaUgsT0FBTixDQUFjLFVBQVVpQixDQUFWLEVBQWE7QUFDdkIxQixzQkFBQUEsSUFBSSxDQUFDUixVQUFMLENBQWdCOVEsSUFBaEIsQ0FBcUJnVCxDQUFyQjtBQUNILHFCQUZEO0FBR0ExQixvQkFBQUEsSUFBSSxDQUFDSixXQUFMLEdBQW1CLElBQW5CO0FBQ0g7QUFDSixpQkFkRTtBQWVIdE0sZ0JBQUFBLEtBQUssRUFBRSxlQUFVQSxNQUFWLEVBQWlCO0FBQ3BCa08sa0JBQUFBLE9BQU8sQ0FBQ0MsR0FBUixDQUFZbk8sTUFBWjtBQUNBa0csa0JBQUFBLEtBQUssQ0FBQytILE1BQU4sQ0FBYWpQLENBQWIsRUFBZ0IsQ0FBaEIsRUFBbUI7QUFBRTdELG9CQUFBQSxJQUFJLEVBQUVpUyxDQUFDLENBQUNuSSxJQUFWO0FBQWdCNEksb0JBQUFBLElBQUksRUFBRSxFQUF0QjtBQUEwQlIsb0JBQUFBLFNBQVMsRUFBRSxXQUFyQztBQUFrREcsb0JBQUFBLFNBQVMsRUFBRSxFQUE3RDtBQUFpRUMsb0JBQUFBLE1BQU0sRUFBRTtBQUFFTCxzQkFBQUEsQ0FBQyxFQUFFLENBQUw7QUFBUWdCLHNCQUFBQSxDQUFDLEVBQUU7QUFBWDtBQUF6RSxtQkFBbkI7O0FBQ0Esc0JBQUlsSSxLQUFLLENBQUNqSCxNQUFOLEtBQWlCLEVBQUVBLE1BQXZCLEVBQStCO0FBQzNCaUgsb0JBQUFBLEtBQUssQ0FBQ2lILE9BQU4sQ0FBYyxVQUFVQyxDQUFWLEVBQWE7QUFDdkJWLHNCQUFBQSxJQUFJLENBQUNSLFVBQUwsQ0FBZ0I5USxJQUFoQixDQUFxQmdTLENBQXJCO0FBQ0gscUJBRkQ7QUFHQVYsb0JBQUFBLElBQUksQ0FBQ0osV0FBTCxHQUFtQixJQUFuQjtBQUNIO0FBQ0o7QUF4QkUsZUFBUDtBQTBCSCxhQTNCUyxDQUFWO0FBNEJILFdBOUJEO0FBaUNBc0IsVUFBQUEsTUFBTSxDQUFDekssT0FBUDtBQUNIO0FBdERFLE9BREQ7QUF5RE5zRCxNQUFBQSxRQUFRLEVBQUUsb0JBQVk7QUFDbEIsZUFBT2pLLElBQUksQ0FBQzZSLEtBQUwsQ0FBVyxLQUFLbEMsYUFBTCxDQUFtQnpRLElBQW5CLEdBQTBCLElBQXJDLENBQVA7QUFDSCxPQTNESztBQTRETjRTLE1BQUFBLFdBQVcsRUFBRSx1QkFBWTtBQUNyQixlQUFPLEtBQUtwQyxVQUFMLENBQWdCak4sTUFBaEIsS0FBMkIsQ0FBM0IsSUFBZ0MsS0FBS2lOLFVBQUwsQ0FBZ0JqTixNQUFoQixHQUF5QixDQUF6QixJQUE4QnFNLGFBQXJFO0FBQ0gsT0E5REs7QUErRE5rRCxNQUFBQSxTQUFTLEVBQUUscUJBQVk7QUFDbkIsZUFBTyxLQUFLcEMsV0FBTCxHQUFtQixHQUFuQixHQUF5QixHQUFoQztBQUNILE9BakVLO0FBa0VOTyxNQUFBQSxZQUFZLEVBQUU7QUFDVlYsUUFBQUEsR0FBRyxFQUFFLGVBQVk7QUFDYixpQkFBTztBQUNIRyxZQUFBQSxXQUFXLEVBQUUsS0FBS0E7QUFEZixXQUFQO0FBR0gsU0FMUztBQU1Wc0IsUUFBQUEsR0FBRyxFQUFFLGFBQVVlLFFBQVYsRUFBb0I7QUFDckIsY0FBSSxDQUFDQSxRQUFMLEVBQWU7QUFDWDtBQUNIOztBQUNELGVBQUtyQyxXQUFMLEdBQW1CcUMsUUFBUSxDQUFDckMsV0FBNUI7QUFDSDtBQVhTO0FBbEVSLEtBbEI4QjtBQWtHeENzQyxJQUFBQSxPQUFPLEVBQUUsbUJBQVk7QUFDakIsVUFBSWhDLElBQUksR0FBRyxJQUFYO0FBRUFBLE1BQUFBLElBQUksQ0FBQ00sS0FBTCxHQUFhckIsWUFBYjtBQUVBZSxNQUFBQSxJQUFJLENBQUNpQyxHQUFMLENBQVMsK0JBQVQsRUFBMEMsVUFBVUMsS0FBVixFQUFpQjtBQUN2RGxDLFFBQUFBLElBQUksQ0FBQ21DLG9CQUFMLENBQTBCRCxLQUExQjtBQUNILE9BRkQ7QUFJQWxDLE1BQUFBLElBQUksQ0FBQ2lDLEdBQUwsQ0FBUyxzQkFBVCxFQUFpQyxVQUFVQyxLQUFWLEVBQWlCO0FBQzlDbEMsUUFBQUEsSUFBSSxDQUFDb0MsV0FBTCxDQUFpQkYsS0FBakI7QUFDSCxPQUZEO0FBSUFsQyxNQUFBQSxJQUFJLENBQUNpQyxHQUFMLENBQVMsZUFBVCxFQUEwQixVQUFVclQsS0FBVixFQUFpQjtBQUN2Q29SLFFBQUFBLElBQUksQ0FBQzRFLGFBQUwsQ0FBbUJoVyxLQUFuQjtBQUNILE9BRkQ7QUFHSCxLQWxIdUM7QUFtSHhDaVUsSUFBQUEsT0FBTyxFQUFFO0FBQ0xULE1BQUFBLFdBQVcsRUFBRSxxQkFBVUYsS0FBVixFQUFpQjtBQUMxQixhQUFLekMsYUFBTCxHQUFxQnlDLEtBQXJCO0FBQ0gsT0FISTtBQUlMaUQsTUFBQUEsU0FBUyxFQUFFLG1CQUFVaEMsS0FBVixFQUFpQjtBQUN4QixZQUFJbkQsSUFBSSxHQUFHLElBQVg7O0FBQ0EsWUFBSUEsSUFBSSxDQUFDNEIsV0FBVCxFQUFzQjtBQUNsQjNaLFVBQUFBLENBQUMsQ0FBQyxXQUFELENBQUQsQ0FBZWdRLE1BQWYsR0FBd0JzRixRQUF4QixDQUFpQ3RWLENBQUMsQ0FBQ2lkLGdCQUFELENBQUQsQ0FBb0IxSixJQUFwQixDQUF5QixhQUF6QixDQUFqQztBQUNBdlQsVUFBQUEsQ0FBQyxDQUFDLFdBQUQsQ0FBRCxDQUFlbWQsSUFBZjtBQUNBLGNBQUkzQixLQUFLLEdBQUd4YixDQUFDLENBQUNpZCxnQkFBRCxDQUFELENBQW9CekIsS0FBcEIsRUFBWjtBQUNBeGIsVUFBQUEsQ0FBQyxDQUFDaWQsZ0JBQUQsQ0FBRCxDQUFvQjFKLElBQXBCLENBQXlCLHlCQUF6QixFQUFvRDlLLEdBQXBELENBQXdELE9BQXhELEVBQWlFSCxFQUFqRSxDQUFvRSxPQUFwRSxFQUE2RSxVQUFVMFMsQ0FBVixFQUFhO0FBQ3RGakQsWUFBQUEsSUFBSSxDQUFDNEUsYUFBTCxDQUFtQlMsUUFBUSxDQUFDQyxjQUE1QixFQURzRixDQUd0Rjs7QUFDQUQsWUFBQUEsUUFBUSxDQUFDQyxjQUFULEdBQTBCLEVBQTFCO0FBRUE3QixZQUFBQSxLQUFLLENBQUNBLEtBQU4sQ0FBWSxNQUFaO0FBQ0EsbUJBQU8sSUFBUDtBQUNILFdBUkQ7QUFTSDtBQUNKLE9BcEJJO0FBcUJMSCxNQUFBQSxrQkFBa0IsRUFBRSw0QkFBVUgsS0FBVixFQUFpQjtBQUNqQ2xiLFFBQUFBLENBQUMsQ0FBQyxLQUFLc2IsS0FBTCxDQUFXQyxjQUFaLENBQUQsQ0FBNkJDLEtBQTdCO0FBQ0EsYUFBSzVELGVBQUwsR0FBdUIsS0FBS0osYUFBTCxDQUFtQnFCLFNBQTFDO0FBQ0gsT0F4Qkk7QUF5Qkw0QyxNQUFBQSxvQkFBb0IsRUFBRSw4QkFBVVAsS0FBVixFQUFpQjtBQUNuQ2xiLFFBQUFBLENBQUMsQ0FBQyxLQUFLc2IsS0FBTCxDQUFXQyxjQUFaLENBQUQsQ0FBNkJDLEtBQTdCLENBQW1DLE1BQW5DO0FBQ0EsYUFBS2hFLGFBQUwsQ0FBbUJxQixTQUFuQixHQUErQixLQUFLakIsZUFBcEM7QUFDSCxPQTVCSTtBQTZCTDhELE1BQUFBLGVBQWUsRUFBRSx5QkFBVVIsS0FBVixFQUFpQjtBQUM5QmxiLFFBQUFBLENBQUMsQ0FBQyxLQUFLc2IsS0FBTCxDQUFXSyxjQUFaLENBQUQsQ0FBNkJILEtBQTdCLEdBRDhCLENBRTlCOztBQUNBLGFBQUtoRSxhQUFMLENBQW1Cc0IsTUFBbkIsR0FBNEI7QUFDMUJMLFVBQUFBLENBQUMsRUFBRSxLQUFLakIsYUFBTCxDQUFtQnNCLE1BQW5CLENBQTBCTCxDQURIO0FBRTFCZ0IsVUFBQUEsQ0FBQyxFQUFFLEtBQUtqQyxhQUFMLENBQW1Cc0IsTUFBbkIsQ0FBMEJXO0FBRkgsU0FBNUI7QUFJQSxhQUFLNUIsWUFBTCxHQUFvQixLQUFLTCxhQUFMLENBQW1Cc0IsTUFBdkM7QUFDSCxPQXJDSTtBQXNDTDhDLE1BQUFBLG9CQUFvQixFQUFFLDhCQUFVVixLQUFWLEVBQWlCO0FBQ25DbGIsUUFBQUEsQ0FBQyxDQUFDLEtBQUtzYixLQUFMLENBQVdLLGNBQVosQ0FBRCxDQUE2QkgsS0FBN0IsQ0FBbUMsTUFBbkM7QUFDQSxhQUFLaEUsYUFBTCxDQUFtQnNCLE1BQW5CLEdBQTRCLEtBQUtqQixZQUFqQztBQUNILE9BekNJO0FBMENMZ0UsTUFBQUEsV0FBVyxFQUFFLHFCQUFVWCxLQUFWLEVBQWlCO0FBQzFCLGFBQUsxRCxhQUFMLENBQW1Cc0IsTUFBbkIsR0FBNEI7QUFBRUwsVUFBQUEsQ0FBQyxFQUFFLEdBQUw7QUFBVWdCLFVBQUFBLENBQUMsRUFBRTtBQUFiLFNBQTVCO0FBQ0gsT0E1Q0k7QUE2Q0xxQyxNQUFBQSxZQUFZLEVBQUUsc0JBQVNaLEtBQVQsRUFBZ0I7QUFDMUIsWUFBSWEsS0FBSyxHQUFHLEtBQUtULEtBQUwsQ0FBV1UsV0FBdkI7QUFDQSxhQUFLeEUsYUFBTCxDQUFtQnNCLE1BQW5CLEdBQTRCO0FBQ3pCTCxVQUFBQSxDQUFDLEVBQUV5QyxLQUFLLENBQUNlLE9BQU4sR0FBZ0JGLEtBQUssQ0FBQ0csV0FEQTtBQUV6QnpDLFVBQUFBLENBQUMsRUFBRXlCLEtBQUssQ0FBQ2lCLE9BQU4sR0FBZ0JKLEtBQUssQ0FBQ0s7QUFGQSxTQUE1QjtBQUlILE9BbkRJO0FBb0RMQyxNQUFBQSxVQUFVLEVBQUUsc0JBQVk7QUFDcEIsWUFBSSxLQUFLZixLQUFMLENBQVdVLFdBQVgsSUFBMEIsS0FBS1YsS0FBTCxDQUFXZ0IsU0FBckMsSUFBa0QsS0FBSzlFLGFBQTNELEVBQTBFO0FBQ3RFO0FBQ0EsY0FBSStFLE1BQU0sR0FBRyxDQUFDLEtBQUtqQixLQUFMLENBQVdnQixTQUFYLENBQXFCSixXQUFyQixHQUFtQyxLQUFLWixLQUFMLENBQVdVLFdBQVgsQ0FBdUJFLFdBQTNELElBQTBFLENBQXZGO0FBQ0EsY0FBSU0sUUFBUSxHQUFJLEtBQUtoRixhQUFMLENBQW1Cc0IsTUFBbkIsQ0FBMEJMLENBQTFCLEdBQThCLEtBQUs2QyxLQUFMLENBQVdVLFdBQVgsQ0FBdUJFLFdBQXRELEdBQXFFSyxNQUFwRjtBQUNBLGNBQUllLFVBQVUsR0FBR3pWLElBQUksQ0FBQzZSLEtBQUwsQ0FBVyxLQUFLNEIsS0FBTCxDQUFXZ0IsU0FBWCxDQUFxQmlCLGFBQXJCLENBQW1DLG9CQUFuQyxFQUF5RHJCLFdBQXBFLENBQWpCOztBQUNBLGNBQUc1VyxNQUFNLENBQUNrWSxTQUFQLENBQWlCRixVQUFqQixDQUFILEVBQ0E7QUFDSWQsWUFBQUEsUUFBUSxHQUFHQSxRQUFRLEdBQUdjLFVBQVUsR0FBQyxDQUFqQztBQUNIOztBQUNELGlCQUFPZCxRQUFRLEdBQUcsSUFBbEI7QUFDSCxTQVZELE1BVU87QUFDSCxpQkFBTyxHQUFQO0FBQ0g7QUFDSixPQWxFSTtBQW1FTEMsTUFBQUEsU0FBUyxFQUFFLHFCQUFZO0FBQ25CLFlBQUksS0FBS25CLEtBQUwsQ0FBV1UsV0FBWCxJQUEwQixLQUFLeEUsYUFBbkMsRUFBa0Q7QUFDOUMsY0FBSWdGLFFBQVEsR0FBRyxLQUFLaEYsYUFBTCxDQUFtQnNCLE1BQW5CLENBQTBCVyxDQUExQixHQUE4QixLQUFLNkIsS0FBTCxDQUFXVSxXQUFYLENBQXVCSSxZQUFwRTtBQUNBLGlCQUFPSSxRQUFRLEdBQUcsSUFBbEI7QUFDSCxTQUhELE1BR087QUFDSCxpQkFBTyxHQUFQO0FBQ0g7QUFDSixPQTFFSTtBQTJFTEUsTUFBQUEsU0FBUyxFQUFFLG1CQUFVeEIsS0FBVixFQUFpQjtBQUN4QixZQUFJYSxLQUFLLEdBQUcsS0FBS1QsS0FBTCxDQUFXVSxXQUF2QjtBQUNBLGFBQUt4RSxhQUFMLENBQW1Cc0IsTUFBbkIsR0FBNEI7QUFDeEJMLFVBQUFBLENBQUMsRUFBRXlDLEtBQUssQ0FBQ2UsT0FBTixHQUFnQkYsS0FBSyxDQUFDRyxXQUREO0FBRXhCekMsVUFBQUEsQ0FBQyxFQUFFeUIsS0FBSyxDQUFDaUIsT0FBTixHQUFnQkosS0FBSyxDQUFDSztBQUZELFNBQTVCO0FBSUgsT0FqRkk7QUFrRkxPLE1BQUFBLGFBQWEsRUFBRSx1QkFBVWhXLEtBQVYsRUFBaUI7QUFDNUIsWUFBS0EsS0FBSyxDQUFDMkQsTUFBTixHQUFlLENBQWhCLElBQXVCcU0sYUFBYSxLQUFLLEtBQTdDLEVBQXFEO0FBQ2pEZ0UsVUFBQUEsS0FBSyxDQUFDM2EsQ0FBQyxDQUFDLHFCQUFELENBQUQsQ0FBeUJ5VixHQUF6QixFQUFELENBQUw7QUFDQTBCLFVBQUFBLGFBQWEsQ0FBQ0ksVUFBZCxDQUF5QjlRLElBQXpCLENBQThCRSxLQUFLLENBQUMsQ0FBRCxDQUFuQztBQUNBd1EsVUFBQUEsYUFBYSxDQUFDUSxXQUFkLEdBQTRCLElBQTVCO0FBQ0gsU0FKRCxNQUlPO0FBQ0hSLFVBQUFBLGFBQWEsQ0FBQ0ksVUFBZCxHQUEyQkosYUFBYSxDQUFDSSxVQUFkLENBQXlCekcsTUFBekIsQ0FBZ0NuSyxLQUFoQyxDQUEzQjtBQUNBd1EsVUFBQUEsYUFBYSxDQUFDUSxXQUFkLEdBQTRCLElBQTVCO0FBQ0g7QUFDSixPQTNGSTtBQTRGTHNELE1BQUFBLGNBQWMsRUFBRSx3QkFBVUMsS0FBVixFQUFpQjtBQUM3QixZQUFJLEtBQUsxRCxhQUFULEVBQXdCO0FBQ3BCLGNBQUkzUSxLQUFLLEdBQUcsS0FBSzBRLFVBQUwsSUFBbUIsS0FBS0EsVUFBTCxDQUFnQjZELE9BQWhCLENBQXdCLEtBQUs1RCxhQUE3QixDQUEvQjs7QUFDQSxjQUFJM1EsS0FBSyxHQUFHLENBQUMsQ0FBYixFQUFnQjtBQUNaLGlCQUFLMFEsVUFBTCxDQUFnQitCLE1BQWhCLENBQXVCelMsS0FBdkIsRUFBOEIsQ0FBOUI7QUFDSDtBQUNKLFNBTEQsTUFNSztBQUNEO0FBQ0EsY0FBSSxLQUFLMFEsVUFBTCxDQUFnQmpOLE1BQWhCLEtBQTJCLENBQS9CLEVBQWtDO0FBQzlCLGlCQUFLaU4sVUFBTCxDQUFnQitCLE1BQWhCLENBQXVCLENBQXZCLEVBQTBCLENBQTFCO0FBQ0g7QUFDSjs7QUFDRCxhQUFLOUIsYUFBTCxHQUFxQixJQUFyQjtBQUNILE9BMUdJO0FBMkdMMEMsTUFBQUEsb0JBQW9CLEVBQUUsOEJBQVVELEtBQVYsRUFBaUI7QUFDbkMsWUFBSWxDLElBQUksR0FBRyxJQUFYO0FBQ0FBLFFBQUFBLElBQUksQ0FBQ1AsYUFBTCxHQUFxQnlDLEtBQXJCLENBRm1DLENBR25DOztBQUNBMUUsUUFBQUEsVUFBVSxDQUFDLFlBQVk7QUFDbkJ3QyxVQUFBQSxJQUFJLENBQUNrRCxjQUFMO0FBQ0gsU0FGUyxFQUVQLEdBRk8sQ0FBVjtBQUdIO0FBbEhJLEtBbkgrQjtBQXVPeEMyQixJQUFBQSxLQUFLLEVBQUU7QUFDSHJGLE1BQUFBLFVBQVUsRUFBRTtBQUNSc0YsUUFBQUEsSUFBSSxFQUFFLElBREU7QUFFUkMsUUFBQUEsT0FGUSxxQkFFRztBQUNQO0FBQ0F2SCxVQUFBQSxVQUFVLENBQUMsWUFBWTtBQUFFdlYsWUFBQUEsQ0FBQyxDQUFDbUMsUUFBRCxDQUFELENBQVk4TixPQUFaLENBQW9CLHVCQUFwQjtBQUErQyxXQUE5RCxFQUFnRSxHQUFoRSxDQUFWO0FBQ0g7QUFMTyxPQURUO0FBUUgrSCxNQUFBQSxZQUFZLEVBQUUsc0JBQVU4QixRQUFWLEVBQW9CO0FBQzlCNUIsUUFBQUEsWUFBWSxDQUFDNkUsT0FBYixDQUFxQixpQkFBckIsRUFBd0NySSxJQUFJLENBQUM2RCxTQUFMLENBQWV1QixRQUFmLENBQXhDO0FBQ0g7QUFWRTtBQXZPaUMsR0FBUixDQUFwQztBQW9QSDtBQzdQRDtBQUNBLElBQUkxQyxjQUFjLEdBQUcsRUFBckI7QUNEQTtBQUNBO0FBQ0FDLEdBQUcsQ0FBQ29HLFNBQUosQ0FBYywyQkFBZCxFQUEyQztBQUN2Q0MsRUFBQUEsUUFBUSxFQUFFO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQTdDMkM7QUE4Q3ZDblosRUFBQUEsSUFBSSxFQUFFLGdCQUFZO0FBQ2QsV0FBTztBQUNIb1osTUFBQUEsQ0FBQyxFQUFFO0FBREEsS0FBUDtBQUdILEdBbERzQztBQW1EdkNDLEVBQUFBLEtBQUssRUFBRTtBQUNIckcsSUFBQUEsVUFBVSxFQUFFbEcsS0FEVDtBQUVIbUcsSUFBQUEsYUFBYSxFQUFFalEsTUFGWjtBQUdIc1MsSUFBQUEsU0FBUyxFQUFFdlUsTUFIUjtBQUlIb1MsSUFBQUEsUUFBUSxFQUFFN087QUFKUCxHQW5EZ0M7QUF5RHZDaVAsRUFBQUEsT0FBTyxFQUFFLG1CQUFZO0FBRWpCLFFBQUlDLElBQUksR0FBRyxJQUFYLENBRmlCLENBSWpCOztBQUNBQSxJQUFBQSxJQUFJLENBQUM0RixDQUFMLENBQU9FLGFBQVAsR0FBdUI3ZCxDQUFDLENBQUMsb0JBQUQsQ0FBRCxDQUF3QnlWLEdBQXhCLEVBQXZCO0FBQ0FzQyxJQUFBQSxJQUFJLENBQUM0RixDQUFMLENBQU9HLGNBQVAsR0FBd0I5ZCxDQUFDLENBQUMsb0JBQUQsQ0FBRCxDQUF3QnlWLEdBQXhCLEVBQXhCO0FBQ0FzQyxJQUFBQSxJQUFJLENBQUM0RixDQUFMLENBQU9JLFFBQVAsR0FBa0IvZCxDQUFDLENBQUMsY0FBRCxDQUFELENBQWtCeVYsR0FBbEIsRUFBbEI7QUFDSCxHQWpFc0M7QUFrRXZDbUYsRUFBQUEsT0FBTyxFQUFFO0FBQ0xWLElBQUFBLG9CQUFvQixFQUFFLDhCQUFVRCxLQUFWLEVBQWlCO0FBQ25DLFdBQUsrRCxPQUFMLENBQWFDLEtBQWIsQ0FBbUIsK0JBQW5CLEVBQW9EaEUsS0FBcEQ7QUFDSCxLQUhJO0FBSUxFLElBQUFBLFdBQVcsRUFBRSxxQkFBVUYsS0FBVixFQUFpQjtBQUMxQixXQUFLK0QsT0FBTCxDQUFhQyxLQUFiLENBQW1CLHNCQUFuQixFQUEyQ2hFLEtBQTNDO0FBQ0gsS0FOSTtBQU9MaUUsSUFBQUEsYUFBYSxFQUFFLHVCQUFVclUsR0FBVixFQUFlZ1EsU0FBZixFQUEwQjtBQUNyQyxhQUFPaFEsR0FBRyxJQUFJQSxHQUFHLENBQUN1UixPQUFKLENBQVksR0FBWixLQUFvQixDQUFDLENBQXJCLEdBQXlCLEdBQXpCLEdBQStCLEdBQW5DLENBQUgsR0FBNkMsUUFBN0MsR0FBd0R2QixTQUF4RCxHQUFvRSxVQUFwRSxHQUFpRkEsU0FBeEY7QUFDSDtBQVRJO0FBbEU4QixDQUEzQzs7Ozs7OztBQ0ZBLElBQUlsQyxXQUFKO0FBQ0EsSUFBSXlGLFFBQUo7QUFFQSxJQUFJZSxHQUFHLEdBQUcsSUFBSTlHLEdBQUosRUFBVjs7QUFFQSxTQUFTK0csMEJBQVQsQ0FBb0NDLHVCQUFwQyxFQUE2REMsbUJBQTdELEVBQWtGQyxRQUFsRixFQUE0RjtBQUV4RixNQUFJNUcsV0FBSixFQUFpQjtBQUNiO0FBQ0g7O0FBRURBLEVBQUFBLFdBQVcsR0FBRyxJQUFkOztBQUVBLE1BQUksQ0FBQzJHLG1CQUFMLEVBQTBCO0FBQ3RCL0UsSUFBQUEsT0FBTyxDQUFDbE8sS0FBUixDQUFjLDZDQUFkO0FBQ0g7O0FBRURyTCxFQUFBQSxDQUFDLENBQUNzTixJQUFGLENBQU87QUFDSHpELElBQUFBLEdBQUcsRUFBRXlVLG1CQURGO0FBRUhsRixJQUFBQSxNQUFNLEVBQUUsS0FGTDtBQUdIaE8sSUFBQUEsT0FBTyxFQUFFLGlCQUFVb1QsT0FBVixFQUFtQjtBQUN4QnhlLE1BQUFBLENBQUMsQ0FBQyxhQUFELENBQUQsQ0FBaUJ5SixNQUFqQixDQUF3QitVLE9BQXhCO0FBRUF4ZSxNQUFBQSxDQUFDLENBQUNtQyxRQUFELENBQUQsQ0FBWThOLE9BQVosQ0FBb0Isd0JBQXBCO0FBRUEsVUFBSXdPLEtBQUksR0FBRztBQUNQalksUUFBQUEsSUFBSSxFQUFHeEcsQ0FBQyxDQUFDLGlCQUFELENBQUQsQ0FBcUIrVixJQUFyQixFQURBO0FBRVB6RixRQUFBQSxJQUFJLEVBQUUsRUFGQztBQUdQb08sUUFBQUEsTUFBTSxFQUFFLEVBSEQ7QUFJUHhOLFFBQUFBLFdBQVcsRUFBRTtBQUpOLE9BQVg7QUFPQWtNLE1BQUFBLFFBQVEsR0FBRyxJQUFJL0YsR0FBSixDQUFRO0FBQ2ZsSCxRQUFBQSxFQUFFLEVBQUUsV0FEVztBQUVmNUwsUUFBQUEsSUFBSSxFQUFFO0FBQ0ZvYSxVQUFBQSxjQUFjLEVBQUUsRUFEZDtBQUVGcEgsVUFBQUEsVUFBVSxFQUFFLEVBRlY7QUFHRjhGLFVBQUFBLGNBQWMsRUFBRSxFQUhkO0FBSUZ1QixVQUFBQSxNQUFNLEVBQUUsRUFKTjtBQUtGQyxVQUFBQSxpQkFBaUIsRUFBRSxJQUFJQyxLQUFKLEVBTGpCO0FBTUZySCxVQUFBQSxXQUFXLEVBQUUsS0FOWDtBQU9Gc0gsVUFBQUEsUUFBUSxFQUFFLEtBUFI7QUFRRkMsVUFBQUEsV0FBVyxFQUFFLEVBUlg7QUFTRkMsVUFBQUEsTUFBTSxFQUFFLEVBVE47QUFVRkMsVUFBQUEsT0FBTyxFQUFFLElBVlA7QUFXRkMsVUFBQUEsV0FBVyxFQUFFO0FBWFgsU0FGUztBQWVmckgsUUFBQUEsT0FBTyxFQUFFLG1CQUFZO0FBQ2pCLGNBQUlDLElBQUksR0FBRyxJQUFYO0FBRUFBLFVBQUFBLElBQUksQ0FBQzhHLGlCQUFMLENBQXVCTyxHQUF2QixHQUE2QixDQUFDYixRQUFRLElBQUksRUFBYixJQUFtQiw4Q0FBaEQ7QUFFQUosVUFBQUEsR0FBRyxDQUFDbkUsR0FBSixDQUFRLGdCQUFSLEVBQTBCLFVBQVUwRSxNQUFWLEVBQWtCO0FBQ3hDM0csWUFBQUEsSUFBSSxDQUFDNEcsY0FBTCxHQUFzQkQsTUFBdEI7QUFDSCxXQUZEO0FBSUFQLFVBQUFBLEdBQUcsQ0FBQ25FLEdBQUosQ0FBUSxlQUFSLEVBQXlCLFlBQVk7QUFDakNqQyxZQUFBQSxJQUFJLENBQUNzSCxVQUFMO0FBQ0gsV0FGRDtBQUlBbEIsVUFBQUEsR0FBRyxDQUFDbkUsR0FBSixDQUFRLGFBQVIsRUFBdUIsVUFBVTBFLE1BQVYsRUFBa0I7QUFDckMzRyxZQUFBQSxJQUFJLENBQUM0RyxjQUFMLEdBQXNCRCxNQUF0QjtBQUNBQSxZQUFBQSxNQUFNLENBQUNZLFFBQVAsR0FBa0IsSUFBbEI7QUFDSCxXQUhEO0FBS0FuQixVQUFBQSxHQUFHLENBQUNuRSxHQUFKLENBQVEsZ0JBQVIsRUFBMEIsVUFBVXVGLFNBQVYsRUFBcUI7QUFDM0N4SCxZQUFBQSxJQUFJLENBQUN5SCxVQUFMLENBQWdCekgsSUFBSSxDQUFDNEcsY0FBckI7O0FBQ0EsZ0JBQUlZLFNBQUosRUFBZTtBQUNYeEgsY0FBQUEsSUFBSSxDQUFDNkcsTUFBTCxDQUFZblksSUFBWixDQUFpQjhZLFNBQWpCO0FBQ0g7QUFDSixXQUxEO0FBT0FwQixVQUFBQSxHQUFHLENBQUNuRSxHQUFKLENBQVEsY0FBUixFQUF3QixVQUFVeUYsT0FBVixFQUFtQkMsT0FBbkIsRUFBNEJDLE9BQTVCLEVBQXFDO0FBQ3pELGdCQUFJMUYsS0FBSyxHQUFHbEMsSUFBSSxDQUFDUixVQUFMLENBQWdCcUksTUFBaEIsQ0FBdUIsVUFBVWxPLElBQVYsRUFBZ0I7QUFDL0MscUJBQU9BLElBQUksQ0FBQ2dILFNBQUwsS0FBbUJpSCxPQUExQjtBQUNILGFBRlcsRUFFVCxDQUZTLENBQVo7QUFJQTFGLFlBQUFBLEtBQUssQ0FBQ3ZCLFNBQU4sR0FBa0JnSCxPQUFsQjtBQUNBekYsWUFBQUEsS0FBSyxDQUFDelQsSUFBTixHQUFhaVosT0FBYjtBQUNILFdBUEQ7QUFTQXRCLFVBQUFBLEdBQUcsQ0FBQ25FLEdBQUosQ0FBUSx1QkFBUixFQUFpQyxVQUFVQyxLQUFWLEVBQWlCO0FBQzlDbEMsWUFBQUEsSUFBSSxDQUFDOEgsWUFBTDtBQUNILFdBRkQ7QUFJQTFCLFVBQUFBLEdBQUcsQ0FBQ25FLEdBQUosQ0FBUSx1QkFBUixFQUFpQyxVQUFVQyxLQUFWLEVBQWlCO0FBQzlDbEMsWUFBQUEsSUFBSSxDQUFDK0gsWUFBTDtBQUNILFdBRkQsRUF0Q2lCLENBMENqQjs7QUFDQTNCLFVBQUFBLEdBQUcsQ0FBQ25FLEdBQUosQ0FBUSxxQkFBUixFQUErQixVQUFVK0YsT0FBVixFQUFtQjtBQUM5Q2hJLFlBQUFBLElBQUksQ0FBQ2lJLFVBQUwsQ0FBZ0JELE9BQWhCO0FBQ0gsV0FGRDtBQUlBNUIsVUFBQUEsR0FBRyxDQUFDbkUsR0FBSixDQUFRLHNCQUFSLEVBQWdDLFVBQVVDLEtBQVYsRUFBaUI7QUFDN0NsQyxZQUFBQSxJQUFJLENBQUNrSSxzQkFBTCxDQUE0QmhHLEtBQTVCO0FBQ0gsV0FGRDtBQUlBa0UsVUFBQUEsR0FBRyxDQUFDbkUsR0FBSixDQUFRLHNCQUFSLEVBQWdDLFVBQVVDLEtBQVYsRUFBaUI7QUFDN0NsQyxZQUFBQSxJQUFJLENBQUNtSSxXQUFMLENBQWlCakcsS0FBakI7QUFDSCxXQUZEO0FBSUFrRSxVQUFBQSxHQUFHLENBQUNuRSxHQUFKLENBQVEsc0JBQVIsRUFBZ0MsVUFBVUMsS0FBVixFQUFpQjtBQUM3Q2xDLFlBQUFBLElBQUksQ0FBQ29JLGVBQUwsQ0FBcUJsRyxLQUFyQjtBQUNILFdBRkQ7QUFJQWtFLFVBQUFBLEdBQUcsQ0FBQ25FLEdBQUosQ0FBUSx5QkFBUixFQUFtQyxVQUFVQyxLQUFWLEVBQWlCM1ksQ0FBakIsRUFBb0I7QUFDbkR5VyxZQUFBQSxJQUFJLENBQUNxSSxlQUFMLENBQXFCbkcsS0FBckIsRUFBNEIzWSxDQUE1QjtBQUNILFdBRkQsRUEzRGlCLENBZ0VqQjs7QUFDQTZjLFVBQUFBLEdBQUcsQ0FBQ25FLEdBQUosQ0FBUSxZQUFSLEVBQXNCLFVBQVVtRixXQUFWLEVBQXVCO0FBQ3pDcEgsWUFBQUEsSUFBSSxDQUFDb0gsV0FBTCxHQUFtQkEsV0FBbkI7QUFDQXBILFlBQUFBLElBQUksQ0FBQ3NGLGNBQUwsR0FBc0IsRUFBdEI7QUFDSCxXQUhEOztBQUtBLGNBQUksQ0FBQ25GLFlBQVksQ0FBQ0MsT0FBYixDQUFxQix1QkFBckIsQ0FBTCxFQUFvRDtBQUNoREosWUFBQUEsSUFBSSxDQUFDNEcsY0FBTCxHQUFzQkYsS0FBdEI7QUFDQTtBQUNIOztBQUVEMUcsVUFBQUEsSUFBSSxDQUFDQyxZQUFMLEdBQW9CdEQsSUFBSSxDQUFDdUQsS0FBTCxDQUFXQyxZQUFZLENBQUNDLE9BQWIsQ0FBcUIsdUJBQXJCLENBQVgsQ0FBcEI7QUFDSCxTQTNGYztBQTRGZkMsUUFBQUEsUUFBUSxFQUFFO0FBQ05pSSxVQUFBQSxNQUFNLEVBQUUsa0JBQVk7QUFDaEIsbUJBQU8sS0FBSzFCLGNBQUwsSUFBdUJGLEtBQTlCO0FBQ0gsV0FISztBQUlONkIsVUFBQUEsT0FBTyxFQUFFLG1CQUFZO0FBQ2pCLGdCQUFJQyxDQUFDLEdBQUcsRUFBUjtBQUNBQyxZQUFBQSxZQUFZLEdBQUcsS0FBSzdCLGNBQXBCOztBQUNBLG1CQUFPNkIsWUFBWSxJQUFJQSxZQUFZLENBQUNsUSxJQUFiLElBQXFCLEVBQTVDLEVBQWdEO0FBQzVDaVEsY0FBQUEsQ0FBQyxDQUFDRSxPQUFGLENBQVVELFlBQVY7QUFDQUEsY0FBQUEsWUFBWSxHQUFHQSxZQUFZLENBQUNFLE1BQTVCO0FBQ0g7O0FBQ0QsbUJBQU9ILENBQVA7QUFDSCxXQVpLO0FBYU45QixVQUFBQSxJQUFJLEVBQUUsZ0JBQVk7QUFDZCxtQkFBT0EsS0FBUDtBQUNILFdBZks7QUFnQk5rQyxVQUFBQSxrQkFBa0IsRUFBRSw4QkFBWTtBQUM1QixnQkFBSTVJLElBQUksR0FBRyxJQUFYO0FBRUFBLFlBQUFBLElBQUksQ0FBQ3NGLGNBQUwsR0FBc0IsRUFBdEI7QUFFQSxnQkFBSXVELFFBQVEsR0FBRzdJLElBQUksQ0FBQ1IsVUFBTCxDQUFnQnFJLE1BQWhCLENBQXVCLFVBQVVsTyxJQUFWLEVBQWdCO0FBQ2xELHFCQUFPQSxJQUFJLENBQUNsTCxJQUFMLENBQVV3TixXQUFWLEdBQXdCb0gsT0FBeEIsQ0FBZ0NyRCxJQUFJLENBQUNpSCxXQUFMLENBQWlCaEwsV0FBakIsRUFBaEMsSUFBa0UsQ0FBRSxDQUEzRTtBQUNILGFBRmMsQ0FBZjs7QUFJQSxvQkFBUStELElBQUksQ0FBQ2tILE1BQWI7QUFDSSxtQkFBSyxNQUFMO0FBQ0kyQixnQkFBQUEsUUFBUSxDQUFDQyxJQUFULENBQWMsVUFBVUMsQ0FBVixFQUFhQyxDQUFiLEVBQWdCO0FBQzFCLHlCQUFPaEosSUFBSSxDQUFDbUgsT0FBTCxHQUFlNEIsQ0FBQyxDQUFDL1osSUFBRixHQUFTZ2EsQ0FBQyxDQUFDaGEsSUFBMUIsR0FBaUNnYSxDQUFDLENBQUNoYSxJQUFGLEdBQVMrWixDQUFDLENBQUMvWixJQUFuRDtBQUNILGlCQUZEO0FBR0E7O0FBQ0osbUJBQUssTUFBTDtBQUNJNlosZ0JBQUFBLFFBQVEsQ0FBQ0MsSUFBVCxDQUFjLFVBQVVDLENBQVYsRUFBYUMsQ0FBYixFQUFnQjtBQUMxQix5QkFBT2hKLElBQUksQ0FBQ21ILE9BQUwsR0FBZTRCLENBQUMsQ0FBQzVILElBQUYsQ0FBT2xGLFdBQVAsR0FBcUJnTixhQUFyQixDQUFtQ0QsQ0FBQyxDQUFDN0gsSUFBRixDQUFPbEYsV0FBUCxFQUFuQyxDQUFmLEdBQTBFK00sQ0FBQyxDQUFDN0gsSUFBRixDQUFPbEYsV0FBUCxHQUFxQmdOLGFBQXJCLENBQW1DRixDQUFDLENBQUM1SCxJQUFGLENBQU9sRixXQUFQLEVBQW5DLENBQWpGO0FBQ0gsaUJBRkQ7QUFHQTs7QUFDSixtQkFBSyxZQUFMO0FBQ0k0TSxnQkFBQUEsUUFBUSxDQUFDQyxJQUFULENBQWMsVUFBVUMsQ0FBVixFQUFhQyxDQUFiLEVBQWdCO0FBQzFCLHlCQUFPaEosSUFBSSxDQUFDbUgsT0FBTCxHQUFlNEIsQ0FBQyxDQUFDRyxVQUFGLEdBQWVGLENBQUMsQ0FBQ0UsVUFBaEMsR0FBNkNGLENBQUMsQ0FBQ0UsVUFBRixHQUFlSCxDQUFDLENBQUNHLFVBQXJFO0FBQ0gsaUJBRkQ7QUFHQTs7QUFDSjtBQUNJTCxnQkFBQUEsUUFBUSxDQUFDQyxJQUFULENBQWMsVUFBVUMsQ0FBVixFQUFhQyxDQUFiLEVBQWdCO0FBQzFCLHlCQUFPaEosSUFBSSxDQUFDbUgsT0FBTCxHQUFlNEIsQ0FBQyxDQUFDdGEsSUFBRixDQUFPd04sV0FBUCxHQUFxQmdOLGFBQXJCLENBQW1DRCxDQUFDLENBQUN2YSxJQUFGLENBQU93TixXQUFQLEVBQW5DLENBQWYsR0FBMEUrTSxDQUFDLENBQUN2YSxJQUFGLENBQU93TixXQUFQLEdBQXFCZ04sYUFBckIsQ0FBbUNGLENBQUMsQ0FBQ3RhLElBQUYsQ0FBT3dOLFdBQVAsRUFBbkMsQ0FBakY7QUFDSCxpQkFGRDtBQWpCUjs7QUFzQkEsbUJBQU80TSxRQUFQO0FBQ0gsV0FoREs7QUFpRE5NLFVBQUFBLFdBQVcsRUFBRSx1QkFBWTtBQUNyQixnQkFBSTNULE1BQU0sR0FBRyxDQUFiO0FBQ0FBLFlBQUFBLE1BQU0sR0FBRyxLQUFLZ0ssVUFBTCxDQUFnQmpOLE1BQWhCLEdBQXlCLEtBQUtxVyxrQkFBTCxDQUF3QnJXLE1BQTFEO0FBQ0EsbUJBQU9pRCxNQUFQO0FBQ0gsV0FyREs7QUFzRE5zTSxVQUFBQSxTQUFTLEVBQUUscUJBQVk7QUFDbkIsbUJBQU8sS0FBS3BDLFdBQUwsR0FBbUIsR0FBbkIsR0FBeUIsR0FBaEM7QUFDSCxXQXhESztBQXlETk8sVUFBQUEsWUFBWSxFQUFFO0FBQ1ZWLFlBQUFBLEdBQUcsRUFBRSxlQUFZO0FBQ2IscUJBQU87QUFDSEcsZ0JBQUFBLFdBQVcsRUFBRSxLQUFLQSxXQURmO0FBRUhrSCxnQkFBQUEsY0FBYyxFQUFFLEtBQUtBLGNBRmxCO0FBR0hJLGdCQUFBQSxRQUFRLEVBQUUsS0FBS0E7QUFIWixlQUFQO0FBS0gsYUFQUztBQVFWaEcsWUFBQUEsR0FBRyxFQUFFLGFBQVVlLFFBQVYsRUFBb0I7QUFDckIsa0JBQUksQ0FBQ0EsUUFBTCxFQUFlO0FBQ1g7QUFDSDs7QUFFRCxtQkFBS3JDLFdBQUwsR0FBbUJxQyxRQUFRLENBQUNyQyxXQUE1QjtBQUNBLG1CQUFLa0gsY0FBTCxHQUFzQjdFLFFBQVEsQ0FBQzZFLGNBQS9CO0FBQ0EsbUJBQUtJLFFBQUwsR0FBZ0JqRixRQUFRLENBQUNpRixRQUF6QjtBQUNIO0FBaEJTO0FBekRSLFNBNUZLO0FBd0tmbkMsUUFBQUEsS0FBSyxFQUFFO0FBQ0g1RSxVQUFBQSxZQUFZLEVBQUUsc0JBQVU4QixRQUFWLEVBQW9CO0FBQzlCNUIsWUFBQUEsWUFBWSxDQUFDNkUsT0FBYixDQUFxQix1QkFBckIsRUFBOENySSxJQUFJLENBQUM2RCxTQUFMLENBQWV1QixRQUFmLENBQTlDO0FBQ0gsV0FIRTtBQUlINkUsVUFBQUEsY0FBYyxFQUFFLHdCQUFVd0MsU0FBVixFQUFxQjtBQUNqQyxpQkFBS25DLFdBQUwsR0FBbUIsRUFBbkI7QUFDQSxpQkFBS0wsY0FBTCxHQUFzQndDLFNBQXRCO0FBQ0EsaUJBQUszQixVQUFMLENBQWdCMkIsU0FBaEI7QUFDSDtBQVJFLFNBeEtRO0FBbUxmcEgsUUFBQUEsT0FBTyxFQUFFLG1CQUFZO0FBQ2pCLGVBQUt1QixLQUFMLENBQVc4RixVQUFYLENBQXNCQyxNQUF0QjtBQUNILFNBckxjO0FBc0xmekcsUUFBQUEsT0FBTyxFQUFFO0FBQ0wwRyxVQUFBQSxTQUFTLEVBQUUscUJBQVk7QUFDbkIsbUJBQU8sS0FBSzNDLGNBQUwsR0FBc0IzZSxDQUFDLENBQUMsY0FBRCxDQUFELENBQWtCeVYsR0FBbEIsS0FBMEIsUUFBMUIsR0FBcUMwRCxrQkFBa0IsQ0FBQyxLQUFLd0YsY0FBTCxDQUFvQnJPLElBQXJCLENBQTdFLEdBQTBHLElBQWpIO0FBQ0gsV0FISTtBQUlMK08sVUFBQUEsVUFBVSxFQUFFLHNCQUFZO0FBQ3BCLGlCQUFLVixjQUFMLEdBQXNCLEtBQUtGLElBQTNCO0FBQ0gsV0FOSTtBQU9MZSxVQUFBQSxVQUFVLEVBQUUsb0JBQVVkLE1BQVYsRUFBa0I7QUFDMUIsaUJBQUtFLE1BQUwsR0FBYyxFQUFkO0FBQ0EsaUJBQUt2QixjQUFMLEdBQXNCLEVBQXRCO0FBQ0EsZ0JBQUl0RixJQUFJLEdBQUcsSUFBWDtBQUNBL1gsWUFBQUEsQ0FBQyxDQUFDc04sSUFBRixDQUFPO0FBQ0h6RCxjQUFBQSxHQUFHLEVBQUU3SixDQUFDLENBQUMsbUJBQUQsQ0FBRCxDQUF1QnlWLEdBQXZCLEtBQStCLFFBQS9CLEdBQTBDMEQsa0JBQWtCLENBQUN1RixNQUFNLENBQUNwTyxJQUFSLENBRDlEO0FBRUg4SSxjQUFBQSxNQUFNLEVBQUUsS0FGTDtBQUdIaE8sY0FBQUEsT0FBTyxFQUFFLGlCQUFVN0csSUFBVixFQUFnQjtBQUNyQkEsZ0JBQUFBLElBQUksQ0FBQ2lVLE9BQUwsQ0FBYSxVQUFVOUcsSUFBVixFQUFnQjtBQUN6QkEsa0JBQUFBLElBQUksQ0FBQzZQLElBQUwsR0FBWSxLQUFaO0FBQ0gsaUJBRkQ7QUFHQXhKLGdCQUFBQSxJQUFJLENBQUNSLFVBQUwsR0FBa0JoVCxJQUFsQjtBQUNBd1QsZ0JBQUFBLElBQUksQ0FBQ3NGLGNBQUwsR0FBc0IsRUFBdEI7QUFDQXRGLGdCQUFBQSxJQUFJLENBQUNrSCxNQUFMLEdBQWMsRUFBZDtBQUNBbEgsZ0JBQUFBLElBQUksQ0FBQ21ILE9BQUwsR0FBZSxJQUFmO0FBQ0gsZUFYRTtBQVlIN1QsY0FBQUEsS0FBSyxFQUFFLGVBQVVBLE1BQVYsRUFBaUI7QUFDcEJrTyxnQkFBQUEsT0FBTyxDQUFDQyxHQUFSLENBQVksMEJBQTBCa0YsTUFBTSxDQUFDcE8sSUFBN0M7QUFDQXlILGdCQUFBQSxJQUFJLENBQUNzSCxVQUFMO0FBQ0g7QUFmRSxhQUFQO0FBaUJILFdBNUJJO0FBNkJMbUMsVUFBQUEsU0FBUyxFQUFFLHFCQUFZO0FBQ25CLGlCQUFLbkUsY0FBTCxHQUFzQixFQUF0Qjs7QUFDQSxpQkFBSyxJQUFJaFQsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBRyxLQUFLc1csa0JBQUwsQ0FBd0JyVyxNQUE1QyxFQUFvREQsQ0FBQyxFQUFyRCxFQUF5RDtBQUNyRCxtQkFBS2dULGNBQUwsQ0FBb0I1VyxJQUFwQixDQUF5QixLQUFLa2Esa0JBQUwsQ0FBd0J0VyxDQUF4QixDQUF6QjtBQUNIO0FBQ0osV0FsQ0k7QUFtQ0xvWCxVQUFBQSxXQUFXLEVBQUUsdUJBQVk7QUFDckIsaUJBQUtwRSxjQUFMLEdBQXNCLEVBQXRCO0FBQ0gsV0FyQ0k7QUFzQ0xxRSxVQUFBQSxlQUFlLEVBQUUsMkJBQVk7QUFDekIsZ0JBQUlDLElBQUksR0FBRyxFQUFYOztBQUNBLGlCQUFLLElBQUl0WCxDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHLEtBQUtzVyxrQkFBTCxDQUF3QnJXLE1BQTVDLEVBQW9ERCxDQUFDLEVBQXJELEVBQXlEO0FBQ3JELGtCQUFJLEtBQUt1WCxlQUFMLENBQXFCLEtBQUtqQixrQkFBTCxDQUF3QnRXLENBQXhCLENBQXJCLEtBQW9ELEtBQXhELEVBQStEO0FBQzNEc1gsZ0JBQUFBLElBQUksQ0FBQ2xiLElBQUwsQ0FBVSxLQUFLa2Esa0JBQUwsQ0FBd0J0VyxDQUF4QixDQUFWO0FBQ0g7QUFDSjs7QUFDRCxpQkFBS2dULGNBQUwsR0FBc0JzRSxJQUF0QjtBQUNILFdBOUNJO0FBK0NMMUIsVUFBQUEsc0JBQXNCLEVBQUUsZ0NBQVVoRyxLQUFWLEVBQWlCO0FBQ3JDLGdCQUFJLEtBQUsySCxlQUFMLENBQXFCM0gsS0FBckIsS0FBK0IsSUFBbkMsRUFBeUM7QUFDckMsbUJBQUtvRCxjQUFMLENBQW9CL0QsTUFBcEIsQ0FBMkIsS0FBSytELGNBQUwsQ0FBb0JqQyxPQUFwQixDQUE0Qm5CLEtBQTVCLENBQTNCLEVBQStELENBQS9EO0FBQ0gsYUFGRCxNQUVPO0FBQ0gsbUJBQUtvRCxjQUFMLENBQW9CNVcsSUFBcEIsQ0FBeUJ3VCxLQUF6QjtBQUNIO0FBQ0osV0FyREk7QUFzREwySCxVQUFBQSxlQUFlLEVBQUUseUJBQVUzSCxLQUFWLEVBQWlCO0FBQzlCLGdCQUFJMU0sTUFBTSxHQUFHLEtBQUs4UCxjQUFMLENBQW9Cd0UsSUFBcEIsQ0FBeUIsVUFBVXhTLE9BQVYsRUFBbUJ4SSxLQUFuQixFQUEwQmliLEtBQTFCLEVBQWlDO0FBQ25FLHFCQUFPelMsT0FBTyxDQUFDeEYsR0FBUixDQUFZbUssV0FBWixPQUE4QmlHLEtBQUssQ0FBQ3BRLEdBQU4sQ0FBVW1LLFdBQVYsRUFBckM7QUFDSCxhQUZZLENBQWI7QUFHQSxtQkFBT3pHLE1BQVA7QUFDSCxXQTNESTtBQTRETHVTLFVBQUFBLFlBQVksRUFBRSx3QkFBWTtBQUN0QixnQkFBSXBCLE1BQU0sR0FBRyxLQUFLQyxjQUFsQjtBQUNBLGdCQUFJNUcsSUFBSSxHQUFHLElBQVgsQ0FGc0IsQ0FHdEI7O0FBQ0EsZ0JBQUkyRyxNQUFNLElBQUksS0FBS0QsSUFBTCxDQUFVc0QsS0FBeEIsRUFBK0I7QUFDM0I7QUFDSDs7QUFFREMsWUFBQUEsYUFBYSxpQ0FBS2hpQixDQUFDLENBQUMsZUFBRCxDQUFELENBQW1CdUUsSUFBbkIsRUFBTDtBQUFnQzBkLGNBQUFBLFFBQVEsRUFBRSxrQkFBVUMsSUFBVixFQUFnQjtBQUNuRSxvQkFBSUEsSUFBSixFQUFVO0FBQ05saUIsa0JBQUFBLENBQUMsQ0FBQ3NOLElBQUYsQ0FBTztBQUNIekQsb0JBQUFBLEdBQUcsRUFBRTdKLENBQUMsQ0FBQyxrQkFBRCxDQUFELENBQXNCeVYsR0FBdEIsS0FBOEIsUUFBOUIsR0FBeUMwRCxrQkFBa0IsQ0FBQ3VGLE1BQU0sQ0FBQ3BPLElBQVIsQ0FEN0Q7QUFFSDhJLG9CQUFBQSxNQUFNLEVBQUUsTUFGTDtBQUdIN1Usb0JBQUFBLElBQUksRUFBRTtBQUNGNGQsc0JBQUFBLDBCQUEwQixFQUFFbmlCLENBQUMsQ0FBQywwQ0FBRCxDQUFELENBQThDeVYsR0FBOUM7QUFEMUIscUJBSEg7QUFNSHJLLG9CQUFBQSxPQUFPLEVBQUUsaUJBQVU3RyxJQUFWLEVBQWdCO0FBQ3JCNFosc0JBQUFBLEdBQUcsQ0FBQ0YsS0FBSixDQUFVLGNBQVYsRUFBMEJTLE1BQTFCO0FBQ0gscUJBUkU7QUFTSHJULG9CQUFBQSxLQUFLLEVBQUUsZUFBVUEsT0FBVixFQUFpQjtBQUNwQmtPLHNCQUFBQSxPQUFPLENBQUNsTyxLQUFSLENBQWNBLE9BQUssQ0FBQytXLFlBQXBCO0FBQ0g7QUFYRSxtQkFBUDtBQWFIO0FBQ0o7QUFoQlksZUFBYjtBQWlCSCxXQXJGSTtBQXNGTHZDLFVBQUFBLFlBQVksRUFBRSx3QkFBWTtBQUN0QjdmLFlBQUFBLENBQUMsQ0FBQywyQkFBRCxDQUFELENBQStCcWlCLEtBQS9CO0FBQ0FyaUIsWUFBQUEsQ0FBQyxDQUFDLG9CQUFELENBQUQsQ0FBd0J3YixLQUF4QixDQUE4QixNQUE5QjtBQUNBeGIsWUFBQUEsQ0FBQyxDQUFDLHNDQUFELENBQUQsQ0FBMEN5VixHQUExQyxDQUE4QyxFQUE5QyxFQUFrRDZNLEtBQWxEO0FBQ0gsV0ExRkk7QUEyRkxwQyxVQUFBQSxXQUFXLEVBQUUscUJBQVVqRyxLQUFWLEVBQWlCO0FBQzFCamEsWUFBQUEsQ0FBQyxDQUFDLDBCQUFELENBQUQsQ0FBOEJxaUIsS0FBOUI7QUFDQXJpQixZQUFBQSxDQUFDLENBQUMsbUJBQUQsQ0FBRCxDQUF1QndiLEtBQXZCLENBQTZCLE1BQTdCO0FBQ0F4YixZQUFBQSxDQUFDLENBQUMsZ0JBQUQsQ0FBRCxDQUFvQnlWLEdBQXBCLENBQXdCd0UsS0FBSyxDQUFDelQsSUFBOUI7QUFDQXhHLFlBQUFBLENBQUMsQ0FBQyxxQ0FBRCxDQUFELENBQXlDeVYsR0FBekMsQ0FBNkN3RSxLQUFLLENBQUN6VCxJQUFuRCxFQUF5RDhiLEtBQXpEO0FBQ0gsV0FoR0k7QUFpR0xwSSxVQUFBQSxvQkFBb0IsRUFBRSw4QkFBVUQsS0FBVixFQUFpQjtBQUNuQyxpQkFBS3NJLFdBQUw7QUFDSCxXQW5HSTtBQW9HTEMsVUFBQUEsZUFBZSxFQUFFLDJCQUFZO0FBQ3pCLGdCQUFJQyxTQUFTLEdBQUcsS0FBS3BGLGNBQXJCO0FBQ0EsZ0JBQUl0RixJQUFJLEdBQUcsSUFBWDs7QUFFQSxnQkFBSTBLLFNBQVMsQ0FBQ25ZLE1BQVYsR0FBbUIsQ0FBdkIsRUFBMEI7QUFDdEI7QUFDSDs7QUFFRDBYLFlBQUFBLGFBQWEsaUNBQUtoaUIsQ0FBQyxDQUFDLGNBQUQsQ0FBRCxDQUFrQnVFLElBQWxCLEVBQUw7QUFBK0IwZCxjQUFBQSxRQUFRLEVBQUUsa0JBQVVDLElBQVYsRUFBZ0I7QUFDbEUsb0JBQUlBLElBQUosRUFBVTtBQUNOLHNCQUFJN0osS0FBSyxHQUFHLEVBQVo7O0FBQ0EsdUJBQUssSUFBSWhPLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUdvWSxTQUFTLENBQUNuWSxNQUE5QixFQUFzQ0QsQ0FBQyxFQUF2QyxFQUEyQztBQUN2Q2dPLG9CQUFBQSxLQUFLLENBQUM1UixJQUFOLENBQVdnYyxTQUFTLENBQUNwWSxDQUFELENBQVQsQ0FBYXFPLFNBQXhCO0FBQ0g7O0FBRUQxWSxrQkFBQUEsQ0FBQyxDQUFDc04sSUFBRixDQUFPO0FBQ0h6RCxvQkFBQUEsR0FBRyxFQUFFN0osQ0FBQyxDQUFDLHFCQUFELENBQUQsQ0FBeUJ5VixHQUF6QixFQURGO0FBRUgyRCxvQkFBQUEsTUFBTSxFQUFFLE1BRkw7QUFHSDdVLG9CQUFBQSxJQUFJLEVBQUU7QUFDRjRkLHNCQUFBQSwwQkFBMEIsRUFBRW5pQixDQUFDLENBQUMsMENBQUQsQ0FBRCxDQUE4Q3lWLEdBQTlDLEVBRDFCO0FBRUY0QyxzQkFBQUEsS0FBSyxFQUFFQTtBQUZMLHFCQUhIO0FBT0hqTixvQkFBQUEsT0FBTyxFQUFFLGlCQUFVN0csSUFBVixFQUFnQjtBQUNyQiwyQkFBSyxJQUFJOEYsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBRzBOLElBQUksQ0FBQ3NGLGNBQUwsQ0FBb0IvUyxNQUF4QyxFQUFnREQsQ0FBQyxFQUFqRCxFQUFxRDtBQUNqRCw0QkFBSXhELEtBQUssR0FBR2tSLElBQUksQ0FBQ1IsVUFBTCxJQUFtQlEsSUFBSSxDQUFDUixVQUFMLENBQWdCNkQsT0FBaEIsQ0FBd0JyRCxJQUFJLENBQUNzRixjQUFMLENBQW9CaFQsQ0FBcEIsQ0FBeEIsQ0FBL0I7O0FBQ0EsNEJBQUl4RCxLQUFLLEdBQUcsQ0FBQyxDQUFiLEVBQWdCO0FBQ1prUiwwQkFBQUEsSUFBSSxDQUFDUixVQUFMLENBQWdCK0IsTUFBaEIsQ0FBdUJ6UyxLQUF2QixFQUE4QixDQUE5QjtBQUNBc1gsMEJBQUFBLEdBQUcsQ0FBQ0YsS0FBSixDQUFVLGNBQVYsRUFBMEJsRyxJQUFJLENBQUNzRixjQUFMLENBQW9CaFQsQ0FBcEIsQ0FBMUI7QUFDSDtBQUNKOztBQUNEME4sc0JBQUFBLElBQUksQ0FBQ3NGLGNBQUwsR0FBc0IsRUFBdEI7QUFDSCxxQkFoQkU7QUFpQkhoUyxvQkFBQUEsS0FBSyxFQUFFLGVBQVVBLE9BQVYsRUFBaUI7QUFDcEJrTyxzQkFBQUEsT0FBTyxDQUFDbE8sS0FBUixDQUFjQSxPQUFLLENBQUMrVyxZQUFwQjtBQUNIO0FBbkJFLG1CQUFQO0FBcUJIO0FBQ0o7QUE3QlksZUFBYjtBQThCSCxXQTFJSTtBQTJJTGpDLFVBQUFBLGVBQWUsRUFBRSx5QkFBVWxHLEtBQVYsRUFBaUI7QUFDOUIsZ0JBQUlsQyxJQUFJLEdBQUcsSUFBWDs7QUFDQSxnQkFBSSxDQUFDa0MsS0FBTCxFQUFZO0FBQ1I7QUFDSDs7QUFFRCtILFlBQUFBLGFBQWEsaUNBQUtoaUIsQ0FBQyxDQUFDLGNBQUQsQ0FBRCxDQUFrQnVFLElBQWxCLEVBQUw7QUFBK0IwZCxjQUFBQSxRQUFRLEVBQUUsa0JBQVVDLElBQVYsRUFBZ0I7QUFDbEUsb0JBQUlBLElBQUosRUFBVTtBQUNObGlCLGtCQUFBQSxDQUFDLENBQUNzTixJQUFGLENBQU87QUFDSHpELG9CQUFBQSxHQUFHLEVBQUU3SixDQUFDLENBQUMsaUJBQUQsQ0FBRCxDQUFxQnlWLEdBQXJCLEtBQTZCLFFBQTdCLEdBQXdDMEQsa0JBQWtCLENBQUNjLEtBQUssQ0FBQ3ZCLFNBQVAsQ0FENUQ7QUFFSFUsb0JBQUFBLE1BQU0sRUFBRSxNQUZMO0FBR0g3VSxvQkFBQUEsSUFBSSxFQUFFO0FBQ0Y0ZCxzQkFBQUEsMEJBQTBCLEVBQUVuaUIsQ0FBQyxDQUFDLDBDQUFELENBQUQsQ0FBOEN5VixHQUE5QztBQUQxQixxQkFISDtBQU1Ickssb0JBQUFBLE9BQU8sRUFBRSxpQkFBVTdHLElBQVYsRUFBZ0I7QUFDckIsMEJBQUlzQyxLQUFLLEdBQUdrUixJQUFJLENBQUNSLFVBQUwsSUFBbUJRLElBQUksQ0FBQ1IsVUFBTCxDQUFnQjZELE9BQWhCLENBQXdCbkIsS0FBeEIsQ0FBL0I7O0FBQ0EsMEJBQUlwVCxLQUFLLEdBQUcsQ0FBQyxDQUFiLEVBQWdCO0FBQ1prUix3QkFBQUEsSUFBSSxDQUFDUixVQUFMLENBQWdCK0IsTUFBaEIsQ0FBdUJ6UyxLQUF2QixFQUE4QixDQUE5QjtBQUNBc1gsd0JBQUFBLEdBQUcsQ0FBQ0YsS0FBSixDQUFVLGNBQVYsRUFBMEJoRSxLQUExQjtBQUNILHVCQUxvQixDQU1yQjs7QUFDSCxxQkFiRTtBQWNINU8sb0JBQUFBLEtBQUssRUFBRSxlQUFVQSxPQUFWLEVBQWlCO0FBQ3BCa08sc0JBQUFBLE9BQU8sQ0FBQ2xPLEtBQVIsQ0FBY0EsT0FBSyxDQUFDK1csWUFBcEI7QUFDSDtBQWhCRSxtQkFBUDtBQWtCSDtBQUNKO0FBckJZLGVBQWI7QUFzQkgsV0F2S0k7QUF3S0xoQyxVQUFBQSxlQUFlLEVBQUUseUJBQVVuRyxLQUFWLEVBQWlCM1ksQ0FBakIsRUFBb0I7QUFDakM7QUFDQTtBQUNBLGdCQUFJb2hCLFVBQVUsR0FBRyxFQUFqQjtBQUNBLGlCQUFLckYsY0FBTCxDQUFvQjdFLE9BQXBCLENBQTRCLFVBQVU5RyxJQUFWLEVBQWdCO0FBQ3hDZ1IsY0FBQUEsVUFBVSxDQUFDamMsSUFBWCxDQUFnQmlMLElBQUksQ0FBQ2xMLElBQXJCO0FBQ0gsYUFGRCxFQUppQyxDQVFqQzs7QUFDQSxnQkFBSSxLQUFLb2IsZUFBTCxDQUFxQjNILEtBQXJCLEtBQStCLEtBQW5DLEVBQTBDO0FBQ3RDeUksY0FBQUEsVUFBVSxDQUFDamMsSUFBWCxDQUFnQndULEtBQUssQ0FBQ3pULElBQXRCO0FBQ0EsbUJBQUs2VyxjQUFMLENBQW9CNVcsSUFBcEIsQ0FBeUJ3VCxLQUF6QjtBQUNIOztBQUVEM1ksWUFBQUEsQ0FBQyxDQUFDQyxZQUFGLENBQWVvaEIsT0FBZixDQUF1QixZQUF2QixFQUFxQ2pPLElBQUksQ0FBQzZELFNBQUwsQ0FBZW1LLFVBQWYsQ0FBckM7QUFDQXBoQixZQUFBQSxDQUFDLENBQUNDLFlBQUYsQ0FBZW9oQixPQUFmLENBQXVCLGNBQXZCLEVBQXVDLEtBQUtoRSxjQUFMLENBQW9Cck8sSUFBM0Q7QUFDQWhQLFlBQUFBLENBQUMsQ0FBQ0MsWUFBRixDQUFlcWhCLFlBQWYsQ0FBNEIsS0FBSy9ELGlCQUFqQyxFQUFvRCxFQUFwRCxFQUF3RCxFQUF4RDtBQUNBdmQsWUFBQUEsQ0FBQyxDQUFDQyxZQUFGLENBQWVzaEIsYUFBZixHQUErQixNQUEvQjtBQUNILFdBMUxJO0FBMkxMQyxVQUFBQSxxQkFBcUIsRUFBRSwrQkFBVXhoQixDQUFWLEVBQWE7QUFDaEMsZ0JBQUlBLENBQUMsQ0FBQ3loQixPQUFGLEdBQVksR0FBaEIsRUFBcUI7QUFDakJqakIsY0FBQUEsTUFBTSxDQUFDa2pCLFFBQVAsQ0FBZ0IsQ0FBaEIsRUFBbUIsQ0FBQyxFQUFwQjtBQUNIOztBQUVELGdCQUFJMWhCLENBQUMsQ0FBQ3loQixPQUFGLEdBQVlqakIsTUFBTSxDQUFDbWpCLFdBQVAsR0FBcUIsR0FBckMsRUFBMEM7QUFDdENuakIsY0FBQUEsTUFBTSxDQUFDa2pCLFFBQVAsQ0FBZ0IsQ0FBaEIsRUFBbUIsRUFBbkI7QUFDSDtBQUNKLFdBbk1JO0FBb01MaEQsVUFBQUEsVUFBVSxFQUFFLG9CQUFVRCxPQUFWLEVBQW1CO0FBQzNCLGdCQUFJLEtBQUtkLE1BQUwsSUFBZWMsT0FBbkIsRUFBNEI7QUFDeEIsbUJBQUtiLE9BQUwsR0FBZSxDQUFDLEtBQUtBLE9BQXJCO0FBQ0gsYUFGRCxNQUVPO0FBQ0gsbUJBQUtBLE9BQUwsR0FBZSxJQUFmO0FBQ0EsbUJBQUtELE1BQUwsR0FBY2MsT0FBZDtBQUNIO0FBQ0o7QUEzTUk7QUF0TE0sT0FBUixDQUFYO0FBcVlBL2YsTUFBQUEsQ0FBQyxDQUFDLHFCQUFELENBQUQsQ0FBeUJrakIsUUFBekIsQ0FBa0MsVUFBVTVoQixDQUFWLEVBQWE7QUFDM0MsWUFBSTBDLEdBQUcsR0FBRzFDLENBQUMsQ0FBQzZoQixLQUFaOztBQUNBLFlBQUluZixHQUFHLElBQUksRUFBWCxFQUFlO0FBQUc7QUFDZGhFLFVBQUFBLENBQUMsQ0FBQyxnQkFBRCxDQUFELENBQW9Cb2pCLEtBQXBCO0FBQ0EsaUJBQU8sS0FBUDtBQUNIO0FBQ0osT0FORDtBQVFBcGpCLE1BQUFBLENBQUMsQ0FBQyxnQkFBRCxDQUFELENBQW9Cc0ksRUFBcEIsQ0FBdUIsT0FBdkIsRUFBZ0MsVUFBVWhILENBQVYsRUFBYTtBQUN6QyxZQUFJa0YsSUFBSSxHQUFHeEcsQ0FBQyxDQUFDLHFCQUFELENBQUQsQ0FBeUJ5VixHQUF6QixFQUFYOztBQUVBLFlBQUlqUCxJQUFJLEtBQUssRUFBYixFQUFpQjtBQUNiO0FBQ0g7O0FBRUR4RyxRQUFBQSxDQUFDLENBQUNzTixJQUFGLENBQU87QUFDSHpELFVBQUFBLEdBQUcsRUFBRTdKLENBQUMsQ0FBQyxrQkFBRCxDQUFELENBQXNCeVYsR0FBdEIsS0FBOEIsUUFBOUIsR0FBeUMwRCxrQkFBa0IsQ0FBQ2lFLFFBQVEsQ0FBQ3VCLGNBQVQsQ0FBd0JyTyxJQUF6QixDQUEzRCxHQUE0RixRQUE1RixHQUF1RzZJLGtCQUFrQixDQUFDM1MsSUFBRCxDQUQzSDtBQUVINFMsVUFBQUEsTUFBTSxFQUFFLE1BRkw7QUFHSDdVLFVBQUFBLElBQUksRUFBRTtBQUNGNGQsWUFBQUEsMEJBQTBCLEVBQUVuaUIsQ0FBQyxDQUFDLDBDQUFELENBQUQsQ0FBOEN5VixHQUE5QztBQUQxQixXQUhIO0FBTUhySyxVQUFBQSxPQUFPLEVBQUUsaUJBQVU3RyxJQUFWLEVBQWdCO0FBQ3JCNFosWUFBQUEsR0FBRyxDQUFDRixLQUFKLENBQVUsV0FBVixFQUF1QmIsUUFBUSxDQUFDdUIsY0FBaEMsRUFBZ0RwYSxJQUFoRDtBQUNBdkUsWUFBQUEsQ0FBQyxDQUFDLG9CQUFELENBQUQsQ0FBd0J3YixLQUF4QixDQUE4QixNQUE5QjtBQUNILFdBVEU7QUFVSG5RLFVBQUFBLEtBQUssRUFBRSxlQUFVQSxPQUFWLEVBQWlCO0FBQ3BCckwsWUFBQUEsQ0FBQyxDQUFDLDJCQUFELENBQUQsQ0FBK0JxaUIsS0FBL0I7QUFDQSxnQkFBSWdCLFlBQVksR0FBRzNPLElBQUksQ0FBQ3VELEtBQUwsQ0FBVzVNLE9BQUssQ0FBQytXLFlBQWpCLEVBQStCbmUsS0FBbEQ7QUFDQWpFLFlBQUFBLENBQUMsQ0FBQyxxREFBRCxDQUFELENBQXlEK1YsSUFBekQsQ0FBOERzTixZQUE5RCxFQUE0RS9OLFFBQTVFLENBQXFGdFYsQ0FBQyxDQUFDLDJCQUFELENBQXRGO0FBQ0g7QUFkRSxTQUFQO0FBZ0JILE9BdkJEO0FBeUJBQSxNQUFBQSxDQUFDLENBQUMsMkJBQUQsQ0FBRCxDQUErQnNJLEVBQS9CLENBQWtDLE9BQWxDLEVBQTJDLFVBQVVoSCxDQUFWLEVBQWE7QUFDcEQsWUFBSW1lLE9BQU8sR0FBR3pmLENBQUMsQ0FBQyxnQkFBRCxDQUFELENBQW9CeVYsR0FBcEIsRUFBZDtBQUNBLFlBQUk2TixPQUFPLEdBQUd0akIsQ0FBQyxDQUFDLGdCQUFELENBQUQsQ0FBb0J5VixHQUFwQixFQUFkOztBQUVBLFlBQUlnSyxPQUFPLEtBQUssRUFBaEIsRUFBb0I7QUFDaEI7QUFDSDs7QUFFRCxZQUFJOEQsYUFBYSxHQUFHbkcsUUFBUSxDQUFDdUIsY0FBVCxDQUF3QnJPLElBQXhCLEdBQStCLEdBQW5EOztBQUNBLFlBQUlpVCxhQUFhLEtBQUssR0FBdEIsRUFBMkI7QUFDdkJBLFVBQUFBLGFBQWEsR0FBRyxFQUFoQjtBQUNIOztBQUVELFlBQUk3RCxPQUFPLEdBQUc2RCxhQUFhLEdBQUc5RCxPQUE5QjtBQUNBLFlBQUlFLE9BQU8sR0FBRzRELGFBQWEsR0FBR0QsT0FBOUI7O0FBRUEsWUFBSTVELE9BQU8sQ0FBQzFMLFdBQVIsT0FBMEIyTCxPQUFPLENBQUMzTCxXQUFSLEVBQTlCLEVBQXFEO0FBQ2pEaFUsVUFBQUEsQ0FBQyxDQUFDLG1CQUFELENBQUQsQ0FBdUJ3YixLQUF2QixDQUE2QixNQUE3QjtBQUNBO0FBQ0g7O0FBRUR4YixRQUFBQSxDQUFDLENBQUNzTixJQUFGLENBQU87QUFDSHpELFVBQUFBLEdBQUcsRUFBRTdKLENBQUMsQ0FBQyxpQkFBRCxDQUFELENBQXFCeVYsR0FBckIsS0FBNkIsV0FBN0IsR0FBMkMwRCxrQkFBa0IsQ0FBQ3dHLE9BQUQsQ0FBN0QsR0FBeUUsV0FBekUsR0FBdUZ4RyxrQkFBa0IsQ0FBQ3VHLE9BQUQsQ0FEM0c7QUFFSHRHLFVBQUFBLE1BQU0sRUFBRSxNQUZMO0FBR0g3VSxVQUFBQSxJQUFJLEVBQUU7QUFDRjRkLFlBQUFBLDBCQUEwQixFQUFFbmlCLENBQUMsQ0FBQywwQ0FBRCxDQUFELENBQThDeVYsR0FBOUM7QUFEMUIsV0FISDtBQU1IckssVUFBQUEsT0FBTyxFQUFFLGlCQUFVN0csSUFBVixFQUFnQjtBQUNyQnZFLFlBQUFBLENBQUMsQ0FBQyxtQkFBRCxDQUFELENBQXVCd2IsS0FBdkIsQ0FBNkIsTUFBN0I7QUFDQTJDLFlBQUFBLEdBQUcsQ0FBQ0YsS0FBSixDQUFVLGNBQVYsRUFBMEJ3QixPQUExQixFQUFtQ0MsT0FBbkMsRUFBNENDLE9BQTVDO0FBQ0gsV0FURTtBQVVIdFUsVUFBQUEsS0FBSyxFQUFFLGVBQVVBLE9BQVYsRUFBaUI7QUFDcEJyTCxZQUFBQSxDQUFDLENBQUMsMEJBQUQsQ0FBRCxDQUE4QnFpQixLQUE5QjtBQUNBLGdCQUFJZ0IsWUFBWSxHQUFHM08sSUFBSSxDQUFDdUQsS0FBTCxDQUFXNU0sT0FBSyxDQUFDK1csWUFBakIsRUFBK0JuZSxLQUFsRDtBQUNBakUsWUFBQUEsQ0FBQyxDQUFDLHFEQUFELENBQUQsQ0FBeUQrVixJQUF6RCxDQUE4RHNOLFlBQTlELEVBQTRFL04sUUFBNUUsQ0FBcUZ0VixDQUFDLENBQUMsMEJBQUQsQ0FBdEY7QUFDSDtBQWRFLFNBQVA7QUFnQkgsT0FyQ0Q7O0FBdUNBLFVBQUlxZSx1QkFBSixFQUE2QjtBQUN6QmxjLFFBQUFBLFFBQVEsQ0FBQzRVLGNBQVQsQ0FBd0IsVUFBeEIsRUFBb0N5TSxLQUFwQyxDQUEwQ0MsT0FBMUMsR0FBb0QsRUFBcEQ7QUFDSDs7QUFFRHpqQixNQUFBQSxDQUFDLENBQUNtQyxRQUFELENBQUQsQ0FBWThOLE9BQVosQ0FBb0IsZ0JBQXBCO0FBRUgsS0FsZUU7QUFtZUg1RSxJQUFBQSxLQUFLLEVBQUUsZUFBVUEsT0FBVixFQUFpQjtBQUNwQmtPLE1BQUFBLE9BQU8sQ0FBQ2xPLEtBQVIsQ0FBY0EsT0FBSyxDQUFDK1csWUFBcEI7QUFDSDtBQXJlRSxHQUFQO0FBdWVIO0FDeGZEcGlCLENBQUMsQ0FBQ21DLFFBQUQsQ0FBRCxDQUFZbUcsRUFBWixDQUFlLGdCQUFmLEVBQWlDLFlBQVk7QUFDekN0SSxFQUFBQSxDQUFDLENBQUMsYUFBRCxDQUFELENBQWlCeUUsVUFBakIsQ0FBNEI7QUFDeEJ2QyxJQUFBQSxRQUFRLEVBQUVsQyxDQUFDLENBQUMsV0FBRCxDQURhO0FBRXhCNkMsSUFBQUEsc0JBQXNCLEVBQUUsRUFGQTtBQUd4QmlILElBQUFBLFFBQVEsRUFBRSxNQUhjO0FBSXhCRCxJQUFBQSxHQUFHLEVBQUU3SixDQUFDLENBQUMsY0FBRCxDQUFELENBQWtCeVYsR0FBbEIsRUFKbUI7QUFLeEJ0UixJQUFBQSxRQUFRLEVBQUUsb0JBQVk7QUFDbEIsVUFBSXFXLGdCQUFnQixHQUFHeGEsQ0FBQyxDQUFDLHdDQUFELENBQUQsQ0FBNEN5VixHQUE1QyxFQUF2QjtBQUVBLGFBQU8sQ0FDSDtBQUFFalAsUUFBQUEsSUFBSSxFQUFFLE1BQVI7QUFBZ0J2QyxRQUFBQSxLQUFLLEVBQUVtWixRQUFRLENBQUN1QixjQUFULENBQXdCck87QUFBL0MsT0FERyxFQUVIO0FBQUU5SixRQUFBQSxJQUFJLEVBQUUsNEJBQVI7QUFBc0N2QyxRQUFBQSxLQUFLLEVBQUV1VztBQUE3QyxPQUZHLENBQVA7QUFJSCxLQVp1QjtBQWF4QjdWLElBQUFBLElBQUksRUFBRSxjQUFVckQsQ0FBVixFQUFhaUQsSUFBYixFQUFtQjtBQUNyQnZFLE1BQUFBLENBQUMsQ0FBQytELElBQUYsQ0FBT1EsSUFBSSxDQUFDZ0osTUFBTCxDQUFZNUcsS0FBbkIsRUFBMEIsVUFBVUUsS0FBVixFQUFpQkMsSUFBakIsRUFBdUI7QUFDN0MsWUFBSSxDQUFDQSxJQUFJLENBQUN1RSxLQUFWLEVBQWlCO0FBQ2IrUixVQUFBQSxRQUFRLENBQUM3RixVQUFULENBQW9COVEsSUFBcEIsQ0FBeUJLLElBQXpCO0FBQ0g7QUFDSixPQUpEO0FBS0g7QUFuQnVCLEdBQTVCO0FBcUJILENBdEJEO0FBeUJBOUcsQ0FBQyxDQUFDbUMsUUFBRCxDQUFELENBQVl1aEIsSUFBWixDQUFpQixVQUFqQixFQUE2QixVQUFVcGlCLENBQVYsRUFBYTtBQUN0QyxNQUFJcWlCLEVBQUUsR0FBR3JpQixDQUFDLENBQUNFLGFBQUYsQ0FBZ0JELFlBQXpCOztBQUNBLE1BQUlvaUIsRUFBRSxDQUFDamlCLEtBQUgsS0FBYWlpQixFQUFFLENBQUNqaUIsS0FBSCxDQUFTMFosT0FBVCxHQUFtQnVJLEVBQUUsQ0FBQ2ppQixLQUFILENBQVMwWixPQUFULENBQWlCLE9BQWpCLEtBQTZCLENBQUMsQ0FBakQsR0FBcUR1SSxFQUFFLENBQUNqaUIsS0FBSCxDQUFTa2lCLFFBQVQsQ0FBa0IsT0FBbEIsQ0FBbEUsQ0FBSixFQUFtRztBQUMvRixRQUFJMWhCLFFBQVEsR0FBR2xDLENBQUMsQ0FBQyxpQkFBRCxDQUFoQjtBQUFBLFFBQ0lnRixPQUFPLEdBQUdsRixNQUFNLENBQUMrakIsZUFEckI7O0FBRUEsUUFBSTdlLE9BQUosRUFBYTtBQUNUOGUsTUFBQUEsWUFBWSxDQUFDOWUsT0FBRCxDQUFaO0FBQ0gsS0FGRCxNQUVPO0FBQ0g5QyxNQUFBQSxRQUFRLENBQUM2aEIsUUFBVCxDQUFrQixJQUFsQjtBQUNIOztBQUNELFFBQUlDLGVBQWUsR0FBR2hrQixDQUFDLENBQUNzQixDQUFDLENBQUMyUSxNQUFILENBQUQsQ0FBWWdTLE9BQVosQ0FBb0IvaEIsUUFBcEIsQ0FBdEI7QUFDQXBDLElBQUFBLE1BQU0sQ0FBQytqQixlQUFQLEdBQXlCdE8sVUFBVSxDQUFDLFlBQVk7QUFDNUN6VixNQUFBQSxNQUFNLENBQUMrakIsZUFBUCxHQUF5QixJQUF6QjtBQUNBM2hCLE1BQUFBLFFBQVEsQ0FBQ2dpQixXQUFULENBQXFCLElBQXJCO0FBQ0gsS0FIa0MsRUFHaEMsR0FIZ0MsQ0FBbkM7QUFJSDtBQUNKLENBaEJEOzs7Ozs7O0FDekJBO0FBQ0E3TSxHQUFHLENBQUNvRyxTQUFKLENBQWMsUUFBZCxFQUF3QjtBQUNwQkMsRUFBQUEsUUFBUSw0YUFNOEN2YixRQUFRLENBQUNnaUIsR0FBVCxJQUFnQixLQUFoQixHQUF3QixNQUF4QixHQUFpQyxPQU4vRSw0UUFPZ0poaUIsUUFBUSxDQUFDZ2lCLEdBQVQsSUFBZ0IsS0FBaEIsR0FBd0IsT0FBeEIsR0FBa0MsTUFQbEwseTlCQURZO0FBMEJwQnZHLEVBQUFBLEtBQUssRUFBRTtBQUNIbUUsSUFBQUEsS0FBSyxFQUFFeGEsTUFESjtBQUVINmMsSUFBQUEsa0JBQWtCLEVBQUU3YyxNQUZqQjtBQUdIOGMsSUFBQUEsS0FBSyxFQUFFL2U7QUFISixHQTFCYTtBQStCcEJmLEVBQUFBLElBQUksRUFBRSxnQkFBWTtBQUNkLFdBQU87QUFDSGdkLE1BQUFBLElBQUksRUFBRSxLQURIO0FBRUgrQyxNQUFBQSxRQUFRLEVBQUUsSUFGUDtBQUVhO0FBQ2hCNUQsTUFBQUEsTUFBTSxFQUFFLElBSEw7QUFJSDZELE1BQUFBLFNBQVMsRUFBRSxLQUpSO0FBS0hDLE1BQUFBLE9BQU8sRUFBRTtBQUxOLEtBQVA7QUFPSCxHQXZDbUI7QUF3Q3BCcE0sRUFBQUEsUUFBUSxFQUFFO0FBQ05pSyxJQUFBQSxLQUFLLEVBQUUsaUJBQVk7QUFDZixhQUFPLENBQUMsS0FBS2lDLFFBQU4sSUFBa0IsS0FBS0EsUUFBTCxDQUFjaGEsTUFBZCxJQUF3QixDQUFqRDtBQUNILEtBSEs7QUFJTm1hLElBQUFBLFVBQVUsRUFBRSxzQkFBWTtBQUNwQixhQUFRLEtBQUtMLGtCQUFMLENBQXdCNWQsSUFBeEIsSUFBZ0MsS0FBS3ViLEtBQUwsQ0FBV3ZiLElBQTVDLElBQXNELEtBQUs0ZCxrQkFBTCxDQUF3QjlULElBQXhCLElBQWdDLEtBQUt5UixLQUFMLENBQVd6UixJQUF4RztBQUNILEtBTks7QUFPTm9VLElBQUFBLE1BQU0sRUFBRSxrQkFBWTtBQUNoQixhQUFPLEtBQUszQyxLQUFMLENBQVd6UixJQUFYLEtBQW9CLEVBQTNCO0FBQ0g7QUFUSyxHQXhDVTtBQW1EcEJ5SixFQUFBQSxPQUFPLEVBQUUsbUJBQVk7QUFDakIsUUFBSyxLQUFLMkssTUFBTCxJQUFlLEtBQWhCLElBQTJCLEtBQUtDLDBCQUFMLEVBQS9CLEVBQWtFO0FBQzlELFdBQUt0RCxNQUFMO0FBQ0g7O0FBRUQsU0FBS21ELE9BQUwsR0FBZSxLQUFLSCxLQUFMLEdBQWEsQ0FBYixHQUFrQixFQUFsQixHQUF1QixLQUFNLEtBQUtBLEtBQUwsR0FBYSxDQUF6RDtBQUNILEdBekRtQjtBQTBEcEJ2TSxFQUFBQSxPQUFPLEVBQUUsbUJBQVk7QUFDakIsUUFBSUMsSUFBSSxHQUFHLElBQVg7QUFDQW9HLElBQUFBLEdBQUcsQ0FBQ25FLEdBQUosQ0FBUSxjQUFSLEVBQXdCLFVBQVUwRSxNQUFWLEVBQWtCO0FBQ3RDLFVBQUkzRyxJQUFJLENBQUN1TSxRQUFULEVBQW1CO0FBQ2YsWUFBSXpkLEtBQUssR0FBR2tSLElBQUksQ0FBQ3VNLFFBQUwsSUFBaUJ2TSxJQUFJLENBQUN1TSxRQUFMLENBQWNsSixPQUFkLENBQXNCc0QsTUFBdEIsQ0FBN0I7O0FBQ0EsWUFBSTdYLEtBQUssR0FBRyxDQUFDLENBQWIsRUFBZ0I7QUFDWmtSLFVBQUFBLElBQUksQ0FBQ3VNLFFBQUwsQ0FBY2hMLE1BQWQsQ0FBcUJ6UyxLQUFyQixFQUE0QixDQUE1QjtBQUNBc1gsVUFBQUEsR0FBRyxDQUFDRixLQUFKLENBQVUsZUFBVjtBQUNIO0FBQ0o7QUFDSixLQVJEO0FBVUFFLElBQUFBLEdBQUcsQ0FBQ25FLEdBQUosQ0FBUSxXQUFSLEVBQXFCLFVBQVUvSCxNQUFWLEVBQWtCeU0sTUFBbEIsRUFBMEI7QUFDM0MsVUFBSTNHLElBQUksQ0FBQ2dLLEtBQUwsSUFBYzlQLE1BQWxCLEVBQTBCO0FBQ3RCLFlBQUk4RixJQUFJLENBQUN1TSxRQUFMLEtBQWtCLElBQXRCLEVBQTRCO0FBQ3hCdk0sVUFBQUEsSUFBSSxDQUFDdU0sUUFBTCxDQUFjN2QsSUFBZCxDQUFtQmlZLE1BQW5CO0FBQ0g7O0FBQ0RBLFFBQUFBLE1BQU0sQ0FBQ2dDLE1BQVAsR0FBZ0IzSSxJQUFJLENBQUNnSyxLQUFyQjtBQUNBNUQsUUFBQUEsR0FBRyxDQUFDRixLQUFKLENBQVUsYUFBVixFQUF5QlMsTUFBekI7QUFDSDtBQUNKLEtBUkQ7QUFTSCxHQS9FbUI7QUFnRnBCOUQsRUFBQUEsT0FBTyxFQUFFO0FBQ0wrSixJQUFBQSwwQkFBMEIsRUFBRSxzQ0FBWTtBQUNwQ25FLE1BQUFBLFlBQVksR0FBR3BELFFBQVEsQ0FBQ3VCLGNBQXhCOztBQUNBLGFBQU82QixZQUFQLEVBQXFCO0FBQ2pCLFlBQUlBLFlBQVksQ0FBQ2xRLElBQWIsSUFBcUIsS0FBS3lSLEtBQUwsQ0FBV3pSLElBQXBDLEVBQTBDO0FBQ3RDLGlCQUFPLElBQVA7QUFDSDs7QUFDTGtRLFFBQUFBLFlBQVksR0FBR0EsWUFBWSxDQUFDRSxNQUE1QjtBQUNDOztBQUVELGFBQU8sS0FBUDtBQUNILEtBWEk7QUFZTFcsSUFBQUEsTUFBTSxFQUFFLGtCQUFZO0FBQ2hCLFdBQUtFLElBQUwsR0FBWSxDQUFDLEtBQUtBLElBQWxCOztBQUNBLFVBQUksS0FBS0EsSUFBTCxJQUFhLENBQUMsS0FBSytDLFFBQXZCLEVBQWlDO0FBQzdCLGFBQUtNLFlBQUw7QUFDSDtBQUNKLEtBakJJO0FBa0JMQyxJQUFBQSxNQUFNLEVBQUUsa0JBQVk7QUFDaEIxRyxNQUFBQSxHQUFHLENBQUNGLEtBQUosQ0FBVSxnQkFBVixFQUE0QixLQUFLOEQsS0FBakM7QUFDQSxXQUFLNkMsWUFBTDtBQUNILEtBckJJO0FBc0JML0UsSUFBQUEsWUFBWSxFQUFFLHdCQUFZO0FBQ3RCMUIsTUFBQUEsR0FBRyxDQUFDRixLQUFKLENBQVUsdUJBQVY7QUFDSCxLQXhCSTtBQXlCTDZCLElBQUFBLFlBQVksRUFBRSx3QkFBWTtBQUN0QjNCLE1BQUFBLEdBQUcsQ0FBQ0YsS0FBSixDQUFVLHVCQUFWO0FBQ0gsS0EzQkk7QUE0QkwyRyxJQUFBQSxZQUFZLEVBQUUsd0JBQVk7QUFDdEIsVUFBSTdNLElBQUksR0FBRyxJQUFYOztBQUNBLFVBQUksS0FBS3dKLElBQUwsSUFBYSxLQUFqQixFQUF3QjtBQUNwQixhQUFLQSxJQUFMLEdBQVksSUFBWjtBQUNIOztBQUNEdmhCLE1BQUFBLENBQUMsQ0FBQ3NOLElBQUYsQ0FBTztBQUNIekQsUUFBQUEsR0FBRyxFQUFFN0osQ0FBQyxDQUFDLGdCQUFELENBQUQsQ0FBb0J5VixHQUFwQixLQUE0QixRQUE1QixHQUF1QzBELGtCQUFrQixDQUFDcEIsSUFBSSxDQUFDZ0ssS0FBTCxDQUFXelIsSUFBWixDQUQzRDtBQUVIOEksUUFBQUEsTUFBTSxFQUFFLEtBRkw7QUFHSGhPLFFBQUFBLE9BQU8sRUFBRSxpQkFBVTdHLElBQVYsRUFBZ0I7QUFDckJ3VCxVQUFBQSxJQUFJLENBQUN1TSxRQUFMLEdBQWdCL2YsSUFBaEI7QUFDQXdULFVBQUFBLElBQUksQ0FBQ3VNLFFBQUwsQ0FBYzlMLE9BQWQsQ0FBc0IsVUFBVXFDLENBQVYsRUFBYTtBQUMvQkEsWUFBQUEsQ0FBQyxDQUFDNkYsTUFBRixHQUFXM0ksSUFBSSxDQUFDZ0ssS0FBaEI7QUFDSCxXQUZEO0FBR0gsU0FSRTtBQVNIMVcsUUFBQUEsS0FBSyxFQUFFLGVBQVVBLE1BQVYsRUFBaUI7QUFDcEJ5WixVQUFBQSxLQUFLLEdBQUcsS0FBUjtBQUNBdkwsVUFBQUEsT0FBTyxDQUFDbE8sS0FBUixDQUFjQSxNQUFLLENBQUMrVyxZQUFwQjtBQUNIO0FBWkUsT0FBUDtBQWNILEtBL0NJO0FBZ0RMMkMsSUFBQUEsY0FBYyxFQUFFLHdCQUFVempCLENBQVYsRUFBYTtBQUN6QixXQUFLaWpCLFNBQUwsR0FBaUIsSUFBakI7QUFDSCxLQWxESTtBQW1ETFMsSUFBQUEsZUFBZSxFQUFFLHlCQUFVMWpCLENBQVYsRUFBYTtBQUMxQixXQUFLaWpCLFNBQUwsR0FBaUIsS0FBakI7QUFDSCxLQXJESTtBQXNETFUsSUFBQUEsaUJBQWlCLEVBQUUsMkJBQVV2RyxNQUFWLEVBQWtCcGQsQ0FBbEIsRUFBcUI7QUFFcEMsVUFBSXlXLElBQUksR0FBRyxJQUFYO0FBQ0FBLE1BQUFBLElBQUksQ0FBQ3dNLFNBQUwsR0FBaUIsS0FBakI7QUFFQSxVQUFJN0IsVUFBVSxHQUFHaE8sSUFBSSxDQUFDdUQsS0FBTCxDQUFXM1csQ0FBQyxDQUFDQyxZQUFGLENBQWUyakIsT0FBZixDQUF1QixZQUF2QixDQUFYLENBQWpCOztBQUVBLFVBQUl4QyxVQUFVLENBQUNwWSxNQUFYLEdBQW9CLENBQXhCLEVBQTJCO0FBQ3ZCO0FBQ0g7O0FBRUQsVUFBSTZhLFlBQVksR0FBRzdqQixDQUFDLENBQUNDLFlBQUYsQ0FBZTJqQixPQUFmLENBQXVCLGNBQXZCLENBQW5CO0FBQ0EsVUFBSUUsWUFBWSxHQUFHMUcsTUFBTSxDQUFDcE8sSUFBMUI7O0FBRUEsVUFBSTZVLFlBQVksS0FBSyxFQUFyQixFQUF5QjtBQUNyQkEsUUFBQUEsWUFBWSxHQUFHLE1BQWY7QUFDSDs7QUFFRCxVQUFJQyxZQUFZLEtBQUssRUFBckIsRUFBeUI7QUFDckJBLFFBQUFBLFlBQVksR0FBRyxNQUFmO0FBQ0g7O0FBRUQsVUFBSUQsWUFBWSxLQUFLQyxZQUFyQixFQUFtQztBQUMvQnpLLFFBQUFBLEtBQUssQ0FBQzNhLENBQUMsQ0FBQyxvQkFBRCxDQUFELENBQXdCeVYsR0FBeEIsRUFBRCxDQUFMO0FBQ0E7QUFDSDs7QUFFRHVNLE1BQUFBLGFBQWEsaUNBQUtoaUIsQ0FBQyxDQUFDLFlBQUQsQ0FBRCxDQUFnQnVFLElBQWhCLEVBQUw7QUFBNkIwZCxRQUFBQSxRQUFRLEVBQUUsa0JBQVVDLElBQVYsRUFBZ0I7QUFDaEUsY0FBSUEsSUFBSixFQUFVO0FBQ05saUIsWUFBQUEsQ0FBQyxDQUFDc04sSUFBRixDQUFPO0FBQ0h6RCxjQUFBQSxHQUFHLEVBQUU3SixDQUFDLENBQUMsbUJBQUQsQ0FBRCxDQUF1QnlWLEdBQXZCLEVBREY7QUFFSDJELGNBQUFBLE1BQU0sRUFBRSxNQUZMO0FBR0g3VSxjQUFBQSxJQUFJLEVBQUU7QUFDRjRkLGdCQUFBQSwwQkFBMEIsRUFBRW5pQixDQUFDLENBQUMsMENBQUQsQ0FBRCxDQUE4Q3lWLEdBQTlDLEVBRDFCO0FBRUZpTixnQkFBQUEsVUFBVSxFQUFFQSxVQUZWO0FBR0Z5QyxnQkFBQUEsWUFBWSxFQUFFQSxZQUhaO0FBSUZDLGdCQUFBQSxZQUFZLEVBQUVBO0FBSlosZUFISDtBQVNIaGEsY0FBQUEsT0FBTyxFQUFFLG1CQUFZO0FBQ2pCK1MsZ0JBQUFBLEdBQUcsQ0FBQ0YsS0FBSixDQUFVLGdCQUFWLEVBRGlCLENBQ1k7QUFDaEMsZUFYRTtBQVlINVMsY0FBQUEsS0FBSyxFQUFFLGVBQVVBLE9BQVYsRUFBaUI7QUFDcEJrTyxnQkFBQUEsT0FBTyxDQUFDbE8sS0FBUixDQUFjQSxPQUFLLENBQUMrVyxZQUFwQjtBQUNBakUsZ0JBQUFBLEdBQUcsQ0FBQ0YsS0FBSixDQUFVLGdCQUFWLEVBQTRCNVMsT0FBSyxDQUFDK1csWUFBbEM7QUFDSDtBQWZFLGFBQVA7QUFpQkg7QUFDSjtBQXBCWSxTQUFiO0FBcUJIO0FBdEdJO0FBaEZXLENBQXhCO0FDREE7QUFDQS9LLEdBQUcsQ0FBQ29HLFNBQUosQ0FBYyxrQkFBZCxFQUFrQztBQUM5QkMsRUFBQUEsUUFBUSwwNURBRHNCO0FBMEI5Qm5aLEVBQUFBLElBQUksRUFBRSxnQkFBWTtBQUNkLFdBQU87QUFDSG9aLE1BQUFBLENBQUMsRUFBRTtBQURBLEtBQVA7QUFHSCxHQTlCNkI7QUErQjlCQyxFQUFBQSxLQUFLLEVBQUU7QUFDSCtDLElBQUFBLGtCQUFrQixFQUFFdFAsS0FEakI7QUFFSGdNLElBQUFBLGNBQWMsRUFBRWhNLEtBRmI7QUFHSHdJLElBQUFBLFNBQVMsRUFBRXZVO0FBSFIsR0EvQnVCO0FBb0M5QndTLEVBQUFBLE9BQU8sRUFBRSxtQkFBWTtBQUNqQixRQUFJQyxJQUFJLEdBQUcsSUFBWCxDQURpQixDQUVqQjs7QUFDQUEsSUFBQUEsSUFBSSxDQUFDNEYsQ0FBTCxDQUFPMEgsVUFBUCxHQUFvQnJsQixDQUFDLENBQUMsZ0JBQUQsQ0FBRCxDQUFvQnlWLEdBQXBCLEVBQXBCO0FBQ0FzQyxJQUFBQSxJQUFJLENBQUM0RixDQUFMLENBQU8ySCxZQUFQLEdBQXNCdGxCLENBQUMsQ0FBQyxrQkFBRCxDQUFELENBQXNCeVYsR0FBdEIsRUFBdEI7QUFDSCxHQXpDNkI7QUEwQzlCbUYsRUFBQUEsT0FBTyxFQUFFO0FBQ0xnSCxJQUFBQSxlQUFlLEVBQUUseUJBQVUzSCxLQUFWLEVBQWlCO0FBQzlCLFVBQUkxTSxNQUFNLEdBQUcsS0FBSzhQLGNBQUwsQ0FBb0J3RSxJQUFwQixDQUF5QixVQUFVeFMsT0FBVixFQUFtQnhJLEtBQW5CLEVBQTBCaWIsS0FBMUIsRUFBaUM7QUFDbkUsZUFBT3pTLE9BQU8sQ0FBQ3hGLEdBQVIsQ0FBWW1LLFdBQVosT0FBOEJpRyxLQUFLLENBQUNwUSxHQUFOLENBQVVtSyxXQUFWLEVBQXJDO0FBQ0gsT0FGWSxDQUFiO0FBR0EsYUFBT3pHLE1BQVA7QUFDSCxLQU5JO0FBT0wyUSxJQUFBQSxhQUFhLEVBQUUsdUJBQVVyVSxHQUFWLEVBQWVnUSxTQUFmLEVBQTBCO0FBQ3JDLGFBQU9oUSxHQUFHLElBQUlBLEdBQUcsQ0FBQ3VSLE9BQUosQ0FBWSxHQUFaLEtBQW9CLENBQUMsQ0FBckIsR0FBeUIsR0FBekIsR0FBK0IsR0FBbkMsQ0FBSCxHQUE2QyxRQUE3QyxHQUF3RHZCLFNBQXhELEdBQW9FLFVBQXBFLEdBQWlGQSxTQUF4RjtBQUNILEtBVEk7QUFVTG9HLElBQUFBLHNCQUFzQixFQUFFLGdDQUFVaEcsS0FBVixFQUFpQjtBQUNyQ2tFLE1BQUFBLEdBQUcsQ0FBQ0YsS0FBSixDQUFVLHNCQUFWLEVBQWtDaEUsS0FBbEM7QUFDSCxLQVpJO0FBYUxpRyxJQUFBQSxXQUFXLEVBQUUscUJBQVVqRyxLQUFWLEVBQWlCO0FBQzFCa0UsTUFBQUEsR0FBRyxDQUFDRixLQUFKLENBQVUsc0JBQVYsRUFBa0NoRSxLQUFsQztBQUNILEtBZkk7QUFnQkxzSSxJQUFBQSxXQUFXLEVBQUUscUJBQVV0SSxLQUFWLEVBQWlCO0FBQzFCa0UsTUFBQUEsR0FBRyxDQUFDRixLQUFKLENBQVUsc0JBQVYsRUFBa0NoRSxLQUFsQztBQUNILEtBbEJJO0FBbUJMc0wsSUFBQUEsU0FBUyxFQUFFLG1CQUFVdEwsS0FBVixFQUFpQjNZLENBQWpCLEVBQW9CO0FBQzNCNmMsTUFBQUEsR0FBRyxDQUFDRixLQUFKLENBQVUseUJBQVYsRUFBcUNoRSxLQUFyQyxFQUE0QzNZLENBQTVDO0FBQ0g7QUFyQkk7QUExQ3FCLENBQWxDO0FDREE7QUFDQStWLEdBQUcsQ0FBQ29HLFNBQUosQ0FBYyxtQkFBZCxFQUFtQztBQUMvQkMsRUFBQUEsUUFBUSxnMEhBRHVCO0FBZ0UvQm5aLEVBQUFBLElBQUksRUFBRSxnQkFBWTtBQUNkLFdBQU87QUFDSG9aLE1BQUFBLENBQUMsRUFBRTtBQURBLEtBQVA7QUFHSCxHQXBFOEI7QUFxRS9CQyxFQUFBQSxLQUFLLEVBQUU7QUFDSHFCLElBQUFBLE1BQU0sRUFBRXBXLE1BREw7QUFFSHFXLElBQUFBLE9BQU8sRUFBRXNHLE9BRk47QUFHSDdFLElBQUFBLGtCQUFrQixFQUFFdFAsS0FIakI7QUFJSGdNLElBQUFBLGNBQWMsRUFBRWhNLEtBSmI7QUFLSHdJLElBQUFBLFNBQVMsRUFBRXZVO0FBTFIsR0FyRXdCO0FBNEUvQndTLEVBQUFBLE9BQU8sRUFBRSxtQkFBWTtBQUNqQixRQUFJQyxJQUFJLEdBQUcsSUFBWDtBQUNBQSxJQUFBQSxJQUFJLENBQUM0RixDQUFMLENBQU84SCxXQUFQLEdBQXFCemxCLENBQUMsQ0FBQyxpQkFBRCxDQUFELENBQXFCeVYsR0FBckIsRUFBckI7QUFDQXNDLElBQUFBLElBQUksQ0FBQzRGLENBQUwsQ0FBTytILFVBQVAsR0FBb0IxbEIsQ0FBQyxDQUFDLGdCQUFELENBQUQsQ0FBb0J5VixHQUFwQixFQUFwQjtBQUNBc0MsSUFBQUEsSUFBSSxDQUFDNEYsQ0FBTCxDQUFPZ0ksZ0JBQVAsR0FBMEIzbEIsQ0FBQyxDQUFDLHNCQUFELENBQUQsQ0FBMEJ5VixHQUExQixFQUExQjtBQUNBc0MsSUFBQUEsSUFBSSxDQUFDNEYsQ0FBTCxDQUFPaUksVUFBUCxHQUFvQjVsQixDQUFDLENBQUMsZ0JBQUQsQ0FBRCxDQUFvQnlWLEdBQXBCLEVBQXBCO0FBQ0FzQyxJQUFBQSxJQUFJLENBQUM0RixDQUFMLENBQU9rSSxVQUFQLEdBQW9CN2xCLENBQUMsQ0FBQyxnQkFBRCxDQUFELENBQW9CeVYsR0FBcEIsRUFBcEI7QUFDQXNDLElBQUFBLElBQUksQ0FBQzRGLENBQUwsQ0FBTzBILFVBQVAsR0FBb0JybEIsQ0FBQyxDQUFDLGdCQUFELENBQUQsQ0FBb0J5VixHQUFwQixFQUFwQjtBQUNBc0MsSUFBQUEsSUFBSSxDQUFDNEYsQ0FBTCxDQUFPMkgsWUFBUCxHQUFzQnRsQixDQUFDLENBQUMsa0JBQUQsQ0FBRCxDQUFzQnlWLEdBQXRCLEVBQXRCO0FBQ0FzQyxJQUFBQSxJQUFJLENBQUM0RixDQUFMLENBQU9tSSxVQUFQLEdBQW9COWxCLENBQUMsQ0FBQyxnQkFBRCxDQUFELENBQW9CeVYsR0FBcEIsRUFBcEI7QUFDSCxHQXRGOEI7QUF1Ri9CbUYsRUFBQUEsT0FBTyxFQUFFO0FBQ0xnSCxJQUFBQSxlQUFlLEVBQUUseUJBQVUzSCxLQUFWLEVBQWlCO0FBQzlCLFVBQUkxTSxNQUFNLEdBQUcsS0FBSzhQLGNBQUwsQ0FBb0J3RSxJQUFwQixDQUF5QixVQUFVeFMsT0FBVixFQUFtQnhJLEtBQW5CLEVBQTBCaWIsS0FBMUIsRUFBaUM7QUFDbkUsZUFBT3pTLE9BQU8sQ0FBQ3hGLEdBQVIsQ0FBWW1LLFdBQVosT0FBOEJpRyxLQUFLLENBQUNwUSxHQUFOLENBQVVtSyxXQUFWLEVBQXJDO0FBQ0gsT0FGWSxDQUFiO0FBR0EsYUFBT3pHLE1BQVA7QUFDSCxLQU5JO0FBT0wyUSxJQUFBQSxhQUFhLEVBQUUsdUJBQVVyVSxHQUFWLEVBQWVnUSxTQUFmLEVBQTBCO0FBQ3JDLGFBQU9oUSxHQUFHLElBQUlBLEdBQUcsQ0FBQ3VSLE9BQUosQ0FBWSxHQUFaLEtBQW9CLENBQUMsQ0FBckIsR0FBeUIsR0FBekIsR0FBK0IsR0FBbkMsQ0FBSCxHQUE2QyxRQUE3QyxHQUF3RHZCLFNBQXhELEdBQW9FLFVBQXBFLEdBQWlGQSxTQUF4RjtBQUNILEtBVEk7QUFVTG1HLElBQUFBLFVBQVUsRUFBRSxvQkFBVUQsT0FBVixFQUFtQjtBQUMzQjVCLE1BQUFBLEdBQUcsQ0FBQ0YsS0FBSixDQUFVLHFCQUFWLEVBQWlDOEIsT0FBakM7QUFDSCxLQVpJO0FBYUxFLElBQUFBLHNCQUFzQixFQUFFLGdDQUFVaEcsS0FBVixFQUFpQjtBQUNyQ2tFLE1BQUFBLEdBQUcsQ0FBQ0YsS0FBSixDQUFVLHNCQUFWLEVBQWtDaEUsS0FBbEM7QUFDSCxLQWZJO0FBZ0JMaUcsSUFBQUEsV0FBVyxFQUFFLHFCQUFVakcsS0FBVixFQUFpQjtBQUMxQmtFLE1BQUFBLEdBQUcsQ0FBQ0YsS0FBSixDQUFVLHNCQUFWLEVBQWtDaEUsS0FBbEM7QUFDSCxLQWxCSTtBQW1CTHNJLElBQUFBLFdBQVcsRUFBRSxxQkFBVXRJLEtBQVYsRUFBaUI7QUFDMUJrRSxNQUFBQSxHQUFHLENBQUNGLEtBQUosQ0FBVSxzQkFBVixFQUFrQ2hFLEtBQWxDO0FBQ0gsS0FyQkk7QUFzQkxzTCxJQUFBQSxTQUFTLEVBQUUsbUJBQVV0TCxLQUFWLEVBQWlCM1ksQ0FBakIsRUFBb0I7QUFDM0I2YyxNQUFBQSxHQUFHLENBQUNGLEtBQUosQ0FBVSx5QkFBVixFQUFxQ2hFLEtBQXJDLEVBQTRDM1ksQ0FBNUM7QUFDSCxLQXhCSTtBQXlCTHlrQixJQUFBQSxhQUFhLEVBQUUsdUJBQVVDLFVBQVYsRUFBcUI7QUFDaEMsVUFBSUMsQ0FBQyxHQUFHLElBQUlwZ0IsSUFBSixDQUFTbWdCLFVBQVQsQ0FBUjtBQUNBLGFBQU9DLENBQUMsQ0FBQ0MsY0FBRixFQUFQO0FBQ0g7QUE1Qkk7QUF2RnNCLENBQW5DO0FDREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTdPLEdBQUcsQ0FBQ29HLFNBQUosQ0FBYyxPQUFkLEVBQXVCO0FBQ25CQyxFQUFBQSxRQUFRLDYxRkFEVztBQStDbkJFLEVBQUFBLEtBQUssRUFBRTtBQUNIdUksSUFBQUEsV0FBVyxFQUFFOVU7QUFEVixHQS9DWTtBQWtEbkI5TSxFQUFBQSxJQUFJLEVBQUUsZ0JBQVk7QUFDZCxXQUFPO0FBQ0g2aEIsTUFBQUEsUUFBUSxFQUFFLEVBRFA7QUFFSEMsTUFBQUEsZUFBZSxFQUFFLENBQUMsRUFBRCxFQUFLLEVBQUwsRUFBUyxFQUFULEVBQWEsR0FBYixDQUZkO0FBR0hDLE1BQUFBLE9BQU8sRUFBRSxDQUhOO0FBSUgzSSxNQUFBQSxDQUFDLEVBQUU7QUFKQSxLQUFQO0FBTUgsR0F6RGtCO0FBMERuQjdGLEVBQUFBLE9BQU8sRUFBRSxtQkFBWTtBQUNqQixRQUFJQyxJQUFJLEdBQUcsSUFBWCxDQURpQixDQUdqQjs7QUFDQUEsSUFBQUEsSUFBSSxDQUFDNEYsQ0FBTCxDQUFPNEksZ0JBQVAsR0FBMEJ2bUIsQ0FBQyxDQUFDLHVCQUFELENBQUQsQ0FBMkJ5VixHQUEzQixFQUExQjtBQUNBc0MsSUFBQUEsSUFBSSxDQUFDNEYsQ0FBTCxDQUFPNkksbUJBQVAsR0FBNkJ4bUIsQ0FBQyxDQUFDLDBCQUFELENBQUQsQ0FBOEJ5VixHQUE5QixFQUE3QjtBQUNBc0MsSUFBQUEsSUFBSSxDQUFDNEYsQ0FBTCxDQUFPOEksZUFBUCxHQUF5QnptQixDQUFDLENBQUMsc0JBQUQsQ0FBRCxDQUEwQnlWLEdBQTFCLEVBQXpCO0FBQ0FzQyxJQUFBQSxJQUFJLENBQUM0RixDQUFMLENBQU8rSSxlQUFQLEdBQXlCMW1CLENBQUMsQ0FBQyxzQkFBRCxDQUFELENBQTBCeVYsR0FBMUIsRUFBekI7QUFDQXNDLElBQUFBLElBQUksQ0FBQzRGLENBQUwsQ0FBT2dKLGtCQUFQLEdBQTRCM21CLENBQUMsQ0FBQywwQkFBRCxDQUFELENBQThCeVYsR0FBOUIsRUFBNUI7QUFDQXNDLElBQUFBLElBQUksQ0FBQzRGLENBQUwsQ0FBT2lKLGNBQVAsR0FBd0I1bUIsQ0FBQyxDQUFDLHFCQUFELENBQUQsQ0FBeUJ5VixHQUF6QixFQUF4QjtBQUNBc0MsSUFBQUEsSUFBSSxDQUFDNEYsQ0FBTCxDQUFPa0osZUFBUCxHQUF5QjdtQixDQUFDLENBQUMsc0JBQUQsQ0FBRCxDQUEwQnlWLEdBQTFCLEVBQXpCO0FBQ0gsR0FyRWtCO0FBc0VuQm1GLEVBQUFBLE9BQU8sRUFBRTtBQUNMa00sSUFBQUEsSUFBSSxFQUFFLGdCQUFZO0FBQ2QsV0FBS1IsT0FBTCxHQUFlLEtBQUtBLE9BQUwsR0FBZSxDQUE5QjtBQUNILEtBSEk7QUFJTFMsSUFBQUEsUUFBUSxFQUFFLG9CQUFZO0FBQ2xCLFdBQUtULE9BQUwsR0FBZSxLQUFLQSxPQUFMLEdBQWUsQ0FBOUI7QUFDSCxLQU5JO0FBT0xVLElBQUFBLE9BQU8sRUFBRSxtQkFBWTtBQUNqQixXQUFLVixPQUFMLEdBQWUsQ0FBZjtBQUNILEtBVEk7QUFVTFcsSUFBQUEsTUFBTSxFQUFFLGtCQUFZO0FBQ2hCLFdBQUtYLE9BQUwsR0FBZSxLQUFLWSxVQUFMLEdBQWtCLENBQWpDO0FBQ0gsS0FaSTtBQWFMQyxJQUFBQSxJQUFJLEVBQUUsY0FBVUMsVUFBVixFQUFzQjtBQUN4QixXQUFLZCxPQUFMLEdBQWVjLFVBQWY7QUFDSDtBQWZJLEdBdEVVO0FBdUZuQmhQLEVBQUFBLFFBQVEsRUFBRTtBQUNOeFIsSUFBQUEsS0FBSyxFQUFFLGlCQUFZO0FBQ2YsYUFBTyxLQUFLdWYsV0FBTCxHQUFtQixLQUFLQSxXQUFMLENBQWlCN2IsTUFBcEMsR0FBNkMsQ0FBcEQ7QUFDSCxLQUhLO0FBSU40YyxJQUFBQSxVQUFVLEVBQUUsc0JBQVk7QUFDcEIsVUFBSUcsS0FBSyxHQUFHeGYsSUFBSSxDQUFDeWYsSUFBTCxDQUFVLEtBQUsxZ0IsS0FBTCxHQUFhLEtBQUt3ZixRQUE1QixDQUFaO0FBQ0EsYUFBT2lCLEtBQUssR0FBRyxDQUFSLEdBQVlBLEtBQVosR0FBb0IsQ0FBM0I7QUFDSCxLQVBLO0FBUU5FLElBQUFBLFVBQVUsRUFBRSxzQkFBWTtBQUNwQixhQUFPLEtBQUtqQixPQUFMLEdBQWUsQ0FBZixJQUFvQixLQUFLWSxVQUFoQztBQUNILEtBVks7QUFXTk0sSUFBQUEsV0FBVyxFQUFFLHVCQUFZO0FBQ3JCLGFBQU8sS0FBS2xCLE9BQUwsS0FBaUIsQ0FBeEI7QUFDSCxLQWJLO0FBY05tQixJQUFBQSxTQUFTLEVBQUUscUJBQVk7QUFDbkIsYUFBTyxDQUFDLEtBQUtGLFVBQWI7QUFDSCxLQWhCSztBQWlCTkcsSUFBQUEsU0FBUyxFQUFFLHFCQUFZO0FBQ25CLGFBQU8sQ0FBQyxLQUFLRixXQUFiO0FBQ0gsS0FuQks7QUFvQk5HLElBQUFBLFVBQVUsRUFBRSxzQkFBWTtBQUNwQixhQUFPLENBQUMsS0FBS0gsV0FBYjtBQUNILEtBdEJLO0FBdUJOSSxJQUFBQSxTQUFTLEVBQUUscUJBQVk7QUFDbkIsYUFBTyxDQUFDLEtBQUtMLFVBQWI7QUFDSCxLQXpCSztBQTBCTjtBQUNBO0FBQ0E7QUFDQU0sSUFBQUEsa0JBQWtCLEVBQUUsOEJBQVk7QUFDNUIsVUFBSUMsS0FBSyxHQUFHLEtBQUsxQixRQUFMLEdBQWdCLEtBQUtFLE9BQWpDO0FBQ0EsVUFBSXlCLEdBQUcsR0FBR0QsS0FBSyxHQUFHLEtBQUsxQixRQUF2QjtBQUNBLFVBQUk3WSxNQUFNLEdBQUcsS0FBSzRZLFdBQUwsQ0FBaUJubEIsS0FBakIsQ0FBdUI4bUIsS0FBdkIsRUFBOEJDLEdBQTlCLENBQWI7QUFDQTVKLE1BQUFBLEdBQUcsQ0FBQ0YsS0FBSixDQUFVLFlBQVYsRUFBd0IxUSxNQUF4QjtBQUNBLGFBQU9BLE1BQVA7QUFDSCxLQW5DSztBQW9DTnlhLElBQUFBLFNBQVMsRUFBRSxxQkFBWTtBQUVuQixVQUFJQyxLQUFLLEdBQUcsRUFBWjtBQUVBQSxNQUFBQSxLQUFLLENBQUN4aEIsSUFBTixDQUFXLEtBQUs2ZixPQUFMLEdBQWUsQ0FBMUIsRUFKbUIsQ0FNbkI7O0FBQ0EsVUFBSTRCLGFBQWEsR0FBRyxLQUFLNUIsT0FBTCxHQUFlLENBQWYsR0FBbUIsS0FBS0EsT0FBeEIsR0FBa0MsQ0FBQyxDQUF2RDtBQUNBMkIsTUFBQUEsS0FBSyxDQUFDeEgsT0FBTixDQUFjeUgsYUFBZDtBQUVBLFVBQUlDLG1CQUFtQixHQUFHLEtBQUs3QixPQUFMLEdBQWUsQ0FBZixHQUFtQixLQUFLQSxPQUFMLEdBQWUsQ0FBbEMsR0FBc0MsQ0FBQyxDQUFqRTtBQUNBMkIsTUFBQUEsS0FBSyxDQUFDeEgsT0FBTixDQUFjMEgsbUJBQWQsRUFYbUIsQ0FjbkI7O0FBQ0EsVUFBSUMsWUFBWSxHQUFHLEtBQUtsQixVQUFMLEdBQWtCLEtBQUtaLE9BQXZCLEdBQWlDLENBQWpDLEdBQXFDLEtBQUtBLE9BQUwsR0FBZSxDQUFwRCxHQUF3RCxDQUFDLENBQTVFO0FBQ0EyQixNQUFBQSxLQUFLLENBQUN4aEIsSUFBTixDQUFXMmhCLFlBQVg7QUFFQSxVQUFJQyxpQkFBaUIsR0FBRyxLQUFLbkIsVUFBTCxHQUFrQixLQUFLWixPQUF2QixHQUFpQyxDQUFqQyxHQUFxQyxLQUFLQSxPQUFMLEdBQWUsQ0FBcEQsR0FBd0QsQ0FBQyxDQUFqRjtBQUNBMkIsTUFBQUEsS0FBSyxDQUFDeGhCLElBQU4sQ0FBVzRoQixpQkFBWDtBQUVBLGFBQU9KLEtBQVA7QUFDSDtBQTFESyxHQXZGUztBQW1KbkJyTCxFQUFBQSxLQUFLLEVBQUU7QUFDSHVKLElBQUFBLFdBQVcsRUFBRSx1QkFBWTtBQUNyQixXQUFLRyxPQUFMLEdBQWUsQ0FBZixDQURxQixDQUNIO0FBQ3JCLEtBSEU7QUFJSEYsSUFBQUEsUUFBUSxFQUFFLG9CQUFZO0FBQ2xCLFdBQUtFLE9BQUwsR0FBZSxDQUFmO0FBQ0g7QUFORTtBQW5KWSxDQUF2QjtBQ0pBO0FBQ0FqUCxHQUFHLENBQUNvRyxTQUFKLENBQWMsZUFBZCxFQUErQjtBQUMzQkMsRUFBQUEsUUFBUSxpUUFEbUI7QUFPM0JFLEVBQUFBLEtBQUssRUFBRTtBQUNIMEssSUFBQUEsT0FBTyxFQUFFemYsTUFETjtBQUVIMGYsSUFBQUEsZUFBZSxFQUFFMWYsTUFGZDtBQUdIMmYsSUFBQUEsR0FBRyxFQUFFaEQ7QUFIRixHQVBvQjtBQVkzQnBOLEVBQUFBLFFBQVEsRUFBRTtBQUNOcVEsSUFBQUEsUUFBUSxFQUFFLG9CQUFZO0FBQ2xCLGFBQU8sS0FBS0gsT0FBTCxDQUFhdFUsV0FBYixNQUE4QixLQUFLdVUsZUFBTCxDQUFxQnZVLFdBQXJCLEVBQXJDO0FBQ0g7QUFISztBQVppQixDQUEvQjtBQ0RBO0FBQ0FxRCxHQUFHLENBQUNvRyxTQUFKLENBQWMsUUFBZCxFQUF3QjtBQUNwQkMsRUFBQUEsUUFBUSxFQUFFO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBVndCO0FBV3BCRSxFQUFBQSxLQUFLLEVBQUU7QUFDSG1FLElBQUFBLEtBQUssRUFBRXhhO0FBREosR0FYYTtBQWNwQndTLEVBQUFBLE9BQU8sRUFBRSxtQkFBWTtBQUNqQixRQUFJaEMsSUFBSSxHQUFHLElBQVg7QUFDQS9YLElBQUFBLENBQUMsQ0FBQyxhQUFELENBQUQsQ0FBaUIwakIsSUFBakIsQ0FBc0Isb0JBQXRCLEVBQTRDLFVBQVVwaUIsQ0FBVixFQUFhaUQsSUFBYixFQUFtQjtBQUMzRCxVQUFJQSxJQUFJLENBQUNvQyxLQUFMLENBQVcsQ0FBWCxFQUFjSCxJQUFkLEtBQXVCdVIsSUFBSSxDQUFDZ0ssS0FBTCxDQUFXdmIsSUFBdEMsRUFBNEM7QUFDeEM7QUFDSDs7QUFDRHVSLE1BQUFBLElBQUksQ0FBQ2dLLEtBQUwsQ0FBVzJHLFVBQVgsR0FBd0IzYixRQUFRLENBQUN4SSxJQUFJLENBQUN5QixNQUFMLEdBQWN6QixJQUFJLENBQUNxQyxLQUFuQixHQUEyQixHQUE1QixFQUFpQyxFQUFqQyxDQUFoQztBQUNILEtBTEQ7QUFPQTVHLElBQUFBLENBQUMsQ0FBQyxhQUFELENBQUQsQ0FBaUIwakIsSUFBakIsQ0FBc0IsZ0JBQXRCLEVBQXdDLFVBQVVwaUIsQ0FBVixFQUFhaUQsSUFBYixFQUFtQjtBQUN2RCxVQUFJQSxJQUFJLENBQUNvQyxLQUFMLENBQVcsQ0FBWCxFQUFjSCxJQUFkLEtBQXVCdVIsSUFBSSxDQUFDZ0ssS0FBTCxDQUFXdmIsSUFBdEMsRUFBNEM7QUFDeEM7QUFDSDs7QUFDRCxVQUFJakMsSUFBSSxDQUFDZ0osTUFBTCxDQUFZNUcsS0FBWixDQUFrQixDQUFsQixFQUFxQjBFLEtBQXpCLEVBQWdDO0FBQzVCME0sUUFBQUEsSUFBSSxDQUFDNFEsYUFBTCxDQUFtQnBrQixJQUFJLENBQUNvQyxLQUFMLENBQVcsQ0FBWCxFQUFjSCxJQUFqQyxFQUF1Q2pDLElBQUksQ0FBQ2dKLE1BQUwsQ0FBWTVHLEtBQVosQ0FBa0IsQ0FBbEIsRUFBcUIwRSxLQUE1RDtBQUNILE9BRkQsTUFFTztBQUNIOFMsUUFBQUEsR0FBRyxDQUFDRixLQUFKLENBQVUsZ0JBQVYsRUFBNEJsRyxJQUFJLENBQUNnSyxLQUFqQztBQUNIO0FBQ0osS0FURDtBQVdBL2hCLElBQUFBLENBQUMsQ0FBQyxhQUFELENBQUQsQ0FBaUIwakIsSUFBakIsQ0FBc0IsZ0JBQXRCLEVBQXdDLFVBQVVwaUIsQ0FBVixFQUFhaUQsSUFBYixFQUFtQjtBQUN2RCxVQUFJQSxJQUFJLENBQUNvQyxLQUFMLENBQVcsQ0FBWCxFQUFjSCxJQUFkLEtBQXVCdVIsSUFBSSxDQUFDZ0ssS0FBTCxDQUFXdmIsSUFBdEMsRUFBNEM7QUFDeEM7QUFDSDs7QUFDRHVSLE1BQUFBLElBQUksQ0FBQzRRLGFBQUwsQ0FBbUJwa0IsSUFBSSxDQUFDb0MsS0FBTCxDQUFXLENBQVgsRUFBY0gsSUFBakMsRUFBd0NqQyxJQUFJLENBQUNpSixVQUE3QztBQUNILEtBTEQ7QUFNSCxHQXhDbUI7QUF5Q3BCb04sRUFBQUEsT0FBTyxFQUFFO0FBQ0wrTixJQUFBQSxhQUFhLEVBQUUsdUJBQVVqZixRQUFWLEVBQW9COUYsT0FBcEIsRUFBNkI7QUFDeEMsVUFBSThGLFFBQVEsS0FBSyxLQUFLcVksS0FBTCxDQUFXdmIsSUFBNUIsRUFBa0M7QUFDOUI7QUFDSDs7QUFDRCxXQUFLdWIsS0FBTCxDQUFXc0IsWUFBWCxHQUEwQnpmLE9BQTFCO0FBQ0F1YSxNQUFBQSxHQUFHLENBQUNGLEtBQUosQ0FBVSxlQUFWLEVBQTJCLEtBQUs4RCxLQUFoQztBQUNILEtBUEk7QUFRTDZHLElBQUFBLGNBQWMsRUFBRSwwQkFBWTtBQUN4QnpLLE1BQUFBLEdBQUcsQ0FBQ0YsS0FBSixDQUFVLGdCQUFWLEVBQTRCLEtBQUs4RCxLQUFqQztBQUNIO0FBVkk7QUF6Q1csQ0FBeEI7QUNEQTtBQUNBMUssR0FBRyxDQUFDb0csU0FBSixDQUFjLFlBQWQsRUFBNEI7QUFDeEJDLEVBQUFBLFFBQVEsRUFBRTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQXRCNEI7QUF1QnhCblosRUFBQUEsSUFBSSxFQUFFLGdCQUFZO0FBQ2QsV0FBTztBQUNIb0MsTUFBQUEsS0FBSyxFQUFFLEVBREo7QUFFSGdYLE1BQUFBLENBQUMsRUFBRSxFQUZBO0FBR0hrTCxNQUFBQSxRQUFRLEVBQUUsS0FIUDtBQUlIQyxNQUFBQSxZQUFZLEVBQUUsQ0FKWDtBQUtIQyxNQUFBQSxVQUFVLEVBQUU7QUFMVCxLQUFQO0FBT0gsR0EvQnVCO0FBZ0N4QmpSLEVBQUFBLE9BQU8sRUFBRSxtQkFBWTtBQUNqQixRQUFJQyxJQUFJLEdBQUcsSUFBWCxDQURpQixDQUVqQjs7QUFDQUEsSUFBQUEsSUFBSSxDQUFDNEYsQ0FBTCxDQUFPcUwsT0FBUCxHQUFpQmhwQixDQUFDLENBQUMsWUFBRCxDQUFELENBQWdCeVYsR0FBaEIsRUFBakI7QUFDQXNDLElBQUFBLElBQUksQ0FBQzRGLENBQUwsQ0FBT2lCLE1BQVAsR0FBZ0I1ZSxDQUFDLENBQUMsV0FBRCxDQUFELENBQWV5VixHQUFmLEVBQWhCO0FBQ0FzQyxJQUFBQSxJQUFJLENBQUM0RixDQUFMLENBQU9zTCxXQUFQLEdBQXFCanBCLENBQUMsQ0FBQyxpQkFBRCxDQUFELENBQXFCeVYsR0FBckIsRUFBckI7QUFDSCxHQXRDdUI7QUF1Q3hCMkMsRUFBQUEsUUFBUSxFQUFFO0FBQ044USxJQUFBQSxTQUFTLEVBQUUscUJBQVk7QUFDbkIsYUFBTyxLQUFLdmlCLEtBQUwsQ0FBVzJELE1BQWxCO0FBQ0g7QUFISyxHQXZDYztBQTRDeEJ5UCxFQUFBQSxPQUFPLEVBQUUsbUJBQVk7QUFDakIsUUFBSWhDLElBQUksR0FBRyxJQUFYO0FBRUEvWCxJQUFBQSxDQUFDLENBQUMsYUFBRCxDQUFELENBQWlCMGpCLElBQWpCLENBQXNCLGVBQXRCLEVBQXVDLFVBQVVwaUIsQ0FBVixFQUFhaUQsSUFBYixFQUFtQjtBQUN0RCxVQUFJLENBQUNBLElBQUksQ0FBQ29DLEtBQVYsRUFBaUI7QUFDYjtBQUNIOztBQUNEcEMsTUFBQUEsSUFBSSxDQUFDb0MsS0FBTCxDQUFXNlIsT0FBWCxDQUFtQixVQUFVMlEsT0FBVixFQUFtQjtBQUNsQyxZQUFJQyxhQUFhLEdBQUdyUixJQUFJLENBQUNwUixLQUFMLENBQVdrYixJQUFYLENBQWdCLFVBQVV3SCxDQUFWLEVBQWE7QUFDN0MsaUJBQU9BLENBQUMsQ0FBQzdpQixJQUFGLElBQVUyaUIsT0FBTyxDQUFDM2lCLElBQXpCO0FBQ0gsU0FGbUIsQ0FBcEI7O0FBSUEsWUFBSSxDQUFDNGlCLGFBQUwsRUFBb0I7QUFDaEJyUixVQUFBQSxJQUFJLENBQUNwUixLQUFMLENBQVdGLElBQVgsQ0FBZ0I7QUFBRUQsWUFBQUEsSUFBSSxFQUFFMmlCLE9BQU8sQ0FBQzNpQixJQUFoQjtBQUFzQmtpQixZQUFBQSxVQUFVLEVBQUUsQ0FBbEM7QUFBcUNyRixZQUFBQSxZQUFZLEVBQUU7QUFBbkQsV0FBaEI7QUFDSCxTQUZELE1BRU87QUFDSDlKLFVBQUFBLE9BQU8sQ0FBQ2xPLEtBQVIsQ0FBYyx1REFBdUQ4ZCxPQUFPLENBQUMzaUIsSUFBN0U7QUFDSDtBQUNKLE9BVkQ7QUFXSCxLQWZEO0FBaUJBMlgsSUFBQUEsR0FBRyxDQUFDbkUsR0FBSixDQUFRLGdCQUFSLEVBQTBCLFVBQVVzUCxVQUFWLEVBQXNCO0FBQzVDdlIsTUFBQUEsSUFBSSxDQUFDcFIsS0FBTCxDQUFXNlIsT0FBWCxDQUFtQixVQUFVOUcsSUFBVixFQUFnQjdLLEtBQWhCLEVBQXVCaWIsS0FBdkIsRUFBOEI7QUFDN0MsWUFBSXBRLElBQUksQ0FBQ2xMLElBQUwsSUFBYThpQixVQUFVLENBQUM5aUIsSUFBNUIsRUFBa0M7QUFDOUJzYixVQUFBQSxLQUFLLENBQUN4SSxNQUFOLENBQWF6UyxLQUFiLEVBQW9CLENBQXBCO0FBQ0g7QUFDSixPQUpEO0FBS0gsS0FORDtBQVFBc1gsSUFBQUEsR0FBRyxDQUFDbkUsR0FBSixDQUFRLGVBQVIsRUFBeUIsVUFBVXNQLFVBQVYsRUFBc0I7QUFDM0N2UixNQUFBQSxJQUFJLENBQUN3UixXQUFMO0FBQ0gsS0FGRDtBQUdILEdBM0V1QjtBQTRFeEIzTyxFQUFBQSxPQUFPLEVBQUU7QUFDTDJPLElBQUFBLFdBQVcsRUFBRSx1QkFBWTtBQUNyQixXQUFLUixVQUFMLEdBQWtCLEtBQUtwaUIsS0FBTCxDQUFXaVosTUFBWCxDQUFrQixVQUFVbE8sSUFBVixFQUFnQjtBQUNoRCxlQUFPQSxJQUFJLENBQUMyUixZQUFMLElBQXFCLEVBQTVCO0FBQ0gsT0FGaUIsRUFFZi9ZLE1BRkg7QUFHQSxXQUFLd2UsWUFBTCxHQUFvQixLQUFLbmlCLEtBQUwsQ0FBVzJELE1BQVgsR0FBb0IsS0FBS3llLFVBQTdDOztBQUNBLFVBQUksS0FBS3BpQixLQUFMLENBQVcyRCxNQUFYLEdBQW9CLENBQXhCLEVBQTJCO0FBQ3ZCLGFBQUt1ZSxRQUFMLEdBQWdCLEtBQWhCO0FBQ0g7QUFDSixLQVRJO0FBVUxJLElBQUFBLFdBQVcsRUFBRSx1QkFBWTtBQUNyQixXQUFLdGlCLEtBQUwsR0FBYSxLQUFLQSxLQUFMLENBQVdpWixNQUFYLENBQWtCLFVBQVVsTyxJQUFWLEVBQWdCO0FBQzNDLGVBQU9BLElBQUksQ0FBQzJSLFlBQUwsSUFBcUIsRUFBNUI7QUFDSCxPQUZZLENBQWI7QUFHSDtBQWRJLEdBNUVlO0FBNEZ4QnpHLEVBQUFBLEtBQUssRUFBRTtBQUNIalcsSUFBQUEsS0FBSyxFQUFFLGlCQUFZO0FBQ2YsV0FBSzRpQixXQUFMO0FBQ0g7QUFIRTtBQTVGaUIsQ0FBNUIiLCJmaWxlIjoibWVkaWEuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogalF1ZXJ5IEZpbGUgVXBsb2FkIFBsdWdpblxuICogaHR0cHM6Ly9naXRodWIuY29tL2JsdWVpbXAvalF1ZXJ5LUZpbGUtVXBsb2FkXG4gKlxuICogQ29weXJpZ2h0IDIwMTAsIFNlYmFzdGlhbiBUc2NoYW5cbiAqIGh0dHBzOi8vYmx1ZWltcC5uZXRcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2U6XG4gKiBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVFxuICovXG5cbi8qIGdsb2JhbCBkZWZpbmUsIHJlcXVpcmUgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5ldy1jYXAgKi9cblxuKGZ1bmN0aW9uIChmYWN0b3J5KSB7XG4gICd1c2Ugc3RyaWN0JztcbiAgaWYgKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCkge1xuICAgIC8vIFJlZ2lzdGVyIGFzIGFuIGFub255bW91cyBBTUQgbW9kdWxlOlxuICAgIGRlZmluZShbJ2pxdWVyeScsICdqcXVlcnktdWkvdWkvd2lkZ2V0J10sIGZhY3RvcnkpO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jykge1xuICAgIC8vIE5vZGUvQ29tbW9uSlM6XG4gICAgZmFjdG9yeShyZXF1aXJlKCdqcXVlcnknKSwgcmVxdWlyZSgnLi92ZW5kb3IvanF1ZXJ5LnVpLndpZGdldCcpKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBCcm93c2VyIGdsb2JhbHM6XG4gICAgZmFjdG9yeSh3aW5kb3cualF1ZXJ5KTtcbiAgfVxufSkoZnVuY3Rpb24gKCQpIHtcbiAgJ3VzZSBzdHJpY3QnO1xuXG4gIC8vIERldGVjdCBmaWxlIGlucHV0IHN1cHBvcnQsIGJhc2VkIG9uXG4gIC8vIGh0dHBzOi8vdmlsamFtaXMuY29tLzIwMTIvZmlsZS11cGxvYWQtc3VwcG9ydC1vbi1tb2JpbGUvXG4gICQuc3VwcG9ydC5maWxlSW5wdXQgPSAhKFxuICAgIG5ldyBSZWdFeHAoXG4gICAgICAvLyBIYW5kbGUgZGV2aWNlcyB3aGljaCBnaXZlIGZhbHNlIHBvc2l0aXZlcyBmb3IgdGhlIGZlYXR1cmUgZGV0ZWN0aW9uOlxuICAgICAgJyhBbmRyb2lkICgxXFxcXC5bMDE1Nl18MlxcXFwuWzAxXSkpJyArXG4gICAgICAgICd8KFdpbmRvd3MgUGhvbmUgKE9TIDd8OFxcXFwuMCkpfChYQkxXUCl8KFp1bmVXUCl8KFdQRGVza3RvcCknICtcbiAgICAgICAgJ3wodyhlYik/T1NCcm93c2VyKXwod2ViT1MpJyArXG4gICAgICAgICd8KEtpbmRsZS8oMVxcXFwuMHwyXFxcXC5bMDVdfDNcXFxcLjApKSdcbiAgICApLnRlc3Qod2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQpIHx8XG4gICAgLy8gRmVhdHVyZSBkZXRlY3Rpb24gZm9yIGFsbCBvdGhlciBkZXZpY2VzOlxuICAgICQoJzxpbnB1dCB0eXBlPVwiZmlsZVwiLz4nKS5wcm9wKCdkaXNhYmxlZCcpXG4gICk7XG5cbiAgLy8gVGhlIEZpbGVSZWFkZXIgQVBJIGlzIG5vdCBhY3R1YWxseSB1c2VkLCBidXQgd29ya3MgYXMgZmVhdHVyZSBkZXRlY3Rpb24sXG4gIC8vIGFzIHNvbWUgU2FmYXJpIHZlcnNpb25zICg1Pykgc3VwcG9ydCBYSFIgZmlsZSB1cGxvYWRzIHZpYSB0aGUgRm9ybURhdGEgQVBJLFxuICAvLyBidXQgbm90IG5vbi1tdWx0aXBhcnQgWEhSIGZpbGUgdXBsb2Fkcy5cbiAgLy8gd2luZG93LlhNTEh0dHBSZXF1ZXN0VXBsb2FkIGlzIG5vdCBhdmFpbGFibGUgb24gSUUxMCwgc28gd2UgY2hlY2sgZm9yXG4gIC8vIHdpbmRvdy5Qcm9ncmVzc0V2ZW50IGluc3RlYWQgdG8gZGV0ZWN0IFhIUjIgZmlsZSB1cGxvYWQgY2FwYWJpbGl0eTpcbiAgJC5zdXBwb3J0LnhockZpbGVVcGxvYWQgPSAhISh3aW5kb3cuUHJvZ3Jlc3NFdmVudCAmJiB3aW5kb3cuRmlsZVJlYWRlcik7XG4gICQuc3VwcG9ydC54aHJGb3JtRGF0YUZpbGVVcGxvYWQgPSAhIXdpbmRvdy5Gb3JtRGF0YTtcblxuICAvLyBEZXRlY3Qgc3VwcG9ydCBmb3IgQmxvYiBzbGljaW5nIChyZXF1aXJlZCBmb3IgY2h1bmtlZCB1cGxvYWRzKTpcbiAgJC5zdXBwb3J0LmJsb2JTbGljZSA9XG4gICAgd2luZG93LkJsb2IgJiZcbiAgICAoQmxvYi5wcm90b3R5cGUuc2xpY2UgfHxcbiAgICAgIEJsb2IucHJvdG90eXBlLndlYmtpdFNsaWNlIHx8XG4gICAgICBCbG9iLnByb3RvdHlwZS5tb3pTbGljZSk7XG5cbiAgLyoqXG4gICAqIEhlbHBlciBmdW5jdGlvbiB0byBjcmVhdGUgZHJhZyBoYW5kbGVycyBmb3IgZHJhZ292ZXIvZHJhZ2VudGVyL2RyYWdsZWF2ZVxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdHlwZSBFdmVudCB0eXBlXG4gICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gRHJhZyBoYW5kbGVyXG4gICAqL1xuICBmdW5jdGlvbiBnZXREcmFnSGFuZGxlcih0eXBlKSB7XG4gICAgdmFyIGlzRHJhZ092ZXIgPSB0eXBlID09PSAnZHJhZ292ZXInO1xuICAgIHJldHVybiBmdW5jdGlvbiAoZSkge1xuICAgICAgZS5kYXRhVHJhbnNmZXIgPSBlLm9yaWdpbmFsRXZlbnQgJiYgZS5vcmlnaW5hbEV2ZW50LmRhdGFUcmFuc2ZlcjtcbiAgICAgIHZhciBkYXRhVHJhbnNmZXIgPSBlLmRhdGFUcmFuc2ZlcjtcbiAgICAgIGlmIChcbiAgICAgICAgZGF0YVRyYW5zZmVyICYmXG4gICAgICAgICQuaW5BcnJheSgnRmlsZXMnLCBkYXRhVHJhbnNmZXIudHlwZXMpICE9PSAtMSAmJlxuICAgICAgICB0aGlzLl90cmlnZ2VyKHR5cGUsICQuRXZlbnQodHlwZSwgeyBkZWxlZ2F0ZWRFdmVudDogZSB9KSkgIT09IGZhbHNlXG4gICAgICApIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBpZiAoaXNEcmFnT3Zlcikge1xuICAgICAgICAgIGRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0ID0gJ2NvcHknO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIC8vIFRoZSBmaWxldXBsb2FkIHdpZGdldCBsaXN0ZW5zIGZvciBjaGFuZ2UgZXZlbnRzIG9uIGZpbGUgaW5wdXQgZmllbGRzIGRlZmluZWRcbiAgLy8gdmlhIGZpbGVJbnB1dCBzZXR0aW5nIGFuZCBwYXN0ZSBvciBkcm9wIGV2ZW50cyBvZiB0aGUgZ2l2ZW4gZHJvcFpvbmUuXG4gIC8vIEluIGFkZGl0aW9uIHRvIHRoZSBkZWZhdWx0IGpRdWVyeSBXaWRnZXQgbWV0aG9kcywgdGhlIGZpbGV1cGxvYWQgd2lkZ2V0XG4gIC8vIGV4cG9zZXMgdGhlIFwiYWRkXCIgYW5kIFwic2VuZFwiIG1ldGhvZHMsIHRvIGFkZCBvciBkaXJlY3RseSBzZW5kIGZpbGVzIHVzaW5nXG4gIC8vIHRoZSBmaWxldXBsb2FkIEFQSS5cbiAgLy8gQnkgZGVmYXVsdCwgZmlsZXMgYWRkZWQgdmlhIGZpbGUgaW5wdXQgc2VsZWN0aW9uLCBwYXN0ZSwgZHJhZyAmIGRyb3Agb3JcbiAgLy8gXCJhZGRcIiBtZXRob2QgYXJlIHVwbG9hZGVkIGltbWVkaWF0ZWx5LCBidXQgaXQgaXMgcG9zc2libGUgdG8gb3ZlcnJpZGVcbiAgLy8gdGhlIFwiYWRkXCIgY2FsbGJhY2sgb3B0aW9uIHRvIHF1ZXVlIGZpbGUgdXBsb2Fkcy5cbiAgJC53aWRnZXQoJ2JsdWVpbXAuZmlsZXVwbG9hZCcsIHtcbiAgICBvcHRpb25zOiB7XG4gICAgICAvLyBUaGUgZHJvcCB0YXJnZXQgZWxlbWVudChzKSwgYnkgdGhlIGRlZmF1bHQgdGhlIGNvbXBsZXRlIGRvY3VtZW50LlxuICAgICAgLy8gU2V0IHRvIG51bGwgdG8gZGlzYWJsZSBkcmFnICYgZHJvcCBzdXBwb3J0OlxuICAgICAgZHJvcFpvbmU6ICQoZG9jdW1lbnQpLFxuICAgICAgLy8gVGhlIHBhc3RlIHRhcmdldCBlbGVtZW50KHMpLCBieSB0aGUgZGVmYXVsdCB1bmRlZmluZWQuXG4gICAgICAvLyBTZXQgdG8gYSBET00gbm9kZSBvciBqUXVlcnkgb2JqZWN0IHRvIGVuYWJsZSBmaWxlIHBhc3Rpbmc6XG4gICAgICBwYXN0ZVpvbmU6IHVuZGVmaW5lZCxcbiAgICAgIC8vIFRoZSBmaWxlIGlucHV0IGZpZWxkKHMpLCB0aGF0IGFyZSBsaXN0ZW5lZCB0byBmb3IgY2hhbmdlIGV2ZW50cy5cbiAgICAgIC8vIElmIHVuZGVmaW5lZCwgaXQgaXMgc2V0IHRvIHRoZSBmaWxlIGlucHV0IGZpZWxkcyBpbnNpZGVcbiAgICAgIC8vIG9mIHRoZSB3aWRnZXQgZWxlbWVudCBvbiBwbHVnaW4gaW5pdGlhbGl6YXRpb24uXG4gICAgICAvLyBTZXQgdG8gbnVsbCB0byBkaXNhYmxlIHRoZSBjaGFuZ2UgbGlzdGVuZXIuXG4gICAgICBmaWxlSW5wdXQ6IHVuZGVmaW5lZCxcbiAgICAgIC8vIEJ5IGRlZmF1bHQsIHRoZSBmaWxlIGlucHV0IGZpZWxkIGlzIHJlcGxhY2VkIHdpdGggYSBjbG9uZSBhZnRlclxuICAgICAgLy8gZWFjaCBpbnB1dCBmaWVsZCBjaGFuZ2UgZXZlbnQuIFRoaXMgaXMgcmVxdWlyZWQgZm9yIGlmcmFtZSB0cmFuc3BvcnRcbiAgICAgIC8vIHF1ZXVlcyBhbmQgYWxsb3dzIGNoYW5nZSBldmVudHMgdG8gYmUgZmlyZWQgZm9yIHRoZSBzYW1lIGZpbGVcbiAgICAgIC8vIHNlbGVjdGlvbiwgYnV0IGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBmb2xsb3dpbmcgb3B0aW9uIHRvIGZhbHNlOlxuICAgICAgcmVwbGFjZUZpbGVJbnB1dDogdHJ1ZSxcbiAgICAgIC8vIFRoZSBwYXJhbWV0ZXIgbmFtZSBmb3IgdGhlIGZpbGUgZm9ybSBkYXRhICh0aGUgcmVxdWVzdCBhcmd1bWVudCBuYW1lKS5cbiAgICAgIC8vIElmIHVuZGVmaW5lZCBvciBlbXB0eSwgdGhlIG5hbWUgcHJvcGVydHkgb2YgdGhlIGZpbGUgaW5wdXQgZmllbGQgaXNcbiAgICAgIC8vIHVzZWQsIG9yIFwiZmlsZXNbXVwiIGlmIHRoZSBmaWxlIGlucHV0IG5hbWUgcHJvcGVydHkgaXMgYWxzbyBlbXB0eSxcbiAgICAgIC8vIGNhbiBiZSBhIHN0cmluZyBvciBhbiBhcnJheSBvZiBzdHJpbmdzOlxuICAgICAgcGFyYW1OYW1lOiB1bmRlZmluZWQsXG4gICAgICAvLyBCeSBkZWZhdWx0LCBlYWNoIGZpbGUgb2YgYSBzZWxlY3Rpb24gaXMgdXBsb2FkZWQgdXNpbmcgYW4gaW5kaXZpZHVhbFxuICAgICAgLy8gcmVxdWVzdCBmb3IgWEhSIHR5cGUgdXBsb2Fkcy4gU2V0IHRvIGZhbHNlIHRvIHVwbG9hZCBmaWxlXG4gICAgICAvLyBzZWxlY3Rpb25zIGluIG9uZSByZXF1ZXN0IGVhY2g6XG4gICAgICBzaW5nbGVGaWxlVXBsb2FkczogdHJ1ZSxcbiAgICAgIC8vIFRvIGxpbWl0IHRoZSBudW1iZXIgb2YgZmlsZXMgdXBsb2FkZWQgd2l0aCBvbmUgWEhSIHJlcXVlc3QsXG4gICAgICAvLyBzZXQgdGhlIGZvbGxvd2luZyBvcHRpb24gdG8gYW4gaW50ZWdlciBncmVhdGVyIHRoYW4gMDpcbiAgICAgIGxpbWl0TXVsdGlGaWxlVXBsb2FkczogdW5kZWZpbmVkLFxuICAgICAgLy8gVGhlIGZvbGxvd2luZyBvcHRpb24gbGltaXRzIHRoZSBudW1iZXIgb2YgZmlsZXMgdXBsb2FkZWQgd2l0aCBvbmVcbiAgICAgIC8vIFhIUiByZXF1ZXN0IHRvIGtlZXAgdGhlIHJlcXVlc3Qgc2l6ZSB1bmRlciBvciBlcXVhbCB0byB0aGUgZGVmaW5lZFxuICAgICAgLy8gbGltaXQgaW4gYnl0ZXM6XG4gICAgICBsaW1pdE11bHRpRmlsZVVwbG9hZFNpemU6IHVuZGVmaW5lZCxcbiAgICAgIC8vIE11bHRpcGFydCBmaWxlIHVwbG9hZHMgYWRkIGEgbnVtYmVyIG9mIGJ5dGVzIHRvIGVhY2ggdXBsb2FkZWQgZmlsZSxcbiAgICAgIC8vIHRoZXJlZm9yZSB0aGUgZm9sbG93aW5nIG9wdGlvbiBhZGRzIGFuIG92ZXJoZWFkIGZvciBlYWNoIGZpbGUgdXNlZFxuICAgICAgLy8gaW4gdGhlIGxpbWl0TXVsdGlGaWxlVXBsb2FkU2l6ZSBjb25maWd1cmF0aW9uOlxuICAgICAgbGltaXRNdWx0aUZpbGVVcGxvYWRTaXplT3ZlcmhlYWQ6IDUxMixcbiAgICAgIC8vIFNldCB0aGUgZm9sbG93aW5nIG9wdGlvbiB0byB0cnVlIHRvIGlzc3VlIGFsbCBmaWxlIHVwbG9hZCByZXF1ZXN0c1xuICAgICAgLy8gaW4gYSBzZXF1ZW50aWFsIG9yZGVyOlxuICAgICAgc2VxdWVudGlhbFVwbG9hZHM6IGZhbHNlLFxuICAgICAgLy8gVG8gbGltaXQgdGhlIG51bWJlciBvZiBjb25jdXJyZW50IHVwbG9hZHMsXG4gICAgICAvLyBzZXQgdGhlIGZvbGxvd2luZyBvcHRpb24gdG8gYW4gaW50ZWdlciBncmVhdGVyIHRoYW4gMDpcbiAgICAgIGxpbWl0Q29uY3VycmVudFVwbG9hZHM6IHVuZGVmaW5lZCxcbiAgICAgIC8vIFNldCB0aGUgZm9sbG93aW5nIG9wdGlvbiB0byB0cnVlIHRvIGZvcmNlIGlmcmFtZSB0cmFuc3BvcnQgdXBsb2FkczpcbiAgICAgIGZvcmNlSWZyYW1lVHJhbnNwb3J0OiBmYWxzZSxcbiAgICAgIC8vIFNldCB0aGUgZm9sbG93aW5nIG9wdGlvbiB0byB0aGUgbG9jYXRpb24gb2YgYSByZWRpcmVjdCB1cmwgb24gdGhlXG4gICAgICAvLyBvcmlnaW4gc2VydmVyLCBmb3IgY3Jvc3MtZG9tYWluIGlmcmFtZSB0cmFuc3BvcnQgdXBsb2FkczpcbiAgICAgIHJlZGlyZWN0OiB1bmRlZmluZWQsXG4gICAgICAvLyBUaGUgcGFyYW1ldGVyIG5hbWUgZm9yIHRoZSByZWRpcmVjdCB1cmwsIHNlbnQgYXMgcGFydCBvZiB0aGUgZm9ybVxuICAgICAgLy8gZGF0YSBhbmQgc2V0IHRvICdyZWRpcmVjdCcgaWYgdGhpcyBvcHRpb24gaXMgZW1wdHk6XG4gICAgICByZWRpcmVjdFBhcmFtTmFtZTogdW5kZWZpbmVkLFxuICAgICAgLy8gU2V0IHRoZSBmb2xsb3dpbmcgb3B0aW9uIHRvIHRoZSBsb2NhdGlvbiBvZiBhIHBvc3RNZXNzYWdlIHdpbmRvdyxcbiAgICAgIC8vIHRvIGVuYWJsZSBwb3N0TWVzc2FnZSB0cmFuc3BvcnQgdXBsb2FkczpcbiAgICAgIHBvc3RNZXNzYWdlOiB1bmRlZmluZWQsXG4gICAgICAvLyBCeSBkZWZhdWx0LCBYSFIgZmlsZSB1cGxvYWRzIGFyZSBzZW50IGFzIG11bHRpcGFydC9mb3JtLWRhdGEuXG4gICAgICAvLyBUaGUgaWZyYW1lIHRyYW5zcG9ydCBpcyBhbHdheXMgdXNpbmcgbXVsdGlwYXJ0L2Zvcm0tZGF0YS5cbiAgICAgIC8vIFNldCB0byBmYWxzZSB0byBlbmFibGUgbm9uLW11bHRpcGFydCBYSFIgdXBsb2FkczpcbiAgICAgIG11bHRpcGFydDogdHJ1ZSxcbiAgICAgIC8vIFRvIHVwbG9hZCBsYXJnZSBmaWxlcyBpbiBzbWFsbGVyIGNodW5rcywgc2V0IHRoZSBmb2xsb3dpbmcgb3B0aW9uXG4gICAgICAvLyB0byBhIHByZWZlcnJlZCBtYXhpbXVtIGNodW5rIHNpemUuIElmIHNldCB0byAwLCBudWxsIG9yIHVuZGVmaW5lZCxcbiAgICAgIC8vIG9yIHRoZSBicm93c2VyIGRvZXMgbm90IHN1cHBvcnQgdGhlIHJlcXVpcmVkIEJsb2IgQVBJLCBmaWxlcyB3aWxsXG4gICAgICAvLyBiZSB1cGxvYWRlZCBhcyBhIHdob2xlLlxuICAgICAgbWF4Q2h1bmtTaXplOiB1bmRlZmluZWQsXG4gICAgICAvLyBXaGVuIGEgbm9uLW11bHRpcGFydCB1cGxvYWQgb3IgYSBjaHVua2VkIG11bHRpcGFydCB1cGxvYWQgaGFzIGJlZW5cbiAgICAgIC8vIGFib3J0ZWQsIHRoaXMgb3B0aW9uIGNhbiBiZSB1c2VkIHRvIHJlc3VtZSB0aGUgdXBsb2FkIGJ5IHNldHRpbmdcbiAgICAgIC8vIGl0IHRvIHRoZSBzaXplIG9mIHRoZSBhbHJlYWR5IHVwbG9hZGVkIGJ5dGVzLiBUaGlzIG9wdGlvbiBpcyBtb3N0XG4gICAgICAvLyB1c2VmdWwgd2hlbiBtb2RpZnlpbmcgdGhlIG9wdGlvbnMgb2JqZWN0IGluc2lkZSBvZiB0aGUgXCJhZGRcIiBvclxuICAgICAgLy8gXCJzZW5kXCIgY2FsbGJhY2tzLCBhcyB0aGUgb3B0aW9ucyBhcmUgY2xvbmVkIGZvciBlYWNoIGZpbGUgdXBsb2FkLlxuICAgICAgdXBsb2FkZWRCeXRlczogdW5kZWZpbmVkLFxuICAgICAgLy8gQnkgZGVmYXVsdCwgZmFpbGVkIChhYm9ydCBvciBlcnJvcikgZmlsZSB1cGxvYWRzIGFyZSByZW1vdmVkIGZyb20gdGhlXG4gICAgICAvLyBnbG9iYWwgcHJvZ3Jlc3MgY2FsY3VsYXRpb24uIFNldCB0aGUgZm9sbG93aW5nIG9wdGlvbiB0byBmYWxzZSB0b1xuICAgICAgLy8gcHJldmVudCByZWNhbGN1bGF0aW5nIHRoZSBnbG9iYWwgcHJvZ3Jlc3MgZGF0YTpcbiAgICAgIHJlY2FsY3VsYXRlUHJvZ3Jlc3M6IHRydWUsXG4gICAgICAvLyBJbnRlcnZhbCBpbiBtaWxsaXNlY29uZHMgdG8gY2FsY3VsYXRlIGFuZCB0cmlnZ2VyIHByb2dyZXNzIGV2ZW50czpcbiAgICAgIHByb2dyZXNzSW50ZXJ2YWw6IDEwMCxcbiAgICAgIC8vIEludGVydmFsIGluIG1pbGxpc2Vjb25kcyB0byBjYWxjdWxhdGUgcHJvZ3Jlc3MgYml0cmF0ZTpcbiAgICAgIGJpdHJhdGVJbnRlcnZhbDogNTAwLFxuICAgICAgLy8gQnkgZGVmYXVsdCwgdXBsb2FkcyBhcmUgc3RhcnRlZCBhdXRvbWF0aWNhbGx5IHdoZW4gYWRkaW5nIGZpbGVzOlxuICAgICAgYXV0b1VwbG9hZDogdHJ1ZSxcbiAgICAgIC8vIEJ5IGRlZmF1bHQsIGR1cGxpY2F0ZSBmaWxlIG5hbWVzIGFyZSBleHBlY3RlZCB0byBiZSBoYW5kbGVkIG9uXG4gICAgICAvLyB0aGUgc2VydmVyLXNpZGUuIElmIHRoaXMgaXMgbm90IHBvc3NpYmxlIChlLmcuIHdoZW4gdXBsb2FkaW5nXG4gICAgICAvLyBmaWxlcyBkaXJlY3RseSB0byBBbWF6b24gUzMpLCB0aGUgZm9sbG93aW5nIG9wdGlvbiBjYW4gYmUgc2V0IHRvXG4gICAgICAvLyBhbiBlbXB0eSBvYmplY3Qgb3IgYW4gb2JqZWN0IG1hcHBpbmcgZXhpc3RpbmcgZmlsZW5hbWVzLCBlLmcuOlxuICAgICAgLy8geyBcImltYWdlLmpwZ1wiOiB0cnVlLCBcImltYWdlICgxKS5qcGdcIjogdHJ1ZSB9XG4gICAgICAvLyBJZiBpdCBpcyBzZXQsIGFsbCBmaWxlcyB3aWxsIGJlIHVwbG9hZGVkIHdpdGggdW5pcXVlIGZpbGVuYW1lcyxcbiAgICAgIC8vIGFkZGluZyBpbmNyZWFzaW5nIG51bWJlciBzdWZmaXhlcyBpZiBuZWNlc3NhcnksIGUuZy46XG4gICAgICAvLyBcImltYWdlICgyKS5qcGdcIlxuICAgICAgdW5pcXVlRmlsZW5hbWVzOiB1bmRlZmluZWQsXG5cbiAgICAgIC8vIEVycm9yIGFuZCBpbmZvIG1lc3NhZ2VzOlxuICAgICAgbWVzc2FnZXM6IHtcbiAgICAgICAgdXBsb2FkZWRCeXRlczogJ1VwbG9hZGVkIGJ5dGVzIGV4Y2VlZCBmaWxlIHNpemUnXG4gICAgICB9LFxuXG4gICAgICAvLyBUcmFuc2xhdGlvbiBmdW5jdGlvbiwgZ2V0cyB0aGUgbWVzc2FnZSBrZXkgdG8gYmUgdHJhbnNsYXRlZFxuICAgICAgLy8gYW5kIGFuIG9iamVjdCB3aXRoIGNvbnRleHQgc3BlY2lmaWMgZGF0YSBhcyBhcmd1bWVudHM6XG4gICAgICBpMThuOiBmdW5jdGlvbiAobWVzc2FnZSwgY29udGV4dCkge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgICAgICAgbWVzc2FnZSA9IHRoaXMubWVzc2FnZXNbbWVzc2FnZV0gfHwgbWVzc2FnZS50b1N0cmluZygpO1xuICAgICAgICBpZiAoY29udGV4dCkge1xuICAgICAgICAgICQuZWFjaChjb250ZXh0LCBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgICAgICAgICBtZXNzYWdlID0gbWVzc2FnZS5yZXBsYWNlKCd7JyArIGtleSArICd9JywgdmFsdWUpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtZXNzYWdlO1xuICAgICAgfSxcblxuICAgICAgLy8gQWRkaXRpb25hbCBmb3JtIGRhdGEgdG8gYmUgc2VudCBhbG9uZyB3aXRoIHRoZSBmaWxlIHVwbG9hZHMgY2FuIGJlIHNldFxuICAgICAgLy8gdXNpbmcgdGhpcyBvcHRpb24sIHdoaWNoIGFjY2VwdHMgYW4gYXJyYXkgb2Ygb2JqZWN0cyB3aXRoIG5hbWUgYW5kXG4gICAgICAvLyB2YWx1ZSBwcm9wZXJ0aWVzLCBhIGZ1bmN0aW9uIHJldHVybmluZyBzdWNoIGFuIGFycmF5LCBhIEZvcm1EYXRhXG4gICAgICAvLyBvYmplY3QgKGZvciBYSFIgZmlsZSB1cGxvYWRzKSwgb3IgYSBzaW1wbGUgb2JqZWN0LlxuICAgICAgLy8gVGhlIGZvcm0gb2YgdGhlIGZpcnN0IGZpbGVJbnB1dCBpcyBnaXZlbiBhcyBwYXJhbWV0ZXIgdG8gdGhlIGZ1bmN0aW9uOlxuICAgICAgZm9ybURhdGE6IGZ1bmN0aW9uIChmb3JtKSB7XG4gICAgICAgIHJldHVybiBmb3JtLnNlcmlhbGl6ZUFycmF5KCk7XG4gICAgICB9LFxuXG4gICAgICAvLyBUaGUgYWRkIGNhbGxiYWNrIGlzIGludm9rZWQgYXMgc29vbiBhcyBmaWxlcyBhcmUgYWRkZWQgdG8gdGhlIGZpbGV1cGxvYWRcbiAgICAgIC8vIHdpZGdldCAodmlhIGZpbGUgaW5wdXQgc2VsZWN0aW9uLCBkcmFnICYgZHJvcCwgcGFzdGUgb3IgYWRkIEFQSSBjYWxsKS5cbiAgICAgIC8vIElmIHRoZSBzaW5nbGVGaWxlVXBsb2FkcyBvcHRpb24gaXMgZW5hYmxlZCwgdGhpcyBjYWxsYmFjayB3aWxsIGJlXG4gICAgICAvLyBjYWxsZWQgb25jZSBmb3IgZWFjaCBmaWxlIGluIHRoZSBzZWxlY3Rpb24gZm9yIFhIUiBmaWxlIHVwbG9hZHMsIGVsc2VcbiAgICAgIC8vIG9uY2UgZm9yIGVhY2ggZmlsZSBzZWxlY3Rpb24uXG4gICAgICAvL1xuICAgICAgLy8gVGhlIHVwbG9hZCBzdGFydHMgd2hlbiB0aGUgc3VibWl0IG1ldGhvZCBpcyBpbnZva2VkIG9uIHRoZSBkYXRhIHBhcmFtZXRlci5cbiAgICAgIC8vIFRoZSBkYXRhIG9iamVjdCBjb250YWlucyBhIGZpbGVzIHByb3BlcnR5IGhvbGRpbmcgdGhlIGFkZGVkIGZpbGVzXG4gICAgICAvLyBhbmQgYWxsb3dzIHlvdSB0byBvdmVycmlkZSBwbHVnaW4gb3B0aW9ucyBhcyB3ZWxsIGFzIGRlZmluZSBhamF4IHNldHRpbmdzLlxuICAgICAgLy9cbiAgICAgIC8vIExpc3RlbmVycyBmb3IgdGhpcyBjYWxsYmFjayBjYW4gYWxzbyBiZSBib3VuZCB0aGUgZm9sbG93aW5nIHdheTpcbiAgICAgIC8vIC5vbignZmlsZXVwbG9hZGFkZCcsIGZ1bmMpO1xuICAgICAgLy9cbiAgICAgIC8vIGRhdGEuc3VibWl0KCkgcmV0dXJucyBhIFByb21pc2Ugb2JqZWN0IGFuZCBhbGxvd3MgdG8gYXR0YWNoIGFkZGl0aW9uYWxcbiAgICAgIC8vIGhhbmRsZXJzIHVzaW5nIGpRdWVyeSdzIERlZmVycmVkIGNhbGxiYWNrczpcbiAgICAgIC8vIGRhdGEuc3VibWl0KCkuZG9uZShmdW5jKS5mYWlsKGZ1bmMpLmFsd2F5cyhmdW5jKTtcbiAgICAgIGFkZDogZnVuY3Rpb24gKGUsIGRhdGEpIHtcbiAgICAgICAgaWYgKGUuaXNEZWZhdWx0UHJldmVudGVkKCkpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFxuICAgICAgICAgIGRhdGEuYXV0b1VwbG9hZCB8fFxuICAgICAgICAgIChkYXRhLmF1dG9VcGxvYWQgIT09IGZhbHNlICYmXG4gICAgICAgICAgICAkKHRoaXMpLmZpbGV1cGxvYWQoJ29wdGlvbicsICdhdXRvVXBsb2FkJykpXG4gICAgICAgICkge1xuICAgICAgICAgIGRhdGEucHJvY2VzcygpLmRvbmUoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZGF0YS5zdWJtaXQoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSxcblxuICAgICAgLy8gT3RoZXIgY2FsbGJhY2tzOlxuXG4gICAgICAvLyBDYWxsYmFjayBmb3IgdGhlIHN1Ym1pdCBldmVudCBvZiBlYWNoIGZpbGUgdXBsb2FkOlxuICAgICAgLy8gc3VibWl0OiBmdW5jdGlvbiAoZSwgZGF0YSkge30sIC8vIC5vbignZmlsZXVwbG9hZHN1Ym1pdCcsIGZ1bmMpO1xuXG4gICAgICAvLyBDYWxsYmFjayBmb3IgdGhlIHN0YXJ0IG9mIGVhY2ggZmlsZSB1cGxvYWQgcmVxdWVzdDpcbiAgICAgIC8vIHNlbmQ6IGZ1bmN0aW9uIChlLCBkYXRhKSB7fSwgLy8gLm9uKCdmaWxldXBsb2Fkc2VuZCcsIGZ1bmMpO1xuXG4gICAgICAvLyBDYWxsYmFjayBmb3Igc3VjY2Vzc2Z1bCB1cGxvYWRzOlxuICAgICAgLy8gZG9uZTogZnVuY3Rpb24gKGUsIGRhdGEpIHt9LCAvLyAub24oJ2ZpbGV1cGxvYWRkb25lJywgZnVuYyk7XG5cbiAgICAgIC8vIENhbGxiYWNrIGZvciBmYWlsZWQgKGFib3J0IG9yIGVycm9yKSB1cGxvYWRzOlxuICAgICAgLy8gZmFpbDogZnVuY3Rpb24gKGUsIGRhdGEpIHt9LCAvLyAub24oJ2ZpbGV1cGxvYWRmYWlsJywgZnVuYyk7XG5cbiAgICAgIC8vIENhbGxiYWNrIGZvciBjb21wbGV0ZWQgKHN1Y2Nlc3MsIGFib3J0IG9yIGVycm9yKSByZXF1ZXN0czpcbiAgICAgIC8vIGFsd2F5czogZnVuY3Rpb24gKGUsIGRhdGEpIHt9LCAvLyAub24oJ2ZpbGV1cGxvYWRhbHdheXMnLCBmdW5jKTtcblxuICAgICAgLy8gQ2FsbGJhY2sgZm9yIHVwbG9hZCBwcm9ncmVzcyBldmVudHM6XG4gICAgICAvLyBwcm9ncmVzczogZnVuY3Rpb24gKGUsIGRhdGEpIHt9LCAvLyAub24oJ2ZpbGV1cGxvYWRwcm9ncmVzcycsIGZ1bmMpO1xuXG4gICAgICAvLyBDYWxsYmFjayBmb3IgZ2xvYmFsIHVwbG9hZCBwcm9ncmVzcyBldmVudHM6XG4gICAgICAvLyBwcm9ncmVzc2FsbDogZnVuY3Rpb24gKGUsIGRhdGEpIHt9LCAvLyAub24oJ2ZpbGV1cGxvYWRwcm9ncmVzc2FsbCcsIGZ1bmMpO1xuXG4gICAgICAvLyBDYWxsYmFjayBmb3IgdXBsb2FkcyBzdGFydCwgZXF1aXZhbGVudCB0byB0aGUgZ2xvYmFsIGFqYXhTdGFydCBldmVudDpcbiAgICAgIC8vIHN0YXJ0OiBmdW5jdGlvbiAoZSkge30sIC8vIC5vbignZmlsZXVwbG9hZHN0YXJ0JywgZnVuYyk7XG5cbiAgICAgIC8vIENhbGxiYWNrIGZvciB1cGxvYWRzIHN0b3AsIGVxdWl2YWxlbnQgdG8gdGhlIGdsb2JhbCBhamF4U3RvcCBldmVudDpcbiAgICAgIC8vIHN0b3A6IGZ1bmN0aW9uIChlKSB7fSwgLy8gLm9uKCdmaWxldXBsb2Fkc3RvcCcsIGZ1bmMpO1xuXG4gICAgICAvLyBDYWxsYmFjayBmb3IgY2hhbmdlIGV2ZW50cyBvZiB0aGUgZmlsZUlucHV0KHMpOlxuICAgICAgLy8gY2hhbmdlOiBmdW5jdGlvbiAoZSwgZGF0YSkge30sIC8vIC5vbignZmlsZXVwbG9hZGNoYW5nZScsIGZ1bmMpO1xuXG4gICAgICAvLyBDYWxsYmFjayBmb3IgcGFzdGUgZXZlbnRzIHRvIHRoZSBwYXN0ZVpvbmUocyk6XG4gICAgICAvLyBwYXN0ZTogZnVuY3Rpb24gKGUsIGRhdGEpIHt9LCAvLyAub24oJ2ZpbGV1cGxvYWRwYXN0ZScsIGZ1bmMpO1xuXG4gICAgICAvLyBDYWxsYmFjayBmb3IgZHJvcCBldmVudHMgb2YgdGhlIGRyb3Bab25lKHMpOlxuICAgICAgLy8gZHJvcDogZnVuY3Rpb24gKGUsIGRhdGEpIHt9LCAvLyAub24oJ2ZpbGV1cGxvYWRkcm9wJywgZnVuYyk7XG5cbiAgICAgIC8vIENhbGxiYWNrIGZvciBkcmFnb3ZlciBldmVudHMgb2YgdGhlIGRyb3Bab25lKHMpOlxuICAgICAgLy8gZHJhZ292ZXI6IGZ1bmN0aW9uIChlKSB7fSwgLy8gLm9uKCdmaWxldXBsb2FkZHJhZ292ZXInLCBmdW5jKTtcblxuICAgICAgLy8gQ2FsbGJhY2sgYmVmb3JlIHRoZSBzdGFydCBvZiBlYWNoIGNodW5rIHVwbG9hZCByZXF1ZXN0IChiZWZvcmUgZm9ybSBkYXRhIGluaXRpYWxpemF0aW9uKTpcbiAgICAgIC8vIGNodW5rYmVmb3Jlc2VuZDogZnVuY3Rpb24gKGUsIGRhdGEpIHt9LCAvLyAub24oJ2ZpbGV1cGxvYWRjaHVua2JlZm9yZXNlbmQnLCBmdW5jKTtcblxuICAgICAgLy8gQ2FsbGJhY2sgZm9yIHRoZSBzdGFydCBvZiBlYWNoIGNodW5rIHVwbG9hZCByZXF1ZXN0OlxuICAgICAgLy8gY2h1bmtzZW5kOiBmdW5jdGlvbiAoZSwgZGF0YSkge30sIC8vIC5vbignZmlsZXVwbG9hZGNodW5rc2VuZCcsIGZ1bmMpO1xuXG4gICAgICAvLyBDYWxsYmFjayBmb3Igc3VjY2Vzc2Z1bCBjaHVuayB1cGxvYWRzOlxuICAgICAgLy8gY2h1bmtkb25lOiBmdW5jdGlvbiAoZSwgZGF0YSkge30sIC8vIC5vbignZmlsZXVwbG9hZGNodW5rZG9uZScsIGZ1bmMpO1xuXG4gICAgICAvLyBDYWxsYmFjayBmb3IgZmFpbGVkIChhYm9ydCBvciBlcnJvcikgY2h1bmsgdXBsb2FkczpcbiAgICAgIC8vIGNodW5rZmFpbDogZnVuY3Rpb24gKGUsIGRhdGEpIHt9LCAvLyAub24oJ2ZpbGV1cGxvYWRjaHVua2ZhaWwnLCBmdW5jKTtcblxuICAgICAgLy8gQ2FsbGJhY2sgZm9yIGNvbXBsZXRlZCAoc3VjY2VzcywgYWJvcnQgb3IgZXJyb3IpIGNodW5rIHVwbG9hZCByZXF1ZXN0czpcbiAgICAgIC8vIGNodW5rYWx3YXlzOiBmdW5jdGlvbiAoZSwgZGF0YSkge30sIC8vIC5vbignZmlsZXVwbG9hZGNodW5rYWx3YXlzJywgZnVuYyk7XG5cbiAgICAgIC8vIFRoZSBwbHVnaW4gb3B0aW9ucyBhcmUgdXNlZCBhcyBzZXR0aW5ncyBvYmplY3QgZm9yIHRoZSBhamF4IGNhbGxzLlxuICAgICAgLy8gVGhlIGZvbGxvd2luZyBhcmUgalF1ZXJ5IGFqYXggc2V0dGluZ3MgcmVxdWlyZWQgZm9yIHRoZSBmaWxlIHVwbG9hZHM6XG4gICAgICBwcm9jZXNzRGF0YTogZmFsc2UsXG4gICAgICBjb250ZW50VHlwZTogZmFsc2UsXG4gICAgICBjYWNoZTogZmFsc2UsXG4gICAgICB0aW1lb3V0OiAwXG4gICAgfSxcblxuICAgIC8vIGpRdWVyeSB2ZXJzaW9ucyBiZWZvcmUgMS44IHJlcXVpcmUgcHJvbWlzZS5waXBlIGlmIHRoZSByZXR1cm4gdmFsdWUgaXNcbiAgICAvLyB1c2VkLCBhcyBwcm9taXNlLnRoZW4gaW4gb2xkZXIgdmVyc2lvbnMgaGFzIGEgZGlmZmVyZW50IGJlaGF2aW9yLCBzZWU6XG4gICAgLy8gaHR0cHM6Ly9ibG9nLmpxdWVyeS5jb20vMjAxMi8wOC8wOS9qcXVlcnktMS04LXJlbGVhc2VkL1xuICAgIC8vIGh0dHBzOi8vYnVncy5qcXVlcnkuY29tL3RpY2tldC8xMTAxMFxuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9ibHVlaW1wL2pRdWVyeS1GaWxlLVVwbG9hZC9wdWxsLzM0MzVcbiAgICBfcHJvbWlzZVBpcGU6IChmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgcGFydHMgPSAkLmZuLmpxdWVyeS5zcGxpdCgnLicpO1xuICAgICAgcmV0dXJuIE51bWJlcihwYXJ0c1swXSkgPiAxIHx8IE51bWJlcihwYXJ0c1sxXSkgPiA3ID8gJ3RoZW4nIDogJ3BpcGUnO1xuICAgIH0pKCksXG5cbiAgICAvLyBBIGxpc3Qgb2Ygb3B0aW9ucyB0aGF0IHJlcXVpcmUgcmVpbml0aWFsaXppbmcgZXZlbnQgbGlzdGVuZXJzIGFuZC9vclxuICAgIC8vIHNwZWNpYWwgaW5pdGlhbGl6YXRpb24gY29kZTpcbiAgICBfc3BlY2lhbE9wdGlvbnM6IFtcbiAgICAgICdmaWxlSW5wdXQnLFxuICAgICAgJ2Ryb3Bab25lJyxcbiAgICAgICdwYXN0ZVpvbmUnLFxuICAgICAgJ211bHRpcGFydCcsXG4gICAgICAnZm9yY2VJZnJhbWVUcmFuc3BvcnQnXG4gICAgXSxcblxuICAgIF9ibG9iU2xpY2U6XG4gICAgICAkLnN1cHBvcnQuYmxvYlNsaWNlICYmXG4gICAgICBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBzbGljZSA9IHRoaXMuc2xpY2UgfHwgdGhpcy53ZWJraXRTbGljZSB8fCB0aGlzLm1velNsaWNlO1xuICAgICAgICByZXR1cm4gc2xpY2UuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH0sXG5cbiAgICBfQml0cmF0ZVRpbWVyOiBmdW5jdGlvbiAoKSB7XG4gICAgICB0aGlzLnRpbWVzdGFtcCA9IERhdGUubm93ID8gRGF0ZS5ub3coKSA6IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgICAgdGhpcy5sb2FkZWQgPSAwO1xuICAgICAgdGhpcy5iaXRyYXRlID0gMDtcbiAgICAgIHRoaXMuZ2V0Qml0cmF0ZSA9IGZ1bmN0aW9uIChub3csIGxvYWRlZCwgaW50ZXJ2YWwpIHtcbiAgICAgICAgdmFyIHRpbWVEaWZmID0gbm93IC0gdGhpcy50aW1lc3RhbXA7XG4gICAgICAgIGlmICghdGhpcy5iaXRyYXRlIHx8ICFpbnRlcnZhbCB8fCB0aW1lRGlmZiA+IGludGVydmFsKSB7XG4gICAgICAgICAgdGhpcy5iaXRyYXRlID0gKGxvYWRlZCAtIHRoaXMubG9hZGVkKSAqICgxMDAwIC8gdGltZURpZmYpICogODtcbiAgICAgICAgICB0aGlzLmxvYWRlZCA9IGxvYWRlZDtcbiAgICAgICAgICB0aGlzLnRpbWVzdGFtcCA9IG5vdztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5iaXRyYXRlO1xuICAgICAgfTtcbiAgICB9LFxuXG4gICAgX2lzWEhSVXBsb2FkOiBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgIW9wdGlvbnMuZm9yY2VJZnJhbWVUcmFuc3BvcnQgJiZcbiAgICAgICAgKCghb3B0aW9ucy5tdWx0aXBhcnQgJiYgJC5zdXBwb3J0LnhockZpbGVVcGxvYWQpIHx8XG4gICAgICAgICAgJC5zdXBwb3J0LnhockZvcm1EYXRhRmlsZVVwbG9hZClcbiAgICAgICk7XG4gICAgfSxcblxuICAgIF9nZXRGb3JtRGF0YTogZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICAgIHZhciBmb3JtRGF0YTtcbiAgICAgIGlmICgkLnR5cGUob3B0aW9ucy5mb3JtRGF0YSkgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIG9wdGlvbnMuZm9ybURhdGEob3B0aW9ucy5mb3JtKTtcbiAgICAgIH1cbiAgICAgIGlmICgkLmlzQXJyYXkob3B0aW9ucy5mb3JtRGF0YSkpIHtcbiAgICAgICAgcmV0dXJuIG9wdGlvbnMuZm9ybURhdGE7XG4gICAgICB9XG4gICAgICBpZiAoJC50eXBlKG9wdGlvbnMuZm9ybURhdGEpID09PSAnb2JqZWN0Jykge1xuICAgICAgICBmb3JtRGF0YSA9IFtdO1xuICAgICAgICAkLmVhY2gob3B0aW9ucy5mb3JtRGF0YSwgZnVuY3Rpb24gKG5hbWUsIHZhbHVlKSB7XG4gICAgICAgICAgZm9ybURhdGEucHVzaCh7IG5hbWU6IG5hbWUsIHZhbHVlOiB2YWx1ZSB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBmb3JtRGF0YTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBbXTtcbiAgICB9LFxuXG4gICAgX2dldFRvdGFsOiBmdW5jdGlvbiAoZmlsZXMpIHtcbiAgICAgIHZhciB0b3RhbCA9IDA7XG4gICAgICAkLmVhY2goZmlsZXMsIGZ1bmN0aW9uIChpbmRleCwgZmlsZSkge1xuICAgICAgICB0b3RhbCArPSBmaWxlLnNpemUgfHwgMTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHRvdGFsO1xuICAgIH0sXG5cbiAgICBfaW5pdFByb2dyZXNzT2JqZWN0OiBmdW5jdGlvbiAob2JqKSB7XG4gICAgICB2YXIgcHJvZ3Jlc3MgPSB7XG4gICAgICAgIGxvYWRlZDogMCxcbiAgICAgICAgdG90YWw6IDAsXG4gICAgICAgIGJpdHJhdGU6IDBcbiAgICAgIH07XG4gICAgICBpZiAob2JqLl9wcm9ncmVzcykge1xuICAgICAgICAkLmV4dGVuZChvYmouX3Byb2dyZXNzLCBwcm9ncmVzcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvYmouX3Byb2dyZXNzID0gcHJvZ3Jlc3M7XG4gICAgICB9XG4gICAgfSxcblxuICAgIF9pbml0UmVzcG9uc2VPYmplY3Q6IGZ1bmN0aW9uIChvYmopIHtcbiAgICAgIHZhciBwcm9wO1xuICAgICAgaWYgKG9iai5fcmVzcG9uc2UpIHtcbiAgICAgICAgZm9yIChwcm9wIGluIG9iai5fcmVzcG9uc2UpIHtcbiAgICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iai5fcmVzcG9uc2UsIHByb3ApKSB7XG4gICAgICAgICAgICBkZWxldGUgb2JqLl9yZXNwb25zZVtwcm9wXTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9iai5fcmVzcG9uc2UgPSB7fTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgX29uUHJvZ3Jlc3M6IGZ1bmN0aW9uIChlLCBkYXRhKSB7XG4gICAgICBpZiAoZS5sZW5ndGhDb21wdXRhYmxlKSB7XG4gICAgICAgIHZhciBub3cgPSBEYXRlLm5vdyA/IERhdGUubm93KCkgOiBuZXcgRGF0ZSgpLmdldFRpbWUoKSxcbiAgICAgICAgICBsb2FkZWQ7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBkYXRhLl90aW1lICYmXG4gICAgICAgICAgZGF0YS5wcm9ncmVzc0ludGVydmFsICYmXG4gICAgICAgICAgbm93IC0gZGF0YS5fdGltZSA8IGRhdGEucHJvZ3Jlc3NJbnRlcnZhbCAmJlxuICAgICAgICAgIGUubG9hZGVkICE9PSBlLnRvdGFsXG4gICAgICAgICkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBkYXRhLl90aW1lID0gbm93O1xuICAgICAgICBsb2FkZWQgPVxuICAgICAgICAgIE1hdGguZmxvb3IoXG4gICAgICAgICAgICAoZS5sb2FkZWQgLyBlLnRvdGFsKSAqIChkYXRhLmNodW5rU2l6ZSB8fCBkYXRhLl9wcm9ncmVzcy50b3RhbClcbiAgICAgICAgICApICsgKGRhdGEudXBsb2FkZWRCeXRlcyB8fCAwKTtcbiAgICAgICAgLy8gQWRkIHRoZSBkaWZmZXJlbmNlIGZyb20gdGhlIHByZXZpb3VzbHkgbG9hZGVkIHN0YXRlXG4gICAgICAgIC8vIHRvIHRoZSBnbG9iYWwgbG9hZGVkIGNvdW50ZXI6XG4gICAgICAgIHRoaXMuX3Byb2dyZXNzLmxvYWRlZCArPSBsb2FkZWQgLSBkYXRhLl9wcm9ncmVzcy5sb2FkZWQ7XG4gICAgICAgIHRoaXMuX3Byb2dyZXNzLmJpdHJhdGUgPSB0aGlzLl9iaXRyYXRlVGltZXIuZ2V0Qml0cmF0ZShcbiAgICAgICAgICBub3csXG4gICAgICAgICAgdGhpcy5fcHJvZ3Jlc3MubG9hZGVkLFxuICAgICAgICAgIGRhdGEuYml0cmF0ZUludGVydmFsXG4gICAgICAgICk7XG4gICAgICAgIGRhdGEuX3Byb2dyZXNzLmxvYWRlZCA9IGRhdGEubG9hZGVkID0gbG9hZGVkO1xuICAgICAgICBkYXRhLl9wcm9ncmVzcy5iaXRyYXRlID0gZGF0YS5iaXRyYXRlID0gZGF0YS5fYml0cmF0ZVRpbWVyLmdldEJpdHJhdGUoXG4gICAgICAgICAgbm93LFxuICAgICAgICAgIGxvYWRlZCxcbiAgICAgICAgICBkYXRhLmJpdHJhdGVJbnRlcnZhbFxuICAgICAgICApO1xuICAgICAgICAvLyBUcmlnZ2VyIGEgY3VzdG9tIHByb2dyZXNzIGV2ZW50IHdpdGggYSB0b3RhbCBkYXRhIHByb3BlcnR5IHNldFxuICAgICAgICAvLyB0byB0aGUgZmlsZSBzaXplKHMpIG9mIHRoZSBjdXJyZW50IHVwbG9hZCBhbmQgYSBsb2FkZWQgZGF0YVxuICAgICAgICAvLyBwcm9wZXJ0eSBjYWxjdWxhdGVkIGFjY29yZGluZ2x5OlxuICAgICAgICB0aGlzLl90cmlnZ2VyKFxuICAgICAgICAgICdwcm9ncmVzcycsXG4gICAgICAgICAgJC5FdmVudCgncHJvZ3Jlc3MnLCB7IGRlbGVnYXRlZEV2ZW50OiBlIH0pLFxuICAgICAgICAgIGRhdGFcbiAgICAgICAgKTtcbiAgICAgICAgLy8gVHJpZ2dlciBhIGdsb2JhbCBwcm9ncmVzcyBldmVudCBmb3IgYWxsIGN1cnJlbnQgZmlsZSB1cGxvYWRzLFxuICAgICAgICAvLyBpbmNsdWRpbmcgYWpheCBjYWxscyBxdWV1ZWQgZm9yIHNlcXVlbnRpYWwgZmlsZSB1cGxvYWRzOlxuICAgICAgICB0aGlzLl90cmlnZ2VyKFxuICAgICAgICAgICdwcm9ncmVzc2FsbCcsXG4gICAgICAgICAgJC5FdmVudCgncHJvZ3Jlc3NhbGwnLCB7IGRlbGVnYXRlZEV2ZW50OiBlIH0pLFxuICAgICAgICAgIHRoaXMuX3Byb2dyZXNzXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSxcblxuICAgIF9pbml0UHJvZ3Jlc3NMaXN0ZW5lcjogZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICAgIHZhciB0aGF0ID0gdGhpcyxcbiAgICAgICAgeGhyID0gb3B0aW9ucy54aHIgPyBvcHRpb25zLnhocigpIDogJC5hamF4U2V0dGluZ3MueGhyKCk7XG4gICAgICAvLyBBY2Nlc3MgdG8gdGhlIG5hdGl2ZSBYSFIgb2JqZWN0IGlzIHJlcXVpcmVkIHRvIGFkZCBldmVudCBsaXN0ZW5lcnNcbiAgICAgIC8vIGZvciB0aGUgdXBsb2FkIHByb2dyZXNzIGV2ZW50OlxuICAgICAgaWYgKHhoci51cGxvYWQpIHtcbiAgICAgICAgJCh4aHIudXBsb2FkKS5vbigncHJvZ3Jlc3MnLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgIHZhciBvZSA9IGUub3JpZ2luYWxFdmVudDtcbiAgICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIHByb2dyZXNzIGV2ZW50IHByb3BlcnRpZXMgZ2V0IGNvcGllZCBvdmVyOlxuICAgICAgICAgIGUubGVuZ3RoQ29tcHV0YWJsZSA9IG9lLmxlbmd0aENvbXB1dGFibGU7XG4gICAgICAgICAgZS5sb2FkZWQgPSBvZS5sb2FkZWQ7XG4gICAgICAgICAgZS50b3RhbCA9IG9lLnRvdGFsO1xuICAgICAgICAgIHRoYXQuX29uUHJvZ3Jlc3MoZSwgb3B0aW9ucyk7XG4gICAgICAgIH0pO1xuICAgICAgICBvcHRpb25zLnhociA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4geGhyO1xuICAgICAgICB9O1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBfZGVpbml0UHJvZ3Jlc3NMaXN0ZW5lcjogZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICAgIHZhciB4aHIgPSBvcHRpb25zLnhociA/IG9wdGlvbnMueGhyKCkgOiAkLmFqYXhTZXR0aW5ncy54aHIoKTtcbiAgICAgIGlmICh4aHIudXBsb2FkKSB7XG4gICAgICAgICQoeGhyLnVwbG9hZCkub2ZmKCdwcm9ncmVzcycpO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBfaXNJbnN0YW5jZU9mOiBmdW5jdGlvbiAodHlwZSwgb2JqKSB7XG4gICAgICAvLyBDcm9zcy1mcmFtZSBpbnN0YW5jZW9mIGNoZWNrXG4gICAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9iaikgPT09ICdbb2JqZWN0ICcgKyB0eXBlICsgJ10nO1xuICAgIH0sXG5cbiAgICBfZ2V0VW5pcXVlRmlsZW5hbWU6IGZ1bmN0aW9uIChuYW1lLCBtYXApIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICAgICAgbmFtZSA9IFN0cmluZyhuYW1lKTtcbiAgICAgIGlmIChtYXBbbmFtZV0pIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgICAgIG5hbWUgPSBuYW1lLnJlcGxhY2UoXG4gICAgICAgICAgLyg/OiBcXCgoW1xcZF0rKVxcKSk/KFxcLlteLl0rKT8kLyxcbiAgICAgICAgICBmdW5jdGlvbiAoXywgcDEsIHAyKSB7XG4gICAgICAgICAgICB2YXIgaW5kZXggPSBwMSA/IE51bWJlcihwMSkgKyAxIDogMTtcbiAgICAgICAgICAgIHZhciBleHQgPSBwMiB8fCAnJztcbiAgICAgICAgICAgIHJldHVybiAnICgnICsgaW5kZXggKyAnKScgKyBleHQ7XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0VW5pcXVlRmlsZW5hbWUobmFtZSwgbWFwKTtcbiAgICAgIH1cbiAgICAgIG1hcFtuYW1lXSA9IHRydWU7XG4gICAgICByZXR1cm4gbmFtZTtcbiAgICB9LFxuXG4gICAgX2luaXRYSFJEYXRhOiBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgICAgdmFyIHRoYXQgPSB0aGlzLFxuICAgICAgICBmb3JtRGF0YSxcbiAgICAgICAgZmlsZSA9IG9wdGlvbnMuZmlsZXNbMF0sXG4gICAgICAgIC8vIElnbm9yZSBub24tbXVsdGlwYXJ0IHNldHRpbmcgaWYgbm90IHN1cHBvcnRlZDpcbiAgICAgICAgbXVsdGlwYXJ0ID0gb3B0aW9ucy5tdWx0aXBhcnQgfHwgISQuc3VwcG9ydC54aHJGaWxlVXBsb2FkLFxuICAgICAgICBwYXJhbU5hbWUgPVxuICAgICAgICAgICQudHlwZShvcHRpb25zLnBhcmFtTmFtZSkgPT09ICdhcnJheSdcbiAgICAgICAgICAgID8gb3B0aW9ucy5wYXJhbU5hbWVbMF1cbiAgICAgICAgICAgIDogb3B0aW9ucy5wYXJhbU5hbWU7XG4gICAgICBvcHRpb25zLmhlYWRlcnMgPSAkLmV4dGVuZCh7fSwgb3B0aW9ucy5oZWFkZXJzKTtcbiAgICAgIGlmIChvcHRpb25zLmNvbnRlbnRSYW5nZSkge1xuICAgICAgICBvcHRpb25zLmhlYWRlcnNbJ0NvbnRlbnQtUmFuZ2UnXSA9IG9wdGlvbnMuY29udGVudFJhbmdlO1xuICAgICAgfVxuICAgICAgaWYgKCFtdWx0aXBhcnQgfHwgb3B0aW9ucy5ibG9iIHx8ICF0aGlzLl9pc0luc3RhbmNlT2YoJ0ZpbGUnLCBmaWxlKSkge1xuICAgICAgICBvcHRpb25zLmhlYWRlcnNbJ0NvbnRlbnQtRGlzcG9zaXRpb24nXSA9XG4gICAgICAgICAgJ2F0dGFjaG1lbnQ7IGZpbGVuYW1lPVwiJyArXG4gICAgICAgICAgZW5jb2RlVVJJKGZpbGUudXBsb2FkTmFtZSB8fCBmaWxlLm5hbWUpICtcbiAgICAgICAgICAnXCInO1xuICAgICAgfVxuICAgICAgaWYgKCFtdWx0aXBhcnQpIHtcbiAgICAgICAgb3B0aW9ucy5jb250ZW50VHlwZSA9IGZpbGUudHlwZSB8fCAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJztcbiAgICAgICAgb3B0aW9ucy5kYXRhID0gb3B0aW9ucy5ibG9iIHx8IGZpbGU7XG4gICAgICB9IGVsc2UgaWYgKCQuc3VwcG9ydC54aHJGb3JtRGF0YUZpbGVVcGxvYWQpIHtcbiAgICAgICAgaWYgKG9wdGlvbnMucG9zdE1lc3NhZ2UpIHtcbiAgICAgICAgICAvLyB3aW5kb3cucG9zdE1lc3NhZ2UgZG9lcyBub3QgYWxsb3cgc2VuZGluZyBGb3JtRGF0YVxuICAgICAgICAgIC8vIG9iamVjdHMsIHNvIHdlIGp1c3QgYWRkIHRoZSBGaWxlL0Jsb2Igb2JqZWN0cyB0b1xuICAgICAgICAgIC8vIHRoZSBmb3JtRGF0YSBhcnJheSBhbmQgbGV0IHRoZSBwb3N0TWVzc2FnZSB3aW5kb3dcbiAgICAgICAgICAvLyBjcmVhdGUgdGhlIEZvcm1EYXRhIG9iamVjdCBvdXQgb2YgdGhpcyBhcnJheTpcbiAgICAgICAgICBmb3JtRGF0YSA9IHRoaXMuX2dldEZvcm1EYXRhKG9wdGlvbnMpO1xuICAgICAgICAgIGlmIChvcHRpb25zLmJsb2IpIHtcbiAgICAgICAgICAgIGZvcm1EYXRhLnB1c2goe1xuICAgICAgICAgICAgICBuYW1lOiBwYXJhbU5hbWUsXG4gICAgICAgICAgICAgIHZhbHVlOiBvcHRpb25zLmJsb2JcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAkLmVhY2gob3B0aW9ucy5maWxlcywgZnVuY3Rpb24gKGluZGV4LCBmaWxlKSB7XG4gICAgICAgICAgICAgIGZvcm1EYXRhLnB1c2goe1xuICAgICAgICAgICAgICAgIG5hbWU6XG4gICAgICAgICAgICAgICAgICAoJC50eXBlKG9wdGlvbnMucGFyYW1OYW1lKSA9PT0gJ2FycmF5JyAmJlxuICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnBhcmFtTmFtZVtpbmRleF0pIHx8XG4gICAgICAgICAgICAgICAgICBwYXJhbU5hbWUsXG4gICAgICAgICAgICAgICAgdmFsdWU6IGZpbGVcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKHRoYXQuX2lzSW5zdGFuY2VPZignRm9ybURhdGEnLCBvcHRpb25zLmZvcm1EYXRhKSkge1xuICAgICAgICAgICAgZm9ybURhdGEgPSBvcHRpb25zLmZvcm1EYXRhO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgICAgICAgJC5lYWNoKHRoaXMuX2dldEZvcm1EYXRhKG9wdGlvbnMpLCBmdW5jdGlvbiAoaW5kZXgsIGZpZWxkKSB7XG4gICAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZChmaWVsZC5uYW1lLCBmaWVsZC52YWx1ZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKG9wdGlvbnMuYmxvYikge1xuICAgICAgICAgICAgZm9ybURhdGEuYXBwZW5kKFxuICAgICAgICAgICAgICBwYXJhbU5hbWUsXG4gICAgICAgICAgICAgIG9wdGlvbnMuYmxvYixcbiAgICAgICAgICAgICAgZmlsZS51cGxvYWROYW1lIHx8IGZpbGUubmFtZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgJC5lYWNoKG9wdGlvbnMuZmlsZXMsIGZ1bmN0aW9uIChpbmRleCwgZmlsZSkge1xuICAgICAgICAgICAgICAvLyBUaGlzIGNoZWNrIGFsbG93cyB0aGUgdGVzdHMgdG8gcnVuIHdpdGhcbiAgICAgICAgICAgICAgLy8gZHVtbXkgb2JqZWN0czpcbiAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHRoYXQuX2lzSW5zdGFuY2VPZignRmlsZScsIGZpbGUpIHx8XG4gICAgICAgICAgICAgICAgdGhhdC5faXNJbnN0YW5jZU9mKCdCbG9iJywgZmlsZSlcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdmFyIGZpbGVOYW1lID0gZmlsZS51cGxvYWROYW1lIHx8IGZpbGUubmFtZTtcbiAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy51bmlxdWVGaWxlbmFtZXMpIHtcbiAgICAgICAgICAgICAgICAgIGZpbGVOYW1lID0gdGhhdC5fZ2V0VW5pcXVlRmlsZW5hbWUoXG4gICAgICAgICAgICAgICAgICAgIGZpbGVOYW1lLFxuICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnVuaXF1ZUZpbGVuYW1lc1xuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZm9ybURhdGEuYXBwZW5kKFxuICAgICAgICAgICAgICAgICAgKCQudHlwZShvcHRpb25zLnBhcmFtTmFtZSkgPT09ICdhcnJheScgJiZcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5wYXJhbU5hbWVbaW5kZXhdKSB8fFxuICAgICAgICAgICAgICAgICAgICBwYXJhbU5hbWUsXG4gICAgICAgICAgICAgICAgICBmaWxlLFxuICAgICAgICAgICAgICAgICAgZmlsZU5hbWVcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgb3B0aW9ucy5kYXRhID0gZm9ybURhdGE7XG4gICAgICB9XG4gICAgICAvLyBCbG9iIHJlZmVyZW5jZSBpcyBub3QgbmVlZGVkIGFueW1vcmUsIGZyZWUgbWVtb3J5OlxuICAgICAgb3B0aW9ucy5ibG9iID0gbnVsbDtcbiAgICB9LFxuXG4gICAgX2luaXRJZnJhbWVTZXR0aW5nczogZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICAgIHZhciB0YXJnZXRIb3N0ID0gJCgnPGE+PC9hPicpLnByb3AoJ2hyZWYnLCBvcHRpb25zLnVybCkucHJvcCgnaG9zdCcpO1xuICAgICAgLy8gU2V0dGluZyB0aGUgZGF0YVR5cGUgdG8gaWZyYW1lIGVuYWJsZXMgdGhlIGlmcmFtZSB0cmFuc3BvcnQ6XG4gICAgICBvcHRpb25zLmRhdGFUeXBlID0gJ2lmcmFtZSAnICsgKG9wdGlvbnMuZGF0YVR5cGUgfHwgJycpO1xuICAgICAgLy8gVGhlIGlmcmFtZSB0cmFuc3BvcnQgYWNjZXB0cyBhIHNlcmlhbGl6ZWQgYXJyYXkgYXMgZm9ybSBkYXRhOlxuICAgICAgb3B0aW9ucy5mb3JtRGF0YSA9IHRoaXMuX2dldEZvcm1EYXRhKG9wdGlvbnMpO1xuICAgICAgLy8gQWRkIHJlZGlyZWN0IHVybCB0byBmb3JtIGRhdGEgb24gY3Jvc3MtZG9tYWluIHVwbG9hZHM6XG4gICAgICBpZiAob3B0aW9ucy5yZWRpcmVjdCAmJiB0YXJnZXRIb3N0ICYmIHRhcmdldEhvc3QgIT09IGxvY2F0aW9uLmhvc3QpIHtcbiAgICAgICAgb3B0aW9ucy5mb3JtRGF0YS5wdXNoKHtcbiAgICAgICAgICBuYW1lOiBvcHRpb25zLnJlZGlyZWN0UGFyYW1OYW1lIHx8ICdyZWRpcmVjdCcsXG4gICAgICAgICAgdmFsdWU6IG9wdGlvbnMucmVkaXJlY3RcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSxcblxuICAgIF9pbml0RGF0YVNldHRpbmdzOiBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgICAgaWYgKHRoaXMuX2lzWEhSVXBsb2FkKG9wdGlvbnMpKSB7XG4gICAgICAgIGlmICghdGhpcy5fY2h1bmtlZFVwbG9hZChvcHRpb25zLCB0cnVlKSkge1xuICAgICAgICAgIGlmICghb3B0aW9ucy5kYXRhKSB7XG4gICAgICAgICAgICB0aGlzLl9pbml0WEhSRGF0YShvcHRpb25zKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5faW5pdFByb2dyZXNzTGlzdGVuZXIob3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wdGlvbnMucG9zdE1lc3NhZ2UpIHtcbiAgICAgICAgICAvLyBTZXR0aW5nIHRoZSBkYXRhVHlwZSB0byBwb3N0bWVzc2FnZSBlbmFibGVzIHRoZVxuICAgICAgICAgIC8vIHBvc3RNZXNzYWdlIHRyYW5zcG9ydDpcbiAgICAgICAgICBvcHRpb25zLmRhdGFUeXBlID0gJ3Bvc3RtZXNzYWdlICcgKyAob3B0aW9ucy5kYXRhVHlwZSB8fCAnJyk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2luaXRJZnJhbWVTZXR0aW5ncyhvcHRpb25zKTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgX2dldFBhcmFtTmFtZTogZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICAgIHZhciBmaWxlSW5wdXQgPSAkKG9wdGlvbnMuZmlsZUlucHV0KSxcbiAgICAgICAgcGFyYW1OYW1lID0gb3B0aW9ucy5wYXJhbU5hbWU7XG4gICAgICBpZiAoIXBhcmFtTmFtZSkge1xuICAgICAgICBwYXJhbU5hbWUgPSBbXTtcbiAgICAgICAgZmlsZUlucHV0LmVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHZhciBpbnB1dCA9ICQodGhpcyksXG4gICAgICAgICAgICBuYW1lID0gaW5wdXQucHJvcCgnbmFtZScpIHx8ICdmaWxlc1tdJyxcbiAgICAgICAgICAgIGkgPSAoaW5wdXQucHJvcCgnZmlsZXMnKSB8fCBbMV0pLmxlbmd0aDtcbiAgICAgICAgICB3aGlsZSAoaSkge1xuICAgICAgICAgICAgcGFyYW1OYW1lLnB1c2gobmFtZSk7XG4gICAgICAgICAgICBpIC09IDE7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKCFwYXJhbU5hbWUubGVuZ3RoKSB7XG4gICAgICAgICAgcGFyYW1OYW1lID0gW2ZpbGVJbnB1dC5wcm9wKCduYW1lJykgfHwgJ2ZpbGVzW10nXTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICghJC5pc0FycmF5KHBhcmFtTmFtZSkpIHtcbiAgICAgICAgcGFyYW1OYW1lID0gW3BhcmFtTmFtZV07XG4gICAgICB9XG4gICAgICByZXR1cm4gcGFyYW1OYW1lO1xuICAgIH0sXG5cbiAgICBfaW5pdEZvcm1TZXR0aW5nczogZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICAgIC8vIFJldHJpZXZlIG1pc3Npbmcgb3B0aW9ucyBmcm9tIHRoZSBpbnB1dCBmaWVsZCBhbmQgdGhlXG4gICAgICAvLyBhc3NvY2lhdGVkIGZvcm0sIGlmIGF2YWlsYWJsZTpcbiAgICAgIGlmICghb3B0aW9ucy5mb3JtIHx8ICFvcHRpb25zLmZvcm0ubGVuZ3RoKSB7XG4gICAgICAgIG9wdGlvbnMuZm9ybSA9ICQob3B0aW9ucy5maWxlSW5wdXQucHJvcCgnZm9ybScpKTtcbiAgICAgICAgLy8gSWYgdGhlIGdpdmVuIGZpbGUgaW5wdXQgZG9lc24ndCBoYXZlIGFuIGFzc29jaWF0ZWQgZm9ybSxcbiAgICAgICAgLy8gdXNlIHRoZSBkZWZhdWx0IHdpZGdldCBmaWxlIGlucHV0J3MgZm9ybTpcbiAgICAgICAgaWYgKCFvcHRpb25zLmZvcm0ubGVuZ3RoKSB7XG4gICAgICAgICAgb3B0aW9ucy5mb3JtID0gJCh0aGlzLm9wdGlvbnMuZmlsZUlucHV0LnByb3AoJ2Zvcm0nKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIG9wdGlvbnMucGFyYW1OYW1lID0gdGhpcy5fZ2V0UGFyYW1OYW1lKG9wdGlvbnMpO1xuICAgICAgaWYgKCFvcHRpb25zLnVybCkge1xuICAgICAgICBvcHRpb25zLnVybCA9IG9wdGlvbnMuZm9ybS5wcm9wKCdhY3Rpb24nKSB8fCBsb2NhdGlvbi5ocmVmO1xuICAgICAgfVxuICAgICAgLy8gVGhlIEhUVFAgcmVxdWVzdCBtZXRob2QgbXVzdCBiZSBcIlBPU1RcIiBvciBcIlBVVFwiOlxuICAgICAgb3B0aW9ucy50eXBlID0gKFxuICAgICAgICBvcHRpb25zLnR5cGUgfHxcbiAgICAgICAgKCQudHlwZShvcHRpb25zLmZvcm0ucHJvcCgnbWV0aG9kJykpID09PSAnc3RyaW5nJyAmJlxuICAgICAgICAgIG9wdGlvbnMuZm9ybS5wcm9wKCdtZXRob2QnKSkgfHxcbiAgICAgICAgJydcbiAgICAgICkudG9VcHBlckNhc2UoKTtcbiAgICAgIGlmIChcbiAgICAgICAgb3B0aW9ucy50eXBlICE9PSAnUE9TVCcgJiZcbiAgICAgICAgb3B0aW9ucy50eXBlICE9PSAnUFVUJyAmJlxuICAgICAgICBvcHRpb25zLnR5cGUgIT09ICdQQVRDSCdcbiAgICAgICkge1xuICAgICAgICBvcHRpb25zLnR5cGUgPSAnUE9TVCc7XG4gICAgICB9XG4gICAgICBpZiAoIW9wdGlvbnMuZm9ybUFjY2VwdENoYXJzZXQpIHtcbiAgICAgICAgb3B0aW9ucy5mb3JtQWNjZXB0Q2hhcnNldCA9IG9wdGlvbnMuZm9ybS5hdHRyKCdhY2NlcHQtY2hhcnNldCcpO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBfZ2V0QUpBWFNldHRpbmdzOiBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgdmFyIG9wdGlvbnMgPSAkLmV4dGVuZCh7fSwgdGhpcy5vcHRpb25zLCBkYXRhKTtcbiAgICAgIHRoaXMuX2luaXRGb3JtU2V0dGluZ3Mob3B0aW9ucyk7XG4gICAgICB0aGlzLl9pbml0RGF0YVNldHRpbmdzKG9wdGlvbnMpO1xuICAgICAgcmV0dXJuIG9wdGlvbnM7XG4gICAgfSxcblxuICAgIC8vIGpRdWVyeSAxLjYgZG9lc24ndCBwcm92aWRlIC5zdGF0ZSgpLFxuICAgIC8vIHdoaWxlIGpRdWVyeSAxLjgrIHJlbW92ZWQgLmlzUmVqZWN0ZWQoKSBhbmQgLmlzUmVzb2x2ZWQoKTpcbiAgICBfZ2V0RGVmZXJyZWRTdGF0ZTogZnVuY3Rpb24gKGRlZmVycmVkKSB7XG4gICAgICBpZiAoZGVmZXJyZWQuc3RhdGUpIHtcbiAgICAgICAgcmV0dXJuIGRlZmVycmVkLnN0YXRlKCk7XG4gICAgICB9XG4gICAgICBpZiAoZGVmZXJyZWQuaXNSZXNvbHZlZCgpKSB7XG4gICAgICAgIHJldHVybiAncmVzb2x2ZWQnO1xuICAgICAgfVxuICAgICAgaWYgKGRlZmVycmVkLmlzUmVqZWN0ZWQoKSkge1xuICAgICAgICByZXR1cm4gJ3JlamVjdGVkJztcbiAgICAgIH1cbiAgICAgIHJldHVybiAncGVuZGluZyc7XG4gICAgfSxcblxuICAgIC8vIE1hcHMganFYSFIgY2FsbGJhY2tzIHRvIHRoZSBlcXVpdmFsZW50XG4gICAgLy8gbWV0aG9kcyBvZiB0aGUgZ2l2ZW4gUHJvbWlzZSBvYmplY3Q6XG4gICAgX2VuaGFuY2VQcm9taXNlOiBmdW5jdGlvbiAocHJvbWlzZSkge1xuICAgICAgcHJvbWlzZS5zdWNjZXNzID0gcHJvbWlzZS5kb25lO1xuICAgICAgcHJvbWlzZS5lcnJvciA9IHByb21pc2UuZmFpbDtcbiAgICAgIHByb21pc2UuY29tcGxldGUgPSBwcm9taXNlLmFsd2F5cztcbiAgICAgIHJldHVybiBwcm9taXNlO1xuICAgIH0sXG5cbiAgICAvLyBDcmVhdGVzIGFuZCByZXR1cm5zIGEgUHJvbWlzZSBvYmplY3QgZW5oYW5jZWQgd2l0aFxuICAgIC8vIHRoZSBqcVhIUiBtZXRob2RzIGFib3J0LCBzdWNjZXNzLCBlcnJvciBhbmQgY29tcGxldGU6XG4gICAgX2dldFhIUlByb21pc2U6IGZ1bmN0aW9uIChyZXNvbHZlT3JSZWplY3QsIGNvbnRleHQsIGFyZ3MpIHtcbiAgICAgIHZhciBkZmQgPSAkLkRlZmVycmVkKCksXG4gICAgICAgIHByb21pc2UgPSBkZmQucHJvbWlzZSgpO1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgICBjb250ZXh0ID0gY29udGV4dCB8fCB0aGlzLm9wdGlvbnMuY29udGV4dCB8fCBwcm9taXNlO1xuICAgICAgaWYgKHJlc29sdmVPclJlamVjdCA9PT0gdHJ1ZSkge1xuICAgICAgICBkZmQucmVzb2x2ZVdpdGgoY29udGV4dCwgYXJncyk7XG4gICAgICB9IGVsc2UgaWYgKHJlc29sdmVPclJlamVjdCA9PT0gZmFsc2UpIHtcbiAgICAgICAgZGZkLnJlamVjdFdpdGgoY29udGV4dCwgYXJncyk7XG4gICAgICB9XG4gICAgICBwcm9taXNlLmFib3J0ID0gZGZkLnByb21pc2U7XG4gICAgICByZXR1cm4gdGhpcy5fZW5oYW5jZVByb21pc2UocHJvbWlzZSk7XG4gICAgfSxcblxuICAgIC8vIEFkZHMgY29udmVuaWVuY2UgbWV0aG9kcyB0byB0aGUgZGF0YSBjYWxsYmFjayBhcmd1bWVudDpcbiAgICBfYWRkQ29udmVuaWVuY2VNZXRob2RzOiBmdW5jdGlvbiAoZSwgZGF0YSkge1xuICAgICAgdmFyIHRoYXQgPSB0aGlzLFxuICAgICAgICBnZXRQcm9taXNlID0gZnVuY3Rpb24gKGFyZ3MpIHtcbiAgICAgICAgICByZXR1cm4gJC5EZWZlcnJlZCgpLnJlc29sdmVXaXRoKHRoYXQsIGFyZ3MpLnByb21pc2UoKTtcbiAgICAgICAgfTtcbiAgICAgIGRhdGEucHJvY2VzcyA9IGZ1bmN0aW9uIChyZXNvbHZlRnVuYywgcmVqZWN0RnVuYykge1xuICAgICAgICBpZiAocmVzb2x2ZUZ1bmMgfHwgcmVqZWN0RnVuYykge1xuICAgICAgICAgIGRhdGEuX3Byb2Nlc3NRdWV1ZSA9IHRoaXMuX3Byb2Nlc3NRdWV1ZSA9ICh0aGlzLl9wcm9jZXNzUXVldWUgfHxcbiAgICAgICAgICAgIGdldFByb21pc2UoW3RoaXNdKSlcbiAgICAgICAgICAgIFt0aGF0Ll9wcm9taXNlUGlwZV0oZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICBpZiAoZGF0YS5lcnJvclRocm93bikge1xuICAgICAgICAgICAgICAgIHJldHVybiAkLkRlZmVycmVkKCkucmVqZWN0V2l0aCh0aGF0LCBbZGF0YV0pLnByb21pc2UoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXR1cm4gZ2V0UHJvbWlzZShhcmd1bWVudHMpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIFt0aGF0Ll9wcm9taXNlUGlwZV0ocmVzb2x2ZUZ1bmMsIHJlamVjdEZ1bmMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9wcm9jZXNzUXVldWUgfHwgZ2V0UHJvbWlzZShbdGhpc10pO1xuICAgICAgfTtcbiAgICAgIGRhdGEuc3VibWl0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAodGhpcy5zdGF0ZSgpICE9PSAncGVuZGluZycpIHtcbiAgICAgICAgICBkYXRhLmpxWEhSID0gdGhpcy5qcVhIUiA9XG4gICAgICAgICAgICB0aGF0Ll90cmlnZ2VyKFxuICAgICAgICAgICAgICAnc3VibWl0JyxcbiAgICAgICAgICAgICAgJC5FdmVudCgnc3VibWl0JywgeyBkZWxlZ2F0ZWRFdmVudDogZSB9KSxcbiAgICAgICAgICAgICAgdGhpc1xuICAgICAgICAgICAgKSAhPT0gZmFsc2UgJiYgdGhhdC5fb25TZW5kKGUsIHRoaXMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmpxWEhSIHx8IHRoYXQuX2dldFhIUlByb21pc2UoKTtcbiAgICAgIH07XG4gICAgICBkYXRhLmFib3J0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAodGhpcy5qcVhIUikge1xuICAgICAgICAgIHJldHVybiB0aGlzLmpxWEhSLmFib3J0KCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5lcnJvclRocm93biA9ICdhYm9ydCc7XG4gICAgICAgIHRoYXQuX3RyaWdnZXIoJ2ZhaWwnLCBudWxsLCB0aGlzKTtcbiAgICAgICAgcmV0dXJuIHRoYXQuX2dldFhIUlByb21pc2UoZmFsc2UpO1xuICAgICAgfTtcbiAgICAgIGRhdGEuc3RhdGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICh0aGlzLmpxWEhSKSB7XG4gICAgICAgICAgcmV0dXJuIHRoYXQuX2dldERlZmVycmVkU3RhdGUodGhpcy5qcVhIUik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuX3Byb2Nlc3NRdWV1ZSkge1xuICAgICAgICAgIHJldHVybiB0aGF0Ll9nZXREZWZlcnJlZFN0YXRlKHRoaXMuX3Byb2Nlc3NRdWV1ZSk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICBkYXRhLnByb2Nlc3NpbmcgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgIXRoaXMuanFYSFIgJiZcbiAgICAgICAgICB0aGlzLl9wcm9jZXNzUXVldWUgJiZcbiAgICAgICAgICB0aGF0Ll9nZXREZWZlcnJlZFN0YXRlKHRoaXMuX3Byb2Nlc3NRdWV1ZSkgPT09ICdwZW5kaW5nJ1xuICAgICAgICApO1xuICAgICAgfTtcbiAgICAgIGRhdGEucHJvZ3Jlc3MgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wcm9ncmVzcztcbiAgICAgIH07XG4gICAgICBkYXRhLnJlc3BvbnNlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVzcG9uc2U7XG4gICAgICB9O1xuICAgIH0sXG5cbiAgICAvLyBQYXJzZXMgdGhlIFJhbmdlIGhlYWRlciBmcm9tIHRoZSBzZXJ2ZXIgcmVzcG9uc2VcbiAgICAvLyBhbmQgcmV0dXJucyB0aGUgdXBsb2FkZWQgYnl0ZXM6XG4gICAgX2dldFVwbG9hZGVkQnl0ZXM6IGZ1bmN0aW9uIChqcVhIUikge1xuICAgICAgdmFyIHJhbmdlID0ganFYSFIuZ2V0UmVzcG9uc2VIZWFkZXIoJ1JhbmdlJyksXG4gICAgICAgIHBhcnRzID0gcmFuZ2UgJiYgcmFuZ2Uuc3BsaXQoJy0nKSxcbiAgICAgICAgdXBwZXJCeXRlc1BvcyA9IHBhcnRzICYmIHBhcnRzLmxlbmd0aCA+IDEgJiYgcGFyc2VJbnQocGFydHNbMV0sIDEwKTtcbiAgICAgIHJldHVybiB1cHBlckJ5dGVzUG9zICYmIHVwcGVyQnl0ZXNQb3MgKyAxO1xuICAgIH0sXG5cbiAgICAvLyBVcGxvYWRzIGEgZmlsZSBpbiBtdWx0aXBsZSwgc2VxdWVudGlhbCByZXF1ZXN0c1xuICAgIC8vIGJ5IHNwbGl0dGluZyB0aGUgZmlsZSB1cCBpbiBtdWx0aXBsZSBibG9iIGNodW5rcy5cbiAgICAvLyBJZiB0aGUgc2Vjb25kIHBhcmFtZXRlciBpcyB0cnVlLCBvbmx5IHRlc3RzIGlmIHRoZSBmaWxlXG4gICAgLy8gc2hvdWxkIGJlIHVwbG9hZGVkIGluIGNodW5rcywgYnV0IGRvZXMgbm90IGludm9rZSBhbnlcbiAgICAvLyB1cGxvYWQgcmVxdWVzdHM6XG4gICAgX2NodW5rZWRVcGxvYWQ6IGZ1bmN0aW9uIChvcHRpb25zLCB0ZXN0T25seSkge1xuICAgICAgb3B0aW9ucy51cGxvYWRlZEJ5dGVzID0gb3B0aW9ucy51cGxvYWRlZEJ5dGVzIHx8IDA7XG4gICAgICB2YXIgdGhhdCA9IHRoaXMsXG4gICAgICAgIGZpbGUgPSBvcHRpb25zLmZpbGVzWzBdLFxuICAgICAgICBmcyA9IGZpbGUuc2l6ZSxcbiAgICAgICAgdWIgPSBvcHRpb25zLnVwbG9hZGVkQnl0ZXMsXG4gICAgICAgIG1jcyA9IG9wdGlvbnMubWF4Q2h1bmtTaXplIHx8IGZzLFxuICAgICAgICBzbGljZSA9IHRoaXMuX2Jsb2JTbGljZSxcbiAgICAgICAgZGZkID0gJC5EZWZlcnJlZCgpLFxuICAgICAgICBwcm9taXNlID0gZGZkLnByb21pc2UoKSxcbiAgICAgICAganFYSFIsXG4gICAgICAgIHVwbG9hZDtcbiAgICAgIGlmIChcbiAgICAgICAgIShcbiAgICAgICAgICB0aGlzLl9pc1hIUlVwbG9hZChvcHRpb25zKSAmJlxuICAgICAgICAgIHNsaWNlICYmXG4gICAgICAgICAgKHViIHx8ICgkLnR5cGUobWNzKSA9PT0gJ2Z1bmN0aW9uJyA/IG1jcyhvcHRpb25zKSA6IG1jcykgPCBmcylcbiAgICAgICAgKSB8fFxuICAgICAgICBvcHRpb25zLmRhdGFcbiAgICAgICkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBpZiAodGVzdE9ubHkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICBpZiAodWIgPj0gZnMpIHtcbiAgICAgICAgZmlsZS5lcnJvciA9IG9wdGlvbnMuaTE4bigndXBsb2FkZWRCeXRlcycpO1xuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0WEhSUHJvbWlzZShmYWxzZSwgb3B0aW9ucy5jb250ZXh0LCBbXG4gICAgICAgICAgbnVsbCxcbiAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgIGZpbGUuZXJyb3JcbiAgICAgICAgXSk7XG4gICAgICB9XG4gICAgICAvLyBUaGUgY2h1bmsgdXBsb2FkIG1ldGhvZDpcbiAgICAgIHVwbG9hZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgLy8gQ2xvbmUgdGhlIG9wdGlvbnMgb2JqZWN0IGZvciBlYWNoIGNodW5rIHVwbG9hZDpcbiAgICAgICAgdmFyIG8gPSAkLmV4dGVuZCh7fSwgb3B0aW9ucyksXG4gICAgICAgICAgY3VycmVudExvYWRlZCA9IG8uX3Byb2dyZXNzLmxvYWRlZDtcbiAgICAgICAgby5ibG9iID0gc2xpY2UuY2FsbChcbiAgICAgICAgICBmaWxlLFxuICAgICAgICAgIHViLFxuICAgICAgICAgIHViICsgKCQudHlwZShtY3MpID09PSAnZnVuY3Rpb24nID8gbWNzKG8pIDogbWNzKSxcbiAgICAgICAgICBmaWxlLnR5cGVcbiAgICAgICAgKTtcbiAgICAgICAgLy8gU3RvcmUgdGhlIGN1cnJlbnQgY2h1bmsgc2l6ZSwgYXMgdGhlIGJsb2IgaXRzZWxmXG4gICAgICAgIC8vIHdpbGwgYmUgZGVyZWZlcmVuY2VkIGFmdGVyIGRhdGEgcHJvY2Vzc2luZzpcbiAgICAgICAgby5jaHVua1NpemUgPSBvLmJsb2Iuc2l6ZTtcbiAgICAgICAgLy8gRXhwb3NlIHRoZSBjaHVuayBieXRlcyBwb3NpdGlvbiByYW5nZTpcbiAgICAgICAgby5jb250ZW50UmFuZ2UgPVxuICAgICAgICAgICdieXRlcyAnICsgdWIgKyAnLScgKyAodWIgKyBvLmNodW5rU2l6ZSAtIDEpICsgJy8nICsgZnM7XG4gICAgICAgIC8vIFRyaWdnZXIgY2h1bmtiZWZvcmVzZW5kIHRvIGFsbG93IGZvcm0gZGF0YSB0byBiZSB1cGRhdGVkIGZvciB0aGlzIGNodW5rXG4gICAgICAgIHRoYXQuX3RyaWdnZXIoJ2NodW5rYmVmb3Jlc2VuZCcsIG51bGwsIG8pO1xuICAgICAgICAvLyBQcm9jZXNzIHRoZSB1cGxvYWQgZGF0YSAodGhlIGJsb2IgYW5kIHBvdGVudGlhbCBmb3JtIGRhdGEpOlxuICAgICAgICB0aGF0Ll9pbml0WEhSRGF0YShvKTtcbiAgICAgICAgLy8gQWRkIHByb2dyZXNzIGxpc3RlbmVycyBmb3IgdGhpcyBjaHVuayB1cGxvYWQ6XG4gICAgICAgIHRoYXQuX2luaXRQcm9ncmVzc0xpc3RlbmVyKG8pO1xuICAgICAgICBqcVhIUiA9IChcbiAgICAgICAgICAodGhhdC5fdHJpZ2dlcignY2h1bmtzZW5kJywgbnVsbCwgbykgIT09IGZhbHNlICYmICQuYWpheChvKSkgfHxcbiAgICAgICAgICB0aGF0Ll9nZXRYSFJQcm9taXNlKGZhbHNlLCBvLmNvbnRleHQpXG4gICAgICAgIClcbiAgICAgICAgICAuZG9uZShmdW5jdGlvbiAocmVzdWx0LCB0ZXh0U3RhdHVzLCBqcVhIUikge1xuICAgICAgICAgICAgdWIgPSB0aGF0Ll9nZXRVcGxvYWRlZEJ5dGVzKGpxWEhSKSB8fCB1YiArIG8uY2h1bmtTaXplO1xuICAgICAgICAgICAgLy8gQ3JlYXRlIGEgcHJvZ3Jlc3MgZXZlbnQgaWYgbm8gZmluYWwgcHJvZ3Jlc3MgZXZlbnRcbiAgICAgICAgICAgIC8vIHdpdGggbG9hZGVkIGVxdWFsaW5nIHRvdGFsIGhhcyBiZWVuIHRyaWdnZXJlZFxuICAgICAgICAgICAgLy8gZm9yIHRoaXMgY2h1bms6XG4gICAgICAgICAgICBpZiAoY3VycmVudExvYWRlZCArIG8uY2h1bmtTaXplIC0gby5fcHJvZ3Jlc3MubG9hZGVkKSB7XG4gICAgICAgICAgICAgIHRoYXQuX29uUHJvZ3Jlc3MoXG4gICAgICAgICAgICAgICAgJC5FdmVudCgncHJvZ3Jlc3MnLCB7XG4gICAgICAgICAgICAgICAgICBsZW5ndGhDb21wdXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgbG9hZGVkOiB1YiAtIG8udXBsb2FkZWRCeXRlcyxcbiAgICAgICAgICAgICAgICAgIHRvdGFsOiB1YiAtIG8udXBsb2FkZWRCeXRlc1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIG9cbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wdGlvbnMudXBsb2FkZWRCeXRlcyA9IG8udXBsb2FkZWRCeXRlcyA9IHViO1xuICAgICAgICAgICAgby5yZXN1bHQgPSByZXN1bHQ7XG4gICAgICAgICAgICBvLnRleHRTdGF0dXMgPSB0ZXh0U3RhdHVzO1xuICAgICAgICAgICAgby5qcVhIUiA9IGpxWEhSO1xuICAgICAgICAgICAgdGhhdC5fdHJpZ2dlcignY2h1bmtkb25lJywgbnVsbCwgbyk7XG4gICAgICAgICAgICB0aGF0Ll90cmlnZ2VyKCdjaHVua2Fsd2F5cycsIG51bGwsIG8pO1xuICAgICAgICAgICAgaWYgKHViIDwgZnMpIHtcbiAgICAgICAgICAgICAgLy8gRmlsZSB1cGxvYWQgbm90IHlldCBjb21wbGV0ZSxcbiAgICAgICAgICAgICAgLy8gY29udGludWUgd2l0aCB0aGUgbmV4dCBjaHVuazpcbiAgICAgICAgICAgICAgdXBsb2FkKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBkZmQucmVzb2x2ZVdpdGgoby5jb250ZXh0LCBbcmVzdWx0LCB0ZXh0U3RhdHVzLCBqcVhIUl0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgICAgLmZhaWwoZnVuY3Rpb24gKGpxWEhSLCB0ZXh0U3RhdHVzLCBlcnJvclRocm93bikge1xuICAgICAgICAgICAgby5qcVhIUiA9IGpxWEhSO1xuICAgICAgICAgICAgby50ZXh0U3RhdHVzID0gdGV4dFN0YXR1cztcbiAgICAgICAgICAgIG8uZXJyb3JUaHJvd24gPSBlcnJvclRocm93bjtcbiAgICAgICAgICAgIHRoYXQuX3RyaWdnZXIoJ2NodW5rZmFpbCcsIG51bGwsIG8pO1xuICAgICAgICAgICAgdGhhdC5fdHJpZ2dlcignY2h1bmthbHdheXMnLCBudWxsLCBvKTtcbiAgICAgICAgICAgIGRmZC5yZWplY3RXaXRoKG8uY29udGV4dCwgW2pxWEhSLCB0ZXh0U3RhdHVzLCBlcnJvclRocm93bl0pO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLmFsd2F5cyhmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB0aGF0Ll9kZWluaXRQcm9ncmVzc0xpc3RlbmVyKG8pO1xuICAgICAgICAgIH0pO1xuICAgICAgfTtcbiAgICAgIHRoaXMuX2VuaGFuY2VQcm9taXNlKHByb21pc2UpO1xuICAgICAgcHJvbWlzZS5hYm9ydCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIGpxWEhSLmFib3J0KCk7XG4gICAgICB9O1xuICAgICAgdXBsb2FkKCk7XG4gICAgICByZXR1cm4gcHJvbWlzZTtcbiAgICB9LFxuXG4gICAgX2JlZm9yZVNlbmQ6IGZ1bmN0aW9uIChlLCBkYXRhKSB7XG4gICAgICBpZiAodGhpcy5fYWN0aXZlID09PSAwKSB7XG4gICAgICAgIC8vIHRoZSBzdGFydCBjYWxsYmFjayBpcyB0cmlnZ2VyZWQgd2hlbiBhbiB1cGxvYWQgc3RhcnRzXG4gICAgICAgIC8vIGFuZCBubyBvdGhlciB1cGxvYWRzIGFyZSBjdXJyZW50bHkgcnVubmluZyxcbiAgICAgICAgLy8gZXF1aXZhbGVudCB0byB0aGUgZ2xvYmFsIGFqYXhTdGFydCBldmVudDpcbiAgICAgICAgdGhpcy5fdHJpZ2dlcignc3RhcnQnKTtcbiAgICAgICAgLy8gU2V0IHRpbWVyIGZvciBnbG9iYWwgYml0cmF0ZSBwcm9ncmVzcyBjYWxjdWxhdGlvbjpcbiAgICAgICAgdGhpcy5fYml0cmF0ZVRpbWVyID0gbmV3IHRoaXMuX0JpdHJhdGVUaW1lcigpO1xuICAgICAgICAvLyBSZXNldCB0aGUgZ2xvYmFsIHByb2dyZXNzIHZhbHVlczpcbiAgICAgICAgdGhpcy5fcHJvZ3Jlc3MubG9hZGVkID0gdGhpcy5fcHJvZ3Jlc3MudG90YWwgPSAwO1xuICAgICAgICB0aGlzLl9wcm9ncmVzcy5iaXRyYXRlID0gMDtcbiAgICAgIH1cbiAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgY29udGFpbmVyIG9iamVjdHMgZm9yIHRoZSAucmVzcG9uc2UoKSBhbmRcbiAgICAgIC8vIC5wcm9ncmVzcygpIG1ldGhvZHMgb24gdGhlIGRhdGEgb2JqZWN0IGFyZSBhdmFpbGFibGVcbiAgICAgIC8vIGFuZCByZXNldCB0byB0aGVpciBpbml0aWFsIHN0YXRlOlxuICAgICAgdGhpcy5faW5pdFJlc3BvbnNlT2JqZWN0KGRhdGEpO1xuICAgICAgdGhpcy5faW5pdFByb2dyZXNzT2JqZWN0KGRhdGEpO1xuICAgICAgZGF0YS5fcHJvZ3Jlc3MubG9hZGVkID0gZGF0YS5sb2FkZWQgPSBkYXRhLnVwbG9hZGVkQnl0ZXMgfHwgMDtcbiAgICAgIGRhdGEuX3Byb2dyZXNzLnRvdGFsID0gZGF0YS50b3RhbCA9IHRoaXMuX2dldFRvdGFsKGRhdGEuZmlsZXMpIHx8IDE7XG4gICAgICBkYXRhLl9wcm9ncmVzcy5iaXRyYXRlID0gZGF0YS5iaXRyYXRlID0gMDtcbiAgICAgIHRoaXMuX2FjdGl2ZSArPSAxO1xuICAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgZ2xvYmFsIHByb2dyZXNzIHZhbHVlczpcbiAgICAgIHRoaXMuX3Byb2dyZXNzLmxvYWRlZCArPSBkYXRhLmxvYWRlZDtcbiAgICAgIHRoaXMuX3Byb2dyZXNzLnRvdGFsICs9IGRhdGEudG90YWw7XG4gICAgfSxcblxuICAgIF9vbkRvbmU6IGZ1bmN0aW9uIChyZXN1bHQsIHRleHRTdGF0dXMsIGpxWEhSLCBvcHRpb25zKSB7XG4gICAgICB2YXIgdG90YWwgPSBvcHRpb25zLl9wcm9ncmVzcy50b3RhbCxcbiAgICAgICAgcmVzcG9uc2UgPSBvcHRpb25zLl9yZXNwb25zZTtcbiAgICAgIGlmIChvcHRpb25zLl9wcm9ncmVzcy5sb2FkZWQgPCB0b3RhbCkge1xuICAgICAgICAvLyBDcmVhdGUgYSBwcm9ncmVzcyBldmVudCBpZiBubyBmaW5hbCBwcm9ncmVzcyBldmVudFxuICAgICAgICAvLyB3aXRoIGxvYWRlZCBlcXVhbGluZyB0b3RhbCBoYXMgYmVlbiB0cmlnZ2VyZWQ6XG4gICAgICAgIHRoaXMuX29uUHJvZ3Jlc3MoXG4gICAgICAgICAgJC5FdmVudCgncHJvZ3Jlc3MnLCB7XG4gICAgICAgICAgICBsZW5ndGhDb21wdXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgbG9hZGVkOiB0b3RhbCxcbiAgICAgICAgICAgIHRvdGFsOiB0b3RhbFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIG9wdGlvbnNcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHJlc3BvbnNlLnJlc3VsdCA9IG9wdGlvbnMucmVzdWx0ID0gcmVzdWx0O1xuICAgICAgcmVzcG9uc2UudGV4dFN0YXR1cyA9IG9wdGlvbnMudGV4dFN0YXR1cyA9IHRleHRTdGF0dXM7XG4gICAgICByZXNwb25zZS5qcVhIUiA9IG9wdGlvbnMuanFYSFIgPSBqcVhIUjtcbiAgICAgIHRoaXMuX3RyaWdnZXIoJ2RvbmUnLCBudWxsLCBvcHRpb25zKTtcbiAgICB9LFxuXG4gICAgX29uRmFpbDogZnVuY3Rpb24gKGpxWEhSLCB0ZXh0U3RhdHVzLCBlcnJvclRocm93biwgb3B0aW9ucykge1xuICAgICAgdmFyIHJlc3BvbnNlID0gb3B0aW9ucy5fcmVzcG9uc2U7XG4gICAgICBpZiAob3B0aW9ucy5yZWNhbGN1bGF0ZVByb2dyZXNzKSB7XG4gICAgICAgIC8vIFJlbW92ZSB0aGUgZmFpbGVkIChlcnJvciBvciBhYm9ydCkgZmlsZSB1cGxvYWQgZnJvbVxuICAgICAgICAvLyB0aGUgZ2xvYmFsIHByb2dyZXNzIGNhbGN1bGF0aW9uOlxuICAgICAgICB0aGlzLl9wcm9ncmVzcy5sb2FkZWQgLT0gb3B0aW9ucy5fcHJvZ3Jlc3MubG9hZGVkO1xuICAgICAgICB0aGlzLl9wcm9ncmVzcy50b3RhbCAtPSBvcHRpb25zLl9wcm9ncmVzcy50b3RhbDtcbiAgICAgIH1cbiAgICAgIHJlc3BvbnNlLmpxWEhSID0gb3B0aW9ucy5qcVhIUiA9IGpxWEhSO1xuICAgICAgcmVzcG9uc2UudGV4dFN0YXR1cyA9IG9wdGlvbnMudGV4dFN0YXR1cyA9IHRleHRTdGF0dXM7XG4gICAgICByZXNwb25zZS5lcnJvclRocm93biA9IG9wdGlvbnMuZXJyb3JUaHJvd24gPSBlcnJvclRocm93bjtcbiAgICAgIHRoaXMuX3RyaWdnZXIoJ2ZhaWwnLCBudWxsLCBvcHRpb25zKTtcbiAgICB9LFxuXG4gICAgX29uQWx3YXlzOiBmdW5jdGlvbiAoanFYSFJvclJlc3VsdCwgdGV4dFN0YXR1cywganFYSFJvckVycm9yLCBvcHRpb25zKSB7XG4gICAgICAvLyBqcVhIUm9yUmVzdWx0LCB0ZXh0U3RhdHVzIGFuZCBqcVhIUm9yRXJyb3IgYXJlIGFkZGVkIHRvIHRoZVxuICAgICAgLy8gb3B0aW9ucyBvYmplY3QgdmlhIGRvbmUgYW5kIGZhaWwgY2FsbGJhY2tzXG4gICAgICB0aGlzLl90cmlnZ2VyKCdhbHdheXMnLCBudWxsLCBvcHRpb25zKTtcbiAgICB9LFxuXG4gICAgX29uU2VuZDogZnVuY3Rpb24gKGUsIGRhdGEpIHtcbiAgICAgIGlmICghZGF0YS5zdWJtaXQpIHtcbiAgICAgICAgdGhpcy5fYWRkQ29udmVuaWVuY2VNZXRob2RzKGUsIGRhdGEpO1xuICAgICAgfVxuICAgICAgdmFyIHRoYXQgPSB0aGlzLFxuICAgICAgICBqcVhIUixcbiAgICAgICAgYWJvcnRlZCxcbiAgICAgICAgc2xvdCxcbiAgICAgICAgcGlwZSxcbiAgICAgICAgb3B0aW9ucyA9IHRoYXQuX2dldEFKQVhTZXR0aW5ncyhkYXRhKSxcbiAgICAgICAgc2VuZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICB0aGF0Ll9zZW5kaW5nICs9IDE7XG4gICAgICAgICAgLy8gU2V0IHRpbWVyIGZvciBiaXRyYXRlIHByb2dyZXNzIGNhbGN1bGF0aW9uOlxuICAgICAgICAgIG9wdGlvbnMuX2JpdHJhdGVUaW1lciA9IG5ldyB0aGF0Ll9CaXRyYXRlVGltZXIoKTtcbiAgICAgICAgICBqcVhIUiA9XG4gICAgICAgICAgICBqcVhIUiB8fFxuICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAoKGFib3J0ZWQgfHxcbiAgICAgICAgICAgICAgICB0aGF0Ll90cmlnZ2VyKFxuICAgICAgICAgICAgICAgICAgJ3NlbmQnLFxuICAgICAgICAgICAgICAgICAgJC5FdmVudCgnc2VuZCcsIHsgZGVsZWdhdGVkRXZlbnQ6IGUgfSksXG4gICAgICAgICAgICAgICAgICBvcHRpb25zXG4gICAgICAgICAgICAgICAgKSA9PT0gZmFsc2UpICYmXG4gICAgICAgICAgICAgICAgdGhhdC5fZ2V0WEhSUHJvbWlzZShmYWxzZSwgb3B0aW9ucy5jb250ZXh0LCBhYm9ydGVkKSkgfHxcbiAgICAgICAgICAgICAgdGhhdC5fY2h1bmtlZFVwbG9hZChvcHRpb25zKSB8fFxuICAgICAgICAgICAgICAkLmFqYXgob3B0aW9ucylcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgLmRvbmUoZnVuY3Rpb24gKHJlc3VsdCwgdGV4dFN0YXR1cywganFYSFIpIHtcbiAgICAgICAgICAgICAgICB0aGF0Ll9vbkRvbmUocmVzdWx0LCB0ZXh0U3RhdHVzLCBqcVhIUiwgb3B0aW9ucyk7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIC5mYWlsKGZ1bmN0aW9uIChqcVhIUiwgdGV4dFN0YXR1cywgZXJyb3JUaHJvd24pIHtcbiAgICAgICAgICAgICAgICB0aGF0Ll9vbkZhaWwoanFYSFIsIHRleHRTdGF0dXMsIGVycm9yVGhyb3duLCBvcHRpb25zKTtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgLmFsd2F5cyhmdW5jdGlvbiAoanFYSFJvclJlc3VsdCwgdGV4dFN0YXR1cywganFYSFJvckVycm9yKSB7XG4gICAgICAgICAgICAgICAgdGhhdC5fZGVpbml0UHJvZ3Jlc3NMaXN0ZW5lcihvcHRpb25zKTtcbiAgICAgICAgICAgICAgICB0aGF0Ll9vbkFsd2F5cyhcbiAgICAgICAgICAgICAgICAgIGpxWEhSb3JSZXN1bHQsXG4gICAgICAgICAgICAgICAgICB0ZXh0U3RhdHVzLFxuICAgICAgICAgICAgICAgICAganFYSFJvckVycm9yLFxuICAgICAgICAgICAgICAgICAgb3B0aW9uc1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgdGhhdC5fc2VuZGluZyAtPSAxO1xuICAgICAgICAgICAgICAgIHRoYXQuX2FjdGl2ZSAtPSAxO1xuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgIG9wdGlvbnMubGltaXRDb25jdXJyZW50VXBsb2FkcyAmJlxuICAgICAgICAgICAgICAgICAgb3B0aW9ucy5saW1pdENvbmN1cnJlbnRVcGxvYWRzID4gdGhhdC5fc2VuZGluZ1xuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgLy8gU3RhcnQgdGhlIG5leHQgcXVldWVkIHVwbG9hZCxcbiAgICAgICAgICAgICAgICAgIC8vIHRoYXQgaGFzIG5vdCBiZWVuIGFib3J0ZWQ6XG4gICAgICAgICAgICAgICAgICB2YXIgbmV4dFNsb3QgPSB0aGF0Ll9zbG90cy5zaGlmdCgpO1xuICAgICAgICAgICAgICAgICAgd2hpbGUgKG5leHRTbG90KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGF0Ll9nZXREZWZlcnJlZFN0YXRlKG5leHRTbG90KSA9PT0gJ3BlbmRpbmcnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgbmV4dFNsb3QucmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIG5leHRTbG90ID0gdGhhdC5fc2xvdHMuc2hpZnQoKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHRoYXQuX2FjdGl2ZSA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgLy8gVGhlIHN0b3AgY2FsbGJhY2sgaXMgdHJpZ2dlcmVkIHdoZW4gYWxsIHVwbG9hZHMgaGF2ZVxuICAgICAgICAgICAgICAgICAgLy8gYmVlbiBjb21wbGV0ZWQsIGVxdWl2YWxlbnQgdG8gdGhlIGdsb2JhbCBhamF4U3RvcCBldmVudDpcbiAgICAgICAgICAgICAgICAgIHRoYXQuX3RyaWdnZXIoJ3N0b3AnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiBqcVhIUjtcbiAgICAgICAgfTtcbiAgICAgIHRoaXMuX2JlZm9yZVNlbmQoZSwgb3B0aW9ucyk7XG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMub3B0aW9ucy5zZXF1ZW50aWFsVXBsb2FkcyB8fFxuICAgICAgICAodGhpcy5vcHRpb25zLmxpbWl0Q29uY3VycmVudFVwbG9hZHMgJiZcbiAgICAgICAgICB0aGlzLm9wdGlvbnMubGltaXRDb25jdXJyZW50VXBsb2FkcyA8PSB0aGlzLl9zZW5kaW5nKVxuICAgICAgKSB7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMubGltaXRDb25jdXJyZW50VXBsb2FkcyA+IDEpIHtcbiAgICAgICAgICBzbG90ID0gJC5EZWZlcnJlZCgpO1xuICAgICAgICAgIHRoaXMuX3Nsb3RzLnB1c2goc2xvdCk7XG4gICAgICAgICAgcGlwZSA9IHNsb3RbdGhhdC5fcHJvbWlzZVBpcGVdKHNlbmQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuX3NlcXVlbmNlID0gdGhpcy5fc2VxdWVuY2VbdGhhdC5fcHJvbWlzZVBpcGVdKHNlbmQsIHNlbmQpO1xuICAgICAgICAgIHBpcGUgPSB0aGlzLl9zZXF1ZW5jZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBSZXR1cm4gdGhlIHBpcGVkIFByb21pc2Ugb2JqZWN0LCBlbmhhbmNlZCB3aXRoIGFuIGFib3J0IG1ldGhvZCxcbiAgICAgICAgLy8gd2hpY2ggaXMgZGVsZWdhdGVkIHRvIHRoZSBqcVhIUiBvYmplY3Qgb2YgdGhlIGN1cnJlbnQgdXBsb2FkLFxuICAgICAgICAvLyBhbmQganFYSFIgY2FsbGJhY2tzIG1hcHBlZCB0byB0aGUgZXF1aXZhbGVudCBQcm9taXNlIG1ldGhvZHM6XG4gICAgICAgIHBpcGUuYWJvcnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgYWJvcnRlZCA9IFt1bmRlZmluZWQsICdhYm9ydCcsICdhYm9ydCddO1xuICAgICAgICAgIGlmICghanFYSFIpIHtcbiAgICAgICAgICAgIGlmIChzbG90KSB7XG4gICAgICAgICAgICAgIHNsb3QucmVqZWN0V2l0aChvcHRpb25zLmNvbnRleHQsIGFib3J0ZWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHNlbmQoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGpxWEhSLmFib3J0KCk7XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiB0aGlzLl9lbmhhbmNlUHJvbWlzZShwaXBlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBzZW5kKCk7XG4gICAgfSxcblxuICAgIF9vbkFkZDogZnVuY3Rpb24gKGUsIGRhdGEpIHtcbiAgICAgIHZhciB0aGF0ID0gdGhpcyxcbiAgICAgICAgcmVzdWx0ID0gdHJ1ZSxcbiAgICAgICAgb3B0aW9ucyA9ICQuZXh0ZW5kKHt9LCB0aGlzLm9wdGlvbnMsIGRhdGEpLFxuICAgICAgICBmaWxlcyA9IGRhdGEuZmlsZXMsXG4gICAgICAgIGZpbGVzTGVuZ3RoID0gZmlsZXMubGVuZ3RoLFxuICAgICAgICBsaW1pdCA9IG9wdGlvbnMubGltaXRNdWx0aUZpbGVVcGxvYWRzLFxuICAgICAgICBsaW1pdFNpemUgPSBvcHRpb25zLmxpbWl0TXVsdGlGaWxlVXBsb2FkU2l6ZSxcbiAgICAgICAgb3ZlcmhlYWQgPSBvcHRpb25zLmxpbWl0TXVsdGlGaWxlVXBsb2FkU2l6ZU92ZXJoZWFkLFxuICAgICAgICBiYXRjaFNpemUgPSAwLFxuICAgICAgICBwYXJhbU5hbWUgPSB0aGlzLl9nZXRQYXJhbU5hbWUob3B0aW9ucyksXG4gICAgICAgIHBhcmFtTmFtZVNldCxcbiAgICAgICAgcGFyYW1OYW1lU2xpY2UsXG4gICAgICAgIGZpbGVTZXQsXG4gICAgICAgIGksXG4gICAgICAgIGogPSAwO1xuICAgICAgaWYgKCFmaWxlc0xlbmd0aCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBpZiAobGltaXRTaXplICYmIGZpbGVzWzBdLnNpemUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBsaW1pdFNpemUgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgICEob3B0aW9ucy5zaW5nbGVGaWxlVXBsb2FkcyB8fCBsaW1pdCB8fCBsaW1pdFNpemUpIHx8XG4gICAgICAgICF0aGlzLl9pc1hIUlVwbG9hZChvcHRpb25zKVxuICAgICAgKSB7XG4gICAgICAgIGZpbGVTZXQgPSBbZmlsZXNdO1xuICAgICAgICBwYXJhbU5hbWVTZXQgPSBbcGFyYW1OYW1lXTtcbiAgICAgIH0gZWxzZSBpZiAoIShvcHRpb25zLnNpbmdsZUZpbGVVcGxvYWRzIHx8IGxpbWl0U2l6ZSkgJiYgbGltaXQpIHtcbiAgICAgICAgZmlsZVNldCA9IFtdO1xuICAgICAgICBwYXJhbU5hbWVTZXQgPSBbXTtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IGZpbGVzTGVuZ3RoOyBpICs9IGxpbWl0KSB7XG4gICAgICAgICAgZmlsZVNldC5wdXNoKGZpbGVzLnNsaWNlKGksIGkgKyBsaW1pdCkpO1xuICAgICAgICAgIHBhcmFtTmFtZVNsaWNlID0gcGFyYW1OYW1lLnNsaWNlKGksIGkgKyBsaW1pdCk7XG4gICAgICAgICAgaWYgKCFwYXJhbU5hbWVTbGljZS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHBhcmFtTmFtZVNsaWNlID0gcGFyYW1OYW1lO1xuICAgICAgICAgIH1cbiAgICAgICAgICBwYXJhbU5hbWVTZXQucHVzaChwYXJhbU5hbWVTbGljZSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoIW9wdGlvbnMuc2luZ2xlRmlsZVVwbG9hZHMgJiYgbGltaXRTaXplKSB7XG4gICAgICAgIGZpbGVTZXQgPSBbXTtcbiAgICAgICAgcGFyYW1OYW1lU2V0ID0gW107XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBmaWxlc0xlbmd0aDsgaSA9IGkgKyAxKSB7XG4gICAgICAgICAgYmF0Y2hTaXplICs9IGZpbGVzW2ldLnNpemUgKyBvdmVyaGVhZDtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBpICsgMSA9PT0gZmlsZXNMZW5ndGggfHxcbiAgICAgICAgICAgIGJhdGNoU2l6ZSArIGZpbGVzW2kgKyAxXS5zaXplICsgb3ZlcmhlYWQgPiBsaW1pdFNpemUgfHxcbiAgICAgICAgICAgIChsaW1pdCAmJiBpICsgMSAtIGogPj0gbGltaXQpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBmaWxlU2V0LnB1c2goZmlsZXMuc2xpY2UoaiwgaSArIDEpKTtcbiAgICAgICAgICAgIHBhcmFtTmFtZVNsaWNlID0gcGFyYW1OYW1lLnNsaWNlKGosIGkgKyAxKTtcbiAgICAgICAgICAgIGlmICghcGFyYW1OYW1lU2xpY2UubGVuZ3RoKSB7XG4gICAgICAgICAgICAgIHBhcmFtTmFtZVNsaWNlID0gcGFyYW1OYW1lO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcGFyYW1OYW1lU2V0LnB1c2gocGFyYW1OYW1lU2xpY2UpO1xuICAgICAgICAgICAgaiA9IGkgKyAxO1xuICAgICAgICAgICAgYmF0Y2hTaXplID0gMDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBhcmFtTmFtZVNldCA9IHBhcmFtTmFtZTtcbiAgICAgIH1cbiAgICAgIGRhdGEub3JpZ2luYWxGaWxlcyA9IGZpbGVzO1xuICAgICAgJC5lYWNoKGZpbGVTZXQgfHwgZmlsZXMsIGZ1bmN0aW9uIChpbmRleCwgZWxlbWVudCkge1xuICAgICAgICB2YXIgbmV3RGF0YSA9ICQuZXh0ZW5kKHt9LCBkYXRhKTtcbiAgICAgICAgbmV3RGF0YS5maWxlcyA9IGZpbGVTZXQgPyBlbGVtZW50IDogW2VsZW1lbnRdO1xuICAgICAgICBuZXdEYXRhLnBhcmFtTmFtZSA9IHBhcmFtTmFtZVNldFtpbmRleF07XG4gICAgICAgIHRoYXQuX2luaXRSZXNwb25zZU9iamVjdChuZXdEYXRhKTtcbiAgICAgICAgdGhhdC5faW5pdFByb2dyZXNzT2JqZWN0KG5ld0RhdGEpO1xuICAgICAgICB0aGF0Ll9hZGRDb252ZW5pZW5jZU1ldGhvZHMoZSwgbmV3RGF0YSk7XG4gICAgICAgIHJlc3VsdCA9IHRoYXQuX3RyaWdnZXIoXG4gICAgICAgICAgJ2FkZCcsXG4gICAgICAgICAgJC5FdmVudCgnYWRkJywgeyBkZWxlZ2F0ZWRFdmVudDogZSB9KSxcbiAgICAgICAgICBuZXdEYXRhXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSxcblxuICAgIF9yZXBsYWNlRmlsZUlucHV0OiBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgdmFyIGlucHV0ID0gZGF0YS5maWxlSW5wdXQsXG4gICAgICAgIGlucHV0Q2xvbmUgPSBpbnB1dC5jbG9uZSh0cnVlKSxcbiAgICAgICAgcmVzdG9yZUZvY3VzID0gaW5wdXQuaXMoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCk7XG4gICAgICAvLyBBZGQgYSByZWZlcmVuY2UgZm9yIHRoZSBuZXcgY2xvbmVkIGZpbGUgaW5wdXQgdG8gdGhlIGRhdGEgYXJndW1lbnQ6XG4gICAgICBkYXRhLmZpbGVJbnB1dENsb25lID0gaW5wdXRDbG9uZTtcbiAgICAgICQoJzxmb3JtPjwvZm9ybT4nKS5hcHBlbmQoaW5wdXRDbG9uZSlbMF0ucmVzZXQoKTtcbiAgICAgIC8vIERldGFjaGluZyBhbGxvd3MgdG8gaW5zZXJ0IHRoZSBmaWxlSW5wdXQgb24gYW5vdGhlciBmb3JtXG4gICAgICAvLyB3aXRob3V0IGxvc2luZyB0aGUgZmlsZSBpbnB1dCB2YWx1ZTpcbiAgICAgIGlucHV0LmFmdGVyKGlucHV0Q2xvbmUpLmRldGFjaCgpO1xuICAgICAgLy8gSWYgdGhlIGZpbGVJbnB1dCBoYWQgZm9jdXMgYmVmb3JlIGl0IHdhcyBkZXRhY2hlZCxcbiAgICAgIC8vIHJlc3RvcmUgZm9jdXMgdG8gdGhlIGlucHV0Q2xvbmUuXG4gICAgICBpZiAocmVzdG9yZUZvY3VzKSB7XG4gICAgICAgIGlucHV0Q2xvbmUudHJpZ2dlcignZm9jdXMnKTtcbiAgICAgIH1cbiAgICAgIC8vIEF2b2lkIG1lbW9yeSBsZWFrcyB3aXRoIHRoZSBkZXRhY2hlZCBmaWxlIGlucHV0OlxuICAgICAgJC5jbGVhbkRhdGEoaW5wdXQub2ZmKCdyZW1vdmUnKSk7XG4gICAgICAvLyBSZXBsYWNlIHRoZSBvcmlnaW5hbCBmaWxlIGlucHV0IGVsZW1lbnQgaW4gdGhlIGZpbGVJbnB1dFxuICAgICAgLy8gZWxlbWVudHMgc2V0IHdpdGggdGhlIGNsb25lLCB3aGljaCBoYXMgYmVlbiBjb3BpZWQgaW5jbHVkaW5nXG4gICAgICAvLyBldmVudCBoYW5kbGVyczpcbiAgICAgIHRoaXMub3B0aW9ucy5maWxlSW5wdXQgPSB0aGlzLm9wdGlvbnMuZmlsZUlucHV0Lm1hcChmdW5jdGlvbiAoaSwgZWwpIHtcbiAgICAgICAgaWYgKGVsID09PSBpbnB1dFswXSkge1xuICAgICAgICAgIHJldHVybiBpbnB1dENsb25lWzBdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBlbDtcbiAgICAgIH0pO1xuICAgICAgLy8gSWYgdGhlIHdpZGdldCBoYXMgYmVlbiBpbml0aWFsaXplZCBvbiB0aGUgZmlsZSBpbnB1dCBpdHNlbGYsXG4gICAgICAvLyBvdmVycmlkZSB0aGlzLmVsZW1lbnQgd2l0aCB0aGUgZmlsZSBpbnB1dCBjbG9uZTpcbiAgICAgIGlmIChpbnB1dFswXSA9PT0gdGhpcy5lbGVtZW50WzBdKSB7XG4gICAgICAgIHRoaXMuZWxlbWVudCA9IGlucHV0Q2xvbmU7XG4gICAgICB9XG4gICAgfSxcblxuICAgIF9oYW5kbGVGaWxlVHJlZUVudHJ5OiBmdW5jdGlvbiAoZW50cnksIHBhdGgpIHtcbiAgICAgIHZhciB0aGF0ID0gdGhpcyxcbiAgICAgICAgZGZkID0gJC5EZWZlcnJlZCgpLFxuICAgICAgICBlbnRyaWVzID0gW10sXG4gICAgICAgIGRpclJlYWRlcixcbiAgICAgICAgZXJyb3JIYW5kbGVyID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICBpZiAoZSAmJiAhZS5lbnRyeSkge1xuICAgICAgICAgICAgZS5lbnRyeSA9IGVudHJ5O1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBTaW5jZSAkLndoZW4gcmV0dXJucyBpbW1lZGlhdGVseSBpZiBvbmVcbiAgICAgICAgICAvLyBEZWZlcnJlZCBpcyByZWplY3RlZCwgd2UgdXNlIHJlc29sdmUgaW5zdGVhZC5cbiAgICAgICAgICAvLyBUaGlzIGFsbG93cyB2YWxpZCBmaWxlcyBhbmQgaW52YWxpZCBpdGVtc1xuICAgICAgICAgIC8vIHRvIGJlIHJldHVybmVkIHRvZ2V0aGVyIGluIG9uZSBzZXQ6XG4gICAgICAgICAgZGZkLnJlc29sdmUoW2VdKTtcbiAgICAgICAgfSxcbiAgICAgICAgc3VjY2Vzc0hhbmRsZXIgPSBmdW5jdGlvbiAoZW50cmllcykge1xuICAgICAgICAgIHRoYXRcbiAgICAgICAgICAgIC5faGFuZGxlRmlsZVRyZWVFbnRyaWVzKGVudHJpZXMsIHBhdGggKyBlbnRyeS5uYW1lICsgJy8nKVxuICAgICAgICAgICAgLmRvbmUoZnVuY3Rpb24gKGZpbGVzKSB7XG4gICAgICAgICAgICAgIGRmZC5yZXNvbHZlKGZpbGVzKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuZmFpbChlcnJvckhhbmRsZXIpO1xuICAgICAgICB9LFxuICAgICAgICByZWFkRW50cmllcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBkaXJSZWFkZXIucmVhZEVudHJpZXMoZnVuY3Rpb24gKHJlc3VsdHMpIHtcbiAgICAgICAgICAgIGlmICghcmVzdWx0cy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgc3VjY2Vzc0hhbmRsZXIoZW50cmllcyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBlbnRyaWVzID0gZW50cmllcy5jb25jYXQocmVzdWx0cyk7XG4gICAgICAgICAgICAgIHJlYWRFbnRyaWVzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSwgZXJyb3JIYW5kbGVyKTtcbiAgICAgICAgfTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICAgICAgcGF0aCA9IHBhdGggfHwgJyc7XG4gICAgICBpZiAoZW50cnkuaXNGaWxlKSB7XG4gICAgICAgIGlmIChlbnRyeS5fZmlsZSkge1xuICAgICAgICAgIC8vIFdvcmthcm91bmQgZm9yIENocm9tZSBidWcgIzE0OTczNVxuICAgICAgICAgIGVudHJ5Ll9maWxlLnJlbGF0aXZlUGF0aCA9IHBhdGg7XG4gICAgICAgICAgZGZkLnJlc29sdmUoZW50cnkuX2ZpbGUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGVudHJ5LmZpbGUoZnVuY3Rpb24gKGZpbGUpIHtcbiAgICAgICAgICAgIGZpbGUucmVsYXRpdmVQYXRoID0gcGF0aDtcbiAgICAgICAgICAgIGRmZC5yZXNvbHZlKGZpbGUpO1xuICAgICAgICAgIH0sIGVycm9ySGFuZGxlcik7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoZW50cnkuaXNEaXJlY3RvcnkpIHtcbiAgICAgICAgZGlyUmVhZGVyID0gZW50cnkuY3JlYXRlUmVhZGVyKCk7XG4gICAgICAgIHJlYWRFbnRyaWVzKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBSZXR1cm4gYW4gZW1wdHkgbGlzdCBmb3IgZmlsZSBzeXN0ZW0gaXRlbXNcbiAgICAgICAgLy8gb3RoZXIgdGhhbiBmaWxlcyBvciBkaXJlY3RvcmllczpcbiAgICAgICAgZGZkLnJlc29sdmUoW10pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGRmZC5wcm9taXNlKCk7XG4gICAgfSxcblxuICAgIF9oYW5kbGVGaWxlVHJlZUVudHJpZXM6IGZ1bmN0aW9uIChlbnRyaWVzLCBwYXRoKSB7XG4gICAgICB2YXIgdGhhdCA9IHRoaXM7XG4gICAgICByZXR1cm4gJC53aGVuXG4gICAgICAgIC5hcHBseShcbiAgICAgICAgICAkLFxuICAgICAgICAgICQubWFwKGVudHJpZXMsIGZ1bmN0aW9uIChlbnRyeSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoYXQuX2hhbmRsZUZpbGVUcmVlRW50cnkoZW50cnksIHBhdGgpO1xuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgICAgW3RoaXMuX3Byb21pc2VQaXBlXShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuIEFycmF5LnByb3RvdHlwZS5jb25jYXQuYXBwbHkoW10sIGFyZ3VtZW50cyk7XG4gICAgICAgIH0pO1xuICAgIH0sXG5cbiAgICBfZ2V0RHJvcHBlZEZpbGVzOiBmdW5jdGlvbiAoZGF0YVRyYW5zZmVyKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgICAgIGRhdGFUcmFuc2ZlciA9IGRhdGFUcmFuc2ZlciB8fCB7fTtcbiAgICAgIHZhciBpdGVtcyA9IGRhdGFUcmFuc2Zlci5pdGVtcztcbiAgICAgIGlmIChcbiAgICAgICAgaXRlbXMgJiZcbiAgICAgICAgaXRlbXMubGVuZ3RoICYmXG4gICAgICAgIChpdGVtc1swXS53ZWJraXRHZXRBc0VudHJ5IHx8IGl0ZW1zWzBdLmdldEFzRW50cnkpXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hhbmRsZUZpbGVUcmVlRW50cmllcyhcbiAgICAgICAgICAkLm1hcChpdGVtcywgZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgICAgIHZhciBlbnRyeTtcbiAgICAgICAgICAgIGlmIChpdGVtLndlYmtpdEdldEFzRW50cnkpIHtcbiAgICAgICAgICAgICAgZW50cnkgPSBpdGVtLndlYmtpdEdldEFzRW50cnkoKTtcbiAgICAgICAgICAgICAgaWYgKGVudHJ5KSB7XG4gICAgICAgICAgICAgICAgLy8gV29ya2Fyb3VuZCBmb3IgQ2hyb21lIGJ1ZyAjMTQ5NzM1OlxuICAgICAgICAgICAgICAgIGVudHJ5Ll9maWxlID0gaXRlbS5nZXRBc0ZpbGUoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXR1cm4gZW50cnk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gaXRlbS5nZXRBc0VudHJ5KCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiAkLkRlZmVycmVkKCkucmVzb2x2ZSgkLm1ha2VBcnJheShkYXRhVHJhbnNmZXIuZmlsZXMpKS5wcm9taXNlKCk7XG4gICAgfSxcblxuICAgIF9nZXRTaW5nbGVGaWxlSW5wdXRGaWxlczogZnVuY3Rpb24gKGZpbGVJbnB1dCkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgICBmaWxlSW5wdXQgPSAkKGZpbGVJbnB1dCk7XG4gICAgICB2YXIgZW50cmllcyA9IGZpbGVJbnB1dC5wcm9wKCdlbnRyaWVzJyksXG4gICAgICAgIGZpbGVzLFxuICAgICAgICB2YWx1ZTtcbiAgICAgIGlmIChlbnRyaWVzICYmIGVudHJpZXMubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9oYW5kbGVGaWxlVHJlZUVudHJpZXMoZW50cmllcyk7XG4gICAgICB9XG4gICAgICBmaWxlcyA9ICQubWFrZUFycmF5KGZpbGVJbnB1dC5wcm9wKCdmaWxlcycpKTtcbiAgICAgIGlmICghZmlsZXMubGVuZ3RoKSB7XG4gICAgICAgIHZhbHVlID0gZmlsZUlucHV0LnByb3AoJ3ZhbHVlJyk7XG4gICAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gJC5EZWZlcnJlZCgpLnJlc29sdmUoW10pLnByb21pc2UoKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBJZiB0aGUgZmlsZXMgcHJvcGVydHkgaXMgbm90IGF2YWlsYWJsZSwgdGhlIGJyb3dzZXIgZG9lcyBub3RcbiAgICAgICAgLy8gc3VwcG9ydCB0aGUgRmlsZSBBUEkgYW5kIHdlIGFkZCBhIHBzZXVkbyBGaWxlIG9iamVjdCB3aXRoXG4gICAgICAgIC8vIHRoZSBpbnB1dCB2YWx1ZSBhcyBuYW1lIHdpdGggcGF0aCBpbmZvcm1hdGlvbiByZW1vdmVkOlxuICAgICAgICBmaWxlcyA9IFt7IG5hbWU6IHZhbHVlLnJlcGxhY2UoL14uKlxcXFwvLCAnJykgfV07XG4gICAgICB9IGVsc2UgaWYgKGZpbGVzWzBdLm5hbWUgPT09IHVuZGVmaW5lZCAmJiBmaWxlc1swXS5maWxlTmFtZSkge1xuICAgICAgICAvLyBGaWxlIG5vcm1hbGl6YXRpb24gZm9yIFNhZmFyaSA0IGFuZCBGaXJlZm94IDM6XG4gICAgICAgICQuZWFjaChmaWxlcywgZnVuY3Rpb24gKGluZGV4LCBmaWxlKSB7XG4gICAgICAgICAgZmlsZS5uYW1lID0gZmlsZS5maWxlTmFtZTtcbiAgICAgICAgICBmaWxlLnNpemUgPSBmaWxlLmZpbGVTaXplO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiAkLkRlZmVycmVkKCkucmVzb2x2ZShmaWxlcykucHJvbWlzZSgpO1xuICAgIH0sXG5cbiAgICBfZ2V0RmlsZUlucHV0RmlsZXM6IGZ1bmN0aW9uIChmaWxlSW5wdXQpIHtcbiAgICAgIGlmICghKGZpbGVJbnB1dCBpbnN0YW5jZW9mICQpIHx8IGZpbGVJbnB1dC5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldFNpbmdsZUZpbGVJbnB1dEZpbGVzKGZpbGVJbnB1dCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gJC53aGVuXG4gICAgICAgIC5hcHBseSgkLCAkLm1hcChmaWxlSW5wdXQsIHRoaXMuX2dldFNpbmdsZUZpbGVJbnB1dEZpbGVzKSlcbiAgICAgICAgW3RoaXMuX3Byb21pc2VQaXBlXShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuIEFycmF5LnByb3RvdHlwZS5jb25jYXQuYXBwbHkoW10sIGFyZ3VtZW50cyk7XG4gICAgICAgIH0pO1xuICAgIH0sXG5cbiAgICBfb25DaGFuZ2U6IGZ1bmN0aW9uIChlKSB7XG4gICAgICB2YXIgdGhhdCA9IHRoaXMsXG4gICAgICAgIGRhdGEgPSB7XG4gICAgICAgICAgZmlsZUlucHV0OiAkKGUudGFyZ2V0KSxcbiAgICAgICAgICBmb3JtOiAkKGUudGFyZ2V0LmZvcm0pXG4gICAgICAgIH07XG4gICAgICB0aGlzLl9nZXRGaWxlSW5wdXRGaWxlcyhkYXRhLmZpbGVJbnB1dCkuYWx3YXlzKGZ1bmN0aW9uIChmaWxlcykge1xuICAgICAgICBkYXRhLmZpbGVzID0gZmlsZXM7XG4gICAgICAgIGlmICh0aGF0Lm9wdGlvbnMucmVwbGFjZUZpbGVJbnB1dCkge1xuICAgICAgICAgIHRoYXQuX3JlcGxhY2VGaWxlSW5wdXQoZGF0YSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFxuICAgICAgICAgIHRoYXQuX3RyaWdnZXIoXG4gICAgICAgICAgICAnY2hhbmdlJyxcbiAgICAgICAgICAgICQuRXZlbnQoJ2NoYW5nZScsIHsgZGVsZWdhdGVkRXZlbnQ6IGUgfSksXG4gICAgICAgICAgICBkYXRhXG4gICAgICAgICAgKSAhPT0gZmFsc2VcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhhdC5fb25BZGQoZSwgZGF0YSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0sXG5cbiAgICBfb25QYXN0ZTogZnVuY3Rpb24gKGUpIHtcbiAgICAgIHZhciBpdGVtcyA9XG4gICAgICAgICAgZS5vcmlnaW5hbEV2ZW50ICYmXG4gICAgICAgICAgZS5vcmlnaW5hbEV2ZW50LmNsaXBib2FyZERhdGEgJiZcbiAgICAgICAgICBlLm9yaWdpbmFsRXZlbnQuY2xpcGJvYXJkRGF0YS5pdGVtcyxcbiAgICAgICAgZGF0YSA9IHsgZmlsZXM6IFtdIH07XG4gICAgICBpZiAoaXRlbXMgJiYgaXRlbXMubGVuZ3RoKSB7XG4gICAgICAgICQuZWFjaChpdGVtcywgZnVuY3Rpb24gKGluZGV4LCBpdGVtKSB7XG4gICAgICAgICAgdmFyIGZpbGUgPSBpdGVtLmdldEFzRmlsZSAmJiBpdGVtLmdldEFzRmlsZSgpO1xuICAgICAgICAgIGlmIChmaWxlKSB7XG4gICAgICAgICAgICBkYXRhLmZpbGVzLnB1c2goZmlsZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHRoaXMuX3RyaWdnZXIoXG4gICAgICAgICAgICAncGFzdGUnLFxuICAgICAgICAgICAgJC5FdmVudCgncGFzdGUnLCB7IGRlbGVnYXRlZEV2ZW50OiBlIH0pLFxuICAgICAgICAgICAgZGF0YVxuICAgICAgICAgICkgIT09IGZhbHNlXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMuX29uQWRkKGUsIGRhdGEpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcblxuICAgIF9vbkRyb3A6IGZ1bmN0aW9uIChlKSB7XG4gICAgICBlLmRhdGFUcmFuc2ZlciA9IGUub3JpZ2luYWxFdmVudCAmJiBlLm9yaWdpbmFsRXZlbnQuZGF0YVRyYW5zZmVyO1xuICAgICAgdmFyIHRoYXQgPSB0aGlzLFxuICAgICAgICBkYXRhVHJhbnNmZXIgPSBlLmRhdGFUcmFuc2ZlcixcbiAgICAgICAgZGF0YSA9IHt9O1xuICAgICAgaWYgKGRhdGFUcmFuc2ZlciAmJiBkYXRhVHJhbnNmZXIuZmlsZXMgJiYgZGF0YVRyYW5zZmVyLmZpbGVzLmxlbmd0aCkge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMuX2dldERyb3BwZWRGaWxlcyhkYXRhVHJhbnNmZXIpLmFsd2F5cyhmdW5jdGlvbiAoZmlsZXMpIHtcbiAgICAgICAgICBkYXRhLmZpbGVzID0gZmlsZXM7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhhdC5fdHJpZ2dlcihcbiAgICAgICAgICAgICAgJ2Ryb3AnLFxuICAgICAgICAgICAgICAkLkV2ZW50KCdkcm9wJywgeyBkZWxlZ2F0ZWRFdmVudDogZSB9KSxcbiAgICAgICAgICAgICAgZGF0YVxuICAgICAgICAgICAgKSAhPT0gZmFsc2VcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHRoYXQuX29uQWRkKGUsIGRhdGEpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSxcblxuICAgIF9vbkRyYWdPdmVyOiBnZXREcmFnSGFuZGxlcignZHJhZ292ZXInKSxcblxuICAgIF9vbkRyYWdFbnRlcjogZ2V0RHJhZ0hhbmRsZXIoJ2RyYWdlbnRlcicpLFxuXG4gICAgX29uRHJhZ0xlYXZlOiBnZXREcmFnSGFuZGxlcignZHJhZ2xlYXZlJyksXG5cbiAgICBfaW5pdEV2ZW50SGFuZGxlcnM6IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmICh0aGlzLl9pc1hIUlVwbG9hZCh0aGlzLm9wdGlvbnMpKSB7XG4gICAgICAgIHRoaXMuX29uKHRoaXMub3B0aW9ucy5kcm9wWm9uZSwge1xuICAgICAgICAgIGRyYWdvdmVyOiB0aGlzLl9vbkRyYWdPdmVyLFxuICAgICAgICAgIGRyb3A6IHRoaXMuX29uRHJvcCxcbiAgICAgICAgICAvLyBldmVudC5wcmV2ZW50RGVmYXVsdCgpIG9uIGRyYWdlbnRlciBpcyByZXF1aXJlZCBmb3IgSUUxMCs6XG4gICAgICAgICAgZHJhZ2VudGVyOiB0aGlzLl9vbkRyYWdFbnRlcixcbiAgICAgICAgICAvLyBkcmFnbGVhdmUgaXMgbm90IHJlcXVpcmVkLCBidXQgYWRkZWQgZm9yIGNvbXBsZXRlbmVzczpcbiAgICAgICAgICBkcmFnbGVhdmU6IHRoaXMuX29uRHJhZ0xlYXZlXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLl9vbih0aGlzLm9wdGlvbnMucGFzdGVab25lLCB7XG4gICAgICAgICAgcGFzdGU6IHRoaXMuX29uUGFzdGVcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpZiAoJC5zdXBwb3J0LmZpbGVJbnB1dCkge1xuICAgICAgICB0aGlzLl9vbih0aGlzLm9wdGlvbnMuZmlsZUlucHV0LCB7XG4gICAgICAgICAgY2hhbmdlOiB0aGlzLl9vbkNoYW5nZVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgX2Rlc3Ryb3lFdmVudEhhbmRsZXJzOiBmdW5jdGlvbiAoKSB7XG4gICAgICB0aGlzLl9vZmYodGhpcy5vcHRpb25zLmRyb3Bab25lLCAnZHJhZ2VudGVyIGRyYWdsZWF2ZSBkcmFnb3ZlciBkcm9wJyk7XG4gICAgICB0aGlzLl9vZmYodGhpcy5vcHRpb25zLnBhc3RlWm9uZSwgJ3Bhc3RlJyk7XG4gICAgICB0aGlzLl9vZmYodGhpcy5vcHRpb25zLmZpbGVJbnB1dCwgJ2NoYW5nZScpO1xuICAgIH0sXG5cbiAgICBfZGVzdHJveTogZnVuY3Rpb24gKCkge1xuICAgICAgdGhpcy5fZGVzdHJveUV2ZW50SGFuZGxlcnMoKTtcbiAgICB9LFxuXG4gICAgX3NldE9wdGlvbjogZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcbiAgICAgIHZhciByZWluaXQgPSAkLmluQXJyYXkoa2V5LCB0aGlzLl9zcGVjaWFsT3B0aW9ucykgIT09IC0xO1xuICAgICAgaWYgKHJlaW5pdCkge1xuICAgICAgICB0aGlzLl9kZXN0cm95RXZlbnRIYW5kbGVycygpO1xuICAgICAgfVxuICAgICAgdGhpcy5fc3VwZXIoa2V5LCB2YWx1ZSk7XG4gICAgICBpZiAocmVpbml0KSB7XG4gICAgICAgIHRoaXMuX2luaXRTcGVjaWFsT3B0aW9ucygpO1xuICAgICAgICB0aGlzLl9pbml0RXZlbnRIYW5kbGVycygpO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBfaW5pdFNwZWNpYWxPcHRpb25zOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgb3B0aW9ucyA9IHRoaXMub3B0aW9ucztcbiAgICAgIGlmIChvcHRpb25zLmZpbGVJbnB1dCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIG9wdGlvbnMuZmlsZUlucHV0ID0gdGhpcy5lbGVtZW50LmlzKCdpbnB1dFt0eXBlPVwiZmlsZVwiXScpXG4gICAgICAgICAgPyB0aGlzLmVsZW1lbnRcbiAgICAgICAgICA6IHRoaXMuZWxlbWVudC5maW5kKCdpbnB1dFt0eXBlPVwiZmlsZVwiXScpO1xuICAgICAgfSBlbHNlIGlmICghKG9wdGlvbnMuZmlsZUlucHV0IGluc3RhbmNlb2YgJCkpIHtcbiAgICAgICAgb3B0aW9ucy5maWxlSW5wdXQgPSAkKG9wdGlvbnMuZmlsZUlucHV0KTtcbiAgICAgIH1cbiAgICAgIGlmICghKG9wdGlvbnMuZHJvcFpvbmUgaW5zdGFuY2VvZiAkKSkge1xuICAgICAgICBvcHRpb25zLmRyb3Bab25lID0gJChvcHRpb25zLmRyb3Bab25lKTtcbiAgICAgIH1cbiAgICAgIGlmICghKG9wdGlvbnMucGFzdGVab25lIGluc3RhbmNlb2YgJCkpIHtcbiAgICAgICAgb3B0aW9ucy5wYXN0ZVpvbmUgPSAkKG9wdGlvbnMucGFzdGVab25lKTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgX2dldFJlZ0V4cDogZnVuY3Rpb24gKHN0cikge1xuICAgICAgdmFyIHBhcnRzID0gc3RyLnNwbGl0KCcvJyksXG4gICAgICAgIG1vZGlmaWVycyA9IHBhcnRzLnBvcCgpO1xuICAgICAgcGFydHMuc2hpZnQoKTtcbiAgICAgIHJldHVybiBuZXcgUmVnRXhwKHBhcnRzLmpvaW4oJy8nKSwgbW9kaWZpZXJzKTtcbiAgICB9LFxuXG4gICAgX2lzUmVnRXhwT3B0aW9uOiBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAga2V5ICE9PSAndXJsJyAmJlxuICAgICAgICAkLnR5cGUodmFsdWUpID09PSAnc3RyaW5nJyAmJlxuICAgICAgICAvXlxcLy4qXFwvW2lnbV17MCwzfSQvLnRlc3QodmFsdWUpXG4gICAgICApO1xuICAgIH0sXG5cbiAgICBfaW5pdERhdGFBdHRyaWJ1dGVzOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgdGhhdCA9IHRoaXMsXG4gICAgICAgIG9wdGlvbnMgPSB0aGlzLm9wdGlvbnMsXG4gICAgICAgIGRhdGEgPSB0aGlzLmVsZW1lbnQuZGF0YSgpO1xuICAgICAgLy8gSW5pdGlhbGl6ZSBvcHRpb25zIHNldCB2aWEgSFRNTDUgZGF0YS1hdHRyaWJ1dGVzOlxuICAgICAgJC5lYWNoKHRoaXMuZWxlbWVudFswXS5hdHRyaWJ1dGVzLCBmdW5jdGlvbiAoaW5kZXgsIGF0dHIpIHtcbiAgICAgICAgdmFyIGtleSA9IGF0dHIubmFtZS50b0xvd2VyQ2FzZSgpLFxuICAgICAgICAgIHZhbHVlO1xuICAgICAgICBpZiAoL15kYXRhLS8udGVzdChrZXkpKSB7XG4gICAgICAgICAgLy8gQ29udmVydCBoeXBoZW4tYXRlZCBrZXkgdG8gY2FtZWxDYXNlOlxuICAgICAgICAgIGtleSA9IGtleS5zbGljZSg1KS5yZXBsYWNlKC8tW2Etel0vZywgZnVuY3Rpb24gKHN0cikge1xuICAgICAgICAgICAgcmV0dXJuIHN0ci5jaGFyQXQoMSkudG9VcHBlckNhc2UoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB2YWx1ZSA9IGRhdGFba2V5XTtcbiAgICAgICAgICBpZiAodGhhdC5faXNSZWdFeHBPcHRpb24oa2V5LCB2YWx1ZSkpIHtcbiAgICAgICAgICAgIHZhbHVlID0gdGhhdC5fZ2V0UmVnRXhwKHZhbHVlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgb3B0aW9uc1trZXldID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0sXG5cbiAgICBfY3JlYXRlOiBmdW5jdGlvbiAoKSB7XG4gICAgICB0aGlzLl9pbml0RGF0YUF0dHJpYnV0ZXMoKTtcbiAgICAgIHRoaXMuX2luaXRTcGVjaWFsT3B0aW9ucygpO1xuICAgICAgdGhpcy5fc2xvdHMgPSBbXTtcbiAgICAgIHRoaXMuX3NlcXVlbmNlID0gdGhpcy5fZ2V0WEhSUHJvbWlzZSh0cnVlKTtcbiAgICAgIHRoaXMuX3NlbmRpbmcgPSB0aGlzLl9hY3RpdmUgPSAwO1xuICAgICAgdGhpcy5faW5pdFByb2dyZXNzT2JqZWN0KHRoaXMpO1xuICAgICAgdGhpcy5faW5pdEV2ZW50SGFuZGxlcnMoKTtcbiAgICB9LFxuXG4gICAgLy8gVGhpcyBtZXRob2QgaXMgZXhwb3NlZCB0byB0aGUgd2lkZ2V0IEFQSSBhbmQgYWxsb3dzIHRvIHF1ZXJ5XG4gICAgLy8gdGhlIG51bWJlciBvZiBhY3RpdmUgdXBsb2FkczpcbiAgICBhY3RpdmU6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiB0aGlzLl9hY3RpdmU7XG4gICAgfSxcblxuICAgIC8vIFRoaXMgbWV0aG9kIGlzIGV4cG9zZWQgdG8gdGhlIHdpZGdldCBBUEkgYW5kIGFsbG93cyB0byBxdWVyeVxuICAgIC8vIHRoZSB3aWRnZXQgdXBsb2FkIHByb2dyZXNzLlxuICAgIC8vIEl0IHJldHVybnMgYW4gb2JqZWN0IHdpdGggbG9hZGVkLCB0b3RhbCBhbmQgYml0cmF0ZSBwcm9wZXJ0aWVzXG4gICAgLy8gZm9yIHRoZSBydW5uaW5nIHVwbG9hZHM6XG4gICAgcHJvZ3Jlc3M6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiB0aGlzLl9wcm9ncmVzcztcbiAgICB9LFxuXG4gICAgLy8gVGhpcyBtZXRob2QgaXMgZXhwb3NlZCB0byB0aGUgd2lkZ2V0IEFQSSBhbmQgYWxsb3dzIGFkZGluZyBmaWxlc1xuICAgIC8vIHVzaW5nIHRoZSBmaWxldXBsb2FkIEFQSS4gVGhlIGRhdGEgcGFyYW1ldGVyIGFjY2VwdHMgYW4gb2JqZWN0IHdoaWNoXG4gICAgLy8gbXVzdCBoYXZlIGEgZmlsZXMgcHJvcGVydHkgYW5kIGNhbiBjb250YWluIGFkZGl0aW9uYWwgb3B0aW9uczpcbiAgICAvLyAuZmlsZXVwbG9hZCgnYWRkJywge2ZpbGVzOiBmaWxlc0xpc3R9KTtcbiAgICBhZGQ6IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICB2YXIgdGhhdCA9IHRoaXM7XG4gICAgICBpZiAoIWRhdGEgfHwgdGhpcy5vcHRpb25zLmRpc2FibGVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChkYXRhLmZpbGVJbnB1dCAmJiAhZGF0YS5maWxlcykge1xuICAgICAgICB0aGlzLl9nZXRGaWxlSW5wdXRGaWxlcyhkYXRhLmZpbGVJbnB1dCkuYWx3YXlzKGZ1bmN0aW9uIChmaWxlcykge1xuICAgICAgICAgIGRhdGEuZmlsZXMgPSBmaWxlcztcbiAgICAgICAgICB0aGF0Ll9vbkFkZChudWxsLCBkYXRhKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkYXRhLmZpbGVzID0gJC5tYWtlQXJyYXkoZGF0YS5maWxlcyk7XG4gICAgICAgIHRoaXMuX29uQWRkKG51bGwsIGRhdGEpO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICAvLyBUaGlzIG1ldGhvZCBpcyBleHBvc2VkIHRvIHRoZSB3aWRnZXQgQVBJIGFuZCBhbGxvd3Mgc2VuZGluZyBmaWxlc1xuICAgIC8vIHVzaW5nIHRoZSBmaWxldXBsb2FkIEFQSS4gVGhlIGRhdGEgcGFyYW1ldGVyIGFjY2VwdHMgYW4gb2JqZWN0IHdoaWNoXG4gICAgLy8gbXVzdCBoYXZlIGEgZmlsZXMgb3IgZmlsZUlucHV0IHByb3BlcnR5IGFuZCBjYW4gY29udGFpbiBhZGRpdGlvbmFsIG9wdGlvbnM6XG4gICAgLy8gLmZpbGV1cGxvYWQoJ3NlbmQnLCB7ZmlsZXM6IGZpbGVzTGlzdH0pO1xuICAgIC8vIFRoZSBtZXRob2QgcmV0dXJucyBhIFByb21pc2Ugb2JqZWN0IGZvciB0aGUgZmlsZSB1cGxvYWQgY2FsbC5cbiAgICBzZW5kOiBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgaWYgKGRhdGEgJiYgIXRoaXMub3B0aW9ucy5kaXNhYmxlZCkge1xuICAgICAgICBpZiAoZGF0YS5maWxlSW5wdXQgJiYgIWRhdGEuZmlsZXMpIHtcbiAgICAgICAgICB2YXIgdGhhdCA9IHRoaXMsXG4gICAgICAgICAgICBkZmQgPSAkLkRlZmVycmVkKCksXG4gICAgICAgICAgICBwcm9taXNlID0gZGZkLnByb21pc2UoKSxcbiAgICAgICAgICAgIGpxWEhSLFxuICAgICAgICAgICAgYWJvcnRlZDtcbiAgICAgICAgICBwcm9taXNlLmFib3J0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgYWJvcnRlZCA9IHRydWU7XG4gICAgICAgICAgICBpZiAoanFYSFIpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGpxWEhSLmFib3J0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZmQucmVqZWN0KG51bGwsICdhYm9ydCcsICdhYm9ydCcpO1xuICAgICAgICAgICAgcmV0dXJuIHByb21pc2U7XG4gICAgICAgICAgfTtcbiAgICAgICAgICB0aGlzLl9nZXRGaWxlSW5wdXRGaWxlcyhkYXRhLmZpbGVJbnB1dCkuYWx3YXlzKGZ1bmN0aW9uIChmaWxlcykge1xuICAgICAgICAgICAgaWYgKGFib3J0ZWQpIHtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFmaWxlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgZGZkLnJlamVjdCgpO1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkYXRhLmZpbGVzID0gZmlsZXM7XG4gICAgICAgICAgICBqcVhIUiA9IHRoYXQuX29uU2VuZChudWxsLCBkYXRhKTtcbiAgICAgICAgICAgIGpxWEhSLnRoZW4oXG4gICAgICAgICAgICAgIGZ1bmN0aW9uIChyZXN1bHQsIHRleHRTdGF0dXMsIGpxWEhSKSB7XG4gICAgICAgICAgICAgICAgZGZkLnJlc29sdmUocmVzdWx0LCB0ZXh0U3RhdHVzLCBqcVhIUik7XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGZ1bmN0aW9uIChqcVhIUiwgdGV4dFN0YXR1cywgZXJyb3JUaHJvd24pIHtcbiAgICAgICAgICAgICAgICBkZmQucmVqZWN0KGpxWEhSLCB0ZXh0U3RhdHVzLCBlcnJvclRocm93bik7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuX2VuaGFuY2VQcm9taXNlKHByb21pc2UpO1xuICAgICAgICB9XG4gICAgICAgIGRhdGEuZmlsZXMgPSAkLm1ha2VBcnJheShkYXRhLmZpbGVzKTtcbiAgICAgICAgaWYgKGRhdGEuZmlsZXMubGVuZ3RoKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuX29uU2VuZChudWxsLCBkYXRhKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuX2dldFhIUlByb21pc2UoZmFsc2UsIGRhdGEgJiYgZGF0YS5jb250ZXh0KTtcbiAgICB9XG4gIH0pO1xufSk7XG4iLCIvKlxuICogalF1ZXJ5IElmcmFtZSBUcmFuc3BvcnQgUGx1Z2luXG4gKiBodHRwczovL2dpdGh1Yi5jb20vYmx1ZWltcC9qUXVlcnktRmlsZS1VcGxvYWRcbiAqXG4gKiBDb3B5cmlnaHQgMjAxMSwgU2ViYXN0aWFuIFRzY2hhblxuICogaHR0cHM6Ly9ibHVlaW1wLm5ldFxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZTpcbiAqIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUXG4gKi9cblxuLyogZ2xvYmFsIGRlZmluZSwgcmVxdWlyZSAqL1xuXG4oZnVuY3Rpb24gKGZhY3RvcnkpIHtcbiAgJ3VzZSBzdHJpY3QnO1xuICBpZiAodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKSB7XG4gICAgLy8gUmVnaXN0ZXIgYXMgYW4gYW5vbnltb3VzIEFNRCBtb2R1bGU6XG4gICAgZGVmaW5lKFsnanF1ZXJ5J10sIGZhY3RvcnkpO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jykge1xuICAgIC8vIE5vZGUvQ29tbW9uSlM6XG4gICAgZmFjdG9yeShyZXF1aXJlKCdqcXVlcnknKSk7XG4gIH0gZWxzZSB7XG4gICAgLy8gQnJvd3NlciBnbG9iYWxzOlxuICAgIGZhY3Rvcnkod2luZG93LmpRdWVyeSk7XG4gIH1cbn0pKGZ1bmN0aW9uICgkKSB7XG4gICd1c2Ugc3RyaWN0JztcblxuICAvLyBIZWxwZXIgdmFyaWFibGUgdG8gY3JlYXRlIHVuaXF1ZSBuYW1lcyBmb3IgdGhlIHRyYW5zcG9ydCBpZnJhbWVzOlxuICB2YXIgY291bnRlciA9IDAsXG4gICAganNvbkFQSSA9ICQsXG4gICAganNvblBhcnNlID0gJ3BhcnNlSlNPTic7XG5cbiAgaWYgKCdKU09OJyBpbiB3aW5kb3cgJiYgJ3BhcnNlJyBpbiBKU09OKSB7XG4gICAganNvbkFQSSA9IEpTT047XG4gICAganNvblBhcnNlID0gJ3BhcnNlJztcbiAgfVxuXG4gIC8vIFRoZSBpZnJhbWUgdHJhbnNwb3J0IGFjY2VwdHMgZm91ciBhZGRpdGlvbmFsIG9wdGlvbnM6XG4gIC8vIG9wdGlvbnMuZmlsZUlucHV0OiBhIGpRdWVyeSBjb2xsZWN0aW9uIG9mIGZpbGUgaW5wdXQgZmllbGRzXG4gIC8vIG9wdGlvbnMucGFyYW1OYW1lOiB0aGUgcGFyYW1ldGVyIG5hbWUgZm9yIHRoZSBmaWxlIGZvcm0gZGF0YSxcbiAgLy8gIG92ZXJyaWRlcyB0aGUgbmFtZSBwcm9wZXJ0eSBvZiB0aGUgZmlsZSBpbnB1dCBmaWVsZChzKSxcbiAgLy8gIGNhbiBiZSBhIHN0cmluZyBvciBhbiBhcnJheSBvZiBzdHJpbmdzLlxuICAvLyBvcHRpb25zLmZvcm1EYXRhOiBhbiBhcnJheSBvZiBvYmplY3RzIHdpdGggbmFtZSBhbmQgdmFsdWUgcHJvcGVydGllcyxcbiAgLy8gIGVxdWl2YWxlbnQgdG8gdGhlIHJldHVybiBkYXRhIG9mIC5zZXJpYWxpemVBcnJheSgpLCBlLmcuOlxuICAvLyAgW3tuYW1lOiAnYScsIHZhbHVlOiAxfSwge25hbWU6ICdiJywgdmFsdWU6IDJ9XVxuICAvLyBvcHRpb25zLmluaXRpYWxJZnJhbWVTcmM6IHRoZSBVUkwgb2YgdGhlIGluaXRpYWwgaWZyYW1lIHNyYyxcbiAgLy8gIGJ5IGRlZmF1bHQgc2V0IHRvIFwiamF2YXNjcmlwdDpmYWxzZTtcIlxuICAkLmFqYXhUcmFuc3BvcnQoJ2lmcmFtZScsIGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMuYXN5bmMpIHtcbiAgICAgIC8vIGphdmFzY3JpcHQ6ZmFsc2UgYXMgaW5pdGlhbCBpZnJhbWUgc3JjXG4gICAgICAvLyBwcmV2ZW50cyB3YXJuaW5nIHBvcHVwcyBvbiBIVFRQUyBpbiBJRTY6XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2NyaXB0LXVybFxuICAgICAgdmFyIGluaXRpYWxJZnJhbWVTcmMgPSBvcHRpb25zLmluaXRpYWxJZnJhbWVTcmMgfHwgJ2phdmFzY3JpcHQ6ZmFsc2U7JyxcbiAgICAgICAgZm9ybSxcbiAgICAgICAgaWZyYW1lLFxuICAgICAgICBhZGRQYXJhbUNoYXI7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzZW5kOiBmdW5jdGlvbiAoXywgY29tcGxldGVDYWxsYmFjaykge1xuICAgICAgICAgIGZvcm0gPSAkKCc8Zm9ybSBzdHlsZT1cImRpc3BsYXk6bm9uZTtcIj48L2Zvcm0+Jyk7XG4gICAgICAgICAgZm9ybS5hdHRyKCdhY2NlcHQtY2hhcnNldCcsIG9wdGlvbnMuZm9ybUFjY2VwdENoYXJzZXQpO1xuICAgICAgICAgIGFkZFBhcmFtQ2hhciA9IC9cXD8vLnRlc3Qob3B0aW9ucy51cmwpID8gJyYnIDogJz8nO1xuICAgICAgICAgIC8vIFhEb21haW5SZXF1ZXN0IG9ubHkgc3VwcG9ydHMgR0VUIGFuZCBQT1NUOlxuICAgICAgICAgIGlmIChvcHRpb25zLnR5cGUgPT09ICdERUxFVEUnKSB7XG4gICAgICAgICAgICBvcHRpb25zLnVybCA9IG9wdGlvbnMudXJsICsgYWRkUGFyYW1DaGFyICsgJ19tZXRob2Q9REVMRVRFJztcbiAgICAgICAgICAgIG9wdGlvbnMudHlwZSA9ICdQT1NUJztcbiAgICAgICAgICB9IGVsc2UgaWYgKG9wdGlvbnMudHlwZSA9PT0gJ1BVVCcpIHtcbiAgICAgICAgICAgIG9wdGlvbnMudXJsID0gb3B0aW9ucy51cmwgKyBhZGRQYXJhbUNoYXIgKyAnX21ldGhvZD1QVVQnO1xuICAgICAgICAgICAgb3B0aW9ucy50eXBlID0gJ1BPU1QnO1xuICAgICAgICAgIH0gZWxzZSBpZiAob3B0aW9ucy50eXBlID09PSAnUEFUQ0gnKSB7XG4gICAgICAgICAgICBvcHRpb25zLnVybCA9IG9wdGlvbnMudXJsICsgYWRkUGFyYW1DaGFyICsgJ19tZXRob2Q9UEFUQ0gnO1xuICAgICAgICAgICAgb3B0aW9ucy50eXBlID0gJ1BPU1QnO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBJRSB2ZXJzaW9ucyBiZWxvdyBJRTggY2Fubm90IHNldCB0aGUgbmFtZSBwcm9wZXJ0eSBvZlxuICAgICAgICAgIC8vIGVsZW1lbnRzIHRoYXQgaGF2ZSBhbHJlYWR5IGJlZW4gYWRkZWQgdG8gdGhlIERPTSxcbiAgICAgICAgICAvLyBzbyB3ZSBzZXQgdGhlIG5hbWUgYWxvbmcgd2l0aCB0aGUgaWZyYW1lIEhUTUwgbWFya3VwOlxuICAgICAgICAgIGNvdW50ZXIgKz0gMTtcbiAgICAgICAgICBpZnJhbWUgPSAkKFxuICAgICAgICAgICAgJzxpZnJhbWUgc3JjPVwiJyArXG4gICAgICAgICAgICAgIGluaXRpYWxJZnJhbWVTcmMgK1xuICAgICAgICAgICAgICAnXCIgbmFtZT1cImlmcmFtZS10cmFuc3BvcnQtJyArXG4gICAgICAgICAgICAgIGNvdW50ZXIgK1xuICAgICAgICAgICAgICAnXCI+PC9pZnJhbWU+J1xuICAgICAgICAgICkub24oJ2xvYWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgZmlsZUlucHV0Q2xvbmVzLFxuICAgICAgICAgICAgICBwYXJhbU5hbWVzID0gJC5pc0FycmF5KG9wdGlvbnMucGFyYW1OYW1lKVxuICAgICAgICAgICAgICAgID8gb3B0aW9ucy5wYXJhbU5hbWVcbiAgICAgICAgICAgICAgICA6IFtvcHRpb25zLnBhcmFtTmFtZV07XG4gICAgICAgICAgICBpZnJhbWUub2ZmKCdsb2FkJykub24oJ2xvYWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgIHZhciByZXNwb25zZTtcbiAgICAgICAgICAgICAgLy8gV3JhcCBpbiBhIHRyeS9jYXRjaCBibG9jayB0byBjYXRjaCBleGNlcHRpb25zIHRocm93blxuICAgICAgICAgICAgICAvLyB3aGVuIHRyeWluZyB0byBhY2Nlc3MgY3Jvc3MtZG9tYWluIGlmcmFtZSBjb250ZW50czpcbiAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICByZXNwb25zZSA9IGlmcmFtZS5jb250ZW50cygpO1xuICAgICAgICAgICAgICAgIC8vIEdvb2dsZSBDaHJvbWUgYW5kIEZpcmVmb3ggZG8gbm90IHRocm93IGFuXG4gICAgICAgICAgICAgICAgLy8gZXhjZXB0aW9uIHdoZW4gY2FsbGluZyBpZnJhbWUuY29udGVudHMoKSBvblxuICAgICAgICAgICAgICAgIC8vIGNyb3NzLWRvbWFpbiByZXF1ZXN0cywgc28gd2UgdW5pZnkgdGhlIHJlc3BvbnNlOlxuICAgICAgICAgICAgICAgIGlmICghcmVzcG9uc2UubGVuZ3RoIHx8ICFyZXNwb25zZVswXS5maXJzdENoaWxkKSB7XG4gICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICByZXNwb25zZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAvLyBUaGUgY29tcGxldGUgY2FsbGJhY2sgcmV0dXJucyB0aGVcbiAgICAgICAgICAgICAgLy8gaWZyYW1lIGNvbnRlbnQgZG9jdW1lbnQgYXMgcmVzcG9uc2Ugb2JqZWN0OlxuICAgICAgICAgICAgICBjb21wbGV0ZUNhbGxiYWNrKDIwMCwgJ3N1Y2Nlc3MnLCB7IGlmcmFtZTogcmVzcG9uc2UgfSk7XG4gICAgICAgICAgICAgIC8vIEZpeCBmb3IgSUUgZW5kbGVzcyBwcm9ncmVzcyBiYXIgYWN0aXZpdHkgYnVnXG4gICAgICAgICAgICAgIC8vIChoYXBwZW5zIG9uIGZvcm0gc3VibWl0cyB0byBpZnJhbWUgdGFyZ2V0cyk6XG4gICAgICAgICAgICAgICQoJzxpZnJhbWUgc3JjPVwiJyArIGluaXRpYWxJZnJhbWVTcmMgKyAnXCI+PC9pZnJhbWU+JykuYXBwZW5kVG8oXG4gICAgICAgICAgICAgICAgZm9ybVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgLy8gUmVtb3ZpbmcgdGhlIGZvcm0gaW4gYSBzZXRUaW1lb3V0IGNhbGxcbiAgICAgICAgICAgICAgICAvLyBhbGxvd3MgQ2hyb21lJ3MgZGV2ZWxvcGVyIHRvb2xzIHRvIGRpc3BsYXlcbiAgICAgICAgICAgICAgICAvLyB0aGUgcmVzcG9uc2UgcmVzdWx0XG4gICAgICAgICAgICAgICAgZm9ybS5yZW1vdmUoKTtcbiAgICAgICAgICAgICAgfSwgMCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGZvcm1cbiAgICAgICAgICAgICAgLnByb3AoJ3RhcmdldCcsIGlmcmFtZS5wcm9wKCduYW1lJykpXG4gICAgICAgICAgICAgIC5wcm9wKCdhY3Rpb24nLCBvcHRpb25zLnVybClcbiAgICAgICAgICAgICAgLnByb3AoJ21ldGhvZCcsIG9wdGlvbnMudHlwZSk7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy5mb3JtRGF0YSkge1xuICAgICAgICAgICAgICAkLmVhY2gob3B0aW9ucy5mb3JtRGF0YSwgZnVuY3Rpb24gKGluZGV4LCBmaWVsZCkge1xuICAgICAgICAgICAgICAgICQoJzxpbnB1dCB0eXBlPVwiaGlkZGVuXCIvPicpXG4gICAgICAgICAgICAgICAgICAucHJvcCgnbmFtZScsIGZpZWxkLm5hbWUpXG4gICAgICAgICAgICAgICAgICAudmFsKGZpZWxkLnZhbHVlKVxuICAgICAgICAgICAgICAgICAgLmFwcGVuZFRvKGZvcm0pO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgb3B0aW9ucy5maWxlSW5wdXQgJiZcbiAgICAgICAgICAgICAgb3B0aW9ucy5maWxlSW5wdXQubGVuZ3RoICYmXG4gICAgICAgICAgICAgIG9wdGlvbnMudHlwZSA9PT0gJ1BPU1QnXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgZmlsZUlucHV0Q2xvbmVzID0gb3B0aW9ucy5maWxlSW5wdXQuY2xvbmUoKTtcbiAgICAgICAgICAgICAgLy8gSW5zZXJ0IGEgY2xvbmUgZm9yIGVhY2ggZmlsZSBpbnB1dCBmaWVsZDpcbiAgICAgICAgICAgICAgb3B0aW9ucy5maWxlSW5wdXQuYWZ0ZXIoZnVuY3Rpb24gKGluZGV4KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZpbGVJbnB1dENsb25lc1tpbmRleF07XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICBpZiAob3B0aW9ucy5wYXJhbU5hbWUpIHtcbiAgICAgICAgICAgICAgICBvcHRpb25zLmZpbGVJbnB1dC5lYWNoKGZ1bmN0aW9uIChpbmRleCkge1xuICAgICAgICAgICAgICAgICAgJCh0aGlzKS5wcm9wKCduYW1lJywgcGFyYW1OYW1lc1tpbmRleF0gfHwgb3B0aW9ucy5wYXJhbU5hbWUpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIC8vIEFwcGVuZGluZyB0aGUgZmlsZSBpbnB1dCBmaWVsZHMgdG8gdGhlIGhpZGRlbiBmb3JtXG4gICAgICAgICAgICAgIC8vIHJlbW92ZXMgdGhlbSBmcm9tIHRoZWlyIG9yaWdpbmFsIGxvY2F0aW9uOlxuICAgICAgICAgICAgICBmb3JtXG4gICAgICAgICAgICAgICAgLmFwcGVuZChvcHRpb25zLmZpbGVJbnB1dClcbiAgICAgICAgICAgICAgICAucHJvcCgnZW5jdHlwZScsICdtdWx0aXBhcnQvZm9ybS1kYXRhJylcbiAgICAgICAgICAgICAgICAvLyBlbmN0eXBlIG11c3QgYmUgc2V0IGFzIGVuY29kaW5nIGZvciBJRTpcbiAgICAgICAgICAgICAgICAucHJvcCgnZW5jb2RpbmcnLCAnbXVsdGlwYXJ0L2Zvcm0tZGF0YScpO1xuICAgICAgICAgICAgICAvLyBSZW1vdmUgdGhlIEhUTUw1IGZvcm0gYXR0cmlidXRlIGZyb20gdGhlIGlucHV0KHMpOlxuICAgICAgICAgICAgICBvcHRpb25zLmZpbGVJbnB1dC5yZW1vdmVBdHRyKCdmb3JtJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgIC8vIFN1Ym1pdHRpbmcgdGhlIGZvcm0gaW4gYSBzZXRUaW1lb3V0IGNhbGwgZml4ZXMgYW4gaXNzdWUgd2l0aFxuICAgICAgICAgICAgICAvLyBTYWZhcmkgMTMgbm90IHRyaWdnZXJpbmcgdGhlIGlmcmFtZSBsb2FkIGV2ZW50IGFmdGVyIHJlc2V0dGluZ1xuICAgICAgICAgICAgICAvLyB0aGUgbG9hZCBldmVudCBoYW5kbGVyLCBzZWUgYWxzbzpcbiAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2JsdWVpbXAvalF1ZXJ5LUZpbGUtVXBsb2FkL2lzc3Vlcy8zNjMzXG4gICAgICAgICAgICAgIGZvcm0uc3VibWl0KCk7XG4gICAgICAgICAgICAgIC8vIEluc2VydCB0aGUgZmlsZSBpbnB1dCBmaWVsZHMgYXQgdGhlaXIgb3JpZ2luYWwgbG9jYXRpb25cbiAgICAgICAgICAgICAgLy8gYnkgcmVwbGFjaW5nIHRoZSBjbG9uZXMgd2l0aCB0aGUgb3JpZ2luYWxzOlxuICAgICAgICAgICAgICBpZiAoZmlsZUlucHV0Q2xvbmVzICYmIGZpbGVJbnB1dENsb25lcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBvcHRpb25zLmZpbGVJbnB1dC5lYWNoKGZ1bmN0aW9uIChpbmRleCwgaW5wdXQpIHtcbiAgICAgICAgICAgICAgICAgIHZhciBjbG9uZSA9ICQoZmlsZUlucHV0Q2xvbmVzW2luZGV4XSk7XG4gICAgICAgICAgICAgICAgICAvLyBSZXN0b3JlIHRoZSBvcmlnaW5hbCBuYW1lIGFuZCBmb3JtIHByb3BlcnRpZXM6XG4gICAgICAgICAgICAgICAgICAkKGlucHV0KVxuICAgICAgICAgICAgICAgICAgICAucHJvcCgnbmFtZScsIGNsb25lLnByb3AoJ25hbWUnKSlcbiAgICAgICAgICAgICAgICAgICAgLmF0dHIoJ2Zvcm0nLCBjbG9uZS5hdHRyKCdmb3JtJykpO1xuICAgICAgICAgICAgICAgICAgY2xvbmUucmVwbGFjZVdpdGgoaW5wdXQpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCAwKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBmb3JtLmFwcGVuZChpZnJhbWUpLmFwcGVuZFRvKGRvY3VtZW50LmJvZHkpO1xuICAgICAgICB9LFxuICAgICAgICBhYm9ydDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGlmIChpZnJhbWUpIHtcbiAgICAgICAgICAgIC8vIGphdmFzY3JpcHQ6ZmFsc2UgYXMgaWZyYW1lIHNyYyBhYm9ydHMgdGhlIHJlcXVlc3RcbiAgICAgICAgICAgIC8vIGFuZCBwcmV2ZW50cyB3YXJuaW5nIHBvcHVwcyBvbiBIVFRQUyBpbiBJRTYuXG4gICAgICAgICAgICBpZnJhbWUub2ZmKCdsb2FkJykucHJvcCgnc3JjJywgaW5pdGlhbElmcmFtZVNyYyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChmb3JtKSB7XG4gICAgICAgICAgICBmb3JtLnJlbW92ZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG4gIH0pO1xuXG4gIC8vIFRoZSBpZnJhbWUgdHJhbnNwb3J0IHJldHVybnMgdGhlIGlmcmFtZSBjb250ZW50IGRvY3VtZW50IGFzIHJlc3BvbnNlLlxuICAvLyBUaGUgZm9sbG93aW5nIGFkZHMgY29udmVydGVycyBmcm9tIGlmcmFtZSB0byB0ZXh0LCBqc29uLCBodG1sLCB4bWxcbiAgLy8gYW5kIHNjcmlwdC5cbiAgLy8gUGxlYXNlIG5vdGUgdGhhdCB0aGUgQ29udGVudC1UeXBlIGZvciBKU09OIHJlc3BvbnNlcyBoYXMgdG8gYmUgdGV4dC9wbGFpblxuICAvLyBvciB0ZXh0L2h0bWwsIGlmIHRoZSBicm93c2VyIGRvZXNuJ3QgaW5jbHVkZSBhcHBsaWNhdGlvbi9qc29uIGluIHRoZVxuICAvLyBBY2NlcHQgaGVhZGVyLCBlbHNlIElFIHdpbGwgc2hvdyBhIGRvd25sb2FkIGRpYWxvZy5cbiAgLy8gVGhlIENvbnRlbnQtVHlwZSBmb3IgWE1MIHJlc3BvbnNlcyBvbiB0aGUgb3RoZXIgaGFuZCBoYXMgdG8gYmUgYWx3YXlzXG4gIC8vIGFwcGxpY2F0aW9uL3htbCBvciB0ZXh0L3htbCwgc28gSUUgcHJvcGVybHkgcGFyc2VzIHRoZSBYTUwgcmVzcG9uc2UuXG4gIC8vIFNlZSBhbHNvXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9ibHVlaW1wL2pRdWVyeS1GaWxlLVVwbG9hZC93aWtpL1NldHVwI2NvbnRlbnQtdHlwZS1uZWdvdGlhdGlvblxuICAkLmFqYXhTZXR1cCh7XG4gICAgY29udmVydGVyczoge1xuICAgICAgJ2lmcmFtZSB0ZXh0JzogZnVuY3Rpb24gKGlmcmFtZSkge1xuICAgICAgICByZXR1cm4gaWZyYW1lICYmICQoaWZyYW1lWzBdLmJvZHkpLnRleHQoKTtcbiAgICAgIH0sXG4gICAgICAnaWZyYW1lIGpzb24nOiBmdW5jdGlvbiAoaWZyYW1lKSB7XG4gICAgICAgIHJldHVybiBpZnJhbWUgJiYganNvbkFQSVtqc29uUGFyc2VdKCQoaWZyYW1lWzBdLmJvZHkpLnRleHQoKSk7XG4gICAgICB9LFxuICAgICAgJ2lmcmFtZSBodG1sJzogZnVuY3Rpb24gKGlmcmFtZSkge1xuICAgICAgICByZXR1cm4gaWZyYW1lICYmICQoaWZyYW1lWzBdLmJvZHkpLmh0bWwoKTtcbiAgICAgIH0sXG4gICAgICAnaWZyYW1lIHhtbCc6IGZ1bmN0aW9uIChpZnJhbWUpIHtcbiAgICAgICAgdmFyIHhtbERvYyA9IGlmcmFtZSAmJiBpZnJhbWVbMF07XG4gICAgICAgIHJldHVybiB4bWxEb2MgJiYgJC5pc1hNTERvYyh4bWxEb2MpXG4gICAgICAgICAgPyB4bWxEb2NcbiAgICAgICAgICA6ICQucGFyc2VYTUwoXG4gICAgICAgICAgICAgICh4bWxEb2MuWE1MRG9jdW1lbnQgJiYgeG1sRG9jLlhNTERvY3VtZW50LnhtbCkgfHxcbiAgICAgICAgICAgICAgICAkKHhtbERvYy5ib2R5KS5odG1sKClcbiAgICAgICAgICAgICk7XG4gICAgICB9LFxuICAgICAgJ2lmcmFtZSBzY3JpcHQnOiBmdW5jdGlvbiAoaWZyYW1lKSB7XG4gICAgICAgIHJldHVybiBpZnJhbWUgJiYgJC5nbG9iYWxFdmFsKCQoaWZyYW1lWzBdLmJvZHkpLnRleHQoKSk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbn0pO1xuIiwiZnVuY3Rpb24gaW5pdGlhbGl6ZUF0dGFjaGVkTWVkaWFGaWVsZChlbCwgaWRPZlVwbG9hZEJ1dHRvbiwgdXBsb2FkQWN0aW9uLCBtZWRpYUl0ZW1VcmwsIGFsbG93TXVsdGlwbGUsIGFsbG93TWVkaWFUZXh0LCBhbGxvd0FuY2hvcnMsIHRlbXBVcGxvYWRGb2xkZXIpIHtcclxuXHJcbiAgICB2YXIgdGFyZ2V0ID0gJChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgkKGVsKS5kYXRhKCdmb3InKSkpO1xyXG4gICAgdmFyIGluaXRpYWxQYXRocyA9IHRhcmdldC5kYXRhKFwiaW5pdFwiKTtcclxuXHJcbiAgICB2YXIgbWVkaWFGaWVsZEVkaXRvciA9ICQoZWwpO1xyXG4gICAgdmFyIGlkcHJlZml4ID0gbWVkaWFGaWVsZEVkaXRvci5hdHRyKFwiaWRcIik7XHJcbiAgICB2YXIgbWVkaWFGaWVsZEFwcDtcclxuXHJcbiAgICBtZWRpYUZpZWxkQXBwcy5wdXNoKG1lZGlhRmllbGRBcHAgPSBuZXcgVnVlKHtcclxuICAgICAgICBlbDogbWVkaWFGaWVsZEVkaXRvci5nZXQoMCksXHJcbiAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICBtZWRpYUl0ZW1zOiBbXSxcclxuICAgICAgICAgICAgc2VsZWN0ZWRNZWRpYTogbnVsbCxcclxuICAgICAgICAgICAgc21hbGxUaHVtYnM6IGZhbHNlLFxyXG4gICAgICAgICAgICBpZFByZWZpeDogaWRwcmVmaXgsXHJcbiAgICAgICAgICAgIGluaXRpYWxpemVkOiBmYWxzZSxcclxuICAgICAgICAgICAgYWxsb3dNZWRpYVRleHQ6IGFsbG93TWVkaWFUZXh0LFxyXG4gICAgICAgICAgICBiYWNrdXBNZWRpYVRleHQ6ICcnLFxyXG4gICAgICAgICAgICBhbGxvd0FuY2hvcnM6IGFsbG93QW5jaG9ycyxcclxuICAgICAgICAgICAgYmFja3VwQW5jaG9yOiBudWxsXHJcbiAgICAgICAgfSxcclxuICAgICAgICBjcmVhdGVkOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIHZhciBzZWxmID0gdGhpcztcclxuXHJcbiAgICAgICAgICAgIHNlbGYuY3VycmVudFByZWZzID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbWVkaWFGaWVsZFByZWZzJykpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY29tcHV0ZWQ6IHtcclxuICAgICAgICAgICAgcGF0aHM6IHtcclxuICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBtZWRpYVBhdGhzID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmluaXRpYWxpemVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShpbml0aWFsUGF0aHMpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1lZGlhSXRlbXMuZm9yRWFjaChmdW5jdGlvbiAoeCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoeC5tZWRpYVBhdGggPT09ICdub3QtZm91bmQnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgbWVkaWFQYXRocy5wdXNoKHsgcGF0aDogeC5tZWRpYVBhdGgsIGlzUmVtb3ZlZDogeC5pc1JlbW92ZWQsIGlzTmV3OiB4LmlzTmV3LCBtZWRpYVRleHQ6IHgubWVkaWFUZXh0LCBhbmNob3I6IHguYW5jaG9yIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShtZWRpYVBhdGhzKTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uICh2YWx1ZXMpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgc2VsZiA9IHRoaXM7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIG1lZGlhUGF0aHMgPSB2YWx1ZXMgfHwgW107XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHNpZ25hbCA9ICQuRGVmZXJyZWQoKTtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgaXRlbXMgPSBbXTtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgbGVuZ3RoID0gMDtcclxuICAgICAgICAgICAgICAgICAgICBtZWRpYVBhdGhzLmZvckVhY2goZnVuY3Rpb24gKHgsIGkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXMucHVzaCh7IG5hbWU6ICcgJyArIHgucGF0aCwgbWltZTogJycsIG1lZGlhUGF0aDogJycsIGFuY2hvcjogeC5hbmNob3IgfSk7IC8vIGRvbid0IHJlbW92ZSB0aGUgc3BhY2UuIFNvbWV0aGluZyBkaWZmZXJlbnQgaXMgbmVlZGVkIG9yIGl0IHdvbnQgcmVhY3Qgd2hlbiB0aGUgcmVhbCBuYW1lIGFycml2ZXMuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb21pc2UgPSAkLndoZW4oc2lnbmFsKS5kb25lKGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICQuYWpheCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBtZWRpYUl0ZW1VcmwgKyBcIj9wYXRoPVwiICsgZW5jb2RlVVJJQ29tcG9uZW50KHgucGF0aCksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiAnR0VUJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiAoZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLnZ1ZWtleSA9IGRhdGEubmFtZSArIGkudG9TdHJpbmcoKTsgLy8gQmVjYXVzZSBhIHVuaXF1ZSBrZXkgaXMgcmVxdWlyZWQgYnkgVnVlIG9uIHYtZm9yIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLm1lZGlhVGV4dCA9IHgubWVkaWFUZXh0OyAvLyBUaGlzIHZhbHVlIGlzIG5vdCByZXR1cm5lZCBmcm9tIHRoZSBhamF4IGNhbGwuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEuYW5jaG9yID0geC5hbmNob3I7IC8vIFRoaXMgdmFsdWUgaXMgbm90IHJldHVybmVkIGZyb20gdGhlIGFqYXggY2FsbC5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXMuc3BsaWNlKGksIDEsIGRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbXMubGVuZ3RoID09PSArK2xlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXMuZm9yRWFjaChmdW5jdGlvbiAoeCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubWVkaWFJdGVtcy5wdXNoKHgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmluaXRpYWxpemVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I6IGZ1bmN0aW9uIChlcnJvcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShlcnJvcikpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtcy5zcGxpY2UoaSwgMSwgeyBuYW1lOiB4LnBhdGgsIG1pbWU6ICcnLCBtZWRpYVBhdGg6ICdub3QtZm91bmQnLCBtZWRpYVRleHQ6ICcnLCBhbmNob3I6IHsgeDogMC41LCB5OiAwLjUgfSB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW1zLmxlbmd0aCA9PT0gKytsZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zLmZvckVhY2goZnVuY3Rpb24gKHgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm1lZGlhSXRlbXMucHVzaCh4KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5pbml0aWFsaXplZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHNpZ25hbC5yZXNvbHZlKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGZpbGVTaXplOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5yb3VuZCh0aGlzLnNlbGVjdGVkTWVkaWEuc2l6ZSAvIDEwMjQpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBjYW5BZGRNZWRpYTogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgdmFyIG5vblJlbW92ZWRNZWRpYUl0ZW1zID0gW107XHJcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubWVkaWFJdGVtcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5tZWRpYUl0ZW1zW2ldLmlzUmVtb3ZlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBub25SZW1vdmVkTWVkaWFJdGVtcy5wdXNoKHRoaXMubWVkaWFJdGVtc1tpXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHJldHVybiBub25SZW1vdmVkTWVkaWFJdGVtcy5sZW5ndGggPT09IDAgfHwgbm9uUmVtb3ZlZE1lZGlhSXRlbXMubGVuZ3RoID4gMCAmJiBhbGxvd011bHRpcGxlO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB0aHVtYlNpemU6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNtYWxsVGh1bWJzID8gMTIwIDogMjQwO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBjdXJyZW50UHJlZnM6IHtcclxuICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNtYWxsVGh1bWJzOiB0aGlzLnNtYWxsVGh1bWJzXHJcbiAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uIChuZXdQcmVmcykge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghbmV3UHJlZnMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNtYWxsVGh1bWJzID0gbmV3UHJlZnMuc21hbGxUaHVtYnM7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIG1vdW50ZWQ6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgdmFyIHNlbGYgPSB0aGlzO1xyXG5cclxuICAgICAgICAgICAgc2VsZi5wYXRocyA9IGluaXRpYWxQYXRocztcclxuXHJcbiAgICAgICAgICAgIHNlbGYuJG9uKCdzZWxlY3RBbmREZWxldGVNZWRpYVJlcXVlc3RlZCcsIGZ1bmN0aW9uIChtZWRpYSkge1xyXG4gICAgICAgICAgICAgICAgc2VsZi5zZWxlY3RBbmREZWxldGVNZWRpYShtZWRpYSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgc2VsZi4kb24oJ3NlbGVjdE1lZGlhUmVxdWVzdGVkJywgZnVuY3Rpb24gKG1lZGlhKSB7XHJcbiAgICAgICAgICAgICAgICBzZWxmLnNlbGVjdE1lZGlhKG1lZGlhKTtcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICB2YXIgc2VsZWN0b3IgPSAnIycgKyBpZE9mVXBsb2FkQnV0dG9uO1xyXG4gICAgICAgICAgICB2YXIgZWRpdG9ySWQgPSBtZWRpYUZpZWxkRWRpdG9yLmF0dHIoJ2lkJyk7XHJcblxyXG4gICAgICAgICAgICAkKHNlbGVjdG9yKS5maWxldXBsb2FkKHtcclxuICAgICAgICAgICAgICAgIGxpbWl0Q29uY3VycmVudFVwbG9hZHM6IDIwLFxyXG4gICAgICAgICAgICAgICAgZHJvcFpvbmU6ICQoJyMnICsgZWRpdG9ySWQpLFxyXG4gICAgICAgICAgICAgICAgZGF0YVR5cGU6ICdqc29uJyxcclxuICAgICAgICAgICAgICAgIHVybDogdXBsb2FkQWN0aW9uLFxyXG4gICAgICAgICAgICAgICAgYWRkOiBmdW5jdGlvbiAoZSwgZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBjb3VudCA9IGRhdGEuZmlsZXMubGVuZ3RoO1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBpO1xyXG4gICAgICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEuZmlsZXNbaV0udXBsb2FkTmFtZSA9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmdldFVuaXF1ZUlkKCkgKyBkYXRhLmZpbGVzW2ldLm5hbWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEuc3VibWl0KCk7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgZm9ybURhdGE6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgYW50aUZvcmdlcnlUb2tlbiA9ICQoXCJpbnB1dFtuYW1lPV9fUmVxdWVzdFZlcmlmaWNhdGlvblRva2VuXVwiKS52YWwoKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtcclxuICAgICAgICAgICAgICAgICAgICAgICAgeyBuYW1lOiAncGF0aCcsIHZhbHVlOiB0ZW1wVXBsb2FkRm9sZGVyIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgbmFtZTogJ19fUmVxdWVzdFZlcmlmaWNhdGlvblRva2VuJywgdmFsdWU6IGFudGlGb3JnZXJ5VG9rZW4gfVxyXG4gICAgICAgICAgICAgICAgICAgIF07XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgZG9uZTogZnVuY3Rpb24gKGUsIGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgbmV3TWVkaWFJdGVtcyA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBlcnJvcm1zZyA9IFwiXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEucmVzdWx0LmZpbGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkYXRhLnJlc3VsdC5maWxlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5yZXN1bHQuZmlsZXNbaV0uaXNOZXcgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9pZiBlcnJvciBpcyBkZWZpbmVkIHByb2JhYmx5IHRoZSBmaWxlIHR5cGUgaXMgbm90IGFsbG93ZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGRhdGEucmVzdWx0LmZpbGVzW2ldLmVycm9yID09PSB1bmRlZmluZWQgfHwgZGF0YS5yZXN1bHQuZmlsZXNbaV0uZXJyb3IgPT09IG51bGwpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3TWVkaWFJdGVtcy5wdXNoKGRhdGEucmVzdWx0LmZpbGVzW2ldKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcm1zZyArPSBkYXRhLnJlc3VsdC5maWxlc1tpXS5lcnJvciArIFwiXFxuXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9ybXNnICE9PSBcIlwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFsZXJ0KGVycm9ybXNnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhuZXdNZWRpYUl0ZW1zKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAobmV3TWVkaWFJdGVtcy5sZW5ndGggPiAxICYmIGFsbG93TXVsdGlwbGUgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFsZXJ0KCQoJyNvbmx5T25lSXRlbU1lc3NhZ2UnKS52YWwoKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lZGlhRmllbGRBcHAubWVkaWFJdGVtcy5wdXNoKG5ld01lZGlhSXRlbXNbMF0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtZWRpYUZpZWxkQXBwLmluaXRpYWxpemVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtZWRpYUZpZWxkQXBwLm1lZGlhSXRlbXMgPSBtZWRpYUZpZWxkQXBwLm1lZGlhSXRlbXMuY29uY2F0KG5ld01lZGlhSXRlbXMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtZWRpYUZpZWxkQXBwLmluaXRpYWxpemVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgZXJyb3I6IGZ1bmN0aW9uIChqcVhIUiwgdGV4dFN0YXR1cywgZXJyb3JUaHJvd24pIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnZXJyb3Igb24gdXBsb2FkISEnKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhqcVhIUik7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2codGV4dFN0YXR1cyk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coZXJyb3JUaHJvd24pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIG1ldGhvZHM6IHtcclxuICAgICAgICAgICAgc2VsZWN0TWVkaWE6IGZ1bmN0aW9uIChtZWRpYSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE1lZGlhID0gbWVkaWE7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGdldFVuaXF1ZUlkOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3h4eHh4eHh4LXh4eHgtNHh4eC15eHh4LXh4eHh4eHh4eHh4eCcucmVwbGFjZSgvW3h5XS9nLCBmdW5jdGlvbiAoYykge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciByID0gTWF0aC5yYW5kb20oKSAqIDE2IHwgMCwgdiA9IGMgPT09ICd4JyA/IHIgOiAociAmIDB4MyB8IDB4OCk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHYudG9TdHJpbmcoMTYpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHJlbW92ZVNlbGVjdGVkOiBmdW5jdGlvbiAoZXZlbnQpIHtcclxuICAgICAgICAgICAgICAgIHZhciByZW1vdmVkID0ge307XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZE1lZGlhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGluZGV4ID0gdGhpcy5tZWRpYUl0ZW1zICYmIHRoaXMubWVkaWFJdGVtcy5pbmRleE9mKHRoaXMuc2VsZWN0ZWRNZWRpYSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlZCA9IHRoaXMubWVkaWFJdGVtc1tpbmRleF07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZWQuaXNSZW1vdmVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy90aGlzLm1lZGlhSXRlbXMuc3BsaWNlKFtpbmRleF0sIDEsIHJlbW92ZWQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1lZGlhSXRlbXMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBUaGUgcmVtb3ZlIGJ1dHRvbiBjYW4gYWxzbyByZW1vdmUgYSB1bmlxdWUgbWVkaWEgaXRlbVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm1lZGlhSXRlbXMubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZWQgPSB0aGlzLm1lZGlhSXRlbXNbaW5kZXhdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVkLmlzUmVtb3ZlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vdGhpcy5tZWRpYUl0ZW1zLnNwbGljZSgwLCAxLCByZW1vdmVkKTsgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tZWRpYUl0ZW1zLnNwbGljZSgwLCAxKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkTWVkaWEgPSBudWxsO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBzaG93TWVkaWFUZXh0TW9kYWw6IGZ1bmN0aW9uIChldmVudCkge1xyXG4gICAgICAgICAgICAgICAgJCh0aGlzLiRyZWZzLm1lZGlhVGV4dE1vZGFsKS5tb2RhbCgpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5iYWNrdXBNZWRpYVRleHQgPSB0aGlzLnNlbGVjdGVkTWVkaWEubWVkaWFUZXh0O1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBjYW5jZWxNZWRpYVRleHRNb2RhbDogZnVuY3Rpb24gKGV2ZW50KSB7XHJcbiAgICAgICAgICAgICAgICAkKHRoaXMuJHJlZnMubWVkaWFUZXh0TW9kYWwpLm1vZGFsKCdoaWRlJyk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkTWVkaWEubWVkaWFUZXh0ID0gdGhpcy5iYWNrdXBNZWRpYVRleHQ7XHJcbiAgICAgICAgICAgIH0sIFxyXG4gICAgICAgICAgICBzaG93QW5jaG9yTW9kYWw6IGZ1bmN0aW9uIChldmVudCkge1xyXG4gICAgICAgICAgICAgICAgJCh0aGlzLiRyZWZzLmFuY2hvcmluZ01vZGFsKS5tb2RhbCgpO1xyXG4gICAgICAgICAgICAgICAgLy8gQ2F1c2UgYSByZWZyZXNoIHRvIHJlY2FsYyBoZWlnaHRzLlxyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE1lZGlhLmFuY2hvciA9IHtcclxuICAgICAgICAgICAgICAgICAgeDogdGhpcy5zZWxlY3RlZE1lZGlhLmFuY2hvci54LFxyXG4gICAgICAgICAgICAgICAgICB5OiB0aGlzLnNlbGVjdGVkTWVkaWEuYW5jaG9yLnlcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMuYmFja3VwQW5jaG9yID0gdGhpcy5zZWxlY3RlZE1lZGlhLmFuY2hvcjtcclxuICAgICAgICAgICAgfSwgICAgICAgICAgIFxyXG4gICAgICAgICAgICBjYW5jZWxBbmNob3JpbmdNb2RhbDogZnVuY3Rpb24gKGV2ZW50KSB7XHJcbiAgICAgICAgICAgICAgICAkKHRoaXMuJHJlZnMuYW5jaG9yaW5nTW9kYWwpLm1vZGFsKCdoaWRlJyk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkTWVkaWEuYW5jaG9yID0gdGhpcy5iYWNrdXBBbmNob3I7XHJcbiAgICAgICAgICAgIH0sICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIHJlc2V0QW5jaG9yOiBmdW5jdGlvbiAoZXZlbnQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRNZWRpYS5hbmNob3IgPSB7IHg6IDAuNSwgeTogMC41IH07XHJcbiAgICAgICAgICAgIH0sIFxyXG4gICAgICAgICAgICBvbkFuY2hvckRyb3A6IGZ1bmN0aW9uKGV2ZW50KSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgaW1hZ2UgPSB0aGlzLiRyZWZzLmFuY2hvckltYWdlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE1lZGlhLmFuY2hvciA9IHtcclxuICAgICAgICAgICAgICAgICAgIHg6IGV2ZW50Lm9mZnNldFggLyBpbWFnZS5jbGllbnRXaWR0aCxcclxuICAgICAgICAgICAgICAgICAgIHk6IGV2ZW50Lm9mZnNldFkgLyBpbWFnZS5jbGllbnRIZWlnaHRcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgYW5jaG9yTGVmdDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuJHJlZnMuYW5jaG9ySW1hZ2UgJiYgdGhpcy4kcmVmcy5tb2RhbEJvZHkgJiYgdGhpcy5zZWxlY3RlZE1lZGlhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gV2hlbiBpbWFnZSBpcyBzaHJ1bmsgY29tcGFyZSBhZ2FpbnN0IHRoZSBtb2RhbCBib2R5LlxyXG4gICAgICAgICAgICAgICAgICAgIHZhciBvZmZzZXQgPSAodGhpcy4kcmVmcy5tb2RhbEJvZHkuY2xpZW50V2lkdGggLSB0aGlzLiRyZWZzLmFuY2hvckltYWdlLmNsaWVudFdpZHRoKSAvIDI7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0gKHRoaXMuc2VsZWN0ZWRNZWRpYS5hbmNob3IueCAqIHRoaXMuJHJlZnMuYW5jaG9ySW1hZ2UuY2xpZW50V2lkdGgpICsgb2Zmc2V0O1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChwb3NpdGlvbiA8IDE3KSB7IC8vIEFkanVzdCBzbyB0aGUgdGFyZ2V0IGRvZXNuJ3Qgc2hvdyBvdXRzaWRlIGltYWdlLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbiA9IDE3O1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uID0gcG9zaXRpb24gLSA4OyAvLyBBZGp1c3QgdG8gaGl0IHRoZSBtb3VzZSBwb2ludGVyLlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcG9zaXRpb24gKyAncHgnO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJzAnO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LCAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGFuY2hvclRvcDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuJHJlZnMuYW5jaG9ySW1hZ2UgJiYgdGhpcy5zZWxlY3RlZE1lZGlhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0gdGhpcy5zZWxlY3RlZE1lZGlhLmFuY2hvci55ICogdGhpcy4kcmVmcy5hbmNob3JJbWFnZS5jbGllbnRIZWlnaHQ7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBvc2l0aW9uIDwgMTUpIHsgLy8gQWRqdXN0bWVudCBzbyB0aGUgdGFyZ2V0IGRvZXNuJ3Qgc2hvdyBvdXRzaWRlIGltYWdlLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbiA9IDE1O1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uID0gcG9zaXRpb24gKyA1OyAvLyBBZGp1c3QgdG8gaGl0IHRoZSBtb3VzZSBwb2ludGVyLlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcG9zaXRpb24gKyAncHgnO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJzAnO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBzZXRBbmNob3I6IGZ1bmN0aW9uIChldmVudCkge1xyXG4gICAgICAgICAgICAgICAgdmFyIGltYWdlID0gdGhpcy4kcmVmcy5hbmNob3JJbWFnZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRNZWRpYS5hbmNob3IgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgeDogZXZlbnQub2Zmc2V0WCAvIGltYWdlLmNsaWVudFdpZHRoLFxyXG4gICAgICAgICAgICAgICAgICAgIHk6IGV2ZW50Lm9mZnNldFkgLyBpbWFnZS5jbGllbnRIZWlnaHRcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSwgICAgICAgICBcclxuICAgICAgICAgICAgYWRkTWVkaWFGaWxlczogZnVuY3Rpb24gKGZpbGVzKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoKGZpbGVzLmxlbmd0aCA+IDEpICYmIChhbGxvd011bHRpcGxlID09PSBmYWxzZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICBhbGVydCgkKCcjb25seU9uZUl0ZW1NZXNzYWdlJykudmFsKCkpO1xyXG4gICAgICAgICAgICAgICAgICAgIG1lZGlhRmllbGRBcHAubWVkaWFJdGVtcy5wdXNoKGZpbGVzWzBdKTtcclxuICAgICAgICAgICAgICAgICAgICBtZWRpYUZpZWxkQXBwLmluaXRpYWxpemVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbWVkaWFGaWVsZEFwcC5tZWRpYUl0ZW1zID0gbWVkaWFGaWVsZEFwcC5tZWRpYUl0ZW1zLmNvbmNhdChmaWxlcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgbWVkaWFGaWVsZEFwcC5pbml0aWFsaXplZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHNlbGVjdEFuZERlbGV0ZU1lZGlhOiBmdW5jdGlvbiAobWVkaWEpIHtcclxuICAgICAgICAgICAgICAgIHZhciBzZWxmID0gdGhpcztcclxuICAgICAgICAgICAgICAgIHNlbGYuc2VsZWN0ZWRNZWRpYSA9IG1lZGlhO1xyXG4gICAgICAgICAgICAgICAgLy8gc2V0VGltZW91dCBiZWNhdXNlIHNvbWV0aW1lcyBcclxuICAgICAgICAgICAgICAgIC8vIHJlbW92ZVNlbGVjdGVkIHdhcyBjYWxsZWQgZXZlbiBiZWZvcmUgdGhlIG1lZGlhIHdhcyBzZXQuXHJcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICBzZWxmLnJlbW92ZVNlbGVjdGVkKCk7XHJcbiAgICAgICAgICAgICAgICB9LCAxMDApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICB3YXRjaDoge1xyXG4gICAgICAgICAgICBtZWRpYUl0ZW1zOiB7XHJcbiAgICAgICAgICAgICAgICBkZWVwOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgaGFuZGxlciAoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gVHJpZ2dlciBwcmV2aWV3IHJlbmRlcmluZ1xyXG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyAkKGRvY3VtZW50KS50cmlnZ2VyKCdjb250ZW50cHJldmlldzpyZW5kZXInKTsgfSwgMTAwKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSwgXHJcbiAgICAgICAgICAgIGN1cnJlbnRQcmVmczogZnVuY3Rpb24gKG5ld1ByZWZzKSB7XHJcbiAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnbWVkaWFGaWVsZFByZWZzJywgSlNPTi5zdHJpbmdpZnkobmV3UHJlZnMpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH0pKTtcclxufVxyXG4iLCJmdW5jdGlvbiBpbml0aWFsaXplTWVkaWFGaWVsZChlbCwgbW9kYWxCb2R5RWxlbWVudCwgbWVkaWFJdGVtVXJsLCBhbGxvd011bHRpcGxlLCBhbGxvd01lZGlhVGV4dCwgYWxsb3dBbmNob3JzKSB7XHJcblxyXG4gICAgdmFyIHRhcmdldCA9ICQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJChlbCkuZGF0YSgnZm9yJykpKTtcclxuICAgIHZhciBpbml0aWFsUGF0aHMgPSB0YXJnZXQuZGF0YShcImluaXRcIik7XHJcblxyXG4gICAgdmFyIG1lZGlhRmllbGRFZGl0b3IgPSAkKGVsKTtcclxuICAgIHZhciBpZHByZWZpeCA9IG1lZGlhRmllbGRFZGl0b3IuYXR0cihcImlkXCIpO1xyXG4gICAgdmFyIG1lZGlhRmllbGRBcHA7XHJcblxyXG4gICAgbWVkaWFGaWVsZEFwcHMucHVzaChtZWRpYUZpZWxkQXBwID0gbmV3IFZ1ZSh7XHJcbiAgICAgICAgZWw6IG1lZGlhRmllbGRFZGl0b3IuZ2V0KDApLFxyXG4gICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgICAgbWVkaWFJdGVtczogW10sXHJcbiAgICAgICAgICAgIHNlbGVjdGVkTWVkaWE6IG51bGwsXHJcbiAgICAgICAgICAgIHNtYWxsVGh1bWJzOiBmYWxzZSxcclxuICAgICAgICAgICAgaWRQcmVmaXg6IGlkcHJlZml4LFxyXG4gICAgICAgICAgICBpbml0aWFsaXplZDogZmFsc2UsXHJcbiAgICAgICAgICAgIGFsbG93TWVkaWFUZXh0OiBhbGxvd01lZGlhVGV4dCxcclxuICAgICAgICAgICAgYmFja3VwTWVkaWFUZXh0OiAnJyxcclxuICAgICAgICAgICAgYWxsb3dBbmNob3JzOiBhbGxvd0FuY2hvcnMsXHJcbiAgICAgICAgICAgIGJhY2t1cEFuY2hvcjogbnVsbFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY3JlYXRlZDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICB2YXIgc2VsZiA9IHRoaXM7XHJcblxyXG4gICAgICAgICAgICBzZWxmLmN1cnJlbnRQcmVmcyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ21lZGlhRmllbGRQcmVmcycpKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNvbXB1dGVkOiB7XHJcbiAgICAgICAgICAgIHBhdGhzOiB7XHJcbiAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgbWVkaWFQYXRocyA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5pbml0aWFsaXplZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoaW5pdGlhbFBhdGhzKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tZWRpYUl0ZW1zLmZvckVhY2goZnVuY3Rpb24gKHgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHgubWVkaWFQYXRoID09PSAnbm90LWZvdW5kJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lZGlhUGF0aHMucHVzaCh7IHBhdGg6IHgubWVkaWFQYXRoLCBtZWRpYVRleHQ6IHgubWVkaWFUZXh0LCBhbmNob3I6IHguYW5jaG9yIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShtZWRpYVBhdGhzKTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uICh2YWx1ZXMpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgc2VsZiA9IHRoaXM7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIG1lZGlhUGF0aHMgPSB2YWx1ZXMgfHwgW107XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHNpZ25hbCA9ICQuRGVmZXJyZWQoKTtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgaXRlbXMgPSBbXTtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgbGVuZ3RoID0gMDtcclxuICAgICAgICAgICAgICAgICAgICBtZWRpYVBhdGhzLmZvckVhY2goZnVuY3Rpb24gKHgsIGkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXMucHVzaCh7IG5hbWU6ICcgJyArIHgucGF0aCwgbWltZTogJycsIG1lZGlhUGF0aDogJycgfSk7IC8vIGRvbid0IHJlbW92ZSB0aGUgc3BhY2UuIFNvbWV0aGluZyBkaWZmZXJlbnQgaXMgbmVlZGVkIG9yIGl0IHdvbnQgcmVhY3Qgd2hlbiB0aGUgcmVhbCBuYW1lIGFycml2ZXMuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb21pc2UgPSAkLndoZW4oc2lnbmFsKS5kb25lKGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICQuYWpheCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBtZWRpYUl0ZW1VcmwgKyBcIj9wYXRoPVwiICsgZW5jb2RlVVJJQ29tcG9uZW50KHgucGF0aCksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiAnR0VUJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiAoZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLnZ1ZWtleSA9IGRhdGEubmFtZSArIGkudG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5tZWRpYVRleHQgPSB4Lm1lZGlhVGV4dDsgLy8gVGhpcyB2YWx1ZSBpcyBub3QgcmV0dXJuZWQgZnJvbSB0aGUgYWpheCBjYWxsLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLmFuY2hvciA9IHguYW5jaG9yOyAvLyBUaGlzIHZhbHVlIGlzIG5vdCByZXR1cm5lZCBmcm9tIHRoZSBhamF4IGNhbGwuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zLnNwbGljZShpLCAxLCBkYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW1zLmxlbmd0aCA9PT0gKytsZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zLmZvckVhY2goZnVuY3Rpb24gKHkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm1lZGlhSXRlbXMucHVzaCh5KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5pbml0aWFsaXplZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yOiBmdW5jdGlvbiAoZXJyb3IpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtcy5zcGxpY2UoaSwgMSwgeyBuYW1lOiB4LnBhdGgsIG1pbWU6ICcnLCBtZWRpYVBhdGg6ICdub3QtZm91bmQnLCBtZWRpYVRleHQ6ICcnLCBhbmNob3I6IHsgeDogMCwgeTogMCB9IH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbXMubGVuZ3RoID09PSArK2xlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXMuZm9yRWFjaChmdW5jdGlvbiAoeCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubWVkaWFJdGVtcy5wdXNoKHgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmluaXRpYWxpemVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgc2lnbmFsLnJlc29sdmUoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZmlsZVNpemU6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBNYXRoLnJvdW5kKHRoaXMuc2VsZWN0ZWRNZWRpYS5zaXplIC8gMTAyNCk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGNhbkFkZE1lZGlhOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5tZWRpYUl0ZW1zLmxlbmd0aCA9PT0gMCB8fCB0aGlzLm1lZGlhSXRlbXMubGVuZ3RoID4gMCAmJiBhbGxvd011bHRpcGxlO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB0aHVtYlNpemU6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNtYWxsVGh1bWJzID8gMTIwIDogMjQwO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBjdXJyZW50UHJlZnM6IHtcclxuICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNtYWxsVGh1bWJzOiB0aGlzLnNtYWxsVGh1bWJzXHJcbiAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uIChuZXdQcmVmcykge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghbmV3UHJlZnMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNtYWxsVGh1bWJzID0gbmV3UHJlZnMuc21hbGxUaHVtYnM7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIG1vdW50ZWQ6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgdmFyIHNlbGYgPSB0aGlzO1xyXG5cclxuICAgICAgICAgICAgc2VsZi5wYXRocyA9IGluaXRpYWxQYXRocztcclxuXHJcbiAgICAgICAgICAgIHNlbGYuJG9uKCdzZWxlY3RBbmREZWxldGVNZWRpYVJlcXVlc3RlZCcsIGZ1bmN0aW9uIChtZWRpYSkge1xyXG4gICAgICAgICAgICAgICAgc2VsZi5zZWxlY3RBbmREZWxldGVNZWRpYShtZWRpYSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgc2VsZi4kb24oJ3NlbGVjdE1lZGlhUmVxdWVzdGVkJywgZnVuY3Rpb24gKG1lZGlhKSB7XHJcbiAgICAgICAgICAgICAgICBzZWxmLnNlbGVjdE1lZGlhKG1lZGlhKTtcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICBzZWxmLiRvbignZmlsZXNVcGxvYWRlZCcsIGZ1bmN0aW9uIChmaWxlcykge1xyXG4gICAgICAgICAgICAgICAgc2VsZi5hZGRNZWRpYUZpbGVzKGZpbGVzKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBtZXRob2RzOiB7XHJcbiAgICAgICAgICAgIHNlbGVjdE1lZGlhOiBmdW5jdGlvbiAobWVkaWEpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRNZWRpYSA9IG1lZGlhO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBzaG93TW9kYWw6IGZ1bmN0aW9uIChldmVudCkge1xyXG4gICAgICAgICAgICAgICAgdmFyIHNlbGYgPSB0aGlzO1xyXG4gICAgICAgICAgICAgICAgaWYgKHNlbGYuY2FuQWRkTWVkaWEpIHtcclxuICAgICAgICAgICAgICAgICAgICAkKFwiI21lZGlhQXBwXCIpLmRldGFjaCgpLmFwcGVuZFRvKCQobW9kYWxCb2R5RWxlbWVudCkuZmluZCgnLm1vZGFsLWJvZHknKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgJChcIiNtZWRpYUFwcFwiKS5zaG93KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIG1vZGFsID0gJChtb2RhbEJvZHlFbGVtZW50KS5tb2RhbCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICQobW9kYWxCb2R5RWxlbWVudCkuZmluZCgnLm1lZGlhRmllbGRTZWxlY3RCdXR0b24nKS5vZmYoJ2NsaWNrJykub24oJ2NsaWNrJywgZnVuY3Rpb24gKHYpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hZGRNZWRpYUZpbGVzKG1lZGlhQXBwLnNlbGVjdGVkTWVkaWFzKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdlIGRvbid0IHdhbnQgdGhlIGluY2x1ZGVkIG1lZGlhcyB0byBiZSBzdGlsbCBzZWxlY3RlZCB0aGUgbmV4dCB0aW1lIHdlIG9wZW4gdGhlIG1vZGFsLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtZWRpYUFwcC5zZWxlY3RlZE1lZGlhcyA9IFtdO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgbW9kYWwubW9kYWwoJ2hpZGUnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHNob3dNZWRpYVRleHRNb2RhbDogZnVuY3Rpb24gKGV2ZW50KSB7XHJcbiAgICAgICAgICAgICAgICAkKHRoaXMuJHJlZnMubWVkaWFUZXh0TW9kYWwpLm1vZGFsKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmJhY2t1cE1lZGlhVGV4dCA9IHRoaXMuc2VsZWN0ZWRNZWRpYS5tZWRpYVRleHQ7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGNhbmNlbE1lZGlhVGV4dE1vZGFsOiBmdW5jdGlvbiAoZXZlbnQpIHtcclxuICAgICAgICAgICAgICAgICQodGhpcy4kcmVmcy5tZWRpYVRleHRNb2RhbCkubW9kYWwoJ2hpZGUnKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRNZWRpYS5tZWRpYVRleHQgPSB0aGlzLmJhY2t1cE1lZGlhVGV4dDtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgc2hvd0FuY2hvck1vZGFsOiBmdW5jdGlvbiAoZXZlbnQpIHtcclxuICAgICAgICAgICAgICAgICQodGhpcy4kcmVmcy5hbmNob3JpbmdNb2RhbCkubW9kYWwoKTtcclxuICAgICAgICAgICAgICAgIC8vIENhdXNlIGEgcmVmcmVzaCB0byByZWNhbGMgaGVpZ2h0cy5cclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRNZWRpYS5hbmNob3IgPSB7XHJcbiAgICAgICAgICAgICAgICAgIHg6IHRoaXMuc2VsZWN0ZWRNZWRpYS5hbmNob3IueCxcclxuICAgICAgICAgICAgICAgICAgeTogdGhpcy5zZWxlY3RlZE1lZGlhLmFuY2hvci55XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLmJhY2t1cEFuY2hvciA9IHRoaXMuc2VsZWN0ZWRNZWRpYS5hbmNob3I7XHJcbiAgICAgICAgICAgIH0sICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGNhbmNlbEFuY2hvcmluZ01vZGFsOiBmdW5jdGlvbiAoZXZlbnQpIHtcclxuICAgICAgICAgICAgICAgICQodGhpcy4kcmVmcy5hbmNob3JpbmdNb2RhbCkubW9kYWwoJ2hpZGUnKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRNZWRpYS5hbmNob3IgPSB0aGlzLmJhY2t1cEFuY2hvcjtcclxuICAgICAgICAgICAgfSwgICAgICAgICAgICBcclxuICAgICAgICAgICAgcmVzZXRBbmNob3I6IGZ1bmN0aW9uIChldmVudCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE1lZGlhLmFuY2hvciA9IHsgeDogMC41LCB5OiAwLjUgfTtcclxuICAgICAgICAgICAgfSwgIFxyXG4gICAgICAgICAgICBvbkFuY2hvckRyb3A6IGZ1bmN0aW9uKGV2ZW50KSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgaW1hZ2UgPSB0aGlzLiRyZWZzLmFuY2hvckltYWdlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE1lZGlhLmFuY2hvciA9IHtcclxuICAgICAgICAgICAgICAgICAgIHg6IGV2ZW50Lm9mZnNldFggLyBpbWFnZS5jbGllbnRXaWR0aCxcclxuICAgICAgICAgICAgICAgICAgIHk6IGV2ZW50Lm9mZnNldFkgLyBpbWFnZS5jbGllbnRIZWlnaHRcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgYW5jaG9yTGVmdDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuJHJlZnMuYW5jaG9ySW1hZ2UgJiYgdGhpcy4kcmVmcy5tb2RhbEJvZHkgJiYgdGhpcy5zZWxlY3RlZE1lZGlhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gV2hlbiBpbWFnZSBpcyBzaHJ1bmsgY29tcGFyZSBhZ2FpbnN0IHRoZSBtb2RhbCBib2R5LlxyXG4gICAgICAgICAgICAgICAgICAgIHZhciBvZmZzZXQgPSAodGhpcy4kcmVmcy5tb2RhbEJvZHkuY2xpZW50V2lkdGggLSB0aGlzLiRyZWZzLmFuY2hvckltYWdlLmNsaWVudFdpZHRoKSAvIDI7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0gKHRoaXMuc2VsZWN0ZWRNZWRpYS5hbmNob3IueCAqIHRoaXMuJHJlZnMuYW5jaG9ySW1hZ2UuY2xpZW50V2lkdGgpICsgb2Zmc2V0O1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBhbmNob3JJY29uID0gTWF0aC5yb3VuZCh0aGlzLiRyZWZzLm1vZGFsQm9keS5xdWVyeVNlbGVjdG9yKCcuaWNvbi1tZWRpYS1hbmNob3InKS5jbGllbnRXaWR0aCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYoTnVtYmVyLmlzSW50ZWdlcihhbmNob3JJY29uKSlcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uID0gcG9zaXRpb24gLSBhbmNob3JJY29uLzI7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbiArICdweCc7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnMCc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGFuY2hvclRvcDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuJHJlZnMuYW5jaG9ySW1hZ2UgJiYgdGhpcy5zZWxlY3RlZE1lZGlhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0gdGhpcy5zZWxlY3RlZE1lZGlhLmFuY2hvci55ICogdGhpcy4kcmVmcy5hbmNob3JJbWFnZS5jbGllbnRIZWlnaHQ7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uICsgJ3B4JztcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICcwJztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgc2V0QW5jaG9yOiBmdW5jdGlvbiAoZXZlbnQpIHtcclxuICAgICAgICAgICAgICAgIHZhciBpbWFnZSA9IHRoaXMuJHJlZnMuYW5jaG9ySW1hZ2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkTWVkaWEuYW5jaG9yID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIHg6IGV2ZW50Lm9mZnNldFggLyBpbWFnZS5jbGllbnRXaWR0aCxcclxuICAgICAgICAgICAgICAgICAgICB5OiBldmVudC5vZmZzZXRZIC8gaW1hZ2UuY2xpZW50SGVpZ2h0XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sICAgICAgICAgXHJcbiAgICAgICAgICAgIGFkZE1lZGlhRmlsZXM6IGZ1bmN0aW9uIChmaWxlcykge1xyXG4gICAgICAgICAgICAgICAgaWYgKChmaWxlcy5sZW5ndGggPiAxKSAmJiAoYWxsb3dNdWx0aXBsZSA9PT0gZmFsc2UpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYWxlcnQoJCgnI29ubHlPbmVJdGVtTWVzc2FnZScpLnZhbCgpKTtcclxuICAgICAgICAgICAgICAgICAgICBtZWRpYUZpZWxkQXBwLm1lZGlhSXRlbXMucHVzaChmaWxlc1swXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbWVkaWFGaWVsZEFwcC5pbml0aWFsaXplZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIG1lZGlhRmllbGRBcHAubWVkaWFJdGVtcyA9IG1lZGlhRmllbGRBcHAubWVkaWFJdGVtcy5jb25jYXQoZmlsZXMpO1xyXG4gICAgICAgICAgICAgICAgICAgIG1lZGlhRmllbGRBcHAuaW5pdGlhbGl6ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICByZW1vdmVTZWxlY3RlZDogZnVuY3Rpb24gKGV2ZW50KSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZE1lZGlhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGluZGV4ID0gdGhpcy5tZWRpYUl0ZW1zICYmIHRoaXMubWVkaWFJdGVtcy5pbmRleE9mKHRoaXMuc2VsZWN0ZWRNZWRpYSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tZWRpYUl0ZW1zLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gVGhlIHJlbW92ZSBidXR0b24gY2FuIGFsc28gcmVtb3ZlIGEgdW5pcXVlIG1lZGlhIGl0ZW1cclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5tZWRpYUl0ZW1zLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1lZGlhSXRlbXMuc3BsaWNlKDAsIDEpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRNZWRpYSA9IG51bGw7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHNlbGVjdEFuZERlbGV0ZU1lZGlhOiBmdW5jdGlvbiAobWVkaWEpIHtcclxuICAgICAgICAgICAgICAgIHZhciBzZWxmID0gdGhpcztcclxuICAgICAgICAgICAgICAgIHNlbGYuc2VsZWN0ZWRNZWRpYSA9IG1lZGlhO1xyXG4gICAgICAgICAgICAgICAgLy8gc2V0VGltZW91dCBiZWNhdXNlIHNvbWV0aW1lcyByZW1vdmVTZWxlY3RlZCB3YXMgY2FsbGVkIGV2ZW4gYmVmb3JlIHRoZSBtZWRpYSB3YXMgc2V0LlxyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5yZW1vdmVTZWxlY3RlZCgpO1xyXG4gICAgICAgICAgICAgICAgfSwgMTAwKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgd2F0Y2g6IHtcclxuICAgICAgICAgICAgbWVkaWFJdGVtczoge1xyXG4gICAgICAgICAgICAgICAgZGVlcDogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIGhhbmRsZXIgKCkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIFRyaWdnZXIgcHJldmlldyByZW5kZXJpbmdcclxuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgJChkb2N1bWVudCkudHJpZ2dlcignY29udGVudHByZXZpZXc6cmVuZGVyJyk7IH0sIDEwMCk7IFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LCAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBjdXJyZW50UHJlZnM6IGZ1bmN0aW9uIChuZXdQcmVmcykge1xyXG4gICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ21lZGlhRmllbGRQcmVmcycsIEpTT04uc3RyaW5naWZ5KG5ld1ByZWZzKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9KSk7XHJcbn1cclxuIiwiLy8gZGlmZmVyZW50IG1lZGlhIGZpZWxkIGVkaXRvcnMgd2lsbCBhZGQgdGhlbXNlbHZlcyB0byB0aGlzIGFycmF5XHJcbnZhciBtZWRpYUZpZWxkQXBwcyA9IFtdO1xyXG4iLCIvLyA8bWVkaWEtZmllbGQtdGh1bWJzLWNvbnRhaW5lcj4gY29tcG9uZW50IFxyXG4vLyBkaWZmZXJlbnQgbWVkaWEgZmllbGQgZWRpdG9ycyBzaGFyZSB0aGlzIGNvbXBvbmVudCB0byBwcmVzZW50IHRoZSB0aHVtYnMuXHJcblZ1ZS5jb21wb25lbnQoJ21lZGlhRmllbGRUaHVtYnNDb250YWluZXInLCB7XHJcbiAgICB0ZW1wbGF0ZTogJ1xcXHJcbiAgICAgICA8ZGl2IDppZD1cImlkUHJlZml4ICsgXFwnX21lZGlhQ29udGFpbmVyTWFpblxcJ1wiIHYtY2xvYWs+XFxcclxuICAgICAgICAgPGRpdiB2LWlmPVwibWVkaWFJdGVtcy5sZW5ndGggPCAxXCIgY2xhc3M9XCJjYXJkIHRleHQtY2VudGVyXCI+XFxcclxuICAgICAgICAgICAgIDxkaXYgY2xhc3M9IFwiY2FyZC1ib2R5XCIgPlxcXHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImhpbnRcIj57e1Qubm9JbWFnZXN9fTwvc3Bhbj5cXFxyXG4gICAgICAgICAgICAgPC9kaXY+XFxcclxuICAgICAgICAgPC9kaXY+XFxcclxuICAgICAgICAgPGRyYWdnYWJsZSA6bGlzdD1cIm1lZGlhSXRlbXNcIiB0YWc9XCJvbFwiIGNsYXNzPVwicm93IG1lZGlhLWl0ZW1zLWdyaWRcIiA+XFxcclxuICAgICAgICAgICAgPGxpIHYtZm9yPVwibWVkaWEgaW4gbWVkaWFJdGVtc1wiXFxcclxuICAgICAgICAgICAgICAgIDprZXk9XCJtZWRpYS52dWVrZXlcIiBcXFxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJtZWRpYS1jb250YWluZXItbWFpbi1saXN0LWl0ZW0gY2FyZFwiXFxcclxuICAgICAgICAgICAgICAgIDpzdHlsZT1cInt3aWR0aDogdGh1bWJTaXplICsgMiArIFxcJ3B4XFwnfVwiXFxcclxuICAgICAgICAgICAgICAgIDpjbGFzcz1cIntzZWxlY3RlZDogc2VsZWN0ZWRNZWRpYSA9PSBtZWRpYX1cIlxcXHJcbiAgICAgICAgICAgICAgICB2LW9uOmNsaWNrPVwic2VsZWN0TWVkaWEobWVkaWEpXCIgdi1pZj1cIiFtZWRpYS5pc1JlbW92ZWRcIj5cXFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgdi1pZj1cIm1lZGlhLm1lZGlhUGF0aCE9PSBcXCdub3QtZm91bmRcXCdcIj5cXFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGh1bWItY29udGFpbmVyXCIgOnN0eWxlPVwie2hlaWdodDogdGh1bWJTaXplICsgXFwncHhcXCd9XCIgPlxcXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHYtaWY9XCJtZWRpYS5taW1lLnN0YXJ0c1dpdGgoXFwnaW1hZ2VcXCcpXCIgXFxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpzcmM9XCJidWlsZE1lZGlhVXJsKG1lZGlhLnVybCwgdGh1bWJTaXplKVwiIFxcXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ZGF0YS1taW1lPVwibWVkaWEubWltZVwiXFxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpzdHlsZT1cInttYXhIZWlnaHQ6IHRodW1iU2l6ZSArIFxcJ3B4XFwnICwgbWF4V2lkdGg6IHRodW1iU2l6ZSArIFxcJ3B4XFwnfVwiLz5cXFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgdi1lbHNlIGNsYXNzPVwiZmEgZmEtZmlsZS1vIGZhLWxnXCIgOmRhdGEtbWltZT1cIm1lZGlhLm1pbWVcIj48L2k+XFxcclxuICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxcXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWVkaWEtY29udGFpbmVyLW1haW4taXRlbS10aXRsZSBjYXJkLWJvZHlcIj5cXFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OjtcIiBjbGFzcz1cImJ0biBidG4tbGlnaHQgYnRuLXNtIGZsb2F0LXJpZ2h0IGlubGluZS1tZWRpYS1idXR0b24gZGVsZXRlLWJ1dHRvblwiXFxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdi1vbjpjbGljay5zdG9wPVwic2VsZWN0QW5kRGVsZXRlTWVkaWEobWVkaWEpXCI+PGkgY2xhc3M9XCJmYSBmYS10cmFzaFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT48L2E+XFxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSA6aHJlZj1cIm1lZGlhLnVybFwiIHRhcmdldD1cIl9ibGFua1wiIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBidG4tc20gZmxvYXQtcmlnaHQgaW5saW5lLW1lZGlhLWJ1dHRvbiB2aWV3LWJ1dHRvblwiXCI+PGkgY2xhc3M9XCJmYSBmYS1kb3dubG9hZFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT48L2E+IFxcXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZWRpYS1maWxlbmFtZSBjYXJkLXRleHQgc21hbGxcIiA6dGl0bGU9XCJtZWRpYS5tZWRpYVBhdGhcIj57eyBtZWRpYS5pc05ldyA/IG1lZGlhLm5hbWUuc3Vic3RyKDM2KSA6IG1lZGlhLm5hbWUgfX08L3NwYW4+XFxcclxuICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxcXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XFxcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHYtZWxzZT5cXFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGh1bWItY29udGFpbmVyIGZsZXgtY29sdW1uXCIgOnN0eWxlPVwie2hlaWdodDogdGh1bWJTaXplICsgXFwncHhcXCd9XCI+XFxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtYmFuIHRleHQtZGFuZ2VyIGQtYmxvY2tcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XFxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1kYW5nZXIgc21hbGwgZC1ibG9ja1wiPnt7IFQubWVkaWFOb3RGb3VuZCB9fTwvc3Bhbj5cXFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWRhbmdlciBzbWFsbCBkLWJsb2NrIHRleHQtY2VudGVyXCI+e3sgVC5kaXNjYXJkV2FybmluZyB9fTwvc3Bhbj5cXFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cXFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWVkaWEtY29udGFpbmVyLW1haW4taXRlbS10aXRsZSBjYXJkLWJvZHlcIj5cXFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6O1wiIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBidG4tc20gZmxvYXQtcmlnaHQgaW5saW5lLW1lZGlhLWJ1dHRvbiBkZWxldGUtYnV0dG9uXCJcXFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYtb246Y2xpY2suc3RvcD1cInNlbGVjdEFuZERlbGV0ZU1lZGlhKG1lZGlhKVwiPjxpIGNsYXNzPVwiZmEgZmEtdHJhc2hcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+PC9hPlxcXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lZGlhLWZpbGVuYW1lIGNhcmQtdGV4dCBzbWFsbCB0ZXh0LWRhbmdlclwiIDp0aXRsZT1cIm1lZGlhLm5hbWVcIj57eyBtZWRpYS5uYW1lIH19PC9zcGFuPlxcXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxcXHJcbiAgICAgICAgICAgICAgICAgICA8L2Rpdj5cXFxyXG4gICAgICAgICAgICA8L2xpPlxcXHJcbiAgICAgICAgIDwvZHJhZ2dhYmxlPlxcXHJcbiAgICAgICA8L2Rpdj5cXFxyXG4gICAgJyxcclxuICAgIGRhdGE6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBUOiB7fVxyXG4gICAgICAgIH07XHJcbiAgICB9LFxyXG4gICAgcHJvcHM6IHtcclxuICAgICAgICBtZWRpYUl0ZW1zOiBBcnJheSxcclxuICAgICAgICBzZWxlY3RlZE1lZGlhOiBPYmplY3QsXHJcbiAgICAgICAgdGh1bWJTaXplOiBOdW1iZXIsXHJcbiAgICAgICAgaWRQcmVmaXg6IFN0cmluZ1xyXG4gICAgfSxcclxuICAgIGNyZWF0ZWQ6IGZ1bmN0aW9uICgpIHtcclxuXHJcbiAgICAgICAgdmFyIHNlbGYgPSB0aGlzO1xyXG5cclxuICAgICAgICAvLyByZXRyaWV2aW5nIGxvY2FsaXplZCBzdHJpbmdzIGZyb20gdmlld1xyXG4gICAgICAgIHNlbGYuVC5tZWRpYU5vdEZvdW5kID0gJCgnI3QtbWVkaWEtbm90LWZvdW5kJykudmFsKCk7XHJcbiAgICAgICAgc2VsZi5ULmRpc2NhcmRXYXJuaW5nID0gJCgnI3QtZGlzY2FyZC13YXJuaW5nJykudmFsKCk7XHJcbiAgICAgICAgc2VsZi5ULm5vSW1hZ2VzID0gJCgnI3Qtbm8taW1hZ2VzJykudmFsKCk7XHJcbiAgICB9LFxyXG4gICAgbWV0aG9kczoge1xyXG4gICAgICAgIHNlbGVjdEFuZERlbGV0ZU1lZGlhOiBmdW5jdGlvbiAobWVkaWEpIHsgICAgICAgICAgICBcclxuICAgICAgICAgICAgdGhpcy4kcGFyZW50LiRlbWl0KCdzZWxlY3RBbmREZWxldGVNZWRpYVJlcXVlc3RlZCcsIG1lZGlhKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIHNlbGVjdE1lZGlhOiBmdW5jdGlvbiAobWVkaWEpIHtcclxuICAgICAgICAgICAgdGhpcy4kcGFyZW50LiRlbWl0KCdzZWxlY3RNZWRpYVJlcXVlc3RlZCcsIG1lZGlhKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGJ1aWxkTWVkaWFVcmw6IGZ1bmN0aW9uICh1cmwsIHRodW1iU2l6ZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdXJsICsgKHVybC5pbmRleE9mKCc/JykgPT0gLTEgPyAnPycgOiAnJicpICsgJ3dpZHRoPScgKyB0aHVtYlNpemUgKyAnJmhlaWdodD0nICsgdGh1bWJTaXplO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufSk7XHJcbiIsInZhciBpbml0aWFsaXplZDtcclxudmFyIG1lZGlhQXBwO1xyXG5cclxudmFyIGJ1cyA9IG5ldyBWdWUoKTtcclxuXHJcbmZ1bmN0aW9uIGluaXRpYWxpemVNZWRpYUFwcGxpY2F0aW9uKGRpc3BsYXlNZWRpYUFwcGxpY2F0aW9uLCBtZWRpYUFwcGxpY2F0aW9uVXJsLCBwYXRoQmFzZSkge1xyXG5cclxuICAgIGlmIChpbml0aWFsaXplZCkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpbml0aWFsaXplZCA9IHRydWU7XHJcblxyXG4gICAgaWYgKCFtZWRpYUFwcGxpY2F0aW9uVXJsKSB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcignbWVkaWFBcHBsaWNhdGlvblVybCB2YXJpYWJsZSBpcyBub3QgZGVmaW5lZCcpO1xyXG4gICAgfVxyXG5cclxuICAgICQuYWpheCh7XHJcbiAgICAgICAgdXJsOiBtZWRpYUFwcGxpY2F0aW9uVXJsLFxyXG4gICAgICAgIG1ldGhvZDogJ0dFVCcsXHJcbiAgICAgICAgc3VjY2VzczogZnVuY3Rpb24gKGNvbnRlbnQpIHtcclxuICAgICAgICAgICAgJCgnLnRhLWNvbnRlbnQnKS5hcHBlbmQoY29udGVudCk7XHJcblxyXG4gICAgICAgICAgICAkKGRvY3VtZW50KS50cmlnZ2VyKCdtZWRpYWFwcGxpY2F0aW9uOnJlYWR5Jyk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB2YXIgcm9vdCA9IHtcclxuICAgICAgICAgICAgICAgIG5hbWU6ICAkKCcjdC1tZWRpYUxpYnJhcnknKS50ZXh0KCksXHJcbiAgICAgICAgICAgICAgICBwYXRoOiAnJyxcclxuICAgICAgICAgICAgICAgIGZvbGRlcjogJycsXHJcbiAgICAgICAgICAgICAgICBpc0RpcmVjdG9yeTogdHJ1ZVxyXG4gICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgbWVkaWFBcHAgPSBuZXcgVnVlKHtcclxuICAgICAgICAgICAgICAgIGVsOiAnI21lZGlhQXBwJyxcclxuICAgICAgICAgICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEZvbGRlcjoge30sXHJcbiAgICAgICAgICAgICAgICAgICAgbWVkaWFJdGVtczogW10sXHJcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRNZWRpYXM6IFtdLFxyXG4gICAgICAgICAgICAgICAgICAgIGVycm9yczogW10sXHJcbiAgICAgICAgICAgICAgICAgICAgZHJhZ0Ryb3BUaHVtYm5haWw6IG5ldyBJbWFnZSgpLFxyXG4gICAgICAgICAgICAgICAgICAgIHNtYWxsVGh1bWJzOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICBncmlkVmlldzogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgbWVkaWFGaWx0ZXI6ICcnLFxyXG4gICAgICAgICAgICAgICAgICAgIHNvcnRCeTogJycsXHJcbiAgICAgICAgICAgICAgICAgICAgc29ydEFzYzogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICBpdGVtc0luUGFnZTogW11cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBjcmVhdGVkOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHNlbGYgPSB0aGlzO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBzZWxmLmRyYWdEcm9wVGh1bWJuYWlsLnNyYyA9IChwYXRoQmFzZSB8fCAnJykgKyAnL09yY2hhcmRDb3JlLk1lZGlhL0ltYWdlcy9kcmFnLXRodW1ibmFpbC5wbmcnO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBidXMuJG9uKCdmb2xkZXJTZWxlY3RlZCcsIGZ1bmN0aW9uIChmb2xkZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zZWxlY3RlZEZvbGRlciA9IGZvbGRlcjtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgYnVzLiRvbignZm9sZGVyRGVsZXRlZCcsIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zZWxlY3RSb290KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGJ1cy4kb24oJ2ZvbGRlckFkZGVkJywgZnVuY3Rpb24gKGZvbGRlcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNlbGVjdGVkRm9sZGVyID0gZm9sZGVyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb2xkZXIuc2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBidXMuJG9uKCdtZWRpYUxpc3RNb3ZlZCcsIGZ1bmN0aW9uIChlcnJvckluZm8pIHsgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2FkRm9sZGVyKHNlbGYuc2VsZWN0ZWRGb2xkZXIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3JJbmZvKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmVycm9ycy5wdXNoKGVycm9ySW5mbyk7ICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBidXMuJG9uKCdtZWRpYVJlbmFtZWQnLCBmdW5jdGlvbiAobmV3TmFtZSwgbmV3UGF0aCwgb2xkUGF0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgbWVkaWEgPSBzZWxmLm1lZGlhSXRlbXMuZmlsdGVyKGZ1bmN0aW9uIChpdGVtKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW0ubWVkaWFQYXRoID09PSBvbGRQYXRoO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVswXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lZGlhLm1lZGlhUGF0aCA9IG5ld1BhdGg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lZGlhLm5hbWUgPSBuZXdOYW1lO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBidXMuJG9uKCdjcmVhdGVGb2xkZXJSZXF1ZXN0ZWQnLCBmdW5jdGlvbiAobWVkaWEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jcmVhdGVGb2xkZXIoKTsgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgYnVzLiRvbignZGVsZXRlRm9sZGVyUmVxdWVzdGVkJywgZnVuY3Rpb24gKG1lZGlhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZGVsZXRlRm9sZGVyKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbW1vbiBoYW5kbGVycyBmb3IgYWN0aW9ucyBpbiBib3RoIGdyaWQgYW5kIHRhYmxlIHZpZXcuXHJcbiAgICAgICAgICAgICAgICAgICAgYnVzLiRvbignc29ydENoYW5nZVJlcXVlc3RlZCcsIGZ1bmN0aW9uIChuZXdTb3J0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2hhbmdlU29ydChuZXdTb3J0KTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgYnVzLiRvbignbWVkaWFUb2dnbGVSZXF1ZXN0ZWQnLCBmdW5jdGlvbiAobWVkaWEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi50b2dnbGVTZWxlY3Rpb25PZk1lZGlhKG1lZGlhKTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgYnVzLiRvbigncmVuYW1lTWVkaWFSZXF1ZXN0ZWQnLCBmdW5jdGlvbiAobWVkaWEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZW5hbWVNZWRpYShtZWRpYSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGJ1cy4kb24oJ2RlbGV0ZU1lZGlhUmVxdWVzdGVkJywgZnVuY3Rpb24gKG1lZGlhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZGVsZXRlTWVkaWFJdGVtKG1lZGlhKTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgYnVzLiRvbignbWVkaWFEcmFnU3RhcnRSZXF1ZXN0ZWQnLCBmdW5jdGlvbiAobWVkaWEsIGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5oYW5kbGVEcmFnU3RhcnQobWVkaWEsIGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gaGFuZGxlciBmb3IgcGFnZXIgZXZlbnRzXHJcbiAgICAgICAgICAgICAgICAgICAgYnVzLiRvbigncGFnZXJFdmVudCcsIGZ1bmN0aW9uIChpdGVtc0luUGFnZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLml0ZW1zSW5QYWdlID0gaXRlbXNJblBhZ2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2VsZWN0ZWRNZWRpYXMgPSBbXTtcclxuICAgICAgICAgICAgICAgICAgICB9KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmICghbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ21lZGlhQXBwbGljYXRpb25QcmVmcycpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2VsZWN0ZWRGb2xkZXIgPSByb290O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBzZWxmLmN1cnJlbnRQcmVmcyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ21lZGlhQXBwbGljYXRpb25QcmVmcycpKTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBjb21wdXRlZDoge1xyXG4gICAgICAgICAgICAgICAgICAgIGlzSG9tZTogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZEZvbGRlciA9PSByb290O1xyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50czogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgcCA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRGb2xkZXIgPSB0aGlzLnNlbGVjdGVkRm9sZGVyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAocGFyZW50Rm9sZGVyICYmIHBhcmVudEZvbGRlci5wYXRoICE9ICcnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwLnVuc2hpZnQocGFyZW50Rm9sZGVyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudEZvbGRlciA9IHBhcmVudEZvbGRlci5wYXJlbnQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwO1xyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgcm9vdDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcm9vdDtcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcmVkTWVkaWFJdGVtczogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2VsZiA9IHRoaXM7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNlbGVjdGVkTWVkaWFzID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZmlsdGVyZWQgPSBzZWxmLm1lZGlhSXRlbXMuZmlsdGVyKGZ1bmN0aW9uIChpdGVtKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXRlbS5uYW1lLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihzZWxmLm1lZGlhRmlsdGVyLnRvTG93ZXJDYXNlKCkpID4gLSAxO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoc2VsZi5zb3J0QnkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3NpemUnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcmVkLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuc29ydEFzYyA/IGEuc2l6ZSAtIGIuc2l6ZSA6IGIuc2l6ZSAtIGEuc2l6ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ21pbWUnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcmVkLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuc29ydEFzYyA/IGEubWltZS50b0xvd2VyQ2FzZSgpLmxvY2FsZUNvbXBhcmUoYi5taW1lLnRvTG93ZXJDYXNlKCkpIDogYi5taW1lLnRvTG93ZXJDYXNlKCkubG9jYWxlQ29tcGFyZShhLm1pbWUudG9Mb3dlckNhc2UoKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdsYXN0TW9kaWZ5JzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJlZC5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnNvcnRBc2MgPyBhLmxhc3RNb2RpZnkgLSBiLmxhc3RNb2RpZnkgOiBiLmxhc3RNb2RpZnkgLSBhLmxhc3RNb2RpZnk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcmVkLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuc29ydEFzYyA/IGEubmFtZS50b0xvd2VyQ2FzZSgpLmxvY2FsZUNvbXBhcmUoYi5uYW1lLnRvTG93ZXJDYXNlKCkpIDogYi5uYW1lLnRvTG93ZXJDYXNlKCkubG9jYWxlQ29tcGFyZShhLm5hbWUudG9Mb3dlckNhc2UoKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICBcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmaWx0ZXJlZDtcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIGhpZGRlbkNvdW50OiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSB0aGlzLm1lZGlhSXRlbXMubGVuZ3RoIC0gdGhpcy5maWx0ZXJlZE1lZGlhSXRlbXMubGVuZ3RoO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgdGh1bWJTaXplOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNtYWxsVGh1bWJzID8gMTAwIDogMjQwO1xyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFByZWZzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbWFsbFRodW1iczogdGhpcy5zbWFsbFRodW1icyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEZvbGRlcjogdGhpcy5zZWxlY3RlZEZvbGRlcixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkVmlldzogdGhpcy5ncmlkVmlld1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0OiBmdW5jdGlvbiAobmV3UHJlZnMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbmV3UHJlZnMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zbWFsbFRodW1icyA9IG5ld1ByZWZzLnNtYWxsVGh1bWJzO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEZvbGRlciA9IG5ld1ByZWZzLnNlbGVjdGVkRm9sZGVyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ncmlkVmlldyA9IG5ld1ByZWZzLmdyaWRWaWV3O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHdhdGNoOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFByZWZzOiBmdW5jdGlvbiAobmV3UHJlZnMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ21lZGlhQXBwbGljYXRpb25QcmVmcycsIEpTT04uc3RyaW5naWZ5KG5ld1ByZWZzKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEZvbGRlcjogZnVuY3Rpb24gKG5ld0ZvbGRlcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1lZGlhRmlsdGVyID0gJyc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRGb2xkZXIgPSBuZXdGb2xkZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZEZvbGRlcihuZXdGb2xkZXIpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgbW91bnRlZDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJHJlZnMucm9vdEZvbGRlci50b2dnbGUoKTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBtZXRob2RzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdXBsb2FkVXJsOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkRm9sZGVyID8gJCgnI3VwbG9hZEZpbGVzJykudmFsKCkgKyBcIj9wYXRoPVwiICsgZW5jb2RlVVJJQ29tcG9uZW50KHRoaXMuc2VsZWN0ZWRGb2xkZXIucGF0aCkgOiBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0Um9vdDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRm9sZGVyID0gdGhpcy5yb290O1xyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgbG9hZEZvbGRlcjogZnVuY3Rpb24gKGZvbGRlcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVycm9ycyA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkTWVkaWFzID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzZWxmID0gdGhpcztcclxuICAgICAgICAgICAgICAgICAgICAgICAgJC5hamF4KHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJCgnI2dldE1lZGlhSXRlbXNVcmwnKS52YWwoKSArIFwiP3BhdGg9XCIgKyBlbmNvZGVVUklDb21wb25lbnQoZm9sZGVyLnBhdGgpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiAnR0VUJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIChkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ub3BlbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubWVkaWFJdGVtcyA9IGRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zZWxlY3RlZE1lZGlhcyA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc29ydEJ5ID0gJyc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zb3J0QXNjID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcjogZnVuY3Rpb24gKGVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ2Vycm9yIGxvYWRpbmcgZm9sZGVyOicgKyBmb2xkZXIucGF0aCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNlbGVjdFJvb3QoKTsgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0QWxsOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRNZWRpYXMgPSBbXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmZpbHRlcmVkTWVkaWFJdGVtcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE1lZGlhcy5wdXNoKHRoaXMuZmlsdGVyZWRNZWRpYUl0ZW1zW2ldKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgdW5TZWxlY3RBbGw6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE1lZGlhcyA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgaW52ZXJ0U2VsZWN0aW9uOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ZW1wID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5maWx0ZXJlZE1lZGlhSXRlbXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzTWVkaWFTZWxlY3RlZCh0aGlzLmZpbHRlcmVkTWVkaWFJdGVtc1tpXSkgPT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wLnB1c2godGhpcy5maWx0ZXJlZE1lZGlhSXRlbXNbaV0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRNZWRpYXMgPSB0ZW1wO1xyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgdG9nZ2xlU2VsZWN0aW9uT2ZNZWRpYTogZnVuY3Rpb24gKG1lZGlhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzTWVkaWFTZWxlY3RlZChtZWRpYSkgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE1lZGlhcy5zcGxpY2UodGhpcy5zZWxlY3RlZE1lZGlhcy5pbmRleE9mKG1lZGlhKSwgMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkTWVkaWFzLnB1c2gobWVkaWEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBpc01lZGlhU2VsZWN0ZWQ6IGZ1bmN0aW9uIChtZWRpYSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gdGhpcy5zZWxlY3RlZE1lZGlhcy5zb21lKGZ1bmN0aW9uIChlbGVtZW50LCBpbmRleCwgYXJyYXkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50LnVybC50b0xvd2VyQ2FzZSgpID09PSBtZWRpYS51cmwudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBkZWxldGVGb2xkZXI6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGZvbGRlciA9IHRoaXMuc2VsZWN0ZWRGb2xkZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzZWxmID0gdGhpcztcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIHJvb3QgZm9sZGVyIGNhbid0IGJlIGRlbGV0ZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZvbGRlciA9PSB0aGlzLnJvb3QubW9kZWwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlybURpYWxvZyh7Li4uJChcIiNkZWxldGVGb2xkZXJcIikuZGF0YSgpLCBjYWxsYmFjazogZnVuY3Rpb24gKHJlc3ApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXNwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJC5hamF4KHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAkKCcjZGVsZXRlRm9sZGVyVXJsJykudmFsKCkgKyBcIj9wYXRoPVwiICsgZW5jb2RlVVJJQ29tcG9uZW50KGZvbGRlci5wYXRoKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fUmVxdWVzdFZlcmlmaWNhdGlvblRva2VuOiAkKFwiaW5wdXRbbmFtZT0nX19SZXF1ZXN0VmVyaWZpY2F0aW9uVG9rZW4nXVwiKS52YWwoKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiAoZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVzLiRlbWl0KCdkZWxldGVGb2xkZXInLCBmb2xkZXIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcjogZnVuY3Rpb24gKGVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yLnJlc3BvbnNlVGV4dCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfX0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgY3JlYXRlRm9sZGVyOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICQoJyNjcmVhdGVGb2xkZXJNb2RhbC1lcnJvcnMnKS5lbXB0eSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkKCcjY3JlYXRlRm9sZGVyTW9kYWwnKS5tb2RhbCgnc2hvdycpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkKCcjY3JlYXRlRm9sZGVyTW9kYWwgLm1vZGFsLWJvZHkgaW5wdXQnKS52YWwoJycpLmZvY3VzKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICByZW5hbWVNZWRpYTogZnVuY3Rpb24gKG1lZGlhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICQoJyNyZW5hbWVNZWRpYU1vZGFsLWVycm9ycycpLmVtcHR5KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICQoJyNyZW5hbWVNZWRpYU1vZGFsJykubW9kYWwoJ3Nob3cnKTsgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAkKCcjb2xkLWl0ZW0tbmFtZScpLnZhbChtZWRpYS5uYW1lKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJCgnI3JlbmFtZU1lZGlhTW9kYWwgLm1vZGFsLWJvZHkgaW5wdXQnKS52YWwobWVkaWEubmFtZSkuZm9jdXMoKTtcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdEFuZERlbGV0ZU1lZGlhOiBmdW5jdGlvbiAobWVkaWEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kZWxldGVNZWRpYSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlTWVkaWFMaXN0OiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBtZWRpYUxpc3QgPSB0aGlzLnNlbGVjdGVkTWVkaWFzO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2VsZiA9IHRoaXM7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobWVkaWFMaXN0Lmxlbmd0aCA8IDEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlybURpYWxvZyh7Li4uJChcIiNkZWxldGVNZWRpYVwiKS5kYXRhKCksIGNhbGxiYWNrOiBmdW5jdGlvbiAocmVzcCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3ApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcGF0aHMgPSBbXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1lZGlhTGlzdC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRocy5wdXNoKG1lZGlhTGlzdFtpXS5tZWRpYVBhdGgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJC5hamF4KHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAkKCcjZGVsZXRlTWVkaWFMaXN0VXJsJykudmFsKCksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX1JlcXVlc3RWZXJpZmljYXRpb25Ub2tlbjogJChcImlucHV0W25hbWU9J19fUmVxdWVzdFZlcmlmaWNhdGlvblRva2VuJ11cIikudmFsKCksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoczogcGF0aHNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24gKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2VsZi5zZWxlY3RlZE1lZGlhcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpbmRleCA9IHNlbGYubWVkaWFJdGVtcyAmJiBzZWxmLm1lZGlhSXRlbXMuaW5kZXhPZihzZWxmLnNlbGVjdGVkTWVkaWFzW2ldKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPiAtMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm1lZGlhSXRlbXMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVzLiRlbWl0KCdtZWRpYURlbGV0ZWQnLCBzZWxmLnNlbGVjdGVkTWVkaWFzW2ldKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNlbGVjdGVkTWVkaWFzID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yOiBmdW5jdGlvbiAoZXJyb3IpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IucmVzcG9uc2VUZXh0KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9fSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBkZWxldGVNZWRpYUl0ZW06IGZ1bmN0aW9uIChtZWRpYSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2VsZiA9IHRoaXM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbWVkaWEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlybURpYWxvZyh7Li4uJChcIiNkZWxldGVNZWRpYVwiKS5kYXRhKCksIGNhbGxiYWNrOiBmdW5jdGlvbiAocmVzcCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3ApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkLmFqYXgoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQoJyNkZWxldGVNZWRpYVVybCcpLnZhbCgpICsgXCI/cGF0aD1cIiArIGVuY29kZVVSSUNvbXBvbmVudChtZWRpYS5tZWRpYVBhdGgpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19SZXF1ZXN0VmVyaWZpY2F0aW9uVG9rZW46ICQoXCJpbnB1dFtuYW1lPSdfX1JlcXVlc3RWZXJpZmljYXRpb25Ub2tlbiddXCIpLnZhbCgpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIChkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaW5kZXggPSBzZWxmLm1lZGlhSXRlbXMgJiYgc2VsZi5tZWRpYUl0ZW1zLmluZGV4T2YobWVkaWEpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPiAtMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubWVkaWFJdGVtcy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1cy4kZW1pdCgnbWVkaWFEZWxldGVkJywgbWVkaWEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9zZWxmLnNlbGVjdGVkTWVkaWEgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcjogZnVuY3Rpb24gKGVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yLnJlc3BvbnNlVGV4dCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfX0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlRHJhZ1N0YXJ0OiBmdW5jdGlvbiAobWVkaWEsIGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gZmlyc3QgcGFydCBvZiBtb3ZlIG1lZGlhIHRvIGZvbGRlcjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gcHJlcGFyZSB0aGUgZGF0YSB0aGF0IHdpbGwgYmUgaGFuZGxlZCBieSB0aGUgZm9sZGVyIGNvbXBvbmVudCBvbiBkcm9wIGV2ZW50XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBtZWRpYU5hbWVzID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRNZWRpYXMuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVkaWFOYW1lcy5wdXNoKGl0ZW0ubmFtZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW4gY2FzZSB0aGUgdXNlciBkcmFncyBhbiB1bnNlbGVjdGVkIGl0ZW0sIHdlIHNlbGVjdCBpdCBmaXJzdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pc01lZGlhU2VsZWN0ZWQobWVkaWEpID09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZWRpYU5hbWVzLnB1c2gobWVkaWEubmFtZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkTWVkaWFzLnB1c2gobWVkaWEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlLmRhdGFUcmFuc2Zlci5zZXREYXRhKCdtZWRpYU5hbWVzJywgSlNPTi5zdHJpbmdpZnkobWVkaWFOYW1lcykpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlLmRhdGFUcmFuc2Zlci5zZXREYXRhKCdzb3VyY2VGb2xkZXInLCB0aGlzLnNlbGVjdGVkRm9sZGVyLnBhdGgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlLmRhdGFUcmFuc2Zlci5zZXREcmFnSW1hZ2UodGhpcy5kcmFnRHJvcFRodW1ibmFpbCwgMTAsIDEwKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZS5kYXRhVHJhbnNmZXIuZWZmZWN0QWxsb3dlZCA9ICdtb3ZlJzsgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZVNjcm9sbFdoaWxlRHJhZzogZnVuY3Rpb24gKGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUuY2xpZW50WSA8IDE1MCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxCeSgwLCAtMTApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZS5jbGllbnRZID4gd2luZG93LmlubmVySGVpZ2h0IC0gMTAwKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LnNjcm9sbEJ5KDAsIDEwKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgY2hhbmdlU29ydDogZnVuY3Rpb24gKG5ld1NvcnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc29ydEJ5ID09IG5ld1NvcnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc29ydEFzYyA9ICF0aGlzLnNvcnRBc2M7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNvcnRBc2MgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zb3J0QnkgPSBuZXdTb3J0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICQoJyNjcmVhdGUtZm9sZGVyLW5hbWUnKS5rZXlwcmVzcyhmdW5jdGlvbiAoZSkge1xyXG4gICAgICAgICAgICAgICAgdmFyIGtleSA9IGUud2hpY2g7XHJcbiAgICAgICAgICAgICAgICBpZiAoa2V5ID09IDEzKSB7ICAvLyB0aGUgZW50ZXIga2V5IGNvZGVcclxuICAgICAgICAgICAgICAgICAgICAkKCcjbW9kYWxGb290ZXJPaycpLmNsaWNrKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICQoJyNtb2RhbEZvb3Rlck9rJykub24oJ2NsaWNrJywgZnVuY3Rpb24gKGUpIHtcclxuICAgICAgICAgICAgICAgIHZhciBuYW1lID0gJCgnI2NyZWF0ZS1mb2xkZXItbmFtZScpLnZhbCgpO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChuYW1lID09PSBcIlwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICQuYWpheCh7XHJcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAkKCcjY3JlYXRlRm9sZGVyVXJsJykudmFsKCkgKyBcIj9wYXRoPVwiICsgZW5jb2RlVVJJQ29tcG9uZW50KG1lZGlhQXBwLnNlbGVjdGVkRm9sZGVyLnBhdGgpICsgXCImbmFtZT1cIiArIGVuY29kZVVSSUNvbXBvbmVudChuYW1lKSxcclxuICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcclxuICAgICAgICAgICAgICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF9fUmVxdWVzdFZlcmlmaWNhdGlvblRva2VuOiAkKFwiaW5wdXRbbmFtZT0nX19SZXF1ZXN0VmVyaWZpY2F0aW9uVG9rZW4nXVwiKS52YWwoKVxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24gKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnVzLiRlbWl0KCdhZGRGb2xkZXInLCBtZWRpYUFwcC5zZWxlY3RlZEZvbGRlciwgZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICQoJyNjcmVhdGVGb2xkZXJNb2RhbCcpLm1vZGFsKCdoaWRlJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBlcnJvcjogZnVuY3Rpb24gKGVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICQoJyNjcmVhdGVGb2xkZXJNb2RhbC1lcnJvcnMnKS5lbXB0eSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZXJyb3JNZXNzYWdlID0gSlNPTi5wYXJzZShlcnJvci5yZXNwb25zZVRleHQpLnZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkKCc8ZGl2IGNsYXNzPVwiYWxlcnQgYWxlcnQtZGFuZ2VyXCIgcm9sZT1cImFsZXJ0XCI+PC9kaXY+JykudGV4dChlcnJvck1lc3NhZ2UpLmFwcGVuZFRvKCQoJyNjcmVhdGVGb2xkZXJNb2RhbC1lcnJvcnMnKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgJCgnI3JlbmFtZU1lZGlhTW9kYWxGb290ZXJPaycpLm9uKCdjbGljaycsIGZ1bmN0aW9uIChlKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgbmV3TmFtZSA9ICQoJyNuZXctaXRlbS1uYW1lJykudmFsKCk7XHJcbiAgICAgICAgICAgICAgICB2YXIgb2xkTmFtZSA9ICQoJyNvbGQtaXRlbS1uYW1lJykudmFsKCk7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKG5ld05hbWUgPT09IFwiXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgdmFyIGN1cnJlbnRGb2xkZXIgPSBtZWRpYUFwcC5zZWxlY3RlZEZvbGRlci5wYXRoICsgXCIvXCIgO1xyXG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRGb2xkZXIgPT09IFwiL1wiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudEZvbGRlciA9IFwiXCI7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgdmFyIG5ld1BhdGggPSBjdXJyZW50Rm9sZGVyICsgbmV3TmFtZTtcclxuICAgICAgICAgICAgICAgIHZhciBvbGRQYXRoID0gY3VycmVudEZvbGRlciArIG9sZE5hbWU7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKG5ld1BhdGgudG9Mb3dlckNhc2UoKSA9PT0gb2xkUGF0aC50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgJCgnI3JlbmFtZU1lZGlhTW9kYWwnKS5tb2RhbCgnaGlkZScpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAkLmFqYXgoe1xyXG4gICAgICAgICAgICAgICAgICAgIHVybDogJCgnI3JlbmFtZU1lZGlhVXJsJykudmFsKCkgKyBcIj9vbGRQYXRoPVwiICsgZW5jb2RlVVJJQ29tcG9uZW50KG9sZFBhdGgpICsgXCImbmV3UGF0aD1cIiArIGVuY29kZVVSSUNvbXBvbmVudChuZXdQYXRoKSxcclxuICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcclxuICAgICAgICAgICAgICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF9fUmVxdWVzdFZlcmlmaWNhdGlvblRva2VuOiAkKFwiaW5wdXRbbmFtZT0nX19SZXF1ZXN0VmVyaWZpY2F0aW9uVG9rZW4nXVwiKS52YWwoKVxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24gKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJCgnI3JlbmFtZU1lZGlhTW9kYWwnKS5tb2RhbCgnaGlkZScpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBidXMuJGVtaXQoJ21lZGlhUmVuYW1lZCcsIG5ld05hbWUsIG5ld1BhdGgsIG9sZFBhdGgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgZXJyb3I6IGZ1bmN0aW9uIChlcnJvcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkKCcjcmVuYW1lTWVkaWFNb2RhbC1lcnJvcnMnKS5lbXB0eSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZXJyb3JNZXNzYWdlID0gSlNPTi5wYXJzZShlcnJvci5yZXNwb25zZVRleHQpLnZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkKCc8ZGl2IGNsYXNzPVwiYWxlcnQgYWxlcnQtZGFuZ2VyXCIgcm9sZT1cImFsZXJ0XCI+PC9kaXY+JykudGV4dChlcnJvck1lc3NhZ2UpLmFwcGVuZFRvKCQoJyNyZW5hbWVNZWRpYU1vZGFsLWVycm9ycycpKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICBpZiAoZGlzcGxheU1lZGlhQXBwbGljYXRpb24pIHtcclxuICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtZWRpYUFwcCcpLnN0eWxlLmRpc3BsYXkgPSBcIlwiO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAkKGRvY3VtZW50KS50cmlnZ2VyKCdtZWRpYUFwcDpyZWFkeScpO1xyXG5cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiBmdW5jdGlvbiAoZXJyb3IpIHtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvci5yZXNwb25zZVRleHQpO1xyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG59XHJcbiIsIiQoZG9jdW1lbnQpLm9uKCdtZWRpYUFwcDpyZWFkeScsIGZ1bmN0aW9uICgpIHtcclxuICAgICQoJyNmaWxldXBsb2FkJykuZmlsZXVwbG9hZCh7XHJcbiAgICAgICAgZHJvcFpvbmU6ICQoJyNtZWRpYUFwcCcpLFxyXG4gICAgICAgIGxpbWl0Q29uY3VycmVudFVwbG9hZHM6IDIwLFxyXG4gICAgICAgIGRhdGFUeXBlOiAnanNvbicsXHJcbiAgICAgICAgdXJsOiAkKCcjdXBsb2FkRmlsZXMnKS52YWwoKSxcclxuICAgICAgICBmb3JtRGF0YTogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICB2YXIgYW50aUZvcmdlcnlUb2tlbiA9ICQoXCJpbnB1dFtuYW1lPV9fUmVxdWVzdFZlcmlmaWNhdGlvblRva2VuXVwiKS52YWwoKTtcclxuXHJcbiAgICAgICAgICAgIHJldHVybiBbXHJcbiAgICAgICAgICAgICAgICB7IG5hbWU6ICdwYXRoJywgdmFsdWU6IG1lZGlhQXBwLnNlbGVjdGVkRm9sZGVyLnBhdGggfSxcclxuICAgICAgICAgICAgICAgIHsgbmFtZTogJ19fUmVxdWVzdFZlcmlmaWNhdGlvblRva2VuJywgdmFsdWU6IGFudGlGb3JnZXJ5VG9rZW4gfSxcclxuICAgICAgICAgICAgXVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZG9uZTogZnVuY3Rpb24gKGUsIGRhdGEpIHtcclxuICAgICAgICAgICAgJC5lYWNoKGRhdGEucmVzdWx0LmZpbGVzLCBmdW5jdGlvbiAoaW5kZXgsIGZpbGUpIHtcclxuICAgICAgICAgICAgICAgIGlmICghZmlsZS5lcnJvcikge1xyXG4gICAgICAgICAgICAgICAgICAgIG1lZGlhQXBwLm1lZGlhSXRlbXMucHVzaChmaWxlKVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9KTtcclxufSk7XHJcblxyXG5cclxuJChkb2N1bWVudCkuYmluZCgnZHJhZ292ZXInLCBmdW5jdGlvbiAoZSkge1xyXG4gICAgdmFyIGR0ID0gZS5vcmlnaW5hbEV2ZW50LmRhdGFUcmFuc2ZlcjtcclxuICAgIGlmIChkdC50eXBlcyAmJiAoZHQudHlwZXMuaW5kZXhPZiA/IGR0LnR5cGVzLmluZGV4T2YoJ0ZpbGVzJykgIT0gLTEgOiBkdC50eXBlcy5jb250YWlucygnRmlsZXMnKSkpIHtcclxuICAgICAgICB2YXIgZHJvcFpvbmUgPSAkKCcjY3VzdG9tZHJvcHpvbmUnKSxcclxuICAgICAgICAgICAgdGltZW91dCA9IHdpbmRvdy5kcm9wWm9uZVRpbWVvdXQ7XHJcbiAgICAgICAgaWYgKHRpbWVvdXQpIHtcclxuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGRyb3Bab25lLmFkZENsYXNzKCdpbicpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB2YXIgaG92ZXJlZERyb3Bab25lID0gJChlLnRhcmdldCkuY2xvc2VzdChkcm9wWm9uZSk7XHJcbiAgICAgICAgd2luZG93LmRyb3Bab25lVGltZW91dCA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICB3aW5kb3cuZHJvcFpvbmVUaW1lb3V0ID0gbnVsbDtcclxuICAgICAgICAgICAgZHJvcFpvbmUucmVtb3ZlQ2xhc3MoJ2luJyk7XHJcbiAgICAgICAgfSwgMTAwKTtcclxuICAgIH0gICAgXHJcbn0pOyIsIi8vIDxmb2xkZXI+IGNvbXBvbmVudFxyXG5WdWUuY29tcG9uZW50KCdmb2xkZXInLCB7XHJcbiAgICB0ZW1wbGF0ZTogYFxyXG4gICAgICAgIDxsaSA6Y2xhc3M9XCJ7c2VsZWN0ZWQ6IGlzU2VsZWN0ZWR9XCIgXHJcbiAgICAgICAgICAgICAgICB2LW9uOmRyYWdsZWF2ZS5wcmV2ZW50ID0gXCJoYW5kbGVEcmFnTGVhdmUoJGV2ZW50KTtcIiBcclxuICAgICAgICAgICAgICAgIHYtb246ZHJhZ292ZXIucHJldmVudC5zdG9wPVwiaGFuZGxlRHJhZ092ZXIoJGV2ZW50KTtcIiBcclxuICAgICAgICAgICAgICAgIHYtb246ZHJvcC5wcmV2ZW50LnN0b3AgPSBcIm1vdmVNZWRpYVRvRm9sZGVyKG1vZGVsLCAkZXZlbnQpXCIgPlxyXG4gICAgICAgICAgICA8ZGl2IDpjbGFzcz1cIntmb2xkZXJob3ZlcmVkOiBpc0hvdmVyZWQgLCB0cmVlcm9vdDogbGV2ZWwgPT0gMX1cIiA+XHJcbiAgICAgICAgICAgICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDo7XCIgOnN0eWxlPVwieyBwYWRkaW5nJHtkb2N1bWVudC5kaXIgPT0gXCJsdHJcIiA/IFwiTGVmdFwiIDogXCJSaWdodFwifTpwYWRkaW5nICsgJ3B4JyB9XCIgdi1vbjpjbGljaz1cInNlbGVjdFwiICBkcmFnZ2FibGU9XCJmYWxzZVwiIGNsYXNzPVwiZm9sZGVyLW1lbnUtaXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiB2LW9uOmNsaWNrLnN0b3A9XCJ0b2dnbGVcIiBjbGFzcz1cImV4cGFuZFwiIDpjbGFzcz1cIntvcGVuZWQ6IG9wZW4sIGNsb3NlZDogIW9wZW4sIGVtcHR5OiBlbXB0eX1cIj48aSB2LWlmPVwib3BlblwiIGNsYXNzPVwiZmFzIGZhLWNoZXZyb24tJHtkb2N1bWVudC5kaXIgPT0gXCJsdHJcIiA/IFwicmlnaHRcIiA6IFwibGVmdFwifVwiPjwvaT48L3NwYW4+IFxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9sZGVyLW5hbWUgbWwtMlwiPnt7bW9kZWwubmFtZX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ0bi1ncm91cCBmb2xkZXItYWN0aW9uc1wiID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIHYtY2xvYWsgaHJlZj1cImphdmFzY3JpcHQ6O1wiIGNsYXNzPVwiYnRuIGJ0bi1zbVwiIHYtb246Y2xpY2s9XCJjcmVhdGVGb2xkZXJcIiB2LWlmPVwiaXNTZWxlY3RlZCB8fCBpc1Jvb3RcIj48aSBjbGFzcz1cImZhcyBmYS1wbHVzXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPjwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIHYtY2xvYWsgaHJlZj1cImphdmFzY3JpcHQ6O1wiIGNsYXNzPVwiYnRuIGJ0bi1zbVwiIHYtb246Y2xpY2s9XCJkZWxldGVGb2xkZXJcIiB2LWlmPVwiaXNTZWxlY3RlZCAmJiAhaXNSb290XCI+PGkgY2xhc3M9XCJmYXMgZmEtdHJhc2hcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+PC9hPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPG9sIHYtc2hvdz1cIm9wZW5cIj5cclxuICAgICAgICAgICAgICAgIDxmb2xkZXIgdi1mb3I9XCJmb2xkZXIgaW4gY2hpbGRyZW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA6a2V5PVwiZm9sZGVyLnBhdGhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA6bW9kZWw9XCJmb2xkZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA6c2VsZWN0ZWQtaW4tbWVkaWEtYXBwPVwic2VsZWN0ZWRJbk1lZGlhQXBwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgOmxldmVsPVwibGV2ZWwgKyAxXCI+XHJcbiAgICAgICAgICAgICAgICA8L2ZvbGRlcj5cclxuICAgICAgICAgICAgPC9vbD5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICAgIGAsXHJcbiAgICBwcm9wczoge1xyXG4gICAgICAgIG1vZGVsOiBPYmplY3QsXHJcbiAgICAgICAgc2VsZWN0ZWRJbk1lZGlhQXBwOiBPYmplY3QsXHJcbiAgICAgICAgbGV2ZWw6IE51bWJlclxyXG4gICAgfSxcclxuICAgIGRhdGE6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBvcGVuOiBmYWxzZSxcclxuICAgICAgICAgICAgY2hpbGRyZW46IG51bGwsIC8vIG5vdCBpbml0aWFsaXplZCBzdGF0ZSAoZm9yIGxhenktbG9hZGluZylcclxuICAgICAgICAgICAgcGFyZW50OiBudWxsLFxyXG4gICAgICAgICAgICBpc0hvdmVyZWQ6IGZhbHNlLFxyXG4gICAgICAgICAgICBwYWRkaW5nOiAwXHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuICAgIGNvbXB1dGVkOiB7XHJcbiAgICAgICAgZW1wdHk6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgcmV0dXJuICF0aGlzLmNoaWxkcmVuIHx8IHRoaXMuY2hpbGRyZW4ubGVuZ3RoID09IDA7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBpc1NlbGVjdGVkOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAodGhpcy5zZWxlY3RlZEluTWVkaWFBcHAubmFtZSA9PSB0aGlzLm1vZGVsLm5hbWUpICYmICh0aGlzLnNlbGVjdGVkSW5NZWRpYUFwcC5wYXRoID09IHRoaXMubW9kZWwucGF0aCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBpc1Jvb3Q6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMubW9kZWwucGF0aCA9PT0gJyc7XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuICAgIG1vdW50ZWQ6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBpZiAoKHRoaXMuaXNSb290ID09IGZhbHNlKSAmJiAodGhpcy5pc0FuY2VzdG9yT2ZTZWxlY3RlZEZvbGRlcigpKSl7XHJcbiAgICAgICAgICAgIHRoaXMudG9nZ2xlKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnBhZGRpbmcgPSB0aGlzLmxldmVsIDwgMyA/ICAxNiA6IDE2ICsgKHRoaXMubGV2ZWwgKiA4KTtcclxuICAgIH0sXHJcbiAgICBjcmVhdGVkOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdmFyIHNlbGYgPSB0aGlzO1xyXG4gICAgICAgIGJ1cy4kb24oJ2RlbGV0ZUZvbGRlcicsIGZ1bmN0aW9uIChmb2xkZXIpIHtcclxuICAgICAgICAgICAgaWYgKHNlbGYuY2hpbGRyZW4pIHtcclxuICAgICAgICAgICAgICAgIHZhciBpbmRleCA9IHNlbGYuY2hpbGRyZW4gJiYgc2VsZi5jaGlsZHJlbi5pbmRleE9mKGZvbGRlcilcclxuICAgICAgICAgICAgICAgIGlmIChpbmRleCA+IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5jaGlsZHJlbi5zcGxpY2UoaW5kZXgsIDEpXHJcbiAgICAgICAgICAgICAgICAgICAgYnVzLiRlbWl0KCdmb2xkZXJEZWxldGVkJyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgYnVzLiRvbignYWRkRm9sZGVyJywgZnVuY3Rpb24gKHRhcmdldCwgZm9sZGVyKSB7XHJcbiAgICAgICAgICAgIGlmIChzZWxmLm1vZGVsID09IHRhcmdldCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHNlbGYuY2hpbGRyZW4gIT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICBzZWxmLmNoaWxkcmVuLnB1c2goZm9sZGVyKTtcclxuICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBmb2xkZXIucGFyZW50ID0gc2VsZi5tb2RlbDtcclxuICAgICAgICAgICAgICAgIGJ1cy4kZW1pdCgnZm9sZGVyQWRkZWQnLCBmb2xkZXIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9LFxyXG4gICAgbWV0aG9kczoge1xyXG4gICAgICAgIGlzQW5jZXN0b3JPZlNlbGVjdGVkRm9sZGVyOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIHBhcmVudEZvbGRlciA9IG1lZGlhQXBwLnNlbGVjdGVkRm9sZGVyO1xyXG4gICAgICAgICAgICB3aGlsZSAocGFyZW50Rm9sZGVyKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAocGFyZW50Rm9sZGVyLnBhdGggPT0gdGhpcy5tb2RlbC5wYXRoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHBhcmVudEZvbGRlciA9IHBhcmVudEZvbGRlci5wYXJlbnQ7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIHRvZ2dsZTogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICB0aGlzLm9wZW4gPSAhdGhpcy5vcGVuO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5vcGVuICYmICF0aGlzLmNoaWxkcmVuKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRDaGlsZHJlbigpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBzZWxlY3Q6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgYnVzLiRlbWl0KCdmb2xkZXJTZWxlY3RlZCcsIHRoaXMubW9kZWwpO1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRDaGlsZHJlbigpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY3JlYXRlRm9sZGVyOiBmdW5jdGlvbiAoKSB7ICAgICAgICAgICBcclxuICAgICAgICAgICAgYnVzLiRlbWl0KCdjcmVhdGVGb2xkZXJSZXF1ZXN0ZWQnKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGRlbGV0ZUZvbGRlcjogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICBidXMuJGVtaXQoJ2RlbGV0ZUZvbGRlclJlcXVlc3RlZCcpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgbG9hZENoaWxkcmVuOiBmdW5jdGlvbiAoKSB7ICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIHZhciBzZWxmID0gdGhpcztcclxuICAgICAgICAgICAgaWYgKHRoaXMub3BlbiA9PSBmYWxzZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vcGVuID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAkLmFqYXgoe1xyXG4gICAgICAgICAgICAgICAgdXJsOiAkKCcjZ2V0Rm9sZGVyc1VybCcpLnZhbCgpICsgXCI/cGF0aD1cIiArIGVuY29kZVVSSUNvbXBvbmVudChzZWxmLm1vZGVsLnBhdGgpLFxyXG4gICAgICAgICAgICAgICAgbWV0aG9kOiAnR0VUJyxcclxuICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIChkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5jaGlsZHJlbiA9IGRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5jaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uIChjKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGMucGFyZW50ID0gc2VsZi5tb2RlbDtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBlcnJvcjogZnVuY3Rpb24gKGVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZW10cHkgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yLnJlc3BvbnNlVGV4dCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgaGFuZGxlRHJhZ092ZXI6IGZ1bmN0aW9uIChlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaXNIb3ZlcmVkID0gdHJ1ZTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGhhbmRsZURyYWdMZWF2ZTogZnVuY3Rpb24gKGUpIHtcclxuICAgICAgICAgICAgdGhpcy5pc0hvdmVyZWQgPSBmYWxzZTsgICAgICAgICAgICBcclxuICAgICAgICB9LFxyXG4gICAgICAgIG1vdmVNZWRpYVRvRm9sZGVyOiBmdW5jdGlvbiAoZm9sZGVyLCBlKSB7XHJcblxyXG4gICAgICAgICAgICB2YXIgc2VsZiA9IHRoaXM7XHJcbiAgICAgICAgICAgIHNlbGYuaXNIb3ZlcmVkID0gZmFsc2U7XHJcblxyXG4gICAgICAgICAgICB2YXIgbWVkaWFOYW1lcyA9IEpTT04ucGFyc2UoZS5kYXRhVHJhbnNmZXIuZ2V0RGF0YSgnbWVkaWFOYW1lcycpKTsgXHJcblxyXG4gICAgICAgICAgICBpZiAobWVkaWFOYW1lcy5sZW5ndGggPCAxKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHZhciBzb3VyY2VGb2xkZXIgPSBlLmRhdGFUcmFuc2Zlci5nZXREYXRhKCdzb3VyY2VGb2xkZXInKTtcclxuICAgICAgICAgICAgdmFyIHRhcmdldEZvbGRlciA9IGZvbGRlci5wYXRoO1xyXG5cclxuICAgICAgICAgICAgaWYgKHNvdXJjZUZvbGRlciA9PT0gJycpIHtcclxuICAgICAgICAgICAgICAgIHNvdXJjZUZvbGRlciA9ICdyb290JztcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKHRhcmdldEZvbGRlciA9PT0gJycpIHtcclxuICAgICAgICAgICAgICAgIHRhcmdldEZvbGRlciA9ICdyb290JztcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKHNvdXJjZUZvbGRlciA9PT0gdGFyZ2V0Rm9sZGVyKSB7XHJcbiAgICAgICAgICAgICAgICBhbGVydCgkKCcjc2FtZUZvbGRlck1lc3NhZ2UnKS52YWwoKSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGNvbmZpcm1EaWFsb2coey4uLiQoXCIjbW92ZU1lZGlhXCIpLmRhdGEoKSwgY2FsbGJhY2s6IGZ1bmN0aW9uIChyZXNwKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzcCkge1xyXG4gICAgICAgICAgICAgICAgICAgICQuYWpheCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJCgnI21vdmVNZWRpYUxpc3RVcmwnKS52YWwoKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fUmVxdWVzdFZlcmlmaWNhdGlvblRva2VuOiAkKFwiaW5wdXRbbmFtZT0nX19SZXF1ZXN0VmVyaWZpY2F0aW9uVG9rZW4nXVwiKS52YWwoKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lZGlhTmFtZXM6IG1lZGlhTmFtZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VGb2xkZXI6IHNvdXJjZUZvbGRlcixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldEZvbGRlcjogdGFyZ2V0Rm9sZGVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1cy4kZW1pdCgnbWVkaWFMaXN0TW92ZWQnKTsgLy8gTWVkaWFBcHAgd2lsbCBsaXN0ZW4gdG8gdGhpcywgYW5kIHRoZW4gaXQgd2lsbCByZWxvYWQgcGFnZSBzbyB0aGUgbW92ZWQgbWVkaWFzIHdvbid0IGJlIHRoZXJlIGFueW1vcmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I6IGZ1bmN0aW9uIChlcnJvcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvci5yZXNwb25zZVRleHQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVzLiRlbWl0KCdtZWRpYUxpc3RNb3ZlZCcsIGVycm9yLnJlc3BvbnNlVGV4dCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfX0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICB9XHJcbn0pO1xyXG4iLCIvLyA8bWVkaWEtaXRlbXMtZ3JpZD4gY29tcG9uZW50XHJcblZ1ZS5jb21wb25lbnQoJ21lZGlhLWl0ZW1zLWdyaWQnLCB7XHJcbiAgICB0ZW1wbGF0ZTogYFxyXG4gICAgICAgIDxvbCBjbGFzcz1cInJvdyBtZWRpYS1pdGVtcy1ncmlkXCI+XHJcbiAgICAgICAgICAgICAgICA8bGkgdi1mb3I9XCJtZWRpYSBpbiBmaWx0ZXJlZE1lZGlhSXRlbXNcIlxyXG4gICAgICAgICAgICAgICAgICAgIDprZXk9XCJtZWRpYS5uYW1lXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZWRpYS1pdGVtIG1lZGlhLWNvbnRhaW5lci1tYWluLWxpc3QtaXRlbSBjYXJkXCJcclxuICAgICAgICAgICAgICAgICAgICA6c3R5bGU9XCJ7d2lkdGg6IHRodW1iU2l6ZSArIDIgKyAncHgnfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgOmNsYXNzPVwie3NlbGVjdGVkOiBpc01lZGlhU2VsZWN0ZWQobWVkaWEpfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgdi1vbjpjbGljay5zdG9wPVwidG9nZ2xlU2VsZWN0aW9uT2ZNZWRpYShtZWRpYSlcIlxyXG4gICAgICAgICAgICAgICAgICAgIGRyYWdnYWJsZT1cInRydWVcIiB2LW9uOmRyYWdzdGFydD1cImRyYWdTdGFydChtZWRpYSwgJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aHVtYi1jb250YWluZXJcIiA6c3R5bGU9XCJ7aGVpZ2h0OiB0aHVtYlNpemUgKydweCd9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgdi1pZj1cIm1lZGlhLm1pbWUuc3RhcnRzV2l0aCgnaW1hZ2UnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOnNyYz1cImJ1aWxkTWVkaWFVcmwobWVkaWEudXJsLCB0aHVtYlNpemUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ZGF0YS1taW1lPVwibWVkaWEubWltZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOnN0eWxlPVwie21heEhlaWdodDogdGh1bWJTaXplICsncHgnLCBtYXhXaWR0aDogdGh1bWJTaXplICsncHgnfVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIHYtZWxzZSBjbGFzcz1cImZhIGZhLWZpbGUtbyBmYS1sZ1wiIDpkYXRhLW1pbWU9XCJtZWRpYS5taW1lXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1lZGlhLWNvbnRhaW5lci1tYWluLWl0ZW0tdGl0bGUgY2FyZC1ib2R5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OjtcIiBjbGFzcz1cImJ0biBidG4tbGlnaHQgYnRuLXNtIGZsb2F0LXJpZ2h0IGlubGluZS1tZWRpYS1idXR0b24gZWRpdC1idXR0b25cIiB2LW9uOmNsaWNrLnN0b3A9XCJyZW5hbWVNZWRpYShtZWRpYSlcIj48aSBjbGFzcz1cImZhIGZhLWVkaXRcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+PC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDo7XCIgY2xhc3M9XCJidG4gYnRuLWxpZ2h0IGJ0bi1zbSBmbG9hdC1yaWdodCBpbmxpbmUtbWVkaWEtYnV0dG9uIGRlbGV0ZS1idXR0b25cIiB2LW9uOmNsaWNrLnN0b3A9XCJkZWxldGVNZWRpYShtZWRpYSlcIj48aSBjbGFzcz1cImZhIGZhLXRyYXNoXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPjwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGEgOmhyZWY9XCJtZWRpYS51cmxcIiB0YXJnZXQ9XCJfYmxhbmtcIiBjbGFzcz1cImJ0biBidG4tbGlnaHQgYnRuLXNtIGZsb2F0LXJpZ2h0IGlubGluZS1tZWRpYS1idXR0b24gdmlldy1idXR0b25cIlwiPjxpIGNsYXNzPVwiZmEgZmEtZG93bmxvYWRcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+PC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lZGlhLWZpbGVuYW1lIGNhcmQtdGV4dCBzbWFsbFwiIDp0aXRsZT1cIm1lZGlhLm5hbWVcIj57eyBtZWRpYS5uYW1lIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgPC9vbD5cclxuICAgICAgICBgLFxyXG4gICAgZGF0YTogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIFQ6IHt9XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuICAgIHByb3BzOiB7XHJcbiAgICAgICAgZmlsdGVyZWRNZWRpYUl0ZW1zOiBBcnJheSxcclxuICAgICAgICBzZWxlY3RlZE1lZGlhczogQXJyYXksXHJcbiAgICAgICAgdGh1bWJTaXplOiBOdW1iZXJcclxuICAgIH0sXHJcbiAgICBjcmVhdGVkOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdmFyIHNlbGYgPSB0aGlzO1xyXG4gICAgICAgIC8vIHJldHJpZXZpbmcgbG9jYWxpemVkIHN0cmluZ3MgZnJvbSB2aWV3XHJcbiAgICAgICAgc2VsZi5ULmVkaXRCdXR0b24gPSAkKCcjdC1lZGl0LWJ1dHRvbicpLnZhbCgpO1xyXG4gICAgICAgIHNlbGYuVC5kZWxldGVCdXR0b24gPSAkKCcjdC1kZWxldGUtYnV0dG9uJykudmFsKCk7XHJcbiAgICB9LFxyXG4gICAgbWV0aG9kczoge1xyXG4gICAgICAgIGlzTWVkaWFTZWxlY3RlZDogZnVuY3Rpb24gKG1lZGlhKSB7XHJcbiAgICAgICAgICAgIHZhciByZXN1bHQgPSB0aGlzLnNlbGVjdGVkTWVkaWFzLnNvbWUoZnVuY3Rpb24gKGVsZW1lbnQsIGluZGV4LCBhcnJheSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQudXJsLnRvTG93ZXJDYXNlKCkgPT09IG1lZGlhLnVybC50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGJ1aWxkTWVkaWFVcmw6IGZ1bmN0aW9uICh1cmwsIHRodW1iU2l6ZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdXJsICsgKHVybC5pbmRleE9mKCc/JykgPT0gLTEgPyAnPycgOiAnJicpICsgJ3dpZHRoPScgKyB0aHVtYlNpemUgKyAnJmhlaWdodD0nICsgdGh1bWJTaXplO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdG9nZ2xlU2VsZWN0aW9uT2ZNZWRpYTogZnVuY3Rpb24gKG1lZGlhKSB7XHJcbiAgICAgICAgICAgIGJ1cy4kZW1pdCgnbWVkaWFUb2dnbGVSZXF1ZXN0ZWQnLCBtZWRpYSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICByZW5hbWVNZWRpYTogZnVuY3Rpb24gKG1lZGlhKSB7XHJcbiAgICAgICAgICAgIGJ1cy4kZW1pdCgncmVuYW1lTWVkaWFSZXF1ZXN0ZWQnLCBtZWRpYSk7ICAgICAgICAgICAgXHJcbiAgICAgICAgfSxcclxuICAgICAgICBkZWxldGVNZWRpYTogZnVuY3Rpb24gKG1lZGlhKSB7XHJcbiAgICAgICAgICAgIGJ1cy4kZW1pdCgnZGVsZXRlTWVkaWFSZXF1ZXN0ZWQnLCBtZWRpYSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBkcmFnU3RhcnQ6IGZ1bmN0aW9uIChtZWRpYSwgZSkge1xyXG4gICAgICAgICAgICBidXMuJGVtaXQoJ21lZGlhRHJhZ1N0YXJ0UmVxdWVzdGVkJywgbWVkaWEsIGUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufSk7XHJcbiIsIi8vIDxtZWRpYS1pdGVtcy10YWJsZT4gY29tcG9uZW50XHJcblZ1ZS5jb21wb25lbnQoJ21lZGlhLWl0ZW1zLXRhYmxlJywge1xyXG4gICAgdGVtcGxhdGU6IGBcclxuICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBtZWRpYS1pdGVtcy10YWJsZSBtLTBcIj5cclxuICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgPHRyIGNsYXNzPVwiaGVhZGVyLXJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiIGNsYXNzPVwidGh1bWJuYWlsLWNvbHVtblwiPnt7IFQuaW1hZ2VIZWFkZXIgfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiIHYtb246Y2xpY2s9XCJjaGFuZ2VTb3J0KCduYW1lJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICB7eyBULm5hbWVIZWFkZXIgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgIDxzb3J0LWluZGljYXRvciBjb2xuYW1lPVwibmFtZVwiIDpzZWxlY3RlZGNvbG5hbWU9XCJzb3J0QnlcIiA6YXNjPVwic29ydEFzY1wiPjwvc29ydC1pbmRpY2F0b3I+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIiB2LW9uOmNsaWNrPVwiY2hhbmdlU29ydCgnbGFzdE1vZGlmeScpXCI+IFxyXG4gICAgICAgICAgICAgICAgICAgICAgIHt7IFQubGFzdE1vZGlmeUhlYWRlciB9fSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgIDxzb3J0LWluZGljYXRvciBjb2xuYW1lPVwibGFzdE1vZGlmeVwiIDpzZWxlY3RlZGNvbG5hbWU9XCJzb3J0QnlcIiA6YXNjPVwic29ydEFzY1wiPjwvc29ydC1pbmRpY2F0b3I+IFxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGg+IFxyXG4gICAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiIHYtb246Y2xpY2s9XCJjaGFuZ2VTb3J0KCdzaXplJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJvcHRpb25hbC1jb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IFQuc2l6ZUhlYWRlciB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgPHNvcnQtaW5kaWNhdG9yIGNvbG5hbWU9XCJzaXplXCIgOnNlbGVjdGVkY29sbmFtZT1cInNvcnRCeVwiIDphc2M9XCJzb3J0QXNjXCI+PC9zb3J0LWluZGljYXRvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCIgdi1vbjpjbGljaz1cImNoYW5nZVNvcnQoJ21pbWUnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm9wdGlvbmFsLWNvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBULnR5cGVIZWFkZXIgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgIDxzb3J0LWluZGljYXRvciBjb2xuYW1lPVwibWltZVwiIDpzZWxlY3RlZGNvbG5hbWU9XCJzb3J0QnlcIiA6YXNjPVwic29ydEFzY1wiPjwvc29ydC1pbmRpY2F0b3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgPHRib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ciB2LWZvcj1cIm1lZGlhIGluIGZpbHRlcmVkTWVkaWFJdGVtc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZWRpYS1pdGVtXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M9XCJ7c2VsZWN0ZWQ6IGlzTWVkaWFTZWxlY3RlZChtZWRpYSl9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB2LW9uOmNsaWNrLnN0b3A9XCJ0b2dnbGVTZWxlY3Rpb25PZk1lZGlhKG1lZGlhKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZHJhZ2dhYmxlPVwidHJ1ZVwiIHYtb246ZHJhZ3N0YXJ0PVwiZHJhZ1N0YXJ0KG1lZGlhLCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA6a2V5PVwibWVkaWEubmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRodW1ibmFpbC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1nLXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyB2LWlmPVwibWVkaWEubWltZS5zdGFydHNXaXRoKCdpbWFnZScpXCIgZHJhZ2dhYmxlPVwiZmFsc2VcIiA6c3JjPVwiYnVpbGRNZWRpYVVybChtZWRpYS51cmwsIHRodW1iU2l6ZSlcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSB2LWVsc2UgY2xhc3M9XCJmYSBmYS1maWxlLW8gZmEtbGdcIiA6ZGF0YS1taW1lPVwibWVkaWEubWltZVwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1lZGlhLW5hbWUtY2VsbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYnJlYWstd29yZFwiPiB7eyBtZWRpYS5uYW1lIH19IDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbnMtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDo7XCIgY2xhc3M9XCJidG4gYnRuLWxpbmsgYnRuLXNtIG1yLTEgZWRpdC1idXR0b25cIiB2LW9uOmNsaWNrLnN0b3A9XCJyZW5hbWVNZWRpYShtZWRpYSlcIj4ge3sgVC5lZGl0QnV0dG9uIH19IDwvYSA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDo7XCIgY2xhc3M9XCJidG4gYnRuLWxpbmsgYnRuLXNtIGRlbGV0ZS1idXR0b25cIiB2LW9uOmNsaWNrLnN0b3A9XCJkZWxldGVNZWRpYShtZWRpYSlcIj4ge3sgVC5kZWxldGVCdXR0b24gfX0gPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgOmhyZWY9XCJtZWRpYS51cmxcIiB0YXJnZXQ9XCJfYmxhbmtcIiBjbGFzcz1cImJ0biBidG4tbGluayBidG4tc20gdmlldy1idXR0b25cIj4ge3sgVC52aWV3QnV0dG9uIH19IDwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNvbFwiPiB7eyBwcmludERhdGVUaW1lKG1lZGlhLmxhc3RNb2RpZnkpIH19IDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jb2wgb3B0aW9uYWwtY29sXCI+IHt7IGlzTmFOKG1lZGlhLnNpemUpPyAwIDogTWF0aC5yb3VuZChtZWRpYS5zaXplIC8gMTAyNCkgfX0gS0I8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY29sIG9wdGlvbmFsLWNvbFwiPnt7IG1lZGlhLm1pbWUgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgYCxcclxuICAgIGRhdGE6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBUOiB7fVxyXG4gICAgICAgIH1cclxuICAgIH0sXHJcbiAgICBwcm9wczoge1xyXG4gICAgICAgIHNvcnRCeTogU3RyaW5nLFxyXG4gICAgICAgIHNvcnRBc2M6IEJvb2xlYW4sXHJcbiAgICAgICAgZmlsdGVyZWRNZWRpYUl0ZW1zOiBBcnJheSxcclxuICAgICAgICBzZWxlY3RlZE1lZGlhczogQXJyYXksXHJcbiAgICAgICAgdGh1bWJTaXplOiBOdW1iZXJcclxuICAgIH0sXHJcbiAgICBjcmVhdGVkOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdmFyIHNlbGYgPSB0aGlzO1xyXG4gICAgICAgIHNlbGYuVC5pbWFnZUhlYWRlciA9ICQoJyN0LWltYWdlLWhlYWRlcicpLnZhbCgpO1xyXG4gICAgICAgIHNlbGYuVC5uYW1lSGVhZGVyID0gJCgnI3QtbmFtZS1oZWFkZXInKS52YWwoKTtcclxuICAgICAgICBzZWxmLlQubGFzdE1vZGlmeUhlYWRlciA9ICQoJyN0LWxhc3RNb2RpZnktaGVhZGVyJykudmFsKCk7XHJcbiAgICAgICAgc2VsZi5ULnNpemVIZWFkZXIgPSAkKCcjdC1zaXplLWhlYWRlcicpLnZhbCgpO1xyXG4gICAgICAgIHNlbGYuVC50eXBlSGVhZGVyID0gJCgnI3QtdHlwZS1oZWFkZXInKS52YWwoKTtcclxuICAgICAgICBzZWxmLlQuZWRpdEJ1dHRvbiA9ICQoJyN0LWVkaXQtYnV0dG9uJykudmFsKCk7XHJcbiAgICAgICAgc2VsZi5ULmRlbGV0ZUJ1dHRvbiA9ICQoJyN0LWRlbGV0ZS1idXR0b24nKS52YWwoKTtcclxuICAgICAgICBzZWxmLlQudmlld0J1dHRvbiA9ICQoJyN0LXZpZXctYnV0dG9uJykudmFsKCk7XHJcbiAgICB9LFxyXG4gICAgbWV0aG9kczoge1xyXG4gICAgICAgIGlzTWVkaWFTZWxlY3RlZDogZnVuY3Rpb24gKG1lZGlhKSB7XHJcbiAgICAgICAgICAgIHZhciByZXN1bHQgPSB0aGlzLnNlbGVjdGVkTWVkaWFzLnNvbWUoZnVuY3Rpb24gKGVsZW1lbnQsIGluZGV4LCBhcnJheSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQudXJsLnRvTG93ZXJDYXNlKCkgPT09IG1lZGlhLnVybC50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGJ1aWxkTWVkaWFVcmw6IGZ1bmN0aW9uICh1cmwsIHRodW1iU2l6ZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdXJsICsgKHVybC5pbmRleE9mKCc/JykgPT0gLTEgPyAnPycgOiAnJicpICsgJ3dpZHRoPScgKyB0aHVtYlNpemUgKyAnJmhlaWdodD0nICsgdGh1bWJTaXplO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY2hhbmdlU29ydDogZnVuY3Rpb24gKG5ld1NvcnQpIHtcclxuICAgICAgICAgICAgYnVzLiRlbWl0KCdzb3J0Q2hhbmdlUmVxdWVzdGVkJywgbmV3U29ydCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICB0b2dnbGVTZWxlY3Rpb25PZk1lZGlhOiBmdW5jdGlvbiAobWVkaWEpIHtcclxuICAgICAgICAgICAgYnVzLiRlbWl0KCdtZWRpYVRvZ2dsZVJlcXVlc3RlZCcsIG1lZGlhKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIHJlbmFtZU1lZGlhOiBmdW5jdGlvbiAobWVkaWEpIHtcclxuICAgICAgICAgICAgYnVzLiRlbWl0KCdyZW5hbWVNZWRpYVJlcXVlc3RlZCcsIG1lZGlhKTsgICAgICAgICAgICBcclxuICAgICAgICB9LFxyXG4gICAgICAgIGRlbGV0ZU1lZGlhOiBmdW5jdGlvbiAobWVkaWEpIHtcclxuICAgICAgICAgICAgYnVzLiRlbWl0KCdkZWxldGVNZWRpYVJlcXVlc3RlZCcsIG1lZGlhKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGRyYWdTdGFydDogZnVuY3Rpb24gKG1lZGlhLCBlKSB7XHJcbiAgICAgICAgICAgIGJ1cy4kZW1pdCgnbWVkaWFEcmFnU3RhcnRSZXF1ZXN0ZWQnLCBtZWRpYSwgZSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBwcmludERhdGVUaW1lOiBmdW5jdGlvbiAoZGF0ZW1pbGxpcyl7XHJcbiAgICAgICAgICAgIHZhciBkID0gbmV3IERhdGUoZGF0ZW1pbGxpcyk7XHJcbiAgICAgICAgICAgIHJldHVybiBkLnRvTG9jYWxlU3RyaW5nKCk7ICAgICAgICAgICAgXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59KTtcclxuIiwiLy8gVGhpcyBjb21wb25lbnQgcmVjZWl2ZXMgYSBsaXN0IG9mIGFsbCB0aGUgaXRlbXMsIHVucGFnZWQuXHJcbi8vIEFzIHRoZSB1c2VyIGludGVyYWN0cyB3aXRoIHRoZSBwYWdlciwgaXQgcmFpc2VzIGV2ZW50cyB3aXRoIHRoZSBpdGVtcyBpbiB0aGUgY3VycmVudCBwYWdlLlxyXG4vLyBJdCdzIHRoZSBwYXJlbnQncyByZXNwb25zaWJpbGl0eSB0byBsaXN0ZW4gZm9yIHRoZXNlIGV2ZW50cyBhbmQgZGlzcGxheSB0aGUgcmVjZWl2ZWQgaXRlbXNcclxuLy8gPHBhZ2VyPiBjb21wb25lbnRcclxuVnVlLmNvbXBvbmVudCgncGFnZXInLCB7XHJcbiAgICB0ZW1wbGF0ZTogYFxyXG4gICAgPGRpdj5cclxuICAgICAgICA8bmF2IGlkPVwibWVkaWEtcGFnZXJcIiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCIgYXJpYS1sYWJlbD1cIlBhZ2luYXRpb24gTmF2aWdhdGlvblwiIHJvbGU9XCJuYXZpZ2F0aW9uXCIgOmRhdGEtY29tcHV0ZWQtdHJpZ2dlcj1cIml0ZW1zSW5DdXJyZW50UGFnZS5sZW5ndGhcIj5cclxuICAgICAgICAgICAgPHVsIGNsYXNzPVwicGFnaW5hdGlvbiBwYWdpbmF0aW9uLXNtIG0tMFwiPlxyXG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwicGFnZS1pdGVtIG1lZGlhLWZpcnN0LWJ1dHRvblwiIDpjbGFzcz1cIntkaXNhYmxlZCA6ICFjYW5Eb0ZpcnN0fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwicGFnZS1saW5rXCIgaHJlZj1cIiNcIiA6dGFiaW5kZXg9XCJjYW5Eb0ZpcnN0ID8gMCA6IC0xXCIgdi1vbjpjbGljaz1cImdvRmlyc3RcIj57eyBULnBhZ2VyRmlyc3RCdXR0b24gfX08L2E+XHJcbiAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwicGFnZS1pdGVtXCIgOmNsYXNzPVwie2Rpc2FibGVkIDogIWNhbkRvUHJldn1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cInBhZ2UtbGlua1wiIGhyZWY9XCIjXCIgOnRhYmluZGV4PVwiY2FuRG9QcmV2ID8gMCA6IC0xXCIgdi1vbjpjbGljaz1cInByZXZpb3VzXCI+e3sgVC5wYWdlclByZXZpb3VzQnV0dG9uIH19PC9hPlxyXG4gICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaSB2LWlmPVwibGluayAhPT0gLTFcIiBjbGFzcz1cInBhZ2UtaXRlbSBwYWdlLW51bWJlclwiICA6Y2xhc3M9XCJ7YWN0aXZlIDogY3VycmVudCA9PSBsaW5rIC0gMX1cIiB2LWZvcj1cImxpbmsgaW4gcGFnZUxpbmtzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJwYWdlLWxpbmtcIiBocmVmPVwiI1wiIHYtb246Y2xpY2s9XCJnb1RvKGxpbmsgLSAxKVwiIDphcmlhLWxhYmVsPVwiJ0dvdG8gUGFnZScgKyBsaW5rXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7bGlua319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHYtaWY9XCJjdXJyZW50ID09IGxpbmsgLTFcIiBjbGFzcz1cInNyLW9ubHlcIj4oY3VycmVudCk8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInBhZ2UtaXRlbVwiIDpjbGFzcz1cIntkaXNhYmxlZCA6ICFjYW5Eb05leHR9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJwYWdlLWxpbmtcIiBocmVmPVwiI1wiIDp0YWJpbmRleD1cImNhbkRvTmV4dCA/IDAgOiAtMVwiIHYtb246Y2xpY2s9XCJuZXh0XCI+e3sgVC5wYWdlck5leHRCdXR0b24gfX08L2E+XHJcbiAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwicGFnZS1pdGVtIG1lZGlhLWxhc3QtYnV0dG9uXCIgOmNsYXNzPVwie2Rpc2FibGVkIDogIWNhbkRvTGFzdH1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cInBhZ2UtbGlua1wiIGhyZWY9XCIjXCIgOnRhYmluZGV4PVwiY2FuRG9MYXN0ID8gMCA6IC0xXCIgdi1vbjpjbGljaz1cImdvTGFzdFwiPnt7IFQucGFnZXJMYXN0QnV0dG9uIH19PC9hPlxyXG4gICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInBhZ2UtaXRlbSBtbC00IHBhZ2Utc2l6ZS1pbmZvXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGFnZS1saW5rIGRpc2FibGVkIHRleHQtbXV0ZWQgcGFnZS1zaXplLWxhYmVsXCI+e3sgVC5wYWdlclBhZ2VTaXplTGFiZWwgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgaWQ9XCJwYWdlU2l6ZVNlbGVjdFwiIGNsYXNzPVwicGFnZS1saW5rXCIgdi1tb2RlbD1cInBhZ2VTaXplXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHYtZm9yPVwib3B0aW9uIGluIHBhZ2VTaXplT3B0aW9uc1wiIHYtYmluZDp2YWx1ZT1cIm9wdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7b3B0aW9ufX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9uYXY+XHJcbiAgICAgICAgPG5hdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgIDx1bCBjbGFzcz1cInBhZ2luYXRpb24gcGFnaW5hdGlvbi1zbSBtLTAgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwicGFnZS1pdGVtIG1sLTQgcGFnZS1pbmZvXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwYWdlLWxpbmsgZGlzYWJsZWQgdGV4dC1tdXRlZCBcIj57eyBULnBhZ2VyUGFnZUxhYmVsIH19IHt7Y3VycmVudCArIDF9fS97e3RvdGFsUGFnZXN9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJwYWdlLWl0ZW0gbWwtNCB0b3RhbC1pbmZvXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwYWdlLWxpbmsgZGlzYWJsZWQgdGV4dC1tdXRlZCBcIj4ge3sgVC5wYWdlclRvdGFsTGFiZWwgfX0ge3t0b3RhbH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICA8L25hdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICBgLFxyXG4gICAgcHJvcHM6IHtcclxuICAgICAgICBzb3VyY2VJdGVtczogQXJyYXlcclxuICAgIH0sXHJcbiAgICBkYXRhOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgcGFnZVNpemU6IDEwLFxyXG4gICAgICAgICAgICBwYWdlU2l6ZU9wdGlvbnM6IFsxMCwgMzAsIDUwLCAxMDBdLFxyXG4gICAgICAgICAgICBjdXJyZW50OiAwLFxyXG4gICAgICAgICAgICBUOiB7fVxyXG4gICAgICAgIH07XHJcbiAgICB9LFxyXG4gICAgY3JlYXRlZDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHZhciBzZWxmID0gdGhpcztcclxuXHJcbiAgICAgICAgLy8gcmV0cmlldmluZyBsb2NhbGl6ZWQgc3RyaW5ncyBmcm9tIHZpZXdcclxuICAgICAgICBzZWxmLlQucGFnZXJGaXJzdEJ1dHRvbiA9ICQoJyN0LXBhZ2VyLWZpcnN0LWJ1dHRvbicpLnZhbCgpO1xyXG4gICAgICAgIHNlbGYuVC5wYWdlclByZXZpb3VzQnV0dG9uID0gJCgnI3QtcGFnZXItcHJldmlvdXMtYnV0dG9uJykudmFsKCk7XHJcbiAgICAgICAgc2VsZi5ULnBhZ2VyTmV4dEJ1dHRvbiA9ICQoJyN0LXBhZ2VyLW5leHQtYnV0dG9uJykudmFsKCk7XHJcbiAgICAgICAgc2VsZi5ULnBhZ2VyTGFzdEJ1dHRvbiA9ICQoJyN0LXBhZ2VyLWxhc3QtYnV0dG9uJykudmFsKCk7XHJcbiAgICAgICAgc2VsZi5ULnBhZ2VyUGFnZVNpemVMYWJlbCA9ICQoJyN0LXBhZ2VyLXBhZ2Utc2l6ZS1sYWJlbCcpLnZhbCgpO1xyXG4gICAgICAgIHNlbGYuVC5wYWdlclBhZ2VMYWJlbCA9ICQoJyN0LXBhZ2VyLXBhZ2UtbGFiZWwnKS52YWwoKTtcclxuICAgICAgICBzZWxmLlQucGFnZXJUb3RhbExhYmVsID0gJCgnI3QtcGFnZXItdG90YWwtbGFiZWwnKS52YWwoKTsgICAgICAgIFxyXG4gICAgfSxcclxuICAgIG1ldGhvZHM6IHtcclxuICAgICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudCA9IHRoaXMuY3VycmVudCArIDE7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBwcmV2aW91czogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnQgPSB0aGlzLmN1cnJlbnQgLSAxO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZ29GaXJzdDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnQgPSAwO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZ29MYXN0OiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudCA9IHRoaXMudG90YWxQYWdlcyAtIDE7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBnb1RvOiBmdW5jdGlvbiAodGFyZ2V0UGFnZSkge1xyXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnQgPSB0YXJnZXRQYWdlO1xyXG4gICAgICAgIH1cclxuICAgIH0sXHJcbiAgICBjb21wdXRlZDoge1xyXG4gICAgICAgIHRvdGFsOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNvdXJjZUl0ZW1zID8gdGhpcy5zb3VyY2VJdGVtcy5sZW5ndGggOiAwO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdG90YWxQYWdlczogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICB2YXIgcGFnZXMgPSBNYXRoLmNlaWwodGhpcy50b3RhbCAvIHRoaXMucGFnZVNpemUpO1xyXG4gICAgICAgICAgICByZXR1cm4gcGFnZXMgPiAwID8gcGFnZXMgOiAxO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgaXNMYXN0UGFnZTogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50ICsgMSA+PSB0aGlzLnRvdGFsUGFnZXM7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBpc0ZpcnN0UGFnZTogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50ID09PSAwO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY2FuRG9OZXh0OiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAhdGhpcy5pc0xhc3RQYWdlO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY2FuRG9QcmV2OiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAhdGhpcy5pc0ZpcnN0UGFnZTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNhbkRvRmlyc3Q6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgcmV0dXJuICF0aGlzLmlzRmlyc3RQYWdlO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY2FuRG9MYXN0OiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAhdGhpcy5pc0xhc3RQYWdlO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLy8gdGhpcyBjb21wdXRlZCBpcyBvbmx5IHRvIGhhdmUgYSBjZW50cmFsIHBsYWNlIHdoZXJlIHdlIGRldGVjdCBjaGFuZ2VzIGFuZCBsZXZlcmFnZSBWdWUgSlMgcmVhY3Rpdml0eSB0byByYWlzZSBvdXIgZXZlbnQuXHJcbiAgICAgICAgLy8gVGhhdCBldmVudCB3aWxsIGJlIGhhbmRsZWQgYnkgdGhlIHBhcmVudCBtZWRpYSBhcHAgdG8gZGlzcGxheSB0aGUgaXRlbXMgaW4gdGhlIHBhZ2UuXHJcbiAgICAgICAgLy8gdGhpcyBsb2dpYyB3aWxsIG5vdCBydW4gaWYgdGhlIGNvbXB1dGVkIHByb3BlcnR5IGlzIG5vdCB1c2VkIGluIHRoZSB0ZW1wbGF0ZS4gV2UgdXNlIGEgZHVtbXkgXCJkYXRhLWNvbXB1dGVkLXRyaWdnZXJcIiBhdHRyaWJ1dGUgZm9yIHRoYXQuXHJcbiAgICAgICAgaXRlbXNJbkN1cnJlbnRQYWdlOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIHZhciBzdGFydCA9IHRoaXMucGFnZVNpemUgKiB0aGlzLmN1cnJlbnQ7XHJcbiAgICAgICAgICAgIHZhciBlbmQgPSBzdGFydCArIHRoaXMucGFnZVNpemU7XHJcbiAgICAgICAgICAgIHZhciByZXN1bHQgPSB0aGlzLnNvdXJjZUl0ZW1zLnNsaWNlKHN0YXJ0LCBlbmQpO1xyXG4gICAgICAgICAgICBidXMuJGVtaXQoJ3BhZ2VyRXZlbnQnLCByZXN1bHQpO1xyXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcGFnZUxpbmtzOiBmdW5jdGlvbiAoKSB7XHJcblxyXG4gICAgICAgICAgICB2YXIgbGlua3MgPSBbXTtcclxuXHJcbiAgICAgICAgICAgIGxpbmtzLnB1c2godGhpcy5jdXJyZW50ICsgMSk7XHJcblxyXG4gICAgICAgICAgICAvLyBBZGQgMiBpdGVtcyBiZWZvcmUgY3VycmVudFxyXG4gICAgICAgICAgICB2YXIgYmVmb3JlQ3VycmVudCA9IHRoaXMuY3VycmVudCA+IDAgPyB0aGlzLmN1cnJlbnQgOiAtMTtcclxuICAgICAgICAgICAgbGlua3MudW5zaGlmdChiZWZvcmVDdXJyZW50KTtcclxuXHJcbiAgICAgICAgICAgIHZhciBiZWZvcmVCZWZvcmVDdXJyZW50ID0gdGhpcy5jdXJyZW50ID4gMSA/IHRoaXMuY3VycmVudCAtIDEgOiAtMTtcclxuICAgICAgICAgICAgbGlua3MudW5zaGlmdChiZWZvcmVCZWZvcmVDdXJyZW50KTtcclxuXHJcblxyXG4gICAgICAgICAgICAvLyBBZGQgMiBpdGVtcyBhZnRlciBjdXJyZW50XHJcbiAgICAgICAgICAgIHZhciBhZnRlckN1cnJlbnQgPSB0aGlzLnRvdGFsUGFnZXMgLSB0aGlzLmN1cnJlbnQgPiAxID8gdGhpcy5jdXJyZW50ICsgMiA6IC0xO1xyXG4gICAgICAgICAgICBsaW5rcy5wdXNoKGFmdGVyQ3VycmVudCk7XHJcblxyXG4gICAgICAgICAgICB2YXIgYWZ0ZXJBZnRlckN1cnJlbnQgPSB0aGlzLnRvdGFsUGFnZXMgLSB0aGlzLmN1cnJlbnQgPiAyID8gdGhpcy5jdXJyZW50ICsgMyA6IC0xO1xyXG4gICAgICAgICAgICBsaW5rcy5wdXNoKGFmdGVyQWZ0ZXJDdXJyZW50KTtcclxuXHJcbiAgICAgICAgICAgIHJldHVybiBsaW5rcztcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgd2F0Y2g6IHtcclxuICAgICAgICBzb3VyY2VJdGVtczogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnQgPSAwOyAvLyByZXNldHRpbmcgY3VycmVudCBwYWdlIGFmdGVyIHJlY2VpdmluZyBhIG5ldyBsaXN0IG9mIHVucGFnZWQgaXRlbXNcclxuICAgICAgICB9LFxyXG4gICAgICAgIHBhZ2VTaXplOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudCA9IDA7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59KTtcclxuIiwiLy8gPHNvcnQtaW5kaWNhdG9yPiBjb21wb25lbnRcclxuVnVlLmNvbXBvbmVudCgnc29ydEluZGljYXRvcicsIHtcclxuICAgIHRlbXBsYXRlOiBgXHJcbiAgICAgICAgPGRpdiB2LXNob3c9XCJpc0FjdGl2ZVwiIGNsYXNzPVwic29ydC1pbmRpY2F0b3JcIj5cclxuICAgICAgICAgICAgPHNwYW4gdi1zaG93PVwiYXNjXCI+PGkgY2xhc3M9XCJzbWFsbCBmYSBmYS1jaGV2cm9uLXVwXCI+PC9pPjwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gdi1zaG93PVwiIWFzY1wiPjxpIGNsYXNzPVwic21hbGwgZmEgZmEtY2hldnJvbi1kb3duXCI+PC9pPjwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICBgLFxyXG4gICAgcHJvcHM6IHtcclxuICAgICAgICBjb2xuYW1lOiBTdHJpbmcsXHJcbiAgICAgICAgc2VsZWN0ZWRjb2xuYW1lOiBTdHJpbmcsXHJcbiAgICAgICAgYXNjOiBCb29sZWFuXHJcbiAgICB9LFxyXG4gICAgY29tcHV0ZWQ6IHtcclxuICAgICAgICBpc0FjdGl2ZTogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jb2xuYW1lLnRvTG93ZXJDYXNlKCkgPT0gdGhpcy5zZWxlY3RlZGNvbG5hbWUudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn0pO1xyXG4iLCIvLyA8dXBsb2FkPiBjb21wb25lbnRcclxuVnVlLmNvbXBvbmVudCgndXBsb2FkJywge1xyXG4gICAgdGVtcGxhdGU6ICdcXFxyXG4gICAgICAgIDxkaXYgOmNsYXNzPVwieyBcXCd1cGxvYWQtd2FybmluZ1xcJyA6IG1vZGVsLmVycm9yTWVzc2FnZSB9XCIgY2xhc3M9XCJ1cGxvYWQgbS0yIHAtMiBwdC0wXCI+IFxcXHJcbiAgICAgICAgICAgIDxzcGFuIHYtaWY9XCJtb2RlbC5lcnJvck1lc3NhZ2VcIiB2LW9uOmNsaWNrPVwiZGlzbWlzc1dhcm5pbmcoKVwiIGNsYXNzPVwiY2xvc2Utd2FybmluZ1wiPjxpIGNsYXNzPVwiZmEgZmEtdGltZXNcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+IDwvc3Bhbj5cXFxyXG4gICAgICAgICAgICA8cCBjbGFzcz1cInVwbG9hZC1uYW1lXCIgOnRpdGxlPVwibW9kZWwuZXJyb3JNZXNzYWdlXCI+e3sgbW9kZWwubmFtZSB9fTwvcD4gXFxcclxuICAgICAgICAgICAgPGRpdj4gXFxcclxuICAgICAgICAgICAgICAgPHNwYW4gdi1zaG93PVwiIW1vZGVsLmVycm9yTWVzc2FnZVwiIDpzdHlsZT1cInsgd2lkdGg6IG1vZGVsLnBlcmNlbnRhZ2UgKyBcXCclXFwnfVwiIGNsYXNzPVwicHJvZ3Jlc3MtYmFyXCI+IDwvc3Bhbj4gXFxcclxuICAgICAgICAgICAgICAgPHNwYW4gdi1pZj1cIm1vZGVsLmVycm9yTWVzc2FnZVwiIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiIDp0aXRsZT1cIm1vZGVsLmVycm9yTWVzc2FnZVwiPiBFcnJvcjoge3sgbW9kZWwuZXJyb3JNZXNzYWdlIH19IDwvc3Bhbj4gXFxcclxuICAgICAgICAgICAgPC9kaXY+IFxcXHJcbiAgICAgICAgPC9kaXY+IFxcXHJcbiAgICAgICAgJyxcclxuICAgIHByb3BzOiB7XHJcbiAgICAgICAgbW9kZWw6IE9iamVjdFxyXG4gICAgfSxcclxuICAgIG1vdW50ZWQ6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB2YXIgc2VsZiA9IHRoaXM7XHJcbiAgICAgICAgJCgnI2ZpbGV1cGxvYWQnKS5iaW5kKCdmaWxldXBsb2FkcHJvZ3Jlc3MnLCBmdW5jdGlvbiAoZSwgZGF0YSkge1xyXG4gICAgICAgICAgICBpZiAoZGF0YS5maWxlc1swXS5uYW1lICE9PSBzZWxmLm1vZGVsLm5hbWUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfSAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBzZWxmLm1vZGVsLnBlcmNlbnRhZ2UgPSBwYXJzZUludChkYXRhLmxvYWRlZCAvIGRhdGEudG90YWwgKiAxMDAsIDEwKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgJCgnI2ZpbGV1cGxvYWQnKS5iaW5kKCdmaWxldXBsb2FkZG9uZScsIGZ1bmN0aW9uIChlLCBkYXRhKSB7XHJcbiAgICAgICAgICAgIGlmIChkYXRhLmZpbGVzWzBdLm5hbWUgIT09IHNlbGYubW9kZWwubmFtZSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChkYXRhLnJlc3VsdC5maWxlc1swXS5lcnJvcikge1xyXG4gICAgICAgICAgICAgICAgc2VsZi5oYW5kbGVGYWlsdXJlKGRhdGEuZmlsZXNbMF0ubmFtZSwgZGF0YS5yZXN1bHQuZmlsZXNbMF0uZXJyb3IpO1xyXG4gICAgICAgICAgICB9IGVsc2UgeyAgXHJcbiAgICAgICAgICAgICAgICBidXMuJGVtaXQoJ3JlbW92YWxSZXF1ZXN0Jywgc2VsZi5tb2RlbCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgJCgnI2ZpbGV1cGxvYWQnKS5iaW5kKCdmaWxldXBsb2FkZmFpbCcsIGZ1bmN0aW9uIChlLCBkYXRhKSB7XHJcbiAgICAgICAgICAgIGlmIChkYXRhLmZpbGVzWzBdLm5hbWUgIT09IHNlbGYubW9kZWwubmFtZSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHNlbGYuaGFuZGxlRmFpbHVyZShkYXRhLmZpbGVzWzBdLm5hbWUgLCBkYXRhLnRleHRTdGF0dXMpOyAgICAgICAgICAgIFxyXG4gICAgICAgIH0pO1xyXG4gICAgfSxcclxuICAgIG1ldGhvZHM6IHtcclxuICAgICAgICBoYW5kbGVGYWlsdXJlOiBmdW5jdGlvbiAoZmlsZU5hbWUsIG1lc3NhZ2UpIHtcclxuICAgICAgICAgICAgaWYgKGZpbGVOYW1lICE9PSB0aGlzLm1vZGVsLm5hbWUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLm1vZGVsLmVycm9yTWVzc2FnZSA9IG1lc3NhZ2U7XHJcbiAgICAgICAgICAgIGJ1cy4kZW1pdCgnRXJyb3JPblVwbG9hZCcsIHRoaXMubW9kZWwpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZGlzbWlzc1dhcm5pbmc6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgYnVzLiRlbWl0KCdyZW1vdmFsUmVxdWVzdCcsIHRoaXMubW9kZWwpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufSk7XHJcbiIsIi8vIDx1cGxvYWQtbGlzdD4gY29tcG9uZW50XHJcblZ1ZS5jb21wb25lbnQoJ3VwbG9hZExpc3QnLCB7XHJcbiAgICB0ZW1wbGF0ZTogJ1xcXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInVwbG9hZC1saXN0XCIgdi1zaG93PVwiZmlsZXMubGVuZ3RoID4gMFwiPiBcXFxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyXCIgQGNsaWNrPVwiZXhwYW5kZWQgPSAhZXhwYW5kZWRcIj4gXFxcclxuICAgICAgICAgICAgICAgIDxzcGFuPiB7eyBULnVwbG9hZHMgfX0gPC9zcGFuPiBcXFxyXG4gICAgICAgICAgICAgICAgPHNwYW4gdi1zaG93PVwicGVuZGluZ0NvdW50XCI+IChQZW5kaW5nOiB7eyBwZW5kaW5nQ291bnQgfX0pIDwvc3Bhbj4gXFxcclxuICAgICAgICAgICAgICAgIDxzcGFuIHYtc2hvdz1cImVycm9yQ291bnRcIiA6Y2xhc3M9XCJ7IFxcJ3RleHQtZGFuZ2VyXFwnIDogZXJyb3JDb3VudCB9XCI+ICgge3sgVC5lcnJvcnMgfX06IHt7IGVycm9yQ291bnQgfX0gLyA8YSBocmVmPVwiamF2YXNjcmlwdDo7XCIgdi1vbjpjbGljay5zdG9wPVwiY2xlYXJFcnJvcnNcIiA+IHt7IFQuY2xlYXJFcnJvcnMgfX0gPC9hPik8L3NwYW4+IFxcXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRvZ2dsZS1idXR0b25cIj4gXFxcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHYtc2hvdz1cImV4cGFuZGVkXCI+IFxcXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtY2hldnJvbi1kb3duXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPiBcXFxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PiBcXFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgdi1zaG93PVwiIWV4cGFuZGVkXCI+IFxcXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtY2hldnJvbi11cFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT4gXFxcclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gXFxcclxuICAgICAgICAgICAgICAgIDwvZGl2PiBcXFxyXG4gICAgICAgICAgICA8L2Rpdj4gXFxcclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keVwiIHYtc2hvdz1cImV4cGFuZGVkXCI+IFxcXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtd3JhcFwiPiBcXFxyXG4gICAgICAgICAgICAgICAgICAgIDx1cGxvYWQgdi1mb3I9XCJmIGluIGZpbGVzXCIgOmtleT1cImYubmFtZVwiICA6bW9kZWw9XCJmXCI+PC91cGxvYWQ+IFxcXHJcbiAgICAgICAgICAgICAgICA8L2RpdiA+IFxcXHJcbiAgICAgICAgICAgIDwvZGl2PiBcXFxyXG4gICAgICAgIDwvZGl2PiBcXFxyXG4gICAgICAgICcsXHJcbiAgICBkYXRhOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgZmlsZXM6IFtdLFxyXG4gICAgICAgICAgICBUOiB7fSxcclxuICAgICAgICAgICAgZXhwYW5kZWQ6IGZhbHNlLFxyXG4gICAgICAgICAgICBwZW5kaW5nQ291bnQ6IDAsXHJcbiAgICAgICAgICAgIGVycm9yQ291bnQ6IDBcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgY3JlYXRlZDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHZhciBzZWxmID0gdGhpcztcclxuICAgICAgICAvLyByZXRyaWV2aW5nIGxvY2FsaXplZCBzdHJpbmdzIGZyb20gdmlld1xyXG4gICAgICAgIHNlbGYuVC51cGxvYWRzID0gJCgnI3QtdXBsb2FkcycpLnZhbCgpO1xyXG4gICAgICAgIHNlbGYuVC5lcnJvcnMgPSAkKCcjdC1lcnJvcnMnKS52YWwoKTtcclxuICAgICAgICBzZWxmLlQuY2xlYXJFcnJvcnMgPSAkKCcjdC1jbGVhci1lcnJvcnMnKS52YWwoKTtcclxuICAgIH0sXHJcbiAgICBjb21wdXRlZDoge1xyXG4gICAgICAgIGZpbGVDb3VudDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5maWxlcy5sZW5ndGg7XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuICAgIG1vdW50ZWQ6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB2YXIgc2VsZiA9IHRoaXM7XHJcblxyXG4gICAgICAgICQoJyNmaWxldXBsb2FkJykuYmluZCgnZmlsZXVwbG9hZGFkZCcsIGZ1bmN0aW9uIChlLCBkYXRhKSB7XHJcbiAgICAgICAgICAgIGlmICghZGF0YS5maWxlcykgeyBcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBkYXRhLmZpbGVzLmZvckVhY2goZnVuY3Rpb24gKG5ld0ZpbGUpIHsgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB2YXIgYWxyZWFkeUluTGlzdCA9IHNlbGYuZmlsZXMuc29tZShmdW5jdGlvbiAoZikge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmLm5hbWUgPT0gbmV3RmlsZS5uYW1lO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKCFhbHJlYWR5SW5MaXN0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5maWxlcy5wdXNoKHsgbmFtZTogbmV3RmlsZS5uYW1lLCBwZXJjZW50YWdlOiAwLCBlcnJvck1lc3NhZ2U6ICcnIH0pO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdBIGZpbGUgd2l0aCB0aGUgc2FtZSBuYW1lIGlzIGFscmVhZHkgb24gdGhlIHF1ZXVlOicgKyBuZXdGaWxlLm5hbWUpO1xyXG4gICAgICAgICAgICAgICAgfSAgICAgICAgIFxyXG4gICAgICAgICAgICB9KTsgICAgICAgICAgICBcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgYnVzLiRvbigncmVtb3ZhbFJlcXVlc3QnLCBmdW5jdGlvbiAoZmlsZVVwbG9hZCkge1xyXG4gICAgICAgICAgICBzZWxmLmZpbGVzLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0sIGluZGV4LCBhcnJheSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0ubmFtZSA9PSBmaWxlVXBsb2FkLm5hbWUpIHtcclxuICAgICAgICAgICAgICAgICAgICBhcnJheS5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgYnVzLiRvbignRXJyb3JPblVwbG9hZCcsIGZ1bmN0aW9uIChmaWxlVXBsb2FkKSB7XHJcbiAgICAgICAgICAgIHNlbGYudXBkYXRlQ291bnQoKTtcclxuICAgICAgICB9KTtcclxuICAgIH0sXHJcbiAgICBtZXRob2RzOiB7XHJcbiAgICAgICAgdXBkYXRlQ291bnQ6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgdGhpcy5lcnJvckNvdW50ID0gdGhpcy5maWxlcy5maWx0ZXIoZnVuY3Rpb24gKGl0ZW0pIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBpdGVtLmVycm9yTWVzc2FnZSAhPSAnJztcclxuICAgICAgICAgICAgfSkubGVuZ3RoO1xyXG4gICAgICAgICAgICB0aGlzLnBlbmRpbmdDb3VudCA9IHRoaXMuZmlsZXMubGVuZ3RoIC0gdGhpcy5lcnJvckNvdW50O1xyXG4gICAgICAgICAgICBpZiAodGhpcy5maWxlcy5sZW5ndGggPCAxKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmV4cGFuZGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGNsZWFyRXJyb3JzOiBmdW5jdGlvbiAoKSB7ICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIHRoaXMuZmlsZXMgPSB0aGlzLmZpbGVzLmZpbHRlcihmdW5jdGlvbiAoaXRlbSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW0uZXJyb3JNZXNzYWdlID09ICcnO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgd2F0Y2g6IHtcclxuICAgICAgICBmaWxlczogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUNvdW50KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59KTtcclxuIl19 +//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImpxdWVyeS5maWxldXBsb2FkLmpzIiwianF1ZXJ5LmlmcmFtZS10cmFuc3BvcnQuanMiLCJNZWRpYUFwcC9hcHAuanMiLCJNZWRpYUFwcC9maWxldXBsb2FkLmpzIiwiTWVkaWFBcHAvZm9sZGVyQ29tcG9uZW50LmpzIiwiTWVkaWFBcHAvbWVkaWFJdGVtc0dyaWRDb21wb25lbnQuanMiLCJNZWRpYUFwcC9tZWRpYUl0ZW1zVGFibGVDb21wb25lbnQuanMiLCJNZWRpYUFwcC9wYWdlckNvbXBvbmVudC5qcyIsIk1lZGlhQXBwL3NvcnRJbmRpY2F0b3JDb21wb25lbnQuanMiLCJNZWRpYUZpZWxkL2F0dGFjaGVkTWVkaWFGaWVsZC5qcyIsIk1lZGlhRmllbGQvbWVkaWFmaWVsZC5qcyIsIk1lZGlhRmllbGQvbWVkaWFmaWVsZHNBcHBzQXJyYXkuanMiLCJNZWRpYUZpZWxkL21lZGlhRmllbGRUaHVtYnNDb250YWluZXIuanMiLCJTaGFyZWQvdXBsb2FkQ29tcG9uZW50LmpzIiwiU2hhcmVkL3VwbG9hZExpc3RDb21wb25lbnQuanMiXSwibmFtZXMiOlsiZmFjdG9yeSIsImRlZmluZSIsImFtZCIsImV4cG9ydHMiLCJyZXF1aXJlIiwid2luZG93IiwialF1ZXJ5IiwiJCIsInN1cHBvcnQiLCJmaWxlSW5wdXQiLCJSZWdFeHAiLCJ0ZXN0IiwibmF2aWdhdG9yIiwidXNlckFnZW50IiwicHJvcCIsInhockZpbGVVcGxvYWQiLCJQcm9ncmVzc0V2ZW50IiwiRmlsZVJlYWRlciIsInhockZvcm1EYXRhRmlsZVVwbG9hZCIsIkZvcm1EYXRhIiwiYmxvYlNsaWNlIiwiQmxvYiIsInByb3RvdHlwZSIsInNsaWNlIiwid2Via2l0U2xpY2UiLCJtb3pTbGljZSIsImdldERyYWdIYW5kbGVyIiwidHlwZSIsImlzRHJhZ092ZXIiLCJlIiwiZGF0YVRyYW5zZmVyIiwib3JpZ2luYWxFdmVudCIsImluQXJyYXkiLCJ0eXBlcyIsIl90cmlnZ2VyIiwiRXZlbnQiLCJkZWxlZ2F0ZWRFdmVudCIsInByZXZlbnREZWZhdWx0IiwiZHJvcEVmZmVjdCIsIndpZGdldCIsIm9wdGlvbnMiLCJkcm9wWm9uZSIsImRvY3VtZW50IiwicGFzdGVab25lIiwidW5kZWZpbmVkIiwicmVwbGFjZUZpbGVJbnB1dCIsInBhcmFtTmFtZSIsInNpbmdsZUZpbGVVcGxvYWRzIiwibGltaXRNdWx0aUZpbGVVcGxvYWRzIiwibGltaXRNdWx0aUZpbGVVcGxvYWRTaXplIiwibGltaXRNdWx0aUZpbGVVcGxvYWRTaXplT3ZlcmhlYWQiLCJzZXF1ZW50aWFsVXBsb2FkcyIsImxpbWl0Q29uY3VycmVudFVwbG9hZHMiLCJmb3JjZUlmcmFtZVRyYW5zcG9ydCIsInJlZGlyZWN0IiwicmVkaXJlY3RQYXJhbU5hbWUiLCJwb3N0TWVzc2FnZSIsIm11bHRpcGFydCIsIm1heENodW5rU2l6ZSIsInVwbG9hZGVkQnl0ZXMiLCJyZWNhbGN1bGF0ZVByb2dyZXNzIiwicHJvZ3Jlc3NJbnRlcnZhbCIsImJpdHJhdGVJbnRlcnZhbCIsImF1dG9VcGxvYWQiLCJ1bmlxdWVGaWxlbmFtZXMiLCJtZXNzYWdlcyIsImkxOG4iLCJtZXNzYWdlIiwiY29udGV4dCIsInRvU3RyaW5nIiwiZWFjaCIsImtleSIsInZhbHVlIiwicmVwbGFjZSIsImZvcm1EYXRhIiwiZm9ybSIsInNlcmlhbGl6ZUFycmF5IiwiYWRkIiwiZGF0YSIsImlzRGVmYXVsdFByZXZlbnRlZCIsImZpbGV1cGxvYWQiLCJwcm9jZXNzIiwiZG9uZSIsInN1Ym1pdCIsInByb2Nlc3NEYXRhIiwiY29udGVudFR5cGUiLCJjYWNoZSIsInRpbWVvdXQiLCJfcHJvbWlzZVBpcGUiLCJwYXJ0cyIsImZuIiwianF1ZXJ5Iiwic3BsaXQiLCJOdW1iZXIiLCJfc3BlY2lhbE9wdGlvbnMiLCJfYmxvYlNsaWNlIiwiYXBwbHkiLCJhcmd1bWVudHMiLCJfQml0cmF0ZVRpbWVyIiwidGltZXN0YW1wIiwiRGF0ZSIsIm5vdyIsImdldFRpbWUiLCJsb2FkZWQiLCJiaXRyYXRlIiwiZ2V0Qml0cmF0ZSIsImludGVydmFsIiwidGltZURpZmYiLCJfaXNYSFJVcGxvYWQiLCJfZ2V0Rm9ybURhdGEiLCJpc0FycmF5IiwibmFtZSIsInB1c2giLCJfZ2V0VG90YWwiLCJmaWxlcyIsInRvdGFsIiwiaW5kZXgiLCJmaWxlIiwic2l6ZSIsIl9pbml0UHJvZ3Jlc3NPYmplY3QiLCJvYmoiLCJwcm9ncmVzcyIsIl9wcm9ncmVzcyIsImV4dGVuZCIsIl9pbml0UmVzcG9uc2VPYmplY3QiLCJfcmVzcG9uc2UiLCJPYmplY3QiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJfb25Qcm9ncmVzcyIsImxlbmd0aENvbXB1dGFibGUiLCJfdGltZSIsIk1hdGgiLCJmbG9vciIsImNodW5rU2l6ZSIsIl9iaXRyYXRlVGltZXIiLCJfaW5pdFByb2dyZXNzTGlzdGVuZXIiLCJ0aGF0IiwieGhyIiwiYWpheFNldHRpbmdzIiwidXBsb2FkIiwib24iLCJvZSIsIl9kZWluaXRQcm9ncmVzc0xpc3RlbmVyIiwib2ZmIiwiX2lzSW5zdGFuY2VPZiIsIl9nZXRVbmlxdWVGaWxlbmFtZSIsIm1hcCIsIlN0cmluZyIsIl8iLCJwMSIsInAyIiwiZXh0IiwiX2luaXRYSFJEYXRhIiwiaGVhZGVycyIsImNvbnRlbnRSYW5nZSIsImJsb2IiLCJlbmNvZGVVUkkiLCJ1cGxvYWROYW1lIiwiZmllbGQiLCJhcHBlbmQiLCJmaWxlTmFtZSIsIl9pbml0SWZyYW1lU2V0dGluZ3MiLCJ0YXJnZXRIb3N0IiwidXJsIiwiZGF0YVR5cGUiLCJsb2NhdGlvbiIsImhvc3QiLCJfaW5pdERhdGFTZXR0aW5ncyIsIl9jaHVua2VkVXBsb2FkIiwiX2dldFBhcmFtTmFtZSIsImlucHV0IiwiaSIsImxlbmd0aCIsIl9pbml0Rm9ybVNldHRpbmdzIiwiaHJlZiIsInRvVXBwZXJDYXNlIiwiZm9ybUFjY2VwdENoYXJzZXQiLCJhdHRyIiwiX2dldEFKQVhTZXR0aW5ncyIsIl9nZXREZWZlcnJlZFN0YXRlIiwiZGVmZXJyZWQiLCJzdGF0ZSIsImlzUmVzb2x2ZWQiLCJpc1JlamVjdGVkIiwiX2VuaGFuY2VQcm9taXNlIiwicHJvbWlzZSIsInN1Y2Nlc3MiLCJlcnJvciIsImZhaWwiLCJjb21wbGV0ZSIsImFsd2F5cyIsIl9nZXRYSFJQcm9taXNlIiwicmVzb2x2ZU9yUmVqZWN0IiwiYXJncyIsImRmZCIsIkRlZmVycmVkIiwicmVzb2x2ZVdpdGgiLCJyZWplY3RXaXRoIiwiYWJvcnQiLCJfYWRkQ29udmVuaWVuY2VNZXRob2RzIiwiZ2V0UHJvbWlzZSIsInJlc29sdmVGdW5jIiwicmVqZWN0RnVuYyIsIl9wcm9jZXNzUXVldWUiLCJlcnJvclRocm93biIsImpxWEhSIiwiX29uU2VuZCIsInByb2Nlc3NpbmciLCJyZXNwb25zZSIsIl9nZXRVcGxvYWRlZEJ5dGVzIiwicmFuZ2UiLCJnZXRSZXNwb25zZUhlYWRlciIsInVwcGVyQnl0ZXNQb3MiLCJwYXJzZUludCIsInRlc3RPbmx5IiwiZnMiLCJ1YiIsIm1jcyIsIm8iLCJjdXJyZW50TG9hZGVkIiwiYWpheCIsInJlc3VsdCIsInRleHRTdGF0dXMiLCJfYmVmb3JlU2VuZCIsIl9hY3RpdmUiLCJfb25Eb25lIiwiX29uRmFpbCIsIl9vbkFsd2F5cyIsImpxWEhSb3JSZXN1bHQiLCJqcVhIUm9yRXJyb3IiLCJhYm9ydGVkIiwic2xvdCIsInBpcGUiLCJzZW5kIiwiX3NlbmRpbmciLCJuZXh0U2xvdCIsIl9zbG90cyIsInNoaWZ0IiwicmVzb2x2ZSIsIl9zZXF1ZW5jZSIsIl9vbkFkZCIsImZpbGVzTGVuZ3RoIiwibGltaXQiLCJsaW1pdFNpemUiLCJvdmVyaGVhZCIsImJhdGNoU2l6ZSIsInBhcmFtTmFtZVNldCIsInBhcmFtTmFtZVNsaWNlIiwiZmlsZVNldCIsImoiLCJvcmlnaW5hbEZpbGVzIiwiZWxlbWVudCIsIm5ld0RhdGEiLCJfcmVwbGFjZUZpbGVJbnB1dCIsImlucHV0Q2xvbmUiLCJjbG9uZSIsInJlc3RvcmVGb2N1cyIsImlzIiwiYWN0aXZlRWxlbWVudCIsImZpbGVJbnB1dENsb25lIiwicmVzZXQiLCJhZnRlciIsImRldGFjaCIsInRyaWdnZXIiLCJjbGVhbkRhdGEiLCJlbCIsIl9oYW5kbGVGaWxlVHJlZUVudHJ5IiwiZW50cnkiLCJwYXRoIiwiZW50cmllcyIsImRpclJlYWRlciIsImVycm9ySGFuZGxlciIsInN1Y2Nlc3NIYW5kbGVyIiwiX2hhbmRsZUZpbGVUcmVlRW50cmllcyIsInJlYWRFbnRyaWVzIiwicmVzdWx0cyIsImNvbmNhdCIsImlzRmlsZSIsIl9maWxlIiwicmVsYXRpdmVQYXRoIiwiaXNEaXJlY3RvcnkiLCJjcmVhdGVSZWFkZXIiLCJ3aGVuIiwiQXJyYXkiLCJfZ2V0RHJvcHBlZEZpbGVzIiwiaXRlbXMiLCJ3ZWJraXRHZXRBc0VudHJ5IiwiZ2V0QXNFbnRyeSIsIml0ZW0iLCJnZXRBc0ZpbGUiLCJtYWtlQXJyYXkiLCJfZ2V0U2luZ2xlRmlsZUlucHV0RmlsZXMiLCJmaWxlU2l6ZSIsIl9nZXRGaWxlSW5wdXRGaWxlcyIsIl9vbkNoYW5nZSIsInRhcmdldCIsIl9vblBhc3RlIiwiY2xpcGJvYXJkRGF0YSIsIl9vbkRyb3AiLCJfb25EcmFnT3ZlciIsIl9vbkRyYWdFbnRlciIsIl9vbkRyYWdMZWF2ZSIsIl9pbml0RXZlbnRIYW5kbGVycyIsIl9vbiIsImRyYWdvdmVyIiwiZHJvcCIsImRyYWdlbnRlciIsImRyYWdsZWF2ZSIsInBhc3RlIiwiY2hhbmdlIiwiX2Rlc3Ryb3lFdmVudEhhbmRsZXJzIiwiX29mZiIsIl9kZXN0cm95IiwiX3NldE9wdGlvbiIsInJlaW5pdCIsIl9zdXBlciIsIl9pbml0U3BlY2lhbE9wdGlvbnMiLCJmaW5kIiwiX2dldFJlZ0V4cCIsInN0ciIsIm1vZGlmaWVycyIsInBvcCIsImpvaW4iLCJfaXNSZWdFeHBPcHRpb24iLCJfaW5pdERhdGFBdHRyaWJ1dGVzIiwiYXR0cmlidXRlcyIsInRvTG93ZXJDYXNlIiwiY2hhckF0IiwiX2NyZWF0ZSIsImFjdGl2ZSIsImRpc2FibGVkIiwicmVqZWN0IiwidGhlbiIsImNvdW50ZXIiLCJqc29uQVBJIiwianNvblBhcnNlIiwiSlNPTiIsImFqYXhUcmFuc3BvcnQiLCJhc3luYyIsImluaXRpYWxJZnJhbWVTcmMiLCJpZnJhbWUiLCJhZGRQYXJhbUNoYXIiLCJjb21wbGV0ZUNhbGxiYWNrIiwiZmlsZUlucHV0Q2xvbmVzIiwicGFyYW1OYW1lcyIsImNvbnRlbnRzIiwiZmlyc3RDaGlsZCIsIkVycm9yIiwiYXBwZW5kVG8iLCJzZXRUaW1lb3V0IiwicmVtb3ZlIiwidmFsIiwicmVtb3ZlQXR0ciIsInJlcGxhY2VXaXRoIiwiYm9keSIsImFqYXhTZXR1cCIsImNvbnZlcnRlcnMiLCJ0ZXh0IiwiaHRtbCIsInhtbERvYyIsImlzWE1MRG9jIiwicGFyc2VYTUwiLCJYTUxEb2N1bWVudCIsInhtbCIsImdsb2JhbEV2YWwiLCJpbml0aWFsaXplZCIsIm1lZGlhQXBwIiwiYnVzIiwiVnVlIiwiaW5pdGlhbGl6ZU1lZGlhQXBwbGljYXRpb24iLCJkaXNwbGF5TWVkaWFBcHBsaWNhdGlvbiIsIm1lZGlhQXBwbGljYXRpb25VcmwiLCJwYXRoQmFzZSIsImNvbnNvbGUiLCJtZXRob2QiLCJjb250ZW50Iiwicm9vdCIsImZvbGRlciIsInNlbGVjdGVkRm9sZGVyIiwibWVkaWFJdGVtcyIsInNlbGVjdGVkTWVkaWFzIiwiZXJyb3JzIiwiZHJhZ0Ryb3BUaHVtYm5haWwiLCJJbWFnZSIsInNtYWxsVGh1bWJzIiwiZ3JpZFZpZXciLCJtZWRpYUZpbHRlciIsInNvcnRCeSIsInNvcnRBc2MiLCJpdGVtc0luUGFnZSIsImNyZWF0ZWQiLCJzZWxmIiwic3JjIiwiJG9uIiwic2VsZWN0Um9vdCIsInNlbGVjdGVkIiwiZXJyb3JJbmZvIiwibG9hZEZvbGRlciIsIm5ld05hbWUiLCJuZXdQYXRoIiwib2xkUGF0aCIsIm1lZGlhIiwiZmlsdGVyIiwibWVkaWFQYXRoIiwiY3JlYXRlRm9sZGVyIiwiZGVsZXRlRm9sZGVyIiwibmV3U29ydCIsImNoYW5nZVNvcnQiLCJ0b2dnbGVTZWxlY3Rpb25PZk1lZGlhIiwicmVuYW1lTWVkaWEiLCJkZWxldGVNZWRpYUl0ZW0iLCJoYW5kbGVEcmFnU3RhcnQiLCJsb2NhbFN0b3JhZ2UiLCJnZXRJdGVtIiwiY3VycmVudFByZWZzIiwicGFyc2UiLCJjb21wdXRlZCIsImlzSG9tZSIsInBhcmVudHMiLCJwIiwicGFyZW50Rm9sZGVyIiwidW5zaGlmdCIsInBhcmVudCIsImZpbHRlcmVkTWVkaWFJdGVtcyIsImZpbHRlcmVkIiwiaW5kZXhPZiIsInNvcnQiLCJhIiwiYiIsIm1pbWUiLCJsb2NhbGVDb21wYXJlIiwibGFzdE1vZGlmeSIsImhpZGRlbkNvdW50IiwidGh1bWJTaXplIiwiZ2V0Iiwic2V0IiwibmV3UHJlZnMiLCJ3YXRjaCIsInNldEl0ZW0iLCJzdHJpbmdpZnkiLCJuZXdGb2xkZXIiLCJtb3VudGVkIiwiJHJlZnMiLCJyb290Rm9sZGVyIiwidG9nZ2xlIiwibWV0aG9kcyIsInVwbG9hZFVybCIsImVuY29kZVVSSUNvbXBvbmVudCIsImZvckVhY2giLCJvcGVuIiwibG9nIiwic2VsZWN0QWxsIiwidW5TZWxlY3RBbGwiLCJpbnZlcnRTZWxlY3Rpb24iLCJ0ZW1wIiwiaXNNZWRpYVNlbGVjdGVkIiwic3BsaWNlIiwic29tZSIsImFycmF5IiwibW9kZWwiLCJjb25maXJtRGlhbG9nIiwiY2FsbGJhY2siLCJyZXNwIiwiX19SZXF1ZXN0VmVyaWZpY2F0aW9uVG9rZW4iLCIkZW1pdCIsInJlc3BvbnNlVGV4dCIsImVtcHR5IiwibW9kYWwiLCJmb2N1cyIsInNlbGVjdEFuZERlbGV0ZU1lZGlhIiwiZGVsZXRlTWVkaWEiLCJkZWxldGVNZWRpYUxpc3QiLCJtZWRpYUxpc3QiLCJwYXRocyIsIm1lZGlhTmFtZXMiLCJzZXREYXRhIiwic2V0RHJhZ0ltYWdlIiwiZWZmZWN0QWxsb3dlZCIsImhhbmRsZVNjcm9sbFdoaWxlRHJhZyIsImNsaWVudFkiLCJzY3JvbGxCeSIsImlubmVySGVpZ2h0Iiwia2V5cHJlc3MiLCJ3aGljaCIsImNsaWNrIiwiZXJyb3JNZXNzYWdlIiwib2xkTmFtZSIsImN1cnJlbnRGb2xkZXIiLCJnZXRFbGVtZW50QnlJZCIsInN0eWxlIiwiZGlzcGxheSIsImFudGlGb3JnZXJ5VG9rZW4iLCJiaW5kIiwiZHQiLCJjb250YWlucyIsImRyb3Bab25lVGltZW91dCIsImNsZWFyVGltZW91dCIsImFkZENsYXNzIiwiaG92ZXJlZERyb3Bab25lIiwiY2xvc2VzdCIsInJlbW92ZUNsYXNzIiwiY29tcG9uZW50IiwidGVtcGxhdGUiLCJkaXIiLCJwcm9wcyIsInNlbGVjdGVkSW5NZWRpYUFwcCIsImxldmVsIiwiY2hpbGRyZW4iLCJpc0hvdmVyZWQiLCJwYWRkaW5nIiwiaXNTZWxlY3RlZCIsImlzUm9vdCIsImlzQW5jZXN0b3JPZlNlbGVjdGVkRm9sZGVyIiwibG9hZENoaWxkcmVuIiwic2VsZWN0IiwiYyIsImVtdHB5IiwiaGFuZGxlRHJhZ092ZXIiLCJoYW5kbGVEcmFnTGVhdmUiLCJtb3ZlTWVkaWFUb0ZvbGRlciIsImdldERhdGEiLCJzb3VyY2VGb2xkZXIiLCJ0YXJnZXRGb2xkZXIiLCJhbGVydCIsIlQiLCJlZGl0QnV0dG9uIiwiZGVsZXRlQnV0dG9uIiwiYnVpbGRNZWRpYVVybCIsImRyYWdTdGFydCIsIkJvb2xlYW4iLCJpbWFnZUhlYWRlciIsIm5hbWVIZWFkZXIiLCJsYXN0TW9kaWZ5SGVhZGVyIiwic2l6ZUhlYWRlciIsInR5cGVIZWFkZXIiLCJ2aWV3QnV0dG9uIiwicHJpbnREYXRlVGltZSIsImRhdGVtaWxsaXMiLCJkIiwidG9Mb2NhbGVTdHJpbmciLCJzb3VyY2VJdGVtcyIsInBhZ2VTaXplIiwicGFnZVNpemVPcHRpb25zIiwiY3VycmVudCIsInBhZ2VyRmlyc3RCdXR0b24iLCJwYWdlclByZXZpb3VzQnV0dG9uIiwicGFnZXJOZXh0QnV0dG9uIiwicGFnZXJMYXN0QnV0dG9uIiwicGFnZXJQYWdlU2l6ZUxhYmVsIiwicGFnZXJQYWdlTGFiZWwiLCJwYWdlclRvdGFsTGFiZWwiLCJuZXh0IiwicHJldmlvdXMiLCJnb0ZpcnN0IiwiZ29MYXN0IiwidG90YWxQYWdlcyIsImdvVG8iLCJ0YXJnZXRQYWdlIiwicGFnZXMiLCJjZWlsIiwiaXNMYXN0UGFnZSIsImlzRmlyc3RQYWdlIiwiY2FuRG9OZXh0IiwiY2FuRG9QcmV2IiwiY2FuRG9GaXJzdCIsImNhbkRvTGFzdCIsIml0ZW1zSW5DdXJyZW50UGFnZSIsInN0YXJ0IiwiZW5kIiwicGFnZUxpbmtzIiwibGlua3MiLCJiZWZvcmVDdXJyZW50IiwiYmVmb3JlQmVmb3JlQ3VycmVudCIsImFmdGVyQ3VycmVudCIsImFmdGVyQWZ0ZXJDdXJyZW50IiwiY29sbmFtZSIsInNlbGVjdGVkY29sbmFtZSIsImFzYyIsImlzQWN0aXZlIiwiaW5pdGlhbGl6ZUF0dGFjaGVkTWVkaWFGaWVsZCIsImlkT2ZVcGxvYWRCdXR0b24iLCJ1cGxvYWRBY3Rpb24iLCJtZWRpYUl0ZW1VcmwiLCJhbGxvd011bHRpcGxlIiwiYWxsb3dNZWRpYVRleHQiLCJhbGxvd0FuY2hvcnMiLCJ0ZW1wVXBsb2FkRm9sZGVyIiwiaW5pdGlhbFBhdGhzIiwibWVkaWFGaWVsZEVkaXRvciIsImlkcHJlZml4IiwibWVkaWFGaWVsZEFwcCIsIm1lZGlhRmllbGRBcHBzIiwic2VsZWN0ZWRNZWRpYSIsImlkUHJlZml4IiwiYmFja3VwTWVkaWFUZXh0IiwiYmFja3VwQW5jaG9yIiwibWVkaWFQYXRocyIsIngiLCJpc1JlbW92ZWQiLCJpc05ldyIsIm1lZGlhVGV4dCIsImFuY2hvciIsInZhbHVlcyIsInNpZ25hbCIsInZ1ZWtleSIsInkiLCJyb3VuZCIsImNhbkFkZE1lZGlhIiwibm9uUmVtb3ZlZE1lZGlhSXRlbXMiLCJzZWxlY3RNZWRpYSIsInNlbGVjdG9yIiwiZWRpdG9ySWQiLCJjb3VudCIsImdldFVuaXF1ZUlkIiwibmV3TWVkaWFJdGVtcyIsImVycm9ybXNnIiwiciIsInJhbmRvbSIsInYiLCJyZW1vdmVTZWxlY3RlZCIsImV2ZW50IiwicmVtb3ZlZCIsInNob3dNZWRpYVRleHRNb2RhbCIsIm1lZGlhVGV4dE1vZGFsIiwiY2FuY2VsTWVkaWFUZXh0TW9kYWwiLCJzaG93QW5jaG9yTW9kYWwiLCJhbmNob3JpbmdNb2RhbCIsImNhbmNlbEFuY2hvcmluZ01vZGFsIiwicmVzZXRBbmNob3IiLCJvbkFuY2hvckRyb3AiLCJpbWFnZSIsImFuY2hvckltYWdlIiwib2Zmc2V0WCIsImNsaWVudFdpZHRoIiwib2Zmc2V0WSIsImNsaWVudEhlaWdodCIsImFuY2hvckxlZnQiLCJtb2RhbEJvZHkiLCJvZmZzZXQiLCJwb3NpdGlvbiIsImFuY2hvclRvcCIsInNldEFuY2hvciIsImFkZE1lZGlhRmlsZXMiLCJkZWVwIiwiaGFuZGxlciIsImluaXRpYWxpemVNZWRpYUZpZWxkIiwibW9kYWxCb2R5RWxlbWVudCIsInNob3dNb2RhbCIsInNob3ciLCJhbmNob3JJY29uIiwicXVlcnlTZWxlY3RvciIsImlzSW50ZWdlciIsIm1lZGlhTm90Rm91bmQiLCJkaXNjYXJkV2FybmluZyIsIm5vSW1hZ2VzIiwiJHBhcmVudCIsInBlcmNlbnRhZ2UiLCJoYW5kbGVGYWlsdXJlIiwiZGlzbWlzc1dhcm5pbmciLCJleHBhbmRlZCIsInBlbmRpbmdDb3VudCIsImVycm9yQ291bnQiLCJ1cGxvYWRzIiwiY2xlYXJFcnJvcnMiLCJmaWxlQ291bnQiLCJuZXdGaWxlIiwiYWxyZWFkeUluTGlzdCIsImYiLCJmaWxlVXBsb2FkIiwidXBkYXRlQ291bnQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFDQTtBQUVBLENBQUMsVUFBVUEsT0FBVixFQUFtQjtBQUNsQjs7QUFDQSxNQUFJLE9BQU9DLE1BQVAsS0FBa0IsVUFBbEIsSUFBZ0NBLE1BQU0sQ0FBQ0MsR0FBM0MsRUFBZ0Q7QUFDOUM7QUFDQUQsSUFBQUEsTUFBTSxDQUFDLENBQUMsUUFBRCxFQUFXLHFCQUFYLENBQUQsRUFBb0NELE9BQXBDLENBQU47QUFDRCxHQUhELE1BR08sSUFBSSxRQUFPRyxPQUFQLHlDQUFPQSxPQUFQLE9BQW1CLFFBQXZCLEVB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XG4gKiBodHRwczovL2dpdGh1Yi5jb20vYmx1ZWltcC9qUXVlcnktRmlsZS1VcGxvYWRcbiAqXG4gKiBDb3B5cmlnaHQgMjAxMCwgU2ViYXN0aWFuIFRzY2hhblxuICogaHR0cHM6Ly9ibHVlaW1wLm5ldFxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZTpcbiAqIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUXG4gKi9cblxuLyogZ2xvYmFsIGRlZmluZSwgcmVxdWlyZSAqL1xuLyogZXNsaW50LWRpc2FibGUgbmV3LWNhcCAqL1xuXG4oZnVuY3Rpb24gKGZhY3RvcnkpIHtcbiAgJ3VzZSBzdHJpY3QnO1xuICBpZiAodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKSB7XG4gICAgLy8gUmVnaXN0ZXIgYXMgYW4gYW5vbnltb3VzIEFNRCBtb2R1bGU6XG4gICAgZGVmaW5lKFsnanF1ZXJ5JywgJ2pxdWVyeS11aS91aS93aWRnZXQnXSwgZmFjdG9yeSk7XG4gIH0gZWxzZSBpZiAodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKSB7XG4gICAgLy8gTm9kZS9Db21tb25KUzpcbiAgICBmYWN0b3J5KHJlcXVpcmUoJ2pxdWVyeScpLCByZXF1aXJlKCcuL3ZlbmRvci9qcXVlcnkudWkud2lkZ2V0JykpO1xuICB9IGVsc2Uge1xuICAgIC8vIEJyb3dzZXIgZ2xvYmFsczpcbiAgICBmYWN0b3J5KHdpbmRvdy5qUXVlcnkpO1xuICB9XG59KShmdW5jdGlvbiAoJCkge1xuICAndXNlIHN0cmljdCc7XG5cbiAgLy8gRGV0ZWN0IGZpbGUgaW5wdXQgc3VwcG9ydCwgYmFzZWQgb25cbiAgLy8gaHR0cHM6Ly92aWxqYW1pcy5jb20vMjAxMi9maWxlLXVwbG9hZC1zdXBwb3J0LW9uLW1vYmlsZS9cbiAgJC5zdXBwb3J0LmZpbGVJbnB1dCA9ICEoXG4gICAgbmV3IFJlZ0V4cChcbiAgICAgIC8vIEhhbmRsZSBkZXZpY2VzIHdoaWNoIGdpdmUgZmFsc2UgcG9zaXRpdmVzIGZvciB0aGUgZmVhdHVyZSBkZXRlY3Rpb246XG4gICAgICAnKEFuZHJvaWQgKDFcXFxcLlswMTU2XXwyXFxcXC5bMDFdKSknICtcbiAgICAgICAgJ3woV2luZG93cyBQaG9uZSAoT1MgN3w4XFxcXC4wKSl8KFhCTFdQKXwoWnVuZVdQKXwoV1BEZXNrdG9wKScgK1xuICAgICAgICAnfCh3KGViKT9PU0Jyb3dzZXIpfCh3ZWJPUyknICtcbiAgICAgICAgJ3woS2luZGxlLygxXFxcXC4wfDJcXFxcLlswNV18M1xcXFwuMCkpJ1xuICAgICkudGVzdCh3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudCkgfHxcbiAgICAvLyBGZWF0dXJlIGRldGVjdGlvbiBmb3IgYWxsIG90aGVyIGRldmljZXM6XG4gICAgJCgnPGlucHV0IHR5cGU9XCJmaWxlXCIvPicpLnByb3AoJ2Rpc2FibGVkJylcbiAgKTtcblxuICAvLyBUaGUgRmlsZVJlYWRlciBBUEkgaXMgbm90IGFjdHVhbGx5IHVzZWQsIGJ1dCB3b3JrcyBhcyBmZWF0dXJlIGRldGVjdGlvbixcbiAgLy8gYXMgc29tZSBTYWZhcmkgdmVyc2lvbnMgKDU/KSBzdXBwb3J0IFhIUiBmaWxlIHVwbG9hZHMgdmlhIHRoZSBGb3JtRGF0YSBBUEksXG4gIC8vIGJ1dCBub3Qgbm9uLW11bHRpcGFydCBYSFIgZmlsZSB1cGxvYWRzLlxuICAvLyB3aW5kb3cuWE1MSHR0cFJlcXVlc3RVcGxvYWQgaXMgbm90IGF2YWlsYWJsZSBvbiBJRTEwLCBzbyB3ZSBjaGVjayBmb3JcbiAgLy8gd2luZG93LlByb2dyZXNzRXZlbnQgaW5zdGVhZCB0byBkZXRlY3QgWEhSMiBmaWxlIHVwbG9hZCBjYXBhYmlsaXR5OlxuICAkLnN1cHBvcnQueGhyRmlsZVVwbG9hZCA9ICEhKHdpbmRvdy5Qcm9ncmVzc0V2ZW50ICYmIHdpbmRvdy5GaWxlUmVhZGVyKTtcbiAgJC5zdXBwb3J0LnhockZvcm1EYXRhRmlsZVVwbG9hZCA9ICEhd2luZG93LkZvcm1EYXRhO1xuXG4gIC8vIERldGVjdCBzdXBwb3J0IGZvciBCbG9iIHNsaWNpbmcgKHJlcXVpcmVkIGZvciBjaHVua2VkIHVwbG9hZHMpOlxuICAkLnN1cHBvcnQuYmxvYlNsaWNlID1cbiAgICB3aW5kb3cuQmxvYiAmJlxuICAgIChCbG9iLnByb3RvdHlwZS5zbGljZSB8fFxuICAgICAgQmxvYi5wcm90b3R5cGUud2Via2l0U2xpY2UgfHxcbiAgICAgIEJsb2IucHJvdG90eXBlLm1velNsaWNlKTtcblxuICAvKipcbiAgICogSGVscGVyIGZ1bmN0aW9uIHRvIGNyZWF0ZSBkcmFnIGhhbmRsZXJzIGZvciBkcmFnb3Zlci9kcmFnZW50ZXIvZHJhZ2xlYXZlXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0eXBlIEV2ZW50IHR5cGVcbiAgICogQHJldHVybnMge0Z1bmN0aW9ufSBEcmFnIGhhbmRsZXJcbiAgICovXG4gIGZ1bmN0aW9uIGdldERyYWdIYW5kbGVyKHR5cGUpIHtcbiAgICB2YXIgaXNEcmFnT3ZlciA9IHR5cGUgPT09ICdkcmFnb3Zlcic7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChlKSB7XG4gICAgICBlLmRhdGFUcmFuc2ZlciA9IGUub3JpZ2luYWxFdmVudCAmJiBlLm9yaWdpbmFsRXZlbnQuZGF0YVRyYW5zZmVyO1xuICAgICAgdmFyIGRhdGFUcmFuc2ZlciA9IGUuZGF0YVRyYW5zZmVyO1xuICAgICAgaWYgKFxuICAgICAgICBkYXRhVHJhbnNmZXIgJiZcbiAgICAgICAgJC5pbkFycmF5KCdGaWxlcycsIGRhdGFUcmFuc2Zlci50eXBlcykgIT09IC0xICYmXG4gICAgICAgIHRoaXMuX3RyaWdnZXIodHlwZSwgJC5FdmVudCh0eXBlLCB7IGRlbGVnYXRlZEV2ZW50OiBlIH0pKSAhPT0gZmFsc2VcbiAgICAgICkge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGlmIChpc0RyYWdPdmVyKSB7XG4gICAgICAgICAgZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSAnY29weSc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgLy8gVGhlIGZpbGV1cGxvYWQgd2lkZ2V0IGxpc3RlbnMgZm9yIGNoYW5nZSBldmVudHMgb24gZmlsZSBpbnB1dCBmaWVsZHMgZGVmaW5lZFxuICAvLyB2aWEgZmlsZUlucHV0IHNldHRpbmcgYW5kIHBhc3RlIG9yIGRyb3AgZXZlbnRzIG9mIHRoZSBnaXZlbiBkcm9wWm9uZS5cbiAgLy8gSW4gYWRkaXRpb24gdG8gdGhlIGRlZmF1bHQgalF1ZXJ5IFdpZGdldCBtZXRob2RzLCB0aGUgZmlsZXVwbG9hZCB3aWRnZXRcbiAgLy8gZXhwb3NlcyB0aGUgXCJhZGRcIiBhbmQgXCJzZW5kXCIgbWV0aG9kcywgdG8gYWRkIG9yIGRpcmVjdGx5IHNlbmQgZmlsZXMgdXNpbmdcbiAgLy8gdGhlIGZpbGV1cGxvYWQgQVBJLlxuICAvLyBCeSBkZWZhdWx0LCBmaWxlcyBhZGRlZCB2aWEgZmlsZSBpbnB1dCBzZWxlY3Rpb24sIHBhc3RlLCBkcmFnICYgZHJvcCBvclxuICAvLyBcImFkZFwiIG1ldGhvZCBhcmUgdXBsb2FkZWQgaW1tZWRpYXRlbHksIGJ1dCBpdCBpcyBwb3NzaWJsZSB0byBvdmVycmlkZVxuICAvLyB0aGUgXCJhZGRcIiBjYWxsYmFjayBvcHRpb24gdG8gcXVldWUgZmlsZSB1cGxvYWRzLlxuICAkLndpZGdldCgnYmx1ZWltcC5maWxldXBsb2FkJywge1xuICAgIG9wdGlvbnM6IHtcbiAgICAgIC8vIFRoZSBkcm9wIHRhcmdldCBlbGVtZW50KHMpLCBieSB0aGUgZGVmYXVsdCB0aGUgY29tcGxldGUgZG9jdW1lbnQuXG4gICAgICAvLyBTZXQgdG8gbnVsbCB0byBkaXNhYmxlIGRyYWcgJiBkcm9wIHN1cHBvcnQ6XG4gICAgICBkcm9wWm9uZTogJChkb2N1bWVudCksXG4gICAgICAvLyBUaGUgcGFzdGUgdGFyZ2V0IGVsZW1lbnQocyksIGJ5IHRoZSBkZWZhdWx0IHVuZGVmaW5lZC5cbiAgICAgIC8vIFNldCB0byBhIERPTSBub2RlIG9yIGpRdWVyeSBvYmplY3QgdG8gZW5hYmxlIGZpbGUgcGFzdGluZzpcbiAgICAgIHBhc3RlWm9uZTogdW5kZWZpbmVkLFxuICAgICAgLy8gVGhlIGZpbGUgaW5wdXQgZmllbGQocyksIHRoYXQgYXJlIGxpc3RlbmVkIHRvIGZvciBjaGFuZ2UgZXZlbnRzLlxuICAgICAgLy8gSWYgdW5kZWZpbmVkLCBpdCBpcyBzZXQgdG8gdGhlIGZpbGUgaW5wdXQgZmllbGRzIGluc2lkZVxuICAgICAgLy8gb2YgdGhlIHdpZGdldCBlbGVtZW50IG9uIHBsdWdpbiBpbml0aWFsaXphdGlvbi5cbiAgICAgIC8vIFNldCB0byBudWxsIHRvIGRpc2FibGUgdGhlIGNoYW5nZSBsaXN0ZW5lci5cbiAgICAgIGZpbGVJbnB1dDogdW5kZWZpbmVkLFxuICAgICAgLy8gQnkgZGVmYXVsdCwgdGhlIGZpbGUgaW5wdXQgZmllbGQgaXMgcmVwbGFjZWQgd2l0aCBhIGNsb25lIGFmdGVyXG4gICAgICAvLyBlYWNoIGlucHV0IGZpZWxkIGNoYW5nZSBldmVudC4gVGhpcyBpcyByZXF1aXJlZCBmb3IgaWZyYW1lIHRyYW5zcG9ydFxuICAgICAgLy8gcXVldWVzIGFuZCBhbGxvd3MgY2hhbmdlIGV2ZW50cyB0byBiZSBmaXJlZCBmb3IgdGhlIHNhbWUgZmlsZVxuICAgICAgLy8gc2VsZWN0aW9uLCBidXQgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIGZvbGxvd2luZyBvcHRpb24gdG8gZmFsc2U6XG4gICAgICByZXBsYWNlRmlsZUlucHV0OiB0cnVlLFxuICAgICAgLy8gVGhlIHBhcmFtZXRlciBuYW1lIGZvciB0aGUgZmlsZSBmb3JtIGRhdGEgKHRoZSByZXF1ZXN0IGFyZ3VtZW50IG5hbWUpLlxuICAgICAgLy8gSWYgdW5kZWZpbmVkIG9yIGVtcHR5LCB0aGUgbmFtZSBwcm9wZXJ0eSBvZiB0aGUgZmlsZSBpbnB1dCBmaWVsZCBpc1xuICAgICAgLy8gdXNlZCwgb3IgXCJmaWxlc1tdXCIgaWYgdGhlIGZpbGUgaW5wdXQgbmFtZSBwcm9wZXJ0eSBpcyBhbHNvIGVtcHR5LFxuICAgICAgLy8gY2FuIGJlIGEgc3RyaW5nIG9yIGFuIGFycmF5IG9mIHN0cmluZ3M6XG4gICAgICBwYXJhbU5hbWU6IHVuZGVmaW5lZCxcbiAgICAgIC8vIEJ5IGRlZmF1bHQsIGVhY2ggZmlsZSBvZiBhIHNlbGVjdGlvbiBpcyB1cGxvYWRlZCB1c2luZyBhbiBpbmRpdmlkdWFsXG4gICAgICAvLyByZXF1ZXN0IGZvciBYSFIgdHlwZSB1cGxvYWRzLiBTZXQgdG8gZmFsc2UgdG8gdXBsb2FkIGZpbGVcbiAgICAgIC8vIHNlbGVjdGlvbnMgaW4gb25lIHJlcXVlc3QgZWFjaDpcbiAgICAgIHNpbmdsZUZpbGVVcGxvYWRzOiB0cnVlLFxuICAgICAgLy8gVG8gbGltaXQgdGhlIG51bWJlciBvZiBmaWxlcyB1cGxvYWRlZCB3aXRoIG9uZSBYSFIgcmVxdWVzdCxcbiAgICAgIC8vIHNldCB0aGUgZm9sbG93aW5nIG9wdGlvbiB0byBhbiBpbnRlZ2VyIGdyZWF0ZXIgdGhhbiAwOlxuICAgICAgbGltaXRNdWx0aUZpbGVVcGxvYWRzOiB1bmRlZmluZWQsXG4gICAgICAvLyBUaGUgZm9sbG93aW5nIG9wdGlvbiBsaW1pdHMgdGhlIG51bWJlciBvZiBmaWxlcyB1cGxvYWRlZCB3aXRoIG9uZVxuICAgICAgLy8gWEhSIHJlcXVlc3QgdG8ga2VlcCB0aGUgcmVxdWVzdCBzaXplIHVuZGVyIG9yIGVxdWFsIHRvIHRoZSBkZWZpbmVkXG4gICAgICAvLyBsaW1pdCBpbiBieXRlczpcbiAgICAgIGxpbWl0TXVsdGlGaWxlVXBsb2FkU2l6ZTogdW5kZWZpbmVkLFxuICAgICAgLy8gTXVsdGlwYXJ0IGZpbGUgdXBsb2FkcyBhZGQgYSBudW1iZXIgb2YgYnl0ZXMgdG8gZWFjaCB1cGxvYWRlZCBmaWxlLFxuICAgICAgLy8gdGhlcmVmb3JlIHRoZSBmb2xsb3dpbmcgb3B0aW9uIGFkZHMgYW4gb3ZlcmhlYWQgZm9yIGVhY2ggZmlsZSB1c2VkXG4gICAgICAvLyBpbiB0aGUgbGltaXRNdWx0aUZpbGVVcGxvYWRTaXplIGNvbmZpZ3VyYXRpb246XG4gICAgICBsaW1pdE11bHRpRmlsZVVwbG9hZFNpemVPdmVyaGVhZDogNTEyLFxuICAgICAgLy8gU2V0IHRoZSBmb2xsb3dpbmcgb3B0aW9uIHRvIHRydWUgdG8gaXNzdWUgYWxsIGZpbGUgdXBsb2FkIHJlcXVlc3RzXG4gICAgICAvLyBpbiBhIHNlcXVlbnRpYWwgb3JkZXI6XG4gICAgICBzZXF1ZW50aWFsVXBsb2FkczogZmFsc2UsXG4gICAgICAvLyBUbyBsaW1pdCB0aGUgbnVtYmVyIG9mIGNvbmN1cnJlbnQgdXBsb2FkcyxcbiAgICAgIC8vIHNldCB0aGUgZm9sbG93aW5nIG9wdGlvbiB0byBhbiBpbnRlZ2VyIGdyZWF0ZXIgdGhhbiAwOlxuICAgICAgbGltaXRDb25jdXJyZW50VXBsb2FkczogdW5kZWZpbmVkLFxuICAgICAgLy8gU2V0IHRoZSBmb2xsb3dpbmcgb3B0aW9uIHRvIHRydWUgdG8gZm9yY2UgaWZyYW1lIHRyYW5zcG9ydCB1cGxvYWRzOlxuICAgICAgZm9yY2VJZnJhbWVUcmFuc3BvcnQ6IGZhbHNlLFxuICAgICAgLy8gU2V0IHRoZSBmb2xsb3dpbmcgb3B0aW9uIHRvIHRoZSBsb2NhdGlvbiBvZiBhIHJlZGlyZWN0IHVybCBvbiB0aGVcbiAgICAgIC8vIG9yaWdpbiBzZXJ2ZXIsIGZvciBjcm9zcy1kb21haW4gaWZyYW1lIHRyYW5zcG9ydCB1cGxvYWRzOlxuICAgICAgcmVkaXJlY3Q6IHVuZGVmaW5lZCxcbiAgICAgIC8vIFRoZSBwYXJhbWV0ZXIgbmFtZSBmb3IgdGhlIHJlZGlyZWN0IHVybCwgc2VudCBhcyBwYXJ0IG9mIHRoZSBmb3JtXG4gICAgICAvLyBkYXRhIGFuZCBzZXQgdG8gJ3JlZGlyZWN0JyBpZiB0aGlzIG9wdGlvbiBpcyBlbXB0eTpcbiAgICAgIHJlZGlyZWN0UGFyYW1OYW1lOiB1bmRlZmluZWQsXG4gICAgICAvLyBTZXQgdGhlIGZvbGxvd2luZyBvcHRpb24gdG8gdGhlIGxvY2F0aW9uIG9mIGEgcG9zdE1lc3NhZ2Ugd2luZG93LFxuICAgICAgLy8gdG8gZW5hYmxlIHBvc3RNZXNzYWdlIHRyYW5zcG9ydCB1cGxvYWRzOlxuICAgICAgcG9zdE1lc3NhZ2U6IHVuZGVmaW5lZCxcbiAgICAgIC8vIEJ5IGRlZmF1bHQsIFhIUiBmaWxlIHVwbG9hZHMgYXJlIHNlbnQgYXMgbXVsdGlwYXJ0L2Zvcm0tZGF0YS5cbiAgICAgIC8vIFRoZSBpZnJhbWUgdHJhbnNwb3J0IGlzIGFsd2F5cyB1c2luZyBtdWx0aXBhcnQvZm9ybS1kYXRhLlxuICAgICAgLy8gU2V0IHRvIGZhbHNlIHRvIGVuYWJsZSBub24tbXVsdGlwYXJ0IFhIUiB1cGxvYWRzOlxuICAgICAgbXVsdGlwYXJ0OiB0cnVlLFxuICAgICAgLy8gVG8gdXBsb2FkIGxhcmdlIGZpbGVzIGluIHNtYWxsZXIgY2h1bmtzLCBzZXQgdGhlIGZvbGxvd2luZyBvcHRpb25cbiAgICAgIC8vIHRvIGEgcHJlZmVycmVkIG1heGltdW0gY2h1bmsgc2l6ZS4gSWYgc2V0IHRvIDAsIG51bGwgb3IgdW5kZWZpbmVkLFxuICAgICAgLy8gb3IgdGhlIGJyb3dzZXIgZG9lcyBub3Qgc3VwcG9ydCB0aGUgcmVxdWlyZWQgQmxvYiBBUEksIGZpbGVzIHdpbGxcbiAgICAgIC8vIGJlIHVwbG9hZGVkIGFzIGEgd2hvbGUuXG4gICAgICBtYXhDaHVua1NpemU6IHVuZGVmaW5lZCxcbiAgICAgIC8vIFdoZW4gYSBub24tbXVsdGlwYXJ0IHVwbG9hZCBvciBhIGNodW5rZWQgbXVsdGlwYXJ0IHVwbG9hZCBoYXMgYmVlblxuICAgICAgLy8gYWJvcnRlZCwgdGhpcyBvcHRpb24gY2FuIGJlIHVzZWQgdG8gcmVzdW1lIHRoZSB1cGxvYWQgYnkgc2V0dGluZ1xuICAgICAgLy8gaXQgdG8gdGhlIHNpemUgb2YgdGhlIGFscmVhZHkgdXBsb2FkZWQgYnl0ZXMuIFRoaXMgb3B0aW9uIGlzIG1vc3RcbiAgICAgIC8vIHVzZWZ1bCB3aGVuIG1vZGlmeWluZyB0aGUgb3B0aW9ucyBvYmplY3QgaW5zaWRlIG9mIHRoZSBcImFkZFwiIG9yXG4gICAgICAvLyBcInNlbmRcIiBjYWxsYmFja3MsIGFzIHRoZSBvcHRpb25zIGFyZSBjbG9uZWQgZm9yIGVhY2ggZmlsZSB1cGxvYWQuXG4gICAgICB1cGxvYWRlZEJ5dGVzOiB1bmRlZmluZWQsXG4gICAgICAvLyBCeSBkZWZhdWx0LCBmYWlsZWQgKGFib3J0IG9yIGVycm9yKSBmaWxlIHVwbG9hZHMgYXJlIHJlbW92ZWQgZnJvbSB0aGVcbiAgICAgIC8vIGdsb2JhbCBwcm9ncmVzcyBjYWxjdWxhdGlvbi4gU2V0IHRoZSBmb2xsb3dpbmcgb3B0aW9uIHRvIGZhbHNlIHRvXG4gICAgICAvLyBwcmV2ZW50IHJlY2FsY3VsYXRpbmcgdGhlIGdsb2JhbCBwcm9ncmVzcyBkYXRhOlxuICAgICAgcmVjYWxjdWxhdGVQcm9ncmVzczogdHJ1ZSxcbiAgICAgIC8vIEludGVydmFsIGluIG1pbGxpc2Vjb25kcyB0byBjYWxjdWxhdGUgYW5kIHRyaWdnZXIgcHJvZ3Jlc3MgZXZlbnRzOlxuICAgICAgcHJvZ3Jlc3NJbnRlcnZhbDogMTAwLFxuICAgICAgLy8gSW50ZXJ2YWwgaW4gbWlsbGlzZWNvbmRzIHRvIGNhbGN1bGF0ZSBwcm9ncmVzcyBiaXRyYXRlOlxuICAgICAgYml0cmF0ZUludGVydmFsOiA1MDAsXG4gICAgICAvLyBCeSBkZWZhdWx0LCB1cGxvYWRzIGFyZSBzdGFydGVkIGF1dG9tYXRpY2FsbHkgd2hlbiBhZGRpbmcgZmlsZXM6XG4gICAgICBhdXRvVXBsb2FkOiB0cnVlLFxuICAgICAgLy8gQnkgZGVmYXVsdCwgZHVwbGljYXRlIGZpbGUgbmFtZXMgYXJlIGV4cGVjdGVkIHRvIGJlIGhhbmRsZWQgb25cbiAgICAgIC8vIHRoZSBzZXJ2ZXItc2lkZS4gSWYgdGhpcyBpcyBub3QgcG9zc2libGUgKGUuZy4gd2hlbiB1cGxvYWRpbmdcbiAgICAgIC8vIGZpbGVzIGRpcmVjdGx5IHRvIEFtYXpvbiBTMyksIHRoZSBmb2xsb3dpbmcgb3B0aW9uIGNhbiBiZSBzZXQgdG9cbiAgICAgIC8vIGFuIGVtcHR5IG9iamVjdCBvciBhbiBvYmplY3QgbWFwcGluZyBleGlzdGluZyBmaWxlbmFtZXMsIGUuZy46XG4gICAgICAvLyB7IFwiaW1hZ2UuanBnXCI6IHRydWUsIFwiaW1hZ2UgKDEpLmpwZ1wiOiB0cnVlIH1cbiAgICAgIC8vIElmIGl0IGlzIHNldCwgYWxsIGZpbGVzIHdpbGwgYmUgdXBsb2FkZWQgd2l0aCB1bmlxdWUgZmlsZW5hbWVzLFxuICAgICAgLy8gYWRkaW5nIGluY3JlYXNpbmcgbnVtYmVyIHN1ZmZpeGVzIGlmIG5lY2Vzc2FyeSwgZS5nLjpcbiAgICAgIC8vIFwiaW1hZ2UgKDIpLmpwZ1wiXG4gICAgICB1bmlxdWVGaWxlbmFtZXM6IHVuZGVmaW5lZCxcblxuICAgICAgLy8gRXJyb3IgYW5kIGluZm8gbWVzc2FnZXM6XG4gICAgICBtZXNzYWdlczoge1xuICAgICAgICB1cGxvYWRlZEJ5dGVzOiAnVXBsb2FkZWQgYnl0ZXMgZXhjZWVkIGZpbGUgc2l6ZSdcbiAgICAgIH0sXG5cbiAgICAgIC8vIFRyYW5zbGF0aW9uIGZ1bmN0aW9uLCBnZXRzIHRoZSBtZXNzYWdlIGtleSB0byBiZSB0cmFuc2xhdGVkXG4gICAgICAvLyBhbmQgYW4gb2JqZWN0IHdpdGggY29udGV4dCBzcGVjaWZpYyBkYXRhIGFzIGFyZ3VtZW50czpcbiAgICAgIGkxOG46IGZ1bmN0aW9uIChtZXNzYWdlLCBjb250ZXh0KSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICAgICAgICBtZXNzYWdlID0gdGhpcy5tZXNzYWdlc1ttZXNzYWdlXSB8fCBtZXNzYWdlLnRvU3RyaW5nKCk7XG4gICAgICAgIGlmIChjb250ZXh0KSB7XG4gICAgICAgICAgJC5lYWNoKGNvbnRleHQsIGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgICAgICAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UoJ3snICsga2V5ICsgJ30nLCB2YWx1ZSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1lc3NhZ2U7XG4gICAgICB9LFxuXG4gICAgICAvLyBBZGRpdGlvbmFsIGZvcm0gZGF0YSB0byBiZSBzZW50IGFsb25nIHdpdGggdGhlIGZpbGUgdXBsb2FkcyBjYW4gYmUgc2V0XG4gICAgICAvLyB1c2luZyB0aGlzIG9wdGlvbiwgd2hpY2ggYWNjZXB0cyBhbiBhcnJheSBvZiBvYmplY3RzIHdpdGggbmFtZSBhbmRcbiAgICAgIC8vIHZhbHVlIHByb3BlcnRpZXMsIGEgZnVuY3Rpb24gcmV0dXJuaW5nIHN1Y2ggYW4gYXJyYXksIGEgRm9ybURhdGFcbiAgICAgIC8vIG9iamVjdCAoZm9yIFhIUiBmaWxlIHVwbG9hZHMpLCBvciBhIHNpbXBsZSBvYmplY3QuXG4gICAgICAvLyBUaGUgZm9ybSBvZiB0aGUgZmlyc3QgZmlsZUlucHV0IGlzIGdpdmVuIGFzIHBhcmFtZXRlciB0byB0aGUgZnVuY3Rpb246XG4gICAgICBmb3JtRGF0YTogZnVuY3Rpb24gKGZvcm0pIHtcbiAgICAgICAgcmV0dXJuIGZvcm0uc2VyaWFsaXplQXJyYXkoKTtcbiAgICAgIH0sXG5cbiAgICAgIC8vIFRoZSBhZGQgY2FsbGJhY2sgaXMgaW52b2tlZCBhcyBzb29uIGFzIGZpbGVzIGFyZSBhZGRlZCB0byB0aGUgZmlsZXVwbG9hZFxuICAgICAgLy8gd2lkZ2V0ICh2aWEgZmlsZSBpbnB1dCBzZWxlY3Rpb24sIGRyYWcgJiBkcm9wLCBwYXN0ZSBvciBhZGQgQVBJIGNhbGwpLlxuICAgICAgLy8gSWYgdGhlIHNpbmdsZUZpbGVVcGxvYWRzIG9wdGlvbiBpcyBlbmFibGVkLCB0aGlzIGNhbGxiYWNrIHdpbGwgYmVcbiAgICAgIC8vIGNhbGxlZCBvbmNlIGZvciBlYWNoIGZpbGUgaW4gdGhlIHNlbGVjdGlvbiBmb3IgWEhSIGZpbGUgdXBsb2FkcywgZWxzZVxuICAgICAgLy8gb25jZSBmb3IgZWFjaCBmaWxlIHNlbGVjdGlvbi5cbiAgICAgIC8vXG4gICAgICAvLyBUaGUgdXBsb2FkIHN0YXJ0cyB3aGVuIHRoZSBzdWJtaXQgbWV0aG9kIGlzIGludm9rZWQgb24gdGhlIGRhdGEgcGFyYW1ldGVyLlxuICAgICAgLy8gVGhlIGRhdGEgb2JqZWN0IGNvbnRhaW5zIGEgZmlsZXMgcHJvcGVydHkgaG9sZGluZyB0aGUgYWRkZWQgZmlsZXNcbiAgICAgIC8vIGFuZCBhbGxvd3MgeW91IHRvIG92ZXJyaWRlIHBsdWdpbiBvcHRpb25zIGFzIHdlbGwgYXMgZGVmaW5lIGFqYXggc2V0dGluZ3MuXG4gICAgICAvL1xuICAgICAgLy8gTGlzdGVuZXJzIGZvciB0aGlzIGNhbGxiYWNrIGNhbiBhbHNvIGJlIGJvdW5kIHRoZSBmb2xsb3dpbmcgd2F5OlxuICAgICAgLy8gLm9uKCdmaWxldXBsb2FkYWRkJywgZnVuYyk7XG4gICAgICAvL1xuICAgICAgLy8gZGF0YS5zdWJtaXQoKSByZXR1cm5zIGEgUHJvbWlzZSBvYmplY3QgYW5kIGFsbG93cyB0byBhdHRhY2ggYWRkaXRpb25hbFxuICAgICAgLy8gaGFuZGxlcnMgdXNpbmcgalF1ZXJ5J3MgRGVmZXJyZWQgY2FsbGJhY2tzOlxuICAgICAgLy8gZGF0YS5zdWJtaXQoKS5kb25lKGZ1bmMpLmZhaWwoZnVuYykuYWx3YXlzKGZ1bmMpO1xuICAgICAgYWRkOiBmdW5jdGlvbiAoZSwgZGF0YSkge1xuICAgICAgICBpZiAoZS5pc0RlZmF1bHRQcmV2ZW50ZWQoKSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoXG4gICAgICAgICAgZGF0YS5hdXRvVXBsb2FkIHx8XG4gICAgICAgICAgKGRhdGEuYXV0b1VwbG9hZCAhPT0gZmFsc2UgJiZcbiAgICAgICAgICAgICQodGhpcykuZmlsZXVwbG9hZCgnb3B0aW9uJywgJ2F1dG9VcGxvYWQnKSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgZGF0YS5wcm9jZXNzKCkuZG9uZShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBkYXRhLnN1Ym1pdCgpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9LFxuXG4gICAgICAvLyBPdGhlciBjYWxsYmFja3M6XG5cbiAgICAgIC8vIENhbGxiYWNrIGZvciB0aGUgc3VibWl0IGV2ZW50IG9mIGVhY2ggZmlsZSB1cGxvYWQ6XG4gICAgICAvLyBzdWJtaXQ6IGZ1bmN0aW9uIChlLCBkYXRhKSB7fSwgLy8gLm9uKCdmaWxldXBsb2Fkc3VibWl0JywgZnVuYyk7XG5cbiAgICAgIC8vIENhbGxiYWNrIGZvciB0aGUgc3RhcnQgb2YgZWFjaCBmaWxlIHVwbG9hZCByZXF1ZXN0OlxuICAgICAgLy8gc2VuZDogZnVuY3Rpb24gKGUsIGRhdGEpIHt9LCAvLyAub24oJ2ZpbGV1cGxvYWRzZW5kJywgZnVuYyk7XG5cbiAgICAgIC8vIENhbGxiYWNrIGZvciBzdWNjZXNzZnVsIHVwbG9hZHM6XG4gICAgICAvLyBkb25lOiBmdW5jdGlvbiAoZSwgZGF0YSkge30sIC8vIC5vbignZmlsZXVwbG9hZGRvbmUnLCBmdW5jKTtcblxuICAgICAgLy8gQ2FsbGJhY2sgZm9yIGZhaWxlZCAoYWJvcnQgb3IgZXJyb3IpIHVwbG9hZHM6XG4gICAgICAvLyBmYWlsOiBmdW5jdGlvbiAoZSwgZGF0YSkge30sIC8vIC5vbignZmlsZXVwbG9hZGZhaWwnLCBmdW5jKTtcblxuICAgICAgLy8gQ2FsbGJhY2sgZm9yIGNvbXBsZXRlZCAoc3VjY2VzcywgYWJvcnQgb3IgZXJyb3IpIHJlcXVlc3RzOlxuICAgICAgLy8gYWx3YXlzOiBmdW5jdGlvbiAoZSwgZGF0YSkge30sIC8vIC5vbignZmlsZXVwbG9hZGFsd2F5cycsIGZ1bmMpO1xuXG4gICAgICAvLyBDYWxsYmFjayBmb3IgdXBsb2FkIHByb2dyZXNzIGV2ZW50czpcbiAgICAgIC8vIHByb2dyZXNzOiBmdW5jdGlvbiAoZSwgZGF0YSkge30sIC8vIC5vbignZmlsZXVwbG9hZHByb2dyZXNzJywgZnVuYyk7XG5cbiAgICAgIC8vIENhbGxiYWNrIGZvciBnbG9iYWwgdXBsb2FkIHByb2dyZXNzIGV2ZW50czpcbiAgICAgIC8vIHByb2dyZXNzYWxsOiBmdW5jdGlvbiAoZSwgZGF0YSkge30sIC8vIC5vbignZmlsZXVwbG9hZHByb2dyZXNzYWxsJywgZnVuYyk7XG5cbiAgICAgIC8vIENhbGxiYWNrIGZvciB1cGxvYWRzIHN0YXJ0LCBlcXVpdmFsZW50IHRvIHRoZSBnbG9iYWwgYWpheFN0YXJ0IGV2ZW50OlxuICAgICAgLy8gc3RhcnQ6IGZ1bmN0aW9uIChlKSB7fSwgLy8gLm9uKCdmaWxldXBsb2Fkc3RhcnQnLCBmdW5jKTtcblxuICAgICAgLy8gQ2FsbGJhY2sgZm9yIHVwbG9hZHMgc3RvcCwgZXF1aXZhbGVudCB0byB0aGUgZ2xvYmFsIGFqYXhTdG9wIGV2ZW50OlxuICAgICAgLy8gc3RvcDogZnVuY3Rpb24gKGUpIHt9LCAvLyAub24oJ2ZpbGV1cGxvYWRzdG9wJywgZnVuYyk7XG5cbiAgICAgIC8vIENhbGxiYWNrIGZvciBjaGFuZ2UgZXZlbnRzIG9mIHRoZSBmaWxlSW5wdXQocyk6XG4gICAgICAvLyBjaGFuZ2U6IGZ1bmN0aW9uIChlLCBkYXRhKSB7fSwgLy8gLm9uKCdmaWxldXBsb2FkY2hhbmdlJywgZnVuYyk7XG5cbiAgICAgIC8vIENhbGxiYWNrIGZvciBwYXN0ZSBldmVudHMgdG8gdGhlIHBhc3RlWm9uZShzKTpcbiAgICAgIC8vIHBhc3RlOiBmdW5jdGlvbiAoZSwgZGF0YSkge30sIC8vIC5vbignZmlsZXVwbG9hZHBhc3RlJywgZnVuYyk7XG5cbiAgICAgIC8vIENhbGxiYWNrIGZvciBkcm9wIGV2ZW50cyBvZiB0aGUgZHJvcFpvbmUocyk6XG4gICAgICAvLyBkcm9wOiBmdW5jdGlvbiAoZSwgZGF0YSkge30sIC8vIC5vbignZmlsZXVwbG9hZGRyb3AnLCBmdW5jKTtcblxuICAgICAgLy8gQ2FsbGJhY2sgZm9yIGRyYWdvdmVyIGV2ZW50cyBvZiB0aGUgZHJvcFpvbmUocyk6XG4gICAgICAvLyBkcmFnb3ZlcjogZnVuY3Rpb24gKGUpIHt9LCAvLyAub24oJ2ZpbGV1cGxvYWRkcmFnb3ZlcicsIGZ1bmMpO1xuXG4gICAgICAvLyBDYWxsYmFjayBiZWZvcmUgdGhlIHN0YXJ0IG9mIGVhY2ggY2h1bmsgdXBsb2FkIHJlcXVlc3QgKGJlZm9yZSBmb3JtIGRhdGEgaW5pdGlhbGl6YXRpb24pOlxuICAgICAgLy8gY2h1bmtiZWZvcmVzZW5kOiBmdW5jdGlvbiAoZSwgZGF0YSkge30sIC8vIC5vbignZmlsZXVwbG9hZGNodW5rYmVmb3Jlc2VuZCcsIGZ1bmMpO1xuXG4gICAgICAvLyBDYWxsYmFjayBmb3IgdGhlIHN0YXJ0IG9mIGVhY2ggY2h1bmsgdXBsb2FkIHJlcXVlc3Q6XG4gICAgICAvLyBjaHVua3NlbmQ6IGZ1bmN0aW9uIChlLCBkYXRhKSB7fSwgLy8gLm9uKCdmaWxldXBsb2FkY2h1bmtzZW5kJywgZnVuYyk7XG5cbiAgICAgIC8vIENhbGxiYWNrIGZvciBzdWNjZXNzZnVsIGNodW5rIHVwbG9hZHM6XG4gICAgICAvLyBjaHVua2RvbmU6IGZ1bmN0aW9uIChlLCBkYXRhKSB7fSwgLy8gLm9uKCdmaWxldXBsb2FkY2h1bmtkb25lJywgZnVuYyk7XG5cbiAgICAgIC8vIENhbGxiYWNrIGZvciBmYWlsZWQgKGFib3J0IG9yIGVycm9yKSBjaHVuayB1cGxvYWRzOlxuICAgICAgLy8gY2h1bmtmYWlsOiBmdW5jdGlvbiAoZSwgZGF0YSkge30sIC8vIC5vbignZmlsZXVwbG9hZGNodW5rZmFpbCcsIGZ1bmMpO1xuXG4gICAgICAvLyBDYWxsYmFjayBmb3IgY29tcGxldGVkIChzdWNjZXNzLCBhYm9ydCBvciBlcnJvcikgY2h1bmsgdXBsb2FkIHJlcXVlc3RzOlxuICAgICAgLy8gY2h1bmthbHdheXM6IGZ1bmN0aW9uIChlLCBkYXRhKSB7fSwgLy8gLm9uKCdmaWxldXBsb2FkY2h1bmthbHdheXMnLCBmdW5jKTtcblxuICAgICAgLy8gVGhlIHBsdWdpbiBvcHRpb25zIGFyZSB1c2VkIGFzIHNldHRpbmdzIG9iamVjdCBmb3IgdGhlIGFqYXggY2FsbHMuXG4gICAgICAvLyBUaGUgZm9sbG93aW5nIGFyZSBqUXVlcnkgYWpheCBzZXR0aW5ncyByZXF1aXJlZCBmb3IgdGhlIGZpbGUgdXBsb2FkczpcbiAgICAgIHByb2Nlc3NEYXRhOiBmYWxzZSxcbiAgICAgIGNvbnRlbnRUeXBlOiBmYWxzZSxcbiAgICAgIGNhY2hlOiBmYWxzZSxcbiAgICAgIHRpbWVvdXQ6IDBcbiAgICB9LFxuXG4gICAgLy8galF1ZXJ5IHZlcnNpb25zIGJlZm9yZSAxLjggcmVxdWlyZSBwcm9taXNlLnBpcGUgaWYgdGhlIHJldHVybiB2YWx1ZSBpc1xuICAgIC8vIHVzZWQsIGFzIHByb21pc2UudGhlbiBpbiBvbGRlciB2ZXJzaW9ucyBoYXMgYSBkaWZmZXJlbnQgYmVoYXZpb3IsIHNlZTpcbiAgICAvLyBodHRwczovL2Jsb2cuanF1ZXJ5LmNvbS8yMDEyLzA4LzA5L2pxdWVyeS0xLTgtcmVsZWFzZWQvXG4gICAgLy8gaHR0cHM6Ly9idWdzLmpxdWVyeS5jb20vdGlja2V0LzExMDEwXG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2JsdWVpbXAvalF1ZXJ5LUZpbGUtVXBsb2FkL3B1bGwvMzQzNVxuICAgIF9wcm9taXNlUGlwZTogKGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBwYXJ0cyA9ICQuZm4uanF1ZXJ5LnNwbGl0KCcuJyk7XG4gICAgICByZXR1cm4gTnVtYmVyKHBhcnRzWzBdKSA+IDEgfHwgTnVtYmVyKHBhcnRzWzFdKSA+IDcgPyAndGhlbicgOiAncGlwZSc7XG4gICAgfSkoKSxcblxuICAgIC8vIEEgbGlzdCBvZiBvcHRpb25zIHRoYXQgcmVxdWlyZSByZWluaXRpYWxpemluZyBldmVudCBsaXN0ZW5lcnMgYW5kL29yXG4gICAgLy8gc3BlY2lhbCBpbml0aWFsaXphdGlvbiBjb2RlOlxuICAgIF9zcGVjaWFsT3B0aW9uczogW1xuICAgICAgJ2ZpbGVJbnB1dCcsXG4gICAgICAnZHJvcFpvbmUnLFxuICAgICAgJ3Bhc3RlWm9uZScsXG4gICAgICAnbXVsdGlwYXJ0JyxcbiAgICAgICdmb3JjZUlmcmFtZVRyYW5zcG9ydCdcbiAgICBdLFxuXG4gICAgX2Jsb2JTbGljZTpcbiAgICAgICQuc3VwcG9ydC5ibG9iU2xpY2UgJiZcbiAgICAgIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHNsaWNlID0gdGhpcy5zbGljZSB8fCB0aGlzLndlYmtpdFNsaWNlIHx8IHRoaXMubW96U2xpY2U7XG4gICAgICAgIHJldHVybiBzbGljZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfSxcblxuICAgIF9CaXRyYXRlVGltZXI6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHRoaXMudGltZXN0YW1wID0gRGF0ZS5ub3cgPyBEYXRlLm5vdygpIDogbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgICB0aGlzLmxvYWRlZCA9IDA7XG4gICAgICB0aGlzLmJpdHJhdGUgPSAwO1xuICAgICAgdGhpcy5nZXRCaXRyYXRlID0gZnVuY3Rpb24gKG5vdywgbG9hZGVkLCBpbnRlcnZhbCkge1xuICAgICAgICB2YXIgdGltZURpZmYgPSBub3cgLSB0aGlzLnRpbWVzdGFtcDtcbiAgICAgICAgaWYgKCF0aGlzLmJpdHJhdGUgfHwgIWludGVydmFsIHx8IHRpbWVEaWZmID4gaW50ZXJ2YWwpIHtcbiAgICAgICAgICB0aGlzLmJpdHJhdGUgPSAobG9hZGVkIC0gdGhpcy5sb2FkZWQpICogKDEwMDAgLyB0aW1lRGlmZikgKiA4O1xuICAgICAgICAgIHRoaXMubG9hZGVkID0gbG9hZGVkO1xuICAgICAgICAgIHRoaXMudGltZXN0YW1wID0gbm93O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmJpdHJhdGU7XG4gICAgICB9O1xuICAgIH0sXG5cbiAgICBfaXNYSFJVcGxvYWQ6IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICAhb3B0aW9ucy5mb3JjZUlmcmFtZVRyYW5zcG9ydCAmJlxuICAgICAgICAoKCFvcHRpb25zLm11bHRpcGFydCAmJiAkLnN1cHBvcnQueGhyRmlsZVVwbG9hZCkgfHxcbiAgICAgICAgICAkLnN1cHBvcnQueGhyRm9ybURhdGFGaWxlVXBsb2FkKVxuICAgICAgKTtcbiAgICB9LFxuXG4gICAgX2dldEZvcm1EYXRhOiBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgICAgdmFyIGZvcm1EYXRhO1xuICAgICAgaWYgKCQudHlwZShvcHRpb25zLmZvcm1EYXRhKSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gb3B0aW9ucy5mb3JtRGF0YShvcHRpb25zLmZvcm0pO1xuICAgICAgfVxuICAgICAgaWYgKCQuaXNBcnJheShvcHRpb25zLmZvcm1EYXRhKSkge1xuICAgICAgICByZXR1cm4gb3B0aW9ucy5mb3JtRGF0YTtcbiAgICAgIH1cbiAgICAgIGlmICgkLnR5cGUob3B0aW9ucy5mb3JtRGF0YSkgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIGZvcm1EYXRhID0gW107XG4gICAgICAgICQuZWFjaChvcHRpb25zLmZvcm1EYXRhLCBmdW5jdGlvbiAobmFtZSwgdmFsdWUpIHtcbiAgICAgICAgICBmb3JtRGF0YS5wdXNoKHsgbmFtZTogbmFtZSwgdmFsdWU6IHZhbHVlIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGZvcm1EYXRhO1xuICAgICAgfVxuICAgICAgcmV0dXJuIFtdO1xuICAgIH0sXG5cbiAgICBfZ2V0VG90YWw6IGZ1bmN0aW9uIChmaWxlcykge1xuICAgICAgdmFyIHRvdGFsID0gMDtcbiAgICAgICQuZWFjaChmaWxlcywgZnVuY3Rpb24gKGluZGV4LCBmaWxlKSB7XG4gICAgICAgIHRvdGFsICs9IGZpbGUuc2l6ZSB8fCAxO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gdG90YWw7XG4gICAgfSxcblxuICAgIF9pbml0UHJvZ3Jlc3NPYmplY3Q6IGZ1bmN0aW9uIChvYmopIHtcbiAgICAgIHZhciBwcm9ncmVzcyA9IHtcbiAgICAgICAgbG9hZGVkOiAwLFxuICAgICAgICB0b3RhbDogMCxcbiAgICAgICAgYml0cmF0ZTogMFxuICAgICAgfTtcbiAgICAgIGlmIChvYmouX3Byb2dyZXNzKSB7XG4gICAgICAgICQuZXh0ZW5kKG9iai5fcHJvZ3Jlc3MsIHByb2dyZXNzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9iai5fcHJvZ3Jlc3MgPSBwcm9ncmVzcztcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgX2luaXRSZXNwb25zZU9iamVjdDogZnVuY3Rpb24gKG9iaikge1xuICAgICAgdmFyIHByb3A7XG4gICAgICBpZiAob2JqLl9yZXNwb25zZSkge1xuICAgICAgICBmb3IgKHByb3AgaW4gb2JqLl9yZXNwb25zZSkge1xuICAgICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLl9yZXNwb25zZSwgcHJvcCkpIHtcbiAgICAgICAgICAgIGRlbGV0ZSBvYmouX3Jlc3BvbnNlW3Byb3BdO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb2JqLl9yZXNwb25zZSA9IHt9O1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBfb25Qcm9ncmVzczogZnVuY3Rpb24gKGUsIGRhdGEpIHtcbiAgICAgIGlmIChlLmxlbmd0aENvbXB1dGFibGUpIHtcbiAgICAgICAgdmFyIG5vdyA9IERhdGUubm93ID8gRGF0ZS5ub3coKSA6IG5ldyBEYXRlKCkuZ2V0VGltZSgpLFxuICAgICAgICAgIGxvYWRlZDtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGRhdGEuX3RpbWUgJiZcbiAgICAgICAgICBkYXRhLnByb2dyZXNzSW50ZXJ2YWwgJiZcbiAgICAgICAgICBub3cgLSBkYXRhLl90aW1lIDwgZGF0YS5wcm9ncmVzc0ludGVydmFsICYmXG4gICAgICAgICAgZS5sb2FkZWQgIT09IGUudG90YWxcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGRhdGEuX3RpbWUgPSBub3c7XG4gICAgICAgIGxvYWRlZCA9XG4gICAgICAgICAgTWF0aC5mbG9vcihcbiAgICAgICAgICAgIChlLmxvYWRlZCAvIGUudG90YWwpICogKGRhdGEuY2h1bmtTaXplIHx8IGRhdGEuX3Byb2dyZXNzLnRvdGFsKVxuICAgICAgICAgICkgKyAoZGF0YS51cGxvYWRlZEJ5dGVzIHx8IDApO1xuICAgICAgICAvLyBBZGQgdGhlIGRpZmZlcmVuY2UgZnJvbSB0aGUgcHJldmlvdXNseSBsb2FkZWQgc3RhdGVcbiAgICAgICAgLy8gdG8gdGhlIGdsb2JhbCBsb2FkZWQgY291bnRlcjpcbiAgICAgICAgdGhpcy5fcHJvZ3Jlc3MubG9hZGVkICs9IGxvYWRlZCAtIGRhdGEuX3Byb2dyZXNzLmxvYWRlZDtcbiAgICAgICAgdGhpcy5fcHJvZ3Jlc3MuYml0cmF0ZSA9IHRoaXMuX2JpdHJhdGVUaW1lci5nZXRCaXRyYXRlKFxuICAgICAgICAgIG5vdyxcbiAgICAgICAgICB0aGlzLl9wcm9ncmVzcy5sb2FkZWQsXG4gICAgICAgICAgZGF0YS5iaXRyYXRlSW50ZXJ2YWxcbiAgICAgICAgKTtcbiAgICAgICAgZGF0YS5fcHJvZ3Jlc3MubG9hZGVkID0gZGF0YS5sb2FkZWQgPSBsb2FkZWQ7XG4gICAgICAgIGRhdGEuX3Byb2dyZXNzLmJpdHJhdGUgPSBkYXRhLmJpdHJhdGUgPSBkYXRhLl9iaXRyYXRlVGltZXIuZ2V0Qml0cmF0ZShcbiAgICAgICAgICBub3csXG4gICAgICAgICAgbG9hZGVkLFxuICAgICAgICAgIGRhdGEuYml0cmF0ZUludGVydmFsXG4gICAgICAgICk7XG4gICAgICAgIC8vIFRyaWdnZXIgYSBjdXN0b20gcHJvZ3Jlc3MgZXZlbnQgd2l0aCBhIHRvdGFsIGRhdGEgcHJvcGVydHkgc2V0XG4gICAgICAgIC8vIHRvIHRoZSBmaWxlIHNpemUocykgb2YgdGhlIGN1cnJlbnQgdXBsb2FkIGFuZCBhIGxvYWRlZCBkYXRhXG4gICAgICAgIC8vIHByb3BlcnR5IGNhbGN1bGF0ZWQgYWNjb3JkaW5nbHk6XG4gICAgICAgIHRoaXMuX3RyaWdnZXIoXG4gICAgICAgICAgJ3Byb2dyZXNzJyxcbiAgICAgICAgICAkLkV2ZW50KCdwcm9ncmVzcycsIHsgZGVsZWdhdGVkRXZlbnQ6IGUgfSksXG4gICAgICAgICAgZGF0YVxuICAgICAgICApO1xuICAgICAgICAvLyBUcmlnZ2VyIGEgZ2xvYmFsIHByb2dyZXNzIGV2ZW50IGZvciBhbGwgY3VycmVudCBmaWxlIHVwbG9hZHMsXG4gICAgICAgIC8vIGluY2x1ZGluZyBhamF4IGNhbGxzIHF1ZXVlZCBmb3Igc2VxdWVudGlhbCBmaWxlIHVwbG9hZHM6XG4gICAgICAgIHRoaXMuX3RyaWdnZXIoXG4gICAgICAgICAgJ3Byb2dyZXNzYWxsJyxcbiAgICAgICAgICAkLkV2ZW50KCdwcm9ncmVzc2FsbCcsIHsgZGVsZWdhdGVkRXZlbnQ6IGUgfSksXG4gICAgICAgICAgdGhpcy5fcHJvZ3Jlc3NcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgX2luaXRQcm9ncmVzc0xpc3RlbmVyOiBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgICAgdmFyIHRoYXQgPSB0aGlzLFxuICAgICAgICB4aHIgPSBvcHRpb25zLnhociA/IG9wdGlvbnMueGhyKCkgOiAkLmFqYXhTZXR0aW5ncy54aHIoKTtcbiAgICAgIC8vIEFjY2VzcyB0byB0aGUgbmF0aXZlIFhIUiBvYmplY3QgaXMgcmVxdWlyZWQgdG8gYWRkIGV2ZW50IGxpc3RlbmVyc1xuICAgICAgLy8gZm9yIHRoZSB1cGxvYWQgcHJvZ3Jlc3MgZXZlbnQ6XG4gICAgICBpZiAoeGhyLnVwbG9hZCkge1xuICAgICAgICAkKHhoci51cGxvYWQpLm9uKCdwcm9ncmVzcycsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgdmFyIG9lID0gZS5vcmlnaW5hbEV2ZW50O1xuICAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgcHJvZ3Jlc3MgZXZlbnQgcHJvcGVydGllcyBnZXQgY29waWVkIG92ZXI6XG4gICAgICAgICAgZS5sZW5ndGhDb21wdXRhYmxlID0gb2UubGVuZ3RoQ29tcHV0YWJsZTtcbiAgICAgICAgICBlLmxvYWRlZCA9IG9lLmxvYWRlZDtcbiAgICAgICAgICBlLnRvdGFsID0gb2UudG90YWw7XG4gICAgICAgICAgdGhhdC5fb25Qcm9ncmVzcyhlLCBvcHRpb25zKTtcbiAgICAgICAgfSk7XG4gICAgICAgIG9wdGlvbnMueGhyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiB4aHI7XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfSxcblxuICAgIF9kZWluaXRQcm9ncmVzc0xpc3RlbmVyOiBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgICAgdmFyIHhociA9IG9wdGlvbnMueGhyID8gb3B0aW9ucy54aHIoKSA6ICQuYWpheFNldHRpbmdzLnhocigpO1xuICAgICAgaWYgKHhoci51cGxvYWQpIHtcbiAgICAgICAgJCh4aHIudXBsb2FkKS5vZmYoJ3Byb2dyZXNzJyk7XG4gICAgICB9XG4gICAgfSxcblxuICAgIF9pc0luc3RhbmNlT2Y6IGZ1bmN0aW9uICh0eXBlLCBvYmopIHtcbiAgICAgIC8vIENyb3NzLWZyYW1lIGluc3RhbmNlb2YgY2hlY2tcbiAgICAgIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqKSA9PT0gJ1tvYmplY3QgJyArIHR5cGUgKyAnXSc7XG4gICAgfSxcblxuICAgIF9nZXRVbmlxdWVGaWxlbmFtZTogZnVuY3Rpb24gKG5hbWUsIG1hcCkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgICBuYW1lID0gU3RyaW5nKG5hbWUpO1xuICAgICAgaWYgKG1hcFtuYW1lXSkge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgICAgICAgbmFtZSA9IG5hbWUucmVwbGFjZShcbiAgICAgICAgICAvKD86IFxcKChbXFxkXSspXFwpKT8oXFwuW14uXSspPyQvLFxuICAgICAgICAgIGZ1bmN0aW9uIChfLCBwMSwgcDIpIHtcbiAgICAgICAgICAgIHZhciBpbmRleCA9IHAxID8gTnVtYmVyKHAxKSArIDEgOiAxO1xuICAgICAgICAgICAgdmFyIGV4dCA9IHAyIHx8ICcnO1xuICAgICAgICAgICAgcmV0dXJuICcgKCcgKyBpbmRleCArICcpJyArIGV4dDtcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRVbmlxdWVGaWxlbmFtZShuYW1lLCBtYXApO1xuICAgICAgfVxuICAgICAgbWFwW25hbWVdID0gdHJ1ZTtcbiAgICAgIHJldHVybiBuYW1lO1xuICAgIH0sXG5cbiAgICBfaW5pdFhIUkRhdGE6IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gICAgICB2YXIgdGhhdCA9IHRoaXMsXG4gICAgICAgIGZvcm1EYXRhLFxuICAgICAgICBmaWxlID0gb3B0aW9ucy5maWxlc1swXSxcbiAgICAgICAgLy8gSWdub3JlIG5vbi1tdWx0aXBhcnQgc2V0dGluZyBpZiBub3Qgc3VwcG9ydGVkOlxuICAgICAgICBtdWx0aXBhcnQgPSBvcHRpb25zLm11bHRpcGFydCB8fCAhJC5zdXBwb3J0LnhockZpbGVVcGxvYWQsXG4gICAgICAgIHBhcmFtTmFtZSA9XG4gICAgICAgICAgJC50eXBlKG9wdGlvbnMucGFyYW1OYW1lKSA9PT0gJ2FycmF5J1xuICAgICAgICAgICAgPyBvcHRpb25zLnBhcmFtTmFtZVswXVxuICAgICAgICAgICAgOiBvcHRpb25zLnBhcmFtTmFtZTtcbiAgICAgIG9wdGlvbnMuaGVhZGVycyA9ICQuZXh0ZW5kKHt9LCBvcHRpb25zLmhlYWRlcnMpO1xuICAgICAgaWYgKG9wdGlvbnMuY29udGVudFJhbmdlKSB7XG4gICAgICAgIG9wdGlvbnMuaGVhZGVyc1snQ29udGVudC1SYW5nZSddID0gb3B0aW9ucy5jb250ZW50UmFuZ2U7XG4gICAgICB9XG4gICAgICBpZiAoIW11bHRpcGFydCB8fCBvcHRpb25zLmJsb2IgfHwgIXRoaXMuX2lzSW5zdGFuY2VPZignRmlsZScsIGZpbGUpKSB7XG4gICAgICAgIG9wdGlvbnMuaGVhZGVyc1snQ29udGVudC1EaXNwb3NpdGlvbiddID1cbiAgICAgICAgICAnYXR0YWNobWVudDsgZmlsZW5hbWU9XCInICtcbiAgICAgICAgICBlbmNvZGVVUkkoZmlsZS51cGxvYWROYW1lIHx8IGZpbGUubmFtZSkgK1xuICAgICAgICAgICdcIic7XG4gICAgICB9XG4gICAgICBpZiAoIW11bHRpcGFydCkge1xuICAgICAgICBvcHRpb25zLmNvbnRlbnRUeXBlID0gZmlsZS50eXBlIHx8ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nO1xuICAgICAgICBvcHRpb25zLmRhdGEgPSBvcHRpb25zLmJsb2IgfHwgZmlsZTtcbiAgICAgIH0gZWxzZSBpZiAoJC5zdXBwb3J0LnhockZvcm1EYXRhRmlsZVVwbG9hZCkge1xuICAgICAgICBpZiAob3B0aW9ucy5wb3N0TWVzc2FnZSkge1xuICAgICAgICAgIC8vIHdpbmRvdy5wb3N0TWVzc2FnZSBkb2VzIG5vdCBhbGxvdyBzZW5kaW5nIEZvcm1EYXRhXG4gICAgICAgICAgLy8gb2JqZWN0cywgc28gd2UganVzdCBhZGQgdGhlIEZpbGUvQmxvYiBvYmplY3RzIHRvXG4gICAgICAgICAgLy8gdGhlIGZvcm1EYXRhIGFycmF5IGFuZCBsZXQgdGhlIHBvc3RNZXNzYWdlIHdpbmRvd1xuICAgICAgICAgIC8vIGNyZWF0ZSB0aGUgRm9ybURhdGEgb2JqZWN0IG91dCBvZiB0aGlzIGFycmF5OlxuICAgICAgICAgIGZvcm1EYXRhID0gdGhpcy5fZ2V0Rm9ybURhdGEob3B0aW9ucyk7XG4gICAgICAgICAgaWYgKG9wdGlvbnMuYmxvYikge1xuICAgICAgICAgICAgZm9ybURhdGEucHVzaCh7XG4gICAgICAgICAgICAgIG5hbWU6IHBhcmFtTmFtZSxcbiAgICAgICAgICAgICAgdmFsdWU6IG9wdGlvbnMuYmxvYlxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICQuZWFjaChvcHRpb25zLmZpbGVzLCBmdW5jdGlvbiAoaW5kZXgsIGZpbGUpIHtcbiAgICAgICAgICAgICAgZm9ybURhdGEucHVzaCh7XG4gICAgICAgICAgICAgICAgbmFtZTpcbiAgICAgICAgICAgICAgICAgICgkLnR5cGUob3B0aW9ucy5wYXJhbU5hbWUpID09PSAnYXJyYXknICYmXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnMucGFyYW1OYW1lW2luZGV4XSkgfHxcbiAgICAgICAgICAgICAgICAgIHBhcmFtTmFtZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogZmlsZVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAodGhhdC5faXNJbnN0YW5jZU9mKCdGb3JtRGF0YScsIG9wdGlvbnMuZm9ybURhdGEpKSB7XG4gICAgICAgICAgICBmb3JtRGF0YSA9IG9wdGlvbnMuZm9ybURhdGE7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgICAgICAgICAkLmVhY2godGhpcy5fZ2V0Rm9ybURhdGEob3B0aW9ucyksIGZ1bmN0aW9uIChpbmRleCwgZmllbGQpIHtcbiAgICAgICAgICAgICAgZm9ybURhdGEuYXBwZW5kKGZpZWxkLm5hbWUsIGZpZWxkLnZhbHVlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAob3B0aW9ucy5ibG9iKSB7XG4gICAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQoXG4gICAgICAgICAgICAgIHBhcmFtTmFtZSxcbiAgICAgICAgICAgICAgb3B0aW9ucy5ibG9iLFxuICAgICAgICAgICAgICBmaWxlLnVwbG9hZE5hbWUgfHwgZmlsZS5uYW1lXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAkLmVhY2gob3B0aW9ucy5maWxlcywgZnVuY3Rpb24gKGluZGV4LCBmaWxlKSB7XG4gICAgICAgICAgICAgIC8vIFRoaXMgY2hlY2sgYWxsb3dzIHRoZSB0ZXN0cyB0byBydW4gd2l0aFxuICAgICAgICAgICAgICAvLyBkdW1teSBvYmplY3RzOlxuICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgdGhhdC5faXNJbnN0YW5jZU9mKCdGaWxlJywgZmlsZSkgfHxcbiAgICAgICAgICAgICAgICB0aGF0Ll9pc0luc3RhbmNlT2YoJ0Jsb2InLCBmaWxlKVxuICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICB2YXIgZmlsZU5hbWUgPSBmaWxlLnVwbG9hZE5hbWUgfHwgZmlsZS5uYW1lO1xuICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLnVuaXF1ZUZpbGVuYW1lcykge1xuICAgICAgICAgICAgICAgICAgZmlsZU5hbWUgPSB0aGF0Ll9nZXRVbmlxdWVGaWxlbmFtZShcbiAgICAgICAgICAgICAgICAgICAgZmlsZU5hbWUsXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnMudW5pcXVlRmlsZW5hbWVzXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQoXG4gICAgICAgICAgICAgICAgICAoJC50eXBlKG9wdGlvbnMucGFyYW1OYW1lKSA9PT0gJ2FycmF5JyAmJlxuICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnBhcmFtTmFtZVtpbmRleF0pIHx8XG4gICAgICAgICAgICAgICAgICAgIHBhcmFtTmFtZSxcbiAgICAgICAgICAgICAgICAgIGZpbGUsXG4gICAgICAgICAgICAgICAgICBmaWxlTmFtZVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBvcHRpb25zLmRhdGEgPSBmb3JtRGF0YTtcbiAgICAgIH1cbiAgICAgIC8vIEJsb2IgcmVmZXJlbmNlIGlzIG5vdCBuZWVkZWQgYW55bW9yZSwgZnJlZSBtZW1vcnk6XG4gICAgICBvcHRpb25zLmJsb2IgPSBudWxsO1xuICAgIH0sXG5cbiAgICBfaW5pdElmcmFtZVNldHRpbmdzOiBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgICAgdmFyIHRhcmdldEhvc3QgPSAkKCc8YT48L2E+JykucHJvcCgnaHJlZicsIG9wdGlvbnMudXJsKS5wcm9wKCdob3N0Jyk7XG4gICAgICAvLyBTZXR0aW5nIHRoZSBkYXRhVHlwZSB0byBpZnJhbWUgZW5hYmxlcyB0aGUgaWZyYW1lIHRyYW5zcG9ydDpcbiAgICAgIG9wdGlvbnMuZGF0YVR5cGUgPSAnaWZyYW1lICcgKyAob3B0aW9ucy5kYXRhVHlwZSB8fCAnJyk7XG4gICAgICAvLyBUaGUgaWZyYW1lIHRyYW5zcG9ydCBhY2NlcHRzIGEgc2VyaWFsaXplZCBhcnJheSBhcyBmb3JtIGRhdGE6XG4gICAgICBvcHRpb25zLmZvcm1EYXRhID0gdGhpcy5fZ2V0Rm9ybURhdGEob3B0aW9ucyk7XG4gICAgICAvLyBBZGQgcmVkaXJlY3QgdXJsIHRvIGZvcm0gZGF0YSBvbiBjcm9zcy1kb21haW4gdXBsb2FkczpcbiAgICAgIGlmIChvcHRpb25zLnJlZGlyZWN0ICYmIHRhcmdldEhvc3QgJiYgdGFyZ2V0SG9zdCAhPT0gbG9jYXRpb24uaG9zdCkge1xuICAgICAgICBvcHRpb25zLmZvcm1EYXRhLnB1c2goe1xuICAgICAgICAgIG5hbWU6IG9wdGlvbnMucmVkaXJlY3RQYXJhbU5hbWUgfHwgJ3JlZGlyZWN0JyxcbiAgICAgICAgICB2YWx1ZTogb3B0aW9ucy5yZWRpcmVjdFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgX2luaXREYXRhU2V0dGluZ3M6IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gICAgICBpZiAodGhpcy5faXNYSFJVcGxvYWQob3B0aW9ucykpIHtcbiAgICAgICAgaWYgKCF0aGlzLl9jaHVua2VkVXBsb2FkKG9wdGlvbnMsIHRydWUpKSB7XG4gICAgICAgICAgaWYgKCFvcHRpb25zLmRhdGEpIHtcbiAgICAgICAgICAgIHRoaXMuX2luaXRYSFJEYXRhKG9wdGlvbnMpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLl9pbml0UHJvZ3Jlc3NMaXN0ZW5lcihvcHRpb25zKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3B0aW9ucy5wb3N0TWVzc2FnZSkge1xuICAgICAgICAgIC8vIFNldHRpbmcgdGhlIGRhdGFUeXBlIHRvIHBvc3RtZXNzYWdlIGVuYWJsZXMgdGhlXG4gICAgICAgICAgLy8gcG9zdE1lc3NhZ2UgdHJhbnNwb3J0OlxuICAgICAgICAgIG9wdGlvbnMuZGF0YVR5cGUgPSAncG9zdG1lc3NhZ2UgJyArIChvcHRpb25zLmRhdGFUeXBlIHx8ICcnKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5faW5pdElmcmFtZVNldHRpbmdzKG9wdGlvbnMpO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBfZ2V0UGFyYW1OYW1lOiBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgICAgdmFyIGZpbGVJbnB1dCA9ICQob3B0aW9ucy5maWxlSW5wdXQpLFxuICAgICAgICBwYXJhbU5hbWUgPSBvcHRpb25zLnBhcmFtTmFtZTtcbiAgICAgIGlmICghcGFyYW1OYW1lKSB7XG4gICAgICAgIHBhcmFtTmFtZSA9IFtdO1xuICAgICAgICBmaWxlSW5wdXQuZWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgdmFyIGlucHV0ID0gJCh0aGlzKSxcbiAgICAgICAgICAgIG5hbWUgPSBpbnB1dC5wcm9wKCduYW1lJykgfHwgJ2ZpbGVzW10nLFxuICAgICAgICAgICAgaSA9IChpbnB1dC5wcm9wKCdmaWxlcycpIHx8IFsxXSkubGVuZ3RoO1xuICAgICAgICAgIHdoaWxlIChpKSB7XG4gICAgICAgICAgICBwYXJhbU5hbWUucHVzaChuYW1lKTtcbiAgICAgICAgICAgIGkgLT0gMTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoIXBhcmFtTmFtZS5sZW5ndGgpIHtcbiAgICAgICAgICBwYXJhbU5hbWUgPSBbZmlsZUlucHV0LnByb3AoJ25hbWUnKSB8fCAnZmlsZXNbXSddO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKCEkLmlzQXJyYXkocGFyYW1OYW1lKSkge1xuICAgICAgICBwYXJhbU5hbWUgPSBbcGFyYW1OYW1lXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwYXJhbU5hbWU7XG4gICAgfSxcblxuICAgIF9pbml0Rm9ybVNldHRpbmdzOiBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgICAgLy8gUmV0cmlldmUgbWlzc2luZyBvcHRpb25zIGZyb20gdGhlIGlucHV0IGZpZWxkIGFuZCB0aGVcbiAgICAgIC8vIGFzc29jaWF0ZWQgZm9ybSwgaWYgYXZhaWxhYmxlOlxuICAgICAgaWYgKCFvcHRpb25zLmZvcm0gfHwgIW9wdGlvbnMuZm9ybS5sZW5ndGgpIHtcbiAgICAgICAgb3B0aW9ucy5mb3JtID0gJChvcHRpb25zLmZpbGVJbnB1dC5wcm9wKCdmb3JtJykpO1xuICAgICAgICAvLyBJZiB0aGUgZ2l2ZW4gZmlsZSBpbnB1dCBkb2Vzbid0IGhhdmUgYW4gYXNzb2NpYXRlZCBmb3JtLFxuICAgICAgICAvLyB1c2UgdGhlIGRlZmF1bHQgd2lkZ2V0IGZpbGUgaW5wdXQncyBmb3JtOlxuICAgICAgICBpZiAoIW9wdGlvbnMuZm9ybS5sZW5ndGgpIHtcbiAgICAgICAgICBvcHRpb25zLmZvcm0gPSAkKHRoaXMub3B0aW9ucy5maWxlSW5wdXQucHJvcCgnZm9ybScpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgb3B0aW9ucy5wYXJhbU5hbWUgPSB0aGlzLl9nZXRQYXJhbU5hbWUob3B0aW9ucyk7XG4gICAgICBpZiAoIW9wdGlvbnMudXJsKSB7XG4gICAgICAgIG9wdGlvbnMudXJsID0gb3B0aW9ucy5mb3JtLnByb3AoJ2FjdGlvbicpIHx8IGxvY2F0aW9uLmhyZWY7XG4gICAgICB9XG4gICAgICAvLyBUaGUgSFRUUCByZXF1ZXN0IG1ldGhvZCBtdXN0IGJlIFwiUE9TVFwiIG9yIFwiUFVUXCI6XG4gICAgICBvcHRpb25zLnR5cGUgPSAoXG4gICAgICAgIG9wdGlvbnMudHlwZSB8fFxuICAgICAgICAoJC50eXBlKG9wdGlvbnMuZm9ybS5wcm9wKCdtZXRob2QnKSkgPT09ICdzdHJpbmcnICYmXG4gICAgICAgICAgb3B0aW9ucy5mb3JtLnByb3AoJ21ldGhvZCcpKSB8fFxuICAgICAgICAnJ1xuICAgICAgKS50b1VwcGVyQ2FzZSgpO1xuICAgICAgaWYgKFxuICAgICAgICBvcHRpb25zLnR5cGUgIT09ICdQT1NUJyAmJlxuICAgICAgICBvcHRpb25zLnR5cGUgIT09ICdQVVQnICYmXG4gICAgICAgIG9wdGlvbnMudHlwZSAhPT0gJ1BBVENIJ1xuICAgICAgKSB7XG4gICAgICAgIG9wdGlvbnMudHlwZSA9ICdQT1NUJztcbiAgICAgIH1cbiAgICAgIGlmICghb3B0aW9ucy5mb3JtQWNjZXB0Q2hhcnNldCkge1xuICAgICAgICBvcHRpb25zLmZvcm1BY2NlcHRDaGFyc2V0ID0gb3B0aW9ucy5mb3JtLmF0dHIoJ2FjY2VwdC1jaGFyc2V0Jyk7XG4gICAgICB9XG4gICAgfSxcblxuICAgIF9nZXRBSkFYU2V0dGluZ3M6IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICB2YXIgb3B0aW9ucyA9ICQuZXh0ZW5kKHt9LCB0aGlzLm9wdGlvbnMsIGRhdGEpO1xuICAgICAgdGhpcy5faW5pdEZvcm1TZXR0aW5ncyhvcHRpb25zKTtcbiAgICAgIHRoaXMuX2luaXREYXRhU2V0dGluZ3Mob3B0aW9ucyk7XG4gICAgICByZXR1cm4gb3B0aW9ucztcbiAgICB9LFxuXG4gICAgLy8galF1ZXJ5IDEuNiBkb2Vzbid0IHByb3ZpZGUgLnN0YXRlKCksXG4gICAgLy8gd2hpbGUgalF1ZXJ5IDEuOCsgcmVtb3ZlZCAuaXNSZWplY3RlZCgpIGFuZCAuaXNSZXNvbHZlZCgpOlxuICAgIF9nZXREZWZlcnJlZFN0YXRlOiBmdW5jdGlvbiAoZGVmZXJyZWQpIHtcbiAgICAgIGlmIChkZWZlcnJlZC5zdGF0ZSkge1xuICAgICAgICByZXR1cm4gZGVmZXJyZWQuc3RhdGUoKTtcbiAgICAgIH1cbiAgICAgIGlmIChkZWZlcnJlZC5pc1Jlc29sdmVkKCkpIHtcbiAgICAgICAgcmV0dXJuICdyZXNvbHZlZCc7XG4gICAgICB9XG4gICAgICBpZiAoZGVmZXJyZWQuaXNSZWplY3RlZCgpKSB7XG4gICAgICAgIHJldHVybiAncmVqZWN0ZWQnO1xuICAgICAgfVxuICAgICAgcmV0dXJuICdwZW5kaW5nJztcbiAgICB9LFxuXG4gICAgLy8gTWFwcyBqcVhIUiBjYWxsYmFja3MgdG8gdGhlIGVxdWl2YWxlbnRcbiAgICAvLyBtZXRob2RzIG9mIHRoZSBnaXZlbiBQcm9taXNlIG9iamVjdDpcbiAgICBfZW5oYW5jZVByb21pc2U6IGZ1bmN0aW9uIChwcm9taXNlKSB7XG4gICAgICBwcm9taXNlLnN1Y2Nlc3MgPSBwcm9taXNlLmRvbmU7XG4gICAgICBwcm9taXNlLmVycm9yID0gcHJvbWlzZS5mYWlsO1xuICAgICAgcHJvbWlzZS5jb21wbGV0ZSA9IHByb21pc2UuYWx3YXlzO1xuICAgICAgcmV0dXJuIHByb21pc2U7XG4gICAgfSxcblxuICAgIC8vIENyZWF0ZXMgYW5kIHJldHVybnMgYSBQcm9taXNlIG9iamVjdCBlbmhhbmNlZCB3aXRoXG4gICAgLy8gdGhlIGpxWEhSIG1ldGhvZHMgYWJvcnQsIHN1Y2Nlc3MsIGVycm9yIGFuZCBjb21wbGV0ZTpcbiAgICBfZ2V0WEhSUHJvbWlzZTogZnVuY3Rpb24gKHJlc29sdmVPclJlamVjdCwgY29udGV4dCwgYXJncykge1xuICAgICAgdmFyIGRmZCA9ICQuRGVmZXJyZWQoKSxcbiAgICAgICAgcHJvbWlzZSA9IGRmZC5wcm9taXNlKCk7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgICAgIGNvbnRleHQgPSBjb250ZXh0IHx8IHRoaXMub3B0aW9ucy5jb250ZXh0IHx8IHByb21pc2U7XG4gICAgICBpZiAocmVzb2x2ZU9yUmVqZWN0ID09PSB0cnVlKSB7XG4gICAgICAgIGRmZC5yZXNvbHZlV2l0aChjb250ZXh0LCBhcmdzKTtcbiAgICAgIH0gZWxzZSBpZiAocmVzb2x2ZU9yUmVqZWN0ID09PSBmYWxzZSkge1xuICAgICAgICBkZmQucmVqZWN0V2l0aChjb250ZXh0LCBhcmdzKTtcbiAgICAgIH1cbiAgICAgIHByb21pc2UuYWJvcnQgPSBkZmQucHJvbWlzZTtcbiAgICAgIHJldHVybiB0aGlzLl9lbmhhbmNlUHJvbWlzZShwcm9taXNlKTtcbiAgICB9LFxuXG4gICAgLy8gQWRkcyBjb252ZW5pZW5jZSBtZXRob2RzIHRvIHRoZSBkYXRhIGNhbGxiYWNrIGFyZ3VtZW50OlxuICAgIF9hZGRDb252ZW5pZW5jZU1ldGhvZHM6IGZ1bmN0aW9uIChlLCBkYXRhKSB7XG4gICAgICB2YXIgdGhhdCA9IHRoaXMsXG4gICAgICAgIGdldFByb21pc2UgPSBmdW5jdGlvbiAoYXJncykge1xuICAgICAgICAgIHJldHVybiAkLkRlZmVycmVkKCkucmVzb2x2ZVdpdGgodGhhdCwgYXJncykucHJvbWlzZSgpO1xuICAgICAgICB9O1xuICAgICAgZGF0YS5wcm9jZXNzID0gZnVuY3Rpb24gKHJlc29sdmVGdW5jLCByZWplY3RGdW5jKSB7XG4gICAgICAgIGlmIChyZXNvbHZlRnVuYyB8fCByZWplY3RGdW5jKSB7XG4gICAgICAgICAgZGF0YS5fcHJvY2Vzc1F1ZXVlID0gdGhpcy5fcHJvY2Vzc1F1ZXVlID0gKHRoaXMuX3Byb2Nlc3NRdWV1ZSB8fFxuICAgICAgICAgICAgZ2V0UHJvbWlzZShbdGhpc10pKVxuICAgICAgICAgICAgW3RoYXQuX3Byb21pc2VQaXBlXShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgIGlmIChkYXRhLmVycm9yVGhyb3duKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICQuRGVmZXJyZWQoKS5yZWplY3RXaXRoKHRoYXQsIFtkYXRhXSkucHJvbWlzZSgpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiBnZXRQcm9taXNlKGFyZ3VtZW50cyk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgW3RoYXQuX3Byb21pc2VQaXBlXShyZXNvbHZlRnVuYywgcmVqZWN0RnVuYyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX3Byb2Nlc3NRdWV1ZSB8fCBnZXRQcm9taXNlKFt0aGlzXSk7XG4gICAgICB9O1xuICAgICAgZGF0YS5zdWJtaXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICh0aGlzLnN0YXRlKCkgIT09ICdwZW5kaW5nJykge1xuICAgICAgICAgIGRhdGEuanFYSFIgPSB0aGlzLmpxWEhSID1cbiAgICAgICAgICAgIHRoYXQuX3RyaWdnZXIoXG4gICAgICAgICAgICAgICdzdWJtaXQnLFxuICAgICAgICAgICAgICAkLkV2ZW50KCdzdWJtaXQnLCB7IGRlbGVnYXRlZEV2ZW50OiBlIH0pLFxuICAgICAgICAgICAgICB0aGlzXG4gICAgICAgICAgICApICE9PSBmYWxzZSAmJiB0aGF0Ll9vblNlbmQoZSwgdGhpcyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuanFYSFIgfHwgdGhhdC5fZ2V0WEhSUHJvbWlzZSgpO1xuICAgICAgfTtcbiAgICAgIGRhdGEuYWJvcnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICh0aGlzLmpxWEhSKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuanFYSFIuYWJvcnQoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmVycm9yVGhyb3duID0gJ2Fib3J0JztcbiAgICAgICAgdGhhdC5fdHJpZ2dlcignZmFpbCcsIG51bGwsIHRoaXMpO1xuICAgICAgICByZXR1cm4gdGhhdC5fZ2V0WEhSUHJvbWlzZShmYWxzZSk7XG4gICAgICB9O1xuICAgICAgZGF0YS5zdGF0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHRoaXMuanFYSFIpIHtcbiAgICAgICAgICByZXR1cm4gdGhhdC5fZ2V0RGVmZXJyZWRTdGF0ZSh0aGlzLmpxWEhSKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5fcHJvY2Vzc1F1ZXVlKSB7XG4gICAgICAgICAgcmV0dXJuIHRoYXQuX2dldERlZmVycmVkU3RhdGUodGhpcy5fcHJvY2Vzc1F1ZXVlKTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIGRhdGEucHJvY2Vzc2luZyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAhdGhpcy5qcVhIUiAmJlxuICAgICAgICAgIHRoaXMuX3Byb2Nlc3NRdWV1ZSAmJlxuICAgICAgICAgIHRoYXQuX2dldERlZmVycmVkU3RhdGUodGhpcy5fcHJvY2Vzc1F1ZXVlKSA9PT0gJ3BlbmRpbmcnXG4gICAgICAgICk7XG4gICAgICB9O1xuICAgICAgZGF0YS5wcm9ncmVzcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Byb2dyZXNzO1xuICAgICAgfTtcbiAgICAgIGRhdGEucmVzcG9uc2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXNwb25zZTtcbiAgICAgIH07XG4gICAgfSxcblxuICAgIC8vIFBhcnNlcyB0aGUgUmFuZ2UgaGVhZGVyIGZyb20gdGhlIHNlcnZlciByZXNwb25zZVxuICAgIC8vIGFuZCByZXR1cm5zIHRoZSB1cGxvYWRlZCBieXRlczpcbiAgICBfZ2V0VXBsb2FkZWRCeXRlczogZnVuY3Rpb24gKGpxWEhSKSB7XG4gICAgICB2YXIgcmFuZ2UgPSBqcVhIUi5nZXRSZXNwb25zZUhlYWRlcignUmFuZ2UnKSxcbiAgICAgICAgcGFydHMgPSByYW5nZSAmJiByYW5nZS5zcGxpdCgnLScpLFxuICAgICAgICB1cHBlckJ5dGVzUG9zID0gcGFydHMgJiYgcGFydHMubGVuZ3RoID4gMSAmJiBwYXJzZUludChwYXJ0c1sxXSwgMTApO1xuICAgICAgcmV0dXJuIHVwcGVyQnl0ZXNQb3MgJiYgdXBwZXJCeXRlc1BvcyArIDE7XG4gICAgfSxcblxuICAgIC8vIFVwbG9hZHMgYSBmaWxlIGluIG11bHRpcGxlLCBzZXF1ZW50aWFsIHJlcXVlc3RzXG4gICAgLy8gYnkgc3BsaXR0aW5nIHRoZSBmaWxlIHVwIGluIG11bHRpcGxlIGJsb2IgY2h1bmtzLlxuICAgIC8vIElmIHRoZSBzZWNvbmQgcGFyYW1ldGVyIGlzIHRydWUsIG9ubHkgdGVzdHMgaWYgdGhlIGZpbGVcbiAgICAvLyBzaG91bGQgYmUgdXBsb2FkZWQgaW4gY2h1bmtzLCBidXQgZG9lcyBub3QgaW52b2tlIGFueVxuICAgIC8vIHVwbG9hZCByZXF1ZXN0czpcbiAgICBfY2h1bmtlZFVwbG9hZDogZnVuY3Rpb24gKG9wdGlvbnMsIHRlc3RPbmx5KSB7XG4gICAgICBvcHRpb25zLnVwbG9hZGVkQnl0ZXMgPSBvcHRpb25zLnVwbG9hZGVkQnl0ZXMgfHwgMDtcbiAgICAgIHZhciB0aGF0ID0gdGhpcyxcbiAgICAgICAgZmlsZSA9IG9wdGlvbnMuZmlsZXNbMF0sXG4gICAgICAgIGZzID0gZmlsZS5zaXplLFxuICAgICAgICB1YiA9IG9wdGlvbnMudXBsb2FkZWRCeXRlcyxcbiAgICAgICAgbWNzID0gb3B0aW9ucy5tYXhDaHVua1NpemUgfHwgZnMsXG4gICAgICAgIHNsaWNlID0gdGhpcy5fYmxvYlNsaWNlLFxuICAgICAgICBkZmQgPSAkLkRlZmVycmVkKCksXG4gICAgICAgIHByb21pc2UgPSBkZmQucHJvbWlzZSgpLFxuICAgICAgICBqcVhIUixcbiAgICAgICAgdXBsb2FkO1xuICAgICAgaWYgKFxuICAgICAgICAhKFxuICAgICAgICAgIHRoaXMuX2lzWEhSVXBsb2FkKG9wdGlvbnMpICYmXG4gICAgICAgICAgc2xpY2UgJiZcbiAgICAgICAgICAodWIgfHwgKCQudHlwZShtY3MpID09PSAnZnVuY3Rpb24nID8gbWNzKG9wdGlvbnMpIDogbWNzKSA8IGZzKVxuICAgICAgICApIHx8XG4gICAgICAgIG9wdGlvbnMuZGF0YVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmICh0ZXN0T25seSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmICh1YiA+PSBmcykge1xuICAgICAgICBmaWxlLmVycm9yID0gb3B0aW9ucy5pMThuKCd1cGxvYWRlZEJ5dGVzJyk7XG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRYSFJQcm9taXNlKGZhbHNlLCBvcHRpb25zLmNvbnRleHQsIFtcbiAgICAgICAgICBudWxsLFxuICAgICAgICAgICdlcnJvcicsXG4gICAgICAgICAgZmlsZS5lcnJvclxuICAgICAgICBdKTtcbiAgICAgIH1cbiAgICAgIC8vIFRoZSBjaHVuayB1cGxvYWQgbWV0aG9kOlxuICAgICAgdXBsb2FkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAvLyBDbG9uZSB0aGUgb3B0aW9ucyBvYmplY3QgZm9yIGVhY2ggY2h1bmsgdXBsb2FkOlxuICAgICAgICB2YXIgbyA9ICQuZXh0ZW5kKHt9LCBvcHRpb25zKSxcbiAgICAgICAgICBjdXJyZW50TG9hZGVkID0gby5fcHJvZ3Jlc3MubG9hZGVkO1xuICAgICAgICBvLmJsb2IgPSBzbGljZS5jYWxsKFxuICAgICAgICAgIGZpbGUsXG4gICAgICAgICAgdWIsXG4gICAgICAgICAgdWIgKyAoJC50eXBlKG1jcykgPT09ICdmdW5jdGlvbicgPyBtY3MobykgOiBtY3MpLFxuICAgICAgICAgIGZpbGUudHlwZVxuICAgICAgICApO1xuICAgICAgICAvLyBTdG9yZSB0aGUgY3VycmVudCBjaHVuayBzaXplLCBhcyB0aGUgYmxvYiBpdHNlbGZcbiAgICAgICAgLy8gd2lsbCBiZSBkZXJlZmVyZW5jZWQgYWZ0ZXIgZGF0YSBwcm9jZXNzaW5nOlxuICAgICAgICBvLmNodW5rU2l6ZSA9IG8uYmxvYi5zaXplO1xuICAgICAgICAvLyBFeHBvc2UgdGhlIGNodW5rIGJ5dGVzIHBvc2l0aW9uIHJhbmdlOlxuICAgICAgICBvLmNvbnRlbnRSYW5nZSA9XG4gICAgICAgICAgJ2J5dGVzICcgKyB1YiArICctJyArICh1YiArIG8uY2h1bmtTaXplIC0gMSkgKyAnLycgKyBmcztcbiAgICAgICAgLy8gVHJpZ2dlciBjaHVua2JlZm9yZXNlbmQgdG8gYWxsb3cgZm9ybSBkYXRhIHRvIGJlIHVwZGF0ZWQgZm9yIHRoaXMgY2h1bmtcbiAgICAgICAgdGhhdC5fdHJpZ2dlcignY2h1bmtiZWZvcmVzZW5kJywgbnVsbCwgbyk7XG4gICAgICAgIC8vIFByb2Nlc3MgdGhlIHVwbG9hZCBkYXRhICh0aGUgYmxvYiBhbmQgcG90ZW50aWFsIGZvcm0gZGF0YSk6XG4gICAgICAgIHRoYXQuX2luaXRYSFJEYXRhKG8pO1xuICAgICAgICAvLyBBZGQgcHJvZ3Jlc3MgbGlzdGVuZXJzIGZvciB0aGlzIGNodW5rIHVwbG9hZDpcbiAgICAgICAgdGhhdC5faW5pdFByb2dyZXNzTGlzdGVuZXIobyk7XG4gICAgICAgIGpxWEhSID0gKFxuICAgICAgICAgICh0aGF0Ll90cmlnZ2VyKCdjaHVua3NlbmQnLCBudWxsLCBvKSAhPT0gZmFsc2UgJiYgJC5hamF4KG8pKSB8fFxuICAgICAgICAgIHRoYXQuX2dldFhIUlByb21pc2UoZmFsc2UsIG8uY29udGV4dClcbiAgICAgICAgKVxuICAgICAgICAgIC5kb25lKGZ1bmN0aW9uIChyZXN1bHQsIHRleHRTdGF0dXMsIGpxWEhSKSB7XG4gICAgICAgICAgICB1YiA9IHRoYXQuX2dldFVwbG9hZGVkQnl0ZXMoanFYSFIpIHx8IHViICsgby5jaHVua1NpemU7XG4gICAgICAgICAgICAvLyBDcmVhdGUgYSBwcm9ncmVzcyBldmVudCBpZiBubyBmaW5hbCBwcm9ncmVzcyBldmVudFxuICAgICAgICAgICAgLy8gd2l0aCBsb2FkZWQgZXF1YWxpbmcgdG90YWwgaGFzIGJlZW4gdHJpZ2dlcmVkXG4gICAgICAgICAgICAvLyBmb3IgdGhpcyBjaHVuazpcbiAgICAgICAgICAgIGlmIChjdXJyZW50TG9hZGVkICsgby5jaHVua1NpemUgLSBvLl9wcm9ncmVzcy5sb2FkZWQpIHtcbiAgICAgICAgICAgICAgdGhhdC5fb25Qcm9ncmVzcyhcbiAgICAgICAgICAgICAgICAkLkV2ZW50KCdwcm9ncmVzcycsIHtcbiAgICAgICAgICAgICAgICAgIGxlbmd0aENvbXB1dGFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICBsb2FkZWQ6IHViIC0gby51cGxvYWRlZEJ5dGVzLFxuICAgICAgICAgICAgICAgICAgdG90YWw6IHViIC0gby51cGxvYWRlZEJ5dGVzXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgb1xuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3B0aW9ucy51cGxvYWRlZEJ5dGVzID0gby51cGxvYWRlZEJ5dGVzID0gdWI7XG4gICAgICAgICAgICBvLnJlc3VsdCA9IHJlc3VsdDtcbiAgICAgICAgICAgIG8udGV4dFN0YXR1cyA9IHRleHRTdGF0dXM7XG4gICAgICAgICAgICBvLmpxWEhSID0ganFYSFI7XG4gICAgICAgICAgICB0aGF0Ll90cmlnZ2VyKCdjaHVua2RvbmUnLCBudWxsLCBvKTtcbiAgICAgICAgICAgIHRoYXQuX3RyaWdnZXIoJ2NodW5rYWx3YXlzJywgbnVsbCwgbyk7XG4gICAgICAgICAgICBpZiAodWIgPCBmcykge1xuICAgICAgICAgICAgICAvLyBGaWxlIHVwbG9hZCBub3QgeWV0IGNvbXBsZXRlLFxuICAgICAgICAgICAgICAvLyBjb250aW51ZSB3aXRoIHRoZSBuZXh0IGNodW5rOlxuICAgICAgICAgICAgICB1cGxvYWQoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGRmZC5yZXNvbHZlV2l0aChvLmNvbnRleHQsIFtyZXN1bHQsIHRleHRTdGF0dXMsIGpxWEhSXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuZmFpbChmdW5jdGlvbiAoanFYSFIsIHRleHRTdGF0dXMsIGVycm9yVGhyb3duKSB7XG4gICAgICAgICAgICBvLmpxWEhSID0ganFYSFI7XG4gICAgICAgICAgICBvLnRleHRTdGF0dXMgPSB0ZXh0U3RhdHVzO1xuICAgICAgICAgICAgby5lcnJvclRocm93biA9IGVycm9yVGhyb3duO1xuICAgICAgICAgICAgdGhhdC5fdHJpZ2dlcignY2h1bmtmYWlsJywgbnVsbCwgbyk7XG4gICAgICAgICAgICB0aGF0Ll90cmlnZ2VyKCdjaHVua2Fsd2F5cycsIG51bGwsIG8pO1xuICAgICAgICAgICAgZGZkLnJlamVjdFdpdGgoby5jb250ZXh0LCBbanFYSFIsIHRleHRTdGF0dXMsIGVycm9yVGhyb3duXSk7XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuYWx3YXlzKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHRoYXQuX2RlaW5pdFByb2dyZXNzTGlzdGVuZXIobyk7XG4gICAgICAgICAgfSk7XG4gICAgICB9O1xuICAgICAgdGhpcy5fZW5oYW5jZVByb21pc2UocHJvbWlzZSk7XG4gICAgICBwcm9taXNlLmFib3J0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4ganFYSFIuYWJvcnQoKTtcbiAgICAgIH07XG4gICAgICB1cGxvYWQoKTtcbiAgICAgIHJldHVybiBwcm9taXNlO1xuICAgIH0sXG5cbiAgICBfYmVmb3JlU2VuZDogZnVuY3Rpb24gKGUsIGRhdGEpIHtcbiAgICAgIGlmICh0aGlzLl9hY3RpdmUgPT09IDApIHtcbiAgICAgICAgLy8gdGhlIHN0YXJ0IGNhbGxiYWNrIGlzIHRyaWdnZXJlZCB3aGVuIGFuIHVwbG9hZCBzdGFydHNcbiAgICAgICAgLy8gYW5kIG5vIG90aGVyIHVwbG9hZHMgYXJlIGN1cnJlbnRseSBydW5uaW5nLFxuICAgICAgICAvLyBlcXVpdmFsZW50IHRvIHRoZSBnbG9iYWwgYWpheFN0YXJ0IGV2ZW50OlxuICAgICAgICB0aGlzLl90cmlnZ2VyKCdzdGFydCcpO1xuICAgICAgICAvLyBTZXQgdGltZXIgZm9yIGdsb2JhbCBiaXRyYXRlIHByb2dyZXNzIGNhbGN1bGF0aW9uOlxuICAgICAgICB0aGlzLl9iaXRyYXRlVGltZXIgPSBuZXcgdGhpcy5fQml0cmF0ZVRpbWVyKCk7XG4gICAgICAgIC8vIFJlc2V0IHRoZSBnbG9iYWwgcHJvZ3Jlc3MgdmFsdWVzOlxuICAgICAgICB0aGlzLl9wcm9ncmVzcy5sb2FkZWQgPSB0aGlzLl9wcm9ncmVzcy50b3RhbCA9IDA7XG4gICAgICAgIHRoaXMuX3Byb2dyZXNzLmJpdHJhdGUgPSAwO1xuICAgICAgfVxuICAgICAgLy8gTWFrZSBzdXJlIHRoZSBjb250YWluZXIgb2JqZWN0cyBmb3IgdGhlIC5yZXNwb25zZSgpIGFuZFxuICAgICAgLy8gLnByb2dyZXNzKCkgbWV0aG9kcyBvbiB0aGUgZGF0YSBvYmplY3QgYXJlIGF2YWlsYWJsZVxuICAgICAgLy8gYW5kIHJlc2V0IHRvIHRoZWlyIGluaXRpYWwgc3RhdGU6XG4gICAgICB0aGlzLl9pbml0UmVzcG9uc2VPYmplY3QoZGF0YSk7XG4gICAgICB0aGlzLl9pbml0UHJvZ3Jlc3NPYmplY3QoZGF0YSk7XG4gICAgICBkYXRhLl9wcm9ncmVzcy5sb2FkZWQgPSBkYXRhLmxvYWRlZCA9IGRhdGEudXBsb2FkZWRCeXRlcyB8fCAwO1xuICAgICAgZGF0YS5fcHJvZ3Jlc3MudG90YWwgPSBkYXRhLnRvdGFsID0gdGhpcy5fZ2V0VG90YWwoZGF0YS5maWxlcykgfHwgMTtcbiAgICAgIGRhdGEuX3Byb2dyZXNzLmJpdHJhdGUgPSBkYXRhLmJpdHJhdGUgPSAwO1xuICAgICAgdGhpcy5fYWN0aXZlICs9IDE7XG4gICAgICAvLyBJbml0aWFsaXplIHRoZSBnbG9iYWwgcHJvZ3Jlc3MgdmFsdWVzOlxuICAgICAgdGhpcy5fcHJvZ3Jlc3MubG9hZGVkICs9IGRhdGEubG9hZGVkO1xuICAgICAgdGhpcy5fcHJvZ3Jlc3MudG90YWwgKz0gZGF0YS50b3RhbDtcbiAgICB9LFxuXG4gICAgX29uRG9uZTogZnVuY3Rpb24gKHJlc3VsdCwgdGV4dFN0YXR1cywganFYSFIsIG9wdGlvbnMpIHtcbiAgICAgIHZhciB0b3RhbCA9IG9wdGlvbnMuX3Byb2dyZXNzLnRvdGFsLFxuICAgICAgICByZXNwb25zZSA9IG9wdGlvbnMuX3Jlc3BvbnNlO1xuICAgICAgaWYgKG9wdGlvbnMuX3Byb2dyZXNzLmxvYWRlZCA8IHRvdGFsKSB7XG4gICAgICAgIC8vIENyZWF0ZSBhIHByb2dyZXNzIGV2ZW50IGlmIG5vIGZpbmFsIHByb2dyZXNzIGV2ZW50XG4gICAgICAgIC8vIHdpdGggbG9hZGVkIGVxdWFsaW5nIHRvdGFsIGhhcyBiZWVuIHRyaWdnZXJlZDpcbiAgICAgICAgdGhpcy5fb25Qcm9ncmVzcyhcbiAgICAgICAgICAkLkV2ZW50KCdwcm9ncmVzcycsIHtcbiAgICAgICAgICAgIGxlbmd0aENvbXB1dGFibGU6IHRydWUsXG4gICAgICAgICAgICBsb2FkZWQ6IHRvdGFsLFxuICAgICAgICAgICAgdG90YWw6IHRvdGFsXG4gICAgICAgICAgfSksXG4gICAgICAgICAgb3B0aW9uc1xuICAgICAgICApO1xuICAgICAgfVxuICAgICAgcmVzcG9uc2UucmVzdWx0ID0gb3B0aW9ucy5yZXN1bHQgPSByZXN1bHQ7XG4gICAgICByZXNwb25zZS50ZXh0U3RhdHVzID0gb3B0aW9ucy50ZXh0U3RhdHVzID0gdGV4dFN0YXR1cztcbiAgICAgIHJlc3BvbnNlLmpxWEhSID0gb3B0aW9ucy5qcVhIUiA9IGpxWEhSO1xuICAgICAgdGhpcy5fdHJpZ2dlcignZG9uZScsIG51bGwsIG9wdGlvbnMpO1xuICAgIH0sXG5cbiAgICBfb25GYWlsOiBmdW5jdGlvbiAoanFYSFIsIHRleHRTdGF0dXMsIGVycm9yVGhyb3duLCBvcHRpb25zKSB7XG4gICAgICB2YXIgcmVzcG9uc2UgPSBvcHRpb25zLl9yZXNwb25zZTtcbiAgICAgIGlmIChvcHRpb25zLnJlY2FsY3VsYXRlUHJvZ3Jlc3MpIHtcbiAgICAgICAgLy8gUmVtb3ZlIHRoZSBmYWlsZWQgKGVycm9yIG9yIGFib3J0KSBmaWxlIHVwbG9hZCBmcm9tXG4gICAgICAgIC8vIHRoZSBnbG9iYWwgcHJvZ3Jlc3MgY2FsY3VsYXRpb246XG4gICAgICAgIHRoaXMuX3Byb2dyZXNzLmxvYWRlZCAtPSBvcHRpb25zLl9wcm9ncmVzcy5sb2FkZWQ7XG4gICAgICAgIHRoaXMuX3Byb2dyZXNzLnRvdGFsIC09IG9wdGlvbnMuX3Byb2dyZXNzLnRvdGFsO1xuICAgICAgfVxuICAgICAgcmVzcG9uc2UuanFYSFIgPSBvcHRpb25zLmpxWEhSID0ganFYSFI7XG4gICAgICByZXNwb25zZS50ZXh0U3RhdHVzID0gb3B0aW9ucy50ZXh0U3RhdHVzID0gdGV4dFN0YXR1cztcbiAgICAgIHJlc3BvbnNlLmVycm9yVGhyb3duID0gb3B0aW9ucy5lcnJvclRocm93biA9IGVycm9yVGhyb3duO1xuICAgICAgdGhpcy5fdHJpZ2dlcignZmFpbCcsIG51bGwsIG9wdGlvbnMpO1xuICAgIH0sXG5cbiAgICBfb25BbHdheXM6IGZ1bmN0aW9uIChqcVhIUm9yUmVzdWx0LCB0ZXh0U3RhdHVzLCBqcVhIUm9yRXJyb3IsIG9wdGlvbnMpIHtcbiAgICAgIC8vIGpxWEhSb3JSZXN1bHQsIHRleHRTdGF0dXMgYW5kIGpxWEhSb3JFcnJvciBhcmUgYWRkZWQgdG8gdGhlXG4gICAgICAvLyBvcHRpb25zIG9iamVjdCB2aWEgZG9uZSBhbmQgZmFpbCBjYWxsYmFja3NcbiAgICAgIHRoaXMuX3RyaWdnZXIoJ2Fsd2F5cycsIG51bGwsIG9wdGlvbnMpO1xuICAgIH0sXG5cbiAgICBfb25TZW5kOiBmdW5jdGlvbiAoZSwgZGF0YSkge1xuICAgICAgaWYgKCFkYXRhLnN1Ym1pdCkge1xuICAgICAgICB0aGlzLl9hZGRDb252ZW5pZW5jZU1ldGhvZHMoZSwgZGF0YSk7XG4gICAgICB9XG4gICAgICB2YXIgdGhhdCA9IHRoaXMsXG4gICAgICAgIGpxWEhSLFxuICAgICAgICBhYm9ydGVkLFxuICAgICAgICBzbG90LFxuICAgICAgICBwaXBlLFxuICAgICAgICBvcHRpb25zID0gdGhhdC5fZ2V0QUpBWFNldHRpbmdzKGRhdGEpLFxuICAgICAgICBzZW5kID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHRoYXQuX3NlbmRpbmcgKz0gMTtcbiAgICAgICAgICAvLyBTZXQgdGltZXIgZm9yIGJpdHJhdGUgcHJvZ3Jlc3MgY2FsY3VsYXRpb246XG4gICAgICAgICAgb3B0aW9ucy5fYml0cmF0ZVRpbWVyID0gbmV3IHRoYXQuX0JpdHJhdGVUaW1lcigpO1xuICAgICAgICAgIGpxWEhSID1cbiAgICAgICAgICAgIGpxWEhSIHx8XG4gICAgICAgICAgICAoXG4gICAgICAgICAgICAgICgoYWJvcnRlZCB8fFxuICAgICAgICAgICAgICAgIHRoYXQuX3RyaWdnZXIoXG4gICAgICAgICAgICAgICAgICAnc2VuZCcsXG4gICAgICAgICAgICAgICAgICAkLkV2ZW50KCdzZW5kJywgeyBkZWxlZ2F0ZWRFdmVudDogZSB9KSxcbiAgICAgICAgICAgICAgICAgIG9wdGlvbnNcbiAgICAgICAgICAgICAgICApID09PSBmYWxzZSkgJiZcbiAgICAgICAgICAgICAgICB0aGF0Ll9nZXRYSFJQcm9taXNlKGZhbHNlLCBvcHRpb25zLmNvbnRleHQsIGFib3J0ZWQpKSB8fFxuICAgICAgICAgICAgICB0aGF0Ll9jaHVua2VkVXBsb2FkKG9wdGlvbnMpIHx8XG4gICAgICAgICAgICAgICQuYWpheChvcHRpb25zKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAuZG9uZShmdW5jdGlvbiAocmVzdWx0LCB0ZXh0U3RhdHVzLCBqcVhIUikge1xuICAgICAgICAgICAgICAgIHRoYXQuX29uRG9uZShyZXN1bHQsIHRleHRTdGF0dXMsIGpxWEhSLCBvcHRpb25zKTtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgLmZhaWwoZnVuY3Rpb24gKGpxWEhSLCB0ZXh0U3RhdHVzLCBlcnJvclRocm93bikge1xuICAgICAgICAgICAgICAgIHRoYXQuX29uRmFpbChqcVhIUiwgdGV4dFN0YXR1cywgZXJyb3JUaHJvd24sIG9wdGlvbnMpO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAuYWx3YXlzKGZ1bmN0aW9uIChqcVhIUm9yUmVzdWx0LCB0ZXh0U3RhdHVzLCBqcVhIUm9yRXJyb3IpIHtcbiAgICAgICAgICAgICAgICB0aGF0Ll9kZWluaXRQcm9ncmVzc0xpc3RlbmVyKG9wdGlvbnMpO1xuICAgICAgICAgICAgICAgIHRoYXQuX29uQWx3YXlzKFxuICAgICAgICAgICAgICAgICAganFYSFJvclJlc3VsdCxcbiAgICAgICAgICAgICAgICAgIHRleHRTdGF0dXMsXG4gICAgICAgICAgICAgICAgICBqcVhIUm9yRXJyb3IsXG4gICAgICAgICAgICAgICAgICBvcHRpb25zXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB0aGF0Ll9zZW5kaW5nIC09IDE7XG4gICAgICAgICAgICAgICAgdGhhdC5fYWN0aXZlIC09IDE7XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgb3B0aW9ucy5saW1pdENvbmN1cnJlbnRVcGxvYWRzICYmXG4gICAgICAgICAgICAgICAgICBvcHRpb25zLmxpbWl0Q29uY3VycmVudFVwbG9hZHMgPiB0aGF0Ll9zZW5kaW5nXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAvLyBTdGFydCB0aGUgbmV4dCBxdWV1ZWQgdXBsb2FkLFxuICAgICAgICAgICAgICAgICAgLy8gdGhhdCBoYXMgbm90IGJlZW4gYWJvcnRlZDpcbiAgICAgICAgICAgICAgICAgIHZhciBuZXh0U2xvdCA9IHRoYXQuX3Nsb3RzLnNoaWZ0KCk7XG4gICAgICAgICAgICAgICAgICB3aGlsZSAobmV4dFNsb3QpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoYXQuX2dldERlZmVycmVkU3RhdGUobmV4dFNsb3QpID09PSAncGVuZGluZycpIHtcbiAgICAgICAgICAgICAgICAgICAgICBuZXh0U2xvdC5yZXNvbHZlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgbmV4dFNsb3QgPSB0aGF0Ll9zbG90cy5zaGlmdCgpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodGhhdC5fYWN0aXZlID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAvLyBUaGUgc3RvcCBjYWxsYmFjayBpcyB0cmlnZ2VyZWQgd2hlbiBhbGwgdXBsb2FkcyBoYXZlXG4gICAgICAgICAgICAgICAgICAvLyBiZWVuIGNvbXBsZXRlZCwgZXF1aXZhbGVudCB0byB0aGUgZ2xvYmFsIGFqYXhTdG9wIGV2ZW50OlxuICAgICAgICAgICAgICAgICAgdGhhdC5fdHJpZ2dlcignc3RvcCcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuIGpxWEhSO1xuICAgICAgICB9O1xuICAgICAgdGhpcy5fYmVmb3JlU2VuZChlLCBvcHRpb25zKTtcbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy5vcHRpb25zLnNlcXVlbnRpYWxVcGxvYWRzIHx8XG4gICAgICAgICh0aGlzLm9wdGlvbnMubGltaXRDb25jdXJyZW50VXBsb2FkcyAmJlxuICAgICAgICAgIHRoaXMub3B0aW9ucy5saW1pdENvbmN1cnJlbnRVcGxvYWRzIDw9IHRoaXMuX3NlbmRpbmcpXG4gICAgICApIHtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5saW1pdENvbmN1cnJlbnRVcGxvYWRzID4gMSkge1xuICAgICAgICAgIHNsb3QgPSAkLkRlZmVycmVkKCk7XG4gICAgICAgICAgdGhpcy5fc2xvdHMucHVzaChzbG90KTtcbiAgICAgICAgICBwaXBlID0gc2xvdFt0aGF0Ll9wcm9taXNlUGlwZV0oc2VuZCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5fc2VxdWVuY2UgPSB0aGlzLl9zZXF1ZW5jZVt0aGF0Ll9wcm9taXNlUGlwZV0oc2VuZCwgc2VuZCk7XG4gICAgICAgICAgcGlwZSA9IHRoaXMuX3NlcXVlbmNlO1xuICAgICAgICB9XG4gICAgICAgIC8vIFJldHVybiB0aGUgcGlwZWQgUHJvbWlzZSBvYmplY3QsIGVuaGFuY2VkIHdpdGggYW4gYWJvcnQgbWV0aG9kLFxuICAgICAgICAvLyB3aGljaCBpcyBkZWxlZ2F0ZWQgdG8gdGhlIGpxWEhSIG9iamVjdCBvZiB0aGUgY3VycmVudCB1cGxvYWQsXG4gICAgICAgIC8vIGFuZCBqcVhIUiBjYWxsYmFja3MgbWFwcGVkIHRvIHRoZSBlcXVpdmFsZW50IFByb21pc2UgbWV0aG9kczpcbiAgICAgICAgcGlwZS5hYm9ydCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBhYm9ydGVkID0gW3VuZGVmaW5lZCwgJ2Fib3J0JywgJ2Fib3J0J107XG4gICAgICAgICAgaWYgKCFqcVhIUikge1xuICAgICAgICAgICAgaWYgKHNsb3QpIHtcbiAgICAgICAgICAgICAgc2xvdC5yZWplY3RXaXRoKG9wdGlvbnMuY29udGV4dCwgYWJvcnRlZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gc2VuZCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4ganFYSFIuYWJvcnQoKTtcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VuaGFuY2VQcm9taXNlKHBpcGUpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHNlbmQoKTtcbiAgICB9LFxuXG4gICAgX29uQWRkOiBmdW5jdGlvbiAoZSwgZGF0YSkge1xuICAgICAgdmFyIHRoYXQgPSB0aGlzLFxuICAgICAgICByZXN1bHQgPSB0cnVlLFxuICAgICAgICBvcHRpb25zID0gJC5leHRlbmQoe30sIHRoaXMub3B0aW9ucywgZGF0YSksXG4gICAgICAgIGZpbGVzID0gZGF0YS5maWxlcyxcbiAgICAgICAgZmlsZXNMZW5ndGggPSBmaWxlcy5sZW5ndGgsXG4gICAgICAgIGxpbWl0ID0gb3B0aW9ucy5saW1pdE11bHRpRmlsZVVwbG9hZHMsXG4gICAgICAgIGxpbWl0U2l6ZSA9IG9wdGlvbnMubGltaXRNdWx0aUZpbGVVcGxvYWRTaXplLFxuICAgICAgICBvdmVyaGVhZCA9IG9wdGlvbnMubGltaXRNdWx0aUZpbGVVcGxvYWRTaXplT3ZlcmhlYWQsXG4gICAgICAgIGJhdGNoU2l6ZSA9IDAsXG4gICAgICAgIHBhcmFtTmFtZSA9IHRoaXMuX2dldFBhcmFtTmFtZShvcHRpb25zKSxcbiAgICAgICAgcGFyYW1OYW1lU2V0LFxuICAgICAgICBwYXJhbU5hbWVTbGljZSxcbiAgICAgICAgZmlsZVNldCxcbiAgICAgICAgaSxcbiAgICAgICAgaiA9IDA7XG4gICAgICBpZiAoIWZpbGVzTGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmIChsaW1pdFNpemUgJiYgZmlsZXNbMF0uc2l6ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGxpbWl0U2l6ZSA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgIShvcHRpb25zLnNpbmdsZUZpbGVVcGxvYWRzIHx8IGxpbWl0IHx8IGxpbWl0U2l6ZSkgfHxcbiAgICAgICAgIXRoaXMuX2lzWEhSVXBsb2FkKG9wdGlvbnMpXG4gICAgICApIHtcbiAgICAgICAgZmlsZVNldCA9IFtmaWxlc107XG4gICAgICAgIHBhcmFtTmFtZVNldCA9IFtwYXJhbU5hbWVdO1xuICAgICAgfSBlbHNlIGlmICghKG9wdGlvbnMuc2luZ2xlRmlsZVVwbG9hZHMgfHwgbGltaXRTaXplKSAmJiBsaW1pdCkge1xuICAgICAgICBmaWxlU2V0ID0gW107XG4gICAgICAgIHBhcmFtTmFtZVNldCA9IFtdO1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgZmlsZXNMZW5ndGg7IGkgKz0gbGltaXQpIHtcbiAgICAgICAgICBmaWxlU2V0LnB1c2goZmlsZXMuc2xpY2UoaSwgaSArIGxpbWl0KSk7XG4gICAgICAgICAgcGFyYW1OYW1lU2xpY2UgPSBwYXJhbU5hbWUuc2xpY2UoaSwgaSArIGxpbWl0KTtcbiAgICAgICAgICBpZiAoIXBhcmFtTmFtZVNsaWNlLmxlbmd0aCkge1xuICAgICAgICAgICAgcGFyYW1OYW1lU2xpY2UgPSBwYXJhbU5hbWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHBhcmFtTmFtZVNldC5wdXNoKHBhcmFtTmFtZVNsaWNlKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICghb3B0aW9ucy5zaW5nbGVGaWxlVXBsb2FkcyAmJiBsaW1pdFNpemUpIHtcbiAgICAgICAgZmlsZVNldCA9IFtdO1xuICAgICAgICBwYXJhbU5hbWVTZXQgPSBbXTtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IGZpbGVzTGVuZ3RoOyBpID0gaSArIDEpIHtcbiAgICAgICAgICBiYXRjaFNpemUgKz0gZmlsZXNbaV0uc2l6ZSArIG92ZXJoZWFkO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGkgKyAxID09PSBmaWxlc0xlbmd0aCB8fFxuICAgICAgICAgICAgYmF0Y2hTaXplICsgZmlsZXNbaSArIDFdLnNpemUgKyBvdmVyaGVhZCA+IGxpbWl0U2l6ZSB8fFxuICAgICAgICAgICAgKGxpbWl0ICYmIGkgKyAxIC0gaiA+PSBsaW1pdClcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGZpbGVTZXQucHVzaChmaWxlcy5zbGljZShqLCBpICsgMSkpO1xuICAgICAgICAgICAgcGFyYW1OYW1lU2xpY2UgPSBwYXJhbU5hbWUuc2xpY2UoaiwgaSArIDEpO1xuICAgICAgICAgICAgaWYgKCFwYXJhbU5hbWVTbGljZS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgcGFyYW1OYW1lU2xpY2UgPSBwYXJhbU5hbWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwYXJhbU5hbWVTZXQucHVzaChwYXJhbU5hbWVTbGljZSk7XG4gICAgICAgICAgICBqID0gaSArIDE7XG4gICAgICAgICAgICBiYXRjaFNpemUgPSAwO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGFyYW1OYW1lU2V0ID0gcGFyYW1OYW1lO1xuICAgICAgfVxuICAgICAgZGF0YS5vcmlnaW5hbEZpbGVzID0gZmlsZXM7XG4gICAgICAkLmVhY2goZmlsZVNldCB8fCBmaWxlcywgZnVuY3Rpb24gKGluZGV4LCBlbGVtZW50KSB7XG4gICAgICAgIHZhciBuZXdEYXRhID0gJC5leHRlbmQoe30sIGRhdGEpO1xuICAgICAgICBuZXdEYXRhLmZpbGVzID0gZmlsZVNldCA/IGVsZW1lbnQgOiBbZWxlbWVudF07XG4gICAgICAgIG5ld0RhdGEucGFyYW1OYW1lID0gcGFyYW1OYW1lU2V0W2luZGV4XTtcbiAgICAgICAgdGhhdC5faW5pdFJlc3BvbnNlT2JqZWN0KG5ld0RhdGEpO1xuICAgICAgICB0aGF0Ll9pbml0UHJvZ3Jlc3NPYmplY3QobmV3RGF0YSk7XG4gICAgICAgIHRoYXQuX2FkZENvbnZlbmllbmNlTWV0aG9kcyhlLCBuZXdEYXRhKTtcbiAgICAgICAgcmVzdWx0ID0gdGhhdC5fdHJpZ2dlcihcbiAgICAgICAgICAnYWRkJyxcbiAgICAgICAgICAkLkV2ZW50KCdhZGQnLCB7IGRlbGVnYXRlZEV2ZW50OiBlIH0pLFxuICAgICAgICAgIG5ld0RhdGFcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9LFxuXG4gICAgX3JlcGxhY2VGaWxlSW5wdXQ6IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICB2YXIgaW5wdXQgPSBkYXRhLmZpbGVJbnB1dCxcbiAgICAgICAgaW5wdXRDbG9uZSA9IGlucHV0LmNsb25lKHRydWUpLFxuICAgICAgICByZXN0b3JlRm9jdXMgPSBpbnB1dC5pcyhkb2N1bWVudC5hY3RpdmVFbGVtZW50KTtcbiAgICAgIC8vIEFkZCBhIHJlZmVyZW5jZSBmb3IgdGhlIG5ldyBjbG9uZWQgZmlsZSBpbnB1dCB0byB0aGUgZGF0YSBhcmd1bWVudDpcbiAgICAgIGRhdGEuZmlsZUlucHV0Q2xvbmUgPSBpbnB1dENsb25lO1xuICAgICAgJCgnPGZvcm0+PC9mb3JtPicpLmFwcGVuZChpbnB1dENsb25lKVswXS5yZXNldCgpO1xuICAgICAgLy8gRGV0YWNoaW5nIGFsbG93cyB0byBpbnNlcnQgdGhlIGZpbGVJbnB1dCBvbiBhbm90aGVyIGZvcm1cbiAgICAgIC8vIHdpdGhvdXQgbG9zaW5nIHRoZSBmaWxlIGlucHV0IHZhbHVlOlxuICAgICAgaW5wdXQuYWZ0ZXIoaW5wdXRDbG9uZSkuZGV0YWNoKCk7XG4gICAgICAvLyBJZiB0aGUgZmlsZUlucHV0IGhhZCBmb2N1cyBiZWZvcmUgaXQgd2FzIGRldGFjaGVkLFxuICAgICAgLy8gcmVzdG9yZSBmb2N1cyB0byB0aGUgaW5wdXRDbG9uZS5cbiAgICAgIGlmIChyZXN0b3JlRm9jdXMpIHtcbiAgICAgICAgaW5wdXRDbG9uZS50cmlnZ2VyKCdmb2N1cycpO1xuICAgICAgfVxuICAgICAgLy8gQXZvaWQgbWVtb3J5IGxlYWtzIHdpdGggdGhlIGRldGFjaGVkIGZpbGUgaW5wdXQ6XG4gICAgICAkLmNsZWFuRGF0YShpbnB1dC5vZmYoJ3JlbW92ZScpKTtcbiAgICAgIC8vIFJlcGxhY2UgdGhlIG9yaWdpbmFsIGZpbGUgaW5wdXQgZWxlbWVudCBpbiB0aGUgZmlsZUlucHV0XG4gICAgICAvLyBlbGVtZW50cyBzZXQgd2l0aCB0aGUgY2xvbmUsIHdoaWNoIGhhcyBiZWVuIGNvcGllZCBpbmNsdWRpbmdcbiAgICAgIC8vIGV2ZW50IGhhbmRsZXJzOlxuICAgICAgdGhpcy5vcHRpb25zLmZpbGVJbnB1dCA9IHRoaXMub3B0aW9ucy5maWxlSW5wdXQubWFwKGZ1bmN0aW9uIChpLCBlbCkge1xuICAgICAgICBpZiAoZWwgPT09IGlucHV0WzBdKSB7XG4gICAgICAgICAgcmV0dXJuIGlucHV0Q2xvbmVbMF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGVsO1xuICAgICAgfSk7XG4gICAgICAvLyBJZiB0aGUgd2lkZ2V0IGhhcyBiZWVuIGluaXRpYWxpemVkIG9uIHRoZSBmaWxlIGlucHV0IGl0c2VsZixcbiAgICAgIC8vIG92ZXJyaWRlIHRoaXMuZWxlbWVudCB3aXRoIHRoZSBmaWxlIGlucHV0IGNsb25lOlxuICAgICAgaWYgKGlucHV0WzBdID09PSB0aGlzLmVsZW1lbnRbMF0pIHtcbiAgICAgICAgdGhpcy5lbGVtZW50ID0gaW5wdXRDbG9uZTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgX2hhbmRsZUZpbGVUcmVlRW50cnk6IGZ1bmN0aW9uIChlbnRyeSwgcGF0aCkge1xuICAgICAgdmFyIHRoYXQgPSB0aGlzLFxuICAgICAgICBkZmQgPSAkLkRlZmVycmVkKCksXG4gICAgICAgIGVudHJpZXMgPSBbXSxcbiAgICAgICAgZGlyUmVhZGVyLFxuICAgICAgICBlcnJvckhhbmRsZXIgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgIGlmIChlICYmICFlLmVudHJ5KSB7XG4gICAgICAgICAgICBlLmVudHJ5ID0gZW50cnk7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIFNpbmNlICQud2hlbiByZXR1cm5zIGltbWVkaWF0ZWx5IGlmIG9uZVxuICAgICAgICAgIC8vIERlZmVycmVkIGlzIHJlamVjdGVkLCB3ZSB1c2UgcmVzb2x2ZSBpbnN0ZWFkLlxuICAgICAgICAgIC8vIFRoaXMgYWxsb3dzIHZhbGlkIGZpbGVzIGFuZCBpbnZhbGlkIGl0ZW1zXG4gICAgICAgICAgLy8gdG8gYmUgcmV0dXJuZWQgdG9nZXRoZXIgaW4gb25lIHNldDpcbiAgICAgICAgICBkZmQucmVzb2x2ZShbZV0pO1xuICAgICAgICB9LFxuICAgICAgICBzdWNjZXNzSGFuZGxlciA9IGZ1bmN0aW9uIChlbnRyaWVzKSB7XG4gICAgICAgICAgdGhhdFxuICAgICAgICAgICAgLl9oYW5kbGVGaWxlVHJlZUVudHJpZXMoZW50cmllcywgcGF0aCArIGVudHJ5Lm5hbWUgKyAnLycpXG4gICAgICAgICAgICAuZG9uZShmdW5jdGlvbiAoZmlsZXMpIHtcbiAgICAgICAgICAgICAgZGZkLnJlc29sdmUoZmlsZXMpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5mYWlsKGVycm9ySGFuZGxlcik7XG4gICAgICAgIH0sXG4gICAgICAgIHJlYWRFbnRyaWVzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGRpclJlYWRlci5yZWFkRW50cmllcyhmdW5jdGlvbiAocmVzdWx0cykge1xuICAgICAgICAgICAgaWYgKCFyZXN1bHRzLmxlbmd0aCkge1xuICAgICAgICAgICAgICBzdWNjZXNzSGFuZGxlcihlbnRyaWVzKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGVudHJpZXMgPSBlbnRyaWVzLmNvbmNhdChyZXN1bHRzKTtcbiAgICAgICAgICAgICAgcmVhZEVudHJpZXMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LCBlcnJvckhhbmRsZXIpO1xuICAgICAgICB9O1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgICBwYXRoID0gcGF0aCB8fCAnJztcbiAgICAgIGlmIChlbnRyeS5pc0ZpbGUpIHtcbiAgICAgICAgaWYgKGVudHJ5Ll9maWxlKSB7XG4gICAgICAgICAgLy8gV29ya2Fyb3VuZCBmb3IgQ2hyb21lIGJ1ZyAjMTQ5NzM1XG4gICAgICAgICAgZW50cnkuX2ZpbGUucmVsYXRpdmVQYXRoID0gcGF0aDtcbiAgICAgICAgICBkZmQucmVzb2x2ZShlbnRyeS5fZmlsZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZW50cnkuZmlsZShmdW5jdGlvbiAoZmlsZSkge1xuICAgICAgICAgICAgZmlsZS5yZWxhdGl2ZVBhdGggPSBwYXRoO1xuICAgICAgICAgICAgZGZkLnJlc29sdmUoZmlsZSk7XG4gICAgICAgICAgfSwgZXJyb3JIYW5kbGVyKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChlbnRyeS5pc0RpcmVjdG9yeSkge1xuICAgICAgICBkaXJSZWFkZXIgPSBlbnRyeS5jcmVhdGVSZWFkZXIoKTtcbiAgICAgICAgcmVhZEVudHJpZXMoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFJldHVybiBhbiBlbXB0eSBsaXN0IGZvciBmaWxlIHN5c3RlbSBpdGVtc1xuICAgICAgICAvLyBvdGhlciB0aGFuIGZpbGVzIG9yIGRpcmVjdG9yaWVzOlxuICAgICAgICBkZmQucmVzb2x2ZShbXSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gZGZkLnByb21pc2UoKTtcbiAgICB9LFxuXG4gICAgX2hhbmRsZUZpbGVUcmVlRW50cmllczogZnVuY3Rpb24gKGVudHJpZXMsIHBhdGgpIHtcbiAgICAgIHZhciB0aGF0ID0gdGhpcztcbiAgICAgIHJldHVybiAkLndoZW5cbiAgICAgICAgLmFwcGx5KFxuICAgICAgICAgICQsXG4gICAgICAgICAgJC5tYXAoZW50cmllcywgZnVuY3Rpb24gKGVudHJ5KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhhdC5faGFuZGxlRmlsZVRyZWVFbnRyeShlbnRyeSwgcGF0aCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgICBbdGhpcy5fcHJvbWlzZVBpcGVdKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gQXJyYXkucHJvdG90eXBlLmNvbmNhdC5hcHBseShbXSwgYXJndW1lbnRzKTtcbiAgICAgICAgfSk7XG4gICAgfSxcblxuICAgIF9nZXREcm9wcGVkRmlsZXM6IGZ1bmN0aW9uIChkYXRhVHJhbnNmZXIpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICAgICAgZGF0YVRyYW5zZmVyID0gZGF0YVRyYW5zZmVyIHx8IHt9O1xuICAgICAgdmFyIGl0ZW1zID0gZGF0YVRyYW5zZmVyLml0ZW1zO1xuICAgICAgaWYgKFxuICAgICAgICBpdGVtcyAmJlxuICAgICAgICBpdGVtcy5sZW5ndGggJiZcbiAgICAgICAgKGl0ZW1zWzBdLndlYmtpdEdldEFzRW50cnkgfHwgaXRlbXNbMF0uZ2V0QXNFbnRyeSlcbiAgICAgICkge1xuICAgICAgICByZXR1cm4gdGhpcy5faGFuZGxlRmlsZVRyZWVFbnRyaWVzKFxuICAgICAgICAgICQubWFwKGl0ZW1zLCBmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICAgICAgdmFyIGVudHJ5O1xuICAgICAgICAgICAgaWYgKGl0ZW0ud2Via2l0R2V0QXNFbnRyeSkge1xuICAgICAgICAgICAgICBlbnRyeSA9IGl0ZW0ud2Via2l0R2V0QXNFbnRyeSgpO1xuICAgICAgICAgICAgICBpZiAoZW50cnkpIHtcbiAgICAgICAgICAgICAgICAvLyBXb3JrYXJvdW5kIGZvciBDaHJvbWUgYnVnICMxNDk3MzU6XG4gICAgICAgICAgICAgICAgZW50cnkuX2ZpbGUgPSBpdGVtLmdldEFzRmlsZSgpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiBlbnRyeTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBpdGVtLmdldEFzRW50cnkoKTtcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgcmV0dXJuICQuRGVmZXJyZWQoKS5yZXNvbHZlKCQubWFrZUFycmF5KGRhdGFUcmFuc2Zlci5maWxlcykpLnByb21pc2UoKTtcbiAgICB9LFxuXG4gICAgX2dldFNpbmdsZUZpbGVJbnB1dEZpbGVzOiBmdW5jdGlvbiAoZmlsZUlucHV0KSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgICAgIGZpbGVJbnB1dCA9ICQoZmlsZUlucHV0KTtcbiAgICAgIHZhciBlbnRyaWVzID0gZmlsZUlucHV0LnByb3AoJ2VudHJpZXMnKSxcbiAgICAgICAgZmlsZXMsXG4gICAgICAgIHZhbHVlO1xuICAgICAgaWYgKGVudHJpZXMgJiYgZW50cmllcy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hhbmRsZUZpbGVUcmVlRW50cmllcyhlbnRyaWVzKTtcbiAgICAgIH1cbiAgICAgIGZpbGVzID0gJC5tYWtlQXJyYXkoZmlsZUlucHV0LnByb3AoJ2ZpbGVzJykpO1xuICAgICAgaWYgKCFmaWxlcy5sZW5ndGgpIHtcbiAgICAgICAgdmFsdWUgPSBmaWxlSW5wdXQucHJvcCgndmFsdWUnKTtcbiAgICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICAgIHJldHVybiAkLkRlZmVycmVkKCkucmVzb2x2ZShbXSkucHJvbWlzZSgpO1xuICAgICAgICB9XG4gICAgICAgIC8vIElmIHRoZSBmaWxlcyBwcm9wZXJ0eSBpcyBub3QgYXZhaWxhYmxlLCB0aGUgYnJvd3NlciBkb2VzIG5vdFxuICAgICAgICAvLyBzdXBwb3J0IHRoZSBGaWxlIEFQSSBhbmQgd2UgYWRkIGEgcHNldWRvIEZpbGUgb2JqZWN0IHdpdGhcbiAgICAgICAgLy8gdGhlIGlucHV0IHZhbHVlIGFzIG5hbWUgd2l0aCBwYXRoIGluZm9ybWF0aW9uIHJlbW92ZWQ6XG4gICAgICAgIGZpbGVzID0gW3sgbmFtZTogdmFsdWUucmVwbGFjZSgvXi4qXFxcXC8sICcnKSB9XTtcbiAgICAgIH0gZWxzZSBpZiAoZmlsZXNbMF0ubmFtZSA9PT0gdW5kZWZpbmVkICYmIGZpbGVzWzBdLmZpbGVOYW1lKSB7XG4gICAgICAgIC8vIEZpbGUgbm9ybWFsaXphdGlvbiBmb3IgU2FmYXJpIDQgYW5kIEZpcmVmb3ggMzpcbiAgICAgICAgJC5lYWNoKGZpbGVzLCBmdW5jdGlvbiAoaW5kZXgsIGZpbGUpIHtcbiAgICAgICAgICBmaWxlLm5hbWUgPSBmaWxlLmZpbGVOYW1lO1xuICAgICAgICAgIGZpbGUuc2l6ZSA9IGZpbGUuZmlsZVNpemU7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuICQuRGVmZXJyZWQoKS5yZXNvbHZlKGZpbGVzKS5wcm9taXNlKCk7XG4gICAgfSxcblxuICAgIF9nZXRGaWxlSW5wdXRGaWxlczogZnVuY3Rpb24gKGZpbGVJbnB1dCkge1xuICAgICAgaWYgKCEoZmlsZUlucHV0IGluc3RhbmNlb2YgJCkgfHwgZmlsZUlucHV0Lmxlbmd0aCA9PT0gMSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0U2luZ2xlRmlsZUlucHV0RmlsZXMoZmlsZUlucHV0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiAkLndoZW5cbiAgICAgICAgLmFwcGx5KCQsICQubWFwKGZpbGVJbnB1dCwgdGhpcy5fZ2V0U2luZ2xlRmlsZUlucHV0RmlsZXMpKVxuICAgICAgICBbdGhpcy5fcHJvbWlzZVBpcGVdKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gQXJyYXkucHJvdG90eXBlLmNvbmNhdC5hcHBseShbXSwgYXJndW1lbnRzKTtcbiAgICAgICAgfSk7XG4gICAgfSxcblxuICAgIF9vbkNoYW5nZTogZnVuY3Rpb24gKGUpIHtcbiAgICAgIHZhciB0aGF0ID0gdGhpcyxcbiAgICAgICAgZGF0YSA9IHtcbiAgICAgICAgICBmaWxlSW5wdXQ6ICQoZS50YXJnZXQpLFxuICAgICAgICAgIGZvcm06ICQoZS50YXJnZXQuZm9ybSlcbiAgICAgICAgfTtcbiAgICAgIHRoaXMuX2dldEZpbGVJbnB1dEZpbGVzKGRhdGEuZmlsZUlucHV0KS5hbHdheXMoZnVuY3Rpb24gKGZpbGVzKSB7XG4gICAgICAgIGRhdGEuZmlsZXMgPSBmaWxlcztcbiAgICAgICAgaWYgKHRoYXQub3B0aW9ucy5yZXBsYWNlRmlsZUlucHV0KSB7XG4gICAgICAgICAgdGhhdC5fcmVwbGFjZUZpbGVJbnB1dChkYXRhKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoXG4gICAgICAgICAgdGhhdC5fdHJpZ2dlcihcbiAgICAgICAgICAgICdjaGFuZ2UnLFxuICAgICAgICAgICAgJC5FdmVudCgnY2hhbmdlJywgeyBkZWxlZ2F0ZWRFdmVudDogZSB9KSxcbiAgICAgICAgICAgIGRhdGFcbiAgICAgICAgICApICE9PSBmYWxzZVxuICAgICAgICApIHtcbiAgICAgICAgICB0aGF0Ll9vbkFkZChlLCBkYXRhKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSxcblxuICAgIF9vblBhc3RlOiBmdW5jdGlvbiAoZSkge1xuICAgICAgdmFyIGl0ZW1zID1cbiAgICAgICAgICBlLm9yaWdpbmFsRXZlbnQgJiZcbiAgICAgICAgICBlLm9yaWdpbmFsRXZlbnQuY2xpcGJvYXJkRGF0YSAmJlxuICAgICAgICAgIGUub3JpZ2luYWxFdmVudC5jbGlwYm9hcmREYXRhLml0ZW1zLFxuICAgICAgICBkYXRhID0geyBmaWxlczogW10gfTtcbiAgICAgIGlmIChpdGVtcyAmJiBpdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgJC5lYWNoKGl0ZW1zLCBmdW5jdGlvbiAoaW5kZXgsIGl0ZW0pIHtcbiAgICAgICAgICB2YXIgZmlsZSA9IGl0ZW0uZ2V0QXNGaWxlICYmIGl0ZW0uZ2V0QXNGaWxlKCk7XG4gICAgICAgICAgaWYgKGZpbGUpIHtcbiAgICAgICAgICAgIGRhdGEuZmlsZXMucHVzaChmaWxlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgdGhpcy5fdHJpZ2dlcihcbiAgICAgICAgICAgICdwYXN0ZScsXG4gICAgICAgICAgICAkLkV2ZW50KCdwYXN0ZScsIHsgZGVsZWdhdGVkRXZlbnQ6IGUgfSksXG4gICAgICAgICAgICBkYXRhXG4gICAgICAgICAgKSAhPT0gZmFsc2VcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5fb25BZGQoZSwgZGF0YSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuXG4gICAgX29uRHJvcDogZnVuY3Rpb24gKGUpIHtcbiAgICAgIGUuZGF0YVRyYW5zZmVyID0gZS5vcmlnaW5hbEV2ZW50ICYmIGUub3JpZ2luYWxFdmVudC5kYXRhVHJhbnNmZXI7XG4gICAgICB2YXIgdGhhdCA9IHRoaXMsXG4gICAgICAgIGRhdGFUcmFuc2ZlciA9IGUuZGF0YVRyYW5zZmVyLFxuICAgICAgICBkYXRhID0ge307XG4gICAgICBpZiAoZGF0YVRyYW5zZmVyICYmIGRhdGFUcmFuc2Zlci5maWxlcyAmJiBkYXRhVHJhbnNmZXIuZmlsZXMubGVuZ3RoKSB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5fZ2V0RHJvcHBlZEZpbGVzKGRhdGFUcmFuc2ZlcikuYWx3YXlzKGZ1bmN0aW9uIChmaWxlcykge1xuICAgICAgICAgIGRhdGEuZmlsZXMgPSBmaWxlcztcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGF0Ll90cmlnZ2VyKFxuICAgICAgICAgICAgICAnZHJvcCcsXG4gICAgICAgICAgICAgICQuRXZlbnQoJ2Ryb3AnLCB7IGRlbGVnYXRlZEV2ZW50OiBlIH0pLFxuICAgICAgICAgICAgICBkYXRhXG4gICAgICAgICAgICApICE9PSBmYWxzZVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgdGhhdC5fb25BZGQoZSwgZGF0YSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgX29uRHJhZ092ZXI6IGdldERyYWdIYW5kbGVyKCdkcmFnb3ZlcicpLFxuXG4gICAgX29uRHJhZ0VudGVyOiBnZXREcmFnSGFuZGxlcignZHJhZ2VudGVyJyksXG5cbiAgICBfb25EcmFnTGVhdmU6IGdldERyYWdIYW5kbGVyKCdkcmFnbGVhdmUnKSxcblxuICAgIF9pbml0RXZlbnRIYW5kbGVyczogZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKHRoaXMuX2lzWEhSVXBsb2FkKHRoaXMub3B0aW9ucykpIHtcbiAgICAgICAgdGhpcy5fb24odGhpcy5vcHRpb25zLmRyb3Bab25lLCB7XG4gICAgICAgICAgZHJhZ292ZXI6IHRoaXMuX29uRHJhZ092ZXIsXG4gICAgICAgICAgZHJvcDogdGhpcy5fb25Ecm9wLFxuICAgICAgICAgIC8vIGV2ZW50LnByZXZlbnREZWZhdWx0KCkgb24gZHJhZ2VudGVyIGlzIHJlcXVpcmVkIGZvciBJRTEwKzpcbiAgICAgICAgICBkcmFnZW50ZXI6IHRoaXMuX29uRHJhZ0VudGVyLFxuICAgICAgICAgIC8vIGRyYWdsZWF2ZSBpcyBub3QgcmVxdWlyZWQsIGJ1dCBhZGRlZCBmb3IgY29tcGxldGVuZXNzOlxuICAgICAgICAgIGRyYWdsZWF2ZTogdGhpcy5fb25EcmFnTGVhdmVcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX29uKHRoaXMub3B0aW9ucy5wYXN0ZVpvbmUsIHtcbiAgICAgICAgICBwYXN0ZTogdGhpcy5fb25QYXN0ZVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGlmICgkLnN1cHBvcnQuZmlsZUlucHV0KSB7XG4gICAgICAgIHRoaXMuX29uKHRoaXMub3B0aW9ucy5maWxlSW5wdXQsIHtcbiAgICAgICAgICBjaGFuZ2U6IHRoaXMuX29uQ2hhbmdlXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBfZGVzdHJveUV2ZW50SGFuZGxlcnM6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHRoaXMuX29mZih0aGlzLm9wdGlvbnMuZHJvcFpvbmUsICdkcmFnZW50ZXIgZHJhZ2xlYXZlIGRyYWdvdmVyIGRyb3AnKTtcbiAgICAgIHRoaXMuX29mZih0aGlzLm9wdGlvbnMucGFzdGVab25lLCAncGFzdGUnKTtcbiAgICAgIHRoaXMuX29mZih0aGlzLm9wdGlvbnMuZmlsZUlucHV0LCAnY2hhbmdlJyk7XG4gICAgfSxcblxuICAgIF9kZXN0cm95OiBmdW5jdGlvbiAoKSB7XG4gICAgICB0aGlzLl9kZXN0cm95RXZlbnRIYW5kbGVycygpO1xuICAgIH0sXG5cbiAgICBfc2V0T3B0aW9uOiBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICAgICAgdmFyIHJlaW5pdCA9ICQuaW5BcnJheShrZXksIHRoaXMuX3NwZWNpYWxPcHRpb25zKSAhPT0gLTE7XG4gICAgICBpZiAocmVpbml0KSB7XG4gICAgICAgIHRoaXMuX2Rlc3Ryb3lFdmVudEhhbmRsZXJzKCk7XG4gICAgICB9XG4gICAgICB0aGlzLl9zdXBlcihrZXksIHZhbHVlKTtcbiAgICAgIGlmIChyZWluaXQpIHtcbiAgICAgICAgdGhpcy5faW5pdFNwZWNpYWxPcHRpb25zKCk7XG4gICAgICAgIHRoaXMuX2luaXRFdmVudEhhbmRsZXJzKCk7XG4gICAgICB9XG4gICAgfSxcblxuICAgIF9pbml0U3BlY2lhbE9wdGlvbnM6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBvcHRpb25zID0gdGhpcy5vcHRpb25zO1xuICAgICAgaWYgKG9wdGlvbnMuZmlsZUlucHV0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgb3B0aW9ucy5maWxlSW5wdXQgPSB0aGlzLmVsZW1lbnQuaXMoJ2lucHV0W3R5cGU9XCJmaWxlXCJdJylcbiAgICAgICAgICA/IHRoaXMuZWxlbWVudFxuICAgICAgICAgIDogdGhpcy5lbGVtZW50LmZpbmQoJ2lucHV0W3R5cGU9XCJmaWxlXCJdJyk7XG4gICAgICB9IGVsc2UgaWYgKCEob3B0aW9ucy5maWxlSW5wdXQgaW5zdGFuY2VvZiAkKSkge1xuICAgICAgICBvcHRpb25zLmZpbGVJbnB1dCA9ICQob3B0aW9ucy5maWxlSW5wdXQpO1xuICAgICAgfVxuICAgICAgaWYgKCEob3B0aW9ucy5kcm9wWm9uZSBpbnN0YW5jZW9mICQpKSB7XG4gICAgICAgIG9wdGlvbnMuZHJvcFpvbmUgPSAkKG9wdGlvbnMuZHJvcFpvbmUpO1xuICAgICAgfVxuICAgICAgaWYgKCEob3B0aW9ucy5wYXN0ZVpvbmUgaW5zdGFuY2VvZiAkKSkge1xuICAgICAgICBvcHRpb25zLnBhc3RlWm9uZSA9ICQob3B0aW9ucy5wYXN0ZVpvbmUpO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBfZ2V0UmVnRXhwOiBmdW5jdGlvbiAoc3RyKSB7XG4gICAgICB2YXIgcGFydHMgPSBzdHIuc3BsaXQoJy8nKSxcbiAgICAgICAgbW9kaWZpZXJzID0gcGFydHMucG9wKCk7XG4gICAgICBwYXJ0cy5zaGlmdCgpO1xuICAgICAgcmV0dXJuIG5ldyBSZWdFeHAocGFydHMuam9pbignLycpLCBtb2RpZmllcnMpO1xuICAgIH0sXG5cbiAgICBfaXNSZWdFeHBPcHRpb246IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICBrZXkgIT09ICd1cmwnICYmXG4gICAgICAgICQudHlwZSh2YWx1ZSkgPT09ICdzdHJpbmcnICYmXG4gICAgICAgIC9eXFwvLipcXC9baWdtXXswLDN9JC8udGVzdCh2YWx1ZSlcbiAgICAgICk7XG4gICAgfSxcblxuICAgIF9pbml0RGF0YUF0dHJpYnV0ZXM6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciB0aGF0ID0gdGhpcyxcbiAgICAgICAgb3B0aW9ucyA9IHRoaXMub3B0aW9ucyxcbiAgICAgICAgZGF0YSA9IHRoaXMuZWxlbWVudC5kYXRhKCk7XG4gICAgICAvLyBJbml0aWFsaXplIG9wdGlvbnMgc2V0IHZpYSBIVE1MNSBkYXRhLWF0dHJpYnV0ZXM6XG4gICAgICAkLmVhY2godGhpcy5lbGVtZW50WzBdLmF0dHJpYnV0ZXMsIGZ1bmN0aW9uIChpbmRleCwgYXR0cikge1xuICAgICAgICB2YXIga2V5ID0gYXR0ci5uYW1lLnRvTG93ZXJDYXNlKCksXG4gICAgICAgICAgdmFsdWU7XG4gICAgICAgIGlmICgvXmRhdGEtLy50ZXN0KGtleSkpIHtcbiAgICAgICAgICAvLyBDb252ZXJ0IGh5cGhlbi1hdGVkIGtleSB0byBjYW1lbENhc2U6XG4gICAgICAgICAga2V5ID0ga2V5LnNsaWNlKDUpLnJlcGxhY2UoLy1bYS16XS9nLCBmdW5jdGlvbiAoc3RyKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyLmNoYXJBdCgxKS50b1VwcGVyQ2FzZSgpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHZhbHVlID0gZGF0YVtrZXldO1xuICAgICAgICAgIGlmICh0aGF0Ll9pc1JlZ0V4cE9wdGlvbihrZXksIHZhbHVlKSkge1xuICAgICAgICAgICAgdmFsdWUgPSB0aGF0Ll9nZXRSZWdFeHAodmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBvcHRpb25zW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSxcblxuICAgIF9jcmVhdGU6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHRoaXMuX2luaXREYXRhQXR0cmlidXRlcygpO1xuICAgICAgdGhpcy5faW5pdFNwZWNpYWxPcHRpb25zKCk7XG4gICAgICB0aGlzLl9zbG90cyA9IFtdO1xuICAgICAgdGhpcy5fc2VxdWVuY2UgPSB0aGlzLl9nZXRYSFJQcm9taXNlKHRydWUpO1xuICAgICAgdGhpcy5fc2VuZGluZyA9IHRoaXMuX2FjdGl2ZSA9IDA7XG4gICAgICB0aGlzLl9pbml0UHJvZ3Jlc3NPYmplY3QodGhpcyk7XG4gICAgICB0aGlzLl9pbml0RXZlbnRIYW5kbGVycygpO1xuICAgIH0sXG5cbiAgICAvLyBUaGlzIG1ldGhvZCBpcyBleHBvc2VkIHRvIHRoZSB3aWRnZXQgQVBJIGFuZCBhbGxvd3MgdG8gcXVlcnlcbiAgICAvLyB0aGUgbnVtYmVyIG9mIGFjdGl2ZSB1cGxvYWRzOlxuICAgIGFjdGl2ZTogZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX2FjdGl2ZTtcbiAgICB9LFxuXG4gICAgLy8gVGhpcyBtZXRob2QgaXMgZXhwb3NlZCB0byB0aGUgd2lkZ2V0IEFQSSBhbmQgYWxsb3dzIHRvIHF1ZXJ5XG4gICAgLy8gdGhlIHdpZGdldCB1cGxvYWQgcHJvZ3Jlc3MuXG4gICAgLy8gSXQgcmV0dXJucyBhbiBvYmplY3Qgd2l0aCBsb2FkZWQsIHRvdGFsIGFuZCBiaXRyYXRlIHByb3BlcnRpZXNcbiAgICAvLyBmb3IgdGhlIHJ1bm5pbmcgdXBsb2FkczpcbiAgICBwcm9ncmVzczogZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3Byb2dyZXNzO1xuICAgIH0sXG5cbiAgICAvLyBUaGlzIG1ldGhvZCBpcyBleHBvc2VkIHRvIHRoZSB3aWRnZXQgQVBJIGFuZCBhbGxvd3MgYWRkaW5nIGZpbGVzXG4gICAgLy8gdXNpbmcgdGhlIGZpbGV1cGxvYWQgQVBJLiBUaGUgZGF0YSBwYXJhbWV0ZXIgYWNjZXB0cyBhbiBvYmplY3Qgd2hpY2hcbiAgICAvLyBtdXN0IGhhdmUgYSBmaWxlcyBwcm9wZXJ0eSBhbmQgY2FuIGNvbnRhaW4gYWRkaXRpb25hbCBvcHRpb25zOlxuICAgIC8vIC5maWxldXBsb2FkKCdhZGQnLCB7ZmlsZXM6IGZpbGVzTGlzdH0pO1xuICAgIGFkZDogZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgIHZhciB0aGF0ID0gdGhpcztcbiAgICAgIGlmICghZGF0YSB8fCB0aGlzLm9wdGlvbnMuZGlzYWJsZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGRhdGEuZmlsZUlucHV0ICYmICFkYXRhLmZpbGVzKSB7XG4gICAgICAgIHRoaXMuX2dldEZpbGVJbnB1dEZpbGVzKGRhdGEuZmlsZUlucHV0KS5hbHdheXMoZnVuY3Rpb24gKGZpbGVzKSB7XG4gICAgICAgICAgZGF0YS5maWxlcyA9IGZpbGVzO1xuICAgICAgICAgIHRoYXQuX29uQWRkKG51bGwsIGRhdGEpO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRhdGEuZmlsZXMgPSAkLm1ha2VBcnJheShkYXRhLmZpbGVzKTtcbiAgICAgICAgdGhpcy5fb25BZGQobnVsbCwgZGF0YSk7XG4gICAgICB9XG4gICAgfSxcblxuICAgIC8vIFRoaXMgbWV0aG9kIGlzIGV4cG9zZWQgdG8gdGhlIHdpZGdldCBBUEkgYW5kIGFsbG93cyBzZW5kaW5nIGZpbGVzXG4gICAgLy8gdXNpbmcgdGhlIGZpbGV1cGxvYWQgQVBJLiBUaGUgZGF0YSBwYXJhbWV0ZXIgYWNjZXB0cyBhbiBvYmplY3Qgd2hpY2hcbiAgICAvLyBtdXN0IGhhdmUgYSBmaWxlcyBvciBmaWxlSW5wdXQgcHJvcGVydHkgYW5kIGNhbiBjb250YWluIGFkZGl0aW9uYWwgb3B0aW9uczpcbiAgICAvLyAuZmlsZXVwbG9hZCgnc2VuZCcsIHtmaWxlczogZmlsZXNMaXN0fSk7XG4gICAgLy8gVGhlIG1ldGhvZCByZXR1cm5zIGEgUHJvbWlzZSBvYmplY3QgZm9yIHRoZSBmaWxlIHVwbG9hZCBjYWxsLlxuICAgIHNlbmQ6IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICBpZiAoZGF0YSAmJiAhdGhpcy5vcHRpb25zLmRpc2FibGVkKSB7XG4gICAgICAgIGlmIChkYXRhLmZpbGVJbnB1dCAmJiAhZGF0YS5maWxlcykge1xuICAgICAgICAgIHZhciB0aGF0ID0gdGhpcyxcbiAgICAgICAgICAgIGRmZCA9ICQuRGVmZXJyZWQoKSxcbiAgICAgICAgICAgIHByb21pc2UgPSBkZmQucHJvbWlzZSgpLFxuICAgICAgICAgICAganFYSFIsXG4gICAgICAgICAgICBhYm9ydGVkO1xuICAgICAgICAgIHByb21pc2UuYWJvcnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBhYm9ydGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIGlmIChqcVhIUikge1xuICAgICAgICAgICAgICByZXR1cm4ganFYSFIuYWJvcnQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRmZC5yZWplY3QobnVsbCwgJ2Fib3J0JywgJ2Fib3J0Jyk7XG4gICAgICAgICAgICByZXR1cm4gcHJvbWlzZTtcbiAgICAgICAgICB9O1xuICAgICAgICAgIHRoaXMuX2dldEZpbGVJbnB1dEZpbGVzKGRhdGEuZmlsZUlucHV0KS5hbHdheXMoZnVuY3Rpb24gKGZpbGVzKSB7XG4gICAgICAgICAgICBpZiAoYWJvcnRlZCkge1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWZpbGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgICBkZmQucmVqZWN0KCk7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRhdGEuZmlsZXMgPSBmaWxlcztcbiAgICAgICAgICAgIGpxWEhSID0gdGhhdC5fb25TZW5kKG51bGwsIGRhdGEpO1xuICAgICAgICAgICAganFYSFIudGhlbihcbiAgICAgICAgICAgICAgZnVuY3Rpb24gKHJlc3VsdCwgdGV4dFN0YXR1cywganFYSFIpIHtcbiAgICAgICAgICAgICAgICBkZmQucmVzb2x2ZShyZXN1bHQsIHRleHRTdGF0dXMsIGpxWEhSKTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgZnVuY3Rpb24gKGpxWEhSLCB0ZXh0U3RhdHVzLCBlcnJvclRocm93bikge1xuICAgICAgICAgICAgICAgIGRmZC5yZWplY3QoanFYSFIsIHRleHRTdGF0dXMsIGVycm9yVGhyb3duKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm4gdGhpcy5fZW5oYW5jZVByb21pc2UocHJvbWlzZSk7XG4gICAgICAgIH1cbiAgICAgICAgZGF0YS5maWxlcyA9ICQubWFrZUFycmF5KGRhdGEuZmlsZXMpO1xuICAgICAgICBpZiAoZGF0YS5maWxlcy5sZW5ndGgpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5fb25TZW5kKG51bGwsIGRhdGEpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5fZ2V0WEhSUHJvbWlzZShmYWxzZSwgZGF0YSAmJiBkYXRhLmNvbnRleHQpO1xuICAgIH1cbiAgfSk7XG59KTtcbiIsIi8qXG4gKiBqUXVlcnkgSWZyYW1lIFRyYW5zcG9ydCBQbHVnaW5cbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9ibHVlaW1wL2pRdWVyeS1GaWxlLVVwbG9hZFxuICpcbiAqIENvcHlyaWdodCAyMDExLCBTZWJhc3RpYW4gVHNjaGFuXG4gKiBodHRwczovL2JsdWVpbXAubmV0XG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlOlxuICogaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVRcbiAqL1xuXG4vKiBnbG9iYWwgZGVmaW5lLCByZXF1aXJlICovXG5cbihmdW5jdGlvbiAoZmFjdG9yeSkge1xuICAndXNlIHN0cmljdCc7XG4gIGlmICh0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpIHtcbiAgICAvLyBSZWdpc3RlciBhcyBhbiBhbm9ueW1vdXMgQU1EIG1vZHVsZTpcbiAgICBkZWZpbmUoWydqcXVlcnknXSwgZmFjdG9yeSk7XG4gIH0gZWxzZSBpZiAodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKSB7XG4gICAgLy8gTm9kZS9Db21tb25KUzpcbiAgICBmYWN0b3J5KHJlcXVpcmUoJ2pxdWVyeScpKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBCcm93c2VyIGdsb2JhbHM6XG4gICAgZmFjdG9yeSh3aW5kb3cualF1ZXJ5KTtcbiAgfVxufSkoZnVuY3Rpb24gKCQpIHtcbiAgJ3VzZSBzdHJpY3QnO1xuXG4gIC8vIEhlbHBlciB2YXJpYWJsZSB0byBjcmVhdGUgdW5pcXVlIG5hbWVzIGZvciB0aGUgdHJhbnNwb3J0IGlmcmFtZXM6XG4gIHZhciBjb3VudGVyID0gMCxcbiAgICBqc29uQVBJID0gJCxcbiAgICBqc29uUGFyc2UgPSAncGFyc2VKU09OJztcblxuICBpZiAoJ0pTT04nIGluIHdpbmRvdyAmJiAncGFyc2UnIGluIEpTT04pIHtcbiAgICBqc29uQVBJID0gSlNPTjtcbiAgICBqc29uUGFyc2UgPSAncGFyc2UnO1xuICB9XG5cbiAgLy8gVGhlIGlmcmFtZSB0cmFuc3BvcnQgYWNjZXB0cyBmb3VyIGFkZGl0aW9uYWwgb3B0aW9uczpcbiAgLy8gb3B0aW9ucy5maWxlSW5wdXQ6IGEgalF1ZXJ5IGNvbGxlY3Rpb24gb2YgZmlsZSBpbnB1dCBmaWVsZHNcbiAgLy8gb3B0aW9ucy5wYXJhbU5hbWU6IHRoZSBwYXJhbWV0ZXIgbmFtZSBmb3IgdGhlIGZpbGUgZm9ybSBkYXRhLFxuICAvLyAgb3ZlcnJpZGVzIHRoZSBuYW1lIHByb3BlcnR5IG9mIHRoZSBmaWxlIGlucHV0IGZpZWxkKHMpLFxuICAvLyAgY2FuIGJlIGEgc3RyaW5nIG9yIGFuIGFycmF5IG9mIHN0cmluZ3MuXG4gIC8vIG9wdGlvbnMuZm9ybURhdGE6IGFuIGFycmF5IG9mIG9iamVjdHMgd2l0aCBuYW1lIGFuZCB2YWx1ZSBwcm9wZXJ0aWVzLFxuICAvLyAgZXF1aXZhbGVudCB0byB0aGUgcmV0dXJuIGRhdGEgb2YgLnNlcmlhbGl6ZUFycmF5KCksIGUuZy46XG4gIC8vICBbe25hbWU6ICdhJywgdmFsdWU6IDF9LCB7bmFtZTogJ2InLCB2YWx1ZTogMn1dXG4gIC8vIG9wdGlvbnMuaW5pdGlhbElmcmFtZVNyYzogdGhlIFVSTCBvZiB0aGUgaW5pdGlhbCBpZnJhbWUgc3JjLFxuICAvLyAgYnkgZGVmYXVsdCBzZXQgdG8gXCJqYXZhc2NyaXB0OmZhbHNlO1wiXG4gICQuYWpheFRyYW5zcG9ydCgnaWZyYW1lJywgZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICBpZiAob3B0aW9ucy5hc3luYykge1xuICAgICAgLy8gamF2YXNjcmlwdDpmYWxzZSBhcyBpbml0aWFsIGlmcmFtZSBzcmNcbiAgICAgIC8vIHByZXZlbnRzIHdhcm5pbmcgcG9wdXBzIG9uIEhUVFBTIGluIElFNjpcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zY3JpcHQtdXJsXG4gICAgICB2YXIgaW5pdGlhbElmcmFtZVNyYyA9IG9wdGlvbnMuaW5pdGlhbElmcmFtZVNyYyB8fCAnamF2YXNjcmlwdDpmYWxzZTsnLFxuICAgICAgICBmb3JtLFxuICAgICAgICBpZnJhbWUsXG4gICAgICAgIGFkZFBhcmFtQ2hhcjtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHNlbmQ6IGZ1bmN0aW9uIChfLCBjb21wbGV0ZUNhbGxiYWNrKSB7XG4gICAgICAgICAgZm9ybSA9ICQoJzxmb3JtIHN0eWxlPVwiZGlzcGxheTpub25lO1wiPjwvZm9ybT4nKTtcbiAgICAgICAgICBmb3JtLmF0dHIoJ2FjY2VwdC1jaGFyc2V0Jywgb3B0aW9ucy5mb3JtQWNjZXB0Q2hhcnNldCk7XG4gICAgICAgICAgYWRkUGFyYW1DaGFyID0gL1xcPy8udGVzdChvcHRpb25zLnVybCkgPyAnJicgOiAnPyc7XG4gICAgICAgICAgLy8gWERvbWFpblJlcXVlc3Qgb25seSBzdXBwb3J0cyBHRVQgYW5kIFBPU1Q6XG4gICAgICAgICAgaWYgKG9wdGlvbnMudHlwZSA9PT0gJ0RFTEVURScpIHtcbiAgICAgICAgICAgIG9wdGlvbnMudXJsID0gb3B0aW9ucy51cmwgKyBhZGRQYXJhbUNoYXIgKyAnX21ldGhvZD1ERUxFVEUnO1xuICAgICAgICAgICAgb3B0aW9ucy50eXBlID0gJ1BPU1QnO1xuICAgICAgICAgIH0gZWxzZSBpZiAob3B0aW9ucy50eXBlID09PSAnUFVUJykge1xuICAgICAgICAgICAgb3B0aW9ucy51cmwgPSBvcHRpb25zLnVybCArIGFkZFBhcmFtQ2hhciArICdfbWV0aG9kPVBVVCc7XG4gICAgICAgICAgICBvcHRpb25zLnR5cGUgPSAnUE9TVCc7XG4gICAgICAgICAgfSBlbHNlIGlmIChvcHRpb25zLnR5cGUgPT09ICdQQVRDSCcpIHtcbiAgICAgICAgICAgIG9wdGlvbnMudXJsID0gb3B0aW9ucy51cmwgKyBhZGRQYXJhbUNoYXIgKyAnX21ldGhvZD1QQVRDSCc7XG4gICAgICAgICAgICBvcHRpb25zLnR5cGUgPSAnUE9TVCc7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIElFIHZlcnNpb25zIGJlbG93IElFOCBjYW5ub3Qgc2V0IHRoZSBuYW1lIHByb3BlcnR5IG9mXG4gICAgICAgICAgLy8gZWxlbWVudHMgdGhhdCBoYXZlIGFscmVhZHkgYmVlbiBhZGRlZCB0byB0aGUgRE9NLFxuICAgICAgICAgIC8vIHNvIHdlIHNldCB0aGUgbmFtZSBhbG9uZyB3aXRoIHRoZSBpZnJhbWUgSFRNTCBtYXJrdXA6XG4gICAgICAgICAgY291bnRlciArPSAxO1xuICAgICAgICAgIGlmcmFtZSA9ICQoXG4gICAgICAgICAgICAnPGlmcmFtZSBzcmM9XCInICtcbiAgICAgICAgICAgICAgaW5pdGlhbElmcmFtZVNyYyArXG4gICAgICAgICAgICAgICdcIiBuYW1lPVwiaWZyYW1lLXRyYW5zcG9ydC0nICtcbiAgICAgICAgICAgICAgY291bnRlciArXG4gICAgICAgICAgICAgICdcIj48L2lmcmFtZT4nXG4gICAgICAgICAgKS5vbignbG9hZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBmaWxlSW5wdXRDbG9uZXMsXG4gICAgICAgICAgICAgIHBhcmFtTmFtZXMgPSAkLmlzQXJyYXkob3B0aW9ucy5wYXJhbU5hbWUpXG4gICAgICAgICAgICAgICAgPyBvcHRpb25zLnBhcmFtTmFtZVxuICAgICAgICAgICAgICAgIDogW29wdGlvbnMucGFyYW1OYW1lXTtcbiAgICAgICAgICAgIGlmcmFtZS5vZmYoJ2xvYWQnKS5vbignbG9hZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlO1xuICAgICAgICAgICAgICAvLyBXcmFwIGluIGEgdHJ5L2NhdGNoIGJsb2NrIHRvIGNhdGNoIGV4Y2VwdGlvbnMgdGhyb3duXG4gICAgICAgICAgICAgIC8vIHdoZW4gdHJ5aW5nIHRvIGFjY2VzcyBjcm9zcy1kb21haW4gaWZyYW1lIGNvbnRlbnRzOlxuICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gaWZyYW1lLmNvbnRlbnRzKCk7XG4gICAgICAgICAgICAgICAgLy8gR29vZ2xlIENocm9tZSBhbmQgRmlyZWZveCBkbyBub3QgdGhyb3cgYW5cbiAgICAgICAgICAgICAgICAvLyBleGNlcHRpb24gd2hlbiBjYWxsaW5nIGlmcmFtZS5jb250ZW50cygpIG9uXG4gICAgICAgICAgICAgICAgLy8gY3Jvc3MtZG9tYWluIHJlcXVlc3RzLCBzbyB3ZSB1bmlmeSB0aGUgcmVzcG9uc2U6XG4gICAgICAgICAgICAgICAgaWYgKCFyZXNwb25zZS5sZW5ndGggfHwgIXJlc3BvbnNlWzBdLmZpcnN0Q2hpbGQpIHtcbiAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIC8vIFRoZSBjb21wbGV0ZSBjYWxsYmFjayByZXR1cm5zIHRoZVxuICAgICAgICAgICAgICAvLyBpZnJhbWUgY29udGVudCBkb2N1bWVudCBhcyByZXNwb25zZSBvYmplY3Q6XG4gICAgICAgICAgICAgIGNvbXBsZXRlQ2FsbGJhY2soMjAwLCAnc3VjY2VzcycsIHsgaWZyYW1lOiByZXNwb25zZSB9KTtcbiAgICAgICAgICAgICAgLy8gRml4IGZvciBJRSBlbmRsZXNzIHByb2dyZXNzIGJhciBhY3Rpdml0eSBidWdcbiAgICAgICAgICAgICAgLy8gKGhhcHBlbnMgb24gZm9ybSBzdWJtaXRzIHRvIGlmcmFtZSB0YXJnZXRzKTpcbiAgICAgICAgICAgICAgJCgnPGlmcmFtZSBzcmM9XCInICsgaW5pdGlhbElmcmFtZVNyYyArICdcIj48L2lmcmFtZT4nKS5hcHBlbmRUbyhcbiAgICAgICAgICAgICAgICBmb3JtXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAvLyBSZW1vdmluZyB0aGUgZm9ybSBpbiBhIHNldFRpbWVvdXQgY2FsbFxuICAgICAgICAgICAgICAgIC8vIGFsbG93cyBDaHJvbWUncyBkZXZlbG9wZXIgdG9vbHMgdG8gZGlzcGxheVxuICAgICAgICAgICAgICAgIC8vIHRoZSByZXNwb25zZSByZXN1bHRcbiAgICAgICAgICAgICAgICBmb3JtLnJlbW92ZSgpO1xuICAgICAgICAgICAgICB9LCAwKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZm9ybVxuICAgICAgICAgICAgICAucHJvcCgndGFyZ2V0JywgaWZyYW1lLnByb3AoJ25hbWUnKSlcbiAgICAgICAgICAgICAgLnByb3AoJ2FjdGlvbicsIG9wdGlvbnMudXJsKVxuICAgICAgICAgICAgICAucHJvcCgnbWV0aG9kJywgb3B0aW9ucy50eXBlKTtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmZvcm1EYXRhKSB7XG4gICAgICAgICAgICAgICQuZWFjaChvcHRpb25zLmZvcm1EYXRhLCBmdW5jdGlvbiAoaW5kZXgsIGZpZWxkKSB7XG4gICAgICAgICAgICAgICAgJCgnPGlucHV0IHR5cGU9XCJoaWRkZW5cIi8+JylcbiAgICAgICAgICAgICAgICAgIC5wcm9wKCduYW1lJywgZmllbGQubmFtZSlcbiAgICAgICAgICAgICAgICAgIC52YWwoZmllbGQudmFsdWUpXG4gICAgICAgICAgICAgICAgICAuYXBwZW5kVG8oZm9ybSk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICBvcHRpb25zLmZpbGVJbnB1dCAmJlxuICAgICAgICAgICAgICBvcHRpb25zLmZpbGVJbnB1dC5sZW5ndGggJiZcbiAgICAgICAgICAgICAgb3B0aW9ucy50eXBlID09PSAnUE9TVCdcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICBmaWxlSW5wdXRDbG9uZXMgPSBvcHRpb25zLmZpbGVJbnB1dC5jbG9uZSgpO1xuICAgICAgICAgICAgICAvLyBJbnNlcnQgYSBjbG9uZSBmb3IgZWFjaCBmaWxlIGlucHV0IGZpZWxkOlxuICAgICAgICAgICAgICBvcHRpb25zLmZpbGVJbnB1dC5hZnRlcihmdW5jdGlvbiAoaW5kZXgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmlsZUlucHV0Q2xvbmVzW2luZGV4XTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIGlmIChvcHRpb25zLnBhcmFtTmFtZSkge1xuICAgICAgICAgICAgICAgIG9wdGlvbnMuZmlsZUlucHV0LmVhY2goZnVuY3Rpb24gKGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAkKHRoaXMpLnByb3AoJ25hbWUnLCBwYXJhbU5hbWVzW2luZGV4XSB8fCBvcHRpb25zLnBhcmFtTmFtZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgLy8gQXBwZW5kaW5nIHRoZSBmaWxlIGlucHV0IGZpZWxkcyB0byB0aGUgaGlkZGVuIGZvcm1cbiAgICAgICAgICAgICAgLy8gcmVtb3ZlcyB0aGVtIGZyb20gdGhlaXIgb3JpZ2luYWwgbG9jYXRpb246XG4gICAgICAgICAgICAgIGZvcm1cbiAgICAgICAgICAgICAgICAuYXBwZW5kKG9wdGlvbnMuZmlsZUlucHV0KVxuICAgICAgICAgICAgICAgIC5wcm9wKCdlbmN0eXBlJywgJ211bHRpcGFydC9mb3JtLWRhdGEnKVxuICAgICAgICAgICAgICAgIC8vIGVuY3R5cGUgbXVzdCBiZSBzZXQgYXMgZW5jb2RpbmcgZm9yIElFOlxuICAgICAgICAgICAgICAgIC5wcm9wKCdlbmNvZGluZycsICdtdWx0aXBhcnQvZm9ybS1kYXRhJyk7XG4gICAgICAgICAgICAgIC8vIFJlbW92ZSB0aGUgSFRNTDUgZm9ybSBhdHRyaWJ1dGUgZnJvbSB0aGUgaW5wdXQocyk6XG4gICAgICAgICAgICAgIG9wdGlvbnMuZmlsZUlucHV0LnJlbW92ZUF0dHIoJ2Zvcm0nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgLy8gU3VibWl0dGluZyB0aGUgZm9ybSBpbiBhIHNldFRpbWVvdXQgY2FsbCBmaXhlcyBhbiBpc3N1ZSB3aXRoXG4gICAgICAgICAgICAgIC8vIFNhZmFyaSAxMyBub3QgdHJpZ2dlcmluZyB0aGUgaWZyYW1lIGxvYWQgZXZlbnQgYWZ0ZXIgcmVzZXR0aW5nXG4gICAgICAgICAgICAgIC8vIHRoZSBsb2FkIGV2ZW50IGhhbmRsZXIsIHNlZSBhbHNvOlxuICAgICAgICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vYmx1ZWltcC9qUXVlcnktRmlsZS1VcGxvYWQvaXNzdWVzLzM2MzNcbiAgICAgICAgICAgICAgZm9ybS5zdWJtaXQoKTtcbiAgICAgICAgICAgICAgLy8gSW5zZXJ0IHRoZSBmaWxlIGlucHV0IGZpZWxkcyBhdCB0aGVpciBvcmlnaW5hbCBsb2NhdGlvblxuICAgICAgICAgICAgICAvLyBieSByZXBsYWNpbmcgdGhlIGNsb25lcyB3aXRoIHRoZSBvcmlnaW5hbHM6XG4gICAgICAgICAgICAgIGlmIChmaWxlSW5wdXRDbG9uZXMgJiYgZmlsZUlucHV0Q2xvbmVzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIG9wdGlvbnMuZmlsZUlucHV0LmVhY2goZnVuY3Rpb24gKGluZGV4LCBpbnB1dCkge1xuICAgICAgICAgICAgICAgICAgdmFyIGNsb25lID0gJChmaWxlSW5wdXRDbG9uZXNbaW5kZXhdKTtcbiAgICAgICAgICAgICAgICAgIC8vIFJlc3RvcmUgdGhlIG9yaWdpbmFsIG5hbWUgYW5kIGZvcm0gcHJvcGVydGllczpcbiAgICAgICAgICAgICAgICAgICQoaW5wdXQpXG4gICAgICAgICAgICAgICAgICAgIC5wcm9wKCduYW1lJywgY2xvbmUucHJvcCgnbmFtZScpKVxuICAgICAgICAgICAgICAgICAgICAuYXR0cignZm9ybScsIGNsb25lLmF0dHIoJ2Zvcm0nKSk7XG4gICAgICAgICAgICAgICAgICBjbG9uZS5yZXBsYWNlV2l0aChpbnB1dCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sIDApO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGZvcm0uYXBwZW5kKGlmcmFtZSkuYXBwZW5kVG8oZG9jdW1lbnQuYm9keSk7XG4gICAgICAgIH0sXG4gICAgICAgIGFib3J0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgaWYgKGlmcmFtZSkge1xuICAgICAgICAgICAgLy8gamF2YXNjcmlwdDpmYWxzZSBhcyBpZnJhbWUgc3JjIGFib3J0cyB0aGUgcmVxdWVzdFxuICAgICAgICAgICAgLy8gYW5kIHByZXZlbnRzIHdhcm5pbmcgcG9wdXBzIG9uIEhUVFBTIGluIElFNi5cbiAgICAgICAgICAgIGlmcmFtZS5vZmYoJ2xvYWQnKS5wcm9wKCdzcmMnLCBpbml0aWFsSWZyYW1lU3JjKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGZvcm0pIHtcbiAgICAgICAgICAgIGZvcm0ucmVtb3ZlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgfSk7XG5cbiAgLy8gVGhlIGlmcmFtZSB0cmFuc3BvcnQgcmV0dXJucyB0aGUgaWZyYW1lIGNvbnRlbnQgZG9jdW1lbnQgYXMgcmVzcG9uc2UuXG4gIC8vIFRoZSBmb2xsb3dpbmcgYWRkcyBjb252ZXJ0ZXJzIGZyb20gaWZyYW1lIHRvIHRleHQsIGpzb24sIGh0bWwsIHhtbFxuICAvLyBhbmQgc2NyaXB0LlxuICAvLyBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBDb250ZW50LVR5cGUgZm9yIEpTT04gcmVzcG9uc2VzIGhhcyB0byBiZSB0ZXh0L3BsYWluXG4gIC8vIG9yIHRleHQvaHRtbCwgaWYgdGhlIGJyb3dzZXIgZG9lc24ndCBpbmNsdWRlIGFwcGxpY2F0aW9uL2pzb24gaW4gdGhlXG4gIC8vIEFjY2VwdCBoZWFkZXIsIGVsc2UgSUUgd2lsbCBzaG93IGEgZG93bmxvYWQgZGlhbG9nLlxuICAvLyBUaGUgQ29udGVudC1UeXBlIGZvciBYTUwgcmVzcG9uc2VzIG9uIHRoZSBvdGhlciBoYW5kIGhhcyB0byBiZSBhbHdheXNcbiAgLy8gYXBwbGljYXRpb24veG1sIG9yIHRleHQveG1sLCBzbyBJRSBwcm9wZXJseSBwYXJzZXMgdGhlIFhNTCByZXNwb25zZS5cbiAgLy8gU2VlIGFsc29cbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2JsdWVpbXAvalF1ZXJ5LUZpbGUtVXBsb2FkL3dpa2kvU2V0dXAjY29udGVudC10eXBlLW5lZ290aWF0aW9uXG4gICQuYWpheFNldHVwKHtcbiAgICBjb252ZXJ0ZXJzOiB7XG4gICAgICAnaWZyYW1lIHRleHQnOiBmdW5jdGlvbiAoaWZyYW1lKSB7XG4gICAgICAgIHJldHVybiBpZnJhbWUgJiYgJChpZnJhbWVbMF0uYm9keSkudGV4dCgpO1xuICAgICAgfSxcbiAgICAgICdpZnJhbWUganNvbic6IGZ1bmN0aW9uIChpZnJhbWUpIHtcbiAgICAgICAgcmV0dXJuIGlmcmFtZSAmJiBqc29uQVBJW2pzb25QYXJzZV0oJChpZnJhbWVbMF0uYm9keSkudGV4dCgpKTtcbiAgICAgIH0sXG4gICAgICAnaWZyYW1lIGh0bWwnOiBmdW5jdGlvbiAoaWZyYW1lKSB7XG4gICAgICAgIHJldHVybiBpZnJhbWUgJiYgJChpZnJhbWVbMF0uYm9keSkuaHRtbCgpO1xuICAgICAgfSxcbiAgICAgICdpZnJhbWUgeG1sJzogZnVuY3Rpb24gKGlmcmFtZSkge1xuICAgICAgICB2YXIgeG1sRG9jID0gaWZyYW1lICYmIGlmcmFtZVswXTtcbiAgICAgICAgcmV0dXJuIHhtbERvYyAmJiAkLmlzWE1MRG9jKHhtbERvYylcbiAgICAgICAgICA/IHhtbERvY1xuICAgICAgICAgIDogJC5wYXJzZVhNTChcbiAgICAgICAgICAgICAgKHhtbERvYy5YTUxEb2N1bWVudCAmJiB4bWxEb2MuWE1MRG9jdW1lbnQueG1sKSB8fFxuICAgICAgICAgICAgICAgICQoeG1sRG9jLmJvZHkpLmh0bWwoKVxuICAgICAgICAgICAgKTtcbiAgICAgIH0sXG4gICAgICAnaWZyYW1lIHNjcmlwdCc6IGZ1bmN0aW9uIChpZnJhbWUpIHtcbiAgICAgICAgcmV0dXJuIGlmcmFtZSAmJiAkLmdsb2JhbEV2YWwoJChpZnJhbWVbMF0uYm9keSkudGV4dCgpKTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xufSk7XG4iLCJ2YXIgaW5pdGlhbGl6ZWQ7XHJcbnZhciBtZWRpYUFwcDtcclxuXHJcbnZhciBidXMgPSBuZXcgVnVlKCk7XHJcblxyXG5mdW5jdGlvbiBpbml0aWFsaXplTWVkaWFBcHBsaWNhdGlvbihkaXNwbGF5TWVkaWFBcHBsaWNhdGlvbiwgbWVkaWFBcHBsaWNhdGlvblVybCwgcGF0aEJhc2UpIHtcclxuXHJcbiAgICBpZiAoaW5pdGlhbGl6ZWQpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaW5pdGlhbGl6ZWQgPSB0cnVlO1xyXG5cclxuICAgIGlmICghbWVkaWFBcHBsaWNhdGlvblVybCkge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ21lZGlhQXBwbGljYXRpb25VcmwgdmFyaWFibGUgaXMgbm90IGRlZmluZWQnKTtcclxuICAgIH1cclxuXHJcbiAgICAkLmFqYXgoe1xyXG4gICAgICAgIHVybDogbWVkaWFBcHBsaWNhdGlvblVybCxcclxuICAgICAgICBtZXRob2Q6ICdHRVQnLFxyXG4gICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIChjb250ZW50KSB7XHJcbiAgICAgICAgICAgICQoJy50YS1jb250ZW50JykuYXBwZW5kKGNvbnRlbnQpO1xyXG5cclxuICAgICAgICAgICAgJChkb2N1bWVudCkudHJpZ2dlcignbWVkaWFhcHBsaWNhdGlvbjpyZWFkeScpO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgdmFyIHJvb3QgPSB7XHJcbiAgICAgICAgICAgICAgICBuYW1lOiAgJCgnI3QtbWVkaWFMaWJyYXJ5JykudGV4dCgpLFxyXG4gICAgICAgICAgICAgICAgcGF0aDogJycsXHJcbiAgICAgICAgICAgICAgICBmb2xkZXI6ICcnLFxyXG4gICAgICAgICAgICAgICAgaXNEaXJlY3Rvcnk6IHRydWVcclxuICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgIG1lZGlhQXBwID0gbmV3IFZ1ZSh7XHJcbiAgICAgICAgICAgICAgICBlbDogJyNtZWRpYUFwcCcsXHJcbiAgICAgICAgICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRGb2xkZXI6IHt9LFxyXG4gICAgICAgICAgICAgICAgICAgIG1lZGlhSXRlbXM6IFtdLFxyXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkTWVkaWFzOiBbXSxcclxuICAgICAgICAgICAgICAgICAgICBlcnJvcnM6IFtdLFxyXG4gICAgICAgICAgICAgICAgICAgIGRyYWdEcm9wVGh1bWJuYWlsOiBuZXcgSW1hZ2UoKSxcclxuICAgICAgICAgICAgICAgICAgICBzbWFsbFRodW1iczogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgZ3JpZFZpZXc6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgIG1lZGlhRmlsdGVyOiAnJyxcclxuICAgICAgICAgICAgICAgICAgICBzb3J0Qnk6ICcnLFxyXG4gICAgICAgICAgICAgICAgICAgIHNvcnRBc2M6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbXNJblBhZ2U6IFtdXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgY3JlYXRlZDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBzZWxmID0gdGhpcztcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5kcmFnRHJvcFRodW1ibmFpbC5zcmMgPSAocGF0aEJhc2UgfHwgJycpICsgJy9PcmNoYXJkQ29yZS5NZWRpYS9JbWFnZXMvZHJhZy10aHVtYm5haWwucG5nJztcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgYnVzLiRvbignZm9sZGVyU2VsZWN0ZWQnLCBmdW5jdGlvbiAoZm9sZGVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2VsZWN0ZWRGb2xkZXIgPSBmb2xkZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGJ1cy4kb24oJ2ZvbGRlckRlbGV0ZWQnLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2VsZWN0Um9vdCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBidXMuJG9uKCdmb2xkZXJBZGRlZCcsIGZ1bmN0aW9uIChmb2xkZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zZWxlY3RlZEZvbGRlciA9IGZvbGRlcjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9sZGVyLnNlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgYnVzLiRvbignbWVkaWFMaXN0TW92ZWQnLCBmdW5jdGlvbiAoZXJyb3JJbmZvKSB7ICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubG9hZEZvbGRlcihzZWxmLnNlbGVjdGVkRm9sZGVyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9ySW5mbykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5lcnJvcnMucHVzaChlcnJvckluZm8pOyAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgYnVzLiRvbignbWVkaWFSZW5hbWVkJywgZnVuY3Rpb24gKG5ld05hbWUsIG5ld1BhdGgsIG9sZFBhdGgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG1lZGlhID0gc2VsZi5tZWRpYUl0ZW1zLmZpbHRlcihmdW5jdGlvbiAoaXRlbSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVtLm1lZGlhUGF0aCA9PT0gb2xkUGF0aDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSlbMF07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtZWRpYS5tZWRpYVBhdGggPSBuZXdQYXRoO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtZWRpYS5uYW1lID0gbmV3TmFtZTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgYnVzLiRvbignY3JlYXRlRm9sZGVyUmVxdWVzdGVkJywgZnVuY3Rpb24gKG1lZGlhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY3JlYXRlRm9sZGVyKCk7ICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGJ1cy4kb24oJ2RlbGV0ZUZvbGRlclJlcXVlc3RlZCcsIGZ1bmN0aW9uIChtZWRpYSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmRlbGV0ZUZvbGRlcigpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAvLyBjb21tb24gaGFuZGxlcnMgZm9yIGFjdGlvbnMgaW4gYm90aCBncmlkIGFuZCB0YWJsZSB2aWV3LlxyXG4gICAgICAgICAgICAgICAgICAgIGJ1cy4kb24oJ3NvcnRDaGFuZ2VSZXF1ZXN0ZWQnLCBmdW5jdGlvbiAobmV3U29ydCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNoYW5nZVNvcnQobmV3U29ydCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGJ1cy4kb24oJ21lZGlhVG9nZ2xlUmVxdWVzdGVkJywgZnVuY3Rpb24gKG1lZGlhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudG9nZ2xlU2VsZWN0aW9uT2ZNZWRpYShtZWRpYSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGJ1cy4kb24oJ3JlbmFtZU1lZGlhUmVxdWVzdGVkJywgZnVuY3Rpb24gKG1lZGlhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucmVuYW1lTWVkaWEobWVkaWEpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBidXMuJG9uKCdkZWxldGVNZWRpYVJlcXVlc3RlZCcsIGZ1bmN0aW9uIChtZWRpYSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmRlbGV0ZU1lZGlhSXRlbShtZWRpYSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGJ1cy4kb24oJ21lZGlhRHJhZ1N0YXJ0UmVxdWVzdGVkJywgZnVuY3Rpb24gKG1lZGlhLCBlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaGFuZGxlRHJhZ1N0YXJ0KG1lZGlhLCBlKTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgIC8vIGhhbmRsZXIgZm9yIHBhZ2VyIGV2ZW50c1xyXG4gICAgICAgICAgICAgICAgICAgIGJ1cy4kb24oJ3BhZ2VyRXZlbnQnLCBmdW5jdGlvbiAoaXRlbXNJblBhZ2UpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5pdGVtc0luUGFnZSA9IGl0ZW1zSW5QYWdlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNlbGVjdGVkTWVkaWFzID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAoIWxvY2FsU3RvcmFnZS5nZXRJdGVtKCdtZWRpYUFwcGxpY2F0aW9uUHJlZnMnKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNlbGVjdGVkRm9sZGVyID0gcm9vdDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5jdXJyZW50UHJlZnMgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdtZWRpYUFwcGxpY2F0aW9uUHJlZnMnKSk7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgY29tcHV0ZWQ6IHtcclxuICAgICAgICAgICAgICAgICAgICBpc0hvbWU6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRGb2xkZXIgPT0gcm9vdDtcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHBhcmVudHM6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHAgPSBbXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50Rm9sZGVyID0gdGhpcy5zZWxlY3RlZEZvbGRlcjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHBhcmVudEZvbGRlciAmJiBwYXJlbnRGb2xkZXIucGF0aCAhPSAnJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcC51bnNoaWZ0KHBhcmVudEZvbGRlcik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRGb2xkZXIgPSBwYXJlbnRGb2xkZXIucGFyZW50OyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcDtcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHJvb3Q6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJvb3Q7XHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJlZE1lZGlhSXRlbXM6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNlbGYgPSB0aGlzO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zZWxlY3RlZE1lZGlhcyA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGZpbHRlcmVkID0gc2VsZi5tZWRpYUl0ZW1zLmZpbHRlcihmdW5jdGlvbiAoaXRlbSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW0ubmFtZS50b0xvd2VyQ2FzZSgpLmluZGV4T2Yoc2VsZi5tZWRpYUZpbHRlci50b0xvd2VyQ2FzZSgpKSA+IC0gMTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHNlbGYuc29ydEJ5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdzaXplJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJlZC5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnNvcnRBc2MgPyBhLnNpemUgLSBiLnNpemUgOiBiLnNpemUgLSBhLnNpemU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdtaW1lJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJlZC5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnNvcnRBc2MgPyBhLm1pbWUudG9Mb3dlckNhc2UoKS5sb2NhbGVDb21wYXJlKGIubWltZS50b0xvd2VyQ2FzZSgpKSA6IGIubWltZS50b0xvd2VyQ2FzZSgpLmxvY2FsZUNvbXBhcmUoYS5taW1lLnRvTG93ZXJDYXNlKCkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbGFzdE1vZGlmeSc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyZWQuc29ydChmdW5jdGlvbiAoYSwgYikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5zb3J0QXNjID8gYS5sYXN0TW9kaWZ5IC0gYi5sYXN0TW9kaWZ5IDogYi5sYXN0TW9kaWZ5IC0gYS5sYXN0TW9kaWZ5O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJlZC5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnNvcnRBc2MgPyBhLm5hbWUudG9Mb3dlckNhc2UoKS5sb2NhbGVDb21wYXJlKGIubmFtZS50b0xvd2VyQ2FzZSgpKSA6IGIubmFtZS50b0xvd2VyQ2FzZSgpLmxvY2FsZUNvbXBhcmUoYS5uYW1lLnRvTG93ZXJDYXNlKCkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmlsdGVyZWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBoaWRkZW5Db3VudDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gdGhpcy5tZWRpYUl0ZW1zLmxlbmd0aCAtIHRoaXMuZmlsdGVyZWRNZWRpYUl0ZW1zLmxlbmd0aDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHRodW1iU2l6ZTogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zbWFsbFRodW1icyA/IDEwMCA6IDI0MDtcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRQcmVmczoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc21hbGxUaHVtYnM6IHRoaXMuc21hbGxUaHVtYnMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRGb2xkZXI6IHRoaXMuc2VsZWN0ZWRGb2xkZXIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZFZpZXc6IHRoaXMuZ3JpZFZpZXdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldDogZnVuY3Rpb24gKG5ld1ByZWZzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW5ld1ByZWZzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc21hbGxUaHVtYnMgPSBuZXdQcmVmcy5zbWFsbFRodW1icztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRGb2xkZXIgPSBuZXdQcmVmcy5zZWxlY3RlZEZvbGRlcjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ3JpZFZpZXcgPSBuZXdQcmVmcy5ncmlkVmlldztcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB3YXRjaDoge1xyXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRQcmVmczogZnVuY3Rpb24gKG5ld1ByZWZzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdtZWRpYUFwcGxpY2F0aW9uUHJlZnMnLCBKU09OLnN0cmluZ2lmeShuZXdQcmVmcykpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRGb2xkZXI6IGZ1bmN0aW9uIChuZXdGb2xkZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tZWRpYUZpbHRlciA9ICcnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRm9sZGVyID0gbmV3Rm9sZGVyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRGb2xkZXIobmV3Rm9sZGVyKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIG1vdW50ZWQ6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLiRyZWZzLnJvb3RGb2xkZXIudG9nZ2xlKCk7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgbWV0aG9kczoge1xyXG4gICAgICAgICAgICAgICAgICAgIHVwbG9hZFVybDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZEZvbGRlciA/ICQoJyN1cGxvYWRGaWxlcycpLnZhbCgpICsgXCI/cGF0aD1cIiArIGVuY29kZVVSSUNvbXBvbmVudCh0aGlzLnNlbGVjdGVkRm9sZGVyLnBhdGgpIDogbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdFJvb3Q6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEZvbGRlciA9IHRoaXMucm9vdDtcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIGxvYWRGb2xkZXI6IGZ1bmN0aW9uIChmb2xkZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5lcnJvcnMgPSBbXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE1lZGlhcyA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2VsZiA9IHRoaXM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICQuYWpheCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQoJyNnZXRNZWRpYUl0ZW1zVXJsJykudmFsKCkgKyBcIj9wYXRoPVwiICsgZW5jb2RlVVJJQ29tcG9uZW50KGZvbGRlci5wYXRoKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZDogJ0dFVCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiAoZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLm9wZW4gPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm1lZGlhSXRlbXMgPSBkYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2VsZWN0ZWRNZWRpYXMgPSBbXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNvcnRCeSA9ICcnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc29ydEFzYyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I6IGZ1bmN0aW9uIChlcnJvcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdlcnJvciBsb2FkaW5nIGZvbGRlcjonICsgZm9sZGVyLnBhdGgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zZWxlY3RSb290KCk7ICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdEFsbDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkTWVkaWFzID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5maWx0ZXJlZE1lZGlhSXRlbXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRNZWRpYXMucHVzaCh0aGlzLmZpbHRlcmVkTWVkaWFJdGVtc1tpXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHVuU2VsZWN0QWxsOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRNZWRpYXMgPSBbXTtcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIGludmVydFNlbGVjdGlvbjogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgdGVtcCA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuZmlsdGVyZWRNZWRpYUl0ZW1zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pc01lZGlhU2VsZWN0ZWQodGhpcy5maWx0ZXJlZE1lZGlhSXRlbXNbaV0pID09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcC5wdXNoKHRoaXMuZmlsdGVyZWRNZWRpYUl0ZW1zW2ldKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkTWVkaWFzID0gdGVtcDtcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHRvZ2dsZVNlbGVjdGlvbk9mTWVkaWE6IGZ1bmN0aW9uIChtZWRpYSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pc01lZGlhU2VsZWN0ZWQobWVkaWEpID09IHRydWUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRNZWRpYXMuc3BsaWNlKHRoaXMuc2VsZWN0ZWRNZWRpYXMuaW5kZXhPZihtZWRpYSksIDEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE1lZGlhcy5wdXNoKG1lZGlhKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgaXNNZWRpYVNlbGVjdGVkOiBmdW5jdGlvbiAobWVkaWEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHRoaXMuc2VsZWN0ZWRNZWRpYXMuc29tZShmdW5jdGlvbiAoZWxlbWVudCwgaW5kZXgsIGFycmF5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudC51cmwudG9Mb3dlckNhc2UoKSA9PT0gbWVkaWEudXJsLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlRm9sZGVyOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmb2xkZXIgPSB0aGlzLnNlbGVjdGVkRm9sZGVyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2VsZiA9IHRoaXM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSByb290IGZvbGRlciBjYW4ndCBiZSBkZWxldGVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmb2xkZXIgPT0gdGhpcy5yb290Lm1vZGVsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpcm1EaWFsb2coey4uLiQoXCIjZGVsZXRlRm9sZGVyXCIpLmRhdGEoKSwgY2FsbGJhY2s6IGZ1bmN0aW9uIChyZXNwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzcCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQuYWpheCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJCgnI2RlbGV0ZUZvbGRlclVybCcpLnZhbCgpICsgXCI/cGF0aD1cIiArIGVuY29kZVVSSUNvbXBvbmVudChmb2xkZXIucGF0aCksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX1JlcXVlc3RWZXJpZmljYXRpb25Ub2tlbjogJChcImlucHV0W25hbWU9J19fUmVxdWVzdFZlcmlmaWNhdGlvblRva2VuJ11cIikudmFsKClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24gKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1cy4kZW1pdCgnZGVsZXRlRm9sZGVyJywgZm9sZGVyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I6IGZ1bmN0aW9uIChlcnJvcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvci5yZXNwb25zZVRleHQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH19KTtcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIGNyZWF0ZUZvbGRlcjogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkKCcjY3JlYXRlRm9sZGVyTW9kYWwtZXJyb3JzJykuZW1wdHkoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJCgnI2NyZWF0ZUZvbGRlck1vZGFsJykubW9kYWwoJ3Nob3cnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJCgnI2NyZWF0ZUZvbGRlck1vZGFsIC5tb2RhbC1ib2R5IGlucHV0JykudmFsKCcnKS5mb2N1cygpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgcmVuYW1lTWVkaWE6IGZ1bmN0aW9uIChtZWRpYSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkKCcjcmVuYW1lTWVkaWFNb2RhbC1lcnJvcnMnKS5lbXB0eSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkKCcjcmVuYW1lTWVkaWFNb2RhbCcpLm1vZGFsKCdzaG93Jyk7ICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgJCgnI29sZC1pdGVtLW5hbWUnKS52YWwobWVkaWEubmFtZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICQoJyNyZW5hbWVNZWRpYU1vZGFsIC5tb2RhbC1ib2R5IGlucHV0JykudmFsKG1lZGlhLm5hbWUpLmZvY3VzKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RBbmREZWxldGVNZWRpYTogZnVuY3Rpb24gKG1lZGlhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGVsZXRlTWVkaWEoKTtcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZU1lZGlhTGlzdDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgbWVkaWFMaXN0ID0gdGhpcy5zZWxlY3RlZE1lZGlhcztcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNlbGYgPSB0aGlzO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1lZGlhTGlzdC5sZW5ndGggPCAxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpcm1EaWFsb2coey4uLiQoXCIjZGVsZXRlTWVkaWFcIikuZGF0YSgpLCBjYWxsYmFjazogZnVuY3Rpb24gKHJlc3ApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXNwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBhdGhzID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtZWRpYUxpc3QubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aHMucHVzaChtZWRpYUxpc3RbaV0ubWVkaWFQYXRoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQuYWpheCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJCgnI2RlbGV0ZU1lZGlhTGlzdFVybCcpLnZhbCgpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19SZXF1ZXN0VmVyaWZpY2F0aW9uVG9rZW46ICQoXCJpbnB1dFtuYW1lPSdfX1JlcXVlc3RWZXJpZmljYXRpb25Ub2tlbiddXCIpLnZhbCgpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aHM6IHBhdGhzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIChkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNlbGYuc2VsZWN0ZWRNZWRpYXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaW5kZXggPSBzZWxmLm1lZGlhSXRlbXMgJiYgc2VsZi5tZWRpYUl0ZW1zLmluZGV4T2Yoc2VsZi5zZWxlY3RlZE1lZGlhc1tpXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5tZWRpYUl0ZW1zLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1cy4kZW1pdCgnbWVkaWFEZWxldGVkJywgc2VsZi5zZWxlY3RlZE1lZGlhc1tpXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zZWxlY3RlZE1lZGlhcyA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcjogZnVuY3Rpb24gKGVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yLnJlc3BvbnNlVGV4dCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfX0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlTWVkaWFJdGVtOiBmdW5jdGlvbiAobWVkaWEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNlbGYgPSB0aGlzO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW1lZGlhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpcm1EaWFsb2coey4uLiQoXCIjZGVsZXRlTWVkaWFcIikuZGF0YSgpLCBjYWxsYmFjazogZnVuY3Rpb24gKHJlc3ApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXNwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJC5hamF4KHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAkKCcjZGVsZXRlTWVkaWFVcmwnKS52YWwoKSArIFwiP3BhdGg9XCIgKyBlbmNvZGVVUklDb21wb25lbnQobWVkaWEubWVkaWFQYXRoKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fUmVxdWVzdFZlcmlmaWNhdGlvblRva2VuOiAkKFwiaW5wdXRbbmFtZT0nX19SZXF1ZXN0VmVyaWZpY2F0aW9uVG9rZW4nXVwiKS52YWwoKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiAoZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGluZGV4ID0gc2VsZi5tZWRpYUl0ZW1zICYmIHNlbGYubWVkaWFJdGVtcy5pbmRleE9mKG1lZGlhKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm1lZGlhSXRlbXMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXMuJGVtaXQoJ21lZGlhRGVsZXRlZCcsIG1lZGlhKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vc2VsZi5zZWxlY3RlZE1lZGlhID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I6IGZ1bmN0aW9uIChlcnJvcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvci5yZXNwb25zZVRleHQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH19KTtcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZURyYWdTdGFydDogZnVuY3Rpb24gKG1lZGlhLCBlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZpcnN0IHBhcnQgb2YgbW92ZSBtZWRpYSB0byBmb2xkZXI6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHByZXBhcmUgdGhlIGRhdGEgdGhhdCB3aWxsIGJlIGhhbmRsZWQgYnkgdGhlIGZvbGRlciBjb21wb25lbnQgb24gZHJvcCBldmVudFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgbWVkaWFOYW1lcyA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkTWVkaWFzLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lZGlhTmFtZXMucHVzaChpdGVtLm5hbWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluIGNhc2UgdGhlIHVzZXIgZHJhZ3MgYW4gdW5zZWxlY3RlZCBpdGVtLCB3ZSBzZWxlY3QgaXQgZmlyc3RcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNNZWRpYVNlbGVjdGVkKG1lZGlhKSA9PSBmYWxzZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVkaWFOYW1lcy5wdXNoKG1lZGlhLm5hbWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE1lZGlhcy5wdXNoKG1lZGlhKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgZS5kYXRhVHJhbnNmZXIuc2V0RGF0YSgnbWVkaWFOYW1lcycsIEpTT04uc3RyaW5naWZ5KG1lZGlhTmFtZXMpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZS5kYXRhVHJhbnNmZXIuc2V0RGF0YSgnc291cmNlRm9sZGVyJywgdGhpcy5zZWxlY3RlZEZvbGRlci5wYXRoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZS5kYXRhVHJhbnNmZXIuc2V0RHJhZ0ltYWdlKHRoaXMuZHJhZ0Ryb3BUaHVtYm5haWwsIDEwLCAxMCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGUuZGF0YVRyYW5zZmVyLmVmZmVjdEFsbG93ZWQgPSAnbW92ZSc7ICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVTY3JvbGxXaGlsZURyYWc6IGZ1bmN0aW9uIChlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlLmNsaWVudFkgPCAxNTApIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuc2Nyb2xsQnkoMCwgLTEwKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUuY2xpZW50WSA+IHdpbmRvdy5pbm5lckhlaWdodCAtIDEwMCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxCeSgwLCAxMCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIGNoYW5nZVNvcnQ6IGZ1bmN0aW9uIChuZXdTb3J0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnNvcnRCeSA9PSBuZXdTb3J0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNvcnRBc2MgPSAhdGhpcy5zb3J0QXNjO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zb3J0QXNjID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc29ydEJ5ID0gbmV3U29ydDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAkKCcjY3JlYXRlLWZvbGRlci1uYW1lJykua2V5cHJlc3MoZnVuY3Rpb24gKGUpIHtcclxuICAgICAgICAgICAgICAgIHZhciBrZXkgPSBlLndoaWNoO1xyXG4gICAgICAgICAgICAgICAgaWYgKGtleSA9PSAxMykgeyAgLy8gdGhlIGVudGVyIGtleSBjb2RlXHJcbiAgICAgICAgICAgICAgICAgICAgJCgnI21vZGFsRm9vdGVyT2snKS5jbGljaygpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAkKCcjbW9kYWxGb290ZXJPaycpLm9uKCdjbGljaycsIGZ1bmN0aW9uIChlKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgbmFtZSA9ICQoJyNjcmVhdGUtZm9sZGVyLW5hbWUnKS52YWwoKTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAobmFtZSA9PT0gXCJcIikge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAkLmFqYXgoe1xyXG4gICAgICAgICAgICAgICAgICAgIHVybDogJCgnI2NyZWF0ZUZvbGRlclVybCcpLnZhbCgpICsgXCI/cGF0aD1cIiArIGVuY29kZVVSSUNvbXBvbmVudChtZWRpYUFwcC5zZWxlY3RlZEZvbGRlci5wYXRoKSArIFwiJm5hbWU9XCIgKyBlbmNvZGVVUklDb21wb25lbnQobmFtZSksXHJcbiAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBfX1JlcXVlc3RWZXJpZmljYXRpb25Ub2tlbjogJChcImlucHV0W25hbWU9J19fUmVxdWVzdFZlcmlmaWNhdGlvblRva2VuJ11cIikudmFsKClcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIChkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1cy4kZW1pdCgnYWRkRm9sZGVyJywgbWVkaWFBcHAuc2VsZWN0ZWRGb2xkZXIsIGRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkKCcjY3JlYXRlRm9sZGVyTW9kYWwnKS5tb2RhbCgnaGlkZScpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgZXJyb3I6IGZ1bmN0aW9uIChlcnJvcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkKCcjY3JlYXRlRm9sZGVyTW9kYWwtZXJyb3JzJykuZW1wdHkoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGVycm9yTWVzc2FnZSA9IEpTT04ucGFyc2UoZXJyb3IucmVzcG9uc2VUZXh0KS52YWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJCgnPGRpdiBjbGFzcz1cImFsZXJ0IGFsZXJ0LWRhbmdlclwiIHJvbGU9XCJhbGVydFwiPjwvZGl2PicpLnRleHQoZXJyb3JNZXNzYWdlKS5hcHBlbmRUbygkKCcjY3JlYXRlRm9sZGVyTW9kYWwtZXJyb3JzJykpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICQoJyNyZW5hbWVNZWRpYU1vZGFsRm9vdGVyT2snKS5vbignY2xpY2snLCBmdW5jdGlvbiAoZSkge1xyXG4gICAgICAgICAgICAgICAgdmFyIG5ld05hbWUgPSAkKCcjbmV3LWl0ZW0tbmFtZScpLnZhbCgpO1xyXG4gICAgICAgICAgICAgICAgdmFyIG9sZE5hbWUgPSAkKCcjb2xkLWl0ZW0tbmFtZScpLnZhbCgpO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChuZXdOYW1lID09PSBcIlwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHZhciBjdXJyZW50Rm9sZGVyID0gbWVkaWFBcHAuc2VsZWN0ZWRGb2xkZXIucGF0aCArIFwiL1wiIDtcclxuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50Rm9sZGVyID09PSBcIi9cIikge1xyXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRGb2xkZXIgPSBcIlwiO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHZhciBuZXdQYXRoID0gY3VycmVudEZvbGRlciArIG5ld05hbWU7XHJcbiAgICAgICAgICAgICAgICB2YXIgb2xkUGF0aCA9IGN1cnJlbnRGb2xkZXIgKyBvbGROYW1lO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChuZXdQYXRoLnRvTG93ZXJDYXNlKCkgPT09IG9sZFBhdGgudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICQoJyNyZW5hbWVNZWRpYU1vZGFsJykubW9kYWwoJ2hpZGUnKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgJC5hamF4KHtcclxuICAgICAgICAgICAgICAgICAgICB1cmw6ICQoJyNyZW5hbWVNZWRpYVVybCcpLnZhbCgpICsgXCI/b2xkUGF0aD1cIiArIGVuY29kZVVSSUNvbXBvbmVudChvbGRQYXRoKSArIFwiJm5ld1BhdGg9XCIgKyBlbmNvZGVVUklDb21wb25lbnQobmV3UGF0aCksXHJcbiAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBfX1JlcXVlc3RWZXJpZmljYXRpb25Ub2tlbjogJChcImlucHV0W25hbWU9J19fUmVxdWVzdFZlcmlmaWNhdGlvblRva2VuJ11cIikudmFsKClcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIChkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICQoJyNyZW5hbWVNZWRpYU1vZGFsJykubW9kYWwoJ2hpZGUnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnVzLiRlbWl0KCdtZWRpYVJlbmFtZWQnLCBuZXdOYW1lLCBuZXdQYXRoLCBvbGRQYXRoKTtcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIGVycm9yOiBmdW5jdGlvbiAoZXJyb3IpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJCgnI3JlbmFtZU1lZGlhTW9kYWwtZXJyb3JzJykuZW1wdHkoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGVycm9yTWVzc2FnZSA9IEpTT04ucGFyc2UoZXJyb3IucmVzcG9uc2VUZXh0KS52YWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJCgnPGRpdiBjbGFzcz1cImFsZXJ0IGFsZXJ0LWRhbmdlclwiIHJvbGU9XCJhbGVydFwiPjwvZGl2PicpLnRleHQoZXJyb3JNZXNzYWdlKS5hcHBlbmRUbygkKCcjcmVuYW1lTWVkaWFNb2RhbC1lcnJvcnMnKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgaWYgKGRpc3BsYXlNZWRpYUFwcGxpY2F0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWVkaWFBcHAnKS5zdHlsZS5kaXNwbGF5ID0gXCJcIjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgJChkb2N1bWVudCkudHJpZ2dlcignbWVkaWFBcHA6cmVhZHknKTtcclxuXHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogZnVuY3Rpb24gKGVycm9yKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IucmVzcG9uc2VUZXh0KTtcclxuICAgICAgICB9XHJcbiAgICB9KTtcclxufVxyXG4iLCIkKGRvY3VtZW50KS5vbignbWVkaWFBcHA6cmVhZHknLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAkKCcjZmlsZXVwbG9hZCcpLmZpbGV1cGxvYWQoe1xyXG4gICAgICAgIGRyb3Bab25lOiAkKCcjbWVkaWFBcHAnKSxcclxuICAgICAgICBsaW1pdENvbmN1cnJlbnRVcGxvYWRzOiAyMCxcclxuICAgICAgICBkYXRhVHlwZTogJ2pzb24nLFxyXG4gICAgICAgIHVybDogJCgnI3VwbG9hZEZpbGVzJykudmFsKCksXHJcbiAgICAgICAgZm9ybURhdGE6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgdmFyIGFudGlGb3JnZXJ5VG9rZW4gPSAkKFwiaW5wdXRbbmFtZT1fX1JlcXVlc3RWZXJpZmljYXRpb25Ub2tlbl1cIikudmFsKCk7XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gW1xyXG4gICAgICAgICAgICAgICAgeyBuYW1lOiAncGF0aCcsIHZhbHVlOiBtZWRpYUFwcC5zZWxlY3RlZEZvbGRlci5wYXRoIH0sXHJcbiAgICAgICAgICAgICAgICB7IG5hbWU6ICdfX1JlcXVlc3RWZXJpZmljYXRpb25Ub2tlbicsIHZhbHVlOiBhbnRpRm9yZ2VyeVRva2VuIH0sXHJcbiAgICAgICAgICAgIF1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGRvbmU6IGZ1bmN0aW9uIChlLCBkYXRhKSB7XHJcbiAgICAgICAgICAgICQuZWFjaChkYXRhLnJlc3VsdC5maWxlcywgZnVuY3Rpb24gKGluZGV4LCBmaWxlKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWZpbGUuZXJyb3IpIHtcclxuICAgICAgICAgICAgICAgICAgICBtZWRpYUFwcC5tZWRpYUl0ZW1zLnB1c2goZmlsZSlcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcbn0pO1xyXG5cclxuXHJcbiQoZG9jdW1lbnQpLmJpbmQoJ2RyYWdvdmVyJywgZnVuY3Rpb24gKGUpIHtcclxuICAgIHZhciBkdCA9IGUub3JpZ2luYWxFdmVudC5kYXRhVHJhbnNmZXI7XHJcbiAgICBpZiAoZHQudHlwZXMgJiYgKGR0LnR5cGVzLmluZGV4T2YgPyBkdC50eXBlcy5pbmRleE9mKCdGaWxlcycpICE9IC0xIDogZHQudHlwZXMuY29udGFpbnMoJ0ZpbGVzJykpKSB7XHJcbiAgICAgICAgdmFyIGRyb3Bab25lID0gJCgnI2N1c3RvbWRyb3B6b25lJyksXHJcbiAgICAgICAgICAgIHRpbWVvdXQgPSB3aW5kb3cuZHJvcFpvbmVUaW1lb3V0O1xyXG4gICAgICAgIGlmICh0aW1lb3V0KSB7XHJcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBkcm9wWm9uZS5hZGRDbGFzcygnaW4nKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIGhvdmVyZWREcm9wWm9uZSA9ICQoZS50YXJnZXQpLmNsb3Nlc3QoZHJvcFpvbmUpO1xyXG4gICAgICAgIHdpbmRvdy5kcm9wWm9uZVRpbWVvdXQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgd2luZG93LmRyb3Bab25lVGltZW91dCA9IG51bGw7XHJcbiAgICAgICAgICAgIGRyb3Bab25lLnJlbW92ZUNsYXNzKCdpbicpO1xyXG4gICAgICAgIH0sIDEwMCk7XHJcbiAgICB9ICAgIFxyXG59KTsiLCIvLyA8Zm9sZGVyPiBjb21wb25lbnRcclxuVnVlLmNvbXBvbmVudCgnZm9sZGVyJywge1xyXG4gICAgdGVtcGxhdGU6IGBcclxuICAgICAgICA8bGkgOmNsYXNzPVwie3NlbGVjdGVkOiBpc1NlbGVjdGVkfVwiIFxyXG4gICAgICAgICAgICAgICAgdi1vbjpkcmFnbGVhdmUucHJldmVudCA9IFwiaGFuZGxlRHJhZ0xlYXZlKCRldmVudCk7XCIgXHJcbiAgICAgICAgICAgICAgICB2LW9uOmRyYWdvdmVyLnByZXZlbnQuc3RvcD1cImhhbmRsZURyYWdPdmVyKCRldmVudCk7XCIgXHJcbiAgICAgICAgICAgICAgICB2LW9uOmRyb3AucHJldmVudC5zdG9wID0gXCJtb3ZlTWVkaWFUb0ZvbGRlcihtb2RlbCwgJGV2ZW50KVwiID5cclxuICAgICAgICAgICAgPGRpdiA6Y2xhc3M9XCJ7Zm9sZGVyaG92ZXJlZDogaXNIb3ZlcmVkICwgdHJlZXJvb3Q6IGxldmVsID09IDF9XCIgPlxyXG4gICAgICAgICAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6O1wiIDpzdHlsZT1cInsgcGFkZGluZyR7ZG9jdW1lbnQuZGlyID09IFwibHRyXCIgPyBcIkxlZnRcIiA6IFwiUmlnaHRcIn06cGFkZGluZyArICdweCcgfVwiIHYtb246Y2xpY2s9XCJzZWxlY3RcIiAgZHJhZ2dhYmxlPVwiZmFsc2VcIiBjbGFzcz1cImZvbGRlci1tZW51LWl0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gdi1vbjpjbGljay5zdG9wPVwidG9nZ2xlXCIgY2xhc3M9XCJleHBhbmRcIiA6Y2xhc3M9XCJ7b3BlbmVkOiBvcGVuLCBjbG9zZWQ6ICFvcGVuLCBlbXB0eTogZW1wdHl9XCI+PGkgdi1pZj1cIm9wZW5cIiBjbGFzcz1cImZhcyBmYS1jaGV2cm9uLSR7ZG9jdW1lbnQuZGlyID09IFwibHRyXCIgPyBcInJpZ2h0XCIgOiBcImxlZnRcIn1cIj48L2k+PC9zcGFuPiBcclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvbGRlci1uYW1lIG1sLTJcIj57e21vZGVsLm5hbWV9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidG4tZ3JvdXAgZm9sZGVyLWFjdGlvbnNcIiA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSB2LWNsb2FrIGhyZWY9XCJqYXZhc2NyaXB0OjtcIiBjbGFzcz1cImJ0biBidG4tc21cIiB2LW9uOmNsaWNrPVwiY3JlYXRlRm9sZGVyXCIgdi1pZj1cImlzU2VsZWN0ZWQgfHwgaXNSb290XCI+PGkgY2xhc3M9XCJmYXMgZmEtcGx1c1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT48L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSB2LWNsb2FrIGhyZWY9XCJqYXZhc2NyaXB0OjtcIiBjbGFzcz1cImJ0biBidG4tc21cIiB2LW9uOmNsaWNrPVwiZGVsZXRlRm9sZGVyXCIgdi1pZj1cImlzU2VsZWN0ZWQgJiYgIWlzUm9vdFwiPjxpIGNsYXNzPVwiZmFzIGZhLXRyYXNoXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPjwvYT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxvbCB2LXNob3c9XCJvcGVuXCI+XHJcbiAgICAgICAgICAgICAgICA8Zm9sZGVyIHYtZm9yPVwiZm9sZGVyIGluIGNoaWxkcmVuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgOmtleT1cImZvbGRlci5wYXRoXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgOm1vZGVsPVwiZm9sZGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgOnNlbGVjdGVkLWluLW1lZGlhLWFwcD1cInNlbGVjdGVkSW5NZWRpYUFwcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDpsZXZlbD1cImxldmVsICsgMVwiPlxyXG4gICAgICAgICAgICAgICAgPC9mb2xkZXI+XHJcbiAgICAgICAgICAgIDwvb2w+XHJcbiAgICAgICAgPC9saT5cclxuICAgICAgICBgLFxyXG4gICAgcHJvcHM6IHtcclxuICAgICAgICBtb2RlbDogT2JqZWN0LFxyXG4gICAgICAgIHNlbGVjdGVkSW5NZWRpYUFwcDogT2JqZWN0LFxyXG4gICAgICAgIGxldmVsOiBOdW1iZXJcclxuICAgIH0sXHJcbiAgICBkYXRhOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgb3BlbjogZmFsc2UsXHJcbiAgICAgICAgICAgIGNoaWxkcmVuOiBudWxsLCAvLyBub3QgaW5pdGlhbGl6ZWQgc3RhdGUgKGZvciBsYXp5LWxvYWRpbmcpXHJcbiAgICAgICAgICAgIHBhcmVudDogbnVsbCxcclxuICAgICAgICAgICAgaXNIb3ZlcmVkOiBmYWxzZSxcclxuICAgICAgICAgICAgcGFkZGluZzogMFxyXG4gICAgICAgIH1cclxuICAgIH0sXHJcbiAgICBjb21wdXRlZDoge1xyXG4gICAgICAgIGVtcHR5OiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAhdGhpcy5jaGlsZHJlbiB8fCB0aGlzLmNoaWxkcmVuLmxlbmd0aCA9PSAwO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgaXNTZWxlY3RlZDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICByZXR1cm4gKHRoaXMuc2VsZWN0ZWRJbk1lZGlhQXBwLm5hbWUgPT0gdGhpcy5tb2RlbC5uYW1lKSAmJiAodGhpcy5zZWxlY3RlZEluTWVkaWFBcHAucGF0aCA9PSB0aGlzLm1vZGVsLnBhdGgpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgaXNSb290OiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm1vZGVsLnBhdGggPT09ICcnO1xyXG4gICAgICAgIH1cclxuICAgIH0sXHJcbiAgICBtb3VudGVkOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgaWYgKCh0aGlzLmlzUm9vdCA9PSBmYWxzZSkgJiYgKHRoaXMuaXNBbmNlc3Rvck9mU2VsZWN0ZWRGb2xkZXIoKSkpe1xyXG4gICAgICAgICAgICB0aGlzLnRvZ2dsZSgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5wYWRkaW5nID0gdGhpcy5sZXZlbCA8IDMgPyAgMTYgOiAxNiArICh0aGlzLmxldmVsICogOCk7XHJcbiAgICB9LFxyXG4gICAgY3JlYXRlZDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHZhciBzZWxmID0gdGhpcztcclxuICAgICAgICBidXMuJG9uKCdkZWxldGVGb2xkZXInLCBmdW5jdGlvbiAoZm9sZGVyKSB7XHJcbiAgICAgICAgICAgIGlmIChzZWxmLmNoaWxkcmVuKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgaW5kZXggPSBzZWxmLmNoaWxkcmVuICYmIHNlbGYuY2hpbGRyZW4uaW5kZXhPZihmb2xkZXIpXHJcbiAgICAgICAgICAgICAgICBpZiAoaW5kZXggPiAtMSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHNlbGYuY2hpbGRyZW4uc3BsaWNlKGluZGV4LCAxKVxyXG4gICAgICAgICAgICAgICAgICAgIGJ1cy4kZW1pdCgnZm9sZGVyRGVsZXRlZCcpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGJ1cy4kb24oJ2FkZEZvbGRlcicsIGZ1bmN0aW9uICh0YXJnZXQsIGZvbGRlcikge1xyXG4gICAgICAgICAgICBpZiAoc2VsZi5tb2RlbCA9PSB0YXJnZXQpIHtcclxuICAgICAgICAgICAgICAgIGlmIChzZWxmLmNoaWxkcmVuICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5jaGlsZHJlbi5wdXNoKGZvbGRlcik7XHJcbiAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgZm9sZGVyLnBhcmVudCA9IHNlbGYubW9kZWw7XHJcbiAgICAgICAgICAgICAgICBidXMuJGVtaXQoJ2ZvbGRlckFkZGVkJywgZm9sZGVyKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfSxcclxuICAgIG1ldGhvZHM6IHtcclxuICAgICAgICBpc0FuY2VzdG9yT2ZTZWxlY3RlZEZvbGRlcjogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICBwYXJlbnRGb2xkZXIgPSBtZWRpYUFwcC5zZWxlY3RlZEZvbGRlcjtcclxuICAgICAgICAgICAgd2hpbGUgKHBhcmVudEZvbGRlcikge1xyXG4gICAgICAgICAgICAgICAgaWYgKHBhcmVudEZvbGRlci5wYXRoID09IHRoaXMubW9kZWwucGF0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBwYXJlbnRGb2xkZXIgPSBwYXJlbnRGb2xkZXIucGFyZW50O1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfSxcclxuICAgICAgICB0b2dnbGU6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgdGhpcy5vcGVuID0gIXRoaXMub3BlbjtcclxuICAgICAgICAgICAgaWYgKHRoaXMub3BlbiAmJiAhdGhpcy5jaGlsZHJlbikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkQ2hpbGRyZW4oKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgc2VsZWN0OiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIGJ1cy4kZW1pdCgnZm9sZGVyU2VsZWN0ZWQnLCB0aGlzLm1vZGVsKTtcclxuICAgICAgICAgICAgdGhpcy5sb2FkQ2hpbGRyZW4oKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNyZWF0ZUZvbGRlcjogZnVuY3Rpb24gKCkgeyAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGJ1cy4kZW1pdCgnY3JlYXRlRm9sZGVyUmVxdWVzdGVkJyk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBkZWxldGVGb2xkZXI6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgYnVzLiRlbWl0KCdkZWxldGVGb2xkZXJSZXF1ZXN0ZWQnKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGxvYWRDaGlsZHJlbjogZnVuY3Rpb24gKCkgeyAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB2YXIgc2VsZiA9IHRoaXM7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLm9wZW4gPT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMub3BlbiA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgJC5hamF4KHtcclxuICAgICAgICAgICAgICAgIHVybDogJCgnI2dldEZvbGRlcnNVcmwnKS52YWwoKSArIFwiP3BhdGg9XCIgKyBlbmNvZGVVUklDb21wb25lbnQoc2VsZi5tb2RlbC5wYXRoKSxcclxuICAgICAgICAgICAgICAgIG1ldGhvZDogJ0dFVCcsXHJcbiAgICAgICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiAoZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHNlbGYuY2hpbGRyZW4gPSBkYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgIHNlbGYuY2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbiAoYykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjLnBhcmVudCA9IHNlbGYubW9kZWw7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgZXJyb3I6IGZ1bmN0aW9uIChlcnJvcikge1xyXG4gICAgICAgICAgICAgICAgICAgIGVtdHB5ID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvci5yZXNwb25zZVRleHQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGhhbmRsZURyYWdPdmVyOiBmdW5jdGlvbiAoZSkge1xyXG4gICAgICAgICAgICB0aGlzLmlzSG92ZXJlZCA9IHRydWU7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBoYW5kbGVEcmFnTGVhdmU6IGZ1bmN0aW9uIChlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaXNIb3ZlcmVkID0gZmFsc2U7ICAgICAgICAgICAgXHJcbiAgICAgICAgfSxcclxuICAgICAgICBtb3ZlTWVkaWFUb0ZvbGRlcjogZnVuY3Rpb24gKGZvbGRlciwgZSkge1xyXG5cclxuICAgICAgICAgICAgdmFyIHNlbGYgPSB0aGlzO1xyXG4gICAgICAgICAgICBzZWxmLmlzSG92ZXJlZCA9IGZhbHNlO1xyXG5cclxuICAgICAgICAgICAgdmFyIG1lZGlhTmFtZXMgPSBKU09OLnBhcnNlKGUuZGF0YVRyYW5zZmVyLmdldERhdGEoJ21lZGlhTmFtZXMnKSk7IFxyXG5cclxuICAgICAgICAgICAgaWYgKG1lZGlhTmFtZXMubGVuZ3RoIDwgMSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB2YXIgc291cmNlRm9sZGVyID0gZS5kYXRhVHJhbnNmZXIuZ2V0RGF0YSgnc291cmNlRm9sZGVyJyk7XHJcbiAgICAgICAgICAgIHZhciB0YXJnZXRGb2xkZXIgPSBmb2xkZXIucGF0aDtcclxuXHJcbiAgICAgICAgICAgIGlmIChzb3VyY2VGb2xkZXIgPT09ICcnKSB7XHJcbiAgICAgICAgICAgICAgICBzb3VyY2VGb2xkZXIgPSAncm9vdCc7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmICh0YXJnZXRGb2xkZXIgPT09ICcnKSB7XHJcbiAgICAgICAgICAgICAgICB0YXJnZXRGb2xkZXIgPSAncm9vdCc7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChzb3VyY2VGb2xkZXIgPT09IHRhcmdldEZvbGRlcikge1xyXG4gICAgICAgICAgICAgICAgYWxlcnQoJCgnI3NhbWVGb2xkZXJNZXNzYWdlJykudmFsKCkpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBjb25maXJtRGlhbG9nKHsuLi4kKFwiI21vdmVNZWRpYVwiKS5kYXRhKCksIGNhbGxiYWNrOiBmdW5jdGlvbiAocmVzcCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlc3ApIHtcclxuICAgICAgICAgICAgICAgICAgICAkLmFqYXgoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQoJyNtb3ZlTWVkaWFMaXN0VXJsJykudmFsKCksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX1JlcXVlc3RWZXJpZmljYXRpb25Ub2tlbjogJChcImlucHV0W25hbWU9J19fUmVxdWVzdFZlcmlmaWNhdGlvblRva2VuJ11cIikudmFsKCksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZWRpYU5hbWVzOiBtZWRpYU5hbWVzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlRm9sZGVyOiBzb3VyY2VGb2xkZXIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRGb2xkZXI6IHRhcmdldEZvbGRlclxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXMuJGVtaXQoJ21lZGlhTGlzdE1vdmVkJyk7IC8vIE1lZGlhQXBwIHdpbGwgbGlzdGVuIHRvIHRoaXMsIGFuZCB0aGVuIGl0IHdpbGwgcmVsb2FkIHBhZ2Ugc28gdGhlIG1vdmVkIG1lZGlhcyB3b24ndCBiZSB0aGVyZSBhbnltb3JlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yOiBmdW5jdGlvbiAoZXJyb3IpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IucmVzcG9uc2VUZXh0KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1cy4kZW1pdCgnbWVkaWFMaXN0TW92ZWQnLCBlcnJvci5yZXNwb25zZVRleHQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH19KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgfVxyXG59KTtcclxuIiwiLy8gPG1lZGlhLWl0ZW1zLWdyaWQ+IGNvbXBvbmVudFxyXG5WdWUuY29tcG9uZW50KCdtZWRpYS1pdGVtcy1ncmlkJywge1xyXG4gICAgdGVtcGxhdGU6IGBcclxuICAgICAgICA8b2wgY2xhc3M9XCJyb3cgbWVkaWEtaXRlbXMtZ3JpZFwiPlxyXG4gICAgICAgICAgICAgICAgPGxpIHYtZm9yPVwibWVkaWEgaW4gZmlsdGVyZWRNZWRpYUl0ZW1zXCJcclxuICAgICAgICAgICAgICAgICAgICA6a2V5PVwibWVkaWEubmFtZVwiIFxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWVkaWEtaXRlbSBtZWRpYS1jb250YWluZXItbWFpbi1saXN0LWl0ZW0gY2FyZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgOnN0eWxlPVwie3dpZHRoOiB0aHVtYlNpemUgKyAyICsgJ3B4J31cIlxyXG4gICAgICAgICAgICAgICAgICAgIDpjbGFzcz1cIntzZWxlY3RlZDogaXNNZWRpYVNlbGVjdGVkKG1lZGlhKX1cIlxyXG4gICAgICAgICAgICAgICAgICAgIHYtb246Y2xpY2suc3RvcD1cInRvZ2dsZVNlbGVjdGlvbk9mTWVkaWEobWVkaWEpXCJcclxuICAgICAgICAgICAgICAgICAgICBkcmFnZ2FibGU9XCJ0cnVlXCIgdi1vbjpkcmFnc3RhcnQ9XCJkcmFnU3RhcnQobWVkaWEsICRldmVudClcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGh1bWItY29udGFpbmVyXCIgOnN0eWxlPVwie2hlaWdodDogdGh1bWJTaXplICsncHgnfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHYtaWY9XCJtZWRpYS5taW1lLnN0YXJ0c1dpdGgoJ2ltYWdlJylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpzcmM9XCJidWlsZE1lZGlhVXJsKG1lZGlhLnVybCwgdGh1bWJTaXplKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmRhdGEtbWltZT1cIm1lZGlhLm1pbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpzdHlsZT1cInttYXhIZWlnaHQ6IHRodW1iU2l6ZSArJ3B4JywgbWF4V2lkdGg6IHRodW1iU2l6ZSArJ3B4J31cIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aSB2LWVsc2UgY2xhc3M9XCJmYSBmYS1maWxlLW8gZmEtbGdcIiA6ZGF0YS1taW1lPVwibWVkaWEubWltZVwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZWRpYS1jb250YWluZXItbWFpbi1pdGVtLXRpdGxlIGNhcmQtYm9keVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDo7XCIgY2xhc3M9XCJidG4gYnRuLWxpZ2h0IGJ0bi1zbSBmbG9hdC1yaWdodCBpbmxpbmUtbWVkaWEtYnV0dG9uIGVkaXQtYnV0dG9uXCIgdi1vbjpjbGljay5zdG9wPVwicmVuYW1lTWVkaWEobWVkaWEpXCI+PGkgY2xhc3M9XCJmYSBmYS1lZGl0XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPjwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6O1wiIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBidG4tc20gZmxvYXQtcmlnaHQgaW5saW5lLW1lZGlhLWJ1dHRvbiBkZWxldGUtYnV0dG9uXCIgdi1vbjpjbGljay5zdG9wPVwiZGVsZXRlTWVkaWEobWVkaWEpXCI+PGkgY2xhc3M9XCJmYSBmYS10cmFzaFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT48L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxhIDpocmVmPVwibWVkaWEudXJsXCIgdGFyZ2V0PVwiX2JsYW5rXCIgY2xhc3M9XCJidG4gYnRuLWxpZ2h0IGJ0bi1zbSBmbG9hdC1yaWdodCBpbmxpbmUtbWVkaWEtYnV0dG9uIHZpZXctYnV0dG9uXCJcIj48aSBjbGFzcz1cImZhIGZhLWRvd25sb2FkXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPjwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZWRpYS1maWxlbmFtZSBjYXJkLXRleHQgc21hbGxcIiA6dGl0bGU9XCJtZWRpYS5uYW1lXCI+e3sgbWVkaWEubmFtZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgIDwvb2w+XHJcbiAgICAgICAgYCxcclxuICAgIGRhdGE6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBUOiB7fVxyXG4gICAgICAgIH1cclxuICAgIH0sXHJcbiAgICBwcm9wczoge1xyXG4gICAgICAgIGZpbHRlcmVkTWVkaWFJdGVtczogQXJyYXksXHJcbiAgICAgICAgc2VsZWN0ZWRNZWRpYXM6IEFycmF5LFxyXG4gICAgICAgIHRodW1iU2l6ZTogTnVtYmVyXHJcbiAgICB9LFxyXG4gICAgY3JlYXRlZDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHZhciBzZWxmID0gdGhpcztcclxuICAgICAgICAvLyByZXRyaWV2aW5nIGxvY2FsaXplZCBzdHJpbmdzIGZyb20gdmlld1xyXG4gICAgICAgIHNlbGYuVC5lZGl0QnV0dG9uID0gJCgnI3QtZWRpdC1idXR0b24nKS52YWwoKTtcclxuICAgICAgICBzZWxmLlQuZGVsZXRlQnV0dG9uID0gJCgnI3QtZGVsZXRlLWJ1dHRvbicpLnZhbCgpO1xyXG4gICAgfSxcclxuICAgIG1ldGhvZHM6IHtcclxuICAgICAgICBpc01lZGlhU2VsZWN0ZWQ6IGZ1bmN0aW9uIChtZWRpYSkge1xyXG4gICAgICAgICAgICB2YXIgcmVzdWx0ID0gdGhpcy5zZWxlY3RlZE1lZGlhcy5zb21lKGZ1bmN0aW9uIChlbGVtZW50LCBpbmRleCwgYXJyYXkpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50LnVybC50b0xvd2VyQ2FzZSgpID09PSBtZWRpYS51cmwudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBidWlsZE1lZGlhVXJsOiBmdW5jdGlvbiAodXJsLCB0aHVtYlNpemUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHVybCArICh1cmwuaW5kZXhPZignPycpID09IC0xID8gJz8nIDogJyYnKSArICd3aWR0aD0nICsgdGh1bWJTaXplICsgJyZoZWlnaHQ9JyArIHRodW1iU2l6ZTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIHRvZ2dsZVNlbGVjdGlvbk9mTWVkaWE6IGZ1bmN0aW9uIChtZWRpYSkge1xyXG4gICAgICAgICAgICBidXMuJGVtaXQoJ21lZGlhVG9nZ2xlUmVxdWVzdGVkJywgbWVkaWEpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcmVuYW1lTWVkaWE6IGZ1bmN0aW9uIChtZWRpYSkge1xyXG4gICAgICAgICAgICBidXMuJGVtaXQoJ3JlbmFtZU1lZGlhUmVxdWVzdGVkJywgbWVkaWEpOyAgICAgICAgICAgIFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZGVsZXRlTWVkaWE6IGZ1bmN0aW9uIChtZWRpYSkge1xyXG4gICAgICAgICAgICBidXMuJGVtaXQoJ2RlbGV0ZU1lZGlhUmVxdWVzdGVkJywgbWVkaWEpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZHJhZ1N0YXJ0OiBmdW5jdGlvbiAobWVkaWEsIGUpIHtcclxuICAgICAgICAgICAgYnVzLiRlbWl0KCdtZWRpYURyYWdTdGFydFJlcXVlc3RlZCcsIG1lZGlhLCBlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn0pO1xyXG4iLCIvLyA8bWVkaWEtaXRlbXMtdGFibGU+IGNvbXBvbmVudFxyXG5WdWUuY29tcG9uZW50KCdtZWRpYS1pdGVtcy10YWJsZScsIHtcclxuICAgIHRlbXBsYXRlOiBgXHJcbiAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgbWVkaWEtaXRlbXMtdGFibGUgbS0wXCI+XHJcbiAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICAgIDx0ciBjbGFzcz1cImhlYWRlci1yb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIiBjbGFzcz1cInRodW1ibmFpbC1jb2x1bW5cIj57eyBULmltYWdlSGVhZGVyIH19PC90aD5cclxuICAgICAgICAgICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIiB2LW9uOmNsaWNrPVwiY2hhbmdlU29ydCgnbmFtZScpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAge3sgVC5uYW1lSGVhZGVyIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICA8c29ydC1pbmRpY2F0b3IgY29sbmFtZT1cIm5hbWVcIiA6c2VsZWN0ZWRjb2xuYW1lPVwic29ydEJ5XCIgOmFzYz1cInNvcnRBc2NcIj48L3NvcnQtaW5kaWNhdG9yPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCIgdi1vbjpjbGljaz1cImNoYW5nZVNvcnQoJ2xhc3RNb2RpZnknKVwiPiBcclxuICAgICAgICAgICAgICAgICAgICAgICB7eyBULmxhc3RNb2RpZnlIZWFkZXIgfX0gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICA8c29ydC1pbmRpY2F0b3IgY29sbmFtZT1cImxhc3RNb2RpZnlcIiA6c2VsZWN0ZWRjb2xuYW1lPVwic29ydEJ5XCIgOmFzYz1cInNvcnRBc2NcIj48L3NvcnQtaW5kaWNhdG9yPiBcclxuICAgICAgICAgICAgICAgICAgICA8L3RoPiBcclxuICAgICAgICAgICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIiB2LW9uOmNsaWNrPVwiY2hhbmdlU29ydCgnc2l6ZScpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwib3B0aW9uYWwtY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBULnNpemVIZWFkZXIgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgIDxzb3J0LWluZGljYXRvciBjb2xuYW1lPVwic2l6ZVwiIDpzZWxlY3RlZGNvbG5hbWU9XCJzb3J0QnlcIiA6YXNjPVwic29ydEFzY1wiPjwvc29ydC1pbmRpY2F0b3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiIHYtb246Y2xpY2s9XCJjaGFuZ2VTb3J0KCdtaW1lJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJvcHRpb25hbC1jb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgVC50eXBlSGVhZGVyIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICA8c29ydC1pbmRpY2F0b3IgY29sbmFtZT1cIm1pbWVcIiA6c2VsZWN0ZWRjb2xuYW1lPVwic29ydEJ5XCIgOmFzYz1cInNvcnRBc2NcIj48L3NvcnQtaW5kaWNhdG9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgIDx0Ym9keT5cclxuICAgICAgICAgICAgICAgICAgICA8dHIgdi1mb3I9XCJtZWRpYSBpbiBmaWx0ZXJlZE1lZGlhSXRlbXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWVkaWEtaXRlbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOmNsYXNzPVwie3NlbGVjdGVkOiBpc01lZGlhU2VsZWN0ZWQobWVkaWEpfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdi1vbjpjbGljay5zdG9wPVwidG9nZ2xlU2VsZWN0aW9uT2ZNZWRpYShtZWRpYSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRyYWdnYWJsZT1cInRydWVcIiB2LW9uOmRyYWdzdGFydD1cImRyYWdTdGFydChtZWRpYSwgJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOmtleT1cIm1lZGlhLm5hbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0aHVtYm5haWwtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImltZy13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgdi1pZj1cIm1lZGlhLm1pbWUuc3RhcnRzV2l0aCgnaW1hZ2UnKVwiIGRyYWdnYWJsZT1cImZhbHNlXCIgOnNyYz1cImJ1aWxkTWVkaWFVcmwobWVkaWEudXJsLCB0aHVtYlNpemUpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgdi1lbHNlIGNsYXNzPVwiZmEgZmEtZmlsZS1vIGZhLWxnXCIgOmRhdGEtbWltZT1cIm1lZGlhLm1pbWVcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZWRpYS1uYW1lLWNlbGxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJyZWFrLXdvcmRcIj4ge3sgbWVkaWEubmFtZSB9fSA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b25zLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6O1wiIGNsYXNzPVwiYnRuIGJ0bi1saW5rIGJ0bi1zbSBtci0xIGVkaXQtYnV0dG9uXCIgdi1vbjpjbGljay5zdG9wPVwicmVuYW1lTWVkaWEobWVkaWEpXCI+IHt7IFQuZWRpdEJ1dHRvbiB9fSA8L2EgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6O1wiIGNsYXNzPVwiYnRuIGJ0bi1saW5rIGJ0bi1zbSBkZWxldGUtYnV0dG9uXCIgdi1vbjpjbGljay5zdG9wPVwiZGVsZXRlTWVkaWEobWVkaWEpXCI+IHt7IFQuZGVsZXRlQnV0dG9uIH19IDwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIDpocmVmPVwibWVkaWEudXJsXCIgdGFyZ2V0PVwiX2JsYW5rXCIgY2xhc3M9XCJidG4gYnRuLWxpbmsgYnRuLXNtIHZpZXctYnV0dG9uXCI+IHt7IFQudmlld0J1dHRvbiB9fSA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jb2xcIj4ge3sgcHJpbnREYXRlVGltZShtZWRpYS5sYXN0TW9kaWZ5KSB9fSA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY29sIG9wdGlvbmFsLWNvbFwiPiB7eyBpc05hTihtZWRpYS5zaXplKT8gMCA6IE1hdGgucm91bmQobWVkaWEuc2l6ZSAvIDEwMjQpIH19IEtCPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNvbCBvcHRpb25hbC1jb2xcIj57eyBtZWRpYS5taW1lIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgIGAsXHJcbiAgICBkYXRhOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgVDoge31cclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgcHJvcHM6IHtcclxuICAgICAgICBzb3J0Qnk6IFN0cmluZyxcclxuICAgICAgICBzb3J0QXNjOiBCb29sZWFuLFxyXG4gICAgICAgIGZpbHRlcmVkTWVkaWFJdGVtczogQXJyYXksXHJcbiAgICAgICAgc2VsZWN0ZWRNZWRpYXM6IEFycmF5LFxyXG4gICAgICAgIHRodW1iU2l6ZTogTnVtYmVyXHJcbiAgICB9LFxyXG4gICAgY3JlYXRlZDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHZhciBzZWxmID0gdGhpcztcclxuICAgICAgICBzZWxmLlQuaW1hZ2VIZWFkZXIgPSAkKCcjdC1pbWFnZS1oZWFkZXInKS52YWwoKTtcclxuICAgICAgICBzZWxmLlQubmFtZUhlYWRlciA9ICQoJyN0LW5hbWUtaGVhZGVyJykudmFsKCk7XHJcbiAgICAgICAgc2VsZi5ULmxhc3RNb2RpZnlIZWFkZXIgPSAkKCcjdC1sYXN0TW9kaWZ5LWhlYWRlcicpLnZhbCgpO1xyXG4gICAgICAgIHNlbGYuVC5zaXplSGVhZGVyID0gJCgnI3Qtc2l6ZS1oZWFkZXInKS52YWwoKTtcclxuICAgICAgICBzZWxmLlQudHlwZUhlYWRlciA9ICQoJyN0LXR5cGUtaGVhZGVyJykudmFsKCk7XHJcbiAgICAgICAgc2VsZi5ULmVkaXRCdXR0b24gPSAkKCcjdC1lZGl0LWJ1dHRvbicpLnZhbCgpO1xyXG4gICAgICAgIHNlbGYuVC5kZWxldGVCdXR0b24gPSAkKCcjdC1kZWxldGUtYnV0dG9uJykudmFsKCk7XHJcbiAgICAgICAgc2VsZi5ULnZpZXdCdXR0b24gPSAkKCcjdC12aWV3LWJ1dHRvbicpLnZhbCgpO1xyXG4gICAgfSxcclxuICAgIG1ldGhvZHM6IHtcclxuICAgICAgICBpc01lZGlhU2VsZWN0ZWQ6IGZ1bmN0aW9uIChtZWRpYSkge1xyXG4gICAgICAgICAgICB2YXIgcmVzdWx0ID0gdGhpcy5zZWxlY3RlZE1lZGlhcy5zb21lKGZ1bmN0aW9uIChlbGVtZW50LCBpbmRleCwgYXJyYXkpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50LnVybC50b0xvd2VyQ2FzZSgpID09PSBtZWRpYS51cmwudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBidWlsZE1lZGlhVXJsOiBmdW5jdGlvbiAodXJsLCB0aHVtYlNpemUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHVybCArICh1cmwuaW5kZXhPZignPycpID09IC0xID8gJz8nIDogJyYnKSArICd3aWR0aD0nICsgdGh1bWJTaXplICsgJyZoZWlnaHQ9JyArIHRodW1iU2l6ZTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNoYW5nZVNvcnQ6IGZ1bmN0aW9uIChuZXdTb3J0KSB7XHJcbiAgICAgICAgICAgIGJ1cy4kZW1pdCgnc29ydENoYW5nZVJlcXVlc3RlZCcsIG5ld1NvcnQpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdG9nZ2xlU2VsZWN0aW9uT2ZNZWRpYTogZnVuY3Rpb24gKG1lZGlhKSB7XHJcbiAgICAgICAgICAgIGJ1cy4kZW1pdCgnbWVkaWFUb2dnbGVSZXF1ZXN0ZWQnLCBtZWRpYSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICByZW5hbWVNZWRpYTogZnVuY3Rpb24gKG1lZGlhKSB7XHJcbiAgICAgICAgICAgIGJ1cy4kZW1pdCgncmVuYW1lTWVkaWFSZXF1ZXN0ZWQnLCBtZWRpYSk7ICAgICAgICAgICAgXHJcbiAgICAgICAgfSxcclxuICAgICAgICBkZWxldGVNZWRpYTogZnVuY3Rpb24gKG1lZGlhKSB7XHJcbiAgICAgICAgICAgIGJ1cy4kZW1pdCgnZGVsZXRlTWVkaWFSZXF1ZXN0ZWQnLCBtZWRpYSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBkcmFnU3RhcnQ6IGZ1bmN0aW9uIChtZWRpYSwgZSkge1xyXG4gICAgICAgICAgICBidXMuJGVtaXQoJ21lZGlhRHJhZ1N0YXJ0UmVxdWVzdGVkJywgbWVkaWEsIGUpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcHJpbnREYXRlVGltZTogZnVuY3Rpb24gKGRhdGVtaWxsaXMpe1xyXG4gICAgICAgICAgICB2YXIgZCA9IG5ldyBEYXRlKGRhdGVtaWxsaXMpO1xyXG4gICAgICAgICAgICByZXR1cm4gZC50b0xvY2FsZVN0cmluZygpOyAgICAgICAgICAgIFxyXG4gICAgICAgIH1cclxuICAgIH1cclxufSk7XHJcbiIsIi8vIFRoaXMgY29tcG9uZW50IHJlY2VpdmVzIGEgbGlzdCBvZiBhbGwgdGhlIGl0ZW1zLCB1bnBhZ2VkLlxyXG4vLyBBcyB0aGUgdXNlciBpbnRlcmFjdHMgd2l0aCB0aGUgcGFnZXIsIGl0IHJhaXNlcyBldmVudHMgd2l0aCB0aGUgaXRlbXMgaW4gdGhlIGN1cnJlbnQgcGFnZS5cclxuLy8gSXQncyB0aGUgcGFyZW50J3MgcmVzcG9uc2liaWxpdHkgdG8gbGlzdGVuIGZvciB0aGVzZSBldmVudHMgYW5kIGRpc3BsYXkgdGhlIHJlY2VpdmVkIGl0ZW1zXHJcbi8vIDxwYWdlcj4gY29tcG9uZW50XHJcblZ1ZS5jb21wb25lbnQoJ3BhZ2VyJywge1xyXG4gICAgdGVtcGxhdGU6IGBcclxuICAgIDxkaXY+XHJcbiAgICAgICAgPG5hdiBpZD1cIm1lZGlhLXBhZ2VyXCIgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlclwiIGFyaWEtbGFiZWw9XCJQYWdpbmF0aW9uIE5hdmlnYXRpb25cIiByb2xlPVwibmF2aWdhdGlvblwiIDpkYXRhLWNvbXB1dGVkLXRyaWdnZXI9XCJpdGVtc0luQ3VycmVudFBhZ2UubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgIDx1bCBjbGFzcz1cInBhZ2luYXRpb24gcGFnaW5hdGlvbi1zbSBtLTBcIj5cclxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInBhZ2UtaXRlbSBtZWRpYS1maXJzdC1idXR0b25cIiA6Y2xhc3M9XCJ7ZGlzYWJsZWQgOiAhY2FuRG9GaXJzdH1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cInBhZ2UtbGlua1wiIGhyZWY9XCIjXCIgOnRhYmluZGV4PVwiY2FuRG9GaXJzdCA/IDAgOiAtMVwiIHYtb246Y2xpY2s9XCJnb0ZpcnN0XCI+e3sgVC5wYWdlckZpcnN0QnV0dG9uIH19PC9hPlxyXG4gICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInBhZ2UtaXRlbVwiIDpjbGFzcz1cIntkaXNhYmxlZCA6ICFjYW5Eb1ByZXZ9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJwYWdlLWxpbmtcIiBocmVmPVwiI1wiIDp0YWJpbmRleD1cImNhbkRvUHJldiA/IDAgOiAtMVwiIHYtb246Y2xpY2s9XCJwcmV2aW91c1wiPnt7IFQucGFnZXJQcmV2aW91c0J1dHRvbiB9fTwvYT5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGkgdi1pZj1cImxpbmsgIT09IC0xXCIgY2xhc3M9XCJwYWdlLWl0ZW0gcGFnZS1udW1iZXJcIiAgOmNsYXNzPVwie2FjdGl2ZSA6IGN1cnJlbnQgPT0gbGluayAtIDF9XCIgdi1mb3I9XCJsaW5rIGluIHBhZ2VMaW5rc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwicGFnZS1saW5rXCIgaHJlZj1cIiNcIiB2LW9uOmNsaWNrPVwiZ29UbyhsaW5rIC0gMSlcIiA6YXJpYS1sYWJlbD1cIidHb3RvIFBhZ2UnICsgbGlua1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7e2xpbmt9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiB2LWlmPVwiY3VycmVudCA9PSBsaW5rIC0xXCIgY2xhc3M9XCJzci1vbmx5XCI+KGN1cnJlbnQpPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJwYWdlLWl0ZW1cIiA6Y2xhc3M9XCJ7ZGlzYWJsZWQgOiAhY2FuRG9OZXh0fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwicGFnZS1saW5rXCIgaHJlZj1cIiNcIiA6dGFiaW5kZXg9XCJjYW5Eb05leHQgPyAwIDogLTFcIiB2LW9uOmNsaWNrPVwibmV4dFwiPnt7IFQucGFnZXJOZXh0QnV0dG9uIH19PC9hPlxyXG4gICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInBhZ2UtaXRlbSBtZWRpYS1sYXN0LWJ1dHRvblwiIDpjbGFzcz1cIntkaXNhYmxlZCA6ICFjYW5Eb0xhc3R9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJwYWdlLWxpbmtcIiBocmVmPVwiI1wiIDp0YWJpbmRleD1cImNhbkRvTGFzdCA/IDAgOiAtMVwiIHYtb246Y2xpY2s9XCJnb0xhc3RcIj57eyBULnBhZ2VyTGFzdEJ1dHRvbiB9fTwvYT5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJwYWdlLWl0ZW0gbWwtNCBwYWdlLXNpemUtaW5mb1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBmbGV4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBhZ2UtbGluayBkaXNhYmxlZCB0ZXh0LW11dGVkIHBhZ2Utc2l6ZS1sYWJlbFwiPnt7IFQucGFnZXJQYWdlU2l6ZUxhYmVsIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IGlkPVwicGFnZVNpemVTZWxlY3RcIiBjbGFzcz1cInBhZ2UtbGlua1wiIHYtbW9kZWw9XCJwYWdlU2l6ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2LWZvcj1cIm9wdGlvbiBpbiBwYWdlU2l6ZU9wdGlvbnNcIiB2LWJpbmQ6dmFsdWU9XCJvcHRpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e29wdGlvbn19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgIDwvbmF2PlxyXG4gICAgICAgIDxuYXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxyXG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJwYWdpbmF0aW9uIHBhZ2luYXRpb24tc20gbS0wIG10LTJcIj5cclxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInBhZ2UtaXRlbSBtbC00IHBhZ2UtaW5mb1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGFnZS1saW5rIGRpc2FibGVkIHRleHQtbXV0ZWQgXCI+e3sgVC5wYWdlclBhZ2VMYWJlbCB9fSB7e2N1cnJlbnQgKyAxfX0ve3t0b3RhbFBhZ2VzfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwicGFnZS1pdGVtIG1sLTQgdG90YWwtaW5mb1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGFnZS1saW5rIGRpc2FibGVkIHRleHQtbXV0ZWQgXCI+IHt7IFQucGFnZXJUb3RhbExhYmVsIH19IHt7dG90YWx9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9uYXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgYCxcclxuICAgIHByb3BzOiB7XHJcbiAgICAgICAgc291cmNlSXRlbXM6IEFycmF5XHJcbiAgICB9LFxyXG4gICAgZGF0YTogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHBhZ2VTaXplOiAxMCxcclxuICAgICAgICAgICAgcGFnZVNpemVPcHRpb25zOiBbMTAsIDMwLCA1MCwgMTAwXSxcclxuICAgICAgICAgICAgY3VycmVudDogMCxcclxuICAgICAgICAgICAgVDoge31cclxuICAgICAgICB9O1xyXG4gICAgfSxcclxuICAgIGNyZWF0ZWQ6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB2YXIgc2VsZiA9IHRoaXM7XHJcblxyXG4gICAgICAgIC8vIHJldHJpZXZpbmcgbG9jYWxpemVkIHN0cmluZ3MgZnJvbSB2aWV3XHJcbiAgICAgICAgc2VsZi5ULnBhZ2VyRmlyc3RCdXR0b24gPSAkKCcjdC1wYWdlci1maXJzdC1idXR0b24nKS52YWwoKTtcclxuICAgICAgICBzZWxmLlQucGFnZXJQcmV2aW91c0J1dHRvbiA9ICQoJyN0LXBhZ2VyLXByZXZpb3VzLWJ1dHRvbicpLnZhbCgpO1xyXG4gICAgICAgIHNlbGYuVC5wYWdlck5leHRCdXR0b24gPSAkKCcjdC1wYWdlci1uZXh0LWJ1dHRvbicpLnZhbCgpO1xyXG4gICAgICAgIHNlbGYuVC5wYWdlckxhc3RCdXR0b24gPSAkKCcjdC1wYWdlci1sYXN0LWJ1dHRvbicpLnZhbCgpO1xyXG4gICAgICAgIHNlbGYuVC5wYWdlclBhZ2VTaXplTGFiZWwgPSAkKCcjdC1wYWdlci1wYWdlLXNpemUtbGFiZWwnKS52YWwoKTtcclxuICAgICAgICBzZWxmLlQucGFnZXJQYWdlTGFiZWwgPSAkKCcjdC1wYWdlci1wYWdlLWxhYmVsJykudmFsKCk7XHJcbiAgICAgICAgc2VsZi5ULnBhZ2VyVG90YWxMYWJlbCA9ICQoJyN0LXBhZ2VyLXRvdGFsLWxhYmVsJykudmFsKCk7ICAgICAgICBcclxuICAgIH0sXHJcbiAgICBtZXRob2RzOiB7XHJcbiAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnQgPSB0aGlzLmN1cnJlbnQgKyAxO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcHJldmlvdXM6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50ID0gdGhpcy5jdXJyZW50IC0gMTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGdvRmlyc3Q6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50ID0gMDtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGdvTGFzdDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnQgPSB0aGlzLnRvdGFsUGFnZXMgLSAxO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZ29UbzogZnVuY3Rpb24gKHRhcmdldFBhZ2UpIHtcclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50ID0gdGFyZ2V0UGFnZTtcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgY29tcHV0ZWQ6IHtcclxuICAgICAgICB0b3RhbDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zb3VyY2VJdGVtcyA/IHRoaXMuc291cmNlSXRlbXMubGVuZ3RoIDogMDtcclxuICAgICAgICB9LFxyXG4gICAgICAgIHRvdGFsUGFnZXM6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgdmFyIHBhZ2VzID0gTWF0aC5jZWlsKHRoaXMudG90YWwgLyB0aGlzLnBhZ2VTaXplKTtcclxuICAgICAgICAgICAgcmV0dXJuIHBhZ2VzID4gMCA/IHBhZ2VzIDogMTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGlzTGFzdFBhZ2U6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudCArIDEgPj0gdGhpcy50b3RhbFBhZ2VzO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgaXNGaXJzdFBhZ2U6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudCA9PT0gMDtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNhbkRvTmV4dDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICByZXR1cm4gIXRoaXMuaXNMYXN0UGFnZTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNhbkRvUHJldjogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICByZXR1cm4gIXRoaXMuaXNGaXJzdFBhZ2U7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBjYW5Eb0ZpcnN0OiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAhdGhpcy5pc0ZpcnN0UGFnZTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNhbkRvTGFzdDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICByZXR1cm4gIXRoaXMuaXNMYXN0UGFnZTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIC8vIHRoaXMgY29tcHV0ZWQgaXMgb25seSB0byBoYXZlIGEgY2VudHJhbCBwbGFjZSB3aGVyZSB3ZSBkZXRlY3QgY2hhbmdlcyBhbmQgbGV2ZXJhZ2UgVnVlIEpTIHJlYWN0aXZpdHkgdG8gcmFpc2Ugb3VyIGV2ZW50LlxyXG4gICAgICAgIC8vIFRoYXQgZXZlbnQgd2lsbCBiZSBoYW5kbGVkIGJ5IHRoZSBwYXJlbnQgbWVkaWEgYXBwIHRvIGRpc3BsYXkgdGhlIGl0ZW1zIGluIHRoZSBwYWdlLlxyXG4gICAgICAgIC8vIHRoaXMgbG9naWMgd2lsbCBub3QgcnVuIGlmIHRoZSBjb21wdXRlZCBwcm9wZXJ0eSBpcyBub3QgdXNlZCBpbiB0aGUgdGVtcGxhdGUuIFdlIHVzZSBhIGR1bW15IFwiZGF0YS1jb21wdXRlZC10cmlnZ2VyXCIgYXR0cmlidXRlIGZvciB0aGF0LlxyXG4gICAgICAgIGl0ZW1zSW5DdXJyZW50UGFnZTogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICB2YXIgc3RhcnQgPSB0aGlzLnBhZ2VTaXplICogdGhpcy5jdXJyZW50O1xyXG4gICAgICAgICAgICB2YXIgZW5kID0gc3RhcnQgKyB0aGlzLnBhZ2VTaXplO1xyXG4gICAgICAgICAgICB2YXIgcmVzdWx0ID0gdGhpcy5zb3VyY2VJdGVtcy5zbGljZShzdGFydCwgZW5kKTtcclxuICAgICAgICAgICAgYnVzLiRlbWl0KCdwYWdlckV2ZW50JywgcmVzdWx0KTtcclxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgICB9LFxyXG4gICAgICAgIHBhZ2VMaW5rczogZnVuY3Rpb24gKCkge1xyXG5cclxuICAgICAgICAgICAgdmFyIGxpbmtzID0gW107XHJcblxyXG4gICAgICAgICAgICBsaW5rcy5wdXNoKHRoaXMuY3VycmVudCArIDEpO1xyXG5cclxuICAgICAgICAgICAgLy8gQWRkIDIgaXRlbXMgYmVmb3JlIGN1cnJlbnRcclxuICAgICAgICAgICAgdmFyIGJlZm9yZUN1cnJlbnQgPSB0aGlzLmN1cnJlbnQgPiAwID8gdGhpcy5jdXJyZW50IDogLTE7XHJcbiAgICAgICAgICAgIGxpbmtzLnVuc2hpZnQoYmVmb3JlQ3VycmVudCk7XHJcblxyXG4gICAgICAgICAgICB2YXIgYmVmb3JlQmVmb3JlQ3VycmVudCA9IHRoaXMuY3VycmVudCA+IDEgPyB0aGlzLmN1cnJlbnQgLSAxIDogLTE7XHJcbiAgICAgICAgICAgIGxpbmtzLnVuc2hpZnQoYmVmb3JlQmVmb3JlQ3VycmVudCk7XHJcblxyXG5cclxuICAgICAgICAgICAgLy8gQWRkIDIgaXRlbXMgYWZ0ZXIgY3VycmVudFxyXG4gICAgICAgICAgICB2YXIgYWZ0ZXJDdXJyZW50ID0gdGhpcy50b3RhbFBhZ2VzIC0gdGhpcy5jdXJyZW50ID4gMSA/IHRoaXMuY3VycmVudCArIDIgOiAtMTtcclxuICAgICAgICAgICAgbGlua3MucHVzaChhZnRlckN1cnJlbnQpO1xyXG5cclxuICAgICAgICAgICAgdmFyIGFmdGVyQWZ0ZXJDdXJyZW50ID0gdGhpcy50b3RhbFBhZ2VzIC0gdGhpcy5jdXJyZW50ID4gMiA/IHRoaXMuY3VycmVudCArIDMgOiAtMTtcclxuICAgICAgICAgICAgbGlua3MucHVzaChhZnRlckFmdGVyQ3VycmVudCk7XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gbGlua3M7XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuICAgIHdhdGNoOiB7XHJcbiAgICAgICAgc291cmNlSXRlbXM6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50ID0gMDsgLy8gcmVzZXR0aW5nIGN1cnJlbnQgcGFnZSBhZnRlciByZWNlaXZpbmcgYSBuZXcgbGlzdCBvZiB1bnBhZ2VkIGl0ZW1zXHJcbiAgICAgICAgfSxcclxuICAgICAgICBwYWdlU2l6ZTogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnQgPSAwO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufSk7XHJcbiIsIi8vIDxzb3J0LWluZGljYXRvcj4gY29tcG9uZW50XHJcblZ1ZS5jb21wb25lbnQoJ3NvcnRJbmRpY2F0b3InLCB7XHJcbiAgICB0ZW1wbGF0ZTogYFxyXG4gICAgICAgIDxkaXYgdi1zaG93PVwiaXNBY3RpdmVcIiBjbGFzcz1cInNvcnQtaW5kaWNhdG9yXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIHYtc2hvdz1cImFzY1wiPjxpIGNsYXNzPVwic21hbGwgZmEgZmEtY2hldnJvbi11cFwiPjwvaT48L3NwYW4+XHJcbiAgICAgICAgICAgIDxzcGFuIHYtc2hvdz1cIiFhc2NcIj48aSBjbGFzcz1cInNtYWxsIGZhIGZhLWNoZXZyb24tZG93blwiPjwvaT48L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgYCxcclxuICAgIHByb3BzOiB7XHJcbiAgICAgICAgY29sbmFtZTogU3RyaW5nLFxyXG4gICAgICAgIHNlbGVjdGVkY29sbmFtZTogU3RyaW5nLFxyXG4gICAgICAgIGFzYzogQm9vbGVhblxyXG4gICAgfSxcclxuICAgIGNvbXB1dGVkOiB7XHJcbiAgICAgICAgaXNBY3RpdmU6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29sbmFtZS50b0xvd2VyQ2FzZSgpID09IHRoaXMuc2VsZWN0ZWRjb2xuYW1lLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59KTtcclxuIiwiZnVuY3Rpb24gaW5pdGlhbGl6ZUF0dGFjaGVkTWVkaWFGaWVsZChlbCwgaWRPZlVwbG9hZEJ1dHRvbiwgdXBsb2FkQWN0aW9uLCBtZWRpYUl0ZW1VcmwsIGFsbG93TXVsdGlwbGUsIGFsbG93TWVkaWFUZXh0LCBhbGxvd0FuY2hvcnMsIHRlbXBVcGxvYWRGb2xkZXIpIHtcclxuXHJcbiAgICB2YXIgdGFyZ2V0ID0gJChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgkKGVsKS5kYXRhKCdmb3InKSkpO1xyXG4gICAgdmFyIGluaXRpYWxQYXRocyA9IHRhcmdldC5kYXRhKFwiaW5pdFwiKTtcclxuXHJcbiAgICB2YXIgbWVkaWFGaWVsZEVkaXRvciA9ICQoZWwpO1xyXG4gICAgdmFyIGlkcHJlZml4ID0gbWVkaWFGaWVsZEVkaXRvci5hdHRyKFwiaWRcIik7XHJcbiAgICB2YXIgbWVkaWFGaWVsZEFwcDtcclxuXHJcbiAgICBtZWRpYUZpZWxkQXBwcy5wdXNoKG1lZGlhRmllbGRBcHAgPSBuZXcgVnVlKHtcclxuICAgICAgICBlbDogbWVkaWFGaWVsZEVkaXRvci5nZXQoMCksXHJcbiAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICBtZWRpYUl0ZW1zOiBbXSxcclxuICAgICAgICAgICAgc2VsZWN0ZWRNZWRpYTogbnVsbCxcclxuICAgICAgICAgICAgc21hbGxUaHVtYnM6IGZhbHNlLFxyXG4gICAgICAgICAgICBpZFByZWZpeDogaWRwcmVmaXgsXHJcbiAgICAgICAgICAgIGluaXRpYWxpemVkOiBmYWxzZSxcclxuICAgICAgICAgICAgYWxsb3dNZWRpYVRleHQ6IGFsbG93TWVkaWFUZXh0LFxyXG4gICAgICAgICAgICBiYWNrdXBNZWRpYVRleHQ6ICcnLFxyXG4gICAgICAgICAgICBhbGxvd0FuY2hvcnM6IGFsbG93QW5jaG9ycyxcclxuICAgICAgICAgICAgYmFja3VwQW5jaG9yOiBudWxsXHJcbiAgICAgICAgfSxcclxuICAgICAgICBjcmVhdGVkOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIHZhciBzZWxmID0gdGhpcztcclxuXHJcbiAgICAgICAgICAgIHNlbGYuY3VycmVudFByZWZzID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbWVkaWFGaWVsZFByZWZzJykpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY29tcHV0ZWQ6IHtcclxuICAgICAgICAgICAgcGF0aHM6IHtcclxuICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBtZWRpYVBhdGhzID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmluaXRpYWxpemVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShpbml0aWFsUGF0aHMpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1lZGlhSXRlbXMuZm9yRWFjaChmdW5jdGlvbiAoeCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoeC5tZWRpYVBhdGggPT09ICdub3QtZm91bmQnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgbWVkaWFQYXRocy5wdXNoKHsgcGF0aDogeC5tZWRpYVBhdGgsIGlzUmVtb3ZlZDogeC5pc1JlbW92ZWQsIGlzTmV3OiB4LmlzTmV3LCBtZWRpYVRleHQ6IHgubWVkaWFUZXh0LCBhbmNob3I6IHguYW5jaG9yIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShtZWRpYVBhdGhzKTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uICh2YWx1ZXMpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgc2VsZiA9IHRoaXM7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIG1lZGlhUGF0aHMgPSB2YWx1ZXMgfHwgW107XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHNpZ25hbCA9ICQuRGVmZXJyZWQoKTtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgaXRlbXMgPSBbXTtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgbGVuZ3RoID0gMDtcclxuICAgICAgICAgICAgICAgICAgICBtZWRpYVBhdGhzLmZvckVhY2goZnVuY3Rpb24gKHgsIGkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXMucHVzaCh7IG5hbWU6ICcgJyArIHgucGF0aCwgbWltZTogJycsIG1lZGlhUGF0aDogJycsIGFuY2hvcjogeC5hbmNob3IgfSk7IC8vIGRvbid0IHJlbW92ZSB0aGUgc3BhY2UuIFNvbWV0aGluZyBkaWZmZXJlbnQgaXMgbmVlZGVkIG9yIGl0IHdvbnQgcmVhY3Qgd2hlbiB0aGUgcmVhbCBuYW1lIGFycml2ZXMuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb21pc2UgPSAkLndoZW4oc2lnbmFsKS5kb25lKGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICQuYWpheCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBtZWRpYUl0ZW1VcmwgKyBcIj9wYXRoPVwiICsgZW5jb2RlVVJJQ29tcG9uZW50KHgucGF0aCksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiAnR0VUJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiAoZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLnZ1ZWtleSA9IGRhdGEubmFtZSArIGkudG9TdHJpbmcoKTsgLy8gQmVjYXVzZSBhIHVuaXF1ZSBrZXkgaXMgcmVxdWlyZWQgYnkgVnVlIG9uIHYtZm9yIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLm1lZGlhVGV4dCA9IHgubWVkaWFUZXh0OyAvLyBUaGlzIHZhbHVlIGlzIG5vdCByZXR1cm5lZCBmcm9tIHRoZSBhamF4IGNhbGwuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEuYW5jaG9yID0geC5hbmNob3I7IC8vIFRoaXMgdmFsdWUgaXMgbm90IHJldHVybmVkIGZyb20gdGhlIGFqYXggY2FsbC5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXMuc3BsaWNlKGksIDEsIGRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbXMubGVuZ3RoID09PSArK2xlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXMuZm9yRWFjaChmdW5jdGlvbiAoeCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubWVkaWFJdGVtcy5wdXNoKHgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmluaXRpYWxpemVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I6IGZ1bmN0aW9uIChlcnJvcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShlcnJvcikpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtcy5zcGxpY2UoaSwgMSwgeyBuYW1lOiB4LnBhdGgsIG1pbWU6ICcnLCBtZWRpYVBhdGg6ICdub3QtZm91bmQnLCBtZWRpYVRleHQ6ICcnLCBhbmNob3I6IHsgeDogMC41LCB5OiAwLjUgfSB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW1zLmxlbmd0aCA9PT0gKytsZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zLmZvckVhY2goZnVuY3Rpb24gKHgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm1lZGlhSXRlbXMucHVzaCh4KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5pbml0aWFsaXplZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHNpZ25hbC5yZXNvbHZlKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGZpbGVTaXplOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5yb3VuZCh0aGlzLnNlbGVjdGVkTWVkaWEuc2l6ZSAvIDEwMjQpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBjYW5BZGRNZWRpYTogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgdmFyIG5vblJlbW92ZWRNZWRpYUl0ZW1zID0gW107XHJcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubWVkaWFJdGVtcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5tZWRpYUl0ZW1zW2ldLmlzUmVtb3ZlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBub25SZW1vdmVkTWVkaWFJdGVtcy5wdXNoKHRoaXMubWVkaWFJdGVtc1tpXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHJldHVybiBub25SZW1vdmVkTWVkaWFJdGVtcy5sZW5ndGggPT09IDAgfHwgbm9uUmVtb3ZlZE1lZGlhSXRlbXMubGVuZ3RoID4gMCAmJiBhbGxvd011bHRpcGxlO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB0aHVtYlNpemU6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNtYWxsVGh1bWJzID8gMTIwIDogMjQwO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBjdXJyZW50UHJlZnM6IHtcclxuICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNtYWxsVGh1bWJzOiB0aGlzLnNtYWxsVGh1bWJzXHJcbiAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uIChuZXdQcmVmcykge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghbmV3UHJlZnMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNtYWxsVGh1bWJzID0gbmV3UHJlZnMuc21hbGxUaHVtYnM7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIG1vdW50ZWQ6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgdmFyIHNlbGYgPSB0aGlzO1xyXG5cclxuICAgICAgICAgICAgc2VsZi5wYXRocyA9IGluaXRpYWxQYXRocztcclxuXHJcbiAgICAgICAgICAgIHNlbGYuJG9uKCdzZWxlY3RBbmREZWxldGVNZWRpYVJlcXVlc3RlZCcsIGZ1bmN0aW9uIChtZWRpYSkge1xyXG4gICAgICAgICAgICAgICAgc2VsZi5zZWxlY3RBbmREZWxldGVNZWRpYShtZWRpYSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgc2VsZi4kb24oJ3NlbGVjdE1lZGlhUmVxdWVzdGVkJywgZnVuY3Rpb24gKG1lZGlhKSB7XHJcbiAgICAgICAgICAgICAgICBzZWxmLnNlbGVjdE1lZGlhKG1lZGlhKTtcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICB2YXIgc2VsZWN0b3IgPSAnIycgKyBpZE9mVXBsb2FkQnV0dG9uO1xyXG4gICAgICAgICAgICB2YXIgZWRpdG9ySWQgPSBtZWRpYUZpZWxkRWRpdG9yLmF0dHIoJ2lkJyk7XHJcblxyXG4gICAgICAgICAgICAkKHNlbGVjdG9yKS5maWxldXBsb2FkKHtcclxuICAgICAgICAgICAgICAgIGxpbWl0Q29uY3VycmVudFVwbG9hZHM6IDIwLFxyXG4gICAgICAgICAgICAgICAgZHJvcFpvbmU6ICQoJyMnICsgZWRpdG9ySWQpLFxyXG4gICAgICAgICAgICAgICAgZGF0YVR5cGU6ICdqc29uJyxcclxuICAgICAgICAgICAgICAgIHVybDogdXBsb2FkQWN0aW9uLFxyXG4gICAgICAgICAgICAgICAgYWRkOiBmdW5jdGlvbiAoZSwgZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBjb3VudCA9IGRhdGEuZmlsZXMubGVuZ3RoO1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBpO1xyXG4gICAgICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEuZmlsZXNbaV0udXBsb2FkTmFtZSA9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmdldFVuaXF1ZUlkKCkgKyBkYXRhLmZpbGVzW2ldLm5hbWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEuc3VibWl0KCk7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgZm9ybURhdGE6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgYW50aUZvcmdlcnlUb2tlbiA9ICQoXCJpbnB1dFtuYW1lPV9fUmVxdWVzdFZlcmlmaWNhdGlvblRva2VuXVwiKS52YWwoKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtcclxuICAgICAgICAgICAgICAgICAgICAgICAgeyBuYW1lOiAncGF0aCcsIHZhbHVlOiB0ZW1wVXBsb2FkRm9sZGVyIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgbmFtZTogJ19fUmVxdWVzdFZlcmlmaWNhdGlvblRva2VuJywgdmFsdWU6IGFudGlGb3JnZXJ5VG9rZW4gfVxyXG4gICAgICAgICAgICAgICAgICAgIF07XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgZG9uZTogZnVuY3Rpb24gKGUsIGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgbmV3TWVkaWFJdGVtcyA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBlcnJvcm1zZyA9IFwiXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEucmVzdWx0LmZpbGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkYXRhLnJlc3VsdC5maWxlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5yZXN1bHQuZmlsZXNbaV0uaXNOZXcgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9pZiBlcnJvciBpcyBkZWZpbmVkIHByb2JhYmx5IHRoZSBmaWxlIHR5cGUgaXMgbm90IGFsbG93ZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGRhdGEucmVzdWx0LmZpbGVzW2ldLmVycm9yID09PSB1bmRlZmluZWQgfHwgZGF0YS5yZXN1bHQuZmlsZXNbaV0uZXJyb3IgPT09IG51bGwpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3TWVkaWFJdGVtcy5wdXNoKGRhdGEucmVzdWx0LmZpbGVzW2ldKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcm1zZyArPSBkYXRhLnJlc3VsdC5maWxlc1tpXS5lcnJvciArIFwiXFxuXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9ybXNnICE9PSBcIlwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFsZXJ0KGVycm9ybXNnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhuZXdNZWRpYUl0ZW1zKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAobmV3TWVkaWFJdGVtcy5sZW5ndGggPiAxICYmIGFsbG93TXVsdGlwbGUgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFsZXJ0KCQoJyNvbmx5T25lSXRlbU1lc3NhZ2UnKS52YWwoKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lZGlhRmllbGRBcHAubWVkaWFJdGVtcy5wdXNoKG5ld01lZGlhSXRlbXNbMF0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtZWRpYUZpZWxkQXBwLmluaXRpYWxpemVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtZWRpYUZpZWxkQXBwLm1lZGlhSXRlbXMgPSBtZWRpYUZpZWxkQXBwLm1lZGlhSXRlbXMuY29uY2F0KG5ld01lZGlhSXRlbXMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtZWRpYUZpZWxkQXBwLmluaXRpYWxpemVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgZXJyb3I6IGZ1bmN0aW9uIChqcVhIUiwgdGV4dFN0YXR1cywgZXJyb3JUaHJvd24pIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnZXJyb3Igb24gdXBsb2FkISEnKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhqcVhIUik7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2codGV4dFN0YXR1cyk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coZXJyb3JUaHJvd24pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIG1ldGhvZHM6IHtcclxuICAgICAgICAgICAgc2VsZWN0TWVkaWE6IGZ1bmN0aW9uIChtZWRpYSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE1lZGlhID0gbWVkaWE7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGdldFVuaXF1ZUlkOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3h4eHh4eHh4LXh4eHgtNHh4eC15eHh4LXh4eHh4eHh4eHh4eCcucmVwbGFjZSgvW3h5XS9nLCBmdW5jdGlvbiAoYykge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciByID0gTWF0aC5yYW5kb20oKSAqIDE2IHwgMCwgdiA9IGMgPT09ICd4JyA/IHIgOiAociAmIDB4MyB8IDB4OCk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHYudG9TdHJpbmcoMTYpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHJlbW92ZVNlbGVjdGVkOiBmdW5jdGlvbiAoZXZlbnQpIHtcclxuICAgICAgICAgICAgICAgIHZhciByZW1vdmVkID0ge307XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZE1lZGlhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGluZGV4ID0gdGhpcy5tZWRpYUl0ZW1zICYmIHRoaXMubWVkaWFJdGVtcy5pbmRleE9mKHRoaXMuc2VsZWN0ZWRNZWRpYSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlZCA9IHRoaXMubWVkaWFJdGVtc1tpbmRleF07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZWQuaXNSZW1vdmVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy90aGlzLm1lZGlhSXRlbXMuc3BsaWNlKFtpbmRleF0sIDEsIHJlbW92ZWQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1lZGlhSXRlbXMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBUaGUgcmVtb3ZlIGJ1dHRvbiBjYW4gYWxzbyByZW1vdmUgYSB1bmlxdWUgbWVkaWEgaXRlbVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm1lZGlhSXRlbXMubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZWQgPSB0aGlzLm1lZGlhSXRlbXNbaW5kZXhdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVkLmlzUmVtb3ZlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vdGhpcy5tZWRpYUl0ZW1zLnNwbGljZSgwLCAxLCByZW1vdmVkKTsgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tZWRpYUl0ZW1zLnNwbGljZSgwLCAxKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkTWVkaWEgPSBudWxsO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBzaG93TWVkaWFUZXh0TW9kYWw6IGZ1bmN0aW9uIChldmVudCkge1xyXG4gICAgICAgICAgICAgICAgJCh0aGlzLiRyZWZzLm1lZGlhVGV4dE1vZGFsKS5tb2RhbCgpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5iYWNrdXBNZWRpYVRleHQgPSB0aGlzLnNlbGVjdGVkTWVkaWEubWVkaWFUZXh0O1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBjYW5jZWxNZWRpYVRleHRNb2RhbDogZnVuY3Rpb24gKGV2ZW50KSB7XHJcbiAgICAgICAgICAgICAgICAkKHRoaXMuJHJlZnMubWVkaWFUZXh0TW9kYWwpLm1vZGFsKCdoaWRlJyk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkTWVkaWEubWVkaWFUZXh0ID0gdGhpcy5iYWNrdXBNZWRpYVRleHQ7XHJcbiAgICAgICAgICAgIH0sIFxyXG4gICAgICAgICAgICBzaG93QW5jaG9yTW9kYWw6IGZ1bmN0aW9uIChldmVudCkge1xyXG4gICAgICAgICAgICAgICAgJCh0aGlzLiRyZWZzLmFuY2hvcmluZ01vZGFsKS5tb2RhbCgpO1xyXG4gICAgICAgICAgICAgICAgLy8gQ2F1c2UgYSByZWZyZXNoIHRvIHJlY2FsYyBoZWlnaHRzLlxyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE1lZGlhLmFuY2hvciA9IHtcclxuICAgICAgICAgICAgICAgICAgeDogdGhpcy5zZWxlY3RlZE1lZGlhLmFuY2hvci54LFxyXG4gICAgICAgICAgICAgICAgICB5OiB0aGlzLnNlbGVjdGVkTWVkaWEuYW5jaG9yLnlcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMuYmFja3VwQW5jaG9yID0gdGhpcy5zZWxlY3RlZE1lZGlhLmFuY2hvcjtcclxuICAgICAgICAgICAgfSwgICAgICAgICAgIFxyXG4gICAgICAgICAgICBjYW5jZWxBbmNob3JpbmdNb2RhbDogZnVuY3Rpb24gKGV2ZW50KSB7XHJcbiAgICAgICAgICAgICAgICAkKHRoaXMuJHJlZnMuYW5jaG9yaW5nTW9kYWwpLm1vZGFsKCdoaWRlJyk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkTWVkaWEuYW5jaG9yID0gdGhpcy5iYWNrdXBBbmNob3I7XHJcbiAgICAgICAgICAgIH0sICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIHJlc2V0QW5jaG9yOiBmdW5jdGlvbiAoZXZlbnQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRNZWRpYS5hbmNob3IgPSB7IHg6IDAuNSwgeTogMC41IH07XHJcbiAgICAgICAgICAgIH0sIFxyXG4gICAgICAgICAgICBvbkFuY2hvckRyb3A6IGZ1bmN0aW9uKGV2ZW50KSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgaW1hZ2UgPSB0aGlzLiRyZWZzLmFuY2hvckltYWdlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE1lZGlhLmFuY2hvciA9IHtcclxuICAgICAgICAgICAgICAgICAgIHg6IGV2ZW50Lm9mZnNldFggLyBpbWFnZS5jbGllbnRXaWR0aCxcclxuICAgICAgICAgICAgICAgICAgIHk6IGV2ZW50Lm9mZnNldFkgLyBpbWFnZS5jbGllbnRIZWlnaHRcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgYW5jaG9yTGVmdDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuJHJlZnMuYW5jaG9ySW1hZ2UgJiYgdGhpcy4kcmVmcy5tb2RhbEJvZHkgJiYgdGhpcy5zZWxlY3RlZE1lZGlhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gV2hlbiBpbWFnZSBpcyBzaHJ1bmsgY29tcGFyZSBhZ2FpbnN0IHRoZSBtb2RhbCBib2R5LlxyXG4gICAgICAgICAgICAgICAgICAgIHZhciBvZmZzZXQgPSAodGhpcy4kcmVmcy5tb2RhbEJvZHkuY2xpZW50V2lkdGggLSB0aGlzLiRyZWZzLmFuY2hvckltYWdlLmNsaWVudFdpZHRoKSAvIDI7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0gKHRoaXMuc2VsZWN0ZWRNZWRpYS5hbmNob3IueCAqIHRoaXMuJHJlZnMuYW5jaG9ySW1hZ2UuY2xpZW50V2lkdGgpICsgb2Zmc2V0O1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChwb3NpdGlvbiA8IDE3KSB7IC8vIEFkanVzdCBzbyB0aGUgdGFyZ2V0IGRvZXNuJ3Qgc2hvdyBvdXRzaWRlIGltYWdlLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbiA9IDE3O1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uID0gcG9zaXRpb24gLSA4OyAvLyBBZGp1c3QgdG8gaGl0IHRoZSBtb3VzZSBwb2ludGVyLlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcG9zaXRpb24gKyAncHgnO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJzAnO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LCAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGFuY2hvclRvcDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuJHJlZnMuYW5jaG9ySW1hZ2UgJiYgdGhpcy5zZWxlY3RlZE1lZGlhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0gdGhpcy5zZWxlY3RlZE1lZGlhLmFuY2hvci55ICogdGhpcy4kcmVmcy5hbmNob3JJbWFnZS5jbGllbnRIZWlnaHQ7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBvc2l0aW9uIDwgMTUpIHsgLy8gQWRqdXN0bWVudCBzbyB0aGUgdGFyZ2V0IGRvZXNuJ3Qgc2hvdyBvdXRzaWRlIGltYWdlLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbiA9IDE1O1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uID0gcG9zaXRpb24gKyA1OyAvLyBBZGp1c3QgdG8gaGl0IHRoZSBtb3VzZSBwb2ludGVyLlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcG9zaXRpb24gKyAncHgnO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJzAnO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBzZXRBbmNob3I6IGZ1bmN0aW9uIChldmVudCkge1xyXG4gICAgICAgICAgICAgICAgdmFyIGltYWdlID0gdGhpcy4kcmVmcy5hbmNob3JJbWFnZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRNZWRpYS5hbmNob3IgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgeDogZXZlbnQub2Zmc2V0WCAvIGltYWdlLmNsaWVudFdpZHRoLFxyXG4gICAgICAgICAgICAgICAgICAgIHk6IGV2ZW50Lm9mZnNldFkgLyBpbWFnZS5jbGllbnRIZWlnaHRcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSwgICAgICAgICBcclxuICAgICAgICAgICAgYWRkTWVkaWFGaWxlczogZnVuY3Rpb24gKGZpbGVzKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoKGZpbGVzLmxlbmd0aCA+IDEpICYmIChhbGxvd011bHRpcGxlID09PSBmYWxzZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICBhbGVydCgkKCcjb25seU9uZUl0ZW1NZXNzYWdlJykudmFsKCkpO1xyXG4gICAgICAgICAgICAgICAgICAgIG1lZGlhRmllbGRBcHAubWVkaWFJdGVtcy5wdXNoKGZpbGVzWzBdKTtcclxuICAgICAgICAgICAgICAgICAgICBtZWRpYUZpZWxkQXBwLmluaXRpYWxpemVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbWVkaWFGaWVsZEFwcC5tZWRpYUl0ZW1zID0gbWVkaWFGaWVsZEFwcC5tZWRpYUl0ZW1zLmNvbmNhdChmaWxlcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgbWVkaWFGaWVsZEFwcC5pbml0aWFsaXplZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHNlbGVjdEFuZERlbGV0ZU1lZGlhOiBmdW5jdGlvbiAobWVkaWEpIHtcclxuICAgICAgICAgICAgICAgIHZhciBzZWxmID0gdGhpcztcclxuICAgICAgICAgICAgICAgIHNlbGYuc2VsZWN0ZWRNZWRpYSA9IG1lZGlhO1xyXG4gICAgICAgICAgICAgICAgLy8gc2V0VGltZW91dCBiZWNhdXNlIHNvbWV0aW1lcyBcclxuICAgICAgICAgICAgICAgIC8vIHJlbW92ZVNlbGVjdGVkIHdhcyBjYWxsZWQgZXZlbiBiZWZvcmUgdGhlIG1lZGlhIHdhcyBzZXQuXHJcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICBzZWxmLnJlbW92ZVNlbGVjdGVkKCk7XHJcbiAgICAgICAgICAgICAgICB9LCAxMDApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICB3YXRjaDoge1xyXG4gICAgICAgICAgICBtZWRpYUl0ZW1zOiB7XHJcbiAgICAgICAgICAgICAgICBkZWVwOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgaGFuZGxlciAoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gVHJpZ2dlciBwcmV2aWV3IHJlbmRlcmluZ1xyXG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyAkKGRvY3VtZW50KS50cmlnZ2VyKCdjb250ZW50cHJldmlldzpyZW5kZXInKTsgfSwgMTAwKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSwgXHJcbiAgICAgICAgICAgIGN1cnJlbnRQcmVmczogZnVuY3Rpb24gKG5ld1ByZWZzKSB7XHJcbiAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnbWVkaWFGaWVsZFByZWZzJywgSlNPTi5zdHJpbmdpZnkobmV3UHJlZnMpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH0pKTtcclxufVxyXG4iLCJmdW5jdGlvbiBpbml0aWFsaXplTWVkaWFGaWVsZChlbCwgbW9kYWxCb2R5RWxlbWVudCwgbWVkaWFJdGVtVXJsLCBhbGxvd011bHRpcGxlLCBhbGxvd01lZGlhVGV4dCwgYWxsb3dBbmNob3JzKSB7XHJcblxyXG4gICAgdmFyIHRhcmdldCA9ICQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJChlbCkuZGF0YSgnZm9yJykpKTtcclxuICAgIHZhciBpbml0aWFsUGF0aHMgPSB0YXJnZXQuZGF0YShcImluaXRcIik7XHJcblxyXG4gICAgdmFyIG1lZGlhRmllbGRFZGl0b3IgPSAkKGVsKTtcclxuICAgIHZhciBpZHByZWZpeCA9IG1lZGlhRmllbGRFZGl0b3IuYXR0cihcImlkXCIpO1xyXG4gICAgdmFyIG1lZGlhRmllbGRBcHA7XHJcblxyXG4gICAgbWVkaWFGaWVsZEFwcHMucHVzaChtZWRpYUZpZWxkQXBwID0gbmV3IFZ1ZSh7XHJcbiAgICAgICAgZWw6IG1lZGlhRmllbGRFZGl0b3IuZ2V0KDApLFxyXG4gICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgICAgbWVkaWFJdGVtczogW10sXHJcbiAgICAgICAgICAgIHNlbGVjdGVkTWVkaWE6IG51bGwsXHJcbiAgICAgICAgICAgIHNtYWxsVGh1bWJzOiBmYWxzZSxcclxuICAgICAgICAgICAgaWRQcmVmaXg6IGlkcHJlZml4LFxyXG4gICAgICAgICAgICBpbml0aWFsaXplZDogZmFsc2UsXHJcbiAgICAgICAgICAgIGFsbG93TWVkaWFUZXh0OiBhbGxvd01lZGlhVGV4dCxcclxuICAgICAgICAgICAgYmFja3VwTWVkaWFUZXh0OiAnJyxcclxuICAgICAgICAgICAgYWxsb3dBbmNob3JzOiBhbGxvd0FuY2hvcnMsXHJcbiAgICAgICAgICAgIGJhY2t1cEFuY2hvcjogbnVsbFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY3JlYXRlZDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICB2YXIgc2VsZiA9IHRoaXM7XHJcblxyXG4gICAgICAgICAgICBzZWxmLmN1cnJlbnRQcmVmcyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ21lZGlhRmllbGRQcmVmcycpKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNvbXB1dGVkOiB7XHJcbiAgICAgICAgICAgIHBhdGhzOiB7XHJcbiAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgbWVkaWFQYXRocyA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5pbml0aWFsaXplZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoaW5pdGlhbFBhdGhzKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tZWRpYUl0ZW1zLmZvckVhY2goZnVuY3Rpb24gKHgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHgubWVkaWFQYXRoID09PSAnbm90LWZvdW5kJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lZGlhUGF0aHMucHVzaCh7IHBhdGg6IHgubWVkaWFQYXRoLCBtZWRpYVRleHQ6IHgubWVkaWFUZXh0LCBhbmNob3I6IHguYW5jaG9yIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShtZWRpYVBhdGhzKTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uICh2YWx1ZXMpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgc2VsZiA9IHRoaXM7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIG1lZGlhUGF0aHMgPSB2YWx1ZXMgfHwgW107XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHNpZ25hbCA9ICQuRGVmZXJyZWQoKTtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgaXRlbXMgPSBbXTtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgbGVuZ3RoID0gMDtcclxuICAgICAgICAgICAgICAgICAgICBtZWRpYVBhdGhzLmZvckVhY2goZnVuY3Rpb24gKHgsIGkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXMucHVzaCh7IG5hbWU6ICcgJyArIHgucGF0aCwgbWltZTogJycsIG1lZGlhUGF0aDogJycgfSk7IC8vIGRvbid0IHJlbW92ZSB0aGUgc3BhY2UuIFNvbWV0aGluZyBkaWZmZXJlbnQgaXMgbmVlZGVkIG9yIGl0IHdvbnQgcmVhY3Qgd2hlbiB0aGUgcmVhbCBuYW1lIGFycml2ZXMuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb21pc2UgPSAkLndoZW4oc2lnbmFsKS5kb25lKGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICQuYWpheCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBtZWRpYUl0ZW1VcmwgKyBcIj9wYXRoPVwiICsgZW5jb2RlVVJJQ29tcG9uZW50KHgucGF0aCksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiAnR0VUJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiAoZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLnZ1ZWtleSA9IGRhdGEubmFtZSArIGkudG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5tZWRpYVRleHQgPSB4Lm1lZGlhVGV4dDsgLy8gVGhpcyB2YWx1ZSBpcyBub3QgcmV0dXJuZWQgZnJvbSB0aGUgYWpheCBjYWxsLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLmFuY2hvciA9IHguYW5jaG9yOyAvLyBUaGlzIHZhbHVlIGlzIG5vdCByZXR1cm5lZCBmcm9tIHRoZSBhamF4IGNhbGwuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zLnNwbGljZShpLCAxLCBkYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW1zLmxlbmd0aCA9PT0gKytsZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zLmZvckVhY2goZnVuY3Rpb24gKHkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm1lZGlhSXRlbXMucHVzaCh5KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5pbml0aWFsaXplZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yOiBmdW5jdGlvbiAoZXJyb3IpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtcy5zcGxpY2UoaSwgMSwgeyBuYW1lOiB4LnBhdGgsIG1pbWU6ICcnLCBtZWRpYVBhdGg6ICdub3QtZm91bmQnLCBtZWRpYVRleHQ6ICcnLCBhbmNob3I6IHsgeDogMCwgeTogMCB9IH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbXMubGVuZ3RoID09PSArK2xlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXMuZm9yRWFjaChmdW5jdGlvbiAoeCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubWVkaWFJdGVtcy5wdXNoKHgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmluaXRpYWxpemVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgc2lnbmFsLnJlc29sdmUoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZmlsZVNpemU6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBNYXRoLnJvdW5kKHRoaXMuc2VsZWN0ZWRNZWRpYS5zaXplIC8gMTAyNCk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGNhbkFkZE1lZGlhOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5tZWRpYUl0ZW1zLmxlbmd0aCA9PT0gMCB8fCB0aGlzLm1lZGlhSXRlbXMubGVuZ3RoID4gMCAmJiBhbGxvd011bHRpcGxlO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB0aHVtYlNpemU6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNtYWxsVGh1bWJzID8gMTIwIDogMjQwO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBjdXJyZW50UHJlZnM6IHtcclxuICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNtYWxsVGh1bWJzOiB0aGlzLnNtYWxsVGh1bWJzXHJcbiAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uIChuZXdQcmVmcykge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghbmV3UHJlZnMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNtYWxsVGh1bWJzID0gbmV3UHJlZnMuc21hbGxUaHVtYnM7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIG1vdW50ZWQ6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgdmFyIHNlbGYgPSB0aGlzO1xyXG5cclxuICAgICAgICAgICAgc2VsZi5wYXRocyA9IGluaXRpYWxQYXRocztcclxuXHJcbiAgICAgICAgICAgIHNlbGYuJG9uKCdzZWxlY3RBbmREZWxldGVNZWRpYVJlcXVlc3RlZCcsIGZ1bmN0aW9uIChtZWRpYSkge1xyXG4gICAgICAgICAgICAgICAgc2VsZi5zZWxlY3RBbmREZWxldGVNZWRpYShtZWRpYSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgc2VsZi4kb24oJ3NlbGVjdE1lZGlhUmVxdWVzdGVkJywgZnVuY3Rpb24gKG1lZGlhKSB7XHJcbiAgICAgICAgICAgICAgICBzZWxmLnNlbGVjdE1lZGlhKG1lZGlhKTtcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICBzZWxmLiRvbignZmlsZXNVcGxvYWRlZCcsIGZ1bmN0aW9uIChmaWxlcykge1xyXG4gICAgICAgICAgICAgICAgc2VsZi5hZGRNZWRpYUZpbGVzKGZpbGVzKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBtZXRob2RzOiB7XHJcbiAgICAgICAgICAgIHNlbGVjdE1lZGlhOiBmdW5jdGlvbiAobWVkaWEpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRNZWRpYSA9IG1lZGlhO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBzaG93TW9kYWw6IGZ1bmN0aW9uIChldmVudCkge1xyXG4gICAgICAgICAgICAgICAgdmFyIHNlbGYgPSB0aGlzO1xyXG4gICAgICAgICAgICAgICAgaWYgKHNlbGYuY2FuQWRkTWVkaWEpIHtcclxuICAgICAgICAgICAgICAgICAgICAkKFwiI21lZGlhQXBwXCIpLmRldGFjaCgpLmFwcGVuZFRvKCQobW9kYWxCb2R5RWxlbWVudCkuZmluZCgnLm1vZGFsLWJvZHknKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgJChcIiNtZWRpYUFwcFwiKS5zaG93KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIG1vZGFsID0gJChtb2RhbEJvZHlFbGVtZW50KS5tb2RhbCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICQobW9kYWxCb2R5RWxlbWVudCkuZmluZCgnLm1lZGlhRmllbGRTZWxlY3RCdXR0b24nKS5vZmYoJ2NsaWNrJykub24oJ2NsaWNrJywgZnVuY3Rpb24gKHYpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hZGRNZWRpYUZpbGVzKG1lZGlhQXBwLnNlbGVjdGVkTWVkaWFzKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdlIGRvbid0IHdhbnQgdGhlIGluY2x1ZGVkIG1lZGlhcyB0byBiZSBzdGlsbCBzZWxlY3RlZCB0aGUgbmV4dCB0aW1lIHdlIG9wZW4gdGhlIG1vZGFsLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtZWRpYUFwcC5zZWxlY3RlZE1lZGlhcyA9IFtdO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgbW9kYWwubW9kYWwoJ2hpZGUnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHNob3dNZWRpYVRleHRNb2RhbDogZnVuY3Rpb24gKGV2ZW50KSB7XHJcbiAgICAgICAgICAgICAgICAkKHRoaXMuJHJlZnMubWVkaWFUZXh0TW9kYWwpLm1vZGFsKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmJhY2t1cE1lZGlhVGV4dCA9IHRoaXMuc2VsZWN0ZWRNZWRpYS5tZWRpYVRleHQ7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGNhbmNlbE1lZGlhVGV4dE1vZGFsOiBmdW5jdGlvbiAoZXZlbnQpIHtcclxuICAgICAgICAgICAgICAgICQodGhpcy4kcmVmcy5tZWRpYVRleHRNb2RhbCkubW9kYWwoJ2hpZGUnKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRNZWRpYS5tZWRpYVRleHQgPSB0aGlzLmJhY2t1cE1lZGlhVGV4dDtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgc2hvd0FuY2hvck1vZGFsOiBmdW5jdGlvbiAoZXZlbnQpIHtcclxuICAgICAgICAgICAgICAgICQodGhpcy4kcmVmcy5hbmNob3JpbmdNb2RhbCkubW9kYWwoKTtcclxuICAgICAgICAgICAgICAgIC8vIENhdXNlIGEgcmVmcmVzaCB0byByZWNhbGMgaGVpZ2h0cy5cclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRNZWRpYS5hbmNob3IgPSB7XHJcbiAgICAgICAgICAgICAgICAgIHg6IHRoaXMuc2VsZWN0ZWRNZWRpYS5hbmNob3IueCxcclxuICAgICAgICAgICAgICAgICAgeTogdGhpcy5zZWxlY3RlZE1lZGlhLmFuY2hvci55XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLmJhY2t1cEFuY2hvciA9IHRoaXMuc2VsZWN0ZWRNZWRpYS5hbmNob3I7XHJcbiAgICAgICAgICAgIH0sICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGNhbmNlbEFuY2hvcmluZ01vZGFsOiBmdW5jdGlvbiAoZXZlbnQpIHtcclxuICAgICAgICAgICAgICAgICQodGhpcy4kcmVmcy5hbmNob3JpbmdNb2RhbCkubW9kYWwoJ2hpZGUnKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRNZWRpYS5hbmNob3IgPSB0aGlzLmJhY2t1cEFuY2hvcjtcclxuICAgICAgICAgICAgfSwgICAgICAgICAgICBcclxuICAgICAgICAgICAgcmVzZXRBbmNob3I6IGZ1bmN0aW9uIChldmVudCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE1lZGlhLmFuY2hvciA9IHsgeDogMC41LCB5OiAwLjUgfTtcclxuICAgICAgICAgICAgfSwgIFxyXG4gICAgICAgICAgICBvbkFuY2hvckRyb3A6IGZ1bmN0aW9uKGV2ZW50KSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgaW1hZ2UgPSB0aGlzLiRyZWZzLmFuY2hvckltYWdlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE1lZGlhLmFuY2hvciA9IHtcclxuICAgICAgICAgICAgICAgICAgIHg6IGV2ZW50Lm9mZnNldFggLyBpbWFnZS5jbGllbnRXaWR0aCxcclxuICAgICAgICAgICAgICAgICAgIHk6IGV2ZW50Lm9mZnNldFkgLyBpbWFnZS5jbGllbnRIZWlnaHRcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgYW5jaG9yTGVmdDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuJHJlZnMuYW5jaG9ySW1hZ2UgJiYgdGhpcy4kcmVmcy5tb2RhbEJvZHkgJiYgdGhpcy5zZWxlY3RlZE1lZGlhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gV2hlbiBpbWFnZSBpcyBzaHJ1bmsgY29tcGFyZSBhZ2FpbnN0IHRoZSBtb2RhbCBib2R5LlxyXG4gICAgICAgICAgICAgICAgICAgIHZhciBvZmZzZXQgPSAodGhpcy4kcmVmcy5tb2RhbEJvZHkuY2xpZW50V2lkdGggLSB0aGlzLiRyZWZzLmFuY2hvckltYWdlLmNsaWVudFdpZHRoKSAvIDI7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0gKHRoaXMuc2VsZWN0ZWRNZWRpYS5hbmNob3IueCAqIHRoaXMuJHJlZnMuYW5jaG9ySW1hZ2UuY2xpZW50V2lkdGgpICsgb2Zmc2V0O1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBhbmNob3JJY29uID0gTWF0aC5yb3VuZCh0aGlzLiRyZWZzLm1vZGFsQm9keS5xdWVyeVNlbGVjdG9yKCcuaWNvbi1tZWRpYS1hbmNob3InKS5jbGllbnRXaWR0aCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYoTnVtYmVyLmlzSW50ZWdlcihhbmNob3JJY29uKSlcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uID0gcG9zaXRpb24gLSBhbmNob3JJY29uLzI7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbiArICdweCc7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnMCc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGFuY2hvclRvcDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuJHJlZnMuYW5jaG9ySW1hZ2UgJiYgdGhpcy5zZWxlY3RlZE1lZGlhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0gdGhpcy5zZWxlY3RlZE1lZGlhLmFuY2hvci55ICogdGhpcy4kcmVmcy5hbmNob3JJbWFnZS5jbGllbnRIZWlnaHQ7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uICsgJ3B4JztcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICcwJztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgc2V0QW5jaG9yOiBmdW5jdGlvbiAoZXZlbnQpIHtcclxuICAgICAgICAgICAgICAgIHZhciBpbWFnZSA9IHRoaXMuJHJlZnMuYW5jaG9ySW1hZ2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkTWVkaWEuYW5jaG9yID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIHg6IGV2ZW50Lm9mZnNldFggLyBpbWFnZS5jbGllbnRXaWR0aCxcclxuICAgICAgICAgICAgICAgICAgICB5OiBldmVudC5vZmZzZXRZIC8gaW1hZ2UuY2xpZW50SGVpZ2h0XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sICAgICAgICAgXHJcbiAgICAgICAgICAgIGFkZE1lZGlhRmlsZXM6IGZ1bmN0aW9uIChmaWxlcykge1xyXG4gICAgICAgICAgICAgICAgaWYgKChmaWxlcy5sZW5ndGggPiAxKSAmJiAoYWxsb3dNdWx0aXBsZSA9PT0gZmFsc2UpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYWxlcnQoJCgnI29ubHlPbmVJdGVtTWVzc2FnZScpLnZhbCgpKTtcclxuICAgICAgICAgICAgICAgICAgICBtZWRpYUZpZWxkQXBwLm1lZGlhSXRlbXMucHVzaChmaWxlc1swXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbWVkaWFGaWVsZEFwcC5pbml0aWFsaXplZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIG1lZGlhRmllbGRBcHAubWVkaWFJdGVtcyA9IG1lZGlhRmllbGRBcHAubWVkaWFJdGVtcy5jb25jYXQoZmlsZXMpO1xyXG4gICAgICAgICAgICAgICAgICAgIG1lZGlhRmllbGRBcHAuaW5pdGlhbGl6ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICByZW1vdmVTZWxlY3RlZDogZnVuY3Rpb24gKGV2ZW50KSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZE1lZGlhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGluZGV4ID0gdGhpcy5tZWRpYUl0ZW1zICYmIHRoaXMubWVkaWFJdGVtcy5pbmRleE9mKHRoaXMuc2VsZWN0ZWRNZWRpYSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tZWRpYUl0ZW1zLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gVGhlIHJlbW92ZSBidXR0b24gY2FuIGFsc28gcmVtb3ZlIGEgdW5pcXVlIG1lZGlhIGl0ZW1cclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5tZWRpYUl0ZW1zLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1lZGlhSXRlbXMuc3BsaWNlKDAsIDEpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRNZWRpYSA9IG51bGw7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHNlbGVjdEFuZERlbGV0ZU1lZGlhOiBmdW5jdGlvbiAobWVkaWEpIHtcclxuICAgICAgICAgICAgICAgIHZhciBzZWxmID0gdGhpcztcclxuICAgICAgICAgICAgICAgIHNlbGYuc2VsZWN0ZWRNZWRpYSA9IG1lZGlhO1xyXG4gICAgICAgICAgICAgICAgLy8gc2V0VGltZW91dCBiZWNhdXNlIHNvbWV0aW1lcyByZW1vdmVTZWxlY3RlZCB3YXMgY2FsbGVkIGV2ZW4gYmVmb3JlIHRoZSBtZWRpYSB3YXMgc2V0LlxyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5yZW1vdmVTZWxlY3RlZCgpO1xyXG4gICAgICAgICAgICAgICAgfSwgMTAwKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgd2F0Y2g6IHtcclxuICAgICAgICAgICAgbWVkaWFJdGVtczoge1xyXG4gICAgICAgICAgICAgICAgZGVlcDogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIGhhbmRsZXIgKCkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIFRyaWdnZXIgcHJldmlldyByZW5kZXJpbmdcclxuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgJChkb2N1bWVudCkudHJpZ2dlcignY29udGVudHByZXZpZXc6cmVuZGVyJyk7IH0sIDEwMCk7IFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LCAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBjdXJyZW50UHJlZnM6IGZ1bmN0aW9uIChuZXdQcmVmcykge1xyXG4gICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ21lZGlhRmllbGRQcmVmcycsIEpTT04uc3RyaW5naWZ5KG5ld1ByZWZzKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9KSk7XHJcbn1cclxuIiwiLy8gZGlmZmVyZW50IG1lZGlhIGZpZWxkIGVkaXRvcnMgd2lsbCBhZGQgdGhlbXNlbHZlcyB0byB0aGlzIGFycmF5XHJcbnZhciBtZWRpYUZpZWxkQXBwcyA9IFtdO1xyXG4iLCIvLyA8bWVkaWEtZmllbGQtdGh1bWJzLWNvbnRhaW5lcj4gY29tcG9uZW50IFxyXG4vLyBkaWZmZXJlbnQgbWVkaWEgZmllbGQgZWRpdG9ycyBzaGFyZSB0aGlzIGNvbXBvbmVudCB0byBwcmVzZW50IHRoZSB0aHVtYnMuXHJcblZ1ZS5jb21wb25lbnQoJ21lZGlhRmllbGRUaHVtYnNDb250YWluZXInLCB7XHJcbiAgICB0ZW1wbGF0ZTogJ1xcXHJcbiAgICAgICA8ZGl2IDppZD1cImlkUHJlZml4ICsgXFwnX21lZGlhQ29udGFpbmVyTWFpblxcJ1wiIHYtY2xvYWs+XFxcclxuICAgICAgICAgPGRpdiB2LWlmPVwibWVkaWFJdGVtcy5sZW5ndGggPCAxXCIgY2xhc3M9XCJjYXJkIHRleHQtY2VudGVyXCI+XFxcclxuICAgICAgICAgICAgIDxkaXYgY2xhc3M9IFwiY2FyZC1ib2R5XCIgPlxcXHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImhpbnRcIj57e1Qubm9JbWFnZXN9fTwvc3Bhbj5cXFxyXG4gICAgICAgICAgICAgPC9kaXY+XFxcclxuICAgICAgICAgPC9kaXY+XFxcclxuICAgICAgICAgPGRyYWdnYWJsZSA6bGlzdD1cIm1lZGlhSXRlbXNcIiB0YWc9XCJvbFwiIGNsYXNzPVwicm93IG1lZGlhLWl0ZW1zLWdyaWRcIiA+XFxcclxuICAgICAgICAgICAgPGxpIHYtZm9yPVwibWVkaWEgaW4gbWVkaWFJdGVtc1wiXFxcclxuICAgICAgICAgICAgICAgIDprZXk9XCJtZWRpYS52dWVrZXlcIiBcXFxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJtZWRpYS1jb250YWluZXItbWFpbi1saXN0LWl0ZW0gY2FyZFwiXFxcclxuICAgICAgICAgICAgICAgIDpzdHlsZT1cInt3aWR0aDogdGh1bWJTaXplICsgMiArIFxcJ3B4XFwnfVwiXFxcclxuICAgICAgICAgICAgICAgIDpjbGFzcz1cIntzZWxlY3RlZDogc2VsZWN0ZWRNZWRpYSA9PSBtZWRpYX1cIlxcXHJcbiAgICAgICAgICAgICAgICB2LW9uOmNsaWNrPVwic2VsZWN0TWVkaWEobWVkaWEpXCIgdi1pZj1cIiFtZWRpYS5pc1JlbW92ZWRcIj5cXFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgdi1pZj1cIm1lZGlhLm1lZGlhUGF0aCE9PSBcXCdub3QtZm91bmRcXCdcIj5cXFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGh1bWItY29udGFpbmVyXCIgOnN0eWxlPVwie2hlaWdodDogdGh1bWJTaXplICsgXFwncHhcXCd9XCIgPlxcXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHYtaWY9XCJtZWRpYS5taW1lLnN0YXJ0c1dpdGgoXFwnaW1hZ2VcXCcpXCIgXFxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpzcmM9XCJidWlsZE1lZGlhVXJsKG1lZGlhLnVybCwgdGh1bWJTaXplKVwiIFxcXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ZGF0YS1taW1lPVwibWVkaWEubWltZVwiXFxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpzdHlsZT1cInttYXhIZWlnaHQ6IHRodW1iU2l6ZSArIFxcJ3B4XFwnICwgbWF4V2lkdGg6IHRodW1iU2l6ZSArIFxcJ3B4XFwnfVwiLz5cXFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgdi1lbHNlIGNsYXNzPVwiZmEgZmEtZmlsZS1vIGZhLWxnXCIgOmRhdGEtbWltZT1cIm1lZGlhLm1pbWVcIj48L2k+XFxcclxuICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxcXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWVkaWEtY29udGFpbmVyLW1haW4taXRlbS10aXRsZSBjYXJkLWJvZHlcIj5cXFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OjtcIiBjbGFzcz1cImJ0biBidG4tbGlnaHQgYnRuLXNtIGZsb2F0LXJpZ2h0IGlubGluZS1tZWRpYS1idXR0b24gZGVsZXRlLWJ1dHRvblwiXFxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdi1vbjpjbGljay5zdG9wPVwic2VsZWN0QW5kRGVsZXRlTWVkaWEobWVkaWEpXCI+PGkgY2xhc3M9XCJmYSBmYS10cmFzaFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT48L2E+XFxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSA6aHJlZj1cIm1lZGlhLnVybFwiIHRhcmdldD1cIl9ibGFua1wiIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBidG4tc20gZmxvYXQtcmlnaHQgaW5saW5lLW1lZGlhLWJ1dHRvbiB2aWV3LWJ1dHRvblwiXCI+PGkgY2xhc3M9XCJmYSBmYS1kb3dubG9hZFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT48L2E+IFxcXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZWRpYS1maWxlbmFtZSBjYXJkLXRleHQgc21hbGxcIiA6dGl0bGU9XCJtZWRpYS5tZWRpYVBhdGhcIj57eyBtZWRpYS5pc05ldyA/IG1lZGlhLm5hbWUuc3Vic3RyKDM2KSA6IG1lZGlhLm5hbWUgfX08L3NwYW4+XFxcclxuICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxcXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XFxcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHYtZWxzZT5cXFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGh1bWItY29udGFpbmVyIGZsZXgtY29sdW1uXCIgOnN0eWxlPVwie2hlaWdodDogdGh1bWJTaXplICsgXFwncHhcXCd9XCI+XFxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtYmFuIHRleHQtZGFuZ2VyIGQtYmxvY2tcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XFxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1kYW5nZXIgc21hbGwgZC1ibG9ja1wiPnt7IFQubWVkaWFOb3RGb3VuZCB9fTwvc3Bhbj5cXFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWRhbmdlciBzbWFsbCBkLWJsb2NrIHRleHQtY2VudGVyXCI+e3sgVC5kaXNjYXJkV2FybmluZyB9fTwvc3Bhbj5cXFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cXFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWVkaWEtY29udGFpbmVyLW1haW4taXRlbS10aXRsZSBjYXJkLWJvZHlcIj5cXFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6O1wiIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBidG4tc20gZmxvYXQtcmlnaHQgaW5saW5lLW1lZGlhLWJ1dHRvbiBkZWxldGUtYnV0dG9uXCJcXFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYtb246Y2xpY2suc3RvcD1cInNlbGVjdEFuZERlbGV0ZU1lZGlhKG1lZGlhKVwiPjxpIGNsYXNzPVwiZmEgZmEtdHJhc2hcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+PC9hPlxcXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lZGlhLWZpbGVuYW1lIGNhcmQtdGV4dCBzbWFsbCB0ZXh0LWRhbmdlclwiIDp0aXRsZT1cIm1lZGlhLm5hbWVcIj57eyBtZWRpYS5uYW1lIH19PC9zcGFuPlxcXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxcXHJcbiAgICAgICAgICAgICAgICAgICA8L2Rpdj5cXFxyXG4gICAgICAgICAgICA8L2xpPlxcXHJcbiAgICAgICAgIDwvZHJhZ2dhYmxlPlxcXHJcbiAgICAgICA8L2Rpdj5cXFxyXG4gICAgJyxcclxuICAgIGRhdGE6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBUOiB7fVxyXG4gICAgICAgIH07XHJcbiAgICB9LFxyXG4gICAgcHJvcHM6IHtcclxuICAgICAgICBtZWRpYUl0ZW1zOiBBcnJheSxcclxuICAgICAgICBzZWxlY3RlZE1lZGlhOiBPYmplY3QsXHJcbiAgICAgICAgdGh1bWJTaXplOiBOdW1iZXIsXHJcbiAgICAgICAgaWRQcmVmaXg6IFN0cmluZ1xyXG4gICAgfSxcclxuICAgIGNyZWF0ZWQ6IGZ1bmN0aW9uICgpIHtcclxuXHJcbiAgICAgICAgdmFyIHNlbGYgPSB0aGlzO1xyXG5cclxuICAgICAgICAvLyByZXRyaWV2aW5nIGxvY2FsaXplZCBzdHJpbmdzIGZyb20gdmlld1xyXG4gICAgICAgIHNlbGYuVC5tZWRpYU5vdEZvdW5kID0gJCgnI3QtbWVkaWEtbm90LWZvdW5kJykudmFsKCk7XHJcbiAgICAgICAgc2VsZi5ULmRpc2NhcmRXYXJuaW5nID0gJCgnI3QtZGlzY2FyZC13YXJuaW5nJykudmFsKCk7XHJcbiAgICAgICAgc2VsZi5ULm5vSW1hZ2VzID0gJCgnI3Qtbm8taW1hZ2VzJykudmFsKCk7XHJcbiAgICB9LFxyXG4gICAgbWV0aG9kczoge1xyXG4gICAgICAgIHNlbGVjdEFuZERlbGV0ZU1lZGlhOiBmdW5jdGlvbiAobWVkaWEpIHsgICAgICAgICAgICBcclxuICAgICAgICAgICAgdGhpcy4kcGFyZW50LiRlbWl0KCdzZWxlY3RBbmREZWxldGVNZWRpYVJlcXVlc3RlZCcsIG1lZGlhKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIHNlbGVjdE1lZGlhOiBmdW5jdGlvbiAobWVkaWEpIHtcclxuICAgICAgICAgICAgdGhpcy4kcGFyZW50LiRlbWl0KCdzZWxlY3RNZWRpYVJlcXVlc3RlZCcsIG1lZGlhKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGJ1aWxkTWVkaWFVcmw6IGZ1bmN0aW9uICh1cmwsIHRodW1iU2l6ZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdXJsICsgKHVybC5pbmRleE9mKCc/JykgPT0gLTEgPyAnPycgOiAnJicpICsgJ3dpZHRoPScgKyB0aHVtYlNpemUgKyAnJmhlaWdodD0nICsgdGh1bWJTaXplO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufSk7XHJcbiIsIi8vIDx1cGxvYWQ+IGNvbXBvbmVudFxyXG5WdWUuY29tcG9uZW50KCd1cGxvYWQnLCB7XHJcbiAgICB0ZW1wbGF0ZTogJ1xcXHJcbiAgICAgICAgPGRpdiA6Y2xhc3M9XCJ7IFxcJ3VwbG9hZC13YXJuaW5nXFwnIDogbW9kZWwuZXJyb3JNZXNzYWdlIH1cIiBjbGFzcz1cInVwbG9hZCBtLTIgcC0yIHB0LTBcIj4gXFxcclxuICAgICAgICAgICAgPHNwYW4gdi1pZj1cIm1vZGVsLmVycm9yTWVzc2FnZVwiIHYtb246Y2xpY2s9XCJkaXNtaXNzV2FybmluZygpXCIgY2xhc3M9XCJjbG9zZS13YXJuaW5nXCI+PGkgY2xhc3M9XCJmYSBmYS10aW1lc1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT4gPC9zcGFuPlxcXHJcbiAgICAgICAgICAgIDxwIGNsYXNzPVwidXBsb2FkLW5hbWVcIiA6dGl0bGU9XCJtb2RlbC5lcnJvck1lc3NhZ2VcIj57eyBtb2RlbC5uYW1lIH19PC9wPiBcXFxyXG4gICAgICAgICAgICA8ZGl2PiBcXFxyXG4gICAgICAgICAgICAgICA8c3BhbiB2LXNob3c9XCIhbW9kZWwuZXJyb3JNZXNzYWdlXCIgOnN0eWxlPVwieyB3aWR0aDogbW9kZWwucGVyY2VudGFnZSArIFxcJyVcXCd9XCIgY2xhc3M9XCJwcm9ncmVzcy1iYXJcIj4gPC9zcGFuPiBcXFxyXG4gICAgICAgICAgICAgICA8c3BhbiB2LWlmPVwibW9kZWwuZXJyb3JNZXNzYWdlXCIgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCIgOnRpdGxlPVwibW9kZWwuZXJyb3JNZXNzYWdlXCI+IEVycm9yOiB7eyBtb2RlbC5lcnJvck1lc3NhZ2UgfX0gPC9zcGFuPiBcXFxyXG4gICAgICAgICAgICA8L2Rpdj4gXFxcclxuICAgICAgICA8L2Rpdj4gXFxcclxuICAgICAgICAnLFxyXG4gICAgcHJvcHM6IHtcclxuICAgICAgICBtb2RlbDogT2JqZWN0XHJcbiAgICB9LFxyXG4gICAgbW91bnRlZDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHZhciBzZWxmID0gdGhpcztcclxuICAgICAgICAkKCcjZmlsZXVwbG9hZCcpLmJpbmQoJ2ZpbGV1cGxvYWRwcm9ncmVzcycsIGZ1bmN0aW9uIChlLCBkYXRhKSB7XHJcbiAgICAgICAgICAgIGlmIChkYXRhLmZpbGVzWzBdLm5hbWUgIT09IHNlbGYubW9kZWwubmFtZSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9ICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIHNlbGYubW9kZWwucGVyY2VudGFnZSA9IHBhcnNlSW50KGRhdGEubG9hZGVkIC8gZGF0YS50b3RhbCAqIDEwMCwgMTApO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICAkKCcjZmlsZXVwbG9hZCcpLmJpbmQoJ2ZpbGV1cGxvYWRkb25lJywgZnVuY3Rpb24gKGUsIGRhdGEpIHtcclxuICAgICAgICAgICAgaWYgKGRhdGEuZmlsZXNbMF0ubmFtZSAhPT0gc2VsZi5tb2RlbC5uYW1lKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGRhdGEucmVzdWx0LmZpbGVzWzBdLmVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICBzZWxmLmhhbmRsZUZhaWx1cmUoZGF0YS5maWxlc1swXS5uYW1lLCBkYXRhLnJlc3VsdC5maWxlc1swXS5lcnJvcik7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7ICBcclxuICAgICAgICAgICAgICAgIGJ1cy4kZW1pdCgncmVtb3ZhbFJlcXVlc3QnLCBzZWxmLm1vZGVsKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICAkKCcjZmlsZXVwbG9hZCcpLmJpbmQoJ2ZpbGV1cGxvYWRmYWlsJywgZnVuY3Rpb24gKGUsIGRhdGEpIHtcclxuICAgICAgICAgICAgaWYgKGRhdGEuZmlsZXNbMF0ubmFtZSAhPT0gc2VsZi5tb2RlbC5uYW1lKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgc2VsZi5oYW5kbGVGYWlsdXJlKGRhdGEuZmlsZXNbMF0ubmFtZSAsIGRhdGEudGV4dFN0YXR1cyk7ICAgICAgICAgICAgXHJcbiAgICAgICAgfSk7XHJcbiAgICB9LFxyXG4gICAgbWV0aG9kczoge1xyXG4gICAgICAgIGhhbmRsZUZhaWx1cmU6IGZ1bmN0aW9uIChmaWxlTmFtZSwgbWVzc2FnZSkge1xyXG4gICAgICAgICAgICBpZiAoZmlsZU5hbWUgIT09IHRoaXMubW9kZWwubmFtZSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMubW9kZWwuZXJyb3JNZXNzYWdlID0gbWVzc2FnZTtcclxuICAgICAgICAgICAgYnVzLiRlbWl0KCdFcnJvck9uVXBsb2FkJywgdGhpcy5tb2RlbCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBkaXNtaXNzV2FybmluZzogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICBidXMuJGVtaXQoJ3JlbW92YWxSZXF1ZXN0JywgdGhpcy5tb2RlbCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59KTtcclxuIiwiLy8gPHVwbG9hZC1saXN0PiBjb21wb25lbnRcclxuVnVlLmNvbXBvbmVudCgndXBsb2FkTGlzdCcsIHtcclxuICAgIHRlbXBsYXRlOiAnXFxcclxuICAgICAgICA8ZGl2IGNsYXNzPVwidXBsb2FkLWxpc3RcIiB2LXNob3c9XCJmaWxlcy5sZW5ndGggPiAwXCI+IFxcXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXJcIiBAY2xpY2s9XCJleHBhbmRlZCA9ICFleHBhbmRlZFwiPiBcXFxyXG4gICAgICAgICAgICAgICAgPHNwYW4+IHt7IFQudXBsb2FkcyB9fSA8L3NwYW4+IFxcXHJcbiAgICAgICAgICAgICAgICA8c3BhbiB2LXNob3c9XCJwZW5kaW5nQ291bnRcIj4gKFBlbmRpbmc6IHt7IHBlbmRpbmdDb3VudCB9fSkgPC9zcGFuPiBcXFxyXG4gICAgICAgICAgICAgICAgPHNwYW4gdi1zaG93PVwiZXJyb3JDb3VudFwiIDpjbGFzcz1cInsgXFwndGV4dC1kYW5nZXJcXCcgOiBlcnJvckNvdW50IH1cIj4gKCB7eyBULmVycm9ycyB9fToge3sgZXJyb3JDb3VudCB9fSAvIDxhIGhyZWY9XCJqYXZhc2NyaXB0OjtcIiB2LW9uOmNsaWNrLnN0b3A9XCJjbGVhckVycm9yc1wiID4ge3sgVC5jbGVhckVycm9ycyB9fSA8L2E+KTwvc3Bhbj4gXFxcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidG9nZ2xlLWJ1dHRvblwiPiBcXFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgdi1zaG93PVwiZXhwYW5kZWRcIj4gXFxcclxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1jaGV2cm9uLWRvd25cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+IFxcXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+IFxcXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiB2LXNob3c9XCIhZXhwYW5kZWRcIj4gXFxcclxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1jaGV2cm9uLXVwXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPiBcXFxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PiBcXFxyXG4gICAgICAgICAgICAgICAgPC9kaXY+IFxcXHJcbiAgICAgICAgICAgIDwvZGl2PiBcXFxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5XCIgdi1zaG93PVwiZXhwYW5kZWRcIj4gXFxcclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC13cmFwXCI+IFxcXHJcbiAgICAgICAgICAgICAgICAgICAgPHVwbG9hZCB2LWZvcj1cImYgaW4gZmlsZXNcIiA6a2V5PVwiZi5uYW1lXCIgIDptb2RlbD1cImZcIj48L3VwbG9hZD4gXFxcclxuICAgICAgICAgICAgICAgIDwvZGl2ID4gXFxcclxuICAgICAgICAgICAgPC9kaXY+IFxcXHJcbiAgICAgICAgPC9kaXY+IFxcXHJcbiAgICAgICAgJyxcclxuICAgIGRhdGE6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBmaWxlczogW10sXHJcbiAgICAgICAgICAgIFQ6IHt9LFxyXG4gICAgICAgICAgICBleHBhbmRlZDogZmFsc2UsXHJcbiAgICAgICAgICAgIHBlbmRpbmdDb3VudDogMCxcclxuICAgICAgICAgICAgZXJyb3JDb3VudDogMFxyXG4gICAgICAgIH1cclxuICAgIH0sXHJcbiAgICBjcmVhdGVkOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdmFyIHNlbGYgPSB0aGlzO1xyXG4gICAgICAgIC8vIHJldHJpZXZpbmcgbG9jYWxpemVkIHN0cmluZ3MgZnJvbSB2aWV3XHJcbiAgICAgICAgc2VsZi5ULnVwbG9hZHMgPSAkKCcjdC11cGxvYWRzJykudmFsKCk7XHJcbiAgICAgICAgc2VsZi5ULmVycm9ycyA9ICQoJyN0LWVycm9ycycpLnZhbCgpO1xyXG4gICAgICAgIHNlbGYuVC5jbGVhckVycm9ycyA9ICQoJyN0LWNsZWFyLWVycm9ycycpLnZhbCgpO1xyXG4gICAgfSxcclxuICAgIGNvbXB1dGVkOiB7XHJcbiAgICAgICAgZmlsZUNvdW50OiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmZpbGVzLmxlbmd0aDtcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgbW91bnRlZDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHZhciBzZWxmID0gdGhpcztcclxuXHJcbiAgICAgICAgJCgnI2ZpbGV1cGxvYWQnKS5iaW5kKCdmaWxldXBsb2FkYWRkJywgZnVuY3Rpb24gKGUsIGRhdGEpIHtcclxuICAgICAgICAgICAgaWYgKCFkYXRhLmZpbGVzKSB7IFxyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGRhdGEuZmlsZXMuZm9yRWFjaChmdW5jdGlvbiAobmV3RmlsZSkgeyAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIHZhciBhbHJlYWR5SW5MaXN0ID0gc2VsZi5maWxlcy5zb21lKGZ1bmN0aW9uIChmKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGYubmFtZSA9PSBuZXdGaWxlLm5hbWU7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoIWFscmVhZHlJbkxpc3QpIHtcclxuICAgICAgICAgICAgICAgICAgICBzZWxmLmZpbGVzLnB1c2goeyBuYW1lOiBuZXdGaWxlLm5hbWUsIHBlcmNlbnRhZ2U6IDAsIGVycm9yTWVzc2FnZTogJycgfSk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0EgZmlsZSB3aXRoIHRoZSBzYW1lIG5hbWUgaXMgYWxyZWFkeSBvbiB0aGUgcXVldWU6JyArIG5ld0ZpbGUubmFtZSk7XHJcbiAgICAgICAgICAgICAgICB9ICAgICAgICAgXHJcbiAgICAgICAgICAgIH0pOyAgICAgICAgICAgIFxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBidXMuJG9uKCdyZW1vdmFsUmVxdWVzdCcsIGZ1bmN0aW9uIChmaWxlVXBsb2FkKSB7XHJcbiAgICAgICAgICAgIHNlbGYuZmlsZXMuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSwgaW5kZXgsIGFycmF5KSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoaXRlbS5uYW1lID09IGZpbGVVcGxvYWQubmFtZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGFycmF5LnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBidXMuJG9uKCdFcnJvck9uVXBsb2FkJywgZnVuY3Rpb24gKGZpbGVVcGxvYWQpIHtcclxuICAgICAgICAgICAgc2VsZi51cGRhdGVDb3VudCgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfSxcclxuICAgIG1ldGhvZHM6IHtcclxuICAgICAgICB1cGRhdGVDb3VudDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICB0aGlzLmVycm9yQ291bnQgPSB0aGlzLmZpbGVzLmZpbHRlcihmdW5jdGlvbiAoaXRlbSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW0uZXJyb3JNZXNzYWdlICE9ICcnO1xyXG4gICAgICAgICAgICB9KS5sZW5ndGg7XHJcbiAgICAgICAgICAgIHRoaXMucGVuZGluZ0NvdW50ID0gdGhpcy5maWxlcy5sZW5ndGggLSB0aGlzLmVycm9yQ291bnQ7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmZpbGVzLmxlbmd0aCA8IDEpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZXhwYW5kZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY2xlYXJFcnJvcnM6IGZ1bmN0aW9uICgpIHsgICAgICAgICAgICBcclxuICAgICAgICAgICAgdGhpcy5maWxlcyA9IHRoaXMuZmlsZXMuZmlsdGVyKGZ1bmN0aW9uIChpdGVtKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gaXRlbS5lcnJvck1lc3NhZ2UgPT0gJyc7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH0sXHJcbiAgICB3YXRjaDoge1xyXG4gICAgICAgIGZpbGVzOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlQ291bnQoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn0pO1xyXG4iXX0= diff --git a/src/OrchardCore.Modules/OrchardCore.Media/wwwroot/Scripts/media.min.js b/src/OrchardCore.Modules/OrchardCore.Media/wwwroot/Scripts/media.min.js index a762edd9f97..8c0a8101290 100644 --- a/src/OrchardCore.Modules/OrchardCore.Media/wwwroot/Scripts/media.min.js +++ b/src/OrchardCore.Modules/OrchardCore.Media/wwwroot/Scripts/media.min.js @@ -1 +1 @@ -function _typeof(e){return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},_typeof(e)}function _typeof(e){return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},_typeof(e)}function initializeAttachedMediaField(e,t,i,n,a,r,o,s){var l,d=$(document.getElementById($(e).data("for"))).data("init"),c=$(e),u=c.attr("id");mediaFieldApps.push(l=new Vue({el:c.get(0),data:{mediaItems:[],selectedMedia:null,smallThumbs:!1,idPrefix:u,initialized:!1,allowMediaText:r,backupMediaText:"",allowAnchors:o,backupAnchor:null},created:function(){this.currentPrefs=JSON.parse(localStorage.getItem("mediaFieldPrefs"))},computed:{paths:{get:function(){var e=[];return this.initialized?(this.mediaItems.forEach((function(t){"not-found"!==t.mediaPath&&e.push({path:t.mediaPath,isRemoved:t.isRemoved,isNew:t.isNew,mediaText:t.mediaText,anchor:t.anchor})})),JSON.stringify(e)):JSON.stringify(d)},set:function(e){var t=this,i=e||[],a=$.Deferred(),r=[],o=0;i.forEach((function(e,i){r.push({name:" "+e.path,mime:"",mediaPath:"",anchor:e.anchor}),promise=$.when(a).done((function(){$.ajax({url:n+"?path="+encodeURIComponent(e.path),method:"GET",success:function(n){n.vuekey=n.name+i.toString(),n.mediaText=e.mediaText,n.anchor=e.anchor,r.splice(i,1,n),r.length===++o&&(r.forEach((function(e){t.mediaItems.push(e)})),t.initialized=!0)},error:function(n){console.log(JSON.stringify(n)),r.splice(i,1,{name:e.path,mime:"",mediaPath:"not-found",mediaText:"",anchor:{x:.5,y:.5}}),r.length===++o&&(r.forEach((function(e){t.mediaItems.push(e)})),t.initialized=!0)}})}))})),a.resolve()}},fileSize:function(){return Math.round(this.selectedMedia.size/1024)},canAddMedia:function(){for(var e=[],t=0;t0&&a},thumbSize:function(){return this.smallThumbs?120:240},currentPrefs:{get:function(){return{smallThumbs:this.smallThumbs}},set:function(e){e&&(this.smallThumbs=e.smallThumbs)}}},mounted:function(){var e=this;e.paths=d,e.$on("selectAndDeleteMediaRequested",(function(t){e.selectAndDeleteMedia(t)})),e.$on("selectMediaRequested",(function(t){e.selectMedia(t)}));var n="#"+t,r=c.attr("id");$(n).fileupload({limitConcurrentUploads:20,dropZone:$("#"+r),dataType:"json",url:i,add:function(t,i){var n,a=i.files.length;for(n=0;n0)for(var r=0;r1&&!1===a?(alert($("#onlyOneItemMessage").val()),l.mediaItems.push(i[0]),l.initialized=!0):(l.mediaItems=l.mediaItems.concat(i),l.initialized=!0)):alert(n)},error:function(e,t,i){console.log("error on upload!!"),console.log(e),console.log(t),console.log(i)}})},methods:{selectMedia:function(e){this.selectedMedia=e},getUniqueId:function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(e){var t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)}))},removeSelected:function(e){if(this.selectedMedia){var t=this.mediaItems&&this.mediaItems.indexOf(this.selectedMedia);t>-1&&(this.mediaItems[t].isRemoved=!0,this.mediaItems.splice(t,1))}else 1===this.mediaItems.length&&(this.mediaItems[t].isRemoved=!0,this.mediaItems.splice(0,1));this.selectedMedia=null},showMediaTextModal:function(e){$(this.$refs.mediaTextModal).modal(),this.backupMediaText=this.selectedMedia.mediaText},cancelMediaTextModal:function(e){$(this.$refs.mediaTextModal).modal("hide"),this.selectedMedia.mediaText=this.backupMediaText},showAnchorModal:function(e){$(this.$refs.anchoringModal).modal(),this.selectedMedia.anchor={x:this.selectedMedia.anchor.x,y:this.selectedMedia.anchor.y},this.backupAnchor=this.selectedMedia.anchor},cancelAnchoringModal:function(e){$(this.$refs.anchoringModal).modal("hide"),this.selectedMedia.anchor=this.backupAnchor},resetAnchor:function(e){this.selectedMedia.anchor={x:.5,y:.5}},onAnchorDrop:function(e){var t=this.$refs.anchorImage;this.selectedMedia.anchor={x:e.offsetX/t.clientWidth,y:e.offsetY/t.clientHeight}},anchorLeft:function(){if(this.$refs.anchorImage&&this.$refs.modalBody&&this.selectedMedia){var e=(this.$refs.modalBody.clientWidth-this.$refs.anchorImage.clientWidth)/2,t=this.selectedMedia.anchor.x*this.$refs.anchorImage.clientWidth+e;return t<17?t=17:t-=8,t+"px"}return"0"},anchorTop:function(){if(this.$refs.anchorImage&&this.selectedMedia){var e=this.selectedMedia.anchor.y*this.$refs.anchorImage.clientHeight;return e<15?e=15:e+=5,e+"px"}return"0"},setAnchor:function(e){var t=this.$refs.anchorImage;this.selectedMedia.anchor={x:e.offsetX/t.clientWidth,y:e.offsetY/t.clientHeight}},addMediaFiles:function(e){e.length>1&&!1===a?(alert($("#onlyOneItemMessage").val()),l.mediaItems.push(e[0]),l.initialized=!0):(l.mediaItems=l.mediaItems.concat(e),l.initialized=!0)},selectAndDeleteMedia:function(e){var t=this;t.selectedMedia=e,setTimeout((function(){t.removeSelected()}),100)}},watch:{mediaItems:{deep:!0,handler:function(){setTimeout((function(){$(document).trigger("contentpreview:render")}),100)}},currentPrefs:function(e){localStorage.setItem("mediaFieldPrefs",JSON.stringify(e))}}}))}function initializeMediaField(e,t,i,n,a,r){var o,s=$(document.getElementById($(e).data("for"))).data("init"),l=$(e),d=l.attr("id");mediaFieldApps.push(o=new Vue({el:l.get(0),data:{mediaItems:[],selectedMedia:null,smallThumbs:!1,idPrefix:d,initialized:!1,allowMediaText:a,backupMediaText:"",allowAnchors:r,backupAnchor:null},created:function(){this.currentPrefs=JSON.parse(localStorage.getItem("mediaFieldPrefs"))},computed:{paths:{get:function(){var e=[];return this.initialized?(this.mediaItems.forEach((function(t){"not-found"!==t.mediaPath&&e.push({path:t.mediaPath,mediaText:t.mediaText,anchor:t.anchor})})),JSON.stringify(e)):JSON.stringify(s)},set:function(e){var t=this,n=e||[],a=$.Deferred(),r=[],o=0;n.forEach((function(e,n){r.push({name:" "+e.path,mime:"",mediaPath:""}),promise=$.when(a).done((function(){$.ajax({url:i+"?path="+encodeURIComponent(e.path),method:"GET",success:function(i){i.vuekey=i.name+n.toString(),i.mediaText=e.mediaText,i.anchor=e.anchor,r.splice(n,1,i),r.length===++o&&(r.forEach((function(e){t.mediaItems.push(e)})),t.initialized=!0)},error:function(i){console.log(i),r.splice(n,1,{name:e.path,mime:"",mediaPath:"not-found",mediaText:"",anchor:{x:0,y:0}}),r.length===++o&&(r.forEach((function(e){t.mediaItems.push(e)})),t.initialized=!0)}})}))})),a.resolve()}},fileSize:function(){return Math.round(this.selectedMedia.size/1024)},canAddMedia:function(){return 0===this.mediaItems.length||this.mediaItems.length>0&&n},thumbSize:function(){return this.smallThumbs?120:240},currentPrefs:{get:function(){return{smallThumbs:this.smallThumbs}},set:function(e){e&&(this.smallThumbs=e.smallThumbs)}}},mounted:function(){var e=this;e.paths=s,e.$on("selectAndDeleteMediaRequested",(function(t){e.selectAndDeleteMedia(t)})),e.$on("selectMediaRequested",(function(t){e.selectMedia(t)})),e.$on("filesUploaded",(function(t){e.addMediaFiles(t)}))},methods:{selectMedia:function(e){this.selectedMedia=e},showModal:function(e){var i=this;if(i.canAddMedia){$("#mediaApp").detach().appendTo($(t).find(".modal-body")),$("#mediaApp").show();var n=$(t).modal();$(t).find(".mediaFieldSelectButton").off("click").on("click",(function(e){return i.addMediaFiles(mediaApp.selectedMedias),mediaApp.selectedMedias=[],n.modal("hide"),!0}))}},showMediaTextModal:function(e){$(this.$refs.mediaTextModal).modal(),this.backupMediaText=this.selectedMedia.mediaText},cancelMediaTextModal:function(e){$(this.$refs.mediaTextModal).modal("hide"),this.selectedMedia.mediaText=this.backupMediaText},showAnchorModal:function(e){$(this.$refs.anchoringModal).modal(),this.selectedMedia.anchor={x:this.selectedMedia.anchor.x,y:this.selectedMedia.anchor.y},this.backupAnchor=this.selectedMedia.anchor},cancelAnchoringModal:function(e){$(this.$refs.anchoringModal).modal("hide"),this.selectedMedia.anchor=this.backupAnchor},resetAnchor:function(e){this.selectedMedia.anchor={x:.5,y:.5}},onAnchorDrop:function(e){var t=this.$refs.anchorImage;this.selectedMedia.anchor={x:e.offsetX/t.clientWidth,y:e.offsetY/t.clientHeight}},anchorLeft:function(){if(this.$refs.anchorImage&&this.$refs.modalBody&&this.selectedMedia){var e=(this.$refs.modalBody.clientWidth-this.$refs.anchorImage.clientWidth)/2,t=this.selectedMedia.anchor.x*this.$refs.anchorImage.clientWidth+e,i=Math.round(this.$refs.modalBody.querySelector(".icon-media-anchor").clientWidth);return Number.isInteger(i)&&(t-=i/2),t+"px"}return"0"},anchorTop:function(){return this.$refs.anchorImage&&this.selectedMedia?this.selectedMedia.anchor.y*this.$refs.anchorImage.clientHeight+"px":"0"},setAnchor:function(e){var t=this.$refs.anchorImage;this.selectedMedia.anchor={x:e.offsetX/t.clientWidth,y:e.offsetY/t.clientHeight}},addMediaFiles:function(e){e.length>1&&!1===n?(alert($("#onlyOneItemMessage").val()),o.mediaItems.push(e[0]),o.initialized=!0):(o.mediaItems=o.mediaItems.concat(e),o.initialized=!0)},removeSelected:function(e){if(this.selectedMedia){var t=this.mediaItems&&this.mediaItems.indexOf(this.selectedMedia);t>-1&&this.mediaItems.splice(t,1)}else 1===this.mediaItems.length&&this.mediaItems.splice(0,1);this.selectedMedia=null},selectAndDeleteMedia:function(e){var t=this;t.selectedMedia=e,setTimeout((function(){t.removeSelected()}),100)}},watch:{mediaItems:{deep:!0,handler:function(){setTimeout((function(){$(document).trigger("contentpreview:render")}),100)}},currentPrefs:function(e){localStorage.setItem("mediaFieldPrefs",JSON.stringify(e))}}}))}!function(e){"use strict";"function"==typeof define&&define.amd?define(["jquery","jquery-ui/ui/widget"],e):"object"===("undefined"==typeof exports?"undefined":_typeof(exports))?e(require("jquery"),require("./vendor/jquery.ui.widget")):e(window.jQuery)}((function(e){"use strict";function t(t){var i="dragover"===t;return function(n){n.dataTransfer=n.originalEvent&&n.originalEvent.dataTransfer;var a=n.dataTransfer;a&&-1!==e.inArray("Files",a.types)&&!1!==this._trigger(t,e.Event(t,{delegatedEvent:n}))&&(n.preventDefault(),i&&(a.dropEffect="copy"))}}var i;e.support.fileInput=!(new RegExp("(Android (1\\.[0156]|2\\.[01]))|(Windows Phone (OS 7|8\\.0))|(XBLWP)|(ZuneWP)|(WPDesktop)|(w(eb)?OSBrowser)|(webOS)|(Kindle/(1\\.0|2\\.[05]|3\\.0))").test(window.navigator.userAgent)||e('').prop("disabled")),e.support.xhrFileUpload=!(!window.ProgressEvent||!window.FileReader),e.support.xhrFormDataFileUpload=!!window.FormData,e.support.blobSlice=window.Blob&&(Blob.prototype.slice||Blob.prototype.webkitSlice||Blob.prototype.mozSlice),e.widget("blueimp.fileupload",{options:{dropZone:e(document),pasteZone:void 0,fileInput:void 0,replaceFileInput:!0,paramName:void 0,singleFileUploads:!0,limitMultiFileUploads:void 0,limitMultiFileUploadSize:void 0,limitMultiFileUploadSizeOverhead:512,sequentialUploads:!1,limitConcurrentUploads:void 0,forceIframeTransport:!1,redirect:void 0,redirectParamName:void 0,postMessage:void 0,multipart:!0,maxChunkSize:void 0,uploadedBytes:void 0,recalculateProgress:!0,progressInterval:100,bitrateInterval:500,autoUpload:!0,uniqueFilenames:void 0,messages:{uploadedBytes:"Uploaded bytes exceed file size"},i18n:function(t,i){return t=this.messages[t]||t.toString(),i&&e.each(i,(function(e,i){t=t.replace("{"+e+"}",i)})),t},formData:function(e){return e.serializeArray()},add:function(t,i){if(t.isDefaultPrevented())return!1;(i.autoUpload||!1!==i.autoUpload&&e(this).fileupload("option","autoUpload"))&&i.process().done((function(){i.submit()}))},processData:!1,contentType:!1,cache:!1,timeout:0},_promisePipe:(i=e.fn.jquery.split("."),Number(i[0])>1||Number(i[1])>7?"then":"pipe"),_specialOptions:["fileInput","dropZone","pasteZone","multipart","forceIframeTransport"],_blobSlice:e.support.blobSlice&&function(){var e=this.slice||this.webkitSlice||this.mozSlice;return e.apply(this,arguments)},_BitrateTimer:function(){this.timestamp=Date.now?Date.now():(new Date).getTime(),this.loaded=0,this.bitrate=0,this.getBitrate=function(e,t,i){var n=e-this.timestamp;return(!this.bitrate||!i||n>i)&&(this.bitrate=(t-this.loaded)*(1e3/n)*8,this.loaded=t,this.timestamp=e),this.bitrate}},_isXHRUpload:function(t){return!t.forceIframeTransport&&(!t.multipart&&e.support.xhrFileUpload||e.support.xhrFormDataFileUpload)},_getFormData:function(t){var i;return"function"===e.type(t.formData)?t.formData(t.form):e.isArray(t.formData)?t.formData:"object"===e.type(t.formData)?(i=[],e.each(t.formData,(function(e,t){i.push({name:e,value:t})})),i):[]},_getTotal:function(t){var i=0;return e.each(t,(function(e,t){i+=t.size||1})),i},_initProgressObject:function(t){var i={loaded:0,total:0,bitrate:0};t._progress?e.extend(t._progress,i):t._progress=i},_initResponseObject:function(e){var t;if(e._response)for(t in e._response)Object.prototype.hasOwnProperty.call(e._response,t)&&delete e._response[t];else e._response={}},_onProgress:function(t,i){if(t.lengthComputable){var n,a=Date.now?Date.now():(new Date).getTime();if(i._time&&i.progressInterval&&a-i._time").prop("href",t.url).prop("host");t.dataType="iframe "+(t.dataType||""),t.formData=this._getFormData(t),t.redirect&&i&&i!==location.host&&t.formData.push({name:t.redirectParamName||"redirect",value:t.redirect})},_initDataSettings:function(e){this._isXHRUpload(e)?(this._chunkedUpload(e,!0)||(e.data||this._initXHRData(e),this._initProgressListener(e)),e.postMessage&&(e.dataType="postmessage "+(e.dataType||""))):this._initIframeSettings(e)},_getParamName:function(t){var i=e(t.fileInput),n=t.paramName;return n?e.isArray(n)||(n=[n]):(n=[],i.each((function(){for(var t=e(this),i=t.prop("name")||"files[]",a=(t.prop("files")||[1]).length;a;)n.push(i),a-=1})),n.length||(n=[i.prop("name")||"files[]"])),n},_initFormSettings:function(t){t.form&&t.form.length||(t.form=e(t.fileInput.prop("form")),t.form.length||(t.form=e(this.options.fileInput.prop("form")))),t.paramName=this._getParamName(t),t.url||(t.url=t.form.prop("action")||location.href),t.type=(t.type||"string"===e.type(t.form.prop("method"))&&t.form.prop("method")||"").toUpperCase(),"POST"!==t.type&&"PUT"!==t.type&&"PATCH"!==t.type&&(t.type="POST"),t.formAcceptCharset||(t.formAcceptCharset=t.form.attr("accept-charset"))},_getAJAXSettings:function(t){var i=e.extend({},this.options,t);return this._initFormSettings(i),this._initDataSettings(i),i},_getDeferredState:function(e){return e.state?e.state():e.isResolved()?"resolved":e.isRejected()?"rejected":"pending"},_enhancePromise:function(e){return e.success=e.done,e.error=e.fail,e.complete=e.always,e},_getXHRPromise:function(t,i,n){var a=e.Deferred(),r=a.promise();return i=i||this.options.context||r,!0===t?a.resolveWith(i,n):!1===t&&a.rejectWith(i,n),r.abort=a.promise,this._enhancePromise(r)},_addConvenienceMethods:function(t,i){var n=this,a=function(t){return e.Deferred().resolveWith(n,t).promise()};i.process=function(t,r){return(t||r)&&(i._processQueue=this._processQueue=(this._processQueue||a([this]))[n._promisePipe]((function(){return i.errorThrown?e.Deferred().rejectWith(n,[i]).promise():a(arguments)}))[n._promisePipe](t,r)),this._processQueue||a([this])},i.submit=function(){return"pending"!==this.state()&&(i.jqXHR=this.jqXHR=!1!==n._trigger("submit",e.Event("submit",{delegatedEvent:t}),this)&&n._onSend(t,this)),this.jqXHR||n._getXHRPromise()},i.abort=function(){return this.jqXHR?this.jqXHR.abort():(this.errorThrown="abort",n._trigger("fail",null,this),n._getXHRPromise(!1))},i.state=function(){return this.jqXHR?n._getDeferredState(this.jqXHR):this._processQueue?n._getDeferredState(this._processQueue):void 0},i.processing=function(){return!this.jqXHR&&this._processQueue&&"pending"===n._getDeferredState(this._processQueue)},i.progress=function(){return this._progress},i.response=function(){return this._response}},_getUploadedBytes:function(e){var t=e.getResponseHeader("Range"),i=t&&t.split("-"),n=i&&i.length>1&&parseInt(i[1],10);return n&&n+1},_chunkedUpload:function(t,i){t.uploadedBytes=t.uploadedBytes||0;var n,a,r=this,o=t.files[0],s=o.size,l=t.uploadedBytes,d=t.maxChunkSize||s,c=this._blobSlice,u=e.Deferred(),m=u.promise();return!(!(this._isXHRUpload(t)&&c&&(l||("function"===e.type(d)?d(t):d)=s?(o.error=t.i18n("uploadedBytes"),this._getXHRPromise(!1,t.context,[null,"error",o.error])):(a=function(){var i=e.extend({},t),m=i._progress.loaded;i.blob=c.call(o,l,l+("function"===e.type(d)?d(i):d),o.type),i.chunkSize=i.blob.size,i.contentRange="bytes "+l+"-"+(l+i.chunkSize-1)+"/"+s,r._trigger("chunkbeforesend",null,i),r._initXHRData(i),r._initProgressListener(i),n=(!1!==r._trigger("chunksend",null,i)&&e.ajax(i)||r._getXHRPromise(!1,i.context)).done((function(n,o,d){l=r._getUploadedBytes(d)||l+i.chunkSize,m+i.chunkSize-i._progress.loaded&&r._onProgress(e.Event("progress",{lengthComputable:!0,loaded:l-i.uploadedBytes,total:l-i.uploadedBytes}),i),t.uploadedBytes=i.uploadedBytes=l,i.result=n,i.textStatus=o,i.jqXHR=d,r._trigger("chunkdone",null,i),r._trigger("chunkalways",null,i),ls._sending)for(var n=s._slots.shift();n;){if("pending"===s._getDeferredState(n)){n.resolve();break}n=s._slots.shift()}0===s._active&&s._trigger("stop")}))};return this._beforeSend(t,l),this.options.sequentialUploads||this.options.limitConcurrentUploads&&this.options.limitConcurrentUploads<=this._sending?(this.options.limitConcurrentUploads>1?(r=e.Deferred(),this._slots.push(r),o=r[s._promisePipe](d)):(this._sequence=this._sequence[s._promisePipe](d,d),o=this._sequence),o.abort=function(){return a=[void 0,"abort","abort"],n?n.abort():(r&&r.rejectWith(l.context,a),d())},this._enhancePromise(o)):d()},_onAdd:function(t,i){var n,a,r,o,s=this,l=!0,d=e.extend({},this.options,i),c=i.files,u=c.length,m=d.limitMultiFileUploads,p=d.limitMultiFileUploadSize,h=d.limitMultiFileUploadSizeOverhead,f=0,g=this._getParamName(d),v=0;if(!u)return!1;if(p&&void 0===c[0].size&&(p=void 0),(d.singleFileUploads||m||p)&&this._isXHRUpload(d))if(d.singleFileUploads||p||!m)if(!d.singleFileUploads&&p)for(r=[],n=[],o=0;op||m&&o+1-v>=m)&&(r.push(c.slice(v,o+1)),(a=g.slice(v,o+1)).length||(a=g),n.push(a),v=o+1,f=0);else n=g;else for(r=[],n=[],o=0;o").append(n)[0].reset(),i.after(n).detach(),a&&n.trigger("focus"),e.cleanData(i.off("remove")),this.options.fileInput=this.options.fileInput.map((function(e,t){return t===i[0]?n[0]:t})),i[0]===this.element[0]&&(this.element=n)},_handleFileTreeEntry:function(t,i){var n,a=this,r=e.Deferred(),o=[],s=function(e){e&&!e.entry&&(e.entry=t),r.resolve([e])};return i=i||"",t.isFile?t._file?(t._file.relativePath=i,r.resolve(t._file)):t.file((function(e){e.relativePath=i,r.resolve(e)}),s):t.isDirectory?(n=t.createReader(),function e(){n.readEntries((function(n){n.length?(o=o.concat(n),e()):function(e){a._handleFileTreeEntries(e,i+t.name+"/").done((function(e){r.resolve(e)})).fail(s)}(o)}),s)}()):r.resolve([]),r.promise()},_handleFileTreeEntries:function(t,i){var n=this;return e.when.apply(e,e.map(t,(function(e){return n._handleFileTreeEntry(e,i)})))[this._promisePipe]((function(){return Array.prototype.concat.apply([],arguments)}))},_getDroppedFiles:function(t){var i=(t=t||{}).items;return i&&i.length&&(i[0].webkitGetAsEntry||i[0].getAsEntry)?this._handleFileTreeEntries(e.map(i,(function(e){var t;return e.webkitGetAsEntry?((t=e.webkitGetAsEntry())&&(t._file=e.getAsFile()),t):e.getAsEntry()}))):e.Deferred().resolve(e.makeArray(t.files)).promise()},_getSingleFileInputFiles:function(t){var i,n,a=(t=e(t)).prop("entries");if(a&&a.length)return this._handleFileTreeEntries(a);if((i=e.makeArray(t.prop("files"))).length)void 0===i[0].name&&i[0].fileName&&e.each(i,(function(e,t){t.name=t.fileName,t.size=t.fileSize}));else{if(!(n=t.prop("value")))return e.Deferred().resolve([]).promise();i=[{name:n.replace(/^.*\\/,"")}]}return e.Deferred().resolve(i).promise()},_getFileInputFiles:function(t){return t instanceof e&&1!==t.length?e.when.apply(e,e.map(t,this._getSingleFileInputFiles))[this._promisePipe]((function(){return Array.prototype.concat.apply([],arguments)})):this._getSingleFileInputFiles(t)},_onChange:function(t){var i=this,n={fileInput:e(t.target),form:e(t.target.form)};this._getFileInputFiles(n.fileInput).always((function(a){n.files=a,i.options.replaceFileInput&&i._replaceFileInput(n),!1!==i._trigger("change",e.Event("change",{delegatedEvent:t}),n)&&i._onAdd(t,n)}))},_onPaste:function(t){var i=t.originalEvent&&t.originalEvent.clipboardData&&t.originalEvent.clipboardData.items,n={files:[]};i&&i.length&&(e.each(i,(function(e,t){var i=t.getAsFile&&t.getAsFile();i&&n.files.push(i)})),!1!==this._trigger("paste",e.Event("paste",{delegatedEvent:t}),n)&&this._onAdd(t,n))},_onDrop:function(t){t.dataTransfer=t.originalEvent&&t.originalEvent.dataTransfer;var i=this,n=t.dataTransfer,a={};n&&n.files&&n.files.length&&(t.preventDefault(),this._getDroppedFiles(n).always((function(n){a.files=n,!1!==i._trigger("drop",e.Event("drop",{delegatedEvent:t}),a)&&i._onAdd(t,a)})))},_onDragOver:t("dragover"),_onDragEnter:t("dragenter"),_onDragLeave:t("dragleave"),_initEventHandlers:function(){this._isXHRUpload(this.options)&&(this._on(this.options.dropZone,{dragover:this._onDragOver,drop:this._onDrop,dragenter:this._onDragEnter,dragleave:this._onDragLeave}),this._on(this.options.pasteZone,{paste:this._onPaste})),e.support.fileInput&&this._on(this.options.fileInput,{change:this._onChange})},_destroyEventHandlers:function(){this._off(this.options.dropZone,"dragenter dragleave dragover drop"),this._off(this.options.pasteZone,"paste"),this._off(this.options.fileInput,"change")},_destroy:function(){this._destroyEventHandlers()},_setOption:function(t,i){var n=-1!==e.inArray(t,this._specialOptions);n&&this._destroyEventHandlers(),this._super(t,i),n&&(this._initSpecialOptions(),this._initEventHandlers())},_initSpecialOptions:function(){var t=this.options;void 0===t.fileInput?t.fileInput=this.element.is('input[type="file"]')?this.element:this.element.find('input[type="file"]'):t.fileInput instanceof e||(t.fileInput=e(t.fileInput)),t.dropZone instanceof e||(t.dropZone=e(t.dropZone)),t.pasteZone instanceof e||(t.pasteZone=e(t.pasteZone))},_getRegExp:function(e){var t=e.split("/"),i=t.pop();return t.shift(),new RegExp(t.join("/"),i)},_isRegExpOption:function(t,i){return"url"!==t&&"string"===e.type(i)&&/^\/.*\/[igm]{0,3}$/.test(i)},_initDataAttributes:function(){var t=this,i=this.options,n=this.element.data();e.each(this.element[0].attributes,(function(e,a){var r,o=a.name.toLowerCase();/^data-/.test(o)&&(o=o.slice(5).replace(/-[a-z]/g,(function(e){return e.charAt(1).toUpperCase()})),r=n[o],t._isRegExpOption(o,r)&&(r=t._getRegExp(r)),i[o]=r)}))},_create:function(){this._initDataAttributes(),this._initSpecialOptions(),this._slots=[],this._sequence=this._getXHRPromise(!0),this._sending=this._active=0,this._initProgressObject(this),this._initEventHandlers()},active:function(){return this._active},progress:function(){return this._progress},add:function(t){var i=this;t&&!this.options.disabled&&(t.fileInput&&!t.files?this._getFileInputFiles(t.fileInput).always((function(e){t.files=e,i._onAdd(null,t)})):(t.files=e.makeArray(t.files),this._onAdd(null,t)))},send:function(t){if(t&&!this.options.disabled){if(t.fileInput&&!t.files){var i,n,a=this,r=e.Deferred(),o=r.promise();return o.abort=function(){return n=!0,i?i.abort():(r.reject(null,"abort","abort"),o)},this._getFileInputFiles(t.fileInput).always((function(e){n||(e.length?(t.files=e,(i=a._onSend(null,t)).then((function(e,t,i){r.resolve(e,t,i)}),(function(e,t,i){r.reject(e,t,i)}))):r.reject())})),this._enhancePromise(o)}if(t.files=e.makeArray(t.files),t.files.length)return this._onSend(null,t)}return this._getXHRPromise(!1,t&&t.context)}})})),function(e){"use strict";"function"==typeof define&&define.amd?define(["jquery"],e):"object"===("undefined"==typeof exports?"undefined":_typeof(exports))?e(require("jquery")):e(window.jQuery)}((function(e){"use strict";var t=0,i=e,n="parseJSON";"JSON"in window&&"parse"in JSON&&(i=JSON,n="parse"),e.ajaxTransport("iframe",(function(i){if(i.async){var n,a,r,o=i.initialIframeSrc||"javascript:false;";return{send:function(s,l){(n=e('
    ')).attr("accept-charset",i.formAcceptCharset),r=/\?/.test(i.url)?"&":"?","DELETE"===i.type?(i.url=i.url+r+"_method=DELETE",i.type="POST"):"PUT"===i.type?(i.url=i.url+r+"_method=PUT",i.type="POST"):"PATCH"===i.type&&(i.url=i.url+r+"_method=PATCH",i.type="POST"),a=e('').on("load",(function(){var t,r=e.isArray(i.paramName)?i.paramName:[i.paramName];a.off("load").on("load",(function(){var t;try{if(!(t=a.contents()).length||!t[0].firstChild)throw new Error}catch(e){t=void 0}l(200,"success",{iframe:t}),e('').appendTo(n),window.setTimeout((function(){n.remove()}),0)})),n.prop("target",a.prop("name")).prop("action",i.url).prop("method",i.type),i.formData&&e.each(i.formData,(function(t,i){e('').prop("name",i.name).val(i.value).appendTo(n)})),i.fileInput&&i.fileInput.length&&"POST"===i.type&&(t=i.fileInput.clone(),i.fileInput.after((function(e){return t[e]})),i.paramName&&i.fileInput.each((function(t){e(this).prop("name",r[t]||i.paramName)})),n.append(i.fileInput).prop("enctype","multipart/form-data").prop("encoding","multipart/form-data"),i.fileInput.removeAttr("form")),window.setTimeout((function(){n.submit(),t&&t.length&&i.fileInput.each((function(i,n){var a=e(t[i]);e(n).prop("name",a.prop("name")).attr("form",a.attr("form")),a.replaceWith(n)}))}),0)})),n.append(a).appendTo(document.body)},abort:function(){a&&a.off("load").prop("src",o),n&&n.remove()}}}})),e.ajaxSetup({converters:{"iframe text":function(t){return t&&e(t[0].body).text()},"iframe json":function(t){return t&&i[n](e(t[0].body).text())},"iframe html":function(t){return t&&e(t[0].body).html()},"iframe xml":function(t){var i=t&&t[0];return i&&e.isXMLDoc(i)?i:e.parseXML(i.XMLDocument&&i.XMLDocument.xml||e(i.body).html())},"iframe script":function(t){return t&&e.globalEval(e(t[0].body).text())}}})}));var initialized,mediaApp,mediaFieldApps=[];function ownKeys(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,n)}return i}function _objectSpread(e){for(var t=1;t
    {{T.noImages}}
  • {{ media.isNew ? media.name.substr(36) : media.name }}
    {{ T.mediaNotFound }} {{ T.discardWarning }}
    {{ media.name }}
  • ',data:function(){return{T:{}}},props:{mediaItems:Array,selectedMedia:Object,thumbSize:Number,idPrefix:String},created:function(){var e=this;e.T.mediaNotFound=$("#t-media-not-found").val(),e.T.discardWarning=$("#t-discard-warning").val(),e.T.noImages=$("#t-no-images").val()},methods:{selectAndDeleteMedia:function(e){this.$parent.$emit("selectAndDeleteMediaRequested",e)},selectMedia:function(e){this.$parent.$emit("selectMediaRequested",e)},buildMediaUrl:function(e,t){return e+(-1==e.indexOf("?")?"?":"&")+"width="+t+"&height="+t}}});var bus=new Vue;function initializeMediaApplication(e,t,i){initialized||(initialized=!0,t||console.error("mediaApplicationUrl variable is not defined"),$.ajax({url:t,method:"GET",success:function(t){$(".ta-content").append(t),$(document).trigger("mediaapplication:ready");var n={name:$("#t-mediaLibrary").text(),path:"",folder:"",isDirectory:!0};mediaApp=new Vue({el:"#mediaApp",data:{selectedFolder:{},mediaItems:[],selectedMedias:[],errors:[],dragDropThumbnail:new Image,smallThumbs:!1,gridView:!1,mediaFilter:"",sortBy:"",sortAsc:!0,itemsInPage:[]},created:function(){var e=this;e.dragDropThumbnail.src=(i||"")+"/OrchardCore.Media/Images/drag-thumbnail.png",bus.$on("folderSelected",(function(t){e.selectedFolder=t})),bus.$on("folderDeleted",(function(){e.selectRoot()})),bus.$on("folderAdded",(function(t){e.selectedFolder=t,t.selected=!0})),bus.$on("mediaListMoved",(function(t){e.loadFolder(e.selectedFolder),t&&e.errors.push(t)})),bus.$on("mediaRenamed",(function(t,i,n){var a=e.mediaItems.filter((function(e){return e.mediaPath===n}))[0];a.mediaPath=i,a.name=t})),bus.$on("createFolderRequested",(function(t){e.createFolder()})),bus.$on("deleteFolderRequested",(function(t){e.deleteFolder()})),bus.$on("sortChangeRequested",(function(t){e.changeSort(t)})),bus.$on("mediaToggleRequested",(function(t){e.toggleSelectionOfMedia(t)})),bus.$on("renameMediaRequested",(function(t){e.renameMedia(t)})),bus.$on("deleteMediaRequested",(function(t){e.deleteMediaItem(t)})),bus.$on("mediaDragStartRequested",(function(t,i){e.handleDragStart(t,i)})),bus.$on("pagerEvent",(function(t){e.itemsInPage=t,e.selectedMedias=[]})),localStorage.getItem("mediaApplicationPrefs")?e.currentPrefs=JSON.parse(localStorage.getItem("mediaApplicationPrefs")):e.selectedFolder=n},computed:{isHome:function(){return this.selectedFolder==n},parents:function(){var e=[];for(parentFolder=this.selectedFolder;parentFolder&&""!=parentFolder.path;)e.unshift(parentFolder),parentFolder=parentFolder.parent;return e},root:function(){return n},filteredMediaItems:function(){var e=this;e.selectedMedias=[];var t=e.mediaItems.filter((function(t){return t.name.toLowerCase().indexOf(e.mediaFilter.toLowerCase())>-1}));switch(e.sortBy){case"size":t.sort((function(t,i){return e.sortAsc?t.size-i.size:i.size-t.size}));break;case"mime":t.sort((function(t,i){return e.sortAsc?t.mime.toLowerCase().localeCompare(i.mime.toLowerCase()):i.mime.toLowerCase().localeCompare(t.mime.toLowerCase())}));break;case"lastModify":t.sort((function(t,i){return e.sortAsc?t.lastModify-i.lastModify:i.lastModify-t.lastModify}));break;default:t.sort((function(t,i){return e.sortAsc?t.name.toLowerCase().localeCompare(i.name.toLowerCase()):i.name.toLowerCase().localeCompare(t.name.toLowerCase())}))}return t},hiddenCount:function(){return this.mediaItems.length-this.filteredMediaItems.length},thumbSize:function(){return this.smallThumbs?100:240},currentPrefs:{get:function(){return{smallThumbs:this.smallThumbs,selectedFolder:this.selectedFolder,gridView:this.gridView}},set:function(e){e&&(this.smallThumbs=e.smallThumbs,this.selectedFolder=e.selectedFolder,this.gridView=e.gridView)}}},watch:{currentPrefs:function(e){localStorage.setItem("mediaApplicationPrefs",JSON.stringify(e))},selectedFolder:function(e){this.mediaFilter="",this.selectedFolder=e,this.loadFolder(e)}},mounted:function(){this.$refs.rootFolder.toggle()},methods:{uploadUrl:function(){return this.selectedFolder?$("#uploadFiles").val()+"?path="+encodeURIComponent(this.selectedFolder.path):null},selectRoot:function(){this.selectedFolder=this.root},loadFolder:function(e){this.errors=[],this.selectedMedias=[];var t=this;$.ajax({url:$("#getMediaItemsUrl").val()+"?path="+encodeURIComponent(e.path),method:"GET",success:function(e){e.forEach((function(e){e.open=!1})),t.mediaItems=e,t.selectedMedias=[],t.sortBy="",t.sortAsc=!0},error:function(i){console.log("error loading folder:"+e.path),t.selectRoot()}})},selectAll:function(){this.selectedMedias=[];for(var e=0;e-1&&(t.mediaItems.splice(n,1),bus.$emit("mediaDeleted",t.selectedMedias[i]))}t.selectedMedias=[]},error:function(e){console.error(e.responseText)}})}}}))},deleteMediaItem:function(e){var t=this;e&&confirmDialog(_objectSpread(_objectSpread({},$("#deleteMedia").data()),{},{callback:function(i){i&&$.ajax({url:$("#deleteMediaUrl").val()+"?path="+encodeURIComponent(e.mediaPath),method:"POST",data:{__RequestVerificationToken:$("input[name='__RequestVerificationToken']").val()},success:function(i){var n=t.mediaItems&&t.mediaItems.indexOf(e);n>-1&&(t.mediaItems.splice(n,1),bus.$emit("mediaDeleted",e))},error:function(e){console.error(e.responseText)}})}}))},handleDragStart:function(e,t){var i=[];this.selectedMedias.forEach((function(e){i.push(e.name)})),0==this.isMediaSelected(e)&&(i.push(e.name),this.selectedMedias.push(e)),t.dataTransfer.setData("mediaNames",JSON.stringify(i)),t.dataTransfer.setData("sourceFolder",this.selectedFolder.path),t.dataTransfer.setDragImage(this.dragDropThumbnail,10,10),t.dataTransfer.effectAllowed="move"},handleScrollWhileDrag:function(e){e.clientY<150&&window.scrollBy(0,-10),e.clientY>window.innerHeight-100&&window.scrollBy(0,10)},changeSort:function(e){this.sortBy==e?this.sortAsc=!this.sortAsc:(this.sortAsc=!0,this.sortBy=e)}}}),$("#create-folder-name").keypress((function(e){if(13==e.which)return $("#modalFooterOk").click(),!1})),$("#modalFooterOk").on("click",(function(e){var t=$("#create-folder-name").val();""!==t&&$.ajax({url:$("#createFolderUrl").val()+"?path="+encodeURIComponent(mediaApp.selectedFolder.path)+"&name="+encodeURIComponent(t),method:"POST",data:{__RequestVerificationToken:$("input[name='__RequestVerificationToken']").val()},success:function(e){bus.$emit("addFolder",mediaApp.selectedFolder,e),$("#createFolderModal").modal("hide")},error:function(e){$("#createFolderModal-errors").empty();var t=JSON.parse(e.responseText).value;$('').text(t).appendTo($("#createFolderModal-errors"))}})})),$("#renameMediaModalFooterOk").on("click",(function(e){var t=$("#new-item-name").val(),i=$("#old-item-name").val();if(""!==t){var n=mediaApp.selectedFolder.path+"/";"/"===n&&(n="");var a=n+t,r=n+i;a.toLowerCase()!==r.toLowerCase()?$.ajax({url:$("#renameMediaUrl").val()+"?oldPath="+encodeURIComponent(r)+"&newPath="+encodeURIComponent(a),method:"POST",data:{__RequestVerificationToken:$("input[name='__RequestVerificationToken']").val()},success:function(e){$("#renameMediaModal").modal("hide"),bus.$emit("mediaRenamed",t,a,r)},error:function(e){$("#renameMediaModal-errors").empty();var t=JSON.parse(e.responseText).value;$('').text(t).appendTo($("#renameMediaModal-errors"))}}):$("#renameMediaModal").modal("hide")}})),e&&(document.getElementById("mediaApp").style.display=""),$(document).trigger("mediaApp:ready")},error:function(e){console.error(e.responseText)}}))}function ownKeys(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,n)}return i}function _objectSpread(e){for(var t=1;t\n \n
      \n \n \n
    \n \n '),props:{model:Object,selectedInMediaApp:Object,level:Number},data:function(){return{open:!1,children:null,parent:null,isHovered:!1,padding:0}},computed:{empty:function(){return!this.children||0==this.children.length},isSelected:function(){return this.selectedInMediaApp.name==this.model.name&&this.selectedInMediaApp.path==this.model.path},isRoot:function(){return""===this.model.path}},mounted:function(){0==this.isRoot&&this.isAncestorOfSelectedFolder()&&this.toggle(),this.padding=this.level<3?16:16+8*this.level},created:function(){var e=this;bus.$on("deleteFolder",(function(t){if(e.children){var i=e.children&&e.children.indexOf(t);i>-1&&(e.children.splice(i,1),bus.$emit("folderDeleted"))}})),bus.$on("addFolder",(function(t,i){e.model==t&&(null!==e.children&&e.children.push(i),i.parent=e.model,bus.$emit("folderAdded",i))}))},methods:{isAncestorOfSelectedFolder:function(){for(parentFolder=mediaApp.selectedFolder;parentFolder;){if(parentFolder.path==this.model.path)return!0;parentFolder=parentFolder.parent}return!1},toggle:function(){this.open=!this.open,this.open&&!this.children&&this.loadChildren()},select:function(){bus.$emit("folderSelected",this.model),this.loadChildren()},createFolder:function(){bus.$emit("createFolderRequested")},deleteFolder:function(){bus.$emit("deleteFolderRequested")},loadChildren:function(){var e=this;0==this.open&&(this.open=!0),$.ajax({url:$("#getFoldersUrl").val()+"?path="+encodeURIComponent(e.model.path),method:"GET",success:function(t){e.children=t,e.children.forEach((function(t){t.parent=e.model}))},error:function(e){emtpy=!1,console.error(e.responseText)}})},handleDragOver:function(e){this.isHovered=!0},handleDragLeave:function(e){this.isHovered=!1},moveMediaToFolder:function(e,t){this.isHovered=!1;var i=JSON.parse(t.dataTransfer.getData("mediaNames"));if(!(i.length<1)){var n=t.dataTransfer.getData("sourceFolder"),a=e.path;""===n&&(n="root"),""===a&&(a="root"),n!==a?confirmDialog(_objectSpread(_objectSpread({},$("#moveMedia").data()),{},{callback:function(e){e&&$.ajax({url:$("#moveMediaListUrl").val(),method:"POST",data:{__RequestVerificationToken:$("input[name='__RequestVerificationToken']").val(),mediaNames:i,sourceFolder:n,targetFolder:a},success:function(){bus.$emit("mediaListMoved")},error:function(e){console.error(e.responseText),bus.$emit("mediaListMoved",e.responseText)}})}})):alert($("#sameFolderMessage").val())}}}}),Vue.component("media-items-grid",{template:'\n
      \n
    1. \n
      \n \n \n
      \n
      \n \n \n \n {{ media.name }}\n
      \n
    2. \n
    \n ',data:function(){return{T:{}}},props:{filteredMediaItems:Array,selectedMedias:Array,thumbSize:Number},created:function(){this.T.editButton=$("#t-edit-button").val(),this.T.deleteButton=$("#t-delete-button").val()},methods:{isMediaSelected:function(e){return this.selectedMedias.some((function(t,i,n){return t.url.toLowerCase()===e.url.toLowerCase()}))},buildMediaUrl:function(e,t){return e+(-1==e.indexOf("?")?"?":"&")+"width="+t+"&height="+t},toggleSelectionOfMedia:function(e){bus.$emit("mediaToggleRequested",e)},renameMedia:function(e){bus.$emit("renameMediaRequested",e)},deleteMedia:function(e){bus.$emit("deleteMediaRequested",e)},dragStart:function(e,t){bus.$emit("mediaDragStartRequested",e,t)}}}),Vue.component("media-items-table",{template:'\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    {{ T.imageHeader }}\n {{ T.nameHeader }}\n \n \n {{ T.lastModifyHeader }} \n \n \n \n {{ T.sizeHeader }}\n \n \n \n \n {{ T.typeHeader }}\n \n \n
    \n
    \n \n \n
    \n
    \n \n \n
    {{ printDateTime(media.lastModify) }}
    \n
    \n
    {{ isNaN(media.size)? 0 : Math.round(media.size / 1024) }} KB
    \n
    \n
    {{ media.mime }}
    \n
    \n ',data:function(){return{T:{}}},props:{sortBy:String,sortAsc:Boolean,filteredMediaItems:Array,selectedMedias:Array,thumbSize:Number},created:function(){var e=this;e.T.imageHeader=$("#t-image-header").val(),e.T.nameHeader=$("#t-name-header").val(),e.T.lastModifyHeader=$("#t-lastModify-header").val(),e.T.sizeHeader=$("#t-size-header").val(),e.T.typeHeader=$("#t-type-header").val(),e.T.editButton=$("#t-edit-button").val(),e.T.deleteButton=$("#t-delete-button").val(),e.T.viewButton=$("#t-view-button").val()},methods:{isMediaSelected:function(e){return this.selectedMedias.some((function(t,i,n){return t.url.toLowerCase()===e.url.toLowerCase()}))},buildMediaUrl:function(e,t){return e+(-1==e.indexOf("?")?"?":"&")+"width="+t+"&height="+t},changeSort:function(e){bus.$emit("sortChangeRequested",e)},toggleSelectionOfMedia:function(e){bus.$emit("mediaToggleRequested",e)},renameMedia:function(e){bus.$emit("renameMediaRequested",e)},deleteMedia:function(e){bus.$emit("deleteMediaRequested",e)},dragStart:function(e,t){bus.$emit("mediaDragStartRequested",e,t)},printDateTime:function(e){return new Date(e).toLocaleString()}}}),Vue.component("pager",{template:'\n
    \n \n \n
    \n ',props:{sourceItems:Array},data:function(){return{pageSize:10,pageSizeOptions:[10,30,50,100],current:0,T:{}}},created:function(){var e=this;e.T.pagerFirstButton=$("#t-pager-first-button").val(),e.T.pagerPreviousButton=$("#t-pager-previous-button").val(),e.T.pagerNextButton=$("#t-pager-next-button").val(),e.T.pagerLastButton=$("#t-pager-last-button").val(),e.T.pagerPageSizeLabel=$("#t-pager-page-size-label").val(),e.T.pagerPageLabel=$("#t-pager-page-label").val(),e.T.pagerTotalLabel=$("#t-pager-total-label").val()},methods:{next:function(){this.current=this.current+1},previous:function(){this.current=this.current-1},goFirst:function(){this.current=0},goLast:function(){this.current=this.totalPages-1},goTo:function(e){this.current=e}},computed:{total:function(){return this.sourceItems?this.sourceItems.length:0},totalPages:function(){var e=Math.ceil(this.total/this.pageSize);return e>0?e:1},isLastPage:function(){return this.current+1>=this.totalPages},isFirstPage:function(){return 0===this.current},canDoNext:function(){return!this.isLastPage},canDoPrev:function(){return!this.isFirstPage},canDoFirst:function(){return!this.isFirstPage},canDoLast:function(){return!this.isLastPage},itemsInCurrentPage:function(){var e=this.pageSize*this.current,t=e+this.pageSize,i=this.sourceItems.slice(e,t);return bus.$emit("pagerEvent",i),i},pageLinks:function(){var e=[];e.push(this.current+1);var t=this.current>0?this.current:-1;e.unshift(t);var i=this.current>1?this.current-1:-1;e.unshift(i);var n=this.totalPages-this.current>1?this.current+2:-1;e.push(n);var a=this.totalPages-this.current>2?this.current+3:-1;return e.push(a),e}},watch:{sourceItems:function(){this.current=0},pageSize:function(){this.current=0}}}),Vue.component("sortIndicator",{template:'\n
    \n \n \n
    \n ',props:{colname:String,selectedcolname:String,asc:Boolean},computed:{isActive:function(){return this.colname.toLowerCase()==this.selectedcolname.toLowerCase()}}}),Vue.component("upload",{template:'

    {{ model.name }}

    Error: {{ model.errorMessage }}
    ',props:{model:Object},mounted:function(){var e=this;$("#fileupload").bind("fileuploadprogress",(function(t,i){i.files[0].name===e.model.name&&(e.model.percentage=parseInt(i.loaded/i.total*100,10))})),$("#fileupload").bind("fileuploaddone",(function(t,i){i.files[0].name===e.model.name&&(i.result.files[0].error?e.handleFailure(i.files[0].name,i.result.files[0].error):bus.$emit("removalRequest",e.model))})),$("#fileupload").bind("fileuploadfail",(function(t,i){i.files[0].name===e.model.name&&e.handleFailure(i.files[0].name,i.textStatus)}))},methods:{handleFailure:function(e,t){e===this.model.name&&(this.model.errorMessage=t,bus.$emit("ErrorOnUpload",this.model))},dismissWarning:function(){bus.$emit("removalRequest",this.model)}}}),Vue.component("uploadList",{template:'
    {{ T.uploads }} (Pending: {{ pendingCount }}) ( {{ T.errors }}: {{ errorCount }} / {{ T.clearErrors }} )
    ',data:function(){return{files:[],T:{},expanded:!1,pendingCount:0,errorCount:0}},created:function(){var e=this;e.T.uploads=$("#t-uploads").val(),e.T.errors=$("#t-errors").val(),e.T.clearErrors=$("#t-clear-errors").val()},computed:{fileCount:function(){return this.files.length}},mounted:function(){var e=this;$("#fileupload").bind("fileuploadadd",(function(t,i){i.files&&i.files.forEach((function(t){e.files.some((function(e){return e.name==t.name}))?console.error("A file with the same name is already on the queue:"+t.name):e.files.push({name:t.name,percentage:0,errorMessage:""})}))})),bus.$on("removalRequest",(function(t){e.files.forEach((function(e,i,n){e.name==t.name&&n.splice(i,1)}))})),bus.$on("ErrorOnUpload",(function(t){e.updateCount()}))},methods:{updateCount:function(){this.errorCount=this.files.filter((function(e){return""!=e.errorMessage})).length,this.pendingCount=this.files.length-this.errorCount,this.files.length<1&&(this.expanded=!1)},clearErrors:function(){this.files=this.files.filter((function(e){return""==e.errorMessage}))}},watch:{files:function(){this.updateCount()}}}); +function _typeof(e){return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},_typeof(e)}function _typeof(e){return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},_typeof(e)}function ownKeys(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,n)}return i}function _objectSpread(e){for(var t=1;t').prop("disabled")),e.support.xhrFileUpload=!(!window.ProgressEvent||!window.FileReader),e.support.xhrFormDataFileUpload=!!window.FormData,e.support.blobSlice=window.Blob&&(Blob.prototype.slice||Blob.prototype.webkitSlice||Blob.prototype.mozSlice),e.widget("blueimp.fileupload",{options:{dropZone:e(document),pasteZone:void 0,fileInput:void 0,replaceFileInput:!0,paramName:void 0,singleFileUploads:!0,limitMultiFileUploads:void 0,limitMultiFileUploadSize:void 0,limitMultiFileUploadSizeOverhead:512,sequentialUploads:!1,limitConcurrentUploads:void 0,forceIframeTransport:!1,redirect:void 0,redirectParamName:void 0,postMessage:void 0,multipart:!0,maxChunkSize:void 0,uploadedBytes:void 0,recalculateProgress:!0,progressInterval:100,bitrateInterval:500,autoUpload:!0,uniqueFilenames:void 0,messages:{uploadedBytes:"Uploaded bytes exceed file size"},i18n:function(t,i){return t=this.messages[t]||t.toString(),i&&e.each(i,(function(e,i){t=t.replace("{"+e+"}",i)})),t},formData:function(e){return e.serializeArray()},add:function(t,i){if(t.isDefaultPrevented())return!1;(i.autoUpload||!1!==i.autoUpload&&e(this).fileupload("option","autoUpload"))&&i.process().done((function(){i.submit()}))},processData:!1,contentType:!1,cache:!1,timeout:0},_promisePipe:(i=e.fn.jquery.split("."),Number(i[0])>1||Number(i[1])>7?"then":"pipe"),_specialOptions:["fileInput","dropZone","pasteZone","multipart","forceIframeTransport"],_blobSlice:e.support.blobSlice&&function(){var e=this.slice||this.webkitSlice||this.mozSlice;return e.apply(this,arguments)},_BitrateTimer:function(){this.timestamp=Date.now?Date.now():(new Date).getTime(),this.loaded=0,this.bitrate=0,this.getBitrate=function(e,t,i){var n=e-this.timestamp;return(!this.bitrate||!i||n>i)&&(this.bitrate=(t-this.loaded)*(1e3/n)*8,this.loaded=t,this.timestamp=e),this.bitrate}},_isXHRUpload:function(t){return!t.forceIframeTransport&&(!t.multipart&&e.support.xhrFileUpload||e.support.xhrFormDataFileUpload)},_getFormData:function(t){var i;return"function"===e.type(t.formData)?t.formData(t.form):e.isArray(t.formData)?t.formData:"object"===e.type(t.formData)?(i=[],e.each(t.formData,(function(e,t){i.push({name:e,value:t})})),i):[]},_getTotal:function(t){var i=0;return e.each(t,(function(e,t){i+=t.size||1})),i},_initProgressObject:function(t){var i={loaded:0,total:0,bitrate:0};t._progress?e.extend(t._progress,i):t._progress=i},_initResponseObject:function(e){var t;if(e._response)for(t in e._response)Object.prototype.hasOwnProperty.call(e._response,t)&&delete e._response[t];else e._response={}},_onProgress:function(t,i){if(t.lengthComputable){var n,a=Date.now?Date.now():(new Date).getTime();if(i._time&&i.progressInterval&&a-i._time").prop("href",t.url).prop("host");t.dataType="iframe "+(t.dataType||""),t.formData=this._getFormData(t),t.redirect&&i&&i!==location.host&&t.formData.push({name:t.redirectParamName||"redirect",value:t.redirect})},_initDataSettings:function(e){this._isXHRUpload(e)?(this._chunkedUpload(e,!0)||(e.data||this._initXHRData(e),this._initProgressListener(e)),e.postMessage&&(e.dataType="postmessage "+(e.dataType||""))):this._initIframeSettings(e)},_getParamName:function(t){var i=e(t.fileInput),n=t.paramName;return n?e.isArray(n)||(n=[n]):(n=[],i.each((function(){for(var t=e(this),i=t.prop("name")||"files[]",a=(t.prop("files")||[1]).length;a;)n.push(i),a-=1})),n.length||(n=[i.prop("name")||"files[]"])),n},_initFormSettings:function(t){t.form&&t.form.length||(t.form=e(t.fileInput.prop("form")),t.form.length||(t.form=e(this.options.fileInput.prop("form")))),t.paramName=this._getParamName(t),t.url||(t.url=t.form.prop("action")||location.href),t.type=(t.type||"string"===e.type(t.form.prop("method"))&&t.form.prop("method")||"").toUpperCase(),"POST"!==t.type&&"PUT"!==t.type&&"PATCH"!==t.type&&(t.type="POST"),t.formAcceptCharset||(t.formAcceptCharset=t.form.attr("accept-charset"))},_getAJAXSettings:function(t){var i=e.extend({},this.options,t);return this._initFormSettings(i),this._initDataSettings(i),i},_getDeferredState:function(e){return e.state?e.state():e.isResolved()?"resolved":e.isRejected()?"rejected":"pending"},_enhancePromise:function(e){return e.success=e.done,e.error=e.fail,e.complete=e.always,e},_getXHRPromise:function(t,i,n){var a=e.Deferred(),r=a.promise();return i=i||this.options.context||r,!0===t?a.resolveWith(i,n):!1===t&&a.rejectWith(i,n),r.abort=a.promise,this._enhancePromise(r)},_addConvenienceMethods:function(t,i){var n=this,a=function(t){return e.Deferred().resolveWith(n,t).promise()};i.process=function(t,r){return(t||r)&&(i._processQueue=this._processQueue=(this._processQueue||a([this]))[n._promisePipe]((function(){return i.errorThrown?e.Deferred().rejectWith(n,[i]).promise():a(arguments)}))[n._promisePipe](t,r)),this._processQueue||a([this])},i.submit=function(){return"pending"!==this.state()&&(i.jqXHR=this.jqXHR=!1!==n._trigger("submit",e.Event("submit",{delegatedEvent:t}),this)&&n._onSend(t,this)),this.jqXHR||n._getXHRPromise()},i.abort=function(){return this.jqXHR?this.jqXHR.abort():(this.errorThrown="abort",n._trigger("fail",null,this),n._getXHRPromise(!1))},i.state=function(){return this.jqXHR?n._getDeferredState(this.jqXHR):this._processQueue?n._getDeferredState(this._processQueue):void 0},i.processing=function(){return!this.jqXHR&&this._processQueue&&"pending"===n._getDeferredState(this._processQueue)},i.progress=function(){return this._progress},i.response=function(){return this._response}},_getUploadedBytes:function(e){var t=e.getResponseHeader("Range"),i=t&&t.split("-"),n=i&&i.length>1&&parseInt(i[1],10);return n&&n+1},_chunkedUpload:function(t,i){t.uploadedBytes=t.uploadedBytes||0;var n,a,r=this,o=t.files[0],s=o.size,l=t.uploadedBytes,d=t.maxChunkSize||s,c=this._blobSlice,u=e.Deferred(),m=u.promise();return!(!(this._isXHRUpload(t)&&c&&(l||("function"===e.type(d)?d(t):d)=s?(o.error=t.i18n("uploadedBytes"),this._getXHRPromise(!1,t.context,[null,"error",o.error])):(a=function(){var i=e.extend({},t),m=i._progress.loaded;i.blob=c.call(o,l,l+("function"===e.type(d)?d(i):d),o.type),i.chunkSize=i.blob.size,i.contentRange="bytes "+l+"-"+(l+i.chunkSize-1)+"/"+s,r._trigger("chunkbeforesend",null,i),r._initXHRData(i),r._initProgressListener(i),n=(!1!==r._trigger("chunksend",null,i)&&e.ajax(i)||r._getXHRPromise(!1,i.context)).done((function(n,o,d){l=r._getUploadedBytes(d)||l+i.chunkSize,m+i.chunkSize-i._progress.loaded&&r._onProgress(e.Event("progress",{lengthComputable:!0,loaded:l-i.uploadedBytes,total:l-i.uploadedBytes}),i),t.uploadedBytes=i.uploadedBytes=l,i.result=n,i.textStatus=o,i.jqXHR=d,r._trigger("chunkdone",null,i),r._trigger("chunkalways",null,i),ls._sending)for(var n=s._slots.shift();n;){if("pending"===s._getDeferredState(n)){n.resolve();break}n=s._slots.shift()}0===s._active&&s._trigger("stop")}))};return this._beforeSend(t,l),this.options.sequentialUploads||this.options.limitConcurrentUploads&&this.options.limitConcurrentUploads<=this._sending?(this.options.limitConcurrentUploads>1?(r=e.Deferred(),this._slots.push(r),o=r[s._promisePipe](d)):(this._sequence=this._sequence[s._promisePipe](d,d),o=this._sequence),o.abort=function(){return a=[void 0,"abort","abort"],n?n.abort():(r&&r.rejectWith(l.context,a),d())},this._enhancePromise(o)):d()},_onAdd:function(t,i){var n,a,r,o,s=this,l=!0,d=e.extend({},this.options,i),c=i.files,u=c.length,m=d.limitMultiFileUploads,p=d.limitMultiFileUploadSize,h=d.limitMultiFileUploadSizeOverhead,f=0,g=this._getParamName(d),v=0;if(!u)return!1;if(p&&void 0===c[0].size&&(p=void 0),(d.singleFileUploads||m||p)&&this._isXHRUpload(d))if(d.singleFileUploads||p||!m)if(!d.singleFileUploads&&p)for(r=[],n=[],o=0;op||m&&o+1-v>=m)&&(r.push(c.slice(v,o+1)),(a=g.slice(v,o+1)).length||(a=g),n.push(a),v=o+1,f=0);else n=g;else for(r=[],n=[],o=0;o").append(n)[0].reset(),i.after(n).detach(),a&&n.trigger("focus"),e.cleanData(i.off("remove")),this.options.fileInput=this.options.fileInput.map((function(e,t){return t===i[0]?n[0]:t})),i[0]===this.element[0]&&(this.element=n)},_handleFileTreeEntry:function(t,i){var n,a=this,r=e.Deferred(),o=[],s=function(e){e&&!e.entry&&(e.entry=t),r.resolve([e])};return i=i||"",t.isFile?t._file?(t._file.relativePath=i,r.resolve(t._file)):t.file((function(e){e.relativePath=i,r.resolve(e)}),s):t.isDirectory?(n=t.createReader(),function e(){n.readEntries((function(n){n.length?(o=o.concat(n),e()):function(e){a._handleFileTreeEntries(e,i+t.name+"/").done((function(e){r.resolve(e)})).fail(s)}(o)}),s)}()):r.resolve([]),r.promise()},_handleFileTreeEntries:function(t,i){var n=this;return e.when.apply(e,e.map(t,(function(e){return n._handleFileTreeEntry(e,i)})))[this._promisePipe]((function(){return Array.prototype.concat.apply([],arguments)}))},_getDroppedFiles:function(t){var i=(t=t||{}).items;return i&&i.length&&(i[0].webkitGetAsEntry||i[0].getAsEntry)?this._handleFileTreeEntries(e.map(i,(function(e){var t;return e.webkitGetAsEntry?((t=e.webkitGetAsEntry())&&(t._file=e.getAsFile()),t):e.getAsEntry()}))):e.Deferred().resolve(e.makeArray(t.files)).promise()},_getSingleFileInputFiles:function(t){var i,n,a=(t=e(t)).prop("entries");if(a&&a.length)return this._handleFileTreeEntries(a);if((i=e.makeArray(t.prop("files"))).length)void 0===i[0].name&&i[0].fileName&&e.each(i,(function(e,t){t.name=t.fileName,t.size=t.fileSize}));else{if(!(n=t.prop("value")))return e.Deferred().resolve([]).promise();i=[{name:n.replace(/^.*\\/,"")}]}return e.Deferred().resolve(i).promise()},_getFileInputFiles:function(t){return t instanceof e&&1!==t.length?e.when.apply(e,e.map(t,this._getSingleFileInputFiles))[this._promisePipe]((function(){return Array.prototype.concat.apply([],arguments)})):this._getSingleFileInputFiles(t)},_onChange:function(t){var i=this,n={fileInput:e(t.target),form:e(t.target.form)};this._getFileInputFiles(n.fileInput).always((function(a){n.files=a,i.options.replaceFileInput&&i._replaceFileInput(n),!1!==i._trigger("change",e.Event("change",{delegatedEvent:t}),n)&&i._onAdd(t,n)}))},_onPaste:function(t){var i=t.originalEvent&&t.originalEvent.clipboardData&&t.originalEvent.clipboardData.items,n={files:[]};i&&i.length&&(e.each(i,(function(e,t){var i=t.getAsFile&&t.getAsFile();i&&n.files.push(i)})),!1!==this._trigger("paste",e.Event("paste",{delegatedEvent:t}),n)&&this._onAdd(t,n))},_onDrop:function(t){t.dataTransfer=t.originalEvent&&t.originalEvent.dataTransfer;var i=this,n=t.dataTransfer,a={};n&&n.files&&n.files.length&&(t.preventDefault(),this._getDroppedFiles(n).always((function(n){a.files=n,!1!==i._trigger("drop",e.Event("drop",{delegatedEvent:t}),a)&&i._onAdd(t,a)})))},_onDragOver:t("dragover"),_onDragEnter:t("dragenter"),_onDragLeave:t("dragleave"),_initEventHandlers:function(){this._isXHRUpload(this.options)&&(this._on(this.options.dropZone,{dragover:this._onDragOver,drop:this._onDrop,dragenter:this._onDragEnter,dragleave:this._onDragLeave}),this._on(this.options.pasteZone,{paste:this._onPaste})),e.support.fileInput&&this._on(this.options.fileInput,{change:this._onChange})},_destroyEventHandlers:function(){this._off(this.options.dropZone,"dragenter dragleave dragover drop"),this._off(this.options.pasteZone,"paste"),this._off(this.options.fileInput,"change")},_destroy:function(){this._destroyEventHandlers()},_setOption:function(t,i){var n=-1!==e.inArray(t,this._specialOptions);n&&this._destroyEventHandlers(),this._super(t,i),n&&(this._initSpecialOptions(),this._initEventHandlers())},_initSpecialOptions:function(){var t=this.options;void 0===t.fileInput?t.fileInput=this.element.is('input[type="file"]')?this.element:this.element.find('input[type="file"]'):t.fileInput instanceof e||(t.fileInput=e(t.fileInput)),t.dropZone instanceof e||(t.dropZone=e(t.dropZone)),t.pasteZone instanceof e||(t.pasteZone=e(t.pasteZone))},_getRegExp:function(e){var t=e.split("/"),i=t.pop();return t.shift(),new RegExp(t.join("/"),i)},_isRegExpOption:function(t,i){return"url"!==t&&"string"===e.type(i)&&/^\/.*\/[igm]{0,3}$/.test(i)},_initDataAttributes:function(){var t=this,i=this.options,n=this.element.data();e.each(this.element[0].attributes,(function(e,a){var r,o=a.name.toLowerCase();/^data-/.test(o)&&(o=o.slice(5).replace(/-[a-z]/g,(function(e){return e.charAt(1).toUpperCase()})),r=n[o],t._isRegExpOption(o,r)&&(r=t._getRegExp(r)),i[o]=r)}))},_create:function(){this._initDataAttributes(),this._initSpecialOptions(),this._slots=[],this._sequence=this._getXHRPromise(!0),this._sending=this._active=0,this._initProgressObject(this),this._initEventHandlers()},active:function(){return this._active},progress:function(){return this._progress},add:function(t){var i=this;t&&!this.options.disabled&&(t.fileInput&&!t.files?this._getFileInputFiles(t.fileInput).always((function(e){t.files=e,i._onAdd(null,t)})):(t.files=e.makeArray(t.files),this._onAdd(null,t)))},send:function(t){if(t&&!this.options.disabled){if(t.fileInput&&!t.files){var i,n,a=this,r=e.Deferred(),o=r.promise();return o.abort=function(){return n=!0,i?i.abort():(r.reject(null,"abort","abort"),o)},this._getFileInputFiles(t.fileInput).always((function(e){n||(e.length?(t.files=e,(i=a._onSend(null,t)).then((function(e,t,i){r.resolve(e,t,i)}),(function(e,t,i){r.reject(e,t,i)}))):r.reject())})),this._enhancePromise(o)}if(t.files=e.makeArray(t.files),t.files.length)return this._onSend(null,t)}return this._getXHRPromise(!1,t&&t.context)}})})),function(e){"use strict";"function"==typeof define&&define.amd?define(["jquery"],e):"object"===("undefined"==typeof exports?"undefined":_typeof(exports))?e(require("jquery")):e(window.jQuery)}((function(e){"use strict";var t=0,i=e,n="parseJSON";"JSON"in window&&"parse"in JSON&&(i=JSON,n="parse"),e.ajaxTransport("iframe",(function(i){if(i.async){var n,a,r,o=i.initialIframeSrc||"javascript:false;";return{send:function(s,l){(n=e('
    ')).attr("accept-charset",i.formAcceptCharset),r=/\?/.test(i.url)?"&":"?","DELETE"===i.type?(i.url=i.url+r+"_method=DELETE",i.type="POST"):"PUT"===i.type?(i.url=i.url+r+"_method=PUT",i.type="POST"):"PATCH"===i.type&&(i.url=i.url+r+"_method=PATCH",i.type="POST"),a=e('').on("load",(function(){var t,r=e.isArray(i.paramName)?i.paramName:[i.paramName];a.off("load").on("load",(function(){var t;try{if(!(t=a.contents()).length||!t[0].firstChild)throw new Error}catch(e){t=void 0}l(200,"success",{iframe:t}),e('').appendTo(n),window.setTimeout((function(){n.remove()}),0)})),n.prop("target",a.prop("name")).prop("action",i.url).prop("method",i.type),i.formData&&e.each(i.formData,(function(t,i){e('').prop("name",i.name).val(i.value).appendTo(n)})),i.fileInput&&i.fileInput.length&&"POST"===i.type&&(t=i.fileInput.clone(),i.fileInput.after((function(e){return t[e]})),i.paramName&&i.fileInput.each((function(t){e(this).prop("name",r[t]||i.paramName)})),n.append(i.fileInput).prop("enctype","multipart/form-data").prop("encoding","multipart/form-data"),i.fileInput.removeAttr("form")),window.setTimeout((function(){n.submit(),t&&t.length&&i.fileInput.each((function(i,n){var a=e(t[i]);e(n).prop("name",a.prop("name")).attr("form",a.attr("form")),a.replaceWith(n)}))}),0)})),n.append(a).appendTo(document.body)},abort:function(){a&&a.off("load").prop("src",o),n&&n.remove()}}}})),e.ajaxSetup({converters:{"iframe text":function(t){return t&&e(t[0].body).text()},"iframe json":function(t){return t&&i[n](e(t[0].body).text())},"iframe html":function(t){return t&&e(t[0].body).html()},"iframe xml":function(t){var i=t&&t[0];return i&&e.isXMLDoc(i)?i:e.parseXML(i.XMLDocument&&i.XMLDocument.xml||e(i.body).html())},"iframe script":function(t){return t&&e.globalEval(e(t[0].body).text())}}})}));var bus=new Vue;function initializeMediaApplication(e,t,i){initialized||(initialized=!0,t||console.error("mediaApplicationUrl variable is not defined"),$.ajax({url:t,method:"GET",success:function(t){$(".ta-content").append(t),$(document).trigger("mediaapplication:ready");var n={name:$("#t-mediaLibrary").text(),path:"",folder:"",isDirectory:!0};mediaApp=new Vue({el:"#mediaApp",data:{selectedFolder:{},mediaItems:[],selectedMedias:[],errors:[],dragDropThumbnail:new Image,smallThumbs:!1,gridView:!1,mediaFilter:"",sortBy:"",sortAsc:!0,itemsInPage:[]},created:function(){var e=this;e.dragDropThumbnail.src=(i||"")+"/OrchardCore.Media/Images/drag-thumbnail.png",bus.$on("folderSelected",(function(t){e.selectedFolder=t})),bus.$on("folderDeleted",(function(){e.selectRoot()})),bus.$on("folderAdded",(function(t){e.selectedFolder=t,t.selected=!0})),bus.$on("mediaListMoved",(function(t){e.loadFolder(e.selectedFolder),t&&e.errors.push(t)})),bus.$on("mediaRenamed",(function(t,i,n){var a=e.mediaItems.filter((function(e){return e.mediaPath===n}))[0];a.mediaPath=i,a.name=t})),bus.$on("createFolderRequested",(function(t){e.createFolder()})),bus.$on("deleteFolderRequested",(function(t){e.deleteFolder()})),bus.$on("sortChangeRequested",(function(t){e.changeSort(t)})),bus.$on("mediaToggleRequested",(function(t){e.toggleSelectionOfMedia(t)})),bus.$on("renameMediaRequested",(function(t){e.renameMedia(t)})),bus.$on("deleteMediaRequested",(function(t){e.deleteMediaItem(t)})),bus.$on("mediaDragStartRequested",(function(t,i){e.handleDragStart(t,i)})),bus.$on("pagerEvent",(function(t){e.itemsInPage=t,e.selectedMedias=[]})),localStorage.getItem("mediaApplicationPrefs")?e.currentPrefs=JSON.parse(localStorage.getItem("mediaApplicationPrefs")):e.selectedFolder=n},computed:{isHome:function(){return this.selectedFolder==n},parents:function(){var e=[];for(parentFolder=this.selectedFolder;parentFolder&&""!=parentFolder.path;)e.unshift(parentFolder),parentFolder=parentFolder.parent;return e},root:function(){return n},filteredMediaItems:function(){var e=this;e.selectedMedias=[];var t=e.mediaItems.filter((function(t){return t.name.toLowerCase().indexOf(e.mediaFilter.toLowerCase())>-1}));switch(e.sortBy){case"size":t.sort((function(t,i){return e.sortAsc?t.size-i.size:i.size-t.size}));break;case"mime":t.sort((function(t,i){return e.sortAsc?t.mime.toLowerCase().localeCompare(i.mime.toLowerCase()):i.mime.toLowerCase().localeCompare(t.mime.toLowerCase())}));break;case"lastModify":t.sort((function(t,i){return e.sortAsc?t.lastModify-i.lastModify:i.lastModify-t.lastModify}));break;default:t.sort((function(t,i){return e.sortAsc?t.name.toLowerCase().localeCompare(i.name.toLowerCase()):i.name.toLowerCase().localeCompare(t.name.toLowerCase())}))}return t},hiddenCount:function(){return this.mediaItems.length-this.filteredMediaItems.length},thumbSize:function(){return this.smallThumbs?100:240},currentPrefs:{get:function(){return{smallThumbs:this.smallThumbs,selectedFolder:this.selectedFolder,gridView:this.gridView}},set:function(e){e&&(this.smallThumbs=e.smallThumbs,this.selectedFolder=e.selectedFolder,this.gridView=e.gridView)}}},watch:{currentPrefs:function(e){localStorage.setItem("mediaApplicationPrefs",JSON.stringify(e))},selectedFolder:function(e){this.mediaFilter="",this.selectedFolder=e,this.loadFolder(e)}},mounted:function(){this.$refs.rootFolder.toggle()},methods:{uploadUrl:function(){return this.selectedFolder?$("#uploadFiles").val()+"?path="+encodeURIComponent(this.selectedFolder.path):null},selectRoot:function(){this.selectedFolder=this.root},loadFolder:function(e){this.errors=[],this.selectedMedias=[];var t=this;$.ajax({url:$("#getMediaItemsUrl").val()+"?path="+encodeURIComponent(e.path),method:"GET",success:function(e){e.forEach((function(e){e.open=!1})),t.mediaItems=e,t.selectedMedias=[],t.sortBy="",t.sortAsc=!0},error:function(i){console.log("error loading folder:"+e.path),t.selectRoot()}})},selectAll:function(){this.selectedMedias=[];for(var e=0;e-1&&(t.mediaItems.splice(n,1),bus.$emit("mediaDeleted",t.selectedMedias[i]))}t.selectedMedias=[]},error:function(e){console.error(e.responseText)}})}}}))},deleteMediaItem:function(e){var t=this;e&&confirmDialog(_objectSpread(_objectSpread({},$("#deleteMedia").data()),{},{callback:function(i){i&&$.ajax({url:$("#deleteMediaUrl").val()+"?path="+encodeURIComponent(e.mediaPath),method:"POST",data:{__RequestVerificationToken:$("input[name='__RequestVerificationToken']").val()},success:function(i){var n=t.mediaItems&&t.mediaItems.indexOf(e);n>-1&&(t.mediaItems.splice(n,1),bus.$emit("mediaDeleted",e))},error:function(e){console.error(e.responseText)}})}}))},handleDragStart:function(e,t){var i=[];this.selectedMedias.forEach((function(e){i.push(e.name)})),0==this.isMediaSelected(e)&&(i.push(e.name),this.selectedMedias.push(e)),t.dataTransfer.setData("mediaNames",JSON.stringify(i)),t.dataTransfer.setData("sourceFolder",this.selectedFolder.path),t.dataTransfer.setDragImage(this.dragDropThumbnail,10,10),t.dataTransfer.effectAllowed="move"},handleScrollWhileDrag:function(e){e.clientY<150&&window.scrollBy(0,-10),e.clientY>window.innerHeight-100&&window.scrollBy(0,10)},changeSort:function(e){this.sortBy==e?this.sortAsc=!this.sortAsc:(this.sortAsc=!0,this.sortBy=e)}}}),$("#create-folder-name").keypress((function(e){if(13==e.which)return $("#modalFooterOk").click(),!1})),$("#modalFooterOk").on("click",(function(e){var t=$("#create-folder-name").val();""!==t&&$.ajax({url:$("#createFolderUrl").val()+"?path="+encodeURIComponent(mediaApp.selectedFolder.path)+"&name="+encodeURIComponent(t),method:"POST",data:{__RequestVerificationToken:$("input[name='__RequestVerificationToken']").val()},success:function(e){bus.$emit("addFolder",mediaApp.selectedFolder,e),$("#createFolderModal").modal("hide")},error:function(e){$("#createFolderModal-errors").empty();var t=JSON.parse(e.responseText).value;$('').text(t).appendTo($("#createFolderModal-errors"))}})})),$("#renameMediaModalFooterOk").on("click",(function(e){var t=$("#new-item-name").val(),i=$("#old-item-name").val();if(""!==t){var n=mediaApp.selectedFolder.path+"/";"/"===n&&(n="");var a=n+t,r=n+i;a.toLowerCase()!==r.toLowerCase()?$.ajax({url:$("#renameMediaUrl").val()+"?oldPath="+encodeURIComponent(r)+"&newPath="+encodeURIComponent(a),method:"POST",data:{__RequestVerificationToken:$("input[name='__RequestVerificationToken']").val()},success:function(e){$("#renameMediaModal").modal("hide"),bus.$emit("mediaRenamed",t,a,r)},error:function(e){$("#renameMediaModal-errors").empty();var t=JSON.parse(e.responseText).value;$('').text(t).appendTo($("#renameMediaModal-errors"))}}):$("#renameMediaModal").modal("hide")}})),e&&(document.getElementById("mediaApp").style.display=""),$(document).trigger("mediaApp:ready")},error:function(e){console.error(e.responseText)}}))}function ownKeys(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,n)}return i}function _objectSpread(e){for(var t=1;t0&&a},thumbSize:function(){return this.smallThumbs?120:240},currentPrefs:{get:function(){return{smallThumbs:this.smallThumbs}},set:function(e){e&&(this.smallThumbs=e.smallThumbs)}}},mounted:function(){var e=this;e.paths=d,e.$on("selectAndDeleteMediaRequested",(function(t){e.selectAndDeleteMedia(t)})),e.$on("selectMediaRequested",(function(t){e.selectMedia(t)}));var n="#"+t,r=c.attr("id");$(n).fileupload({limitConcurrentUploads:20,dropZone:$("#"+r),dataType:"json",url:i,add:function(t,i){var n,a=i.files.length;for(n=0;n0)for(var r=0;r1&&!1===a?(alert($("#onlyOneItemMessage").val()),l.mediaItems.push(i[0]),l.initialized=!0):(l.mediaItems=l.mediaItems.concat(i),l.initialized=!0)):alert(n)},error:function(e,t,i){console.log("error on upload!!"),console.log(e),console.log(t),console.log(i)}})},methods:{selectMedia:function(e){this.selectedMedia=e},getUniqueId:function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(e){var t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)}))},removeSelected:function(e){if(this.selectedMedia){var t=this.mediaItems&&this.mediaItems.indexOf(this.selectedMedia);t>-1&&(this.mediaItems[t].isRemoved=!0,this.mediaItems.splice(t,1))}else 1===this.mediaItems.length&&(this.mediaItems[t].isRemoved=!0,this.mediaItems.splice(0,1));this.selectedMedia=null},showMediaTextModal:function(e){$(this.$refs.mediaTextModal).modal(),this.backupMediaText=this.selectedMedia.mediaText},cancelMediaTextModal:function(e){$(this.$refs.mediaTextModal).modal("hide"),this.selectedMedia.mediaText=this.backupMediaText},showAnchorModal:function(e){$(this.$refs.anchoringModal).modal(),this.selectedMedia.anchor={x:this.selectedMedia.anchor.x,y:this.selectedMedia.anchor.y},this.backupAnchor=this.selectedMedia.anchor},cancelAnchoringModal:function(e){$(this.$refs.anchoringModal).modal("hide"),this.selectedMedia.anchor=this.backupAnchor},resetAnchor:function(e){this.selectedMedia.anchor={x:.5,y:.5}},onAnchorDrop:function(e){var t=this.$refs.anchorImage;this.selectedMedia.anchor={x:e.offsetX/t.clientWidth,y:e.offsetY/t.clientHeight}},anchorLeft:function(){if(this.$refs.anchorImage&&this.$refs.modalBody&&this.selectedMedia){var e=(this.$refs.modalBody.clientWidth-this.$refs.anchorImage.clientWidth)/2,t=this.selectedMedia.anchor.x*this.$refs.anchorImage.clientWidth+e;return t<17?t=17:t-=8,t+"px"}return"0"},anchorTop:function(){if(this.$refs.anchorImage&&this.selectedMedia){var e=this.selectedMedia.anchor.y*this.$refs.anchorImage.clientHeight;return e<15?e=15:e+=5,e+"px"}return"0"},setAnchor:function(e){var t=this.$refs.anchorImage;this.selectedMedia.anchor={x:e.offsetX/t.clientWidth,y:e.offsetY/t.clientHeight}},addMediaFiles:function(e){e.length>1&&!1===a?(alert($("#onlyOneItemMessage").val()),l.mediaItems.push(e[0]),l.initialized=!0):(l.mediaItems=l.mediaItems.concat(e),l.initialized=!0)},selectAndDeleteMedia:function(e){var t=this;t.selectedMedia=e,setTimeout((function(){t.removeSelected()}),100)}},watch:{mediaItems:{deep:!0,handler:function(){setTimeout((function(){$(document).trigger("contentpreview:render")}),100)}},currentPrefs:function(e){localStorage.setItem("mediaFieldPrefs",JSON.stringify(e))}}}))}function initializeMediaField(e,t,i,n,a,r){var o,s=$(document.getElementById($(e).data("for"))).data("init"),l=$(e),d=l.attr("id");mediaFieldApps.push(o=new Vue({el:l.get(0),data:{mediaItems:[],selectedMedia:null,smallThumbs:!1,idPrefix:d,initialized:!1,allowMediaText:a,backupMediaText:"",allowAnchors:r,backupAnchor:null},created:function(){this.currentPrefs=JSON.parse(localStorage.getItem("mediaFieldPrefs"))},computed:{paths:{get:function(){var e=[];return this.initialized?(this.mediaItems.forEach((function(t){"not-found"!==t.mediaPath&&e.push({path:t.mediaPath,mediaText:t.mediaText,anchor:t.anchor})})),JSON.stringify(e)):JSON.stringify(s)},set:function(e){var t=this,n=e||[],a=$.Deferred(),r=[],o=0;n.forEach((function(e,n){r.push({name:" "+e.path,mime:"",mediaPath:""}),promise=$.when(a).done((function(){$.ajax({url:i+"?path="+encodeURIComponent(e.path),method:"GET",success:function(i){i.vuekey=i.name+n.toString(),i.mediaText=e.mediaText,i.anchor=e.anchor,r.splice(n,1,i),r.length===++o&&(r.forEach((function(e){t.mediaItems.push(e)})),t.initialized=!0)},error:function(i){console.log(i),r.splice(n,1,{name:e.path,mime:"",mediaPath:"not-found",mediaText:"",anchor:{x:0,y:0}}),r.length===++o&&(r.forEach((function(e){t.mediaItems.push(e)})),t.initialized=!0)}})}))})),a.resolve()}},fileSize:function(){return Math.round(this.selectedMedia.size/1024)},canAddMedia:function(){return 0===this.mediaItems.length||this.mediaItems.length>0&&n},thumbSize:function(){return this.smallThumbs?120:240},currentPrefs:{get:function(){return{smallThumbs:this.smallThumbs}},set:function(e){e&&(this.smallThumbs=e.smallThumbs)}}},mounted:function(){var e=this;e.paths=s,e.$on("selectAndDeleteMediaRequested",(function(t){e.selectAndDeleteMedia(t)})),e.$on("selectMediaRequested",(function(t){e.selectMedia(t)})),e.$on("filesUploaded",(function(t){e.addMediaFiles(t)}))},methods:{selectMedia:function(e){this.selectedMedia=e},showModal:function(e){var i=this;if(i.canAddMedia){$("#mediaApp").detach().appendTo($(t).find(".modal-body")),$("#mediaApp").show();var n=$(t).modal();$(t).find(".mediaFieldSelectButton").off("click").on("click",(function(e){return i.addMediaFiles(mediaApp.selectedMedias),mediaApp.selectedMedias=[],n.modal("hide"),!0}))}},showMediaTextModal:function(e){$(this.$refs.mediaTextModal).modal(),this.backupMediaText=this.selectedMedia.mediaText},cancelMediaTextModal:function(e){$(this.$refs.mediaTextModal).modal("hide"),this.selectedMedia.mediaText=this.backupMediaText},showAnchorModal:function(e){$(this.$refs.anchoringModal).modal(),this.selectedMedia.anchor={x:this.selectedMedia.anchor.x,y:this.selectedMedia.anchor.y},this.backupAnchor=this.selectedMedia.anchor},cancelAnchoringModal:function(e){$(this.$refs.anchoringModal).modal("hide"),this.selectedMedia.anchor=this.backupAnchor},resetAnchor:function(e){this.selectedMedia.anchor={x:.5,y:.5}},onAnchorDrop:function(e){var t=this.$refs.anchorImage;this.selectedMedia.anchor={x:e.offsetX/t.clientWidth,y:e.offsetY/t.clientHeight}},anchorLeft:function(){if(this.$refs.anchorImage&&this.$refs.modalBody&&this.selectedMedia){var e=(this.$refs.modalBody.clientWidth-this.$refs.anchorImage.clientWidth)/2,t=this.selectedMedia.anchor.x*this.$refs.anchorImage.clientWidth+e,i=Math.round(this.$refs.modalBody.querySelector(".icon-media-anchor").clientWidth);return Number.isInteger(i)&&(t-=i/2),t+"px"}return"0"},anchorTop:function(){return this.$refs.anchorImage&&this.selectedMedia?this.selectedMedia.anchor.y*this.$refs.anchorImage.clientHeight+"px":"0"},setAnchor:function(e){var t=this.$refs.anchorImage;this.selectedMedia.anchor={x:e.offsetX/t.clientWidth,y:e.offsetY/t.clientHeight}},addMediaFiles:function(e){e.length>1&&!1===n?(alert($("#onlyOneItemMessage").val()),o.mediaItems.push(e[0]),o.initialized=!0):(o.mediaItems=o.mediaItems.concat(e),o.initialized=!0)},removeSelected:function(e){if(this.selectedMedia){var t=this.mediaItems&&this.mediaItems.indexOf(this.selectedMedia);t>-1&&this.mediaItems.splice(t,1)}else 1===this.mediaItems.length&&this.mediaItems.splice(0,1);this.selectedMedia=null},selectAndDeleteMedia:function(e){var t=this;t.selectedMedia=e,setTimeout((function(){t.removeSelected()}),100)}},watch:{mediaItems:{deep:!0,handler:function(){setTimeout((function(){$(document).trigger("contentpreview:render")}),100)}},currentPrefs:function(e){localStorage.setItem("mediaFieldPrefs",JSON.stringify(e))}}}))}$(document).on("mediaApp:ready",(function(){$("#fileupload").fileupload({dropZone:$("#mediaApp"),limitConcurrentUploads:20,dataType:"json",url:$("#uploadFiles").val(),formData:function(){var e=$("input[name=__RequestVerificationToken]").val();return[{name:"path",value:mediaApp.selectedFolder.path},{name:"__RequestVerificationToken",value:e}]},done:function(e,t){$.each(t.result.files,(function(e,t){t.error||mediaApp.mediaItems.push(t)}))}})})),$(document).bind("dragover",(function(e){var t=e.originalEvent.dataTransfer;if(t.types&&(t.types.indexOf?-1!=t.types.indexOf("Files"):t.types.contains("Files"))){var i=$("#customdropzone"),n=window.dropZoneTimeout;n?clearTimeout(n):i.addClass("in");$(e.target).closest(i);window.dropZoneTimeout=setTimeout((function(){window.dropZoneTimeout=null,i.removeClass("in")}),100)}})),Vue.component("folder",{template:'\n
  • \n \n
      \n \n \n
    \n
  • \n '),props:{model:Object,selectedInMediaApp:Object,level:Number},data:function(){return{open:!1,children:null,parent:null,isHovered:!1,padding:0}},computed:{empty:function(){return!this.children||0==this.children.length},isSelected:function(){return this.selectedInMediaApp.name==this.model.name&&this.selectedInMediaApp.path==this.model.path},isRoot:function(){return""===this.model.path}},mounted:function(){0==this.isRoot&&this.isAncestorOfSelectedFolder()&&this.toggle(),this.padding=this.level<3?16:16+8*this.level},created:function(){var e=this;bus.$on("deleteFolder",(function(t){if(e.children){var i=e.children&&e.children.indexOf(t);i>-1&&(e.children.splice(i,1),bus.$emit("folderDeleted"))}})),bus.$on("addFolder",(function(t,i){e.model==t&&(null!==e.children&&e.children.push(i),i.parent=e.model,bus.$emit("folderAdded",i))}))},methods:{isAncestorOfSelectedFolder:function(){for(parentFolder=mediaApp.selectedFolder;parentFolder;){if(parentFolder.path==this.model.path)return!0;parentFolder=parentFolder.parent}return!1},toggle:function(){this.open=!this.open,this.open&&!this.children&&this.loadChildren()},select:function(){bus.$emit("folderSelected",this.model),this.loadChildren()},createFolder:function(){bus.$emit("createFolderRequested")},deleteFolder:function(){bus.$emit("deleteFolderRequested")},loadChildren:function(){var e=this;0==this.open&&(this.open=!0),$.ajax({url:$("#getFoldersUrl").val()+"?path="+encodeURIComponent(e.model.path),method:"GET",success:function(t){e.children=t,e.children.forEach((function(t){t.parent=e.model}))},error:function(e){emtpy=!1,console.error(e.responseText)}})},handleDragOver:function(e){this.isHovered=!0},handleDragLeave:function(e){this.isHovered=!1},moveMediaToFolder:function(e,t){this.isHovered=!1;var i=JSON.parse(t.dataTransfer.getData("mediaNames"));if(!(i.length<1)){var n=t.dataTransfer.getData("sourceFolder"),a=e.path;""===n&&(n="root"),""===a&&(a="root"),n!==a?confirmDialog(_objectSpread(_objectSpread({},$("#moveMedia").data()),{},{callback:function(e){e&&$.ajax({url:$("#moveMediaListUrl").val(),method:"POST",data:{__RequestVerificationToken:$("input[name='__RequestVerificationToken']").val(),mediaNames:i,sourceFolder:n,targetFolder:a},success:function(){bus.$emit("mediaListMoved")},error:function(e){console.error(e.responseText),bus.$emit("mediaListMoved",e.responseText)}})}})):alert($("#sameFolderMessage").val())}}}}),Vue.component("media-items-grid",{template:'\n
      \n
    1. \n
      \n \n \n
      \n
      \n \n \n \n {{ media.name }}\n
      \n
    2. \n
    \n ',data:function(){return{T:{}}},props:{filteredMediaItems:Array,selectedMedias:Array,thumbSize:Number},created:function(){this.T.editButton=$("#t-edit-button").val(),this.T.deleteButton=$("#t-delete-button").val()},methods:{isMediaSelected:function(e){return this.selectedMedias.some((function(t,i,n){return t.url.toLowerCase()===e.url.toLowerCase()}))},buildMediaUrl:function(e,t){return e+(-1==e.indexOf("?")?"?":"&")+"width="+t+"&height="+t},toggleSelectionOfMedia:function(e){bus.$emit("mediaToggleRequested",e)},renameMedia:function(e){bus.$emit("renameMediaRequested",e)},deleteMedia:function(e){bus.$emit("deleteMediaRequested",e)},dragStart:function(e,t){bus.$emit("mediaDragStartRequested",e,t)}}}),Vue.component("media-items-table",{template:'\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    {{ T.imageHeader }}\n {{ T.nameHeader }}\n \n \n {{ T.lastModifyHeader }} \n \n \n \n {{ T.sizeHeader }}\n \n \n \n \n {{ T.typeHeader }}\n \n \n
    \n
    \n \n \n
    \n
    \n \n \n
    {{ printDateTime(media.lastModify) }}
    \n
    \n
    {{ isNaN(media.size)? 0 : Math.round(media.size / 1024) }} KB
    \n
    \n
    {{ media.mime }}
    \n
    \n ',data:function(){return{T:{}}},props:{sortBy:String,sortAsc:Boolean,filteredMediaItems:Array,selectedMedias:Array,thumbSize:Number},created:function(){var e=this;e.T.imageHeader=$("#t-image-header").val(),e.T.nameHeader=$("#t-name-header").val(),e.T.lastModifyHeader=$("#t-lastModify-header").val(),e.T.sizeHeader=$("#t-size-header").val(),e.T.typeHeader=$("#t-type-header").val(),e.T.editButton=$("#t-edit-button").val(),e.T.deleteButton=$("#t-delete-button").val(),e.T.viewButton=$("#t-view-button").val()},methods:{isMediaSelected:function(e){return this.selectedMedias.some((function(t,i,n){return t.url.toLowerCase()===e.url.toLowerCase()}))},buildMediaUrl:function(e,t){return e+(-1==e.indexOf("?")?"?":"&")+"width="+t+"&height="+t},changeSort:function(e){bus.$emit("sortChangeRequested",e)},toggleSelectionOfMedia:function(e){bus.$emit("mediaToggleRequested",e)},renameMedia:function(e){bus.$emit("renameMediaRequested",e)},deleteMedia:function(e){bus.$emit("deleteMediaRequested",e)},dragStart:function(e,t){bus.$emit("mediaDragStartRequested",e,t)},printDateTime:function(e){return new Date(e).toLocaleString()}}}),Vue.component("pager",{template:'\n
    \n \n \n
    \n ',props:{sourceItems:Array},data:function(){return{pageSize:10,pageSizeOptions:[10,30,50,100],current:0,T:{}}},created:function(){var e=this;e.T.pagerFirstButton=$("#t-pager-first-button").val(),e.T.pagerPreviousButton=$("#t-pager-previous-button").val(),e.T.pagerNextButton=$("#t-pager-next-button").val(),e.T.pagerLastButton=$("#t-pager-last-button").val(),e.T.pagerPageSizeLabel=$("#t-pager-page-size-label").val(),e.T.pagerPageLabel=$("#t-pager-page-label").val(),e.T.pagerTotalLabel=$("#t-pager-total-label").val()},methods:{next:function(){this.current=this.current+1},previous:function(){this.current=this.current-1},goFirst:function(){this.current=0},goLast:function(){this.current=this.totalPages-1},goTo:function(e){this.current=e}},computed:{total:function(){return this.sourceItems?this.sourceItems.length:0},totalPages:function(){var e=Math.ceil(this.total/this.pageSize);return e>0?e:1},isLastPage:function(){return this.current+1>=this.totalPages},isFirstPage:function(){return 0===this.current},canDoNext:function(){return!this.isLastPage},canDoPrev:function(){return!this.isFirstPage},canDoFirst:function(){return!this.isFirstPage},canDoLast:function(){return!this.isLastPage},itemsInCurrentPage:function(){var e=this.pageSize*this.current,t=e+this.pageSize,i=this.sourceItems.slice(e,t);return bus.$emit("pagerEvent",i),i},pageLinks:function(){var e=[];e.push(this.current+1);var t=this.current>0?this.current:-1;e.unshift(t);var i=this.current>1?this.current-1:-1;e.unshift(i);var n=this.totalPages-this.current>1?this.current+2:-1;e.push(n);var a=this.totalPages-this.current>2?this.current+3:-1;return e.push(a),e}},watch:{sourceItems:function(){this.current=0},pageSize:function(){this.current=0}}}),Vue.component("sortIndicator",{template:'\n
    \n \n \n
    \n ',props:{colname:String,selectedcolname:String,asc:Boolean},computed:{isActive:function(){return this.colname.toLowerCase()==this.selectedcolname.toLowerCase()}}});var mediaFieldApps=[];Vue.component("mediaFieldThumbsContainer",{template:'
    {{T.noImages}}
  • {{ media.isNew ? media.name.substr(36) : media.name }}
    {{ T.mediaNotFound }} {{ T.discardWarning }}
    {{ media.name }}
  • ',data:function(){return{T:{}}},props:{mediaItems:Array,selectedMedia:Object,thumbSize:Number,idPrefix:String},created:function(){var e=this;e.T.mediaNotFound=$("#t-media-not-found").val(),e.T.discardWarning=$("#t-discard-warning").val(),e.T.noImages=$("#t-no-images").val()},methods:{selectAndDeleteMedia:function(e){this.$parent.$emit("selectAndDeleteMediaRequested",e)},selectMedia:function(e){this.$parent.$emit("selectMediaRequested",e)},buildMediaUrl:function(e,t){return e+(-1==e.indexOf("?")?"?":"&")+"width="+t+"&height="+t}}}),Vue.component("upload",{template:'

    {{ model.name }}

    Error: {{ model.errorMessage }}
    ',props:{model:Object},mounted:function(){var e=this;$("#fileupload").bind("fileuploadprogress",(function(t,i){i.files[0].name===e.model.name&&(e.model.percentage=parseInt(i.loaded/i.total*100,10))})),$("#fileupload").bind("fileuploaddone",(function(t,i){i.files[0].name===e.model.name&&(i.result.files[0].error?e.handleFailure(i.files[0].name,i.result.files[0].error):bus.$emit("removalRequest",e.model))})),$("#fileupload").bind("fileuploadfail",(function(t,i){i.files[0].name===e.model.name&&e.handleFailure(i.files[0].name,i.textStatus)}))},methods:{handleFailure:function(e,t){e===this.model.name&&(this.model.errorMessage=t,bus.$emit("ErrorOnUpload",this.model))},dismissWarning:function(){bus.$emit("removalRequest",this.model)}}}),Vue.component("uploadList",{template:'
    {{ T.uploads }} (Pending: {{ pendingCount }}) ( {{ T.errors }}: {{ errorCount }} / {{ T.clearErrors }} )
    ',data:function(){return{files:[],T:{},expanded:!1,pendingCount:0,errorCount:0}},created:function(){var e=this;e.T.uploads=$("#t-uploads").val(),e.T.errors=$("#t-errors").val(),e.T.clearErrors=$("#t-clear-errors").val()},computed:{fileCount:function(){return this.files.length}},mounted:function(){var e=this;$("#fileupload").bind("fileuploadadd",(function(t,i){i.files&&i.files.forEach((function(t){e.files.some((function(e){return e.name==t.name}))?console.error("A file with the same name is already on the queue:"+t.name):e.files.push({name:t.name,percentage:0,errorMessage:""})}))})),bus.$on("removalRequest",(function(t){e.files.forEach((function(e,i,n){e.name==t.name&&n.splice(i,1)}))})),bus.$on("ErrorOnUpload",(function(t){e.updateCount()}))},methods:{updateCount:function(){this.errorCount=this.files.filter((function(e){return""!=e.errorMessage})).length,this.pendingCount=this.files.length-this.errorCount,this.files.length<1&&(this.expanded=!1)},clearErrors:function(){this.files=this.files.filter((function(e){return""==e.errorMessage}))}},watch:{files:function(){this.updateCount()}}}); diff --git a/src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/bootstrap.bundle.js b/src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/bootstrap.bundle.js index 9c574221d10..c09c7bd33ed 100644 --- a/src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/bootstrap.bundle.js +++ b/src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/bootstrap.bundle.js @@ -21,7 +21,7 @@ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symb function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } Object.defineProperty(subClass, "prototype", { value: Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }), writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); } +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } diff --git a/src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/bootstrap.bundle.min.js b/src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/bootstrap.bundle.min.js index 4ab627d9d86..9a1c7dd00e0 100644 --- a/src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/bootstrap.bundle.min.js +++ b/src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/bootstrap.bundle.min.js @@ -1,4 +1,4 @@ -function _get(){return _get="undefined"!=typeof Reflect&&Reflect.get?Reflect.get:function(e,t,n){var i=_superPropBase(e,t);if(i){var o=Object.getOwnPropertyDescriptor(i,t);return o.get?o.get.call(arguments.length<3?e:n):o.value}},_get.apply(this,arguments)}function _superPropBase(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&null!==(e=_getPrototypeOf(e)););return e}function ownKeys(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function _objectSpread(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,i=new Array(t);ne.length)&&(t=e.length);for(var n=0,i=new Array(t);ne.length)&&(t=e.length);for(var n=0,i=new Array(t);ne.length)&&(t=e.length);for(var n=0,i=new Array(t);n ]*/g, function (match) { + return match.toLowerCase(); + }); // Replace uppercase attribute names with lowercase + + theString = theString.replace(/<[^>]*>/g, function (match) { + match = match.replace(/ [^=]+=/g, function (match2) { + return match2.toLowerCase(); + }); + return match; + }); // Put quotes around unquoted attributes + + theString = theString.replace(/<[^>]*>/g, function (match) { + match = match.replace(/( [^=]+=)([^"][^ >]*)/g, '$1\"$2\"'); + return match; + }); + return theString; + } + + function cleanIt(html) { + // first make sure all tags and attributes are made valid + html = checkValidTags(html); // Replace opening bold tags with strong + + html = html.replace(/)/g, ')/g, ')/g, ')/g, '\s*/g, ''); // strip out   -cgCraft + + html = html.replace(/ /gi, ' '); // strip out extra spaces -cgCraft + + html = html.replace(/ <\//gi, ']*>/g, function (match) { + match = match.replace(/ ([^=]+)="[^"]*"/g, function (match2, attributeName) { + if (['alt', 'href', 'src', 'title'].indexOf(attributeName) !== -1) { + return match2; + } + + return ''; + }); + return match; + }); // Final clean out for MS Word crud + + html = html.replace(/<\?xml[^>]*>/g, ''); + html = html.replace(/<[^ >]+:[^>]*>/g, ''); + html = html.replace(/<\/[^ >]+:[^>]*>/g, ''); // remove unwanted tags + + html = html.replace(/<(div|span|style|meta|link).*?>/gi, ''); + return html; + } // clean editor + // this will clean the inserted contents + // it does a compare, before and after paste to determine the + // pasted contents + + + $.extend(true, $.trumbowyg, { + plugins: { + cleanPaste: { + init: function init(trumbowyg) { + trumbowyg.pasteHandlers.push(function (pasteEvent) { + setTimeout(function () { + try { + trumbowyg.saveRange(); + var clipboardData = (pasteEvent.originalEvent || pasteEvent).clipboardData, + pastedData = clipboardData.getData('Text'), + node = trumbowyg.doc.getSelection().focusNode, + range = trumbowyg.doc.createRange(), + cleanedPaste = cleanIt(pastedData.trim()), + newNode = $(cleanedPaste)[0] || trumbowyg.doc.createTextNode(cleanedPaste); + + if (trumbowyg.$ed.html() === '') { + // simply append if there is no content in editor + trumbowyg.$ed[0].appendChild(newNode); + } else { + // insert pasted content behind last focused node + range.setStartAfter(node); + range.setEndAfter(node); + trumbowyg.doc.getSelection().removeAllRanges(); + trumbowyg.doc.getSelection().addRange(range); + trumbowyg.range.insertNode(newNode); + } // now set cursor right after pasted content + + + range = trumbowyg.doc.createRange(); + range.setStartAfter(newNode); + range.setEndAfter(newNode); + trumbowyg.doc.getSelection().removeAllRanges(); + trumbowyg.doc.getSelection().addRange(range); // prevent defaults + + pasteEvent.stopPropagation(); + pasteEvent.preventDefault(); // save new node as focused node + + trumbowyg.saveRange(); + trumbowyg.syncCode(); + trumbowyg.$c.trigger('tbwchange'); + } catch (c) {} + }, 0); + }); + } + } + } + }); +})(jQuery); +!function (e) { + "use strict"; + + e.extend(!0, e.trumbowyg, { + plugins: { + cleanPaste: { + init: function init(t) { + t.pasteHandlers.push(function (r) { + setTimeout(function () { + try { + t.saveRange(); + var a = (r.originalEvent || r).clipboardData.getData("Text"), + n = t.doc.getSelection().focusNode, + c = t.doc.createRange(), + g = ((l = (l = (l = (l = (l = (l = (l = (l = (l = a.trim()).replace(/<[^> ]*/g, function (e) { + return e.toLowerCase(); + }).replace(/<[^>]*>/g, function (e) { + return e.replace(/ [^=]+=/g, function (e) { + return e.toLowerCase(); + }); + }).replace(/<[^>]*>/g, function (e) { + return e.replace(/( [^=]+=)([^"][^ >]*)/g, '$1"$2"'); + })).replace(/)/g, ")/g, ")/g, ")/g, "\s*/g, "")).replace(/ /gi, " ")).replace(/ <\//gi, "]*>/g, function (e) { + return e.replace(/ ([^=]+)="[^"]*"/g, function (e, t) { + return -1 !== ["alt", "href", "src", "title"].indexOf(t) ? e : ""; + }); + })).replace(/<\?xml[^>]*>/g, "")).replace(/<[^ >]+:[^>]*>/g, "")).replace(/<\/[^ >]+:[^>]*>/g, "")).replace(/<(div|span|style|meta|link).*?>/gi, "")), + o = e(g)[0] || t.doc.createTextNode(g); + "" === t.$ed.html() ? t.$ed[0].appendChild(o) : (c.setStartAfter(n), c.setEndAfter(n), t.doc.getSelection().removeAllRanges(), t.doc.getSelection().addRange(c), t.range.insertNode(o)), (c = t.doc.createRange()).setStartAfter(o), c.setEndAfter(o), t.doc.getSelection().removeAllRanges(), t.doc.getSelection().addRange(c), r.stopPropagation(), r.preventDefault(), t.saveRange(), t.syncCode(), t.$c.trigger("tbwchange"); + } catch (e) {} + + var l; + }, 0); + }); + } + } + } + }); +}(jQuery); /* =========================================================== * trumbowyg.base64.js v1.0 * Base64 plugin for Trumbowyg @@ -369,167 +536,190 @@ }); }(jQuery); /* =========================================================== - * trumbowyg.cleanpaste.js v1.0 - * Font Clean paste plugin for Trumbowyg + * trumbowyg.emoji.js v0.1 + * Emoji picker plugin for Trumbowyg * http://alex-d.github.com/Trumbowyg * =========================================================== - * Authors : Eric Radin - * Todd Graham (slackwalker) - * - * This plugin will perform a "cleaning" on any paste, in particular - * it will clean pasted content of microsoft word document tags and classes. + * Author : Nicolas Pion + * Twitter : @nicolas_pion */ (function ($) { 'use strict'; - function checkValidTags(snippet) { - var theString = snippet; // Replace uppercase element names with lowercase - - theString = theString.replace(/<[^> ]*/g, function (match) { - return match.toLowerCase(); - }); // Replace uppercase attribute names with lowercase - - theString = theString.replace(/<[^>]*>/g, function (match) { - match = match.replace(/ [^=]+=/g, function (match2) { - return match2.toLowerCase(); - }); - return match; - }); // Put quotes around unquoted attributes - - theString = theString.replace(/<[^>]*>/g, function (match) { - match = match.replace(/( [^=]+=)([^"][^ >]*)/g, '$1\"$2\"'); - return match; - }); - return theString; - } - - function cleanIt(html) { - // first make sure all tags and attributes are made valid - html = checkValidTags(html); // Replace opening bold tags with strong - - html = html.replace(/)/g, ')/g, ')/g, ')/g, '\s*/g, ''); // strip out   -cgCraft - - html = html.replace(/ /gi, ' '); // strip out extra spaces -cgCraft - - html = html.replace(/ <\//gi, ']*>/g, function (match) { - match = match.replace(/ ([^=]+)="[^"]*"/g, function (match2, attributeName) { - if (['alt', 'href', 'src', 'title'].indexOf(attributeName) !== -1) { - return match2; - } - - return ''; - }); - return match; - }); // Final clean out for MS Word crud - - html = html.replace(/<\?xml[^>]*>/g, ''); - html = html.replace(/<[^ >]+:[^>]*>/g, ''); - html = html.replace(/<\/[^ >]+:[^>]*>/g, ''); // remove unwanted tags - - html = html.replace(/<(div|span|style|meta|link).*?>/gi, ''); - return html; - } // clean editor - // this will clean the inserted contents - // it does a compare, before and after paste to determine the - // pasted contents - + var defaultOptions = { + emojiList: ['⁉', '™', 'ℹ', '↔', '↕', '↖', '↗', '↘', '↙', '⌨', '☀', '☁', '☂', '☃', '☄', '☑', '☔', '☕', '☘', '☠', '☢', '☣', '☦', '☸', '☹', '♀', '♂', '♈', '♉', '♐', '♑', '♒', '♓', '♠', '♣', '♥', '♦', '♨', '⚒', '⚓', '⚔', '⚕', '⚖', '⚗', '⚙', '✂', '✅', '✈', '✉', '✒', '✔', '✖', '✡', '✨', '✳', '✴', '❄', '❇', '❓', '❔', '❕', '❗', '❣', '❤', '➕', '➖', '➗', '⤴', '⤵', '〰', '㊗', '㊙', '🧡', '💛', '💚', '💙', '💜', '🖤', '🤎', '🤍', '💔', '💕', '💞', '💓', '💗', '💖', '💘', '💝', '💟', '☮', '✝', '☪', '🕉', '🔯', '🕎', '☯', '🛐', '⛎', '♊', '♋', '♌', '♍', '♎', '♏', '🆔', '⚛', '🉑', '📴', '📳', '🈶', '🈚', '🈸', '🈺', '🈷', '🆚', '💮', '🉐', '🈴', '🈵', '🈹', '🈲', '🅰', '🅱', '🆎', '🆑', '🅾', '🆘', '❌', '⭕', '🛑', '⛔', '📛', '🚫', '💯', '💢', '🚷', '🚯', '🚳', '🚱', '🔞', '📵', '🚭', '‼', '🔅', '🔆', '〽', '⚠', '🚸', '🔱', '⚜', '🔰', '♻', '🈯', '💹', '❎', '🌐', '💠', 'Ⓜ', '🌀', '💤', '🏧', '🚾', '♿', '🅿', '🈳', '🈂', '🛂', '🛃', '🛄', '🛅', '🚹', '🚺', '🚼', '🚻', '🚮', '🎦', '📶', '🈁', '🔣', '🔤', '🔡', '🔠', '🆖', '🆗', '🆙', '🆒', '🆕', '🆓', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '🔟', '🔢', '#', '*', '⏏', '▶', '⏸', '⏯', '⏹', '⏺', '⏭', '⏮', '⏩', '⏪', '⏫', '⏬', '◀', '🔼', '🔽', '➡', '⬅', '⬆', '⬇', '↪', '↩', '🔀', '🔁', '🔂', '🔄', '🔃', '🎵', '🎶', '♾', '💲', '💱', '©', '®', '➰', '➿', '🔚', '🔙', '🔛', '🔝', '🔜', '🔘', '⚪', '⚫', '🔴', '🔵', '🟤', '🟣', '🟢', '🟡', '🟠', '🔺', '🔻', '🔸', '🔹', '🔶', '🔷', '🔳', '🔲', '▪', '▫', '◾', '◽', '◼', '◻', '⬛', '⬜', '🟧', '🟦', '🟥', '🟫', '🟪', '🟩', '🟨', '🔈', '🔇', '🔉', '🔊', '🔔', '🔕', '📣', '📢', '🗨', '👁', '💬', '💭', '🗯', '🃏', '🎴', '🀄', '🕐', '🕑', '🕒', '🕓', '🕔', '🕕', '🕖', '🕗', '🕘', '🕙', '🕚', '🕛', '🕜', '🕝', '🕞', '🕟', '🕠', '🕡', '🕢', '🕣', '🕤', '🕥', '🕦', '🕧', '⚽', '🏀', '🏈', '⚾', '🥎', '🎾', '🏐', '🏉', '🥏', '🎱', '🏓', '🏸', '🏒', '🏑', '🥍', '🏏', '🥅', '⛳', '🏹', '🎣', '🥊', '🥋', '🎽', '🛹', '🛷', '🪂', '⛸', '🥌', '🎿', '⛷', '🏂', '🏋', '🤼', '🤸', '⛹', '🤺', '🤾', '🏌', '🏇', '🧘', '🏄', '🏊', '🤽', '🚣', '🧗', '🚵', '🚴', '🏆', '🥇', '🥈', '🥉', '🏅', '🎖', '🏵', '🎗', '🎫', '🎟', '🎪', '🤹', '🎭', '🎨', '🎬', '🎤', '🎧', '🎼', '🎹', '🥁', '🎷', '🎺', '🪕', '🎸', '🎻', '🎲', '♟', '🎯', '🪁', '🪀', '🎳', '🎮', '🎰', '🧩', '⌚', '📱', '📲', '💻', '🖥', '🖨', '🖱', '🖲', '🕹', '🗜', '💽', '💾', '💿', '📀', '📼', '📷', '📸', '📹', '🎥', '📽', '🎞', '📞', '☎', '📟', '📠', '📺', '📻', '🎙', '🎚', '🎛', '🧭', '⏱', '⏲', '⏰', '🕰', '⌛', '⏳', '📡', '🔋', '🔌', '💡', '🔦', '🕯', '🧯', '🛢', '💸', '💵', '💴', '💶', '💷', '💰', '💳', '💎', '🧰', '🔧', '🔨', '🛠', '⛏', '🔩', '🧱', '⛓', '🧲', '🔫', '💣', '🧨', '🪓', '🪒', '🔪', '🗡', '🛡', '🚬', '⚰', '⚱', '🏺', '🪔', '🔮', '📿', '🧿', '💈', '🔭', '🔬', '🕳', '🦯', '🩺', '🩹', '💊', '💉', '🩸', '🧬', '🦠', '🧫', '🧪', '🌡', '🪑', '🧹', '🧺', '🧻', '🚽', '🚰', '🚿', '🛁', '🛀', '🧼', '🧽', '🧴', '🛎', '🔑', '🗝', '🚪', '🛋', '🛏', '🛌', '🧸', '🖼', '🛍', '🛒', '🎁', '🎈', '🎏', '🎀', '🎊', '🎉', '🎎', '🏮', '🎐', '🧧', '📩', '📨', '📧', '💌', '📥', '📤', '📦', '🏷', '📪', '📫', '📬', '📭', '📮', '📯', '📜', '📃', '📄', '📑', '🧾', '📊', '📈', '📉', '🗒', '🗓', '📆', '📅', '🗑', '📇', '🗃', '🗳', '🗄', '📋', '📁', '📂', '🗂', '🗞', '📰', '📓', '📔', '📒', '📕', '📗', '📘', '📙', '📚', '📖', '🔖', '🧷', '🔗', '📎', '🖇', '📐', '📏', '🧮', '📌', '📍', '🖊', '🖋', '🖌', '🖍', '📝', '✏', '🔍', '🔎', '🔏', '🔐', '🔒', '🔓', '🐶', '🐱', '🐭', '🐹', '🐰', '🦊', '🐻', '🐼', '🐨', '🐯', '🦁', '🐮', '🐷', '🐽', '🐸', '🐵', '🙈', '🙉', '🙊', '🐒', '🐔', '🐧', '🐦', '🐤', '🐣', '🐥', '🦆', '🦅', '🦉', '🦇', '🐺', '🐗', '🐴', '🦄', '🐝', '🐛', '🦋', '🐌', '🐚', '🐞', '🐜', '🦟', '🦗', '🕷', '🕸', '🦂', '🐢', '🐍', '🦎', '🦖', '🦕', '🐙', '🦑', '🦐', '🦞', '🦪', '🦀', '🐡', '🐠', '🐟', '🐬', '🐳', '🐋', '🦈', '🐊', '🐅', '🐆', '🦓', '🦍', '🦧', '🐘', '🦛', '🦏', '🐪', '🐫', '🦒', '🦘', '🐃', '🐂', '🐄', '🐎', '🐖', '🐏', '🦙', '🐑', '🐐', '🦌', '🐕', '🦮', '🐩', '🐈', '🐓', '🦃', '🦚', '🦜', '🦢', '🦩', '🕊', '🐇', '🦥', '🦦', '🦨', '🦝', '🦡', '🐁', '🐀', '🐿', '🦔', '🐾', '🐉', '🐲', '🌵', '🎄', '🌲', '🌳', '🌴', '🌱', '🌿', '🍀', '🎍', '🎋', '🍃', '🍂', '🍁', '🍄', '🌾', '💐', '🌷', '🌹', '🥀', '🌺', '🌸', '🌼', '🌻', '🌞', '🌝', '🌛', '🌜', '🌚', '🌕', '🌖', '🌗', '🌘', '🌑', '🌒', '🌓', '🌔', '🌙', '🌎', '🌍', '🌏', '🪐', '💫', '⭐', '🌟', '⚡', '💥', '🔥', '🌪', '🌈', '🌤', '⛅', '🌥', '🌦', '🌧', '⛈', '🌩', '🌨', '⛄', '🌬', '💨', '💧', '💦', '🌊', '🌫', '🍏', '🍎', '🍐', '🍊', '🍋', '🍌', '🍉', '🍇', '🍓', '🍈', '🍒', '🍑', '🥭', '🍍', '🥥', '🥝', '🍅', '🍆', '🥑', '🥦', '🥬', '🥒', '🌶', '🌽', '🥕', '🧅', '🧄', '🥔', '🍠', '🥐', '🥯', '🍞', '🥖', '🥨', '🧀', '🥚', '🍳', '🥞', '🧇', '🥓', '🥩', '🍗', '🍖', '🌭', '🍔', '🍟', '🍕', '🥪', '🧆', '🥙', '🌮', '🌯', '🥗', '🥘', '🥫', '🍝', '🍜', '🍲', '🍛', '🍣', '🍱', '🥟', '🍤', '🍙', '🍚', '🍘', '🍥', '🥠', '🥮', '🍢', '🍡', '🍧', '🍨', '🍦', '🥧', '🧁', '🍰', '🎂', '🍮', '🍭', '🍬', '🍫', '🍿', '🍩', '🍪', '🌰', '🥜', '🍯', '🧈', '🥛', '🍼', '🍵', '🧉', '🥤', '🧃', '🧊', '🍶', '🍺', '🍻', '🥂', '🍷', '🥃', '🍸', '🍹', '🍾', '🥄', '🍴', '🍽', '🥣', '🥡', '🥢', '🧂', '😀', '😃', '😄', '😁', '😆', '😅', '😂', '🤣', '☺', '😊', '😇', '🙂', '🙃', '😉', '😌', '😍', '🥰', '😘', '😗', '😙', '😚', '😋', '😛', '😝', '😜', '🤪', '🤨', '🧐', '🤓', '😎', '🤩', '🥳', '😏', '😒', '😞', '😔', '😟', '😕', '🙁', '😣', '😖', '😫', '😩', '🥺', '😢', '😭', '😤', '😠', '😡', '🤬', '🤯', '😳', '🥵', '🥶', '😱', '😨', '😰', '😥', '😓', '🤗', '🤔', '🤭', '🥱', '🤫', '🤥', '😶', '😐', '😑', '😬', '🙄', '😯', '😦', '😧', '😮', '😲', '😴', '🤤', '😪', '😵', '🤐', '🥴', '🤢', '🤮', '🤧', '😷', '🤒', '🤕', '🤑', '🤠', '😈', '👿', '👹', '👺', '🤡', '💩', '👻', '💀', '👽', '👾', '🤖', '🎃', '😺', '😸', '😹', '😻', '😼', '😽', '🙀', '😿', '😾', '🤲', '👐', '🙌', '👏', '🤝', '👍', '👎', '👊', '✊', '🤛', '🤜', '🤞', '✌', '🤟', '🤘', '👌', '🤏', '👈', '👉', '👆', '👇', '☝', '✋', '🤚', '🖐', '🖖', '👋', '🤙', '💪', '🦾', '🖕', '✍', '🙏', '🦶', '🦵', '🦿', '💄', '💋', '👄', '🦷', '🦴', '👅', '👂', '🦻', '👃', '👣', '👀', '🧠', '🗣', '👤', '👥', '👶', '👧', '🧒', '👦', '👩', '🧑', '👨', '👱', '🧔', '👵', '🧓', '👴', '👲', '👳', '🧕', '👮', '👷', '💂', '🕵', '👰', '🤵', '👸', '🤴', '🦸', '🦹', '🤶', '🎅', '🧙', '🧝', '🧛', '🧟', '🧞', '🧜', '🧚', '👼', '🤰', '🤱', '🙇', '💁', '🙅', '🙆', '🙋', '🧏', '🤦', '🤷', '🙎', '🙍', '💇', '💆', '🧖', '💅', '🤳', '💃', '🕺', '👯', '🕴', '🚶', '🏃', '🧍', '🧎', '👫', '👭', '👬', '💑', '💏', '👪', '🧶', '🧵', '🧥', '🥼', '🦺', '👚', '👕', '👖', '🩳', '👔', '👗', '👙', '🩱', '👘', '🥻', '🥿', '👠', '👡', '👢', '🩰', '👞', '👟', '🥾', '🩲', '🧦', '🧤', '🧣', '🎩', '🧢', '👒', '🎓', '⛑', '👑', '💍', '👝', '👛', '👜', '💼', '🎒', '🧳', '👓', '🕶', '🥽', '🤿', '🌂', '🦱', '🦰', '🦳', '🦲', '🚗', '🚕', '🚙', '🚌', '🚎', '🏎', '🚓', '🚑', '🚒', '🚐', '🚚', '🚛', '🚜', '🛺', '🛵', '🏍', '🛴', '🚲', '🦼', '🦽', '🚨', '🚔', '🚍', '🚘', '🚖', '🚡', '🚠', '🚟', '🚃', '🚋', '🚞', '🚝', '🚄', '🚅', '🚈', '🚂', '🚆', '🚇', '🚊', '🚉', '🛫', '🛬', '🛩', '💺', '🛰', '🚀', '🛸', '🚁', '🛶', '⛵', '🚤', '🛥', '🛳', '⛴', '🚢', '⛽', '🚧', '🚦', '🚥', '🚏', '🗺', '🗿', '🗽', '🗼', '🏰', '🏯', '🏟', '🎡', '🎢', '🎠', '⛲', '⛱', '🏖', '🏝', '🏜', '🌋', '⛰', '🏔', '🗻', '🏕', '⛺', '🏠', '🏡', '🏘', '🏚', '🏗', '🏭', '🏢', '🏬', '🏣', '🏤', '🏥', '🏦', '🏨', '🏪', '🏫', '🏩', '💒', '🏛', '⛪', '🕌', '🛕', '🕍', '🕋', '⛩', '🛤', '🛣', '🗾', '🎑', '🏞', '🌅', '🌄', '🌠', '🎇', '🎆', '🌇', '🌆', '🏙', '🌃', '🌌', '🌉', '🌁', '🇿', '🇾', '🇽', '🇼', '🇻', '🇺', '🇹', '🇸', '🇷', '🇶', '🇵', '🇴', '🇳', '🇲', '🇱', '🇰', '🇯', '🇮', '🇭', '🇬', '🇫', '🇪', '🇩', '🇨', '🇧', '🇦', '🏳', '🏴', '🏁', '🚩', '🎌', '🏻', '🏼', '🏽', '🏾', '🏿'] + }; // Add all emoji in a dropdown $.extend(true, $.trumbowyg, { - plugins: { - cleanPaste: { - init: function init(trumbowyg) { - trumbowyg.pasteHandlers.push(function (pasteEvent) { - setTimeout(function () { - try { - trumbowyg.saveRange(); - var clipboardData = (pasteEvent.originalEvent || pasteEvent).clipboardData, - pastedData = clipboardData.getData('Text'), - node = trumbowyg.doc.getSelection().focusNode, - range = trumbowyg.doc.createRange(), - cleanedPaste = cleanIt(pastedData.trim()), - newNode = $(cleanedPaste)[0] || trumbowyg.doc.createTextNode(cleanedPaste); - - if (trumbowyg.$ed.html() === '') { - // simply append if there is no content in editor - trumbowyg.$ed[0].appendChild(newNode); - } else { - // insert pasted content behind last focused node - range.setStartAfter(node); - range.setEndAfter(node); - trumbowyg.doc.getSelection().removeAllRanges(); - trumbowyg.doc.getSelection().addRange(range); - trumbowyg.range.insertNode(newNode); - } // now set cursor right after pasted content - - - range = trumbowyg.doc.createRange(); - range.setStartAfter(newNode); - range.setEndAfter(newNode); - trumbowyg.doc.getSelection().removeAllRanges(); - trumbowyg.doc.getSelection().addRange(range); // prevent defaults - - pasteEvent.stopPropagation(); - pasteEvent.preventDefault(); // save new node as focused node - - trumbowyg.saveRange(); - trumbowyg.syncCode(); - trumbowyg.$c.trigger('tbwchange'); - } catch (c) {} - }, 0); - }); + langs: { + // jshint camelcase:false + en: { + emoji: 'Add an emoji' + }, + da: { + emoji: 'Tilføj et humørikon' + }, + de: { + emoji: 'Emoticon einfügen' + }, + et: { + emoji: 'Lisa emotikon' + }, + fr: { + emoji: 'Ajouter un emoji' + }, + hu: { + emoji: 'Emoji beszúrás' + }, + ja: { + emoji: '絵文字の挿入' + }, + ko: { + emoji: '이모지 넣기' + }, + ru: { + emoji: 'Вставить emoji' + }, + tr: { + emoji: 'Emoji ekle' + }, + zh_cn: { + emoji: '添加表情' + } + }, + // jshint camelcase:true + plugins: { + emoji: { + init: function init(trumbowyg) { + trumbowyg.o.plugins.emoji = trumbowyg.o.plugins.emoji || defaultOptions; + var emojiBtnDef = { + dropdown: buildDropdown(trumbowyg) + }; + trumbowyg.addBtnDef('emoji', emojiBtnDef); } } } }); + + function buildDropdown(trumbowyg) { + var dropdown = []; + $.each(trumbowyg.o.plugins.emoji.emojiList, function (i, emoji) { + if ($.isArray(emoji)) { + // Custom emoji behaviour + var emojiCode = emoji[0], + emojiUrl = emoji[1], + emojiHtml = '' + emojiCode + '', + customEmojiBtnName = 'emoji-' + emojiCode.replace(/:/g, ''), + customEmojiBtnDef = { + hasIcon: false, + text: emojiHtml, + fn: function fn() { + trumbowyg.execCmd('insertImage', emojiUrl, false, true); + return true; + } + }; + trumbowyg.addBtnDef(customEmojiBtnName, customEmojiBtnDef); + dropdown.push(customEmojiBtnName); + } else { + // Default behaviour + var btn = emoji.replace(/:/g, ''), + defaultEmojiBtnName = 'emoji-' + btn, + defaultEmojiBtnDef = { + text: emoji, + fn: function fn() { + var encodedEmoji = String.fromCodePoint(emoji.replace('&#', '0')); + trumbowyg.execCmd('insertText', encodedEmoji); + return true; + } + }; + trumbowyg.addBtnDef(defaultEmojiBtnName, defaultEmojiBtnDef); + dropdown.push(defaultEmojiBtnName); + } + }); + return dropdown; + } })(jQuery); -!function (e) { +!function (x) { "use strict"; - e.extend(!0, e.trumbowyg, { - plugins: { - cleanPaste: { - init: function init(t) { - t.pasteHandlers.push(function (r) { - setTimeout(function () { - try { - t.saveRange(); - var a = (r.originalEvent || r).clipboardData.getData("Text"), - n = t.doc.getSelection().focusNode, - c = t.doc.createRange(), - g = ((l = (l = (l = (l = (l = (l = (l = (l = (l = a.trim()).replace(/<[^> ]*/g, function (e) { - return e.toLowerCase(); - }).replace(/<[^>]*>/g, function (e) { - return e.replace(/ [^=]+=/g, function (e) { - return e.toLowerCase(); - }); - }).replace(/<[^>]*>/g, function (e) { - return e.replace(/( [^=]+=)([^"][^ >]*)/g, '$1"$2"'); - })).replace(/)/g, ")/g, ")/g, ")/g, "\s*/g, "")).replace(/ /gi, " ")).replace(/ <\//gi, "]*>/g, function (e) { - return e.replace(/ ([^=]+)="[^"]*"/g, function (e, t) { - return -1 !== ["alt", "href", "src", "title"].indexOf(t) ? e : ""; - }); - })).replace(/<\?xml[^>]*>/g, "")).replace(/<[^ >]+:[^>]*>/g, "")).replace(/<\/[^ >]+:[^>]*>/g, "")).replace(/<(div|span|style|meta|link).*?>/gi, "")), - o = e(g)[0] || t.doc.createTextNode(g); - "" === t.$ed.html() ? t.$ed[0].appendChild(o) : (c.setStartAfter(n), c.setEndAfter(n), t.doc.getSelection().removeAllRanges(), t.doc.getSelection().addRange(c), t.range.insertNode(o)), (c = t.doc.createRange()).setStartAfter(o), c.setEndAfter(o), t.doc.getSelection().removeAllRanges(), t.doc.getSelection().addRange(c), r.stopPropagation(), r.preventDefault(), t.saveRange(), t.syncCode(), t.$c.trigger("tbwchange"); - } catch (e) {} + var F = { + emojiList: ["⁉", "™", "ℹ", "↔", "↕", "↖", "↗", "↘", "↙", "⌨", "☀", "☁", "☂", "☃", "☄", "☑", "☔", "☕", "☘", "☠", "☢", "☣", "☦", "☸", "☹", "♀", "♂", "♈", "♉", "♐", "♑", "♒", "♓", "♠", "♣", "♥", "♦", "♨", "⚒", "⚓", "⚔", "⚕", "⚖", "⚗", "⚙", "✂", "✅", "✈", "✉", "✒", "✔", "✖", "✡", "✨", "✳", "✴", "❄", "❇", "❓", "❔", "❕", "❗", "❣", "❤", "➕", "➖", "➗", "⤴", "⤵", "〰", "㊗", "㊙", "🧡", "💛", "💚", "💙", "💜", "🖤", "🤎", "🤍", "💔", "💕", "💞", "💓", "💗", "💖", "💘", "💝", "💟", "☮", "✝", "☪", "🕉", "🔯", "🕎", "☯", "🛐", "⛎", "♊", "♋", "♌", "♍", "♎", "♏", "🆔", "⚛", "🉑", "📴", "📳", "🈶", "🈚", "🈸", "🈺", "🈷", "🆚", "💮", "🉐", "🈴", "🈵", "🈹", "🈲", "🅰", "🅱", "🆎", "🆑", "🅾", "🆘", "❌", "⭕", "🛑", "⛔", "📛", "🚫", "💯", "💢", "🚷", "🚯", "🚳", "🚱", "🔞", "📵", "🚭", "‼", "🔅", "🔆", "〽", "⚠", "🚸", "🔱", "⚜", "🔰", "♻", "🈯", "💹", "❎", "🌐", "💠", "Ⓜ", "🌀", "💤", "🏧", "🚾", "♿", "🅿", "🈳", "🈂", "🛂", "🛃", "🛄", "🛅", "🚹", "🚺", "🚼", "🚻", "🚮", "🎦", "📶", "🈁", "🔣", "🔤", "🔡", "🔠", "🆖", "🆗", "🆙", "🆒", "🆕", "🆓", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "🔟", "🔢", "#", "*", "⏏", "▶", "⏸", "⏯", "⏹", "⏺", "⏭", "⏮", "⏩", "⏪", "⏫", "⏬", "◀", "🔼", "🔽", "➡", "⬅", "⬆", "⬇", "↪", "↩", "🔀", "🔁", "🔂", "🔄", "🔃", "🎵", "🎶", "♾", "💲", "💱", "©", "®", "➰", "➿", "🔚", "🔙", "🔛", "🔝", "🔜", "🔘", "⚪", "⚫", "🔴", "🔵", "🟤", "🟣", "🟢", "🟡", "🟠", "🔺", "🔻", "🔸", "🔹", "🔶", "🔷", "🔳", "🔲", "▪", "▫", "◾", "◽", "◼", "◻", "⬛", "⬜", "🟧", "🟦", "🟥", "🟫", "🟪", "🟩", "🟨", "🔈", "🔇", "🔉", "🔊", "🔔", "🔕", "📣", "📢", "🗨", "👁", "💬", "💭", "🗯", "🃏", "🎴", "🀄", "🕐", "🕑", "🕒", "🕓", "🕔", "🕕", "🕖", "🕗", "🕘", "🕙", "🕚", "🕛", "🕜", "🕝", "🕞", "🕟", "🕠", "🕡", "🕢", "🕣", "🕤", "🕥", "🕦", "🕧", "⚽", "🏀", "🏈", "⚾", "🥎", "🎾", "🏐", "🏉", "🥏", "🎱", "🏓", "🏸", "🏒", "🏑", "🥍", "🏏", "🥅", "⛳", "🏹", "🎣", "🥊", "🥋", "🎽", "🛹", "🛷", "🪂", "⛸", "🥌", "🎿", "⛷", "🏂", "🏋", "🤼", "🤸", "⛹", "🤺", "🤾", "🏌", "🏇", "🧘", "🏄", "🏊", "🤽", "🚣", "🧗", "🚵", "🚴", "🏆", "🥇", "🥈", "🥉", "🏅", "🎖", "🏵", "🎗", "🎫", "🎟", "🎪", "🤹", "🎭", "🎨", "🎬", "🎤", "🎧", "🎼", "🎹", "🥁", "🎷", "🎺", "🪕", "🎸", "🎻", "🎲", "♟", "🎯", "🪁", "🪀", "🎳", "🎮", "🎰", "🧩", "⌚", "📱", "📲", "💻", "🖥", "🖨", "🖱", "🖲", "🕹", "🗜", "💽", "💾", "💿", "📀", "📼", "📷", "📸", "📹", "🎥", "📽", "🎞", "📞", "☎", "📟", "📠", "📺", "📻", "🎙", "🎚", "🎛", "🧭", "⏱", "⏲", "⏰", "🕰", "⌛", "⏳", "📡", "🔋", "🔌", "💡", "🔦", "🕯", "🧯", "🛢", "💸", "💵", "💴", "💶", "💷", "💰", "💳", "💎", "🧰", "🔧", "🔨", "🛠", "⛏", "🔩", "🧱", "⛓", "🧲", "🔫", "💣", "🧨", "🪓", "🪒", "🔪", "🗡", "🛡", "🚬", "⚰", "⚱", "🏺", "🪔", "🔮", "📿", "🧿", "💈", "🔭", "🔬", "🕳", "🦯", "🩺", "🩹", "💊", "💉", "🩸", "🧬", "🦠", "🧫", "🧪", "🌡", "🪑", "🧹", "🧺", "🧻", "🚽", "🚰", "🚿", "🛁", "🛀", "🧼", "🧽", "🧴", "🛎", "🔑", "🗝", "🚪", "🛋", "🛏", "🛌", "🧸", "🖼", "🛍", "🛒", "🎁", "🎈", "🎏", "🎀", "🎊", "🎉", "🎎", "🏮", "🎐", "🧧", "📩", "📨", "📧", "💌", "📥", "📤", "📦", "🏷", "📪", "📫", "📬", "📭", "📮", "📯", "📜", "📃", "📄", "📑", "🧾", "📊", "📈", "📉", "🗒", "🗓", "📆", "📅", "🗑", "📇", "🗃", "🗳", "🗄", "📋", "📁", "📂", "🗂", "🗞", "📰", "📓", "📔", "📒", "📕", "📗", "📘", "📙", "📚", "📖", "🔖", "🧷", "🔗", "📎", "🖇", "📐", "📏", "🧮", "📌", "📍", "🖊", "🖋", "🖌", "🖍", "📝", "✏", "🔍", "🔎", "🔏", "🔐", "🔒", "🔓", "🐶", "🐱", "🐭", "🐹", "🐰", "🦊", "🐻", "🐼", "🐨", "🐯", "🦁", "🐮", "🐷", "🐽", "🐸", "🐵", "🙈", "🙉", "🙊", "🐒", "🐔", "🐧", "🐦", "🐤", "🐣", "🐥", "🦆", "🦅", "🦉", "🦇", "🐺", "🐗", "🐴", "🦄", "🐝", "🐛", "🦋", "🐌", "🐚", "🐞", "🐜", "🦟", "🦗", "🕷", "🕸", "🦂", "🐢", "🐍", "🦎", "🦖", "🦕", "🐙", "🦑", "🦐", "🦞", "🦪", "🦀", "🐡", "🐠", "🐟", "🐬", "🐳", "🐋", "🦈", "🐊", "🐅", "🐆", "🦓", "🦍", "🦧", "🐘", "🦛", "🦏", "🐪", "🐫", "🦒", "🦘", "🐃", "🐂", "🐄", "🐎", "🐖", "🐏", "🦙", "🐑", "🐐", "🦌", "🐕", "🦮", "🐩", "🐈", "🐓", "🦃", "🦚", "🦜", "🦢", "🦩", "🕊", "🐇", "🦥", "🦦", "🦨", "🦝", "🦡", "🐁", "🐀", "🐿", "🦔", "🐾", "🐉", "🐲", "🌵", "🎄", "🌲", "🌳", "🌴", "🌱", "🌿", "🍀", "🎍", "🎋", "🍃", "🍂", "🍁", "🍄", "🌾", "💐", "🌷", "🌹", "🥀", "🌺", "🌸", "🌼", "🌻", "🌞", "🌝", "🌛", "🌜", "🌚", "🌕", "🌖", "🌗", "🌘", "🌑", "🌒", "🌓", "🌔", "🌙", "🌎", "🌍", "🌏", "🪐", "💫", "⭐", "🌟", "⚡", "💥", "🔥", "🌪", "🌈", "🌤", "⛅", "🌥", "🌦", "🌧", "⛈", "🌩", "🌨", "⛄", "🌬", "💨", "💧", "💦", "🌊", "🌫", "🍏", "🍎", "🍐", "🍊", "🍋", "🍌", "🍉", "🍇", "🍓", "🍈", "🍒", "🍑", "🥭", "🍍", "🥥", "🥝", "🍅", "🍆", "🥑", "🥦", "🥬", "🥒", "🌶", "🌽", "🥕", "🧅", "🧄", "🥔", "🍠", "🥐", "🥯", "🍞", "🥖", "🥨", "🧀", "🥚", "🍳", "🥞", "🧇", "🥓", "🥩", "🍗", "🍖", "🌭", "🍔", "🍟", "🍕", "🥪", "🧆", "🥙", "🌮", "🌯", "🥗", "🥘", "🥫", "🍝", "🍜", "🍲", "🍛", "🍣", "🍱", "🥟", "🍤", "🍙", "🍚", "🍘", "🍥", "🥠", "🥮", "🍢", "🍡", "🍧", "🍨", "🍦", "🥧", "🧁", "🍰", "🎂", "🍮", "🍭", "🍬", "🍫", "🍿", "🍩", "🍪", "🌰", "🥜", "🍯", "🧈", "🥛", "🍼", "🍵", "🧉", "🥤", "🧃", "🧊", "🍶", "🍺", "🍻", "🥂", "🍷", "🥃", "🍸", "🍹", "🍾", "🥄", "🍴", "🍽", "🥣", "🥡", "🥢", "🧂", "😀", "😃", "😄", "😁", "😆", "😅", "😂", "🤣", "☺", "😊", "😇", "🙂", "🙃", "😉", "😌", "😍", "🥰", "😘", "😗", "😙", "😚", "😋", "😛", "😝", "😜", "🤪", "🤨", "🧐", "🤓", "😎", "🤩", "🥳", "😏", "😒", "😞", "😔", "😟", "😕", "🙁", "😣", "😖", "😫", "😩", "🥺", "😢", "😭", "😤", "😠", "😡", "🤬", "🤯", "😳", "🥵", "🥶", "😱", "😨", "😰", "😥", "😓", "🤗", "🤔", "🤭", "🥱", "🤫", "🤥", "😶", "😐", "😑", "😬", "🙄", "😯", "😦", "😧", "😮", "😲", "😴", "🤤", "😪", "😵", "🤐", "🥴", "🤢", "🤮", "🤧", "😷", "🤒", "🤕", "🤑", "🤠", "😈", "👿", "👹", "👺", "🤡", "💩", "👻", "💀", "👽", "👾", "🤖", "🎃", "😺", "😸", "😹", "😻", "😼", "😽", "🙀", "😿", "😾", "🤲", "👐", "🙌", "👏", "🤝", "👍", "👎", "👊", "✊", "🤛", "🤜", "🤞", "✌", "🤟", "🤘", "👌", "🤏", "👈", "👉", "👆", "👇", "☝", "✋", "🤚", "🖐", "🖖", "👋", "🤙", "💪", "🦾", "🖕", "✍", "🙏", "🦶", "🦵", "🦿", "💄", "💋", "👄", "🦷", "🦴", "👅", "👂", "🦻", "👃", "👣", "👀", "🧠", "🗣", "👤", "👥", "👶", "👧", "🧒", "👦", "👩", "🧑", "👨", "👱", "🧔", "👵", "🧓", "👴", "👲", "👳", "🧕", "👮", "👷", "💂", "🕵", "👰", "🤵", "👸", "🤴", "🦸", "🦹", "🤶", "🎅", "🧙", "🧝", "🧛", "🧟", "🧞", "🧜", "🧚", "👼", "🤰", "🤱", "🙇", "💁", "🙅", "🙆", "🙋", "🧏", "🤦", "🤷", "🙎", "🙍", "💇", "💆", "🧖", "💅", "🤳", "💃", "🕺", "👯", "🕴", "🚶", "🏃", "🧍", "🧎", "👫", "👭", "👬", "💑", "💏", "👪", "🧶", "🧵", "🧥", "🥼", "🦺", "👚", "👕", "👖", "🩳", "👔", "👗", "👙", "🩱", "👘", "🥻", "🥿", "👠", "👡", "👢", "🩰", "👞", "👟", "🥾", "🩲", "🧦", "🧤", "🧣", "🎩", "🧢", "👒", "🎓", "⛑", "👑", "💍", "👝", "👛", "👜", "💼", "🎒", "🧳", "👓", "🕶", "🥽", "🤿", "🌂", "🦱", "🦰", "🦳", "🦲", "🚗", "🚕", "🚙", "🚌", "🚎", "🏎", "🚓", "🚑", "🚒", "🚐", "🚚", "🚛", "🚜", "🛺", "🛵", "🏍", "🛴", "🚲", "🦼", "🦽", "🚨", "🚔", "🚍", "🚘", "🚖", "🚡", "🚠", "🚟", "🚃", "🚋", "🚞", "🚝", "🚄", "🚅", "🚈", "🚂", "🚆", "🚇", "🚊", "🚉", "🛫", "🛬", "🛩", "💺", "🛰", "🚀", "🛸", "🚁", "🛶", "⛵", "🚤", "🛥", "🛳", "⛴", "🚢", "⛽", "🚧", "🚦", "🚥", "🚏", "🗺", "🗿", "🗽", "🗼", "🏰", "🏯", "🏟", "🎡", "🎢", "🎠", "⛲", "⛱", "🏖", "🏝", "🏜", "🌋", "⛰", "🏔", "🗻", "🏕", "⛺", "🏠", "🏡", "🏘", "🏚", "🏗", "🏭", "🏢", "🏬", "🏣", "🏤", "🏥", "🏦", "🏨", "🏪", "🏫", "🏩", "💒", "🏛", "⛪", "🕌", "🛕", "🕍", "🕋", "⛩", "🛤", "🛣", "🗾", "🎑", "🏞", "🌅", "🌄", "🌠", "🎇", "🎆", "🌇", "🌆", "🏙", "🌃", "🌌", "🌉", "🌁", "🇿", "🇾", "🇽", "🇼", "🇻", "🇺", "🇹", "🇸", "🇷", "🇶", "🇵", "🇴", "🇳", "🇲", "🇱", "🇰", "🇯", "🇮", "🇭", "🇬", "🇫", "🇪", "🇩", "🇨", "🇧", "🇦", "🏳", "🏴", "🏁", "🚩", "🎌", "🏻", "🏼", "🏽", "🏾", "🏿"] + }; - var l; - }, 0); - }); + function A(F) { + var A = []; + return x.each(F.o.plugins.emoji.emojiList, function (E, B) { + if (x.isArray(B)) { + var C = B[0], + D = B[1], + e = '' + C + '', + i = "emoji-" + C.replace(/:/g, ""), + o = { + hasIcon: !1, + text: e, + fn: function fn() { + return F.execCmd("insertImage", D, !1, !0), !0; + } + }; + F.addBtnDef(i, o), A.push(i); + } else { + var n = "emoji-" + B.replace(/:/g, ""), + t = { + text: B, + fn: function fn() { + var x = String.fromCodePoint(B.replace("&#", "0")); + return F.execCmd("insertText", x), !0; + } + }; + F.addBtnDef(n, t), A.push(n); + } + }), A; + } + + x.extend(!0, x.trumbowyg, { + langs: { + en: { + emoji: "Add an emoji" + }, + da: { + emoji: "Tilføj et humørikon" + }, + de: { + emoji: "Emoticon einfügen" + }, + et: { + emoji: "Lisa emotikon" + }, + fr: { + emoji: "Ajouter un emoji" + }, + hu: { + emoji: "Emoji beszúrás" + }, + ja: { + emoji: "絵文字の挿入" + }, + ko: { + emoji: "이모지 넣기" + }, + ru: { + emoji: "Вставить emoji" + }, + tr: { + emoji: "Emoji ekle" + }, + zh_cn: { + emoji: "添加表情" + } + }, + plugins: { + emoji: { + init: function init(x) { + x.o.plugins.emoji = x.o.plugins.emoji || F; + var E = { + dropdown: A(x) + }; + x.addBtnDef("emoji", E); } } } @@ -971,291 +1161,646 @@ langs: { // jshint camelcase:false en: { - fontFamily: 'Font' - }, - es: { - fontFamily: 'Fuente' + fontsize: 'Font size', + fontsizes: { + 'x-small': 'Extra small', + 'small': 'Small', + 'medium': 'Regular', + 'large': 'Large', + 'x-large': 'Extra large', + 'custom': 'Custom' + }, + fontCustomSize: { + title: 'Custom Font Size', + label: 'Font Size', + value: '48px' + } }, da: { - fontFamily: 'Skrifttype' + fontsize: 'Skriftstørrelse', + fontsizes: { + 'x-small': 'Ekstra lille', + 'small': 'Lille', + 'medium': 'Normal', + 'large': 'Stor', + 'x-large': 'Ekstra stor', + 'custom': 'Brugerdefineret' + } }, de: { - fontFamily: 'Schriftart' - }, - et: { - fontFamily: 'Font' + fontsize: 'Schriftgröße', + fontsizes: { + 'x-small': 'Sehr klein', + 'small': 'Klein', + 'medium': 'Normal', + 'large': 'Groß', + 'x-large': 'Sehr groß', + 'custom': 'Benutzerdefiniert' + }, + fontCustomSize: { + title: 'Benutzerdefinierte Schriftgröße', + label: 'Schriftgröße', + value: '48px' + } + }, + es: { + fontsize: 'Tamaño de Fuente', + fontsizes: { + 'x-small': 'Extra pequeña', + 'small': 'Pegueña', + 'medium': 'Regular', + 'large': 'Grande', + 'x-large': 'Extra Grande', + 'custom': 'Customizada' + }, + fontCustomSize: { + title: 'Tamaño de Fuente Customizada', + label: 'Tamaño de Fuente', + value: '48px' + } + }, + et: { + fontsize: 'Teksti suurus', + fontsizes: { + 'x-small': 'Väga väike', + 'small': 'Väike', + 'medium': 'Tavaline', + 'large': 'Suur', + 'x-large': 'Väga suur', + 'custom': 'Määra ise' + }, + fontCustomSize: { + title: 'Kohandatud teksti suurus', + label: 'Teksti suurus', + value: '48px' + } }, fr: { - fontFamily: 'Police' + fontsize: 'Taille de la police', + fontsizes: { + 'x-small': 'Très petit', + 'small': 'Petit', + 'medium': 'Normal', + 'large': 'Grand', + 'x-large': 'Très grand', + 'custom': 'Taille personnalisée' + }, + fontCustomSize: { + title: 'Taille de police personnalisée', + label: 'Taille de la police', + value: '48px' + } }, hu: { - fontFamily: 'Betűtípus' + fontsize: 'Betű méret', + fontsizes: { + 'x-small': 'Extra kicsi', + 'small': 'Kicsi', + 'medium': 'Normális', + 'large': 'Nagy', + 'x-large': 'Extra nagy', + 'custom': 'Egyedi' + }, + fontCustomSize: { + title: 'Egyedi betű méret', + label: 'Betű méret', + value: '48px' + } + }, + it: { + fontsize: 'Dimensioni del testo', + fontsizes: { + 'x-small': 'Molto piccolo', + 'small': 'piccolo', + 'regular': 'normale', + 'large': 'grande', + 'x-large': 'Molto grande', + 'custom': 'Personalizzato' + }, + fontCustomSize: { + title: 'Dimensioni del testo personalizzato', + label: 'Dimensioni del testo', + value: '48px' + } }, ko: { - fontFamily: '글꼴' + fontsize: '글꼴 크기', + fontsizes: { + 'x-small': '아주 작게', + 'small': '작게', + 'medium': '보통', + 'large': '크게', + 'x-large': '아주 크게', + 'custom': '사용자 지정' + }, + fontCustomSize: { + title: '사용자 지정 글꼴 크기', + label: '글꼴 크기', + value: '48px' + } }, nl: { - fontFamily: 'Lettertype' + fontsize: 'Lettergrootte', + fontsizes: { + 'x-small': 'Extra klein', + 'small': 'Klein', + 'medium': 'Normaal', + 'large': 'Groot', + 'x-large': 'Extra groot', + 'custom': 'Tilpasset' + } }, pt_br: { - fontFamily: 'Fonte' + fontsize: 'Tamanho da fonte', + fontsizes: { + 'x-small': 'Extra pequeno', + 'small': 'Pequeno', + 'regular': 'Médio', + 'large': 'Grande', + 'x-large': 'Extra grande', + 'custom': 'Personalizado' + }, + fontCustomSize: { + title: 'Tamanho de Fonte Personalizado', + label: 'Tamanho de Fonte', + value: '48px' + } }, tr: { - fontFamily: 'Yazı tipi' + fontsize: 'Yazı boyutu', + fontsizes: { + 'x-small': 'Çok küçük', + 'small': 'Küçük', + 'medium': 'Normal', + 'large': 'Büyük', + 'x-large': 'Çok büyük', + 'custom': 'Özel' + }, + fontCustomSize: { + title: 'Özel Yazı Boyutu', + label: 'Yazı Boyutu', + value: '48px' + } }, zh_tw: { - fontFamily: '字體' + fontsize: '字體大小', + fontsizes: { + 'x-small': '最小', + 'small': '小', + 'medium': '中', + 'large': '大', + 'x-large': '最大', + 'custom': '自訂大小' + }, + fontCustomSize: { + title: '自訂義字體大小', + label: '字體大小', + value: '48px' + } } } }); // jshint camelcase:true var defaultOptions = { - fontList: [{ - name: 'Arial', - family: 'Arial, Helvetica, sans-serif' - }, { - name: 'Arial Black', - family: 'Arial Black, Gadget, sans-serif' - }, { - name: 'Comic Sans', - family: 'Comic Sans MS, Textile, cursive, sans-serif' - }, { - name: 'Courier New', - family: 'Courier New, Courier, monospace' - }, { - name: 'Georgia', - family: 'Georgia, serif' - }, { - name: 'Impact', - family: 'Impact, Charcoal, sans-serif' - }, { - name: 'Lucida Console', - family: 'Lucida Console, Monaco, monospace' - }, { - name: 'Lucida Sans', - family: 'Lucida Sans Uncide, Lucida Grande, sans-serif' - }, { - name: 'Palatino', - family: 'Palatino Linotype, Book Antiqua, Palatino, serif' - }, { - name: 'Tahoma', - family: 'Tahoma, Geneva, sans-serif' - }, { - name: 'Times New Roman', - family: 'Times New Roman, Times, serif' - }, { - name: 'Trebuchet', - family: 'Trebuchet MS, Helvetica, sans-serif' - }, { - name: 'Verdana', - family: 'Verdana, Geneva, sans-serif' - }] - }; // Add dropdown with web safe fonts + sizeList: ['x-small', 'small', 'medium', 'large', 'x-large'], + allowCustomSize: true + }; // Add dropdown with font sizes $.extend(true, $.trumbowyg, { plugins: { - fontfamily: { + fontsize: { init: function init(trumbowyg) { - trumbowyg.o.plugins.fontfamily = $.extend({}, defaultOptions, trumbowyg.o.plugins.fontfamily || {}); - trumbowyg.addBtnDef('fontfamily', { - dropdown: buildDropdown(trumbowyg), - hasIcon: false, - text: trumbowyg.lang.fontFamily + trumbowyg.o.plugins.fontsize = $.extend({}, defaultOptions, trumbowyg.o.plugins.fontsize || {}); + trumbowyg.addBtnDef('fontsize', { + dropdown: buildDropdown(trumbowyg) }); } } } }); + function setFontSize(trumbowyg, size) { + trumbowyg.$ed.focus(); + trumbowyg.saveRange(); // Temporary size + + trumbowyg.execCmd('fontSize', '1'); // Find elements that were added and change to with chosen size + + trumbowyg.$ed.find('font[size="1"]').replaceWith(function () { + return $('', { + css: { + 'font-size': size + }, + html: this.innerHTML + }); + }); // Remove and leftover elements + + $(trumbowyg.range.startContainer.parentElement).find('span[style=""]').contents().unwrap(); + trumbowyg.restoreRange(); + trumbowyg.syncCode(); + trumbowyg.$c.trigger('tbwchange'); + } + function buildDropdown(trumbowyg) { var dropdown = []; - $.each(trumbowyg.o.plugins.fontfamily.fontList, function (index, font) { - trumbowyg.addBtnDef('fontfamily_' + index, { - title: '' + font.name + '', + $.each(trumbowyg.o.plugins.fontsize.sizeList, function (index, size) { + trumbowyg.addBtnDef('fontsize_' + size, { + text: '' + (trumbowyg.lang.fontsizes[size] || size) + '', hasIcon: false, fn: function fn() { - trumbowyg.execCmd('fontName', font.family, true); + setFontSize(trumbowyg, size); } }); - dropdown.push('fontfamily_' + index); + dropdown.push('fontsize_' + size); }); - return dropdown; - } -})(jQuery); -!function (a) { - "use strict"; - a.extend(!0, a.trumbowyg, { - langs: { - en: { - fontFamily: "Font" - }, - es: { - fontFamily: "Fuente" + if (trumbowyg.o.plugins.fontsize.allowCustomSize) { + var customSizeButtonName = 'fontsize_custom'; + var customSizeBtnDef = { + fn: function fn() { + trumbowyg.openModalInsert(trumbowyg.lang.fontCustomSize.title, { + size: { + label: trumbowyg.lang.fontCustomSize.label, + value: trumbowyg.lang.fontCustomSize.value + } + }, function (form) { + setFontSize(trumbowyg, form.size); + return true; + }); + }, + text: '' + trumbowyg.lang.fontsizes.custom + '', + hasIcon: false + }; + trumbowyg.addBtnDef(customSizeButtonName, customSizeBtnDef); + dropdown.push(customSizeButtonName); + } + + return dropdown; + } +})(jQuery); +!function (e) { + "use strict"; + + e.extend(!0, e.trumbowyg, { + langs: { + en: { + fontsize: "Font size", + fontsizes: { + "x-small": "Extra small", + small: "Small", + medium: "Regular", + large: "Large", + "x-large": "Extra large", + custom: "Custom" + }, + fontCustomSize: { + title: "Custom Font Size", + label: "Font Size", + value: "48px" + } }, da: { - fontFamily: "Skrifttype" + fontsize: "Skriftstørrelse", + fontsizes: { + "x-small": "Ekstra lille", + small: "Lille", + medium: "Normal", + large: "Stor", + "x-large": "Ekstra stor", + custom: "Brugerdefineret" + } }, de: { - fontFamily: "Schriftart" + fontsize: "Schriftgröße", + fontsizes: { + "x-small": "Sehr klein", + small: "Klein", + medium: "Normal", + large: "Groß", + "x-large": "Sehr groß", + custom: "Benutzerdefiniert" + }, + fontCustomSize: { + title: "Benutzerdefinierte Schriftgröße", + label: "Schriftgröße", + value: "48px" + } + }, + es: { + fontsize: "Tamaño de Fuente", + fontsizes: { + "x-small": "Extra pequeña", + small: "Pegueña", + medium: "Regular", + large: "Grande", + "x-large": "Extra Grande", + custom: "Customizada" + }, + fontCustomSize: { + title: "Tamaño de Fuente Customizada", + label: "Tamaño de Fuente", + value: "48px" + } }, et: { - fontFamily: "Font" + fontsize: "Teksti suurus", + fontsizes: { + "x-small": "Väga väike", + small: "Väike", + medium: "Tavaline", + large: "Suur", + "x-large": "Väga suur", + custom: "Määra ise" + }, + fontCustomSize: { + title: "Kohandatud teksti suurus", + label: "Teksti suurus", + value: "48px" + } }, fr: { - fontFamily: "Police" + fontsize: "Taille de la police", + fontsizes: { + "x-small": "Très petit", + small: "Petit", + medium: "Normal", + large: "Grand", + "x-large": "Très grand", + custom: "Taille personnalisée" + }, + fontCustomSize: { + title: "Taille de police personnalisée", + label: "Taille de la police", + value: "48px" + } }, hu: { - fontFamily: "Betűtípus" + fontsize: "Betű méret", + fontsizes: { + "x-small": "Extra kicsi", + small: "Kicsi", + medium: "Normális", + large: "Nagy", + "x-large": "Extra nagy", + custom: "Egyedi" + }, + fontCustomSize: { + title: "Egyedi betű méret", + label: "Betű méret", + value: "48px" + } + }, + it: { + fontsize: "Dimensioni del testo", + fontsizes: { + "x-small": "Molto piccolo", + small: "piccolo", + regular: "normale", + large: "grande", + "x-large": "Molto grande", + custom: "Personalizzato" + }, + fontCustomSize: { + title: "Dimensioni del testo personalizzato", + label: "Dimensioni del testo", + value: "48px" + } }, ko: { - fontFamily: "글꼴" + fontsize: "글꼴 크기", + fontsizes: { + "x-small": "아주 작게", + small: "작게", + medium: "보통", + large: "크게", + "x-large": "아주 크게", + custom: "사용자 지정" + }, + fontCustomSize: { + title: "사용자 지정 글꼴 크기", + label: "글꼴 크기", + value: "48px" + } }, nl: { - fontFamily: "Lettertype" + fontsize: "Lettergrootte", + fontsizes: { + "x-small": "Extra klein", + small: "Klein", + medium: "Normaal", + large: "Groot", + "x-large": "Extra groot", + custom: "Tilpasset" + } }, pt_br: { - fontFamily: "Fonte" + fontsize: "Tamanho da fonte", + fontsizes: { + "x-small": "Extra pequeno", + small: "Pequeno", + regular: "Médio", + large: "Grande", + "x-large": "Extra grande", + custom: "Personalizado" + }, + fontCustomSize: { + title: "Tamanho de Fonte Personalizado", + label: "Tamanho de Fonte", + value: "48px" + } }, tr: { - fontFamily: "Yazı tipi" + fontsize: "Yazı boyutu", + fontsizes: { + "x-small": "Çok küçük", + small: "Küçük", + medium: "Normal", + large: "Büyük", + "x-large": "Çok büyük", + custom: "Özel" + }, + fontCustomSize: { + title: "Özel Yazı Boyutu", + label: "Yazı Boyutu", + value: "48px" + } }, zh_tw: { - fontFamily: "字體" + fontsize: "字體大小", + fontsizes: { + "x-small": "最小", + small: "小", + medium: "中", + large: "大", + "x-large": "最大", + custom: "自訂大小" + }, + fontCustomSize: { + title: "自訂義字體大小", + label: "字體大小", + value: "48px" + } } } }); - var n = { - fontList: [{ - name: "Arial", - family: "Arial, Helvetica, sans-serif" - }, { - name: "Arial Black", - family: "Arial Black, Gadget, sans-serif" - }, { - name: "Comic Sans", - family: "Comic Sans MS, Textile, cursive, sans-serif" - }, { - name: "Courier New", - family: "Courier New, Courier, monospace" - }, { - name: "Georgia", - family: "Georgia, serif" - }, { - name: "Impact", - family: "Impact, Charcoal, sans-serif" - }, { - name: "Lucida Console", - family: "Lucida Console, Monaco, monospace" - }, { - name: "Lucida Sans", - family: "Lucida Sans Uncide, Lucida Grande, sans-serif" - }, { - name: "Palatino", - family: "Palatino Linotype, Book Antiqua, Palatino, serif" - }, { - name: "Tahoma", - family: "Tahoma, Geneva, sans-serif" - }, { - name: "Times New Roman", - family: "Times New Roman, Times, serif" - }, { - name: "Trebuchet", - family: "Trebuchet MS, Helvetica, sans-serif" - }, { - name: "Verdana", - family: "Verdana, Geneva, sans-serif" - }] + var t = { + sizeList: ["x-small", "small", "medium", "large", "x-large"], + allowCustomSize: !0 }; - function i(n) { - var i = []; - return a.each(n.o.plugins.fontfamily.fontList, function (a, e) { - n.addBtnDef("fontfamily_" + a, { - title: '' + e.name + "", + function l(t, l) { + t.$ed.focus(), t.saveRange(), t.execCmd("fontSize", "1"), t.$ed.find('font[size="1"]').replaceWith(function () { + return e("", { + css: { + "font-size": l + }, + html: this.innerHTML + }); + }), e(t.range.startContainer.parentElement).find('span[style=""]').contents().unwrap(), t.restoreRange(), t.syncCode(), t.$c.trigger("tbwchange"); + } + + function a(t) { + var a = []; + + if (e.each(t.o.plugins.fontsize.sizeList, function (e, s) { + t.addBtnDef("fontsize_" + s, { + text: '' + (t.lang.fontsizes[s] || s) + "", hasIcon: !1, fn: function fn() { - n.execCmd("fontName", e.family, !0); + l(t, s); } - }), i.push("fontfamily_" + a); - }), i; + }), a.push("fontsize_" + s); + }), t.o.plugins.fontsize.allowCustomSize) { + var s = "fontsize_custom", + o = { + fn: function fn() { + t.openModalInsert(t.lang.fontCustomSize.title, { + size: { + label: t.lang.fontCustomSize.label, + value: t.lang.fontCustomSize.value + } + }, function (e) { + return l(t, e.size), !0; + }); + }, + text: '' + t.lang.fontsizes.custom + "", + hasIcon: !1 + }; + t.addBtnDef(s, o), a.push(s); + } + + return a; } - a.extend(!0, a.trumbowyg, { + e.extend(!0, e.trumbowyg, { plugins: { - fontfamily: { - init: function init(e) { - e.o.plugins.fontfamily = a.extend({}, n, e.o.plugins.fontfamily || {}), e.addBtnDef("fontfamily", { - dropdown: i(e), - hasIcon: !1, - text: e.lang.fontFamily + fontsize: { + init: function init(l) { + l.o.plugins.fontsize = e.extend({}, t, l.o.plugins.fontsize || {}), l.addBtnDef("fontsize", { + dropdown: a(l) }); } } } }); }(jQuery); -/* =========================================================== - * trumbowyg.emoji.js v0.1 - * Emoji picker plugin for Trumbowyg - * http://alex-d.github.com/Trumbowyg - * =========================================================== - * Author : Nicolas Pion - * Twitter : @nicolas_pion - */ (function ($) { 'use strict'; - var defaultOptions = { - emojiList: ['⁉', '™', 'ℹ', '↔', '↕', '↖', '↗', '↘', '↙', '⌨', '☀', '☁', '☂', '☃', '☄', '☑', '☔', '☕', '☘', '☠', '☢', '☣', '☦', '☸', '☹', '♀', '♂', '♈', '♉', '♐', '♑', '♒', '♓', '♠', '♣', '♥', '♦', '♨', '⚒', '⚓', '⚔', '⚕', '⚖', '⚗', '⚙', '✂', '✅', '✈', '✉', '✒', '✔', '✖', '✡', '✨', '✳', '✴', '❄', '❇', '❓', '❔', '❕', '❗', '❣', '❤', '➕', '➖', '➗', '⤴', '⤵', '〰', '㊗', '㊙', '🧡', '💛', '💚', '💙', '💜', '🖤', '🤎', '🤍', '💔', '💕', '💞', '💓', '💗', '💖', '💘', '💝', '💟', '☮', '✝', '☪', '🕉', '🔯', '🕎', '☯', '🛐', '⛎', '♊', '♋', '♌', '♍', '♎', '♏', '🆔', '⚛', '🉑', '📴', '📳', '🈶', '🈚', '🈸', '🈺', '🈷', '🆚', '💮', '🉐', '🈴', '🈵', '🈹', '🈲', '🅰', '🅱', '🆎', '🆑', '🅾', '🆘', '❌', '⭕', '🛑', '⛔', '📛', '🚫', '💯', '💢', '🚷', '🚯', '🚳', '🚱', '🔞', '📵', '🚭', '‼', '🔅', '🔆', '〽', '⚠', '🚸', '🔱', '⚜', '🔰', '♻', '🈯', '💹', '❎', '🌐', '💠', 'Ⓜ', '🌀', '💤', '🏧', '🚾', '♿', '🅿', '🈳', '🈂', '🛂', '🛃', '🛄', '🛅', '🚹', '🚺', '🚼', '🚻', '🚮', '🎦', '📶', '🈁', '🔣', '🔤', '🔡', '🔠', '🆖', '🆗', '🆙', '🆒', '🆕', '🆓', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '🔟', '🔢', '#', '*', '⏏', '▶', '⏸', '⏯', '⏹', '⏺', '⏭', '⏮', '⏩', '⏪', '⏫', '⏬', '◀', '🔼', '🔽', '➡', '⬅', '⬆', '⬇', '↪', '↩', '🔀', '🔁', '🔂', '🔄', '🔃', '🎵', '🎶', '♾', '💲', '💱', '©', '®', '➰', '➿', '🔚', '🔙', '🔛', '🔝', '🔜', '🔘', '⚪', '⚫', '🔴', '🔵', '🟤', '🟣', '🟢', '🟡', '🟠', '🔺', '🔻', '🔸', '🔹', '🔶', '🔷', '🔳', '🔲', '▪', '▫', '◾', '◽', '◼', '◻', '⬛', '⬜', '🟧', '🟦', '🟥', '🟫', '🟪', '🟩', '🟨', '🔈', '🔇', '🔉', '🔊', '🔔', '🔕', '📣', '📢', '🗨', '👁', '💬', '💭', '🗯', '🃏', '🎴', '🀄', '🕐', '🕑', '🕒', '🕓', '🕔', '🕕', '🕖', '🕗', '🕘', '🕙', '🕚', '🕛', '🕜', '🕝', '🕞', '🕟', '🕠', '🕡', '🕢', '🕣', '🕤', '🕥', '🕦', '🕧', '⚽', '🏀', '🏈', '⚾', '🥎', '🎾', '🏐', '🏉', '🥏', '🎱', '🏓', '🏸', '🏒', '🏑', '🥍', '🏏', '🥅', '⛳', '🏹', '🎣', '🥊', '🥋', '🎽', '🛹', '🛷', '🪂', '⛸', '🥌', '🎿', '⛷', '🏂', '🏋', '🤼', '🤸', '⛹', '🤺', '🤾', '🏌', '🏇', '🧘', '🏄', '🏊', '🤽', '🚣', '🧗', '🚵', '🚴', '🏆', '🥇', '🥈', '🥉', '🏅', '🎖', '🏵', '🎗', '🎫', '🎟', '🎪', '🤹', '🎭', '🎨', '🎬', '🎤', '🎧', '🎼', '🎹', '🥁', '🎷', '🎺', '🪕', '🎸', '🎻', '🎲', '♟', '🎯', '🪁', '🪀', '🎳', '🎮', '🎰', '🧩', '⌚', '📱', '📲', '💻', '🖥', '🖨', '🖱', '🖲', '🕹', '🗜', '💽', '💾', '💿', '📀', '📼', '📷', '📸', '📹', '🎥', '📽', '🎞', '📞', '☎', '📟', '📠', '📺', '📻', '🎙', '🎚', '🎛', '🧭', '⏱', '⏲', '⏰', '🕰', '⌛', '⏳', '📡', '🔋', '🔌', '💡', '🔦', '🕯', '🧯', '🛢', '💸', '💵', '💴', '💶', '💷', '💰', '💳', '💎', '🧰', '🔧', '🔨', '🛠', '⛏', '🔩', '🧱', '⛓', '🧲', '🔫', '💣', '🧨', '🪓', '🪒', '🔪', '🗡', '🛡', '🚬', '⚰', '⚱', '🏺', '🪔', '🔮', '📿', '🧿', '💈', '🔭', '🔬', '🕳', '🦯', '🩺', '🩹', '💊', '💉', '🩸', '🧬', '🦠', '🧫', '🧪', '🌡', '🪑', '🧹', '🧺', '🧻', '🚽', '🚰', '🚿', '🛁', '🛀', '🧼', '🧽', '🧴', '🛎', '🔑', '🗝', '🚪', '🛋', '🛏', '🛌', '🧸', '🖼', '🛍', '🛒', '🎁', '🎈', '🎏', '🎀', '🎊', '🎉', '🎎', '🏮', '🎐', '🧧', '📩', '📨', '📧', '💌', '📥', '📤', '📦', '🏷', '📪', '📫', '📬', '📭', '📮', '📯', '📜', '📃', '📄', '📑', '🧾', '📊', '📈', '📉', '🗒', '🗓', '📆', '📅', '🗑', '📇', '🗃', '🗳', '🗄', '📋', '📁', '📂', '🗂', '🗞', '📰', '📓', '📔', '📒', '📕', '📗', '📘', '📙', '📚', '📖', '🔖', '🧷', '🔗', '📎', '🖇', '📐', '📏', '🧮', '📌', '📍', '🖊', '🖋', '🖌', '🖍', '📝', '✏', '🔍', '🔎', '🔏', '🔐', '🔒', '🔓', '🐶', '🐱', '🐭', '🐹', '🐰', '🦊', '🐻', '🐼', '🐨', '🐯', '🦁', '🐮', '🐷', '🐽', '🐸', '🐵', '🙈', '🙉', '🙊', '🐒', '🐔', '🐧', '🐦', '🐤', '🐣', '🐥', '🦆', '🦅', '🦉', '🦇', '🐺', '🐗', '🐴', '🦄', '🐝', '🐛', '🦋', '🐌', '🐚', '🐞', '🐜', '🦟', '🦗', '🕷', '🕸', '🦂', '🐢', '🐍', '🦎', '🦖', '🦕', '🐙', '🦑', '🦐', '🦞', '🦪', '🦀', '🐡', '🐠', '🐟', '🐬', '🐳', '🐋', '🦈', '🐊', '🐅', '🐆', '🦓', '🦍', '🦧', '🐘', '🦛', '🦏', '🐪', '🐫', '🦒', '🦘', '🐃', '🐂', '🐄', '🐎', '🐖', '🐏', '🦙', '🐑', '🐐', '🦌', '🐕', '🦮', '🐩', '🐈', '🐓', '🦃', '🦚', '🦜', '🦢', '🦩', '🕊', '🐇', '🦥', '🦦', '🦨', '🦝', '🦡', '🐁', '🐀', '🐿', '🦔', '🐾', '🐉', '🐲', '🌵', '🎄', '🌲', '🌳', '🌴', '🌱', '🌿', '🍀', '🎍', '🎋', '🍃', '🍂', '🍁', '🍄', '🌾', '💐', '🌷', '🌹', '🥀', '🌺', '🌸', '🌼', '🌻', '🌞', '🌝', '🌛', '🌜', '🌚', '🌕', '🌖', '🌗', '🌘', '🌑', '🌒', '🌓', '🌔', '🌙', '🌎', '🌍', '🌏', '🪐', '💫', '⭐', '🌟', '⚡', '💥', '🔥', '🌪', '🌈', '🌤', '⛅', '🌥', '🌦', '🌧', '⛈', '🌩', '🌨', '⛄', '🌬', '💨', '💧', '💦', '🌊', '🌫', '🍏', '🍎', '🍐', '🍊', '🍋', '🍌', '🍉', '🍇', '🍓', '🍈', '🍒', '🍑', '🥭', '🍍', '🥥', '🥝', '🍅', '🍆', '🥑', '🥦', '🥬', '🥒', '🌶', '🌽', '🥕', '🧅', '🧄', '🥔', '🍠', '🥐', '🥯', '🍞', '🥖', '🥨', '🧀', '🥚', '🍳', '🥞', '🧇', '🥓', '🥩', '🍗', '🍖', '🌭', '🍔', '🍟', '🍕', '🥪', '🧆', '🥙', '🌮', '🌯', '🥗', '🥘', '🥫', '🍝', '🍜', '🍲', '🍛', '🍣', '🍱', '🥟', '🍤', '🍙', '🍚', '🍘', '🍥', '🥠', '🥮', '🍢', '🍡', '🍧', '🍨', '🍦', '🥧', '🧁', '🍰', '🎂', '🍮', '🍭', '🍬', '🍫', '🍿', '🍩', '🍪', '🌰', '🥜', '🍯', '🧈', '🥛', '🍼', '🍵', '🧉', '🥤', '🧃', '🧊', '🍶', '🍺', '🍻', '🥂', '🍷', '🥃', '🍸', '🍹', '🍾', '🥄', '🍴', '🍽', '🥣', '🥡', '🥢', '🧂', '😀', '😃', '😄', '😁', '😆', '😅', '😂', '🤣', '☺', '😊', '😇', '🙂', '🙃', '😉', '😌', '😍', '🥰', '😘', '😗', '😙', '😚', '😋', '😛', '😝', '😜', '🤪', '🤨', '🧐', '🤓', '😎', '🤩', '🥳', '😏', '😒', '😞', '😔', '😟', '😕', '🙁', '😣', '😖', '😫', '😩', '🥺', '😢', '😭', '😤', '😠', '😡', '🤬', '🤯', '😳', '🥵', '🥶', '😱', '😨', '😰', '😥', '😓', '🤗', '🤔', '🤭', '🥱', '🤫', '🤥', '😶', '😐', '😑', '😬', '🙄', '😯', '😦', '😧', '😮', '😲', '😴', '🤤', '😪', '😵', '🤐', '🥴', '🤢', '🤮', '🤧', '😷', '🤒', '🤕', '🤑', '🤠', '😈', '👿', '👹', '👺', '🤡', '💩', '👻', '💀', '👽', '👾', '🤖', '🎃', '😺', '😸', '😹', '😻', '😼', '😽', '🙀', '😿', '😾', '🤲', '👐', '🙌', '👏', '🤝', '👍', '👎', '👊', '✊', '🤛', '🤜', '🤞', '✌', '🤟', '🤘', '👌', '🤏', '👈', '👉', '👆', '👇', '☝', '✋', '🤚', '🖐', '🖖', '👋', '🤙', '💪', '🦾', '🖕', '✍', '🙏', '🦶', '🦵', '🦿', '💄', '💋', '👄', '🦷', '🦴', '👅', '👂', '🦻', '👃', '👣', '👀', '🧠', '🗣', '👤', '👥', '👶', '👧', '🧒', '👦', '👩', '🧑', '👨', '👱', '🧔', '👵', '🧓', '👴', '👲', '👳', '🧕', '👮', '👷', '💂', '🕵', '👰', '🤵', '👸', '🤴', '🦸', '🦹', '🤶', '🎅', '🧙', '🧝', '🧛', '🧟', '🧞', '🧜', '🧚', '👼', '🤰', '🤱', '🙇', '💁', '🙅', '🙆', '🙋', '🧏', '🤦', '🤷', '🙎', '🙍', '💇', '💆', '🧖', '💅', '🤳', '💃', '🕺', '👯', '🕴', '🚶', '🏃', '🧍', '🧎', '👫', '👭', '👬', '💑', '💏', '👪', '🧶', '🧵', '🧥', '🥼', '🦺', '👚', '👕', '👖', '🩳', '👔', '👗', '👙', '🩱', '👘', '🥻', '🥿', '👠', '👡', '👢', '🩰', '👞', '👟', '🥾', '🩲', '🧦', '🧤', '🧣', '🎩', '🧢', '👒', '🎓', '⛑', '👑', '💍', '👝', '👛', '👜', '💼', '🎒', '🧳', '👓', '🕶', '🥽', '🤿', '🌂', '🦱', '🦰', '🦳', '🦲', '🚗', '🚕', '🚙', '🚌', '🚎', '🏎', '🚓', '🚑', '🚒', '🚐', '🚚', '🚛', '🚜', '🛺', '🛵', '🏍', '🛴', '🚲', '🦼', '🦽', '🚨', '🚔', '🚍', '🚘', '🚖', '🚡', '🚠', '🚟', '🚃', '🚋', '🚞', '🚝', '🚄', '🚅', '🚈', '🚂', '🚆', '🚇', '🚊', '🚉', '🛫', '🛬', '🛩', '💺', '🛰', '🚀', '🛸', '🚁', '🛶', '⛵', '🚤', '🛥', '🛳', '⛴', '🚢', '⛽', '🚧', '🚦', '🚥', '🚏', '🗺', '🗿', '🗽', '🗼', '🏰', '🏯', '🏟', '🎡', '🎢', '🎠', '⛲', '⛱', '🏖', '🏝', '🏜', '🌋', '⛰', '🏔', '🗻', '🏕', '⛺', '🏠', '🏡', '🏘', '🏚', '🏗', '🏭', '🏢', '🏬', '🏣', '🏤', '🏥', '🏦', '🏨', '🏪', '🏫', '🏩', '💒', '🏛', '⛪', '🕌', '🛕', '🕍', '🕋', '⛩', '🛤', '🛣', '🗾', '🎑', '🏞', '🌅', '🌄', '🌠', '🎇', '🎆', '🌇', '🌆', '🏙', '🌃', '🌌', '🌉', '🌁', '🇿', '🇾', '🇽', '🇼', '🇻', '🇺', '🇹', '🇸', '🇷', '🇶', '🇵', '🇴', '🇳', '🇲', '🇱', '🇰', '🇯', '🇮', '🇭', '🇬', '🇫', '🇪', '🇩', '🇨', '🇧', '🇦', '🏳', '🏴', '🏁', '🚩', '🎌', '🏻', '🏼', '🏽', '🏾', '🏿'] - }; // Add all emoji in a dropdown - $.extend(true, $.trumbowyg, { langs: { // jshint camelcase:false en: { - emoji: 'Add an emoji' + fontFamily: 'Font' + }, + es: { + fontFamily: 'Fuente' }, da: { - emoji: 'Tilføj et humørikon' + fontFamily: 'Skrifttype' }, de: { - emoji: 'Emoticon einfügen' + fontFamily: 'Schriftart' }, et: { - emoji: 'Lisa emotikon' + fontFamily: 'Font' }, fr: { - emoji: 'Ajouter un emoji' + fontFamily: 'Police' }, hu: { - emoji: 'Emoji beszúrás' - }, - ja: { - emoji: '絵文字の挿入' + fontFamily: 'Betűtípus' }, ko: { - emoji: '이모지 넣기' + fontFamily: '글꼴' }, - ru: { - emoji: 'Вставить emoji' + nl: { + fontFamily: 'Lettertype' + }, + pt_br: { + fontFamily: 'Fonte' }, tr: { - emoji: 'Emoji ekle' + fontFamily: 'Yazı tipi' }, - zh_cn: { - emoji: '添加表情' + zh_tw: { + fontFamily: '字體' } - }, - // jshint camelcase:true + } + }); // jshint camelcase:true + + var defaultOptions = { + fontList: [{ + name: 'Arial', + family: 'Arial, Helvetica, sans-serif' + }, { + name: 'Arial Black', + family: 'Arial Black, Gadget, sans-serif' + }, { + name: 'Comic Sans', + family: 'Comic Sans MS, Textile, cursive, sans-serif' + }, { + name: 'Courier New', + family: 'Courier New, Courier, monospace' + }, { + name: 'Georgia', + family: 'Georgia, serif' + }, { + name: 'Impact', + family: 'Impact, Charcoal, sans-serif' + }, { + name: 'Lucida Console', + family: 'Lucida Console, Monaco, monospace' + }, { + name: 'Lucida Sans', + family: 'Lucida Sans Uncide, Lucida Grande, sans-serif' + }, { + name: 'Palatino', + family: 'Palatino Linotype, Book Antiqua, Palatino, serif' + }, { + name: 'Tahoma', + family: 'Tahoma, Geneva, sans-serif' + }, { + name: 'Times New Roman', + family: 'Times New Roman, Times, serif' + }, { + name: 'Trebuchet', + family: 'Trebuchet MS, Helvetica, sans-serif' + }, { + name: 'Verdana', + family: 'Verdana, Geneva, sans-serif' + }] + }; // Add dropdown with web safe fonts + + $.extend(true, $.trumbowyg, { plugins: { - emoji: { + fontfamily: { init: function init(trumbowyg) { - trumbowyg.o.plugins.emoji = trumbowyg.o.plugins.emoji || defaultOptions; - var emojiBtnDef = { - dropdown: buildDropdown(trumbowyg) - }; - trumbowyg.addBtnDef('emoji', emojiBtnDef); + trumbowyg.o.plugins.fontfamily = $.extend({}, defaultOptions, trumbowyg.o.plugins.fontfamily || {}); + trumbowyg.addBtnDef('fontfamily', { + dropdown: buildDropdown(trumbowyg), + hasIcon: false, + text: trumbowyg.lang.fontFamily + }); } } } @@ -1263,123 +1808,127 @@ function buildDropdown(trumbowyg) { var dropdown = []; - $.each(trumbowyg.o.plugins.emoji.emojiList, function (i, emoji) { - if ($.isArray(emoji)) { - // Custom emoji behaviour - var emojiCode = emoji[0], - emojiUrl = emoji[1], - emojiHtml = '' + emojiCode + '', - customEmojiBtnName = 'emoji-' + emojiCode.replace(/:/g, ''), - customEmojiBtnDef = { - hasIcon: false, - text: emojiHtml, - fn: function fn() { - trumbowyg.execCmd('insertImage', emojiUrl, false, true); - return true; - } - }; - trumbowyg.addBtnDef(customEmojiBtnName, customEmojiBtnDef); - dropdown.push(customEmojiBtnName); - } else { - // Default behaviour - var btn = emoji.replace(/:/g, ''), - defaultEmojiBtnName = 'emoji-' + btn, - defaultEmojiBtnDef = { - text: emoji, - fn: function fn() { - var encodedEmoji = String.fromCodePoint(emoji.replace('&#', '0')); - trumbowyg.execCmd('insertText', encodedEmoji); - return true; - } - }; - trumbowyg.addBtnDef(defaultEmojiBtnName, defaultEmojiBtnDef); - dropdown.push(defaultEmojiBtnName); - } + $.each(trumbowyg.o.plugins.fontfamily.fontList, function (index, font) { + trumbowyg.addBtnDef('fontfamily_' + index, { + title: '' + font.name + '', + hasIcon: false, + fn: function fn() { + trumbowyg.execCmd('fontName', font.family, true); + } + }); + dropdown.push('fontfamily_' + index); }); return dropdown; } })(jQuery); -!function (x) { +!function (a) { "use strict"; - var F = { - emojiList: ["⁉", "™", "ℹ", "↔", "↕", "↖", "↗", "↘", "↙", "⌨", "☀", "☁", "☂", "☃", "☄", "☑", "☔", "☕", "☘", "☠", "☢", "☣", "☦", "☸", "☹", "♀", "♂", "♈", "♉", "♐", "♑", "♒", "♓", "♠", "♣", "♥", "♦", "♨", "⚒", "⚓", "⚔", "⚕", "⚖", "⚗", "⚙", "✂", "✅", "✈", "✉", "✒", "✔", "✖", "✡", "✨", "✳", "✴", "❄", "❇", "❓", "❔", "❕", "❗", "❣", "❤", "➕", "➖", "➗", "⤴", "⤵", "〰", "㊗", "㊙", "🧡", "💛", "💚", "💙", "💜", "🖤", "🤎", "🤍", "💔", "💕", "💞", "💓", "💗", "💖", "💘", "💝", "💟", "☮", "✝", "☪", "🕉", "🔯", "🕎", "☯", "🛐", "⛎", "♊", "♋", "♌", "♍", "♎", "♏", "🆔", "⚛", "🉑", "📴", "📳", "🈶", "🈚", "🈸", "🈺", "🈷", "🆚", "💮", "🉐", "🈴", "🈵", "🈹", "🈲", "🅰", "🅱", "🆎", "🆑", "🅾", "🆘", "❌", "⭕", "🛑", "⛔", "📛", "🚫", "💯", "💢", "🚷", "🚯", "🚳", "🚱", "🔞", "📵", "🚭", "‼", "🔅", "🔆", "〽", "⚠", "🚸", "🔱", "⚜", "🔰", "♻", "🈯", "💹", "❎", "🌐", "💠", "Ⓜ", "🌀", "💤", "🏧", "🚾", "♿", "🅿", "🈳", "🈂", "🛂", "🛃", "🛄", "🛅", "🚹", "🚺", "🚼", "🚻", "🚮", "🎦", "📶", "🈁", "🔣", "🔤", "🔡", "🔠", "🆖", "🆗", "🆙", "🆒", "🆕", "🆓", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "🔟", "🔢", "#", "*", "⏏", "▶", "⏸", "⏯", "⏹", "⏺", "⏭", "⏮", "⏩", "⏪", "⏫", "⏬", "◀", "🔼", "🔽", "➡", "⬅", "⬆", "⬇", "↪", "↩", "🔀", "🔁", "🔂", "🔄", "🔃", "🎵", "🎶", "♾", "💲", "💱", "©", "®", "➰", "➿", "🔚", "🔙", "🔛", "🔝", "🔜", "🔘", "⚪", "⚫", "🔴", "🔵", "🟤", "🟣", "🟢", "🟡", "🟠", "🔺", "🔻", "🔸", "🔹", "🔶", "🔷", "🔳", "🔲", "▪", "▫", "◾", "◽", "◼", "◻", "⬛", "⬜", "🟧", "🟦", "🟥", "🟫", "🟪", "🟩", "🟨", "🔈", "🔇", "🔉", "🔊", "🔔", "🔕", "📣", "📢", "🗨", "👁", "💬", "💭", "🗯", "🃏", "🎴", "🀄", "🕐", "🕑", "🕒", "🕓", "🕔", "🕕", "🕖", "🕗", "🕘", "🕙", "🕚", "🕛", "🕜", "🕝", "🕞", "🕟", "🕠", "🕡", "🕢", "🕣", "🕤", "🕥", "🕦", "🕧", "⚽", "🏀", "🏈", "⚾", "🥎", "🎾", "🏐", "🏉", "🥏", "🎱", "🏓", "🏸", "🏒", "🏑", "🥍", "🏏", "🥅", "⛳", "🏹", "🎣", "🥊", "🥋", "🎽", "🛹", "🛷", "🪂", "⛸", "🥌", "🎿", "⛷", "🏂", "🏋", "🤼", "🤸", "⛹", "🤺", "🤾", "🏌", "🏇", "🧘", "🏄", "🏊", "🤽", "🚣", "🧗", "🚵", "🚴", "🏆", "🥇", "🥈", "🥉", "🏅", "🎖", "🏵", "🎗", "🎫", "🎟", "🎪", "🤹", "🎭", "🎨", "🎬", "🎤", "🎧", "🎼", "🎹", "🥁", "🎷", "🎺", "🪕", "🎸", "🎻", "🎲", "♟", "🎯", "🪁", "🪀", "🎳", "🎮", "🎰", "🧩", "⌚", "📱", "📲", "💻", "🖥", "🖨", "🖱", "🖲", "🕹", "🗜", "💽", "💾", "💿", "📀", "📼", "📷", "📸", "📹", "🎥", "📽", "🎞", "📞", "☎", "📟", "📠", "📺", "📻", "🎙", "🎚", "🎛", "🧭", "⏱", "⏲", "⏰", "🕰", "⌛", "⏳", "📡", "🔋", "🔌", "💡", "🔦", "🕯", "🧯", "🛢", "💸", "💵", "💴", "💶", "💷", "💰", "💳", "💎", "🧰", "🔧", "🔨", "🛠", "⛏", "🔩", "🧱", "⛓", "🧲", "🔫", "💣", "🧨", "🪓", "🪒", "🔪", "🗡", "🛡", "🚬", "⚰", "⚱", "🏺", "🪔", "🔮", "📿", "🧿", "💈", "🔭", "🔬", "🕳", "🦯", "🩺", "🩹", "💊", "💉", "🩸", "🧬", "🦠", "🧫", "🧪", "🌡", "🪑", "🧹", "🧺", "🧻", "🚽", "🚰", "🚿", "🛁", "🛀", "🧼", "🧽", "🧴", "🛎", "🔑", "🗝", "🚪", "🛋", "🛏", "🛌", "🧸", "🖼", "🛍", "🛒", "🎁", "🎈", "🎏", "🎀", "🎊", "🎉", "🎎", "🏮", "🎐", "🧧", "📩", "📨", "📧", "💌", "📥", "📤", "📦", "🏷", "📪", "📫", "📬", "📭", "📮", "📯", "📜", "📃", "📄", "📑", "🧾", "📊", "📈", "📉", "🗒", "🗓", "📆", "📅", "🗑", "📇", "🗃", "🗳", "🗄", "📋", "📁", "📂", "🗂", "🗞", "📰", "📓", "📔", "📒", "📕", "📗", "📘", "📙", "📚", "📖", "🔖", "🧷", "🔗", "📎", "🖇", "📐", "📏", "🧮", "📌", "📍", "🖊", "🖋", "🖌", "🖍", "📝", "✏", "🔍", "🔎", "🔏", "🔐", "🔒", "🔓", "🐶", "🐱", "🐭", "🐹", "🐰", "🦊", "🐻", "🐼", "🐨", "🐯", "🦁", "🐮", "🐷", "🐽", "🐸", "🐵", "🙈", "🙉", "🙊", "🐒", "🐔", "🐧", "🐦", "🐤", "🐣", "🐥", "🦆", "🦅", "🦉", "🦇", "🐺", "🐗", "🐴", "🦄", "🐝", "🐛", "🦋", "🐌", "🐚", "🐞", "🐜", "🦟", "🦗", "🕷", "🕸", "🦂", "🐢", "🐍", "🦎", "🦖", "🦕", "🐙", "🦑", "🦐", "🦞", "🦪", "🦀", "🐡", "🐠", "🐟", "🐬", "🐳", "🐋", "🦈", "🐊", "🐅", "🐆", "🦓", "🦍", "🦧", "🐘", "🦛", "🦏", "🐪", "🐫", "🦒", "🦘", "🐃", "🐂", "🐄", "🐎", "🐖", "🐏", "🦙", "🐑", "🐐", "🦌", "🐕", "🦮", "🐩", "🐈", "🐓", "🦃", "🦚", "🦜", "🦢", "🦩", "🕊", "🐇", "🦥", "🦦", "🦨", "🦝", "🦡", "🐁", "🐀", "🐿", "🦔", "🐾", "🐉", "🐲", "🌵", "🎄", "🌲", "🌳", "🌴", "🌱", "🌿", "🍀", "🎍", "🎋", "🍃", "🍂", "🍁", "🍄", "🌾", "💐", "🌷", "🌹", "🥀", "🌺", "🌸", "🌼", "🌻", "🌞", "🌝", "🌛", "🌜", "🌚", "🌕", "🌖", "🌗", "🌘", "🌑", "🌒", "🌓", "🌔", "🌙", "🌎", "🌍", "🌏", "🪐", "💫", "⭐", "🌟", "⚡", "💥", "🔥", "🌪", "🌈", "🌤", "⛅", "🌥", "🌦", "🌧", "⛈", "🌩", "🌨", "⛄", "🌬", "💨", "💧", "💦", "🌊", "🌫", "🍏", "🍎", "🍐", "🍊", "🍋", "🍌", "🍉", "🍇", "🍓", "🍈", "🍒", "🍑", "🥭", "🍍", "🥥", "🥝", "🍅", "🍆", "🥑", "🥦", "🥬", "🥒", "🌶", "🌽", "🥕", "🧅", "🧄", "🥔", "🍠", "🥐", "🥯", "🍞", "🥖", "🥨", "🧀", "🥚", "🍳", "🥞", "🧇", "🥓", "🥩", "🍗", "🍖", "🌭", "🍔", "🍟", "🍕", "🥪", "🧆", "🥙", "🌮", "🌯", "🥗", "🥘", "🥫", "🍝", "🍜", "🍲", "🍛", "🍣", "🍱", "🥟", "🍤", "🍙", "🍚", "🍘", "🍥", "🥠", "🥮", "🍢", "🍡", "🍧", "🍨", "🍦", "🥧", "🧁", "🍰", "🎂", "🍮", "🍭", "🍬", "🍫", "🍿", "🍩", "🍪", "🌰", "🥜", "🍯", "🧈", "🥛", "🍼", "🍵", "🧉", "🥤", "🧃", "🧊", "🍶", "🍺", "🍻", "🥂", "🍷", "🥃", "🍸", "🍹", "🍾", "🥄", "🍴", "🍽", "🥣", "🥡", "🥢", "🧂", "😀", "😃", "😄", "😁", "😆", "😅", "😂", "🤣", "☺", "😊", "😇", "🙂", "🙃", "😉", "😌", "😍", "🥰", "😘", "😗", "😙", "😚", "😋", "😛", "😝", "😜", "🤪", "🤨", "🧐", "🤓", "😎", "🤩", "🥳", "😏", "😒", "😞", "😔", "😟", "😕", "🙁", "😣", "😖", "😫", "😩", "🥺", "😢", "😭", "😤", "😠", "😡", "🤬", "🤯", "😳", "🥵", "🥶", "😱", "😨", "😰", "😥", "😓", "🤗", "🤔", "🤭", "🥱", "🤫", "🤥", "😶", "😐", "😑", "😬", "🙄", "😯", "😦", "😧", "😮", "😲", "😴", "🤤", "😪", "😵", "🤐", "🥴", "🤢", "🤮", "🤧", "😷", "🤒", "🤕", "🤑", "🤠", "😈", "👿", "👹", "👺", "🤡", "💩", "👻", "💀", "👽", "👾", "🤖", "🎃", "😺", "😸", "😹", "😻", "😼", "😽", "🙀", "😿", "😾", "🤲", "👐", "🙌", "👏", "🤝", "👍", "👎", "👊", "✊", "🤛", "🤜", "🤞", "✌", "🤟", "🤘", "👌", "🤏", "👈", "👉", "👆", "👇", "☝", "✋", "🤚", "🖐", "🖖", "👋", "🤙", "💪", "🦾", "🖕", "✍", "🙏", "🦶", "🦵", "🦿", "💄", "💋", "👄", "🦷", "🦴", "👅", "👂", "🦻", "👃", "👣", "👀", "🧠", "🗣", "👤", "👥", "👶", "👧", "🧒", "👦", "👩", "🧑", "👨", "👱", "🧔", "👵", "🧓", "👴", "👲", "👳", "🧕", "👮", "👷", "💂", "🕵", "👰", "🤵", "👸", "🤴", "🦸", "🦹", "🤶", "🎅", "🧙", "🧝", "🧛", "🧟", "🧞", "🧜", "🧚", "👼", "🤰", "🤱", "🙇", "💁", "🙅", "🙆", "🙋", "🧏", "🤦", "🤷", "🙎", "🙍", "💇", "💆", "🧖", "💅", "🤳", "💃", "🕺", "👯", "🕴", "🚶", "🏃", "🧍", "🧎", "👫", "👭", "👬", "💑", "💏", "👪", "🧶", "🧵", "🧥", "🥼", "🦺", "👚", "👕", "👖", "🩳", "👔", "👗", "👙", "🩱", "👘", "🥻", "🥿", "👠", "👡", "👢", "🩰", "👞", "👟", "🥾", "🩲", "🧦", "🧤", "🧣", "🎩", "🧢", "👒", "🎓", "⛑", "👑", "💍", "👝", "👛", "👜", "💼", "🎒", "🧳", "👓", "🕶", "🥽", "🤿", "🌂", "🦱", "🦰", "🦳", "🦲", "🚗", "🚕", "🚙", "🚌", "🚎", "🏎", "🚓", "🚑", "🚒", "🚐", "🚚", "🚛", "🚜", "🛺", "🛵", "🏍", "🛴", "🚲", "🦼", "🦽", "🚨", "🚔", "🚍", "🚘", "🚖", "🚡", "🚠", "🚟", "🚃", "🚋", "🚞", "🚝", "🚄", "🚅", "🚈", "🚂", "🚆", "🚇", "🚊", "🚉", "🛫", "🛬", "🛩", "💺", "🛰", "🚀", "🛸", "🚁", "🛶", "⛵", "🚤", "🛥", "🛳", "⛴", "🚢", "⛽", "🚧", "🚦", "🚥", "🚏", "🗺", "🗿", "🗽", "🗼", "🏰", "🏯", "🏟", "🎡", "🎢", "🎠", "⛲", "⛱", "🏖", "🏝", "🏜", "🌋", "⛰", "🏔", "🗻", "🏕", "⛺", "🏠", "🏡", "🏘", "🏚", "🏗", "🏭", "🏢", "🏬", "🏣", "🏤", "🏥", "🏦", "🏨", "🏪", "🏫", "🏩", "💒", "🏛", "⛪", "🕌", "🛕", "🕍", "🕋", "⛩", "🛤", "🛣", "🗾", "🎑", "🏞", "🌅", "🌄", "🌠", "🎇", "🎆", "🌇", "🌆", "🏙", "🌃", "🌌", "🌉", "🌁", "🇿", "🇾", "🇽", "🇼", "🇻", "🇺", "🇹", "🇸", "🇷", "🇶", "🇵", "🇴", "🇳", "🇲", "🇱", "🇰", "🇯", "🇮", "🇭", "🇬", "🇫", "🇪", "🇩", "🇨", "🇧", "🇦", "🏳", "🏴", "🏁", "🚩", "🎌", "🏻", "🏼", "🏽", "🏾", "🏿"] - }; - - function A(F) { - var A = []; - return x.each(F.o.plugins.emoji.emojiList, function (E, B) { - if (x.isArray(B)) { - var C = B[0], - D = B[1], - e = '' + C + '', - i = "emoji-" + C.replace(/:/g, ""), - o = { - hasIcon: !1, - text: e, - fn: function fn() { - return F.execCmd("insertImage", D, !1, !0), !0; - } - }; - F.addBtnDef(i, o), A.push(i); - } else { - var n = "emoji-" + B.replace(/:/g, ""), - t = { - text: B, - fn: function fn() { - var x = String.fromCodePoint(B.replace("&#", "0")); - return F.execCmd("insertText", x), !0; - } - }; - F.addBtnDef(n, t), A.push(n); - } - }), A; - } - - x.extend(!0, x.trumbowyg, { + a.extend(!0, a.trumbowyg, { langs: { en: { - emoji: "Add an emoji" + fontFamily: "Font" }, - da: { - emoji: "Tilføj et humørikon" + es: { + fontFamily: "Fuente" + }, + da: { + fontFamily: "Skrifttype" }, de: { - emoji: "Emoticon einfügen" + fontFamily: "Schriftart" }, et: { - emoji: "Lisa emotikon" + fontFamily: "Font" }, fr: { - emoji: "Ajouter un emoji" + fontFamily: "Police" }, hu: { - emoji: "Emoji beszúrás" - }, - ja: { - emoji: "絵文字の挿入" + fontFamily: "Betűtípus" }, ko: { - emoji: "이모지 넣기" + fontFamily: "글꼴" }, - ru: { - emoji: "Вставить emoji" + nl: { + fontFamily: "Lettertype" + }, + pt_br: { + fontFamily: "Fonte" }, tr: { - emoji: "Emoji ekle" + fontFamily: "Yazı tipi" }, - zh_cn: { - emoji: "添加表情" + zh_tw: { + fontFamily: "字體" } - }, + } + }); + var n = { + fontList: [{ + name: "Arial", + family: "Arial, Helvetica, sans-serif" + }, { + name: "Arial Black", + family: "Arial Black, Gadget, sans-serif" + }, { + name: "Comic Sans", + family: "Comic Sans MS, Textile, cursive, sans-serif" + }, { + name: "Courier New", + family: "Courier New, Courier, monospace" + }, { + name: "Georgia", + family: "Georgia, serif" + }, { + name: "Impact", + family: "Impact, Charcoal, sans-serif" + }, { + name: "Lucida Console", + family: "Lucida Console, Monaco, monospace" + }, { + name: "Lucida Sans", + family: "Lucida Sans Uncide, Lucida Grande, sans-serif" + }, { + name: "Palatino", + family: "Palatino Linotype, Book Antiqua, Palatino, serif" + }, { + name: "Tahoma", + family: "Tahoma, Geneva, sans-serif" + }, { + name: "Times New Roman", + family: "Times New Roman, Times, serif" + }, { + name: "Trebuchet", + family: "Trebuchet MS, Helvetica, sans-serif" + }, { + name: "Verdana", + family: "Verdana, Geneva, sans-serif" + }] + }; + + function i(n) { + var i = []; + return a.each(n.o.plugins.fontfamily.fontList, function (a, e) { + n.addBtnDef("fontfamily_" + a, { + title: '' + e.name + "", + hasIcon: !1, + fn: function fn() { + n.execCmd("fontName", e.family, !0); + } + }), i.push("fontfamily_" + a); + }), i; + } + + a.extend(!0, a.trumbowyg, { plugins: { - emoji: { - init: function init(x) { - x.o.plugins.emoji = x.o.plugins.emoji || F; - var E = { - dropdown: A(x) - }; - x.addBtnDef("emoji", E); + fontfamily: { + init: function init(e) { + e.o.plugins.fontfamily = a.extend({}, n, e.o.plugins.fontfamily || {}), e.addBtnDef("fontfamily", { + dropdown: i(e), + hasIcon: !1, + text: e.lang.fontFamily + }); } } } @@ -1665,571 +2214,22 @@ dataType: "json", success: function success(i) { n(i, g, l, !0); - }, - error: u - }); - } - }, d = l.o.plugins.giphy.throttleDelay, function () { - var i = this, - e = +new Date(), - n = arguments; - y && e < y + d ? (clearTimeout(f), f = setTimeout(function () { - y = e, h.apply(i, n); - }, d)) : (y = e, h.apply(i, n)); - }); - s.on("input", v), s.focus(), p.one("click", function () { - g.trigger(e); - }); - } - }); - } - } - } - }); -}(jQuery); -(function ($) { - 'use strict'; - - $.extend(true, $.trumbowyg, { - langs: { - // jshint camelcase:false - en: { - fontsize: 'Font size', - fontsizes: { - 'x-small': 'Extra small', - 'small': 'Small', - 'medium': 'Regular', - 'large': 'Large', - 'x-large': 'Extra large', - 'custom': 'Custom' - }, - fontCustomSize: { - title: 'Custom Font Size', - label: 'Font Size', - value: '48px' - } - }, - da: { - fontsize: 'Skriftstørrelse', - fontsizes: { - 'x-small': 'Ekstra lille', - 'small': 'Lille', - 'medium': 'Normal', - 'large': 'Stor', - 'x-large': 'Ekstra stor', - 'custom': 'Brugerdefineret' - } - }, - de: { - fontsize: 'Schriftgröße', - fontsizes: { - 'x-small': 'Sehr klein', - 'small': 'Klein', - 'medium': 'Normal', - 'large': 'Groß', - 'x-large': 'Sehr groß', - 'custom': 'Benutzerdefiniert' - }, - fontCustomSize: { - title: 'Benutzerdefinierte Schriftgröße', - label: 'Schriftgröße', - value: '48px' - } - }, - es: { - fontsize: 'Tamaño de Fuente', - fontsizes: { - 'x-small': 'Extra pequeña', - 'small': 'Pegueña', - 'medium': 'Regular', - 'large': 'Grande', - 'x-large': 'Extra Grande', - 'custom': 'Customizada' - }, - fontCustomSize: { - title: 'Tamaño de Fuente Customizada', - label: 'Tamaño de Fuente', - value: '48px' - } - }, - et: { - fontsize: 'Teksti suurus', - fontsizes: { - 'x-small': 'Väga väike', - 'small': 'Väike', - 'medium': 'Tavaline', - 'large': 'Suur', - 'x-large': 'Väga suur', - 'custom': 'Määra ise' - }, - fontCustomSize: { - title: 'Kohandatud teksti suurus', - label: 'Teksti suurus', - value: '48px' - } - }, - fr: { - fontsize: 'Taille de la police', - fontsizes: { - 'x-small': 'Très petit', - 'small': 'Petit', - 'medium': 'Normal', - 'large': 'Grand', - 'x-large': 'Très grand', - 'custom': 'Taille personnalisée' - }, - fontCustomSize: { - title: 'Taille de police personnalisée', - label: 'Taille de la police', - value: '48px' - } - }, - hu: { - fontsize: 'Betű méret', - fontsizes: { - 'x-small': 'Extra kicsi', - 'small': 'Kicsi', - 'medium': 'Normális', - 'large': 'Nagy', - 'x-large': 'Extra nagy', - 'custom': 'Egyedi' - }, - fontCustomSize: { - title: 'Egyedi betű méret', - label: 'Betű méret', - value: '48px' - } - }, - it: { - fontsize: 'Dimensioni del testo', - fontsizes: { - 'x-small': 'Molto piccolo', - 'small': 'piccolo', - 'regular': 'normale', - 'large': 'grande', - 'x-large': 'Molto grande', - 'custom': 'Personalizzato' - }, - fontCustomSize: { - title: 'Dimensioni del testo personalizzato', - label: 'Dimensioni del testo', - value: '48px' - } - }, - ko: { - fontsize: '글꼴 크기', - fontsizes: { - 'x-small': '아주 작게', - 'small': '작게', - 'medium': '보통', - 'large': '크게', - 'x-large': '아주 크게', - 'custom': '사용자 지정' - }, - fontCustomSize: { - title: '사용자 지정 글꼴 크기', - label: '글꼴 크기', - value: '48px' - } - }, - nl: { - fontsize: 'Lettergrootte', - fontsizes: { - 'x-small': 'Extra klein', - 'small': 'Klein', - 'medium': 'Normaal', - 'large': 'Groot', - 'x-large': 'Extra groot', - 'custom': 'Tilpasset' - } - }, - pt_br: { - fontsize: 'Tamanho da fonte', - fontsizes: { - 'x-small': 'Extra pequeno', - 'small': 'Pequeno', - 'regular': 'Médio', - 'large': 'Grande', - 'x-large': 'Extra grande', - 'custom': 'Personalizado' - }, - fontCustomSize: { - title: 'Tamanho de Fonte Personalizado', - label: 'Tamanho de Fonte', - value: '48px' - } - }, - tr: { - fontsize: 'Yazı boyutu', - fontsizes: { - 'x-small': 'Çok küçük', - 'small': 'Küçük', - 'medium': 'Normal', - 'large': 'Büyük', - 'x-large': 'Çok büyük', - 'custom': 'Özel' - }, - fontCustomSize: { - title: 'Özel Yazı Boyutu', - label: 'Yazı Boyutu', - value: '48px' - } - }, - zh_tw: { - fontsize: '字體大小', - fontsizes: { - 'x-small': '最小', - 'small': '小', - 'medium': '中', - 'large': '大', - 'x-large': '最大', - 'custom': '自訂大小' - }, - fontCustomSize: { - title: '自訂義字體大小', - label: '字體大小', - value: '48px' - } - } - } - }); // jshint camelcase:true - - var defaultOptions = { - sizeList: ['x-small', 'small', 'medium', 'large', 'x-large'], - allowCustomSize: true - }; // Add dropdown with font sizes - - $.extend(true, $.trumbowyg, { - plugins: { - fontsize: { - init: function init(trumbowyg) { - trumbowyg.o.plugins.fontsize = $.extend({}, defaultOptions, trumbowyg.o.plugins.fontsize || {}); - trumbowyg.addBtnDef('fontsize', { - dropdown: buildDropdown(trumbowyg) - }); - } - } - } - }); - - function setFontSize(trumbowyg, size) { - trumbowyg.$ed.focus(); - trumbowyg.saveRange(); // Temporary size - - trumbowyg.execCmd('fontSize', '1'); // Find elements that were added and change to with chosen size - - trumbowyg.$ed.find('font[size="1"]').replaceWith(function () { - return $('', { - css: { - 'font-size': size - }, - html: this.innerHTML - }); - }); // Remove and leftover elements - - $(trumbowyg.range.startContainer.parentElement).find('span[style=""]').contents().unwrap(); - trumbowyg.restoreRange(); - trumbowyg.syncCode(); - trumbowyg.$c.trigger('tbwchange'); - } - - function buildDropdown(trumbowyg) { - var dropdown = []; - $.each(trumbowyg.o.plugins.fontsize.sizeList, function (index, size) { - trumbowyg.addBtnDef('fontsize_' + size, { - text: '' + (trumbowyg.lang.fontsizes[size] || size) + '', - hasIcon: false, - fn: function fn() { - setFontSize(trumbowyg, size); - } - }); - dropdown.push('fontsize_' + size); - }); - - if (trumbowyg.o.plugins.fontsize.allowCustomSize) { - var customSizeButtonName = 'fontsize_custom'; - var customSizeBtnDef = { - fn: function fn() { - trumbowyg.openModalInsert(trumbowyg.lang.fontCustomSize.title, { - size: { - label: trumbowyg.lang.fontCustomSize.label, - value: trumbowyg.lang.fontCustomSize.value - } - }, function (form) { - setFontSize(trumbowyg, form.size); - return true; - }); - }, - text: '' + trumbowyg.lang.fontsizes.custom + '', - hasIcon: false - }; - trumbowyg.addBtnDef(customSizeButtonName, customSizeBtnDef); - dropdown.push(customSizeButtonName); - } - - return dropdown; - } -})(jQuery); -!function (e) { - "use strict"; - - e.extend(!0, e.trumbowyg, { - langs: { - en: { - fontsize: "Font size", - fontsizes: { - "x-small": "Extra small", - small: "Small", - medium: "Regular", - large: "Large", - "x-large": "Extra large", - custom: "Custom" - }, - fontCustomSize: { - title: "Custom Font Size", - label: "Font Size", - value: "48px" - } - }, - da: { - fontsize: "Skriftstørrelse", - fontsizes: { - "x-small": "Ekstra lille", - small: "Lille", - medium: "Normal", - large: "Stor", - "x-large": "Ekstra stor", - custom: "Brugerdefineret" - } - }, - de: { - fontsize: "Schriftgröße", - fontsizes: { - "x-small": "Sehr klein", - small: "Klein", - medium: "Normal", - large: "Groß", - "x-large": "Sehr groß", - custom: "Benutzerdefiniert" - }, - fontCustomSize: { - title: "Benutzerdefinierte Schriftgröße", - label: "Schriftgröße", - value: "48px" - } - }, - es: { - fontsize: "Tamaño de Fuente", - fontsizes: { - "x-small": "Extra pequeña", - small: "Pegueña", - medium: "Regular", - large: "Grande", - "x-large": "Extra Grande", - custom: "Customizada" - }, - fontCustomSize: { - title: "Tamaño de Fuente Customizada", - label: "Tamaño de Fuente", - value: "48px" - } - }, - et: { - fontsize: "Teksti suurus", - fontsizes: { - "x-small": "Väga väike", - small: "Väike", - medium: "Tavaline", - large: "Suur", - "x-large": "Väga suur", - custom: "Määra ise" - }, - fontCustomSize: { - title: "Kohandatud teksti suurus", - label: "Teksti suurus", - value: "48px" - } - }, - fr: { - fontsize: "Taille de la police", - fontsizes: { - "x-small": "Très petit", - small: "Petit", - medium: "Normal", - large: "Grand", - "x-large": "Très grand", - custom: "Taille personnalisée" - }, - fontCustomSize: { - title: "Taille de police personnalisée", - label: "Taille de la police", - value: "48px" - } - }, - hu: { - fontsize: "Betű méret", - fontsizes: { - "x-small": "Extra kicsi", - small: "Kicsi", - medium: "Normális", - large: "Nagy", - "x-large": "Extra nagy", - custom: "Egyedi" - }, - fontCustomSize: { - title: "Egyedi betű méret", - label: "Betű méret", - value: "48px" - } - }, - it: { - fontsize: "Dimensioni del testo", - fontsizes: { - "x-small": "Molto piccolo", - small: "piccolo", - regular: "normale", - large: "grande", - "x-large": "Molto grande", - custom: "Personalizzato" - }, - fontCustomSize: { - title: "Dimensioni del testo personalizzato", - label: "Dimensioni del testo", - value: "48px" - } - }, - ko: { - fontsize: "글꼴 크기", - fontsizes: { - "x-small": "아주 작게", - small: "작게", - medium: "보통", - large: "크게", - "x-large": "아주 크게", - custom: "사용자 지정" - }, - fontCustomSize: { - title: "사용자 지정 글꼴 크기", - label: "글꼴 크기", - value: "48px" - } - }, - nl: { - fontsize: "Lettergrootte", - fontsizes: { - "x-small": "Extra klein", - small: "Klein", - medium: "Normaal", - large: "Groot", - "x-large": "Extra groot", - custom: "Tilpasset" - } - }, - pt_br: { - fontsize: "Tamanho da fonte", - fontsizes: { - "x-small": "Extra pequeno", - small: "Pequeno", - regular: "Médio", - large: "Grande", - "x-large": "Extra grande", - custom: "Personalizado" - }, - fontCustomSize: { - title: "Tamanho de Fonte Personalizado", - label: "Tamanho de Fonte", - value: "48px" - } - }, - tr: { - fontsize: "Yazı boyutu", - fontsizes: { - "x-small": "Çok küçük", - small: "Küçük", - medium: "Normal", - large: "Büyük", - "x-large": "Çok büyük", - custom: "Özel" - }, - fontCustomSize: { - title: "Özel Yazı Boyutu", - label: "Yazı Boyutu", - value: "48px" - } - }, - zh_tw: { - fontsize: "字體大小", - fontsizes: { - "x-small": "最小", - small: "小", - medium: "中", - large: "大", - "x-large": "最大", - custom: "自訂大小" - }, - fontCustomSize: { - title: "自訂義字體大小", - label: "字體大小", - value: "48px" - } - } - } - }); - var t = { - sizeList: ["x-small", "small", "medium", "large", "x-large"], - allowCustomSize: !0 - }; - - function l(t, l) { - t.$ed.focus(), t.saveRange(), t.execCmd("fontSize", "1"), t.$ed.find('font[size="1"]').replaceWith(function () { - return e("", { - css: { - "font-size": l - }, - html: this.innerHTML - }); - }), e(t.range.startContainer.parentElement).find('span[style=""]').contents().unwrap(), t.restoreRange(), t.syncCode(), t.$c.trigger("tbwchange"); - } - - function a(t) { - var a = []; - - if (e.each(t.o.plugins.fontsize.sizeList, function (e, s) { - t.addBtnDef("fontsize_" + s, { - text: '' + (t.lang.fontsizes[s] || s) + "", - hasIcon: !1, - fn: function fn() { - l(t, s); - } - }), a.push("fontsize_" + s); - }), t.o.plugins.fontsize.allowCustomSize) { - var s = "fontsize_custom", - o = { - fn: function fn() { - t.openModalInsert(t.lang.fontCustomSize.title, { - size: { - label: t.lang.fontCustomSize.label, - value: t.lang.fontCustomSize.value - } - }, function (e) { - return l(t, e.size), !0; - }); - }, - text: '' + t.lang.fontsizes.custom + "", - hasIcon: !1 - }; - t.addBtnDef(s, o), a.push(s); - } - - return a; - } - - e.extend(!0, e.trumbowyg, { - plugins: { - fontsize: { - init: function init(l) { - l.o.plugins.fontsize = e.extend({}, t, l.o.plugins.fontsize || {}), l.addBtnDef("fontsize", { - dropdown: a(l) + }, + error: u + }); + } + }, d = l.o.plugins.giphy.throttleDelay, function () { + var i = this, + e = +new Date(), + n = arguments; + y && e < y + d ? (clearTimeout(f), f = setTimeout(function () { + y = e, h.apply(i, n); + }, d)) : (y = e, h.apply(i, n)); + }); + s.on("input", v), s.focus(), p.one("click", function () { + g.trigger(e); + }); + } }); } } @@ -3112,271 +3112,82 @@ lineheight: "줄 간격", lineheights: { .9: "좁게", - normal: "보통", - 1.5: "넓게", - "2.0": "아주 넓게" - } - }, - nl: { - lineheight: "Regelhoogte", - lineheights: { - .9: "Klein", - normal: "Normaal", - 1.5: "Groot", - "2.0": "Extra groot" - } - }, - pt_br: { - lineheight: "Altura de linha", - lineheights: { - .9: "Pequena", - normal: "Regular", - 1.5: "Grande", - "2.0": "Extra grande" - } - }, - tr: { - lineheight: "Satır yüksekliği", - lineheights: { - .9: "Küçük", - normal: "Normal", - 1.5: "Büyük", - "2.0": "Çok Büyük" - } - }, - zh_tw: { - lineheight: "文字間距", - lineheights: { - .9: "小", - normal: "正常", - 1.5: "大", - "2.0": "特大" - } - } - } - }); - var n = { - sizeList: ["0.9", "normal", "1.5", "2.0"] - }; - - function i(n) { - var i = []; - return e.each(n.o.plugins.lineheight.sizeList, function (t, l) { - n.addBtnDef("lineheight_" + l, { - text: n.lang.lineheights[l] || l, - hasIcon: !1, - fn: function fn() { - if (n.saveRange(), "" !== n.getRangeText().replace(/\s/g, "")) try { - var i = function () { - var e, - n = null; - window.getSelection ? (e = window.getSelection()).rangeCount && 1 !== (n = e.getRangeAt(0).commonAncestorContainer).nodeType && (n = n.parentNode) : (e = document.selection) && "Control" !== e.type && (n = e.createRange().parentElement()); - return n; - }(); - - e(i).css("lineHeight", l); - } catch (e) {} - } - }), i.push("lineheight_" + l); - }), i; - } - - e.extend(!0, e.trumbowyg, { - plugins: { - lineheight: { - init: function init(t) { - t.o.plugins.lineheight = e.extend({}, n, t.o.plugins.lineheight || {}), t.addBtnDef("lineheight", { - dropdown: i(t) - }); - } - } - } - }); -}(jQuery); -/* =========================================================== - * trumbowyg.mention.js v0.1 - * Mention plugin for Trumbowyg - * http://alex-d.github.com/Trumbowyg - * =========================================================== - * Author : Viper - * Github: https://github.com/Globulopolis - * Website: http://киноархив.com - */ -(function ($) { - 'use strict'; - - var defaultOptions = { - source: [], - formatDropdownItem: formatDropdownItem, - formatResult: formatResult - }; - $.extend(true, $.trumbowyg, { - langs: { - // jshint camelcase:false - en: { - mention: 'Mention' - }, - da: { - mention: 'Nævn' - }, - et: { - mention: 'Maini' - }, - fr: { - mention: 'Mentionner' - }, - hu: { - mention: 'Említ' - }, - ko: { - mention: '언급' - }, - pt_br: { - mention: 'Menção' - }, - ru: { - mention: 'Упомянуть' - }, - tr: { - mention: 'Bahset' - }, - zh_tw: { - mention: '標記' - } // jshint camelcase:true - - }, - plugins: { - mention: { - init: function init(trumbowyg) { - trumbowyg.o.plugins.mention = $.extend(true, {}, defaultOptions, trumbowyg.o.plugins.mention || {}); - var btnDef = { - dropdown: buildDropdown(trumbowyg.o.plugins.mention.source, trumbowyg) - }; - trumbowyg.addBtnDef('mention', btnDef); - } - } - } - }); - /** - * Build dropdown list - * - * @param {Array} items Items - * @param {object} trumbowyg Editor - * - * @return {Array} - */ - - function buildDropdown(items, trumbowyg) { - var dropdown = []; - $.each(items, function (i, item) { - var btn = 'mention-' + i, - btnDef = { - hasIcon: false, - text: trumbowyg.o.plugins.mention.formatDropdownItem(item), - fn: function fn() { - trumbowyg.execCmd('insertHTML', trumbowyg.o.plugins.mention.formatResult(item)); - return true; - } - }; - trumbowyg.addBtnDef(btn, btnDef); - dropdown.push(btn); - }); - return dropdown; - } - /** - * Format item in dropdown. - * - * @param {object} item Item object. - * - * @return {string} - */ - - - function formatDropdownItem(item) { - return item.login; - } - /** - * Format result pasted in editor. - * - * @param {object} item Item object. - * - * @return {string} - */ - - - function formatResult(item) { - return '@' + item.login + ' '; - } -})(jQuery); -!function (n) { - "use strict"; - - var t = { - source: [], - formatDropdownItem: function formatDropdownItem(n) { - return n.login; - }, - formatResult: function formatResult(n) { - return "@" + n.login + " "; - } - }; - - function o(t, o) { - var e = []; - return n.each(t, function (n, t) { - var i = "mention-" + n, - r = { - hasIcon: !1, - text: o.o.plugins.mention.formatDropdownItem(t), - fn: function fn() { - return o.execCmd("insertHTML", o.o.plugins.mention.formatResult(t)), !0; - } - }; - o.addBtnDef(i, r), e.push(i); - }), e; - } - - n.extend(!0, n.trumbowyg, { - langs: { - en: { - mention: "Mention" - }, - da: { - mention: "Nævn" - }, - et: { - mention: "Maini" - }, - fr: { - mention: "Mentionner" - }, - hu: { - mention: "Említ" + normal: "보통", + 1.5: "넓게", + "2.0": "아주 넓게" + } }, - ko: { - mention: "언급" + nl: { + lineheight: "Regelhoogte", + lineheights: { + .9: "Klein", + normal: "Normaal", + 1.5: "Groot", + "2.0": "Extra groot" + } }, pt_br: { - mention: "Menção" - }, - ru: { - mention: "Упомянуть" + lineheight: "Altura de linha", + lineheights: { + .9: "Pequena", + normal: "Regular", + 1.5: "Grande", + "2.0": "Extra grande" + } }, tr: { - mention: "Bahset" + lineheight: "Satır yüksekliği", + lineheights: { + .9: "Küçük", + normal: "Normal", + 1.5: "Büyük", + "2.0": "Çok Büyük" + } }, zh_tw: { - mention: "標記" + lineheight: "文字間距", + lineheights: { + .9: "小", + normal: "正常", + 1.5: "大", + "2.0": "特大" + } } - }, + } + }); + var n = { + sizeList: ["0.9", "normal", "1.5", "2.0"] + }; + + function i(n) { + var i = []; + return e.each(n.o.plugins.lineheight.sizeList, function (t, l) { + n.addBtnDef("lineheight_" + l, { + text: n.lang.lineheights[l] || l, + hasIcon: !1, + fn: function fn() { + if (n.saveRange(), "" !== n.getRangeText().replace(/\s/g, "")) try { + var i = function () { + var e, + n = null; + window.getSelection ? (e = window.getSelection()).rangeCount && 1 !== (n = e.getRangeAt(0).commonAncestorContainer).nodeType && (n = n.parentNode) : (e = document.selection) && "Control" !== e.type && (n = e.createRange().parentElement()); + return n; + }(); + + e(i).css("lineHeight", l); + } catch (e) {} + } + }), i.push("lineheight_" + l); + }), i; + } + + e.extend(!0, e.trumbowyg, { plugins: { - mention: { - init: function init(e) { - e.o.plugins.mention = n.extend(!0, {}, t, e.o.plugins.mention || {}); - var i = { - dropdown: o(e.o.plugins.mention.source, e) - }; - e.addBtnDef("mention", i); + lineheight: { + init: function init(t) { + t.o.plugins.lineheight = e.extend({}, n, t.o.plugins.lineheight || {}), t.addBtnDef("lineheight", { + dropdown: i(t) + }); } } } @@ -3596,7 +3407,196 @@ n.formulas.value = l.getRangeText(), n.inline.attributes.checked = !0, l.openModalInsert(l.lang.mathml, n, a); } }; - l.addBtnDef("mathml", n); + l.addBtnDef("mathml", n); + } + } + } + }); +}(jQuery); +/* =========================================================== + * trumbowyg.mention.js v0.1 + * Mention plugin for Trumbowyg + * http://alex-d.github.com/Trumbowyg + * =========================================================== + * Author : Viper + * Github: https://github.com/Globulopolis + * Website: http://киноархив.com + */ +(function ($) { + 'use strict'; + + var defaultOptions = { + source: [], + formatDropdownItem: formatDropdownItem, + formatResult: formatResult + }; + $.extend(true, $.trumbowyg, { + langs: { + // jshint camelcase:false + en: { + mention: 'Mention' + }, + da: { + mention: 'Nævn' + }, + et: { + mention: 'Maini' + }, + fr: { + mention: 'Mentionner' + }, + hu: { + mention: 'Említ' + }, + ko: { + mention: '언급' + }, + pt_br: { + mention: 'Menção' + }, + ru: { + mention: 'Упомянуть' + }, + tr: { + mention: 'Bahset' + }, + zh_tw: { + mention: '標記' + } // jshint camelcase:true + + }, + plugins: { + mention: { + init: function init(trumbowyg) { + trumbowyg.o.plugins.mention = $.extend(true, {}, defaultOptions, trumbowyg.o.plugins.mention || {}); + var btnDef = { + dropdown: buildDropdown(trumbowyg.o.plugins.mention.source, trumbowyg) + }; + trumbowyg.addBtnDef('mention', btnDef); + } + } + } + }); + /** + * Build dropdown list + * + * @param {Array} items Items + * @param {object} trumbowyg Editor + * + * @return {Array} + */ + + function buildDropdown(items, trumbowyg) { + var dropdown = []; + $.each(items, function (i, item) { + var btn = 'mention-' + i, + btnDef = { + hasIcon: false, + text: trumbowyg.o.plugins.mention.formatDropdownItem(item), + fn: function fn() { + trumbowyg.execCmd('insertHTML', trumbowyg.o.plugins.mention.formatResult(item)); + return true; + } + }; + trumbowyg.addBtnDef(btn, btnDef); + dropdown.push(btn); + }); + return dropdown; + } + /** + * Format item in dropdown. + * + * @param {object} item Item object. + * + * @return {string} + */ + + + function formatDropdownItem(item) { + return item.login; + } + /** + * Format result pasted in editor. + * + * @param {object} item Item object. + * + * @return {string} + */ + + + function formatResult(item) { + return '@' + item.login + ' '; + } +})(jQuery); +!function (n) { + "use strict"; + + var t = { + source: [], + formatDropdownItem: function formatDropdownItem(n) { + return n.login; + }, + formatResult: function formatResult(n) { + return "@" + n.login + " "; + } + }; + + function o(t, o) { + var e = []; + return n.each(t, function (n, t) { + var i = "mention-" + n, + r = { + hasIcon: !1, + text: o.o.plugins.mention.formatDropdownItem(t), + fn: function fn() { + return o.execCmd("insertHTML", o.o.plugins.mention.formatResult(t)), !0; + } + }; + o.addBtnDef(i, r), e.push(i); + }), e; + } + + n.extend(!0, n.trumbowyg, { + langs: { + en: { + mention: "Mention" + }, + da: { + mention: "Nævn" + }, + et: { + mention: "Maini" + }, + fr: { + mention: "Mentionner" + }, + hu: { + mention: "Említ" + }, + ko: { + mention: "언급" + }, + pt_br: { + mention: "Menção" + }, + ru: { + mention: "Упомянуть" + }, + tr: { + mention: "Bahset" + }, + zh_tw: { + mention: "標記" + } + }, + plugins: { + mention: { + init: function init(e) { + e.o.plugins.mention = n.extend(!0, {}, t, e.o.plugins.mention || {}); + var i = { + dropdown: o(e.o.plugins.mention.source, e) + }; + e.addBtnDef("mention", i); } } } @@ -3879,150 +3879,6 @@ } }); }(jQuery); -/* =========================================================== - * trumbowyg.pasteembed.js v1.0 - * Url paste to iframe with noembed. Plugin for Trumbowyg - * http://alex-d.github.com/Trumbowyg - * =========================================================== - * Author : Max Seelig - * Facebook : https://facebook.com/maxse - * Website : https://www.maxmade.nl/ - */ -(function ($) { - 'use strict'; - - var defaultOptions = { - enabled: true, - endpoints: ['https://noembed.com/embed?nowrap=on', 'https://api.maxmade.nl/url2iframe/embed'] - }; - $.extend(true, $.trumbowyg, { - plugins: { - pasteEmbed: { - init: function init(trumbowyg) { - trumbowyg.o.plugins.pasteEmbed = $.extend(true, {}, defaultOptions, trumbowyg.o.plugins.pasteEmbed || {}); - - if (!trumbowyg.o.plugins.pasteEmbed.enabled) { - return; - } - - trumbowyg.pasteHandlers.push(function (pasteEvent) { - try { - var clipboardData = (pasteEvent.originalEvent || pasteEvent).clipboardData, - pastedData = clipboardData.getData('Text'), - endpoints = trumbowyg.o.plugins.pasteEmbed.endpoints, - request = null; - - if (pastedData.startsWith('http')) { - pasteEvent.stopPropagation(); - pasteEvent.preventDefault(); - var query = { - url: pastedData.trim() - }; - var content = ''; - var index = 0; - - if (request && request.transport) { - request.transport.abort(); - } - - request = $.ajax({ - crossOrigin: true, - url: endpoints[index], - type: 'GET', - data: query, - cache: false, - dataType: 'jsonp', - success: function success(res) { - if (res.html) { - index = 0; - content = res.html; - } else { - index += 1; - } - }, - error: function error() { - index += 1; - }, - complete: function complete() { - if (content.length === 0 && index < endpoints.length - 1) { - this.url = endpoints[index]; - this.data = query; - $.ajax(this); - } - - if (index === endpoints.length - 1) { - content = $('', { - href: pastedData, - text: pastedData - }).prop('outerHTML'); - } - - if (content.length > 0) { - index = 0; - trumbowyg.execCmd('insertHTML', content); - } - } - }); - } - } catch (c) {} - }); - } - } - } - }); -})(jQuery); -!function (t) { - "use strict"; - - var e = { - enabled: !0, - endpoints: ["https://noembed.com/embed?nowrap=on", "https://api.maxmade.nl/url2iframe/embed"] - }; - t.extend(!0, t.trumbowyg, { - plugins: { - pasteEmbed: { - init: function init(n) { - n.o.plugins.pasteEmbed = t.extend(!0, {}, e, n.o.plugins.pasteEmbed || {}), n.o.plugins.pasteEmbed.enabled && n.pasteHandlers.push(function (e) { - try { - var a = (e.originalEvent || e).clipboardData.getData("Text"), - r = n.o.plugins.pasteEmbed.endpoints, - s = null; - - if (a.startsWith("http")) { - e.stopPropagation(), e.preventDefault(); - var i = { - url: a.trim() - }, - o = "", - p = 0; - s && s.transport && s.transport.abort(), s = t.ajax({ - crossOrigin: !0, - url: r[p], - type: "GET", - data: i, - cache: !1, - dataType: "jsonp", - success: function success(t) { - t.html ? (p = 0, o = t.html) : p += 1; - }, - error: function error() { - p += 1; - }, - complete: function complete() { - 0 === o.length && p < r.length - 1 && (this.url = r[p], this.data = i, t.ajax(this)), p === r.length - 1 && (o = t("", { - href: a, - text: a - }).prop("outerHTML")), o.length > 0 && (p = 0, n.execCmd("insertHTML", o)); - } - }); - } - } catch (t) {} - }); - } - } - } - }); -}(jQuery); /* =========================================================== * trumbowyg.preformatted.js v1.0 * Preformatted plugin for Trumbowyg @@ -4670,128 +4526,144 @@ }); }(jQuery); /* =========================================================== - * trumbowyg.specialchars.js v0.99 - * Unicode characters picker plugin for Trumbowyg + * trumbowyg.pasteembed.js v1.0 + * Url paste to iframe with noembed. Plugin for Trumbowyg * http://alex-d.github.com/Trumbowyg * =========================================================== - * Author : Renaud Hoyoux (geektortoise) -*/ + * Author : Max Seelig + * Facebook : https://facebook.com/maxse + * Website : https://www.maxmade.nl/ + */ (function ($) { 'use strict'; var defaultOptions = { - symbolList: [// currencies - '0024', '20AC', '00A3', '00A2', '00A5', '00A4', '2030', null, // legal signs - '00A9', '00AE', '2122', null, // textual sign - '00A7', '00B6', '00C6', '00E6', '0152', '0153', null, '2022', '25CF', '2023', '25B6', '2B29', '25C6', null, //maths - '00B1', '00D7', '00F7', '21D2', '21D4', '220F', '2211', '2243', '2264', '2265'] + enabled: true, + endpoints: ['https://noembed.com/embed?nowrap=on', 'https://api.maxmade.nl/url2iframe/embed'] }; $.extend(true, $.trumbowyg, { - langs: { - en: { - specialChars: 'Special characters' - }, - et: { - specialChars: 'Erimärgid' - }, - fr: { - specialChars: 'Caractères spéciaux' - }, - hu: { - specialChars: 'Speciális karakterek' - }, - ko: { - specialChars: '특수문자' - } - }, plugins: { - specialchars: { + pasteEmbed: { init: function init(trumbowyg) { - trumbowyg.o.plugins.specialchars = trumbowyg.o.plugins.specialchars || defaultOptions; - var specialCharsBtnDef = { - dropdown: buildDropdown(trumbowyg) - }; - trumbowyg.addBtnDef('specialChars', specialCharsBtnDef); + trumbowyg.o.plugins.pasteEmbed = $.extend(true, {}, defaultOptions, trumbowyg.o.plugins.pasteEmbed || {}); + + if (!trumbowyg.o.plugins.pasteEmbed.enabled) { + return; + } + + trumbowyg.pasteHandlers.push(function (pasteEvent) { + try { + var clipboardData = (pasteEvent.originalEvent || pasteEvent).clipboardData, + pastedData = clipboardData.getData('Text'), + endpoints = trumbowyg.o.plugins.pasteEmbed.endpoints, + request = null; + + if (pastedData.startsWith('http')) { + pasteEvent.stopPropagation(); + pasteEvent.preventDefault(); + var query = { + url: pastedData.trim() + }; + var content = ''; + var index = 0; + + if (request && request.transport) { + request.transport.abort(); + } + + request = $.ajax({ + crossOrigin: true, + url: endpoints[index], + type: 'GET', + data: query, + cache: false, + dataType: 'jsonp', + success: function success(res) { + if (res.html) { + index = 0; + content = res.html; + } else { + index += 1; + } + }, + error: function error() { + index += 1; + }, + complete: function complete() { + if (content.length === 0 && index < endpoints.length - 1) { + this.url = endpoints[index]; + this.data = query; + $.ajax(this); + } + + if (index === endpoints.length - 1) { + content = $('', { + href: pastedData, + text: pastedData + }).prop('outerHTML'); + } + + if (content.length > 0) { + index = 0; + trumbowyg.execCmd('insertHTML', content); + } + } + }); + } + } catch (c) {} + }); } } } }); - - function buildDropdown(trumbowyg) { - var dropdown = []; - $.each(trumbowyg.o.plugins.specialchars.symbolList, function (i, symbol) { - if (symbol === null) { - symbol = ' '; - } else { - symbol = '&#x' + symbol; - } - - var btn = symbol.replace(/:/g, ''), - defaultSymbolBtnName = 'symbol-' + btn, - defaultSymbolBtnDef = { - text: symbol, - hasIcon: false, - fn: function fn() { - var encodedSymbol = String.fromCodePoint(parseInt(symbol.replace('&#', '0'))); - trumbowyg.execCmd('insertText', encodedSymbol); - return true; - } - }; - trumbowyg.addBtnDef(defaultSymbolBtnName, defaultSymbolBtnDef); - dropdown.push(defaultSymbolBtnName); - }); - return dropdown; - } })(jQuery); -!function (a) { +!function (t) { "use strict"; - var s = { - symbolList: ["0024", "20AC", "00A3", "00A2", "00A5", "00A4", "2030", null, "00A9", "00AE", "2122", null, "00A7", "00B6", "00C6", "00E6", "0152", "0153", null, "2022", "25CF", "2023", "25B6", "2B29", "25C6", null, "00B1", "00D7", "00F7", "21D2", "21D4", "220F", "2211", "2243", "2264", "2265"] + var e = { + enabled: !0, + endpoints: ["https://noembed.com/embed?nowrap=on", "https://api.maxmade.nl/url2iframe/embed"] }; - - function e(s) { - var e = []; - return a.each(s.o.plugins.specialchars.symbolList, function (a, r) { - var n = "symbol-" + (r = null === r ? " " : "&#x" + r).replace(/:/g, ""), - i = { - text: r, - hasIcon: !1, - fn: function fn() { - var a = String.fromCodePoint(parseInt(r.replace("&#", "0"))); - return s.execCmd("insertText", a), !0; - } - }; - s.addBtnDef(n, i), e.push(n); - }), e; - } - - a.extend(!0, a.trumbowyg, { - langs: { - en: { - specialChars: "Special characters" - }, - et: { - specialChars: "Erimärgid" - }, - fr: { - specialChars: "Caractères spéciaux" - }, - hu: { - specialChars: "Speciális karakterek" - }, - ko: { - specialChars: "특수문자" - } - }, + t.extend(!0, t.trumbowyg, { plugins: { - specialchars: { - init: function init(a) { - a.o.plugins.specialchars = a.o.plugins.specialchars || s; - var r = { - dropdown: e(a) - }; - a.addBtnDef("specialChars", r); + pasteEmbed: { + init: function init(n) { + n.o.plugins.pasteEmbed = t.extend(!0, {}, e, n.o.plugins.pasteEmbed || {}), n.o.plugins.pasteEmbed.enabled && n.pasteHandlers.push(function (e) { + try { + var a = (e.originalEvent || e).clipboardData.getData("Text"), + r = n.o.plugins.pasteEmbed.endpoints, + s = null; + + if (a.startsWith("http")) { + e.stopPropagation(), e.preventDefault(); + var i = { + url: a.trim() + }, + o = "", + p = 0; + s && s.transport && s.transport.abort(), s = t.ajax({ + crossOrigin: !0, + url: r[p], + type: "GET", + data: i, + cache: !1, + dataType: "jsonp", + success: function success(t) { + t.html ? (p = 0, o = t.html) : p += 1; + }, + error: function error() { + p += 1; + }, + complete: function complete() { + 0 === o.length && p < r.length - 1 && (this.url = r[p], this.data = i, t.ajax(this)), p === r.length - 1 && (o = t("", { + href: a, + text: a + }).prop("outerHTML")), o.length > 0 && (p = 0, n.execCmd("insertHTML", o)); + } + }); + } + } catch (t) {} + }); } } } @@ -5729,6 +5601,134 @@ } }); }(jQuery); +/* =========================================================== + * trumbowyg.specialchars.js v0.99 + * Unicode characters picker plugin for Trumbowyg + * http://alex-d.github.com/Trumbowyg + * =========================================================== + * Author : Renaud Hoyoux (geektortoise) +*/ +(function ($) { + 'use strict'; + + var defaultOptions = { + symbolList: [// currencies + '0024', '20AC', '00A3', '00A2', '00A5', '00A4', '2030', null, // legal signs + '00A9', '00AE', '2122', null, // textual sign + '00A7', '00B6', '00C6', '00E6', '0152', '0153', null, '2022', '25CF', '2023', '25B6', '2B29', '25C6', null, //maths + '00B1', '00D7', '00F7', '21D2', '21D4', '220F', '2211', '2243', '2264', '2265'] + }; + $.extend(true, $.trumbowyg, { + langs: { + en: { + specialChars: 'Special characters' + }, + et: { + specialChars: 'Erimärgid' + }, + fr: { + specialChars: 'Caractères spéciaux' + }, + hu: { + specialChars: 'Speciális karakterek' + }, + ko: { + specialChars: '특수문자' + } + }, + plugins: { + specialchars: { + init: function init(trumbowyg) { + trumbowyg.o.plugins.specialchars = trumbowyg.o.plugins.specialchars || defaultOptions; + var specialCharsBtnDef = { + dropdown: buildDropdown(trumbowyg) + }; + trumbowyg.addBtnDef('specialChars', specialCharsBtnDef); + } + } + } + }); + + function buildDropdown(trumbowyg) { + var dropdown = []; + $.each(trumbowyg.o.plugins.specialchars.symbolList, function (i, symbol) { + if (symbol === null) { + symbol = ' '; + } else { + symbol = '&#x' + symbol; + } + + var btn = symbol.replace(/:/g, ''), + defaultSymbolBtnName = 'symbol-' + btn, + defaultSymbolBtnDef = { + text: symbol, + hasIcon: false, + fn: function fn() { + var encodedSymbol = String.fromCodePoint(parseInt(symbol.replace('&#', '0'))); + trumbowyg.execCmd('insertText', encodedSymbol); + return true; + } + }; + trumbowyg.addBtnDef(defaultSymbolBtnName, defaultSymbolBtnDef); + dropdown.push(defaultSymbolBtnName); + }); + return dropdown; + } +})(jQuery); +!function (a) { + "use strict"; + + var s = { + symbolList: ["0024", "20AC", "00A3", "00A2", "00A5", "00A4", "2030", null, "00A9", "00AE", "2122", null, "00A7", "00B6", "00C6", "00E6", "0152", "0153", null, "2022", "25CF", "2023", "25B6", "2B29", "25C6", null, "00B1", "00D7", "00F7", "21D2", "21D4", "220F", "2211", "2243", "2264", "2265"] + }; + + function e(s) { + var e = []; + return a.each(s.o.plugins.specialchars.symbolList, function (a, r) { + var n = "symbol-" + (r = null === r ? " " : "&#x" + r).replace(/:/g, ""), + i = { + text: r, + hasIcon: !1, + fn: function fn() { + var a = String.fromCodePoint(parseInt(r.replace("&#", "0"))); + return s.execCmd("insertText", a), !0; + } + }; + s.addBtnDef(n, i), e.push(n); + }), e; + } + + a.extend(!0, a.trumbowyg, { + langs: { + en: { + specialChars: "Special characters" + }, + et: { + specialChars: "Erimärgid" + }, + fr: { + specialChars: "Caractères spéciaux" + }, + hu: { + specialChars: "Speciális karakterek" + }, + ko: { + specialChars: "특수문자" + } + }, + plugins: { + specialchars: { + init: function init(a) { + a.o.plugins.specialchars = a.o.plugins.specialchars || s; + var r = { + dropdown: e(a) + }; + a.addBtnDef("specialChars", r); + } + } + } + }); +}(jQuery); function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } /* =========================================================== diff --git a/src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/trumbowyg-plugins.min.js b/src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/trumbowyg-plugins.min.js index 86151ca0c9d..fd8752db0a2 100644 --- a/src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/trumbowyg-plugins.min.js +++ b/src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/trumbowyg-plugins.min.js @@ -1 +1 @@ -function _typeof(e){return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},_typeof(e)}function _typeof(e){return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},_typeof(e)}!function(e){"use strict";var t={allowedTags:[],removableTags:["a","abbr","address","b","bdi","bdo","blockquote","br","cite","code","del","dfn","details","em","h1","h2","h3","h4","h5","h6","hr","i","ins","kbd","mark","meter","pre","progress","q","rp","rt","ruby","s","samp","small","span","strong","sub","summary","sup","time","u","var","wbr","img","map","area","canvas","figcaption","figure","picture","audio","source","track","video","ul","ol","li","dl","dt","dd","table","caption","th","tr","td","thead","tbody","tfoot","col","colgroup","style","div","p","form","input","textarea","button","select","optgroup","option","label","fieldset","legend","datalist","keygen","output","iframe","link","nav","header","hgroup","footer","main","section","article","aside","dialog","script","noscript","embed","object","param"]};e.extend(!0,e.trumbowyg,{plugins:{allowTagsFromPaste:{init:function(o){if(o.o.plugins.allowTagsFromPaste){o.o.removeformatPasted=!1;var n=o.o.plugins.allowTagsFromPaste.allowedTags||t.allowedTags,a=o.o.plugins.allowTagsFromPaste.removableTags||t.removableTags;if(0!==n.length){var r=e(a).not(n).get();o.pasteHandlers.push((function(){setTimeout((function(){var t=o.$ed.html();e.each(r,(function(e,o){t=t.replace(new RegExp("<\\/?"+o+"(\\s[^>]*)?>","gi"),"")})),o.$ed.html(t)}),0)}))}}}}}})}(jQuery),function(e){"use strict";var t={allowedTags:[],removableTags:["a","abbr","address","b","bdi","bdo","blockquote","br","cite","code","del","dfn","details","em","h1","h2","h3","h4","h5","h6","hr","i","ins","kbd","mark","meter","pre","progress","q","rp","rt","ruby","s","samp","small","span","strong","sub","summary","sup","time","u","var","wbr","img","map","area","canvas","figcaption","figure","picture","audio","source","track","video","ul","ol","li","dl","dt","dd","table","caption","th","tr","td","thead","tbody","tfoot","col","colgroup","style","div","p","form","input","textarea","button","select","optgroup","option","label","fieldset","legend","datalist","keygen","output","iframe","link","nav","header","hgroup","footer","main","section","article","aside","dialog","script","noscript","embed","object","param"]};e.extend(!0,e.trumbowyg,{plugins:{allowTagsFromPaste:{init:function(o){if(o.o.plugins.allowTagsFromPaste){o.o.removeformatPasted=!1;var n=o.o.plugins.allowTagsFromPaste.allowedTags||t.allowedTags,a=o.o.plugins.allowTagsFromPaste.removableTags||t.removableTags;if(0!==n.length){var r=e(a).not(n).get();o.pasteHandlers.push((function(){setTimeout((function(){var t=o.$ed.html();e.each(r,(function(e,o){t=t.replace(new RegExp("<\\/?"+o+"(\\s[^>]*)?>","gi"),"")})),o.$ed.html(t)}),0)}))}}}}}})}(jQuery),function(e){"use strict";var t=function(){return"undefined"!=typeof FileReader};e.extend(!0,e.trumbowyg,{langs:{en:{base64:"Image as base64",file:"File",errFileReaderNotSupported:"FileReader is not supported by your browser.",errInvalidImage:"Invalid image file."},cs:{base64:"Vložit obrázek",file:"Soubor"},da:{base64:"Billede som base64",file:"Fil",errFileReaderNotSupported:"FileReader er ikke understøttet af din browser.",errInvalidImage:"Ugyldig billedfil."},et:{base64:"Pilt base64 formaadis",file:"Fail",errFileReaderNotSupported:"Teie veebilehitseja ei toeta FileReader funktsiooni.",errInvalidImage:"Vigane pildifail."},fr:{base64:"Image en base64",file:"Fichier"},hu:{base64:"Kép beszúrás inline",file:"Fájl",errFileReaderNotSupported:"Ez a böngésző nem támogatja a FileReader funkciót.",errInvalidImage:"Érvénytelen képfájl."},ja:{base64:"画像 (Base64形式)",file:"ファイル",errFileReaderNotSupported:"あなたのブラウザーはFileReaderをサポートしていません",errInvalidImage:"画像形式が正しくありません"},ko:{base64:"그림 넣기(base64)",file:"파일",errFileReaderNotSupported:"FileReader가 현재 브라우저를 지원하지 않습니다.",errInvalidImage:"유효하지 않은 파일"},nl:{base64:"Afbeelding inline",file:"Bestand",errFileReaderNotSupported:"Uw browser ondersteunt deze functionaliteit niet.",errInvalidImage:"De gekozen afbeelding is ongeldig."},pt_br:{base64:"Imagem em base64",file:"Arquivo",errFileReaderNotSupported:"FileReader não é suportado pelo seu navegador.",errInvalidImage:"Arquivo de imagem inválido."},ru:{base64:"Изображение как код в base64",file:"Файл",errFileReaderNotSupported:"FileReader не поддерживается вашим браузером.",errInvalidImage:"Недопустимый файл изображения."},tr:{base64:"Base64 olarak resim",file:"Dosya",errFileReaderNotSupported:"FileReader tarayıcınız tarafından desteklenmiyor.",errInvalidImage:"Geçersiz resim dosyası."},zh_cn:{base64:"图片(Base64编码)",file:"文件"},zh_tw:{base64:"圖片(base64編碼)",file:"檔案",errFileReaderNotSupported:"你的瀏覽器不支援FileReader",errInvalidImage:"不正確的檔案格式"}},plugins:{base64:{shouldInit:t,init:function(o){var n={isSupported:t,fn:function(){var t;o.saveRange();var n=o.openModalInsert(o.lang.base64,{file:{type:"file",required:!0,attributes:{accept:"image/*"}},alt:{label:"description",value:o.getRangeText()}},(function(a){var r=new FileReader;r.onloadend=function(t){var l;l=t.target.result,/^data:image\/[a-z]?/i.test(l)?(o.execCmd("insertImage",r.result,!1,!0),e(['img[src="',r.result,'"]:not([alt])'].join(""),o.$box).attr("alt",a.alt),o.closeModal()):o.addErrorOnModalField(e("input[type=file]",n),o.lang.errInvalidImage)},r.readAsDataURL(t)}));e("input[type=file]").on("change",(function(e){t=e.target.files[0]}))}};o.addBtnDef("base64",n)}}}})}(jQuery),function(e){"use strict";var t=function(){return"undefined"!=typeof FileReader};e.extend(!0,e.trumbowyg,{langs:{en:{base64:"Image as base64",file:"File",errFileReaderNotSupported:"FileReader is not supported by your browser.",errInvalidImage:"Invalid image file."},cs:{base64:"Vložit obrázek",file:"Soubor"},da:{base64:"Billede som base64",file:"Fil",errFileReaderNotSupported:"FileReader er ikke understøttet af din browser.",errInvalidImage:"Ugyldig billedfil."},et:{base64:"Pilt base64 formaadis",file:"Fail",errFileReaderNotSupported:"Teie veebilehitseja ei toeta FileReader funktsiooni.",errInvalidImage:"Vigane pildifail."},fr:{base64:"Image en base64",file:"Fichier"},hu:{base64:"Kép beszúrás inline",file:"Fájl",errFileReaderNotSupported:"Ez a böngésző nem támogatja a FileReader funkciót.",errInvalidImage:"Érvénytelen képfájl."},ja:{base64:"画像 (Base64形式)",file:"ファイル",errFileReaderNotSupported:"あなたのブラウザーはFileReaderをサポートしていません",errInvalidImage:"画像形式が正しくありません"},ko:{base64:"그림 넣기(base64)",file:"파일",errFileReaderNotSupported:"FileReader가 현재 브라우저를 지원하지 않습니다.",errInvalidImage:"유효하지 않은 파일"},nl:{base64:"Afbeelding inline",file:"Bestand",errFileReaderNotSupported:"Uw browser ondersteunt deze functionaliteit niet.",errInvalidImage:"De gekozen afbeelding is ongeldig."},pt_br:{base64:"Imagem em base64",file:"Arquivo",errFileReaderNotSupported:"FileReader não é suportado pelo seu navegador.",errInvalidImage:"Arquivo de imagem inválido."},ru:{base64:"Изображение как код в base64",file:"Файл",errFileReaderNotSupported:"FileReader не поддерживается вашим браузером.",errInvalidImage:"Недопустимый файл изображения."},tr:{base64:"Base64 olarak resim",file:"Dosya",errFileReaderNotSupported:"FileReader tarayıcınız tarafından desteklenmiyor.",errInvalidImage:"Geçersiz resim dosyası."},zh_cn:{base64:"图片(Base64编码)",file:"文件"},zh_tw:{base64:"圖片(base64編碼)",file:"檔案",errFileReaderNotSupported:"你的瀏覽器不支援FileReader",errInvalidImage:"不正確的檔案格式"}},plugins:{base64:{shouldInit:t,init:function(o){var n={isSupported:t,fn:function(){var t;o.saveRange();var n=o.openModalInsert(o.lang.base64,{file:{type:"file",required:!0,attributes:{accept:"image/*"}},alt:{label:"description",value:o.getRangeText()}},(function(a){var r=new FileReader;r.onloadend=function(t){var l;l=t.target.result,/^data:image\/[a-z]?/i.test(l)?(o.execCmd("insertImage",r.result,!1,!0),e(['img[src="',r.result,'"]:not([alt])'].join(""),o.$box).attr("alt",a.alt),o.closeModal()):o.addErrorOnModalField(e("input[type=file]",n),o.lang.errInvalidImage)},r.readAsDataURL(t)}));e("input[type=file]").on("change",(function(e){t=e.target.files[0]}))}};o.addBtnDef("base64",n)}}}})}(jQuery),function(e){"use strict";e.extend(!0,e.trumbowyg,{plugins:{cleanPaste:{init:function(t){t.pasteHandlers.push((function(o){setTimeout((function(){try{t.saveRange();var n=(o.originalEvent||o).clipboardData.getData("Text"),a=t.doc.getSelection().focusNode,r=t.doc.createRange(),l=((s=(s=(s=(s=(s=(s=(s=(s=(s=n.trim()).replace(/<[^> ]*/g,(function(e){return e.toLowerCase()})).replace(/<[^>]*>/g,(function(e){return e.replace(/ [^=]+=/g,(function(e){return e.toLowerCase()}))})).replace(/<[^>]*>/g,(function(e){return e.replace(/( [^=]+=)([^"][^ >]*)/g,'$1"$2"')}))).replace(/)/g,")/g,")/g,")/g,"\s*/g,"")).replace(/ /gi," ")).replace(/ <\//gi,"]*>/g,(function(e){return e.replace(/ ([^=]+)="[^"]*"/g,(function(e,t){return-1!==["alt","href","src","title"].indexOf(t)?e:""}))}))).replace(/<\?xml[^>]*>/g,"")).replace(/<[^ >]+:[^>]*>/g,"")).replace(/<\/[^ >]+:[^>]*>/g,"")).replace(/<(div|span|style|meta|link).*?>/gi,"")),i=e(l)[0]||t.doc.createTextNode(l);""===t.$ed.html()?t.$ed[0].appendChild(i):(r.setStartAfter(a),r.setEndAfter(a),t.doc.getSelection().removeAllRanges(),t.doc.getSelection().addRange(r),t.range.insertNode(i)),(r=t.doc.createRange()).setStartAfter(i),r.setEndAfter(i),t.doc.getSelection().removeAllRanges(),t.doc.getSelection().addRange(r),o.stopPropagation(),o.preventDefault(),t.saveRange(),t.syncCode(),t.$c.trigger("tbwchange")}catch(e){}var s}),0)}))}}}})}(jQuery),function(e){"use strict";e.extend(!0,e.trumbowyg,{plugins:{cleanPaste:{init:function(t){t.pasteHandlers.push((function(o){setTimeout((function(){try{t.saveRange();var n=(o.originalEvent||o).clipboardData.getData("Text"),a=t.doc.getSelection().focusNode,r=t.doc.createRange(),l=((s=(s=(s=(s=(s=(s=(s=(s=(s=n.trim()).replace(/<[^> ]*/g,(function(e){return e.toLowerCase()})).replace(/<[^>]*>/g,(function(e){return e.replace(/ [^=]+=/g,(function(e){return e.toLowerCase()}))})).replace(/<[^>]*>/g,(function(e){return e.replace(/( [^=]+=)([^"][^ >]*)/g,'$1"$2"')}))).replace(/)/g,")/g,")/g,")/g,"\s*/g,"")).replace(/ /gi," ")).replace(/ <\//gi,"]*>/g,(function(e){return e.replace(/ ([^=]+)="[^"]*"/g,(function(e,t){return-1!==["alt","href","src","title"].indexOf(t)?e:""}))}))).replace(/<\?xml[^>]*>/g,"")).replace(/<[^ >]+:[^>]*>/g,"")).replace(/<\/[^ >]+:[^>]*>/g,"")).replace(/<(div|span|style|meta|link).*?>/gi,"")),i=e(l)[0]||t.doc.createTextNode(l);""===t.$ed.html()?t.$ed[0].appendChild(i):(r.setStartAfter(a),r.setEndAfter(a),t.doc.getSelection().removeAllRanges(),t.doc.getSelection().addRange(r),t.range.insertNode(i)),(r=t.doc.createRange()).setStartAfter(i),r.setEndAfter(i),t.doc.getSelection().removeAllRanges(),t.doc.getSelection().addRange(r),o.stopPropagation(),o.preventDefault(),t.saveRange(),t.syncCode(),t.$c.trigger("tbwchange")}catch(e){}var s}),0)}))}}}})}(jQuery),function(e){"use strict";function t(e){return("0"+parseInt(e).toString(16)).slice(-2)}function o(e){return-1===e.search("rgb")?e.replace("#",""):"rgba(0, 0, 0, 0)"===e?"transparent":t((e=e.match(/^rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*(\d?(.\d+)))?\)$/))[1])+t(e[2])+t(e[3])}e.extend(!0,e.trumbowyg,{langs:{en:{foreColor:"Text color",backColor:"Background color",foreColorRemove:"Remove text color",backColorRemove:"Remove background color"},cs:{foreColor:"Barva textu",backColor:"Barva pozadí"},da:{foreColor:"Tekstfarve",backColor:"Baggrundsfarve"},de:{foreColor:"Textfarbe",backColor:"Hintergrundfarbe"},et:{foreColor:"Teksti värv",backColor:"Taustavärv",foreColorRemove:"Eemalda teksti värv",backColorRemove:"Eemalda taustavärv"},fr:{foreColor:"Couleur du texte",backColor:"Couleur de fond",foreColorRemove:"Supprimer la couleur du texte",backColorRemove:"Supprimer la couleur de fond"},hu:{foreColor:"Betű szín",backColor:"Háttér szín",foreColorRemove:"Betű szín eltávolítása",backColorRemove:"Háttér szín eltávolítása"},ja:{foreColor:"文字色",backColor:"背景色"},ko:{foreColor:"글자색",backColor:"배경색",foreColorRemove:"글자색 지우기",backColorRemove:"배경색 지우기"},nl:{foreColor:"Tekstkleur",backColor:"Achtergrondkleur"},pt_br:{foreColor:"Cor de fonte",backColor:"Cor de fundo"},ru:{foreColor:"Цвет текста",backColor:"Цвет выделения текста"},sk:{foreColor:"Farba textu",backColor:"Farba pozadia"},tr:{foreColor:"Yazı rengi",backColor:"Arka plan rengi",foreColorRemove:"Yazı rengini kaldır",backColorRemove:"Arka plan rengini kaldır"},zh_cn:{foreColor:"文字颜色",backColor:"背景颜色"},zh_tw:{foreColor:"文字顏色",backColor:"背景顏色"}}});var n={colorList:["ffffff","000000","eeece1","1f497d","4f81bd","c0504d","9bbb59","8064a2","4bacc6","f79646","ffff00","f2f2f2","7f7f7f","ddd9c3","c6d9f0","dbe5f1","f2dcdb","ebf1dd","e5e0ec","dbeef3","fdeada","fff2ca","d8d8d8","595959","c4bd97","8db3e2","b8cce4","e5b9b7","d7e3bc","ccc1d9","b7dde8","fbd5b5","ffe694","bfbfbf","3f3f3f","938953","548dd4","95b3d7","d99694","c3d69b","b2a2c7","b7dde8","fac08f","f2c314","a5a5a5","262626","494429","17365d","366092","953734","76923c","5f497a","92cddc","e36c09","c09100","7f7f7f","0c0c0c","1d1b10","0f243e","244061","632423","4f6128","3f3151","31859b","974806","7f6000"],foreColorList:null,backColorList:null,allowCustomForeColor:!0,allowCustomBackColor:!0,displayAsList:!1};function a(t,o){var n=[],a=o.o.plugins.colors,r=a[t+"List"]||a.colorList;e.each(r,(function(e,r){var l=t+r,i={fn:t,forceCss:!0,hasIcon:!1,text:o.lang["#"+r]||"#"+r,param:"#"+r,style:"background-color: #"+r+";"};a.displayAsList&&"foreColor"===t&&(i.style="color: #"+r+" !important;"),o.addBtnDef(l,i),n.push(l)}));var l=t+"Remove",i={fn:"removeFormat",hasIcon:!1,param:t,style:"background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAG0lEQVQIW2NkQAAfEJMRmwBYhoGBYQtMBYoAADziAp0jtJTgAAAAAElFTkSuQmCC);"};if(a.displayAsList&&(i.style=""),o.addBtnDef(l,i),n.push(l),a["allowCustom"+t.charAt(0).toUpperCase()+t.substr(1)]){var s=t+"Free",x={fn:function(){o.openModalInsert(o.lang[t],{color:{label:t,forceCss:!0,type:"color",value:"#FFFFFF"}},(function(e){return o.execCmd(t,e.color),!0}))},hasIcon:!1,text:"#",style:"text-indent: 0; line-height: 20px; padding: 0 5px;"};o.addBtnDef(s,x),n.push(s)}return n}e.extend(!0,e.trumbowyg,{plugins:{color:{init:function(e){e.o.plugins.colors=e.o.plugins.colors||n;var t=e.o.plugins.colors.displayAsList?e.o.prefix+"dropdown--color-list":"",o={dropdown:a("foreColor",e),dropdownClass:t},r={dropdown:a("backColor",e),dropdownClass:t};e.addBtnDef("foreColor",o),e.addBtnDef("backColor",r)},tagHandler:function(e,t){var n,a=[];if(!e.style)return a;if(""!==e.style.backgroundColor){var r=o(e.style.backgroundColor);t.o.plugins.colors.colorList.indexOf(r)>=0?a.push("backColor"+r):a.push("backColorFree")}return""!==e.style.color?n=o(e.style.color):e.hasAttribute("color")&&(n=o(e.getAttribute("color"))),n&&(t.o.plugins.colors.colorList.indexOf(n)>=0?a.push("foreColor"+n):a.push("foreColorFree")),a}}}})}(jQuery),function(e){"use strict";function t(e){return("0"+parseInt(e).toString(16)).slice(-2)}function o(e){return-1===e.search("rgb")?e.replace("#",""):"rgba(0, 0, 0, 0)"===e?"transparent":t((e=e.match(/^rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*(\d?(.\d+)))?\)$/))[1])+t(e[2])+t(e[3])}e.extend(!0,e.trumbowyg,{langs:{en:{foreColor:"Text color",backColor:"Background color",foreColorRemove:"Remove text color",backColorRemove:"Remove background color"},cs:{foreColor:"Barva textu",backColor:"Barva pozadí"},da:{foreColor:"Tekstfarve",backColor:"Baggrundsfarve"},de:{foreColor:"Textfarbe",backColor:"Hintergrundfarbe"},et:{foreColor:"Teksti värv",backColor:"Taustavärv",foreColorRemove:"Eemalda teksti värv",backColorRemove:"Eemalda taustavärv"},fr:{foreColor:"Couleur du texte",backColor:"Couleur de fond",foreColorRemove:"Supprimer la couleur du texte",backColorRemove:"Supprimer la couleur de fond"},hu:{foreColor:"Betű szín",backColor:"Háttér szín",foreColorRemove:"Betű szín eltávolítása",backColorRemove:"Háttér szín eltávolítása"},ja:{foreColor:"文字色",backColor:"背景色"},ko:{foreColor:"글자색",backColor:"배경색",foreColorRemove:"글자색 지우기",backColorRemove:"배경색 지우기"},nl:{foreColor:"Tekstkleur",backColor:"Achtergrondkleur"},pt_br:{foreColor:"Cor de fonte",backColor:"Cor de fundo"},ru:{foreColor:"Цвет текста",backColor:"Цвет выделения текста"},sk:{foreColor:"Farba textu",backColor:"Farba pozadia"},tr:{foreColor:"Yazı rengi",backColor:"Arka plan rengi",foreColorRemove:"Yazı rengini kaldır",backColorRemove:"Arka plan rengini kaldır"},zh_cn:{foreColor:"文字颜色",backColor:"背景颜色"},zh_tw:{foreColor:"文字顏色",backColor:"背景顏色"}}});var n={colorList:["ffffff","000000","eeece1","1f497d","4f81bd","c0504d","9bbb59","8064a2","4bacc6","f79646","ffff00","f2f2f2","7f7f7f","ddd9c3","c6d9f0","dbe5f1","f2dcdb","ebf1dd","e5e0ec","dbeef3","fdeada","fff2ca","d8d8d8","595959","c4bd97","8db3e2","b8cce4","e5b9b7","d7e3bc","ccc1d9","b7dde8","fbd5b5","ffe694","bfbfbf","3f3f3f","938953","548dd4","95b3d7","d99694","c3d69b","b2a2c7","b7dde8","fac08f","f2c314","a5a5a5","262626","494429","17365d","366092","953734","76923c","5f497a","92cddc","e36c09","c09100","7f7f7f","0c0c0c","1d1b10","0f243e","244061","632423","4f6128","3f3151","31859b","974806","7f6000"],foreColorList:null,backColorList:null,allowCustomForeColor:!0,allowCustomBackColor:!0,displayAsList:!1};function a(t,o){var n=[],a=o.o.plugins.colors,r=a[t+"List"]||a.colorList;e.each(r,(function(e,r){var l=t+r,i={fn:t,forceCss:!0,hasIcon:!1,text:o.lang["#"+r]||"#"+r,param:"#"+r,style:"background-color: #"+r+";"};a.displayAsList&&"foreColor"===t&&(i.style="color: #"+r+" !important;"),o.addBtnDef(l,i),n.push(l)}));var l=t+"Remove",i={fn:"removeFormat",hasIcon:!1,param:t,style:"background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAG0lEQVQIW2NkQAAfEJMRmwBYhoGBYQtMBYoAADziAp0jtJTgAAAAAElFTkSuQmCC);"};if(a.displayAsList&&(i.style=""),o.addBtnDef(l,i),n.push(l),a["allowCustom"+t.charAt(0).toUpperCase()+t.substr(1)]){var s=t+"Free",x={fn:function(){o.openModalInsert(o.lang[t],{color:{label:t,forceCss:!0,type:"color",value:"#FFFFFF"}},(function(e){return o.execCmd(t,e.color),!0}))},hasIcon:!1,text:"#",style:"text-indent: 0; line-height: 20px; padding: 0 5px;"};o.addBtnDef(s,x),n.push(s)}return n}e.extend(!0,e.trumbowyg,{plugins:{color:{init:function(e){e.o.plugins.colors=e.o.plugins.colors||n;var t=e.o.plugins.colors.displayAsList?e.o.prefix+"dropdown--color-list":"",o={dropdown:a("foreColor",e),dropdownClass:t},r={dropdown:a("backColor",e),dropdownClass:t};e.addBtnDef("foreColor",o),e.addBtnDef("backColor",r)},tagHandler:function(e,t){var n,a=[];if(!e.style)return a;if(""!==e.style.backgroundColor){var r=o(e.style.backgroundColor);t.o.plugins.colors.colorList.indexOf(r)>=0?a.push("backColor"+r):a.push("backColorFree")}return""!==e.style.color?n=o(e.style.color):e.hasAttribute("color")&&(n=o(e.getAttribute("color"))),n&&(t.o.plugins.colors.colorList.indexOf(n)>=0?a.push("foreColor"+n):a.push("foreColorFree")),a}}}})}(jQuery),function(e){"use strict";e.extend(!0,e.trumbowyg,{langs:{en:{fontFamily:"Font"},es:{fontFamily:"Fuente"},da:{fontFamily:"Skrifttype"},de:{fontFamily:"Schriftart"},et:{fontFamily:"Font"},fr:{fontFamily:"Police"},hu:{fontFamily:"Betűtípus"},ko:{fontFamily:"글꼴"},nl:{fontFamily:"Lettertype"},pt_br:{fontFamily:"Fonte"},tr:{fontFamily:"Yazı tipi"},zh_tw:{fontFamily:"字體"}}});var t={fontList:[{name:"Arial",family:"Arial, Helvetica, sans-serif"},{name:"Arial Black",family:"Arial Black, Gadget, sans-serif"},{name:"Comic Sans",family:"Comic Sans MS, Textile, cursive, sans-serif"},{name:"Courier New",family:"Courier New, Courier, monospace"},{name:"Georgia",family:"Georgia, serif"},{name:"Impact",family:"Impact, Charcoal, sans-serif"},{name:"Lucida Console",family:"Lucida Console, Monaco, monospace"},{name:"Lucida Sans",family:"Lucida Sans Uncide, Lucida Grande, sans-serif"},{name:"Palatino",family:"Palatino Linotype, Book Antiqua, Palatino, serif"},{name:"Tahoma",family:"Tahoma, Geneva, sans-serif"},{name:"Times New Roman",family:"Times New Roman, Times, serif"},{name:"Trebuchet",family:"Trebuchet MS, Helvetica, sans-serif"},{name:"Verdana",family:"Verdana, Geneva, sans-serif"}]};function o(t){var o=[];return e.each(t.o.plugins.fontfamily.fontList,(function(e,n){t.addBtnDef("fontfamily_"+e,{title:''+n.name+"",hasIcon:!1,fn:function(){t.execCmd("fontName",n.family,!0)}}),o.push("fontfamily_"+e)})),o}e.extend(!0,e.trumbowyg,{plugins:{fontfamily:{init:function(n){n.o.plugins.fontfamily=e.extend({},t,n.o.plugins.fontfamily||{}),n.addBtnDef("fontfamily",{dropdown:o(n),hasIcon:!1,text:n.lang.fontFamily})}}}})}(jQuery),function(e){"use strict";e.extend(!0,e.trumbowyg,{langs:{en:{fontFamily:"Font"},es:{fontFamily:"Fuente"},da:{fontFamily:"Skrifttype"},de:{fontFamily:"Schriftart"},et:{fontFamily:"Font"},fr:{fontFamily:"Police"},hu:{fontFamily:"Betűtípus"},ko:{fontFamily:"글꼴"},nl:{fontFamily:"Lettertype"},pt_br:{fontFamily:"Fonte"},tr:{fontFamily:"Yazı tipi"},zh_tw:{fontFamily:"字體"}}});var t={fontList:[{name:"Arial",family:"Arial, Helvetica, sans-serif"},{name:"Arial Black",family:"Arial Black, Gadget, sans-serif"},{name:"Comic Sans",family:"Comic Sans MS, Textile, cursive, sans-serif"},{name:"Courier New",family:"Courier New, Courier, monospace"},{name:"Georgia",family:"Georgia, serif"},{name:"Impact",family:"Impact, Charcoal, sans-serif"},{name:"Lucida Console",family:"Lucida Console, Monaco, monospace"},{name:"Lucida Sans",family:"Lucida Sans Uncide, Lucida Grande, sans-serif"},{name:"Palatino",family:"Palatino Linotype, Book Antiqua, Palatino, serif"},{name:"Tahoma",family:"Tahoma, Geneva, sans-serif"},{name:"Times New Roman",family:"Times New Roman, Times, serif"},{name:"Trebuchet",family:"Trebuchet MS, Helvetica, sans-serif"},{name:"Verdana",family:"Verdana, Geneva, sans-serif"}]};function o(t){var o=[];return e.each(t.o.plugins.fontfamily.fontList,(function(e,n){t.addBtnDef("fontfamily_"+e,{title:''+n.name+"",hasIcon:!1,fn:function(){t.execCmd("fontName",n.family,!0)}}),o.push("fontfamily_"+e)})),o}e.extend(!0,e.trumbowyg,{plugins:{fontfamily:{init:function(n){n.o.plugins.fontfamily=e.extend({},t,n.o.plugins.fontfamily||{}),n.addBtnDef("fontfamily",{dropdown:o(n),hasIcon:!1,text:n.lang.fontFamily})}}}})}(jQuery),function(e){"use strict";var t={emojiList:["⁉","™","ℹ","↔","↕","↖","↗","↘","↙","⌨","☀","☁","☂","☃","☄","☑","☔","☕","☘","☠","☢","☣","☦","☸","☹","♀","♂","♈","♉","♐","♑","♒","♓","♠","♣","♥","♦","♨","⚒","⚓","⚔","⚕","⚖","⚗","⚙","✂","✅","✈","✉","✒","✔","✖","✡","✨","✳","✴","❄","❇","❓","❔","❕","❗","❣","❤","➕","➖","➗","⤴","⤵","〰","㊗","㊙","🧡","💛","💚","💙","💜","🖤","🤎","🤍","💔","💕","💞","💓","💗","💖","💘","💝","💟","☮","✝","☪","🕉","🔯","🕎","☯","🛐","⛎","♊","♋","♌","♍","♎","♏","🆔","⚛","🉑","📴","📳","🈶","🈚","🈸","🈺","🈷","🆚","💮","🉐","🈴","🈵","🈹","🈲","🅰","🅱","🆎","🆑","🅾","🆘","❌","⭕","🛑","⛔","📛","🚫","💯","💢","🚷","🚯","🚳","🚱","🔞","📵","🚭","‼","🔅","🔆","〽","⚠","🚸","🔱","⚜","🔰","♻","🈯","💹","❎","🌐","💠","Ⓜ","🌀","💤","🏧","🚾","♿","🅿","🈳","🈂","🛂","🛃","🛄","🛅","🚹","🚺","🚼","🚻","🚮","🎦","📶","🈁","🔣","🔤","🔡","🔠","🆖","🆗","🆙","🆒","🆕","🆓","0","1","2","3","4","5","6","7","8","9","🔟","🔢","#","*","⏏","▶","⏸","⏯","⏹","⏺","⏭","⏮","⏩","⏪","⏫","⏬","◀","🔼","🔽","➡","⬅","⬆","⬇","↪","↩","🔀","🔁","🔂","🔄","🔃","🎵","🎶","♾","💲","💱","©","®","➰","➿","🔚","🔙","🔛","🔝","🔜","🔘","⚪","⚫","🔴","🔵","🟤","🟣","🟢","🟡","🟠","🔺","🔻","🔸","🔹","🔶","🔷","🔳","🔲","▪","▫","◾","◽","◼","◻","⬛","⬜","🟧","🟦","🟥","🟫","🟪","🟩","🟨","🔈","🔇","🔉","🔊","🔔","🔕","📣","📢","🗨","👁","💬","💭","🗯","🃏","🎴","🀄","🕐","🕑","🕒","🕓","🕔","🕕","🕖","🕗","🕘","🕙","🕚","🕛","🕜","🕝","🕞","🕟","🕠","🕡","🕢","🕣","🕤","🕥","🕦","🕧","⚽","🏀","🏈","⚾","🥎","🎾","🏐","🏉","🥏","🎱","🏓","🏸","🏒","🏑","🥍","🏏","🥅","⛳","🏹","🎣","🥊","🥋","🎽","🛹","🛷","🪂","⛸","🥌","🎿","⛷","🏂","🏋","🤼","🤸","⛹","🤺","🤾","🏌","🏇","🧘","🏄","🏊","🤽","🚣","🧗","🚵","🚴","🏆","🥇","🥈","🥉","🏅","🎖","🏵","🎗","🎫","🎟","🎪","🤹","🎭","🎨","🎬","🎤","🎧","🎼","🎹","🥁","🎷","🎺","🪕","🎸","🎻","🎲","♟","🎯","🪁","🪀","🎳","🎮","🎰","🧩","⌚","📱","📲","💻","🖥","🖨","🖱","🖲","🕹","🗜","💽","💾","💿","📀","📼","📷","📸","📹","🎥","📽","🎞","📞","☎","📟","📠","📺","📻","🎙","🎚","🎛","🧭","⏱","⏲","⏰","🕰","⌛","⏳","📡","🔋","🔌","💡","🔦","🕯","🧯","🛢","💸","💵","💴","💶","💷","💰","💳","💎","🧰","🔧","🔨","🛠","⛏","🔩","🧱","⛓","🧲","🔫","💣","🧨","🪓","🪒","🔪","🗡","🛡","🚬","⚰","⚱","🏺","🪔","🔮","📿","🧿","💈","🔭","🔬","🕳","🦯","🩺","🩹","💊","💉","🩸","🧬","🦠","🧫","🧪","🌡","🪑","🧹","🧺","🧻","🚽","🚰","🚿","🛁","🛀","🧼","🧽","🧴","🛎","🔑","🗝","🚪","🛋","🛏","🛌","🧸","🖼","🛍","🛒","🎁","🎈","🎏","🎀","🎊","🎉","🎎","🏮","🎐","🧧","📩","📨","📧","💌","📥","📤","📦","🏷","📪","📫","📬","📭","📮","📯","📜","📃","📄","📑","🧾","📊","📈","📉","🗒","🗓","📆","📅","🗑","📇","🗃","🗳","🗄","📋","📁","📂","🗂","🗞","📰","📓","📔","📒","📕","📗","📘","📙","📚","📖","🔖","🧷","🔗","📎","🖇","📐","📏","🧮","📌","📍","🖊","🖋","🖌","🖍","📝","✏","🔍","🔎","🔏","🔐","🔒","🔓","🐶","🐱","🐭","🐹","🐰","🦊","🐻","🐼","🐨","🐯","🦁","🐮","🐷","🐽","🐸","🐵","🙈","🙉","🙊","🐒","🐔","🐧","🐦","🐤","🐣","🐥","🦆","🦅","🦉","🦇","🐺","🐗","🐴","🦄","🐝","🐛","🦋","🐌","🐚","🐞","🐜","🦟","🦗","🕷","🕸","🦂","🐢","🐍","🦎","🦖","🦕","🐙","🦑","🦐","🦞","🦪","🦀","🐡","🐠","🐟","🐬","🐳","🐋","🦈","🐊","🐅","🐆","🦓","🦍","🦧","🐘","🦛","🦏","🐪","🐫","🦒","🦘","🐃","🐂","🐄","🐎","🐖","🐏","🦙","🐑","🐐","🦌","🐕","🦮","🐩","🐈","🐓","🦃","🦚","🦜","🦢","🦩","🕊","🐇","🦥","🦦","🦨","🦝","🦡","🐁","🐀","🐿","🦔","🐾","🐉","🐲","🌵","🎄","🌲","🌳","🌴","🌱","🌿","🍀","🎍","🎋","🍃","🍂","🍁","🍄","🌾","💐","🌷","🌹","🥀","🌺","🌸","🌼","🌻","🌞","🌝","🌛","🌜","🌚","🌕","🌖","🌗","🌘","🌑","🌒","🌓","🌔","🌙","🌎","🌍","🌏","🪐","💫","⭐","🌟","⚡","💥","🔥","🌪","🌈","🌤","⛅","🌥","🌦","🌧","⛈","🌩","🌨","⛄","🌬","💨","💧","💦","🌊","🌫","🍏","🍎","🍐","🍊","🍋","🍌","🍉","🍇","🍓","🍈","🍒","🍑","🥭","🍍","🥥","🥝","🍅","🍆","🥑","🥦","🥬","🥒","🌶","🌽","🥕","🧅","🧄","🥔","🍠","🥐","🥯","🍞","🥖","🥨","🧀","🥚","🍳","🥞","🧇","🥓","🥩","🍗","🍖","🌭","🍔","🍟","🍕","🥪","🧆","🥙","🌮","🌯","🥗","🥘","🥫","🍝","🍜","🍲","🍛","🍣","🍱","🥟","🍤","🍙","🍚","🍘","🍥","🥠","🥮","🍢","🍡","🍧","🍨","🍦","🥧","🧁","🍰","🎂","🍮","🍭","🍬","🍫","🍿","🍩","🍪","🌰","🥜","🍯","🧈","🥛","🍼","🍵","🧉","🥤","🧃","🧊","🍶","🍺","🍻","🥂","🍷","🥃","🍸","🍹","🍾","🥄","🍴","🍽","🥣","🥡","🥢","🧂","😀","😃","😄","😁","😆","😅","😂","🤣","☺","😊","😇","🙂","🙃","😉","😌","😍","🥰","😘","😗","😙","😚","😋","😛","😝","😜","🤪","🤨","🧐","🤓","😎","🤩","🥳","😏","😒","😞","😔","😟","😕","🙁","😣","😖","😫","😩","🥺","😢","😭","😤","😠","😡","🤬","🤯","😳","🥵","🥶","😱","😨","😰","😥","😓","🤗","🤔","🤭","🥱","🤫","🤥","😶","😐","😑","😬","🙄","😯","😦","😧","😮","😲","😴","🤤","😪","😵","🤐","🥴","🤢","🤮","🤧","😷","🤒","🤕","🤑","🤠","😈","👿","👹","👺","🤡","💩","👻","💀","👽","👾","🤖","🎃","😺","😸","😹","😻","😼","😽","🙀","😿","😾","🤲","👐","🙌","👏","🤝","👍","👎","👊","✊","🤛","🤜","🤞","✌","🤟","🤘","👌","🤏","👈","👉","👆","👇","☝","✋","🤚","🖐","🖖","👋","🤙","💪","🦾","🖕","✍","🙏","🦶","🦵","🦿","💄","💋","👄","🦷","🦴","👅","👂","🦻","👃","👣","👀","🧠","🗣","👤","👥","👶","👧","🧒","👦","👩","🧑","👨","👱","🧔","👵","🧓","👴","👲","👳","🧕","👮","👷","💂","🕵","👰","🤵","👸","🤴","🦸","🦹","🤶","🎅","🧙","🧝","🧛","🧟","🧞","🧜","🧚","👼","🤰","🤱","🙇","💁","🙅","🙆","🙋","🧏","🤦","🤷","🙎","🙍","💇","💆","🧖","💅","🤳","💃","🕺","👯","🕴","🚶","🏃","🧍","🧎","👫","👭","👬","💑","💏","👪","🧶","🧵","🧥","🥼","🦺","👚","👕","👖","🩳","👔","👗","👙","🩱","👘","🥻","🥿","👠","👡","👢","🩰","👞","👟","🥾","🩲","🧦","🧤","🧣","🎩","🧢","👒","🎓","⛑","👑","💍","👝","👛","👜","💼","🎒","🧳","👓","🕶","🥽","🤿","🌂","🦱","🦰","🦳","🦲","🚗","🚕","🚙","🚌","🚎","🏎","🚓","🚑","🚒","🚐","🚚","🚛","🚜","🛺","🛵","🏍","🛴","🚲","🦼","🦽","🚨","🚔","🚍","🚘","🚖","🚡","🚠","🚟","🚃","🚋","🚞","🚝","🚄","🚅","🚈","🚂","🚆","🚇","🚊","🚉","🛫","🛬","🛩","💺","🛰","🚀","🛸","🚁","🛶","⛵","🚤","🛥","🛳","⛴","🚢","⛽","🚧","🚦","🚥","🚏","🗺","🗿","🗽","🗼","🏰","🏯","🏟","🎡","🎢","🎠","⛲","⛱","🏖","🏝","🏜","🌋","⛰","🏔","🗻","🏕","⛺","🏠","🏡","🏘","🏚","🏗","🏭","🏢","🏬","🏣","🏤","🏥","🏦","🏨","🏪","🏫","🏩","💒","🏛","⛪","🕌","🛕","🕍","🕋","⛩","🛤","🛣","🗾","🎑","🏞","🌅","🌄","🌠","🎇","🎆","🌇","🌆","🏙","🌃","🌌","🌉","🌁","🇿","🇾","🇽","🇼","🇻","🇺","🇹","🇸","🇷","🇶","🇵","🇴","🇳","🇲","🇱","🇰","🇯","🇮","🇭","🇬","🇫","🇪","🇩","🇨","🇧","🇦","🏳","🏴","🏁","🚩","🎌","🏻","🏼","🏽","🏾","🏿"]};function o(t){var o=[];return e.each(t.o.plugins.emoji.emojiList,(function(n,a){if(e.isArray(a)){var r=a[0],l=a[1],i=''+r+'',s="emoji-"+r.replace(/:/g,""),x={hasIcon:!1,text:i,fn:function(){return t.execCmd("insertImage",l,!1,!0),!0}};t.addBtnDef(s,x),o.push(s)}else{var F="emoji-"+a.replace(/:/g,""),d={text:a,fn:function(){var e=String.fromCodePoint(a.replace("&#","0"));return t.execCmd("insertText",e),!0}};t.addBtnDef(F,d),o.push(F)}})),o}e.extend(!0,e.trumbowyg,{langs:{en:{emoji:"Add an emoji"},da:{emoji:"Tilføj et humørikon"},de:{emoji:"Emoticon einfügen"},et:{emoji:"Lisa emotikon"},fr:{emoji:"Ajouter un emoji"},hu:{emoji:"Emoji beszúrás"},ja:{emoji:"絵文字の挿入"},ko:{emoji:"이모지 넣기"},ru:{emoji:"Вставить emoji"},tr:{emoji:"Emoji ekle"},zh_cn:{emoji:"添加表情"}},plugins:{emoji:{init:function(e){e.o.plugins.emoji=e.o.plugins.emoji||t;var n={dropdown:o(e)};e.addBtnDef("emoji",n)}}}})}(jQuery),function(e){"use strict";var t={emojiList:["⁉","™","ℹ","↔","↕","↖","↗","↘","↙","⌨","☀","☁","☂","☃","☄","☑","☔","☕","☘","☠","☢","☣","☦","☸","☹","♀","♂","♈","♉","♐","♑","♒","♓","♠","♣","♥","♦","♨","⚒","⚓","⚔","⚕","⚖","⚗","⚙","✂","✅","✈","✉","✒","✔","✖","✡","✨","✳","✴","❄","❇","❓","❔","❕","❗","❣","❤","➕","➖","➗","⤴","⤵","〰","㊗","㊙","🧡","💛","💚","💙","💜","🖤","🤎","🤍","💔","💕","💞","💓","💗","💖","💘","💝","💟","☮","✝","☪","🕉","🔯","🕎","☯","🛐","⛎","♊","♋","♌","♍","♎","♏","🆔","⚛","🉑","📴","📳","🈶","🈚","🈸","🈺","🈷","🆚","💮","🉐","🈴","🈵","🈹","🈲","🅰","🅱","🆎","🆑","🅾","🆘","❌","⭕","🛑","⛔","📛","🚫","💯","💢","🚷","🚯","🚳","🚱","🔞","📵","🚭","‼","🔅","🔆","〽","⚠","🚸","🔱","⚜","🔰","♻","🈯","💹","❎","🌐","💠","Ⓜ","🌀","💤","🏧","🚾","♿","🅿","🈳","🈂","🛂","🛃","🛄","🛅","🚹","🚺","🚼","🚻","🚮","🎦","📶","🈁","🔣","🔤","🔡","🔠","🆖","🆗","🆙","🆒","🆕","🆓","0","1","2","3","4","5","6","7","8","9","🔟","🔢","#","*","⏏","▶","⏸","⏯","⏹","⏺","⏭","⏮","⏩","⏪","⏫","⏬","◀","🔼","🔽","➡","⬅","⬆","⬇","↪","↩","🔀","🔁","🔂","🔄","🔃","🎵","🎶","♾","💲","💱","©","®","➰","➿","🔚","🔙","🔛","🔝","🔜","🔘","⚪","⚫","🔴","🔵","🟤","🟣","🟢","🟡","🟠","🔺","🔻","🔸","🔹","🔶","🔷","🔳","🔲","▪","▫","◾","◽","◼","◻","⬛","⬜","🟧","🟦","🟥","🟫","🟪","🟩","🟨","🔈","🔇","🔉","🔊","🔔","🔕","📣","📢","🗨","👁","💬","💭","🗯","🃏","🎴","🀄","🕐","🕑","🕒","🕓","🕔","🕕","🕖","🕗","🕘","🕙","🕚","🕛","🕜","🕝","🕞","🕟","🕠","🕡","🕢","🕣","🕤","🕥","🕦","🕧","⚽","🏀","🏈","⚾","🥎","🎾","🏐","🏉","🥏","🎱","🏓","🏸","🏒","🏑","🥍","🏏","🥅","⛳","🏹","🎣","🥊","🥋","🎽","🛹","🛷","🪂","⛸","🥌","🎿","⛷","🏂","🏋","🤼","🤸","⛹","🤺","🤾","🏌","🏇","🧘","🏄","🏊","🤽","🚣","🧗","🚵","🚴","🏆","🥇","🥈","🥉","🏅","🎖","🏵","🎗","🎫","🎟","🎪","🤹","🎭","🎨","🎬","🎤","🎧","🎼","🎹","🥁","🎷","🎺","🪕","🎸","🎻","🎲","♟","🎯","🪁","🪀","🎳","🎮","🎰","🧩","⌚","📱","📲","💻","🖥","🖨","🖱","🖲","🕹","🗜","💽","💾","💿","📀","📼","📷","📸","📹","🎥","📽","🎞","📞","☎","📟","📠","📺","📻","🎙","🎚","🎛","🧭","⏱","⏲","⏰","🕰","⌛","⏳","📡","🔋","🔌","💡","🔦","🕯","🧯","🛢","💸","💵","💴","💶","💷","💰","💳","💎","🧰","🔧","🔨","🛠","⛏","🔩","🧱","⛓","🧲","🔫","💣","🧨","🪓","🪒","🔪","🗡","🛡","🚬","⚰","⚱","🏺","🪔","🔮","📿","🧿","💈","🔭","🔬","🕳","🦯","🩺","🩹","💊","💉","🩸","🧬","🦠","🧫","🧪","🌡","🪑","🧹","🧺","🧻","🚽","🚰","🚿","🛁","🛀","🧼","🧽","🧴","🛎","🔑","🗝","🚪","🛋","🛏","🛌","🧸","🖼","🛍","🛒","🎁","🎈","🎏","🎀","🎊","🎉","🎎","🏮","🎐","🧧","📩","📨","📧","💌","📥","📤","📦","🏷","📪","📫","📬","📭","📮","📯","📜","📃","📄","📑","🧾","📊","📈","📉","🗒","🗓","📆","📅","🗑","📇","🗃","🗳","🗄","📋","📁","📂","🗂","🗞","📰","📓","📔","📒","📕","📗","📘","📙","📚","📖","🔖","🧷","🔗","📎","🖇","📐","📏","🧮","📌","📍","🖊","🖋","🖌","🖍","📝","✏","🔍","🔎","🔏","🔐","🔒","🔓","🐶","🐱","🐭","🐹","🐰","🦊","🐻","🐼","🐨","🐯","🦁","🐮","🐷","🐽","🐸","🐵","🙈","🙉","🙊","🐒","🐔","🐧","🐦","🐤","🐣","🐥","🦆","🦅","🦉","🦇","🐺","🐗","🐴","🦄","🐝","🐛","🦋","🐌","🐚","🐞","🐜","🦟","🦗","🕷","🕸","🦂","🐢","🐍","🦎","🦖","🦕","🐙","🦑","🦐","🦞","🦪","🦀","🐡","🐠","🐟","🐬","🐳","🐋","🦈","🐊","🐅","🐆","🦓","🦍","🦧","🐘","🦛","🦏","🐪","🐫","🦒","🦘","🐃","🐂","🐄","🐎","🐖","🐏","🦙","🐑","🐐","🦌","🐕","🦮","🐩","🐈","🐓","🦃","🦚","🦜","🦢","🦩","🕊","🐇","🦥","🦦","🦨","🦝","🦡","🐁","🐀","🐿","🦔","🐾","🐉","🐲","🌵","🎄","🌲","🌳","🌴","🌱","🌿","🍀","🎍","🎋","🍃","🍂","🍁","🍄","🌾","💐","🌷","🌹","🥀","🌺","🌸","🌼","🌻","🌞","🌝","🌛","🌜","🌚","🌕","🌖","🌗","🌘","🌑","🌒","🌓","🌔","🌙","🌎","🌍","🌏","🪐","💫","⭐","🌟","⚡","💥","🔥","🌪","🌈","🌤","⛅","🌥","🌦","🌧","⛈","🌩","🌨","⛄","🌬","💨","💧","💦","🌊","🌫","🍏","🍎","🍐","🍊","🍋","🍌","🍉","🍇","🍓","🍈","🍒","🍑","🥭","🍍","🥥","🥝","🍅","🍆","🥑","🥦","🥬","🥒","🌶","🌽","🥕","🧅","🧄","🥔","🍠","🥐","🥯","🍞","🥖","🥨","🧀","🥚","🍳","🥞","🧇","🥓","🥩","🍗","🍖","🌭","🍔","🍟","🍕","🥪","🧆","🥙","🌮","🌯","🥗","🥘","🥫","🍝","🍜","🍲","🍛","🍣","🍱","🥟","🍤","🍙","🍚","🍘","🍥","🥠","🥮","🍢","🍡","🍧","🍨","🍦","🥧","🧁","🍰","🎂","🍮","🍭","🍬","🍫","🍿","🍩","🍪","🌰","🥜","🍯","🧈","🥛","🍼","🍵","🧉","🥤","🧃","🧊","🍶","🍺","🍻","🥂","🍷","🥃","🍸","🍹","🍾","🥄","🍴","🍽","🥣","🥡","🥢","🧂","😀","😃","😄","😁","😆","😅","😂","🤣","☺","😊","😇","🙂","🙃","😉","😌","😍","🥰","😘","😗","😙","😚","😋","😛","😝","😜","🤪","🤨","🧐","🤓","😎","🤩","🥳","😏","😒","😞","😔","😟","😕","🙁","😣","😖","😫","😩","🥺","😢","😭","😤","😠","😡","🤬","🤯","😳","🥵","🥶","😱","😨","😰","😥","😓","🤗","🤔","🤭","🥱","🤫","🤥","😶","😐","😑","😬","🙄","😯","😦","😧","😮","😲","😴","🤤","😪","😵","🤐","🥴","🤢","🤮","🤧","😷","🤒","🤕","🤑","🤠","😈","👿","👹","👺","🤡","💩","👻","💀","👽","👾","🤖","🎃","😺","😸","😹","😻","😼","😽","🙀","😿","😾","🤲","👐","🙌","👏","🤝","👍","👎","👊","✊","🤛","🤜","🤞","✌","🤟","🤘","👌","🤏","👈","👉","👆","👇","☝","✋","🤚","🖐","🖖","👋","🤙","💪","🦾","🖕","✍","🙏","🦶","🦵","🦿","💄","💋","👄","🦷","🦴","👅","👂","🦻","👃","👣","👀","🧠","🗣","👤","👥","👶","👧","🧒","👦","👩","🧑","👨","👱","🧔","👵","🧓","👴","👲","👳","🧕","👮","👷","💂","🕵","👰","🤵","👸","🤴","🦸","🦹","🤶","🎅","🧙","🧝","🧛","🧟","🧞","🧜","🧚","👼","🤰","🤱","🙇","💁","🙅","🙆","🙋","🧏","🤦","🤷","🙎","🙍","💇","💆","🧖","💅","🤳","💃","🕺","👯","🕴","🚶","🏃","🧍","🧎","👫","👭","👬","💑","💏","👪","🧶","🧵","🧥","🥼","🦺","👚","👕","👖","🩳","👔","👗","👙","🩱","👘","🥻","🥿","👠","👡","👢","🩰","👞","👟","🥾","🩲","🧦","🧤","🧣","🎩","🧢","👒","🎓","⛑","👑","💍","👝","👛","👜","💼","🎒","🧳","👓","🕶","🥽","🤿","🌂","🦱","🦰","🦳","🦲","🚗","🚕","🚙","🚌","🚎","🏎","🚓","🚑","🚒","🚐","🚚","🚛","🚜","🛺","🛵","🏍","🛴","🚲","🦼","🦽","🚨","🚔","🚍","🚘","🚖","🚡","🚠","🚟","🚃","🚋","🚞","🚝","🚄","🚅","🚈","🚂","🚆","🚇","🚊","🚉","🛫","🛬","🛩","💺","🛰","🚀","🛸","🚁","🛶","⛵","🚤","🛥","🛳","⛴","🚢","⛽","🚧","🚦","🚥","🚏","🗺","🗿","🗽","🗼","🏰","🏯","🏟","🎡","🎢","🎠","⛲","⛱","🏖","🏝","🏜","🌋","⛰","🏔","🗻","🏕","⛺","🏠","🏡","🏘","🏚","🏗","🏭","🏢","🏬","🏣","🏤","🏥","🏦","🏨","🏪","🏫","🏩","💒","🏛","⛪","🕌","🛕","🕍","🕋","⛩","🛤","🛣","🗾","🎑","🏞","🌅","🌄","🌠","🎇","🎆","🌇","🌆","🏙","🌃","🌌","🌉","🌁","🇿","🇾","🇽","🇼","🇻","🇺","🇹","🇸","🇷","🇶","🇵","🇴","🇳","🇲","🇱","🇰","🇯","🇮","🇭","🇬","🇫","🇪","🇩","🇨","🇧","🇦","🏳","🏴","🏁","🚩","🎌","🏻","🏼","🏽","🏾","🏿"]};function o(t){var o=[];return e.each(t.o.plugins.emoji.emojiList,(function(n,a){if(e.isArray(a)){var r=a[0],l=a[1],i=''+r+'',s="emoji-"+r.replace(/:/g,""),x={hasIcon:!1,text:i,fn:function(){return t.execCmd("insertImage",l,!1,!0),!0}};t.addBtnDef(s,x),o.push(s)}else{var F="emoji-"+a.replace(/:/g,""),d={text:a,fn:function(){var e=String.fromCodePoint(a.replace("&#","0"));return t.execCmd("insertText",e),!0}};t.addBtnDef(F,d),o.push(F)}})),o}e.extend(!0,e.trumbowyg,{langs:{en:{emoji:"Add an emoji"},da:{emoji:"Tilføj et humørikon"},de:{emoji:"Emoticon einfügen"},et:{emoji:"Lisa emotikon"},fr:{emoji:"Ajouter un emoji"},hu:{emoji:"Emoji beszúrás"},ja:{emoji:"絵文字の挿入"},ko:{emoji:"이모지 넣기"},ru:{emoji:"Вставить emoji"},tr:{emoji:"Emoji ekle"},zh_cn:{emoji:"添加表情"}},plugins:{emoji:{init:function(e){e.o.plugins.emoji=e.o.plugins.emoji||t;var n={dropdown:o(e)};e.addBtnDef("emoji",n)}}}})}(jQuery),function(e){"use strict";e.extend(!0,e.trumbowyg,{langs:{en:{giphy:"Insert GIF"},et:{giphy:"Sisesta GIF"},fr:{giphy:"Insérer un GIF"},hu:{giphy:"GIF beszúrás"},tr:{giphy:"GIF ekle"}}});var t="tbwcancel";function o(t,o,n,a){var r=(o.width()-20)/3,l=t.data.filter((function(e){return""!==e.images.downsized.url})).map((function(e){var t=e.images.downsized,o=t.height/t.width;return'
    '})).join("");if(!0===a){if(0===l.length){if(e("."+n.o.prefix+"giphy-no-result",o).length>0)return;l=''}o.empty()}o.append(l),e("img",o).on("click",(function(){n.restoreRange(),n.execCmd("insertImage",e(this).attr("src"),!1,!0),e("img",o).off(),n.closeModal()}))}var n={rating:"g",apiKey:null,throttleDelay:300,noResultGifUrl:"https://media.giphy.com/media/2Faz9FbRzmwxY0pZS/giphy.gif"};e.extend(!0,e.trumbowyg,{plugins:{giphy:{init:function(a){a.o.plugins.giphy=e.extend({},n,a.o.plugins.giphy||{}),a.addBtnDef("giphy",{fn:function(){if(null===a.o.plugins.giphy.apiKey)throw new Error("You must set a Giphy API Key");var n="https://api.giphy.com/v1/gifs/search?api_key="+a.o.plugins.giphy.apiKey+"&rating="+a.o.plugins.giphy.rating,r=n.replace("/search","/trending"),l={abort:function(){}},i=a.o.prefix,s=''+('')+('
    Powered by
    ')+'
    ';a.openModal(null,s,!1).one(t,(function(){try{l.abort()}catch(e){}a.closeModal()}));var x=e("."+i+"giphy-search"),F=e("."+i+"giphy-close"),d=e("."+i+"giphy-modal"),u=function(){navigator.onLine||e("."+i+"giphy-offline",d).length||(d.empty(),d.append('

    You are offline

    '))};e.ajax({url:r,dataType:"json",success:function(e){o(e,d,a,!0)},error:u});var c,f,m,p,g=(c=function(){var t=x.val();if(0!==t.length){try{l.abort()}catch(e){}l=e.ajax({url:n+"&q="+encodeURIComponent(t),dataType:"json",success:function(e){o(e,d,a,!0)},error:u})}},f=a.o.plugins.giphy.throttleDelay,function(){var e=this,t=+new Date,o=arguments;m&&t'})).join("");if(!0===a){if(0===l.length){if(e("."+n.o.prefix+"giphy-no-result",o).length>0)return;l=''}o.empty()}o.append(l),e("img",o).on("click",(function(){n.restoreRange(),n.execCmd("insertImage",e(this).attr("src"),!1,!0),e("img",o).off(),n.closeModal()}))}var n={rating:"g",apiKey:null,throttleDelay:300,noResultGifUrl:"https://media.giphy.com/media/2Faz9FbRzmwxY0pZS/giphy.gif"};e.extend(!0,e.trumbowyg,{plugins:{giphy:{init:function(a){a.o.plugins.giphy=e.extend({},n,a.o.plugins.giphy||{}),a.addBtnDef("giphy",{fn:function(){if(null===a.o.plugins.giphy.apiKey)throw new Error("You must set a Giphy API Key");var n="https://api.giphy.com/v1/gifs/search?api_key="+a.o.plugins.giphy.apiKey+"&rating="+a.o.plugins.giphy.rating,r=n.replace("/search","/trending"),l={abort:function(){}},i=a.o.prefix,s='
    Powered by
    ';a.openModal(null,s,!1).one(t,(function(){try{l.abort()}catch(e){}a.closeModal()}));var x=e("."+i+"giphy-search"),F=e("."+i+"giphy-close"),d=e("."+i+"giphy-modal"),u=function(){navigator.onLine||e("."+i+"giphy-offline",d).length||(d.empty(),d.append('

    You are offline

    '))};e.ajax({url:r,dataType:"json",success:function(e){o(e,d,a,!0)},error:u});var c,f,m,p,g=(c=function(){var t=x.val();if(0!==t.length){try{l.abort()}catch(e){}l=e.ajax({url:n+"&q="+encodeURIComponent(t),dataType:"json",success:function(e){o(e,d,a,!0)},error:u})}},f=a.o.plugins.giphy.throttleDelay,function(){var e=this,t=+new Date,o=arguments;m&&t",{css:{"font-size":o},html:this.innerHTML})})),e(t.range.startContainer.parentElement).find('span[style=""]').contents().unwrap(),t.restoreRange(),t.syncCode(),t.$c.trigger("tbwchange")}function n(t){var n=[];if(e.each(t.o.plugins.fontsize.sizeList,(function(e,a){t.addBtnDef("fontsize_"+a,{text:''+(t.lang.fontsizes[a]||a)+"",hasIcon:!1,fn:function(){o(t,a)}}),n.push("fontsize_"+a)})),t.o.plugins.fontsize.allowCustomSize){var a="fontsize_custom",r={fn:function(){t.openModalInsert(t.lang.fontCustomSize.title,{size:{label:t.lang.fontCustomSize.label,value:t.lang.fontCustomSize.value}},(function(e){return o(t,e.size),!0}))},text:''+t.lang.fontsizes.custom+"",hasIcon:!1};t.addBtnDef(a,r),n.push(a)}return n}e.extend(!0,e.trumbowyg,{plugins:{fontsize:{init:function(o){o.o.plugins.fontsize=e.extend({},t,o.o.plugins.fontsize||{}),o.addBtnDef("fontsize",{dropdown:n(o)})}}}})}(jQuery),function(e){"use strict";e.extend(!0,e.trumbowyg,{langs:{en:{fontsize:"Font size",fontsizes:{"x-small":"Extra small",small:"Small",medium:"Regular",large:"Large","x-large":"Extra large",custom:"Custom"},fontCustomSize:{title:"Custom Font Size",label:"Font Size",value:"48px"}},da:{fontsize:"Skriftstørrelse",fontsizes:{"x-small":"Ekstra lille",small:"Lille",medium:"Normal",large:"Stor","x-large":"Ekstra stor",custom:"Brugerdefineret"}},de:{fontsize:"Schriftgröße",fontsizes:{"x-small":"Sehr klein",small:"Klein",medium:"Normal",large:"Groß","x-large":"Sehr groß",custom:"Benutzerdefiniert"},fontCustomSize:{title:"Benutzerdefinierte Schriftgröße",label:"Schriftgröße",value:"48px"}},es:{fontsize:"Tamaño de Fuente",fontsizes:{"x-small":"Extra pequeña",small:"Pegueña",medium:"Regular",large:"Grande","x-large":"Extra Grande",custom:"Customizada"},fontCustomSize:{title:"Tamaño de Fuente Customizada",label:"Tamaño de Fuente",value:"48px"}},et:{fontsize:"Teksti suurus",fontsizes:{"x-small":"Väga väike",small:"Väike",medium:"Tavaline",large:"Suur","x-large":"Väga suur",custom:"Määra ise"},fontCustomSize:{title:"Kohandatud teksti suurus",label:"Teksti suurus",value:"48px"}},fr:{fontsize:"Taille de la police",fontsizes:{"x-small":"Très petit",small:"Petit",medium:"Normal",large:"Grand","x-large":"Très grand",custom:"Taille personnalisée"},fontCustomSize:{title:"Taille de police personnalisée",label:"Taille de la police",value:"48px"}},hu:{fontsize:"Betű méret",fontsizes:{"x-small":"Extra kicsi",small:"Kicsi",medium:"Normális",large:"Nagy","x-large":"Extra nagy",custom:"Egyedi"},fontCustomSize:{title:"Egyedi betű méret",label:"Betű méret",value:"48px"}},it:{fontsize:"Dimensioni del testo",fontsizes:{"x-small":"Molto piccolo",small:"piccolo",regular:"normale",large:"grande","x-large":"Molto grande",custom:"Personalizzato"},fontCustomSize:{title:"Dimensioni del testo personalizzato",label:"Dimensioni del testo",value:"48px"}},ko:{fontsize:"글꼴 크기",fontsizes:{"x-small":"아주 작게",small:"작게",medium:"보통",large:"크게","x-large":"아주 크게",custom:"사용자 지정"},fontCustomSize:{title:"사용자 지정 글꼴 크기",label:"글꼴 크기",value:"48px"}},nl:{fontsize:"Lettergrootte",fontsizes:{"x-small":"Extra klein",small:"Klein",medium:"Normaal",large:"Groot","x-large":"Extra groot",custom:"Tilpasset"}},pt_br:{fontsize:"Tamanho da fonte",fontsizes:{"x-small":"Extra pequeno",small:"Pequeno",regular:"Médio",large:"Grande","x-large":"Extra grande",custom:"Personalizado"},fontCustomSize:{title:"Tamanho de Fonte Personalizado",label:"Tamanho de Fonte",value:"48px"}},tr:{fontsize:"Yazı boyutu",fontsizes:{"x-small":"Çok küçük",small:"Küçük",medium:"Normal",large:"Büyük","x-large":"Çok büyük",custom:"Özel"},fontCustomSize:{title:"Özel Yazı Boyutu",label:"Yazı Boyutu",value:"48px"}},zh_tw:{fontsize:"字體大小",fontsizes:{"x-small":"最小",small:"小",medium:"中",large:"大","x-large":"最大",custom:"自訂大小"},fontCustomSize:{title:"自訂義字體大小",label:"字體大小",value:"48px"}}}});var t={sizeList:["x-small","small","medium","large","x-large"],allowCustomSize:!0};function o(t,o){t.$ed.focus(),t.saveRange(),t.execCmd("fontSize","1"),t.$ed.find('font[size="1"]').replaceWith((function(){return e("",{css:{"font-size":o},html:this.innerHTML})})),e(t.range.startContainer.parentElement).find('span[style=""]').contents().unwrap(),t.restoreRange(),t.syncCode(),t.$c.trigger("tbwchange")}function n(t){var n=[];if(e.each(t.o.plugins.fontsize.sizeList,(function(e,a){t.addBtnDef("fontsize_"+a,{text:''+(t.lang.fontsizes[a]||a)+"",hasIcon:!1,fn:function(){o(t,a)}}),n.push("fontsize_"+a)})),t.o.plugins.fontsize.allowCustomSize){var a="fontsize_custom",r={fn:function(){t.openModalInsert(t.lang.fontCustomSize.title,{size:{label:t.lang.fontCustomSize.label,value:t.lang.fontCustomSize.value}},(function(e){return o(t,e.size),!0}))},text:''+t.lang.fontsizes.custom+"",hasIcon:!1};t.addBtnDef(a,r),n.push(a)}return n}e.extend(!0,e.trumbowyg,{plugins:{fontsize:{init:function(o){o.o.plugins.fontsize=e.extend({},t,o.o.plugins.fontsize||{}),o.addBtnDef("fontsize",{dropdown:n(o)})}}}})}(jQuery),function(e){"use strict";e.extend(!0,e.trumbowyg,{langs:{en:{history:{redo:"Redo",undo:"Undo"}},da:{history:{redo:"Annuller fortryd",undo:"Fortryd"}},de:{history:{redo:"Wiederholen",undo:"Rückgängig"}},et:{history:{redo:"Võta tagasi",undo:"Tee uuesti"}},fr:{history:{redo:"Annuler",undo:"Rétablir"}},hu:{history:{redo:"Visszállít",undo:"Visszavon"}},ko:{history:{redo:"다시 실행",undo:"되돌리기"}},pt_br:{history:{redo:"Refazer",undo:"Desfazer"}},zh_tw:{history:{redo:"重做",undo:"復原"}}},plugins:{history:{init:function(t){t.o.plugins.history=e.extend(!0,{_stack:[],_index:-1,_focusEl:void 0},t.o.plugins.history||{});var o={title:t.lang.history.redo,ico:"redo",key:"Y",fn:function(){if(t.o.plugins.history._index0){t.o.plugins.history._index-=1;var e=t.o.plugins.history._index,o=t.o.plugins.history._stack[e];t.execCmd("html",o),t.o.plugins.history._stack[e]=t.$ed.html(),i(),a()}}},a=function(){var e=t.o.plugins.history._index,o=t.o.plugins.history._stack.length,n=0!==o&&e!==o-1;r("historyUndo",e>0),r("historyRedo",n)},r=function(e,o){var n=t.$box.find(".trumbowyg-"+e+"-button");o?n.removeClass("trumbowyg-disable"):n.hasClass("trumbowyg-disable")||n.addClass("trumbowyg-disable")},l=function(e,t){if(e===t)return!0;if(null==e||null==t)return!1;if(e.length!==t.length)return!1;for(var o=0;o0&&(o.setStartAfter(e.childNodes[e.childNodes.length-1]),o.setEndAfter(e.childNodes[e.childNodes.length-1]),t.doc.getSelection().removeAllRanges(),t.doc.getSelection().addRange(o))};t.$c.on("tbwinit tbwchange",(function(){var o,n,r=t.o.plugins.history._index,i=t.o.plugins.history._stack,s=i.slice(-1)[0]||"

    ",x=i[r],F=t.$ed.html(),d=t.doc.getSelection().focusNode,u="",c=t.o.plugins.history._focusEl;o=e("
    "+s+"
    ").find("*").map((function(){return this.localName})),n=e("
    "+F+"
    ").find("*").map((function(){return this.localName})),d&&(t.o.plugins.history._focusEl=d,u=d.outerHTML||d.textContent),F!==x&&(u.slice(-1).match(/\s/)||!l(o,n)||t.o.plugins.history._index<=0||d!==c?(t.o.plugins.history._index+=1,t.o.plugins.history._stack=i.slice(0,t.o.plugins.history._index),t.o.plugins.history._stack.push(F)):t.o.plugins.history._stack[r]=F,a())})),t.addBtnDef("historyRedo",o),t.addBtnDef("historyUndo",n)}}}})}(jQuery),function(e){"use strict";e.extend(!0,e.trumbowyg,{langs:{en:{history:{redo:"Redo",undo:"Undo"}},da:{history:{redo:"Annuller fortryd",undo:"Fortryd"}},de:{history:{redo:"Wiederholen",undo:"Rückgängig"}},et:{history:{redo:"Võta tagasi",undo:"Tee uuesti"}},fr:{history:{redo:"Annuler",undo:"Rétablir"}},hu:{history:{redo:"Visszállít",undo:"Visszavon"}},ko:{history:{redo:"다시 실행",undo:"되돌리기"}},pt_br:{history:{redo:"Refazer",undo:"Desfazer"}},zh_tw:{history:{redo:"重做",undo:"復原"}}},plugins:{history:{init:function(t){t.o.plugins.history=e.extend(!0,{_stack:[],_index:-1,_focusEl:void 0},t.o.plugins.history||{});var o={title:t.lang.history.redo,ico:"redo",key:"Y",fn:function(){if(t.o.plugins.history._index0){t.o.plugins.history._index-=1;var e=t.o.plugins.history._index,o=t.o.plugins.history._stack[e];t.execCmd("html",o),t.o.plugins.history._stack[e]=t.$ed.html(),l(),a()}}},a=function(){var e=t.o.plugins.history._index,o=t.o.plugins.history._stack.length,n=0!==o&&e!==o-1;r("historyUndo",e>0),r("historyRedo",n)},r=function(e,o){var n=t.$box.find(".trumbowyg-"+e+"-button");o?n.removeClass("trumbowyg-disable"):n.hasClass("trumbowyg-disable")||n.addClass("trumbowyg-disable")},l=function(){var e=t.doc.getSelection().focusNode,o=t.doc.createRange();e.childNodes.length>0&&(o.setStartAfter(e.childNodes[e.childNodes.length-1]),o.setEndAfter(e.childNodes[e.childNodes.length-1]),t.doc.getSelection().removeAllRanges(),t.doc.getSelection().addRange(o))};t.$c.on("tbwinit tbwchange",(function(){var o,n,r=t.o.plugins.history._index,l=t.o.plugins.history._stack,i=l.slice(-1)[0]||"

    ",s=l[r],x=t.$ed.html(),F=t.doc.getSelection().focusNode,d="",u=t.o.plugins.history._focusEl;o=e("
    "+i+"
    ").find("*").map((function(){return this.localName})),n=e("
    "+x+"
    ").find("*").map((function(){return this.localName})),F&&(t.o.plugins.history._focusEl=F,d=F.outerHTML||F.textContent),x!==s&&(d.slice(-1).match(/\s/)||!function(e,t){if(e===t)return!0;if(null==e||null==t)return!1;if(e.length!==t.length)return!1;for(var o=0;o")[0];return o.range.deleteContents(),o.range.insertNode(a),!0}))}};o.addBtnDef("insertAudio",n)}}}})}(jQuery),function(e){"use strict";var t={src:{label:"URL",required:!0},autoplay:{label:"AutoPlay",required:!1,type:"checkbox"},muted:{label:"Muted",required:!1,type:"checkbox"},preload:{label:"preload options",required:!1}};e.extend(!0,e.trumbowyg,{langs:{en:{insertAudio:"Insert Audio"},da:{insertAudio:"Indsæt lyd"},et:{insertAudio:"Lisa helifail"},fr:{insertAudio:"Insérer un son"},hu:{insertAudio:"Audio beszúrás"},ja:{insertAudio:"音声の挿入"},ko:{insertAudio:"소리 넣기"},pt_br:{insertAudio:"Inserir áudio"},ru:{insertAudio:"Вставить аудио"},tr:{insertAudio:"Ses Ekle"}},plugins:{insertAudio:{init:function(o){var n={fn:function(){o.openModalInsert(o.lang.insertAudio,t,(function(t){var n="")[0];return o.range.deleteContents(),o.range.insertNode(a),!0}))}};o.addBtnDef("insertAudio",n)}}}})}(jQuery),function(e){"use strict";e.extend(!0,e.trumbowyg,{langs:{en:{lineheight:"Line height",lineheights:{.9:"Small",normal:"Regular",1.5:"Large","2.0":"Extra large"}},da:{lineheight:"Linjehøjde",lineheights:{.9:"Lille",normal:"Normal",1.5:"Stor","2.0":"Ekstra stor"}},et:{lineheight:"Reavahe",lineheights:{.9:"Väike",normal:"Tavaline",1.5:"Suur","2.0":"Väga suur"}},fr:{lineheight:"Hauteur de ligne",lineheights:{.9:"Petite",normal:"Normale",1.5:"Grande","2.0":"Très grande"}},hu:{lineheight:"Line height",lineheights:{.9:"Small",normal:"Regular",1.5:"Large","2.0":"Extra large"}},it:{lineheight:"Altezza linea",lineheights:{.9:"Bassa",normal:"Normale",1.5:"Alta","2.0":"Molto alta"}},ko:{lineheight:"줄 간격",lineheights:{.9:"좁게",normal:"보통",1.5:"넓게","2.0":"아주 넓게"}},nl:{lineheight:"Regelhoogte",lineheights:{.9:"Klein",normal:"Normaal",1.5:"Groot","2.0":"Extra groot"}},pt_br:{lineheight:"Altura de linha",lineheights:{.9:"Pequena",normal:"Regular",1.5:"Grande","2.0":"Extra grande"}},tr:{lineheight:"Satır yüksekliği",lineheights:{.9:"Küçük",normal:"Normal",1.5:"Büyük","2.0":"Çok Büyük"}},zh_tw:{lineheight:"文字間距",lineheights:{.9:"小",normal:"正常",1.5:"大","2.0":"特大"}}}});var t={sizeList:["0.9","normal","1.5","2.0"]};function o(t){var o=[];return e.each(t.o.plugins.lineheight.sizeList,(function(n,a){t.addBtnDef("lineheight_"+a,{text:t.lang.lineheights[a]||a,hasIcon:!1,fn:function(){if(t.saveRange(),""!==t.getRangeText().replace(/\s/g,""))try{var o=function(){var e,t=null;window.getSelection?(e=window.getSelection()).rangeCount&&1!==(t=e.getRangeAt(0).commonAncestorContainer).nodeType&&(t=t.parentNode):(e=document.selection)&&"Control"!==e.type&&(t=e.createRange().parentElement());return t}();e(o).css("lineHeight",a)}catch(e){}}}),o.push("lineheight_"+a)})),o}e.extend(!0,e.trumbowyg,{plugins:{lineheight:{init:function(n){n.o.plugins.lineheight=e.extend({},t,n.o.plugins.lineheight||{}),n.addBtnDef("lineheight",{dropdown:o(n)})}}}})}(jQuery),function(e){"use strict";e.extend(!0,e.trumbowyg,{langs:{en:{lineheight:"Line height",lineheights:{.9:"Small",normal:"Regular",1.5:"Large","2.0":"Extra large"}},da:{lineheight:"Linjehøjde",lineheights:{.9:"Lille",normal:"Normal",1.5:"Stor","2.0":"Ekstra stor"}},et:{lineheight:"Reavahe",lineheights:{.9:"Väike",normal:"Tavaline",1.5:"Suur","2.0":"Väga suur"}},fr:{lineheight:"Hauteur de ligne",lineheights:{.9:"Petite",normal:"Normale",1.5:"Grande","2.0":"Très grande"}},hu:{lineheight:"Line height",lineheights:{.9:"Small",normal:"Regular",1.5:"Large","2.0":"Extra large"}},it:{lineheight:"Altezza linea",lineheights:{.9:"Bassa",normal:"Normale",1.5:"Alta","2.0":"Molto alta"}},ko:{lineheight:"줄 간격",lineheights:{.9:"좁게",normal:"보통",1.5:"넓게","2.0":"아주 넓게"}},nl:{lineheight:"Regelhoogte",lineheights:{.9:"Klein",normal:"Normaal",1.5:"Groot","2.0":"Extra groot"}},pt_br:{lineheight:"Altura de linha",lineheights:{.9:"Pequena",normal:"Regular",1.5:"Grande","2.0":"Extra grande"}},tr:{lineheight:"Satır yüksekliği",lineheights:{.9:"Küçük",normal:"Normal",1.5:"Büyük","2.0":"Çok Büyük"}},zh_tw:{lineheight:"文字間距",lineheights:{.9:"小",normal:"正常",1.5:"大","2.0":"特大"}}}});var t={sizeList:["0.9","normal","1.5","2.0"]};function o(t){var o=[];return e.each(t.o.plugins.lineheight.sizeList,(function(n,a){t.addBtnDef("lineheight_"+a,{text:t.lang.lineheights[a]||a,hasIcon:!1,fn:function(){if(t.saveRange(),""!==t.getRangeText().replace(/\s/g,""))try{var o=function(){var e,t=null;return window.getSelection?(e=window.getSelection()).rangeCount&&1!==(t=e.getRangeAt(0).commonAncestorContainer).nodeType&&(t=t.parentNode):(e=document.selection)&&"Control"!==e.type&&(t=e.createRange().parentElement()),t}();e(o).css("lineHeight",a)}catch(e){}}}),o.push("lineheight_"+a)})),o}e.extend(!0,e.trumbowyg,{plugins:{lineheight:{init:function(n){n.o.plugins.lineheight=e.extend({},t,n.o.plugins.lineheight||{}),n.addBtnDef("lineheight",{dropdown:o(n)})}}}})}(jQuery),function(e){"use strict";var t={source:[],formatDropdownItem:function(e){return e.login},formatResult:function(e){return"@"+e.login+" "}};function o(t,o){var n=[];return e.each(t,(function(e,t){var a="mention-"+e,r={hasIcon:!1,text:o.o.plugins.mention.formatDropdownItem(t),fn:function(){return o.execCmd("insertHTML",o.o.plugins.mention.formatResult(t)),!0}};o.addBtnDef(a,r),n.push(a)})),n}e.extend(!0,e.trumbowyg,{langs:{en:{mention:"Mention"},da:{mention:"Nævn"},et:{mention:"Maini"},fr:{mention:"Mentionner"},hu:{mention:"Említ"},ko:{mention:"언급"},pt_br:{mention:"Menção"},ru:{mention:"Упомянуть"},tr:{mention:"Bahset"},zh_tw:{mention:"標記"}},plugins:{mention:{init:function(n){n.o.plugins.mention=e.extend(!0,{},t,n.o.plugins.mention||{});var a={dropdown:o(n.o.plugins.mention.source,n)};n.addBtnDef("mention",a)}}}})}(jQuery),function(e){"use strict";var t={source:[],formatDropdownItem:function(e){return e.login},formatResult:function(e){return"@"+e.login+" "}};function o(t,o){var n=[];return e.each(t,(function(e,t){var a="mention-"+e,r={hasIcon:!1,text:o.o.plugins.mention.formatDropdownItem(t),fn:function(){return o.execCmd("insertHTML",o.o.plugins.mention.formatResult(t)),!0}};o.addBtnDef(a,r),n.push(a)})),n}e.extend(!0,e.trumbowyg,{langs:{en:{mention:"Mention"},da:{mention:"Nævn"},et:{mention:"Maini"},fr:{mention:"Mentionner"},hu:{mention:"Említ"},ko:{mention:"언급"},pt_br:{mention:"Menção"},ru:{mention:"Упомянуть"},tr:{mention:"Bahset"},zh_tw:{mention:"標記"}},plugins:{mention:{init:function(n){n.o.plugins.mention=e.extend(!0,{},t,n.o.plugins.mention||{});var a={dropdown:o(n.o.plugins.mention.source,n)};n.addBtnDef("mention",a)}}}})}(jQuery),function(e){"use strict";e.extend(!0,e.trumbowyg,{langs:{en:{mathml:"Insert Formulas",formulas:"Formulas",inline:"Inline"},da:{mathml:"Indsæt formler",formulas:"Formler",inline:"Inline"},et:{mathml:"Sisesta valem",formulas:"Valemid",inline:"Teksti sees"},fr:{mathml:"Inserer une formule",formulas:"Formule",inline:"En ligne"},hu:{mathml:"Formulák beszúrás",formulas:"Formulák",inline:"Inline"},ko:{mathml:"수식 넣기",formulas:"수식",inline:"글 안에 넣기"},pt_br:{mathml:"Inserir fórmulas",formulas:"Fórmulas",inline:"Em linha"},tr:{mathml:"Formül Ekle",formulas:"Formüller",inline:"Satır içi"},zh_tw:{mathml:"插入方程式",formulas:"方程式",inline:"內嵌"}},plugins:{mathml:{init:function(t){var o={fn:function(){t.saveRange();var o={formulas:{label:t.lang.formulas,required:!0,value:""},inline:{label:t.lang.inline,attributes:{checked:!0},type:"checkbox",required:!1}};o.formulas.value=t.getRangeText(),o.inline.attributes.checked=!0,t.openModalInsert(t.lang.mathml,o,(function n(a){var r=a.inline?"$":"$$";if(t.currentMathNode)e(t.currentMathNode).html(r+" "+a.formulas+" "+r).attr("formulas",a.formulas).attr("inline",a.inline?"true":"false");else{var l=''+r+" "+a.formulas+" "+r+"",i=e(l)[0];i.onclick=function(){t.currentMathNode=this,o.formulas.value=e(this).attr("formulas"),"true"===e(this).attr("inline")?o.inline.attributes.checked=!0:delete o.inline.attributes.checked,t.openModalInsert(t.lang.mathml,o,n)},t.range.deleteContents(),t.range.insertNode(i)}return t.currentMathNode=!1,MathJax.Hub.Queue(["Typeset",MathJax.Hub]),!0}))}};t.addBtnDef("mathml",o)}}}})}(jQuery),function(e){"use strict";e.extend(!0,e.trumbowyg,{langs:{en:{mathml:"Insert Formulas",formulas:"Formulas",inline:"Inline"},da:{mathml:"Indsæt formler",formulas:"Formler",inline:"Inline"},et:{mathml:"Sisesta valem",formulas:"Valemid",inline:"Teksti sees"},fr:{mathml:"Inserer une formule",formulas:"Formule",inline:"En ligne"},hu:{mathml:"Formulák beszúrás",formulas:"Formulák",inline:"Inline"},ko:{mathml:"수식 넣기",formulas:"수식",inline:"글 안에 넣기"},pt_br:{mathml:"Inserir fórmulas",formulas:"Fórmulas",inline:"Em linha"},tr:{mathml:"Formül Ekle",formulas:"Formüller",inline:"Satır içi"},zh_tw:{mathml:"插入方程式",formulas:"方程式",inline:"內嵌"}},plugins:{mathml:{init:function(t){var o={fn:function(){t.saveRange();var o={formulas:{label:t.lang.formulas,required:!0,value:""},inline:{label:t.lang.inline,attributes:{checked:!0},type:"checkbox",required:!1}};o.formulas.value=t.getRangeText(),o.inline.attributes.checked=!0,t.openModalInsert(t.lang.mathml,o,(function n(a){var r=a.inline?"$":"$$";if(t.currentMathNode)e(t.currentMathNode).html(r+" "+a.formulas+" "+r).attr("formulas",a.formulas).attr("inline",a.inline?"true":"false");else{var l=''+r+" "+a.formulas+" "+r+"",i=e(l)[0];i.onclick=function(){t.currentMathNode=this,o.formulas.value=e(this).attr("formulas"),"true"===e(this).attr("inline")?o.inline.attributes.checked=!0:delete o.inline.attributes.checked,t.openModalInsert(t.lang.mathml,o,n)},t.range.deleteContents(),t.range.insertNode(i)}return t.currentMathNode=!1,MathJax.Hub.Queue(["Typeset",MathJax.Hub]),!0}))}};t.addBtnDef("mathml",o)}}}})}(jQuery),function(e){"use strict";var t={proxy:"https://noembed.com/embed?nowrap=on",urlFiled:"url",data:[],success:void 0,error:void 0};e.extend(!0,e.trumbowyg,{langs:{en:{noembed:"Noembed",noembedError:"Error"},cs:{noembedError:"Chyba"},da:{noembedError:"Fejl"},et:{noembed:"Noembed",noembedError:"Viga"},fr:{noembedError:"Erreur"},hu:{noembed:"Noembed",noembedError:"Hiba"},ja:{noembedError:"エラー"},ko:{noembed:"oEmbed 넣기",noembedError:"에러"},pt_br:{noembed:"Incorporar",noembedError:"Erro"},ru:{noembedError:"Ошибка"},sk:{noembedError:"Chyba"},tr:{noembedError:"Hata"},zh_tw:{noembed:"插入影片",noembedError:"錯誤"}},plugins:{noembed:{init:function(o){o.o.plugins.noembed=e.extend(!0,{},t,o.o.plugins.noembed||{});var n={fn:function(){var t=o.openModalInsert(o.lang.noembed,{url:{label:"URL",required:!0}},(function(n){e.ajax({url:o.o.plugins.noembed.proxy,type:"GET",data:n,cache:!1,dataType:"json",success:o.o.plugins.noembed.success||function(n){n.html?(o.execCmd("insertHTML",n.html),setTimeout((function(){o.closeModal()}),250)):o.addErrorOnModalField(e("input[type=text]",t),n.error)},error:o.o.plugins.noembed.error||function(){o.addErrorOnModalField(e("input[type=text]",t),o.lang.noembedError)}})}))}};o.addBtnDef("noembed",n)}}}})}(jQuery),function(e){"use strict";var t={proxy:"https://noembed.com/embed?nowrap=on",urlFiled:"url",data:[],success:void 0,error:void 0};e.extend(!0,e.trumbowyg,{langs:{en:{noembed:"Noembed",noembedError:"Error"},cs:{noembedError:"Chyba"},da:{noembedError:"Fejl"},et:{noembed:"Noembed",noembedError:"Viga"},fr:{noembedError:"Erreur"},hu:{noembed:"Noembed",noembedError:"Hiba"},ja:{noembedError:"エラー"},ko:{noembed:"oEmbed 넣기",noembedError:"에러"},pt_br:{noembed:"Incorporar",noembedError:"Erro"},ru:{noembedError:"Ошибка"},sk:{noembedError:"Chyba"},tr:{noembedError:"Hata"},zh_tw:{noembed:"插入影片",noembedError:"錯誤"}},plugins:{noembed:{init:function(o){o.o.plugins.noembed=e.extend(!0,{},t,o.o.plugins.noembed||{});var n={fn:function(){var t=o.openModalInsert(o.lang.noembed,{url:{label:"URL",required:!0}},(function(n){e.ajax({url:o.o.plugins.noembed.proxy,type:"GET",data:n,cache:!1,dataType:"json",success:o.o.plugins.noembed.success||function(n){n.html?(o.execCmd("insertHTML",n.html),setTimeout((function(){o.closeModal()}),250)):o.addErrorOnModalField(e("input[type=text]",t),n.error)},error:o.o.plugins.noembed.error||function(){o.addErrorOnModalField(e("input[type=text]",t),o.lang.noembedError)}})}))}};o.addBtnDef("noembed",n)}}}})}(jQuery),function(e){"use strict";e.extend(!0,e.trumbowyg,{plugins:{pasteImage:{init:function(e){e.pasteHandlers.push((function(t){try{for(var o,n=(t.originalEvent||t).clipboardData.items,a=!1,r=n.length-1;r>=0;r-=1)n[r].type.match(/^image\//)&&((o=new FileReader).onloadend=function(t){e.execCmd("insertImage",t.target.result,!1,!0)},o.readAsDataURL(n[r].getAsFile()),a=!0);a&&(t.stopPropagation(),t.preventDefault())}catch(e){}}))}}}})}(jQuery),function(e){"use strict";e.extend(!0,e.trumbowyg,{plugins:{pasteImage:{init:function(e){e.pasteHandlers.push((function(t){try{for(var o,n=(t.originalEvent||t).clipboardData.items,a=!1,r=n.length-1;r>=0;r-=1)n[r].type.match(/^image\//)&&((o=new FileReader).onloadend=function(t){e.execCmd("insertImage",t.target.result,!1,!0)},o.readAsDataURL(n[r].getAsFile()),a=!0);a&&(t.stopPropagation(),t.preventDefault())}catch(e){}}))}}}})}(jQuery),function(e){"use strict";var t={enabled:!0,endpoints:["https://noembed.com/embed?nowrap=on","https://api.maxmade.nl/url2iframe/embed"]};e.extend(!0,e.trumbowyg,{plugins:{pasteEmbed:{init:function(o){o.o.plugins.pasteEmbed=e.extend(!0,{},t,o.o.plugins.pasteEmbed||{}),o.o.plugins.pasteEmbed.enabled&&o.pasteHandlers.push((function(t){try{var n=(t.originalEvent||t).clipboardData.getData("Text"),a=o.o.plugins.pasteEmbed.endpoints,r=null;if(n.startsWith("http")){t.stopPropagation(),t.preventDefault();var l={url:n.trim()},i="",s=0;r&&r.transport&&r.transport.abort(),r=e.ajax({crossOrigin:!0,url:a[s],type:"GET",data:l,cache:!1,dataType:"jsonp",success:function(e){e.html?(s=0,i=e.html):s+=1},error:function(){s+=1},complete:function(){0===i.length&&s",{href:n,text:n}).prop("outerHTML")),i.length>0&&(s=0,o.execCmd("insertHTML",i))}})}}catch(e){}}))}}}})}(jQuery),function(e){"use strict";var t={enabled:!0,endpoints:["https://noembed.com/embed?nowrap=on","https://api.maxmade.nl/url2iframe/embed"]};e.extend(!0,e.trumbowyg,{plugins:{pasteEmbed:{init:function(o){o.o.plugins.pasteEmbed=e.extend(!0,{},t,o.o.plugins.pasteEmbed||{}),o.o.plugins.pasteEmbed.enabled&&o.pasteHandlers.push((function(t){try{var n=(t.originalEvent||t).clipboardData.getData("Text"),a=o.o.plugins.pasteEmbed.endpoints,r=null;if(n.startsWith("http")){t.stopPropagation(),t.preventDefault();var l={url:n.trim()},i="",s=0;r&&r.transport&&r.transport.abort(),r=e.ajax({crossOrigin:!0,url:a[s],type:"GET",data:l,cache:!1,dataType:"jsonp",success:function(e){e.html?(s=0,i=e.html):s+=1},error:function(){s+=1},complete:function(){0===i.length&&s",{href:n,text:n}).prop("outerHTML")),i.length>0&&(s=0,o.execCmd("insertHTML",i))}})}}catch(e){}}))}}}})}(jQuery),function(e){"use strict";e.extend(!0,e.trumbowyg,{langs:{en:{preformatted:"Code sample
    "},da:{preformatted:"Præformateret 
    "},et:{preformatted:"Eelvormindatud tekst 
    "},fr:{preformatted:"Exemple de code 
    "},hu:{preformatted:"Kód minta 
    "},it:{preformatted:"Codice 
    "},ja:{preformatted:"コードサンプル 
    "},ko:{preformatted:"코드 예제 
    "},pt_br:{preformatted:"Exemple de código 
    "},ru:{preformatted:"Пример кода 
    "},tr:{preformatted:"Kod örneği 
    "},zh_cn:{preformatted:"代码示例 
    "},zh_tw:{preformatted:"代碼範例 
    "}},plugins:{preformatted:{init:function(t){var o={fn:function(){t.saveRange();var o,n,a=t.getRangeText();if(""!==a.replace(/\s/g,""))try{var r=function(){var e,t=null;window.getSelection?(e=window.getSelection()).rangeCount&&1!==(t=e.getRangeAt(0).commonAncestorContainer).nodeType&&(t=t.parentNode):(e=document.selection)&&"Control"!==e.type&&(t=e.createRange().parentElement());return t}().tagName.toLowerCase();if("code"===r||"pre"===r)return function(){var t=null;if(document.selection)t=document.selection.createRange().parentElement();else{var o=window.getSelection();o.rangeCount>0&&(t=o.getRangeAt(0).startContainer.parentNode)}var n=e(t).contents().closest("pre").length,a=e(t).contents().closest("code").length;n&&a?e(t).contents().unwrap("code").unwrap("pre"):n?e(t).contents().unwrap("pre"):a&&e(t).contents().unwrap("code")}();t.execCmd("insertHTML","
    "+(o=a,(n=document.createElement("DIV")).innerHTML=o,(n.textContent||n.innerText||"")+"
    "))}catch(e){}},tag:"pre"};t.addBtnDef("preformatted",o)}}}})}(jQuery),function(e){"use strict";e.extend(!0,e.trumbowyg,{langs:{en:{preformatted:"Code sample
    "},da:{preformatted:"Præformateret 
    "},et:{preformatted:"Eelvormindatud tekst 
    "},fr:{preformatted:"Exemple de code 
    "},hu:{preformatted:"Kód minta 
    "},it:{preformatted:"Codice 
    "},ja:{preformatted:"コードサンプル 
    "},ko:{preformatted:"코드 예제 
    "},pt_br:{preformatted:"Exemple de código 
    "},ru:{preformatted:"Пример кода 
    "},tr:{preformatted:"Kod örneği 
    "},zh_cn:{preformatted:"代码示例 
    "},zh_tw:{preformatted:"代碼範例 
    "}},plugins:{preformatted:{init:function(t){var o={fn:function(){t.saveRange();var o,n,a=t.getRangeText();if(""!==a.replace(/\s/g,""))try{var r=function(){var e,t=null;return window.getSelection?(e=window.getSelection()).rangeCount&&1!==(t=e.getRangeAt(0).commonAncestorContainer).nodeType&&(t=t.parentNode):(e=document.selection)&&"Control"!==e.type&&(t=e.createRange().parentElement()),t}().tagName.toLowerCase();if("code"===r||"pre"===r)return function(){var t=null;if(document.selection)t=document.selection.createRange().parentElement();else{var o=window.getSelection();o.rangeCount>0&&(t=o.getRangeAt(0).startContainer.parentNode)}var n=e(t).contents().closest("pre").length,a=e(t).contents().closest("code").length;n&&a?e(t).contents().unwrap("code").unwrap("pre"):n?e(t).contents().unwrap("pre"):a&&e(t).contents().unwrap("code")}();t.execCmd("insertHTML","
    "+(o=a,(n=document.createElement("DIV")).innerHTML=o,(n.textContent||n.innerText||"")+"
    "))}catch(e){}},tag:"pre"};t.addBtnDef("preformatted",o)}}}})}(jQuery),function(e){"use strict";var t={minSize:32,step:4};function o(e){e.stopPropagation(),e.preventDefault()}var n=function(t){this.resizeCanvas=document.createElement("canvas"),this.resizeCanvas.setAttribute("tabindex","0"),this.resizeCanvas.id="trumbowyg-resizimg-"+ +new Date,this.ctx=null,this.resizeImg=null,this.pressEscape=function(e){e.reset()},this.pressBackspaceOrDelete=function(o){e(o.resizeCanvas).remove(),o.resizeImg=null,null!==t&&(t.syncCode(),t.$c.trigger("tbwchange"))};var n,a,r=!1,l=!1,i=function(e){var t=e.getBoundingClientRect();n=t.left,a=t.top},s=function(e,t,o,n,a){return t.translate(.5,.5),t.lineWidth=1,t.drawImage(o,5,5,n-10,a-10),t.beginPath(),t.rect(5,5,n-10,a-10),t.stroke(),t.beginPath(),t.fillStyle="rgb(255, 255, 255)",t.rect(n-10,a-10,9,9),t.fill(),t.stroke(),i(e),t};this.init=function(){var t=this;e(window).on("scroll resize",(function(){t.reCalcOffset()}))},this.reCalcOffset=function(){i(this.resizeCanvas)},this.canvasId=function(){return this.resizeCanvas.id},this.isActive=function(){return null!==this.resizeImg},this.isFocusedNow=function(){return r},this.blurNow=function(){r=!1},this.reset=function(){null!==this.resizeImg&&(this.resizeImg.setAttribute("style","width: 100%; max-width: "+(this.resizeCanvas.clientWidth-10)+"px; height: auto; max-height: "+(this.resizeCanvas.clientHeight-10)+"px;"),e(this.resizeCanvas).replaceWith(e(this.resizeImg)),this.resizeCanvas.removeAttribute("style"),this.resizeImg=null)},this.setup=function(i,x){if(this.resizeImg=i,!this.resizeCanvas.getContext)return!1;r=!0,this.resizeCanvas.width=e(this.resizeImg).width()+10,this.resizeCanvas.height=e(this.resizeImg).height()+10,this.resizeCanvas.style.margin="-5px",this.ctx=this.resizeCanvas.getContext("2d"),e(this.resizeImg).replaceWith(e(this.resizeCanvas)),s(this.resizeCanvas,this.ctx,this.resizeImg,this.resizeCanvas.width,this.resizeCanvas.height),e(this.resizeCanvas).resizableSafe(x).on("mousedown",o);var F=this;return e(this.resizeCanvas).on("mousemove",(function(e){var t=Math.round(e.clientX-n),o=Math.round(e.clientY-a),r=l;F.ctx.rect(F.resizeCanvas.width-10,F.resizeCanvas.height-10,9,9),r!==(l=F.ctx.isPointInPath(t,o))&&(this.style.cursor=l?"se-resize":"default")})).on("keydown",(function(e){if(F.isActive()){var t=e.keyCode;27===t?F.pressEscape(F):8!==t&&46!==t||F.pressBackspaceOrDelete(F)}})).on("focus",o).on("blur",(function(){F.reset(),null!==t&&(t.syncCode(),t.$c.trigger("tbwchange"))})),this.resizeCanvas.focus(),!0},this.refresh=function(){this.resizeCanvas.getContext&&(this.resizeCanvas.width=this.resizeCanvas.clientWidth,this.resizeCanvas.height=this.resizeCanvas.clientHeight,s(this.resizeCanvas,this.ctx,this.resizeImg,this.resizeCanvas.width,this.resizeCanvas.height))}};e.extend(!0,e.trumbowyg,{plugins:{resizimg:{destroyResizable:function(){},init:function(a){var r=this.destroyResizable,l=new n(a);function i(){a.$ed.find("img").off("click").on("click",(function(e){l.isActive()&&l.reset(),l.setup(this,a.o.plugins.resizimg.resizable),o(e)}))}this.destroyResizable=function(){a.$ed.find("canvas.resizable").resizableSafe("destroy").off("mousedown",o).removeClass("resizable"),l.reset(),a.syncCode()},a.o.plugins.resizimg=e.extend(!0,{},t,a.o.plugins.resizimg||{},{resizable:{resizeWidth:!1,onDragStart:function(e,t){var o=a.o.plugins.resizimg,n=e.pageX-t.offset().left,r=e.pageY-t.offset().top;if(n",l);if(0===o.$box.find("."+n+"-"+t).length?o.$box.append(i.hide()):i=o.$box.find("."+n+"-"+t),i.html(""),o.$box.find("."+o.o.prefix+"table-button").hasClass(o.o.prefix+"active-button"))i.append(o.buildSubBtn("tableAddRowAbove")),i.append(o.buildSubBtn("tableAddRow")),i.append(o.buildSubBtn("tableAddColumnLeft")),i.append(o.buildSubBtn("tableAddColumn")),i.append(o.buildSubBtn("tableDeleteRow")),i.append(o.buildSubBtn("tableDeleteColumn")),i.append(o.buildSubBtn("tableDestroy"));else{var s=e("");e("").appendTo(s);for(var x=0;x").appendTo(s),d=0;d").appendTo(F);s.find("td").on("mouseover",a),s.find("td").on("mousedown",r),i.append(s),i.append(e('
    1x1
    '))}o.dropdown(t)}},a=function(t){var o=e(t.target).closest("table"),n=this.cellIndex,a=this.parentNode.rowIndex;o.find("td").removeClass("active");for(var r=0;r<=a;r+=1)for(var l=0;l<=n;l+=1)o.find("tr:nth-of-type("+(r+1)+")").find("td:nth-of-type("+(l+1)+")").addClass("active");o.next(".trumbowyg-table-size").html(n+1+"x"+(a+1))},r=function(){o.saveRange();var t=e("
    ");e("").appendTo(t),o.o.plugins.table.styler&&t.attr("class",o.o.plugins.table.styler);for(var n=this.cellIndex,a=this.parentNode.rowIndex,r=0;r<=a;r+=1)for(var l=e("").appendTo(t),i=0;i<=n;i+=1)e(""),l=0;l").appendTo(r);n.after(r)}o.syncCode()}},i={title:o.lang.tableAddRowAbove,text:o.lang.tableAddRowAbove,ico:"row-above",fn:function(){o.saveRange();var t=o.doc.getSelection().focusNode,n=e(t).closest("tr"),a=e(t).closest("table");if(a.length>0){for(var r=e(""),l=0;l").appendTo(r);n.before(r)}o.syncCode()}},s={title:o.lang.tableAddColumn,text:o.lang.tableAddColumn,ico:"col-right",fn:function(){o.saveRange();var t=o.doc.getSelection().focusNode,n=e(t).closest("td"),a=e(t).closest("table"),r=n.index();a.length>0&&e(a).find("tr").each((function(){e(e(this).children()[r]).after("")})),o.syncCode()}},x={title:o.lang.tableAddColumnLeft,text:o.lang.tableAddColumnLeft,ico:"col-left",fn:function(){o.saveRange();var t=o.doc.getSelection().focusNode,n=e(t).closest("td"),a=e(t).closest("table"),r=n.index();a.length>0&&e(a).find("tr").each((function(){e(e(this).children()[r]).before("")})),o.syncCode()}},F={title:o.lang.tableDestroy,text:o.lang.tableDestroy,ico:"table-delete",fn:function(){o.saveRange();var t=o.doc.getSelection().focusNode;e(t).closest("table").remove(),o.syncCode()}},d={title:o.lang.tableDeleteRow,text:o.lang.tableDeleteRow,ico:"row-delete",fn:function(){o.saveRange();var t=o.doc.getSelection().focusNode;e(t).closest("tr").remove(),o.syncCode()}},u={title:o.lang.tableDeleteColumn,text:o.lang.tableDeleteColumn,ico:"col-delete",fn:function(){o.saveRange();var t=o.doc.getSelection().focusNode,n=e(t).closest("table"),a=e(t).closest("td").index();e(n).find("tr").each((function(){e(this).find("td:eq("+a+")").remove()})),o.syncCode()}};o.addBtnDef("table",n),o.addBtnDef("tableAddRowAbove",i),o.addBtnDef("tableAddRow",l),o.addBtnDef("tableAddColumnLeft",x),o.addBtnDef("tableAddColumn",s),o.addBtnDef("tableDeleteRow",d),o.addBtnDef("tableDeleteColumn",u),o.addBtnDef("tableDestroy",F)}}}})}(jQuery),function(e){"use strict";var t={rows:8,columns:8,styler:"table"};e.extend(!0,e.trumbowyg,{langs:{en:{table:"Insert table",tableAddRow:"Add row",tableAddRowAbove:"Add row above",tableAddColumnLeft:"Add column to the left",tableAddColumn:"Add column to the right",tableDeleteRow:"Delete row",tableDeleteColumn:"Delete column",tableDestroy:"Delete table",error:"Error"},cs:{table:"Vytvořit příkaz Table",tableAddRow:"Přidat řádek",tableAddRowAbove:"Přidat řádek",tableAddColumnLeft:"Přidat sloupec",tableAddColumn:"Přidat sloupec",error:"Chyba"},da:{table:"Indsæt tabel",tableAddRow:"Tilføj række",tableAddRowAbove:"Tilføj række",tableAddColumnLeft:"Tilføj kolonne",tableAddColumn:"Tilføj kolonne",tableDeleteRow:"Slet række",tableDeleteColumn:"Slet kolonne",tableDestroy:"Slet tabel",error:"Fejl"},de:{table:"Tabelle einfügen",tableAddRow:"Zeile hinzufügen",tableAddRowAbove:"Zeile hinzufügen",tableAddColumnLeft:"Spalte hinzufügen",tableAddColumn:"Spalte hinzufügen",tableDeleteRow:"Zeile löschen",tableDeleteColumn:"Spalte löschen",tableDestroy:"Tabelle löschen",error:"Error"},et:{table:"Sisesta tabel",tableAddRow:"Lisa rida",tableAddRowAbove:"Lisa rida üles",tableAddColumnLeft:"Lisa tulp vasakule",tableAddColumn:"Lisa tulp paremale",tableDeleteRow:"Kustuta rida",tableDeleteColumn:"Kustuta tulp",tableDestroy:"Kustuta tabel",error:"Viga"},fr:{table:"Insérer un tableau",tableAddRow:"Ajouter des lignes",tableAddRowAbove:"Ajouter des lignes",tableAddColumnLeft:"Ajouter des colonnes",tableAddColumn:"Ajouter des colonnes",tableDeleteRow:"Effacer la ligne",tableDeleteColumn:"Effacer la colonne",tableDestroy:"Effacer le tableau",error:"Erreur"},hu:{table:"Táblázat beszúrás",tableAddRow:"Sor hozzáadás",tableAddRowAbove:"Sor beszúrás fönt",tableAddColumnLeft:"Sor beszúrás balra",tableAddColumn:"Sor beszúrás jobbra",tableDeleteRow:"Sor törlés",tableDeleteColumn:"Oszlop törlés",tableDestroy:"Táblázat törlés",error:"Hiba"},id:{table:"Sisipkan tabel",tableAddRow:"Sisipkan baris",tableAddRowAbove:"Sisipkan baris",tableAddColumnLeft:"Sisipkan kolom",tableAddColumn:"Sisipkan kolom",tableDeleteRow:"Hapus baris",tableDeleteColumn:"Hapus kolom",tableDestroy:"Hapus tabel",error:"Galat"},ja:{table:"表の挿入",tableAddRow:"行の追加",tableAddRowAbove:"行の追加",tableAddColumnLeft:"列の追加",tableAddColumn:"列の追加",error:"エラー"},ko:{table:"표 넣기",tableAddRow:"줄 추가",tableAddRowAbove:"줄 추가",tableAddColumnLeft:"칸 추가",tableAddColumn:"칸 추가",tableDeleteRow:"줄 삭제",tableDeleteColumn:"칸 삭제",tableDestroy:"표 지우기",error:"에러"},pt_br:{table:"Inserir tabela",tableAddRow:"Adicionar linha",tableAddRowAbove:"Adicionar linha",tableAddColumnLeft:"Adicionar coluna",tableAddColumn:"Adicionar coluna",tableDeleteRow:"Deletar linha",tableDeleteColumn:"Deletar coluna",tableDestroy:"Deletar tabela",error:"Erro"},ru:{table:"Вставить таблицу",tableAddRow:"Добавить строку",tableAddRowAbove:"Добавить строку",tableAddColumnLeft:"Добавить столбец",tableAddColumn:"Добавить столбец",tableDeleteRow:"Удалить строку",tableDeleteColumn:"Удалить столбец",tableDestroy:"Удалить таблицу",error:"Ошибка"},sk:{table:"Vytvoriť tabuľky",tableAddRow:"Pridať riadok",tableAddRowAbove:"Pridať riadok",tableAddColumnLeft:"Pridať stĺpec",tableAddColumn:"Pridať stĺpec",error:"Chyba"},tr:{table:"Tablo ekle",tableAddRow:"Satır ekle",tableAddRowAbove:"Yukarıya satır ekle",tableAddColumnLeft:"Sola sütun ekle",tableAddColumn:"Sağa sütun ekle",tableDeleteRow:"Satırı sil",tableDeleteColumn:"Sütunu sil",tableDestroy:"Tabloyu sil",error:"Hata"},zh_tw:{table:"插入表格",tableAddRow:"加入行",tableAddRowAbove:"加入行",tableAddColumnLeft:"加入列",tableAddColumn:"加入列",tableDeleteRow:"刪除行",tableDeleteColumn:"刪除列",tableDestroy:"刪除表格",error:"錯誤"},es:{table:"Insertar tabla",tableAddRow:"Agregar fila",tableAddRowAbove:"Agregar fila arriba",tableAddColumnLeft:"Agregar columna a la izquierda",tableAddColumn:"Agregar columna a la derecha",tableDeleteRow:"Borrar fila",tableDeleteColumn:"Borrar columna",tableDestroy:"Borrar tabla",error:"Error"}},plugins:{table:{init:function(o){o.o.plugins.table=e.extend(!0,{},t,o.o.plugins.table||{});var n={fn:function(){o.saveRange();var t="table",n=o.o.prefix+"dropdown",l={class:n+"-table "+n+" "+o.o.prefix+"fixed-top"};l["data-"+n]=t;var i=e("
    ",l);if(0===o.$box.find("."+n+"-"+t).length?o.$box.append(i.hide()):i=o.$box.find("."+n+"-"+t),i.html(""),o.$box.find("."+o.o.prefix+"table-button").hasClass(o.o.prefix+"active-button"))i.append(o.buildSubBtn("tableAddRowAbove")),i.append(o.buildSubBtn("tableAddRow")),i.append(o.buildSubBtn("tableAddColumnLeft")),i.append(o.buildSubBtn("tableAddColumn")),i.append(o.buildSubBtn("tableDeleteRow")),i.append(o.buildSubBtn("tableDeleteColumn")),i.append(o.buildSubBtn("tableDestroy"));else{var s=e("
    ").appendTo(l);o.range.deleteContents(),o.range.insertNode(t[0]),o.$c.trigger("tbwchange")},l={title:o.lang.tableAddRow,text:o.lang.tableAddRow,ico:"row-below",fn:function(){o.saveRange();var t=o.doc.getSelection().focusNode,n=e(t).closest("tr"),a=e(t).closest("table");if(a.length>0){for(var r=e("
    ");e("").appendTo(s);for(var x=0;x").appendTo(s),d=0;d").appendTo(F);s.find("td").on("mouseover",a),s.find("td").on("mousedown",r),i.append(s),i.append(e('
    1x1
    '))}o.dropdown(t)}},a=function(t){var o=e(t.target).closest("table"),n=this.cellIndex,a=this.parentNode.rowIndex;o.find("td").removeClass("active");for(var r=0;r<=a;r+=1)for(var l=0;l<=n;l+=1)o.find("tr:nth-of-type("+(r+1)+")").find("td:nth-of-type("+(l+1)+")").addClass("active");o.next(".trumbowyg-table-size").html(n+1+"x"+(a+1))},r=function(){o.saveRange();var t=e("
    ");e("").appendTo(t),o.o.plugins.table.styler&&t.attr("class",o.o.plugins.table.styler);for(var n=this.cellIndex,a=this.parentNode.rowIndex,r=0;r<=a;r+=1)for(var l=e("").appendTo(t),i=0;i<=n;i+=1)e(""),l=0;l").appendTo(r);n.after(r)}o.syncCode()}},i={title:o.lang.tableAddRowAbove,text:o.lang.tableAddRowAbove,ico:"row-above",fn:function(){o.saveRange();var t=o.doc.getSelection().focusNode,n=e(t).closest("tr"),a=e(t).closest("table");if(a.length>0){for(var r=e(""),l=0;l").appendTo(r);n.before(r)}o.syncCode()}},s={title:o.lang.tableAddColumn,text:o.lang.tableAddColumn,ico:"col-right",fn:function(){o.saveRange();var t=o.doc.getSelection().focusNode,n=e(t).closest("td"),a=e(t).closest("table"),r=n.index();a.length>0&&e(a).find("tr").each((function(){e(e(this).children()[r]).after("")})),o.syncCode()}},x={title:o.lang.tableAddColumnLeft,text:o.lang.tableAddColumnLeft,ico:"col-left",fn:function(){o.saveRange();var t=o.doc.getSelection().focusNode,n=e(t).closest("td"),a=e(t).closest("table"),r=n.index();a.length>0&&e(a).find("tr").each((function(){e(e(this).children()[r]).before("")})),o.syncCode()}},F={title:o.lang.tableDestroy,text:o.lang.tableDestroy,ico:"table-delete",fn:function(){o.saveRange();var t=o.doc.getSelection().focusNode;e(t).closest("table").remove(),o.syncCode()}},d={title:o.lang.tableDeleteRow,text:o.lang.tableDeleteRow,ico:"row-delete",fn:function(){o.saveRange();var t=o.doc.getSelection().focusNode;e(t).closest("tr").remove(),o.syncCode()}},u={title:o.lang.tableDeleteColumn,text:o.lang.tableDeleteColumn,ico:"col-delete",fn:function(){o.saveRange();var t=o.doc.getSelection().focusNode,n=e(t).closest("table"),a=e(t).closest("td").index();e(n).find("tr").each((function(){e(this).find("td:eq("+a+")").remove()})),o.syncCode()}};o.addBtnDef("table",n),o.addBtnDef("tableAddRowAbove",i),o.addBtnDef("tableAddRow",l),o.addBtnDef("tableAddColumnLeft",x),o.addBtnDef("tableAddColumn",s),o.addBtnDef("tableDeleteRow",d),o.addBtnDef("tableDeleteColumn",u),o.addBtnDef("tableDestroy",F)}}}})}(jQuery),function(e){"use strict";function t(t){var o=t.o.plugins.templates,n=[];return e.each(o,(function(e,o){t.addBtnDef("template_"+e,{fn:function(){t.html(o.html)},hasIcon:!1,title:o.name}),n.push("template_"+e)})),n}e.extend(!0,e.trumbowyg,{langs:{en:{template:"Template"},da:{template:"Skabelon"},de:{template:"Vorlage"},et:{template:"Mall"},fr:{template:"Patron"},hu:{template:"Sablon"},ja:{template:"テンプレート"},ko:{template:"서식"},nl:{template:"Sjabloon"},pt_br:{template:"Modelo"},ru:{template:"Шаблон"},tr:{template:"Şablon"},zh_tw:{template:"模板"}}}),e.extend(!0,e.trumbowyg,{plugins:{template:{shouldInit:function(e){return e.o.plugins.hasOwnProperty("templates")},init:function(e){e.addBtnDef("template",{dropdown:t(e),hasIcon:!1,text:e.lang.template})}}}})}(jQuery),function(e){"use strict";function t(t){var o=t.o.plugins.templates,n=[];return e.each(o,(function(e,o){t.addBtnDef("template_"+e,{fn:function(){t.html(o.html)},hasIcon:!1,title:o.name}),n.push("template_"+e)})),n}e.extend(!0,e.trumbowyg,{langs:{en:{template:"Template"},da:{template:"Skabelon"},de:{template:"Vorlage"},et:{template:"Mall"},fr:{template:"Patron"},hu:{template:"Sablon"},ja:{template:"テンプレート"},ko:{template:"서식"},nl:{template:"Sjabloon"},pt_br:{template:"Modelo"},ru:{template:"Шаблон"},tr:{template:"Şablon"},zh_tw:{template:"模板"}}}),e.extend(!0,e.trumbowyg,{plugins:{template:{shouldInit:function(e){return e.o.plugins.hasOwnProperty("templates")},init:function(e){e.addBtnDef("template",{dropdown:t(e),hasIcon:!1,text:e.lang.template})}}}})}(jQuery),function(e){"use strict";var t={serverPath:"",fileFieldName:"fileToUpload",data:[],headers:{},xhrFields:{},urlPropertyName:"file",statusPropertyName:"success",success:void 0,error:void 0,imageWidthModalEdit:!1};function o(e,t){var n=t.shift(),a=t;if(null!==e){if(0===a.length)return e[n];if("object"===_typeof(e))return o(e[n],a)}return e}!function(){if(!e.trumbowyg.addedXhrProgressEvent){var t=e.ajaxSettings.xhr;e.ajaxSetup({xhr:function(){var e=this,o=t();return o&&"object"===_typeof(o.upload)&&void 0!==e.progressUpload&&o.upload.addEventListener("progress",(function(t){e.progressUpload(t)}),!1),o}}),e.trumbowyg.addedXhrProgressEvent=!0}}(),e.extend(!0,e.trumbowyg,{langs:{en:{upload:"Upload",file:"File",uploadError:"Error"},cs:{upload:"Nahrát obrázek",file:"Soubor",uploadError:"Chyba"},da:{upload:"Upload",file:"Fil",uploadError:"Fejl"},de:{upload:"Hochladen",file:"Datei",uploadError:"Fehler"},et:{upload:"Lae üles",file:"Fail",uploadError:"Viga"},fr:{upload:"Envoi",file:"Fichier",uploadError:"Erreur"},hu:{upload:"Feltöltés",file:"Fájl",uploadError:"Hiba"},ja:{upload:"アップロード",file:"ファイル",uploadError:"エラー"},ko:{upload:"그림 올리기",file:"파일",uploadError:"에러"},pt_br:{upload:"Enviar do local",file:"Arquivo",uploadError:"Erro"},ru:{upload:"Загрузка",file:"Файл",uploadError:"Ошибка"},sk:{upload:"Nahrať",file:"Súbor",uploadError:"Chyba"},tr:{upload:"Yükle",file:"Dosya",uploadError:"Hata"},zh_cn:{upload:"上传",file:"文件",uploadError:"错误"},zh_tw:{upload:"上傳",file:"文件",uploadError:"錯誤"}},plugins:{upload:{init:function(n){n.o.plugins.upload=e.extend(!0,{},t,n.o.plugins.upload||{});var a={fn:function(){n.saveRange();var t,a=n.o.prefix,r={file:{type:"file",required:!0,attributes:{accept:"image/*"}},alt:{label:"description",value:n.getRangeText()}};n.o.plugins.upload.imageWidthModalEdit&&(r.width={value:""});var l=!1,i=n.openModalInsert(n.lang.upload,r,(function(r){if(!l){l=!0;var s=new FormData;s.append(n.o.plugins.upload.fileFieldName,t),n.o.plugins.upload.data.map((function(e){s.append(e.name,e.value)})),e.map(r,(function(e,t){"file"!==t&&s.append(t,e)})),0===e("."+a+"progress",i).length&&e("."+a+"modal-title",i).after(e("
    ",{class:a+"progress"}).append(e("
    ",{class:a+"progress-bar"}))),e.ajax({url:n.o.plugins.upload.serverPath,headers:n.o.plugins.upload.headers,xhrFields:n.o.plugins.upload.xhrFields,type:"POST",data:s,cache:!1,dataType:"json",processData:!1,contentType:!1,progressUpload:function(t){e("."+a+"progress-bar").css("width",Math.round(100*t.loaded/t.total)+"%")},success:function(t){if(n.o.plugins.upload.success)n.o.plugins.upload.success(t,n,i,r);else if(o(t,n.o.plugins.upload.statusPropertyName.split("."))){var a=o(t,n.o.plugins.upload.urlPropertyName.split("."));n.execCmd("insertImage",a,!1,!0);var s=e('img[src="'+a+'"]:not([alt])',n.$box);s.attr("alt",r.alt),n.o.plugins.upload.imageWidthModalEdit&&parseInt(r.width)>0&&s.attr({width:r.width}),setTimeout((function(){n.closeModal()}),250),n.$c.trigger("tbwuploadsuccess",[n,t,a])}else n.addErrorOnModalField(e("input[type=file]",i),n.lang[t.message]),n.$c.trigger("tbwuploaderror",[n,t]);l=!1},error:n.o.plugins.upload.error||function(){n.addErrorOnModalField(e("input[type=file]",i),n.lang.uploadError),n.$c.trigger("tbwuploaderror",[n]),l=!1}})}}));e("input[type=file]").on("change",(function(e){try{t=e.target.files[0]}catch(o){t=e.target.value}}))}};n.addBtnDef("upload",a)}}}})}(jQuery),function(e){"use strict";var t={serverPath:"",fileFieldName:"fileToUpload",data:[],headers:{},xhrFields:{},urlPropertyName:"file",statusPropertyName:"success",success:void 0,error:void 0,imageWidthModalEdit:!1};function o(e,t){var n=t.shift(),a=t;if(null!==e){if(0===a.length)return e[n];if("object"==_typeof(e))return o(e[n],a)}return e}!function(){if(!e.trumbowyg.addedXhrProgressEvent){var t=e.ajaxSettings.xhr;e.ajaxSetup({xhr:function(){var e=this,o=t();return o&&"object"==_typeof(o.upload)&&void 0!==e.progressUpload&&o.upload.addEventListener("progress",(function(t){e.progressUpload(t)}),!1),o}}),e.trumbowyg.addedXhrProgressEvent=!0}}(),e.extend(!0,e.trumbowyg,{langs:{en:{upload:"Upload",file:"File",uploadError:"Error"},cs:{upload:"Nahrát obrázek",file:"Soubor",uploadError:"Chyba"},da:{upload:"Upload",file:"Fil",uploadError:"Fejl"},de:{upload:"Hochladen",file:"Datei",uploadError:"Fehler"},et:{upload:"Lae üles",file:"Fail",uploadError:"Viga"},fr:{upload:"Envoi",file:"Fichier",uploadError:"Erreur"},hu:{upload:"Feltöltés",file:"Fájl",uploadError:"Hiba"},ja:{upload:"アップロード",file:"ファイル",uploadError:"エラー"},ko:{upload:"그림 올리기",file:"파일",uploadError:"에러"},pt_br:{upload:"Enviar do local",file:"Arquivo",uploadError:"Erro"},ru:{upload:"Загрузка",file:"Файл",uploadError:"Ошибка"},sk:{upload:"Nahrať",file:"Súbor",uploadError:"Chyba"},tr:{upload:"Yükle",file:"Dosya",uploadError:"Hata"},zh_cn:{upload:"上传",file:"文件",uploadError:"错误"},zh_tw:{upload:"上傳",file:"文件",uploadError:"錯誤"}},plugins:{upload:{init:function(n){n.o.plugins.upload=e.extend(!0,{},t,n.o.plugins.upload||{});var a={fn:function(){n.saveRange();var t,a=n.o.prefix,r={file:{type:"file",required:!0,attributes:{accept:"image/*"}},alt:{label:"description",value:n.getRangeText()}};n.o.plugins.upload.imageWidthModalEdit&&(r.width={value:""});var l=!1,i=n.openModalInsert(n.lang.upload,r,(function(r){if(!l){l=!0;var s=new FormData;s.append(n.o.plugins.upload.fileFieldName,t),n.o.plugins.upload.data.map((function(e){s.append(e.name,e.value)})),e.map(r,(function(e,t){"file"!==t&&s.append(t,e)})),0===e("."+a+"progress",i).length&&e("."+a+"modal-title",i).after(e("
    ",{class:a+"progress"}).append(e("
    ",{class:a+"progress-bar"}))),e.ajax({url:n.o.plugins.upload.serverPath,headers:n.o.plugins.upload.headers,xhrFields:n.o.plugins.upload.xhrFields,type:"POST",data:s,cache:!1,dataType:"json",processData:!1,contentType:!1,progressUpload:function(t){e("."+a+"progress-bar").css("width",Math.round(100*t.loaded/t.total)+"%")},success:function(t){if(n.o.plugins.upload.success)n.o.plugins.upload.success(t,n,i,r);else if(o(t,n.o.plugins.upload.statusPropertyName.split("."))){var a=o(t,n.o.plugins.upload.urlPropertyName.split("."));n.execCmd("insertImage",a,!1,!0);var s=e('img[src="'+a+'"]:not([alt])',n.$box);s.attr("alt",r.alt),n.o.plugins.upload.imageWidthModalEdit&&parseInt(r.width)>0&&s.attr({width:r.width}),setTimeout((function(){n.closeModal()}),250),n.$c.trigger("tbwuploadsuccess",[n,t,a])}else n.addErrorOnModalField(e("input[type=file]",i),n.lang[t.message]),n.$c.trigger("tbwuploaderror",[n,t]);l=!1},error:n.o.plugins.upload.error||function(){n.addErrorOnModalField(e("input[type=file]",i),n.lang.uploadError),n.$c.trigger("tbwuploaderror",[n]),l=!1}})}}));e("input[type=file]").on("change",(function(e){try{t=e.target.files[0]}catch(o){t=e.target.value}}))}};n.addBtnDef("upload",a)}}}})}(jQuery); +function _typeof(e){return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},_typeof(e)}function _typeof(e){return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},_typeof(e)}!function(e){"use strict";var t={allowedTags:[],removableTags:["a","abbr","address","b","bdi","bdo","blockquote","br","cite","code","del","dfn","details","em","h1","h2","h3","h4","h5","h6","hr","i","ins","kbd","mark","meter","pre","progress","q","rp","rt","ruby","s","samp","small","span","strong","sub","summary","sup","time","u","var","wbr","img","map","area","canvas","figcaption","figure","picture","audio","source","track","video","ul","ol","li","dl","dt","dd","table","caption","th","tr","td","thead","tbody","tfoot","col","colgroup","style","div","p","form","input","textarea","button","select","optgroup","option","label","fieldset","legend","datalist","keygen","output","iframe","link","nav","header","hgroup","footer","main","section","article","aside","dialog","script","noscript","embed","object","param"]};e.extend(!0,e.trumbowyg,{plugins:{allowTagsFromPaste:{init:function(o){if(o.o.plugins.allowTagsFromPaste){o.o.removeformatPasted=!1;var n=o.o.plugins.allowTagsFromPaste.allowedTags||t.allowedTags,a=o.o.plugins.allowTagsFromPaste.removableTags||t.removableTags;if(0!==n.length){var r=e(a).not(n).get();o.pasteHandlers.push((function(){setTimeout((function(){var t=o.$ed.html();e.each(r,(function(e,o){t=t.replace(new RegExp("<\\/?"+o+"(\\s[^>]*)?>","gi"),"")})),o.$ed.html(t)}),0)}))}}}}}})}(jQuery),function(e){"use strict";var t={allowedTags:[],removableTags:["a","abbr","address","b","bdi","bdo","blockquote","br","cite","code","del","dfn","details","em","h1","h2","h3","h4","h5","h6","hr","i","ins","kbd","mark","meter","pre","progress","q","rp","rt","ruby","s","samp","small","span","strong","sub","summary","sup","time","u","var","wbr","img","map","area","canvas","figcaption","figure","picture","audio","source","track","video","ul","ol","li","dl","dt","dd","table","caption","th","tr","td","thead","tbody","tfoot","col","colgroup","style","div","p","form","input","textarea","button","select","optgroup","option","label","fieldset","legend","datalist","keygen","output","iframe","link","nav","header","hgroup","footer","main","section","article","aside","dialog","script","noscript","embed","object","param"]};e.extend(!0,e.trumbowyg,{plugins:{allowTagsFromPaste:{init:function(o){if(o.o.plugins.allowTagsFromPaste){o.o.removeformatPasted=!1;var n=o.o.plugins.allowTagsFromPaste.allowedTags||t.allowedTags,a=o.o.plugins.allowTagsFromPaste.removableTags||t.removableTags;if(0!==n.length){var r=e(a).not(n).get();o.pasteHandlers.push((function(){setTimeout((function(){var t=o.$ed.html();e.each(r,(function(e,o){t=t.replace(new RegExp("<\\/?"+o+"(\\s[^>]*)?>","gi"),"")})),o.$ed.html(t)}),0)}))}}}}}})}(jQuery),function(e){"use strict";e.extend(!0,e.trumbowyg,{plugins:{cleanPaste:{init:function(t){t.pasteHandlers.push((function(o){setTimeout((function(){try{t.saveRange();var n=(o.originalEvent||o).clipboardData.getData("Text"),a=t.doc.getSelection().focusNode,r=t.doc.createRange(),l=((s=(s=(s=(s=(s=(s=(s=(s=(s=n.trim()).replace(/<[^> ]*/g,(function(e){return e.toLowerCase()})).replace(/<[^>]*>/g,(function(e){return e.replace(/ [^=]+=/g,(function(e){return e.toLowerCase()}))})).replace(/<[^>]*>/g,(function(e){return e.replace(/( [^=]+=)([^"][^ >]*)/g,'$1"$2"')}))).replace(/)/g,")/g,")/g,")/g,"\s*/g,"")).replace(/ /gi," ")).replace(/ <\//gi,"]*>/g,(function(e){return e.replace(/ ([^=]+)="[^"]*"/g,(function(e,t){return-1!==["alt","href","src","title"].indexOf(t)?e:""}))}))).replace(/<\?xml[^>]*>/g,"")).replace(/<[^ >]+:[^>]*>/g,"")).replace(/<\/[^ >]+:[^>]*>/g,"")).replace(/<(div|span|style|meta|link).*?>/gi,"")),i=e(l)[0]||t.doc.createTextNode(l);""===t.$ed.html()?t.$ed[0].appendChild(i):(r.setStartAfter(a),r.setEndAfter(a),t.doc.getSelection().removeAllRanges(),t.doc.getSelection().addRange(r),t.range.insertNode(i)),(r=t.doc.createRange()).setStartAfter(i),r.setEndAfter(i),t.doc.getSelection().removeAllRanges(),t.doc.getSelection().addRange(r),o.stopPropagation(),o.preventDefault(),t.saveRange(),t.syncCode(),t.$c.trigger("tbwchange")}catch(e){}var s}),0)}))}}}})}(jQuery),function(e){"use strict";e.extend(!0,e.trumbowyg,{plugins:{cleanPaste:{init:function(t){t.pasteHandlers.push((function(o){setTimeout((function(){try{t.saveRange();var n=(o.originalEvent||o).clipboardData.getData("Text"),a=t.doc.getSelection().focusNode,r=t.doc.createRange(),l=((s=(s=(s=(s=(s=(s=(s=(s=(s=n.trim()).replace(/<[^> ]*/g,(function(e){return e.toLowerCase()})).replace(/<[^>]*>/g,(function(e){return e.replace(/ [^=]+=/g,(function(e){return e.toLowerCase()}))})).replace(/<[^>]*>/g,(function(e){return e.replace(/( [^=]+=)([^"][^ >]*)/g,'$1"$2"')}))).replace(/)/g,")/g,")/g,")/g,"\s*/g,"")).replace(/ /gi," ")).replace(/ <\//gi,"]*>/g,(function(e){return e.replace(/ ([^=]+)="[^"]*"/g,(function(e,t){return-1!==["alt","href","src","title"].indexOf(t)?e:""}))}))).replace(/<\?xml[^>]*>/g,"")).replace(/<[^ >]+:[^>]*>/g,"")).replace(/<\/[^ >]+:[^>]*>/g,"")).replace(/<(div|span|style|meta|link).*?>/gi,"")),i=e(l)[0]||t.doc.createTextNode(l);""===t.$ed.html()?t.$ed[0].appendChild(i):(r.setStartAfter(a),r.setEndAfter(a),t.doc.getSelection().removeAllRanges(),t.doc.getSelection().addRange(r),t.range.insertNode(i)),(r=t.doc.createRange()).setStartAfter(i),r.setEndAfter(i),t.doc.getSelection().removeAllRanges(),t.doc.getSelection().addRange(r),o.stopPropagation(),o.preventDefault(),t.saveRange(),t.syncCode(),t.$c.trigger("tbwchange")}catch(e){}var s}),0)}))}}}})}(jQuery),function(e){"use strict";var t=function(){return"undefined"!=typeof FileReader};e.extend(!0,e.trumbowyg,{langs:{en:{base64:"Image as base64",file:"File",errFileReaderNotSupported:"FileReader is not supported by your browser.",errInvalidImage:"Invalid image file."},cs:{base64:"Vložit obrázek",file:"Soubor"},da:{base64:"Billede som base64",file:"Fil",errFileReaderNotSupported:"FileReader er ikke understøttet af din browser.",errInvalidImage:"Ugyldig billedfil."},et:{base64:"Pilt base64 formaadis",file:"Fail",errFileReaderNotSupported:"Teie veebilehitseja ei toeta FileReader funktsiooni.",errInvalidImage:"Vigane pildifail."},fr:{base64:"Image en base64",file:"Fichier"},hu:{base64:"Kép beszúrás inline",file:"Fájl",errFileReaderNotSupported:"Ez a böngésző nem támogatja a FileReader funkciót.",errInvalidImage:"Érvénytelen képfájl."},ja:{base64:"画像 (Base64形式)",file:"ファイル",errFileReaderNotSupported:"あなたのブラウザーはFileReaderをサポートしていません",errInvalidImage:"画像形式が正しくありません"},ko:{base64:"그림 넣기(base64)",file:"파일",errFileReaderNotSupported:"FileReader가 현재 브라우저를 지원하지 않습니다.",errInvalidImage:"유효하지 않은 파일"},nl:{base64:"Afbeelding inline",file:"Bestand",errFileReaderNotSupported:"Uw browser ondersteunt deze functionaliteit niet.",errInvalidImage:"De gekozen afbeelding is ongeldig."},pt_br:{base64:"Imagem em base64",file:"Arquivo",errFileReaderNotSupported:"FileReader não é suportado pelo seu navegador.",errInvalidImage:"Arquivo de imagem inválido."},ru:{base64:"Изображение как код в base64",file:"Файл",errFileReaderNotSupported:"FileReader не поддерживается вашим браузером.",errInvalidImage:"Недопустимый файл изображения."},tr:{base64:"Base64 olarak resim",file:"Dosya",errFileReaderNotSupported:"FileReader tarayıcınız tarafından desteklenmiyor.",errInvalidImage:"Geçersiz resim dosyası."},zh_cn:{base64:"图片(Base64编码)",file:"文件"},zh_tw:{base64:"圖片(base64編碼)",file:"檔案",errFileReaderNotSupported:"你的瀏覽器不支援FileReader",errInvalidImage:"不正確的檔案格式"}},plugins:{base64:{shouldInit:t,init:function(o){var n={isSupported:t,fn:function(){var t;o.saveRange();var n=o.openModalInsert(o.lang.base64,{file:{type:"file",required:!0,attributes:{accept:"image/*"}},alt:{label:"description",value:o.getRangeText()}},(function(a){var r=new FileReader;r.onloadend=function(t){var l;l=t.target.result,/^data:image\/[a-z]?/i.test(l)?(o.execCmd("insertImage",r.result,!1,!0),e(['img[src="',r.result,'"]:not([alt])'].join(""),o.$box).attr("alt",a.alt),o.closeModal()):o.addErrorOnModalField(e("input[type=file]",n),o.lang.errInvalidImage)},r.readAsDataURL(t)}));e("input[type=file]").on("change",(function(e){t=e.target.files[0]}))}};o.addBtnDef("base64",n)}}}})}(jQuery),function(e){"use strict";var t=function(){return"undefined"!=typeof FileReader};e.extend(!0,e.trumbowyg,{langs:{en:{base64:"Image as base64",file:"File",errFileReaderNotSupported:"FileReader is not supported by your browser.",errInvalidImage:"Invalid image file."},cs:{base64:"Vložit obrázek",file:"Soubor"},da:{base64:"Billede som base64",file:"Fil",errFileReaderNotSupported:"FileReader er ikke understøttet af din browser.",errInvalidImage:"Ugyldig billedfil."},et:{base64:"Pilt base64 formaadis",file:"Fail",errFileReaderNotSupported:"Teie veebilehitseja ei toeta FileReader funktsiooni.",errInvalidImage:"Vigane pildifail."},fr:{base64:"Image en base64",file:"Fichier"},hu:{base64:"Kép beszúrás inline",file:"Fájl",errFileReaderNotSupported:"Ez a böngésző nem támogatja a FileReader funkciót.",errInvalidImage:"Érvénytelen képfájl."},ja:{base64:"画像 (Base64形式)",file:"ファイル",errFileReaderNotSupported:"あなたのブラウザーはFileReaderをサポートしていません",errInvalidImage:"画像形式が正しくありません"},ko:{base64:"그림 넣기(base64)",file:"파일",errFileReaderNotSupported:"FileReader가 현재 브라우저를 지원하지 않습니다.",errInvalidImage:"유효하지 않은 파일"},nl:{base64:"Afbeelding inline",file:"Bestand",errFileReaderNotSupported:"Uw browser ondersteunt deze functionaliteit niet.",errInvalidImage:"De gekozen afbeelding is ongeldig."},pt_br:{base64:"Imagem em base64",file:"Arquivo",errFileReaderNotSupported:"FileReader não é suportado pelo seu navegador.",errInvalidImage:"Arquivo de imagem inválido."},ru:{base64:"Изображение как код в base64",file:"Файл",errFileReaderNotSupported:"FileReader не поддерживается вашим браузером.",errInvalidImage:"Недопустимый файл изображения."},tr:{base64:"Base64 olarak resim",file:"Dosya",errFileReaderNotSupported:"FileReader tarayıcınız tarafından desteklenmiyor.",errInvalidImage:"Geçersiz resim dosyası."},zh_cn:{base64:"图片(Base64编码)",file:"文件"},zh_tw:{base64:"圖片(base64編碼)",file:"檔案",errFileReaderNotSupported:"你的瀏覽器不支援FileReader",errInvalidImage:"不正確的檔案格式"}},plugins:{base64:{shouldInit:t,init:function(o){var n={isSupported:t,fn:function(){var t;o.saveRange();var n=o.openModalInsert(o.lang.base64,{file:{type:"file",required:!0,attributes:{accept:"image/*"}},alt:{label:"description",value:o.getRangeText()}},(function(a){var r=new FileReader;r.onloadend=function(t){var l;l=t.target.result,/^data:image\/[a-z]?/i.test(l)?(o.execCmd("insertImage",r.result,!1,!0),e(['img[src="',r.result,'"]:not([alt])'].join(""),o.$box).attr("alt",a.alt),o.closeModal()):o.addErrorOnModalField(e("input[type=file]",n),o.lang.errInvalidImage)},r.readAsDataURL(t)}));e("input[type=file]").on("change",(function(e){t=e.target.files[0]}))}};o.addBtnDef("base64",n)}}}})}(jQuery),function(e){"use strict";var t={emojiList:["⁉","™","ℹ","↔","↕","↖","↗","↘","↙","⌨","☀","☁","☂","☃","☄","☑","☔","☕","☘","☠","☢","☣","☦","☸","☹","♀","♂","♈","♉","♐","♑","♒","♓","♠","♣","♥","♦","♨","⚒","⚓","⚔","⚕","⚖","⚗","⚙","✂","✅","✈","✉","✒","✔","✖","✡","✨","✳","✴","❄","❇","❓","❔","❕","❗","❣","❤","➕","➖","➗","⤴","⤵","〰","㊗","㊙","🧡","💛","💚","💙","💜","🖤","🤎","🤍","💔","💕","💞","💓","💗","💖","💘","💝","💟","☮","✝","☪","🕉","🔯","🕎","☯","🛐","⛎","♊","♋","♌","♍","♎","♏","🆔","⚛","🉑","📴","📳","🈶","🈚","🈸","🈺","🈷","🆚","💮","🉐","🈴","🈵","🈹","🈲","🅰","🅱","🆎","🆑","🅾","🆘","❌","⭕","🛑","⛔","📛","🚫","💯","💢","🚷","🚯","🚳","🚱","🔞","📵","🚭","‼","🔅","🔆","〽","⚠","🚸","🔱","⚜","🔰","♻","🈯","💹","❎","🌐","💠","Ⓜ","🌀","💤","🏧","🚾","♿","🅿","🈳","🈂","🛂","🛃","🛄","🛅","🚹","🚺","🚼","🚻","🚮","🎦","📶","🈁","🔣","🔤","🔡","🔠","🆖","🆗","🆙","🆒","🆕","🆓","0","1","2","3","4","5","6","7","8","9","🔟","🔢","#","*","⏏","▶","⏸","⏯","⏹","⏺","⏭","⏮","⏩","⏪","⏫","⏬","◀","🔼","🔽","➡","⬅","⬆","⬇","↪","↩","🔀","🔁","🔂","🔄","🔃","🎵","🎶","♾","💲","💱","©","®","➰","➿","🔚","🔙","🔛","🔝","🔜","🔘","⚪","⚫","🔴","🔵","🟤","🟣","🟢","🟡","🟠","🔺","🔻","🔸","🔹","🔶","🔷","🔳","🔲","▪","▫","◾","◽","◼","◻","⬛","⬜","🟧","🟦","🟥","🟫","🟪","🟩","🟨","🔈","🔇","🔉","🔊","🔔","🔕","📣","📢","🗨","👁","💬","💭","🗯","🃏","🎴","🀄","🕐","🕑","🕒","🕓","🕔","🕕","🕖","🕗","🕘","🕙","🕚","🕛","🕜","🕝","🕞","🕟","🕠","🕡","🕢","🕣","🕤","🕥","🕦","🕧","⚽","🏀","🏈","⚾","🥎","🎾","🏐","🏉","🥏","🎱","🏓","🏸","🏒","🏑","🥍","🏏","🥅","⛳","🏹","🎣","🥊","🥋","🎽","🛹","🛷","🪂","⛸","🥌","🎿","⛷","🏂","🏋","🤼","🤸","⛹","🤺","🤾","🏌","🏇","🧘","🏄","🏊","🤽","🚣","🧗","🚵","🚴","🏆","🥇","🥈","🥉","🏅","🎖","🏵","🎗","🎫","🎟","🎪","🤹","🎭","🎨","🎬","🎤","🎧","🎼","🎹","🥁","🎷","🎺","🪕","🎸","🎻","🎲","♟","🎯","🪁","🪀","🎳","🎮","🎰","🧩","⌚","📱","📲","💻","🖥","🖨","🖱","🖲","🕹","🗜","💽","💾","💿","📀","📼","📷","📸","📹","🎥","📽","🎞","📞","☎","📟","📠","📺","📻","🎙","🎚","🎛","🧭","⏱","⏲","⏰","🕰","⌛","⏳","📡","🔋","🔌","💡","🔦","🕯","🧯","🛢","💸","💵","💴","💶","💷","💰","💳","💎","🧰","🔧","🔨","🛠","⛏","🔩","🧱","⛓","🧲","🔫","💣","🧨","🪓","🪒","🔪","🗡","🛡","🚬","⚰","⚱","🏺","🪔","🔮","📿","🧿","💈","🔭","🔬","🕳","🦯","🩺","🩹","💊","💉","🩸","🧬","🦠","🧫","🧪","🌡","🪑","🧹","🧺","🧻","🚽","🚰","🚿","🛁","🛀","🧼","🧽","🧴","🛎","🔑","🗝","🚪","🛋","🛏","🛌","🧸","🖼","🛍","🛒","🎁","🎈","🎏","🎀","🎊","🎉","🎎","🏮","🎐","🧧","📩","📨","📧","💌","📥","📤","📦","🏷","📪","📫","📬","📭","📮","📯","📜","📃","📄","📑","🧾","📊","📈","📉","🗒","🗓","📆","📅","🗑","📇","🗃","🗳","🗄","📋","📁","📂","🗂","🗞","📰","📓","📔","📒","📕","📗","📘","📙","📚","📖","🔖","🧷","🔗","📎","🖇","📐","📏","🧮","📌","📍","🖊","🖋","🖌","🖍","📝","✏","🔍","🔎","🔏","🔐","🔒","🔓","🐶","🐱","🐭","🐹","🐰","🦊","🐻","🐼","🐨","🐯","🦁","🐮","🐷","🐽","🐸","🐵","🙈","🙉","🙊","🐒","🐔","🐧","🐦","🐤","🐣","🐥","🦆","🦅","🦉","🦇","🐺","🐗","🐴","🦄","🐝","🐛","🦋","🐌","🐚","🐞","🐜","🦟","🦗","🕷","🕸","🦂","🐢","🐍","🦎","🦖","🦕","🐙","🦑","🦐","🦞","🦪","🦀","🐡","🐠","🐟","🐬","🐳","🐋","🦈","🐊","🐅","🐆","🦓","🦍","🦧","🐘","🦛","🦏","🐪","🐫","🦒","🦘","🐃","🐂","🐄","🐎","🐖","🐏","🦙","🐑","🐐","🦌","🐕","🦮","🐩","🐈","🐓","🦃","🦚","🦜","🦢","🦩","🕊","🐇","🦥","🦦","🦨","🦝","🦡","🐁","🐀","🐿","🦔","🐾","🐉","🐲","🌵","🎄","🌲","🌳","🌴","🌱","🌿","🍀","🎍","🎋","🍃","🍂","🍁","🍄","🌾","💐","🌷","🌹","🥀","🌺","🌸","🌼","🌻","🌞","🌝","🌛","🌜","🌚","🌕","🌖","🌗","🌘","🌑","🌒","🌓","🌔","🌙","🌎","🌍","🌏","🪐","💫","⭐","🌟","⚡","💥","🔥","🌪","🌈","🌤","⛅","🌥","🌦","🌧","⛈","🌩","🌨","⛄","🌬","💨","💧","💦","🌊","🌫","🍏","🍎","🍐","🍊","🍋","🍌","🍉","🍇","🍓","🍈","🍒","🍑","🥭","🍍","🥥","🥝","🍅","🍆","🥑","🥦","🥬","🥒","🌶","🌽","🥕","🧅","🧄","🥔","🍠","🥐","🥯","🍞","🥖","🥨","🧀","🥚","🍳","🥞","🧇","🥓","🥩","🍗","🍖","🌭","🍔","🍟","🍕","🥪","🧆","🥙","🌮","🌯","🥗","🥘","🥫","🍝","🍜","🍲","🍛","🍣","🍱","🥟","🍤","🍙","🍚","🍘","🍥","🥠","🥮","🍢","🍡","🍧","🍨","🍦","🥧","🧁","🍰","🎂","🍮","🍭","🍬","🍫","🍿","🍩","🍪","🌰","🥜","🍯","🧈","🥛","🍼","🍵","🧉","🥤","🧃","🧊","🍶","🍺","🍻","🥂","🍷","🥃","🍸","🍹","🍾","🥄","🍴","🍽","🥣","🥡","🥢","🧂","😀","😃","😄","😁","😆","😅","😂","🤣","☺","😊","😇","🙂","🙃","😉","😌","😍","🥰","😘","😗","😙","😚","😋","😛","😝","😜","🤪","🤨","🧐","🤓","😎","🤩","🥳","😏","😒","😞","😔","😟","😕","🙁","😣","😖","😫","😩","🥺","😢","😭","😤","😠","😡","🤬","🤯","😳","🥵","🥶","😱","😨","😰","😥","😓","🤗","🤔","🤭","🥱","🤫","🤥","😶","😐","😑","😬","🙄","😯","😦","😧","😮","😲","😴","🤤","😪","😵","🤐","🥴","🤢","🤮","🤧","😷","🤒","🤕","🤑","🤠","😈","👿","👹","👺","🤡","💩","👻","💀","👽","👾","🤖","🎃","😺","😸","😹","😻","😼","😽","🙀","😿","😾","🤲","👐","🙌","👏","🤝","👍","👎","👊","✊","🤛","🤜","🤞","✌","🤟","🤘","👌","🤏","👈","👉","👆","👇","☝","✋","🤚","🖐","🖖","👋","🤙","💪","🦾","🖕","✍","🙏","🦶","🦵","🦿","💄","💋","👄","🦷","🦴","👅","👂","🦻","👃","👣","👀","🧠","🗣","👤","👥","👶","👧","🧒","👦","👩","🧑","👨","👱","🧔","👵","🧓","👴","👲","👳","🧕","👮","👷","💂","🕵","👰","🤵","👸","🤴","🦸","🦹","🤶","🎅","🧙","🧝","🧛","🧟","🧞","🧜","🧚","👼","🤰","🤱","🙇","💁","🙅","🙆","🙋","🧏","🤦","🤷","🙎","🙍","💇","💆","🧖","💅","🤳","💃","🕺","👯","🕴","🚶","🏃","🧍","🧎","👫","👭","👬","💑","💏","👪","🧶","🧵","🧥","🥼","🦺","👚","👕","👖","🩳","👔","👗","👙","🩱","👘","🥻","🥿","👠","👡","👢","🩰","👞","👟","🥾","🩲","🧦","🧤","🧣","🎩","🧢","👒","🎓","⛑","👑","💍","👝","👛","👜","💼","🎒","🧳","👓","🕶","🥽","🤿","🌂","🦱","🦰","🦳","🦲","🚗","🚕","🚙","🚌","🚎","🏎","🚓","🚑","🚒","🚐","🚚","🚛","🚜","🛺","🛵","🏍","🛴","🚲","🦼","🦽","🚨","🚔","🚍","🚘","🚖","🚡","🚠","🚟","🚃","🚋","🚞","🚝","🚄","🚅","🚈","🚂","🚆","🚇","🚊","🚉","🛫","🛬","🛩","💺","🛰","🚀","🛸","🚁","🛶","⛵","🚤","🛥","🛳","⛴","🚢","⛽","🚧","🚦","🚥","🚏","🗺","🗿","🗽","🗼","🏰","🏯","🏟","🎡","🎢","🎠","⛲","⛱","🏖","🏝","🏜","🌋","⛰","🏔","🗻","🏕","⛺","🏠","🏡","🏘","🏚","🏗","🏭","🏢","🏬","🏣","🏤","🏥","🏦","🏨","🏪","🏫","🏩","💒","🏛","⛪","🕌","🛕","🕍","🕋","⛩","🛤","🛣","🗾","🎑","🏞","🌅","🌄","🌠","🎇","🎆","🌇","🌆","🏙","🌃","🌌","🌉","🌁","🇿","🇾","🇽","🇼","🇻","🇺","🇹","🇸","🇷","🇶","🇵","🇴","🇳","🇲","🇱","🇰","🇯","🇮","🇭","🇬","🇫","🇪","🇩","🇨","🇧","🇦","🏳","🏴","🏁","🚩","🎌","🏻","🏼","🏽","🏾","🏿"]};function o(t){var o=[];return e.each(t.o.plugins.emoji.emojiList,(function(n,a){if(e.isArray(a)){var r=a[0],l=a[1],i=''+r+'',s="emoji-"+r.replace(/:/g,""),x={hasIcon:!1,text:i,fn:function(){return t.execCmd("insertImage",l,!1,!0),!0}};t.addBtnDef(s,x),o.push(s)}else{var F="emoji-"+a.replace(/:/g,""),d={text:a,fn:function(){var e=String.fromCodePoint(a.replace("&#","0"));return t.execCmd("insertText",e),!0}};t.addBtnDef(F,d),o.push(F)}})),o}e.extend(!0,e.trumbowyg,{langs:{en:{emoji:"Add an emoji"},da:{emoji:"Tilføj et humørikon"},de:{emoji:"Emoticon einfügen"},et:{emoji:"Lisa emotikon"},fr:{emoji:"Ajouter un emoji"},hu:{emoji:"Emoji beszúrás"},ja:{emoji:"絵文字の挿入"},ko:{emoji:"이모지 넣기"},ru:{emoji:"Вставить emoji"},tr:{emoji:"Emoji ekle"},zh_cn:{emoji:"添加表情"}},plugins:{emoji:{init:function(e){e.o.plugins.emoji=e.o.plugins.emoji||t;var n={dropdown:o(e)};e.addBtnDef("emoji",n)}}}})}(jQuery),function(e){"use strict";var t={emojiList:["⁉","™","ℹ","↔","↕","↖","↗","↘","↙","⌨","☀","☁","☂","☃","☄","☑","☔","☕","☘","☠","☢","☣","☦","☸","☹","♀","♂","♈","♉","♐","♑","♒","♓","♠","♣","♥","♦","♨","⚒","⚓","⚔","⚕","⚖","⚗","⚙","✂","✅","✈","✉","✒","✔","✖","✡","✨","✳","✴","❄","❇","❓","❔","❕","❗","❣","❤","➕","➖","➗","⤴","⤵","〰","㊗","㊙","🧡","💛","💚","💙","💜","🖤","🤎","🤍","💔","💕","💞","💓","💗","💖","💘","💝","💟","☮","✝","☪","🕉","🔯","🕎","☯","🛐","⛎","♊","♋","♌","♍","♎","♏","🆔","⚛","🉑","📴","📳","🈶","🈚","🈸","🈺","🈷","🆚","💮","🉐","🈴","🈵","🈹","🈲","🅰","🅱","🆎","🆑","🅾","🆘","❌","⭕","🛑","⛔","📛","🚫","💯","💢","🚷","🚯","🚳","🚱","🔞","📵","🚭","‼","🔅","🔆","〽","⚠","🚸","🔱","⚜","🔰","♻","🈯","💹","❎","🌐","💠","Ⓜ","🌀","💤","🏧","🚾","♿","🅿","🈳","🈂","🛂","🛃","🛄","🛅","🚹","🚺","🚼","🚻","🚮","🎦","📶","🈁","🔣","🔤","🔡","🔠","🆖","🆗","🆙","🆒","🆕","🆓","0","1","2","3","4","5","6","7","8","9","🔟","🔢","#","*","⏏","▶","⏸","⏯","⏹","⏺","⏭","⏮","⏩","⏪","⏫","⏬","◀","🔼","🔽","➡","⬅","⬆","⬇","↪","↩","🔀","🔁","🔂","🔄","🔃","🎵","🎶","♾","💲","💱","©","®","➰","➿","🔚","🔙","🔛","🔝","🔜","🔘","⚪","⚫","🔴","🔵","🟤","🟣","🟢","🟡","🟠","🔺","🔻","🔸","🔹","🔶","🔷","🔳","🔲","▪","▫","◾","◽","◼","◻","⬛","⬜","🟧","🟦","🟥","🟫","🟪","🟩","🟨","🔈","🔇","🔉","🔊","🔔","🔕","📣","📢","🗨","👁","💬","💭","🗯","🃏","🎴","🀄","🕐","🕑","🕒","🕓","🕔","🕕","🕖","🕗","🕘","🕙","🕚","🕛","🕜","🕝","🕞","🕟","🕠","🕡","🕢","🕣","🕤","🕥","🕦","🕧","⚽","🏀","🏈","⚾","🥎","🎾","🏐","🏉","🥏","🎱","🏓","🏸","🏒","🏑","🥍","🏏","🥅","⛳","🏹","🎣","🥊","🥋","🎽","🛹","🛷","🪂","⛸","🥌","🎿","⛷","🏂","🏋","🤼","🤸","⛹","🤺","🤾","🏌","🏇","🧘","🏄","🏊","🤽","🚣","🧗","🚵","🚴","🏆","🥇","🥈","🥉","🏅","🎖","🏵","🎗","🎫","🎟","🎪","🤹","🎭","🎨","🎬","🎤","🎧","🎼","🎹","🥁","🎷","🎺","🪕","🎸","🎻","🎲","♟","🎯","🪁","🪀","🎳","🎮","🎰","🧩","⌚","📱","📲","💻","🖥","🖨","🖱","🖲","🕹","🗜","💽","💾","💿","📀","📼","📷","📸","📹","🎥","📽","🎞","📞","☎","📟","📠","📺","📻","🎙","🎚","🎛","🧭","⏱","⏲","⏰","🕰","⌛","⏳","📡","🔋","🔌","💡","🔦","🕯","🧯","🛢","💸","💵","💴","💶","💷","💰","💳","💎","🧰","🔧","🔨","🛠","⛏","🔩","🧱","⛓","🧲","🔫","💣","🧨","🪓","🪒","🔪","🗡","🛡","🚬","⚰","⚱","🏺","🪔","🔮","📿","🧿","💈","🔭","🔬","🕳","🦯","🩺","🩹","💊","💉","🩸","🧬","🦠","🧫","🧪","🌡","🪑","🧹","🧺","🧻","🚽","🚰","🚿","🛁","🛀","🧼","🧽","🧴","🛎","🔑","🗝","🚪","🛋","🛏","🛌","🧸","🖼","🛍","🛒","🎁","🎈","🎏","🎀","🎊","🎉","🎎","🏮","🎐","🧧","📩","📨","📧","💌","📥","📤","📦","🏷","📪","📫","📬","📭","📮","📯","📜","📃","📄","📑","🧾","📊","📈","📉","🗒","🗓","📆","📅","🗑","📇","🗃","🗳","🗄","📋","📁","📂","🗂","🗞","📰","📓","📔","📒","📕","📗","📘","📙","📚","📖","🔖","🧷","🔗","📎","🖇","📐","📏","🧮","📌","📍","🖊","🖋","🖌","🖍","📝","✏","🔍","🔎","🔏","🔐","🔒","🔓","🐶","🐱","🐭","🐹","🐰","🦊","🐻","🐼","🐨","🐯","🦁","🐮","🐷","🐽","🐸","🐵","🙈","🙉","🙊","🐒","🐔","🐧","🐦","🐤","🐣","🐥","🦆","🦅","🦉","🦇","🐺","🐗","🐴","🦄","🐝","🐛","🦋","🐌","🐚","🐞","🐜","🦟","🦗","🕷","🕸","🦂","🐢","🐍","🦎","🦖","🦕","🐙","🦑","🦐","🦞","🦪","🦀","🐡","🐠","🐟","🐬","🐳","🐋","🦈","🐊","🐅","🐆","🦓","🦍","🦧","🐘","🦛","🦏","🐪","🐫","🦒","🦘","🐃","🐂","🐄","🐎","🐖","🐏","🦙","🐑","🐐","🦌","🐕","🦮","🐩","🐈","🐓","🦃","🦚","🦜","🦢","🦩","🕊","🐇","🦥","🦦","🦨","🦝","🦡","🐁","🐀","🐿","🦔","🐾","🐉","🐲","🌵","🎄","🌲","🌳","🌴","🌱","🌿","🍀","🎍","🎋","🍃","🍂","🍁","🍄","🌾","💐","🌷","🌹","🥀","🌺","🌸","🌼","🌻","🌞","🌝","🌛","🌜","🌚","🌕","🌖","🌗","🌘","🌑","🌒","🌓","🌔","🌙","🌎","🌍","🌏","🪐","💫","⭐","🌟","⚡","💥","🔥","🌪","🌈","🌤","⛅","🌥","🌦","🌧","⛈","🌩","🌨","⛄","🌬","💨","💧","💦","🌊","🌫","🍏","🍎","🍐","🍊","🍋","🍌","🍉","🍇","🍓","🍈","🍒","🍑","🥭","🍍","🥥","🥝","🍅","🍆","🥑","🥦","🥬","🥒","🌶","🌽","🥕","🧅","🧄","🥔","🍠","🥐","🥯","🍞","🥖","🥨","🧀","🥚","🍳","🥞","🧇","🥓","🥩","🍗","🍖","🌭","🍔","🍟","🍕","🥪","🧆","🥙","🌮","🌯","🥗","🥘","🥫","🍝","🍜","🍲","🍛","🍣","🍱","🥟","🍤","🍙","🍚","🍘","🍥","🥠","🥮","🍢","🍡","🍧","🍨","🍦","🥧","🧁","🍰","🎂","🍮","🍭","🍬","🍫","🍿","🍩","🍪","🌰","🥜","🍯","🧈","🥛","🍼","🍵","🧉","🥤","🧃","🧊","🍶","🍺","🍻","🥂","🍷","🥃","🍸","🍹","🍾","🥄","🍴","🍽","🥣","🥡","🥢","🧂","😀","😃","😄","😁","😆","😅","😂","🤣","☺","😊","😇","🙂","🙃","😉","😌","😍","🥰","😘","😗","😙","😚","😋","😛","😝","😜","🤪","🤨","🧐","🤓","😎","🤩","🥳","😏","😒","😞","😔","😟","😕","🙁","😣","😖","😫","😩","🥺","😢","😭","😤","😠","😡","🤬","🤯","😳","🥵","🥶","😱","😨","😰","😥","😓","🤗","🤔","🤭","🥱","🤫","🤥","😶","😐","😑","😬","🙄","😯","😦","😧","😮","😲","😴","🤤","😪","😵","🤐","🥴","🤢","🤮","🤧","😷","🤒","🤕","🤑","🤠","😈","👿","👹","👺","🤡","💩","👻","💀","👽","👾","🤖","🎃","😺","😸","😹","😻","😼","😽","🙀","😿","😾","🤲","👐","🙌","👏","🤝","👍","👎","👊","✊","🤛","🤜","🤞","✌","🤟","🤘","👌","🤏","👈","👉","👆","👇","☝","✋","🤚","🖐","🖖","👋","🤙","💪","🦾","🖕","✍","🙏","🦶","🦵","🦿","💄","💋","👄","🦷","🦴","👅","👂","🦻","👃","👣","👀","🧠","🗣","👤","👥","👶","👧","🧒","👦","👩","🧑","👨","👱","🧔","👵","🧓","👴","👲","👳","🧕","👮","👷","💂","🕵","👰","🤵","👸","🤴","🦸","🦹","🤶","🎅","🧙","🧝","🧛","🧟","🧞","🧜","🧚","👼","🤰","🤱","🙇","💁","🙅","🙆","🙋","🧏","🤦","🤷","🙎","🙍","💇","💆","🧖","💅","🤳","💃","🕺","👯","🕴","🚶","🏃","🧍","🧎","👫","👭","👬","💑","💏","👪","🧶","🧵","🧥","🥼","🦺","👚","👕","👖","🩳","👔","👗","👙","🩱","👘","🥻","🥿","👠","👡","👢","🩰","👞","👟","🥾","🩲","🧦","🧤","🧣","🎩","🧢","👒","🎓","⛑","👑","💍","👝","👛","👜","💼","🎒","🧳","👓","🕶","🥽","🤿","🌂","🦱","🦰","🦳","🦲","🚗","🚕","🚙","🚌","🚎","🏎","🚓","🚑","🚒","🚐","🚚","🚛","🚜","🛺","🛵","🏍","🛴","🚲","🦼","🦽","🚨","🚔","🚍","🚘","🚖","🚡","🚠","🚟","🚃","🚋","🚞","🚝","🚄","🚅","🚈","🚂","🚆","🚇","🚊","🚉","🛫","🛬","🛩","💺","🛰","🚀","🛸","🚁","🛶","⛵","🚤","🛥","🛳","⛴","🚢","⛽","🚧","🚦","🚥","🚏","🗺","🗿","🗽","🗼","🏰","🏯","🏟","🎡","🎢","🎠","⛲","⛱","🏖","🏝","🏜","🌋","⛰","🏔","🗻","🏕","⛺","🏠","🏡","🏘","🏚","🏗","🏭","🏢","🏬","🏣","🏤","🏥","🏦","🏨","🏪","🏫","🏩","💒","🏛","⛪","🕌","🛕","🕍","🕋","⛩","🛤","🛣","🗾","🎑","🏞","🌅","🌄","🌠","🎇","🎆","🌇","🌆","🏙","🌃","🌌","🌉","🌁","🇿","🇾","🇽","🇼","🇻","🇺","🇹","🇸","🇷","🇶","🇵","🇴","🇳","🇲","🇱","🇰","🇯","🇮","🇭","🇬","🇫","🇪","🇩","🇨","🇧","🇦","🏳","🏴","🏁","🚩","🎌","🏻","🏼","🏽","🏾","🏿"]};function o(t){var o=[];return e.each(t.o.plugins.emoji.emojiList,(function(n,a){if(e.isArray(a)){var r=a[0],l=a[1],i=''+r+'',s="emoji-"+r.replace(/:/g,""),x={hasIcon:!1,text:i,fn:function(){return t.execCmd("insertImage",l,!1,!0),!0}};t.addBtnDef(s,x),o.push(s)}else{var F="emoji-"+a.replace(/:/g,""),d={text:a,fn:function(){var e=String.fromCodePoint(a.replace("&#","0"));return t.execCmd("insertText",e),!0}};t.addBtnDef(F,d),o.push(F)}})),o}e.extend(!0,e.trumbowyg,{langs:{en:{emoji:"Add an emoji"},da:{emoji:"Tilføj et humørikon"},de:{emoji:"Emoticon einfügen"},et:{emoji:"Lisa emotikon"},fr:{emoji:"Ajouter un emoji"},hu:{emoji:"Emoji beszúrás"},ja:{emoji:"絵文字の挿入"},ko:{emoji:"이모지 넣기"},ru:{emoji:"Вставить emoji"},tr:{emoji:"Emoji ekle"},zh_cn:{emoji:"添加表情"}},plugins:{emoji:{init:function(e){e.o.plugins.emoji=e.o.plugins.emoji||t;var n={dropdown:o(e)};e.addBtnDef("emoji",n)}}}})}(jQuery),function(e){"use strict";function t(e){return("0"+parseInt(e).toString(16)).slice(-2)}function o(e){return-1===e.search("rgb")?e.replace("#",""):"rgba(0, 0, 0, 0)"===e?"transparent":t((e=e.match(/^rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*(\d?(.\d+)))?\)$/))[1])+t(e[2])+t(e[3])}e.extend(!0,e.trumbowyg,{langs:{en:{foreColor:"Text color",backColor:"Background color",foreColorRemove:"Remove text color",backColorRemove:"Remove background color"},cs:{foreColor:"Barva textu",backColor:"Barva pozadí"},da:{foreColor:"Tekstfarve",backColor:"Baggrundsfarve"},de:{foreColor:"Textfarbe",backColor:"Hintergrundfarbe"},et:{foreColor:"Teksti värv",backColor:"Taustavärv",foreColorRemove:"Eemalda teksti värv",backColorRemove:"Eemalda taustavärv"},fr:{foreColor:"Couleur du texte",backColor:"Couleur de fond",foreColorRemove:"Supprimer la couleur du texte",backColorRemove:"Supprimer la couleur de fond"},hu:{foreColor:"Betű szín",backColor:"Háttér szín",foreColorRemove:"Betű szín eltávolítása",backColorRemove:"Háttér szín eltávolítása"},ja:{foreColor:"文字色",backColor:"背景色"},ko:{foreColor:"글자색",backColor:"배경색",foreColorRemove:"글자색 지우기",backColorRemove:"배경색 지우기"},nl:{foreColor:"Tekstkleur",backColor:"Achtergrondkleur"},pt_br:{foreColor:"Cor de fonte",backColor:"Cor de fundo"},ru:{foreColor:"Цвет текста",backColor:"Цвет выделения текста"},sk:{foreColor:"Farba textu",backColor:"Farba pozadia"},tr:{foreColor:"Yazı rengi",backColor:"Arka plan rengi",foreColorRemove:"Yazı rengini kaldır",backColorRemove:"Arka plan rengini kaldır"},zh_cn:{foreColor:"文字颜色",backColor:"背景颜色"},zh_tw:{foreColor:"文字顏色",backColor:"背景顏色"}}});var n={colorList:["ffffff","000000","eeece1","1f497d","4f81bd","c0504d","9bbb59","8064a2","4bacc6","f79646","ffff00","f2f2f2","7f7f7f","ddd9c3","c6d9f0","dbe5f1","f2dcdb","ebf1dd","e5e0ec","dbeef3","fdeada","fff2ca","d8d8d8","595959","c4bd97","8db3e2","b8cce4","e5b9b7","d7e3bc","ccc1d9","b7dde8","fbd5b5","ffe694","bfbfbf","3f3f3f","938953","548dd4","95b3d7","d99694","c3d69b","b2a2c7","b7dde8","fac08f","f2c314","a5a5a5","262626","494429","17365d","366092","953734","76923c","5f497a","92cddc","e36c09","c09100","7f7f7f","0c0c0c","1d1b10","0f243e","244061","632423","4f6128","3f3151","31859b","974806","7f6000"],foreColorList:null,backColorList:null,allowCustomForeColor:!0,allowCustomBackColor:!0,displayAsList:!1};function a(t,o){var n=[],a=o.o.plugins.colors,r=a[t+"List"]||a.colorList;e.each(r,(function(e,r){var l=t+r,i={fn:t,forceCss:!0,hasIcon:!1,text:o.lang["#"+r]||"#"+r,param:"#"+r,style:"background-color: #"+r+";"};a.displayAsList&&"foreColor"===t&&(i.style="color: #"+r+" !important;"),o.addBtnDef(l,i),n.push(l)}));var l=t+"Remove",i={fn:"removeFormat",hasIcon:!1,param:t,style:"background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAG0lEQVQIW2NkQAAfEJMRmwBYhoGBYQtMBYoAADziAp0jtJTgAAAAAElFTkSuQmCC);"};if(a.displayAsList&&(i.style=""),o.addBtnDef(l,i),n.push(l),a["allowCustom"+t.charAt(0).toUpperCase()+t.substr(1)]){var s=t+"Free",x={fn:function(){o.openModalInsert(o.lang[t],{color:{label:t,forceCss:!0,type:"color",value:"#FFFFFF"}},(function(e){return o.execCmd(t,e.color),!0}))},hasIcon:!1,text:"#",style:"text-indent: 0; line-height: 20px; padding: 0 5px;"};o.addBtnDef(s,x),n.push(s)}return n}e.extend(!0,e.trumbowyg,{plugins:{color:{init:function(e){e.o.plugins.colors=e.o.plugins.colors||n;var t=e.o.plugins.colors.displayAsList?e.o.prefix+"dropdown--color-list":"",o={dropdown:a("foreColor",e),dropdownClass:t},r={dropdown:a("backColor",e),dropdownClass:t};e.addBtnDef("foreColor",o),e.addBtnDef("backColor",r)},tagHandler:function(e,t){var n,a=[];if(!e.style)return a;if(""!==e.style.backgroundColor){var r=o(e.style.backgroundColor);t.o.plugins.colors.colorList.indexOf(r)>=0?a.push("backColor"+r):a.push("backColorFree")}return""!==e.style.color?n=o(e.style.color):e.hasAttribute("color")&&(n=o(e.getAttribute("color"))),n&&(t.o.plugins.colors.colorList.indexOf(n)>=0?a.push("foreColor"+n):a.push("foreColorFree")),a}}}})}(jQuery),function(e){"use strict";function t(e){return("0"+parseInt(e).toString(16)).slice(-2)}function o(e){return-1===e.search("rgb")?e.replace("#",""):"rgba(0, 0, 0, 0)"===e?"transparent":t((e=e.match(/^rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*(\d?(.\d+)))?\)$/))[1])+t(e[2])+t(e[3])}e.extend(!0,e.trumbowyg,{langs:{en:{foreColor:"Text color",backColor:"Background color",foreColorRemove:"Remove text color",backColorRemove:"Remove background color"},cs:{foreColor:"Barva textu",backColor:"Barva pozadí"},da:{foreColor:"Tekstfarve",backColor:"Baggrundsfarve"},de:{foreColor:"Textfarbe",backColor:"Hintergrundfarbe"},et:{foreColor:"Teksti värv",backColor:"Taustavärv",foreColorRemove:"Eemalda teksti värv",backColorRemove:"Eemalda taustavärv"},fr:{foreColor:"Couleur du texte",backColor:"Couleur de fond",foreColorRemove:"Supprimer la couleur du texte",backColorRemove:"Supprimer la couleur de fond"},hu:{foreColor:"Betű szín",backColor:"Háttér szín",foreColorRemove:"Betű szín eltávolítása",backColorRemove:"Háttér szín eltávolítása"},ja:{foreColor:"文字色",backColor:"背景色"},ko:{foreColor:"글자색",backColor:"배경색",foreColorRemove:"글자색 지우기",backColorRemove:"배경색 지우기"},nl:{foreColor:"Tekstkleur",backColor:"Achtergrondkleur"},pt_br:{foreColor:"Cor de fonte",backColor:"Cor de fundo"},ru:{foreColor:"Цвет текста",backColor:"Цвет выделения текста"},sk:{foreColor:"Farba textu",backColor:"Farba pozadia"},tr:{foreColor:"Yazı rengi",backColor:"Arka plan rengi",foreColorRemove:"Yazı rengini kaldır",backColorRemove:"Arka plan rengini kaldır"},zh_cn:{foreColor:"文字颜色",backColor:"背景颜色"},zh_tw:{foreColor:"文字顏色",backColor:"背景顏色"}}});var n={colorList:["ffffff","000000","eeece1","1f497d","4f81bd","c0504d","9bbb59","8064a2","4bacc6","f79646","ffff00","f2f2f2","7f7f7f","ddd9c3","c6d9f0","dbe5f1","f2dcdb","ebf1dd","e5e0ec","dbeef3","fdeada","fff2ca","d8d8d8","595959","c4bd97","8db3e2","b8cce4","e5b9b7","d7e3bc","ccc1d9","b7dde8","fbd5b5","ffe694","bfbfbf","3f3f3f","938953","548dd4","95b3d7","d99694","c3d69b","b2a2c7","b7dde8","fac08f","f2c314","a5a5a5","262626","494429","17365d","366092","953734","76923c","5f497a","92cddc","e36c09","c09100","7f7f7f","0c0c0c","1d1b10","0f243e","244061","632423","4f6128","3f3151","31859b","974806","7f6000"],foreColorList:null,backColorList:null,allowCustomForeColor:!0,allowCustomBackColor:!0,displayAsList:!1};function a(t,o){var n=[],a=o.o.plugins.colors,r=a[t+"List"]||a.colorList;e.each(r,(function(e,r){var l=t+r,i={fn:t,forceCss:!0,hasIcon:!1,text:o.lang["#"+r]||"#"+r,param:"#"+r,style:"background-color: #"+r+";"};a.displayAsList&&"foreColor"===t&&(i.style="color: #"+r+" !important;"),o.addBtnDef(l,i),n.push(l)}));var l=t+"Remove",i={fn:"removeFormat",hasIcon:!1,param:t,style:"background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAG0lEQVQIW2NkQAAfEJMRmwBYhoGBYQtMBYoAADziAp0jtJTgAAAAAElFTkSuQmCC);"};if(a.displayAsList&&(i.style=""),o.addBtnDef(l,i),n.push(l),a["allowCustom"+t.charAt(0).toUpperCase()+t.substr(1)]){var s=t+"Free",x={fn:function(){o.openModalInsert(o.lang[t],{color:{label:t,forceCss:!0,type:"color",value:"#FFFFFF"}},(function(e){return o.execCmd(t,e.color),!0}))},hasIcon:!1,text:"#",style:"text-indent: 0; line-height: 20px; padding: 0 5px;"};o.addBtnDef(s,x),n.push(s)}return n}e.extend(!0,e.trumbowyg,{plugins:{color:{init:function(e){e.o.plugins.colors=e.o.plugins.colors||n;var t=e.o.plugins.colors.displayAsList?e.o.prefix+"dropdown--color-list":"",o={dropdown:a("foreColor",e),dropdownClass:t},r={dropdown:a("backColor",e),dropdownClass:t};e.addBtnDef("foreColor",o),e.addBtnDef("backColor",r)},tagHandler:function(e,t){var n,a=[];if(!e.style)return a;if(""!==e.style.backgroundColor){var r=o(e.style.backgroundColor);t.o.plugins.colors.colorList.indexOf(r)>=0?a.push("backColor"+r):a.push("backColorFree")}return""!==e.style.color?n=o(e.style.color):e.hasAttribute("color")&&(n=o(e.getAttribute("color"))),n&&(t.o.plugins.colors.colorList.indexOf(n)>=0?a.push("foreColor"+n):a.push("foreColorFree")),a}}}})}(jQuery),function(e){"use strict";e.extend(!0,e.trumbowyg,{langs:{en:{fontsize:"Font size",fontsizes:{"x-small":"Extra small",small:"Small",medium:"Regular",large:"Large","x-large":"Extra large",custom:"Custom"},fontCustomSize:{title:"Custom Font Size",label:"Font Size",value:"48px"}},da:{fontsize:"Skriftstørrelse",fontsizes:{"x-small":"Ekstra lille",small:"Lille",medium:"Normal",large:"Stor","x-large":"Ekstra stor",custom:"Brugerdefineret"}},de:{fontsize:"Schriftgröße",fontsizes:{"x-small":"Sehr klein",small:"Klein",medium:"Normal",large:"Groß","x-large":"Sehr groß",custom:"Benutzerdefiniert"},fontCustomSize:{title:"Benutzerdefinierte Schriftgröße",label:"Schriftgröße",value:"48px"}},es:{fontsize:"Tamaño de Fuente",fontsizes:{"x-small":"Extra pequeña",small:"Pegueña",medium:"Regular",large:"Grande","x-large":"Extra Grande",custom:"Customizada"},fontCustomSize:{title:"Tamaño de Fuente Customizada",label:"Tamaño de Fuente",value:"48px"}},et:{fontsize:"Teksti suurus",fontsizes:{"x-small":"Väga väike",small:"Väike",medium:"Tavaline",large:"Suur","x-large":"Väga suur",custom:"Määra ise"},fontCustomSize:{title:"Kohandatud teksti suurus",label:"Teksti suurus",value:"48px"}},fr:{fontsize:"Taille de la police",fontsizes:{"x-small":"Très petit",small:"Petit",medium:"Normal",large:"Grand","x-large":"Très grand",custom:"Taille personnalisée"},fontCustomSize:{title:"Taille de police personnalisée",label:"Taille de la police",value:"48px"}},hu:{fontsize:"Betű méret",fontsizes:{"x-small":"Extra kicsi",small:"Kicsi",medium:"Normális",large:"Nagy","x-large":"Extra nagy",custom:"Egyedi"},fontCustomSize:{title:"Egyedi betű méret",label:"Betű méret",value:"48px"}},it:{fontsize:"Dimensioni del testo",fontsizes:{"x-small":"Molto piccolo",small:"piccolo",regular:"normale",large:"grande","x-large":"Molto grande",custom:"Personalizzato"},fontCustomSize:{title:"Dimensioni del testo personalizzato",label:"Dimensioni del testo",value:"48px"}},ko:{fontsize:"글꼴 크기",fontsizes:{"x-small":"아주 작게",small:"작게",medium:"보통",large:"크게","x-large":"아주 크게",custom:"사용자 지정"},fontCustomSize:{title:"사용자 지정 글꼴 크기",label:"글꼴 크기",value:"48px"}},nl:{fontsize:"Lettergrootte",fontsizes:{"x-small":"Extra klein",small:"Klein",medium:"Normaal",large:"Groot","x-large":"Extra groot",custom:"Tilpasset"}},pt_br:{fontsize:"Tamanho da fonte",fontsizes:{"x-small":"Extra pequeno",small:"Pequeno",regular:"Médio",large:"Grande","x-large":"Extra grande",custom:"Personalizado"},fontCustomSize:{title:"Tamanho de Fonte Personalizado",label:"Tamanho de Fonte",value:"48px"}},tr:{fontsize:"Yazı boyutu",fontsizes:{"x-small":"Çok küçük",small:"Küçük",medium:"Normal",large:"Büyük","x-large":"Çok büyük",custom:"Özel"},fontCustomSize:{title:"Özel Yazı Boyutu",label:"Yazı Boyutu",value:"48px"}},zh_tw:{fontsize:"字體大小",fontsizes:{"x-small":"最小",small:"小",medium:"中",large:"大","x-large":"最大",custom:"自訂大小"},fontCustomSize:{title:"自訂義字體大小",label:"字體大小",value:"48px"}}}});var t={sizeList:["x-small","small","medium","large","x-large"],allowCustomSize:!0};function o(t,o){t.$ed.focus(),t.saveRange(),t.execCmd("fontSize","1"),t.$ed.find('font[size="1"]').replaceWith((function(){return e("",{css:{"font-size":o},html:this.innerHTML})})),e(t.range.startContainer.parentElement).find('span[style=""]').contents().unwrap(),t.restoreRange(),t.syncCode(),t.$c.trigger("tbwchange")}function n(t){var n=[];if(e.each(t.o.plugins.fontsize.sizeList,(function(e,a){t.addBtnDef("fontsize_"+a,{text:''+(t.lang.fontsizes[a]||a)+"",hasIcon:!1,fn:function(){o(t,a)}}),n.push("fontsize_"+a)})),t.o.plugins.fontsize.allowCustomSize){var a="fontsize_custom",r={fn:function(){t.openModalInsert(t.lang.fontCustomSize.title,{size:{label:t.lang.fontCustomSize.label,value:t.lang.fontCustomSize.value}},(function(e){return o(t,e.size),!0}))},text:''+t.lang.fontsizes.custom+"",hasIcon:!1};t.addBtnDef(a,r),n.push(a)}return n}e.extend(!0,e.trumbowyg,{plugins:{fontsize:{init:function(o){o.o.plugins.fontsize=e.extend({},t,o.o.plugins.fontsize||{}),o.addBtnDef("fontsize",{dropdown:n(o)})}}}})}(jQuery),function(e){"use strict";e.extend(!0,e.trumbowyg,{langs:{en:{fontsize:"Font size",fontsizes:{"x-small":"Extra small",small:"Small",medium:"Regular",large:"Large","x-large":"Extra large",custom:"Custom"},fontCustomSize:{title:"Custom Font Size",label:"Font Size",value:"48px"}},da:{fontsize:"Skriftstørrelse",fontsizes:{"x-small":"Ekstra lille",small:"Lille",medium:"Normal",large:"Stor","x-large":"Ekstra stor",custom:"Brugerdefineret"}},de:{fontsize:"Schriftgröße",fontsizes:{"x-small":"Sehr klein",small:"Klein",medium:"Normal",large:"Groß","x-large":"Sehr groß",custom:"Benutzerdefiniert"},fontCustomSize:{title:"Benutzerdefinierte Schriftgröße",label:"Schriftgröße",value:"48px"}},es:{fontsize:"Tamaño de Fuente",fontsizes:{"x-small":"Extra pequeña",small:"Pegueña",medium:"Regular",large:"Grande","x-large":"Extra Grande",custom:"Customizada"},fontCustomSize:{title:"Tamaño de Fuente Customizada",label:"Tamaño de Fuente",value:"48px"}},et:{fontsize:"Teksti suurus",fontsizes:{"x-small":"Väga väike",small:"Väike",medium:"Tavaline",large:"Suur","x-large":"Väga suur",custom:"Määra ise"},fontCustomSize:{title:"Kohandatud teksti suurus",label:"Teksti suurus",value:"48px"}},fr:{fontsize:"Taille de la police",fontsizes:{"x-small":"Très petit",small:"Petit",medium:"Normal",large:"Grand","x-large":"Très grand",custom:"Taille personnalisée"},fontCustomSize:{title:"Taille de police personnalisée",label:"Taille de la police",value:"48px"}},hu:{fontsize:"Betű méret",fontsizes:{"x-small":"Extra kicsi",small:"Kicsi",medium:"Normális",large:"Nagy","x-large":"Extra nagy",custom:"Egyedi"},fontCustomSize:{title:"Egyedi betű méret",label:"Betű méret",value:"48px"}},it:{fontsize:"Dimensioni del testo",fontsizes:{"x-small":"Molto piccolo",small:"piccolo",regular:"normale",large:"grande","x-large":"Molto grande",custom:"Personalizzato"},fontCustomSize:{title:"Dimensioni del testo personalizzato",label:"Dimensioni del testo",value:"48px"}},ko:{fontsize:"글꼴 크기",fontsizes:{"x-small":"아주 작게",small:"작게",medium:"보통",large:"크게","x-large":"아주 크게",custom:"사용자 지정"},fontCustomSize:{title:"사용자 지정 글꼴 크기",label:"글꼴 크기",value:"48px"}},nl:{fontsize:"Lettergrootte",fontsizes:{"x-small":"Extra klein",small:"Klein",medium:"Normaal",large:"Groot","x-large":"Extra groot",custom:"Tilpasset"}},pt_br:{fontsize:"Tamanho da fonte",fontsizes:{"x-small":"Extra pequeno",small:"Pequeno",regular:"Médio",large:"Grande","x-large":"Extra grande",custom:"Personalizado"},fontCustomSize:{title:"Tamanho de Fonte Personalizado",label:"Tamanho de Fonte",value:"48px"}},tr:{fontsize:"Yazı boyutu",fontsizes:{"x-small":"Çok küçük",small:"Küçük",medium:"Normal",large:"Büyük","x-large":"Çok büyük",custom:"Özel"},fontCustomSize:{title:"Özel Yazı Boyutu",label:"Yazı Boyutu",value:"48px"}},zh_tw:{fontsize:"字體大小",fontsizes:{"x-small":"最小",small:"小",medium:"中",large:"大","x-large":"最大",custom:"自訂大小"},fontCustomSize:{title:"自訂義字體大小",label:"字體大小",value:"48px"}}}});var t={sizeList:["x-small","small","medium","large","x-large"],allowCustomSize:!0};function o(t,o){t.$ed.focus(),t.saveRange(),t.execCmd("fontSize","1"),t.$ed.find('font[size="1"]').replaceWith((function(){return e("",{css:{"font-size":o},html:this.innerHTML})})),e(t.range.startContainer.parentElement).find('span[style=""]').contents().unwrap(),t.restoreRange(),t.syncCode(),t.$c.trigger("tbwchange")}function n(t){var n=[];if(e.each(t.o.plugins.fontsize.sizeList,(function(e,a){t.addBtnDef("fontsize_"+a,{text:''+(t.lang.fontsizes[a]||a)+"",hasIcon:!1,fn:function(){o(t,a)}}),n.push("fontsize_"+a)})),t.o.plugins.fontsize.allowCustomSize){var a="fontsize_custom",r={fn:function(){t.openModalInsert(t.lang.fontCustomSize.title,{size:{label:t.lang.fontCustomSize.label,value:t.lang.fontCustomSize.value}},(function(e){return o(t,e.size),!0}))},text:''+t.lang.fontsizes.custom+"",hasIcon:!1};t.addBtnDef(a,r),n.push(a)}return n}e.extend(!0,e.trumbowyg,{plugins:{fontsize:{init:function(o){o.o.plugins.fontsize=e.extend({},t,o.o.plugins.fontsize||{}),o.addBtnDef("fontsize",{dropdown:n(o)})}}}})}(jQuery),function(e){"use strict";e.extend(!0,e.trumbowyg,{langs:{en:{fontFamily:"Font"},es:{fontFamily:"Fuente"},da:{fontFamily:"Skrifttype"},de:{fontFamily:"Schriftart"},et:{fontFamily:"Font"},fr:{fontFamily:"Police"},hu:{fontFamily:"Betűtípus"},ko:{fontFamily:"글꼴"},nl:{fontFamily:"Lettertype"},pt_br:{fontFamily:"Fonte"},tr:{fontFamily:"Yazı tipi"},zh_tw:{fontFamily:"字體"}}});var t={fontList:[{name:"Arial",family:"Arial, Helvetica, sans-serif"},{name:"Arial Black",family:"Arial Black, Gadget, sans-serif"},{name:"Comic Sans",family:"Comic Sans MS, Textile, cursive, sans-serif"},{name:"Courier New",family:"Courier New, Courier, monospace"},{name:"Georgia",family:"Georgia, serif"},{name:"Impact",family:"Impact, Charcoal, sans-serif"},{name:"Lucida Console",family:"Lucida Console, Monaco, monospace"},{name:"Lucida Sans",family:"Lucida Sans Uncide, Lucida Grande, sans-serif"},{name:"Palatino",family:"Palatino Linotype, Book Antiqua, Palatino, serif"},{name:"Tahoma",family:"Tahoma, Geneva, sans-serif"},{name:"Times New Roman",family:"Times New Roman, Times, serif"},{name:"Trebuchet",family:"Trebuchet MS, Helvetica, sans-serif"},{name:"Verdana",family:"Verdana, Geneva, sans-serif"}]};function o(t){var o=[];return e.each(t.o.plugins.fontfamily.fontList,(function(e,n){t.addBtnDef("fontfamily_"+e,{title:''+n.name+"",hasIcon:!1,fn:function(){t.execCmd("fontName",n.family,!0)}}),o.push("fontfamily_"+e)})),o}e.extend(!0,e.trumbowyg,{plugins:{fontfamily:{init:function(n){n.o.plugins.fontfamily=e.extend({},t,n.o.plugins.fontfamily||{}),n.addBtnDef("fontfamily",{dropdown:o(n),hasIcon:!1,text:n.lang.fontFamily})}}}})}(jQuery),function(e){"use strict";e.extend(!0,e.trumbowyg,{langs:{en:{fontFamily:"Font"},es:{fontFamily:"Fuente"},da:{fontFamily:"Skrifttype"},de:{fontFamily:"Schriftart"},et:{fontFamily:"Font"},fr:{fontFamily:"Police"},hu:{fontFamily:"Betűtípus"},ko:{fontFamily:"글꼴"},nl:{fontFamily:"Lettertype"},pt_br:{fontFamily:"Fonte"},tr:{fontFamily:"Yazı tipi"},zh_tw:{fontFamily:"字體"}}});var t={fontList:[{name:"Arial",family:"Arial, Helvetica, sans-serif"},{name:"Arial Black",family:"Arial Black, Gadget, sans-serif"},{name:"Comic Sans",family:"Comic Sans MS, Textile, cursive, sans-serif"},{name:"Courier New",family:"Courier New, Courier, monospace"},{name:"Georgia",family:"Georgia, serif"},{name:"Impact",family:"Impact, Charcoal, sans-serif"},{name:"Lucida Console",family:"Lucida Console, Monaco, monospace"},{name:"Lucida Sans",family:"Lucida Sans Uncide, Lucida Grande, sans-serif"},{name:"Palatino",family:"Palatino Linotype, Book Antiqua, Palatino, serif"},{name:"Tahoma",family:"Tahoma, Geneva, sans-serif"},{name:"Times New Roman",family:"Times New Roman, Times, serif"},{name:"Trebuchet",family:"Trebuchet MS, Helvetica, sans-serif"},{name:"Verdana",family:"Verdana, Geneva, sans-serif"}]};function o(t){var o=[];return e.each(t.o.plugins.fontfamily.fontList,(function(e,n){t.addBtnDef("fontfamily_"+e,{title:''+n.name+"",hasIcon:!1,fn:function(){t.execCmd("fontName",n.family,!0)}}),o.push("fontfamily_"+e)})),o}e.extend(!0,e.trumbowyg,{plugins:{fontfamily:{init:function(n){n.o.plugins.fontfamily=e.extend({},t,n.o.plugins.fontfamily||{}),n.addBtnDef("fontfamily",{dropdown:o(n),hasIcon:!1,text:n.lang.fontFamily})}}}})}(jQuery),function(e){"use strict";e.extend(!0,e.trumbowyg,{langs:{en:{giphy:"Insert GIF"},et:{giphy:"Sisesta GIF"},fr:{giphy:"Insérer un GIF"},hu:{giphy:"GIF beszúrás"},tr:{giphy:"GIF ekle"}}});var t="tbwcancel";function o(t,o,n,a){var r=(o.width()-20)/3,l=t.data.filter((function(e){return""!==e.images.downsized.url})).map((function(e){var t=e.images.downsized,o=t.height/t.width;return'
    '})).join("");if(!0===a){if(0===l.length){if(e("."+n.o.prefix+"giphy-no-result",o).length>0)return;l=''}o.empty()}o.append(l),e("img",o).on("click",(function(){n.restoreRange(),n.execCmd("insertImage",e(this).attr("src"),!1,!0),e("img",o).off(),n.closeModal()}))}var n={rating:"g",apiKey:null,throttleDelay:300,noResultGifUrl:"https://media.giphy.com/media/2Faz9FbRzmwxY0pZS/giphy.gif"};e.extend(!0,e.trumbowyg,{plugins:{giphy:{init:function(a){a.o.plugins.giphy=e.extend({},n,a.o.plugins.giphy||{}),a.addBtnDef("giphy",{fn:function(){if(null===a.o.plugins.giphy.apiKey)throw new Error("You must set a Giphy API Key");var n="https://api.giphy.com/v1/gifs/search?api_key="+a.o.plugins.giphy.apiKey+"&rating="+a.o.plugins.giphy.rating,r=n.replace("/search","/trending"),l={abort:function(){}},i=a.o.prefix,s=''+('')+('
    Powered by
    ')+'
    ';a.openModal(null,s,!1).one(t,(function(){try{l.abort()}catch(e){}a.closeModal()}));var x=e("."+i+"giphy-search"),F=e("."+i+"giphy-close"),d=e("."+i+"giphy-modal"),u=function(){navigator.onLine||e("."+i+"giphy-offline",d).length||(d.empty(),d.append('

    You are offline

    '))};e.ajax({url:r,dataType:"json",success:function(e){o(e,d,a,!0)},error:u});var c,f,m,p,g=(c=function(){var t=x.val();if(0!==t.length){try{l.abort()}catch(e){}l=e.ajax({url:n+"&q="+encodeURIComponent(t),dataType:"json",success:function(e){o(e,d,a,!0)},error:u})}},f=a.o.plugins.giphy.throttleDelay,function(){var e=this,t=+new Date,o=arguments;m&&t
    '})).join("");if(!0===a){if(0===l.length){if(e("."+n.o.prefix+"giphy-no-result",o).length>0)return;l=''}o.empty()}o.append(l),e("img",o).on("click",(function(){n.restoreRange(),n.execCmd("insertImage",e(this).attr("src"),!1,!0),e("img",o).off(),n.closeModal()}))}var n={rating:"g",apiKey:null,throttleDelay:300,noResultGifUrl:"https://media.giphy.com/media/2Faz9FbRzmwxY0pZS/giphy.gif"};e.extend(!0,e.trumbowyg,{plugins:{giphy:{init:function(a){a.o.plugins.giphy=e.extend({},n,a.o.plugins.giphy||{}),a.addBtnDef("giphy",{fn:function(){if(null===a.o.plugins.giphy.apiKey)throw new Error("You must set a Giphy API Key");var n="https://api.giphy.com/v1/gifs/search?api_key="+a.o.plugins.giphy.apiKey+"&rating="+a.o.plugins.giphy.rating,r=n.replace("/search","/trending"),l={abort:function(){}},i=a.o.prefix,s='
    Powered by
    ';a.openModal(null,s,!1).one(t,(function(){try{l.abort()}catch(e){}a.closeModal()}));var x=e("."+i+"giphy-search"),F=e("."+i+"giphy-close"),d=e("."+i+"giphy-modal"),u=function(){navigator.onLine||e("."+i+"giphy-offline",d).length||(d.empty(),d.append('

    You are offline

    '))};e.ajax({url:r,dataType:"json",success:function(e){o(e,d,a,!0)},error:u});var c,f,m,p,g=(c=function(){var t=x.val();if(0!==t.length){try{l.abort()}catch(e){}l=e.ajax({url:n+"&q="+encodeURIComponent(t),dataType:"json",success:function(e){o(e,d,a,!0)},error:u})}},f=a.o.plugins.giphy.throttleDelay,function(){var e=this,t=+new Date,o=arguments;m&&t0){t.o.plugins.history._index-=1;var e=t.o.plugins.history._index,o=t.o.plugins.history._stack[e];t.execCmd("html",o),t.o.plugins.history._stack[e]=t.$ed.html(),i(),a()}}},a=function(){var e=t.o.plugins.history._index,o=t.o.plugins.history._stack.length,n=0!==o&&e!==o-1;r("historyUndo",e>0),r("historyRedo",n)},r=function(e,o){var n=t.$box.find(".trumbowyg-"+e+"-button");o?n.removeClass("trumbowyg-disable"):n.hasClass("trumbowyg-disable")||n.addClass("trumbowyg-disable")},l=function(e,t){if(e===t)return!0;if(null==e||null==t)return!1;if(e.length!==t.length)return!1;for(var o=0;o0&&(o.setStartAfter(e.childNodes[e.childNodes.length-1]),o.setEndAfter(e.childNodes[e.childNodes.length-1]),t.doc.getSelection().removeAllRanges(),t.doc.getSelection().addRange(o))};t.$c.on("tbwinit tbwchange",(function(){var o,n,r=t.o.plugins.history._index,i=t.o.plugins.history._stack,s=i.slice(-1)[0]||"

    ",x=i[r],F=t.$ed.html(),d=t.doc.getSelection().focusNode,u="",c=t.o.plugins.history._focusEl;o=e("
    "+s+"
    ").find("*").map((function(){return this.localName})),n=e("
    "+F+"
    ").find("*").map((function(){return this.localName})),d&&(t.o.plugins.history._focusEl=d,u=d.outerHTML||d.textContent),F!==x&&(u.slice(-1).match(/\s/)||!l(o,n)||t.o.plugins.history._index<=0||d!==c?(t.o.plugins.history._index+=1,t.o.plugins.history._stack=i.slice(0,t.o.plugins.history._index),t.o.plugins.history._stack.push(F)):t.o.plugins.history._stack[r]=F,a())})),t.addBtnDef("historyRedo",o),t.addBtnDef("historyUndo",n)}}}})}(jQuery),function(e){"use strict";e.extend(!0,e.trumbowyg,{langs:{en:{history:{redo:"Redo",undo:"Undo"}},da:{history:{redo:"Annuller fortryd",undo:"Fortryd"}},de:{history:{redo:"Wiederholen",undo:"Rückgängig"}},et:{history:{redo:"Võta tagasi",undo:"Tee uuesti"}},fr:{history:{redo:"Annuler",undo:"Rétablir"}},hu:{history:{redo:"Visszállít",undo:"Visszavon"}},ko:{history:{redo:"다시 실행",undo:"되돌리기"}},pt_br:{history:{redo:"Refazer",undo:"Desfazer"}},zh_tw:{history:{redo:"重做",undo:"復原"}}},plugins:{history:{init:function(t){t.o.plugins.history=e.extend(!0,{_stack:[],_index:-1,_focusEl:void 0},t.o.plugins.history||{});var o={title:t.lang.history.redo,ico:"redo",key:"Y",fn:function(){if(t.o.plugins.history._index0){t.o.plugins.history._index-=1;var e=t.o.plugins.history._index,o=t.o.plugins.history._stack[e];t.execCmd("html",o),t.o.plugins.history._stack[e]=t.$ed.html(),l(),a()}}},a=function(){var e=t.o.plugins.history._index,o=t.o.plugins.history._stack.length,n=0!==o&&e!==o-1;r("historyUndo",e>0),r("historyRedo",n)},r=function(e,o){var n=t.$box.find(".trumbowyg-"+e+"-button");o?n.removeClass("trumbowyg-disable"):n.hasClass("trumbowyg-disable")||n.addClass("trumbowyg-disable")},l=function(){var e=t.doc.getSelection().focusNode,o=t.doc.createRange();e.childNodes.length>0&&(o.setStartAfter(e.childNodes[e.childNodes.length-1]),o.setEndAfter(e.childNodes[e.childNodes.length-1]),t.doc.getSelection().removeAllRanges(),t.doc.getSelection().addRange(o))};t.$c.on("tbwinit tbwchange",(function(){var o,n,r=t.o.plugins.history._index,l=t.o.plugins.history._stack,i=l.slice(-1)[0]||"

    ",s=l[r],x=t.$ed.html(),F=t.doc.getSelection().focusNode,d="",u=t.o.plugins.history._focusEl;o=e("
    "+i+"
    ").find("*").map((function(){return this.localName})),n=e("
    "+x+"
    ").find("*").map((function(){return this.localName})),F&&(t.o.plugins.history._focusEl=F,d=F.outerHTML||F.textContent),x!==s&&(d.slice(-1).match(/\s/)||!function(e,t){if(e===t)return!0;if(null==e||null==t)return!1;if(e.length!==t.length)return!1;for(var o=0;o")[0];return o.range.deleteContents(),o.range.insertNode(a),!0}))}};o.addBtnDef("insertAudio",n)}}}})}(jQuery),function(e){"use strict";var t={src:{label:"URL",required:!0},autoplay:{label:"AutoPlay",required:!1,type:"checkbox"},muted:{label:"Muted",required:!1,type:"checkbox"},preload:{label:"preload options",required:!1}};e.extend(!0,e.trumbowyg,{langs:{en:{insertAudio:"Insert Audio"},da:{insertAudio:"Indsæt lyd"},et:{insertAudio:"Lisa helifail"},fr:{insertAudio:"Insérer un son"},hu:{insertAudio:"Audio beszúrás"},ja:{insertAudio:"音声の挿入"},ko:{insertAudio:"소리 넣기"},pt_br:{insertAudio:"Inserir áudio"},ru:{insertAudio:"Вставить аудио"},tr:{insertAudio:"Ses Ekle"}},plugins:{insertAudio:{init:function(o){var n={fn:function(){o.openModalInsert(o.lang.insertAudio,t,(function(t){var n="")[0];return o.range.deleteContents(),o.range.insertNode(a),!0}))}};o.addBtnDef("insertAudio",n)}}}})}(jQuery),function(e){"use strict";e.extend(!0,e.trumbowyg,{langs:{en:{lineheight:"Line height",lineheights:{.9:"Small",normal:"Regular",1.5:"Large","2.0":"Extra large"}},da:{lineheight:"Linjehøjde",lineheights:{.9:"Lille",normal:"Normal",1.5:"Stor","2.0":"Ekstra stor"}},et:{lineheight:"Reavahe",lineheights:{.9:"Väike",normal:"Tavaline",1.5:"Suur","2.0":"Väga suur"}},fr:{lineheight:"Hauteur de ligne",lineheights:{.9:"Petite",normal:"Normale",1.5:"Grande","2.0":"Très grande"}},hu:{lineheight:"Line height",lineheights:{.9:"Small",normal:"Regular",1.5:"Large","2.0":"Extra large"}},it:{lineheight:"Altezza linea",lineheights:{.9:"Bassa",normal:"Normale",1.5:"Alta","2.0":"Molto alta"}},ko:{lineheight:"줄 간격",lineheights:{.9:"좁게",normal:"보통",1.5:"넓게","2.0":"아주 넓게"}},nl:{lineheight:"Regelhoogte",lineheights:{.9:"Klein",normal:"Normaal",1.5:"Groot","2.0":"Extra groot"}},pt_br:{lineheight:"Altura de linha",lineheights:{.9:"Pequena",normal:"Regular",1.5:"Grande","2.0":"Extra grande"}},tr:{lineheight:"Satır yüksekliği",lineheights:{.9:"Küçük",normal:"Normal",1.5:"Büyük","2.0":"Çok Büyük"}},zh_tw:{lineheight:"文字間距",lineheights:{.9:"小",normal:"正常",1.5:"大","2.0":"特大"}}}});var t={sizeList:["0.9","normal","1.5","2.0"]};function o(t){var o=[];return e.each(t.o.plugins.lineheight.sizeList,(function(n,a){t.addBtnDef("lineheight_"+a,{text:t.lang.lineheights[a]||a,hasIcon:!1,fn:function(){if(t.saveRange(),""!==t.getRangeText().replace(/\s/g,""))try{var o=function(){var e,t=null;window.getSelection?(e=window.getSelection()).rangeCount&&1!==(t=e.getRangeAt(0).commonAncestorContainer).nodeType&&(t=t.parentNode):(e=document.selection)&&"Control"!==e.type&&(t=e.createRange().parentElement());return t}();e(o).css("lineHeight",a)}catch(e){}}}),o.push("lineheight_"+a)})),o}e.extend(!0,e.trumbowyg,{plugins:{lineheight:{init:function(n){n.o.plugins.lineheight=e.extend({},t,n.o.plugins.lineheight||{}),n.addBtnDef("lineheight",{dropdown:o(n)})}}}})}(jQuery),function(e){"use strict";e.extend(!0,e.trumbowyg,{langs:{en:{lineheight:"Line height",lineheights:{.9:"Small",normal:"Regular",1.5:"Large","2.0":"Extra large"}},da:{lineheight:"Linjehøjde",lineheights:{.9:"Lille",normal:"Normal",1.5:"Stor","2.0":"Ekstra stor"}},et:{lineheight:"Reavahe",lineheights:{.9:"Väike",normal:"Tavaline",1.5:"Suur","2.0":"Väga suur"}},fr:{lineheight:"Hauteur de ligne",lineheights:{.9:"Petite",normal:"Normale",1.5:"Grande","2.0":"Très grande"}},hu:{lineheight:"Line height",lineheights:{.9:"Small",normal:"Regular",1.5:"Large","2.0":"Extra large"}},it:{lineheight:"Altezza linea",lineheights:{.9:"Bassa",normal:"Normale",1.5:"Alta","2.0":"Molto alta"}},ko:{lineheight:"줄 간격",lineheights:{.9:"좁게",normal:"보통",1.5:"넓게","2.0":"아주 넓게"}},nl:{lineheight:"Regelhoogte",lineheights:{.9:"Klein",normal:"Normaal",1.5:"Groot","2.0":"Extra groot"}},pt_br:{lineheight:"Altura de linha",lineheights:{.9:"Pequena",normal:"Regular",1.5:"Grande","2.0":"Extra grande"}},tr:{lineheight:"Satır yüksekliği",lineheights:{.9:"Küçük",normal:"Normal",1.5:"Büyük","2.0":"Çok Büyük"}},zh_tw:{lineheight:"文字間距",lineheights:{.9:"小",normal:"正常",1.5:"大","2.0":"特大"}}}});var t={sizeList:["0.9","normal","1.5","2.0"]};function o(t){var o=[];return e.each(t.o.plugins.lineheight.sizeList,(function(n,a){t.addBtnDef("lineheight_"+a,{text:t.lang.lineheights[a]||a,hasIcon:!1,fn:function(){if(t.saveRange(),""!==t.getRangeText().replace(/\s/g,""))try{var o=function(){var e,t=null;return window.getSelection?(e=window.getSelection()).rangeCount&&1!==(t=e.getRangeAt(0).commonAncestorContainer).nodeType&&(t=t.parentNode):(e=document.selection)&&"Control"!==e.type&&(t=e.createRange().parentElement()),t}();e(o).css("lineHeight",a)}catch(e){}}}),o.push("lineheight_"+a)})),o}e.extend(!0,e.trumbowyg,{plugins:{lineheight:{init:function(n){n.o.plugins.lineheight=e.extend({},t,n.o.plugins.lineheight||{}),n.addBtnDef("lineheight",{dropdown:o(n)})}}}})}(jQuery),function(e){"use strict";e.extend(!0,e.trumbowyg,{langs:{en:{mathml:"Insert Formulas",formulas:"Formulas",inline:"Inline"},da:{mathml:"Indsæt formler",formulas:"Formler",inline:"Inline"},et:{mathml:"Sisesta valem",formulas:"Valemid",inline:"Teksti sees"},fr:{mathml:"Inserer une formule",formulas:"Formule",inline:"En ligne"},hu:{mathml:"Formulák beszúrás",formulas:"Formulák",inline:"Inline"},ko:{mathml:"수식 넣기",formulas:"수식",inline:"글 안에 넣기"},pt_br:{mathml:"Inserir fórmulas",formulas:"Fórmulas",inline:"Em linha"},tr:{mathml:"Formül Ekle",formulas:"Formüller",inline:"Satır içi"},zh_tw:{mathml:"插入方程式",formulas:"方程式",inline:"內嵌"}},plugins:{mathml:{init:function(t){var o={fn:function(){t.saveRange();var o={formulas:{label:t.lang.formulas,required:!0,value:""},inline:{label:t.lang.inline,attributes:{checked:!0},type:"checkbox",required:!1}};o.formulas.value=t.getRangeText(),o.inline.attributes.checked=!0,t.openModalInsert(t.lang.mathml,o,(function n(a){var r=a.inline?"$":"$$";if(t.currentMathNode)e(t.currentMathNode).html(r+" "+a.formulas+" "+r).attr("formulas",a.formulas).attr("inline",a.inline?"true":"false");else{var l=''+r+" "+a.formulas+" "+r+"",i=e(l)[0];i.onclick=function(){t.currentMathNode=this,o.formulas.value=e(this).attr("formulas"),"true"===e(this).attr("inline")?o.inline.attributes.checked=!0:delete o.inline.attributes.checked,t.openModalInsert(t.lang.mathml,o,n)},t.range.deleteContents(),t.range.insertNode(i)}return t.currentMathNode=!1,MathJax.Hub.Queue(["Typeset",MathJax.Hub]),!0}))}};t.addBtnDef("mathml",o)}}}})}(jQuery),function(e){"use strict";e.extend(!0,e.trumbowyg,{langs:{en:{mathml:"Insert Formulas",formulas:"Formulas",inline:"Inline"},da:{mathml:"Indsæt formler",formulas:"Formler",inline:"Inline"},et:{mathml:"Sisesta valem",formulas:"Valemid",inline:"Teksti sees"},fr:{mathml:"Inserer une formule",formulas:"Formule",inline:"En ligne"},hu:{mathml:"Formulák beszúrás",formulas:"Formulák",inline:"Inline"},ko:{mathml:"수식 넣기",formulas:"수식",inline:"글 안에 넣기"},pt_br:{mathml:"Inserir fórmulas",formulas:"Fórmulas",inline:"Em linha"},tr:{mathml:"Formül Ekle",formulas:"Formüller",inline:"Satır içi"},zh_tw:{mathml:"插入方程式",formulas:"方程式",inline:"內嵌"}},plugins:{mathml:{init:function(t){var o={fn:function(){t.saveRange();var o={formulas:{label:t.lang.formulas,required:!0,value:""},inline:{label:t.lang.inline,attributes:{checked:!0},type:"checkbox",required:!1}};o.formulas.value=t.getRangeText(),o.inline.attributes.checked=!0,t.openModalInsert(t.lang.mathml,o,(function n(a){var r=a.inline?"$":"$$";if(t.currentMathNode)e(t.currentMathNode).html(r+" "+a.formulas+" "+r).attr("formulas",a.formulas).attr("inline",a.inline?"true":"false");else{var l=''+r+" "+a.formulas+" "+r+"",i=e(l)[0];i.onclick=function(){t.currentMathNode=this,o.formulas.value=e(this).attr("formulas"),"true"===e(this).attr("inline")?o.inline.attributes.checked=!0:delete o.inline.attributes.checked,t.openModalInsert(t.lang.mathml,o,n)},t.range.deleteContents(),t.range.insertNode(i)}return t.currentMathNode=!1,MathJax.Hub.Queue(["Typeset",MathJax.Hub]),!0}))}};t.addBtnDef("mathml",o)}}}})}(jQuery),function(e){"use strict";var t={source:[],formatDropdownItem:function(e){return e.login},formatResult:function(e){return"@"+e.login+" "}};function o(t,o){var n=[];return e.each(t,(function(e,t){var a="mention-"+e,r={hasIcon:!1,text:o.o.plugins.mention.formatDropdownItem(t),fn:function(){return o.execCmd("insertHTML",o.o.plugins.mention.formatResult(t)),!0}};o.addBtnDef(a,r),n.push(a)})),n}e.extend(!0,e.trumbowyg,{langs:{en:{mention:"Mention"},da:{mention:"Nævn"},et:{mention:"Maini"},fr:{mention:"Mentionner"},hu:{mention:"Említ"},ko:{mention:"언급"},pt_br:{mention:"Menção"},ru:{mention:"Упомянуть"},tr:{mention:"Bahset"},zh_tw:{mention:"標記"}},plugins:{mention:{init:function(n){n.o.plugins.mention=e.extend(!0,{},t,n.o.plugins.mention||{});var a={dropdown:o(n.o.plugins.mention.source,n)};n.addBtnDef("mention",a)}}}})}(jQuery),function(e){"use strict";var t={source:[],formatDropdownItem:function(e){return e.login},formatResult:function(e){return"@"+e.login+" "}};function o(t,o){var n=[];return e.each(t,(function(e,t){var a="mention-"+e,r={hasIcon:!1,text:o.o.plugins.mention.formatDropdownItem(t),fn:function(){return o.execCmd("insertHTML",o.o.plugins.mention.formatResult(t)),!0}};o.addBtnDef(a,r),n.push(a)})),n}e.extend(!0,e.trumbowyg,{langs:{en:{mention:"Mention"},da:{mention:"Nævn"},et:{mention:"Maini"},fr:{mention:"Mentionner"},hu:{mention:"Említ"},ko:{mention:"언급"},pt_br:{mention:"Menção"},ru:{mention:"Упомянуть"},tr:{mention:"Bahset"},zh_tw:{mention:"標記"}},plugins:{mention:{init:function(n){n.o.plugins.mention=e.extend(!0,{},t,n.o.plugins.mention||{});var a={dropdown:o(n.o.plugins.mention.source,n)};n.addBtnDef("mention",a)}}}})}(jQuery),function(e){"use strict";var t={proxy:"https://noembed.com/embed?nowrap=on",urlFiled:"url",data:[],success:void 0,error:void 0};e.extend(!0,e.trumbowyg,{langs:{en:{noembed:"Noembed",noembedError:"Error"},cs:{noembedError:"Chyba"},da:{noembedError:"Fejl"},et:{noembed:"Noembed",noembedError:"Viga"},fr:{noembedError:"Erreur"},hu:{noembed:"Noembed",noembedError:"Hiba"},ja:{noembedError:"エラー"},ko:{noembed:"oEmbed 넣기",noembedError:"에러"},pt_br:{noembed:"Incorporar",noembedError:"Erro"},ru:{noembedError:"Ошибка"},sk:{noembedError:"Chyba"},tr:{noembedError:"Hata"},zh_tw:{noembed:"插入影片",noembedError:"錯誤"}},plugins:{noembed:{init:function(o){o.o.plugins.noembed=e.extend(!0,{},t,o.o.plugins.noembed||{});var n={fn:function(){var t=o.openModalInsert(o.lang.noembed,{url:{label:"URL",required:!0}},(function(n){e.ajax({url:o.o.plugins.noembed.proxy,type:"GET",data:n,cache:!1,dataType:"json",success:o.o.plugins.noembed.success||function(n){n.html?(o.execCmd("insertHTML",n.html),setTimeout((function(){o.closeModal()}),250)):o.addErrorOnModalField(e("input[type=text]",t),n.error)},error:o.o.plugins.noembed.error||function(){o.addErrorOnModalField(e("input[type=text]",t),o.lang.noembedError)}})}))}};o.addBtnDef("noembed",n)}}}})}(jQuery),function(e){"use strict";var t={proxy:"https://noembed.com/embed?nowrap=on",urlFiled:"url",data:[],success:void 0,error:void 0};e.extend(!0,e.trumbowyg,{langs:{en:{noembed:"Noembed",noembedError:"Error"},cs:{noembedError:"Chyba"},da:{noembedError:"Fejl"},et:{noembed:"Noembed",noembedError:"Viga"},fr:{noembedError:"Erreur"},hu:{noembed:"Noembed",noembedError:"Hiba"},ja:{noembedError:"エラー"},ko:{noembed:"oEmbed 넣기",noembedError:"에러"},pt_br:{noembed:"Incorporar",noembedError:"Erro"},ru:{noembedError:"Ошибка"},sk:{noembedError:"Chyba"},tr:{noembedError:"Hata"},zh_tw:{noembed:"插入影片",noembedError:"錯誤"}},plugins:{noembed:{init:function(o){o.o.plugins.noembed=e.extend(!0,{},t,o.o.plugins.noembed||{});var n={fn:function(){var t=o.openModalInsert(o.lang.noembed,{url:{label:"URL",required:!0}},(function(n){e.ajax({url:o.o.plugins.noembed.proxy,type:"GET",data:n,cache:!1,dataType:"json",success:o.o.plugins.noembed.success||function(n){n.html?(o.execCmd("insertHTML",n.html),setTimeout((function(){o.closeModal()}),250)):o.addErrorOnModalField(e("input[type=text]",t),n.error)},error:o.o.plugins.noembed.error||function(){o.addErrorOnModalField(e("input[type=text]",t),o.lang.noembedError)}})}))}};o.addBtnDef("noembed",n)}}}})}(jQuery),function(e){"use strict";e.extend(!0,e.trumbowyg,{plugins:{pasteImage:{init:function(e){e.pasteHandlers.push((function(t){try{for(var o,n=(t.originalEvent||t).clipboardData.items,a=!1,r=n.length-1;r>=0;r-=1)n[r].type.match(/^image\//)&&((o=new FileReader).onloadend=function(t){e.execCmd("insertImage",t.target.result,!1,!0)},o.readAsDataURL(n[r].getAsFile()),a=!0);a&&(t.stopPropagation(),t.preventDefault())}catch(e){}}))}}}})}(jQuery),function(e){"use strict";e.extend(!0,e.trumbowyg,{plugins:{pasteImage:{init:function(e){e.pasteHandlers.push((function(t){try{for(var o,n=(t.originalEvent||t).clipboardData.items,a=!1,r=n.length-1;r>=0;r-=1)n[r].type.match(/^image\//)&&((o=new FileReader).onloadend=function(t){e.execCmd("insertImage",t.target.result,!1,!0)},o.readAsDataURL(n[r].getAsFile()),a=!0);a&&(t.stopPropagation(),t.preventDefault())}catch(e){}}))}}}})}(jQuery),function(e){"use strict";e.extend(!0,e.trumbowyg,{langs:{en:{preformatted:"Code sample
    "},da:{preformatted:"Præformateret 
    "},et:{preformatted:"Eelvormindatud tekst 
    "},fr:{preformatted:"Exemple de code 
    "},hu:{preformatted:"Kód minta 
    "},it:{preformatted:"Codice 
    "},ja:{preformatted:"コードサンプル 
    "},ko:{preformatted:"코드 예제 
    "},pt_br:{preformatted:"Exemple de código 
    "},ru:{preformatted:"Пример кода 
    "},tr:{preformatted:"Kod örneği 
    "},zh_cn:{preformatted:"代码示例 
    "},zh_tw:{preformatted:"代碼範例 
    "}},plugins:{preformatted:{init:function(t){var o={fn:function(){t.saveRange();var o,n,a=t.getRangeText();if(""!==a.replace(/\s/g,""))try{var r=function(){var e,t=null;window.getSelection?(e=window.getSelection()).rangeCount&&1!==(t=e.getRangeAt(0).commonAncestorContainer).nodeType&&(t=t.parentNode):(e=document.selection)&&"Control"!==e.type&&(t=e.createRange().parentElement());return t}().tagName.toLowerCase();if("code"===r||"pre"===r)return function(){var t=null;if(document.selection)t=document.selection.createRange().parentElement();else{var o=window.getSelection();o.rangeCount>0&&(t=o.getRangeAt(0).startContainer.parentNode)}var n=e(t).contents().closest("pre").length,a=e(t).contents().closest("code").length;n&&a?e(t).contents().unwrap("code").unwrap("pre"):n?e(t).contents().unwrap("pre"):a&&e(t).contents().unwrap("code")}();t.execCmd("insertHTML","
    "+(o=a,(n=document.createElement("DIV")).innerHTML=o,(n.textContent||n.innerText||"")+"
    "))}catch(e){}},tag:"pre"};t.addBtnDef("preformatted",o)}}}})}(jQuery),function(e){"use strict";e.extend(!0,e.trumbowyg,{langs:{en:{preformatted:"Code sample
    "},da:{preformatted:"Præformateret 
    "},et:{preformatted:"Eelvormindatud tekst 
    "},fr:{preformatted:"Exemple de code 
    "},hu:{preformatted:"Kód minta 
    "},it:{preformatted:"Codice 
    "},ja:{preformatted:"コードサンプル 
    "},ko:{preformatted:"코드 예제 
    "},pt_br:{preformatted:"Exemple de código 
    "},ru:{preformatted:"Пример кода 
    "},tr:{preformatted:"Kod örneği 
    "},zh_cn:{preformatted:"代码示例 
    "},zh_tw:{preformatted:"代碼範例 
    "}},plugins:{preformatted:{init:function(t){var o={fn:function(){t.saveRange();var o,n,a=t.getRangeText();if(""!==a.replace(/\s/g,""))try{var r=function(){var e,t=null;return window.getSelection?(e=window.getSelection()).rangeCount&&1!==(t=e.getRangeAt(0).commonAncestorContainer).nodeType&&(t=t.parentNode):(e=document.selection)&&"Control"!==e.type&&(t=e.createRange().parentElement()),t}().tagName.toLowerCase();if("code"===r||"pre"===r)return function(){var t=null;if(document.selection)t=document.selection.createRange().parentElement();else{var o=window.getSelection();o.rangeCount>0&&(t=o.getRangeAt(0).startContainer.parentNode)}var n=e(t).contents().closest("pre").length,a=e(t).contents().closest("code").length;n&&a?e(t).contents().unwrap("code").unwrap("pre"):n?e(t).contents().unwrap("pre"):a&&e(t).contents().unwrap("code")}();t.execCmd("insertHTML","
    "+(o=a,(n=document.createElement("DIV")).innerHTML=o,(n.textContent||n.innerText||"")+"
    "))}catch(e){}},tag:"pre"};t.addBtnDef("preformatted",o)}}}})}(jQuery),function(e){"use strict";var t={minSize:32,step:4};function o(e){e.stopPropagation(),e.preventDefault()}var n=function(t){this.resizeCanvas=document.createElement("canvas"),this.resizeCanvas.setAttribute("tabindex","0"),this.resizeCanvas.id="trumbowyg-resizimg-"+ +new Date,this.ctx=null,this.resizeImg=null,this.pressEscape=function(e){e.reset()},this.pressBackspaceOrDelete=function(o){e(o.resizeCanvas).remove(),o.resizeImg=null,null!==t&&(t.syncCode(),t.$c.trigger("tbwchange"))};var n,a,r=!1,l=!1,i=function(e){var t=e.getBoundingClientRect();n=t.left,a=t.top},s=function(e,t,o,n,a){return t.translate(.5,.5),t.lineWidth=1,t.drawImage(o,5,5,n-10,a-10),t.beginPath(),t.rect(5,5,n-10,a-10),t.stroke(),t.beginPath(),t.fillStyle="rgb(255, 255, 255)",t.rect(n-10,a-10,9,9),t.fill(),t.stroke(),i(e),t};this.init=function(){var t=this;e(window).on("scroll resize",(function(){t.reCalcOffset()}))},this.reCalcOffset=function(){i(this.resizeCanvas)},this.canvasId=function(){return this.resizeCanvas.id},this.isActive=function(){return null!==this.resizeImg},this.isFocusedNow=function(){return r},this.blurNow=function(){r=!1},this.reset=function(){null!==this.resizeImg&&(this.resizeImg.setAttribute("style","width: 100%; max-width: "+(this.resizeCanvas.clientWidth-10)+"px; height: auto; max-height: "+(this.resizeCanvas.clientHeight-10)+"px;"),e(this.resizeCanvas).replaceWith(e(this.resizeImg)),this.resizeCanvas.removeAttribute("style"),this.resizeImg=null)},this.setup=function(i,x){if(this.resizeImg=i,!this.resizeCanvas.getContext)return!1;r=!0,this.resizeCanvas.width=e(this.resizeImg).width()+10,this.resizeCanvas.height=e(this.resizeImg).height()+10,this.resizeCanvas.style.margin="-5px",this.ctx=this.resizeCanvas.getContext("2d"),e(this.resizeImg).replaceWith(e(this.resizeCanvas)),s(this.resizeCanvas,this.ctx,this.resizeImg,this.resizeCanvas.width,this.resizeCanvas.height),e(this.resizeCanvas).resizableSafe(x).on("mousedown",o);var F=this;return e(this.resizeCanvas).on("mousemove",(function(e){var t=Math.round(e.clientX-n),o=Math.round(e.clientY-a),r=l;F.ctx.rect(F.resizeCanvas.width-10,F.resizeCanvas.height-10,9,9),r!==(l=F.ctx.isPointInPath(t,o))&&(this.style.cursor=l?"se-resize":"default")})).on("keydown",(function(e){if(F.isActive()){var t=e.keyCode;27===t?F.pressEscape(F):8!==t&&46!==t||F.pressBackspaceOrDelete(F)}})).on("focus",o).on("blur",(function(){F.reset(),null!==t&&(t.syncCode(),t.$c.trigger("tbwchange"))})),this.resizeCanvas.focus(),!0},this.refresh=function(){this.resizeCanvas.getContext&&(this.resizeCanvas.width=this.resizeCanvas.clientWidth,this.resizeCanvas.height=this.resizeCanvas.clientHeight,s(this.resizeCanvas,this.ctx,this.resizeImg,this.resizeCanvas.width,this.resizeCanvas.height))}};e.extend(!0,e.trumbowyg,{plugins:{resizimg:{destroyResizable:function(){},init:function(a){var r=this.destroyResizable,l=new n(a);function i(){a.$ed.find("img").off("click").on("click",(function(e){l.isActive()&&l.reset(),l.setup(this,a.o.plugins.resizimg.resizable),o(e)}))}this.destroyResizable=function(){a.$ed.find("canvas.resizable").resizableSafe("destroy").off("mousedown",o).removeClass("resizable"),l.reset(),a.syncCode()},a.o.plugins.resizimg=e.extend(!0,{},t,a.o.plugins.resizimg||{},{resizable:{resizeWidth:!1,onDragStart:function(e,t){var o=a.o.plugins.resizimg,n=e.pageX-t.offset().left,r=e.pageY-t.offset().top;if(n",{href:n,text:n}).prop("outerHTML")),i.length>0&&(s=0,o.execCmd("insertHTML",i))}})}}catch(e){}}))}}}})}(jQuery),function(e){"use strict";var t={enabled:!0,endpoints:["https://noembed.com/embed?nowrap=on","https://api.maxmade.nl/url2iframe/embed"]};e.extend(!0,e.trumbowyg,{plugins:{pasteEmbed:{init:function(o){o.o.plugins.pasteEmbed=e.extend(!0,{},t,o.o.plugins.pasteEmbed||{}),o.o.plugins.pasteEmbed.enabled&&o.pasteHandlers.push((function(t){try{var n=(t.originalEvent||t).clipboardData.getData("Text"),a=o.o.plugins.pasteEmbed.endpoints,r=null;if(n.startsWith("http")){t.stopPropagation(),t.preventDefault();var l={url:n.trim()},i="",s=0;r&&r.transport&&r.transport.abort(),r=e.ajax({crossOrigin:!0,url:a[s],type:"GET",data:l,cache:!1,dataType:"jsonp",success:function(e){e.html?(s=0,i=e.html):s+=1},error:function(){s+=1},complete:function(){0===i.length&&s",{href:n,text:n}).prop("outerHTML")),i.length>0&&(s=0,o.execCmd("insertHTML",i))}})}}catch(e){}}))}}}})}(jQuery),function(e){"use strict";var t={rows:8,columns:8,styler:"table"};e.extend(!0,e.trumbowyg,{langs:{en:{table:"Insert table",tableAddRow:"Add row",tableAddRowAbove:"Add row above",tableAddColumnLeft:"Add column to the left",tableAddColumn:"Add column to the right",tableDeleteRow:"Delete row",tableDeleteColumn:"Delete column",tableDestroy:"Delete table",error:"Error"},cs:{table:"Vytvořit příkaz Table",tableAddRow:"Přidat řádek",tableAddRowAbove:"Přidat řádek",tableAddColumnLeft:"Přidat sloupec",tableAddColumn:"Přidat sloupec",error:"Chyba"},da:{table:"Indsæt tabel",tableAddRow:"Tilføj række",tableAddRowAbove:"Tilføj række",tableAddColumnLeft:"Tilføj kolonne",tableAddColumn:"Tilføj kolonne",tableDeleteRow:"Slet række",tableDeleteColumn:"Slet kolonne",tableDestroy:"Slet tabel",error:"Fejl"},de:{table:"Tabelle einfügen",tableAddRow:"Zeile hinzufügen",tableAddRowAbove:"Zeile hinzufügen",tableAddColumnLeft:"Spalte hinzufügen",tableAddColumn:"Spalte hinzufügen",tableDeleteRow:"Zeile löschen",tableDeleteColumn:"Spalte löschen",tableDestroy:"Tabelle löschen",error:"Error"},et:{table:"Sisesta tabel",tableAddRow:"Lisa rida",tableAddRowAbove:"Lisa rida üles",tableAddColumnLeft:"Lisa tulp vasakule",tableAddColumn:"Lisa tulp paremale",tableDeleteRow:"Kustuta rida",tableDeleteColumn:"Kustuta tulp",tableDestroy:"Kustuta tabel",error:"Viga"},fr:{table:"Insérer un tableau",tableAddRow:"Ajouter des lignes",tableAddRowAbove:"Ajouter des lignes",tableAddColumnLeft:"Ajouter des colonnes",tableAddColumn:"Ajouter des colonnes",tableDeleteRow:"Effacer la ligne",tableDeleteColumn:"Effacer la colonne",tableDestroy:"Effacer le tableau",error:"Erreur"},hu:{table:"Táblázat beszúrás",tableAddRow:"Sor hozzáadás",tableAddRowAbove:"Sor beszúrás fönt",tableAddColumnLeft:"Sor beszúrás balra",tableAddColumn:"Sor beszúrás jobbra",tableDeleteRow:"Sor törlés",tableDeleteColumn:"Oszlop törlés",tableDestroy:"Táblázat törlés",error:"Hiba"},id:{table:"Sisipkan tabel",tableAddRow:"Sisipkan baris",tableAddRowAbove:"Sisipkan baris",tableAddColumnLeft:"Sisipkan kolom",tableAddColumn:"Sisipkan kolom",tableDeleteRow:"Hapus baris",tableDeleteColumn:"Hapus kolom",tableDestroy:"Hapus tabel",error:"Galat"},ja:{table:"表の挿入",tableAddRow:"行の追加",tableAddRowAbove:"行の追加",tableAddColumnLeft:"列の追加",tableAddColumn:"列の追加",error:"エラー"},ko:{table:"표 넣기",tableAddRow:"줄 추가",tableAddRowAbove:"줄 추가",tableAddColumnLeft:"칸 추가",tableAddColumn:"칸 추가",tableDeleteRow:"줄 삭제",tableDeleteColumn:"칸 삭제",tableDestroy:"표 지우기",error:"에러"},pt_br:{table:"Inserir tabela",tableAddRow:"Adicionar linha",tableAddRowAbove:"Adicionar linha",tableAddColumnLeft:"Adicionar coluna",tableAddColumn:"Adicionar coluna",tableDeleteRow:"Deletar linha",tableDeleteColumn:"Deletar coluna",tableDestroy:"Deletar tabela",error:"Erro"},ru:{table:"Вставить таблицу",tableAddRow:"Добавить строку",tableAddRowAbove:"Добавить строку",tableAddColumnLeft:"Добавить столбец",tableAddColumn:"Добавить столбец",tableDeleteRow:"Удалить строку",tableDeleteColumn:"Удалить столбец",tableDestroy:"Удалить таблицу",error:"Ошибка"},sk:{table:"Vytvoriť tabuľky",tableAddRow:"Pridať riadok",tableAddRowAbove:"Pridať riadok",tableAddColumnLeft:"Pridať stĺpec",tableAddColumn:"Pridať stĺpec",error:"Chyba"},tr:{table:"Tablo ekle",tableAddRow:"Satır ekle",tableAddRowAbove:"Yukarıya satır ekle",tableAddColumnLeft:"Sola sütun ekle",tableAddColumn:"Sağa sütun ekle",tableDeleteRow:"Satırı sil",tableDeleteColumn:"Sütunu sil",tableDestroy:"Tabloyu sil",error:"Hata"},zh_tw:{table:"插入表格",tableAddRow:"加入行",tableAddRowAbove:"加入行",tableAddColumnLeft:"加入列",tableAddColumn:"加入列",tableDeleteRow:"刪除行",tableDeleteColumn:"刪除列",tableDestroy:"刪除表格",error:"錯誤"},es:{table:"Insertar tabla",tableAddRow:"Agregar fila",tableAddRowAbove:"Agregar fila arriba",tableAddColumnLeft:"Agregar columna a la izquierda",tableAddColumn:"Agregar columna a la derecha",tableDeleteRow:"Borrar fila",tableDeleteColumn:"Borrar columna",tableDestroy:"Borrar tabla",error:"Error"}},plugins:{table:{init:function(o){o.o.plugins.table=e.extend(!0,{},t,o.o.plugins.table||{});var n={fn:function(){o.saveRange();var t="table",n=o.o.prefix+"dropdown",l={class:n+"-"+"table "+n+" "+o.o.prefix+"fixed-top"};l["data-"+n]=t;var i=e("
    ",l);if(0===o.$box.find("."+n+"-"+t).length?o.$box.append(i.hide()):i=o.$box.find("."+n+"-"+t),i.html(""),o.$box.find("."+o.o.prefix+"table-button").hasClass(o.o.prefix+"active-button"))i.append(o.buildSubBtn("tableAddRowAbove")),i.append(o.buildSubBtn("tableAddRow")),i.append(o.buildSubBtn("tableAddColumnLeft")),i.append(o.buildSubBtn("tableAddColumn")),i.append(o.buildSubBtn("tableDeleteRow")),i.append(o.buildSubBtn("tableDeleteColumn")),i.append(o.buildSubBtn("tableDestroy"));else{var s=e("
    ").appendTo(l);o.range.deleteContents(),o.range.insertNode(t[0]),o.$c.trigger("tbwchange")},l={title:o.lang.tableAddRow,text:o.lang.tableAddRow,ico:"row-below",fn:function(){o.saveRange();var t=o.doc.getSelection().focusNode,n=e(t).closest("tr"),a=e(t).closest("table");if(a.length>0){for(var r=e("
    ");e("").appendTo(s);for(var x=0;x").appendTo(s),d=0;d").appendTo(F);s.find("td").on("mouseover",a),s.find("td").on("mousedown",r),i.append(s),i.append(e('
    1x1
    '))}o.dropdown(t)}},a=function(t){var o=e(t.target).closest("table"),n=this.cellIndex,a=this.parentNode.rowIndex;o.find("td").removeClass("active");for(var r=0;r<=a;r+=1)for(var l=0;l<=n;l+=1)o.find("tr:nth-of-type("+(r+1)+")").find("td:nth-of-type("+(l+1)+")").addClass("active");o.next(".trumbowyg-table-size").html(n+1+"x"+(a+1))},r=function(){o.saveRange();var t=e("
    ");e("").appendTo(t),o.o.plugins.table.styler&&t.attr("class",o.o.plugins.table.styler);for(var n=this.cellIndex,a=this.parentNode.rowIndex,r=0;r<=a;r+=1)for(var l=e("").appendTo(t),i=0;i<=n;i+=1)e(""),l=0;l").appendTo(r);n.after(r)}o.syncCode()}},i={title:o.lang.tableAddRowAbove,text:o.lang.tableAddRowAbove,ico:"row-above",fn:function(){o.saveRange();var t=o.doc.getSelection().focusNode,n=e(t).closest("tr"),a=e(t).closest("table");if(a.length>0){for(var r=e(""),l=0;l").appendTo(r);n.before(r)}o.syncCode()}},s={title:o.lang.tableAddColumn,text:o.lang.tableAddColumn,ico:"col-right",fn:function(){o.saveRange();var t=o.doc.getSelection().focusNode,n=e(t).closest("td"),a=e(t).closest("table"),r=n.index();a.length>0&&e(a).find("tr").each((function(){e(e(this).children()[r]).after("")})),o.syncCode()}},x={title:o.lang.tableAddColumnLeft,text:o.lang.tableAddColumnLeft,ico:"col-left",fn:function(){o.saveRange();var t=o.doc.getSelection().focusNode,n=e(t).closest("td"),a=e(t).closest("table"),r=n.index();a.length>0&&e(a).find("tr").each((function(){e(e(this).children()[r]).before("")})),o.syncCode()}},F={title:o.lang.tableDestroy,text:o.lang.tableDestroy,ico:"table-delete",fn:function(){o.saveRange();var t=o.doc.getSelection().focusNode;e(t).closest("table").remove(),o.syncCode()}},d={title:o.lang.tableDeleteRow,text:o.lang.tableDeleteRow,ico:"row-delete",fn:function(){o.saveRange();var t=o.doc.getSelection().focusNode;e(t).closest("tr").remove(),o.syncCode()}},u={title:o.lang.tableDeleteColumn,text:o.lang.tableDeleteColumn,ico:"col-delete",fn:function(){o.saveRange();var t=o.doc.getSelection().focusNode,n=e(t).closest("table"),a=e(t).closest("td").index();e(n).find("tr").each((function(){e(this).find("td:eq("+a+")").remove()})),o.syncCode()}};o.addBtnDef("table",n),o.addBtnDef("tableAddRowAbove",i),o.addBtnDef("tableAddRow",l),o.addBtnDef("tableAddColumnLeft",x),o.addBtnDef("tableAddColumn",s),o.addBtnDef("tableDeleteRow",d),o.addBtnDef("tableDeleteColumn",u),o.addBtnDef("tableDestroy",F)}}}})}(jQuery),function(e){"use strict";var t={rows:8,columns:8,styler:"table"};e.extend(!0,e.trumbowyg,{langs:{en:{table:"Insert table",tableAddRow:"Add row",tableAddRowAbove:"Add row above",tableAddColumnLeft:"Add column to the left",tableAddColumn:"Add column to the right",tableDeleteRow:"Delete row",tableDeleteColumn:"Delete column",tableDestroy:"Delete table",error:"Error"},cs:{table:"Vytvořit příkaz Table",tableAddRow:"Přidat řádek",tableAddRowAbove:"Přidat řádek",tableAddColumnLeft:"Přidat sloupec",tableAddColumn:"Přidat sloupec",error:"Chyba"},da:{table:"Indsæt tabel",tableAddRow:"Tilføj række",tableAddRowAbove:"Tilføj række",tableAddColumnLeft:"Tilføj kolonne",tableAddColumn:"Tilføj kolonne",tableDeleteRow:"Slet række",tableDeleteColumn:"Slet kolonne",tableDestroy:"Slet tabel",error:"Fejl"},de:{table:"Tabelle einfügen",tableAddRow:"Zeile hinzufügen",tableAddRowAbove:"Zeile hinzufügen",tableAddColumnLeft:"Spalte hinzufügen",tableAddColumn:"Spalte hinzufügen",tableDeleteRow:"Zeile löschen",tableDeleteColumn:"Spalte löschen",tableDestroy:"Tabelle löschen",error:"Error"},et:{table:"Sisesta tabel",tableAddRow:"Lisa rida",tableAddRowAbove:"Lisa rida üles",tableAddColumnLeft:"Lisa tulp vasakule",tableAddColumn:"Lisa tulp paremale",tableDeleteRow:"Kustuta rida",tableDeleteColumn:"Kustuta tulp",tableDestroy:"Kustuta tabel",error:"Viga"},fr:{table:"Insérer un tableau",tableAddRow:"Ajouter des lignes",tableAddRowAbove:"Ajouter des lignes",tableAddColumnLeft:"Ajouter des colonnes",tableAddColumn:"Ajouter des colonnes",tableDeleteRow:"Effacer la ligne",tableDeleteColumn:"Effacer la colonne",tableDestroy:"Effacer le tableau",error:"Erreur"},hu:{table:"Táblázat beszúrás",tableAddRow:"Sor hozzáadás",tableAddRowAbove:"Sor beszúrás fönt",tableAddColumnLeft:"Sor beszúrás balra",tableAddColumn:"Sor beszúrás jobbra",tableDeleteRow:"Sor törlés",tableDeleteColumn:"Oszlop törlés",tableDestroy:"Táblázat törlés",error:"Hiba"},id:{table:"Sisipkan tabel",tableAddRow:"Sisipkan baris",tableAddRowAbove:"Sisipkan baris",tableAddColumnLeft:"Sisipkan kolom",tableAddColumn:"Sisipkan kolom",tableDeleteRow:"Hapus baris",tableDeleteColumn:"Hapus kolom",tableDestroy:"Hapus tabel",error:"Galat"},ja:{table:"表の挿入",tableAddRow:"行の追加",tableAddRowAbove:"行の追加",tableAddColumnLeft:"列の追加",tableAddColumn:"列の追加",error:"エラー"},ko:{table:"표 넣기",tableAddRow:"줄 추가",tableAddRowAbove:"줄 추가",tableAddColumnLeft:"칸 추가",tableAddColumn:"칸 추가",tableDeleteRow:"줄 삭제",tableDeleteColumn:"칸 삭제",tableDestroy:"표 지우기",error:"에러"},pt_br:{table:"Inserir tabela",tableAddRow:"Adicionar linha",tableAddRowAbove:"Adicionar linha",tableAddColumnLeft:"Adicionar coluna",tableAddColumn:"Adicionar coluna",tableDeleteRow:"Deletar linha",tableDeleteColumn:"Deletar coluna",tableDestroy:"Deletar tabela",error:"Erro"},ru:{table:"Вставить таблицу",tableAddRow:"Добавить строку",tableAddRowAbove:"Добавить строку",tableAddColumnLeft:"Добавить столбец",tableAddColumn:"Добавить столбец",tableDeleteRow:"Удалить строку",tableDeleteColumn:"Удалить столбец",tableDestroy:"Удалить таблицу",error:"Ошибка"},sk:{table:"Vytvoriť tabuľky",tableAddRow:"Pridať riadok",tableAddRowAbove:"Pridať riadok",tableAddColumnLeft:"Pridať stĺpec",tableAddColumn:"Pridať stĺpec",error:"Chyba"},tr:{table:"Tablo ekle",tableAddRow:"Satır ekle",tableAddRowAbove:"Yukarıya satır ekle",tableAddColumnLeft:"Sola sütun ekle",tableAddColumn:"Sağa sütun ekle",tableDeleteRow:"Satırı sil",tableDeleteColumn:"Sütunu sil",tableDestroy:"Tabloyu sil",error:"Hata"},zh_tw:{table:"插入表格",tableAddRow:"加入行",tableAddRowAbove:"加入行",tableAddColumnLeft:"加入列",tableAddColumn:"加入列",tableDeleteRow:"刪除行",tableDeleteColumn:"刪除列",tableDestroy:"刪除表格",error:"錯誤"},es:{table:"Insertar tabla",tableAddRow:"Agregar fila",tableAddRowAbove:"Agregar fila arriba",tableAddColumnLeft:"Agregar columna a la izquierda",tableAddColumn:"Agregar columna a la derecha",tableDeleteRow:"Borrar fila",tableDeleteColumn:"Borrar columna",tableDestroy:"Borrar tabla",error:"Error"}},plugins:{table:{init:function(o){o.o.plugins.table=e.extend(!0,{},t,o.o.plugins.table||{});var n={fn:function(){o.saveRange();var t="table",n=o.o.prefix+"dropdown",l={class:n+"-table "+n+" "+o.o.prefix+"fixed-top"};l["data-"+n]=t;var i=e("
    ",l);if(0===o.$box.find("."+n+"-"+t).length?o.$box.append(i.hide()):i=o.$box.find("."+n+"-"+t),i.html(""),o.$box.find("."+o.o.prefix+"table-button").hasClass(o.o.prefix+"active-button"))i.append(o.buildSubBtn("tableAddRowAbove")),i.append(o.buildSubBtn("tableAddRow")),i.append(o.buildSubBtn("tableAddColumnLeft")),i.append(o.buildSubBtn("tableAddColumn")),i.append(o.buildSubBtn("tableDeleteRow")),i.append(o.buildSubBtn("tableDeleteColumn")),i.append(o.buildSubBtn("tableDestroy"));else{var s=e("
    ").appendTo(l);o.range.deleteContents(),o.range.insertNode(t[0]),o.$c.trigger("tbwchange")},l={title:o.lang.tableAddRow,text:o.lang.tableAddRow,ico:"row-below",fn:function(){o.saveRange();var t=o.doc.getSelection().focusNode,n=e(t).closest("tr"),a=e(t).closest("table");if(a.length>0){for(var r=e("
    ");e("").appendTo(s);for(var x=0;x").appendTo(s),d=0;d").appendTo(F);s.find("td").on("mouseover",a),s.find("td").on("mousedown",r),i.append(s),i.append(e('
    1x1
    '))}o.dropdown(t)}},a=function(t){var o=e(t.target).closest("table"),n=this.cellIndex,a=this.parentNode.rowIndex;o.find("td").removeClass("active");for(var r=0;r<=a;r+=1)for(var l=0;l<=n;l+=1)o.find("tr:nth-of-type("+(r+1)+")").find("td:nth-of-type("+(l+1)+")").addClass("active");o.next(".trumbowyg-table-size").html(n+1+"x"+(a+1))},r=function(){o.saveRange();var t=e("
    ");e("").appendTo(t),o.o.plugins.table.styler&&t.attr("class",o.o.plugins.table.styler);for(var n=this.cellIndex,a=this.parentNode.rowIndex,r=0;r<=a;r+=1)for(var l=e("").appendTo(t),i=0;i<=n;i+=1)e(""),l=0;l").appendTo(r);n.after(r)}o.syncCode()}},i={title:o.lang.tableAddRowAbove,text:o.lang.tableAddRowAbove,ico:"row-above",fn:function(){o.saveRange();var t=o.doc.getSelection().focusNode,n=e(t).closest("tr"),a=e(t).closest("table");if(a.length>0){for(var r=e(""),l=0;l").appendTo(r);n.before(r)}o.syncCode()}},s={title:o.lang.tableAddColumn,text:o.lang.tableAddColumn,ico:"col-right",fn:function(){o.saveRange();var t=o.doc.getSelection().focusNode,n=e(t).closest("td"),a=e(t).closest("table"),r=n.index();a.length>0&&e(a).find("tr").each((function(){e(e(this).children()[r]).after("")})),o.syncCode()}},x={title:o.lang.tableAddColumnLeft,text:o.lang.tableAddColumnLeft,ico:"col-left",fn:function(){o.saveRange();var t=o.doc.getSelection().focusNode,n=e(t).closest("td"),a=e(t).closest("table"),r=n.index();a.length>0&&e(a).find("tr").each((function(){e(e(this).children()[r]).before("")})),o.syncCode()}},F={title:o.lang.tableDestroy,text:o.lang.tableDestroy,ico:"table-delete",fn:function(){o.saveRange();var t=o.doc.getSelection().focusNode;e(t).closest("table").remove(),o.syncCode()}},d={title:o.lang.tableDeleteRow,text:o.lang.tableDeleteRow,ico:"row-delete",fn:function(){o.saveRange();var t=o.doc.getSelection().focusNode;e(t).closest("tr").remove(),o.syncCode()}},u={title:o.lang.tableDeleteColumn,text:o.lang.tableDeleteColumn,ico:"col-delete",fn:function(){o.saveRange();var t=o.doc.getSelection().focusNode,n=e(t).closest("table"),a=e(t).closest("td").index();e(n).find("tr").each((function(){e(this).find("td:eq("+a+")").remove()})),o.syncCode()}};o.addBtnDef("table",n),o.addBtnDef("tableAddRowAbove",i),o.addBtnDef("tableAddRow",l),o.addBtnDef("tableAddColumnLeft",x),o.addBtnDef("tableAddColumn",s),o.addBtnDef("tableDeleteRow",d),o.addBtnDef("tableDeleteColumn",u),o.addBtnDef("tableDestroy",F)}}}})}(jQuery),function(e){"use strict";function t(t){var o=t.o.plugins.templates,n=[];return e.each(o,(function(e,o){t.addBtnDef("template_"+e,{fn:function(){t.html(o.html)},hasIcon:!1,title:o.name}),n.push("template_"+e)})),n}e.extend(!0,e.trumbowyg,{langs:{en:{template:"Template"},da:{template:"Skabelon"},de:{template:"Vorlage"},et:{template:"Mall"},fr:{template:"Patron"},hu:{template:"Sablon"},ja:{template:"テンプレート"},ko:{template:"서식"},nl:{template:"Sjabloon"},pt_br:{template:"Modelo"},ru:{template:"Шаблон"},tr:{template:"Şablon"},zh_tw:{template:"模板"}}}),e.extend(!0,e.trumbowyg,{plugins:{template:{shouldInit:function(e){return e.o.plugins.hasOwnProperty("templates")},init:function(e){e.addBtnDef("template",{dropdown:t(e),hasIcon:!1,text:e.lang.template})}}}})}(jQuery),function(e){"use strict";function t(t){var o=t.o.plugins.templates,n=[];return e.each(o,(function(e,o){t.addBtnDef("template_"+e,{fn:function(){t.html(o.html)},hasIcon:!1,title:o.name}),n.push("template_"+e)})),n}e.extend(!0,e.trumbowyg,{langs:{en:{template:"Template"},da:{template:"Skabelon"},de:{template:"Vorlage"},et:{template:"Mall"},fr:{template:"Patron"},hu:{template:"Sablon"},ja:{template:"テンプレート"},ko:{template:"서식"},nl:{template:"Sjabloon"},pt_br:{template:"Modelo"},ru:{template:"Шаблон"},tr:{template:"Şablon"},zh_tw:{template:"模板"}}}),e.extend(!0,e.trumbowyg,{plugins:{template:{shouldInit:function(e){return e.o.plugins.hasOwnProperty("templates")},init:function(e){e.addBtnDef("template",{dropdown:t(e),hasIcon:!1,text:e.lang.template})}}}})}(jQuery),function(e){"use strict";var t={symbolList:["0024","20AC","00A3","00A2","00A5","00A4","2030",null,"00A9","00AE","2122",null,"00A7","00B6","00C6","00E6","0152","0153",null,"2022","25CF","2023","25B6","2B29","25C6",null,"00B1","00D7","00F7","21D2","21D4","220F","2211","2243","2264","2265"]};function o(t){var o=[];return e.each(t.o.plugins.specialchars.symbolList,(function(e,n){var a="symbol-"+(n=null===n?" ":"&#x"+n).replace(/:/g,""),r={text:n,hasIcon:!1,fn:function(){var e=String.fromCodePoint(parseInt(n.replace("&#","0")));return t.execCmd("insertText",e),!0}};t.addBtnDef(a,r),o.push(a)})),o}e.extend(!0,e.trumbowyg,{langs:{en:{specialChars:"Special characters"},et:{specialChars:"Erimärgid"},fr:{specialChars:"Caractères spéciaux"},hu:{specialChars:"Speciális karakterek"},ko:{specialChars:"특수문자"}},plugins:{specialchars:{init:function(e){e.o.plugins.specialchars=e.o.plugins.specialchars||t;var n={dropdown:o(e)};e.addBtnDef("specialChars",n)}}}})}(jQuery),function(e){"use strict";var t={symbolList:["0024","20AC","00A3","00A2","00A5","00A4","2030",null,"00A9","00AE","2122",null,"00A7","00B6","00C6","00E6","0152","0153",null,"2022","25CF","2023","25B6","2B29","25C6",null,"00B1","00D7","00F7","21D2","21D4","220F","2211","2243","2264","2265"]};function o(t){var o=[];return e.each(t.o.plugins.specialchars.symbolList,(function(e,n){var a="symbol-"+(n=null===n?" ":"&#x"+n).replace(/:/g,""),r={text:n,hasIcon:!1,fn:function(){var e=String.fromCodePoint(parseInt(n.replace("&#","0")));return t.execCmd("insertText",e),!0}};t.addBtnDef(a,r),o.push(a)})),o}e.extend(!0,e.trumbowyg,{langs:{en:{specialChars:"Special characters"},et:{specialChars:"Erimärgid"},fr:{specialChars:"Caractères spéciaux"},hu:{specialChars:"Speciális karakterek"},ko:{specialChars:"특수문자"}},plugins:{specialchars:{init:function(e){e.o.plugins.specialchars=e.o.plugins.specialchars||t;var n={dropdown:o(e)};e.addBtnDef("specialChars",n)}}}})}(jQuery),function(e){"use strict";var t={serverPath:"",fileFieldName:"fileToUpload",data:[],headers:{},xhrFields:{},urlPropertyName:"file",statusPropertyName:"success",success:void 0,error:void 0,imageWidthModalEdit:!1};function o(e,t){var n=t.shift(),a=t;if(null!==e){if(0===a.length)return e[n];if("object"===_typeof(e))return o(e[n],a)}return e}!function(){if(!e.trumbowyg.addedXhrProgressEvent){var t=e.ajaxSettings.xhr;e.ajaxSetup({xhr:function(){var e=this,o=t();return o&&"object"===_typeof(o.upload)&&void 0!==e.progressUpload&&o.upload.addEventListener("progress",(function(t){e.progressUpload(t)}),!1),o}}),e.trumbowyg.addedXhrProgressEvent=!0}}(),e.extend(!0,e.trumbowyg,{langs:{en:{upload:"Upload",file:"File",uploadError:"Error"},cs:{upload:"Nahrát obrázek",file:"Soubor",uploadError:"Chyba"},da:{upload:"Upload",file:"Fil",uploadError:"Fejl"},de:{upload:"Hochladen",file:"Datei",uploadError:"Fehler"},et:{upload:"Lae üles",file:"Fail",uploadError:"Viga"},fr:{upload:"Envoi",file:"Fichier",uploadError:"Erreur"},hu:{upload:"Feltöltés",file:"Fájl",uploadError:"Hiba"},ja:{upload:"アップロード",file:"ファイル",uploadError:"エラー"},ko:{upload:"그림 올리기",file:"파일",uploadError:"에러"},pt_br:{upload:"Enviar do local",file:"Arquivo",uploadError:"Erro"},ru:{upload:"Загрузка",file:"Файл",uploadError:"Ошибка"},sk:{upload:"Nahrať",file:"Súbor",uploadError:"Chyba"},tr:{upload:"Yükle",file:"Dosya",uploadError:"Hata"},zh_cn:{upload:"上传",file:"文件",uploadError:"错误"},zh_tw:{upload:"上傳",file:"文件",uploadError:"錯誤"}},plugins:{upload:{init:function(n){n.o.plugins.upload=e.extend(!0,{},t,n.o.plugins.upload||{});var a={fn:function(){n.saveRange();var t,a=n.o.prefix,r={file:{type:"file",required:!0,attributes:{accept:"image/*"}},alt:{label:"description",value:n.getRangeText()}};n.o.plugins.upload.imageWidthModalEdit&&(r.width={value:""});var l=!1,i=n.openModalInsert(n.lang.upload,r,(function(r){if(!l){l=!0;var s=new FormData;s.append(n.o.plugins.upload.fileFieldName,t),n.o.plugins.upload.data.map((function(e){s.append(e.name,e.value)})),e.map(r,(function(e,t){"file"!==t&&s.append(t,e)})),0===e("."+a+"progress",i).length&&e("."+a+"modal-title",i).after(e("
    ",{class:a+"progress"}).append(e("
    ",{class:a+"progress-bar"}))),e.ajax({url:n.o.plugins.upload.serverPath,headers:n.o.plugins.upload.headers,xhrFields:n.o.plugins.upload.xhrFields,type:"POST",data:s,cache:!1,dataType:"json",processData:!1,contentType:!1,progressUpload:function(t){e("."+a+"progress-bar").css("width",Math.round(100*t.loaded/t.total)+"%")},success:function(t){if(n.o.plugins.upload.success)n.o.plugins.upload.success(t,n,i,r);else if(o(t,n.o.plugins.upload.statusPropertyName.split("."))){var a=o(t,n.o.plugins.upload.urlPropertyName.split("."));n.execCmd("insertImage",a,!1,!0);var s=e('img[src="'+a+'"]:not([alt])',n.$box);s.attr("alt",r.alt),n.o.plugins.upload.imageWidthModalEdit&&parseInt(r.width)>0&&s.attr({width:r.width}),setTimeout((function(){n.closeModal()}),250),n.$c.trigger("tbwuploadsuccess",[n,t,a])}else n.addErrorOnModalField(e("input[type=file]",i),n.lang[t.message]),n.$c.trigger("tbwuploaderror",[n,t]);l=!1},error:n.o.plugins.upload.error||function(){n.addErrorOnModalField(e("input[type=file]",i),n.lang.uploadError),n.$c.trigger("tbwuploaderror",[n]),l=!1}})}}));e("input[type=file]").on("change",(function(e){try{t=e.target.files[0]}catch(o){t=e.target.value}}))}};n.addBtnDef("upload",a)}}}})}(jQuery),function(e){"use strict";var t={serverPath:"",fileFieldName:"fileToUpload",data:[],headers:{},xhrFields:{},urlPropertyName:"file",statusPropertyName:"success",success:void 0,error:void 0,imageWidthModalEdit:!1};function o(e,t){var n=t.shift(),a=t;if(null!==e){if(0===a.length)return e[n];if("object"==_typeof(e))return o(e[n],a)}return e}!function(){if(!e.trumbowyg.addedXhrProgressEvent){var t=e.ajaxSettings.xhr;e.ajaxSetup({xhr:function(){var e=this,o=t();return o&&"object"==_typeof(o.upload)&&void 0!==e.progressUpload&&o.upload.addEventListener("progress",(function(t){e.progressUpload(t)}),!1),o}}),e.trumbowyg.addedXhrProgressEvent=!0}}(),e.extend(!0,e.trumbowyg,{langs:{en:{upload:"Upload",file:"File",uploadError:"Error"},cs:{upload:"Nahrát obrázek",file:"Soubor",uploadError:"Chyba"},da:{upload:"Upload",file:"Fil",uploadError:"Fejl"},de:{upload:"Hochladen",file:"Datei",uploadError:"Fehler"},et:{upload:"Lae üles",file:"Fail",uploadError:"Viga"},fr:{upload:"Envoi",file:"Fichier",uploadError:"Erreur"},hu:{upload:"Feltöltés",file:"Fájl",uploadError:"Hiba"},ja:{upload:"アップロード",file:"ファイル",uploadError:"エラー"},ko:{upload:"그림 올리기",file:"파일",uploadError:"에러"},pt_br:{upload:"Enviar do local",file:"Arquivo",uploadError:"Erro"},ru:{upload:"Загрузка",file:"Файл",uploadError:"Ошибка"},sk:{upload:"Nahrať",file:"Súbor",uploadError:"Chyba"},tr:{upload:"Yükle",file:"Dosya",uploadError:"Hata"},zh_cn:{upload:"上传",file:"文件",uploadError:"错误"},zh_tw:{upload:"上傳",file:"文件",uploadError:"錯誤"}},plugins:{upload:{init:function(n){n.o.plugins.upload=e.extend(!0,{},t,n.o.plugins.upload||{});var a={fn:function(){n.saveRange();var t,a=n.o.prefix,r={file:{type:"file",required:!0,attributes:{accept:"image/*"}},alt:{label:"description",value:n.getRangeText()}};n.o.plugins.upload.imageWidthModalEdit&&(r.width={value:""});var l=!1,i=n.openModalInsert(n.lang.upload,r,(function(r){if(!l){l=!0;var s=new FormData;s.append(n.o.plugins.upload.fileFieldName,t),n.o.plugins.upload.data.map((function(e){s.append(e.name,e.value)})),e.map(r,(function(e,t){"file"!==t&&s.append(t,e)})),0===e("."+a+"progress",i).length&&e("."+a+"modal-title",i).after(e("
    ",{class:a+"progress"}).append(e("
    ",{class:a+"progress-bar"}))),e.ajax({url:n.o.plugins.upload.serverPath,headers:n.o.plugins.upload.headers,xhrFields:n.o.plugins.upload.xhrFields,type:"POST",data:s,cache:!1,dataType:"json",processData:!1,contentType:!1,progressUpload:function(t){e("."+a+"progress-bar").css("width",Math.round(100*t.loaded/t.total)+"%")},success:function(t){if(n.o.plugins.upload.success)n.o.plugins.upload.success(t,n,i,r);else if(o(t,n.o.plugins.upload.statusPropertyName.split("."))){var a=o(t,n.o.plugins.upload.urlPropertyName.split("."));n.execCmd("insertImage",a,!1,!0);var s=e('img[src="'+a+'"]:not([alt])',n.$box);s.attr("alt",r.alt),n.o.plugins.upload.imageWidthModalEdit&&parseInt(r.width)>0&&s.attr({width:r.width}),setTimeout((function(){n.closeModal()}),250),n.$c.trigger("tbwuploadsuccess",[n,t,a])}else n.addErrorOnModalField(e("input[type=file]",i),n.lang[t.message]),n.$c.trigger("tbwuploaderror",[n,t]);l=!1},error:n.o.plugins.upload.error||function(){n.addErrorOnModalField(e("input[type=file]",i),n.lang.uploadError),n.$c.trigger("tbwuploaderror",[n]),l=!1}})}}));e("input[type=file]").on("change",(function(e){try{t=e.target.files[0]}catch(o){t=e.target.value}}))}};n.addBtnDef("upload",a)}}}})}(jQuery); diff --git a/src/OrchardCore.Modules/OrchardCore.Setup/wwwroot/Scripts/setup.js b/src/OrchardCore.Modules/OrchardCore.Setup/wwwroot/Scripts/setup.js index e110ac4d457..1a7e5a30a27 100644 --- a/src/OrchardCore.Modules/OrchardCore.Setup/wwwroot/Scripts/setup.js +++ b/src/OrchardCore.Modules/OrchardCore.Setup/wwwroot/Scripts/setup.js @@ -9484,7 +9484,7 @@ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symb function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } Object.defineProperty(subClass, "prototype", { value: Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }), writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); } +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } diff --git a/src/OrchardCore.Modules/OrchardCore.Setup/wwwroot/Scripts/setup.min.js b/src/OrchardCore.Modules/OrchardCore.Setup/wwwroot/Scripts/setup.min.js index 3d9630a79a7..3ccfe67f64e 100644 --- a/src/OrchardCore.Modules/OrchardCore.Setup/wwwroot/Scripts/setup.min.js +++ b/src/OrchardCore.Modules/OrchardCore.Setup/wwwroot/Scripts/setup.min.js @@ -11,7 +11,7 @@ function _typeof(e){return _typeof="function"==typeof Symbol&&"symbol"==typeof S * https://jquery.org/license * * Date: 2021-03-02T17:08Z - */}function _get(){return _get="undefined"!=typeof Reflect&&Reflect.get?Reflect.get:function(e,t,n){var i=_superPropBase(e,t);if(i){var r=Object.getOwnPropertyDescriptor(i,t);return r.get?r.get.call(arguments.length<3?e:n):r.value}},_get.apply(this,arguments)}function _superPropBase(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&null!==(e=_getPrototypeOf(e)););return e}function ownKeys(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function _objectSpread(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,i=new Array(t);ne.length)&&(t=e.length);for(var n=0,i=new Array(t);n
    ").appendTo(l);o.range.deleteContents(),o.range.insertNode(t[0]),o.$c.trigger("tbwchange")},l={title:o.lang.tableAddRow,text:o.lang.tableAddRow,ico:"row-below",fn:function(){o.saveRange();var t=o.doc.getSelection().focusNode,n=e(t).closest("tr"),a=e(t).closest("table");if(a.length>0){for(var r=e("