From 675d2301e2cd3b2e86036c75b1e71c3c1680a8d6 Mon Sep 17 00:00:00 2001 From: Tim Cappalli Date: Tue, 21 Nov 2023 00:27:15 +0000 Subject: [PATCH 001/203] dependabot --- package-lock.json | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/package-lock.json b/package-lock.json index ef6447af..ccfcc79b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -65,9 +65,9 @@ } }, "node_modules/@babel/cli": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.23.0.tgz", - "integrity": "sha512-17E1oSkGk2IwNILM4jtfAvgjt+ohmpfBky8aLerUfYZhiPNg7ca+CRCxZn8QDxwNhV/upsc2VHBCqGFIR+iBfA==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.23.4.tgz", + "integrity": "sha512-j3luA9xGKCXVyCa5R7lJvOMM+Kc2JEnAEIgz2ggtjQ/j5YUVgfsg/WsG95bbsgq7YLHuiCOzMnoSasuY16qiCw==", "dev": true, "dependencies": { "@jridgewell/trace-mapping": "^0.3.17", @@ -1838,9 +1838,9 @@ } }, "node_modules/@eslint/js": { - "version": "8.53.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.53.0.tgz", - "integrity": "sha512-Kn7K8dx/5U6+cT1yEhpX1w4PCSg0M+XyRILPgvwcEBjerFWCwQj5sbr3/VmxqV0JGHCBCzyd6LxypEuehypY1w==", + "version": "8.54.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.54.0.tgz", + "integrity": "sha512-ut5V+D+fOoWPgGGNj83GGjnntO39xDy6DWxO0wb7Jp3DcMX0TfIqdzHF85VTQkerdyGmuuMD9AKAo5KiNlf/AQ==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -3187,15 +3187,15 @@ } }, "node_modules/eslint": { - "version": "8.53.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.53.0.tgz", - "integrity": "sha512-N4VuiPjXDUa4xVeV/GC/RV3hQW9Nw+Y463lkWaKKXKYMvmRiRDAtfpuPFLN+E1/6ZhyR8J2ig+eVREnYgUsiag==", + "version": "8.54.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.54.0.tgz", + "integrity": "sha512-NY0DfAkM8BIZDVl6PgSa1ttZbx3xHgJzSNJKYcQglem6CppHyMhRIQkBVSSMaSRnLhig3jsDbEzOjwCVt4AmmA==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", "@eslint/eslintrc": "^2.1.3", - "@eslint/js": "8.53.0", + "@eslint/js": "8.54.0", "@humanwhocodes/config-array": "^0.11.13", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", From 586ccbe91a1de7b20cc988284bb320b75cf0574d Mon Sep 17 00:00:00 2001 From: Tim Cappalli Date: Wed, 22 Nov 2023 18:34:02 +0000 Subject: [PATCH 002/203] remove Amazon, no top level button and OTP required --- content/en/docs/demos-examples/active-deployments.md | 1 - 1 file changed, 1 deletion(-) diff --git a/content/en/docs/demos-examples/active-deployments.md b/content/en/docs/demos-examples/active-deployments.md index 3f05a1a0..cfd7451a 100644 --- a/content/en/docs/demos-examples/active-deployments.md +++ b/content/en/docs/demos-examples/active-deployments.md @@ -23,7 +23,6 @@ To request an addition, update, or deletion, please [create an issue](https://gi |---------------------------------------------------|-----------------------|-------------|-------------|---------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------| | [Adobe](https://www.adobe.com/) | Software as a Service | ✅ | ❓ | | [Support](https://helpx.adobe.com/manage-account/using/secure-sign-in-with-passkey.html) | | [Air New Zealand](https://www.airnewzealand.com/) | Travel | ✅ | ❓ | | [Support](https://www.airnewzealand.com/cyber-security-account-protection) | -| [Amazon.com](https://amazon.com) | Retail | ✅ | ☑️ | * iOS only | [Support](https://www.amazon.com/gp/help/customer/display.html?nodeId=TPphmhSWBgcI9Ak87p) | | [Best Buy](https://www.bestbuy.com) | Retail | ✅ | ❓ | | | | [GitHub](https://github.com) | Software as a Service | ✅ | ✅ | | [Support](https://docs.github.com/en/authentication/authenticating-with-a-passkey/about-passkeys) | | [Google](https://accounts.google.com) | Software as a Service | ✅ | ✅ | | [Support](https://support.google.com/accounts/answer/13548313?hl=en) | From 73c14a80e76fa2e04473781bb3d9d1d53f93ac79 Mon Sep 17 00:00:00 2001 From: Tim Cappalli Date: Tue, 28 Nov 2023 16:19:37 -0500 Subject: [PATCH 003/203] assign deployments-list label to new issues --- .github/ISSUE_TEMPLATE/active-deployments.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/active-deployments.yml b/.github/ISSUE_TEMPLATE/active-deployments.yml index 74b78266..5239a566 100644 --- a/.github/ISSUE_TEMPLATE/active-deployments.yml +++ b/.github/ISSUE_TEMPLATE/active-deployments.yml @@ -1,5 +1,6 @@ name: ➕ Add, Update, or Delete Known Passkey Deployment title: "Add " +labels: ["deployments-list"] description: Add, update, or delete a service in the active deployments list body: - type: dropdown @@ -66,4 +67,4 @@ body: description: Are you a point of contact for this service? options: - label: I am - required: false \ No newline at end of file + required: false From 68e6944693c075c8aaa4ae662a02b59f58972eef Mon Sep 17 00:00:00 2001 From: Tim Cappalli Date: Fri, 8 Dec 2023 15:50:57 +0000 Subject: [PATCH 004/203] dependabot --- package-lock.json | 256 +++++++++++++++++++++++----------------------- 1 file changed, 128 insertions(+), 128 deletions(-) diff --git a/package-lock.json b/package-lock.json index ccfcc79b..296145ab 100644 --- a/package-lock.json +++ b/package-lock.json @@ -94,12 +94,12 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.22.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", - "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", "dev": true, "dependencies": { - "@babel/highlight": "^7.22.13", + "@babel/highlight": "^7.23.4", "chalk": "^2.4.2" }, "engines": { @@ -107,30 +107,30 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.3.tgz", - "integrity": "sha512-BmR4bWbDIoFJmJ9z2cZ8Gmm2MXgEDgjdWgpKmKWUt54UGFJdlj31ECtbaDvCG/qVdG3AQ1SfpZEs01lUFbzLOQ==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", + "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.3.tgz", - "integrity": "sha512-Jg+msLuNuCJDyBvFv5+OKOUjWMZgd85bKjbICd3zWrKAo+bJ49HJufi7CQE0q0uR8NGyO6xkCACScNqyjHSZew==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.5.tgz", + "integrity": "sha512-Cwc2XjUrG4ilcfOw4wBAK+enbdgwAcAJCfGUItPBKR7Mjw4aEfAFYrLxeRp4jWgtNIKn3n2AlBOfwwafl+42/g==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.23.3", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.5", "@babel/helper-compilation-targets": "^7.22.15", "@babel/helper-module-transforms": "^7.23.3", - "@babel/helpers": "^7.23.2", - "@babel/parser": "^7.23.3", + "@babel/helpers": "^7.23.5", + "@babel/parser": "^7.23.5", "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.3", - "@babel/types": "^7.23.3", + "@babel/traverse": "^7.23.5", + "@babel/types": "^7.23.5", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -146,12 +146,12 @@ } }, "node_modules/@babel/generator": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.3.tgz", - "integrity": "sha512-keeZWAV4LU3tW0qRi19HRpabC/ilM0HRBBzf9/k8FFiG4KVpiv0FIy4hHfLfFQZNhziCTPTmd59zoyv6DNISzg==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.5.tgz", + "integrity": "sha512-BPssCHrBD+0YrxviOa3QzpqwhNIXKEtOa2jQrm4FlmkC2apYgRnQcmPWiGZDlGxiNtltnUFolMe8497Esry+jA==", "dev": true, "dependencies": { - "@babel/types": "^7.23.3", + "@babel/types": "^7.23.5", "@jridgewell/gen-mapping": "^0.3.2", "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" @@ -425,9 +425,9 @@ } }, "node_modules/@babel/helper-string-parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", - "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", + "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", "dev": true, "engines": { "node": ">=6.9.0" @@ -443,9 +443,9 @@ } }, "node_modules/@babel/helper-validator-option": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz", - "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", + "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", "dev": true, "engines": { "node": ">=6.9.0" @@ -466,26 +466,26 @@ } }, "node_modules/@babel/helpers": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.2.tgz", - "integrity": "sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.5.tgz", + "integrity": "sha512-oO7us8FzTEsG3U6ag9MfdF1iA/7Z6dz+MtFhifZk8C8o453rGJFFWUP1t+ULM9TUIAzC9uxXEiXjOiVMyd7QPg==", "dev": true, "dependencies": { "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.2", - "@babel/types": "^7.23.0" + "@babel/traverse": "^7.23.5", + "@babel/types": "^7.23.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.22.13", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.13.tgz", - "integrity": "sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20", "chalk": "^2.4.2", "js-tokens": "^4.0.0" }, @@ -494,9 +494,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.3.tgz", - "integrity": "sha512-uVsWNvlVsIninV2prNz/3lHCb+5CJ+e+IUBfbjToAHODtfGYLfCFuY4AU7TskI+dAKk+njsPiBjq1gKTvZOBaw==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.5.tgz", + "integrity": "sha512-hOOqoiNXrmGdFbhgCzu6GiURxUgM27Xwd/aPuu8RfHEZPBzL1Z54okAHAQjXfcQNwvrlkAmAp4SlRTZ45vlthQ==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -816,9 +816,9 @@ } }, "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.3.tgz", - "integrity": "sha512-59GsVNavGxAXCDDbakWSMJhajASb4kBCqDjqJsv+p5nKdbz7istmZ3HrX3L2LuiI80+zsOADCvooqQH3qGCucQ==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.4.tgz", + "integrity": "sha512-efdkfPhHYTtn0G6n2ddrESE91fgXxjlqLsnUtPWnJs4a4mZIbUaK7ffqKIIUKXSHwcDvaCVX6GXkaJJFqtX7jw==", "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", @@ -866,9 +866,9 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.3.tgz", - "integrity": "sha512-QPZxHrThbQia7UdvfpaRRlq/J9ciz1J4go0k+lPBXbgaNeY7IQrBj/9ceWjvMMI07/ZBzHl/F0R/2K0qH7jCVw==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.4.tgz", + "integrity": "sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -897,9 +897,9 @@ } }, "node_modules/@babel/plugin-transform-class-static-block": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.23.3.tgz", - "integrity": "sha512-PENDVxdr7ZxKPyi5Ffc0LjXdnJyrJxyqF5T5YjlVg4a0VFfQHW0r8iAtRiDXkfHlu1wwcvdtnndGYIeJLSuRMQ==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.23.4.tgz", + "integrity": "sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ==", "dev": true, "dependencies": { "@babel/helper-create-class-features-plugin": "^7.22.15", @@ -914,9 +914,9 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.3.tgz", - "integrity": "sha512-FGEQmugvAEu2QtgtU0uTASXevfLMFfBeVCIIdcQhn/uBQsMTjBajdnAtanQlOcuihWh10PZ7+HWvc7NtBwP74w==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.5.tgz", + "integrity": "sha512-jvOTR4nicqYC9yzOHIhXG5emiFEOpappSJAl73SDSEDcybD+Puuze8Tnpb9p9qEyYup24tq891gkaygIFvWDqg==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", @@ -999,9 +999,9 @@ } }, "node_modules/@babel/plugin-transform-dynamic-import": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.23.3.tgz", - "integrity": "sha512-vTG+cTGxPFou12Rj7ll+eD5yWeNl5/8xvQvF08y5Gv3v4mZQoyFf8/n9zg4q5vvCWt5jmgymfzMAldO7orBn7A==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.23.4.tgz", + "integrity": "sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -1031,9 +1031,9 @@ } }, "node_modules/@babel/plugin-transform-export-namespace-from": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.3.tgz", - "integrity": "sha512-yCLhW34wpJWRdTxxWtFZASJisihrfyMOTOQexhVzA78jlU+dH7Dw+zQgcPepQ5F3C6bAIiblZZ+qBggJdHiBAg==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.4.tgz", + "integrity": "sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -1079,9 +1079,9 @@ } }, "node_modules/@babel/plugin-transform-json-strings": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.23.3.tgz", - "integrity": "sha512-H9Ej2OiISIZowZHaBwF0tsJOih1PftXJtE8EWqlEIwpc7LMTGq0rPOrywKLQ4nefzx8/HMR0D3JGXoMHYvhi0A==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.23.4.tgz", + "integrity": "sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -1110,9 +1110,9 @@ } }, "node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.23.3.tgz", - "integrity": "sha512-+pD5ZbxofyOygEp+zZAfujY2ShNCXRpDRIPOiBmTO693hhyOEteZgl876Xs9SAHPQpcV0vz8LvA/T+w8AzyX8A==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.23.4.tgz", + "integrity": "sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -1239,9 +1239,9 @@ } }, "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.23.3.tgz", - "integrity": "sha512-xzg24Lnld4DYIdysyf07zJ1P+iIfJpxtVFOzX4g+bsJ3Ng5Le7rXx9KwqKzuyaUeRnt+I1EICwQITqc0E2PmpA==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.23.4.tgz", + "integrity": "sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -1255,9 +1255,9 @@ } }, "node_modules/@babel/plugin-transform-numeric-separator": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.23.3.tgz", - "integrity": "sha512-s9GO7fIBi/BLsZ0v3Rftr6Oe4t0ctJ8h4CCXfPoEJwmvAPMyNrfkOOJzm6b9PX9YXcCJWWQd/sBF/N26eBiMVw==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.23.4.tgz", + "integrity": "sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -1271,9 +1271,9 @@ } }, "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.23.3.tgz", - "integrity": "sha512-VxHt0ANkDmu8TANdE9Kc0rndo/ccsmfe2Cx2y5sI4hu3AukHQ5wAu4cM7j3ba8B9548ijVyclBU+nuDQftZsog==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.23.4.tgz", + "integrity": "sha512-9x9K1YyeQVw0iOXJlIzwm8ltobIIv7j2iLyP2jIhEbqPRQ7ScNgwQufU2I0Gq11VjyG4gI4yMXt2VFags+1N3g==", "dev": true, "dependencies": { "@babel/compat-data": "^7.23.3", @@ -1306,9 +1306,9 @@ } }, "node_modules/@babel/plugin-transform-optional-catch-binding": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.23.3.tgz", - "integrity": "sha512-LxYSb0iLjUamfm7f1D7GpiS4j0UAC8AOiehnsGAP8BEsIX8EOi3qV6bbctw8M7ZvLtcoZfZX5Z7rN9PlWk0m5A==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.23.4.tgz", + "integrity": "sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -1322,9 +1322,9 @@ } }, "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.3.tgz", - "integrity": "sha512-zvL8vIfIUgMccIAK1lxjvNv572JHFJIKb4MWBz5OGdBQA0fB0Xluix5rmOby48exiJc987neOmP/m9Fnpkz3Tg==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.4.tgz", + "integrity": "sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -1370,9 +1370,9 @@ } }, "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.3.tgz", - "integrity": "sha512-a5m2oLNFyje2e/rGKjVfAELTVI5mbA0FeZpBnkOWWV7eSmKQ+T/XW0Vf+29ScLzSxX+rnsarvU0oie/4m6hkxA==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.4.tgz", + "integrity": "sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", @@ -1573,15 +1573,15 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.23.3.tgz", - "integrity": "sha512-ovzGc2uuyNfNAs/jyjIGxS8arOHS5FENZaNn4rtE7UdKMMkqHCvboHfcuhWLZNX5cB44QfcGNWjaevxMzzMf+Q==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.23.5.tgz", + "integrity": "sha512-0d/uxVD6tFGWXGDSfyMD1p2otoaKmu6+GD+NfAx0tMaH+dxORnp7T9TaVQ6mKyya7iBtCIVxHjWT7MuzzM9z+A==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.23.3", + "@babel/compat-data": "^7.23.5", "@babel/helper-compilation-targets": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-option": "^7.22.15", + "@babel/helper-validator-option": "^7.23.5", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.23.3", "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.23.3", "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.23.3", @@ -1605,25 +1605,25 @@ "@babel/plugin-syntax-top-level-await": "^7.14.5", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", "@babel/plugin-transform-arrow-functions": "^7.23.3", - "@babel/plugin-transform-async-generator-functions": "^7.23.3", + "@babel/plugin-transform-async-generator-functions": "^7.23.4", "@babel/plugin-transform-async-to-generator": "^7.23.3", "@babel/plugin-transform-block-scoped-functions": "^7.23.3", - "@babel/plugin-transform-block-scoping": "^7.23.3", + "@babel/plugin-transform-block-scoping": "^7.23.4", "@babel/plugin-transform-class-properties": "^7.23.3", - "@babel/plugin-transform-class-static-block": "^7.23.3", - "@babel/plugin-transform-classes": "^7.23.3", + "@babel/plugin-transform-class-static-block": "^7.23.4", + "@babel/plugin-transform-classes": "^7.23.5", "@babel/plugin-transform-computed-properties": "^7.23.3", "@babel/plugin-transform-destructuring": "^7.23.3", "@babel/plugin-transform-dotall-regex": "^7.23.3", "@babel/plugin-transform-duplicate-keys": "^7.23.3", - "@babel/plugin-transform-dynamic-import": "^7.23.3", + "@babel/plugin-transform-dynamic-import": "^7.23.4", "@babel/plugin-transform-exponentiation-operator": "^7.23.3", - "@babel/plugin-transform-export-namespace-from": "^7.23.3", + "@babel/plugin-transform-export-namespace-from": "^7.23.4", "@babel/plugin-transform-for-of": "^7.23.3", "@babel/plugin-transform-function-name": "^7.23.3", - "@babel/plugin-transform-json-strings": "^7.23.3", + "@babel/plugin-transform-json-strings": "^7.23.4", "@babel/plugin-transform-literals": "^7.23.3", - "@babel/plugin-transform-logical-assignment-operators": "^7.23.3", + "@babel/plugin-transform-logical-assignment-operators": "^7.23.4", "@babel/plugin-transform-member-expression-literals": "^7.23.3", "@babel/plugin-transform-modules-amd": "^7.23.3", "@babel/plugin-transform-modules-commonjs": "^7.23.3", @@ -1631,15 +1631,15 @@ "@babel/plugin-transform-modules-umd": "^7.23.3", "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", "@babel/plugin-transform-new-target": "^7.23.3", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.23.3", - "@babel/plugin-transform-numeric-separator": "^7.23.3", - "@babel/plugin-transform-object-rest-spread": "^7.23.3", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.23.4", + "@babel/plugin-transform-numeric-separator": "^7.23.4", + "@babel/plugin-transform-object-rest-spread": "^7.23.4", "@babel/plugin-transform-object-super": "^7.23.3", - "@babel/plugin-transform-optional-catch-binding": "^7.23.3", - "@babel/plugin-transform-optional-chaining": "^7.23.3", + "@babel/plugin-transform-optional-catch-binding": "^7.23.4", + "@babel/plugin-transform-optional-chaining": "^7.23.4", "@babel/plugin-transform-parameters": "^7.23.3", "@babel/plugin-transform-private-methods": "^7.23.3", - "@babel/plugin-transform-private-property-in-object": "^7.23.3", + "@babel/plugin-transform-private-property-in-object": "^7.23.4", "@babel/plugin-transform-property-literals": "^7.23.3", "@babel/plugin-transform-regenerator": "^7.23.3", "@babel/plugin-transform-reserved-words": "^7.23.3", @@ -1713,19 +1713,19 @@ } }, "node_modules/@babel/traverse": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.3.tgz", - "integrity": "sha512-+K0yF1/9yR0oHdE0StHuEj3uTPzwwbrLGfNOndVJVV2TqA5+j3oljJUb4nmB954FLGjNem976+B+eDuLIjesiQ==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.5.tgz", + "integrity": "sha512-czx7Xy5a6sapWWRx61m1Ke1Ra4vczu1mCTtJam5zRTBOonfdJ+S/B6HYmGYu3fJtr8GGET3si6IhgWVBhJ/m8w==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.23.3", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.5", "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-function-name": "^7.23.0", "@babel/helper-hoist-variables": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.3", - "@babel/types": "^7.23.3", + "@babel/parser": "^7.23.5", + "@babel/types": "^7.23.5", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -1734,12 +1734,12 @@ } }, "node_modules/@babel/types": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.3.tgz", - "integrity": "sha512-OZnvoH2l8PK5eUvEcUyCt/sXgr/h+UWpVuBbOljwcrAgUl6lpchoQ++PHGyQy1AtYnVA6CEq3y5xeEI10brpXw==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.5.tgz", + "integrity": "sha512-ON5kSOJwVO6xXVRTvOI0eOnWe7VdUcIpsovGo9U/Br4Ie4UVFQTboO2cYnDhAGU6Fp+UxSiT+pMft0SMHfuq6w==", "dev": true, "dependencies": { - "@babel/helper-string-parser": "^7.22.5", + "@babel/helper-string-parser": "^7.23.4", "@babel/helper-validator-identifier": "^7.22.20", "to-fast-properties": "^2.0.0" }, @@ -1788,9 +1788,9 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.3.tgz", - "integrity": "sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, "dependencies": { "ajv": "^6.12.4", @@ -1838,9 +1838,9 @@ } }, "node_modules/@eslint/js": { - "version": "8.54.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.54.0.tgz", - "integrity": "sha512-ut5V+D+fOoWPgGGNj83GGjnntO39xDy6DWxO0wb7Jp3DcMX0TfIqdzHF85VTQkerdyGmuuMD9AKAo5KiNlf/AQ==", + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.55.0.tgz", + "integrity": "sha512-qQfo2mxH5yVom1kacMtZZJFVdW+E70mqHMJvVg6WTLo+VBuQJ4TojZlfWBjK0ve5BdEeNAVxOsl/nvNMpJOaJA==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -3187,15 +3187,15 @@ } }, "node_modules/eslint": { - "version": "8.54.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.54.0.tgz", - "integrity": "sha512-NY0DfAkM8BIZDVl6PgSa1ttZbx3xHgJzSNJKYcQglem6CppHyMhRIQkBVSSMaSRnLhig3jsDbEzOjwCVt4AmmA==", + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.55.0.tgz", + "integrity": "sha512-iyUUAM0PCKj5QpwGfmCAG9XXbZCWsqP/eWAWrG/W0umvjuLRBECwSFdt+rCntju0xEH7teIABPwXpahftIaTdA==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.3", - "@eslint/js": "8.54.0", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.55.0", "@humanwhocodes/config-array": "^0.11.13", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", @@ -5037,9 +5037,9 @@ "dev": true }, "node_modules/nanoid": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", "dev": true, "funding": [ { @@ -5462,9 +5462,9 @@ } }, "node_modules/postcss": { - "version": "8.4.31", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", - "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "version": "8.4.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.32.tgz", + "integrity": "sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==", "dev": true, "funding": [ { @@ -5481,7 +5481,7 @@ } ], "dependencies": { - "nanoid": "^3.3.6", + "nanoid": "^3.3.7", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" }, From fd3dec91a2e9b653bacf9289e0c8953e68966f05 Mon Sep 17 00:00:00 2001 From: Tim Cappalli Date: Wed, 13 Dec 2023 21:57:22 +0000 Subject: [PATCH 005/203] add blurb about end users --- content/en/device-support/_index.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/content/en/device-support/_index.md b/content/en/device-support/_index.md index 7f199c2c..83acf6f2 100644 --- a/content/en/device-support/_index.md +++ b/content/en/device-support/_index.md @@ -8,6 +8,10 @@ images: [] weight: 100 --- +This page, along with the rest of passkeys.dev, is targeted at relying party developers and is not intended to be an end user facing resource. + +> Said differently, **please don’t link to this page from end user focused resources** 😉 + ## Overview Support for passkeys is currently rolling out across major operating systems and browsers. This page will be updated as the ecosystem evolves. The [matrix below](#matrix) maps out the various features that support the passkey experience. Additional information about each platform is available in the [Reference section of Docs](/docs/reference/android). From 881c97f40a1d68df675a78100ae35daf0cd54208 Mon Sep 17 00:00:00 2001 From: Tim Cappalli Date: Tue, 19 Dec 2023 23:11:20 +0000 Subject: [PATCH 006/203] #83 add webviews and native app support --- content/en/device-support/_index.md | 103 +++++++++++++++++++++++++++- 1 file changed, 102 insertions(+), 1 deletion(-) diff --git a/content/en/device-support/_index.md b/content/en/device-support/_index.md index 83acf6f2..7012bbb5 100644 --- a/content/en/device-support/_index.md +++ b/content/en/device-support/_index.md @@ -307,7 +307,108 @@ Passkeys created in **macOS** can be used on:
- Advanced Capabilities + Native Apps +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Method + Android + Chrome OS + iOS/iPad OS + + macOS + Ubuntu + Windows +
+ Native Platform APIs + + + + n/a + + + + + + +
+ Not Supported +
+ +
+ System WebView + + +
+ Chrome
Custom Tabs
+
n/a + +
+ AS
WebAuthentication
Session
+
n/an/a + +
+ Edge WebView2 +
+ Embedded WebView + + +
+ Not Supported +
n/a + +
+ Not Supported +
+ +
+ Not Supported +
n/a + +
+ Not Supported +
+
+
+
+ Advanced Capabilities
From 238a99aee0d6f88976cafcd2af4b03d2577bf897 Mon Sep 17 00:00:00 2001 From: Tim Cappalli Date: Wed, 20 Dec 2023 01:04:12 +0000 Subject: [PATCH 007/203] s/method/invocation method --- content/en/device-support/_index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/device-support/_index.md b/content/en/device-support/_index.md index 7012bbb5..40a4e7fc 100644 --- a/content/en/device-support/_index.md +++ b/content/en/device-support/_index.md @@ -312,7 +312,7 @@ Passkeys created in **macOS** can be used on:
- + From 713b5025e920a53d421c1f918368f8229e7c51ef Mon Sep 17 00:00:00 2001 From: Tim Cappalli Date: Wed, 20 Dec 2023 01:06:44 +0000 Subject: [PATCH 008/203] use mbr instead of br --- content/en/device-support/_index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/device-support/_index.md b/content/en/device-support/_index.md index 40a4e7fc..e71afef8 100644 --- a/content/en/device-support/_index.md +++ b/content/en/device-support/_index.md @@ -366,7 +366,7 @@ Passkeys created in **macOS** can be used on: From a3b9c1d8338728d9299187f6af7dff477ee990f4 Mon Sep 17 00:00:00 2001 From: Tim Cappalli Date: Thu, 28 Dec 2023 23:07:01 +0000 Subject: [PATCH 009/203] add layout frontmatter --- content/en/about/_index.md | 1 + content/en/device-support/_index.md | 1 + 2 files changed, 2 insertions(+) diff --git a/content/en/about/_index.md b/content/en/about/_index.md index 617d0d15..b58f9a50 100644 --- a/content/en/about/_index.md +++ b/content/en/about/_index.md @@ -1,4 +1,5 @@ --- +layout: fullpage title: "About" description: "About passkeys.dev" date: 2022-09-26T19:48:01.955Z diff --git a/content/en/device-support/_index.md b/content/en/device-support/_index.md index e71afef8..2a6f428f 100644 --- a/content/en/device-support/_index.md +++ b/content/en/device-support/_index.md @@ -1,4 +1,5 @@ --- +layout: fullpage title: "Device Support" description: "Detailed information about passkey support across devices and ecosystems" lead: "" From b89027e01abf5bcc8f084c269029da422679b02b Mon Sep 17 00:00:00 2001 From: Tim Cappalli Date: Fri, 29 Dec 2023 18:57:25 +0000 Subject: [PATCH 010/203] add en to filename --- content/about/_index.en.md | 89 +++++++++++++++++++++++++++++++++++++ content/about/roadmap.en.md | 64 ++++++++++++++++++++++++++ 2 files changed, 153 insertions(+) create mode 100644 content/about/_index.en.md create mode 100644 content/about/roadmap.en.md diff --git a/content/about/_index.en.md b/content/about/_index.en.md new file mode 100644 index 00000000..b58f9a50 --- /dev/null +++ b/content/about/_index.en.md @@ -0,0 +1,89 @@ +--- +layout: fullpage +title: "About" +description: "About passkeys.dev" +date: 2022-09-26T19:48:01.955Z +draft: false +images: [] +--- + +passkeys.dev is brought to you by the [W3C WebAuthn Community Adoption Group](https://www.w3.org/community/webauthn-adoption/) and members of the [FIDO Alliance](https://fidoalliance.org/). + +## What's next? + +passkeys.dev was launched in October 2022 and is rapidly evolving. You can expect frequent updates with new content and improvements as passkeys continue rolling out across the ecosystem and as guidance is developed for additional use cases and verticals. + + + +## Engage and Contribute + +W3C WebAuthn Community Adoption Group + +GitHub + +Suggest content or report a site issue + +Passkeys Developer Discussions (passkeys.dev/discuss) + +Mastodon + +- Passkeys Developer +- W3C Developers + +X (Twitter) + +- Passkeys Dev +- FIDO Alliance +- W3C Developers + +### Contribute + +Contributing guidance coming soon! + +## Maintainers + +Tim Cappalli | + +Matthew Miller | + + + + +## Contributors + +- Dirk Balfanz +- Arnar Birgisson +- Christiaan Brand +- Garrett Davidson +- Jesse Endahl +- Akshay Kumar +- Dominique Hazael-Massieux +- Jeff Hodges +- Adam Langley +- Ricky Mondello +- Anders Åberg +- Cody Salas + +## Copyright and Attributions + +Unless otherwise indicated, passkeys.dev content is available under the terms of the [Creative Commons Attribution-ShareAlike](https://creativecommons.org/licenses/by-sa/2.5/) license (CC-BY-SA), v2.5 or any later version. + +Code samples are in the [public domain CC0](https://creativecommons.org/publicdomain/zero/1.0/). No licensing notice is necessary but if you need one, you can use: `Any copyright is dedicated to the Public Domain: https://creativecommons.org/publicdomain/zero/1.0/`. + +### Other Attributions + +**passkeys.dev is powered by [Doks](https://getdoks.org/) and [Hugo](https://gohugo.io/). Special thanks to [Henk Verlinde](https://github.com/h-enk).** + +AirDrop, Apple, iPadOS, iCloud Keychain, iPhone, MacBook, and macOS are trademarks of Apple Inc., registered in the U.S. and other countries and regions. + +Android and ChromeOS are trademarks of Google LLC. + +Ubuntu is a trademark of Canonical Limited and is used under license. + +Windows is a registered trademark of Microsoft Corporation in the United States and/or other countries. + +The FIDO® passkey icon is a trademark (registered in numerous countries) of FIDO Alliance, Inc. + +FIDO® is a trademark (registered in numerous countries) of FIDO Alliance, Inc. diff --git a/content/about/roadmap.en.md b/content/about/roadmap.en.md new file mode 100644 index 00000000..a1b7164d --- /dev/null +++ b/content/about/roadmap.en.md @@ -0,0 +1,64 @@ +--- +title: "Site Roadmap" +description: "Future content and feature plans for passkeys.dev" +date: 2022-10-11T01:20:36.292Z +lastmod: 2022-10-17T04:29:19.336Z +draft: false +images: [] +--- + +## Content and Tools + +
+
MethodInvocation Method Android
- AS
WebAuthentication
Session
+ ASWebAuthenticationSession
n/a n/a
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ItemTypeEstimated Arrival
Front End RequirementsContentQ3CY23
Back End RequirementsContentQ3CY23
Security ConsiderationsContentQ3CY23
Frequently Asked QuestionsContentH2CY23
Deployment Considerations: Consumer ServicesContentH2CY23
Deployment Considerations: High Value and Regulated ConsumerContent2HCY23
Deployment Considerations: Work/SchoolContentH2CY23
Persona-based demo siteDemoH2CY23
+
+ +You can request content by [creating an issue on GitHub ](https://github.com/passkeydeveloper/passkeys.dev/issues/new/choose) (select the New Content Suggestion option). From 5c0042c6b25856bf5ef0043b62d41c18f4b5d9d4 Mon Sep 17 00:00:00 2001 From: Tim Cappalli Date: Fri, 29 Dec 2023 19:00:46 +0000 Subject: [PATCH 011/203] revert en for about --- content/about/_index.en.md | 89 --------------------- content/{en => }/about/_index.md | 0 content/about/{roadmap.en.md => roadmap.md} | 0 3 files changed, 89 deletions(-) delete mode 100644 content/about/_index.en.md rename content/{en => }/about/_index.md (100%) rename content/about/{roadmap.en.md => roadmap.md} (100%) diff --git a/content/about/_index.en.md b/content/about/_index.en.md deleted file mode 100644 index b58f9a50..00000000 --- a/content/about/_index.en.md +++ /dev/null @@ -1,89 +0,0 @@ ---- -layout: fullpage -title: "About" -description: "About passkeys.dev" -date: 2022-09-26T19:48:01.955Z -draft: false -images: [] ---- - -passkeys.dev is brought to you by the [W3C WebAuthn Community Adoption Group](https://www.w3.org/community/webauthn-adoption/) and members of the [FIDO Alliance](https://fidoalliance.org/). - -## What's next? - -passkeys.dev was launched in October 2022 and is rapidly evolving. You can expect frequent updates with new content and improvements as passkeys continue rolling out across the ecosystem and as guidance is developed for additional use cases and verticals. - - - -## Engage and Contribute - -W3C WebAuthn Community Adoption Group - -GitHub - -Suggest content or report a site issue - -Passkeys Developer Discussions (passkeys.dev/discuss) - -Mastodon - -- Passkeys Developer -- W3C Developers - -X (Twitter) - -- Passkeys Dev -- FIDO Alliance -- W3C Developers - -### Contribute - -Contributing guidance coming soon! - -## Maintainers - -Tim Cappalli | - -Matthew Miller | - - - - -## Contributors - -- Dirk Balfanz -- Arnar Birgisson -- Christiaan Brand -- Garrett Davidson -- Jesse Endahl -- Akshay Kumar -- Dominique Hazael-Massieux -- Jeff Hodges -- Adam Langley -- Ricky Mondello -- Anders Åberg -- Cody Salas - -## Copyright and Attributions - -Unless otherwise indicated, passkeys.dev content is available under the terms of the [Creative Commons Attribution-ShareAlike](https://creativecommons.org/licenses/by-sa/2.5/) license (CC-BY-SA), v2.5 or any later version. - -Code samples are in the [public domain CC0](https://creativecommons.org/publicdomain/zero/1.0/). No licensing notice is necessary but if you need one, you can use: `Any copyright is dedicated to the Public Domain: https://creativecommons.org/publicdomain/zero/1.0/`. - -### Other Attributions - -**passkeys.dev is powered by [Doks](https://getdoks.org/) and [Hugo](https://gohugo.io/). Special thanks to [Henk Verlinde](https://github.com/h-enk).** - -AirDrop, Apple, iPadOS, iCloud Keychain, iPhone, MacBook, and macOS are trademarks of Apple Inc., registered in the U.S. and other countries and regions. - -Android and ChromeOS are trademarks of Google LLC. - -Ubuntu is a trademark of Canonical Limited and is used under license. - -Windows is a registered trademark of Microsoft Corporation in the United States and/or other countries. - -The FIDO® passkey icon is a trademark (registered in numerous countries) of FIDO Alliance, Inc. - -FIDO® is a trademark (registered in numerous countries) of FIDO Alliance, Inc. diff --git a/content/en/about/_index.md b/content/about/_index.md similarity index 100% rename from content/en/about/_index.md rename to content/about/_index.md diff --git a/content/about/roadmap.en.md b/content/about/roadmap.md similarity index 100% rename from content/about/roadmap.en.md rename to content/about/roadmap.md From f200cdcff6f77e5786acd74fc3a2722121d9ec99 Mon Sep 17 00:00:00 2001 From: Tim Cappalli Date: Fri, 29 Dec 2023 19:07:11 +0000 Subject: [PATCH 012/203] change note to styled version --- content/docs/use-cases/bootstrapping/index.md | 208 ++++++++++++++++++ 1 file changed, 208 insertions(+) create mode 100644 content/docs/use-cases/bootstrapping/index.md diff --git a/content/docs/use-cases/bootstrapping/index.md b/content/docs/use-cases/bootstrapping/index.md new file mode 100644 index 00000000..ee285d25 --- /dev/null +++ b/content/docs/use-cases/bootstrapping/index.md @@ -0,0 +1,208 @@ +--- +title : "Bootstrapping" +description: "Bootstrapping an account on the web" +lead: "Bootstrapping an account on the web" +date: 2022-10-10T19:52:26.819Z +draft: false +images: ['pkdd-signin-username-next.png'] +weight: 310 +--- + +## Authenticating the user + +This section applies when the [Relying Party (RP)](/docs/reference/terms/#relying-party-rp) does not yet know who is controlling the client device. There is no browser artifact (such as a cookie or a credential ID in local storage) available to the RP, although for now we assume that the user has an existing account with the RP. + +To bootstrap an account, serve the user a sign-in page. + +Start off by asking the user for their account identifier, typically a username or email address: + +![Image](pkdd-signin-username-next.png "Sample sign in screen with a username field and next button") + +To support the [autofill UI](/docs/reference/terms/#autofill-ui) for passkeys, make sure to: + +1. Add the `username` and `webauthn` value to any existing autocomplete annotations on the username input field as shown below in the example. + + ```html +
+ + +
+ ``` + +2. On page load, check to see if autofill UI (conditional mediation) is available using an if statement, then call `navigator.credentials.get()` with `mediation: "conditional"` and `userVerification: "preferred"`. + +```html + +``` + +This will cause the following to happen: + +- Retrieve the authentication options from your server. Return at least a random `challenge` and `rpId` to be associated with this authentication request. + +- When the user interacts with the username field, the browser and platform will check whether a passkey exists in the platform authenticator that can be used with the relying party.

If this is the case, the passkey will be presented to the user as an option to choose (along with other credentials that can be auto-filled, such as usernames stored in the browser’s password manager). The browser/platform might render a UI similar to the one shown below, although the exact look and feel will vary from platform to platform (Windows vs. Android vs. iOS), and from form factor to form factor (desktop vs. mobile): + +![Image](pkdd-signin-username-autofill.png "Sample sign in screen with the autofill UI rendered under the username field, showing a passkey for bob@example.com, an other accounts option and a passkey from another device option") + +- If the user selects the passkey, the platform UI will guide the user through a (often biometrics-based) user verification check. + +- If the user successfully passes the user verification, the `navigator.credentials.get()` succeeds and returns a WebAuthn response. + +- If the user selects a credential other than a passkey, the browser/platform chooses a different appropriate action (such as auto-filling the username), and the `navigator.credentials.get()` call does not resolve. + +- If the user selects the "Passkey from another device" option (NOTE: the exact text will vary slightly by platform), then the browser/platform will guide the user through using a FIDO2 security key or the Cross-Device Authentication (CDA) flow to use a passkey from their smartphone or tablet to deliver a WebAuthn response to the `navigator.credentials.get()` call. + +- Send the WebAuthn response to your server for verification and additional security checks. If all checks succeed then start an authenticated session for this user. + +This is why this is called the Conditional UI (or more commonly, the autofill UI) mode of WebAuthn — the platform authenticator UI that guides the user through the verification, or through using their phone, is only shown if the user has a passkey on this device (or chooses the "another device" option). + +As we can see, in this mode the `navigator.credentials.get()` call either succeeds, or it doesn’t (never resolves). If it does succeed, then the result of the call will reveal both a user id, as well as a signed WebAuthn assertion, which the relying party will use to authenticate the user. + +If the call doesn’t succeed, perform a "legacy" user authentication: you’ll get a username from this first page, and you then serve appropriate further login challenges (such as passwords, responding to SMS challenges, etc.) to the user in subsequent pages. These may include "account recovery" steps in case the user has forgotten their password or is otherwise not able to pass the regular login challenges. Once the user has passed all the login challenges, they’re considered authenticated and signed in. + +What happens when the user doesn’t already have an account with the relying party? Usually, you will give users the option on the sign-in page to create an account. If the user chooses that option, collect the necessary information from the user to open a new account. If the user successfully opens a new account, they’re also considered authenticated and signed-in. + +Once the user is signed in, it might be time to set up a new passkey for them. Do this for any of the following cases: + +- The user bootstrapped their account on the device by passing non-passkey login challenges (such as using a password). +- The user just created a new account at the relying party, and is considered signed-in because of that. +- The user was using a passkey, but they used a different device than the one they’re currently on (by selecting the "other device" shown in the example above). This can be checked by inspecting the [`authenticatorAttachment`](/) attribute in the returned PublicKeyCredential object. + +### Cross-Device Authentication + +If the user used a passkey from another device (such as a phone, tablet, or FIDO2 security key), the `authenticatorAttachment` property in the authentication response (getAssertion) will have the value `cross-platform`. + +In such a scenario, offer the user the choice to create a passkey on their local device. This will result in a more seamless user experience in the future, as the user will not be required to use their other device. + +![Image](pkdd-interstitial-cdalocal.png "A sample interstitial with the title: Set up a passkey on this device, with the passkey icon to the left. Below is text that reads: Next time you sign in, would you like to use this device instead of your phone? Under that is a button that says yes and a link that says not now.") + +### A note about user verification + +This guidance sets `userVerification` to `preferred`, meaning that user verification will be attempted when possible. + +Some devices, such as desktops and older laptops, may not have biometric sensors. On these devices, the user may be asked to enter their system login password for each sign in using a passkey if `userVerification` is set to `required`. This can be a very frustrating user experience to repeat over and over. + +When `preferred` is used, some platform authenticators will always require a user verification check when the device has biometric sensors, but may skip user verification on devices without them. + +The user verification result (conveyed in [authenticator data flags](https://www.w3.org/TR/2021/REC-webauthn-2-20210408/#flags)) will reflect the actual user verification result and should always be validated against your requirements on the server. + +## Opting the user into passkeys + +First, verify that the user is sufficiently strongly authenticated using other login methods, including multi-factor authentication. + +Second, ensure that the user's device and OS combo supports passkeys by calling: + +```js +PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable() +``` + +If passkeys are supported, this will return `true`. If they aren't supported, this will return `false` and you should abort the passkey enrollment flow. + +Serve an opt-in or "upsell" modal/interstitial or page to the user offering them to create a passkey: + +![Image](pkdd-interstitial-upgradeaccount.png "A sample interstitial with the title: Faster, safer sign-in with passkeys, with the passkey icon to the left. Below is text that reads: You can now sign into this site using your face, fingerprint, or device PIN! Under that is a button that says create a passkey and a link that says not now.") + +> Consider showing (or linking to) longer descriptions explaining that all users that are able to unlock the current device will be able to access the account at the relying party to ensure that the user is giving fully informed consent. + +If the user consents, call `navigator.credentials.create()` with the options as shown in the example below: + +```js +navigator.credentials.create({ + publicKey: { + rp: { + // user friendly name of your service + name: "Passkeys Developer", + // Relying Party (RP) identifier (hostname/FQDN) + id: "passkeys.dev" + }, + + user: { + // persistent, unique identifier for the user account in your backend + id: Uint8Array.from("0525bc79-5a63-4e47-b7d1-597e25f5caba", c => c.charCodeAt(0)), + // user friendly identifier often displayed to the user (e.g. email address) + name: "julia@passkeys.dev", + // human readable display name, sometimes displayed by the client + displayName: "Julia Coleman" + }, + // the challenge is a buffer of cryptographically random bytes generated on your backend + // and should be tightly bound to the current user session + challenge: Uint8Array.from("XZJscsUqtBH7ZB90t2g0EbZTZYlbSRK6lq7zlN2lJKuoYMnp7Qo2OLzD7xawL3s", c => c.charCodeAt(0)), + pubKeyCredParams: [ + // an array of objects describing what public key types are acceptable to a server. + { + "type": "public-key", + "alg": -7 // EC P256 + }, + { + "type": "public-key", + "alg": -257 // RSA + } + ], + excludeCredentials: [ + // array of credential IDs for existing passkeys tied to the user account. + // this avoids creating a new passkey in an authenticator that already has + // a passkey tied to the user account + { + // example only + type: "public-key", + id: new Uint8Array([21, 31, 56, ...]).buffer + }, + { + // example only + type: "public-key", + id: new Uint8Array([21, 31, 56, ...]).buffer + } + ], + authenticatorSelection: { + // tells the authenticator to create a passkey + residentKey: "required", + // tells the client / authenticator to request user verification where possible + // e.g. biometric or device PIN + userVerification: "preferred" + }, + "extensions": { + // returns back details about the passkey + "credProps": true + } + } +}) +``` + +{{< callout context="note" title="A note on attestation" icon="info-circle" >}} +We recommend that most relying parties not specify the attestation conveyance parameter `attestation` (thus defaulting to none), or instead explicitly use the value `indirect`. This guarantees the most streamlined user experience (platforms are likely to obtain consent from the user for other types of attestation conveyances, which likely results in a larger fraction of unsuccessful credential creations due to users canceling the creation). +{{< /callout >}} + +When the WebAuthn call resolves, send the response to your server and associate the returned public key and credential ID with the previously authenticated user account. From 3c62a1d157429bba5731fad5802ad50fc503ad13 Mon Sep 17 00:00:00 2001 From: Tim Cappalli Date: Fri, 29 Dec 2023 19:08:01 +0000 Subject: [PATCH 013/203] move out from under en directory --- content/docs/_index.md | 8 + content/docs/demos-examples/_index.md | 9 + .../docs/demos-examples/active-deployments.md | 37 ++++ content/docs/demos-examples/demos.md | 25 +++ content/docs/implement/_index.md | 9 + content/docs/implement/requirements.md | 27 +++ content/docs/intro/_index.md | 9 + content/docs/intro/what-are-passkeys.md | 27 +++ content/docs/reference/_index.md | 9 + content/docs/reference/android.md | 69 +++++++ content/docs/reference/chromeos.md | 29 +++ content/docs/reference/ios.md | 50 +++++ content/docs/reference/macos.md | 57 ++++++ content/docs/reference/specs.md | 41 ++++ content/docs/reference/terms/index.md | 193 ++++++++++++++++++ .../terms/pkdd-signin-username-autofill.png | Bin 0 -> 13609 bytes .../terms/pkdd-terms-cda-pl-androidwin.png | Bin 0 -> 27054 bytes content/docs/reference/windows.md | 40 ++++ content/docs/tools-libraries/_index.md | 9 + content/docs/tools-libraries/libraries.md | 53 +++++ content/docs/tools-libraries/test-sites.md | 29 +++ content/docs/use-cases/_index.md | 9 + .../pkdd-interstitial-cdalocal.png | Bin 0 -> 13788 bytes .../pkdd-interstitial-upgradeaccount.png | Bin 0 -> 14502 bytes .../pkdd-signin-username-autofill.png | Bin 0 -> 13609 bytes .../pkdd-signin-username-next.png | Bin 0 -> 7159 bytes content/docs/use-cases/reauth/index.md | 83 ++++++++ .../pkdd-reauth-logout-passkey-knowncid.png | Bin 0 -> 10167 bytes .../reauth/pkdd-reauth-logout-passkey.png | Bin 0 -> 10376 bytes .../reauth/pkdd-reauth-logout-password.png | Bin 0 -> 9162 bytes .../use-cases/reauth/pkdd-reauth-passkey.png | Bin 0 -> 12667 bytes .../use-cases/reauth/pkdd-reauth-password.png | Bin 0 -> 10713 bytes 32 files changed, 822 insertions(+) create mode 100644 content/docs/_index.md create mode 100644 content/docs/demos-examples/_index.md create mode 100644 content/docs/demos-examples/active-deployments.md create mode 100644 content/docs/demos-examples/demos.md create mode 100644 content/docs/implement/_index.md create mode 100644 content/docs/implement/requirements.md create mode 100644 content/docs/intro/_index.md create mode 100644 content/docs/intro/what-are-passkeys.md create mode 100644 content/docs/reference/_index.md create mode 100644 content/docs/reference/android.md create mode 100644 content/docs/reference/chromeos.md create mode 100644 content/docs/reference/ios.md create mode 100644 content/docs/reference/macos.md create mode 100644 content/docs/reference/specs.md create mode 100644 content/docs/reference/terms/index.md create mode 100644 content/docs/reference/terms/pkdd-signin-username-autofill.png create mode 100644 content/docs/reference/terms/pkdd-terms-cda-pl-androidwin.png create mode 100644 content/docs/reference/windows.md create mode 100644 content/docs/tools-libraries/_index.md create mode 100644 content/docs/tools-libraries/libraries.md create mode 100644 content/docs/tools-libraries/test-sites.md create mode 100644 content/docs/use-cases/_index.md create mode 100644 content/docs/use-cases/bootstrapping/pkdd-interstitial-cdalocal.png create mode 100644 content/docs/use-cases/bootstrapping/pkdd-interstitial-upgradeaccount.png create mode 100644 content/docs/use-cases/bootstrapping/pkdd-signin-username-autofill.png create mode 100644 content/docs/use-cases/bootstrapping/pkdd-signin-username-next.png create mode 100644 content/docs/use-cases/reauth/index.md create mode 100644 content/docs/use-cases/reauth/pkdd-reauth-logout-passkey-knowncid.png create mode 100644 content/docs/use-cases/reauth/pkdd-reauth-logout-passkey.png create mode 100644 content/docs/use-cases/reauth/pkdd-reauth-logout-password.png create mode 100644 content/docs/use-cases/reauth/pkdd-reauth-passkey.png create mode 100644 content/docs/use-cases/reauth/pkdd-reauth-password.png diff --git a/content/docs/_index.md b/content/docs/_index.md new file mode 100644 index 00000000..2ab96d19 --- /dev/null +++ b/content/docs/_index.md @@ -0,0 +1,8 @@ +--- +title : "Docs" +description: "Docs Doks." +lead: "" +date: 2020-10-06T08:48:23+00:00 +draft: false +images: [] +--- diff --git a/content/docs/demos-examples/_index.md b/content/docs/demos-examples/_index.md new file mode 100644 index 00000000..3c02f473 --- /dev/null +++ b/content/docs/demos-examples/_index.md @@ -0,0 +1,9 @@ +--- +title : "Demos & Examples" +description: "Resources for demoing and testing passkeys" +lead: "" +date: 2023-09-19T16:40:11.007Z +draft: false +images: [] +weight: 1100 +--- diff --git a/content/docs/demos-examples/active-deployments.md b/content/docs/demos-examples/active-deployments.md new file mode 100644 index 00000000..cfd7451a --- /dev/null +++ b/content/docs/demos-examples/active-deployments.md @@ -0,0 +1,37 @@ +--- +title: "Active Deployments" +description: "Known live deployments of services offering sign in with passkeys" +lead: "Some examples of live services that offer sign-in with passkeys." +date: 2023-09-19T15:33:17.279Z +draft: false +images: [] +menu: + docs: + parent: "tools-libraries" +weight: 1110 +toc: false +layout: matrix +--- + +The table below lists known active passkeys deployments which largely follow best practices and patterns. Its purpose is to provide developers with real-world examples and is not intended to be an end user facing resource. + +> Said differently, please don't link to this page from end user focused resources 😉 + +To request an addition, update, or deletion, please [create an issue](https://github.com/passkeydeveloper/passkeys.dev/issues/new?assignees=&labels=&projects=&template=active-deployments.yml&title=Add+%3Cservice+name%3E). + +| Service Name | Service Type | Web Support | App Support | Notes | Links | +|---------------------------------------------------|-----------------------|-------------|-------------|---------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------| +| [Adobe](https://www.adobe.com/) | Software as a Service | ✅ | ❓ | | [Support](https://helpx.adobe.com/manage-account/using/secure-sign-in-with-passkey.html) | +| [Air New Zealand](https://www.airnewzealand.com/) | Travel | ✅ | ❓ | | [Support](https://www.airnewzealand.com/cyber-security-account-protection) | +| [Best Buy](https://www.bestbuy.com) | Retail | ✅ | ❓ | | | +| [GitHub](https://github.com) | Software as a Service | ✅ | ✅ | | [Support](https://docs.github.com/en/authentication/authenticating-with-a-passkey/about-passkeys) | +| [Google](https://accounts.google.com) | Software as a Service | ✅ | ✅ | | [Support](https://support.google.com/accounts/answer/13548313?hl=en) | +| [Hancock](https://hancock.ink/) | Software as a Service | ✅ | n/a | | | +| [Hyatt](https://hyatt.com) | Travel | ✅ | ❓ | | [Support](https://www.hyatt.com/en-US/member/passkey/what-is-passkey) | +| [Kayak](https://www.kayak.com/) | Travel | ✅ | ✅ | | | +| [Nintendo](https://www.nintendo.com/) | Gaming | ✅ | ❓ | | [Support](https://en-americas-support.nintendo.com/app/answers/detail/a_id/62531) | +| [PayPal](https://www.paypal.com/) | Finance | ✅ | ❓ | | [Support](https://www.paypal.com/us/cshelp/article/what-is-a-passkey-and-how-do-i-use-it-to-log-in-to-my-paypal-account-help997) | +| [Robinhood](https://robinhood.com) | Finance | ☑️ | ☑️ | * limited to a single passkey | | +| [Shop](https://shop.app/) | Finance | ✅ | ✅ | | [Support](https://help.shop.app/hc/en-us/articles/12637752526868-Set-up-a-Shop-Passkey) | +| [TikTok](https://www.tiktok.com/) | Social Media | ☑️ | ❓ | * Asia, Africa, Australia, and South America only | [Support](https://support.tiktok.com/en/log-in-troubleshoot/log-in/log-in-with-a-passkey) | +| [Zoho](https://www.zoho.com/) | Software as a Service | ☑️ | ❓ | * limited to a single passkey | [Support](https://help.zoho.com/portal/en/kb/accounts/sign-in-za/articles/passkey) | diff --git a/content/docs/demos-examples/demos.md b/content/docs/demos-examples/demos.md new file mode 100644 index 00000000..7fbff866 --- /dev/null +++ b/content/docs/demos-examples/demos.md @@ -0,0 +1,25 @@ +--- +title: "Demo Sites & Services" +description: "Sites and services to demo passkeys" +lead: "Sites and services to demo passkeys" +date: 2023-09-19T16:45:00.148Z +draft: false +images: [] +menu: + docs: + parent: "demos-examples" +weight: 1120 +toc: true +--- + +## General Passkey Demo Sites + +- [webauthn.io](https://webauthn.io) + +## Vendor Demo Sites + +These demo sites have been created and are maintained by FIDO2/WebAuthn vendors in the industry. + +- [passkeys.io (Hanko)](https://www.passkeys.io/) +- [passkeys.guru (Descope)](https://passkeys.guru/) +- [passkey.org (Yubico)](https://passkey.org) diff --git a/content/docs/implement/_index.md b/content/docs/implement/_index.md new file mode 100644 index 00000000..72d3fac9 --- /dev/null +++ b/content/docs/implement/_index.md @@ -0,0 +1,9 @@ +--- +title : "Implement" +description: "Implement passkeys" +lead: "" +date: 2022-09-24T15:57:34.857Z +draft: true +images: [] +weight: 500 +--- diff --git a/content/docs/implement/requirements.md b/content/docs/implement/requirements.md new file mode 100644 index 00000000..9a1a0668 --- /dev/null +++ b/content/docs/implement/requirements.md @@ -0,0 +1,27 @@ +--- +title: "Requirements" +description: "" +lead: "" +date: 2022-09-24T16:02:27.390Z +draft: true +images: [] +menu: + docs: + parent: "implement" +weight: 501 +toc: true +--- + +## Back End + +Your back end will need to generate a challenge, and a set of configuration parameters for WebAuthn. + +This challenge + +### Session Data + +### Persistent Data + +Each passkey will + +## Front End diff --git a/content/docs/intro/_index.md b/content/docs/intro/_index.md new file mode 100644 index 00000000..d03035e3 --- /dev/null +++ b/content/docs/intro/_index.md @@ -0,0 +1,9 @@ +--- +title : "Intro" +description: "Intro to passkeys" +lead: "" +date: 2022-09-24T15:57:34.857Z +draft: false +images: [] +weight: 100 +--- diff --git a/content/docs/intro/what-are-passkeys.md b/content/docs/intro/what-are-passkeys.md new file mode 100644 index 00000000..3b839280 --- /dev/null +++ b/content/docs/intro/what-are-passkeys.md @@ -0,0 +1,27 @@ +--- +title: "What are passkeys?" +description: "Passkeys are a replacement for passwords. A password is something that can be remembered and typed, and a passkey is a secret stored on one’s devices, unlocked with biometrics." +lead: "Passkeys are a replacement for passwords. A password is something that can be remembered and typed, and a passkey is a secret stored on one’s devices, unlocked with biometrics." +date: 2022-09-24T16:02:27.390Z +draft: false +images: [] +menu: + docs: + parent: "intro" +weight: 102 +toc: true +--- + +Passkeys are: + +**Intuitive**
Creating and using passkeys is as simple as consenting to save and use them. No having to create a password. + +**Automatically unique per-service**
By design, passkeys are unique per-service. There’s no chance to reuse them. + +**Breach-resistant**
A passkey is only stored on a user’s devices. [Relying Party (RP)](/docs/reference/terms/#relying-party-rp) servers store public keys. Even servers that assist in the syncing of passkeys across a user’s devices never have the ability to view or use the private keys for a user's passkeys. + +**Phishing-resistant**
Rather than trust being rooted in a human who has to verify they’re signing into the right website or app, browser, and operating systems enforce that passkeys are only ever used for the appropriate service. + +


+ +> The guidance on this site is currently targeted towards sites and services that are using either password only or password + OTP (SMS, app TOTP, app push, magic link) sign in flows. Future guidance will include more advanced and higher assurance scenarios. diff --git a/content/docs/reference/_index.md b/content/docs/reference/_index.md new file mode 100644 index 00000000..d39b6c7c --- /dev/null +++ b/content/docs/reference/_index.md @@ -0,0 +1,9 @@ +--- +title: "Reference" +description: "Help Doks." +lead: "" +date: 2020-10-06T08:49:15+00:00 +draft: false +images: [] +weight: 1000 +--- diff --git a/content/docs/reference/android.md b/content/docs/reference/android.md new file mode 100644 index 00000000..aab2ecf9 --- /dev/null +++ b/content/docs/reference/android.md @@ -0,0 +1,69 @@ +--- +title: "Android" +description: "Resources for passkeys in Android" +date: 2022-09-03T16:09:38.358Z +draft: false +images: [] +menu: + docs: + parent: "reference" +weight: 1001 +toc: true +--- + +{{% ds-pa %}} + +## Overview + +The platform authenticator in Android 9+ has the following capabilities: + +- creating and using passkeys that are backed up to Google Password Manager +- using a passkey from the local Android device to sign into services on another device (such as a laptop or desktop), using FIDO [Cross-Device Authentication](../terms#cross-device-authentication-cda) + +Android 14 adds the following capabilities: + +- creating and using passkeys in a [third-party passkey provider](../terms/#third-party-passkey-provider) + +### Cross-Device Authentication + +Android devices can be an [authenticator](../terms/#cda-authenticator) for [FIDO Cross-Device Authentication (CDA)](../terms#cross-device-authentication-cda). + +Android devices can be persistently linked to the browsers/platforms below: + +- Chrome OS +- Windows 11 23H2 +- Chrome & Edge on Windows 11 <23H2 +- Chrome & Edge on Windows 10 +- Chrome on macOS +- Edge on macOS +- Chrome on Ubuntu +- Edge on Ubuntu + +macOS (Safari and native apps), iOS (global), and iPadOS (global) do not support persistent linking. + +When an authenticator is not persistently linked, a QR code must be scanned on every use. + +## Platform Notes + +- **Credential Manager** is a new Android Jetpack API that supports multiple sign-in methods, including passkeys, in a single API, thus simplifying the integration for developers.



+ +## Resources + +### Docs + +- Adding passkeys support to native Android apps: [User authentication with passkeys](https://developer.android.com/design/ui/mobile/guides/patterns/passkeys) +- [Security of Passkeys in the Google Password Manager](https://security.googleblog.com/2022/10/SecurityofPasskeysintheGooglePasswordManager.html) + +### Videos + +- [Passkeys: a simpler and safer sign-in (Google I/O 2023)](https://www.youtube.com/watch?v=SF8ueIn2Nlc) +- [Reduce reliance on passwords in Android apps with passkey support (Google I/O 2023)](https://www.youtube.com/watch?v=36peNZUlgzU) +- [Learn how to implement passkeys with form autofill in a web app(Google I/O 2023)](https://www.youtube.com/watch?v=_qSCYiU_Yr4) + +### Sample Code + +- [Credential Manager Sample app](https://github.com/android/identity-samples/tree/main/CredentialManager) + +### Community Resources + +- [Sample native app with passkey support from Dashlane](https://github.com/Dashlane/android-passkey-example) diff --git a/content/docs/reference/chromeos.md b/content/docs/reference/chromeos.md new file mode 100644 index 00000000..8e59b8bc --- /dev/null +++ b/content/docs/reference/chromeos.md @@ -0,0 +1,29 @@ +--- +title: "Chrome OS" +description: "Resources for passkeys in Google's Chrome OS" +lead: "Resources for passkeys in Google's Chrome OS" +date: 2022-09-03T16:09:38.358Z +draft: false +images: [] +menu: + docs: + parent: "reference" +weight: 1002 +toc: true +--- + +{{% ds-cda %}} + +## Overview + +Creation of passkeys in Chrome OS is not currently supported. + +Passkeys from Android, iOS, and iPadOS can be used to sign in to web services on Chrome OS using [FIDO Cross-Device Authentication](../terms#cross-device-authentication-cda). + +## Platform Notes + +> Coming Soon + +## Resources + +> Coming Soon diff --git a/content/docs/reference/ios.md b/content/docs/reference/ios.md new file mode 100644 index 00000000..4e364d0f --- /dev/null +++ b/content/docs/reference/ios.md @@ -0,0 +1,50 @@ +--- +title: "iOS & iPadOS" +description: "Resources for passkeys in Apple's iOS and iPadOS" +date: 2022-09-03T16:09:38.358Z +draft: false +images: [] +menu: + docs: + parent: "reference" +weight: 1003 +toc: true +--- + +{{% ds-full %}} + +## Overview + +The platform authenticators in iOS 16+ and iPadOS 16+ have the following capabilities: + +- creating and using passkeys that are backed up to iCloud Keychain +- creating and using passkeys on/from another device, such as: + - an iPhone or iPad signed in to a different iCloud account, using FIDO [Cross-Device Authentication](../terms#cross-device-authentication-cda) + - an Android phone or tablet, using FIDO [Cross-Device Authentication](../terms#cross-device-authentication-cda) + - a FIDO2 security key1 +- using a passkey from the local iOS or iPadOS device to sign into services on another device (such as a laptop or desktop), using FIDO [Cross-Device Authentication](../terms#cross-device-authentication-cda) + +

1 On iOS and iPadOS, user verification methods (device PIN, biometric, etc) must already be configured on the security key prior to credential creation

+ +## Platform Notes + +### Cross-Device Authentication + +iOS and iPadOS support both [client](../terms/#cda-client) and [authenticator](../terms/#cda-client) roles for [Cross-Device Authentication (CDA)](../terms#cross-device-authentication-cda). + +iOS and iPadOS devices (as authenticators) do not support persistent linking for Cross-Device Authentication. When an authenticator is not persistently linked, a QR code must be scanned on every use. + +### Legacy Credentials + +WebAuthn credentials created using the platform authenticator in iOS/iPadOS 15 and earlier ***will not*** not be converted to passkeys but will remain available for the lifetime of the device. + + +To replace a legacy platform credential with a passkey, start a credential registration ceremony and pass **the same user handle** (user.id) in the request. iOS/iPadOS will overwrite the legacy credential with a new passkey that will be backed up to iCloud Keychain. + +## Resources + +- [Apple landing page for passkeys](https://developer.apple.com/passkeys/) +- [About the security of passkeys](https://support.apple.com/en-us/HT213305) +- [Supporting passkeys](https://developer.apple.com/documentation/authenticationservices/public-private_key_authentication/supporting_passkeys) +- [Supporting device-bound passkeys on security keys](https://developer.apple.com/documentation/authenticationservices/public-private_key_authentication/supporting_security_key_authentication_using_physical_keys) +- [Sample Code](https://developer.apple.com/documentation/authenticationservices/connecting_to_a_service_with_passkeys) diff --git a/content/docs/reference/macos.md b/content/docs/reference/macos.md new file mode 100644 index 00000000..2027b3f6 --- /dev/null +++ b/content/docs/reference/macos.md @@ -0,0 +1,57 @@ +--- +title: "macOS" +description: "Resources for passkeys in Apple macOS" +date: 2022-09-03T16:09:38.358Z +draft: false +images: [] +menu: + docs: + parent: "reference" +weight: 1004 +toc: true +--- + +{{% ds-full %}} + +## Overview + +The platform authenticator in macOS Ventura (13) has the following capabilities: + +- creating and using passkeys that are backed up to iCloud Keychain +- creating and using passkeys on/from another device, such as: + - an iPhone or iPad signed in to a different iCloud account, using FIDO [Cross-Device Authentication](../terms#cross-device-authentication-cda) + - an Android device, using FIDO [Cross-Device Authentication](../terms#cross-device-authentication-cda) + - a FIDO2 security key1 + +

1 On macOS, user verification methods (device PIN, biometric, etc) must already be configured on the security key prior to credential creation

+ +## Platform Notes + +### Cross-Device Authentication + +macOS does not currently support persistent linking of external authenticators for [Cross-Device Authentication](../terms#cross-device-authentication-cda) at the operating system level. + +Persistent linking is available between Android devices (authenticator) and Chrome and Edge (clients) on macOS. + +When an authenticator is not persistently linked, a QR code must be scanned on every use. + +### Legacy Credentials + +WebAuthn credentials created using the platform authenticator in macOS Monterey (12) and earlier ***will not*** be converted to passkeys but will remain available for the lifetime of the device. + + +To replace a legacy platform credential with a passkey, start a credential registration ceremony and pass **the same user handle** (user.id) in the request. macOS will overwrite the legacy credential with a new passkey that will be backed up to iCloud Keychain. + +### Browser Behavior + +**Edge**: credentials created by Edge are currently [***device-bound*** passkeys](/docs/reference/terms/#device-bound-passkey), are not backed up to iCloud Keychain, and are ***not available outside of Edge***. + +**Firefox**: passkeys are not currently supported in Firefox on macOS. [***Device-bound*** passkeys](/docs/reference/terms/#device-bound-passkey) on a FIDO2 security key are supported. + +## Resources + +- [Apple landing page for passkeys](https://developer.apple.com/passkeys/) +- [About the security of passkeys](https://support.apple.com/en-us/HT213305) +- [Supporting passkeys](https://developer.apple.com/documentation/authenticationservices/public-private_key_authentication/supporting_passkeys) +- [Supporting device-bound passkeys on security keys](https://developer.apple.com/documentation/authenticationservices/public-private_key_authentication/supporting_security_key_authentication_using_physical_keys) +- [Sample Code](https://developer.apple.com/documentation/authenticationservices/connecting_to_a_service_with_passkeys) diff --git a/content/docs/reference/specs.md b/content/docs/reference/specs.md new file mode 100644 index 00000000..42f72e6d --- /dev/null +++ b/content/docs/reference/specs.md @@ -0,0 +1,41 @@ +--- +title: "Specifications" +description: "List of specifications that enable passkeys" +lead: "" +date: 2022-08-04T17:33:14.682Z +draft: false +images: [] +menu: + docs: + parent: "reference" +weight: 1102 +toc: true +--- + +The two primary technical specifications that work together to enable passkeys are Web Authentication, commonly referred to as WebAuthn, and the Client to Authenticator Protocol (CTAP), commonly referred to as FIDO2. + +The two specs together are often referred to as one stack, ***FIDO2/WebAuthn***. + +## W3C Web Authentication (WebAuthn) + +WebAuthn is the primary specification used by developers. + +Platforms also create their own platform-specific abstractions of the WebAuthn API for use by native apps. + +**Current Version**: [WebAuthn Level 2](https://www.w3.org/TR/webauthn-2/) + +***Next Version***: [WebAuthn Level 3](https://w3c.github.io/webauthn/) + +## Client to Authenticator Protocol (CTAP) + +The FIDO *Client to Authenticator Protocol*, often referred to by its acronym CTAP, is responsible for communications with the authenticator over a number of transports including USB, NFC, and Bluetooth. Operating systems, and in some cases apps, utilize this protocol to pass requests from WebAuthn to the appropriate authenticator over its desired transport. + +CTAP is implemented by authenticator and device vendors and abstracts away all of the complexity of interacting with authenticators from relying parties and developers. + +***Current Version***: [CTAP 2.1](https://fidoalliance.org/specs/fido-v2.1-ps-20210615/fido-client-to-authenticator-protocol-v2.1-ps-errata-20220621.html) + +***Next Version***: [CTAP 2.2 (Review Draft 01)](https://fidoalliance.org/specs/fido-v2.2-rd-20230321/fido-client-to-authenticator-protocol-v2.2-rd-20230321.html) + +The next version of CTAP is currently under development at the FIDO Alliance. + +In the context of passkeys, CTAP 2.2 adds support for the hybrid transport, more commonly known as the FIDO Cross-Device Authentication flow, allowing a passkey to be used to sign in on another device (ex: passkey on Android signing into a service on Windows). diff --git a/content/docs/reference/terms/index.md b/content/docs/reference/terms/index.md new file mode 100644 index 00000000..411d444a --- /dev/null +++ b/content/docs/reference/terms/index.md @@ -0,0 +1,193 @@ +--- +title: "Terms" +description: "A list of terms which are used frequently throughout this site and in discussions about passkeys, FIDO2, and WebAuthn." +lead: "Here's a list of terms which are used frequently throughout this site and in discussions about passkeys, FIDO2, and WebAuthn." +date: 2020-11-12T13:26:54+01:00 +draft: false +images: [] +menu: + docs: + parent: "reference" +weight: 1101 +toc: true +--- + +## 2FA user + +A user whose account has [2FA](#2-factor-authentication-2fa) turned on, i.e., who must present 2 authentication factors during sign-in. + +## 2-Factor Authentication (2FA) + +> _also sometimes referred to as MFA: multi-factor authentication or 2SV: two-step verification_ + +This refers to a contract between a user and a [Relying Party (RP)](#relying-party-rp) where the RP must collect at least two distinct authentication factors from the user during a [bootstrap](#account-bootstrapping) sign-in. + +## Account bootstrapping + +A [Relying Party (RP)](#relying-party-rp) authenticates a user without any prior knowledge of who the user is. This means that the RP not only has to verify the identity of the user (checking the password, verifying cryptographic signatures, etc), it also has to establish the identity of the user (figure out the user id, username, etc. of the user who’s signing in). This may happen when a user signs into an existing account for the first time on a newly-purchased device; or when a user logs into a website for the first time in a given browser instance. Or when a user logs into a website in a private browsing session. Or when a user signs into a mobile app for the first time on a given device (contrast this with [reauthentication](#reauthentication) below). + +> Note that this is different from creating an account with a service in the first place. + +## Attestation + +Attestation is an optional statement provided by an authenticator which can be used by a Relying Party to identify and verify the provenance of the authenticator. + + + +## Authentication factor + +Information provided by a user (or one of the user’s devices) for purposes of authentication, usually in response to a login challenge. Often categorized into "knowledge factors" (e.g. passwords), "something you have" factors (e.g. another already signed-in device), and "something you are" factors (e.g. biometrics). Note that a single login challenge may collect multiple factors simultaneously. + +## Autofill UI + +A privacy preserving list UI element that is rendered by the browser (or the OS platform in the case of native apps), in cooperation with the platform authenticator, on username and/or password fields that have the `webauthn` value included in the `autocomplete` attribute. + +This UI element provides a list of passkeys that are available for the [Relying Party (RP)](#relying-party-rp) on the local device, and may also provide an option to kick off [Cross-Device Authentication (CDA)](#cross-device-authentication-cda) or use a FIDO2 security key. + +A generic example of an autofill UI for passkeys is shown below: + +![Image](pkdd-signin-username-autofill.png "Sample sign in screen with the autofill UI rendered under the username field, showing a passkey for bob@example.com, an other accounts option and a passkey from another device option") + +The technical name for this feature in the WebAuthn and Credential Management specifications is "Conditional Mediation". + + + + + +## Cross-Device Authentication (CDA) + +FIDO Cross-Device Authentication (CDA) allows a passkey from one device to be used to sign in on another device. For example, your phone can be linked to your laptop, allowing you to use a passkey from your phone to sign into a service on your laptop. + +CDA is powered by the FIDO Client-to-Authenticator Protocol (CTAP) using "hybrid" transport. CTAP is implemented by authenticators and client platforms, not Relying Parties. + +### CDA Client + +The _client_ in a cross-device authentication flow is the device where the relying party is being actively accessed. + +### CDA Authenticator + +The _authenticator_ in a cross-device authentication flow is the device generating the FIDO assertion. + +## Conditional Mediation + +See [_Autofill UI_](#autofill-ui) + +## Conditional UI + +See [_Autofill UI_](#autofill-ui) + +## Device-bound passkey + +A FIDO2 [Discoverable Credential](#discoverable-credential) that is bound to a single authenticator. For example, FIDO2 security keys typically hold device-bound passkeys as the credential cannot leave the device. Device-bound passkeys have been previously referred to as _single-device passkeys_. + +## Discoverable Credential + +A Discoverable Credential (previously known as a "resident credential" or "resident key") is a FIDO2/WebAuthn credential that is entirely stored in the authenticator (private key, credential ID, user handle, and other metadata). The [Relying Party (RP)](#relying-party-rp) also stores a copy of the _public_ key and credential ID + +[Passkeys](#passkey) are Discoverable Credentials. + + + +## First-Party Passkey Provider + +A [Passkey Provider](#passkey-provider) that is provided by the OS platform vendor and is often enabled by default. Examples include "Windows Hello" on Windows, "Apple iCloud Keychain" on macOS and iOS, and "Google Password Manager" on most Android devices. + +## Login challenge + +A prompt served to the user that they need to satisfy. + +Examples: + +- a prompt asking the user for their password +- a prompt asking the user to confirm sign-in on another device (e.g., their phone) +- a prompt asking the user to insert and activate their security key + +Account bootstrapping and reauthentication usually consist of serving the user one or more login challenges. + +## Logging in + +see [_Signing in_.](#signing-in) + +## Passkey + +> Usage: "a passkey" or "passkeys" + +The high level, end-user centric term for a FIDO2/WebAuthn [Discoverable Credential](#discoverable-credential). Like "password", "passkey" is a common noun intended to be used in every day conversations and experiences. + +Passkeys are designed to be used without additional login challenges. All passkeys can be used with modern sign in experiences like the [Autofill UI](#autofill-ui) or with a "Sign in with a passkey" button. + +From the technical side, there are two flavors of passkeys: [synced](#synced-passkey) and [device-bound](#device-bound-passkey). + +## Passkey Provider + +An app and/or service that is responsible for storing and managing passkeys. Many operating systems include a default passkey provider ([first-party](#first-party-passkey-provider)), and many also support [third-party](#third-party-passkey-provider) providers. + +## Persistent Linking + +The informal name for creating a relationship between a [Cross-Device Authentication authenticator](#cda-authenticator) (typically a phone or tablet) and [Cross-Device Authentication client](#cda-client) (typically a laptop or desktop), which enables future use without having to scan a QR code. + +Both the client and authenticator must support the functionality. + +Example with an Android phone linked to a Windows 11 device: + +![Image captions](pkdd-terms-cda-pl-androidwin.png "A screenshot of the Windows Hello prompt asking the user to choose where to save their new passkey. The list of options includes an entry with a phone icon titled cappy-p7p as an example of a phone that has been persistently linked to the access device the user is current registering a new passkey from.") + +## Platform authenticator + +A FIDO authenticator that is built-in to a user's device. + + + +## Reauthentication + +Reauthentication happens when a [Relying Party (RP)](#relying-party-rp) already knows who the user is, but would like to reconfirm this. + +For example, this can happen before making sensitive changes to an account (adding a recovery email address, changing authentication methods, etc.): a relying party would typically ask the user to re-enter their password or perform some other action to reconfirm their control of the session. Likewise, when a mobile app asks the user to sign in every time the app starts (or a web site asks the user to sign in again after a period of inactivity), this is technically a reauthentication, since the app or web site can choose to remember the user's identity after the account has been bootstrapped on the device (using things like cookies or local storage). + +## Relying Party (RP) + +The website that is trying to ascertain and verify the identity of the user or perform FIDO authentication. + + + +## Roaming authenticator + +A FIDO authenticator usable with any device the user is trying to sign-in from. Roaming authenticators attach to users' devices in using USB, NFC, and/or Bluetooth. These authenticators are often referred to as "security keys". A smartphone can also act as a roaming authenticator using [FIDO Cross-Device Authentication](#cross-device-authentication-cda). + + + +## Signing in + +This can refer to either account [bootstrapping](#account-bootstrapping) or [reauthentication](#reauthentication). + +## Single-device passkey + +see [_Device-bound passkey_.](#device-bound-passkey) + +## Synced passkey + +A FIDO2 [Discoverable Credential](#discoverable-credential) that can reliably be used for bootstrapping sign-in, without requiring other login challenges such as passwords and OTPs. "Reliable" here means that the passkey should be available to, and usable by, the user whenever they need to sign in. This availability can be achieved through different means: for example, passkey providers could sync passkeys in real-time across a user's devices, restore passkeys from a backup whenever a user sets up a new device, offer passkeys across different contexts (a passkey established from an app can be used in the browser when visiting the app’s website), or allow users to [exercise passkeys across devices](#cross-device-authentication-cda) (by, say, using the passkey from a nearby phone when signing in from a laptop). + +## Third-Party Passkey Provider + +A [Passkey Provider](#passkey-provider) that plugs in to the OS via platform APIs to store and manage a user's passkeys via the platform authenticator. + +> NOTE: Some passkey providers support passkeys via a browser extension that intercepts WebAuthn requests. Providers that bypass browser and/or platform interfaces and features in this manner typically offer a way for the intercepted request to be passed back to the browser and/or platform to handle as usual. + +## User Presence (UP) + +A test of User Presence (UP) is used to ensure the user is in local proximity to the authenticator during an authentication or credential creation ceremony. UP is often satisfied by pressing a button or metallic area of a security key, or interacting with a platform authenticator on a device. + + + +## User Verification (UV) + +User Verification (UV) requires the user to either perform a biometric gesture, enter the device PIN, or enter the device password for the authenticator to authorize creation and/or use of the credential. + + + +## User-Verifying Roaming Authenticator + +A User-Verifying Roaming Authentication (UVRA), also known as a first-factor roaming authenticator, can [verify individual](#user-verification-uv) users through the use of biometrics, or through the user entering a device PIN. An important class of UVRAs are smartphones, in which case the “attachment” typically happens over a wireless connection. + + diff --git a/content/docs/reference/terms/pkdd-signin-username-autofill.png b/content/docs/reference/terms/pkdd-signin-username-autofill.png new file mode 100644 index 0000000000000000000000000000000000000000..e405a5f68351239f86a7b076c0eec071ca27f689 GIT binary patch literal 13609 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 Iiy8&~FVGHGB>(^b literal 0 HcmV?d00001 diff --git a/content/docs/reference/terms/pkdd-terms-cda-pl-androidwin.png b/content/docs/reference/terms/pkdd-terms-cda-pl-androidwin.png new file mode 100644 index 0000000000000000000000000000000000000000..6905835427b1c579a159fbb0630e062637ac023f GIT binary patch literal 27054 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 Coming Soon diff --git a/content/docs/tools-libraries/_index.md b/content/docs/tools-libraries/_index.md new file mode 100644 index 00000000..a85b6647 --- /dev/null +++ b/content/docs/tools-libraries/_index.md @@ -0,0 +1,9 @@ +--- +title : "Tools & Libraries" +description: "Tools and libraries for FIDO2, WebAuthn, and passkeys" +lead: "Tools and libraries for FIDO2, WebAuthn, and passkeys" +date: 2022-09-24T15:57:34.857Z +draft: false +images: [] +weight: 700 +--- diff --git a/content/docs/tools-libraries/libraries.md b/content/docs/tools-libraries/libraries.md new file mode 100644 index 00000000..39753afb --- /dev/null +++ b/content/docs/tools-libraries/libraries.md @@ -0,0 +1,53 @@ +--- +title: "Libraries" +description: "A list of libraries for passkeys and FIDO2/WebAuthn" +lead: "" +date: 2022-09-24T16:02:27.390Z +draft: false +images: [] +menu: + docs: + parent: "tools-libraries" +weight: 701 +toc: true +--- + +## Updated for passkeys + +### Rust + +- [webauthn_rs: WebAuthn for Rust Server Applications](https://docs.rs/webauthn-rs/latest/webauthn_rs/) (William Brown) + +### TypeScript + +- [SimpleWebAuthn](https://simplewebauthn.dev/) (Matthew Miller) + +### Java + +- [java-webauthn-server](https://github.com/Yubico/java-webauthn-server) ([Yubico](https://developers.yubico.com/java-webauthn-server/)) + +## Other FIDO2/WebAuthn libraries + +The ["Awesome WebAuthn"](https://github.com/herrjemand/awesome-webauthn) GitHub repo is also regularly updated with libraries from the community. + +### .NET + +- [FIDO2 .NET Library](https://fido2-net-lib.passwordless.dev/) (Anders Åberg, Alex Seigler) + +### Go + +- [Go WebAuthn Library](https://github.com/go-webauthn/webauthn) (Fork of Duo Labs library) + +### Java + +- [WebAuthn4J](https://github.com/webauthn4j/webauthn4j) (Yoshikazu Nojima) + +### Python + +- [py_webauthn](https://github.com/duo-labs/py_webauthn) (Duo Labs) + +### Ruby + +- [webauthn-ruby](https://github.com/cedarcode/webauthn-ruby) (Cedarcode) +- [devise-passkeys](https://github.com/ruby-passkeys/devise-passkeys) (Ruby Passkeys, wrapper around `webauthn-ruby`) +- [warden-webauthn](https://github.com/ruby-passkeys/warden-webauthn) (Ruby Passkeys, wrapper around `webauthn-ruby`) diff --git a/content/docs/tools-libraries/test-sites.md b/content/docs/tools-libraries/test-sites.md new file mode 100644 index 00000000..ddd4634c --- /dev/null +++ b/content/docs/tools-libraries/test-sites.md @@ -0,0 +1,29 @@ +--- +title: "Test Sites & Tools" +description: "" +lead: "" +date: 2022-09-24T16:02:27.390Z +draft: false +images: [] +menu: + docs: + parent: "tools-libraries" +weight: 702 +toc: true +--- + +## FIDO2/WebAuthn Tools + +### Basic + +- [WebAuthn.io](https://webauthn.io) +- [Yubico Demo Site](https://demo.yubico.com/webauthn-technical/) +- [WebAuthn.me](https://webauthn.me/) + +### Advanced + +- [aka.ms/webauthntest](https://aka.ms/webauthntest) +- [lbuchs/WebAuthn](https://webauthn.lubu.ch/_test/client.html) +- [WebAuthn Response Debugger](https://debugger.simplewebauthn.dev/) + +The ["Awesome WebAuthn"](https://github.com/herrjemand/awesome-webauthn) GitHub repo is also regularly updated with tools and demos from the community. diff --git a/content/docs/use-cases/_index.md b/content/docs/use-cases/_index.md new file mode 100644 index 00000000..dab2e332 --- /dev/null +++ b/content/docs/use-cases/_index.md @@ -0,0 +1,9 @@ +--- +title : "Use Cases" +description: "Implement passkeys" +lead: "" +date: 2022-09-28T18:53:38.996Z +draft: false +images: [] +weight: 300 +--- diff --git a/content/docs/use-cases/bootstrapping/pkdd-interstitial-cdalocal.png b/content/docs/use-cases/bootstrapping/pkdd-interstitial-cdalocal.png new file mode 100644 index 0000000000000000000000000000000000000000..a8b0c05f3bfd6ab12d27284896b5bb21bba05be0 GIT binary patch literal 13788 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 Iiy8&~FVGHGB>(^b literal 0 HcmV?d00001 diff --git a/content/docs/use-cases/bootstrapping/pkdd-signin-username-next.png b/content/docs/use-cases/bootstrapping/pkdd-signin-username-next.png new file mode 100644 index 0000000000000000000000000000000000000000..826036b807836c1b818d69ed98afb4f89123bbe8 GIT binary patch literal 7159 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 YhaT188#O>*HR|BGyy~+O*|(qm2X%7mm;e9( literal 0 HcmV?d00001 diff --git a/content/docs/use-cases/reauth/index.md b/content/docs/use-cases/reauth/index.md new file mode 100644 index 00000000..3a6ed8d7 --- /dev/null +++ b/content/docs/use-cases/reauth/index.md @@ -0,0 +1,83 @@ +--- +title : "Reauthentication" +description: "Performing a reauthentication with passkeys" +lead: "Performing a reauthentication with passkeys" +date: 2022-10-10T19:52:16.153Z +draft: false +images: [] +weight: 320 +--- + +Reauthentication might happen for the following reasons: + +- The user signed out and now wants to sign in again +- The user session expired due to inactivity, and the user wants to sign in again +- The user is about to perform a sensitive action, and needs to re-confirm control over the user session + +You’ll use passkeys that you set up in the [previous section](../bootstrapping) to reauthenticate the user in each of these situations. The WebAuthn API call is the same in all three cases, but the UI treatment that you provide is slightly different. Since the particular account is specified by you, the platform will not offer the user to select a different account on your service. + +## Sensitive Actions + +Let’s look at the UI for the last case first: when it’s time to re-authenticate for a sensitive action, check whether you have a credential ID for at least one passkey for the user. + +If _no such credential ID is available_, serve a traditional login challenge suitable for reauthentication, for example: + +![Image](pkdd-reauth-password.png "Sample reauthentication screen with a title of: Let's make sure it's you, then showing Account: bob@example.com with a password caption and password field below, and a try another way link and next button at the bottom") + +> We recommend that on this login challenge page, users can’t change their account identifier. Also, the login challenge should be something that an unauthorized user of the device can’t pass. + +If, however, you do find at least one passkey credential ID for the user, then you can use passkeys for reauthentication: + +![Image](pkdd-reauth-passkey.png "Sample reauthentication screen with a title of: Let's make sure it's you, then showing Account: bob@example.com, with text below reading: You'll use your passkey to verify it's you, and a try another way link and a Go button with the passkey icon at the bottom") + +When the user is ready (in the above example, when they click on the "Go" button), call `navigator.credentials.get()`, passing in all the user’s passkey credential IDs: + +```js +navigator.credentials.get({ + publicKey: { + challenge: ..., + rpId: ..., + allowCredentials: [{ + type: "public-key", + id: new UInt8Array([21, 31, 56, ...]).buffer, + }, { + type: "public-key", + id: new UInt8Array([21, 31, 56, ...]).buffer, + }, { + ... + }], + // see note below + userVerification: "preferred", + } +}); +``` + +> NOTE: Be sure to read the guidance around userVerification from the [previous page](../bootstrapping#a-note-about-user-verification) + +If the user instead clicks on "Try another way", you should offer them other sign in methods (password, etc.) to reauthenticate them (assuming the user has such other sign in methods available to them). + +## Expired Sessions and Logout + +Now let’s look at the case where the reauthentication is triggered because the user logged themselves out, or the relying party expired the user's session. To facilitate this, the relying party would have to keep some form of user session state reminding them of the account that used to be signed in, even when they consider the user signed-out (this could be achieved using browser artifacts such as cookies or local storage). + +> Note that a relying party may choose to treat signing-out as a comprehensive action and thus delete all references to the user’s identity. Such a relying party ought to treat a subsequent sign-in like an account bootstrap, and repeat the steps explained above. + +You, as the relying party, might then serve a sign-in page like this: + +![Image](pkdd-reauth-logout-passkey.png "Sample reauthentication screen with a title of: Welcome back!, then showing a button with the passkey icon and text reading sign in as bob@example.com, with a link below saying Use a different account") + +If the user clicks on "Use a different account", then you should enter an account bootstrap flow as explained on the previous page, repeating the steps in [Bootstrapping an account](../bootstrapping), where the platform will let them select which account they want to use. + +> In this case, you should also give the user the ability to completely remove the suggested account from being listed on the sign-in page. + +But if the user clicks the "Sign in as" button, check whether you have at least one passkey credential ID associated with the user. If no credential ID is available, serve a traditional login challenge suitable for reauthentication, for example: + +![Image](pkdd-reauth-logout-password.png "Sample reauthentication screen with a title of: Welcome back!, then showing a button with the passkey icon and text reading sign in as bob@example.com, with a link below saying Use a different account") + +If, however, you _do_ find at least one passkey credential ID for the user, then you can use passkeys for reauthentication: + +![Image](pkdd-reauth-logout-passkey-knowncid.png "Sample reauthentication screen with a title of: Welcome back!, then showing a button with the passkey icon and text reading sign in as bob@example.com, with a link below saying Try another way") + +When the user is ready (in the above example, when they click on the “Go!” button), call `navigator.credentials.get()`, exactly as shown above (i.e., by passing in all the user’s passkey credential IDs). + +If the user instead clicks on "Try another way", you should offer them other sign in methods (password, etc.) to reauthenticate them. diff --git a/content/docs/use-cases/reauth/pkdd-reauth-logout-passkey-knowncid.png b/content/docs/use-cases/reauth/pkdd-reauth-logout-passkey-knowncid.png new file mode 100644 index 0000000000000000000000000000000000000000..75bd5635b76d40a3ed8c8799ea13094fc346e3c4 GIT binary patch literal 10167 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 Wh{V^XntS>v0hHv_-dD+*hWtM-y21GX literal 0 HcmV?d00001 diff --git a/content/docs/use-cases/reauth/pkdd-reauth-logout-passkey.png b/content/docs/use-cases/reauth/pkdd-reauth-logout-passkey.png new file mode 100644 index 0000000000000000000000000000000000000000..52a1857e635d2689dfdbc77bd77fa407652e7205 GIT binary patch literal 10376 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 b6vlI2q30l*^>_a=KY;8P#m^NI2LAsAYp?<_ literal 0 HcmV?d00001 diff --git a/content/docs/use-cases/reauth/pkdd-reauth-logout-password.png b/content/docs/use-cases/reauth/pkdd-reauth-logout-password.png new file mode 100644 index 0000000000000000000000000000000000000000..6330f0defbe815806f268d1f7119a73370e0f355 GIT binary patch literal 9162 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 literal 0 HcmV?d00001 diff --git a/content/docs/use-cases/reauth/pkdd-reauth-passkey.png b/content/docs/use-cases/reauth/pkdd-reauth-passkey.png new file mode 100644 index 0000000000000000000000000000000000000000..be07c2c79cb41db90eef1caf9ad3305b8bb5baa8 GIT binary patch literal 12667 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 Date: Fri, 29 Dec 2023 19:10:13 +0000 Subject: [PATCH 014/203] move privacy policy to standalone page --- content/{en/privacy-policy/_index.md => privacy-policy.en.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename content/{en/privacy-policy/_index.md => privacy-policy.en.md} (100%) diff --git a/content/en/privacy-policy/_index.md b/content/privacy-policy.en.md similarity index 100% rename from content/en/privacy-policy/_index.md rename to content/privacy-policy.en.md From ab1cf6e04195a6d1a01382cad4a0de406e467766 Mon Sep 17 00:00:00 2001 From: Tim Cappalli Date: Fri, 29 Dec 2023 19:11:05 +0000 Subject: [PATCH 015/203] core config changes for v1 --- .eslintignore | 2 - .gitpod.yml | 12 + .markdownlint-cli2.jsonc | 5 +- .npmignore | 8 + .npmrc | 4 + .stylelintignore | 4 +- .stylelintrc.json | 13 - assets/scss/app.scss | 39 - babel.config.js | 17 - config/_default/{config.toml => hugo.toml} | 65 +- config/_default/languages.toml | 2 + config/_default/markup.toml | 14 +- config/_default/menus.toml | 14 + config/_default/menus/menus.en.toml | 16 +- config/_default/menus/menus.toml | 50 + config/_default/module.toml | 93 +- config/_default/params.toml | 220 +- config/babel.config.js | 18 + config/next/config.toml | 1 + config/postcss.config.js | 64 +- config/production/config.toml | 1 + hugo_stats.json | 435 ++ netlify.toml | 42 - package-lock.json | 8078 +++++++++++++++----- package.json | 96 +- theme.toml | 14 - 26 files changed, 7249 insertions(+), 2078 deletions(-) create mode 100644 .gitpod.yml create mode 100644 .npmignore create mode 100644 .npmrc delete mode 100644 assets/scss/app.scss delete mode 100644 babel.config.js rename config/_default/{config.toml => hugo.toml} (55%) create mode 100644 config/_default/menus.toml create mode 100644 config/_default/menus/menus.toml create mode 100644 config/babel.config.js create mode 100644 hugo_stats.json delete mode 100644 netlify.toml delete mode 100644 theme.toml diff --git a/.eslintignore b/.eslintignore index 57d00579..e258d0c9 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1,4 +1,2 @@ -assets/js/index.js -assets/js/katex.js assets/js/vendor node_modules \ No newline at end of file diff --git a/.gitpod.yml b/.gitpod.yml new file mode 100644 index 00000000..ff805199 --- /dev/null +++ b/.gitpod.yml @@ -0,0 +1,12 @@ +# Source: +# - https://github.com/gitpod-io/template-hugo +# - https://www.gitpod.io/docs/configure/workspaces/tasks#one-line-tasks + +tasks: + - name: Run development server + init: pnpm install + command: pnpm dev + +ports: + - port: 1313 + onOpen: open-preview diff --git a/.markdownlint-cli2.jsonc b/.markdownlint-cli2.jsonc index 3c793744..f3d4ce10 100644 --- a/.markdownlint-cli2.jsonc +++ b/.markdownlint-cli2.jsonc @@ -2,10 +2,13 @@ "config": { "default": true, "MD013": false, + "MD022": false, "MD024": false, + "MD025": false, "MD026": false, "MD033": false, - "MD034": false + "MD034": false, + "MD036": false }, "ignores": ["node_modules", "CHANGELOG.md", "README.md"] } \ No newline at end of file diff --git a/.npmignore b/.npmignore new file mode 100644 index 00000000..81e0bb4a --- /dev/null +++ b/.npmignore @@ -0,0 +1,8 @@ +.eslintcache +.stylelintcache +.netlify +.hugo_build.lock +yarn-error.log +node_modules +public +resources diff --git a/.npmrc b/.npmrc new file mode 100644 index 00000000..2f4f5b80 --- /dev/null +++ b/.npmrc @@ -0,0 +1,4 @@ +enable-pre-post-scripts = true +auto-install-peers = true +node-linker = hoisted +prefer-symlinked-executables = false \ No newline at end of file diff --git a/.stylelintignore b/.stylelintignore index e4ff7251..9d9a3cec 100644 --- a/.stylelintignore +++ b/.stylelintignore @@ -1,4 +1,2 @@ -assets/scss/components/_syntax.scss assets/scss/vendor -node_modules -assets/scss/common/bootstrap-icons.css \ No newline at end of file +node_modules \ No newline at end of file diff --git a/.stylelintrc.json b/.stylelintrc.json index 1d5dbc82..3ac1803f 100644 --- a/.stylelintrc.json +++ b/.stylelintrc.json @@ -1,24 +1,11 @@ { "extends": "stylelint-config-standard-scss", "rules": { - "indentation": 2, - "declaration-colon-newline-after": null, "no-empty-source": null, "string-quotes": "double", "scss/comment-no-empty": null, "max-line-length": null, "scss/at-extend-no-missing-placeholder": null, - "scss/dollar-variable-colon-space-after": null, - "scss/dollar-variable-empty-line-before": null, - "color-function-notation": null, - "alpha-value-notation": null, - "selector-id-pattern": null, - "selector-class-pattern": null, - "scss/no-global-function-names": null, - "number-max-precision": null, - "hue-degree-notation": null, - "value-no-vendor-prefix": null, - "property-no-vendor-prefix": null, "at-rule-no-unknown": [ true, { diff --git a/assets/scss/app.scss b/assets/scss/app.scss deleted file mode 100644 index 19526ebc..00000000 --- a/assets/scss/app.scss +++ /dev/null @@ -1,39 +0,0 @@ -/** Import Bootstrap functions */ -@import "bootstrap/scss/functions"; - -/** Import theme variables */ -@import "common/variables"; - -/** Import Bootstrap */ -@import "bootstrap/scss/bootstrap"; - -/** Import highlight.js */ -// @import "highlight.js/scss/github-dark-dimmed"; - -/** Import KaTeX */ -@import "katex/dist/katex"; - -/** Import theme styles */ -@import "common/fonts"; -@import "common/global"; -@import "common/dark"; -@import "components/alerts"; -@import "components/buttons"; -@import "components/code"; -@import "components/details"; -@import "components/syntax"; -@import "components/comments"; -@import "components/forms"; -@import "components/images"; -@import "components/mermaid"; -@import "components/search"; -@import "components/tables"; -@import "layouts/footer"; -@import "layouts/header"; -@import "layouts/pages"; -@import "layouts/posts"; -@import "layouts/sidebar"; - -/** Import custom styles */ -@import "common/custom"; -@import "common/bootstrap-icons" diff --git a/babel.config.js b/babel.config.js deleted file mode 100644 index ce9c9de0..00000000 --- a/babel.config.js +++ /dev/null @@ -1,17 +0,0 @@ -module.exports = { - presets: [ - [ - '@babel/preset-env', - { - targets: { - browsers: [ - // Best practice: https://github.com/babel/babel/issues/7789 - '>=1%', - 'not ie 11', - 'not op_mini all' - ] - } - } - ] - ] -}; \ No newline at end of file diff --git a/config/_default/config.toml b/config/_default/hugo.toml similarity index 55% rename from config/_default/config.toml rename to config/_default/hugo.toml index e223fcf0..c76f9c1f 100644 --- a/config/_default/config.toml +++ b/config/_default/hugo.toml @@ -1,43 +1,40 @@ +title = "passkeys.dev" baseurl = "https://passkeys.dev/" canonifyURLs = true disableAliases = true disableHugoGeneratorInject = true +# disableKinds = ["taxonomy", "term"] enableEmoji = true enableGitInfo = true enableRobotsTXT = true -paginate = 7 +paginate = 10 rssLimit = 10 +summarylength = 20 # 70 (default) # Multilingual defaultContentLanguage = "en" disableLanguages = [] -# defaultContentLanguageInSubdir = true +defaultContentLanguageInSubdir = false -# add redirects/headers -[outputs] -home = ["HTML", "RSS", "REDIRECTS", "HEADERS"] -section = ["HTML", "RSS", "SITEMAP"] +#copyRight = "Copyright (c) 2023 Hyas" -# remove .{ext} from text/netlify -[mediaTypes."text/netlify"] -suffixes = [""] -delimiter = "" +[build.buildStats] + enable = true -# add output format for netlify _redirects -[outputFormats.REDIRECTS] -mediaType = "text/netlify" -baseName = "_redirects" -isPlainText = true -notAlternative = true +[social] + twitter = "passkeysdev" -# add output format for netlify _headers -[outputFormats.HEADERS] -mediaType = "text/netlify" -baseName = "_headers" -isPlainText = true -notAlternative = true +[outputs] + home = ["HTML", "RSS", "searchIndex"] + section = ["HTML", "RSS", "SITEMAP"] -# add output format for section sitemap.xml +[outputFormats.searchIndex] + mediaType = "application/json" + baseName = "search-index" + isPlainText = true + notAlternative = true + +# Add output format for section sitemap.xml [outputFormats.SITEMAP] mediaType = "application/xml" baseName = "sitemap" @@ -46,24 +43,25 @@ isPlainText = true noUgly = true rel = "sitemap" -[caches] - [caches.getjson] - dir = ":cacheDir/:project" - maxAge = "10s" - [sitemap] changefreq = "weekly" filename = "sitemap.xml" priority = 0.5 +[caches] + [caches.getjson] + dir = ":cacheDir/:project" + maxAge = "30m" + [taxonomies] contributor = "contributors" category = "categories" tag = "tags" [permalinks] - blog = "/blog/:title/" -# docs = "/docs/1.0/:sections[1:]/:title/" + blog = "/blog/:slug/" +## docs = "/docs/:sections[1:]/:slug/" +# docs = "/docs/1.0/:sections[1:]/:slug/" [minify.tdewolff.html] keepWhitespace = false @@ -81,3 +79,10 @@ rel = "sitemap" [[related.indices]] name = "date" weight = 10 + +[imaging] + anchor = "Smart" + bgColor = "#ffffff" + hint = "photo" + quality = 75 + resampleFilter = "Box" diff --git a/config/_default/languages.toml b/config/_default/languages.toml index 9d0997c4..287478b1 100644 --- a/config/_default/languages.toml +++ b/config/_default/languages.toml @@ -5,3 +5,5 @@ [en.params] languageISO = "EN" languageTag = "en-US" + footer = 'Privacy Policy' + #alertText = 'Doks version 1.0 just shipped!' \ No newline at end of file diff --git a/config/_default/markup.toml b/config/_default/markup.toml index 2880e305..6eaba1e2 100644 --- a/config/_default/markup.toml +++ b/config/_default/markup.toml @@ -13,15 +13,19 @@ defaultMarkdownHandler = "goldmark" unsafe = true [highlight] - codeFences = false + anchorLineNos = false + codeFences = true guessSyntax = false - hl_Lines = "" + hl_Lines = '' + hl_inline = false + lineAnchors = '' lineNoStart = 1 lineNos = false - lineNumbersInTable = true + lineNumbersInTable = false noClasses = false - style = "dracula" - tabWidth = 4 + noHl = false + style = 'monokai' + tabWidth = 2 [tableOfContents] endLevel = 3 diff --git a/config/_default/menus.toml b/config/_default/menus.toml new file mode 100644 index 00000000..8a3d0a26 --- /dev/null +++ b/config/_default/menus.toml @@ -0,0 +1,14 @@ +[[main]] + name = "GitHub" + url = "https://github.com/passkeydeveloper/passkeys.dev" + weight = 10 + +[[social]] + name = "Mastodon" + url = "https://fosstodon.org/@passkeysdev" + weight = 20 + +[[social]] + name = "Twitter" + url = "https://x.com/@passkeysdev" + weight = 30 diff --git a/config/_default/menus/menus.en.toml b/config/_default/menus/menus.en.toml index c828c289..e2a76a81 100644 --- a/config/_default/menus/menus.en.toml +++ b/config/_default/menus/menus.en.toml @@ -21,30 +21,30 @@ weight = 90 [[social]] name = "Discussions" -pre = "" +pre = '' url = "https://passkeys.dev/discuss" weight = 15 [[social]] name = "GitHub" -pre = "" +pre = '' url = "https://github.com/passkeydeveloper/passkeys.dev" post = "v0.1.0" weight = 20 [[social]] name = "Mastodon" -pre = "" +pre = '' url = "https://fosstodon.org/@passkeysdev" weight = 30 [[social]] name = "X" -pre = "" +pre = '' url = "https://x.com/@passkeysdev" weight = 40 -[[footer]] -name = "Privacy Policy" -url = "/privacy-policy/" -weight = 10 +# [[footer]] +# name = "Privacy Policy" +# url = "/privacy-policy/" +# weight = 10 diff --git a/config/_default/menus/menus.toml b/config/_default/menus/menus.toml new file mode 100644 index 00000000..e2a76a81 --- /dev/null +++ b/config/_default/menus/menus.toml @@ -0,0 +1,50 @@ +[[main]] +name = "Docs" +url = "/docs/intro/what-are-passkeys/" +# url = "/docs/1.0/prologue/introduction/" +weight = 10 + +#[[main]] +#name = "FAQs" +#url = "/faq/" +#weight = 20 + +[[main]] +name = "Device Support" +url = "/device-support/" +weight = 30 + +[[main]] +name = "About" +url = "/about/" +weight = 90 + +[[social]] +name = "Discussions" +pre = '' +url = "https://passkeys.dev/discuss" +weight = 15 + +[[social]] +name = "GitHub" +pre = '' +url = "https://github.com/passkeydeveloper/passkeys.dev" +post = "v0.1.0" +weight = 20 + +[[social]] +name = "Mastodon" +pre = '' +url = "https://fosstodon.org/@passkeysdev" +weight = 30 + +[[social]] +name = "X" +pre = '' +url = "https://x.com/@passkeysdev" +weight = 40 + +# [[footer]] +# name = "Privacy Policy" +# url = "/privacy-policy/" +# weight = 10 diff --git a/config/_default/module.toml b/config/_default/module.toml index ea4b46dd..53615c2a 100644 --- a/config/_default/module.toml +++ b/config/_default/module.toml @@ -1,31 +1,27 @@ -[hugoVersion] - extended = true - min = "0.80.0" - max = "" - +# mounts +## archetypes [[mounts]] - source = "node_modules/@hyas/doks/archetypes" + source = "node_modules/@hyas/doks-core/archetypes" target = "archetypes" [[mounts]] - source = "node_modules/@hyas/doks/assets" - target = "assets" - -# [[mounts]] -# source = "node_modules/@hyas/doks/content" -# target = "content" + source = "archetypes" + target = "archetypes" +## assets [[mounts]] - source = "node_modules/@hyas/doks/data" - target = "data" + source = "node_modules/@hyas/core/assets" + target = "assets" [[mounts]] - source = "node_modules/@hyas/doks/layouts" - target = "layouts" + source = "node_modules/@hyas/images/assets" + target = "assets" + excludeFiles = "/scss/**.scss" [[mounts]] - source = "node_modules/@hyas/doks/static" - target = "static" + source = "node_modules/@hyas/doks-core/assets" + target = "assets" + excludeFiles = ["scss/common/_variables-custom.scss", "scss/common/_custom.scss"] [[mounts]] source = "node_modules/flexsearch" @@ -39,30 +35,71 @@ source = "node_modules/mermaid" target = "assets/js/vendor/mermaid" +[[mounts]] + source = "node_modules/@tabler/icons/icons" + target = "assets/svgs/tabler-icons" + [[mounts]] source = "assets" target = "assets" +## content [[mounts]] - source = "static" - target = "static" - -# [[mounts]] -# source = "content" -# target = "content" + source = "content" + target = "content" +## data [[mounts]] - source = "layouts" - target = "layouts" + source = "node_modules/@hyas/doks-core/data" + target = "data" [[mounts]] - source = "archetypes" - target = "archetypes" + source = "config/_default/hyas" + target = "data" [[mounts]] source = "data" target = "data" +## i18n +[[mounts]] + source = "node_modules/@hyas/doks-core/i18n" + target = "i18n" + +[[mounts]] + source = "i18n" + target = "i18n" + +## layouts +[[mounts]] + source = "node_modules/@hyas/core/layouts" + target = "layouts" + +[[mounts]] + source = "node_modules/@hyas/seo/layouts" + target = "layouts" + [[mounts]] source = "node_modules/@hyas/images/layouts" target = "layouts" + +[[mounts]] + source = "node_modules/@hyas/doks-core/layouts" + target = "layouts" + +[[mounts]] + source = "node_modules/@hyas/inline-svg/layouts" + target = "layouts" + +[[mounts]] + source = "layouts" + target = "layouts" + +## static +[[mounts]] + source = "node_modules/@hyas/doks-core/static" + target = "static" + +[[mounts]] + source = "static" + target = "static" diff --git a/config/_default/params.toml b/config/_default/params.toml index a2e9bce8..40b5520b 100644 --- a/config/_default/params.toml +++ b/config/_default/params.toml @@ -1,93 +1,139 @@ -# Meta Data for SEO - -## Homepage +# Hugo title = "passkeys.dev" -titleSeparator = "-" -titleAddition = "Home" description = "A collection of resources and insights to help you deploy passkeys, including practical user experiences, device ecosystem support, frequently asked questions, and more." - -## Documentation -# docsVersion = "0.3" - -## Open Graph images = ["pkdd-social-card.jpg"] -ogLocale = "en_US" -domainTLD = "passkeys.dev" -titleHome = "passkeys.dev" -## Twitter Cards -twitterSite = "@passkeysdev" -#twitterCreator = "@henkverlinde" - -## Sitelinks Search Box -siteLinksSearchBox = false - -## Chrome Browser +## custom themeColor = "#005a9c" -# Images - Temporarily left in place for backward compatibility -quality = 85 -bgColor = "#fff" -landscapePhotoWidths = [900, 800, 700, 600, 500] -portraitPhotoWidths = [800, 700, 600, 500] -lqipWidth = "20x" -smallLimit = "300" - -# Images -imageResponsive = true -imageConvertTo = "webp" -imageImageSizes = ["480","720","1080","1280","1600","2048"] -singleSize = false -imageAddClass = "img-fluid lazyload blur-up" - -### Image template -defaultImage = "default-image.png" # put in `./assets/images/` -fillImage = "1270x740 Center" # normalize image size - -# Footer -footer = "about passkeys.dev | Content available under a Creative Commons license." - -# Feed -copyRight = "" - -# Alert -alert = false -alertDismissable = true -alertText = "" - -# Edit Page -# repoHost [Github | Gitea | GitLab | Bitbucket | BitbucketServer ] is used for building the edit link based on git hoster -repoHost = "GitHub" -#repoHost = "Gitea" -docsRepo = "https://github.com/passkeydeveloper/passkeys.dev" -docsRepoBranch = "main" -docsRepoSubPath = "" -editPage = false -lastMod = false - -[sections] - sectionNav = ["docs", "guides"] - -[options] - lazySizes = true - clipBoard = true - instantPage = true - flexSearch = true - searchSectionsShow = [] - searchSectionsIndex = [] - darkMode = true - bootStrapJs = true - breadCrumb = false - highLight = true - kaTex = false - multilingualMode = false - docsVersioning = false - fullWidth = false - navbarSticky = true - toTopButton = false - scrollSpy = false # experimental; needs Bootstrap >= 5.2.0-beta1 - -[menu] - [menu.section] - auto = true - collapsibleSidebar = true +# Doks (@hyas/doks-core) +[doks] + # Color mode + colorMode = "auto" # auto (default), light or dark + colorModeToggler = true # true (default) or false (this setting is only relevant when colorMode = auto) + + # Navbar + navbarSticky = true # true (default) or false + containerBreakpoint = "lg" # "", "sm", "md", "lg" (default), "xl", "xxl", or "fluid" + + ## Button + navBarButton = false # false (default) or true + navBarButtonUrl = "/docs/prologue/introduction/" + navBarButtonText = "Get started" + + # FlexSearch + flexSearch = true # true (default) or false + searchExclKinds = [] # list of page kinds to exclude from search indexing (e.g. ["home", "taxonomy", "term"] ) + searchExclTypes = [] # list of content types to exclude from search indexing (e.g. ["blog", "docs", "legal", "contributors", "categories"]) + showSearch = [] # [] (all pages, default) or homepage (optionally) and list of sections (e.g. ["homepage", "blog", "guides"]) + indexSummary = false # true or false (default); whether to index only the `.Summary` instead of the full `.Content`; limits the respective JSON field size and thus increases loading time + + ## Search results + showDate = false # false (default) or true + showSummary = true # true (default) or false + searchLimit = 99 # 0 (no limit, default) or natural number + + # Global alert + alert = false # false (default) or true + alertDismissable = true # true (default) or false + + # Bootstrap + bootstrapJavascript = false # false (default) or true + + # Nav + sectionNav = ["docs", "guides"] # ["docs"] (default) or list of sections (e.g. ["docs", "guides"]) + toTopButton = false # false (default) or true + breadcrumbTrail = false # false (default) or true + headlineHash = true # true (default) or false + scrollSpy = true # true (default) or false + + # Multilingual + multilingualMode = false # false (default) or true + showMissingLanguages = false # whether or not to show untranslated languages in the language menu; true (default) or false + + # Versioning + docsVersioning = false # false (default) or true + docsVersion = "1.0" + + # UX + headerBar = true # true (default) or false + backgroundDots = true # true (default) or false + + # Homepage + sectionFooter = false # false (default) or true + + # Blog + relatedPosts = false # false (default) or true + imageList = true # true (default) or false + imageSingle = true # true (default) or false + + # KaTex + katex = false + + # Repository + editPage = false # false (default) or true + lastMod = false # false (default) or true + repoHost = "GitHub" # GitHub (default), Gitea, GitLab, Bitbucket, or BitbucketServer + docsRepo = "https://github.com/passkeydeveloper/passkeys.dev" + docsRepoBranch = "main" # main (default), master, or + docsRepoSubPath = "" # "" (none, default) or + + # SCSS colors + # backGround = "yellowgreen" + ## Dark theme + # textDark = "#dee2e6" # "#dee2e6" (default), "#dee2e6" (orignal), or custom color + # accentDark = "#5d2f86" # "#5d2f86" (default), "#5d2f86" (original), or custom color + ## Light theme + # textLight = "#1d2d35" # "#1d2d35" (default), "#1d2d35" (orignal), or custom color + # accentLight = "#8ed6fb" # "#8ed6fb" (default), "#8ed6fb" (orignal), or custom color + + [doks.menu] + [doks.menu.section] + auto = true # true (default) or false + collapsibleSidebar = true # true (default) or false + +# Debug +[render_hooks.image] + errorLevel = 'ignore' # ignore (default), warning, or error (fails the build) + +[render_hooks.link] + errorLevel = 'ignore' # ignore (default), warning, or error (fails the build) + highlightBroken = false # true or false (default) + +# Images (@hyas/images) +[hyas_images] + [hyas_images.landscape] + normalize = "1360x765" # "1600x900" (default) + lqip = "16x9" # "16x9" (default) + widths = [480, 640, 800, 1024] + [hyas_images.portrait] + normalize = "765x1360" # "900x1600" (default) + lqip = "9x16" # "9x16" (default) + widths = [480, 640, 800, 1024] + +# Inline SVG (@hyas/inline-svg) +[inline_svg] + iconSetDir = "tabler-icons" # "tabler-icons" (default) + +# SEO (@hyas/seo) +[seo] + [seo.title] + separator = " | " + suffix = "" + [seo.favicons] + sizes = [] + icon = "favicon.png" # favicon.png (default) + svgIcon = "favicon.svg" # favicon.svg (default) + maskIcon = "mask-icon.svg" # mask-icon.svg (default) + maskIconColor = "white" # white (default) + [seo.schemas] + type = "Organization" # Organization (default) or Person + logo = "favicon-512x512.png" # Logo of Organization — favicon-512x512.png (default) + name = "Hyas" # Name of Organization or Person + sameAs = [] # E.g. ["https://github.com/gethyas/hyas", "https://fosstodon.org/@hyas"] + images = ["cover.png"] # ["cover.png"] (default) + article = [] # Article sections + newsArticle = [] # NewsArticle sections + blogPosting = ["blog"] # BlogPosting sections + product = [] # Product sections + diff --git a/config/babel.config.js b/config/babel.config.js new file mode 100644 index 00000000..9bfc128c --- /dev/null +++ b/config/babel.config.js @@ -0,0 +1,18 @@ +module.exports = { + presets: [ + [ + '@babel/preset-env', + { + targets: { + browsers: [ + // Best practice: https://github.com/babel/babel/issues/7789 + '>=1%', + 'not ie 11', + 'not op_mini all', + ], + }, + }, + ], + ], + }; + \ No newline at end of file diff --git a/config/next/config.toml b/config/next/config.toml index 9c5e90da..a130ff0f 100644 --- a/config/next/config.toml +++ b/config/next/config.toml @@ -1 +1,2 @@ +# Overrides for next environment canonifyURLs = false diff --git a/config/postcss.config.js b/config/postcss.config.js index e8c3b39d..1cc2d54e 100644 --- a/config/postcss.config.js +++ b/config/postcss.config.js @@ -6,33 +6,51 @@ module.exports = { plugins: [ autoprefixer(), purgecss({ - content: [ - './node_modules/@hyas/doks/layouts/**/*.html', - './node_modules/@hyas/doks/content/**/*.md', - './layouts/**/*.html', - './content/**/*.md', + content: [ './hugo_stats.json' ], + extractors: [ + { + extractor: (content) => { + const els = JSON.parse(content).htmlElements; + return els.tags.concat(els.classes, els.ids); + }, + extensions: ['json'], + }, + ], + dynamicAttributes: [ + 'aria-expanded', + 'data-bs-popper', + 'data-bs-target', + 'data-bs-theme', + 'data-dark-mode', + 'data-global-alert', + 'data-pane', // tabs.js + 'data-popper-placement', + 'data-sizes', + 'data-toggle-tab', // tabs.js + 'id', + 'size', + 'type', ], safelist: [ + 'active', + 'btn-clipboard', // clipboards.js + 'clipboard', // clipboards.js + 'disabled', + 'hidden', + 'modal-backdrop', // search-modal.js + 'selected', // search-modal.js + 'show', + 'img-fluid', + 'blur-up', 'lazyloaded', - 'table', - 'thead', - 'tbody', - 'tr', - 'th', - 'td', - 'h5', - 'alert-link', - 'container-xxl', - 'container-fluid', + 'container-fw ', ...whitelister([ - './node_modules/@hyas/doks/assets/scss/common/_variables.scss', - './node_modules/@hyas/doks/assets/scss/components/_alerts.scss', - './node_modules/@hyas/doks/assets/scss/components/_buttons.scss', - './node_modules/@hyas/doks/assets/scss/components/_code.scss', - './node_modules/@hyas/doks/assets/scss/components/_syntax.scss', - './node_modules/@hyas/doks/assets/scss/components/_search.scss', - './node_modules/@hyas/doks/assets/scss/common/_dark.scss', - './node_modules/katex/dist/katex.css', + './assets/scss/**/*.css', + './assets/scss/**/*.scss', + // './node_modules/katex/dist/katex.css', + './node_modules/@hyas/doks-core/assets/scss/components/_code.scss', + './node_modules/@hyas/doks-core/assets/scss/components/_expressive-code.scss', + './node_modules/@hyas/doks-core/assets/scss/common/_syntax.scss', ]), ], }), diff --git a/config/production/config.toml b/config/production/config.toml index e0dd9f24..67b14e98 100644 --- a/config/production/config.toml +++ b/config/production/config.toml @@ -1,2 +1,3 @@ +# Overrides for production environment canonifyURLs = true baseurl = "/" diff --git a/hugo_stats.json b/hugo_stats.json new file mode 100644 index 00000000..92b7844e --- /dev/null +++ b/hugo_stats.json @@ -0,0 +1,435 @@ +{ + "htmlElements": { + "tags": [ + "a", + "article", + "aside", + "blockquote", + "body", + "br", + "button", + "circle", + "code", + "details", + "div", + "em", + "figcaption", + "figure", + "footer", + "form", + "g", + "h1", + "h2", + "h3", + "h5", + "head", + "header", + "hr", + "html", + "i", + "img", + "input", + "kbd", + "label", + "li", + "line", + "link", + "main", + "meta", + "nav", + "noscript", + "ol", + "p", + "path", + "picture", + "pre", + "script", + "section", + "small", + "source", + "span", + "strong", + "style", + "summary", + "sup", + "svg", + "table", + "tbody", + "td", + "template", + "th", + "thead", + "time", + "title", + "tr", + "ul", + "wbr" + ], + "classes": [ + "DocSearch-Label", + "\\\"bi", + "about", + "active", + "align-items-center", + "align-middle", + "anchor", + "badge", + "bg-light", + "bi", + "bi-box-arrow-up-right", + "bi-calendar-plus", + "bi-check-circle", + "bi-check-circle-fill", + "bi-circle-half", + "bi-github", + "bi-house-heart", + "bi-mastodon", + "bi-pencil", + "bi-twitter-x", + "bi-usb-drive", + "bi-x-circle-fill", + "blur-up", + "border", + "brand-github-filled", + "btn", + "btn-close", + "btn-lg", + "btn-light", + "btn-link", + "btn-primary", + "btn-toggle", + "btn-toggle-nav", + "callout", + "callout-body", + "callout-content", + "callout-icon", + "callout-note", + "callout-title", + "card", + "card-body", + "card-list", + "categories", + "chroma", + "coffee", + "col", + "col-lg-10", + "col-lg-12", + "col-lg-16", + "col-lg-5", + "col-lg-8", + "col-lg-9", + "col-md-12", + "col-xl-3", + "col-xl-4", + "col-xl-8", + "col-xl-9", + "collapse", + "collapsed", + "collapsible-sidebar", + "color-black", + "container", + "container-fluid", + "container-lg", + "content", + "contributors", + "created-date", + "d-flex", + "d-lg-block", + "d-lg-none", + "d-md-block", + "d-md-none", + "d-none", + "d-xl-block", + "d-xl-none", + "device-support", + "docs", + "docs-content", + "docs-link", + "docs-links", + "docs-sidebar", + "docs-sidebar-offset", + "docs-sidebar-top", + "docs-toc", + "docs-toc-offset", + "doks-sidebar", + "error404", + "expressive-code", + "flex-column", + "flex-grow-1", + "flex-lg-row", + "flex-md-row", + "flex-row", + "flex-sm-row", + "flex-xl-nowrap", + "footer", + "form-control", + "form-control-lg", + "frame", + "fs-4", + "fs-5", + "fs-6", + "fst-italic", + "fw-bold", + "fw-normal", + "fw-semibold", + "gx-5", + "h-auto", + "h4", + "h5", + "header", + "header-bar", + "highlight", + "home", + "icon", + "icon-tabler", + "icon-tabler-arrow-left", + "icon-tabler-arrow-right", + "icon-tabler-dots-vertical", + "icon-tabler-menu", + "icon-tabler-moon", + "icon-tabler-search", + "icon-tabler-sun", + "icon-tabler-x", + "img-fluid", + "info-circle", + "justify-content-between", + "justify-content-center", + "justify-content-end", + "lazyload", + "lead", + "list", + "list-inline", + "list-inline-item", + "list-unstyled", + "list-view", + "m-2", + "mb-0", + "mb-1", + "mb-2", + "mb-3", + "mb-4", + "mb-5", + "me-2", + "me-auto", + "me-lg-1", + "me-lg-3", + "message", + "modal", + "modal-body", + "modal-content", + "modal-dialog", + "modal-dialog-scrollable", + "modal-footer", + "modal-fullscreen-md-down", + "modal-header", + "modal-title", + "ms-2", + "ms-3", + "ms-lg-2", + "mt-0", + "mt-3", + "mt-4", + "mt-5", + "mt-n3", + "mx-2", + "mx-auto", + "mx-xl-auto", + "my-3", + "nav", + "nav-item", + "nav-link", + "navbar", + "navbar-brand", + "navbar-expand-lg", + "navbar-nav", + "not-content", + "offcanvas", + "offcanvas-body", + "offcanvas-end", + "offcanvas-header", + "offcanvas-start", + "offcanvas-title", + "order-3", + "order-lg-4", + "p-0", + "p-2", + "p-3", + "page-footer-meta", + "page-links", + "page-nav", + "pb-1", + "pb-2", + "pb-3", + "pe-1", + "pe-4", + "privacy-policy", + "ps-3", + "pt-4", + "px-0", + "px-4", + "query-no-results", + "rounded", + "rounded-pill", + "row", + "search-form", + "search-input", + "search-loading", + "search-no-recent", + "search-no-results", + "search-result", + "search-results", + "search-text", + "section", + "section-sm", + "show", + "single", + "small", + "social-link", + "status", + "sticky-top", + "stretched-link", + "submitted", + "svg-icon-bw", + "svg-inline", + "table", + "table-responsive", + "table-striped", + "tags", + "taxonomy", + "text-bg-secondary", + "text-bg-success", + "text-bg-warning", + "text-body-secondary", + "text-center", + "text-danger", + "text-decoration-none", + "text-end", + "text-lg-end", + "text-lg-start", + "text-muted", + "text-reset", + "text-success", + "title", + "title-submitted", + "toc-mobile", + "visually-hidden", + "w-100", + "wrap", + "youtube-preview" + ], + "ids": [ + "2-factor-authentication-2fa", + "2fa-user", + "Layer_1", + "TableOfContents", + "a-note-about-user-verification", + "about", + "account-bootstrapping", + "advanced", + "attestation", + "authenticating-the-user", + "authentication-factor", + "autofill-ui", + "basic", + "browser-behavior", + "buttonColorMode", + "cda-authenticator", + "cda-client", + "client-to-authenticator-protocol-ctap", + "community-resources", + "conditional-mediation", + "conditional-ui", + "content", + "content-and-tools", + "contribute", + "contributors", + "copyright-and-attributions", + "cross-device-authentication", + "cross-device-authentication-cda", + "date", + "device-bound-passkey", + "device-support-table", + "discoverable-credential", + "docs", + "doks-docs-nav", + "engage-and-contribute", + "expired-sessions-and-logout", + "faq", + "fido2webauthn-tools", + "first-party-passkey-provider", + "general-passkey-demo-sites", + "go", + "h-rh-i-0", + "h-rh-i-1", + "h-rh-i-2", + "h-rh-i-3", + "h-rh-i-4", + "icon-passkey", + "icon-passkey-body", + "icon-passkey-head", + "icon-passkey-key", + "icon-protected", + "java", + "java-1", + "legacy-credentials", + "logging-in", + "login-challenge", + "main", + "maintainers", + "matrix", + "meta", + "net", + "offcanvasNavMain", + "offcanvasNavMainLabel", + "offcanvasNavSection", + "offcanvasNavSectionLabel", + "opting-the-user-into-passkeys", + "other-attributions", + "other-fido2webauthn-libraries", + "overview", + "passkey", + "passkey-provider", + "persistent-linking", + "platform-authenticator", + "platform-notes", + "python", + "query", + "reauthentication", + "relying-party-rp", + "resources", + "roaming-authenticator", + "ruby", + "rust", + "sample-code", + "search-form", + "searchModal", + "searchModalLabel", + "searchResults", + "searchToggleDesktop", + "searchToggleMobile", + "section-1cad35d4b3b9f624f82dbf237daaf188", + "section-1cf7e301510c711b73d2b182b9dcf084", + "section-561181a77d6e84bf33d839c2fe81829e", + "section-63d5049791d9d79d86e9a108b0a999ca", + "section-eecdf87546c0c5551016879da5973b27", + "sensitive-actions", + "signing-in", + "single-device-passkey", + "socialMenu", + "synced-passkey", + "third-party-passkey-provider", + "title", + "toc", + "typescript", + "updated-for-passkeys", + "user-presence-up", + "user-verification-uv", + "user-verifying-roaming-authenticator", + "vendor-demo-sites", + "videos", + "w3c-web-authentication-webauthn", + "website-visitors", + "whats-next" + ] + } +} diff --git a/netlify.toml b/netlify.toml deleted file mode 100644 index 42992993..00000000 --- a/netlify.toml +++ /dev/null @@ -1,42 +0,0 @@ -[build] - publish = "public" - functions = "functions" - -[build.environment] - NODE_VERSION = "16.16.0" - NPM_VERSION = "8.11.0" - -[context.production] - command = "npm run build" - -[context.deploy-preview] - command = "npm run build -- -b $DEPLOY_PRIME_URL" - -[context.branch-deploy] - command = "npm run build -- -b $DEPLOY_PRIME_URL" - -[context.next] - command = "npm run build" - -[context.next.environment] - HUGO_ENV = "next" - -[[plugins]] - package = "netlify-plugin-submit-sitemap" - - [plugins.inputs] - baseUrl = "https://doks-child-theme.netlify.app/" - sitemapPath = "/sitemap.xml" - ignorePeriod = 0 - providers = [ - "google", - "yandex" - ] - -[dev] - framework = "#custom" - command = "npm run start" - targetPort = 1313 - port = 8888 - publish = "public" - autoLaunch = false diff --git a/package-lock.json b/package-lock.json index 296145ab..ad5e42a9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,52 +1,26 @@ { - "name": "doks-child-theme", - "version": "0.5.0", - "lockfileVersion": 3, + "name": "passkeys.dev", + "version": "0.0.0", + "lockfileVersion": 2, "requires": true, "packages": { "": { - "name": "doks-child-theme", - "version": "0.5.0", + "name": "passkeys.dev", + "version": "0.0.0", "hasInstallScript": true, "license": "MIT", - "devDependencies": { - "@babel/cli": "^7.18", - "@babel/core": "^7.23", - "@babel/preset-env": "^7.23", - "@fullhuman/postcss-purgecss": "^5.0", - "@hyas/doks": "^0.5", - "@hyas/images": "^0.2.1", - "auto-changelog": "^2.4.0", - "autoprefixer": "^10.4", - "bootstrap": "^5.2", - "clipboard": "^2.0", - "eslint": "^8.38", - "exec-bin": "^1.0.0", - "flexsearch": "^0.7.21", - "highlight.js": "^11.7", - "hugo-installer": "^3.1", - "husky": "^8.0.3", - "instant.page": "^5.1", - "katex": "^0.16", - "lazysizes": "^5.3", - "markdownlint-cli2": "^0.9.0", - "netlify-plugin-submit-sitemap": "^0.4.0", - "postcss": "^8.4", - "postcss-cli": "^10.0", - "purgecss-whitelister": "^2.4", - "shx": "^0.3", - "stylelint": "^14.9", - "stylelint-config-standard-scss": "^5.0" + "dependencies": { + "@hyas/doks-core": "^1.2.0" }, "engines": { - "node": ">=16.16.0" + "node": ">=16.12.0", + "pnpm": ">=8.6.2" } }, "node_modules/@aashutoshrathi/word-wrap": { "version": "1.2.6", "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -55,7 +29,6 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", - "dev": true, "dependencies": { "@jridgewell/gen-mapping": "^0.3.0", "@jridgewell/trace-mapping": "^0.3.9" @@ -68,7 +41,6 @@ "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.23.4.tgz", "integrity": "sha512-j3luA9xGKCXVyCa5R7lJvOMM+Kc2JEnAEIgz2ggtjQ/j5YUVgfsg/WsG95bbsgq7YLHuiCOzMnoSasuY16qiCw==", - "dev": true, "dependencies": { "@jridgewell/trace-mapping": "^0.3.17", "commander": "^4.0.1", @@ -97,7 +69,6 @@ "version": "7.23.5", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", - "dev": true, "dependencies": { "@babel/highlight": "^7.23.4", "chalk": "^2.4.2" @@ -110,27 +81,25 @@ "version": "7.23.5", "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==", - "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.5.tgz", - "integrity": "sha512-Cwc2XjUrG4ilcfOw4wBAK+enbdgwAcAJCfGUItPBKR7Mjw4aEfAFYrLxeRp4jWgtNIKn3n2AlBOfwwafl+42/g==", - "dev": true, + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.6.tgz", + "integrity": "sha512-FxpRyGjrMJXh7X3wGLGhNDCRiwpWEF74sKjTLDJSG5Kyvow3QZaG0Adbqzi9ZrVjTWpsX+2cxWXD71NMg93kdw==", "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.5", - "@babel/helper-compilation-targets": "^7.22.15", + "@babel/generator": "^7.23.6", + "@babel/helper-compilation-targets": "^7.23.6", "@babel/helper-module-transforms": "^7.23.3", - "@babel/helpers": "^7.23.5", - "@babel/parser": "^7.23.5", + "@babel/helpers": "^7.23.6", + "@babel/parser": "^7.23.6", "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.5", - "@babel/types": "^7.23.5", + "@babel/traverse": "^7.23.6", + "@babel/types": "^7.23.6", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -146,12 +115,11 @@ } }, "node_modules/@babel/generator": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.5.tgz", - "integrity": "sha512-BPssCHrBD+0YrxviOa3QzpqwhNIXKEtOa2jQrm4FlmkC2apYgRnQcmPWiGZDlGxiNtltnUFolMe8497Esry+jA==", - "dev": true, + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", + "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", "dependencies": { - "@babel/types": "^7.23.5", + "@babel/types": "^7.23.6", "@jridgewell/gen-mapping": "^0.3.2", "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" @@ -164,7 +132,6 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", - "dev": true, "dependencies": { "@babel/types": "^7.22.5" }, @@ -176,7 +143,6 @@ "version": "7.22.15", "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz", "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==", - "dev": true, "dependencies": { "@babel/types": "^7.22.15" }, @@ -185,14 +151,13 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", - "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", - "dev": true, + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", + "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", "dependencies": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-validator-option": "^7.22.15", - "browserslist": "^4.21.9", + "@babel/compat-data": "^7.23.5", + "@babel/helper-validator-option": "^7.23.5", + "browserslist": "^4.22.2", "lru-cache": "^5.1.1", "semver": "^6.3.1" }, @@ -201,17 +166,16 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz", - "integrity": "sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==", - "dev": true, + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.6.tgz", + "integrity": "sha512-cBXU1vZni/CpGF29iTu4YRbOZt3Wat6zCoMDxRF1MayiEc4URxOj31tT65HUM0CRpMowA3HCJaAOVOUnMf96cw==", "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-member-expression-to-functions": "^7.22.15", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-member-expression-to-functions": "^7.23.0", "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.9", + "@babel/helper-replace-supers": "^7.22.20", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", "semver": "^6.3.1" @@ -227,7 +191,6 @@ "version": "7.22.15", "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz", "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==", - "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", "regexpu-core": "^5.3.1", @@ -241,10 +204,9 @@ } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.3.tgz", - "integrity": "sha512-WBrLmuPP47n7PNwsZ57pqam6G/RGo1vw/87b0Blc53tZNGZ4x7YvZ6HgQe2vo1W/FR20OgjeZuGXzudPiXHFug==", - "dev": true, + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.4.tgz", + "integrity": "sha512-QcJMILQCu2jm5TFPGA3lCpJJTeEP+mqeXooG/NZbg/h5FTFi6V0+99ahlRsW8/kRLyb24LZVCCiclDedhLKcBA==", "dependencies": { "@babel/helper-compilation-targets": "^7.22.6", "@babel/helper-plugin-utils": "^7.22.5", @@ -260,7 +222,6 @@ "version": "7.22.20", "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", - "dev": true, "engines": { "node": ">=6.9.0" } @@ -269,7 +230,6 @@ "version": "7.23.0", "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", - "dev": true, "dependencies": { "@babel/template": "^7.22.15", "@babel/types": "^7.23.0" @@ -282,7 +242,6 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", - "dev": true, "dependencies": { "@babel/types": "^7.22.5" }, @@ -294,7 +253,6 @@ "version": "7.23.0", "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz", "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==", - "dev": true, "dependencies": { "@babel/types": "^7.23.0" }, @@ -306,7 +264,6 @@ "version": "7.22.15", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", - "dev": true, "dependencies": { "@babel/types": "^7.22.15" }, @@ -318,7 +275,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", - "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-module-imports": "^7.22.15", @@ -337,7 +293,6 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", - "dev": true, "dependencies": { "@babel/types": "^7.22.5" }, @@ -349,7 +304,6 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", - "dev": true, "engines": { "node": ">=6.9.0" } @@ -358,7 +312,6 @@ "version": "7.22.20", "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz", "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==", - "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", "@babel/helper-environment-visitor": "^7.22.20", @@ -375,7 +328,6 @@ "version": "7.22.20", "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz", "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==", - "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-member-expression-to-functions": "^7.22.15", @@ -392,7 +344,6 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", - "dev": true, "dependencies": { "@babel/types": "^7.22.5" }, @@ -404,7 +355,6 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", - "dev": true, "dependencies": { "@babel/types": "^7.22.5" }, @@ -416,7 +366,6 @@ "version": "7.22.6", "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", - "dev": true, "dependencies": { "@babel/types": "^7.22.5" }, @@ -428,7 +377,6 @@ "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", - "dev": true, "engines": { "node": ">=6.9.0" } @@ -437,7 +385,6 @@ "version": "7.22.20", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", - "dev": true, "engines": { "node": ">=6.9.0" } @@ -446,7 +393,6 @@ "version": "7.23.5", "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", - "dev": true, "engines": { "node": ">=6.9.0" } @@ -455,7 +401,6 @@ "version": "7.22.20", "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz", "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==", - "dev": true, "dependencies": { "@babel/helper-function-name": "^7.22.5", "@babel/template": "^7.22.15", @@ -466,14 +411,13 @@ } }, "node_modules/@babel/helpers": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.5.tgz", - "integrity": "sha512-oO7us8FzTEsG3U6ag9MfdF1iA/7Z6dz+MtFhifZk8C8o453rGJFFWUP1t+ULM9TUIAzC9uxXEiXjOiVMyd7QPg==", - "dev": true, + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.6.tgz", + "integrity": "sha512-wCfsbN4nBidDRhpDhvcKlzHWCTlgJYUUdSJfzXb2NuBssDSIjc3xcb+znA7l+zYsFljAcGM0aFkN40cR3lXiGA==", "dependencies": { "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.5", - "@babel/types": "^7.23.5" + "@babel/traverse": "^7.23.6", + "@babel/types": "^7.23.6" }, "engines": { "node": ">=6.9.0" @@ -483,7 +427,6 @@ "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", - "dev": true, "dependencies": { "@babel/helper-validator-identifier": "^7.22.20", "chalk": "^2.4.2", @@ -494,10 +437,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.5.tgz", - "integrity": "sha512-hOOqoiNXrmGdFbhgCzu6GiURxUgM27Xwd/aPuu8RfHEZPBzL1Z54okAHAQjXfcQNwvrlkAmAp4SlRTZ45vlthQ==", - "dev": true, + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.6.tgz", + "integrity": "sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==", "bin": { "parser": "bin/babel-parser.js" }, @@ -509,7 +451,6 @@ "version": "7.23.3", "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.23.3.tgz", "integrity": "sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -524,7 +465,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.23.3.tgz", "integrity": "sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", @@ -541,7 +481,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.3.tgz", "integrity": "sha512-XaJak1qcityzrX0/IU5nKHb34VaibwP3saKqG6a/tppelgllOH13LUann4ZCIBcVOeE6H18K4Vx9QKkVww3z/w==", - "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-plugin-utils": "^7.22.5" @@ -557,7 +496,6 @@ "version": "7.21.0-placeholder-for-preset-env.2", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", - "dev": true, "engines": { "node": ">=6.9.0" }, @@ -569,7 +507,6 @@ "version": "7.8.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -581,7 +518,6 @@ "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.12.13" }, @@ -593,7 +529,6 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -608,7 +543,6 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -620,7 +554,6 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.3" }, @@ -632,7 +565,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.23.3.tgz", "integrity": "sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -647,7 +579,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.23.3.tgz", "integrity": "sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -662,7 +593,6 @@ "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -674,7 +604,6 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -686,7 +615,6 @@ "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -698,7 +626,6 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -710,7 +637,6 @@ "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -722,7 +648,6 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -734,7 +659,6 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -746,7 +670,6 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -758,7 +681,6 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -773,7 +695,6 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -788,7 +709,6 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", - "dev": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" @@ -804,7 +724,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.23.3.tgz", "integrity": "sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -819,7 +738,6 @@ "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.4.tgz", "integrity": "sha512-efdkfPhHYTtn0G6n2ddrESE91fgXxjlqLsnUtPWnJs4a4mZIbUaK7ffqKIIUKXSHwcDvaCVX6GXkaJJFqtX7jw==", - "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-plugin-utils": "^7.22.5", @@ -837,7 +755,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.23.3.tgz", "integrity": "sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==", - "dev": true, "dependencies": { "@babel/helper-module-imports": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5", @@ -854,7 +771,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.23.3.tgz", "integrity": "sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -869,7 +785,6 @@ "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.4.tgz", "integrity": "sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -884,7 +799,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.23.3.tgz", "integrity": "sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==", - "dev": true, "dependencies": { "@babel/helper-create-class-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" @@ -900,7 +814,6 @@ "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.23.4.tgz", "integrity": "sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ==", - "dev": true, "dependencies": { "@babel/helper-create-class-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5", @@ -917,7 +830,6 @@ "version": "7.23.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.5.tgz", "integrity": "sha512-jvOTR4nicqYC9yzOHIhXG5emiFEOpappSJAl73SDSEDcybD+Puuze8Tnpb9p9qEyYup24tq891gkaygIFvWDqg==", - "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", "@babel/helper-compilation-targets": "^7.22.15", @@ -940,7 +852,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.23.3.tgz", "integrity": "sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/template": "^7.22.15" @@ -956,7 +867,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.3.tgz", "integrity": "sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -971,7 +881,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.23.3.tgz", "integrity": "sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==", - "dev": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" @@ -987,7 +896,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.23.3.tgz", "integrity": "sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1002,7 +910,6 @@ "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.23.4.tgz", "integrity": "sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3" @@ -1018,7 +925,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.23.3.tgz", "integrity": "sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==", - "dev": true, "dependencies": { "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" @@ -1034,7 +940,6 @@ "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.4.tgz", "integrity": "sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" @@ -1047,12 +952,12 @@ } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.3.tgz", - "integrity": "sha512-X8jSm8X1CMwxmK878qsUGJRmbysKNbdpTv/O1/v0LuY/ZkZrng5WYiekYSdg9m09OTmDDUWeEDsTE+17WYbAZw==", - "dev": true, + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.6.tgz", + "integrity": "sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1065,7 +970,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.23.3.tgz", "integrity": "sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==", - "dev": true, "dependencies": { "@babel/helper-compilation-targets": "^7.22.15", "@babel/helper-function-name": "^7.23.0", @@ -1082,7 +986,6 @@ "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.23.4.tgz", "integrity": "sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-json-strings": "^7.8.3" @@ -1098,7 +1001,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.23.3.tgz", "integrity": "sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1113,7 +1015,6 @@ "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.23.4.tgz", "integrity": "sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" @@ -1129,7 +1030,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.23.3.tgz", "integrity": "sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1144,7 +1044,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.3.tgz", "integrity": "sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==", - "dev": true, "dependencies": { "@babel/helper-module-transforms": "^7.23.3", "@babel/helper-plugin-utils": "^7.22.5" @@ -1160,7 +1059,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz", "integrity": "sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==", - "dev": true, "dependencies": { "@babel/helper-module-transforms": "^7.23.3", "@babel/helper-plugin-utils": "^7.22.5", @@ -1177,7 +1075,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.3.tgz", "integrity": "sha512-ZxyKGTkF9xT9YJuKQRo19ewf3pXpopuYQd8cDXqNzc3mUNbOME0RKMoZxviQk74hwzfQsEe66dE92MaZbdHKNQ==", - "dev": true, "dependencies": { "@babel/helper-hoist-variables": "^7.22.5", "@babel/helper-module-transforms": "^7.23.3", @@ -1195,7 +1092,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.23.3.tgz", "integrity": "sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==", - "dev": true, "dependencies": { "@babel/helper-module-transforms": "^7.23.3", "@babel/helper-plugin-utils": "^7.22.5" @@ -1211,7 +1107,6 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", - "dev": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5" @@ -1227,7 +1122,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.23.3.tgz", "integrity": "sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1242,7 +1136,6 @@ "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.23.4.tgz", "integrity": "sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" @@ -1258,7 +1151,6 @@ "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.23.4.tgz", "integrity": "sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-numeric-separator": "^7.10.4" @@ -1274,7 +1166,6 @@ "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.23.4.tgz", "integrity": "sha512-9x9K1YyeQVw0iOXJlIzwm8ltobIIv7j2iLyP2jIhEbqPRQ7ScNgwQufU2I0Gq11VjyG4gI4yMXt2VFags+1N3g==", - "dev": true, "dependencies": { "@babel/compat-data": "^7.23.3", "@babel/helper-compilation-targets": "^7.22.15", @@ -1293,7 +1184,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.23.3.tgz", "integrity": "sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-replace-supers": "^7.22.20" @@ -1309,7 +1199,6 @@ "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.23.4.tgz", "integrity": "sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" @@ -1325,7 +1214,6 @@ "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.4.tgz", "integrity": "sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", @@ -1342,7 +1230,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.23.3.tgz", "integrity": "sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1357,7 +1244,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.23.3.tgz", "integrity": "sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==", - "dev": true, "dependencies": { "@babel/helper-create-class-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" @@ -1373,7 +1259,6 @@ "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.4.tgz", "integrity": "sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==", - "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", "@babel/helper-create-class-features-plugin": "^7.22.15", @@ -1391,7 +1276,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.23.3.tgz", "integrity": "sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1406,7 +1290,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.23.3.tgz", "integrity": "sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "regenerator-transform": "^0.15.2" @@ -1422,7 +1305,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.23.3.tgz", "integrity": "sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1437,7 +1319,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.23.3.tgz", "integrity": "sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1452,7 +1333,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.23.3.tgz", "integrity": "sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" @@ -1468,7 +1348,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.23.3.tgz", "integrity": "sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1483,7 +1362,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.23.3.tgz", "integrity": "sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1498,7 +1376,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.23.3.tgz", "integrity": "sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1513,7 +1390,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.23.3.tgz", "integrity": "sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1528,7 +1404,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.23.3.tgz", "integrity": "sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==", - "dev": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" @@ -1544,7 +1419,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.23.3.tgz", "integrity": "sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==", - "dev": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" @@ -1560,7 +1434,6 @@ "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.23.3.tgz", "integrity": "sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==", - "dev": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" @@ -1573,13 +1446,12 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.23.5.tgz", - "integrity": "sha512-0d/uxVD6tFGWXGDSfyMD1p2otoaKmu6+GD+NfAx0tMaH+dxORnp7T9TaVQ6mKyya7iBtCIVxHjWT7MuzzM9z+A==", - "dev": true, + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.23.6.tgz", + "integrity": "sha512-2XPn/BqKkZCpzYhUUNZ1ssXw7DcXfKQEjv/uXZUXgaebCMYmkEsfZ2yY+vv+xtXv50WmL5SGhyB6/xsWxIvvOQ==", "dependencies": { "@babel/compat-data": "^7.23.5", - "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-compilation-targets": "^7.23.6", "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-validator-option": "^7.23.5", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.23.3", @@ -1619,7 +1491,7 @@ "@babel/plugin-transform-dynamic-import": "^7.23.4", "@babel/plugin-transform-exponentiation-operator": "^7.23.3", "@babel/plugin-transform-export-namespace-from": "^7.23.4", - "@babel/plugin-transform-for-of": "^7.23.3", + "@babel/plugin-transform-for-of": "^7.23.6", "@babel/plugin-transform-function-name": "^7.23.3", "@babel/plugin-transform-json-strings": "^7.23.4", "@babel/plugin-transform-literals": "^7.23.3", @@ -1670,7 +1542,6 @@ "version": "0.1.6-no-external-plugins", "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/types": "^7.4.4", @@ -1683,14 +1554,12 @@ "node_modules/@babel/regjsgen": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", - "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", - "dev": true + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==" }, "node_modules/@babel/runtime": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.2.tgz", - "integrity": "sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==", - "dev": true, + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.6.tgz", + "integrity": "sha512-zHd0eUrf5GZoOWVCXp6koAKQTfZV07eit6bGPmJgnZdnSAvvZee6zniW2XMF7Cmc4ISOOnPy3QaSiIJGJkVEDQ==", "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -1702,7 +1571,6 @@ "version": "7.22.15", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", - "dev": true, "dependencies": { "@babel/code-frame": "^7.22.13", "@babel/parser": "^7.22.15", @@ -1713,20 +1581,19 @@ } }, "node_modules/@babel/traverse": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.5.tgz", - "integrity": "sha512-czx7Xy5a6sapWWRx61m1Ke1Ra4vczu1mCTtJam5zRTBOonfdJ+S/B6HYmGYu3fJtr8GGET3si6IhgWVBhJ/m8w==", - "dev": true, + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.6.tgz", + "integrity": "sha512-czastdK1e8YByZqezMPFiZ8ahwVMh/ESl9vPgvgdB9AmFMGP5jfpFax74AQgl5zj4XHzqeYAg2l8PuUeRS1MgQ==", "dependencies": { "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.5", + "@babel/generator": "^7.23.6", "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-function-name": "^7.23.0", "@babel/helper-hoist-variables": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.5", - "@babel/types": "^7.23.5", - "debug": "^4.1.0", + "@babel/parser": "^7.23.6", + "@babel/types": "^7.23.6", + "debug": "^4.3.1", "globals": "^11.1.0" }, "engines": { @@ -1734,10 +1601,9 @@ } }, "node_modules/@babel/types": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.5.tgz", - "integrity": "sha512-ON5kSOJwVO6xXVRTvOI0eOnWe7VdUcIpsovGo9U/Br4Ie4UVFQTboO2cYnDhAGU6Fp+UxSiT+pMft0SMHfuq6w==", - "dev": true, + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.6.tgz", + "integrity": "sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==", "dependencies": { "@babel/helper-string-parser": "^7.23.4", "@babel/helper-validator-identifier": "^7.22.20", @@ -1747,27 +1613,92 @@ "node": ">=6.9.0" } }, - "node_modules/@csstools/selector-specificity": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.2.0.tgz", - "integrity": "sha512-+OJ9konv95ClSTOJCmMZqpd5+YGsB2S+x6w3E1oaM8UuR5j8nTNHYSz8c9BEPGDOCMQYIEEGlVPj/VY64iTbGw==", - "dev": true, + "node_modules/@csstools/css-parser-algorithms": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.4.0.tgz", + "integrity": "sha512-/PPLr2g5PAUCKAPEbfyk6/baZA+WJHQtUhPkoCQMpyRE8I0lXrG1QFRN8e5s3ZYxM8d/g5BZc6lH3s8Op7/VEg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], "engines": { "node": "^14 || ^16 || >=18" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" + "peerDependencies": { + "@csstools/css-tokenizer": "^2.2.2" + } + }, + "node_modules/@csstools/css-tokenizer": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.2.2.tgz", + "integrity": "sha512-wCDUe/MAw7npAHFLyW3QjSyLA66S5QFaV1jIXlNQvdJ8RzXDSgALa49eWcUO6P55ARQaz0TsDdAgdRgkXFYY8g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": "^14 || ^16 || >=18" + } + }, + "node_modules/@csstools/media-query-list-parser": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.6.tgz", + "integrity": "sha512-R6AKl9vaU0It7D7TR2lQn0pre5aQfdeqHRePlaRCY8rHL3l9eVlNRpsEVDKFi/zAjzv68CxH2M5kqbhPFPKjvw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^2.4.0", + "@csstools/css-tokenizer": "^2.2.2" + } + }, + "node_modules/@csstools/selector-specificity": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-3.0.1.tgz", + "integrity": "sha512-NPljRHkq4a14YzZ3YD406uaxh7s0g6eAq3L9aLOWywoqe8PkYamAvtsh7KNX6c++ihDrJ0RiU+/z7rGnhlZ5ww==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": "^14 || ^16 || >=18" }, "peerDependencies": { - "postcss-selector-parser": "^6.0.10" + "postcss-selector-parser": "^6.0.13" } }, "node_modules/@eslint-community/eslint-utils": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", - "dev": true, "dependencies": { "eslint-visitor-keys": "^3.3.0" }, @@ -1779,10 +1710,9 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.8.0.tgz", - "integrity": "sha512-JylOEEzDiOryeUnFbQz+oViCXS0KsvR1mvHkoMiu5+UiBvy+RYX7tzlIIIEstF/gVa2tj9AQXk3dgnxv6KxhFg==", - "dev": true, + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } @@ -1791,7 +1721,6 @@ "version": "2.1.4", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", - "dev": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", @@ -1811,10 +1740,9 @@ } }, "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.23.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", - "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", - "dev": true, + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dependencies": { "type-fest": "^0.20.2" }, @@ -1829,7 +1757,6 @@ "version": "0.20.2", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, "engines": { "node": ">=10" }, @@ -1838,10 +1765,9 @@ } }, "node_modules/@eslint/js": { - "version": "8.55.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.55.0.tgz", - "integrity": "sha512-qQfo2mxH5yVom1kacMtZZJFVdW+E70mqHMJvVg6WTLo+VBuQJ4TojZlfWBjK0ve5BdEeNAVxOsl/nvNMpJOaJA==", - "dev": true, + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz", + "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } @@ -1850,7 +1776,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/@fullhuman/postcss-purgecss/-/postcss-purgecss-5.0.0.tgz", "integrity": "sha512-onDS/b/2pMRzqSoj4qOs2tYFmOpaspjTAgvACIHMPiicu1ptajiBruTrjBzTKdxWdX0ldaBb7wj8nEaTLyFkJw==", - "dev": true, "dependencies": { "purgecss": "^5.0.0" }, @@ -1862,7 +1787,6 @@ "version": "0.11.13", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", - "dev": true, "dependencies": { "@humanwhocodes/object-schema": "^2.0.1", "debug": "^4.1.1", @@ -1876,7 +1800,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, "engines": { "node": ">=12.22" }, @@ -1888,31 +1811,74 @@ "node_modules/@humanwhocodes/object-schema": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", - "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", - "dev": true + "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==" }, - "node_modules/@hyas/doks": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@hyas/doks/-/doks-0.5.0.tgz", - "integrity": "sha512-fOft8l14zzWfvWRtvRHGfWFVC2G8IebibllU48YorTWAIcN3LlYuFM6qhasq/Qw5jC5Id7QohT46JBQmNhRZPg==", - "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", - "dev": true, - "hasInstallScript": true, + "node_modules/@hyas/bootstrap": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@hyas/bootstrap/-/bootstrap-1.0.4.tgz", + "integrity": "sha512-yUl4AAdVIZm3BKxYUbrW8Ogbq9EbKcENP2tw+KSMncKiCXR7RG460iFzMvzcVmSw9xrqj9wwzzUTRIdhjPc1iA==", + "dependencies": { + "@popperjs/core": "^2.11.8", + "bootstrap": "^5.3.2" + }, + "engines": { + "node": ">=16.12.0" + } + }, + "node_modules/@hyas/core": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@hyas/core/-/core-1.0.2.tgz", + "integrity": "sha512-tU1Lw4iZ/qdTLrvHTO447cTDUdU8xTyP2QpKgU0uRY18EyaIsZWN6w1v+Z2PDY8OGL8uboYFRBuMww+TFylunA==", + "engines": { + "node": ">=16.12.0" + } + }, + "node_modules/@hyas/doks-core": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@hyas/doks-core/-/doks-core-1.2.0.tgz", + "integrity": "sha512-zyKxdwk+u+ezARIt7b4YoRDEd6MJJiZp6YfbnzHKH4SH918WMiJpc1ILL4JYUQ3PAnt3baxOoaXiQlguNlgDFQ==", + "dependencies": { + "@hyas/bootstrap": "^1.0.4", + "@hyas/images": "^2.0.3", + "@hyas/inline-svg": "^1.0.5", + "@hyas/seo": "^2.1.0", + "@tabler/icons": "^2.42.0", + "clipboard": "^2.0.11", + "flexsearch": "^0.7.31", + "gethyas": "^2.2.2" + }, "engines": { - "node": ">=16.16.0" + "node": ">=16.12.0" } }, "node_modules/@hyas/images": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@hyas/images/-/images-0.2.3.tgz", - "integrity": "sha512-PoGQ8DC3erHHS9sAlsrrGOlfqV3RgmIFYhSWcigB/7tE6tUNj4j57T4MjmlEyNcawlVsHvCaoYqPaElQn24aaQ==", - "dev": true + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@hyas/images/-/images-2.0.3.tgz", + "integrity": "sha512-4LqRiOZDQ3h0qyNBCRqfBD3yKwsVWmhPe0/JGuxtn6Kpr7GdTOBKNcfKunR8MATIBI15/Zulil9bYsFnCGr8Cw==", + "engines": { + "node": ">=16.12.0" + } + }, + "node_modules/@hyas/inline-svg": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@hyas/inline-svg/-/inline-svg-1.0.5.tgz", + "integrity": "sha512-zeR+mRyf9oKCztaM7Tw31S1on1eY0TZMF4lwlaKCYoN3bPxA2KJQB0I/SxCq3p0CHzdGs+J0ESnSp3H0Xg63fw==", + "engines": { + "node": ">=16.12.0" + } + }, + "node_modules/@hyas/seo": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@hyas/seo/-/seo-2.1.0.tgz", + "integrity": "sha512-yeXZuK1IUXd5xbD683lYqdLl0PVafArWYHoZmqKTYBl7I7ewDYWIzU020Nzf0D447RxwzOoC76SVVmlnY6qGGQ==", + "engines": { + "node": ">=16.12.0" + } }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", - "dev": true, "dependencies": { "@jridgewell/set-array": "^1.0.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -1926,7 +1892,6 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", - "dev": true, "engines": { "node": ">=6.0.0" } @@ -1935,7 +1900,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true, "engines": { "node": ">=6.0.0" } @@ -1943,14 +1907,12 @@ "node_modules/@jridgewell/sourcemap-codec": { "version": "1.4.15", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.19", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz", - "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==", - "dev": true, + "version": "0.3.20", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", + "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -1960,14 +1922,12 @@ "version": "2.1.8-no-fsevents.3", "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.3.tgz", "integrity": "sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ==", - "dev": true, "optional": true }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -1980,7 +1940,6 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, "engines": { "node": ">= 8" } @@ -1989,7 +1948,6 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -2002,42 +1960,46 @@ "version": "2.11.8", "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", - "dev": true, - "peer": true, "funding": { "type": "opencollective", "url": "https://opencollective.com/popperjs" } }, "node_modules/@sindresorhus/is": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", - "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", - "dev": true, + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.6.0.tgz", + "integrity": "sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==", "engines": { - "node": ">=10" + "node": ">=14.16" }, "funding": { "url": "https://github.com/sindresorhus/is?sponsor=1" } }, "node_modules/@szmarczak/http-timer": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", - "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", - "dev": true, + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz", + "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==", "dependencies": { - "defer-to-connect": "^2.0.0" + "defer-to-connect": "^2.0.1" }, "engines": { - "node": ">=10" + "node": ">=14.16" + } + }, + "node_modules/@tabler/icons": { + "version": "2.44.0", + "resolved": "https://registry.npmjs.org/@tabler/icons/-/icons-2.44.0.tgz", + "integrity": "sha512-WPPtihDcAwEm1QZM9MXQw6+r/R2/qx7KMU1eegsi9DsqBLAb0W2kbt6e/syvd6j9c+6XNpRVBW1ziGqSWQAWOg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/codecalm" } }, "node_modules/@types/cacheable-request": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", - "dev": true, "dependencies": { "@types/http-cache-semantics": "*", "@types/keyv": "^3.1.4", @@ -2046,49 +2008,40 @@ } }, "node_modules/@types/http-cache-semantics": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", - "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==", - "dev": true + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", + "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==" }, "node_modules/@types/keyv": { "version": "3.1.4", "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", - "dev": true, "dependencies": { "@types/node": "*" } }, "node_modules/@types/minimist": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", - "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", - "dev": true + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==" }, "node_modules/@types/node": { - "version": "20.5.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.5.9.tgz", - "integrity": "sha512-PcGNd//40kHAS3sTlzKB9C9XL4K0sTup8nbG5lC14kzEteTNuAFh9u5nA0o5TWnSG2r/JNPRXFVcHJIIeRlmqQ==", - "dev": true + "version": "20.10.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.5.tgz", + "integrity": "sha512-nNPsNE65wjMxEKI93yOP+NPGGBJz/PoN3kZsVLee0XMiJolxSekEVD8wRwBUBqkwc7UWop0edW50yrCQW4CyRw==", + "dependencies": { + "undici-types": "~5.26.4" + } }, "node_modules/@types/normalize-package-data": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", - "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", - "dev": true - }, - "node_modules/@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", - "dev": true + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", + "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==" }, "node_modules/@types/responselike": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", - "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", - "dev": true, + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.3.tgz", + "integrity": "sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==", "dependencies": { "@types/node": "*" } @@ -2096,14 +2049,12 @@ "node_modules/@ungap/structured-clone": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", - "dev": true + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==" }, "node_modules/acorn": { "version": "8.11.2", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", - "dev": true, "bin": { "acorn": "bin/acorn" }, @@ -2115,29 +2066,29 @@ "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "node_modules/aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-4.0.1.tgz", + "integrity": "sha512-0poP0T7el6Vq3rstR8Mn4V/IQrpBLO6POkUSrN7RhyY+GF/InCFShQzsQ39T25gkHhLgSLByyAz+Kjb+c2L98w==", "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" + "clean-stack": "^4.0.0", + "indent-string": "^5.0.0" }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -2153,7 +2104,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, "engines": { "node": ">=8" } @@ -2162,7 +2112,6 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, "dependencies": { "color-convert": "^1.9.0" }, @@ -2174,7 +2123,6 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -2186,14 +2134,12 @@ "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, "node_modules/array-union": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, "engines": { "node": ">=8" } @@ -2202,7 +2148,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -2211,77 +2156,22 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true, "engines": { "node": ">=8" } }, - "node_modules/auto-changelog": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/auto-changelog/-/auto-changelog-2.4.0.tgz", - "integrity": "sha512-vh17hko1c0ItsEcw6m7qPRf3m45u+XK5QyCrrBFViElZ8jnKrPC1roSznrd1fIB/0vR/zawdECCRJtTuqIXaJw==", - "dev": true, - "dependencies": { - "commander": "^7.2.0", - "handlebars": "^4.7.7", - "node-fetch": "^2.6.1", - "parse-github-url": "^1.0.2", - "semver": "^7.3.5" - }, - "bin": { - "auto-changelog": "src/index.js" - }, - "engines": { - "node": ">=8.3" - } - }, - "node_modules/auto-changelog/node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "dev": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/auto-changelog/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/auto-changelog/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, + "node_modules/async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" + "lodash": "^4.17.14" } }, - "node_modules/auto-changelog/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/autoprefixer": { "version": "10.4.16", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.16.tgz", "integrity": "sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==", - "dev": true, "funding": [ { "type": "opencollective", @@ -2315,13 +2205,12 @@ } }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.6.tgz", - "integrity": "sha512-jhHiWVZIlnPbEUKSSNb9YoWcQGdlTLq7z1GHL4AjFxaoOUMuuEVJ+Y4pAaQUGOGk93YsVCKPbqbfw3m0SM6H8Q==", - "dev": true, + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.7.tgz", + "integrity": "sha512-LidDk/tEGDfuHW2DWh/Hgo4rmnw3cduK6ZkOI1NPFceSK3n/yAGeOsNT7FLnSGHkXj3RHGSEVkN3FsCTY6w2CQ==", "dependencies": { "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.4.3", + "@babel/helper-define-polyfill-provider": "^0.4.4", "semver": "^6.3.1" }, "peerDependencies": { @@ -2329,12 +2218,11 @@ } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.8.6", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.6.tgz", - "integrity": "sha512-leDIc4l4tUgU7str5BWLS2h8q2N4Nf6lGZP6UrNDxdtfF2g69eJ5L0H7S8A5Ln/arfFAfHor5InAdZuIOwZdgQ==", - "dev": true, + "version": "0.8.7", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.7.tgz", + "integrity": "sha512-KyDvZYxAzkC0Aj2dAPyDzi2Ym15e5JKZSK+maI7NAwSqofvuFglbSsxE7wUOvTg9oFVnHMzVzBKcqEb4PJgtOA==", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.3", + "@babel/helper-define-polyfill-provider": "^0.4.4", "core-js-compat": "^3.33.1" }, "peerDependencies": { @@ -2342,12 +2230,11 @@ } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.3.tgz", - "integrity": "sha512-8sHeDOmXC8csczMrYEOf0UTNa4yE2SxV5JGeT/LP1n0OYVDUUFPxG9vdk2AlDlIit4t+Kf0xCtpgXPBwnn/9pw==", - "dev": true, + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.4.tgz", + "integrity": "sha512-S/x2iOCvDaCASLYsOOgWOq4bCfKYVqvO/uxjkaYyZ3rVsVE3CeAI/c84NpyuBBymEgNvHgjEot3a9/Z/kXvqsg==", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.3" + "@babel/helper-define-polyfill-provider": "^0.4.4" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" @@ -2356,14 +2243,12 @@ "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "node_modules/base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true, "funding": [ { "type": "github", @@ -2379,11 +2264,21 @@ } ] }, + "node_modules/basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "dependencies": { + "safe-buffer": "5.1.2" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true, "engines": { "node": ">=8" } @@ -2392,7 +2287,6 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz", "integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==", - "dev": true, "dependencies": { "readable-stream": "^2.3.5", "safe-buffer": "^5.1.1" @@ -2402,7 +2296,6 @@ "version": "5.3.2", "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.2.tgz", "integrity": "sha512-D32nmNWiQHo94BKHLmOrdjlL05q1c8oxbtBphQFb9Z5to6eGRDCm0QgeaZ4zFBHzfg2++rqa2JkqCcxDy0sH0g==", - "dev": true, "funding": [ { "type": "github", @@ -2421,7 +2314,6 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -2431,7 +2323,6 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, "dependencies": { "fill-range": "^7.0.1" }, @@ -2440,10 +2331,9 @@ } }, "node_modules/browserslist": { - "version": "4.22.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz", - "integrity": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==", - "dev": true, + "version": "4.22.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz", + "integrity": "sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==", "funding": [ { "type": "opencollective", @@ -2459,9 +2349,9 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001541", - "electron-to-chromium": "^1.4.535", - "node-releases": "^2.0.13", + "caniuse-lite": "^1.0.30001565", + "electron-to-chromium": "^1.4.601", + "node-releases": "^2.0.14", "update-browserslist-db": "^1.0.13" }, "bin": { @@ -2475,7 +2365,6 @@ "version": "5.7.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, "funding": [ { "type": "github", @@ -2499,7 +2388,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", - "dev": true, "dependencies": { "buffer-alloc-unsafe": "^1.1.0", "buffer-fill": "^1.0.0" @@ -2508,14 +2396,12 @@ "node_modules/buffer-alloc-unsafe": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", - "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", - "dev": true + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==" }, "node_modules/buffer-crc32": { "version": "0.2.13", "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", - "dev": true, "engines": { "node": "*" } @@ -2523,14 +2409,12 @@ "node_modules/buffer-fill": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", - "integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==", - "dev": true + "integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==" }, "node_modules/cacheable-lookup": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", - "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", - "dev": true, + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-6.1.0.tgz", + "integrity": "sha512-KJ/Dmo1lDDhmW2XDPMo+9oiy/CeqosPguPCrgcVzKyZrL6pM1gU2GmPY/xo6OQPTUaA/c0kwHuywB4E6nmT9ww==", "engines": { "node": ">=10.6.0" } @@ -2539,7 +2423,6 @@ "version": "7.0.4", "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz", "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==", - "dev": true, "dependencies": { "clone-response": "^1.0.2", "get-stream": "^5.1.0", @@ -2557,7 +2440,6 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, "dependencies": { "pump": "^3.0.0" }, @@ -2568,55 +2450,78 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/cacheable-request/node_modules/lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/cacheable-request/node_modules/responselike": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", + "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", + "dependencies": { + "lowercase-keys": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/call-bind": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", + "dependencies": { + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, "engines": { "node": ">=6" } }, "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "engines": { - "node": ">=6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/camelcase-keys": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", - "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", - "dev": true, + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-7.0.2.tgz", + "integrity": "sha512-Rjs1H+A9R+Ig+4E/9oyB66UC5Mj9Xq3N//vcLf2WzgdTi/3gUu3Z9KoqmlrEG4VuuLK8wJHofxzdQXz/knhiYg==", "dependencies": { - "camelcase": "^5.3.1", - "map-obj": "^4.0.0", - "quick-lru": "^4.0.1" + "camelcase": "^6.3.0", + "map-obj": "^4.1.0", + "quick-lru": "^5.1.1", + "type-fest": "^1.2.1" }, "engines": { - "node": ">=8" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/camelcase-keys/node_modules/quick-lru": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", - "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/caniuse-lite": { - "version": "1.0.30001561", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001561.tgz", - "integrity": "sha512-NTt0DNoKe958Q0BE0j0c1V9jbUzhBxHIEJy7asmGrpE0yG63KTV7PLHPnK2E1O9RsQrQ081I3NLuXGS6zht3cw==", - "dev": true, + "version": "1.0.30001572", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001572.tgz", + "integrity": "sha512-1Pbh5FLmn5y4+QhNyJE9j3/7dK44dGB83/ZMjv/qJk86TvDbjk0LosiZo0i0WB0Vx607qMX9jYrn1VLHCkN4rw==", "funding": [ { "type": "opencollective", @@ -2636,7 +2541,6 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -2650,7 +2554,6 @@ "version": "3.5.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, "funding": [ { "type": "individual", @@ -2674,19 +2577,34 @@ } }, "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true, + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-4.2.0.tgz", + "integrity": "sha512-LYv6XPxoyODi36Dp976riBtSY27VmFo+MKqEU9QCCWyTrdEPDog+RWA7xQWHi6Vbp61j5c4cdzzX1NidnwtUWg==", + "dependencies": { + "escape-string-regexp": "5.0.0" + }, "engines": { - "node": ">=6" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/clean-stack/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/clipboard": { "version": "2.0.11", "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.11.tgz", "integrity": "sha512-C+0bbOqkezLIsmWSvlsXS0Q0bmkugu7jcfMIACB+RDEntIzQIkdr148we28AfSloQLRdZlYL/QYyrq05j/3Faw==", - "dev": true, "dependencies": { "good-listener": "^1.2.2", "select": "^1.1.2", @@ -2697,7 +2615,6 @@ "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", @@ -2708,7 +2625,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", - "dev": true, "dependencies": { "mimic-response": "^1.0.0" }, @@ -2720,7 +2636,6 @@ "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, "dependencies": { "color-name": "1.1.3" } @@ -2728,20 +2643,17 @@ "node_modules/color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" }, "node_modules/colord": { "version": "2.9.3", "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", - "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", - "dev": true + "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==" }, "node_modules/commander": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", - "dev": true, "engines": { "node": ">= 6" } @@ -2749,22 +2661,19 @@ "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, "node_modules/convert-source-map": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" }, "node_modules/core-js-compat": { - "version": "3.33.2", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.33.2.tgz", - "integrity": "sha512-axfo+wxFVxnqf8RvxTzoAlzW4gRoacrHeoFlc9n0x50+7BEyZL/Rt3hicaED1/CEd7I6tPCPVUYcJwCMO5XUYw==", - "dev": true, + "version": "3.34.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.34.0.tgz", + "integrity": "sha512-4ZIyeNbW/Cn1wkMMDy+mvrRUxrwFNjKwbhCfQpDd+eLgYipDqp8oGFGtLmhh18EDPKA0g3VUBYOxQGGwvWLVpA==", "dependencies": { - "browserslist": "^4.22.1" + "browserslist": "^4.22.2" }, "funding": { "type": "opencollective", @@ -2774,39 +2683,45 @@ "node_modules/core-util-is": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" }, - "node_modules/cosmiconfig": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", - "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", - "dev": true, - "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - }, + "node_modules/corser": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/corser/-/corser-2.0.1.tgz", + "integrity": "sha512-utCYNzRSQIZNPIcGZdQc92UVJYAhtGAteCFg0yRaFm8f0P+CPtyGyHXJcGXnffjCybUCEx3FQ2G7U3/o9eIkVQ==", "engines": { - "node": ">=10" + "node": ">= 0.4.0" } }, - "node_modules/cosmiconfig/node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "dev": true, + "node_modules/cosmiconfig": { + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", + "dependencies": { + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" + }, "engines": { - "node": ">= 6" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -2817,19 +2732,29 @@ } }, "node_modules/css-functions-list": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.0.tgz", - "integrity": "sha512-d/jBMPyYybkkLVypgtGv12R+pIFw4/f/IHtCTxWpZc8ofTYOPigIgmA6vu5rMHartZC+WuXhBUHfnyNUIQSYrg==", - "dev": true, + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.1.tgz", + "integrity": "sha512-Nj5YcaGgBtuUmn1D7oHqPW0c9iui7xsTsj5lIX8ZgevdfhmjFfKB3r8moHJtNJnctnYXJyYX5I1pp90HM4TPgQ==", "engines": { - "node": ">=12.22" + "node": ">=12 || >=16" + } + }, + "node_modules/css-tree": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", + "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", + "dependencies": { + "mdn-data": "2.0.30", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" } }, "node_modules/cssesc": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true, "bin": { "cssesc": "bin/cssesc" }, @@ -2841,7 +2766,6 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", - "dev": true, "engines": { "node": ">= 12" } @@ -2850,7 +2774,6 @@ "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, "dependencies": { "ms": "2.1.2" }, @@ -2864,19 +2787,20 @@ } }, "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "dev": true, + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-5.0.1.tgz", + "integrity": "sha512-VfxadyCECXgQlkoEAjeghAr5gY3Hf+IKjKb+X8tGVDtveCjN+USwprd2q3QXBR9T1+x2DG0XZF5/w+7HAtSaXA==", "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/decamelize-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", - "dev": true, "dependencies": { "decamelize": "^1.1.0", "map-obj": "^1.0.0" @@ -2888,11 +2812,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/decamelize-keys/node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/decamelize-keys/node_modules/map-obj": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -2901,7 +2832,6 @@ "version": "4.2.1", "resolved": "https://registry.npmjs.org/decompress/-/decompress-4.2.1.tgz", "integrity": "sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ==", - "dev": true, "dependencies": { "decompress-tar": "^4.0.0", "decompress-tarbz2": "^4.0.0", @@ -2920,7 +2850,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "dev": true, "dependencies": { "mimic-response": "^3.1.0" }, @@ -2935,7 +2864,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "dev": true, "engines": { "node": ">=10" }, @@ -2947,7 +2875,6 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-4.1.1.tgz", "integrity": "sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==", - "dev": true, "dependencies": { "file-type": "^5.2.0", "is-stream": "^1.1.0", @@ -2961,7 +2888,6 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz", "integrity": "sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==", - "dev": true, "dependencies": { "decompress-tar": "^4.1.0", "file-type": "^6.1.0", @@ -2977,7 +2903,6 @@ "version": "6.2.0", "resolved": "https://registry.npmjs.org/file-type/-/file-type-6.2.0.tgz", "integrity": "sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg==", - "dev": true, "engines": { "node": ">=4" } @@ -2986,7 +2911,6 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/decompress-targz/-/decompress-targz-4.1.1.tgz", "integrity": "sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==", - "dev": true, "dependencies": { "decompress-tar": "^4.1.1", "file-type": "^5.2.0", @@ -3000,7 +2924,6 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/decompress-unzip/-/decompress-unzip-4.0.1.tgz", "integrity": "sha512-1fqeluvxgnn86MOh66u8FjbtJpAFv5wgCT9Iw8rcBqQcCo5tO8eiJw7NNTrvt9n4CRBVq7CstiS922oPgyGLrw==", - "dev": true, "dependencies": { "file-type": "^3.8.0", "get-stream": "^2.2.0", @@ -3015,7 +2938,6 @@ "version": "3.9.0", "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", "integrity": "sha512-RLoqTXE8/vPmMuTI88DAzhMYC99I8BWv7zYP4A1puo5HIjEJ5EX48ighy4ZyKMG9EDXxBgW6e++cn7d1xuFghA==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -3024,7 +2946,6 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", - "dev": true, "dependencies": { "pify": "^3.0.0" }, @@ -3036,7 +2957,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", - "dev": true, "engines": { "node": ">=4" } @@ -3044,60 +2964,81 @@ "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" }, "node_modules/defer-to-connect": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", - "dev": true, "engines": { "node": ">=10" } }, + "node_modules/define-data-property": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "dependencies": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/del": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/del/-/del-6.0.0.tgz", - "integrity": "sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ==", - "dev": true, - "dependencies": { - "globby": "^11.0.1", - "graceful-fs": "^4.2.4", - "is-glob": "^4.0.1", - "is-path-cwd": "^2.2.0", - "is-path-inside": "^3.0.2", - "p-map": "^4.0.0", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/del/-/del-7.0.0.tgz", + "integrity": "sha512-tQbV/4u5WVB8HMJr08pgw0b6nG4RGt/tj+7Numvq+zqcvUFeMaIWWOUFltiU+6go8BSO2/ogsB4EasDaj0y68Q==", + "dependencies": { + "globby": "^13.1.2", + "graceful-fs": "^4.2.10", + "is-glob": "^4.0.3", + "is-path-cwd": "^3.0.0", + "is-path-inside": "^4.0.0", + "p-map": "^5.5.0", "rimraf": "^3.0.2", - "slash": "^3.0.0" + "slash": "^4.0.0" }, "engines": { - "node": ">=10" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/del/node_modules/is-path-inside": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-4.0.0.tgz", + "integrity": "sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==", + "engines": { + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/del/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/delegate": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz", - "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==", - "dev": true + "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==" }, "node_modules/dependency-graph": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==", - "dev": true, "engines": { "node": ">= 0.6.0" } @@ -3106,7 +3047,6 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, "dependencies": { "path-type": "^4.0.0" }, @@ -3118,7 +3058,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, "dependencies": { "esutils": "^2.0.2" }, @@ -3127,22 +3066,19 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.578", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.578.tgz", - "integrity": "sha512-V0ZhSu1BQZKfG0yNEL6Dadzik8E1vAzfpVOapdSiT9F6yapEJ3Bk+4tZ4SMPdWiUchCgnM/ByYtBzp5ntzDMIA==", - "dev": true + "version": "1.4.616", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.616.tgz", + "integrity": "sha512-1n7zWYh8eS0L9Uy+GskE0lkBUNK83cXTVJI0pU3mGprFsbfSdAc15VTFbo+A+Bq4pwstmL30AVcEU3Fo463lNg==" }, "node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "node_modules/end-of-stream": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, "dependencies": { "once": "^1.4.0" } @@ -3151,7 +3087,6 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==", - "dev": true, "engines": { "node": ">=0.12" }, @@ -3163,7 +3098,6 @@ "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, "dependencies": { "is-arrayish": "^0.2.1" } @@ -3172,7 +3106,6 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, "engines": { "node": ">=6" } @@ -3181,21 +3114,19 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, "engines": { "node": ">=0.8.0" } }, "node_modules/eslint": { - "version": "8.55.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.55.0.tgz", - "integrity": "sha512-iyUUAM0PCKj5QpwGfmCAG9XXbZCWsqP/eWAWrG/W0umvjuLRBECwSFdt+rCntju0xEH7teIABPwXpahftIaTdA==", - "dev": true, + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz", + "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.55.0", + "@eslint/js": "8.56.0", "@humanwhocodes/config-array": "^0.11.13", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", @@ -3245,7 +3176,6 @@ "version": "7.2.2", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", - "dev": true, "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" @@ -3261,7 +3191,6 @@ "version": "3.4.3", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -3273,7 +3202,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -3288,7 +3216,6 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -3304,7 +3231,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "dependencies": { "color-name": "~1.1.4" }, @@ -3315,14 +3241,12 @@ "node_modules/eslint/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/eslint/node_modules/escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, "engines": { "node": ">=10" }, @@ -3334,7 +3258,6 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, "dependencies": { "is-glob": "^4.0.3" }, @@ -3343,10 +3266,9 @@ } }, "node_modules/eslint/node_modules/globals": { - "version": "13.21.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.21.0.tgz", - "integrity": "sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==", - "dev": true, + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dependencies": { "type-fest": "^0.20.2" }, @@ -3361,7 +3283,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, "engines": { "node": ">=8" } @@ -3370,7 +3291,6 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -3382,7 +3302,6 @@ "version": "0.20.2", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, "engines": { "node": ">=10" }, @@ -3394,7 +3313,6 @@ "version": "9.6.1", "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", - "dev": true, "dependencies": { "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", @@ -3411,7 +3329,6 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", - "dev": true, "dependencies": { "estraverse": "^5.1.0" }, @@ -3423,7 +3340,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, "dependencies": { "estraverse": "^5.2.0" }, @@ -3435,7 +3351,6 @@ "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, "engines": { "node": ">=4.0" } @@ -3444,16 +3359,19 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, "engines": { "node": ">=0.10.0" } }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + }, "node_modules/exec-bin": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/exec-bin/-/exec-bin-1.0.0.tgz", "integrity": "sha512-p8f8h8b6op2nR7U5rsd+zACUMfsfB+jW8HNIBD2njOQ/gF2WvBfQRo/OU6Q6f/b34WLAyePZcwMJyrDdEjB/fw==", - "dev": true, "bin": { "exec-bin": "bin/exec-bin.js" } @@ -3461,14 +3379,12 @@ "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "node_modules/fast-glob": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", - "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", - "dev": true, + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -3483,29 +3399,25 @@ "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" }, "node_modules/fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" }, "node_modules/fastest-levenshtein": { "version": "1.0.16", "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", - "dev": true, "engines": { "node": ">= 4.9.1" } }, "node_modules/fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "dev": true, + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.16.0.tgz", + "integrity": "sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA==", "dependencies": { "reusify": "^1.0.4" } @@ -3514,7 +3426,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", - "dev": true, "dependencies": { "pend": "~1.2.0" } @@ -3523,7 +3434,6 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", - "dev": true, "funding": [ { "type": "github", @@ -3546,7 +3456,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, "dependencies": { "flat-cache": "^3.0.4" }, @@ -3558,7 +3467,6 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", "integrity": "sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ==", - "dev": true, "engines": { "node": ">=4" } @@ -3567,7 +3475,6 @@ "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, "dependencies": { "to-regex-range": "^5.0.1" }, @@ -3579,7 +3486,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" @@ -3592,36 +3498,59 @@ } }, "node_modules/flat-cache": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.0.tgz", - "integrity": "sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==", - "dev": true, + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", "dependencies": { - "flatted": "^3.2.7", + "flatted": "^3.2.9", "keyv": "^4.5.3", "rimraf": "^3.0.2" }, "engines": { - "node": ">=12.0.0" + "node": "^10.12.0 || >=12.0.0" } }, "node_modules/flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "dev": true + "version": "3.2.9", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", + "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==" }, "node_modules/flexsearch": { "version": "0.7.31", "resolved": "https://registry.npmjs.org/flexsearch/-/flexsearch-0.7.31.tgz", - "integrity": "sha512-XGozTsMPYkm+6b5QL3Z9wQcJjNYxp0CYn3U1gO7dwD6PAqU1SVWZxI9CCg3z+ml3YfqdPnrBehaBrnH2AGKbNA==", - "dev": true + "integrity": "sha512-XGozTsMPYkm+6b5QL3Z9wQcJjNYxp0CYn3U1gO7dwD6PAqU1SVWZxI9CCg3z+ml3YfqdPnrBehaBrnH2AGKbNA==" + }, + "node_modules/follow-redirects": { + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz", + "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data-encoder": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz", + "integrity": "sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==", + "engines": { + "node": ">= 14.17" + } }, "node_modules/formdata-polyfill": { "version": "4.0.10", "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", - "dev": true, "dependencies": { "fetch-blob": "^3.1.2" }, @@ -3630,10 +3559,9 @@ } }, "node_modules/fraction.js": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.6.tgz", - "integrity": "sha512-n2aZ9tNfYDwaHhvFTkhFErqOMIb8uyzSQ+vGJBjZyanAKZVbGUQ1sngfk9FdkBw7G26O7AgNjLcecLffD1c7eg==", - "dev": true, + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", "engines": { "node": "*" }, @@ -3645,14 +3573,12 @@ "node_modules/fs-constants": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", - "dev": true + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" }, "node_modules/fs-extra": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", - "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", - "dev": true, + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -3665,20 +3591,17 @@ "node_modules/fs-readdir-recursive": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", - "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", - "dev": true + "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==" }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, "node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, "hasInstallScript": true, "optional": true, "os": [ @@ -3689,16 +3612,17 @@ } }, "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, "engines": { "node": ">=6.9.0" } @@ -3707,16 +3631,28 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, "engines": { "node": "6.* || 8.* || >= 10.*" } }, + "node_modules/get-intrinsic": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", + "dependencies": { + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/get-stdin": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-9.0.0.tgz", "integrity": "sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==", - "dev": true, "engines": { "node": ">=12" }, @@ -3728,7 +3664,6 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", "integrity": "sha512-AUGhbbemXxrZJRD5cDvKtQxLuYaIbNtDTK8YqupCI393Q2KSTreEsLUN3ZxAWFGiKTzL6nKuzfcIvieflUX9qA==", - "dev": true, "dependencies": { "object-assign": "^4.0.1", "pinkie-promise": "^2.0.0" @@ -3737,11 +3672,42 @@ "node": ">=0.10.0" } }, + "node_modules/gethyas": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/gethyas/-/gethyas-2.2.2.tgz", + "integrity": "sha512-4lIHpR9bUqN4eb24JYfD7UWBDQlSoVxxQnSA/kmedfI46xGUwnZ4S6n3KgQhjDIimzDrkLzjimFdxFiPhJVxag==", + "hasInstallScript": true, + "dependencies": { + "@babel/cli": "^7.23.0", + "@babel/core": "^7.23.2", + "@babel/preset-env": "^7.23.2", + "@fullhuman/postcss-purgecss": "^5.0.0", + "@hyas/core": "^1.0.2", + "autoprefixer": "^10.4.16", + "eslint": "^8.51.0", + "exec-bin": "^1.0.0", + "http-server": "^14.1.1", + "hugo-installer": "^4.0.1", + "lazysizes": "^5.3.2", + "markdownlint-cli2": "^0.10.0", + "modern-css-reset": "^1.4.0", + "netlify-plugin-submit-sitemap": "^0.4.0", + "postcss": "^8.4.31", + "postcss-cli": "^10.1.0", + "purgecss-whitelister": "^2.4.0", + "quicklink": "^2.3.0", + "shx": "^0.3.4", + "stylelint": "^15.11.0", + "stylelint-config-standard-scss": "^11.0.0" + }, + "engines": { + "node": ">=16.12.0" + } + }, "node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -3761,7 +3727,6 @@ "version": "3.3.1", "resolved": "https://registry.npmjs.org/glob-all/-/glob-all-3.3.1.tgz", "integrity": "sha512-Y+ESjdI7ZgMwfzanHZYQ87C59jOO0i+Hd+QYtVt9PhLi6d8wlOpzQnfBxWUlaTuAoR3TkybLqqbIoWveU4Ji7Q==", - "dev": true, "dependencies": { "glob": "^7.2.3", "yargs": "^15.3.1" @@ -3774,7 +3739,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -3785,11 +3749,18 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/glob-all/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "engines": { + "node": ">=6" + } + }, "node_modules/glob-all/node_modules/cliui": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "dev": true, "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", @@ -3800,7 +3771,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "dependencies": { "color-name": "~1.1.4" }, @@ -3811,14 +3781,20 @@ "node_modules/glob-all/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/glob-all/node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "engines": { + "node": ">=0.10.0" + } }, "node_modules/glob-all/node_modules/find-up": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -3831,7 +3807,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, "dependencies": { "p-locate": "^4.1.0" }, @@ -3843,7 +3818,6 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, "dependencies": { "p-try": "^2.0.0" }, @@ -3858,7 +3832,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, "dependencies": { "p-limit": "^2.2.0" }, @@ -3870,7 +3843,6 @@ "version": "6.2.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -3883,14 +3855,12 @@ "node_modules/glob-all/node_modules/y18n": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" }, "node_modules/glob-all/node_modules/yargs": { "version": "15.4.1", "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "dev": true, "dependencies": { "cliui": "^6.0.0", "decamelize": "^1.2.0", @@ -3912,7 +3882,6 @@ "version": "18.1.3", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "dev": true, "dependencies": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" @@ -3925,7 +3894,6 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, "dependencies": { "is-glob": "^4.0.1" }, @@ -3937,7 +3905,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", - "dev": true, "dependencies": { "global-prefix": "^3.0.0" }, @@ -3949,7 +3916,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", - "dev": true, "dependencies": { "ini": "^1.3.5", "kind-of": "^6.0.2", @@ -3963,7 +3929,6 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, "dependencies": { "isexe": "^2.0.0" }, @@ -3975,51 +3940,48 @@ "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, "engines": { "node": ">=4" } }, "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz", + "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==", "dependencies": { - "array-union": "^2.1.0", "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", + "fast-glob": "^3.3.0", + "ignore": "^5.2.4", "merge2": "^1.4.1", - "slash": "^3.0.0" + "slash": "^4.0.0" }, "engines": { - "node": ">=10" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/globby/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/globjoin": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz", - "integrity": "sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==", - "dev": true + "integrity": "sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==" }, "node_modules/gonzales-pe": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/gonzales-pe/-/gonzales-pe-4.3.0.tgz", "integrity": "sha512-otgSPpUmdWJ43VXyiNgEYE4luzHCL2pz4wQ0OnDluC6Eg4Ko3Vexy/SrSynglw/eR+OhkzmqFCZa/OFa/RgAOQ==", - "dev": true, "dependencies": { "minimist": "^1.2.5" }, @@ -4034,113 +3996,139 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz", "integrity": "sha512-goW1b+d9q/HIwbVYZzZ6SsTr4IgE+WA44A0GmPIQstuOrgsFcT7VEJ48nmr9GaRtNu0XTKacFLGnBPAM6Afouw==", - "dev": true, "dependencies": { "delegate": "^3.1.2" } }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/got": { - "version": "11.8.6", - "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", - "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", - "dev": true, - "dependencies": { - "@sindresorhus/is": "^4.0.0", - "@szmarczak/http-timer": "^4.0.5", - "@types/cacheable-request": "^6.0.1", - "@types/responselike": "^1.0.0", - "cacheable-lookup": "^5.0.3", + "version": "12.4.1", + "resolved": "https://registry.npmjs.org/got/-/got-12.4.1.tgz", + "integrity": "sha512-Sz1ojLt4zGNkcftIyJKnulZT/yEDvifhUjccHA8QzOuTgPs/+njXYNMFE3jR4/2OODQSSbH8SdnoLCkbh41ieA==", + "dependencies": { + "@sindresorhus/is": "^5.2.0", + "@szmarczak/http-timer": "^5.0.1", + "@types/cacheable-request": "^6.0.2", + "cacheable-lookup": "^6.0.4", "cacheable-request": "^7.0.2", "decompress-response": "^6.0.0", - "http2-wrapper": "^1.0.0-beta.5.2", - "lowercase-keys": "^2.0.0", - "p-cancelable": "^2.0.0", - "responselike": "^2.0.0" + "form-data-encoder": "^2.1.0", + "get-stream": "^6.0.1", + "http2-wrapper": "^2.1.10", + "lowercase-keys": "^3.0.0", + "p-cancelable": "^3.0.0", + "responselike": "^3.0.0" }, "engines": { - "node": ">=10.19.0" + "node": ">=14.16" }, "funding": { "url": "https://github.com/sindresorhus/got?sponsor=1" } }, + "node_modules/got/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" }, "node_modules/graphemer": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true - }, - "node_modules/handlebars": { - "version": "4.7.8", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", - "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", - "dev": true, - "dependencies": { - "minimist": "^1.2.5", - "neo-async": "^2.6.2", - "source-map": "^0.6.1", - "wordwrap": "^1.0.0" - }, - "bin": { - "handlebars": "bin/handlebars" - }, - "engines": { - "node": ">=0.4.7" - }, - "optionalDependencies": { - "uglify-js": "^3.1.4" - } + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==" }, "node_modules/hard-rejection": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", - "dev": true, "engines": { "node": ">=6" } }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, "engines": { "node": ">=4" } }, - "node_modules/highlight.js": { - "version": "11.9.0", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.9.0.tgz", - "integrity": "sha512-fJ7cW7fQGCYAkgv4CPfwFHrfd/cLS4Hau96JuJ+ZTOWhjnhoeN1ub1tFmALm/+lW5z4WCAuAV9bm05AP0mS6Gw==", - "dev": true, + "node_modules/has-property-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "dependencies": { + "get-intrinsic": "^1.2.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", "engines": { - "node": ">=12.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "bin": { + "he": "bin/he" } }, "node_modules/hosted-git-info": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", - "dev": true, "dependencies": { "lru-cache": "^6.0.0" }, @@ -4152,7 +4140,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, "dependencies": { "yallist": "^4.0.0" }, @@ -4163,20 +4150,31 @@ "node_modules/hosted-git-info/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "node_modules/hpagent": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/hpagent/-/hpagent-0.1.2.tgz", - "integrity": "sha512-ePqFXHtSQWAFXYmj+JtOTHr84iNrII4/QRlAAPPE+zqnKy4xJo7Ie1Y4kC7AdB+LxLxSTTzBMASsEcy0q8YyvQ==", - "dev": true + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hpagent/-/hpagent-1.0.0.tgz", + "integrity": "sha512-SCleE2Uc1bM752ymxg8QXYGW0TWtAV4ZW3TqH1aOnyi6T6YW2xadCcclm5qeVjvMvfQ2RKNtZxO7uVb9CTPt1A==", + "engines": { + "node": ">=14" + } + }, + "node_modules/html-encoding-sniffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", + "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", + "dependencies": { + "whatwg-encoding": "^2.0.0" + }, + "engines": { + "node": ">=12" + } }, "node_modules/html-tags": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz", "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==", - "dev": true, "engines": { "node": ">=8" }, @@ -4187,93 +4185,155 @@ "node_modules/http-cache-semantics": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", - "dev": true + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==" }, - "node_modules/http2-wrapper": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", - "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", - "dev": true, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", "dependencies": { - "quick-lru": "^5.1.1", - "resolve-alpn": "^1.0.0" + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" }, "engines": { - "node": ">=10.19.0" + "node": ">=8.0.0" } }, - "node_modules/hugo-installer": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hugo-installer/-/hugo-installer-3.1.0.tgz", - "integrity": "sha512-E3yc8m1NRZBROOx0tx5WtUfAa9EcBbjbM4YSfy3KLGXQfHXIpbfD3oQ5YIKvih8aKuyyRtKzBZIdiOHfWAvvtg==", - "dev": true, + "node_modules/http-server": { + "version": "14.1.1", + "resolved": "https://registry.npmjs.org/http-server/-/http-server-14.1.1.tgz", + "integrity": "sha512-+cbxadF40UXd9T01zUHgA+rlo2Bg1Srer4+B4NwIHdaGxAGGv59nYRnGGDJ9LBk7alpS0US+J+bLLdQOOkJq4A==", "dependencies": { - "decompress": "4.2.x", - "del": "6.0.x", - "got": "11.8.x", - "hpagent": "0.1.x", - "object-path": "0.11.x", - "semver": "7.3.x", - "yargs": "16.2.x" + "basic-auth": "^2.0.1", + "chalk": "^4.1.2", + "corser": "^2.0.1", + "he": "^1.2.0", + "html-encoding-sniffer": "^3.0.0", + "http-proxy": "^1.18.1", + "mime": "^1.6.0", + "minimist": "^1.2.6", + "opener": "^1.5.1", + "portfinder": "^1.0.28", + "secure-compare": "3.0.1", + "union": "~0.5.0", + "url-join": "^4.0.1" }, "bin": { - "hugo-installer": "bin/hugo-installer.js" - } - }, - "node_modules/hugo-installer/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" + "http-server": "bin/http-server" }, "engines": { - "node": ">=10" + "node": ">=12" } }, - "node_modules/hugo-installer/node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "dev": true, + "node_modules/http-server/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=10" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/hugo-installer/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/husky": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/husky/-/husky-8.0.3.tgz", - "integrity": "sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==", - "dev": true, - "bin": { - "husky": "lib/bin.js" + "node_modules/http-server/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=14" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/typicode" + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/http-server/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/http-server/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/http-server/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/http-server/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/http2-wrapper": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.1.tgz", + "integrity": "sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==", + "dependencies": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.2.0" + }, + "engines": { + "node": ">=10.19.0" + } + }, + "node_modules/hugo-installer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/hugo-installer/-/hugo-installer-4.0.1.tgz", + "integrity": "sha512-pkp1RO7+ekQ0vw1aqgBMK+dD2dqioIWVbwWKsJsKLOpzfFc78gK68Cweoi/g+CftoiMFO7cyGx/2MgkHCMqaLQ==", + "dependencies": { + "decompress": "4.2.x", + "del": "7.0.x", + "got": "12.4.x", + "hpagent": "1.0.x", + "object-path": "0.11.x", + "semver": "7.3.x", + "yargs": "17.5.x" + }, + "bin": { + "hugo-installer": "bin/hugo-installer.js" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/ieee754": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true, "funding": [ { "type": "github", @@ -4290,10 +4350,9 @@ ] }, "node_modules/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", - "dev": true, + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", + "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", "engines": { "node": ">= 4" } @@ -4302,7 +4361,6 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -4318,7 +4376,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", - "dev": true, "engines": { "node": ">=8" } @@ -4327,25 +4384,25 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, "engines": { "node": ">=0.8.19" } }, "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true, + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", + "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -4354,26 +4411,17 @@ "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "node_modules/ini": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true - }, - "node_modules/instant.page": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/instant.page/-/instant.page-5.2.0.tgz", - "integrity": "sha512-DUSwWyoHFOQnmEwJtg9vzDx8Ef8uNNvTxTmHjd0vN9/XEIb5EQkm/itpZMypoH3dJLJvtkrD97WOCKuMqDdMHQ==", - "dev": true + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" }, "node_modules/interpret": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", - "dev": true, "engines": { "node": ">= 0.10" } @@ -4382,7 +4430,6 @@ "version": "2.2.2", "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", "integrity": "sha512-FUiAFCOgp7bBzHfa/fK+Uc/vqywvdN9Wg3CiTprLcE630mrhxjDS5MlBkHzeI6+bC/6bq9VX/hxBt05fPAT5WA==", - "dev": true, "dependencies": { "loose-envify": "^1.0.0" } @@ -4390,14 +4437,12 @@ "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" }, "node_modules/is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, "dependencies": { "binary-extensions": "^2.0.0" }, @@ -4406,12 +4451,11 @@ } }, "node_modules/is-core-module": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", - "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", - "dev": true, + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", "dependencies": { - "has": "^1.0.3" + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -4421,7 +4465,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -4430,7 +4473,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, "engines": { "node": ">=8" } @@ -4439,7 +4481,6 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, "dependencies": { "is-extglob": "^2.1.1" }, @@ -4450,32 +4491,31 @@ "node_modules/is-natural-number": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz", - "integrity": "sha512-Y4LTamMe0DDQIIAlaer9eKebAlDSV6huy+TWhJVPlzZh2o4tRP5SQWFlLn5N0To4mDD22/qdOq+veo1cSISLgQ==", - "dev": true + "integrity": "sha512-Y4LTamMe0DDQIIAlaer9eKebAlDSV6huy+TWhJVPlzZh2o4tRP5SQWFlLn5N0To4mDD22/qdOq+veo1cSISLgQ==" }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, "engines": { "node": ">=0.12.0" } }, "node_modules/is-path-cwd": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", - "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", - "dev": true, + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-3.0.0.tgz", + "integrity": "sha512-kyiNFFLU0Ampr6SDZitD/DwUo4Zs1nSdnygUBqsu3LooL00Qvb5j+UnvApUn/TTj1J3OuE6BTdQ5rudKmU2ZaA==", "engines": { - "node": ">=6" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/is-path-inside": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, "engines": { "node": ">=8" } @@ -4484,7 +4524,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -4493,7 +4532,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -4502,7 +4540,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -4510,26 +4547,22 @@ "node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, "dependencies": { "argparse": "^2.0.1" }, @@ -4541,7 +4574,6 @@ "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, "bin": { "jsesc": "bin/jsesc" }, @@ -4552,32 +4584,27 @@ "node_modules/json-buffer": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" }, "node_modules/json5": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, "bin": { "json5": "lib/cli.js" }, @@ -4589,7 +4616,6 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, "dependencies": { "universalify": "^2.0.0" }, @@ -4597,36 +4623,10 @@ "graceful-fs": "^4.1.6" } }, - "node_modules/katex": { - "version": "0.16.9", - "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.9.tgz", - "integrity": "sha512-fsSYjWS0EEOwvy81j3vRA8TEAhQhKiqO+FQaKWp0m39qwOzHVBgAUBIXWj1pB+O2W3fIpNa6Y9KSKCVbfPhyAQ==", - "dev": true, - "funding": [ - "https://opencollective.com/katex", - "https://github.com/sponsors/katex" - ], - "dependencies": { - "commander": "^8.3.0" - }, - "bin": { - "katex": "cli.js" - } - }, - "node_modules/katex/node_modules/commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", - "dev": true, - "engines": { - "node": ">= 12" - } - }, "node_modules/keyv": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.3.tgz", - "integrity": "sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==", - "dev": true, + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dependencies": { "json-buffer": "3.0.1" } @@ -4635,28 +4635,24 @@ "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, "engines": { "node": ">=0.10.0" } }, "node_modules/known-css-properties": { - "version": "0.26.0", - "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.26.0.tgz", - "integrity": "sha512-5FZRzrZzNTBruuurWpvZnvP9pum+fe0HcK8z/ooo+U+Hmp4vtbyp1/QDsqmufirXy4egGzbaH/y2uCZf+6W5Kg==", - "dev": true + "version": "0.29.0", + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.29.0.tgz", + "integrity": "sha512-Ne7wqW7/9Cz54PDt4I3tcV+hAyat8ypyOGzYRJQfdxnnjeWsTxt1cy8pjvvKeI5kfXuyvULyeeAvwvvtAX3ayQ==" }, "node_modules/lazysizes": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/lazysizes/-/lazysizes-5.3.2.tgz", - "integrity": "sha512-22UzWP+Vedi/sMeOr8O7FWimRVtiNJV2HCa+V8+peZOw6QbswN9k58VUhd7i6iK5bw5QkYrF01LJbeJe0PV8jg==", - "dev": true + "integrity": "sha512-22UzWP+Vedi/sMeOr8O7FWimRVtiNJV2HCa+V8+peZOw6QbswN9k58VUhd7i6iK5bw5QkYrF01LJbeJe0PV8jg==" }, "node_modules/levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" @@ -4666,25 +4662,22 @@ } }, "node_modules/lilconfig": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", - "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", - "dev": true, + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.0.0.tgz", + "integrity": "sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==", "engines": { - "node": ">=10" + "node": ">=14" } }, "node_modules/lines-and-columns": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" }, "node_modules/linkify-it": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-4.0.1.tgz", "integrity": "sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw==", - "dev": true, "dependencies": { "uc.micro": "^1.0.1" } @@ -4693,7 +4686,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, "dependencies": { "p-locate": "^5.0.0" }, @@ -4707,32 +4699,27 @@ "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, "node_modules/lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", - "dev": true + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" }, "node_modules/lodash.truncate": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", - "dev": true + "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==" }, "node_modules/loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dev": true, "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, @@ -4741,19 +4728,20 @@ } }, "node_modules/lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", - "dev": true, + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", + "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==", "engines": { - "node": ">=8" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, "dependencies": { "yallist": "^3.0.2" } @@ -4762,7 +4750,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "dev": true, "dependencies": { "pify": "^4.0.1", "semver": "^5.6.0" @@ -4775,25 +4762,14 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true, "engines": { "node": ">=6" } }, - "node_modules/make-dir/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, "node_modules/map-obj": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", - "dev": true, "engines": { "node": ">=8" }, @@ -4805,7 +4781,6 @@ "version": "13.0.1", "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-13.0.1.tgz", "integrity": "sha512-lTlxriVoy2criHP0JKRhO2VDG9c2ypWCsT237eDiLqi09rmbKoUetyGHq2uOIRoRS//kfoJckS0eUzzkDR+k2Q==", - "dev": true, "dependencies": { "argparse": "^2.0.1", "entities": "~3.0.1", @@ -4818,10 +4793,9 @@ } }, "node_modules/markdownlint": { - "version": "0.30.0", - "resolved": "https://registry.npmjs.org/markdownlint/-/markdownlint-0.30.0.tgz", - "integrity": "sha512-nInuFvI/rEzanAOArW5490Ez4EYpB5ODqVM0mcDYCPx9DKJWCQqCgejjiCvbSeE7sjbDscVtZmwr665qpF5xGA==", - "dev": true, + "version": "0.31.1", + "resolved": "https://registry.npmjs.org/markdownlint/-/markdownlint-0.31.1.tgz", + "integrity": "sha512-CKMR2hgcIBrYlIUccDCOvi966PZ0kJExDrUi1R+oF9PvqQmCrTqjOsgIvf2403OmJ+CWomuzDoylr6KbuMyvHA==", "dependencies": { "markdown-it": "13.0.1", "markdownlint-micromark": "0.1.7" @@ -4831,17 +4805,16 @@ } }, "node_modules/markdownlint-cli2": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/markdownlint-cli2/-/markdownlint-cli2-0.9.2.tgz", - "integrity": "sha512-ndijEHIOikcs29W8068exHXlfkFviGFT/mPhREia7zSfQzHvTDkL2s+tWizvELjLHiKRO4KGTkkJyR3oeR8A5g==", - "dev": true, + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/markdownlint-cli2/-/markdownlint-cli2-0.10.0.tgz", + "integrity": "sha512-kVxjPyKFC+eW7iqcxiNI50RDzwugpXkEX5eQlDso/0IUs9M73jXYguLFHDzgi5KatcxU/57Fu8KoGtkFft9lfA==", "dependencies": { "globby": "13.2.2", - "markdownlint": "0.30.0", + "markdownlint": "0.31.1", "markdownlint-cli2-formatter-default": "0.0.4", "micromatch": "4.0.5", "strip-json-comments": "5.0.1", - "yaml": "2.3.1" + "yaml": "2.3.2" }, "bin": { "markdownlint-cli2": "markdownlint-cli2.js", @@ -4856,47 +4829,14 @@ "version": "0.0.4", "resolved": "https://registry.npmjs.org/markdownlint-cli2-formatter-default/-/markdownlint-cli2-formatter-default-0.0.4.tgz", "integrity": "sha512-xm2rM0E+sWgjpPn1EesPXx5hIyrN2ddUnUwnbCsD/ONxYtw3PX6LydvdH6dciWAoFDpwzbHM1TO7uHfcMd6IYg==", - "dev": true, "peerDependencies": { "markdownlint-cli2": ">=0.0.4" } }, - "node_modules/markdownlint-cli2/node_modules/globby": { - "version": "13.2.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz", - "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==", - "dev": true, - "dependencies": { - "dir-glob": "^3.0.1", - "fast-glob": "^3.3.0", - "ignore": "^5.2.4", - "merge2": "^1.4.1", - "slash": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/markdownlint-cli2/node_modules/slash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", - "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/markdownlint-cli2/node_modules/strip-json-comments": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-5.0.1.tgz", "integrity": "sha512-0fk9zBqO67Nq5M/m45qHCJxylV/DhBlIOVExqgOMiCCrzrhU6tCibRXNqE3jwJLftzE9SNuZtYbpzcO+i9FiKw==", - "dev": true, "engines": { "node": ">=14.16" }, @@ -4908,7 +4848,6 @@ "version": "0.1.7", "resolved": "https://registry.npmjs.org/markdownlint-micromark/-/markdownlint-micromark-0.1.7.tgz", "integrity": "sha512-BbRPTC72fl5vlSKv37v/xIENSRDYL/7X/XoFzZ740FGEbs9vZerLrIkFRY0rv7slQKxDczToYuMmqQFN61fi4Q==", - "dev": true, "engines": { "node": ">=16" } @@ -4917,39 +4856,41 @@ "version": "2.1.3", "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz", "integrity": "sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==", - "dev": true, "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/mdn-data": { + "version": "2.0.30", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", + "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==" + }, "node_modules/mdurl": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", - "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==", - "dev": true + "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==" }, "node_modules/meow": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", - "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", - "dev": true, + "version": "10.1.5", + "resolved": "https://registry.npmjs.org/meow/-/meow-10.1.5.tgz", + "integrity": "sha512-/d+PQ4GKmGvM9Bee/DPa8z3mXs/pkvJE2KEThngVNOqtmljC6K7NMPxtc2JeZYTmpWb9k/TmxjeL18ez3h7vCw==", "dependencies": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize": "^1.2.0", + "@types/minimist": "^1.2.2", + "camelcase-keys": "^7.0.0", + "decamelize": "^5.0.0", "decamelize-keys": "^1.1.0", "hard-rejection": "^2.1.0", "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.18.0", - "yargs-parser": "^20.2.3" + "normalize-package-data": "^3.0.2", + "read-pkg-up": "^8.0.0", + "redent": "^4.0.0", + "trim-newlines": "^4.0.2", + "type-fest": "^1.2.2", + "yargs-parser": "^20.2.9" }, "engines": { - "node": ">=10" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -4959,7 +4900,6 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, "engines": { "node": ">= 8" } @@ -4968,7 +4908,6 @@ "version": "4.0.5", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, "dependencies": { "braces": "^3.0.2", "picomatch": "^2.3.1" @@ -4977,11 +4916,21 @@ "node": ">=8.6" } }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/mimic-response": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", - "dev": true, "engines": { "node": ">=4" } @@ -4990,7 +4939,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", - "dev": true, "engines": { "node": ">=4" } @@ -4999,7 +4947,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -5011,7 +4958,6 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -5020,7 +4966,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", - "dev": true, "dependencies": { "arrify": "^1.0.1", "is-plain-obj": "^1.1.0", @@ -5030,17 +4975,31 @@ "node": ">= 6" } }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/modern-css-reset": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/modern-css-reset/-/modern-css-reset-1.4.0.tgz", + "integrity": "sha512-0crZmSFmrxkI7159rvQWjpDhy0u4+Awg/iOycJdlVn0RSeft/a+6BrQHR3IqvmdK25sqt0o6Z5Ap7cWgUee2rw==" + }, "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/nanoid": { "version": "3.3.7", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", - "dev": true, "funding": [ { "type": "github", @@ -5057,47 +5016,20 @@ "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" }, "node_modules/netlify-plugin-submit-sitemap": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/netlify-plugin-submit-sitemap/-/netlify-plugin-submit-sitemap-0.4.0.tgz", "integrity": "sha512-5ntDtSKZRHaCDrDXh4sH4V7lNEEsoi01lsmSUuqJ/ikPHf0XEErjsKba8TsM3iaZRYEHI9bQse3BWgguwuwIIQ==", - "dev": true, "dependencies": { "node-fetch": "^3.2.3" } }, - "node_modules/netlify-plugin-submit-sitemap/node_modules/node-fetch": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", - "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", - "dev": true, - "dependencies": { - "data-uri-to-buffer": "^4.0.0", - "fetch-blob": "^3.1.4", - "formdata-polyfill": "^4.0.10" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/node-fetch" - } - }, "node_modules/node-domexception": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", - "dev": true, "funding": [ { "type": "github", @@ -5113,36 +5045,31 @@ } }, "node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "dev": true, + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", "dependencies": { - "whatwg-url": "^5.0.0" + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" }, "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" } }, "node_modules/node-releases": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", - "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", - "dev": true + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==" }, "node_modules/normalize-package-data": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", - "dev": true, "dependencies": { "hosted-git-info": "^4.0.1", "is-core-module": "^2.5.0", @@ -5153,44 +5080,10 @@ "node": ">=10" } }, - "node_modules/normalize-package-data/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/normalize-package-data/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/normalize-package-data/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -5199,7 +5092,6 @@ "version": "0.1.2", "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -5208,7 +5100,6 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", - "dev": true, "engines": { "node": ">=10" }, @@ -5220,16 +5111,22 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, "engines": { "node": ">=0.10.0" } }, + "node_modules/object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/object-path": { "version": "0.11.8", "resolved": "https://registry.npmjs.org/object-path/-/object-path-0.11.8.tgz", "integrity": "sha512-YJjNZrlXJFM42wTBn6zgOJVar9KFJvzx6sTWDte8sWZF//cnjl0BxHNpfZx+ZffXX63A9q0b1zsFiBX4g4X5KA==", - "dev": true, "engines": { "node": ">= 10.12.0" } @@ -5238,16 +5135,22 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, "dependencies": { "wrappy": "1" } }, + "node_modules/opener": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", + "bin": { + "opener": "bin/opener-bin.js" + } + }, "node_modules/optionator": { "version": "0.9.3", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", - "dev": true, "dependencies": { "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", @@ -5261,19 +5164,17 @@ } }, "node_modules/p-cancelable": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", - "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", - "dev": true, + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", + "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", "engines": { - "node": ">=8" + "node": ">=12.20" } }, "node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, "dependencies": { "yocto-queue": "^0.1.0" }, @@ -5288,7 +5189,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, "dependencies": { "p-limit": "^3.0.2" }, @@ -5300,15 +5200,14 @@ } }, "node_modules/p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-5.5.0.tgz", + "integrity": "sha512-VFqfGDHlx87K66yZrNdI4YGtD70IRyd+zSvgks6mzHPRNkoKy+9EKP4SFC77/vTTQYmRmti7dvqC+m5jBrBAcg==", "dependencies": { - "aggregate-error": "^3.0.0" + "aggregate-error": "^4.0.0" }, "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -5318,7 +5217,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, "engines": { "node": ">=6" } @@ -5327,7 +5225,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, "dependencies": { "callsites": "^3.0.0" }, @@ -5335,23 +5232,10 @@ "node": ">=6" } }, - "node_modules/parse-github-url": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/parse-github-url/-/parse-github-url-1.0.2.tgz", - "integrity": "sha512-kgBf6avCbO3Cn6+RnzRGLkUsv4ZVqv/VfAYkRsyBcgkshNvVBkRn1FEZcW0Jb+npXQWm2vHPnnOqFteZxRRGNw==", - "dev": true, - "bin": { - "parse-github-url": "cli.js" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/parse-json": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", @@ -5369,7 +5253,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, "engines": { "node": ">=8" } @@ -5378,7 +5261,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -5387,7 +5269,6 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, "engines": { "node": ">=8" } @@ -5395,14 +5276,12 @@ "node_modules/path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, "node_modules/path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, "engines": { "node": ">=8" } @@ -5410,20 +5289,17 @@ "node_modules/pend": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", - "dev": true + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" }, "node_modules/picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" }, "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, "engines": { "node": ">=8.6" }, @@ -5435,7 +5311,6 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -5444,7 +5319,6 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -5453,7 +5327,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", - "dev": true, "dependencies": { "pinkie": "^2.0.0" }, @@ -5461,11 +5334,31 @@ "node": ">=0.10.0" } }, + "node_modules/portfinder": { + "version": "1.0.32", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.32.tgz", + "integrity": "sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==", + "dependencies": { + "async": "^2.6.4", + "debug": "^3.2.7", + "mkdirp": "^0.5.6" + }, + "engines": { + "node": ">= 0.12.0" + } + }, + "node_modules/portfinder/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dependencies": { + "ms": "^2.1.1" + } + }, "node_modules/postcss": { "version": "8.4.32", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.32.tgz", "integrity": "sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==", - "dev": true, "funding": [ { "type": "opencollective", @@ -5493,7 +5386,6 @@ "version": "10.1.0", "resolved": "https://registry.npmjs.org/postcss-cli/-/postcss-cli-10.1.0.tgz", "integrity": "sha512-Zu7PLORkE9YwNdvOeOVKPmWghprOtjFQU3srMUGbdz3pHJiFh7yZ4geiZFMkjMfB0mtTFR3h8RemR62rPkbOPA==", - "dev": true, "dependencies": { "chokidar": "^3.3.0", "dependency-graph": "^0.11.0", @@ -5518,56 +5410,10 @@ "postcss": "^8.0.0" } }, - "node_modules/postcss-cli/node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/postcss-cli/node_modules/globby": { - "version": "13.2.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz", - "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==", - "dev": true, - "dependencies": { - "dir-glob": "^3.0.1", - "fast-glob": "^3.3.0", - "ignore": "^5.2.4", - "merge2": "^1.4.1", - "slash": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/postcss-cli/node_modules/globby/node_modules/slash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", - "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/postcss-cli/node_modules/slash": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", - "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", - "dev": true, + "node_modules/postcss-cli/node_modules/slash": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", + "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", "engines": { "node": ">=14.16" }, @@ -5575,49 +5421,27 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/postcss-cli/node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "dev": true, - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/postcss-cli/node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true, - "engines": { - "node": ">=12" - } - }, "node_modules/postcss-load-config": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.1.tgz", - "integrity": "sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==", - "dev": true, + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", + "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "dependencies": { - "lilconfig": "^2.0.5", - "yaml": "^2.1.1" + "lilconfig": "^3.0.0", + "yaml": "^2.3.4" }, "engines": { "node": ">= 14" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, "peerDependencies": { "postcss": ">=8.0.9", "ts-node": ">=9.0.0" @@ -5631,17 +5455,23 @@ } } }, + "node_modules/postcss-load-config/node_modules/yaml": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz", + "integrity": "sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==", + "engines": { + "node": ">= 14" + } + }, "node_modules/postcss-media-query-parser": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", - "integrity": "sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==", - "dev": true + "integrity": "sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==" }, "node_modules/postcss-reporter": { "version": "7.0.5", "resolved": "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-7.0.5.tgz", "integrity": "sha512-glWg7VZBilooZGOFPhN9msJ3FQs19Hie7l5a/eE6WglzYqVeH3ong3ShFcp9kDWJT1g2Y/wd59cocf9XxBtkWA==", - "dev": true, "dependencies": { "picocolors": "^1.0.0", "thenby": "^1.3.4" @@ -5660,14 +5490,12 @@ "node_modules/postcss-resolve-nested-selector": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz", - "integrity": "sha512-HvExULSwLqHLgUy1rl3ANIqCsvMS0WHss2UOsXhXnQaZ9VCc2oBvIpXrl00IUFT5ZDITME0o6oiXeiHr2SAIfw==", - "dev": true + "integrity": "sha512-HvExULSwLqHLgUy1rl3ANIqCsvMS0WHss2UOsXhXnQaZ9VCc2oBvIpXrl00IUFT5ZDITME0o6oiXeiHr2SAIfw==" }, "node_modules/postcss-safe-parser": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz", "integrity": "sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==", - "dev": true, "engines": { "node": ">=12.0" }, @@ -5680,10 +5508,9 @@ } }, "node_modules/postcss-scss": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.8.tgz", - "integrity": "sha512-Cr0X8Eu7xMhE96PJck6ses/uVVXDtE5ghUTKNUYgm8ozgP2TkgV3LWs3WgLV1xaSSLq8ZFiXaUrj0LVgG1fGEA==", - "dev": true, + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.9.tgz", + "integrity": "sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==", "funding": [ { "type": "opencollective", @@ -5706,10 +5533,9 @@ } }, "node_modules/postcss-selector-parser": { - "version": "6.0.13", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", - "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", - "dev": true, + "version": "6.0.14", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.14.tgz", + "integrity": "sha512-65xXYsT40i9GyWzlHQ5ShZoK7JZdySeOozi/tz2EezDo6c04q6+ckYMeoY7idaie1qp2dT5KoYQ2yky6JuoHnA==", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -5721,14 +5547,12 @@ "node_modules/postcss-value-parser": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dev": true + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, "engines": { "node": ">= 0.8.0" } @@ -5737,7 +5561,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", "integrity": "sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==", - "dev": true, "engines": { "node": ">= 0.8" } @@ -5745,24 +5568,32 @@ "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "peer": true, + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } }, "node_modules/pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" } }, "node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "dev": true, + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "engines": { "node": ">=6" } @@ -5771,7 +5602,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/purgecss/-/purgecss-5.0.0.tgz", "integrity": "sha512-RAnuxrGuVyLLTr8uMbKaxDRGWMgK5CCYDfRyUNNcaz5P3kGgD2b7ymQGYEyo2ST7Tl/ScwFgf5l3slKMxHSbrw==", - "dev": true, "dependencies": { "commander": "^9.0.0", "glob": "^8.0.3", @@ -5786,7 +5616,6 @@ "version": "2.4.0", "resolved": "https://registry.npmjs.org/purgecss-whitelister/-/purgecss-whitelister-2.4.0.tgz", "integrity": "sha512-O0jBUDtY9dU9tUT0vA1FvwFdkKDerxzteYaBV49JCbm+QJLFKMlIsf5Kp5cdbLatHQNjJtV8VB8eXtISoZL2Dg==", - "dev": true, "dependencies": { "glob-all": "^3.1.0", "gonzales-pe": "^4.2.4", @@ -5797,7 +5626,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, "dependencies": { "balanced-match": "^1.0.0" } @@ -5806,7 +5634,6 @@ "version": "9.5.0", "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", - "dev": true, "engines": { "node": "^12.20.0 || >=14" } @@ -5815,7 +5642,6 @@ "version": "8.1.0", "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -5834,7 +5660,6 @@ "version": "5.1.6", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dev": true, "dependencies": { "brace-expansion": "^2.0.1" }, @@ -5842,11 +5667,24 @@ "node": ">=10" } }, + "node_modules/qs": { + "version": "6.11.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", + "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, "funding": [ { "type": "github", @@ -5866,7 +5704,6 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", - "dev": true, "engines": { "node": ">=10" }, @@ -5874,149 +5711,99 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/read-cache": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", - "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", - "dev": true, - "dependencies": { - "pify": "^2.3.0" - } - }, - "node_modules/read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "dev": true, + "node_modules/quicklink": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/quicklink/-/quicklink-2.3.0.tgz", + "integrity": "sha512-FyTanYArl5Gz2/C0ZjErvfFJtem/+d1RM4eK0jiXO6mL4Zjje+xsYtcK3ZtKX2Yb3HSfah5HekWrH2qhttYQjQ==", "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" + "route-manifest": "^1.0.0", + "throttles": "^1.0.0" }, - "engines": { - "node": ">=8" + "peerDependencies": { + "react": "^16.8.0", + "react-dom": "^16.8.0" } }, - "node_modules/read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", - "dev": true, + "node_modules/react": { + "version": "16.14.0", + "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", + "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", + "peer": true, "dependencies": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, - "node_modules/read-pkg-up/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, + "node_modules/react-dom": { + "version": "16.14.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz", + "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==", + "peer": true, "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2", + "scheduler": "^0.19.1" }, - "engines": { - "node": ">=8" + "peerDependencies": { + "react": "^16.14.0" } }, - "node_modules/read-pkg-up/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "peer": true + }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" + "pify": "^2.3.0" } }, - "node_modules/read-pkg-up/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, + "node_modules/read-pkg": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-6.0.0.tgz", + "integrity": "sha512-X1Fu3dPuk/8ZLsMhEj5f4wFAF0DWoK7qhGJvgaijocXxBmSToKfbFtqbxMO7bVjNA1dmE5huAzjXj/ey86iw9Q==", "dependencies": { - "p-try": "^2.0.0" + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^3.0.2", + "parse-json": "^5.2.0", + "type-fest": "^1.0.1" }, "engines": { - "node": ">=6" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/read-pkg-up/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, + "node_modules/read-pkg-up": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-8.0.0.tgz", + "integrity": "sha512-snVCqPczksT0HS2EC+SxUndvSzn6LRCwpfSvLrIfR5BKDQQZMaI6jPRC9dYvYFDRAuFEAnkwww8kBBNE/3VvzQ==", "dependencies": { - "p-limit": "^2.2.0" + "find-up": "^5.0.0", + "read-pkg": "^6.0.0", + "type-fest": "^1.0.1" }, "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg-up/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg/node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true - }, - "node_modules/read-pkg/node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/read-pkg/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/read-pkg/node_modules/type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "dev": true, - "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/readable-stream": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -6027,17 +5814,10 @@ "util-deprecate": "~1.0.1" } }, - "node_modules/readable-stream/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, "node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, "dependencies": { "picomatch": "^2.2.1" }, @@ -6049,7 +5829,6 @@ "version": "0.6.2", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", - "dev": true, "dependencies": { "resolve": "^1.1.6" }, @@ -6058,29 +5837,29 @@ } }, "node_modules/redent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", - "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", - "dev": true, + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-4.0.0.tgz", + "integrity": "sha512-tYkDkVVtYkSVhuQ4zBgfvciymHaeuel+zFKXShfDnFP5SyVEP7qo70Rf1jTOTCx3vGNAbnEi/xFkcfQVMIBWag==", "dependencies": { - "indent-string": "^4.0.0", - "strip-indent": "^3.0.0" + "indent-string": "^5.0.0", + "strip-indent": "^4.0.0" }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/regenerate": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "dev": true + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" }, "node_modules/regenerate-unicode-properties": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", - "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", - "dev": true, + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", + "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", "dependencies": { "regenerate": "^1.4.2" }, @@ -6089,25 +5868,30 @@ } }, "node_modules/regenerator-runtime": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", - "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==", - "dev": true + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" }, "node_modules/regenerator-transform": { "version": "0.15.2", "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", - "dev": true, "dependencies": { "@babel/runtime": "^7.8.4" } }, + "node_modules/regexparam": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/regexparam/-/regexparam-1.3.0.tgz", + "integrity": "sha512-6IQpFBv6e5vz1QAqI+V4k8P2e/3gRrqfCJ9FI+O1FLQTO+Uz6RXZEZOPmTJ6hlGj7gkERzY5BRCv09whKP96/g==", + "engines": { + "node": ">=6" + } + }, "node_modules/regexpu-core": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", - "dev": true, "dependencies": { "@babel/regjsgen": "^0.8.0", "regenerate": "^1.4.2", @@ -6124,7 +5908,6 @@ "version": "0.9.1", "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", - "dev": true, "dependencies": { "jsesc": "~0.5.0" }, @@ -6136,7 +5919,6 @@ "version": "0.5.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", - "dev": true, "bin": { "jsesc": "bin/jsesc" } @@ -6145,7 +5927,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -6154,7 +5935,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -6162,14 +5942,17 @@ "node_modules/require-main-filename": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" }, "node_modules/resolve": { - "version": "1.22.4", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.4.tgz", - "integrity": "sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==", - "dev": true, + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", @@ -6185,25 +5968,25 @@ "node_modules/resolve-alpn": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", - "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", - "dev": true + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==" }, "node_modules/resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, "engines": { "node": ">=4" } }, "node_modules/responselike": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", - "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", - "dev": true, + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz", + "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==", "dependencies": { - "lowercase-keys": "^2.0.0" + "lowercase-keys": "^3.0.0" + }, + "engines": { + "node": ">=14.16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -6213,7 +5996,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" @@ -6223,7 +6005,6 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, "dependencies": { "glob": "^7.1.3" }, @@ -6234,11 +6015,21 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/route-manifest": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/route-manifest/-/route-manifest-1.0.0.tgz", + "integrity": "sha512-qn0xJr4nnF4caj0erOLLAHYiNyzqhzpUbgDQcEHrmBoG4sWCDLnIXLH7VccNSxe9cWgbP2Kw/OjME+eH3CeRSA==", + "dependencies": { + "regexparam": "^1.3.0" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, "funding": [ { "type": "github", @@ -6258,30 +6049,29 @@ } }, "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/scheduler": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", + "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } }, "node_modules/scss-parser": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/scss-parser/-/scss-parser-1.0.3.tgz", "integrity": "sha512-XQKCfOJERmhn1yoNRUyxv9wgkf4DIv29Jk0m4FiZforeiCmGxrby8K3not7tQ8GK1yvtd9N0OnNimNetJ8V+zQ==", - "dev": true, "dependencies": { "invariant": "2.2.2", "lodash": "^4.17.4" @@ -6290,11 +6080,15 @@ "node": ">=6.0.0" } }, + "node_modules/secure-compare": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/secure-compare/-/secure-compare-3.0.1.tgz", + "integrity": "sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw==" + }, "node_modules/seek-bzip": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.6.tgz", "integrity": "sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ==", - "dev": true, "dependencies": { "commander": "^2.8.1" }, @@ -6306,35 +6100,66 @@ "node_modules/seek-bzip/node_modules/commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" }, "node_modules/select": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz", - "integrity": "sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA==", - "dev": true + "integrity": "sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA==" }, "node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dependencies": { + "lru-cache": "^6.0.0" + }, "bin": { "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" } }, + "node_modules/semver/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, "node_modules/set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "dev": true + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" + }, + "node_modules/set-function-length": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", + "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "dependencies": { + "define-data-property": "^1.1.1", + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, "dependencies": { "shebang-regex": "^3.0.0" }, @@ -6346,7 +6171,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, "engines": { "node": ">=8" } @@ -6355,7 +6179,6 @@ "version": "0.8.5", "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", - "dev": true, "dependencies": { "glob": "^7.0.0", "interpret": "^1.0.0", @@ -6372,7 +6195,6 @@ "version": "0.3.4", "resolved": "https://registry.npmjs.org/shx/-/shx-0.3.4.tgz", "integrity": "sha512-N6A9MLVqjxZYcVn8hLmtneQWIJtp8IKzMP4eMnx+nqkvXoqinUPCbUFLp2UcWTEIUONhlk0ewxr/jaVGlc+J+g==", - "dev": true, "dependencies": { "minimist": "^1.2.3", "shelljs": "^0.8.5" @@ -6384,17 +6206,34 @@ "node": ">=6" } }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "node_modules/slash": { + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/slash": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", - "dev": true, "engines": { "node": ">=6" } @@ -6403,7 +6242,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, "dependencies": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", @@ -6420,7 +6258,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -6435,7 +6272,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "dependencies": { "color-name": "~1.1.4" }, @@ -6446,23 +6282,12 @@ "node_modules/slice-ansi/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/source-map-js": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -6471,7 +6296,6 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", - "dev": true, "dependencies": { "spdx-expression-parse": "^3.0.0", "spdx-license-ids": "^3.0.0" @@ -6480,45 +6304,34 @@ "node_modules/spdx-exceptions": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "dev": true + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" }, "node_modules/spdx-expression-parse": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, "dependencies": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" } }, "node_modules/spdx-license-ids": { - "version": "3.0.13", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz", - "integrity": "sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==", - "dev": true + "version": "3.0.16", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz", + "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==" }, "node_modules/string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, "dependencies": { "safe-buffer": "~5.1.0" } }, - "node_modules/string_decoder/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, "node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -6532,7 +6345,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, "dependencies": { "ansi-regex": "^5.0.1" }, @@ -6544,28 +6356,28 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-2.1.0.tgz", "integrity": "sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==", - "dev": true, "dependencies": { "is-natural-number": "^4.0.1" } }, "node_modules/strip-indent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", - "dev": true, + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-4.0.0.tgz", + "integrity": "sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==", "dependencies": { - "min-indent": "^1.0.0" + "min-indent": "^1.0.1" }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, "engines": { "node": ">=8" }, @@ -6576,59 +6388,59 @@ "node_modules/style-search": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz", - "integrity": "sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==", - "dev": true + "integrity": "sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==" }, "node_modules/stylelint": { - "version": "14.16.1", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-14.16.1.tgz", - "integrity": "sha512-ErlzR/T3hhbV+a925/gbfc3f3Fep9/bnspMiJPorfGEmcBbXdS+oo6LrVtoUZ/w9fqD6o6k7PtUlCOsCRdjX/A==", - "dev": true, - "dependencies": { - "@csstools/selector-specificity": "^2.0.2", + "version": "15.11.0", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-15.11.0.tgz", + "integrity": "sha512-78O4c6IswZ9TzpcIiQJIN49K3qNoXTM8zEJzhaTE/xRTCZswaovSEVIa/uwbOltZrk16X4jAxjaOhzz/hTm1Kw==", + "dependencies": { + "@csstools/css-parser-algorithms": "^2.3.1", + "@csstools/css-tokenizer": "^2.2.0", + "@csstools/media-query-list-parser": "^2.1.4", + "@csstools/selector-specificity": "^3.0.0", "balanced-match": "^2.0.0", "colord": "^2.9.3", - "cosmiconfig": "^7.1.0", - "css-functions-list": "^3.1.0", + "cosmiconfig": "^8.2.0", + "css-functions-list": "^3.2.1", + "css-tree": "^2.3.1", "debug": "^4.3.4", - "fast-glob": "^3.2.12", + "fast-glob": "^3.3.1", "fastest-levenshtein": "^1.0.16", - "file-entry-cache": "^6.0.1", + "file-entry-cache": "^7.0.0", "global-modules": "^2.0.0", "globby": "^11.1.0", "globjoin": "^0.1.4", - "html-tags": "^3.2.0", - "ignore": "^5.2.1", + "html-tags": "^3.3.1", + "ignore": "^5.2.4", "import-lazy": "^4.0.0", "imurmurhash": "^0.1.4", "is-plain-object": "^5.0.0", - "known-css-properties": "^0.26.0", + "known-css-properties": "^0.29.0", "mathml-tag-names": "^2.1.3", - "meow": "^9.0.0", + "meow": "^10.1.5", "micromatch": "^4.0.5", "normalize-path": "^3.0.0", "picocolors": "^1.0.0", - "postcss": "^8.4.19", - "postcss-media-query-parser": "^0.2.3", + "postcss": "^8.4.28", "postcss-resolve-nested-selector": "^0.1.1", "postcss-safe-parser": "^6.0.0", - "postcss-selector-parser": "^6.0.11", + "postcss-selector-parser": "^6.0.13", "postcss-value-parser": "^4.2.0", "resolve-from": "^5.0.0", "string-width": "^4.2.3", "strip-ansi": "^6.0.1", "style-search": "^0.1.0", - "supports-hyperlinks": "^2.3.0", + "supports-hyperlinks": "^3.0.0", "svg-tags": "^1.0.0", "table": "^6.8.1", - "v8-compile-cache": "^2.3.0", - "write-file-atomic": "^4.0.2" + "write-file-atomic": "^5.0.1" }, "bin": { - "stylelint": "bin/stylelint.js" + "stylelint": "bin/stylelint.mjs" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": "^14.13.1 || >=16.0.0" }, "funding": { "type": "opencollective", @@ -6636,62 +6448,76 @@ } }, "node_modules/stylelint-config-recommended": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-8.0.0.tgz", - "integrity": "sha512-IK6dWvE000+xBv9jbnHOnBq01gt6HGVB2ZTsot+QsMpe82doDQ9hvplxfv4YnpEuUwVGGd9y6nbaAnhrjcxhZQ==", - "dev": true, + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-13.0.0.tgz", + "integrity": "sha512-EH+yRj6h3GAe/fRiyaoO2F9l9Tgg50AOFhaszyfov9v6ayXJ1IkSHwTxd7lB48FmOeSGDPLjatjO11fJpmarkQ==", + "engines": { + "node": "^14.13.1 || >=16.0.0" + }, "peerDependencies": { - "stylelint": "^14.8.0" + "stylelint": "^15.10.0" } }, "node_modules/stylelint-config-recommended-scss": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-7.0.0.tgz", - "integrity": "sha512-rGz1J4rMAyJkvoJW4hZasuQBB7y9KIrShb20l9DVEKKZSEi1HAy0vuNlR8HyCKy/jveb/BdaQFcoiYnmx4HoiA==", - "dev": true, + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-13.1.0.tgz", + "integrity": "sha512-8L5nDfd+YH6AOoBGKmhH8pLWF1dpfY816JtGMePcBqqSsLU+Ysawx44fQSlMOJ2xTfI9yTGpup5JU77c17w1Ww==", "dependencies": { - "postcss-scss": "^4.0.2", - "stylelint-config-recommended": "^8.0.0", - "stylelint-scss": "^4.0.0" + "postcss-scss": "^4.0.9", + "stylelint-config-recommended": "^13.0.0", + "stylelint-scss": "^5.3.0" }, "peerDependencies": { - "stylelint": "^14.4.0" + "postcss": "^8.3.3", + "stylelint": "^15.10.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + } } }, "node_modules/stylelint-config-standard": { - "version": "26.0.0", - "resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-26.0.0.tgz", - "integrity": "sha512-hUuB7LaaqM8abvkOO84wh5oYSkpXgTzHu2Zza6e7mY+aOmpNTjoFBRxSLlzY0uAOMWEFx0OMKzr+reG1BUtcqQ==", - "dev": true, + "version": "34.0.0", + "resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-34.0.0.tgz", + "integrity": "sha512-u0VSZnVyW9VSryBG2LSO+OQTjN7zF9XJaAJRX/4EwkmU0R2jYwmBSN10acqZisDitS0CLiEiGjX7+Hrq8TAhfQ==", "dependencies": { - "stylelint-config-recommended": "^8.0.0" + "stylelint-config-recommended": "^13.0.0" + }, + "engines": { + "node": "^14.13.1 || >=16.0.0" }, "peerDependencies": { - "stylelint": "^14.9.0" + "stylelint": "^15.10.0" } }, "node_modules/stylelint-config-standard-scss": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/stylelint-config-standard-scss/-/stylelint-config-standard-scss-5.0.0.tgz", - "integrity": "sha512-zoXLibojHZYPFjtkc4STZtAJ2yGTq3Bb4MYO0oiyO6f/vNxDKRcSDZYoqN260Gv2eD5niQIr1/kr5SXlFj9kcQ==", - "dev": true, + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/stylelint-config-standard-scss/-/stylelint-config-standard-scss-11.1.0.tgz", + "integrity": "sha512-5gnBgeNTgRVdchMwiFQPuBOtj9QefYtfXiddrOMJA2pI22zxt6ddI2s+e5Oh7/6QYl7QLJujGnaUR5YyGq72ow==", "dependencies": { - "stylelint-config-recommended-scss": "^7.0.0", - "stylelint-config-standard": "^26.0.0" + "stylelint-config-recommended-scss": "^13.1.0", + "stylelint-config-standard": "^34.0.0" }, "peerDependencies": { - "stylelint": "^14.9.0" + "postcss": "^8.3.3", + "stylelint": "^15.10.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + } } }, "node_modules/stylelint-scss": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-4.7.0.tgz", - "integrity": "sha512-TSUgIeS0H3jqDZnby1UO1Qv3poi1N8wUYIJY6D1tuUq2MN3lwp/rITVo0wD+1SWTmRm0tNmGO0b7nKInnqF6Hg==", - "dev": true, + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-5.3.2.tgz", + "integrity": "sha512-4LzLaayFhFyneJwLo0IUa8knuIvj+zF0vBFueQs4e3tEaAMIQX8q5th8ziKkgOavr6y/y9yoBe+RXN/edwLzsQ==", "dependencies": { + "known-css-properties": "^0.29.0", "postcss-media-query-parser": "^0.2.3", "postcss-resolve-nested-selector": "^0.1.1", - "postcss-selector-parser": "^6.0.11", + "postcss-selector-parser": "^6.0.13", "postcss-value-parser": "^4.2.0" }, "peerDependencies": { @@ -6701,14 +6527,50 @@ "node_modules/stylelint/node_modules/balanced-match": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz", - "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==", - "dev": true + "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==" + }, + "node_modules/stylelint/node_modules/file-entry-cache": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-7.0.2.tgz", + "integrity": "sha512-TfW7/1iI4Cy7Y8L6iqNdZQVvdXn0f8B4QcIXmkIbtTIe/Okm/nSlHb4IwGzRVOd3WfSieCgvf5cMzEfySAIl0g==", + "dependencies": { + "flat-cache": "^3.2.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/stylelint/node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "node_modules/stylelint/node_modules/resolve-from": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/stylelint/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "engines": { "node": ">=8" } @@ -6717,7 +6579,6 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, "dependencies": { "has-flag": "^3.0.0" }, @@ -6726,23 +6587,21 @@ } }, "node_modules/supports-hyperlinks": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", - "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", - "dev": true, + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.0.0.tgz", + "integrity": "sha512-QBDPHyPQDRTy9ku4URNGY5Lah8PAaXs6tAAwp55sL5WCsSW7GIfdf6W5ixfziW+t7wh3GVvHyHHyQ1ESsoRvaA==", "dependencies": { "has-flag": "^4.0.0", "supports-color": "^7.0.0" }, "engines": { - "node": ">=8" + "node": ">=14.18" } }, "node_modules/supports-hyperlinks/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, "engines": { "node": ">=8" } @@ -6751,7 +6610,6 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -6763,7 +6621,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, "engines": { "node": ">= 0.4" }, @@ -6774,14 +6631,12 @@ "node_modules/svg-tags": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", - "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==", - "dev": true + "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==" }, "node_modules/table": { "version": "6.8.1", "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz", "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==", - "dev": true, "dependencies": { "ajv": "^8.0.1", "lodash.truncate": "^4.4.2", @@ -6797,7 +6652,6 @@ "version": "8.12.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "dev": true, "dependencies": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", @@ -6812,14 +6666,12 @@ "node_modules/table/node_modules/json-schema-traverse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" }, "node_modules/tar-stream": { "version": "1.6.2", "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz", "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==", - "dev": true, "dependencies": { "bl": "^1.0.0", "buffer-alloc": "^1.2.0", @@ -6836,38 +6688,40 @@ "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" }, "node_modules/thenby": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/thenby/-/thenby-1.3.4.tgz", - "integrity": "sha512-89Gi5raiWA3QZ4b2ePcEwswC3me9JIg+ToSgtE0JWeCynLnLxNr/f9G+xfo9K+Oj4AFdom8YNJjibIARTJmapQ==", - "dev": true + "integrity": "sha512-89Gi5raiWA3QZ4b2ePcEwswC3me9JIg+ToSgtE0JWeCynLnLxNr/f9G+xfo9K+Oj4AFdom8YNJjibIARTJmapQ==" + }, + "node_modules/throttles": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/throttles/-/throttles-1.0.1.tgz", + "integrity": "sha512-fab7Xg+zELr9KOv4fkaBoe/b3L0GMGLd0IBSCn16GoE/Qx6/OfCr1eGNyEcDU2pUA79qQfZ8kPQWlRuok4YwTw==", + "engines": { + "node": ">=6" + } }, "node_modules/through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "dev": true + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" }, "node_modules/tiny-emitter": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", - "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==", - "dev": true + "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==" }, "node_modules/to-buffer": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz", - "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==", - "dev": true + "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==" }, "node_modules/to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true, "engines": { "node": ">=4" } @@ -6876,7 +6730,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, "dependencies": { "is-number": "^7.0.0" }, @@ -6884,26 +6737,21 @@ "node": ">=8.0" } }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "dev": true - }, "node_modules/trim-newlines": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", - "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", - "dev": true, + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-4.1.1.tgz", + "integrity": "sha512-jRKj0n0jXWo6kh62nA5TEh3+4igKDXLvzBJcPpiizP7oOolUrYIxmVBG9TOtHYFHoddUk6YvAkGeGoSVTXfQXQ==", "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, "dependencies": { "prelude-ls": "^1.2.1" }, @@ -6912,10 +6760,9 @@ } }, "node_modules/type-fest": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", - "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", - "dev": true, + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", "engines": { "node": ">=10" }, @@ -6926,37 +6773,26 @@ "node_modules/uc.micro": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", - "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", - "dev": true - }, - "node_modules/uglify-js": { - "version": "3.17.4", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", - "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", - "dev": true, - "optional": true, - "bin": { - "uglifyjs": "bin/uglifyjs" - }, - "engines": { - "node": ">=0.8.0" - } + "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==" }, "node_modules/unbzip2-stream": { "version": "1.4.3", "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", - "dev": true, "dependencies": { "buffer": "^5.2.1", "through": "^2.3.8" } }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + }, "node_modules/unicode-canonical-property-names-ecmascript": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", - "dev": true, "engines": { "node": ">=4" } @@ -6965,7 +6801,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", - "dev": true, "dependencies": { "unicode-canonical-property-names-ecmascript": "^2.0.0", "unicode-property-aliases-ecmascript": "^2.0.0" @@ -6978,7 +6813,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", - "dev": true, "engines": { "node": ">=4" } @@ -6987,16 +6821,25 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", - "dev": true, "engines": { "node": ">=4" } }, + "node_modules/union": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/union/-/union-0.5.0.tgz", + "integrity": "sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA==", + "dependencies": { + "qs": "^6.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true, + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "engines": { "node": ">= 10.0.0" } @@ -7005,7 +6848,6 @@ "version": "1.0.13", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", - "dev": true, "funding": [ { "type": "opencollective", @@ -7035,28 +6877,24 @@ "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, "dependencies": { "punycode": "^2.1.0" } }, + "node_modules/url-join": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", + "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==" + }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true - }, - "node_modules/v8-compile-cache": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz", - "integrity": "sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==", - "dev": true + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, "node_modules/validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, "dependencies": { "spdx-correct": "^3.0.0", "spdx-expression-parse": "^3.0.0" @@ -7066,32 +6904,25 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==", - "dev": true, "engines": { "node": ">= 8" } }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "dev": true - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dev": true, + "node_modules/whatwg-encoding": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", + "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=12" } }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, "dependencies": { "isexe": "^2.0.0" }, @@ -7105,20 +6936,12 @@ "node_modules/which-module": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", - "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", - "dev": true - }, - "node_modules/wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", - "dev": true + "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==" }, "node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -7135,7 +6958,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -7150,7 +6972,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "dependencies": { "color-name": "~1.1.4" }, @@ -7161,33 +6982,29 @@ "node_modules/wrap-ansi/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "node_modules/write-file-atomic": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", - "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", - "dev": true, + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", + "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", "dependencies": { "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" + "signal-exit": "^4.0.1" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true, "engines": { "node": ">=0.4" } @@ -7196,7 +7013,6 @@ "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, "engines": { "node": ">=10" } @@ -7204,50 +7020,53 @@ "node_modules/yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" }, "node_modules/yaml": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.1.tgz", - "integrity": "sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==", - "dev": true, + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.2.tgz", + "integrity": "sha512-N/lyzTPaJasoDmfV7YTrYCI0G/3ivm/9wdG0aHuheKowWQwGTsK0Eoiw6utmzAnI6pkJa0DUVygvp3spqqEKXg==", "engines": { "node": ">= 14" } }, "node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, + "version": "17.5.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz", + "integrity": "sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==", "dependencies": { "cliui": "^7.0.2", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", - "string-width": "^4.2.0", + "string-width": "^4.2.3", "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" + "yargs-parser": "^21.0.0" }, "engines": { - "node": ">=10" + "node": ">=12" } }, "node_modules/yargs-parser": { "version": "20.2.9", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true, "engines": { "node": ">=10" } }, + "node_modules/yargs/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "engines": { + "node": ">=12" + } + }, "node_modules/yauzl": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", - "dev": true, "dependencies": { "buffer-crc32": "~0.2.3", "fd-slicer": "~1.1.0" @@ -7257,7 +7076,6 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, "engines": { "node": ">=10" }, @@ -7265,5 +7083,4863 @@ "url": "https://github.com/sponsors/sindresorhus" } } + }, + "dependencies": { + "@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==" + }, + "@ampproject/remapping": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", + "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "requires": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@babel/cli": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.23.4.tgz", + "integrity": "sha512-j3luA9xGKCXVyCa5R7lJvOMM+Kc2JEnAEIgz2ggtjQ/j5YUVgfsg/WsG95bbsgq7YLHuiCOzMnoSasuY16qiCw==", + "requires": { + "@jridgewell/trace-mapping": "^0.3.17", + "@nicolo-ribaudo/chokidar-2": "2.1.8-no-fsevents.3", + "chokidar": "^3.4.0", + "commander": "^4.0.1", + "convert-source-map": "^2.0.0", + "fs-readdir-recursive": "^1.1.0", + "glob": "^7.2.0", + "make-dir": "^2.1.0", + "slash": "^2.0.0" + } + }, + "@babel/code-frame": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", + "requires": { + "@babel/highlight": "^7.23.4", + "chalk": "^2.4.2" + } + }, + "@babel/compat-data": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", + "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==" + }, + "@babel/core": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.6.tgz", + "integrity": "sha512-FxpRyGjrMJXh7X3wGLGhNDCRiwpWEF74sKjTLDJSG5Kyvow3QZaG0Adbqzi9ZrVjTWpsX+2cxWXD71NMg93kdw==", + "requires": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helpers": "^7.23.6", + "@babel/parser": "^7.23.6", + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.6", + "@babel/types": "^7.23.6", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^7.5.4" + } + }, + "@babel/generator": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", + "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", + "requires": { + "@babel/types": "^7.23.6", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", + "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz", + "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==", + "requires": { + "@babel/types": "^7.22.15" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", + "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", + "requires": { + "@babel/compat-data": "^7.23.5", + "@babel/helper-validator-option": "^7.23.5", + "browserslist": "^4.22.2", + "lru-cache": "^5.1.1", + "semver": "^7.5.4" + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.6.tgz", + "integrity": "sha512-cBXU1vZni/CpGF29iTu4YRbOZt3Wat6zCoMDxRF1MayiEc4URxOj31tT65HUM0CRpMowA3HCJaAOVOUnMf96cw==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-member-expression-to-functions": "^7.23.0", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.20", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "semver": "^7.5.4" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz", + "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "regexpu-core": "^5.3.1", + "semver": "^7.5.4" + } + }, + "@babel/helper-define-polyfill-provider": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.4.tgz", + "integrity": "sha512-QcJMILQCu2jm5TFPGA3lCpJJTeEP+mqeXooG/NZbg/h5FTFi6V0+99ahlRsW8/kRLyb24LZVCCiclDedhLKcBA==", + "requires": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + } + }, + "@babel/helper-environment-visitor": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==" + }, + "@babel/helper-function-name": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "requires": { + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz", + "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==", + "requires": { + "@babel/types": "^7.23.0" + } + }, + "@babel/helper-module-imports": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", + "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", + "requires": { + "@babel/types": "^7.22.15" + } + }, + "@babel/helper-module-transforms": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", + "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", + "requires": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-simple-access": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-validator-identifier": "^7.22.20" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", + "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", + "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==" + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz", + "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-wrap-function": "^7.22.20" + } + }, + "@babel/helper-replace-supers": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz", + "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==", + "requires": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-member-expression-to-functions": "^7.22.15", + "@babel/helper-optimise-call-expression": "^7.22.5" + } + }, + "@babel/helper-simple-access": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", + "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", + "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-string-parser": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", + "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==" + }, + "@babel/helper-validator-identifier": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==" + }, + "@babel/helper-validator-option": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", + "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==" + }, + "@babel/helper-wrap-function": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz", + "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==", + "requires": { + "@babel/helper-function-name": "^7.22.5", + "@babel/template": "^7.22.15", + "@babel/types": "^7.22.19" + } + }, + "@babel/helpers": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.6.tgz", + "integrity": "sha512-wCfsbN4nBidDRhpDhvcKlzHWCTlgJYUUdSJfzXb2NuBssDSIjc3xcb+znA7l+zYsFljAcGM0aFkN40cR3lXiGA==", + "requires": { + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.6", + "@babel/types": "^7.23.6" + } + }, + "@babel/highlight": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", + "requires": { + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.6.tgz", + "integrity": "sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==" + }, + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.23.3", + "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.23.3.tgz", + "integrity": "sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.23.3.tgz", + "integrity": "sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-transform-optional-chaining": "^7.23.3" + } + }, + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.3.tgz", + "integrity": "sha512-XaJak1qcityzrX0/IU5nKHb34VaibwP3saKqG6a/tppelgllOH13LUann4ZCIBcVOeE6H18K4Vx9QKkVww3z/w==", + "requires": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "requires": {} + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-import-assertions": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.23.3.tgz", + "integrity": "sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-syntax-import-attributes": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.23.3.tgz", + "integrity": "sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.23.3.tgz", + "integrity": "sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-async-generator-functions": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.4.tgz", + "integrity": "sha512-efdkfPhHYTtn0G6n2ddrESE91fgXxjlqLsnUtPWnJs4a4mZIbUaK7ffqKIIUKXSHwcDvaCVX6GXkaJJFqtX7jw==", + "requires": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.20", + "@babel/plugin-syntax-async-generators": "^7.8.4" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.23.3.tgz", + "integrity": "sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==", + "requires": { + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.20" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.23.3.tgz", + "integrity": "sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.4.tgz", + "integrity": "sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-class-properties": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.23.3.tgz", + "integrity": "sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-class-static-block": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.23.4.tgz", + "integrity": "sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ==", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.5.tgz", + "integrity": "sha512-jvOTR4nicqYC9yzOHIhXG5emiFEOpappSJAl73SDSEDcybD+Puuze8Tnpb9p9qEyYup24tq891gkaygIFvWDqg==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.20", + "@babel/helper-split-export-declaration": "^7.22.6", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.23.3.tgz", + "integrity": "sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/template": "^7.22.15" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.3.tgz", + "integrity": "sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.23.3.tgz", + "integrity": "sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.23.3.tgz", + "integrity": "sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-dynamic-import": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.23.4.tgz", + "integrity": "sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.23.3.tgz", + "integrity": "sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==", + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-export-namespace-from": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.4.tgz", + "integrity": "sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.6.tgz", + "integrity": "sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.23.3.tgz", + "integrity": "sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==", + "requires": { + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-json-strings": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.23.4.tgz", + "integrity": "sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-json-strings": "^7.8.3" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.23.3.tgz", + "integrity": "sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-logical-assignment-operators": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.23.4.tgz", + "integrity": "sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.23.3.tgz", + "integrity": "sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.3.tgz", + "integrity": "sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==", + "requires": { + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz", + "integrity": "sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==", + "requires": { + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-simple-access": "^7.22.5" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.3.tgz", + "integrity": "sha512-ZxyKGTkF9xT9YJuKQRo19ewf3pXpopuYQd8cDXqNzc3mUNbOME0RKMoZxviQk74hwzfQsEe66dE92MaZbdHKNQ==", + "requires": { + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.23.3.tgz", + "integrity": "sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==", + "requires": { + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", + "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.23.3.tgz", + "integrity": "sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.23.4.tgz", + "integrity": "sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + } + }, + "@babel/plugin-transform-numeric-separator": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.23.4.tgz", + "integrity": "sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-transform-object-rest-spread": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.23.4.tgz", + "integrity": "sha512-9x9K1YyeQVw0iOXJlIzwm8ltobIIv7j2iLyP2jIhEbqPRQ7ScNgwQufU2I0Gq11VjyG4gI4yMXt2VFags+1N3g==", + "requires": { + "@babel/compat-data": "^7.23.3", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.23.3" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.23.3.tgz", + "integrity": "sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.20" + } + }, + "@babel/plugin-transform-optional-catch-binding": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.23.4.tgz", + "integrity": "sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + } + }, + "@babel/plugin-transform-optional-chaining": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.4.tgz", + "integrity": "sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.23.3.tgz", + "integrity": "sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-private-methods": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.23.3.tgz", + "integrity": "sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-private-property-in-object": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.4.tgz", + "integrity": "sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.23.3.tgz", + "integrity": "sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.23.3.tgz", + "integrity": "sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "regenerator-transform": "^0.15.2" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.23.3.tgz", + "integrity": "sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.23.3.tgz", + "integrity": "sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.23.3.tgz", + "integrity": "sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.23.3.tgz", + "integrity": "sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.23.3.tgz", + "integrity": "sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.23.3.tgz", + "integrity": "sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.23.3.tgz", + "integrity": "sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==", + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-unicode-property-regex": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.23.3.tgz", + "integrity": "sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.23.3.tgz", + "integrity": "sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-unicode-sets-regex": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.23.3.tgz", + "integrity": "sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/preset-env": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.23.6.tgz", + "integrity": "sha512-2XPn/BqKkZCpzYhUUNZ1ssXw7DcXfKQEjv/uXZUXgaebCMYmkEsfZ2yY+vv+xtXv50WmL5SGhyB6/xsWxIvvOQ==", + "requires": { + "@babel/compat-data": "^7.23.5", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.23.5", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.23.3", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.23.3", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.23.3", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@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", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.23.3", + "@babel/plugin-syntax-import-attributes": "^7.23.3", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.23.3", + "@babel/plugin-transform-async-generator-functions": "^7.23.4", + "@babel/plugin-transform-async-to-generator": "^7.23.3", + "@babel/plugin-transform-block-scoped-functions": "^7.23.3", + "@babel/plugin-transform-block-scoping": "^7.23.4", + "@babel/plugin-transform-class-properties": "^7.23.3", + "@babel/plugin-transform-class-static-block": "^7.23.4", + "@babel/plugin-transform-classes": "^7.23.5", + "@babel/plugin-transform-computed-properties": "^7.23.3", + "@babel/plugin-transform-destructuring": "^7.23.3", + "@babel/plugin-transform-dotall-regex": "^7.23.3", + "@babel/plugin-transform-duplicate-keys": "^7.23.3", + "@babel/plugin-transform-dynamic-import": "^7.23.4", + "@babel/plugin-transform-exponentiation-operator": "^7.23.3", + "@babel/plugin-transform-export-namespace-from": "^7.23.4", + "@babel/plugin-transform-for-of": "^7.23.6", + "@babel/plugin-transform-function-name": "^7.23.3", + "@babel/plugin-transform-json-strings": "^7.23.4", + "@babel/plugin-transform-literals": "^7.23.3", + "@babel/plugin-transform-logical-assignment-operators": "^7.23.4", + "@babel/plugin-transform-member-expression-literals": "^7.23.3", + "@babel/plugin-transform-modules-amd": "^7.23.3", + "@babel/plugin-transform-modules-commonjs": "^7.23.3", + "@babel/plugin-transform-modules-systemjs": "^7.23.3", + "@babel/plugin-transform-modules-umd": "^7.23.3", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", + "@babel/plugin-transform-new-target": "^7.23.3", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.23.4", + "@babel/plugin-transform-numeric-separator": "^7.23.4", + "@babel/plugin-transform-object-rest-spread": "^7.23.4", + "@babel/plugin-transform-object-super": "^7.23.3", + "@babel/plugin-transform-optional-catch-binding": "^7.23.4", + "@babel/plugin-transform-optional-chaining": "^7.23.4", + "@babel/plugin-transform-parameters": "^7.23.3", + "@babel/plugin-transform-private-methods": "^7.23.3", + "@babel/plugin-transform-private-property-in-object": "^7.23.4", + "@babel/plugin-transform-property-literals": "^7.23.3", + "@babel/plugin-transform-regenerator": "^7.23.3", + "@babel/plugin-transform-reserved-words": "^7.23.3", + "@babel/plugin-transform-shorthand-properties": "^7.23.3", + "@babel/plugin-transform-spread": "^7.23.3", + "@babel/plugin-transform-sticky-regex": "^7.23.3", + "@babel/plugin-transform-template-literals": "^7.23.3", + "@babel/plugin-transform-typeof-symbol": "^7.23.3", + "@babel/plugin-transform-unicode-escapes": "^7.23.3", + "@babel/plugin-transform-unicode-property-regex": "^7.23.3", + "@babel/plugin-transform-unicode-regex": "^7.23.3", + "@babel/plugin-transform-unicode-sets-regex": "^7.23.3", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.6", + "babel-plugin-polyfill-corejs3": "^0.8.5", + "babel-plugin-polyfill-regenerator": "^0.5.3", + "core-js-compat": "^3.31.0", + "semver": "^7.5.4" + } + }, + "@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } + }, + "@babel/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==" + }, + "@babel/runtime": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.6.tgz", + "integrity": "sha512-zHd0eUrf5GZoOWVCXp6koAKQTfZV07eit6bGPmJgnZdnSAvvZee6zniW2XMF7Cmc4ISOOnPy3QaSiIJGJkVEDQ==", + "requires": { + "regenerator-runtime": "^0.14.0" + } + }, + "@babel/template": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", + "requires": { + "@babel/code-frame": "^7.22.13", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15" + } + }, + "@babel/traverse": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.6.tgz", + "integrity": "sha512-czastdK1e8YByZqezMPFiZ8ahwVMh/ESl9vPgvgdB9AmFMGP5jfpFax74AQgl5zj4XHzqeYAg2l8PuUeRS1MgQ==", + "requires": { + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.23.6", + "@babel/types": "^7.23.6", + "debug": "^4.3.1", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.6.tgz", + "integrity": "sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==", + "requires": { + "@babel/helper-string-parser": "^7.23.4", + "@babel/helper-validator-identifier": "^7.22.20", + "to-fast-properties": "^2.0.0" + } + }, + "@csstools/css-parser-algorithms": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.4.0.tgz", + "integrity": "sha512-/PPLr2g5PAUCKAPEbfyk6/baZA+WJHQtUhPkoCQMpyRE8I0lXrG1QFRN8e5s3ZYxM8d/g5BZc6lH3s8Op7/VEg==", + "requires": {} + }, + "@csstools/css-tokenizer": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.2.2.tgz", + "integrity": "sha512-wCDUe/MAw7npAHFLyW3QjSyLA66S5QFaV1jIXlNQvdJ8RzXDSgALa49eWcUO6P55ARQaz0TsDdAgdRgkXFYY8g==" + }, + "@csstools/media-query-list-parser": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.6.tgz", + "integrity": "sha512-R6AKl9vaU0It7D7TR2lQn0pre5aQfdeqHRePlaRCY8rHL3l9eVlNRpsEVDKFi/zAjzv68CxH2M5kqbhPFPKjvw==", + "requires": {} + }, + "@csstools/selector-specificity": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-3.0.1.tgz", + "integrity": "sha512-NPljRHkq4a14YzZ3YD406uaxh7s0g6eAq3L9aLOWywoqe8PkYamAvtsh7KNX6c++ihDrJ0RiU+/z7rGnhlZ5ww==", + "requires": {} + }, + "@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "requires": { + "eslint-visitor-keys": "^3.3.0" + } + }, + "@eslint-community/regexpp": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==" + }, + "@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "requires": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "requires": { + "type-fest": "^0.20.2" + } + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==" + } + } + }, + "@eslint/js": { + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz", + "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==" + }, + "@fullhuman/postcss-purgecss": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@fullhuman/postcss-purgecss/-/postcss-purgecss-5.0.0.tgz", + "integrity": "sha512-onDS/b/2pMRzqSoj4qOs2tYFmOpaspjTAgvACIHMPiicu1ptajiBruTrjBzTKdxWdX0ldaBb7wj8nEaTLyFkJw==", + "requires": { + "purgecss": "^5.0.0" + } + }, + "@humanwhocodes/config-array": { + "version": "0.11.13", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", + "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", + "requires": { + "@humanwhocodes/object-schema": "^2.0.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + } + }, + "@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==" + }, + "@humanwhocodes/object-schema": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", + "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==" + }, + "@hyas/bootstrap": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@hyas/bootstrap/-/bootstrap-1.0.4.tgz", + "integrity": "sha512-yUl4AAdVIZm3BKxYUbrW8Ogbq9EbKcENP2tw+KSMncKiCXR7RG460iFzMvzcVmSw9xrqj9wwzzUTRIdhjPc1iA==", + "requires": { + "@popperjs/core": "^2.11.8", + "bootstrap": "^5.3.2" + } + }, + "@hyas/core": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@hyas/core/-/core-1.0.2.tgz", + "integrity": "sha512-tU1Lw4iZ/qdTLrvHTO447cTDUdU8xTyP2QpKgU0uRY18EyaIsZWN6w1v+Z2PDY8OGL8uboYFRBuMww+TFylunA==" + }, + "@hyas/doks-core": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@hyas/doks-core/-/doks-core-1.2.0.tgz", + "integrity": "sha512-zyKxdwk+u+ezARIt7b4YoRDEd6MJJiZp6YfbnzHKH4SH918WMiJpc1ILL4JYUQ3PAnt3baxOoaXiQlguNlgDFQ==", + "requires": { + "@hyas/bootstrap": "^1.0.4", + "@hyas/images": "^2.0.3", + "@hyas/inline-svg": "^1.0.5", + "@hyas/seo": "^2.1.0", + "@tabler/icons": "^2.42.0", + "clipboard": "^2.0.11", + "flexsearch": "^0.7.31", + "gethyas": "^2.2.2" + } + }, + "@hyas/images": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@hyas/images/-/images-2.0.3.tgz", + "integrity": "sha512-4LqRiOZDQ3h0qyNBCRqfBD3yKwsVWmhPe0/JGuxtn6Kpr7GdTOBKNcfKunR8MATIBI15/Zulil9bYsFnCGr8Cw==" + }, + "@hyas/inline-svg": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@hyas/inline-svg/-/inline-svg-1.0.5.tgz", + "integrity": "sha512-zeR+mRyf9oKCztaM7Tw31S1on1eY0TZMF4lwlaKCYoN3bPxA2KJQB0I/SxCq3p0CHzdGs+J0ESnSp3H0Xg63fw==" + }, + "@hyas/seo": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@hyas/seo/-/seo-2.1.0.tgz", + "integrity": "sha512-yeXZuK1IUXd5xbD683lYqdLl0PVafArWYHoZmqKTYBl7I7ewDYWIzU020Nzf0D447RxwzOoC76SVVmlnY6qGGQ==" + }, + "@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==" + }, + "@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==" + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + }, + "@jridgewell/trace-mapping": { + "version": "0.3.20", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", + "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", + "requires": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "@nicolo-ribaudo/chokidar-2": { + "version": "2.1.8-no-fsevents.3", + "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.3.tgz", + "integrity": "sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ==", + "optional": true + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==" + }, + "@sindresorhus/is": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.6.0.tgz", + "integrity": "sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==" + }, + "@szmarczak/http-timer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz", + "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==", + "requires": { + "defer-to-connect": "^2.0.1" + } + }, + "@tabler/icons": { + "version": "2.44.0", + "resolved": "https://registry.npmjs.org/@tabler/icons/-/icons-2.44.0.tgz", + "integrity": "sha512-WPPtihDcAwEm1QZM9MXQw6+r/R2/qx7KMU1eegsi9DsqBLAb0W2kbt6e/syvd6j9c+6XNpRVBW1ziGqSWQAWOg==" + }, + "@types/cacheable-request": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", + "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", + "requires": { + "@types/http-cache-semantics": "*", + "@types/keyv": "^3.1.4", + "@types/node": "*", + "@types/responselike": "^1.0.0" + } + }, + "@types/http-cache-semantics": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", + "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==" + }, + "@types/keyv": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", + "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", + "requires": { + "@types/node": "*" + } + }, + "@types/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==" + }, + "@types/node": { + "version": "20.10.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.5.tgz", + "integrity": "sha512-nNPsNE65wjMxEKI93yOP+NPGGBJz/PoN3kZsVLee0XMiJolxSekEVD8wRwBUBqkwc7UWop0edW50yrCQW4CyRw==", + "requires": { + "undici-types": "~5.26.4" + } + }, + "@types/normalize-package-data": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", + "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==" + }, + "@types/responselike": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.3.tgz", + "integrity": "sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==", + "requires": { + "@types/node": "*" + } + }, + "@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==" + }, + "acorn": { + "version": "8.11.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", + "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==" + }, + "acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "requires": {} + }, + "aggregate-error": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-4.0.1.tgz", + "integrity": "sha512-0poP0T7el6Vq3rstR8Mn4V/IQrpBLO6POkUSrN7RhyY+GF/InCFShQzsQ39T25gkHhLgSLByyAz+Kjb+c2L98w==", + "requires": { + "clean-stack": "^4.0.0", + "indent-string": "^5.0.0" + } + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==" + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==" + }, + "astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==" + }, + "async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "requires": { + "lodash": "^4.17.14" + } + }, + "autoprefixer": { + "version": "10.4.16", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.16.tgz", + "integrity": "sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==", + "requires": { + "browserslist": "^4.21.10", + "caniuse-lite": "^1.0.30001538", + "fraction.js": "^4.3.6", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + } + }, + "babel-plugin-polyfill-corejs2": { + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.7.tgz", + "integrity": "sha512-LidDk/tEGDfuHW2DWh/Hgo4rmnw3cduK6ZkOI1NPFceSK3n/yAGeOsNT7FLnSGHkXj3RHGSEVkN3FsCTY6w2CQ==", + "requires": { + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.4.4", + "semver": "^7.5.4" + } + }, + "babel-plugin-polyfill-corejs3": { + "version": "0.8.7", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.7.tgz", + "integrity": "sha512-KyDvZYxAzkC0Aj2dAPyDzi2Ym15e5JKZSK+maI7NAwSqofvuFglbSsxE7wUOvTg9oFVnHMzVzBKcqEb4PJgtOA==", + "requires": { + "@babel/helper-define-polyfill-provider": "^0.4.4", + "core-js-compat": "^3.33.1" + } + }, + "babel-plugin-polyfill-regenerator": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.4.tgz", + "integrity": "sha512-S/x2iOCvDaCASLYsOOgWOq4bCfKYVqvO/uxjkaYyZ3rVsVE3CeAI/c84NpyuBBymEgNvHgjEot3a9/Z/kXvqsg==", + "requires": { + "@babel/helper-define-polyfill-provider": "^0.4.4" + } + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + }, + "basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "requires": { + "safe-buffer": "5.1.2" + } + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" + }, + "bl": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz", + "integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==", + "requires": { + "readable-stream": "^2.3.5", + "safe-buffer": "^5.1.1" + } + }, + "bootstrap": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.2.tgz", + "integrity": "sha512-D32nmNWiQHo94BKHLmOrdjlL05q1c8oxbtBphQFb9Z5to6eGRDCm0QgeaZ4zFBHzfg2++rqa2JkqCcxDy0sH0g==", + "requires": {} + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "requires": { + "fill-range": "^7.0.1" + } + }, + "browserslist": { + "version": "4.22.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz", + "integrity": "sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==", + "requires": { + "caniuse-lite": "^1.0.30001565", + "electron-to-chromium": "^1.4.601", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" + } + }, + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "buffer-alloc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "requires": { + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" + } + }, + "buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==" + }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==" + }, + "buffer-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==" + }, + "cacheable-lookup": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-6.1.0.tgz", + "integrity": "sha512-KJ/Dmo1lDDhmW2XDPMo+9oiy/CeqosPguPCrgcVzKyZrL6pM1gU2GmPY/xo6OQPTUaA/c0kwHuywB4E6nmT9ww==" + }, + "cacheable-request": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz", + "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==", + "requires": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^4.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^6.0.1", + "responselike": "^2.0.0" + }, + "dependencies": { + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "requires": { + "pump": "^3.0.0" + } + }, + "lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" + }, + "responselike": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", + "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", + "requires": { + "lowercase-keys": "^2.0.0" + } + } + } + }, + "call-bind": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", + "requires": { + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" + }, + "camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==" + }, + "camelcase-keys": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-7.0.2.tgz", + "integrity": "sha512-Rjs1H+A9R+Ig+4E/9oyB66UC5Mj9Xq3N//vcLf2WzgdTi/3gUu3Z9KoqmlrEG4VuuLK8wJHofxzdQXz/knhiYg==", + "requires": { + "camelcase": "^6.3.0", + "map-obj": "^4.1.0", + "quick-lru": "^5.1.1", + "type-fest": "^1.2.1" + } + }, + "caniuse-lite": { + "version": "1.0.30001572", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001572.tgz", + "integrity": "sha512-1Pbh5FLmn5y4+QhNyJE9j3/7dK44dGB83/ZMjv/qJk86TvDbjk0LosiZo0i0WB0Vx607qMX9jYrn1VLHCkN4rw==" + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + } + }, + "clean-stack": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-4.2.0.tgz", + "integrity": "sha512-LYv6XPxoyODi36Dp976riBtSY27VmFo+MKqEU9QCCWyTrdEPDog+RWA7xQWHi6Vbp61j5c4cdzzX1NidnwtUWg==", + "requires": { + "escape-string-regexp": "5.0.0" + }, + "dependencies": { + "escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==" + } + } + }, + "clipboard": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.11.tgz", + "integrity": "sha512-C+0bbOqkezLIsmWSvlsXS0Q0bmkugu7jcfMIACB+RDEntIzQIkdr148we28AfSloQLRdZlYL/QYyrq05j/3Faw==", + "requires": { + "good-listener": "^1.2.2", + "select": "^1.1.2", + "tiny-emitter": "^2.0.0" + } + }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "clone-response": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", + "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", + "requires": { + "mimic-response": "^1.0.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "colord": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", + "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==" + }, + "commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" + }, + "core-js-compat": { + "version": "3.34.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.34.0.tgz", + "integrity": "sha512-4ZIyeNbW/Cn1wkMMDy+mvrRUxrwFNjKwbhCfQpDd+eLgYipDqp8oGFGtLmhh18EDPKA0g3VUBYOxQGGwvWLVpA==", + "requires": { + "browserslist": "^4.22.2" + } + }, + "core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "corser": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/corser/-/corser-2.0.1.tgz", + "integrity": "sha512-utCYNzRSQIZNPIcGZdQc92UVJYAhtGAteCFg0yRaFm8f0P+CPtyGyHXJcGXnffjCybUCEx3FQ2G7U3/o9eIkVQ==" + }, + "cosmiconfig": { + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", + "requires": { + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" + } + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "css-functions-list": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.1.tgz", + "integrity": "sha512-Nj5YcaGgBtuUmn1D7oHqPW0c9iui7xsTsj5lIX8ZgevdfhmjFfKB3r8moHJtNJnctnYXJyYX5I1pp90HM4TPgQ==" + }, + "css-tree": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", + "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", + "requires": { + "mdn-data": "2.0.30", + "source-map-js": "^1.0.1" + } + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==" + }, + "data-uri-to-buffer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==" + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "decamelize": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-5.0.1.tgz", + "integrity": "sha512-VfxadyCECXgQlkoEAjeghAr5gY3Hf+IKjKb+X8tGVDtveCjN+USwprd2q3QXBR9T1+x2DG0XZF5/w+7HAtSaXA==" + }, + "decamelize-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", + "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", + "requires": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "dependencies": { + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==" + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==" + } + } + }, + "decompress": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/decompress/-/decompress-4.2.1.tgz", + "integrity": "sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ==", + "requires": { + "decompress-tar": "^4.0.0", + "decompress-tarbz2": "^4.0.0", + "decompress-targz": "^4.0.0", + "decompress-unzip": "^4.0.1", + "graceful-fs": "^4.1.10", + "make-dir": "^1.0.0", + "pify": "^2.3.0", + "strip-dirs": "^2.0.0" + }, + "dependencies": { + "make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "requires": { + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==" + } + } + } + } + }, + "decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "requires": { + "mimic-response": "^3.1.0" + }, + "dependencies": { + "mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==" + } + } + }, + "decompress-tar": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-4.1.1.tgz", + "integrity": "sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==", + "requires": { + "file-type": "^5.2.0", + "is-stream": "^1.1.0", + "tar-stream": "^1.5.2" + } + }, + "decompress-tarbz2": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz", + "integrity": "sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==", + "requires": { + "decompress-tar": "^4.1.0", + "file-type": "^6.1.0", + "is-stream": "^1.1.0", + "seek-bzip": "^1.0.5", + "unbzip2-stream": "^1.0.9" + }, + "dependencies": { + "file-type": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-6.2.0.tgz", + "integrity": "sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg==" + } + } + }, + "decompress-targz": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/decompress-targz/-/decompress-targz-4.1.1.tgz", + "integrity": "sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==", + "requires": { + "decompress-tar": "^4.1.1", + "file-type": "^5.2.0", + "is-stream": "^1.1.0" + } + }, + "decompress-unzip": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/decompress-unzip/-/decompress-unzip-4.0.1.tgz", + "integrity": "sha512-1fqeluvxgnn86MOh66u8FjbtJpAFv5wgCT9Iw8rcBqQcCo5tO8eiJw7NNTrvt9n4CRBVq7CstiS922oPgyGLrw==", + "requires": { + "file-type": "^3.8.0", + "get-stream": "^2.2.0", + "pify": "^2.3.0", + "yauzl": "^2.4.2" + }, + "dependencies": { + "file-type": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", + "integrity": "sha512-RLoqTXE8/vPmMuTI88DAzhMYC99I8BWv7zYP4A1puo5HIjEJ5EX48ighy4ZyKMG9EDXxBgW6e++cn7d1xuFghA==" + } + } + }, + "deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" + }, + "defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==" + }, + "define-data-property": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "requires": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + } + }, + "del": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/del/-/del-7.0.0.tgz", + "integrity": "sha512-tQbV/4u5WVB8HMJr08pgw0b6nG4RGt/tj+7Numvq+zqcvUFeMaIWWOUFltiU+6go8BSO2/ogsB4EasDaj0y68Q==", + "requires": { + "globby": "^13.1.2", + "graceful-fs": "^4.2.10", + "is-glob": "^4.0.3", + "is-path-cwd": "^3.0.0", + "is-path-inside": "^4.0.0", + "p-map": "^5.5.0", + "rimraf": "^3.0.2", + "slash": "^4.0.0" + }, + "dependencies": { + "is-path-inside": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-4.0.0.tgz", + "integrity": "sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==" + }, + "slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==" + } + } + }, + "delegate": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz", + "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==" + }, + "dependency-graph": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", + "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==" + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "requires": { + "path-type": "^4.0.0" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "requires": { + "esutils": "^2.0.2" + } + }, + "electron-to-chromium": { + "version": "1.4.616", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.616.tgz", + "integrity": "sha512-1n7zWYh8eS0L9Uy+GskE0lkBUNK83cXTVJI0pU3mGprFsbfSdAc15VTFbo+A+Bq4pwstmL30AVcEU3Fo463lNg==" + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "requires": { + "once": "^1.4.0" + } + }, + "entities": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", + "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==" + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" + }, + "eslint": { + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz", + "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==", + "requires": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.56.0", + "@humanwhocodes/config-array": "^0.11.13", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" + }, + "glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "requires": { + "is-glob": "^4.0.3" + } + }, + "globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "requires": { + "type-fest": "^0.20.2" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "^4.0.0" + } + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==" + } + } + }, + "eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==" + }, + "espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "requires": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + } + }, + "esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "requires": { + "estraverse": "^5.1.0" + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "requires": { + "estraverse": "^5.2.0" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" + }, + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + }, + "exec-bin": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/exec-bin/-/exec-bin-1.0.0.tgz", + "integrity": "sha512-p8f8h8b6op2nR7U5rsd+zACUMfsfB+jW8HNIBD2njOQ/gF2WvBfQRo/OU6Q6f/b34WLAyePZcwMJyrDdEjB/fw==" + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" + }, + "fastest-levenshtein": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==" + }, + "fastq": { + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.16.0.tgz", + "integrity": "sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA==", + "requires": { + "reusify": "^1.0.4" + } + }, + "fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "requires": { + "pend": "~1.2.0" + } + }, + "fetch-blob": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", + "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", + "requires": { + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" + } + }, + "file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "requires": { + "flat-cache": "^3.0.4" + } + }, + "file-type": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", + "integrity": "sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ==" + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "requires": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + } + }, + "flatted": { + "version": "3.2.9", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", + "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==" + }, + "flexsearch": { + "version": "0.7.31", + "resolved": "https://registry.npmjs.org/flexsearch/-/flexsearch-0.7.31.tgz", + "integrity": "sha512-XGozTsMPYkm+6b5QL3Z9wQcJjNYxp0CYn3U1gO7dwD6PAqU1SVWZxI9CCg3z+ml3YfqdPnrBehaBrnH2AGKbNA==" + }, + "follow-redirects": { + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz", + "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==" + }, + "form-data-encoder": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz", + "integrity": "sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==" + }, + "formdata-polyfill": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", + "requires": { + "fetch-blob": "^3.1.2" + } + }, + "fraction.js": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==" + }, + "fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" + }, + "fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "fs-readdir-recursive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", + "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==" + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "optional": true + }, + "function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" + }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" + }, + "get-intrinsic": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", + "requires": { + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + } + }, + "get-stdin": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-9.0.0.tgz", + "integrity": "sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==" + }, + "get-stream": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", + "integrity": "sha512-AUGhbbemXxrZJRD5cDvKtQxLuYaIbNtDTK8YqupCI393Q2KSTreEsLUN3ZxAWFGiKTzL6nKuzfcIvieflUX9qA==", + "requires": { + "object-assign": "^4.0.1", + "pinkie-promise": "^2.0.0" + } + }, + "gethyas": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/gethyas/-/gethyas-2.2.2.tgz", + "integrity": "sha512-4lIHpR9bUqN4eb24JYfD7UWBDQlSoVxxQnSA/kmedfI46xGUwnZ4S6n3KgQhjDIimzDrkLzjimFdxFiPhJVxag==", + "requires": { + "@babel/cli": "^7.23.0", + "@babel/core": "^7.23.2", + "@babel/preset-env": "^7.23.2", + "@fullhuman/postcss-purgecss": "^5.0.0", + "@hyas/core": "^1.0.2", + "autoprefixer": "^10.4.16", + "eslint": "^8.51.0", + "exec-bin": "^1.0.0", + "http-server": "^14.1.1", + "hugo-installer": "^4.0.1", + "lazysizes": "^5.3.2", + "markdownlint-cli2": "^0.10.0", + "modern-css-reset": "^1.4.0", + "netlify-plugin-submit-sitemap": "^0.4.0", + "postcss": "^8.4.31", + "postcss-cli": "^10.1.0", + "purgecss-whitelister": "^2.4.0", + "quicklink": "^2.3.0", + "shx": "^0.3.4", + "stylelint": "^15.11.0", + "stylelint-config-standard-scss": "^11.0.0" + } + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-all": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/glob-all/-/glob-all-3.3.1.tgz", + "integrity": "sha512-Y+ESjdI7ZgMwfzanHZYQ87C59jOO0i+Hd+QYtVt9PhLi6d8wlOpzQnfBxWUlaTuAoR3TkybLqqbIoWveU4Ji7Q==", + "requires": { + "glob": "^7.2.3", + "yargs": "^15.3.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + }, + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==" + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "requires": { + "p-limit": "^2.2.0" + } + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + }, + "yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + } + }, + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "requires": { + "is-glob": "^4.0.1" + } + }, + "global-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", + "requires": { + "global-prefix": "^3.0.0" + } + }, + "global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", + "requires": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + }, + "dependencies": { + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" + }, + "globby": { + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz", + "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==", + "requires": { + "dir-glob": "^3.0.1", + "fast-glob": "^3.3.0", + "ignore": "^5.2.4", + "merge2": "^1.4.1", + "slash": "^4.0.0" + }, + "dependencies": { + "slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==" + } + } + }, + "globjoin": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz", + "integrity": "sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==" + }, + "gonzales-pe": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/gonzales-pe/-/gonzales-pe-4.3.0.tgz", + "integrity": "sha512-otgSPpUmdWJ43VXyiNgEYE4luzHCL2pz4wQ0OnDluC6Eg4Ko3Vexy/SrSynglw/eR+OhkzmqFCZa/OFa/RgAOQ==", + "requires": { + "minimist": "^1.2.5" + } + }, + "good-listener": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz", + "integrity": "sha512-goW1b+d9q/HIwbVYZzZ6SsTr4IgE+WA44A0GmPIQstuOrgsFcT7VEJ48nmr9GaRtNu0XTKacFLGnBPAM6Afouw==", + "requires": { + "delegate": "^3.1.2" + } + }, + "gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "requires": { + "get-intrinsic": "^1.1.3" + } + }, + "got": { + "version": "12.4.1", + "resolved": "https://registry.npmjs.org/got/-/got-12.4.1.tgz", + "integrity": "sha512-Sz1ojLt4zGNkcftIyJKnulZT/yEDvifhUjccHA8QzOuTgPs/+njXYNMFE3jR4/2OODQSSbH8SdnoLCkbh41ieA==", + "requires": { + "@sindresorhus/is": "^5.2.0", + "@szmarczak/http-timer": "^5.0.1", + "@types/cacheable-request": "^6.0.2", + "cacheable-lookup": "^6.0.4", + "cacheable-request": "^7.0.2", + "decompress-response": "^6.0.0", + "form-data-encoder": "^2.1.0", + "get-stream": "^6.0.1", + "http2-wrapper": "^2.1.10", + "lowercase-keys": "^3.0.0", + "p-cancelable": "^3.0.0", + "responselike": "^3.0.0" + }, + "dependencies": { + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==" + } + } + }, + "graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + }, + "graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==" + }, + "hard-rejection": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==" + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" + }, + "has-property-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "requires": { + "get-intrinsic": "^1.2.2" + } + }, + "has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==" + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + }, + "hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "requires": { + "function-bind": "^1.1.2" + } + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" + }, + "hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "requires": { + "lru-cache": "^6.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "requires": { + "yallist": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + } + }, + "hpagent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hpagent/-/hpagent-1.0.0.tgz", + "integrity": "sha512-SCleE2Uc1bM752ymxg8QXYGW0TWtAV4ZW3TqH1aOnyi6T6YW2xadCcclm5qeVjvMvfQ2RKNtZxO7uVb9CTPt1A==" + }, + "html-encoding-sniffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", + "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", + "requires": { + "whatwg-encoding": "^2.0.0" + } + }, + "html-tags": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz", + "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==" + }, + "http-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==" + }, + "http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-server": { + "version": "14.1.1", + "resolved": "https://registry.npmjs.org/http-server/-/http-server-14.1.1.tgz", + "integrity": "sha512-+cbxadF40UXd9T01zUHgA+rlo2Bg1Srer4+B4NwIHdaGxAGGv59nYRnGGDJ9LBk7alpS0US+J+bLLdQOOkJq4A==", + "requires": { + "basic-auth": "^2.0.1", + "chalk": "^4.1.2", + "corser": "^2.0.1", + "he": "^1.2.0", + "html-encoding-sniffer": "^3.0.0", + "http-proxy": "^1.18.1", + "mime": "^1.6.0", + "minimist": "^1.2.6", + "opener": "^1.5.1", + "portfinder": "^1.0.28", + "secure-compare": "3.0.1", + "union": "~0.5.0", + "url-join": "^4.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "http2-wrapper": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.1.tgz", + "integrity": "sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==", + "requires": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.2.0" + } + }, + "hugo-installer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/hugo-installer/-/hugo-installer-4.0.1.tgz", + "integrity": "sha512-pkp1RO7+ekQ0vw1aqgBMK+dD2dqioIWVbwWKsJsKLOpzfFc78gK68Cweoi/g+CftoiMFO7cyGx/2MgkHCMqaLQ==", + "requires": { + "decompress": "4.2.x", + "del": "7.0.x", + "got": "12.4.x", + "hpagent": "1.0.x", + "object-path": "0.11.x", + "semver": "^7.5.4", + "yargs": "17.5.x" + } + }, + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + }, + "ignore": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", + "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==" + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "import-lazy": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", + "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==" + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==" + }, + "indent-string": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", + "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, + "interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==" + }, + "invariant": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", + "integrity": "sha512-FUiAFCOgp7bBzHfa/fK+Uc/vqywvdN9Wg3CiTprLcE630mrhxjDS5MlBkHzeI6+bC/6bq9VX/hxBt05fPAT5WA==", + "requires": { + "loose-envify": "^1.0.0" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "requires": { + "hasown": "^2.0.0" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-natural-number": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz", + "integrity": "sha512-Y4LTamMe0DDQIIAlaer9eKebAlDSV6huy+TWhJVPlzZh2o4tRP5SQWFlLn5N0To4mDD22/qdOq+veo1cSISLgQ==" + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, + "is-path-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-3.0.0.tgz", + "integrity": "sha512-kyiNFFLU0Ampr6SDZitD/DwUo4Zs1nSdnygUBqsu3LooL00Qvb5j+UnvApUn/TTj1J3OuE6BTdQ5rudKmU2ZaA==" + }, + "is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==" + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==" + }, + "is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==" + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "requires": { + "argparse": "^2.0.1" + } + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" + }, + "json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" + }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" + }, + "json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==" + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "requires": { + "json-buffer": "3.0.1" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + }, + "known-css-properties": { + "version": "0.29.0", + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.29.0.tgz", + "integrity": "sha512-Ne7wqW7/9Cz54PDt4I3tcV+hAyat8ypyOGzYRJQfdxnnjeWsTxt1cy8pjvvKeI5kfXuyvULyeeAvwvvtAX3ayQ==" + }, + "lazysizes": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/lazysizes/-/lazysizes-5.3.2.tgz", + "integrity": "sha512-22UzWP+Vedi/sMeOr8O7FWimRVtiNJV2HCa+V8+peZOw6QbswN9k58VUhd7i6iK5bw5QkYrF01LJbeJe0PV8jg==" + }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "lilconfig": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.0.0.tgz", + "integrity": "sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==" + }, + "lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + }, + "linkify-it": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-4.0.1.tgz", + "integrity": "sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw==", + "requires": { + "uc.micro": "^1.0.1" + } + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "requires": { + "p-locate": "^5.0.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" + }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" + }, + "lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==" + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "lowercase-keys": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", + "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==" + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "requires": { + "yallist": "^3.0.2" + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "requires": { + "pify": "^4.0.1", + "semver": "^7.5.4" + }, + "dependencies": { + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" + } + } + }, + "map-obj": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", + "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==" + }, + "markdown-it": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-13.0.1.tgz", + "integrity": "sha512-lTlxriVoy2criHP0JKRhO2VDG9c2ypWCsT237eDiLqi09rmbKoUetyGHq2uOIRoRS//kfoJckS0eUzzkDR+k2Q==", + "requires": { + "argparse": "^2.0.1", + "entities": "~3.0.1", + "linkify-it": "^4.0.1", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" + } + }, + "markdownlint": { + "version": "0.31.1", + "resolved": "https://registry.npmjs.org/markdownlint/-/markdownlint-0.31.1.tgz", + "integrity": "sha512-CKMR2hgcIBrYlIUccDCOvi966PZ0kJExDrUi1R+oF9PvqQmCrTqjOsgIvf2403OmJ+CWomuzDoylr6KbuMyvHA==", + "requires": { + "markdown-it": "13.0.1", + "markdownlint-micromark": "0.1.7" + } + }, + "markdownlint-cli2": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/markdownlint-cli2/-/markdownlint-cli2-0.10.0.tgz", + "integrity": "sha512-kVxjPyKFC+eW7iqcxiNI50RDzwugpXkEX5eQlDso/0IUs9M73jXYguLFHDzgi5KatcxU/57Fu8KoGtkFft9lfA==", + "requires": { + "globby": "13.2.2", + "markdownlint": "0.31.1", + "markdownlint-cli2-formatter-default": "0.0.4", + "micromatch": "4.0.5", + "strip-json-comments": "5.0.1", + "yaml": "2.3.2" + }, + "dependencies": { + "strip-json-comments": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-5.0.1.tgz", + "integrity": "sha512-0fk9zBqO67Nq5M/m45qHCJxylV/DhBlIOVExqgOMiCCrzrhU6tCibRXNqE3jwJLftzE9SNuZtYbpzcO+i9FiKw==" + } + } + }, + "markdownlint-cli2-formatter-default": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/markdownlint-cli2-formatter-default/-/markdownlint-cli2-formatter-default-0.0.4.tgz", + "integrity": "sha512-xm2rM0E+sWgjpPn1EesPXx5hIyrN2ddUnUwnbCsD/ONxYtw3PX6LydvdH6dciWAoFDpwzbHM1TO7uHfcMd6IYg==", + "requires": {} + }, + "markdownlint-micromark": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/markdownlint-micromark/-/markdownlint-micromark-0.1.7.tgz", + "integrity": "sha512-BbRPTC72fl5vlSKv37v/xIENSRDYL/7X/XoFzZ740FGEbs9vZerLrIkFRY0rv7slQKxDczToYuMmqQFN61fi4Q==" + }, + "mathml-tag-names": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz", + "integrity": "sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==" + }, + "mdn-data": { + "version": "2.0.30", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", + "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==" + }, + "mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==" + }, + "meow": { + "version": "10.1.5", + "resolved": "https://registry.npmjs.org/meow/-/meow-10.1.5.tgz", + "integrity": "sha512-/d+PQ4GKmGvM9Bee/DPa8z3mXs/pkvJE2KEThngVNOqtmljC6K7NMPxtc2JeZYTmpWb9k/TmxjeL18ez3h7vCw==", + "requires": { + "@types/minimist": "^1.2.2", + "camelcase-keys": "^7.0.0", + "decamelize": "^5.0.0", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.2", + "read-pkg-up": "^8.0.0", + "redent": "^4.0.0", + "trim-newlines": "^4.0.2", + "type-fest": "^1.2.2", + "yargs-parser": "^20.2.9" + } + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" + }, + "min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==" + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==" + }, + "minimist-options": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", + "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", + "requires": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0", + "kind-of": "^6.0.3" + } + }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "requires": { + "minimist": "^1.2.6" + } + }, + "modern-css-reset": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/modern-css-reset/-/modern-css-reset-1.4.0.tgz", + "integrity": "sha512-0crZmSFmrxkI7159rvQWjpDhy0u4+Awg/iOycJdlVn0RSeft/a+6BrQHR3IqvmdK25sqt0o6Z5Ap7cWgUee2rw==" + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==" + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" + }, + "netlify-plugin-submit-sitemap": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/netlify-plugin-submit-sitemap/-/netlify-plugin-submit-sitemap-0.4.0.tgz", + "integrity": "sha512-5ntDtSKZRHaCDrDXh4sH4V7lNEEsoi01lsmSUuqJ/ikPHf0XEErjsKba8TsM3iaZRYEHI9bQse3BWgguwuwIIQ==", + "requires": { + "node-fetch": "^3.2.3" + } + }, + "node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==" + }, + "node-fetch": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", + "requires": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + } + }, + "node-releases": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==" + }, + "normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "requires": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.5.4", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==" + }, + "normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" + }, + "object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==" + }, + "object-path": { + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/object-path/-/object-path-0.11.8.tgz", + "integrity": "sha512-YJjNZrlXJFM42wTBn6zgOJVar9KFJvzx6sTWDte8sWZF//cnjl0BxHNpfZx+ZffXX63A9q0b1zsFiBX4g4X5KA==" + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "requires": { + "wrappy": "1" + } + }, + "opener": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==" + }, + "optionator": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "requires": { + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" + } + }, + "p-cancelable": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", + "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==" + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "requires": { + "p-limit": "^3.0.2" + } + }, + "p-map": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-5.5.0.tgz", + "integrity": "sha512-VFqfGDHlx87K66yZrNdI4YGtD70IRyd+zSvgks6mzHPRNkoKy+9EKP4SFC77/vTTQYmRmti7dvqC+m5jBrBAcg==", + "requires": { + "aggregate-error": "^4.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" + }, + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==" + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==" + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", + "requires": { + "pinkie": "^2.0.0" + } + }, + "portfinder": { + "version": "1.0.32", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.32.tgz", + "integrity": "sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==", + "requires": { + "async": "^2.6.4", + "debug": "^3.2.7", + "mkdirp": "^0.5.6" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "postcss": { + "version": "8.4.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.32.tgz", + "integrity": "sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==", + "requires": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + } + }, + "postcss-cli": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/postcss-cli/-/postcss-cli-10.1.0.tgz", + "integrity": "sha512-Zu7PLORkE9YwNdvOeOVKPmWghprOtjFQU3srMUGbdz3pHJiFh7yZ4geiZFMkjMfB0mtTFR3h8RemR62rPkbOPA==", + "requires": { + "chokidar": "^3.3.0", + "dependency-graph": "^0.11.0", + "fs-extra": "^11.0.0", + "get-stdin": "^9.0.0", + "globby": "^13.0.0", + "picocolors": "^1.0.0", + "postcss-load-config": "^4.0.0", + "postcss-reporter": "^7.0.0", + "pretty-hrtime": "^1.0.3", + "read-cache": "^1.0.0", + "slash": "^5.0.0", + "yargs": "^17.0.0" + }, + "dependencies": { + "slash": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", + "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==" + } + } + }, + "postcss-load-config": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", + "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", + "requires": { + "lilconfig": "^3.0.0", + "yaml": "^2.3.4" + }, + "dependencies": { + "yaml": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz", + "integrity": "sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==" + } + } + }, + "postcss-media-query-parser": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", + "integrity": "sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==" + }, + "postcss-reporter": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-7.0.5.tgz", + "integrity": "sha512-glWg7VZBilooZGOFPhN9msJ3FQs19Hie7l5a/eE6WglzYqVeH3ong3ShFcp9kDWJT1g2Y/wd59cocf9XxBtkWA==", + "requires": { + "picocolors": "^1.0.0", + "thenby": "^1.3.4" + } + }, + "postcss-resolve-nested-selector": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz", + "integrity": "sha512-HvExULSwLqHLgUy1rl3ANIqCsvMS0WHss2UOsXhXnQaZ9VCc2oBvIpXrl00IUFT5ZDITME0o6oiXeiHr2SAIfw==" + }, + "postcss-safe-parser": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz", + "integrity": "sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==", + "requires": {} + }, + "postcss-scss": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.9.tgz", + "integrity": "sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==", + "requires": {} + }, + "postcss-selector-parser": { + "version": "6.0.14", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.14.tgz", + "integrity": "sha512-65xXYsT40i9GyWzlHQ5ShZoK7JZdySeOozi/tz2EezDo6c04q6+ckYMeoY7idaie1qp2dT5KoYQ2yky6JuoHnA==", + "requires": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + } + }, + "postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" + }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==" + }, + "pretty-hrtime": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "integrity": "sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==" + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "peer": true, + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==" + }, + "purgecss": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/purgecss/-/purgecss-5.0.0.tgz", + "integrity": "sha512-RAnuxrGuVyLLTr8uMbKaxDRGWMgK5CCYDfRyUNNcaz5P3kGgD2b7ymQGYEyo2ST7Tl/ScwFgf5l3slKMxHSbrw==", + "requires": { + "commander": "^9.0.0", + "glob": "^8.0.3", + "postcss": "^8.4.4", + "postcss-selector-parser": "^6.0.7" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "requires": { + "balanced-match": "^1.0.0" + } + }, + "commander": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==" + }, + "glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + } + }, + "minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "purgecss-whitelister": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/purgecss-whitelister/-/purgecss-whitelister-2.4.0.tgz", + "integrity": "sha512-O0jBUDtY9dU9tUT0vA1FvwFdkKDerxzteYaBV49JCbm+QJLFKMlIsf5Kp5cdbLatHQNjJtV8VB8eXtISoZL2Dg==", + "requires": { + "glob-all": "^3.1.0", + "gonzales-pe": "^4.2.4", + "scss-parser": "1.0.3" + } + }, + "qs": { + "version": "6.11.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", + "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", + "requires": { + "side-channel": "^1.0.4" + } + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" + }, + "quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==" + }, + "quicklink": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/quicklink/-/quicklink-2.3.0.tgz", + "integrity": "sha512-FyTanYArl5Gz2/C0ZjErvfFJtem/+d1RM4eK0jiXO6mL4Zjje+xsYtcK3ZtKX2Yb3HSfah5HekWrH2qhttYQjQ==", + "requires": { + "route-manifest": "^1.0.0", + "throttles": "^1.0.0" + } + }, + "react": { + "version": "16.14.0", + "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", + "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", + "peer": true, + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2" + } + }, + "react-dom": { + "version": "16.14.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz", + "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==", + "peer": true, + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2", + "scheduler": "^0.19.1" + } + }, + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "peer": true + }, + "read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "requires": { + "pify": "^2.3.0" + } + }, + "read-pkg": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-6.0.0.tgz", + "integrity": "sha512-X1Fu3dPuk/8ZLsMhEj5f4wFAF0DWoK7qhGJvgaijocXxBmSToKfbFtqbxMO7bVjNA1dmE5huAzjXj/ey86iw9Q==", + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^3.0.2", + "parse-json": "^5.2.0", + "type-fest": "^1.0.1" + } + }, + "read-pkg-up": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-8.0.0.tgz", + "integrity": "sha512-snVCqPczksT0HS2EC+SxUndvSzn6LRCwpfSvLrIfR5BKDQQZMaI6jPRC9dYvYFDRAuFEAnkwww8kBBNE/3VvzQ==", + "requires": { + "find-up": "^5.0.0", + "read-pkg": "^6.0.0", + "type-fest": "^1.0.1" + } + }, + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "requires": { + "picomatch": "^2.2.1" + } + }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", + "requires": { + "resolve": "^1.1.6" + } + }, + "redent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-4.0.0.tgz", + "integrity": "sha512-tYkDkVVtYkSVhuQ4zBgfvciymHaeuel+zFKXShfDnFP5SyVEP7qo70Rf1jTOTCx3vGNAbnEi/xFkcfQVMIBWag==", + "requires": { + "indent-string": "^5.0.0", + "strip-indent": "^4.0.0" + } + }, + "regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" + }, + "regenerate-unicode-properties": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", + "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", + "requires": { + "regenerate": "^1.4.2" + } + }, + "regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" + }, + "regenerator-transform": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", + "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", + "requires": { + "@babel/runtime": "^7.8.4" + } + }, + "regexparam": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/regexparam/-/regexparam-1.3.0.tgz", + "integrity": "sha512-6IQpFBv6e5vz1QAqI+V4k8P2e/3gRrqfCJ9FI+O1FLQTO+Uz6RXZEZOPmTJ6hlGj7gkERzY5BRCv09whKP96/g==" + }, + "regexpu-core": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", + "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", + "requires": { + "@babel/regjsgen": "^0.8.0", + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + } + }, + "regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==" + } + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==" + }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" + }, + "resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "requires": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "resolve-alpn": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==" + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" + }, + "responselike": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz", + "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==", + "requires": { + "lowercase-keys": "^3.0.0" + } + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "requires": { + "glob": "^7.1.3" + } + }, + "route-manifest": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/route-manifest/-/route-manifest-1.0.0.tgz", + "integrity": "sha512-qn0xJr4nnF4caj0erOLLAHYiNyzqhzpUbgDQcEHrmBoG4sWCDLnIXLH7VccNSxe9cWgbP2Kw/OjME+eH3CeRSA==", + "requires": { + "regexparam": "^1.3.0" + } + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "scheduler": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", + "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", + "peer": true, + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, + "scss-parser": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/scss-parser/-/scss-parser-1.0.3.tgz", + "integrity": "sha512-XQKCfOJERmhn1yoNRUyxv9wgkf4DIv29Jk0m4FiZforeiCmGxrby8K3not7tQ8GK1yvtd9N0OnNimNetJ8V+zQ==", + "requires": { + "invariant": "2.2.2", + "lodash": "^4.17.4" + } + }, + "secure-compare": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/secure-compare/-/secure-compare-3.0.1.tgz", + "integrity": "sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw==" + }, + "seek-bzip": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.6.tgz", + "integrity": "sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ==", + "requires": { + "commander": "^2.8.1" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + } + } + }, + "select": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz", + "integrity": "sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA==" + }, + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "requires": { + "lru-cache": "^6.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "requires": { + "yallist": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" + }, + "set-function-length": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", + "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "requires": { + "define-data-property": "^1.1.1", + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" + }, + "shelljs": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", + "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", + "requires": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + } + }, + "shx": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/shx/-/shx-0.3.4.tgz", + "integrity": "sha512-N6A9MLVqjxZYcVn8hLmtneQWIJtp8IKzMP4eMnx+nqkvXoqinUPCbUFLp2UcWTEIUONhlk0ewxr/jaVGlc+J+g==", + "requires": { + "minimist": "^1.2.3", + "shelljs": "^0.8.5" + } + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==" + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==" + }, + "slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "requires": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + } + } + }, + "source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" + }, + "spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.16", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz", + "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==" + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-dirs": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-2.1.0.tgz", + "integrity": "sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==", + "requires": { + "is-natural-number": "^4.0.1" + } + }, + "strip-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-4.0.0.tgz", + "integrity": "sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==", + "requires": { + "min-indent": "^1.0.1" + } + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" + }, + "style-search": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz", + "integrity": "sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==" + }, + "stylelint": { + "version": "15.11.0", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-15.11.0.tgz", + "integrity": "sha512-78O4c6IswZ9TzpcIiQJIN49K3qNoXTM8zEJzhaTE/xRTCZswaovSEVIa/uwbOltZrk16X4jAxjaOhzz/hTm1Kw==", + "requires": { + "@csstools/css-parser-algorithms": "^2.3.1", + "@csstools/css-tokenizer": "^2.2.0", + "@csstools/media-query-list-parser": "^2.1.4", + "@csstools/selector-specificity": "^3.0.0", + "balanced-match": "^2.0.0", + "colord": "^2.9.3", + "cosmiconfig": "^8.2.0", + "css-functions-list": "^3.2.1", + "css-tree": "^2.3.1", + "debug": "^4.3.4", + "fast-glob": "^3.3.1", + "fastest-levenshtein": "^1.0.16", + "file-entry-cache": "^7.0.0", + "global-modules": "^2.0.0", + "globby": "^11.1.0", + "globjoin": "^0.1.4", + "html-tags": "^3.3.1", + "ignore": "^5.2.4", + "import-lazy": "^4.0.0", + "imurmurhash": "^0.1.4", + "is-plain-object": "^5.0.0", + "known-css-properties": "^0.29.0", + "mathml-tag-names": "^2.1.3", + "meow": "^10.1.5", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.4.28", + "postcss-resolve-nested-selector": "^0.1.1", + "postcss-safe-parser": "^6.0.0", + "postcss-selector-parser": "^6.0.13", + "postcss-value-parser": "^4.2.0", + "resolve-from": "^5.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "style-search": "^0.1.0", + "supports-hyperlinks": "^3.0.0", + "svg-tags": "^1.0.0", + "table": "^6.8.1", + "write-file-atomic": "^5.0.1" + }, + "dependencies": { + "balanced-match": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz", + "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==" + }, + "file-entry-cache": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-7.0.2.tgz", + "integrity": "sha512-TfW7/1iI4Cy7Y8L6iqNdZQVvdXn0f8B4QcIXmkIbtTIe/Okm/nSlHb4IwGzRVOd3WfSieCgvf5cMzEfySAIl0g==", + "requires": { + "flat-cache": "^3.2.0" + } + }, + "globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==" + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" + } + } + }, + "stylelint-config-recommended": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-13.0.0.tgz", + "integrity": "sha512-EH+yRj6h3GAe/fRiyaoO2F9l9Tgg50AOFhaszyfov9v6ayXJ1IkSHwTxd7lB48FmOeSGDPLjatjO11fJpmarkQ==", + "requires": {} + }, + "stylelint-config-recommended-scss": { + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-13.1.0.tgz", + "integrity": "sha512-8L5nDfd+YH6AOoBGKmhH8pLWF1dpfY816JtGMePcBqqSsLU+Ysawx44fQSlMOJ2xTfI9yTGpup5JU77c17w1Ww==", + "requires": { + "postcss-scss": "^4.0.9", + "stylelint-config-recommended": "^13.0.0", + "stylelint-scss": "^5.3.0" + } + }, + "stylelint-config-standard": { + "version": "34.0.0", + "resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-34.0.0.tgz", + "integrity": "sha512-u0VSZnVyW9VSryBG2LSO+OQTjN7zF9XJaAJRX/4EwkmU0R2jYwmBSN10acqZisDitS0CLiEiGjX7+Hrq8TAhfQ==", + "requires": { + "stylelint-config-recommended": "^13.0.0" + } + }, + "stylelint-config-standard-scss": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/stylelint-config-standard-scss/-/stylelint-config-standard-scss-11.1.0.tgz", + "integrity": "sha512-5gnBgeNTgRVdchMwiFQPuBOtj9QefYtfXiddrOMJA2pI22zxt6ddI2s+e5Oh7/6QYl7QLJujGnaUR5YyGq72ow==", + "requires": { + "stylelint-config-recommended-scss": "^13.1.0", + "stylelint-config-standard": "^34.0.0" + } + }, + "stylelint-scss": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-5.3.2.tgz", + "integrity": "sha512-4LzLaayFhFyneJwLo0IUa8knuIvj+zF0vBFueQs4e3tEaAMIQX8q5th8ziKkgOavr6y/y9yoBe+RXN/edwLzsQ==", + "requires": { + "known-css-properties": "^0.29.0", + "postcss-media-query-parser": "^0.2.3", + "postcss-resolve-nested-selector": "^0.1.1", + "postcss-selector-parser": "^6.0.13", + "postcss-value-parser": "^4.2.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + }, + "supports-hyperlinks": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.0.0.tgz", + "integrity": "sha512-QBDPHyPQDRTy9ku4URNGY5Lah8PAaXs6tAAwp55sL5WCsSW7GIfdf6W5ixfziW+t7wh3GVvHyHHyQ1ESsoRvaA==", + "requires": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" + }, + "svg-tags": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", + "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==" + }, + "table": { + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz", + "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==", + "requires": { + "ajv": "^8.0.1", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "dependencies": { + "ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + } + } + }, + "tar-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz", + "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==", + "requires": { + "bl": "^1.0.0", + "buffer-alloc": "^1.2.0", + "end-of-stream": "^1.0.0", + "fs-constants": "^1.0.0", + "readable-stream": "^2.3.0", + "to-buffer": "^1.1.1", + "xtend": "^4.0.0" + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" + }, + "thenby": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/thenby/-/thenby-1.3.4.tgz", + "integrity": "sha512-89Gi5raiWA3QZ4b2ePcEwswC3me9JIg+ToSgtE0JWeCynLnLxNr/f9G+xfo9K+Oj4AFdom8YNJjibIARTJmapQ==" + }, + "throttles": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/throttles/-/throttles-1.0.1.tgz", + "integrity": "sha512-fab7Xg+zELr9KOv4fkaBoe/b3L0GMGLd0IBSCn16GoE/Qx6/OfCr1eGNyEcDU2pUA79qQfZ8kPQWlRuok4YwTw==" + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" + }, + "tiny-emitter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", + "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==" + }, + "to-buffer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz", + "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==" + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==" + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "requires": { + "is-number": "^7.0.0" + } + }, + "trim-newlines": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-4.1.1.tgz", + "integrity": "sha512-jRKj0n0jXWo6kh62nA5TEh3+4igKDXLvzBJcPpiizP7oOolUrYIxmVBG9TOtHYFHoddUk6YvAkGeGoSVTXfQXQ==" + }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "type-fest": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==" + }, + "uc.micro": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", + "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==" + }, + "unbzip2-stream": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", + "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", + "requires": { + "buffer": "^5.2.1", + "through": "^2.3.8" + } + }, + "undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + }, + "unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==" + }, + "unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "requires": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==" + }, + "unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==" + }, + "union": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/union/-/union-0.5.0.tgz", + "integrity": "sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA==", + "requires": { + "qs": "^6.4.0" + } + }, + "universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==" + }, + "update-browserslist-db": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "requires": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + } + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "requires": { + "punycode": "^2.1.0" + } + }, + "url-join": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", + "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==" + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "web-streams-polyfill": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", + "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==" + }, + "whatwg-encoding": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", + "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "requires": { + "iconv-lite": "0.6.3" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", + "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==" + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "write-file-atomic": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", + "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", + "requires": { + "imurmurhash": "^0.1.4", + "signal-exit": "^4.0.1" + } + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + }, + "yaml": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.2.tgz", + "integrity": "sha512-N/lyzTPaJasoDmfV7YTrYCI0G/3ivm/9wdG0aHuheKowWQwGTsK0Eoiw6utmzAnI6pkJa0DUVygvp3spqqEKXg==" + }, + "yargs": { + "version": "17.5.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz", + "integrity": "sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==", + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.0.0" + }, + "dependencies": { + "yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==" + } + } + }, + "yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==" + }, + "yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "requires": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" + } } } diff --git a/package.json b/package.json index 074e1c3d..5de2b63b 100644 --- a/package.json +++ b/package.json @@ -1,75 +1,41 @@ { - "name": "doks-child-theme", - "description": "Doks child theme", - "version": "0.5.0", - "engines": { - "node": ">=16.16.0" - }, - "browserslist": [ - "defaults" - ], - "repository": "https://github.com/h-enk/doks", + "name": "passkeys.dev", + "version": "0.0.0", + "description": "Doks theme", + "author": "Hyas", "license": "MIT", - "publishConfig": { - "access": "public" - }, "scripts": { - "init": "shx rm -rf .git && git init -b main", + "dev": "exec-bin node_modules/.bin/hugo/hugo server --bind=0.0.0.0 --disableFastRender --baseURL=http://localhost --noHTTPCache", + "dev:drafts": "exec-bin node_modules/.bin/hugo/hugo server --bind=0.0.0.0 --disableFastRender --baseURL=http://localhost --noHTTPCache --buildDrafts", "create": "exec-bin node_modules/.bin/hugo/hugo new", - "prestart": "npm run clean", - "start": "exec-bin node_modules/.bin/hugo/hugo server --bind=0.0.0.0 --disableFastRender", - "prebuild": "npm run clean", - "build": "exec-bin node_modules/.bin/hugo/hugo --gc --minify", - "build:preview": "npm run build -D -F", - "clean": "shx rm -rf public resources", - "clean:install": "shx rm -rf package-lock.json node_modules ", - "lint": "npm run -s lint:scripts && npm run -s lint:styles && npm run -s lint:markdown", - "lint:scripts": "eslint assets/js config functions", - "lint:styles": "stylelint \"assets/scss/**/*.{css,sass,scss,sss,less}\"", + "lint": "npm run lint:markdown", + "lint:scripts": "eslint --cache themes/doks/assets/js", + "lint:styles": "stylelint --cache \"themes/doks/assets/scss/**/*.{css,sass,scss}\"", "lint:markdown": "markdownlint-cli2 \"*.md\" \"content/**/*.md\"", - "lint:markdown-fix": "markdownlint-cli2-fix \"*.md\" \"content/**/*.md\"", - "server": "exec-bin node_modules/.bin/hugo/hugo server", - "test": "npm run -s lint", - "env": "env", - "precheck": "npm version", - "check": "exec-bin node_modules/.bin/hugo/hugo version", - "copy:katex-fonts": "shx cp ./node_modules/katex/dist/fonts/* ./static/fonts/", - "postinstall": "hugo-installer --version otherDependencies.hugo --extended --destination node_modules/.bin/hugo", - "version": "auto-changelog -p && git add CHANGELOG.md" + "test": "echo \"Error: no test specified\" && exit 1", + "build": "exec-bin node_modules/.bin/hugo/hugo --cleanDestinationDir --minify", + "preview": "http-server --gzip --brotli --ext=html --cors", + "clean": "npm run clean:build && npm run clean:lint && npm run clean:install", + "clean:build": "shx rm -rf public resources .hugo_build.lock", + "clean:install": "shx rm -rf node_modules package-lock.json yarn.lock pnpm-lock.yaml", + "clean:lint": "shx rm -rf .eslintcache .stylelintcache", + "preinfo": "npm version", + "info": "npm list", + "postinfo": "exec-bin node_modules/.bin/hugo/hugo version", + "postinstall": "shx rm -rf node_modules/.bin/hugo && shx mkdir node_modules/.bin/hugo && shx cp node_modules/gethyas/node_modules/.bin/hugo/* node_modules/.bin/hugo" }, - "devDependencies": { - "@babel/cli": "^7.18", - "@babel/core": "^7.23", - "@babel/preset-env": "^7.23", - "@fullhuman/postcss-purgecss": "^5.0", - "@hyas/doks": "^0.5", - "@hyas/images": "^0.2.1", - "auto-changelog": "^2.4.0", - "autoprefixer": "^10.4", - "bootstrap": "^5.2", - "clipboard": "^2.0", - "eslint": "^8.38", - "exec-bin": "^1.0.0", - "flexsearch": "^0.7.21", - "highlight.js": "^11.7", - "hugo-installer": "^3.1", - "husky": "^8.0.3", - "instant.page": "^5.1", - "katex": "^0.16", - "lazysizes": "^5.3", - "markdownlint-cli2": "^0.9.0", - "netlify-plugin-submit-sitemap": "^0.4.0", - "postcss": "^8.4", - "postcss-cli": "^10.0", - "purgecss-whitelister": "^2.4", - "shx": "^0.3", - "stylelint": "^14.9", - "stylelint-config-standard-scss": "^5.0" + "dependencies": { + "@hyas/doks-core": "^1.2.0" }, - "otherDependencies": { - "hugo": "0.101.0" + "overrides": { + "semver": "^7.5.4" + }, + "engines": { + "node": ">=16.12.0", + "pnpm": ">=8.6.2" }, + "packageManager": "pnpm@8.6.2", "volta": { - "node": "16.16.0" + "node": "16.20.2" } -} +} \ No newline at end of file diff --git a/theme.toml b/theme.toml deleted file mode 100644 index dd525df0..00000000 --- a/theme.toml +++ /dev/null @@ -1,14 +0,0 @@ -name = "Doks child theme" -license = "MIT" -licenselink = "https://github.com/h-enk/doks/blob/master/LICENSE" -description = "Hugo theme helping you build modern documentation websites that are secure, fast, and SEO-ready — by default." - -homepage = "https://github.com/h-enk/doks-child-theme" -demosite = "https://doks-child-theme.netlify.app" - -tags = ["landing page", "documentation", "blog", "minimal", "modern", "customizable", "search", "dark mode", "bootstrap"] -features = ["security aware", "fast by default", "seo-ready", "development tools", "bootstrap framework", "netlify-ready", "full text search", "page layouts", "dark mode"] - -[author] - name = "Henk Verlinde" - homepage = "https://henkverlinde.com" From 8209e6e43dc245437663659a6947e50a79b0554f Mon Sep 17 00:00:00 2001 From: Tim Cappalli Date: Fri, 29 Dec 2023 19:15:35 +0000 Subject: [PATCH 016/203] reorganize custom css and fix bootstrap icons --- assets/scss/common/_custom.scss | 2408 ++++++++++++++++++++++-- assets/scss/common/bootstrap-icons.css | 2078 -------------------- 2 files changed, 2247 insertions(+), 2239 deletions(-) delete mode 100644 assets/scss/common/bootstrap-icons.css diff --git a/assets/scss/common/_custom.scss b/assets/scss/common/_custom.scss index bae4a296..75daaf11 100644 --- a/assets/scss/common/_custom.scss +++ b/assets/scss/common/_custom.scss @@ -1,5 +1,178 @@ /** Custom styles */ +body { + font-family: "Open Sans", Arial, Helvetica, sans-serif; +} + +::selection { + background-color: rgba(0, 90, 156, 0.2); +} + +h2 { + font-weight: 500; +} + +h3 { + font-weight: 500; +} + +a { + color: #005a9c; +} + +.strong { + font-weight: 500; +} + +.header-bar { + border-top: 10px solid; + border-image-source: linear-gradient(90deg, #005a9c, #4a266b); + border-image-slice: 1; +} + +/* +button tweaks +*/ +.btn-primary { + color: #fff; + background-color: #005a9c; + border-color: #005a9c; +} + +[data-dark-mode] body .btn-primary { + color: #fff !important; + background-color: #005a9c; + border-color: #005a9c; +} + +[data-dark-mode] body .btn-primary:hover { + background-color: #4a266b; + border-color: #4a266b; +} + +/* +change bw icons to white in dark mode +*/ +.svg-icon-bw g { + fill: #000; +} + +[data-dark-mode] .svg-icon-bw g { + fill: #fff; +} + +/* +code snippet tweaks (pre and code) +*/ + +code { + background: #f0f0f0; +} + +pre > .btn-copy { + background-color: #005a9c; + border-color: #002e50; +} + +pre > .btn-copy:hover { + background-color: #4a266b; + border-color: #301945; +} + +pre > .hljs { + background: #f0f0f0; +} + +.hljs-string { + color: #0950a4; +} + +summary { + font-weight: 500; +} + +blockquote { + font-size: 1rem; +} + +/* +COLORS +*/ +.color-twitter-blue { + color: #1da1f2; +} + +.color-black { + color: #000; +} + +/* +SPECIFIC PAGE OVERRIDES +*/ + +/* +HEADER MENU +*/ + +nav .nav-link.active { + font-weight: 600; +} + +/* +Specific to FAQ content +*/ +#faq #content > details { + margin-top: 0.7em; + margin-bottom: 0.7em; +} + +#faq #content > details > summary { + font-weight: 600; + font-size: 1.1em; +} + +.embed-responsive-item { + aspect-ratio: 16/9; + width: 100%; + max-width: 536px; +} + +/* +Specific to device support page +*/ +#device-support-table table { + --#{$prefix}table-bg: #{$light}; +} + +[data-dark-mode] { + #device-support-table table { + --#{$prefix}table-bg: #{$dark}; + } +} + +#device-support-table th:first-child, +td:first-child { + position: sticky; + left: 0; + z-index: 1; +} + +/* +YouTube preview image on homepage +*/ +.youtube-preview { + img { + width: 90%; + max-width: 536px; + height: auto; + } +} + + +/** FONTS **/ + +/** Google Fonts **/ + /* open-sans-300 - latin */ @font-face { font-family: "Open Sans"; @@ -168,170 +341,2083 @@ url("/fonts/open-sans-v29-latin-800italic.svg#OpenSans") format("svg"); } -body { - font-family: "Open Sans", Arial, Helvetica, sans-serif; -} - -::selection { - background-color: rgba(0, 90, 156, 0.2); -} - -h2 { - font-weight: 500; -} - -h3 { - font-weight: 500; -} - -a { - color: #005a9c; -} - -.strong { - font-weight: 500; -} - -.header-bar { - border-top: 10px solid; - border-image-source: linear-gradient(90deg, #005a9c, #4a266b); - border-image-slice: 1; -} - -/* -button tweaks -*/ -.btn-primary { - color: #fff; - background-color: #005a9c; - border-color: #005a9c; -} - -[data-dark-mode] body .btn-primary { - color: #fff !important; - background-color: #005a9c; - border-color: #005a9c; -} - -[data-dark-mode] body .btn-primary:hover { - background-color: #4a266b; - border-color: #4a266b; -} - -/* -change bw icons to white in dark mode -*/ -.svg-icon-bw g { - fill: #000; -} - -[data-dark-mode] .svg-icon-bw g { - fill: #fff; -} - -/* -code snippet tweaks (pre and code) -*/ - -code { - background: #f0f0f0; -} - -pre > .btn-copy { - background-color: #005a9c; - border-color: #002e50; -} - -pre > .btn-copy:hover { - background-color: #4a266b; - border-color: #301945; -} - -pre > .hljs { - background: #f0f0f0; -} - -.hljs-string { - color: #0950a4; -} - -summary { - font-weight: 500; -} - -blockquote { - font-size: 1rem; -} - -/* -COLORS -*/ -.color-twitter-blue { - color: #1da1f2; -} +/** Bootstrap Icons **/ -.color-black { - color: #000; -} +/*! + * Bootstrap Icons v1.10.5 (https://icons.getbootstrap.com/) + * Copyright 2019-2023 The Bootstrap Authors + * Licensed under MIT (https://github.com/twbs/icons/blob/main/LICENSE) + */ -/* -SPECIFIC PAGE OVERRIDES -*/ - -/* -HEADER MENU -*/ - -nav .nav-link.active { - font-weight: 600; + @font-face { + font-display: block; + font-family: "bootstrap-icons"; + src: url("./fonts/bootstrap-icons.woff2?1bb88866b4085542c8ed5fb61b9393dd") format("woff2"), +url("./fonts/bootstrap-icons.woff?1bb88866b4085542c8ed5fb61b9393dd") format("woff"); } -/* -Specific to FAQ content -*/ -#faq #content > details { - margin-top: 0.7em; - margin-bottom: 0.7em; -} - -#faq #content > details > summary { - font-weight: 600; - font-size: 1.1em; -} - -.embed-responsive-item { - aspect-ratio: 16/9; - width: 100%; - max-width: 536px; -} - -/* -Specific to device support page -*/ -#device-support-table table { - --#{$prefix}table-bg: #{$light}; -} - -[data-dark-mode] { - #device-support-table table { - --#{$prefix}table-bg: #{$dark}; - } -} - -#device-support-table th:first-child, -td:first-child { - position: sticky; - left: 0; - z-index: 1; +.bi::before, +[class^="bi-"]::before, +[class*=" bi-"]::before { + display: inline-block; + font-family: bootstrap-icons !important; + font-style: normal; + font-weight: normal !important; + font-variant: normal; + text-transform: none; + line-height: 1; + vertical-align: -.125em; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; } -/* -YouTube preview image on homepage -*/ -.youtube-preview { - img { - width: 90%; - max-width: 536px; - height: auto; - } -} +.bi-123::before { content: "\f67f"; } +.bi-alarm-fill::before { content: "\f101"; } +.bi-alarm::before { content: "\f102"; } +.bi-align-bottom::before { content: "\f103"; } +.bi-align-center::before { content: "\f104"; } +.bi-align-end::before { content: "\f105"; } +.bi-align-middle::before { content: "\f106"; } +.bi-align-start::before { content: "\f107"; } +.bi-align-top::before { content: "\f108"; } +.bi-alt::before { content: "\f109"; } +.bi-app-indicator::before { content: "\f10a"; } +.bi-app::before { content: "\f10b"; } +.bi-archive-fill::before { content: "\f10c"; } +.bi-archive::before { content: "\f10d"; } +.bi-arrow-90deg-down::before { content: "\f10e"; } +.bi-arrow-90deg-left::before { content: "\f10f"; } +.bi-arrow-90deg-right::before { content: "\f110"; } +.bi-arrow-90deg-up::before { content: "\f111"; } +.bi-arrow-bar-down::before { content: "\f112"; } +.bi-arrow-bar-left::before { content: "\f113"; } +.bi-arrow-bar-right::before { content: "\f114"; } +.bi-arrow-bar-up::before { content: "\f115"; } +.bi-arrow-clockwise::before { content: "\f116"; } +.bi-arrow-counterclockwise::before { content: "\f117"; } +.bi-arrow-down-circle-fill::before { content: "\f118"; } +.bi-arrow-down-circle::before { content: "\f119"; } +.bi-arrow-down-left-circle-fill::before { content: "\f11a"; } +.bi-arrow-down-left-circle::before { content: "\f11b"; } +.bi-arrow-down-left-square-fill::before { content: "\f11c"; } +.bi-arrow-down-left-square::before { content: "\f11d"; } +.bi-arrow-down-left::before { content: "\f11e"; } +.bi-arrow-down-right-circle-fill::before { content: "\f11f"; } +.bi-arrow-down-right-circle::before { content: "\f120"; } +.bi-arrow-down-right-square-fill::before { content: "\f121"; } +.bi-arrow-down-right-square::before { content: "\f122"; } +.bi-arrow-down-right::before { content: "\f123"; } +.bi-arrow-down-short::before { content: "\f124"; } +.bi-arrow-down-square-fill::before { content: "\f125"; } +.bi-arrow-down-square::before { content: "\f126"; } +.bi-arrow-down-up::before { content: "\f127"; } +.bi-arrow-down::before { content: "\f128"; } +.bi-arrow-left-circle-fill::before { content: "\f129"; } +.bi-arrow-left-circle::before { content: "\f12a"; } +.bi-arrow-left-right::before { content: "\f12b"; } +.bi-arrow-left-short::before { content: "\f12c"; } +.bi-arrow-left-square-fill::before { content: "\f12d"; } +.bi-arrow-left-square::before { content: "\f12e"; } +.bi-arrow-left::before { content: "\f12f"; } +.bi-arrow-repeat::before { content: "\f130"; } +.bi-arrow-return-left::before { content: "\f131"; } +.bi-arrow-return-right::before { content: "\f132"; } +.bi-arrow-right-circle-fill::before { content: "\f133"; } +.bi-arrow-right-circle::before { content: "\f134"; } +.bi-arrow-right-short::before { content: "\f135"; } +.bi-arrow-right-square-fill::before { content: "\f136"; } +.bi-arrow-right-square::before { content: "\f137"; } +.bi-arrow-right::before { content: "\f138"; } +.bi-arrow-up-circle-fill::before { content: "\f139"; } +.bi-arrow-up-circle::before { content: "\f13a"; } +.bi-arrow-up-left-circle-fill::before { content: "\f13b"; } +.bi-arrow-up-left-circle::before { content: "\f13c"; } +.bi-arrow-up-left-square-fill::before { content: "\f13d"; } +.bi-arrow-up-left-square::before { content: "\f13e"; } +.bi-arrow-up-left::before { content: "\f13f"; } +.bi-arrow-up-right-circle-fill::before { content: "\f140"; } +.bi-arrow-up-right-circle::before { content: "\f141"; } +.bi-arrow-up-right-square-fill::before { content: "\f142"; } +.bi-arrow-up-right-square::before { content: "\f143"; } +.bi-arrow-up-right::before { content: "\f144"; } +.bi-arrow-up-short::before { content: "\f145"; } +.bi-arrow-up-square-fill::before { content: "\f146"; } +.bi-arrow-up-square::before { content: "\f147"; } +.bi-arrow-up::before { content: "\f148"; } +.bi-arrows-angle-contract::before { content: "\f149"; } +.bi-arrows-angle-expand::before { content: "\f14a"; } +.bi-arrows-collapse::before { content: "\f14b"; } +.bi-arrows-expand::before { content: "\f14c"; } +.bi-arrows-fullscreen::before { content: "\f14d"; } +.bi-arrows-move::before { content: "\f14e"; } +.bi-aspect-ratio-fill::before { content: "\f14f"; } +.bi-aspect-ratio::before { content: "\f150"; } +.bi-asterisk::before { content: "\f151"; } +.bi-at::before { content: "\f152"; } +.bi-award-fill::before { content: "\f153"; } +.bi-award::before { content: "\f154"; } +.bi-back::before { content: "\f155"; } +.bi-backspace-fill::before { content: "\f156"; } +.bi-backspace-reverse-fill::before { content: "\f157"; } +.bi-backspace-reverse::before { content: "\f158"; } +.bi-backspace::before { content: "\f159"; } +.bi-badge-3d-fill::before { content: "\f15a"; } +.bi-badge-3d::before { content: "\f15b"; } +.bi-badge-4k-fill::before { content: "\f15c"; } +.bi-badge-4k::before { content: "\f15d"; } +.bi-badge-8k-fill::before { content: "\f15e"; } +.bi-badge-8k::before { content: "\f15f"; } +.bi-badge-ad-fill::before { content: "\f160"; } +.bi-badge-ad::before { content: "\f161"; } +.bi-badge-ar-fill::before { content: "\f162"; } +.bi-badge-ar::before { content: "\f163"; } +.bi-badge-cc-fill::before { content: "\f164"; } +.bi-badge-cc::before { content: "\f165"; } +.bi-badge-hd-fill::before { content: "\f166"; } +.bi-badge-hd::before { content: "\f167"; } +.bi-badge-tm-fill::before { content: "\f168"; } +.bi-badge-tm::before { content: "\f169"; } +.bi-badge-vo-fill::before { content: "\f16a"; } +.bi-badge-vo::before { content: "\f16b"; } +.bi-badge-vr-fill::before { content: "\f16c"; } +.bi-badge-vr::before { content: "\f16d"; } +.bi-badge-wc-fill::before { content: "\f16e"; } +.bi-badge-wc::before { content: "\f16f"; } +.bi-bag-check-fill::before { content: "\f170"; } +.bi-bag-check::before { content: "\f171"; } +.bi-bag-dash-fill::before { content: "\f172"; } +.bi-bag-dash::before { content: "\f173"; } +.bi-bag-fill::before { content: "\f174"; } +.bi-bag-plus-fill::before { content: "\f175"; } +.bi-bag-plus::before { content: "\f176"; } +.bi-bag-x-fill::before { content: "\f177"; } +.bi-bag-x::before { content: "\f178"; } +.bi-bag::before { content: "\f179"; } +.bi-bar-chart-fill::before { content: "\f17a"; } +.bi-bar-chart-line-fill::before { content: "\f17b"; } +.bi-bar-chart-line::before { content: "\f17c"; } +.bi-bar-chart-steps::before { content: "\f17d"; } +.bi-bar-chart::before { content: "\f17e"; } +.bi-basket-fill::before { content: "\f17f"; } +.bi-basket::before { content: "\f180"; } +.bi-basket2-fill::before { content: "\f181"; } +.bi-basket2::before { content: "\f182"; } +.bi-basket3-fill::before { content: "\f183"; } +.bi-basket3::before { content: "\f184"; } +.bi-battery-charging::before { content: "\f185"; } +.bi-battery-full::before { content: "\f186"; } +.bi-battery-half::before { content: "\f187"; } +.bi-battery::before { content: "\f188"; } +.bi-bell-fill::before { content: "\f189"; } +.bi-bell::before { content: "\f18a"; } +.bi-bezier::before { content: "\f18b"; } +.bi-bezier2::before { content: "\f18c"; } +.bi-bicycle::before { content: "\f18d"; } +.bi-binoculars-fill::before { content: "\f18e"; } +.bi-binoculars::before { content: "\f18f"; } +.bi-blockquote-left::before { content: "\f190"; } +.bi-blockquote-right::before { content: "\f191"; } +.bi-book-fill::before { content: "\f192"; } +.bi-book-half::before { content: "\f193"; } +.bi-book::before { content: "\f194"; } +.bi-bookmark-check-fill::before { content: "\f195"; } +.bi-bookmark-check::before { content: "\f196"; } +.bi-bookmark-dash-fill::before { content: "\f197"; } +.bi-bookmark-dash::before { content: "\f198"; } +.bi-bookmark-fill::before { content: "\f199"; } +.bi-bookmark-heart-fill::before { content: "\f19a"; } +.bi-bookmark-heart::before { content: "\f19b"; } +.bi-bookmark-plus-fill::before { content: "\f19c"; } +.bi-bookmark-plus::before { content: "\f19d"; } +.bi-bookmark-star-fill::before { content: "\f19e"; } +.bi-bookmark-star::before { content: "\f19f"; } +.bi-bookmark-x-fill::before { content: "\f1a0"; } +.bi-bookmark-x::before { content: "\f1a1"; } +.bi-bookmark::before { content: "\f1a2"; } +.bi-bookmarks-fill::before { content: "\f1a3"; } +.bi-bookmarks::before { content: "\f1a4"; } +.bi-bookshelf::before { content: "\f1a5"; } +.bi-bootstrap-fill::before { content: "\f1a6"; } +.bi-bootstrap-reboot::before { content: "\f1a7"; } +.bi-bootstrap::before { content: "\f1a8"; } +.bi-border-all::before { content: "\f1a9"; } +.bi-border-bottom::before { content: "\f1aa"; } +.bi-border-center::before { content: "\f1ab"; } +.bi-border-inner::before { content: "\f1ac"; } +.bi-border-left::before { content: "\f1ad"; } +.bi-border-middle::before { content: "\f1ae"; } +.bi-border-outer::before { content: "\f1af"; } +.bi-border-right::before { content: "\f1b0"; } +.bi-border-style::before { content: "\f1b1"; } +.bi-border-top::before { content: "\f1b2"; } +.bi-border-width::before { content: "\f1b3"; } +.bi-border::before { content: "\f1b4"; } +.bi-bounding-box-circles::before { content: "\f1b5"; } +.bi-bounding-box::before { content: "\f1b6"; } +.bi-box-arrow-down-left::before { content: "\f1b7"; } +.bi-box-arrow-down-right::before { content: "\f1b8"; } +.bi-box-arrow-down::before { content: "\f1b9"; } +.bi-box-arrow-in-down-left::before { content: "\f1ba"; } +.bi-box-arrow-in-down-right::before { content: "\f1bb"; } +.bi-box-arrow-in-down::before { content: "\f1bc"; } +.bi-box-arrow-in-left::before { content: "\f1bd"; } +.bi-box-arrow-in-right::before { content: "\f1be"; } +.bi-box-arrow-in-up-left::before { content: "\f1bf"; } +.bi-box-arrow-in-up-right::before { content: "\f1c0"; } +.bi-box-arrow-in-up::before { content: "\f1c1"; } +.bi-box-arrow-left::before { content: "\f1c2"; } +.bi-box-arrow-right::before { content: "\f1c3"; } +.bi-box-arrow-up-left::before { content: "\f1c4"; } +.bi-box-arrow-up-right::before { content: "\f1c5"; } +.bi-box-arrow-up::before { content: "\f1c6"; } +.bi-box-seam::before { content: "\f1c7"; } +.bi-box::before { content: "\f1c8"; } +.bi-braces::before { content: "\f1c9"; } +.bi-bricks::before { content: "\f1ca"; } +.bi-briefcase-fill::before { content: "\f1cb"; } +.bi-briefcase::before { content: "\f1cc"; } +.bi-brightness-alt-high-fill::before { content: "\f1cd"; } +.bi-brightness-alt-high::before { content: "\f1ce"; } +.bi-brightness-alt-low-fill::before { content: "\f1cf"; } +.bi-brightness-alt-low::before { content: "\f1d0"; } +.bi-brightness-high-fill::before { content: "\f1d1"; } +.bi-brightness-high::before { content: "\f1d2"; } +.bi-brightness-low-fill::before { content: "\f1d3"; } +.bi-brightness-low::before { content: "\f1d4"; } +.bi-broadcast-pin::before { content: "\f1d5"; } +.bi-broadcast::before { content: "\f1d6"; } +.bi-brush-fill::before { content: "\f1d7"; } +.bi-brush::before { content: "\f1d8"; } +.bi-bucket-fill::before { content: "\f1d9"; } +.bi-bucket::before { content: "\f1da"; } +.bi-bug-fill::before { content: "\f1db"; } +.bi-bug::before { content: "\f1dc"; } +.bi-building::before { content: "\f1dd"; } +.bi-bullseye::before { content: "\f1de"; } +.bi-calculator-fill::before { content: "\f1df"; } +.bi-calculator::before { content: "\f1e0"; } +.bi-calendar-check-fill::before { content: "\f1e1"; } +.bi-calendar-check::before { content: "\f1e2"; } +.bi-calendar-date-fill::before { content: "\f1e3"; } +.bi-calendar-date::before { content: "\f1e4"; } +.bi-calendar-day-fill::before { content: "\f1e5"; } +.bi-calendar-day::before { content: "\f1e6"; } +.bi-calendar-event-fill::before { content: "\f1e7"; } +.bi-calendar-event::before { content: "\f1e8"; } +.bi-calendar-fill::before { content: "\f1e9"; } +.bi-calendar-minus-fill::before { content: "\f1ea"; } +.bi-calendar-minus::before { content: "\f1eb"; } +.bi-calendar-month-fill::before { content: "\f1ec"; } +.bi-calendar-month::before { content: "\f1ed"; } +.bi-calendar-plus-fill::before { content: "\f1ee"; } +.bi-calendar-plus::before { content: "\f1ef"; } +.bi-calendar-range-fill::before { content: "\f1f0"; } +.bi-calendar-range::before { content: "\f1f1"; } +.bi-calendar-week-fill::before { content: "\f1f2"; } +.bi-calendar-week::before { content: "\f1f3"; } +.bi-calendar-x-fill::before { content: "\f1f4"; } +.bi-calendar-x::before { content: "\f1f5"; } +.bi-calendar::before { content: "\f1f6"; } +.bi-calendar2-check-fill::before { content: "\f1f7"; } +.bi-calendar2-check::before { content: "\f1f8"; } +.bi-calendar2-date-fill::before { content: "\f1f9"; } +.bi-calendar2-date::before { content: "\f1fa"; } +.bi-calendar2-day-fill::before { content: "\f1fb"; } +.bi-calendar2-day::before { content: "\f1fc"; } +.bi-calendar2-event-fill::before { content: "\f1fd"; } +.bi-calendar2-event::before { content: "\f1fe"; } +.bi-calendar2-fill::before { content: "\f1ff"; } +.bi-calendar2-minus-fill::before { content: "\f200"; } +.bi-calendar2-minus::before { content: "\f201"; } +.bi-calendar2-month-fill::before { content: "\f202"; } +.bi-calendar2-month::before { content: "\f203"; } +.bi-calendar2-plus-fill::before { content: "\f204"; } +.bi-calendar2-plus::before { content: "\f205"; } +.bi-calendar2-range-fill::before { content: "\f206"; } +.bi-calendar2-range::before { content: "\f207"; } +.bi-calendar2-week-fill::before { content: "\f208"; } +.bi-calendar2-week::before { content: "\f209"; } +.bi-calendar2-x-fill::before { content: "\f20a"; } +.bi-calendar2-x::before { content: "\f20b"; } +.bi-calendar2::before { content: "\f20c"; } +.bi-calendar3-event-fill::before { content: "\f20d"; } +.bi-calendar3-event::before { content: "\f20e"; } +.bi-calendar3-fill::before { content: "\f20f"; } +.bi-calendar3-range-fill::before { content: "\f210"; } +.bi-calendar3-range::before { content: "\f211"; } +.bi-calendar3-week-fill::before { content: "\f212"; } +.bi-calendar3-week::before { content: "\f213"; } +.bi-calendar3::before { content: "\f214"; } +.bi-calendar4-event::before { content: "\f215"; } +.bi-calendar4-range::before { content: "\f216"; } +.bi-calendar4-week::before { content: "\f217"; } +.bi-calendar4::before { content: "\f218"; } +.bi-camera-fill::before { content: "\f219"; } +.bi-camera-reels-fill::before { content: "\f21a"; } +.bi-camera-reels::before { content: "\f21b"; } +.bi-camera-video-fill::before { content: "\f21c"; } +.bi-camera-video-off-fill::before { content: "\f21d"; } +.bi-camera-video-off::before { content: "\f21e"; } +.bi-camera-video::before { content: "\f21f"; } +.bi-camera::before { content: "\f220"; } +.bi-camera2::before { content: "\f221"; } +.bi-capslock-fill::before { content: "\f222"; } +.bi-capslock::before { content: "\f223"; } +.bi-card-checklist::before { content: "\f224"; } +.bi-card-heading::before { content: "\f225"; } +.bi-card-image::before { content: "\f226"; } +.bi-card-list::before { content: "\f227"; } +.bi-card-text::before { content: "\f228"; } +.bi-caret-down-fill::before { content: "\f229"; } +.bi-caret-down-square-fill::before { content: "\f22a"; } +.bi-caret-down-square::before { content: "\f22b"; } +.bi-caret-down::before { content: "\f22c"; } +.bi-caret-left-fill::before { content: "\f22d"; } +.bi-caret-left-square-fill::before { content: "\f22e"; } +.bi-caret-left-square::before { content: "\f22f"; } +.bi-caret-left::before { content: "\f230"; } +.bi-caret-right-fill::before { content: "\f231"; } +.bi-caret-right-square-fill::before { content: "\f232"; } +.bi-caret-right-square::before { content: "\f233"; } +.bi-caret-right::before { content: "\f234"; } +.bi-caret-up-fill::before { content: "\f235"; } +.bi-caret-up-square-fill::before { content: "\f236"; } +.bi-caret-up-square::before { content: "\f237"; } +.bi-caret-up::before { content: "\f238"; } +.bi-cart-check-fill::before { content: "\f239"; } +.bi-cart-check::before { content: "\f23a"; } +.bi-cart-dash-fill::before { content: "\f23b"; } +.bi-cart-dash::before { content: "\f23c"; } +.bi-cart-fill::before { content: "\f23d"; } +.bi-cart-plus-fill::before { content: "\f23e"; } +.bi-cart-plus::before { content: "\f23f"; } +.bi-cart-x-fill::before { content: "\f240"; } +.bi-cart-x::before { content: "\f241"; } +.bi-cart::before { content: "\f242"; } +.bi-cart2::before { content: "\f243"; } +.bi-cart3::before { content: "\f244"; } +.bi-cart4::before { content: "\f245"; } +.bi-cash-stack::before { content: "\f246"; } +.bi-cash::before { content: "\f247"; } +.bi-cast::before { content: "\f248"; } +.bi-chat-dots-fill::before { content: "\f249"; } +.bi-chat-dots::before { content: "\f24a"; } +.bi-chat-fill::before { content: "\f24b"; } +.bi-chat-left-dots-fill::before { content: "\f24c"; } +.bi-chat-left-dots::before { content: "\f24d"; } +.bi-chat-left-fill::before { content: "\f24e"; } +.bi-chat-left-quote-fill::before { content: "\f24f"; } +.bi-chat-left-quote::before { content: "\f250"; } +.bi-chat-left-text-fill::before { content: "\f251"; } +.bi-chat-left-text::before { content: "\f252"; } +.bi-chat-left::before { content: "\f253"; } +.bi-chat-quote-fill::before { content: "\f254"; } +.bi-chat-quote::before { content: "\f255"; } +.bi-chat-right-dots-fill::before { content: "\f256"; } +.bi-chat-right-dots::before { content: "\f257"; } +.bi-chat-right-fill::before { content: "\f258"; } +.bi-chat-right-quote-fill::before { content: "\f259"; } +.bi-chat-right-quote::before { content: "\f25a"; } +.bi-chat-right-text-fill::before { content: "\f25b"; } +.bi-chat-right-text::before { content: "\f25c"; } +.bi-chat-right::before { content: "\f25d"; } +.bi-chat-square-dots-fill::before { content: "\f25e"; } +.bi-chat-square-dots::before { content: "\f25f"; } +.bi-chat-square-fill::before { content: "\f260"; } +.bi-chat-square-quote-fill::before { content: "\f261"; } +.bi-chat-square-quote::before { content: "\f262"; } +.bi-chat-square-text-fill::before { content: "\f263"; } +.bi-chat-square-text::before { content: "\f264"; } +.bi-chat-square::before { content: "\f265"; } +.bi-chat-text-fill::before { content: "\f266"; } +.bi-chat-text::before { content: "\f267"; } +.bi-chat::before { content: "\f268"; } +.bi-check-all::before { content: "\f269"; } +.bi-check-circle-fill::before { content: "\f26a"; } +.bi-check-circle::before { content: "\f26b"; } +.bi-check-square-fill::before { content: "\f26c"; } +.bi-check-square::before { content: "\f26d"; } +.bi-check::before { content: "\f26e"; } +.bi-check2-all::before { content: "\f26f"; } +.bi-check2-circle::before { content: "\f270"; } +.bi-check2-square::before { content: "\f271"; } +.bi-check2::before { content: "\f272"; } +.bi-chevron-bar-contract::before { content: "\f273"; } +.bi-chevron-bar-down::before { content: "\f274"; } +.bi-chevron-bar-expand::before { content: "\f275"; } +.bi-chevron-bar-left::before { content: "\f276"; } +.bi-chevron-bar-right::before { content: "\f277"; } +.bi-chevron-bar-up::before { content: "\f278"; } +.bi-chevron-compact-down::before { content: "\f279"; } +.bi-chevron-compact-left::before { content: "\f27a"; } +.bi-chevron-compact-right::before { content: "\f27b"; } +.bi-chevron-compact-up::before { content: "\f27c"; } +.bi-chevron-contract::before { content: "\f27d"; } +.bi-chevron-double-down::before { content: "\f27e"; } +.bi-chevron-double-left::before { content: "\f27f"; } +.bi-chevron-double-right::before { content: "\f280"; } +.bi-chevron-double-up::before { content: "\f281"; } +.bi-chevron-down::before { content: "\f282"; } +.bi-chevron-expand::before { content: "\f283"; } +.bi-chevron-left::before { content: "\f284"; } +.bi-chevron-right::before { content: "\f285"; } +.bi-chevron-up::before { content: "\f286"; } +.bi-circle-fill::before { content: "\f287"; } +.bi-circle-half::before { content: "\f288"; } +.bi-circle-square::before { content: "\f289"; } +.bi-circle::before { content: "\f28a"; } +.bi-clipboard-check::before { content: "\f28b"; } +.bi-clipboard-data::before { content: "\f28c"; } +.bi-clipboard-minus::before { content: "\f28d"; } +.bi-clipboard-plus::before { content: "\f28e"; } +.bi-clipboard-x::before { content: "\f28f"; } +.bi-clipboard::before { content: "\f290"; } +.bi-clock-fill::before { content: "\f291"; } +.bi-clock-history::before { content: "\f292"; } +.bi-clock::before { content: "\f293"; } +.bi-cloud-arrow-down-fill::before { content: "\f294"; } +.bi-cloud-arrow-down::before { content: "\f295"; } +.bi-cloud-arrow-up-fill::before { content: "\f296"; } +.bi-cloud-arrow-up::before { content: "\f297"; } +.bi-cloud-check-fill::before { content: "\f298"; } +.bi-cloud-check::before { content: "\f299"; } +.bi-cloud-download-fill::before { content: "\f29a"; } +.bi-cloud-download::before { content: "\f29b"; } +.bi-cloud-drizzle-fill::before { content: "\f29c"; } +.bi-cloud-drizzle::before { content: "\f29d"; } +.bi-cloud-fill::before { content: "\f29e"; } +.bi-cloud-fog-fill::before { content: "\f29f"; } +.bi-cloud-fog::before { content: "\f2a0"; } +.bi-cloud-fog2-fill::before { content: "\f2a1"; } +.bi-cloud-fog2::before { content: "\f2a2"; } +.bi-cloud-hail-fill::before { content: "\f2a3"; } +.bi-cloud-hail::before { content: "\f2a4"; } +.bi-cloud-haze-fill::before { content: "\f2a6"; } +.bi-cloud-haze::before { content: "\f2a7"; } +.bi-cloud-haze2-fill::before { content: "\f2a8"; } +.bi-cloud-lightning-fill::before { content: "\f2a9"; } +.bi-cloud-lightning-rain-fill::before { content: "\f2aa"; } +.bi-cloud-lightning-rain::before { content: "\f2ab"; } +.bi-cloud-lightning::before { content: "\f2ac"; } +.bi-cloud-minus-fill::before { content: "\f2ad"; } +.bi-cloud-minus::before { content: "\f2ae"; } +.bi-cloud-moon-fill::before { content: "\f2af"; } +.bi-cloud-moon::before { content: "\f2b0"; } +.bi-cloud-plus-fill::before { content: "\f2b1"; } +.bi-cloud-plus::before { content: "\f2b2"; } +.bi-cloud-rain-fill::before { content: "\f2b3"; } +.bi-cloud-rain-heavy-fill::before { content: "\f2b4"; } +.bi-cloud-rain-heavy::before { content: "\f2b5"; } +.bi-cloud-rain::before { content: "\f2b6"; } +.bi-cloud-slash-fill::before { content: "\f2b7"; } +.bi-cloud-slash::before { content: "\f2b8"; } +.bi-cloud-sleet-fill::before { content: "\f2b9"; } +.bi-cloud-sleet::before { content: "\f2ba"; } +.bi-cloud-snow-fill::before { content: "\f2bb"; } +.bi-cloud-snow::before { content: "\f2bc"; } +.bi-cloud-sun-fill::before { content: "\f2bd"; } +.bi-cloud-sun::before { content: "\f2be"; } +.bi-cloud-upload-fill::before { content: "\f2bf"; } +.bi-cloud-upload::before { content: "\f2c0"; } +.bi-cloud::before { content: "\f2c1"; } +.bi-clouds-fill::before { content: "\f2c2"; } +.bi-clouds::before { content: "\f2c3"; } +.bi-cloudy-fill::before { content: "\f2c4"; } +.bi-cloudy::before { content: "\f2c5"; } +.bi-code-slash::before { content: "\f2c6"; } +.bi-code-square::before { content: "\f2c7"; } +.bi-code::before { content: "\f2c8"; } +.bi-collection-fill::before { content: "\f2c9"; } +.bi-collection-play-fill::before { content: "\f2ca"; } +.bi-collection-play::before { content: "\f2cb"; } +.bi-collection::before { content: "\f2cc"; } +.bi-columns-gap::before { content: "\f2cd"; } +.bi-columns::before { content: "\f2ce"; } +.bi-command::before { content: "\f2cf"; } +.bi-compass-fill::before { content: "\f2d0"; } +.bi-compass::before { content: "\f2d1"; } +.bi-cone-striped::before { content: "\f2d2"; } +.bi-cone::before { content: "\f2d3"; } +.bi-controller::before { content: "\f2d4"; } +.bi-cpu-fill::before { content: "\f2d5"; } +.bi-cpu::before { content: "\f2d6"; } +.bi-credit-card-2-back-fill::before { content: "\f2d7"; } +.bi-credit-card-2-back::before { content: "\f2d8"; } +.bi-credit-card-2-front-fill::before { content: "\f2d9"; } +.bi-credit-card-2-front::before { content: "\f2da"; } +.bi-credit-card-fill::before { content: "\f2db"; } +.bi-credit-card::before { content: "\f2dc"; } +.bi-crop::before { content: "\f2dd"; } +.bi-cup-fill::before { content: "\f2de"; } +.bi-cup-straw::before { content: "\f2df"; } +.bi-cup::before { content: "\f2e0"; } +.bi-cursor-fill::before { content: "\f2e1"; } +.bi-cursor-text::before { content: "\f2e2"; } +.bi-cursor::before { content: "\f2e3"; } +.bi-dash-circle-dotted::before { content: "\f2e4"; } +.bi-dash-circle-fill::before { content: "\f2e5"; } +.bi-dash-circle::before { content: "\f2e6"; } +.bi-dash-square-dotted::before { content: "\f2e7"; } +.bi-dash-square-fill::before { content: "\f2e8"; } +.bi-dash-square::before { content: "\f2e9"; } +.bi-dash::before { content: "\f2ea"; } +.bi-diagram-2-fill::before { content: "\f2eb"; } +.bi-diagram-2::before { content: "\f2ec"; } +.bi-diagram-3-fill::before { content: "\f2ed"; } +.bi-diagram-3::before { content: "\f2ee"; } +.bi-diamond-fill::before { content: "\f2ef"; } +.bi-diamond-half::before { content: "\f2f0"; } +.bi-diamond::before { content: "\f2f1"; } +.bi-dice-1-fill::before { content: "\f2f2"; } +.bi-dice-1::before { content: "\f2f3"; } +.bi-dice-2-fill::before { content: "\f2f4"; } +.bi-dice-2::before { content: "\f2f5"; } +.bi-dice-3-fill::before { content: "\f2f6"; } +.bi-dice-3::before { content: "\f2f7"; } +.bi-dice-4-fill::before { content: "\f2f8"; } +.bi-dice-4::before { content: "\f2f9"; } +.bi-dice-5-fill::before { content: "\f2fa"; } +.bi-dice-5::before { content: "\f2fb"; } +.bi-dice-6-fill::before { content: "\f2fc"; } +.bi-dice-6::before { content: "\f2fd"; } +.bi-disc-fill::before { content: "\f2fe"; } +.bi-disc::before { content: "\f2ff"; } +.bi-discord::before { content: "\f300"; } +.bi-display-fill::before { content: "\f301"; } +.bi-display::before { content: "\f302"; } +.bi-distribute-horizontal::before { content: "\f303"; } +.bi-distribute-vertical::before { content: "\f304"; } +.bi-door-closed-fill::before { content: "\f305"; } +.bi-door-closed::before { content: "\f306"; } +.bi-door-open-fill::before { content: "\f307"; } +.bi-door-open::before { content: "\f308"; } +.bi-dot::before { content: "\f309"; } +.bi-download::before { content: "\f30a"; } +.bi-droplet-fill::before { content: "\f30b"; } +.bi-droplet-half::before { content: "\f30c"; } +.bi-droplet::before { content: "\f30d"; } +.bi-earbuds::before { content: "\f30e"; } +.bi-easel-fill::before { content: "\f30f"; } +.bi-easel::before { content: "\f310"; } +.bi-egg-fill::before { content: "\f311"; } +.bi-egg-fried::before { content: "\f312"; } +.bi-egg::before { content: "\f313"; } +.bi-eject-fill::before { content: "\f314"; } +.bi-eject::before { content: "\f315"; } +.bi-emoji-angry-fill::before { content: "\f316"; } +.bi-emoji-angry::before { content: "\f317"; } +.bi-emoji-dizzy-fill::before { content: "\f318"; } +.bi-emoji-dizzy::before { content: "\f319"; } +.bi-emoji-expressionless-fill::before { content: "\f31a"; } +.bi-emoji-expressionless::before { content: "\f31b"; } +.bi-emoji-frown-fill::before { content: "\f31c"; } +.bi-emoji-frown::before { content: "\f31d"; } +.bi-emoji-heart-eyes-fill::before { content: "\f31e"; } +.bi-emoji-heart-eyes::before { content: "\f31f"; } +.bi-emoji-laughing-fill::before { content: "\f320"; } +.bi-emoji-laughing::before { content: "\f321"; } +.bi-emoji-neutral-fill::before { content: "\f322"; } +.bi-emoji-neutral::before { content: "\f323"; } +.bi-emoji-smile-fill::before { content: "\f324"; } +.bi-emoji-smile-upside-down-fill::before { content: "\f325"; } +.bi-emoji-smile-upside-down::before { content: "\f326"; } +.bi-emoji-smile::before { content: "\f327"; } +.bi-emoji-sunglasses-fill::before { content: "\f328"; } +.bi-emoji-sunglasses::before { content: "\f329"; } +.bi-emoji-wink-fill::before { content: "\f32a"; } +.bi-emoji-wink::before { content: "\f32b"; } +.bi-envelope-fill::before { content: "\f32c"; } +.bi-envelope-open-fill::before { content: "\f32d"; } +.bi-envelope-open::before { content: "\f32e"; } +.bi-envelope::before { content: "\f32f"; } +.bi-eraser-fill::before { content: "\f330"; } +.bi-eraser::before { content: "\f331"; } +.bi-exclamation-circle-fill::before { content: "\f332"; } +.bi-exclamation-circle::before { content: "\f333"; } +.bi-exclamation-diamond-fill::before { content: "\f334"; } +.bi-exclamation-diamond::before { content: "\f335"; } +.bi-exclamation-octagon-fill::before { content: "\f336"; } +.bi-exclamation-octagon::before { content: "\f337"; } +.bi-exclamation-square-fill::before { content: "\f338"; } +.bi-exclamation-square::before { content: "\f339"; } +.bi-exclamation-triangle-fill::before { content: "\f33a"; } +.bi-exclamation-triangle::before { content: "\f33b"; } +.bi-exclamation::before { content: "\f33c"; } +.bi-exclude::before { content: "\f33d"; } +.bi-eye-fill::before { content: "\f33e"; } +.bi-eye-slash-fill::before { content: "\f33f"; } +.bi-eye-slash::before { content: "\f340"; } +.bi-eye::before { content: "\f341"; } +.bi-eyedropper::before { content: "\f342"; } +.bi-eyeglasses::before { content: "\f343"; } +.bi-facebook::before { content: "\f344"; } +.bi-file-arrow-down-fill::before { content: "\f345"; } +.bi-file-arrow-down::before { content: "\f346"; } +.bi-file-arrow-up-fill::before { content: "\f347"; } +.bi-file-arrow-up::before { content: "\f348"; } +.bi-file-bar-graph-fill::before { content: "\f349"; } +.bi-file-bar-graph::before { content: "\f34a"; } +.bi-file-binary-fill::before { content: "\f34b"; } +.bi-file-binary::before { content: "\f34c"; } +.bi-file-break-fill::before { content: "\f34d"; } +.bi-file-break::before { content: "\f34e"; } +.bi-file-check-fill::before { content: "\f34f"; } +.bi-file-check::before { content: "\f350"; } +.bi-file-code-fill::before { content: "\f351"; } +.bi-file-code::before { content: "\f352"; } +.bi-file-diff-fill::before { content: "\f353"; } +.bi-file-diff::before { content: "\f354"; } +.bi-file-earmark-arrow-down-fill::before { content: "\f355"; } +.bi-file-earmark-arrow-down::before { content: "\f356"; } +.bi-file-earmark-arrow-up-fill::before { content: "\f357"; } +.bi-file-earmark-arrow-up::before { content: "\f358"; } +.bi-file-earmark-bar-graph-fill::before { content: "\f359"; } +.bi-file-earmark-bar-graph::before { content: "\f35a"; } +.bi-file-earmark-binary-fill::before { content: "\f35b"; } +.bi-file-earmark-binary::before { content: "\f35c"; } +.bi-file-earmark-break-fill::before { content: "\f35d"; } +.bi-file-earmark-break::before { content: "\f35e"; } +.bi-file-earmark-check-fill::before { content: "\f35f"; } +.bi-file-earmark-check::before { content: "\f360"; } +.bi-file-earmark-code-fill::before { content: "\f361"; } +.bi-file-earmark-code::before { content: "\f362"; } +.bi-file-earmark-diff-fill::before { content: "\f363"; } +.bi-file-earmark-diff::before { content: "\f364"; } +.bi-file-earmark-easel-fill::before { content: "\f365"; } +.bi-file-earmark-easel::before { content: "\f366"; } +.bi-file-earmark-excel-fill::before { content: "\f367"; } +.bi-file-earmark-excel::before { content: "\f368"; } +.bi-file-earmark-fill::before { content: "\f369"; } +.bi-file-earmark-font-fill::before { content: "\f36a"; } +.bi-file-earmark-font::before { content: "\f36b"; } +.bi-file-earmark-image-fill::before { content: "\f36c"; } +.bi-file-earmark-image::before { content: "\f36d"; } +.bi-file-earmark-lock-fill::before { content: "\f36e"; } +.bi-file-earmark-lock::before { content: "\f36f"; } +.bi-file-earmark-lock2-fill::before { content: "\f370"; } +.bi-file-earmark-lock2::before { content: "\f371"; } +.bi-file-earmark-medical-fill::before { content: "\f372"; } +.bi-file-earmark-medical::before { content: "\f373"; } +.bi-file-earmark-minus-fill::before { content: "\f374"; } +.bi-file-earmark-minus::before { content: "\f375"; } +.bi-file-earmark-music-fill::before { content: "\f376"; } +.bi-file-earmark-music::before { content: "\f377"; } +.bi-file-earmark-person-fill::before { content: "\f378"; } +.bi-file-earmark-person::before { content: "\f379"; } +.bi-file-earmark-play-fill::before { content: "\f37a"; } +.bi-file-earmark-play::before { content: "\f37b"; } +.bi-file-earmark-plus-fill::before { content: "\f37c"; } +.bi-file-earmark-plus::before { content: "\f37d"; } +.bi-file-earmark-post-fill::before { content: "\f37e"; } +.bi-file-earmark-post::before { content: "\f37f"; } +.bi-file-earmark-ppt-fill::before { content: "\f380"; } +.bi-file-earmark-ppt::before { content: "\f381"; } +.bi-file-earmark-richtext-fill::before { content: "\f382"; } +.bi-file-earmark-richtext::before { content: "\f383"; } +.bi-file-earmark-ruled-fill::before { content: "\f384"; } +.bi-file-earmark-ruled::before { content: "\f385"; } +.bi-file-earmark-slides-fill::before { content: "\f386"; } +.bi-file-earmark-slides::before { content: "\f387"; } +.bi-file-earmark-spreadsheet-fill::before { content: "\f388"; } +.bi-file-earmark-spreadsheet::before { content: "\f389"; } +.bi-file-earmark-text-fill::before { content: "\f38a"; } +.bi-file-earmark-text::before { content: "\f38b"; } +.bi-file-earmark-word-fill::before { content: "\f38c"; } +.bi-file-earmark-word::before { content: "\f38d"; } +.bi-file-earmark-x-fill::before { content: "\f38e"; } +.bi-file-earmark-x::before { content: "\f38f"; } +.bi-file-earmark-zip-fill::before { content: "\f390"; } +.bi-file-earmark-zip::before { content: "\f391"; } +.bi-file-earmark::before { content: "\f392"; } +.bi-file-easel-fill::before { content: "\f393"; } +.bi-file-easel::before { content: "\f394"; } +.bi-file-excel-fill::before { content: "\f395"; } +.bi-file-excel::before { content: "\f396"; } +.bi-file-fill::before { content: "\f397"; } +.bi-file-font-fill::before { content: "\f398"; } +.bi-file-font::before { content: "\f399"; } +.bi-file-image-fill::before { content: "\f39a"; } +.bi-file-image::before { content: "\f39b"; } +.bi-file-lock-fill::before { content: "\f39c"; } +.bi-file-lock::before { content: "\f39d"; } +.bi-file-lock2-fill::before { content: "\f39e"; } +.bi-file-lock2::before { content: "\f39f"; } +.bi-file-medical-fill::before { content: "\f3a0"; } +.bi-file-medical::before { content: "\f3a1"; } +.bi-file-minus-fill::before { content: "\f3a2"; } +.bi-file-minus::before { content: "\f3a3"; } +.bi-file-music-fill::before { content: "\f3a4"; } +.bi-file-music::before { content: "\f3a5"; } +.bi-file-person-fill::before { content: "\f3a6"; } +.bi-file-person::before { content: "\f3a7"; } +.bi-file-play-fill::before { content: "\f3a8"; } +.bi-file-play::before { content: "\f3a9"; } +.bi-file-plus-fill::before { content: "\f3aa"; } +.bi-file-plus::before { content: "\f3ab"; } +.bi-file-post-fill::before { content: "\f3ac"; } +.bi-file-post::before { content: "\f3ad"; } +.bi-file-ppt-fill::before { content: "\f3ae"; } +.bi-file-ppt::before { content: "\f3af"; } +.bi-file-richtext-fill::before { content: "\f3b0"; } +.bi-file-richtext::before { content: "\f3b1"; } +.bi-file-ruled-fill::before { content: "\f3b2"; } +.bi-file-ruled::before { content: "\f3b3"; } +.bi-file-slides-fill::before { content: "\f3b4"; } +.bi-file-slides::before { content: "\f3b5"; } +.bi-file-spreadsheet-fill::before { content: "\f3b6"; } +.bi-file-spreadsheet::before { content: "\f3b7"; } +.bi-file-text-fill::before { content: "\f3b8"; } +.bi-file-text::before { content: "\f3b9"; } +.bi-file-word-fill::before { content: "\f3ba"; } +.bi-file-word::before { content: "\f3bb"; } +.bi-file-x-fill::before { content: "\f3bc"; } +.bi-file-x::before { content: "\f3bd"; } +.bi-file-zip-fill::before { content: "\f3be"; } +.bi-file-zip::before { content: "\f3bf"; } +.bi-file::before { content: "\f3c0"; } +.bi-files-alt::before { content: "\f3c1"; } +.bi-files::before { content: "\f3c2"; } +.bi-film::before { content: "\f3c3"; } +.bi-filter-circle-fill::before { content: "\f3c4"; } +.bi-filter-circle::before { content: "\f3c5"; } +.bi-filter-left::before { content: "\f3c6"; } +.bi-filter-right::before { content: "\f3c7"; } +.bi-filter-square-fill::before { content: "\f3c8"; } +.bi-filter-square::before { content: "\f3c9"; } +.bi-filter::before { content: "\f3ca"; } +.bi-flag-fill::before { content: "\f3cb"; } +.bi-flag::before { content: "\f3cc"; } +.bi-flower1::before { content: "\f3cd"; } +.bi-flower2::before { content: "\f3ce"; } +.bi-flower3::before { content: "\f3cf"; } +.bi-folder-check::before { content: "\f3d0"; } +.bi-folder-fill::before { content: "\f3d1"; } +.bi-folder-minus::before { content: "\f3d2"; } +.bi-folder-plus::before { content: "\f3d3"; } +.bi-folder-symlink-fill::before { content: "\f3d4"; } +.bi-folder-symlink::before { content: "\f3d5"; } +.bi-folder-x::before { content: "\f3d6"; } +.bi-folder::before { content: "\f3d7"; } +.bi-folder2-open::before { content: "\f3d8"; } +.bi-folder2::before { content: "\f3d9"; } +.bi-fonts::before { content: "\f3da"; } +.bi-forward-fill::before { content: "\f3db"; } +.bi-forward::before { content: "\f3dc"; } +.bi-front::before { content: "\f3dd"; } +.bi-fullscreen-exit::before { content: "\f3de"; } +.bi-fullscreen::before { content: "\f3df"; } +.bi-funnel-fill::before { content: "\f3e0"; } +.bi-funnel::before { content: "\f3e1"; } +.bi-gear-fill::before { content: "\f3e2"; } +.bi-gear-wide-connected::before { content: "\f3e3"; } +.bi-gear-wide::before { content: "\f3e4"; } +.bi-gear::before { content: "\f3e5"; } +.bi-gem::before { content: "\f3e6"; } +.bi-geo-alt-fill::before { content: "\f3e7"; } +.bi-geo-alt::before { content: "\f3e8"; } +.bi-geo-fill::before { content: "\f3e9"; } +.bi-geo::before { content: "\f3ea"; } +.bi-gift-fill::before { content: "\f3eb"; } +.bi-gift::before { content: "\f3ec"; } +.bi-github::before { content: "\f3ed"; } +.bi-globe::before { content: "\f3ee"; } +.bi-globe2::before { content: "\f3ef"; } +.bi-google::before { content: "\f3f0"; } +.bi-graph-down::before { content: "\f3f1"; } +.bi-graph-up::before { content: "\f3f2"; } +.bi-grid-1x2-fill::before { content: "\f3f3"; } +.bi-grid-1x2::before { content: "\f3f4"; } +.bi-grid-3x2-gap-fill::before { content: "\f3f5"; } +.bi-grid-3x2-gap::before { content: "\f3f6"; } +.bi-grid-3x2::before { content: "\f3f7"; } +.bi-grid-3x3-gap-fill::before { content: "\f3f8"; } +.bi-grid-3x3-gap::before { content: "\f3f9"; } +.bi-grid-3x3::before { content: "\f3fa"; } +.bi-grid-fill::before { content: "\f3fb"; } +.bi-grid::before { content: "\f3fc"; } +.bi-grip-horizontal::before { content: "\f3fd"; } +.bi-grip-vertical::before { content: "\f3fe"; } +.bi-hammer::before { content: "\f3ff"; } +.bi-hand-index-fill::before { content: "\f400"; } +.bi-hand-index-thumb-fill::before { content: "\f401"; } +.bi-hand-index-thumb::before { content: "\f402"; } +.bi-hand-index::before { content: "\f403"; } +.bi-hand-thumbs-down-fill::before { content: "\f404"; } +.bi-hand-thumbs-down::before { content: "\f405"; } +.bi-hand-thumbs-up-fill::before { content: "\f406"; } +.bi-hand-thumbs-up::before { content: "\f407"; } +.bi-handbag-fill::before { content: "\f408"; } +.bi-handbag::before { content: "\f409"; } +.bi-hash::before { content: "\f40a"; } +.bi-hdd-fill::before { content: "\f40b"; } +.bi-hdd-network-fill::before { content: "\f40c"; } +.bi-hdd-network::before { content: "\f40d"; } +.bi-hdd-rack-fill::before { content: "\f40e"; } +.bi-hdd-rack::before { content: "\f40f"; } +.bi-hdd-stack-fill::before { content: "\f410"; } +.bi-hdd-stack::before { content: "\f411"; } +.bi-hdd::before { content: "\f412"; } +.bi-headphones::before { content: "\f413"; } +.bi-headset::before { content: "\f414"; } +.bi-heart-fill::before { content: "\f415"; } +.bi-heart-half::before { content: "\f416"; } +.bi-heart::before { content: "\f417"; } +.bi-heptagon-fill::before { content: "\f418"; } +.bi-heptagon-half::before { content: "\f419"; } +.bi-heptagon::before { content: "\f41a"; } +.bi-hexagon-fill::before { content: "\f41b"; } +.bi-hexagon-half::before { content: "\f41c"; } +.bi-hexagon::before { content: "\f41d"; } +.bi-hourglass-bottom::before { content: "\f41e"; } +.bi-hourglass-split::before { content: "\f41f"; } +.bi-hourglass-top::before { content: "\f420"; } +.bi-hourglass::before { content: "\f421"; } +.bi-house-door-fill::before { content: "\f422"; } +.bi-house-door::before { content: "\f423"; } +.bi-house-fill::before { content: "\f424"; } +.bi-house::before { content: "\f425"; } +.bi-hr::before { content: "\f426"; } +.bi-hurricane::before { content: "\f427"; } +.bi-image-alt::before { content: "\f428"; } +.bi-image-fill::before { content: "\f429"; } +.bi-image::before { content: "\f42a"; } +.bi-images::before { content: "\f42b"; } +.bi-inbox-fill::before { content: "\f42c"; } +.bi-inbox::before { content: "\f42d"; } +.bi-inboxes-fill::before { content: "\f42e"; } +.bi-inboxes::before { content: "\f42f"; } +.bi-info-circle-fill::before { content: "\f430"; } +.bi-info-circle::before { content: "\f431"; } +.bi-info-square-fill::before { content: "\f432"; } +.bi-info-square::before { content: "\f433"; } +.bi-info::before { content: "\f434"; } +.bi-input-cursor-text::before { content: "\f435"; } +.bi-input-cursor::before { content: "\f436"; } +.bi-instagram::before { content: "\f437"; } +.bi-intersect::before { content: "\f438"; } +.bi-journal-album::before { content: "\f439"; } +.bi-journal-arrow-down::before { content: "\f43a"; } +.bi-journal-arrow-up::before { content: "\f43b"; } +.bi-journal-bookmark-fill::before { content: "\f43c"; } +.bi-journal-bookmark::before { content: "\f43d"; } +.bi-journal-check::before { content: "\f43e"; } +.bi-journal-code::before { content: "\f43f"; } +.bi-journal-medical::before { content: "\f440"; } +.bi-journal-minus::before { content: "\f441"; } +.bi-journal-plus::before { content: "\f442"; } +.bi-journal-richtext::before { content: "\f443"; } +.bi-journal-text::before { content: "\f444"; } +.bi-journal-x::before { content: "\f445"; } +.bi-journal::before { content: "\f446"; } +.bi-journals::before { content: "\f447"; } +.bi-joystick::before { content: "\f448"; } +.bi-justify-left::before { content: "\f449"; } +.bi-justify-right::before { content: "\f44a"; } +.bi-justify::before { content: "\f44b"; } +.bi-kanban-fill::before { content: "\f44c"; } +.bi-kanban::before { content: "\f44d"; } +.bi-key-fill::before { content: "\f44e"; } +.bi-key::before { content: "\f44f"; } +.bi-keyboard-fill::before { content: "\f450"; } +.bi-keyboard::before { content: "\f451"; } +.bi-ladder::before { content: "\f452"; } +.bi-lamp-fill::before { content: "\f453"; } +.bi-lamp::before { content: "\f454"; } +.bi-laptop-fill::before { content: "\f455"; } +.bi-laptop::before { content: "\f456"; } +.bi-layer-backward::before { content: "\f457"; } +.bi-layer-forward::before { content: "\f458"; } +.bi-layers-fill::before { content: "\f459"; } +.bi-layers-half::before { content: "\f45a"; } +.bi-layers::before { content: "\f45b"; } +.bi-layout-sidebar-inset-reverse::before { content: "\f45c"; } +.bi-layout-sidebar-inset::before { content: "\f45d"; } +.bi-layout-sidebar-reverse::before { content: "\f45e"; } +.bi-layout-sidebar::before { content: "\f45f"; } +.bi-layout-split::before { content: "\f460"; } +.bi-layout-text-sidebar-reverse::before { content: "\f461"; } +.bi-layout-text-sidebar::before { content: "\f462"; } +.bi-layout-text-window-reverse::before { content: "\f463"; } +.bi-layout-text-window::before { content: "\f464"; } +.bi-layout-three-columns::before { content: "\f465"; } +.bi-layout-wtf::before { content: "\f466"; } +.bi-life-preserver::before { content: "\f467"; } +.bi-lightbulb-fill::before { content: "\f468"; } +.bi-lightbulb-off-fill::before { content: "\f469"; } +.bi-lightbulb-off::before { content: "\f46a"; } +.bi-lightbulb::before { content: "\f46b"; } +.bi-lightning-charge-fill::before { content: "\f46c"; } +.bi-lightning-charge::before { content: "\f46d"; } +.bi-lightning-fill::before { content: "\f46e"; } +.bi-lightning::before { content: "\f46f"; } +.bi-link-45deg::before { content: "\f470"; } +.bi-link::before { content: "\f471"; } +.bi-linkedin::before { content: "\f472"; } +.bi-list-check::before { content: "\f473"; } +.bi-list-nested::before { content: "\f474"; } +.bi-list-ol::before { content: "\f475"; } +.bi-list-stars::before { content: "\f476"; } +.bi-list-task::before { content: "\f477"; } +.bi-list-ul::before { content: "\f478"; } +.bi-list::before { content: "\f479"; } +.bi-lock-fill::before { content: "\f47a"; } +.bi-lock::before { content: "\f47b"; } +.bi-mailbox::before { content: "\f47c"; } +.bi-mailbox2::before { content: "\f47d"; } +.bi-map-fill::before { content: "\f47e"; } +.bi-map::before { content: "\f47f"; } +.bi-markdown-fill::before { content: "\f480"; } +.bi-markdown::before { content: "\f481"; } +.bi-mask::before { content: "\f482"; } +.bi-megaphone-fill::before { content: "\f483"; } +.bi-megaphone::before { content: "\f484"; } +.bi-menu-app-fill::before { content: "\f485"; } +.bi-menu-app::before { content: "\f486"; } +.bi-menu-button-fill::before { content: "\f487"; } +.bi-menu-button-wide-fill::before { content: "\f488"; } +.bi-menu-button-wide::before { content: "\f489"; } +.bi-menu-button::before { content: "\f48a"; } +.bi-menu-down::before { content: "\f48b"; } +.bi-menu-up::before { content: "\f48c"; } +.bi-mic-fill::before { content: "\f48d"; } +.bi-mic-mute-fill::before { content: "\f48e"; } +.bi-mic-mute::before { content: "\f48f"; } +.bi-mic::before { content: "\f490"; } +.bi-minecart-loaded::before { content: "\f491"; } +.bi-minecart::before { content: "\f492"; } +.bi-moisture::before { content: "\f493"; } +.bi-moon-fill::before { content: "\f494"; } +.bi-moon-stars-fill::before { content: "\f495"; } +.bi-moon-stars::before { content: "\f496"; } +.bi-moon::before { content: "\f497"; } +.bi-mouse-fill::before { content: "\f498"; } +.bi-mouse::before { content: "\f499"; } +.bi-mouse2-fill::before { content: "\f49a"; } +.bi-mouse2::before { content: "\f49b"; } +.bi-mouse3-fill::before { content: "\f49c"; } +.bi-mouse3::before { content: "\f49d"; } +.bi-music-note-beamed::before { content: "\f49e"; } +.bi-music-note-list::before { content: "\f49f"; } +.bi-music-note::before { content: "\f4a0"; } +.bi-music-player-fill::before { content: "\f4a1"; } +.bi-music-player::before { content: "\f4a2"; } +.bi-newspaper::before { content: "\f4a3"; } +.bi-node-minus-fill::before { content: "\f4a4"; } +.bi-node-minus::before { content: "\f4a5"; } +.bi-node-plus-fill::before { content: "\f4a6"; } +.bi-node-plus::before { content: "\f4a7"; } +.bi-nut-fill::before { content: "\f4a8"; } +.bi-nut::before { content: "\f4a9"; } +.bi-octagon-fill::before { content: "\f4aa"; } +.bi-octagon-half::before { content: "\f4ab"; } +.bi-octagon::before { content: "\f4ac"; } +.bi-option::before { content: "\f4ad"; } +.bi-outlet::before { content: "\f4ae"; } +.bi-paint-bucket::before { content: "\f4af"; } +.bi-palette-fill::before { content: "\f4b0"; } +.bi-palette::before { content: "\f4b1"; } +.bi-palette2::before { content: "\f4b2"; } +.bi-paperclip::before { content: "\f4b3"; } +.bi-paragraph::before { content: "\f4b4"; } +.bi-patch-check-fill::before { content: "\f4b5"; } +.bi-patch-check::before { content: "\f4b6"; } +.bi-patch-exclamation-fill::before { content: "\f4b7"; } +.bi-patch-exclamation::before { content: "\f4b8"; } +.bi-patch-minus-fill::before { content: "\f4b9"; } +.bi-patch-minus::before { content: "\f4ba"; } +.bi-patch-plus-fill::before { content: "\f4bb"; } +.bi-patch-plus::before { content: "\f4bc"; } +.bi-patch-question-fill::before { content: "\f4bd"; } +.bi-patch-question::before { content: "\f4be"; } +.bi-pause-btn-fill::before { content: "\f4bf"; } +.bi-pause-btn::before { content: "\f4c0"; } +.bi-pause-circle-fill::before { content: "\f4c1"; } +.bi-pause-circle::before { content: "\f4c2"; } +.bi-pause-fill::before { content: "\f4c3"; } +.bi-pause::before { content: "\f4c4"; } +.bi-peace-fill::before { content: "\f4c5"; } +.bi-peace::before { content: "\f4c6"; } +.bi-pen-fill::before { content: "\f4c7"; } +.bi-pen::before { content: "\f4c8"; } +.bi-pencil-fill::before { content: "\f4c9"; } +.bi-pencil-square::before { content: "\f4ca"; } +.bi-pencil::before { content: "\f4cb"; } +.bi-pentagon-fill::before { content: "\f4cc"; } +.bi-pentagon-half::before { content: "\f4cd"; } +.bi-pentagon::before { content: "\f4ce"; } +.bi-people-fill::before { content: "\f4cf"; } +.bi-people::before { content: "\f4d0"; } +.bi-percent::before { content: "\f4d1"; } +.bi-person-badge-fill::before { content: "\f4d2"; } +.bi-person-badge::before { content: "\f4d3"; } +.bi-person-bounding-box::before { content: "\f4d4"; } +.bi-person-check-fill::before { content: "\f4d5"; } +.bi-person-check::before { content: "\f4d6"; } +.bi-person-circle::before { content: "\f4d7"; } +.bi-person-dash-fill::before { content: "\f4d8"; } +.bi-person-dash::before { content: "\f4d9"; } +.bi-person-fill::before { content: "\f4da"; } +.bi-person-lines-fill::before { content: "\f4db"; } +.bi-person-plus-fill::before { content: "\f4dc"; } +.bi-person-plus::before { content: "\f4dd"; } +.bi-person-square::before { content: "\f4de"; } +.bi-person-x-fill::before { content: "\f4df"; } +.bi-person-x::before { content: "\f4e0"; } +.bi-person::before { content: "\f4e1"; } +.bi-phone-fill::before { content: "\f4e2"; } +.bi-phone-landscape-fill::before { content: "\f4e3"; } +.bi-phone-landscape::before { content: "\f4e4"; } +.bi-phone-vibrate-fill::before { content: "\f4e5"; } +.bi-phone-vibrate::before { content: "\f4e6"; } +.bi-phone::before { content: "\f4e7"; } +.bi-pie-chart-fill::before { content: "\f4e8"; } +.bi-pie-chart::before { content: "\f4e9"; } +.bi-pin-angle-fill::before { content: "\f4ea"; } +.bi-pin-angle::before { content: "\f4eb"; } +.bi-pin-fill::before { content: "\f4ec"; } +.bi-pin::before { content: "\f4ed"; } +.bi-pip-fill::before { content: "\f4ee"; } +.bi-pip::before { content: "\f4ef"; } +.bi-play-btn-fill::before { content: "\f4f0"; } +.bi-play-btn::before { content: "\f4f1"; } +.bi-play-circle-fill::before { content: "\f4f2"; } +.bi-play-circle::before { content: "\f4f3"; } +.bi-play-fill::before { content: "\f4f4"; } +.bi-play::before { content: "\f4f5"; } +.bi-plug-fill::before { content: "\f4f6"; } +.bi-plug::before { content: "\f4f7"; } +.bi-plus-circle-dotted::before { content: "\f4f8"; } +.bi-plus-circle-fill::before { content: "\f4f9"; } +.bi-plus-circle::before { content: "\f4fa"; } +.bi-plus-square-dotted::before { content: "\f4fb"; } +.bi-plus-square-fill::before { content: "\f4fc"; } +.bi-plus-square::before { content: "\f4fd"; } +.bi-plus::before { content: "\f4fe"; } +.bi-power::before { content: "\f4ff"; } +.bi-printer-fill::before { content: "\f500"; } +.bi-printer::before { content: "\f501"; } +.bi-puzzle-fill::before { content: "\f502"; } +.bi-puzzle::before { content: "\f503"; } +.bi-question-circle-fill::before { content: "\f504"; } +.bi-question-circle::before { content: "\f505"; } +.bi-question-diamond-fill::before { content: "\f506"; } +.bi-question-diamond::before { content: "\f507"; } +.bi-question-octagon-fill::before { content: "\f508"; } +.bi-question-octagon::before { content: "\f509"; } +.bi-question-square-fill::before { content: "\f50a"; } +.bi-question-square::before { content: "\f50b"; } +.bi-question::before { content: "\f50c"; } +.bi-rainbow::before { content: "\f50d"; } +.bi-receipt-cutoff::before { content: "\f50e"; } +.bi-receipt::before { content: "\f50f"; } +.bi-reception-0::before { content: "\f510"; } +.bi-reception-1::before { content: "\f511"; } +.bi-reception-2::before { content: "\f512"; } +.bi-reception-3::before { content: "\f513"; } +.bi-reception-4::before { content: "\f514"; } +.bi-record-btn-fill::before { content: "\f515"; } +.bi-record-btn::before { content: "\f516"; } +.bi-record-circle-fill::before { content: "\f517"; } +.bi-record-circle::before { content: "\f518"; } +.bi-record-fill::before { content: "\f519"; } +.bi-record::before { content: "\f51a"; } +.bi-record2-fill::before { content: "\f51b"; } +.bi-record2::before { content: "\f51c"; } +.bi-reply-all-fill::before { content: "\f51d"; } +.bi-reply-all::before { content: "\f51e"; } +.bi-reply-fill::before { content: "\f51f"; } +.bi-reply::before { content: "\f520"; } +.bi-rss-fill::before { content: "\f521"; } +.bi-rss::before { content: "\f522"; } +.bi-rulers::before { content: "\f523"; } +.bi-save-fill::before { content: "\f524"; } +.bi-save::before { content: "\f525"; } +.bi-save2-fill::before { content: "\f526"; } +.bi-save2::before { content: "\f527"; } +.bi-scissors::before { content: "\f528"; } +.bi-screwdriver::before { content: "\f529"; } +.bi-search::before { content: "\f52a"; } +.bi-segmented-nav::before { content: "\f52b"; } +.bi-server::before { content: "\f52c"; } +.bi-share-fill::before { content: "\f52d"; } +.bi-share::before { content: "\f52e"; } +.bi-shield-check::before { content: "\f52f"; } +.bi-shield-exclamation::before { content: "\f530"; } +.bi-shield-fill-check::before { content: "\f531"; } +.bi-shield-fill-exclamation::before { content: "\f532"; } +.bi-shield-fill-minus::before { content: "\f533"; } +.bi-shield-fill-plus::before { content: "\f534"; } +.bi-shield-fill-x::before { content: "\f535"; } +.bi-shield-fill::before { content: "\f536"; } +.bi-shield-lock-fill::before { content: "\f537"; } +.bi-shield-lock::before { content: "\f538"; } +.bi-shield-minus::before { content: "\f539"; } +.bi-shield-plus::before { content: "\f53a"; } +.bi-shield-shaded::before { content: "\f53b"; } +.bi-shield-slash-fill::before { content: "\f53c"; } +.bi-shield-slash::before { content: "\f53d"; } +.bi-shield-x::before { content: "\f53e"; } +.bi-shield::before { content: "\f53f"; } +.bi-shift-fill::before { content: "\f540"; } +.bi-shift::before { content: "\f541"; } +.bi-shop-window::before { content: "\f542"; } +.bi-shop::before { content: "\f543"; } +.bi-shuffle::before { content: "\f544"; } +.bi-signpost-2-fill::before { content: "\f545"; } +.bi-signpost-2::before { content: "\f546"; } +.bi-signpost-fill::before { content: "\f547"; } +.bi-signpost-split-fill::before { content: "\f548"; } +.bi-signpost-split::before { content: "\f549"; } +.bi-signpost::before { content: "\f54a"; } +.bi-sim-fill::before { content: "\f54b"; } +.bi-sim::before { content: "\f54c"; } +.bi-skip-backward-btn-fill::before { content: "\f54d"; } +.bi-skip-backward-btn::before { content: "\f54e"; } +.bi-skip-backward-circle-fill::before { content: "\f54f"; } +.bi-skip-backward-circle::before { content: "\f550"; } +.bi-skip-backward-fill::before { content: "\f551"; } +.bi-skip-backward::before { content: "\f552"; } +.bi-skip-end-btn-fill::before { content: "\f553"; } +.bi-skip-end-btn::before { content: "\f554"; } +.bi-skip-end-circle-fill::before { content: "\f555"; } +.bi-skip-end-circle::before { content: "\f556"; } +.bi-skip-end-fill::before { content: "\f557"; } +.bi-skip-end::before { content: "\f558"; } +.bi-skip-forward-btn-fill::before { content: "\f559"; } +.bi-skip-forward-btn::before { content: "\f55a"; } +.bi-skip-forward-circle-fill::before { content: "\f55b"; } +.bi-skip-forward-circle::before { content: "\f55c"; } +.bi-skip-forward-fill::before { content: "\f55d"; } +.bi-skip-forward::before { content: "\f55e"; } +.bi-skip-start-btn-fill::before { content: "\f55f"; } +.bi-skip-start-btn::before { content: "\f560"; } +.bi-skip-start-circle-fill::before { content: "\f561"; } +.bi-skip-start-circle::before { content: "\f562"; } +.bi-skip-start-fill::before { content: "\f563"; } +.bi-skip-start::before { content: "\f564"; } +.bi-slack::before { content: "\f565"; } +.bi-slash-circle-fill::before { content: "\f566"; } +.bi-slash-circle::before { content: "\f567"; } +.bi-slash-square-fill::before { content: "\f568"; } +.bi-slash-square::before { content: "\f569"; } +.bi-slash::before { content: "\f56a"; } +.bi-sliders::before { content: "\f56b"; } +.bi-smartwatch::before { content: "\f56c"; } +.bi-snow::before { content: "\f56d"; } +.bi-snow2::before { content: "\f56e"; } +.bi-snow3::before { content: "\f56f"; } +.bi-sort-alpha-down-alt::before { content: "\f570"; } +.bi-sort-alpha-down::before { content: "\f571"; } +.bi-sort-alpha-up-alt::before { content: "\f572"; } +.bi-sort-alpha-up::before { content: "\f573"; } +.bi-sort-down-alt::before { content: "\f574"; } +.bi-sort-down::before { content: "\f575"; } +.bi-sort-numeric-down-alt::before { content: "\f576"; } +.bi-sort-numeric-down::before { content: "\f577"; } +.bi-sort-numeric-up-alt::before { content: "\f578"; } +.bi-sort-numeric-up::before { content: "\f579"; } +.bi-sort-up-alt::before { content: "\f57a"; } +.bi-sort-up::before { content: "\f57b"; } +.bi-soundwave::before { content: "\f57c"; } +.bi-speaker-fill::before { content: "\f57d"; } +.bi-speaker::before { content: "\f57e"; } +.bi-speedometer::before { content: "\f57f"; } +.bi-speedometer2::before { content: "\f580"; } +.bi-spellcheck::before { content: "\f581"; } +.bi-square-fill::before { content: "\f582"; } +.bi-square-half::before { content: "\f583"; } +.bi-square::before { content: "\f584"; } +.bi-stack::before { content: "\f585"; } +.bi-star-fill::before { content: "\f586"; } +.bi-star-half::before { content: "\f587"; } +.bi-star::before { content: "\f588"; } +.bi-stars::before { content: "\f589"; } +.bi-stickies-fill::before { content: "\f58a"; } +.bi-stickies::before { content: "\f58b"; } +.bi-sticky-fill::before { content: "\f58c"; } +.bi-sticky::before { content: "\f58d"; } +.bi-stop-btn-fill::before { content: "\f58e"; } +.bi-stop-btn::before { content: "\f58f"; } +.bi-stop-circle-fill::before { content: "\f590"; } +.bi-stop-circle::before { content: "\f591"; } +.bi-stop-fill::before { content: "\f592"; } +.bi-stop::before { content: "\f593"; } +.bi-stoplights-fill::before { content: "\f594"; } +.bi-stoplights::before { content: "\f595"; } +.bi-stopwatch-fill::before { content: "\f596"; } +.bi-stopwatch::before { content: "\f597"; } +.bi-subtract::before { content: "\f598"; } +.bi-suit-club-fill::before { content: "\f599"; } +.bi-suit-club::before { content: "\f59a"; } +.bi-suit-diamond-fill::before { content: "\f59b"; } +.bi-suit-diamond::before { content: "\f59c"; } +.bi-suit-heart-fill::before { content: "\f59d"; } +.bi-suit-heart::before { content: "\f59e"; } +.bi-suit-spade-fill::before { content: "\f59f"; } +.bi-suit-spade::before { content: "\f5a0"; } +.bi-sun-fill::before { content: "\f5a1"; } +.bi-sun::before { content: "\f5a2"; } +.bi-sunglasses::before { content: "\f5a3"; } +.bi-sunrise-fill::before { content: "\f5a4"; } +.bi-sunrise::before { content: "\f5a5"; } +.bi-sunset-fill::before { content: "\f5a6"; } +.bi-sunset::before { content: "\f5a7"; } +.bi-symmetry-horizontal::before { content: "\f5a8"; } +.bi-symmetry-vertical::before { content: "\f5a9"; } +.bi-table::before { content: "\f5aa"; } +.bi-tablet-fill::before { content: "\f5ab"; } +.bi-tablet-landscape-fill::before { content: "\f5ac"; } +.bi-tablet-landscape::before { content: "\f5ad"; } +.bi-tablet::before { content: "\f5ae"; } +.bi-tag-fill::before { content: "\f5af"; } +.bi-tag::before { content: "\f5b0"; } +.bi-tags-fill::before { content: "\f5b1"; } +.bi-tags::before { content: "\f5b2"; } +.bi-telegram::before { content: "\f5b3"; } +.bi-telephone-fill::before { content: "\f5b4"; } +.bi-telephone-forward-fill::before { content: "\f5b5"; } +.bi-telephone-forward::before { content: "\f5b6"; } +.bi-telephone-inbound-fill::before { content: "\f5b7"; } +.bi-telephone-inbound::before { content: "\f5b8"; } +.bi-telephone-minus-fill::before { content: "\f5b9"; } +.bi-telephone-minus::before { content: "\f5ba"; } +.bi-telephone-outbound-fill::before { content: "\f5bb"; } +.bi-telephone-outbound::before { content: "\f5bc"; } +.bi-telephone-plus-fill::before { content: "\f5bd"; } +.bi-telephone-plus::before { content: "\f5be"; } +.bi-telephone-x-fill::before { content: "\f5bf"; } +.bi-telephone-x::before { content: "\f5c0"; } +.bi-telephone::before { content: "\f5c1"; } +.bi-terminal-fill::before { content: "\f5c2"; } +.bi-terminal::before { content: "\f5c3"; } +.bi-text-center::before { content: "\f5c4"; } +.bi-text-indent-left::before { content: "\f5c5"; } +.bi-text-indent-right::before { content: "\f5c6"; } +.bi-text-left::before { content: "\f5c7"; } +.bi-text-paragraph::before { content: "\f5c8"; } +.bi-text-right::before { content: "\f5c9"; } +.bi-textarea-resize::before { content: "\f5ca"; } +.bi-textarea-t::before { content: "\f5cb"; } +.bi-textarea::before { content: "\f5cc"; } +.bi-thermometer-half::before { content: "\f5cd"; } +.bi-thermometer-high::before { content: "\f5ce"; } +.bi-thermometer-low::before { content: "\f5cf"; } +.bi-thermometer-snow::before { content: "\f5d0"; } +.bi-thermometer-sun::before { content: "\f5d1"; } +.bi-thermometer::before { content: "\f5d2"; } +.bi-three-dots-vertical::before { content: "\f5d3"; } +.bi-three-dots::before { content: "\f5d4"; } +.bi-toggle-off::before { content: "\f5d5"; } +.bi-toggle-on::before { content: "\f5d6"; } +.bi-toggle2-off::before { content: "\f5d7"; } +.bi-toggle2-on::before { content: "\f5d8"; } +.bi-toggles::before { content: "\f5d9"; } +.bi-toggles2::before { content: "\f5da"; } +.bi-tools::before { content: "\f5db"; } +.bi-tornado::before { content: "\f5dc"; } +.bi-trash-fill::before { content: "\f5dd"; } +.bi-trash::before { content: "\f5de"; } +.bi-trash2-fill::before { content: "\f5df"; } +.bi-trash2::before { content: "\f5e0"; } +.bi-tree-fill::before { content: "\f5e1"; } +.bi-tree::before { content: "\f5e2"; } +.bi-triangle-fill::before { content: "\f5e3"; } +.bi-triangle-half::before { content: "\f5e4"; } +.bi-triangle::before { content: "\f5e5"; } +.bi-trophy-fill::before { content: "\f5e6"; } +.bi-trophy::before { content: "\f5e7"; } +.bi-tropical-storm::before { content: "\f5e8"; } +.bi-truck-flatbed::before { content: "\f5e9"; } +.bi-truck::before { content: "\f5ea"; } +.bi-tsunami::before { content: "\f5eb"; } +.bi-tv-fill::before { content: "\f5ec"; } +.bi-tv::before { content: "\f5ed"; } +.bi-twitch::before { content: "\f5ee"; } +.bi-twitter::before { content: "\f5ef"; } +.bi-type-bold::before { content: "\f5f0"; } +.bi-type-h1::before { content: "\f5f1"; } +.bi-type-h2::before { content: "\f5f2"; } +.bi-type-h3::before { content: "\f5f3"; } +.bi-type-italic::before { content: "\f5f4"; } +.bi-type-strikethrough::before { content: "\f5f5"; } +.bi-type-underline::before { content: "\f5f6"; } +.bi-type::before { content: "\f5f7"; } +.bi-ui-checks-grid::before { content: "\f5f8"; } +.bi-ui-checks::before { content: "\f5f9"; } +.bi-ui-radios-grid::before { content: "\f5fa"; } +.bi-ui-radios::before { content: "\f5fb"; } +.bi-umbrella-fill::before { content: "\f5fc"; } +.bi-umbrella::before { content: "\f5fd"; } +.bi-union::before { content: "\f5fe"; } +.bi-unlock-fill::before { content: "\f5ff"; } +.bi-unlock::before { content: "\f600"; } +.bi-upc-scan::before { content: "\f601"; } +.bi-upc::before { content: "\f602"; } +.bi-upload::before { content: "\f603"; } +.bi-vector-pen::before { content: "\f604"; } +.bi-view-list::before { content: "\f605"; } +.bi-view-stacked::before { content: "\f606"; } +.bi-vinyl-fill::before { content: "\f607"; } +.bi-vinyl::before { content: "\f608"; } +.bi-voicemail::before { content: "\f609"; } +.bi-volume-down-fill::before { content: "\f60a"; } +.bi-volume-down::before { content: "\f60b"; } +.bi-volume-mute-fill::before { content: "\f60c"; } +.bi-volume-mute::before { content: "\f60d"; } +.bi-volume-off-fill::before { content: "\f60e"; } +.bi-volume-off::before { content: "\f60f"; } +.bi-volume-up-fill::before { content: "\f610"; } +.bi-volume-up::before { content: "\f611"; } +.bi-vr::before { content: "\f612"; } +.bi-wallet-fill::before { content: "\f613"; } +.bi-wallet::before { content: "\f614"; } +.bi-wallet2::before { content: "\f615"; } +.bi-watch::before { content: "\f616"; } +.bi-water::before { content: "\f617"; } +.bi-whatsapp::before { content: "\f618"; } +.bi-wifi-1::before { content: "\f619"; } +.bi-wifi-2::before { content: "\f61a"; } +.bi-wifi-off::before { content: "\f61b"; } +.bi-wifi::before { content: "\f61c"; } +.bi-wind::before { content: "\f61d"; } +.bi-window-dock::before { content: "\f61e"; } +.bi-window-sidebar::before { content: "\f61f"; } +.bi-window::before { content: "\f620"; } +.bi-wrench::before { content: "\f621"; } +.bi-x-circle-fill::before { content: "\f622"; } +.bi-x-circle::before { content: "\f623"; } +.bi-x-diamond-fill::before { content: "\f624"; } +.bi-x-diamond::before { content: "\f625"; } +.bi-x-octagon-fill::before { content: "\f626"; } +.bi-x-octagon::before { content: "\f627"; } +.bi-x-square-fill::before { content: "\f628"; } +.bi-x-square::before { content: "\f629"; } +.bi-x::before { content: "\f62a"; } +.bi-youtube::before { content: "\f62b"; } +.bi-zoom-in::before { content: "\f62c"; } +.bi-zoom-out::before { content: "\f62d"; } +.bi-bank::before { content: "\f62e"; } +.bi-bank2::before { content: "\f62f"; } +.bi-bell-slash-fill::before { content: "\f630"; } +.bi-bell-slash::before { content: "\f631"; } +.bi-cash-coin::before { content: "\f632"; } +.bi-check-lg::before { content: "\f633"; } +.bi-coin::before { content: "\f634"; } +.bi-currency-bitcoin::before { content: "\f635"; } +.bi-currency-dollar::before { content: "\f636"; } +.bi-currency-euro::before { content: "\f637"; } +.bi-currency-exchange::before { content: "\f638"; } +.bi-currency-pound::before { content: "\f639"; } +.bi-currency-yen::before { content: "\f63a"; } +.bi-dash-lg::before { content: "\f63b"; } +.bi-exclamation-lg::before { content: "\f63c"; } +.bi-file-earmark-pdf-fill::before { content: "\f63d"; } +.bi-file-earmark-pdf::before { content: "\f63e"; } +.bi-file-pdf-fill::before { content: "\f63f"; } +.bi-file-pdf::before { content: "\f640"; } +.bi-gender-ambiguous::before { content: "\f641"; } +.bi-gender-female::before { content: "\f642"; } +.bi-gender-male::before { content: "\f643"; } +.bi-gender-trans::before { content: "\f644"; } +.bi-headset-vr::before { content: "\f645"; } +.bi-info-lg::before { content: "\f646"; } +.bi-mastodon::before { content: "\f647"; } +.bi-messenger::before { content: "\f648"; } +.bi-piggy-bank-fill::before { content: "\f649"; } +.bi-piggy-bank::before { content: "\f64a"; } +.bi-pin-map-fill::before { content: "\f64b"; } +.bi-pin-map::before { content: "\f64c"; } +.bi-plus-lg::before { content: "\f64d"; } +.bi-question-lg::before { content: "\f64e"; } +.bi-recycle::before { content: "\f64f"; } +.bi-reddit::before { content: "\f650"; } +.bi-safe-fill::before { content: "\f651"; } +.bi-safe2-fill::before { content: "\f652"; } +.bi-safe2::before { content: "\f653"; } +.bi-sd-card-fill::before { content: "\f654"; } +.bi-sd-card::before { content: "\f655"; } +.bi-skype::before { content: "\f656"; } +.bi-slash-lg::before { content: "\f657"; } +.bi-translate::before { content: "\f658"; } +.bi-x-lg::before { content: "\f659"; } +.bi-safe::before { content: "\f65a"; } +.bi-apple::before { content: "\f65b"; } +.bi-microsoft::before { content: "\f65d"; } +.bi-windows::before { content: "\f65e"; } +.bi-behance::before { content: "\f65c"; } +.bi-dribbble::before { content: "\f65f"; } +.bi-line::before { content: "\f660"; } +.bi-medium::before { content: "\f661"; } +.bi-paypal::before { content: "\f662"; } +.bi-pinterest::before { content: "\f663"; } +.bi-signal::before { content: "\f664"; } +.bi-snapchat::before { content: "\f665"; } +.bi-spotify::before { content: "\f666"; } +.bi-stack-overflow::before { content: "\f667"; } +.bi-strava::before { content: "\f668"; } +.bi-wordpress::before { content: "\f669"; } +.bi-vimeo::before { content: "\f66a"; } +.bi-activity::before { content: "\f66b"; } +.bi-easel2-fill::before { content: "\f66c"; } +.bi-easel2::before { content: "\f66d"; } +.bi-easel3-fill::before { content: "\f66e"; } +.bi-easel3::before { content: "\f66f"; } +.bi-fan::before { content: "\f670"; } +.bi-fingerprint::before { content: "\f671"; } +.bi-graph-down-arrow::before { content: "\f672"; } +.bi-graph-up-arrow::before { content: "\f673"; } +.bi-hypnotize::before { content: "\f674"; } +.bi-magic::before { content: "\f675"; } +.bi-person-rolodex::before { content: "\f676"; } +.bi-person-video::before { content: "\f677"; } +.bi-person-video2::before { content: "\f678"; } +.bi-person-video3::before { content: "\f679"; } +.bi-person-workspace::before { content: "\f67a"; } +.bi-radioactive::before { content: "\f67b"; } +.bi-webcam-fill::before { content: "\f67c"; } +.bi-webcam::before { content: "\f67d"; } +.bi-yin-yang::before { content: "\f67e"; } +.bi-bandaid-fill::before { content: "\f680"; } +.bi-bandaid::before { content: "\f681"; } +.bi-bluetooth::before { content: "\f682"; } +.bi-body-text::before { content: "\f683"; } +.bi-boombox::before { content: "\f684"; } +.bi-boxes::before { content: "\f685"; } +.bi-dpad-fill::before { content: "\f686"; } +.bi-dpad::before { content: "\f687"; } +.bi-ear-fill::before { content: "\f688"; } +.bi-ear::before { content: "\f689"; } +.bi-envelope-check-fill::before { content: "\f68b"; } +.bi-envelope-check::before { content: "\f68c"; } +.bi-envelope-dash-fill::before { content: "\f68e"; } +.bi-envelope-dash::before { content: "\f68f"; } +.bi-envelope-exclamation-fill::before { content: "\f691"; } +.bi-envelope-exclamation::before { content: "\f692"; } +.bi-envelope-plus-fill::before { content: "\f693"; } +.bi-envelope-plus::before { content: "\f694"; } +.bi-envelope-slash-fill::before { content: "\f696"; } +.bi-envelope-slash::before { content: "\f697"; } +.bi-envelope-x-fill::before { content: "\f699"; } +.bi-envelope-x::before { content: "\f69a"; } +.bi-explicit-fill::before { content: "\f69b"; } +.bi-explicit::before { content: "\f69c"; } +.bi-git::before { content: "\f69d"; } +.bi-infinity::before { content: "\f69e"; } +.bi-list-columns-reverse::before { content: "\f69f"; } +.bi-list-columns::before { content: "\f6a0"; } +.bi-meta::before { content: "\f6a1"; } +.bi-nintendo-switch::before { content: "\f6a4"; } +.bi-pc-display-horizontal::before { content: "\f6a5"; } +.bi-pc-display::before { content: "\f6a6"; } +.bi-pc-horizontal::before { content: "\f6a7"; } +.bi-pc::before { content: "\f6a8"; } +.bi-playstation::before { content: "\f6a9"; } +.bi-plus-slash-minus::before { content: "\f6aa"; } +.bi-projector-fill::before { content: "\f6ab"; } +.bi-projector::before { content: "\f6ac"; } +.bi-qr-code-scan::before { content: "\f6ad"; } +.bi-qr-code::before { content: "\f6ae"; } +.bi-quora::before { content: "\f6af"; } +.bi-quote::before { content: "\f6b0"; } +.bi-robot::before { content: "\f6b1"; } +.bi-send-check-fill::before { content: "\f6b2"; } +.bi-send-check::before { content: "\f6b3"; } +.bi-send-dash-fill::before { content: "\f6b4"; } +.bi-send-dash::before { content: "\f6b5"; } +.bi-send-exclamation-fill::before { content: "\f6b7"; } +.bi-send-exclamation::before { content: "\f6b8"; } +.bi-send-fill::before { content: "\f6b9"; } +.bi-send-plus-fill::before { content: "\f6ba"; } +.bi-send-plus::before { content: "\f6bb"; } +.bi-send-slash-fill::before { content: "\f6bc"; } +.bi-send-slash::before { content: "\f6bd"; } +.bi-send-x-fill::before { content: "\f6be"; } +.bi-send-x::before { content: "\f6bf"; } +.bi-send::before { content: "\f6c0"; } +.bi-steam::before { content: "\f6c1"; } +.bi-terminal-dash::before { content: "\f6c3"; } +.bi-terminal-plus::before { content: "\f6c4"; } +.bi-terminal-split::before { content: "\f6c5"; } +.bi-ticket-detailed-fill::before { content: "\f6c6"; } +.bi-ticket-detailed::before { content: "\f6c7"; } +.bi-ticket-fill::before { content: "\f6c8"; } +.bi-ticket-perforated-fill::before { content: "\f6c9"; } +.bi-ticket-perforated::before { content: "\f6ca"; } +.bi-ticket::before { content: "\f6cb"; } +.bi-tiktok::before { content: "\f6cc"; } +.bi-window-dash::before { content: "\f6cd"; } +.bi-window-desktop::before { content: "\f6ce"; } +.bi-window-fullscreen::before { content: "\f6cf"; } +.bi-window-plus::before { content: "\f6d0"; } +.bi-window-split::before { content: "\f6d1"; } +.bi-window-stack::before { content: "\f6d2"; } +.bi-window-x::before { content: "\f6d3"; } +.bi-xbox::before { content: "\f6d4"; } +.bi-ethernet::before { content: "\f6d5"; } +.bi-hdmi-fill::before { content: "\f6d6"; } +.bi-hdmi::before { content: "\f6d7"; } +.bi-usb-c-fill::before { content: "\f6d8"; } +.bi-usb-c::before { content: "\f6d9"; } +.bi-usb-fill::before { content: "\f6da"; } +.bi-usb-plug-fill::before { content: "\f6db"; } +.bi-usb-plug::before { content: "\f6dc"; } +.bi-usb-symbol::before { content: "\f6dd"; } +.bi-usb::before { content: "\f6de"; } +.bi-boombox-fill::before { content: "\f6df"; } +.bi-displayport::before { content: "\f6e1"; } +.bi-gpu-card::before { content: "\f6e2"; } +.bi-memory::before { content: "\f6e3"; } +.bi-modem-fill::before { content: "\f6e4"; } +.bi-modem::before { content: "\f6e5"; } +.bi-motherboard-fill::before { content: "\f6e6"; } +.bi-motherboard::before { content: "\f6e7"; } +.bi-optical-audio-fill::before { content: "\f6e8"; } +.bi-optical-audio::before { content: "\f6e9"; } +.bi-pci-card::before { content: "\f6ea"; } +.bi-router-fill::before { content: "\f6eb"; } +.bi-router::before { content: "\f6ec"; } +.bi-thunderbolt-fill::before { content: "\f6ef"; } +.bi-thunderbolt::before { content: "\f6f0"; } +.bi-usb-drive-fill::before { content: "\f6f1"; } +.bi-usb-drive::before { content: "\f6f2"; } +.bi-usb-micro-fill::before { content: "\f6f3"; } +.bi-usb-micro::before { content: "\f6f4"; } +.bi-usb-mini-fill::before { content: "\f6f5"; } +.bi-usb-mini::before { content: "\f6f6"; } +.bi-cloud-haze2::before { content: "\f6f7"; } +.bi-device-hdd-fill::before { content: "\f6f8"; } +.bi-device-hdd::before { content: "\f6f9"; } +.bi-device-ssd-fill::before { content: "\f6fa"; } +.bi-device-ssd::before { content: "\f6fb"; } +.bi-displayport-fill::before { content: "\f6fc"; } +.bi-mortarboard-fill::before { content: "\f6fd"; } +.bi-mortarboard::before { content: "\f6fe"; } +.bi-terminal-x::before { content: "\f6ff"; } +.bi-arrow-through-heart-fill::before { content: "\f700"; } +.bi-arrow-through-heart::before { content: "\f701"; } +.bi-badge-sd-fill::before { content: "\f702"; } +.bi-badge-sd::before { content: "\f703"; } +.bi-bag-heart-fill::before { content: "\f704"; } +.bi-bag-heart::before { content: "\f705"; } +.bi-balloon-fill::before { content: "\f706"; } +.bi-balloon-heart-fill::before { content: "\f707"; } +.bi-balloon-heart::before { content: "\f708"; } +.bi-balloon::before { content: "\f709"; } +.bi-box2-fill::before { content: "\f70a"; } +.bi-box2-heart-fill::before { content: "\f70b"; } +.bi-box2-heart::before { content: "\f70c"; } +.bi-box2::before { content: "\f70d"; } +.bi-braces-asterisk::before { content: "\f70e"; } +.bi-calendar-heart-fill::before { content: "\f70f"; } +.bi-calendar-heart::before { content: "\f710"; } +.bi-calendar2-heart-fill::before { content: "\f711"; } +.bi-calendar2-heart::before { content: "\f712"; } +.bi-chat-heart-fill::before { content: "\f713"; } +.bi-chat-heart::before { content: "\f714"; } +.bi-chat-left-heart-fill::before { content: "\f715"; } +.bi-chat-left-heart::before { content: "\f716"; } +.bi-chat-right-heart-fill::before { content: "\f717"; } +.bi-chat-right-heart::before { content: "\f718"; } +.bi-chat-square-heart-fill::before { content: "\f719"; } +.bi-chat-square-heart::before { content: "\f71a"; } +.bi-clipboard-check-fill::before { content: "\f71b"; } +.bi-clipboard-data-fill::before { content: "\f71c"; } +.bi-clipboard-fill::before { content: "\f71d"; } +.bi-clipboard-heart-fill::before { content: "\f71e"; } +.bi-clipboard-heart::before { content: "\f71f"; } +.bi-clipboard-minus-fill::before { content: "\f720"; } +.bi-clipboard-plus-fill::before { content: "\f721"; } +.bi-clipboard-pulse::before { content: "\f722"; } +.bi-clipboard-x-fill::before { content: "\f723"; } +.bi-clipboard2-check-fill::before { content: "\f724"; } +.bi-clipboard2-check::before { content: "\f725"; } +.bi-clipboard2-data-fill::before { content: "\f726"; } +.bi-clipboard2-data::before { content: "\f727"; } +.bi-clipboard2-fill::before { content: "\f728"; } +.bi-clipboard2-heart-fill::before { content: "\f729"; } +.bi-clipboard2-heart::before { content: "\f72a"; } +.bi-clipboard2-minus-fill::before { content: "\f72b"; } +.bi-clipboard2-minus::before { content: "\f72c"; } +.bi-clipboard2-plus-fill::before { content: "\f72d"; } +.bi-clipboard2-plus::before { content: "\f72e"; } +.bi-clipboard2-pulse-fill::before { content: "\f72f"; } +.bi-clipboard2-pulse::before { content: "\f730"; } +.bi-clipboard2-x-fill::before { content: "\f731"; } +.bi-clipboard2-x::before { content: "\f732"; } +.bi-clipboard2::before { content: "\f733"; } +.bi-emoji-kiss-fill::before { content: "\f734"; } +.bi-emoji-kiss::before { content: "\f735"; } +.bi-envelope-heart-fill::before { content: "\f736"; } +.bi-envelope-heart::before { content: "\f737"; } +.bi-envelope-open-heart-fill::before { content: "\f738"; } +.bi-envelope-open-heart::before { content: "\f739"; } +.bi-envelope-paper-fill::before { content: "\f73a"; } +.bi-envelope-paper-heart-fill::before { content: "\f73b"; } +.bi-envelope-paper-heart::before { content: "\f73c"; } +.bi-envelope-paper::before { content: "\f73d"; } +.bi-filetype-aac::before { content: "\f73e"; } +.bi-filetype-ai::before { content: "\f73f"; } +.bi-filetype-bmp::before { content: "\f740"; } +.bi-filetype-cs::before { content: "\f741"; } +.bi-filetype-css::before { content: "\f742"; } +.bi-filetype-csv::before { content: "\f743"; } +.bi-filetype-doc::before { content: "\f744"; } +.bi-filetype-docx::before { content: "\f745"; } +.bi-filetype-exe::before { content: "\f746"; } +.bi-filetype-gif::before { content: "\f747"; } +.bi-filetype-heic::before { content: "\f748"; } +.bi-filetype-html::before { content: "\f749"; } +.bi-filetype-java::before { content: "\f74a"; } +.bi-filetype-jpg::before { content: "\f74b"; } +.bi-filetype-js::before { content: "\f74c"; } +.bi-filetype-jsx::before { content: "\f74d"; } +.bi-filetype-key::before { content: "\f74e"; } +.bi-filetype-m4p::before { content: "\f74f"; } +.bi-filetype-md::before { content: "\f750"; } +.bi-filetype-mdx::before { content: "\f751"; } +.bi-filetype-mov::before { content: "\f752"; } +.bi-filetype-mp3::before { content: "\f753"; } +.bi-filetype-mp4::before { content: "\f754"; } +.bi-filetype-otf::before { content: "\f755"; } +.bi-filetype-pdf::before { content: "\f756"; } +.bi-filetype-php::before { content: "\f757"; } +.bi-filetype-png::before { content: "\f758"; } +.bi-filetype-ppt::before { content: "\f75a"; } +.bi-filetype-psd::before { content: "\f75b"; } +.bi-filetype-py::before { content: "\f75c"; } +.bi-filetype-raw::before { content: "\f75d"; } +.bi-filetype-rb::before { content: "\f75e"; } +.bi-filetype-sass::before { content: "\f75f"; } +.bi-filetype-scss::before { content: "\f760"; } +.bi-filetype-sh::before { content: "\f761"; } +.bi-filetype-svg::before { content: "\f762"; } +.bi-filetype-tiff::before { content: "\f763"; } +.bi-filetype-tsx::before { content: "\f764"; } +.bi-filetype-ttf::before { content: "\f765"; } +.bi-filetype-txt::before { content: "\f766"; } +.bi-filetype-wav::before { content: "\f767"; } +.bi-filetype-woff::before { content: "\f768"; } +.bi-filetype-xls::before { content: "\f76a"; } +.bi-filetype-xml::before { content: "\f76b"; } +.bi-filetype-yml::before { content: "\f76c"; } +.bi-heart-arrow::before { content: "\f76d"; } +.bi-heart-pulse-fill::before { content: "\f76e"; } +.bi-heart-pulse::before { content: "\f76f"; } +.bi-heartbreak-fill::before { content: "\f770"; } +.bi-heartbreak::before { content: "\f771"; } +.bi-hearts::before { content: "\f772"; } +.bi-hospital-fill::before { content: "\f773"; } +.bi-hospital::before { content: "\f774"; } +.bi-house-heart-fill::before { content: "\f775"; } +.bi-house-heart::before { content: "\f776"; } +.bi-incognito::before { content: "\f777"; } +.bi-magnet-fill::before { content: "\f778"; } +.bi-magnet::before { content: "\f779"; } +.bi-person-heart::before { content: "\f77a"; } +.bi-person-hearts::before { content: "\f77b"; } +.bi-phone-flip::before { content: "\f77c"; } +.bi-plugin::before { content: "\f77d"; } +.bi-postage-fill::before { content: "\f77e"; } +.bi-postage-heart-fill::before { content: "\f77f"; } +.bi-postage-heart::before { content: "\f780"; } +.bi-postage::before { content: "\f781"; } +.bi-postcard-fill::before { content: "\f782"; } +.bi-postcard-heart-fill::before { content: "\f783"; } +.bi-postcard-heart::before { content: "\f784"; } +.bi-postcard::before { content: "\f785"; } +.bi-search-heart-fill::before { content: "\f786"; } +.bi-search-heart::before { content: "\f787"; } +.bi-sliders2-vertical::before { content: "\f788"; } +.bi-sliders2::before { content: "\f789"; } +.bi-trash3-fill::before { content: "\f78a"; } +.bi-trash3::before { content: "\f78b"; } +.bi-valentine::before { content: "\f78c"; } +.bi-valentine2::before { content: "\f78d"; } +.bi-wrench-adjustable-circle-fill::before { content: "\f78e"; } +.bi-wrench-adjustable-circle::before { content: "\f78f"; } +.bi-wrench-adjustable::before { content: "\f790"; } +.bi-filetype-json::before { content: "\f791"; } +.bi-filetype-pptx::before { content: "\f792"; } +.bi-filetype-xlsx::before { content: "\f793"; } +.bi-1-circle-fill::before { content: "\f796"; } +.bi-1-circle::before { content: "\f797"; } +.bi-1-square-fill::before { content: "\f798"; } +.bi-1-square::before { content: "\f799"; } +.bi-2-circle-fill::before { content: "\f79c"; } +.bi-2-circle::before { content: "\f79d"; } +.bi-2-square-fill::before { content: "\f79e"; } +.bi-2-square::before { content: "\f79f"; } +.bi-3-circle-fill::before { content: "\f7a2"; } +.bi-3-circle::before { content: "\f7a3"; } +.bi-3-square-fill::before { content: "\f7a4"; } +.bi-3-square::before { content: "\f7a5"; } +.bi-4-circle-fill::before { content: "\f7a8"; } +.bi-4-circle::before { content: "\f7a9"; } +.bi-4-square-fill::before { content: "\f7aa"; } +.bi-4-square::before { content: "\f7ab"; } +.bi-5-circle-fill::before { content: "\f7ae"; } +.bi-5-circle::before { content: "\f7af"; } +.bi-5-square-fill::before { content: "\f7b0"; } +.bi-5-square::before { content: "\f7b1"; } +.bi-6-circle-fill::before { content: "\f7b4"; } +.bi-6-circle::before { content: "\f7b5"; } +.bi-6-square-fill::before { content: "\f7b6"; } +.bi-6-square::before { content: "\f7b7"; } +.bi-7-circle-fill::before { content: "\f7ba"; } +.bi-7-circle::before { content: "\f7bb"; } +.bi-7-square-fill::before { content: "\f7bc"; } +.bi-7-square::before { content: "\f7bd"; } +.bi-8-circle-fill::before { content: "\f7c0"; } +.bi-8-circle::before { content: "\f7c1"; } +.bi-8-square-fill::before { content: "\f7c2"; } +.bi-8-square::before { content: "\f7c3"; } +.bi-9-circle-fill::before { content: "\f7c6"; } +.bi-9-circle::before { content: "\f7c7"; } +.bi-9-square-fill::before { content: "\f7c8"; } +.bi-9-square::before { content: "\f7c9"; } +.bi-airplane-engines-fill::before { content: "\f7ca"; } +.bi-airplane-engines::before { content: "\f7cb"; } +.bi-airplane-fill::before { content: "\f7cc"; } +.bi-airplane::before { content: "\f7cd"; } +.bi-alexa::before { content: "\f7ce"; } +.bi-alipay::before { content: "\f7cf"; } +.bi-android::before { content: "\f7d0"; } +.bi-android2::before { content: "\f7d1"; } +.bi-box-fill::before { content: "\f7d2"; } +.bi-box-seam-fill::before { content: "\f7d3"; } +.bi-browser-chrome::before { content: "\f7d4"; } +.bi-browser-edge::before { content: "\f7d5"; } +.bi-browser-firefox::before { content: "\f7d6"; } +.bi-browser-safari::before { content: "\f7d7"; } +.bi-c-circle-fill::before { content: "\f7da"; } +.bi-c-circle::before { content: "\f7db"; } +.bi-c-square-fill::before { content: "\f7dc"; } +.bi-c-square::before { content: "\f7dd"; } +.bi-capsule-pill::before { content: "\f7de"; } +.bi-capsule::before { content: "\f7df"; } +.bi-car-front-fill::before { content: "\f7e0"; } +.bi-car-front::before { content: "\f7e1"; } +.bi-cassette-fill::before { content: "\f7e2"; } +.bi-cassette::before { content: "\f7e3"; } +.bi-cc-circle-fill::before { content: "\f7e6"; } +.bi-cc-circle::before { content: "\f7e7"; } +.bi-cc-square-fill::before { content: "\f7e8"; } +.bi-cc-square::before { content: "\f7e9"; } +.bi-cup-hot-fill::before { content: "\f7ea"; } +.bi-cup-hot::before { content: "\f7eb"; } +.bi-currency-rupee::before { content: "\f7ec"; } +.bi-dropbox::before { content: "\f7ed"; } +.bi-escape::before { content: "\f7ee"; } +.bi-fast-forward-btn-fill::before { content: "\f7ef"; } +.bi-fast-forward-btn::before { content: "\f7f0"; } +.bi-fast-forward-circle-fill::before { content: "\f7f1"; } +.bi-fast-forward-circle::before { content: "\f7f2"; } +.bi-fast-forward-fill::before { content: "\f7f3"; } +.bi-fast-forward::before { content: "\f7f4"; } +.bi-filetype-sql::before { content: "\f7f5"; } +.bi-fire::before { content: "\f7f6"; } +.bi-google-play::before { content: "\f7f7"; } +.bi-h-circle-fill::before { content: "\f7fa"; } +.bi-h-circle::before { content: "\f7fb"; } +.bi-h-square-fill::before { content: "\f7fc"; } +.bi-h-square::before { content: "\f7fd"; } +.bi-indent::before { content: "\f7fe"; } +.bi-lungs-fill::before { content: "\f7ff"; } +.bi-lungs::before { content: "\f800"; } +.bi-microsoft-teams::before { content: "\f801"; } +.bi-p-circle-fill::before { content: "\f804"; } +.bi-p-circle::before { content: "\f805"; } +.bi-p-square-fill::before { content: "\f806"; } +.bi-p-square::before { content: "\f807"; } +.bi-pass-fill::before { content: "\f808"; } +.bi-pass::before { content: "\f809"; } +.bi-prescription::before { content: "\f80a"; } +.bi-prescription2::before { content: "\f80b"; } +.bi-r-circle-fill::before { content: "\f80e"; } +.bi-r-circle::before { content: "\f80f"; } +.bi-r-square-fill::before { content: "\f810"; } +.bi-r-square::before { content: "\f811"; } +.bi-repeat-1::before { content: "\f812"; } +.bi-repeat::before { content: "\f813"; } +.bi-rewind-btn-fill::before { content: "\f814"; } +.bi-rewind-btn::before { content: "\f815"; } +.bi-rewind-circle-fill::before { content: "\f816"; } +.bi-rewind-circle::before { content: "\f817"; } +.bi-rewind-fill::before { content: "\f818"; } +.bi-rewind::before { content: "\f819"; } +.bi-train-freight-front-fill::before { content: "\f81a"; } +.bi-train-freight-front::before { content: "\f81b"; } +.bi-train-front-fill::before { content: "\f81c"; } +.bi-train-front::before { content: "\f81d"; } +.bi-train-lightrail-front-fill::before { content: "\f81e"; } +.bi-train-lightrail-front::before { content: "\f81f"; } +.bi-truck-front-fill::before { content: "\f820"; } +.bi-truck-front::before { content: "\f821"; } +.bi-ubuntu::before { content: "\f822"; } +.bi-unindent::before { content: "\f823"; } +.bi-unity::before { content: "\f824"; } +.bi-universal-access-circle::before { content: "\f825"; } +.bi-universal-access::before { content: "\f826"; } +.bi-virus::before { content: "\f827"; } +.bi-virus2::before { content: "\f828"; } +.bi-wechat::before { content: "\f829"; } +.bi-yelp::before { content: "\f82a"; } +.bi-sign-stop-fill::before { content: "\f82b"; } +.bi-sign-stop-lights-fill::before { content: "\f82c"; } +.bi-sign-stop-lights::before { content: "\f82d"; } +.bi-sign-stop::before { content: "\f82e"; } +.bi-sign-turn-left-fill::before { content: "\f82f"; } +.bi-sign-turn-left::before { content: "\f830"; } +.bi-sign-turn-right-fill::before { content: "\f831"; } +.bi-sign-turn-right::before { content: "\f832"; } +.bi-sign-turn-slight-left-fill::before { content: "\f833"; } +.bi-sign-turn-slight-left::before { content: "\f834"; } +.bi-sign-turn-slight-right-fill::before { content: "\f835"; } +.bi-sign-turn-slight-right::before { content: "\f836"; } +.bi-sign-yield-fill::before { content: "\f837"; } +.bi-sign-yield::before { content: "\f838"; } +.bi-ev-station-fill::before { content: "\f839"; } +.bi-ev-station::before { content: "\f83a"; } +.bi-fuel-pump-diesel-fill::before { content: "\f83b"; } +.bi-fuel-pump-diesel::before { content: "\f83c"; } +.bi-fuel-pump-fill::before { content: "\f83d"; } +.bi-fuel-pump::before { content: "\f83e"; } +.bi-0-circle-fill::before { content: "\f83f"; } +.bi-0-circle::before { content: "\f840"; } +.bi-0-square-fill::before { content: "\f841"; } +.bi-0-square::before { content: "\f842"; } +.bi-rocket-fill::before { content: "\f843"; } +.bi-rocket-takeoff-fill::before { content: "\f844"; } +.bi-rocket-takeoff::before { content: "\f845"; } +.bi-rocket::before { content: "\f846"; } +.bi-stripe::before { content: "\f847"; } +.bi-subscript::before { content: "\f848"; } +.bi-superscript::before { content: "\f849"; } +.bi-trello::before { content: "\f84a"; } +.bi-envelope-at-fill::before { content: "\f84b"; } +.bi-envelope-at::before { content: "\f84c"; } +.bi-regex::before { content: "\f84d"; } +.bi-text-wrap::before { content: "\f84e"; } +.bi-sign-dead-end-fill::before { content: "\f84f"; } +.bi-sign-dead-end::before { content: "\f850"; } +.bi-sign-do-not-enter-fill::before { content: "\f851"; } +.bi-sign-do-not-enter::before { content: "\f852"; } +.bi-sign-intersection-fill::before { content: "\f853"; } +.bi-sign-intersection-side-fill::before { content: "\f854"; } +.bi-sign-intersection-side::before { content: "\f855"; } +.bi-sign-intersection-t-fill::before { content: "\f856"; } +.bi-sign-intersection-t::before { content: "\f857"; } +.bi-sign-intersection-y-fill::before { content: "\f858"; } +.bi-sign-intersection-y::before { content: "\f859"; } +.bi-sign-intersection::before { content: "\f85a"; } +.bi-sign-merge-left-fill::before { content: "\f85b"; } +.bi-sign-merge-left::before { content: "\f85c"; } +.bi-sign-merge-right-fill::before { content: "\f85d"; } +.bi-sign-merge-right::before { content: "\f85e"; } +.bi-sign-no-left-turn-fill::before { content: "\f85f"; } +.bi-sign-no-left-turn::before { content: "\f860"; } +.bi-sign-no-parking-fill::before { content: "\f861"; } +.bi-sign-no-parking::before { content: "\f862"; } +.bi-sign-no-right-turn-fill::before { content: "\f863"; } +.bi-sign-no-right-turn::before { content: "\f864"; } +.bi-sign-railroad-fill::before { content: "\f865"; } +.bi-sign-railroad::before { content: "\f866"; } +.bi-building-add::before { content: "\f867"; } +.bi-building-check::before { content: "\f868"; } +.bi-building-dash::before { content: "\f869"; } +.bi-building-down::before { content: "\f86a"; } +.bi-building-exclamation::before { content: "\f86b"; } +.bi-building-fill-add::before { content: "\f86c"; } +.bi-building-fill-check::before { content: "\f86d"; } +.bi-building-fill-dash::before { content: "\f86e"; } +.bi-building-fill-down::before { content: "\f86f"; } +.bi-building-fill-exclamation::before { content: "\f870"; } +.bi-building-fill-gear::before { content: "\f871"; } +.bi-building-fill-lock::before { content: "\f872"; } +.bi-building-fill-slash::before { content: "\f873"; } +.bi-building-fill-up::before { content: "\f874"; } +.bi-building-fill-x::before { content: "\f875"; } +.bi-building-fill::before { content: "\f876"; } +.bi-building-gear::before { content: "\f877"; } +.bi-building-lock::before { content: "\f878"; } +.bi-building-slash::before { content: "\f879"; } +.bi-building-up::before { content: "\f87a"; } +.bi-building-x::before { content: "\f87b"; } +.bi-buildings-fill::before { content: "\f87c"; } +.bi-buildings::before { content: "\f87d"; } +.bi-bus-front-fill::before { content: "\f87e"; } +.bi-bus-front::before { content: "\f87f"; } +.bi-ev-front-fill::before { content: "\f880"; } +.bi-ev-front::before { content: "\f881"; } +.bi-globe-americas::before { content: "\f882"; } +.bi-globe-asia-australia::before { content: "\f883"; } +.bi-globe-central-south-asia::before { content: "\f884"; } +.bi-globe-europe-africa::before { content: "\f885"; } +.bi-house-add-fill::before { content: "\f886"; } +.bi-house-add::before { content: "\f887"; } +.bi-house-check-fill::before { content: "\f888"; } +.bi-house-check::before { content: "\f889"; } +.bi-house-dash-fill::before { content: "\f88a"; } +.bi-house-dash::before { content: "\f88b"; } +.bi-house-down-fill::before { content: "\f88c"; } +.bi-house-down::before { content: "\f88d"; } +.bi-house-exclamation-fill::before { content: "\f88e"; } +.bi-house-exclamation::before { content: "\f88f"; } +.bi-house-gear-fill::before { content: "\f890"; } +.bi-house-gear::before { content: "\f891"; } +.bi-house-lock-fill::before { content: "\f892"; } +.bi-house-lock::before { content: "\f893"; } +.bi-house-slash-fill::before { content: "\f894"; } +.bi-house-slash::before { content: "\f895"; } +.bi-house-up-fill::before { content: "\f896"; } +.bi-house-up::before { content: "\f897"; } +.bi-house-x-fill::before { content: "\f898"; } +.bi-house-x::before { content: "\f899"; } +.bi-person-add::before { content: "\f89a"; } +.bi-person-down::before { content: "\f89b"; } +.bi-person-exclamation::before { content: "\f89c"; } +.bi-person-fill-add::before { content: "\f89d"; } +.bi-person-fill-check::before { content: "\f89e"; } +.bi-person-fill-dash::before { content: "\f89f"; } +.bi-person-fill-down::before { content: "\f8a0"; } +.bi-person-fill-exclamation::before { content: "\f8a1"; } +.bi-person-fill-gear::before { content: "\f8a2"; } +.bi-person-fill-lock::before { content: "\f8a3"; } +.bi-person-fill-slash::before { content: "\f8a4"; } +.bi-person-fill-up::before { content: "\f8a5"; } +.bi-person-fill-x::before { content: "\f8a6"; } +.bi-person-gear::before { content: "\f8a7"; } +.bi-person-lock::before { content: "\f8a8"; } +.bi-person-slash::before { content: "\f8a9"; } +.bi-person-up::before { content: "\f8aa"; } +.bi-scooter::before { content: "\f8ab"; } +.bi-taxi-front-fill::before { content: "\f8ac"; } +.bi-taxi-front::before { content: "\f8ad"; } +.bi-amd::before { content: "\f8ae"; } +.bi-database-add::before { content: "\f8af"; } +.bi-database-check::before { content: "\f8b0"; } +.bi-database-dash::before { content: "\f8b1"; } +.bi-database-down::before { content: "\f8b2"; } +.bi-database-exclamation::before { content: "\f8b3"; } +.bi-database-fill-add::before { content: "\f8b4"; } +.bi-database-fill-check::before { content: "\f8b5"; } +.bi-database-fill-dash::before { content: "\f8b6"; } +.bi-database-fill-down::before { content: "\f8b7"; } +.bi-database-fill-exclamation::before { content: "\f8b8"; } +.bi-database-fill-gear::before { content: "\f8b9"; } +.bi-database-fill-lock::before { content: "\f8ba"; } +.bi-database-fill-slash::before { content: "\f8bb"; } +.bi-database-fill-up::before { content: "\f8bc"; } +.bi-database-fill-x::before { content: "\f8bd"; } +.bi-database-fill::before { content: "\f8be"; } +.bi-database-gear::before { content: "\f8bf"; } +.bi-database-lock::before { content: "\f8c0"; } +.bi-database-slash::before { content: "\f8c1"; } +.bi-database-up::before { content: "\f8c2"; } +.bi-database-x::before { content: "\f8c3"; } +.bi-database::before { content: "\f8c4"; } +.bi-houses-fill::before { content: "\f8c5"; } +.bi-houses::before { content: "\f8c6"; } +.bi-nvidia::before { content: "\f8c7"; } +.bi-person-vcard-fill::before { content: "\f8c8"; } +.bi-person-vcard::before { content: "\f8c9"; } +.bi-sina-weibo::before { content: "\f8ca"; } +.bi-tencent-qq::before { content: "\f8cb"; } +.bi-wikipedia::before { content: "\f8cc"; } +.bi-alphabet-uppercase::before { content: "\f2a5"; } +.bi-alphabet::before { content: "\f68a"; } +.bi-amazon::before { content: "\f68d"; } +.bi-arrows-collapse-vertical::before { content: "\f690"; } +.bi-arrows-expand-vertical::before { content: "\f695"; } +.bi-arrows-vertical::before { content: "\f698"; } +.bi-arrows::before { content: "\f6a2"; } +.bi-ban-fill::before { content: "\f6a3"; } +.bi-ban::before { content: "\f6b6"; } +.bi-bing::before { content: "\f6c2"; } +.bi-cake::before { content: "\f6e0"; } +.bi-cake2::before { content: "\f6ed"; } +.bi-cookie::before { content: "\f6ee"; } +.bi-copy::before { content: "\f759"; } +.bi-crosshair::before { content: "\f769"; } +.bi-crosshair2::before { content: "\f794"; } +.bi-emoji-astonished-fill::before { content: "\f795"; } +.bi-emoji-astonished::before { content: "\f79a"; } +.bi-emoji-grimace-fill::before { content: "\f79b"; } +.bi-emoji-grimace::before { content: "\f7a0"; } +.bi-emoji-grin-fill::before { content: "\f7a1"; } +.bi-emoji-grin::before { content: "\f7a6"; } +.bi-emoji-surprise-fill::before { content: "\f7a7"; } +.bi-emoji-surprise::before { content: "\f7ac"; } +.bi-emoji-tear-fill::before { content: "\f7ad"; } +.bi-emoji-tear::before { content: "\f7b2"; } +.bi-envelope-arrow-down-fill::before { content: "\f7b3"; } +.bi-envelope-arrow-down::before { content: "\f7b8"; } +.bi-envelope-arrow-up-fill::before { content: "\f7b9"; } +.bi-envelope-arrow-up::before { content: "\f7be"; } +.bi-feather::before { content: "\f7bf"; } +.bi-feather2::before { content: "\f7c4"; } +.bi-floppy-fill::before { content: "\f7c5"; } +.bi-floppy::before { content: "\f7d8"; } +.bi-floppy2-fill::before { content: "\f7d9"; } +.bi-floppy2::before { content: "\f7e4"; } +.bi-gitlab::before { content: "\f7e5"; } +.bi-highlighter::before { content: "\f7f8"; } +.bi-marker-tip::before { content: "\f802"; } +.bi-nvme-fill::before { content: "\f803"; } +.bi-nvme::before { content: "\f80c"; } +.bi-opencollective::before { content: "\f80d"; } +.bi-pci-card-network::before { content: "\f8cd"; } +.bi-pci-card-sound::before { content: "\f8ce"; } +.bi-radar::before { content: "\f8cf"; } +.bi-send-arrow-down-fill::before { content: "\f8d0"; } +.bi-send-arrow-down::before { content: "\f8d1"; } +.bi-send-arrow-up-fill::before { content: "\f8d2"; } +.bi-send-arrow-up::before { content: "\f8d3"; } +.bi-sim-slash-fill::before { content: "\f8d4"; } +.bi-sim-slash::before { content: "\f8d5"; } +.bi-sourceforge::before { content: "\f8d6"; } +.bi-substack::before { content: "\f8d7"; } +.bi-threads-fill::before { content: "\f8d8"; } +.bi-threads::before { content: "\f8d9"; } +.bi-transparency::before { content: "\f8da"; } +.bi-twitter-x::before { content: "\f8db"; } +.bi-type-h4::before { content: "\f8dc"; } +.bi-type-h5::before { content: "\f8dd"; } +.bi-type-h6::before { content: "\f8de"; } +.bi-backpack-fill::before { content: "\f8df"; } +.bi-backpack::before { content: "\f8e0"; } +.bi-backpack2-fill::before { content: "\f8e1"; } +.bi-backpack2::before { content: "\f8e2"; } +.bi-backpack3-fill::before { content: "\f8e3"; } +.bi-backpack3::before { content: "\f8e4"; } +.bi-backpack4-fill::before { content: "\f8e5"; } +.bi-backpack4::before { content: "\f8e6"; } +.bi-brilliance::before { content: "\f8e7"; } +.bi-cake-fill::before { content: "\f8e8"; } +.bi-cake2-fill::before { content: "\f8e9"; } +.bi-duffle-fill::before { content: "\f8ea"; } +.bi-duffle::before { content: "\f8eb"; } +.bi-exposure::before { content: "\f8ec"; } +.bi-gender-neuter::before { content: "\f8ed"; } +.bi-highlights::before { content: "\f8ee"; } +.bi-luggage-fill::before { content: "\f8ef"; } +.bi-luggage::before { content: "\f8f0"; } +.bi-mailbox-flag::before { content: "\f8f1"; } +.bi-mailbox2-flag::before { content: "\f8f2"; } +.bi-noise-reduction::before { content: "\f8f3"; } +.bi-passport-fill::before { content: "\f8f4"; } +.bi-passport::before { content: "\f8f5"; } +.bi-person-arms-up::before { content: "\f8f6"; } +.bi-person-raised-hand::before { content: "\f8f7"; } +.bi-person-standing-dress::before { content: "\f8f8"; } +.bi-person-standing::before { content: "\f8f9"; } +.bi-person-walking::before { content: "\f8fa"; } +.bi-person-wheelchair::before { content: "\f8fb"; } +.bi-shadows::before { content: "\f8fc"; } +.bi-suitcase-fill::before { content: "\f8fd"; } +.bi-suitcase-lg-fill::before { content: "\f8fe"; } +.bi-suitcase-lg::before { content: "\f8ff"; } +.bi-suitcase::before { content: "\f900"; } +.bi-suitcase2-fill::before { content: "\f901"; } +.bi-suitcase2::before { content: "\f902"; } +.bi-vignette::before { content: "\f903"; } diff --git a/assets/scss/common/bootstrap-icons.css b/assets/scss/common/bootstrap-icons.css deleted file mode 100644 index efd644a9..00000000 --- a/assets/scss/common/bootstrap-icons.css +++ /dev/null @@ -1,2078 +0,0 @@ -/*! - * Bootstrap Icons v1.10.5 (https://icons.getbootstrap.com/) - * Copyright 2019-2023 The Bootstrap Authors - * Licensed under MIT (https://github.com/twbs/icons/blob/main/LICENSE) - */ - -@font-face { - font-display: block; - font-family: "bootstrap-icons"; - src: url("./fonts/bootstrap-icons.woff2?1bb88866b4085542c8ed5fb61b9393dd") format("woff2"), -url("./fonts/bootstrap-icons.woff?1bb88866b4085542c8ed5fb61b9393dd") format("woff"); -} - -.bi::before, -[class^="bi-"]::before, -[class*=" bi-"]::before { - display: inline-block; - font-family: bootstrap-icons !important; - font-style: normal; - font-weight: normal !important; - font-variant: normal; - text-transform: none; - line-height: 1; - vertical-align: -.125em; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -.bi-123::before { content: "\f67f"; } -.bi-alarm-fill::before { content: "\f101"; } -.bi-alarm::before { content: "\f102"; } -.bi-align-bottom::before { content: "\f103"; } -.bi-align-center::before { content: "\f104"; } -.bi-align-end::before { content: "\f105"; } -.bi-align-middle::before { content: "\f106"; } -.bi-align-start::before { content: "\f107"; } -.bi-align-top::before { content: "\f108"; } -.bi-alt::before { content: "\f109"; } -.bi-app-indicator::before { content: "\f10a"; } -.bi-app::before { content: "\f10b"; } -.bi-archive-fill::before { content: "\f10c"; } -.bi-archive::before { content: "\f10d"; } -.bi-arrow-90deg-down::before { content: "\f10e"; } -.bi-arrow-90deg-left::before { content: "\f10f"; } -.bi-arrow-90deg-right::before { content: "\f110"; } -.bi-arrow-90deg-up::before { content: "\f111"; } -.bi-arrow-bar-down::before { content: "\f112"; } -.bi-arrow-bar-left::before { content: "\f113"; } -.bi-arrow-bar-right::before { content: "\f114"; } -.bi-arrow-bar-up::before { content: "\f115"; } -.bi-arrow-clockwise::before { content: "\f116"; } -.bi-arrow-counterclockwise::before { content: "\f117"; } -.bi-arrow-down-circle-fill::before { content: "\f118"; } -.bi-arrow-down-circle::before { content: "\f119"; } -.bi-arrow-down-left-circle-fill::before { content: "\f11a"; } -.bi-arrow-down-left-circle::before { content: "\f11b"; } -.bi-arrow-down-left-square-fill::before { content: "\f11c"; } -.bi-arrow-down-left-square::before { content: "\f11d"; } -.bi-arrow-down-left::before { content: "\f11e"; } -.bi-arrow-down-right-circle-fill::before { content: "\f11f"; } -.bi-arrow-down-right-circle::before { content: "\f120"; } -.bi-arrow-down-right-square-fill::before { content: "\f121"; } -.bi-arrow-down-right-square::before { content: "\f122"; } -.bi-arrow-down-right::before { content: "\f123"; } -.bi-arrow-down-short::before { content: "\f124"; } -.bi-arrow-down-square-fill::before { content: "\f125"; } -.bi-arrow-down-square::before { content: "\f126"; } -.bi-arrow-down-up::before { content: "\f127"; } -.bi-arrow-down::before { content: "\f128"; } -.bi-arrow-left-circle-fill::before { content: "\f129"; } -.bi-arrow-left-circle::before { content: "\f12a"; } -.bi-arrow-left-right::before { content: "\f12b"; } -.bi-arrow-left-short::before { content: "\f12c"; } -.bi-arrow-left-square-fill::before { content: "\f12d"; } -.bi-arrow-left-square::before { content: "\f12e"; } -.bi-arrow-left::before { content: "\f12f"; } -.bi-arrow-repeat::before { content: "\f130"; } -.bi-arrow-return-left::before { content: "\f131"; } -.bi-arrow-return-right::before { content: "\f132"; } -.bi-arrow-right-circle-fill::before { content: "\f133"; } -.bi-arrow-right-circle::before { content: "\f134"; } -.bi-arrow-right-short::before { content: "\f135"; } -.bi-arrow-right-square-fill::before { content: "\f136"; } -.bi-arrow-right-square::before { content: "\f137"; } -.bi-arrow-right::before { content: "\f138"; } -.bi-arrow-up-circle-fill::before { content: "\f139"; } -.bi-arrow-up-circle::before { content: "\f13a"; } -.bi-arrow-up-left-circle-fill::before { content: "\f13b"; } -.bi-arrow-up-left-circle::before { content: "\f13c"; } -.bi-arrow-up-left-square-fill::before { content: "\f13d"; } -.bi-arrow-up-left-square::before { content: "\f13e"; } -.bi-arrow-up-left::before { content: "\f13f"; } -.bi-arrow-up-right-circle-fill::before { content: "\f140"; } -.bi-arrow-up-right-circle::before { content: "\f141"; } -.bi-arrow-up-right-square-fill::before { content: "\f142"; } -.bi-arrow-up-right-square::before { content: "\f143"; } -.bi-arrow-up-right::before { content: "\f144"; } -.bi-arrow-up-short::before { content: "\f145"; } -.bi-arrow-up-square-fill::before { content: "\f146"; } -.bi-arrow-up-square::before { content: "\f147"; } -.bi-arrow-up::before { content: "\f148"; } -.bi-arrows-angle-contract::before { content: "\f149"; } -.bi-arrows-angle-expand::before { content: "\f14a"; } -.bi-arrows-collapse::before { content: "\f14b"; } -.bi-arrows-expand::before { content: "\f14c"; } -.bi-arrows-fullscreen::before { content: "\f14d"; } -.bi-arrows-move::before { content: "\f14e"; } -.bi-aspect-ratio-fill::before { content: "\f14f"; } -.bi-aspect-ratio::before { content: "\f150"; } -.bi-asterisk::before { content: "\f151"; } -.bi-at::before { content: "\f152"; } -.bi-award-fill::before { content: "\f153"; } -.bi-award::before { content: "\f154"; } -.bi-back::before { content: "\f155"; } -.bi-backspace-fill::before { content: "\f156"; } -.bi-backspace-reverse-fill::before { content: "\f157"; } -.bi-backspace-reverse::before { content: "\f158"; } -.bi-backspace::before { content: "\f159"; } -.bi-badge-3d-fill::before { content: "\f15a"; } -.bi-badge-3d::before { content: "\f15b"; } -.bi-badge-4k-fill::before { content: "\f15c"; } -.bi-badge-4k::before { content: "\f15d"; } -.bi-badge-8k-fill::before { content: "\f15e"; } -.bi-badge-8k::before { content: "\f15f"; } -.bi-badge-ad-fill::before { content: "\f160"; } -.bi-badge-ad::before { content: "\f161"; } -.bi-badge-ar-fill::before { content: "\f162"; } -.bi-badge-ar::before { content: "\f163"; } -.bi-badge-cc-fill::before { content: "\f164"; } -.bi-badge-cc::before { content: "\f165"; } -.bi-badge-hd-fill::before { content: "\f166"; } -.bi-badge-hd::before { content: "\f167"; } -.bi-badge-tm-fill::before { content: "\f168"; } -.bi-badge-tm::before { content: "\f169"; } -.bi-badge-vo-fill::before { content: "\f16a"; } -.bi-badge-vo::before { content: "\f16b"; } -.bi-badge-vr-fill::before { content: "\f16c"; } -.bi-badge-vr::before { content: "\f16d"; } -.bi-badge-wc-fill::before { content: "\f16e"; } -.bi-badge-wc::before { content: "\f16f"; } -.bi-bag-check-fill::before { content: "\f170"; } -.bi-bag-check::before { content: "\f171"; } -.bi-bag-dash-fill::before { content: "\f172"; } -.bi-bag-dash::before { content: "\f173"; } -.bi-bag-fill::before { content: "\f174"; } -.bi-bag-plus-fill::before { content: "\f175"; } -.bi-bag-plus::before { content: "\f176"; } -.bi-bag-x-fill::before { content: "\f177"; } -.bi-bag-x::before { content: "\f178"; } -.bi-bag::before { content: "\f179"; } -.bi-bar-chart-fill::before { content: "\f17a"; } -.bi-bar-chart-line-fill::before { content: "\f17b"; } -.bi-bar-chart-line::before { content: "\f17c"; } -.bi-bar-chart-steps::before { content: "\f17d"; } -.bi-bar-chart::before { content: "\f17e"; } -.bi-basket-fill::before { content: "\f17f"; } -.bi-basket::before { content: "\f180"; } -.bi-basket2-fill::before { content: "\f181"; } -.bi-basket2::before { content: "\f182"; } -.bi-basket3-fill::before { content: "\f183"; } -.bi-basket3::before { content: "\f184"; } -.bi-battery-charging::before { content: "\f185"; } -.bi-battery-full::before { content: "\f186"; } -.bi-battery-half::before { content: "\f187"; } -.bi-battery::before { content: "\f188"; } -.bi-bell-fill::before { content: "\f189"; } -.bi-bell::before { content: "\f18a"; } -.bi-bezier::before { content: "\f18b"; } -.bi-bezier2::before { content: "\f18c"; } -.bi-bicycle::before { content: "\f18d"; } -.bi-binoculars-fill::before { content: "\f18e"; } -.bi-binoculars::before { content: "\f18f"; } -.bi-blockquote-left::before { content: "\f190"; } -.bi-blockquote-right::before { content: "\f191"; } -.bi-book-fill::before { content: "\f192"; } -.bi-book-half::before { content: "\f193"; } -.bi-book::before { content: "\f194"; } -.bi-bookmark-check-fill::before { content: "\f195"; } -.bi-bookmark-check::before { content: "\f196"; } -.bi-bookmark-dash-fill::before { content: "\f197"; } -.bi-bookmark-dash::before { content: "\f198"; } -.bi-bookmark-fill::before { content: "\f199"; } -.bi-bookmark-heart-fill::before { content: "\f19a"; } -.bi-bookmark-heart::before { content: "\f19b"; } -.bi-bookmark-plus-fill::before { content: "\f19c"; } -.bi-bookmark-plus::before { content: "\f19d"; } -.bi-bookmark-star-fill::before { content: "\f19e"; } -.bi-bookmark-star::before { content: "\f19f"; } -.bi-bookmark-x-fill::before { content: "\f1a0"; } -.bi-bookmark-x::before { content: "\f1a1"; } -.bi-bookmark::before { content: "\f1a2"; } -.bi-bookmarks-fill::before { content: "\f1a3"; } -.bi-bookmarks::before { content: "\f1a4"; } -.bi-bookshelf::before { content: "\f1a5"; } -.bi-bootstrap-fill::before { content: "\f1a6"; } -.bi-bootstrap-reboot::before { content: "\f1a7"; } -.bi-bootstrap::before { content: "\f1a8"; } -.bi-border-all::before { content: "\f1a9"; } -.bi-border-bottom::before { content: "\f1aa"; } -.bi-border-center::before { content: "\f1ab"; } -.bi-border-inner::before { content: "\f1ac"; } -.bi-border-left::before { content: "\f1ad"; } -.bi-border-middle::before { content: "\f1ae"; } -.bi-border-outer::before { content: "\f1af"; } -.bi-border-right::before { content: "\f1b0"; } -.bi-border-style::before { content: "\f1b1"; } -.bi-border-top::before { content: "\f1b2"; } -.bi-border-width::before { content: "\f1b3"; } -.bi-border::before { content: "\f1b4"; } -.bi-bounding-box-circles::before { content: "\f1b5"; } -.bi-bounding-box::before { content: "\f1b6"; } -.bi-box-arrow-down-left::before { content: "\f1b7"; } -.bi-box-arrow-down-right::before { content: "\f1b8"; } -.bi-box-arrow-down::before { content: "\f1b9"; } -.bi-box-arrow-in-down-left::before { content: "\f1ba"; } -.bi-box-arrow-in-down-right::before { content: "\f1bb"; } -.bi-box-arrow-in-down::before { content: "\f1bc"; } -.bi-box-arrow-in-left::before { content: "\f1bd"; } -.bi-box-arrow-in-right::before { content: "\f1be"; } -.bi-box-arrow-in-up-left::before { content: "\f1bf"; } -.bi-box-arrow-in-up-right::before { content: "\f1c0"; } -.bi-box-arrow-in-up::before { content: "\f1c1"; } -.bi-box-arrow-left::before { content: "\f1c2"; } -.bi-box-arrow-right::before { content: "\f1c3"; } -.bi-box-arrow-up-left::before { content: "\f1c4"; } -.bi-box-arrow-up-right::before { content: "\f1c5"; } -.bi-box-arrow-up::before { content: "\f1c6"; } -.bi-box-seam::before { content: "\f1c7"; } -.bi-box::before { content: "\f1c8"; } -.bi-braces::before { content: "\f1c9"; } -.bi-bricks::before { content: "\f1ca"; } -.bi-briefcase-fill::before { content: "\f1cb"; } -.bi-briefcase::before { content: "\f1cc"; } -.bi-brightness-alt-high-fill::before { content: "\f1cd"; } -.bi-brightness-alt-high::before { content: "\f1ce"; } -.bi-brightness-alt-low-fill::before { content: "\f1cf"; } -.bi-brightness-alt-low::before { content: "\f1d0"; } -.bi-brightness-high-fill::before { content: "\f1d1"; } -.bi-brightness-high::before { content: "\f1d2"; } -.bi-brightness-low-fill::before { content: "\f1d3"; } -.bi-brightness-low::before { content: "\f1d4"; } -.bi-broadcast-pin::before { content: "\f1d5"; } -.bi-broadcast::before { content: "\f1d6"; } -.bi-brush-fill::before { content: "\f1d7"; } -.bi-brush::before { content: "\f1d8"; } -.bi-bucket-fill::before { content: "\f1d9"; } -.bi-bucket::before { content: "\f1da"; } -.bi-bug-fill::before { content: "\f1db"; } -.bi-bug::before { content: "\f1dc"; } -.bi-building::before { content: "\f1dd"; } -.bi-bullseye::before { content: "\f1de"; } -.bi-calculator-fill::before { content: "\f1df"; } -.bi-calculator::before { content: "\f1e0"; } -.bi-calendar-check-fill::before { content: "\f1e1"; } -.bi-calendar-check::before { content: "\f1e2"; } -.bi-calendar-date-fill::before { content: "\f1e3"; } -.bi-calendar-date::before { content: "\f1e4"; } -.bi-calendar-day-fill::before { content: "\f1e5"; } -.bi-calendar-day::before { content: "\f1e6"; } -.bi-calendar-event-fill::before { content: "\f1e7"; } -.bi-calendar-event::before { content: "\f1e8"; } -.bi-calendar-fill::before { content: "\f1e9"; } -.bi-calendar-minus-fill::before { content: "\f1ea"; } -.bi-calendar-minus::before { content: "\f1eb"; } -.bi-calendar-month-fill::before { content: "\f1ec"; } -.bi-calendar-month::before { content: "\f1ed"; } -.bi-calendar-plus-fill::before { content: "\f1ee"; } -.bi-calendar-plus::before { content: "\f1ef"; } -.bi-calendar-range-fill::before { content: "\f1f0"; } -.bi-calendar-range::before { content: "\f1f1"; } -.bi-calendar-week-fill::before { content: "\f1f2"; } -.bi-calendar-week::before { content: "\f1f3"; } -.bi-calendar-x-fill::before { content: "\f1f4"; } -.bi-calendar-x::before { content: "\f1f5"; } -.bi-calendar::before { content: "\f1f6"; } -.bi-calendar2-check-fill::before { content: "\f1f7"; } -.bi-calendar2-check::before { content: "\f1f8"; } -.bi-calendar2-date-fill::before { content: "\f1f9"; } -.bi-calendar2-date::before { content: "\f1fa"; } -.bi-calendar2-day-fill::before { content: "\f1fb"; } -.bi-calendar2-day::before { content: "\f1fc"; } -.bi-calendar2-event-fill::before { content: "\f1fd"; } -.bi-calendar2-event::before { content: "\f1fe"; } -.bi-calendar2-fill::before { content: "\f1ff"; } -.bi-calendar2-minus-fill::before { content: "\f200"; } -.bi-calendar2-minus::before { content: "\f201"; } -.bi-calendar2-month-fill::before { content: "\f202"; } -.bi-calendar2-month::before { content: "\f203"; } -.bi-calendar2-plus-fill::before { content: "\f204"; } -.bi-calendar2-plus::before { content: "\f205"; } -.bi-calendar2-range-fill::before { content: "\f206"; } -.bi-calendar2-range::before { content: "\f207"; } -.bi-calendar2-week-fill::before { content: "\f208"; } -.bi-calendar2-week::before { content: "\f209"; } -.bi-calendar2-x-fill::before { content: "\f20a"; } -.bi-calendar2-x::before { content: "\f20b"; } -.bi-calendar2::before { content: "\f20c"; } -.bi-calendar3-event-fill::before { content: "\f20d"; } -.bi-calendar3-event::before { content: "\f20e"; } -.bi-calendar3-fill::before { content: "\f20f"; } -.bi-calendar3-range-fill::before { content: "\f210"; } -.bi-calendar3-range::before { content: "\f211"; } -.bi-calendar3-week-fill::before { content: "\f212"; } -.bi-calendar3-week::before { content: "\f213"; } -.bi-calendar3::before { content: "\f214"; } -.bi-calendar4-event::before { content: "\f215"; } -.bi-calendar4-range::before { content: "\f216"; } -.bi-calendar4-week::before { content: "\f217"; } -.bi-calendar4::before { content: "\f218"; } -.bi-camera-fill::before { content: "\f219"; } -.bi-camera-reels-fill::before { content: "\f21a"; } -.bi-camera-reels::before { content: "\f21b"; } -.bi-camera-video-fill::before { content: "\f21c"; } -.bi-camera-video-off-fill::before { content: "\f21d"; } -.bi-camera-video-off::before { content: "\f21e"; } -.bi-camera-video::before { content: "\f21f"; } -.bi-camera::before { content: "\f220"; } -.bi-camera2::before { content: "\f221"; } -.bi-capslock-fill::before { content: "\f222"; } -.bi-capslock::before { content: "\f223"; } -.bi-card-checklist::before { content: "\f224"; } -.bi-card-heading::before { content: "\f225"; } -.bi-card-image::before { content: "\f226"; } -.bi-card-list::before { content: "\f227"; } -.bi-card-text::before { content: "\f228"; } -.bi-caret-down-fill::before { content: "\f229"; } -.bi-caret-down-square-fill::before { content: "\f22a"; } -.bi-caret-down-square::before { content: "\f22b"; } -.bi-caret-down::before { content: "\f22c"; } -.bi-caret-left-fill::before { content: "\f22d"; } -.bi-caret-left-square-fill::before { content: "\f22e"; } -.bi-caret-left-square::before { content: "\f22f"; } -.bi-caret-left::before { content: "\f230"; } -.bi-caret-right-fill::before { content: "\f231"; } -.bi-caret-right-square-fill::before { content: "\f232"; } -.bi-caret-right-square::before { content: "\f233"; } -.bi-caret-right::before { content: "\f234"; } -.bi-caret-up-fill::before { content: "\f235"; } -.bi-caret-up-square-fill::before { content: "\f236"; } -.bi-caret-up-square::before { content: "\f237"; } -.bi-caret-up::before { content: "\f238"; } -.bi-cart-check-fill::before { content: "\f239"; } -.bi-cart-check::before { content: "\f23a"; } -.bi-cart-dash-fill::before { content: "\f23b"; } -.bi-cart-dash::before { content: "\f23c"; } -.bi-cart-fill::before { content: "\f23d"; } -.bi-cart-plus-fill::before { content: "\f23e"; } -.bi-cart-plus::before { content: "\f23f"; } -.bi-cart-x-fill::before { content: "\f240"; } -.bi-cart-x::before { content: "\f241"; } -.bi-cart::before { content: "\f242"; } -.bi-cart2::before { content: "\f243"; } -.bi-cart3::before { content: "\f244"; } -.bi-cart4::before { content: "\f245"; } -.bi-cash-stack::before { content: "\f246"; } -.bi-cash::before { content: "\f247"; } -.bi-cast::before { content: "\f248"; } -.bi-chat-dots-fill::before { content: "\f249"; } -.bi-chat-dots::before { content: "\f24a"; } -.bi-chat-fill::before { content: "\f24b"; } -.bi-chat-left-dots-fill::before { content: "\f24c"; } -.bi-chat-left-dots::before { content: "\f24d"; } -.bi-chat-left-fill::before { content: "\f24e"; } -.bi-chat-left-quote-fill::before { content: "\f24f"; } -.bi-chat-left-quote::before { content: "\f250"; } -.bi-chat-left-text-fill::before { content: "\f251"; } -.bi-chat-left-text::before { content: "\f252"; } -.bi-chat-left::before { content: "\f253"; } -.bi-chat-quote-fill::before { content: "\f254"; } -.bi-chat-quote::before { content: "\f255"; } -.bi-chat-right-dots-fill::before { content: "\f256"; } -.bi-chat-right-dots::before { content: "\f257"; } -.bi-chat-right-fill::before { content: "\f258"; } -.bi-chat-right-quote-fill::before { content: "\f259"; } -.bi-chat-right-quote::before { content: "\f25a"; } -.bi-chat-right-text-fill::before { content: "\f25b"; } -.bi-chat-right-text::before { content: "\f25c"; } -.bi-chat-right::before { content: "\f25d"; } -.bi-chat-square-dots-fill::before { content: "\f25e"; } -.bi-chat-square-dots::before { content: "\f25f"; } -.bi-chat-square-fill::before { content: "\f260"; } -.bi-chat-square-quote-fill::before { content: "\f261"; } -.bi-chat-square-quote::before { content: "\f262"; } -.bi-chat-square-text-fill::before { content: "\f263"; } -.bi-chat-square-text::before { content: "\f264"; } -.bi-chat-square::before { content: "\f265"; } -.bi-chat-text-fill::before { content: "\f266"; } -.bi-chat-text::before { content: "\f267"; } -.bi-chat::before { content: "\f268"; } -.bi-check-all::before { content: "\f269"; } -.bi-check-circle-fill::before { content: "\f26a"; } -.bi-check-circle::before { content: "\f26b"; } -.bi-check-square-fill::before { content: "\f26c"; } -.bi-check-square::before { content: "\f26d"; } -.bi-check::before { content: "\f26e"; } -.bi-check2-all::before { content: "\f26f"; } -.bi-check2-circle::before { content: "\f270"; } -.bi-check2-square::before { content: "\f271"; } -.bi-check2::before { content: "\f272"; } -.bi-chevron-bar-contract::before { content: "\f273"; } -.bi-chevron-bar-down::before { content: "\f274"; } -.bi-chevron-bar-expand::before { content: "\f275"; } -.bi-chevron-bar-left::before { content: "\f276"; } -.bi-chevron-bar-right::before { content: "\f277"; } -.bi-chevron-bar-up::before { content: "\f278"; } -.bi-chevron-compact-down::before { content: "\f279"; } -.bi-chevron-compact-left::before { content: "\f27a"; } -.bi-chevron-compact-right::before { content: "\f27b"; } -.bi-chevron-compact-up::before { content: "\f27c"; } -.bi-chevron-contract::before { content: "\f27d"; } -.bi-chevron-double-down::before { content: "\f27e"; } -.bi-chevron-double-left::before { content: "\f27f"; } -.bi-chevron-double-right::before { content: "\f280"; } -.bi-chevron-double-up::before { content: "\f281"; } -.bi-chevron-down::before { content: "\f282"; } -.bi-chevron-expand::before { content: "\f283"; } -.bi-chevron-left::before { content: "\f284"; } -.bi-chevron-right::before { content: "\f285"; } -.bi-chevron-up::before { content: "\f286"; } -.bi-circle-fill::before { content: "\f287"; } -.bi-circle-half::before { content: "\f288"; } -.bi-circle-square::before { content: "\f289"; } -.bi-circle::before { content: "\f28a"; } -.bi-clipboard-check::before { content: "\f28b"; } -.bi-clipboard-data::before { content: "\f28c"; } -.bi-clipboard-minus::before { content: "\f28d"; } -.bi-clipboard-plus::before { content: "\f28e"; } -.bi-clipboard-x::before { content: "\f28f"; } -.bi-clipboard::before { content: "\f290"; } -.bi-clock-fill::before { content: "\f291"; } -.bi-clock-history::before { content: "\f292"; } -.bi-clock::before { content: "\f293"; } -.bi-cloud-arrow-down-fill::before { content: "\f294"; } -.bi-cloud-arrow-down::before { content: "\f295"; } -.bi-cloud-arrow-up-fill::before { content: "\f296"; } -.bi-cloud-arrow-up::before { content: "\f297"; } -.bi-cloud-check-fill::before { content: "\f298"; } -.bi-cloud-check::before { content: "\f299"; } -.bi-cloud-download-fill::before { content: "\f29a"; } -.bi-cloud-download::before { content: "\f29b"; } -.bi-cloud-drizzle-fill::before { content: "\f29c"; } -.bi-cloud-drizzle::before { content: "\f29d"; } -.bi-cloud-fill::before { content: "\f29e"; } -.bi-cloud-fog-fill::before { content: "\f29f"; } -.bi-cloud-fog::before { content: "\f2a0"; } -.bi-cloud-fog2-fill::before { content: "\f2a1"; } -.bi-cloud-fog2::before { content: "\f2a2"; } -.bi-cloud-hail-fill::before { content: "\f2a3"; } -.bi-cloud-hail::before { content: "\f2a4"; } -.bi-cloud-haze-fill::before { content: "\f2a6"; } -.bi-cloud-haze::before { content: "\f2a7"; } -.bi-cloud-haze2-fill::before { content: "\f2a8"; } -.bi-cloud-lightning-fill::before { content: "\f2a9"; } -.bi-cloud-lightning-rain-fill::before { content: "\f2aa"; } -.bi-cloud-lightning-rain::before { content: "\f2ab"; } -.bi-cloud-lightning::before { content: "\f2ac"; } -.bi-cloud-minus-fill::before { content: "\f2ad"; } -.bi-cloud-minus::before { content: "\f2ae"; } -.bi-cloud-moon-fill::before { content: "\f2af"; } -.bi-cloud-moon::before { content: "\f2b0"; } -.bi-cloud-plus-fill::before { content: "\f2b1"; } -.bi-cloud-plus::before { content: "\f2b2"; } -.bi-cloud-rain-fill::before { content: "\f2b3"; } -.bi-cloud-rain-heavy-fill::before { content: "\f2b4"; } -.bi-cloud-rain-heavy::before { content: "\f2b5"; } -.bi-cloud-rain::before { content: "\f2b6"; } -.bi-cloud-slash-fill::before { content: "\f2b7"; } -.bi-cloud-slash::before { content: "\f2b8"; } -.bi-cloud-sleet-fill::before { content: "\f2b9"; } -.bi-cloud-sleet::before { content: "\f2ba"; } -.bi-cloud-snow-fill::before { content: "\f2bb"; } -.bi-cloud-snow::before { content: "\f2bc"; } -.bi-cloud-sun-fill::before { content: "\f2bd"; } -.bi-cloud-sun::before { content: "\f2be"; } -.bi-cloud-upload-fill::before { content: "\f2bf"; } -.bi-cloud-upload::before { content: "\f2c0"; } -.bi-cloud::before { content: "\f2c1"; } -.bi-clouds-fill::before { content: "\f2c2"; } -.bi-clouds::before { content: "\f2c3"; } -.bi-cloudy-fill::before { content: "\f2c4"; } -.bi-cloudy::before { content: "\f2c5"; } -.bi-code-slash::before { content: "\f2c6"; } -.bi-code-square::before { content: "\f2c7"; } -.bi-code::before { content: "\f2c8"; } -.bi-collection-fill::before { content: "\f2c9"; } -.bi-collection-play-fill::before { content: "\f2ca"; } -.bi-collection-play::before { content: "\f2cb"; } -.bi-collection::before { content: "\f2cc"; } -.bi-columns-gap::before { content: "\f2cd"; } -.bi-columns::before { content: "\f2ce"; } -.bi-command::before { content: "\f2cf"; } -.bi-compass-fill::before { content: "\f2d0"; } -.bi-compass::before { content: "\f2d1"; } -.bi-cone-striped::before { content: "\f2d2"; } -.bi-cone::before { content: "\f2d3"; } -.bi-controller::before { content: "\f2d4"; } -.bi-cpu-fill::before { content: "\f2d5"; } -.bi-cpu::before { content: "\f2d6"; } -.bi-credit-card-2-back-fill::before { content: "\f2d7"; } -.bi-credit-card-2-back::before { content: "\f2d8"; } -.bi-credit-card-2-front-fill::before { content: "\f2d9"; } -.bi-credit-card-2-front::before { content: "\f2da"; } -.bi-credit-card-fill::before { content: "\f2db"; } -.bi-credit-card::before { content: "\f2dc"; } -.bi-crop::before { content: "\f2dd"; } -.bi-cup-fill::before { content: "\f2de"; } -.bi-cup-straw::before { content: "\f2df"; } -.bi-cup::before { content: "\f2e0"; } -.bi-cursor-fill::before { content: "\f2e1"; } -.bi-cursor-text::before { content: "\f2e2"; } -.bi-cursor::before { content: "\f2e3"; } -.bi-dash-circle-dotted::before { content: "\f2e4"; } -.bi-dash-circle-fill::before { content: "\f2e5"; } -.bi-dash-circle::before { content: "\f2e6"; } -.bi-dash-square-dotted::before { content: "\f2e7"; } -.bi-dash-square-fill::before { content: "\f2e8"; } -.bi-dash-square::before { content: "\f2e9"; } -.bi-dash::before { content: "\f2ea"; } -.bi-diagram-2-fill::before { content: "\f2eb"; } -.bi-diagram-2::before { content: "\f2ec"; } -.bi-diagram-3-fill::before { content: "\f2ed"; } -.bi-diagram-3::before { content: "\f2ee"; } -.bi-diamond-fill::before { content: "\f2ef"; } -.bi-diamond-half::before { content: "\f2f0"; } -.bi-diamond::before { content: "\f2f1"; } -.bi-dice-1-fill::before { content: "\f2f2"; } -.bi-dice-1::before { content: "\f2f3"; } -.bi-dice-2-fill::before { content: "\f2f4"; } -.bi-dice-2::before { content: "\f2f5"; } -.bi-dice-3-fill::before { content: "\f2f6"; } -.bi-dice-3::before { content: "\f2f7"; } -.bi-dice-4-fill::before { content: "\f2f8"; } -.bi-dice-4::before { content: "\f2f9"; } -.bi-dice-5-fill::before { content: "\f2fa"; } -.bi-dice-5::before { content: "\f2fb"; } -.bi-dice-6-fill::before { content: "\f2fc"; } -.bi-dice-6::before { content: "\f2fd"; } -.bi-disc-fill::before { content: "\f2fe"; } -.bi-disc::before { content: "\f2ff"; } -.bi-discord::before { content: "\f300"; } -.bi-display-fill::before { content: "\f301"; } -.bi-display::before { content: "\f302"; } -.bi-distribute-horizontal::before { content: "\f303"; } -.bi-distribute-vertical::before { content: "\f304"; } -.bi-door-closed-fill::before { content: "\f305"; } -.bi-door-closed::before { content: "\f306"; } -.bi-door-open-fill::before { content: "\f307"; } -.bi-door-open::before { content: "\f308"; } -.bi-dot::before { content: "\f309"; } -.bi-download::before { content: "\f30a"; } -.bi-droplet-fill::before { content: "\f30b"; } -.bi-droplet-half::before { content: "\f30c"; } -.bi-droplet::before { content: "\f30d"; } -.bi-earbuds::before { content: "\f30e"; } -.bi-easel-fill::before { content: "\f30f"; } -.bi-easel::before { content: "\f310"; } -.bi-egg-fill::before { content: "\f311"; } -.bi-egg-fried::before { content: "\f312"; } -.bi-egg::before { content: "\f313"; } -.bi-eject-fill::before { content: "\f314"; } -.bi-eject::before { content: "\f315"; } -.bi-emoji-angry-fill::before { content: "\f316"; } -.bi-emoji-angry::before { content: "\f317"; } -.bi-emoji-dizzy-fill::before { content: "\f318"; } -.bi-emoji-dizzy::before { content: "\f319"; } -.bi-emoji-expressionless-fill::before { content: "\f31a"; } -.bi-emoji-expressionless::before { content: "\f31b"; } -.bi-emoji-frown-fill::before { content: "\f31c"; } -.bi-emoji-frown::before { content: "\f31d"; } -.bi-emoji-heart-eyes-fill::before { content: "\f31e"; } -.bi-emoji-heart-eyes::before { content: "\f31f"; } -.bi-emoji-laughing-fill::before { content: "\f320"; } -.bi-emoji-laughing::before { content: "\f321"; } -.bi-emoji-neutral-fill::before { content: "\f322"; } -.bi-emoji-neutral::before { content: "\f323"; } -.bi-emoji-smile-fill::before { content: "\f324"; } -.bi-emoji-smile-upside-down-fill::before { content: "\f325"; } -.bi-emoji-smile-upside-down::before { content: "\f326"; } -.bi-emoji-smile::before { content: "\f327"; } -.bi-emoji-sunglasses-fill::before { content: "\f328"; } -.bi-emoji-sunglasses::before { content: "\f329"; } -.bi-emoji-wink-fill::before { content: "\f32a"; } -.bi-emoji-wink::before { content: "\f32b"; } -.bi-envelope-fill::before { content: "\f32c"; } -.bi-envelope-open-fill::before { content: "\f32d"; } -.bi-envelope-open::before { content: "\f32e"; } -.bi-envelope::before { content: "\f32f"; } -.bi-eraser-fill::before { content: "\f330"; } -.bi-eraser::before { content: "\f331"; } -.bi-exclamation-circle-fill::before { content: "\f332"; } -.bi-exclamation-circle::before { content: "\f333"; } -.bi-exclamation-diamond-fill::before { content: "\f334"; } -.bi-exclamation-diamond::before { content: "\f335"; } -.bi-exclamation-octagon-fill::before { content: "\f336"; } -.bi-exclamation-octagon::before { content: "\f337"; } -.bi-exclamation-square-fill::before { content: "\f338"; } -.bi-exclamation-square::before { content: "\f339"; } -.bi-exclamation-triangle-fill::before { content: "\f33a"; } -.bi-exclamation-triangle::before { content: "\f33b"; } -.bi-exclamation::before { content: "\f33c"; } -.bi-exclude::before { content: "\f33d"; } -.bi-eye-fill::before { content: "\f33e"; } -.bi-eye-slash-fill::before { content: "\f33f"; } -.bi-eye-slash::before { content: "\f340"; } -.bi-eye::before { content: "\f341"; } -.bi-eyedropper::before { content: "\f342"; } -.bi-eyeglasses::before { content: "\f343"; } -.bi-facebook::before { content: "\f344"; } -.bi-file-arrow-down-fill::before { content: "\f345"; } -.bi-file-arrow-down::before { content: "\f346"; } -.bi-file-arrow-up-fill::before { content: "\f347"; } -.bi-file-arrow-up::before { content: "\f348"; } -.bi-file-bar-graph-fill::before { content: "\f349"; } -.bi-file-bar-graph::before { content: "\f34a"; } -.bi-file-binary-fill::before { content: "\f34b"; } -.bi-file-binary::before { content: "\f34c"; } -.bi-file-break-fill::before { content: "\f34d"; } -.bi-file-break::before { content: "\f34e"; } -.bi-file-check-fill::before { content: "\f34f"; } -.bi-file-check::before { content: "\f350"; } -.bi-file-code-fill::before { content: "\f351"; } -.bi-file-code::before { content: "\f352"; } -.bi-file-diff-fill::before { content: "\f353"; } -.bi-file-diff::before { content: "\f354"; } -.bi-file-earmark-arrow-down-fill::before { content: "\f355"; } -.bi-file-earmark-arrow-down::before { content: "\f356"; } -.bi-file-earmark-arrow-up-fill::before { content: "\f357"; } -.bi-file-earmark-arrow-up::before { content: "\f358"; } -.bi-file-earmark-bar-graph-fill::before { content: "\f359"; } -.bi-file-earmark-bar-graph::before { content: "\f35a"; } -.bi-file-earmark-binary-fill::before { content: "\f35b"; } -.bi-file-earmark-binary::before { content: "\f35c"; } -.bi-file-earmark-break-fill::before { content: "\f35d"; } -.bi-file-earmark-break::before { content: "\f35e"; } -.bi-file-earmark-check-fill::before { content: "\f35f"; } -.bi-file-earmark-check::before { content: "\f360"; } -.bi-file-earmark-code-fill::before { content: "\f361"; } -.bi-file-earmark-code::before { content: "\f362"; } -.bi-file-earmark-diff-fill::before { content: "\f363"; } -.bi-file-earmark-diff::before { content: "\f364"; } -.bi-file-earmark-easel-fill::before { content: "\f365"; } -.bi-file-earmark-easel::before { content: "\f366"; } -.bi-file-earmark-excel-fill::before { content: "\f367"; } -.bi-file-earmark-excel::before { content: "\f368"; } -.bi-file-earmark-fill::before { content: "\f369"; } -.bi-file-earmark-font-fill::before { content: "\f36a"; } -.bi-file-earmark-font::before { content: "\f36b"; } -.bi-file-earmark-image-fill::before { content: "\f36c"; } -.bi-file-earmark-image::before { content: "\f36d"; } -.bi-file-earmark-lock-fill::before { content: "\f36e"; } -.bi-file-earmark-lock::before { content: "\f36f"; } -.bi-file-earmark-lock2-fill::before { content: "\f370"; } -.bi-file-earmark-lock2::before { content: "\f371"; } -.bi-file-earmark-medical-fill::before { content: "\f372"; } -.bi-file-earmark-medical::before { content: "\f373"; } -.bi-file-earmark-minus-fill::before { content: "\f374"; } -.bi-file-earmark-minus::before { content: "\f375"; } -.bi-file-earmark-music-fill::before { content: "\f376"; } -.bi-file-earmark-music::before { content: "\f377"; } -.bi-file-earmark-person-fill::before { content: "\f378"; } -.bi-file-earmark-person::before { content: "\f379"; } -.bi-file-earmark-play-fill::before { content: "\f37a"; } -.bi-file-earmark-play::before { content: "\f37b"; } -.bi-file-earmark-plus-fill::before { content: "\f37c"; } -.bi-file-earmark-plus::before { content: "\f37d"; } -.bi-file-earmark-post-fill::before { content: "\f37e"; } -.bi-file-earmark-post::before { content: "\f37f"; } -.bi-file-earmark-ppt-fill::before { content: "\f380"; } -.bi-file-earmark-ppt::before { content: "\f381"; } -.bi-file-earmark-richtext-fill::before { content: "\f382"; } -.bi-file-earmark-richtext::before { content: "\f383"; } -.bi-file-earmark-ruled-fill::before { content: "\f384"; } -.bi-file-earmark-ruled::before { content: "\f385"; } -.bi-file-earmark-slides-fill::before { content: "\f386"; } -.bi-file-earmark-slides::before { content: "\f387"; } -.bi-file-earmark-spreadsheet-fill::before { content: "\f388"; } -.bi-file-earmark-spreadsheet::before { content: "\f389"; } -.bi-file-earmark-text-fill::before { content: "\f38a"; } -.bi-file-earmark-text::before { content: "\f38b"; } -.bi-file-earmark-word-fill::before { content: "\f38c"; } -.bi-file-earmark-word::before { content: "\f38d"; } -.bi-file-earmark-x-fill::before { content: "\f38e"; } -.bi-file-earmark-x::before { content: "\f38f"; } -.bi-file-earmark-zip-fill::before { content: "\f390"; } -.bi-file-earmark-zip::before { content: "\f391"; } -.bi-file-earmark::before { content: "\f392"; } -.bi-file-easel-fill::before { content: "\f393"; } -.bi-file-easel::before { content: "\f394"; } -.bi-file-excel-fill::before { content: "\f395"; } -.bi-file-excel::before { content: "\f396"; } -.bi-file-fill::before { content: "\f397"; } -.bi-file-font-fill::before { content: "\f398"; } -.bi-file-font::before { content: "\f399"; } -.bi-file-image-fill::before { content: "\f39a"; } -.bi-file-image::before { content: "\f39b"; } -.bi-file-lock-fill::before { content: "\f39c"; } -.bi-file-lock::before { content: "\f39d"; } -.bi-file-lock2-fill::before { content: "\f39e"; } -.bi-file-lock2::before { content: "\f39f"; } -.bi-file-medical-fill::before { content: "\f3a0"; } -.bi-file-medical::before { content: "\f3a1"; } -.bi-file-minus-fill::before { content: "\f3a2"; } -.bi-file-minus::before { content: "\f3a3"; } -.bi-file-music-fill::before { content: "\f3a4"; } -.bi-file-music::before { content: "\f3a5"; } -.bi-file-person-fill::before { content: "\f3a6"; } -.bi-file-person::before { content: "\f3a7"; } -.bi-file-play-fill::before { content: "\f3a8"; } -.bi-file-play::before { content: "\f3a9"; } -.bi-file-plus-fill::before { content: "\f3aa"; } -.bi-file-plus::before { content: "\f3ab"; } -.bi-file-post-fill::before { content: "\f3ac"; } -.bi-file-post::before { content: "\f3ad"; } -.bi-file-ppt-fill::before { content: "\f3ae"; } -.bi-file-ppt::before { content: "\f3af"; } -.bi-file-richtext-fill::before { content: "\f3b0"; } -.bi-file-richtext::before { content: "\f3b1"; } -.bi-file-ruled-fill::before { content: "\f3b2"; } -.bi-file-ruled::before { content: "\f3b3"; } -.bi-file-slides-fill::before { content: "\f3b4"; } -.bi-file-slides::before { content: "\f3b5"; } -.bi-file-spreadsheet-fill::before { content: "\f3b6"; } -.bi-file-spreadsheet::before { content: "\f3b7"; } -.bi-file-text-fill::before { content: "\f3b8"; } -.bi-file-text::before { content: "\f3b9"; } -.bi-file-word-fill::before { content: "\f3ba"; } -.bi-file-word::before { content: "\f3bb"; } -.bi-file-x-fill::before { content: "\f3bc"; } -.bi-file-x::before { content: "\f3bd"; } -.bi-file-zip-fill::before { content: "\f3be"; } -.bi-file-zip::before { content: "\f3bf"; } -.bi-file::before { content: "\f3c0"; } -.bi-files-alt::before { content: "\f3c1"; } -.bi-files::before { content: "\f3c2"; } -.bi-film::before { content: "\f3c3"; } -.bi-filter-circle-fill::before { content: "\f3c4"; } -.bi-filter-circle::before { content: "\f3c5"; } -.bi-filter-left::before { content: "\f3c6"; } -.bi-filter-right::before { content: "\f3c7"; } -.bi-filter-square-fill::before { content: "\f3c8"; } -.bi-filter-square::before { content: "\f3c9"; } -.bi-filter::before { content: "\f3ca"; } -.bi-flag-fill::before { content: "\f3cb"; } -.bi-flag::before { content: "\f3cc"; } -.bi-flower1::before { content: "\f3cd"; } -.bi-flower2::before { content: "\f3ce"; } -.bi-flower3::before { content: "\f3cf"; } -.bi-folder-check::before { content: "\f3d0"; } -.bi-folder-fill::before { content: "\f3d1"; } -.bi-folder-minus::before { content: "\f3d2"; } -.bi-folder-plus::before { content: "\f3d3"; } -.bi-folder-symlink-fill::before { content: "\f3d4"; } -.bi-folder-symlink::before { content: "\f3d5"; } -.bi-folder-x::before { content: "\f3d6"; } -.bi-folder::before { content: "\f3d7"; } -.bi-folder2-open::before { content: "\f3d8"; } -.bi-folder2::before { content: "\f3d9"; } -.bi-fonts::before { content: "\f3da"; } -.bi-forward-fill::before { content: "\f3db"; } -.bi-forward::before { content: "\f3dc"; } -.bi-front::before { content: "\f3dd"; } -.bi-fullscreen-exit::before { content: "\f3de"; } -.bi-fullscreen::before { content: "\f3df"; } -.bi-funnel-fill::before { content: "\f3e0"; } -.bi-funnel::before { content: "\f3e1"; } -.bi-gear-fill::before { content: "\f3e2"; } -.bi-gear-wide-connected::before { content: "\f3e3"; } -.bi-gear-wide::before { content: "\f3e4"; } -.bi-gear::before { content: "\f3e5"; } -.bi-gem::before { content: "\f3e6"; } -.bi-geo-alt-fill::before { content: "\f3e7"; } -.bi-geo-alt::before { content: "\f3e8"; } -.bi-geo-fill::before { content: "\f3e9"; } -.bi-geo::before { content: "\f3ea"; } -.bi-gift-fill::before { content: "\f3eb"; } -.bi-gift::before { content: "\f3ec"; } -.bi-github::before { content: "\f3ed"; } -.bi-globe::before { content: "\f3ee"; } -.bi-globe2::before { content: "\f3ef"; } -.bi-google::before { content: "\f3f0"; } -.bi-graph-down::before { content: "\f3f1"; } -.bi-graph-up::before { content: "\f3f2"; } -.bi-grid-1x2-fill::before { content: "\f3f3"; } -.bi-grid-1x2::before { content: "\f3f4"; } -.bi-grid-3x2-gap-fill::before { content: "\f3f5"; } -.bi-grid-3x2-gap::before { content: "\f3f6"; } -.bi-grid-3x2::before { content: "\f3f7"; } -.bi-grid-3x3-gap-fill::before { content: "\f3f8"; } -.bi-grid-3x3-gap::before { content: "\f3f9"; } -.bi-grid-3x3::before { content: "\f3fa"; } -.bi-grid-fill::before { content: "\f3fb"; } -.bi-grid::before { content: "\f3fc"; } -.bi-grip-horizontal::before { content: "\f3fd"; } -.bi-grip-vertical::before { content: "\f3fe"; } -.bi-hammer::before { content: "\f3ff"; } -.bi-hand-index-fill::before { content: "\f400"; } -.bi-hand-index-thumb-fill::before { content: "\f401"; } -.bi-hand-index-thumb::before { content: "\f402"; } -.bi-hand-index::before { content: "\f403"; } -.bi-hand-thumbs-down-fill::before { content: "\f404"; } -.bi-hand-thumbs-down::before { content: "\f405"; } -.bi-hand-thumbs-up-fill::before { content: "\f406"; } -.bi-hand-thumbs-up::before { content: "\f407"; } -.bi-handbag-fill::before { content: "\f408"; } -.bi-handbag::before { content: "\f409"; } -.bi-hash::before { content: "\f40a"; } -.bi-hdd-fill::before { content: "\f40b"; } -.bi-hdd-network-fill::before { content: "\f40c"; } -.bi-hdd-network::before { content: "\f40d"; } -.bi-hdd-rack-fill::before { content: "\f40e"; } -.bi-hdd-rack::before { content: "\f40f"; } -.bi-hdd-stack-fill::before { content: "\f410"; } -.bi-hdd-stack::before { content: "\f411"; } -.bi-hdd::before { content: "\f412"; } -.bi-headphones::before { content: "\f413"; } -.bi-headset::before { content: "\f414"; } -.bi-heart-fill::before { content: "\f415"; } -.bi-heart-half::before { content: "\f416"; } -.bi-heart::before { content: "\f417"; } -.bi-heptagon-fill::before { content: "\f418"; } -.bi-heptagon-half::before { content: "\f419"; } -.bi-heptagon::before { content: "\f41a"; } -.bi-hexagon-fill::before { content: "\f41b"; } -.bi-hexagon-half::before { content: "\f41c"; } -.bi-hexagon::before { content: "\f41d"; } -.bi-hourglass-bottom::before { content: "\f41e"; } -.bi-hourglass-split::before { content: "\f41f"; } -.bi-hourglass-top::before { content: "\f420"; } -.bi-hourglass::before { content: "\f421"; } -.bi-house-door-fill::before { content: "\f422"; } -.bi-house-door::before { content: "\f423"; } -.bi-house-fill::before { content: "\f424"; } -.bi-house::before { content: "\f425"; } -.bi-hr::before { content: "\f426"; } -.bi-hurricane::before { content: "\f427"; } -.bi-image-alt::before { content: "\f428"; } -.bi-image-fill::before { content: "\f429"; } -.bi-image::before { content: "\f42a"; } -.bi-images::before { content: "\f42b"; } -.bi-inbox-fill::before { content: "\f42c"; } -.bi-inbox::before { content: "\f42d"; } -.bi-inboxes-fill::before { content: "\f42e"; } -.bi-inboxes::before { content: "\f42f"; } -.bi-info-circle-fill::before { content: "\f430"; } -.bi-info-circle::before { content: "\f431"; } -.bi-info-square-fill::before { content: "\f432"; } -.bi-info-square::before { content: "\f433"; } -.bi-info::before { content: "\f434"; } -.bi-input-cursor-text::before { content: "\f435"; } -.bi-input-cursor::before { content: "\f436"; } -.bi-instagram::before { content: "\f437"; } -.bi-intersect::before { content: "\f438"; } -.bi-journal-album::before { content: "\f439"; } -.bi-journal-arrow-down::before { content: "\f43a"; } -.bi-journal-arrow-up::before { content: "\f43b"; } -.bi-journal-bookmark-fill::before { content: "\f43c"; } -.bi-journal-bookmark::before { content: "\f43d"; } -.bi-journal-check::before { content: "\f43e"; } -.bi-journal-code::before { content: "\f43f"; } -.bi-journal-medical::before { content: "\f440"; } -.bi-journal-minus::before { content: "\f441"; } -.bi-journal-plus::before { content: "\f442"; } -.bi-journal-richtext::before { content: "\f443"; } -.bi-journal-text::before { content: "\f444"; } -.bi-journal-x::before { content: "\f445"; } -.bi-journal::before { content: "\f446"; } -.bi-journals::before { content: "\f447"; } -.bi-joystick::before { content: "\f448"; } -.bi-justify-left::before { content: "\f449"; } -.bi-justify-right::before { content: "\f44a"; } -.bi-justify::before { content: "\f44b"; } -.bi-kanban-fill::before { content: "\f44c"; } -.bi-kanban::before { content: "\f44d"; } -.bi-key-fill::before { content: "\f44e"; } -.bi-key::before { content: "\f44f"; } -.bi-keyboard-fill::before { content: "\f450"; } -.bi-keyboard::before { content: "\f451"; } -.bi-ladder::before { content: "\f452"; } -.bi-lamp-fill::before { content: "\f453"; } -.bi-lamp::before { content: "\f454"; } -.bi-laptop-fill::before { content: "\f455"; } -.bi-laptop::before { content: "\f456"; } -.bi-layer-backward::before { content: "\f457"; } -.bi-layer-forward::before { content: "\f458"; } -.bi-layers-fill::before { content: "\f459"; } -.bi-layers-half::before { content: "\f45a"; } -.bi-layers::before { content: "\f45b"; } -.bi-layout-sidebar-inset-reverse::before { content: "\f45c"; } -.bi-layout-sidebar-inset::before { content: "\f45d"; } -.bi-layout-sidebar-reverse::before { content: "\f45e"; } -.bi-layout-sidebar::before { content: "\f45f"; } -.bi-layout-split::before { content: "\f460"; } -.bi-layout-text-sidebar-reverse::before { content: "\f461"; } -.bi-layout-text-sidebar::before { content: "\f462"; } -.bi-layout-text-window-reverse::before { content: "\f463"; } -.bi-layout-text-window::before { content: "\f464"; } -.bi-layout-three-columns::before { content: "\f465"; } -.bi-layout-wtf::before { content: "\f466"; } -.bi-life-preserver::before { content: "\f467"; } -.bi-lightbulb-fill::before { content: "\f468"; } -.bi-lightbulb-off-fill::before { content: "\f469"; } -.bi-lightbulb-off::before { content: "\f46a"; } -.bi-lightbulb::before { content: "\f46b"; } -.bi-lightning-charge-fill::before { content: "\f46c"; } -.bi-lightning-charge::before { content: "\f46d"; } -.bi-lightning-fill::before { content: "\f46e"; } -.bi-lightning::before { content: "\f46f"; } -.bi-link-45deg::before { content: "\f470"; } -.bi-link::before { content: "\f471"; } -.bi-linkedin::before { content: "\f472"; } -.bi-list-check::before { content: "\f473"; } -.bi-list-nested::before { content: "\f474"; } -.bi-list-ol::before { content: "\f475"; } -.bi-list-stars::before { content: "\f476"; } -.bi-list-task::before { content: "\f477"; } -.bi-list-ul::before { content: "\f478"; } -.bi-list::before { content: "\f479"; } -.bi-lock-fill::before { content: "\f47a"; } -.bi-lock::before { content: "\f47b"; } -.bi-mailbox::before { content: "\f47c"; } -.bi-mailbox2::before { content: "\f47d"; } -.bi-map-fill::before { content: "\f47e"; } -.bi-map::before { content: "\f47f"; } -.bi-markdown-fill::before { content: "\f480"; } -.bi-markdown::before { content: "\f481"; } -.bi-mask::before { content: "\f482"; } -.bi-megaphone-fill::before { content: "\f483"; } -.bi-megaphone::before { content: "\f484"; } -.bi-menu-app-fill::before { content: "\f485"; } -.bi-menu-app::before { content: "\f486"; } -.bi-menu-button-fill::before { content: "\f487"; } -.bi-menu-button-wide-fill::before { content: "\f488"; } -.bi-menu-button-wide::before { content: "\f489"; } -.bi-menu-button::before { content: "\f48a"; } -.bi-menu-down::before { content: "\f48b"; } -.bi-menu-up::before { content: "\f48c"; } -.bi-mic-fill::before { content: "\f48d"; } -.bi-mic-mute-fill::before { content: "\f48e"; } -.bi-mic-mute::before { content: "\f48f"; } -.bi-mic::before { content: "\f490"; } -.bi-minecart-loaded::before { content: "\f491"; } -.bi-minecart::before { content: "\f492"; } -.bi-moisture::before { content: "\f493"; } -.bi-moon-fill::before { content: "\f494"; } -.bi-moon-stars-fill::before { content: "\f495"; } -.bi-moon-stars::before { content: "\f496"; } -.bi-moon::before { content: "\f497"; } -.bi-mouse-fill::before { content: "\f498"; } -.bi-mouse::before { content: "\f499"; } -.bi-mouse2-fill::before { content: "\f49a"; } -.bi-mouse2::before { content: "\f49b"; } -.bi-mouse3-fill::before { content: "\f49c"; } -.bi-mouse3::before { content: "\f49d"; } -.bi-music-note-beamed::before { content: "\f49e"; } -.bi-music-note-list::before { content: "\f49f"; } -.bi-music-note::before { content: "\f4a0"; } -.bi-music-player-fill::before { content: "\f4a1"; } -.bi-music-player::before { content: "\f4a2"; } -.bi-newspaper::before { content: "\f4a3"; } -.bi-node-minus-fill::before { content: "\f4a4"; } -.bi-node-minus::before { content: "\f4a5"; } -.bi-node-plus-fill::before { content: "\f4a6"; } -.bi-node-plus::before { content: "\f4a7"; } -.bi-nut-fill::before { content: "\f4a8"; } -.bi-nut::before { content: "\f4a9"; } -.bi-octagon-fill::before { content: "\f4aa"; } -.bi-octagon-half::before { content: "\f4ab"; } -.bi-octagon::before { content: "\f4ac"; } -.bi-option::before { content: "\f4ad"; } -.bi-outlet::before { content: "\f4ae"; } -.bi-paint-bucket::before { content: "\f4af"; } -.bi-palette-fill::before { content: "\f4b0"; } -.bi-palette::before { content: "\f4b1"; } -.bi-palette2::before { content: "\f4b2"; } -.bi-paperclip::before { content: "\f4b3"; } -.bi-paragraph::before { content: "\f4b4"; } -.bi-patch-check-fill::before { content: "\f4b5"; } -.bi-patch-check::before { content: "\f4b6"; } -.bi-patch-exclamation-fill::before { content: "\f4b7"; } -.bi-patch-exclamation::before { content: "\f4b8"; } -.bi-patch-minus-fill::before { content: "\f4b9"; } -.bi-patch-minus::before { content: "\f4ba"; } -.bi-patch-plus-fill::before { content: "\f4bb"; } -.bi-patch-plus::before { content: "\f4bc"; } -.bi-patch-question-fill::before { content: "\f4bd"; } -.bi-patch-question::before { content: "\f4be"; } -.bi-pause-btn-fill::before { content: "\f4bf"; } -.bi-pause-btn::before { content: "\f4c0"; } -.bi-pause-circle-fill::before { content: "\f4c1"; } -.bi-pause-circle::before { content: "\f4c2"; } -.bi-pause-fill::before { content: "\f4c3"; } -.bi-pause::before { content: "\f4c4"; } -.bi-peace-fill::before { content: "\f4c5"; } -.bi-peace::before { content: "\f4c6"; } -.bi-pen-fill::before { content: "\f4c7"; } -.bi-pen::before { content: "\f4c8"; } -.bi-pencil-fill::before { content: "\f4c9"; } -.bi-pencil-square::before { content: "\f4ca"; } -.bi-pencil::before { content: "\f4cb"; } -.bi-pentagon-fill::before { content: "\f4cc"; } -.bi-pentagon-half::before { content: "\f4cd"; } -.bi-pentagon::before { content: "\f4ce"; } -.bi-people-fill::before { content: "\f4cf"; } -.bi-people::before { content: "\f4d0"; } -.bi-percent::before { content: "\f4d1"; } -.bi-person-badge-fill::before { content: "\f4d2"; } -.bi-person-badge::before { content: "\f4d3"; } -.bi-person-bounding-box::before { content: "\f4d4"; } -.bi-person-check-fill::before { content: "\f4d5"; } -.bi-person-check::before { content: "\f4d6"; } -.bi-person-circle::before { content: "\f4d7"; } -.bi-person-dash-fill::before { content: "\f4d8"; } -.bi-person-dash::before { content: "\f4d9"; } -.bi-person-fill::before { content: "\f4da"; } -.bi-person-lines-fill::before { content: "\f4db"; } -.bi-person-plus-fill::before { content: "\f4dc"; } -.bi-person-plus::before { content: "\f4dd"; } -.bi-person-square::before { content: "\f4de"; } -.bi-person-x-fill::before { content: "\f4df"; } -.bi-person-x::before { content: "\f4e0"; } -.bi-person::before { content: "\f4e1"; } -.bi-phone-fill::before { content: "\f4e2"; } -.bi-phone-landscape-fill::before { content: "\f4e3"; } -.bi-phone-landscape::before { content: "\f4e4"; } -.bi-phone-vibrate-fill::before { content: "\f4e5"; } -.bi-phone-vibrate::before { content: "\f4e6"; } -.bi-phone::before { content: "\f4e7"; } -.bi-pie-chart-fill::before { content: "\f4e8"; } -.bi-pie-chart::before { content: "\f4e9"; } -.bi-pin-angle-fill::before { content: "\f4ea"; } -.bi-pin-angle::before { content: "\f4eb"; } -.bi-pin-fill::before { content: "\f4ec"; } -.bi-pin::before { content: "\f4ed"; } -.bi-pip-fill::before { content: "\f4ee"; } -.bi-pip::before { content: "\f4ef"; } -.bi-play-btn-fill::before { content: "\f4f0"; } -.bi-play-btn::before { content: "\f4f1"; } -.bi-play-circle-fill::before { content: "\f4f2"; } -.bi-play-circle::before { content: "\f4f3"; } -.bi-play-fill::before { content: "\f4f4"; } -.bi-play::before { content: "\f4f5"; } -.bi-plug-fill::before { content: "\f4f6"; } -.bi-plug::before { content: "\f4f7"; } -.bi-plus-circle-dotted::before { content: "\f4f8"; } -.bi-plus-circle-fill::before { content: "\f4f9"; } -.bi-plus-circle::before { content: "\f4fa"; } -.bi-plus-square-dotted::before { content: "\f4fb"; } -.bi-plus-square-fill::before { content: "\f4fc"; } -.bi-plus-square::before { content: "\f4fd"; } -.bi-plus::before { content: "\f4fe"; } -.bi-power::before { content: "\f4ff"; } -.bi-printer-fill::before { content: "\f500"; } -.bi-printer::before { content: "\f501"; } -.bi-puzzle-fill::before { content: "\f502"; } -.bi-puzzle::before { content: "\f503"; } -.bi-question-circle-fill::before { content: "\f504"; } -.bi-question-circle::before { content: "\f505"; } -.bi-question-diamond-fill::before { content: "\f506"; } -.bi-question-diamond::before { content: "\f507"; } -.bi-question-octagon-fill::before { content: "\f508"; } -.bi-question-octagon::before { content: "\f509"; } -.bi-question-square-fill::before { content: "\f50a"; } -.bi-question-square::before { content: "\f50b"; } -.bi-question::before { content: "\f50c"; } -.bi-rainbow::before { content: "\f50d"; } -.bi-receipt-cutoff::before { content: "\f50e"; } -.bi-receipt::before { content: "\f50f"; } -.bi-reception-0::before { content: "\f510"; } -.bi-reception-1::before { content: "\f511"; } -.bi-reception-2::before { content: "\f512"; } -.bi-reception-3::before { content: "\f513"; } -.bi-reception-4::before { content: "\f514"; } -.bi-record-btn-fill::before { content: "\f515"; } -.bi-record-btn::before { content: "\f516"; } -.bi-record-circle-fill::before { content: "\f517"; } -.bi-record-circle::before { content: "\f518"; } -.bi-record-fill::before { content: "\f519"; } -.bi-record::before { content: "\f51a"; } -.bi-record2-fill::before { content: "\f51b"; } -.bi-record2::before { content: "\f51c"; } -.bi-reply-all-fill::before { content: "\f51d"; } -.bi-reply-all::before { content: "\f51e"; } -.bi-reply-fill::before { content: "\f51f"; } -.bi-reply::before { content: "\f520"; } -.bi-rss-fill::before { content: "\f521"; } -.bi-rss::before { content: "\f522"; } -.bi-rulers::before { content: "\f523"; } -.bi-save-fill::before { content: "\f524"; } -.bi-save::before { content: "\f525"; } -.bi-save2-fill::before { content: "\f526"; } -.bi-save2::before { content: "\f527"; } -.bi-scissors::before { content: "\f528"; } -.bi-screwdriver::before { content: "\f529"; } -.bi-search::before { content: "\f52a"; } -.bi-segmented-nav::before { content: "\f52b"; } -.bi-server::before { content: "\f52c"; } -.bi-share-fill::before { content: "\f52d"; } -.bi-share::before { content: "\f52e"; } -.bi-shield-check::before { content: "\f52f"; } -.bi-shield-exclamation::before { content: "\f530"; } -.bi-shield-fill-check::before { content: "\f531"; } -.bi-shield-fill-exclamation::before { content: "\f532"; } -.bi-shield-fill-minus::before { content: "\f533"; } -.bi-shield-fill-plus::before { content: "\f534"; } -.bi-shield-fill-x::before { content: "\f535"; } -.bi-shield-fill::before { content: "\f536"; } -.bi-shield-lock-fill::before { content: "\f537"; } -.bi-shield-lock::before { content: "\f538"; } -.bi-shield-minus::before { content: "\f539"; } -.bi-shield-plus::before { content: "\f53a"; } -.bi-shield-shaded::before { content: "\f53b"; } -.bi-shield-slash-fill::before { content: "\f53c"; } -.bi-shield-slash::before { content: "\f53d"; } -.bi-shield-x::before { content: "\f53e"; } -.bi-shield::before { content: "\f53f"; } -.bi-shift-fill::before { content: "\f540"; } -.bi-shift::before { content: "\f541"; } -.bi-shop-window::before { content: "\f542"; } -.bi-shop::before { content: "\f543"; } -.bi-shuffle::before { content: "\f544"; } -.bi-signpost-2-fill::before { content: "\f545"; } -.bi-signpost-2::before { content: "\f546"; } -.bi-signpost-fill::before { content: "\f547"; } -.bi-signpost-split-fill::before { content: "\f548"; } -.bi-signpost-split::before { content: "\f549"; } -.bi-signpost::before { content: "\f54a"; } -.bi-sim-fill::before { content: "\f54b"; } -.bi-sim::before { content: "\f54c"; } -.bi-skip-backward-btn-fill::before { content: "\f54d"; } -.bi-skip-backward-btn::before { content: "\f54e"; } -.bi-skip-backward-circle-fill::before { content: "\f54f"; } -.bi-skip-backward-circle::before { content: "\f550"; } -.bi-skip-backward-fill::before { content: "\f551"; } -.bi-skip-backward::before { content: "\f552"; } -.bi-skip-end-btn-fill::before { content: "\f553"; } -.bi-skip-end-btn::before { content: "\f554"; } -.bi-skip-end-circle-fill::before { content: "\f555"; } -.bi-skip-end-circle::before { content: "\f556"; } -.bi-skip-end-fill::before { content: "\f557"; } -.bi-skip-end::before { content: "\f558"; } -.bi-skip-forward-btn-fill::before { content: "\f559"; } -.bi-skip-forward-btn::before { content: "\f55a"; } -.bi-skip-forward-circle-fill::before { content: "\f55b"; } -.bi-skip-forward-circle::before { content: "\f55c"; } -.bi-skip-forward-fill::before { content: "\f55d"; } -.bi-skip-forward::before { content: "\f55e"; } -.bi-skip-start-btn-fill::before { content: "\f55f"; } -.bi-skip-start-btn::before { content: "\f560"; } -.bi-skip-start-circle-fill::before { content: "\f561"; } -.bi-skip-start-circle::before { content: "\f562"; } -.bi-skip-start-fill::before { content: "\f563"; } -.bi-skip-start::before { content: "\f564"; } -.bi-slack::before { content: "\f565"; } -.bi-slash-circle-fill::before { content: "\f566"; } -.bi-slash-circle::before { content: "\f567"; } -.bi-slash-square-fill::before { content: "\f568"; } -.bi-slash-square::before { content: "\f569"; } -.bi-slash::before { content: "\f56a"; } -.bi-sliders::before { content: "\f56b"; } -.bi-smartwatch::before { content: "\f56c"; } -.bi-snow::before { content: "\f56d"; } -.bi-snow2::before { content: "\f56e"; } -.bi-snow3::before { content: "\f56f"; } -.bi-sort-alpha-down-alt::before { content: "\f570"; } -.bi-sort-alpha-down::before { content: "\f571"; } -.bi-sort-alpha-up-alt::before { content: "\f572"; } -.bi-sort-alpha-up::before { content: "\f573"; } -.bi-sort-down-alt::before { content: "\f574"; } -.bi-sort-down::before { content: "\f575"; } -.bi-sort-numeric-down-alt::before { content: "\f576"; } -.bi-sort-numeric-down::before { content: "\f577"; } -.bi-sort-numeric-up-alt::before { content: "\f578"; } -.bi-sort-numeric-up::before { content: "\f579"; } -.bi-sort-up-alt::before { content: "\f57a"; } -.bi-sort-up::before { content: "\f57b"; } -.bi-soundwave::before { content: "\f57c"; } -.bi-speaker-fill::before { content: "\f57d"; } -.bi-speaker::before { content: "\f57e"; } -.bi-speedometer::before { content: "\f57f"; } -.bi-speedometer2::before { content: "\f580"; } -.bi-spellcheck::before { content: "\f581"; } -.bi-square-fill::before { content: "\f582"; } -.bi-square-half::before { content: "\f583"; } -.bi-square::before { content: "\f584"; } -.bi-stack::before { content: "\f585"; } -.bi-star-fill::before { content: "\f586"; } -.bi-star-half::before { content: "\f587"; } -.bi-star::before { content: "\f588"; } -.bi-stars::before { content: "\f589"; } -.bi-stickies-fill::before { content: "\f58a"; } -.bi-stickies::before { content: "\f58b"; } -.bi-sticky-fill::before { content: "\f58c"; } -.bi-sticky::before { content: "\f58d"; } -.bi-stop-btn-fill::before { content: "\f58e"; } -.bi-stop-btn::before { content: "\f58f"; } -.bi-stop-circle-fill::before { content: "\f590"; } -.bi-stop-circle::before { content: "\f591"; } -.bi-stop-fill::before { content: "\f592"; } -.bi-stop::before { content: "\f593"; } -.bi-stoplights-fill::before { content: "\f594"; } -.bi-stoplights::before { content: "\f595"; } -.bi-stopwatch-fill::before { content: "\f596"; } -.bi-stopwatch::before { content: "\f597"; } -.bi-subtract::before { content: "\f598"; } -.bi-suit-club-fill::before { content: "\f599"; } -.bi-suit-club::before { content: "\f59a"; } -.bi-suit-diamond-fill::before { content: "\f59b"; } -.bi-suit-diamond::before { content: "\f59c"; } -.bi-suit-heart-fill::before { content: "\f59d"; } -.bi-suit-heart::before { content: "\f59e"; } -.bi-suit-spade-fill::before { content: "\f59f"; } -.bi-suit-spade::before { content: "\f5a0"; } -.bi-sun-fill::before { content: "\f5a1"; } -.bi-sun::before { content: "\f5a2"; } -.bi-sunglasses::before { content: "\f5a3"; } -.bi-sunrise-fill::before { content: "\f5a4"; } -.bi-sunrise::before { content: "\f5a5"; } -.bi-sunset-fill::before { content: "\f5a6"; } -.bi-sunset::before { content: "\f5a7"; } -.bi-symmetry-horizontal::before { content: "\f5a8"; } -.bi-symmetry-vertical::before { content: "\f5a9"; } -.bi-table::before { content: "\f5aa"; } -.bi-tablet-fill::before { content: "\f5ab"; } -.bi-tablet-landscape-fill::before { content: "\f5ac"; } -.bi-tablet-landscape::before { content: "\f5ad"; } -.bi-tablet::before { content: "\f5ae"; } -.bi-tag-fill::before { content: "\f5af"; } -.bi-tag::before { content: "\f5b0"; } -.bi-tags-fill::before { content: "\f5b1"; } -.bi-tags::before { content: "\f5b2"; } -.bi-telegram::before { content: "\f5b3"; } -.bi-telephone-fill::before { content: "\f5b4"; } -.bi-telephone-forward-fill::before { content: "\f5b5"; } -.bi-telephone-forward::before { content: "\f5b6"; } -.bi-telephone-inbound-fill::before { content: "\f5b7"; } -.bi-telephone-inbound::before { content: "\f5b8"; } -.bi-telephone-minus-fill::before { content: "\f5b9"; } -.bi-telephone-minus::before { content: "\f5ba"; } -.bi-telephone-outbound-fill::before { content: "\f5bb"; } -.bi-telephone-outbound::before { content: "\f5bc"; } -.bi-telephone-plus-fill::before { content: "\f5bd"; } -.bi-telephone-plus::before { content: "\f5be"; } -.bi-telephone-x-fill::before { content: "\f5bf"; } -.bi-telephone-x::before { content: "\f5c0"; } -.bi-telephone::before { content: "\f5c1"; } -.bi-terminal-fill::before { content: "\f5c2"; } -.bi-terminal::before { content: "\f5c3"; } -.bi-text-center::before { content: "\f5c4"; } -.bi-text-indent-left::before { content: "\f5c5"; } -.bi-text-indent-right::before { content: "\f5c6"; } -.bi-text-left::before { content: "\f5c7"; } -.bi-text-paragraph::before { content: "\f5c8"; } -.bi-text-right::before { content: "\f5c9"; } -.bi-textarea-resize::before { content: "\f5ca"; } -.bi-textarea-t::before { content: "\f5cb"; } -.bi-textarea::before { content: "\f5cc"; } -.bi-thermometer-half::before { content: "\f5cd"; } -.bi-thermometer-high::before { content: "\f5ce"; } -.bi-thermometer-low::before { content: "\f5cf"; } -.bi-thermometer-snow::before { content: "\f5d0"; } -.bi-thermometer-sun::before { content: "\f5d1"; } -.bi-thermometer::before { content: "\f5d2"; } -.bi-three-dots-vertical::before { content: "\f5d3"; } -.bi-three-dots::before { content: "\f5d4"; } -.bi-toggle-off::before { content: "\f5d5"; } -.bi-toggle-on::before { content: "\f5d6"; } -.bi-toggle2-off::before { content: "\f5d7"; } -.bi-toggle2-on::before { content: "\f5d8"; } -.bi-toggles::before { content: "\f5d9"; } -.bi-toggles2::before { content: "\f5da"; } -.bi-tools::before { content: "\f5db"; } -.bi-tornado::before { content: "\f5dc"; } -.bi-trash-fill::before { content: "\f5dd"; } -.bi-trash::before { content: "\f5de"; } -.bi-trash2-fill::before { content: "\f5df"; } -.bi-trash2::before { content: "\f5e0"; } -.bi-tree-fill::before { content: "\f5e1"; } -.bi-tree::before { content: "\f5e2"; } -.bi-triangle-fill::before { content: "\f5e3"; } -.bi-triangle-half::before { content: "\f5e4"; } -.bi-triangle::before { content: "\f5e5"; } -.bi-trophy-fill::before { content: "\f5e6"; } -.bi-trophy::before { content: "\f5e7"; } -.bi-tropical-storm::before { content: "\f5e8"; } -.bi-truck-flatbed::before { content: "\f5e9"; } -.bi-truck::before { content: "\f5ea"; } -.bi-tsunami::before { content: "\f5eb"; } -.bi-tv-fill::before { content: "\f5ec"; } -.bi-tv::before { content: "\f5ed"; } -.bi-twitch::before { content: "\f5ee"; } -.bi-twitter::before { content: "\f5ef"; } -.bi-type-bold::before { content: "\f5f0"; } -.bi-type-h1::before { content: "\f5f1"; } -.bi-type-h2::before { content: "\f5f2"; } -.bi-type-h3::before { content: "\f5f3"; } -.bi-type-italic::before { content: "\f5f4"; } -.bi-type-strikethrough::before { content: "\f5f5"; } -.bi-type-underline::before { content: "\f5f6"; } -.bi-type::before { content: "\f5f7"; } -.bi-ui-checks-grid::before { content: "\f5f8"; } -.bi-ui-checks::before { content: "\f5f9"; } -.bi-ui-radios-grid::before { content: "\f5fa"; } -.bi-ui-radios::before { content: "\f5fb"; } -.bi-umbrella-fill::before { content: "\f5fc"; } -.bi-umbrella::before { content: "\f5fd"; } -.bi-union::before { content: "\f5fe"; } -.bi-unlock-fill::before { content: "\f5ff"; } -.bi-unlock::before { content: "\f600"; } -.bi-upc-scan::before { content: "\f601"; } -.bi-upc::before { content: "\f602"; } -.bi-upload::before { content: "\f603"; } -.bi-vector-pen::before { content: "\f604"; } -.bi-view-list::before { content: "\f605"; } -.bi-view-stacked::before { content: "\f606"; } -.bi-vinyl-fill::before { content: "\f607"; } -.bi-vinyl::before { content: "\f608"; } -.bi-voicemail::before { content: "\f609"; } -.bi-volume-down-fill::before { content: "\f60a"; } -.bi-volume-down::before { content: "\f60b"; } -.bi-volume-mute-fill::before { content: "\f60c"; } -.bi-volume-mute::before { content: "\f60d"; } -.bi-volume-off-fill::before { content: "\f60e"; } -.bi-volume-off::before { content: "\f60f"; } -.bi-volume-up-fill::before { content: "\f610"; } -.bi-volume-up::before { content: "\f611"; } -.bi-vr::before { content: "\f612"; } -.bi-wallet-fill::before { content: "\f613"; } -.bi-wallet::before { content: "\f614"; } -.bi-wallet2::before { content: "\f615"; } -.bi-watch::before { content: "\f616"; } -.bi-water::before { content: "\f617"; } -.bi-whatsapp::before { content: "\f618"; } -.bi-wifi-1::before { content: "\f619"; } -.bi-wifi-2::before { content: "\f61a"; } -.bi-wifi-off::before { content: "\f61b"; } -.bi-wifi::before { content: "\f61c"; } -.bi-wind::before { content: "\f61d"; } -.bi-window-dock::before { content: "\f61e"; } -.bi-window-sidebar::before { content: "\f61f"; } -.bi-window::before { content: "\f620"; } -.bi-wrench::before { content: "\f621"; } -.bi-x-circle-fill::before { content: "\f622"; } -.bi-x-circle::before { content: "\f623"; } -.bi-x-diamond-fill::before { content: "\f624"; } -.bi-x-diamond::before { content: "\f625"; } -.bi-x-octagon-fill::before { content: "\f626"; } -.bi-x-octagon::before { content: "\f627"; } -.bi-x-square-fill::before { content: "\f628"; } -.bi-x-square::before { content: "\f629"; } -.bi-x::before { content: "\f62a"; } -.bi-youtube::before { content: "\f62b"; } -.bi-zoom-in::before { content: "\f62c"; } -.bi-zoom-out::before { content: "\f62d"; } -.bi-bank::before { content: "\f62e"; } -.bi-bank2::before { content: "\f62f"; } -.bi-bell-slash-fill::before { content: "\f630"; } -.bi-bell-slash::before { content: "\f631"; } -.bi-cash-coin::before { content: "\f632"; } -.bi-check-lg::before { content: "\f633"; } -.bi-coin::before { content: "\f634"; } -.bi-currency-bitcoin::before { content: "\f635"; } -.bi-currency-dollar::before { content: "\f636"; } -.bi-currency-euro::before { content: "\f637"; } -.bi-currency-exchange::before { content: "\f638"; } -.bi-currency-pound::before { content: "\f639"; } -.bi-currency-yen::before { content: "\f63a"; } -.bi-dash-lg::before { content: "\f63b"; } -.bi-exclamation-lg::before { content: "\f63c"; } -.bi-file-earmark-pdf-fill::before { content: "\f63d"; } -.bi-file-earmark-pdf::before { content: "\f63e"; } -.bi-file-pdf-fill::before { content: "\f63f"; } -.bi-file-pdf::before { content: "\f640"; } -.bi-gender-ambiguous::before { content: "\f641"; } -.bi-gender-female::before { content: "\f642"; } -.bi-gender-male::before { content: "\f643"; } -.bi-gender-trans::before { content: "\f644"; } -.bi-headset-vr::before { content: "\f645"; } -.bi-info-lg::before { content: "\f646"; } -.bi-mastodon::before { content: "\f647"; } -.bi-messenger::before { content: "\f648"; } -.bi-piggy-bank-fill::before { content: "\f649"; } -.bi-piggy-bank::before { content: "\f64a"; } -.bi-pin-map-fill::before { content: "\f64b"; } -.bi-pin-map::before { content: "\f64c"; } -.bi-plus-lg::before { content: "\f64d"; } -.bi-question-lg::before { content: "\f64e"; } -.bi-recycle::before { content: "\f64f"; } -.bi-reddit::before { content: "\f650"; } -.bi-safe-fill::before { content: "\f651"; } -.bi-safe2-fill::before { content: "\f652"; } -.bi-safe2::before { content: "\f653"; } -.bi-sd-card-fill::before { content: "\f654"; } -.bi-sd-card::before { content: "\f655"; } -.bi-skype::before { content: "\f656"; } -.bi-slash-lg::before { content: "\f657"; } -.bi-translate::before { content: "\f658"; } -.bi-x-lg::before { content: "\f659"; } -.bi-safe::before { content: "\f65a"; } -.bi-apple::before { content: "\f65b"; } -.bi-microsoft::before { content: "\f65d"; } -.bi-windows::before { content: "\f65e"; } -.bi-behance::before { content: "\f65c"; } -.bi-dribbble::before { content: "\f65f"; } -.bi-line::before { content: "\f660"; } -.bi-medium::before { content: "\f661"; } -.bi-paypal::before { content: "\f662"; } -.bi-pinterest::before { content: "\f663"; } -.bi-signal::before { content: "\f664"; } -.bi-snapchat::before { content: "\f665"; } -.bi-spotify::before { content: "\f666"; } -.bi-stack-overflow::before { content: "\f667"; } -.bi-strava::before { content: "\f668"; } -.bi-wordpress::before { content: "\f669"; } -.bi-vimeo::before { content: "\f66a"; } -.bi-activity::before { content: "\f66b"; } -.bi-easel2-fill::before { content: "\f66c"; } -.bi-easel2::before { content: "\f66d"; } -.bi-easel3-fill::before { content: "\f66e"; } -.bi-easel3::before { content: "\f66f"; } -.bi-fan::before { content: "\f670"; } -.bi-fingerprint::before { content: "\f671"; } -.bi-graph-down-arrow::before { content: "\f672"; } -.bi-graph-up-arrow::before { content: "\f673"; } -.bi-hypnotize::before { content: "\f674"; } -.bi-magic::before { content: "\f675"; } -.bi-person-rolodex::before { content: "\f676"; } -.bi-person-video::before { content: "\f677"; } -.bi-person-video2::before { content: "\f678"; } -.bi-person-video3::before { content: "\f679"; } -.bi-person-workspace::before { content: "\f67a"; } -.bi-radioactive::before { content: "\f67b"; } -.bi-webcam-fill::before { content: "\f67c"; } -.bi-webcam::before { content: "\f67d"; } -.bi-yin-yang::before { content: "\f67e"; } -.bi-bandaid-fill::before { content: "\f680"; } -.bi-bandaid::before { content: "\f681"; } -.bi-bluetooth::before { content: "\f682"; } -.bi-body-text::before { content: "\f683"; } -.bi-boombox::before { content: "\f684"; } -.bi-boxes::before { content: "\f685"; } -.bi-dpad-fill::before { content: "\f686"; } -.bi-dpad::before { content: "\f687"; } -.bi-ear-fill::before { content: "\f688"; } -.bi-ear::before { content: "\f689"; } -.bi-envelope-check-fill::before { content: "\f68b"; } -.bi-envelope-check::before { content: "\f68c"; } -.bi-envelope-dash-fill::before { content: "\f68e"; } -.bi-envelope-dash::before { content: "\f68f"; } -.bi-envelope-exclamation-fill::before { content: "\f691"; } -.bi-envelope-exclamation::before { content: "\f692"; } -.bi-envelope-plus-fill::before { content: "\f693"; } -.bi-envelope-plus::before { content: "\f694"; } -.bi-envelope-slash-fill::before { content: "\f696"; } -.bi-envelope-slash::before { content: "\f697"; } -.bi-envelope-x-fill::before { content: "\f699"; } -.bi-envelope-x::before { content: "\f69a"; } -.bi-explicit-fill::before { content: "\f69b"; } -.bi-explicit::before { content: "\f69c"; } -.bi-git::before { content: "\f69d"; } -.bi-infinity::before { content: "\f69e"; } -.bi-list-columns-reverse::before { content: "\f69f"; } -.bi-list-columns::before { content: "\f6a0"; } -.bi-meta::before { content: "\f6a1"; } -.bi-nintendo-switch::before { content: "\f6a4"; } -.bi-pc-display-horizontal::before { content: "\f6a5"; } -.bi-pc-display::before { content: "\f6a6"; } -.bi-pc-horizontal::before { content: "\f6a7"; } -.bi-pc::before { content: "\f6a8"; } -.bi-playstation::before { content: "\f6a9"; } -.bi-plus-slash-minus::before { content: "\f6aa"; } -.bi-projector-fill::before { content: "\f6ab"; } -.bi-projector::before { content: "\f6ac"; } -.bi-qr-code-scan::before { content: "\f6ad"; } -.bi-qr-code::before { content: "\f6ae"; } -.bi-quora::before { content: "\f6af"; } -.bi-quote::before { content: "\f6b0"; } -.bi-robot::before { content: "\f6b1"; } -.bi-send-check-fill::before { content: "\f6b2"; } -.bi-send-check::before { content: "\f6b3"; } -.bi-send-dash-fill::before { content: "\f6b4"; } -.bi-send-dash::before { content: "\f6b5"; } -.bi-send-exclamation-fill::before { content: "\f6b7"; } -.bi-send-exclamation::before { content: "\f6b8"; } -.bi-send-fill::before { content: "\f6b9"; } -.bi-send-plus-fill::before { content: "\f6ba"; } -.bi-send-plus::before { content: "\f6bb"; } -.bi-send-slash-fill::before { content: "\f6bc"; } -.bi-send-slash::before { content: "\f6bd"; } -.bi-send-x-fill::before { content: "\f6be"; } -.bi-send-x::before { content: "\f6bf"; } -.bi-send::before { content: "\f6c0"; } -.bi-steam::before { content: "\f6c1"; } -.bi-terminal-dash::before { content: "\f6c3"; } -.bi-terminal-plus::before { content: "\f6c4"; } -.bi-terminal-split::before { content: "\f6c5"; } -.bi-ticket-detailed-fill::before { content: "\f6c6"; } -.bi-ticket-detailed::before { content: "\f6c7"; } -.bi-ticket-fill::before { content: "\f6c8"; } -.bi-ticket-perforated-fill::before { content: "\f6c9"; } -.bi-ticket-perforated::before { content: "\f6ca"; } -.bi-ticket::before { content: "\f6cb"; } -.bi-tiktok::before { content: "\f6cc"; } -.bi-window-dash::before { content: "\f6cd"; } -.bi-window-desktop::before { content: "\f6ce"; } -.bi-window-fullscreen::before { content: "\f6cf"; } -.bi-window-plus::before { content: "\f6d0"; } -.bi-window-split::before { content: "\f6d1"; } -.bi-window-stack::before { content: "\f6d2"; } -.bi-window-x::before { content: "\f6d3"; } -.bi-xbox::before { content: "\f6d4"; } -.bi-ethernet::before { content: "\f6d5"; } -.bi-hdmi-fill::before { content: "\f6d6"; } -.bi-hdmi::before { content: "\f6d7"; } -.bi-usb-c-fill::before { content: "\f6d8"; } -.bi-usb-c::before { content: "\f6d9"; } -.bi-usb-fill::before { content: "\f6da"; } -.bi-usb-plug-fill::before { content: "\f6db"; } -.bi-usb-plug::before { content: "\f6dc"; } -.bi-usb-symbol::before { content: "\f6dd"; } -.bi-usb::before { content: "\f6de"; } -.bi-boombox-fill::before { content: "\f6df"; } -.bi-displayport::before { content: "\f6e1"; } -.bi-gpu-card::before { content: "\f6e2"; } -.bi-memory::before { content: "\f6e3"; } -.bi-modem-fill::before { content: "\f6e4"; } -.bi-modem::before { content: "\f6e5"; } -.bi-motherboard-fill::before { content: "\f6e6"; } -.bi-motherboard::before { content: "\f6e7"; } -.bi-optical-audio-fill::before { content: "\f6e8"; } -.bi-optical-audio::before { content: "\f6e9"; } -.bi-pci-card::before { content: "\f6ea"; } -.bi-router-fill::before { content: "\f6eb"; } -.bi-router::before { content: "\f6ec"; } -.bi-thunderbolt-fill::before { content: "\f6ef"; } -.bi-thunderbolt::before { content: "\f6f0"; } -.bi-usb-drive-fill::before { content: "\f6f1"; } -.bi-usb-drive::before { content: "\f6f2"; } -.bi-usb-micro-fill::before { content: "\f6f3"; } -.bi-usb-micro::before { content: "\f6f4"; } -.bi-usb-mini-fill::before { content: "\f6f5"; } -.bi-usb-mini::before { content: "\f6f6"; } -.bi-cloud-haze2::before { content: "\f6f7"; } -.bi-device-hdd-fill::before { content: "\f6f8"; } -.bi-device-hdd::before { content: "\f6f9"; } -.bi-device-ssd-fill::before { content: "\f6fa"; } -.bi-device-ssd::before { content: "\f6fb"; } -.bi-displayport-fill::before { content: "\f6fc"; } -.bi-mortarboard-fill::before { content: "\f6fd"; } -.bi-mortarboard::before { content: "\f6fe"; } -.bi-terminal-x::before { content: "\f6ff"; } -.bi-arrow-through-heart-fill::before { content: "\f700"; } -.bi-arrow-through-heart::before { content: "\f701"; } -.bi-badge-sd-fill::before { content: "\f702"; } -.bi-badge-sd::before { content: "\f703"; } -.bi-bag-heart-fill::before { content: "\f704"; } -.bi-bag-heart::before { content: "\f705"; } -.bi-balloon-fill::before { content: "\f706"; } -.bi-balloon-heart-fill::before { content: "\f707"; } -.bi-balloon-heart::before { content: "\f708"; } -.bi-balloon::before { content: "\f709"; } -.bi-box2-fill::before { content: "\f70a"; } -.bi-box2-heart-fill::before { content: "\f70b"; } -.bi-box2-heart::before { content: "\f70c"; } -.bi-box2::before { content: "\f70d"; } -.bi-braces-asterisk::before { content: "\f70e"; } -.bi-calendar-heart-fill::before { content: "\f70f"; } -.bi-calendar-heart::before { content: "\f710"; } -.bi-calendar2-heart-fill::before { content: "\f711"; } -.bi-calendar2-heart::before { content: "\f712"; } -.bi-chat-heart-fill::before { content: "\f713"; } -.bi-chat-heart::before { content: "\f714"; } -.bi-chat-left-heart-fill::before { content: "\f715"; } -.bi-chat-left-heart::before { content: "\f716"; } -.bi-chat-right-heart-fill::before { content: "\f717"; } -.bi-chat-right-heart::before { content: "\f718"; } -.bi-chat-square-heart-fill::before { content: "\f719"; } -.bi-chat-square-heart::before { content: "\f71a"; } -.bi-clipboard-check-fill::before { content: "\f71b"; } -.bi-clipboard-data-fill::before { content: "\f71c"; } -.bi-clipboard-fill::before { content: "\f71d"; } -.bi-clipboard-heart-fill::before { content: "\f71e"; } -.bi-clipboard-heart::before { content: "\f71f"; } -.bi-clipboard-minus-fill::before { content: "\f720"; } -.bi-clipboard-plus-fill::before { content: "\f721"; } -.bi-clipboard-pulse::before { content: "\f722"; } -.bi-clipboard-x-fill::before { content: "\f723"; } -.bi-clipboard2-check-fill::before { content: "\f724"; } -.bi-clipboard2-check::before { content: "\f725"; } -.bi-clipboard2-data-fill::before { content: "\f726"; } -.bi-clipboard2-data::before { content: "\f727"; } -.bi-clipboard2-fill::before { content: "\f728"; } -.bi-clipboard2-heart-fill::before { content: "\f729"; } -.bi-clipboard2-heart::before { content: "\f72a"; } -.bi-clipboard2-minus-fill::before { content: "\f72b"; } -.bi-clipboard2-minus::before { content: "\f72c"; } -.bi-clipboard2-plus-fill::before { content: "\f72d"; } -.bi-clipboard2-plus::before { content: "\f72e"; } -.bi-clipboard2-pulse-fill::before { content: "\f72f"; } -.bi-clipboard2-pulse::before { content: "\f730"; } -.bi-clipboard2-x-fill::before { content: "\f731"; } -.bi-clipboard2-x::before { content: "\f732"; } -.bi-clipboard2::before { content: "\f733"; } -.bi-emoji-kiss-fill::before { content: "\f734"; } -.bi-emoji-kiss::before { content: "\f735"; } -.bi-envelope-heart-fill::before { content: "\f736"; } -.bi-envelope-heart::before { content: "\f737"; } -.bi-envelope-open-heart-fill::before { content: "\f738"; } -.bi-envelope-open-heart::before { content: "\f739"; } -.bi-envelope-paper-fill::before { content: "\f73a"; } -.bi-envelope-paper-heart-fill::before { content: "\f73b"; } -.bi-envelope-paper-heart::before { content: "\f73c"; } -.bi-envelope-paper::before { content: "\f73d"; } -.bi-filetype-aac::before { content: "\f73e"; } -.bi-filetype-ai::before { content: "\f73f"; } -.bi-filetype-bmp::before { content: "\f740"; } -.bi-filetype-cs::before { content: "\f741"; } -.bi-filetype-css::before { content: "\f742"; } -.bi-filetype-csv::before { content: "\f743"; } -.bi-filetype-doc::before { content: "\f744"; } -.bi-filetype-docx::before { content: "\f745"; } -.bi-filetype-exe::before { content: "\f746"; } -.bi-filetype-gif::before { content: "\f747"; } -.bi-filetype-heic::before { content: "\f748"; } -.bi-filetype-html::before { content: "\f749"; } -.bi-filetype-java::before { content: "\f74a"; } -.bi-filetype-jpg::before { content: "\f74b"; } -.bi-filetype-js::before { content: "\f74c"; } -.bi-filetype-jsx::before { content: "\f74d"; } -.bi-filetype-key::before { content: "\f74e"; } -.bi-filetype-m4p::before { content: "\f74f"; } -.bi-filetype-md::before { content: "\f750"; } -.bi-filetype-mdx::before { content: "\f751"; } -.bi-filetype-mov::before { content: "\f752"; } -.bi-filetype-mp3::before { content: "\f753"; } -.bi-filetype-mp4::before { content: "\f754"; } -.bi-filetype-otf::before { content: "\f755"; } -.bi-filetype-pdf::before { content: "\f756"; } -.bi-filetype-php::before { content: "\f757"; } -.bi-filetype-png::before { content: "\f758"; } -.bi-filetype-ppt::before { content: "\f75a"; } -.bi-filetype-psd::before { content: "\f75b"; } -.bi-filetype-py::before { content: "\f75c"; } -.bi-filetype-raw::before { content: "\f75d"; } -.bi-filetype-rb::before { content: "\f75e"; } -.bi-filetype-sass::before { content: "\f75f"; } -.bi-filetype-scss::before { content: "\f760"; } -.bi-filetype-sh::before { content: "\f761"; } -.bi-filetype-svg::before { content: "\f762"; } -.bi-filetype-tiff::before { content: "\f763"; } -.bi-filetype-tsx::before { content: "\f764"; } -.bi-filetype-ttf::before { content: "\f765"; } -.bi-filetype-txt::before { content: "\f766"; } -.bi-filetype-wav::before { content: "\f767"; } -.bi-filetype-woff::before { content: "\f768"; } -.bi-filetype-xls::before { content: "\f76a"; } -.bi-filetype-xml::before { content: "\f76b"; } -.bi-filetype-yml::before { content: "\f76c"; } -.bi-heart-arrow::before { content: "\f76d"; } -.bi-heart-pulse-fill::before { content: "\f76e"; } -.bi-heart-pulse::before { content: "\f76f"; } -.bi-heartbreak-fill::before { content: "\f770"; } -.bi-heartbreak::before { content: "\f771"; } -.bi-hearts::before { content: "\f772"; } -.bi-hospital-fill::before { content: "\f773"; } -.bi-hospital::before { content: "\f774"; } -.bi-house-heart-fill::before { content: "\f775"; } -.bi-house-heart::before { content: "\f776"; } -.bi-incognito::before { content: "\f777"; } -.bi-magnet-fill::before { content: "\f778"; } -.bi-magnet::before { content: "\f779"; } -.bi-person-heart::before { content: "\f77a"; } -.bi-person-hearts::before { content: "\f77b"; } -.bi-phone-flip::before { content: "\f77c"; } -.bi-plugin::before { content: "\f77d"; } -.bi-postage-fill::before { content: "\f77e"; } -.bi-postage-heart-fill::before { content: "\f77f"; } -.bi-postage-heart::before { content: "\f780"; } -.bi-postage::before { content: "\f781"; } -.bi-postcard-fill::before { content: "\f782"; } -.bi-postcard-heart-fill::before { content: "\f783"; } -.bi-postcard-heart::before { content: "\f784"; } -.bi-postcard::before { content: "\f785"; } -.bi-search-heart-fill::before { content: "\f786"; } -.bi-search-heart::before { content: "\f787"; } -.bi-sliders2-vertical::before { content: "\f788"; } -.bi-sliders2::before { content: "\f789"; } -.bi-trash3-fill::before { content: "\f78a"; } -.bi-trash3::before { content: "\f78b"; } -.bi-valentine::before { content: "\f78c"; } -.bi-valentine2::before { content: "\f78d"; } -.bi-wrench-adjustable-circle-fill::before { content: "\f78e"; } -.bi-wrench-adjustable-circle::before { content: "\f78f"; } -.bi-wrench-adjustable::before { content: "\f790"; } -.bi-filetype-json::before { content: "\f791"; } -.bi-filetype-pptx::before { content: "\f792"; } -.bi-filetype-xlsx::before { content: "\f793"; } -.bi-1-circle-fill::before { content: "\f796"; } -.bi-1-circle::before { content: "\f797"; } -.bi-1-square-fill::before { content: "\f798"; } -.bi-1-square::before { content: "\f799"; } -.bi-2-circle-fill::before { content: "\f79c"; } -.bi-2-circle::before { content: "\f79d"; } -.bi-2-square-fill::before { content: "\f79e"; } -.bi-2-square::before { content: "\f79f"; } -.bi-3-circle-fill::before { content: "\f7a2"; } -.bi-3-circle::before { content: "\f7a3"; } -.bi-3-square-fill::before { content: "\f7a4"; } -.bi-3-square::before { content: "\f7a5"; } -.bi-4-circle-fill::before { content: "\f7a8"; } -.bi-4-circle::before { content: "\f7a9"; } -.bi-4-square-fill::before { content: "\f7aa"; } -.bi-4-square::before { content: "\f7ab"; } -.bi-5-circle-fill::before { content: "\f7ae"; } -.bi-5-circle::before { content: "\f7af"; } -.bi-5-square-fill::before { content: "\f7b0"; } -.bi-5-square::before { content: "\f7b1"; } -.bi-6-circle-fill::before { content: "\f7b4"; } -.bi-6-circle::before { content: "\f7b5"; } -.bi-6-square-fill::before { content: "\f7b6"; } -.bi-6-square::before { content: "\f7b7"; } -.bi-7-circle-fill::before { content: "\f7ba"; } -.bi-7-circle::before { content: "\f7bb"; } -.bi-7-square-fill::before { content: "\f7bc"; } -.bi-7-square::before { content: "\f7bd"; } -.bi-8-circle-fill::before { content: "\f7c0"; } -.bi-8-circle::before { content: "\f7c1"; } -.bi-8-square-fill::before { content: "\f7c2"; } -.bi-8-square::before { content: "\f7c3"; } -.bi-9-circle-fill::before { content: "\f7c6"; } -.bi-9-circle::before { content: "\f7c7"; } -.bi-9-square-fill::before { content: "\f7c8"; } -.bi-9-square::before { content: "\f7c9"; } -.bi-airplane-engines-fill::before { content: "\f7ca"; } -.bi-airplane-engines::before { content: "\f7cb"; } -.bi-airplane-fill::before { content: "\f7cc"; } -.bi-airplane::before { content: "\f7cd"; } -.bi-alexa::before { content: "\f7ce"; } -.bi-alipay::before { content: "\f7cf"; } -.bi-android::before { content: "\f7d0"; } -.bi-android2::before { content: "\f7d1"; } -.bi-box-fill::before { content: "\f7d2"; } -.bi-box-seam-fill::before { content: "\f7d3"; } -.bi-browser-chrome::before { content: "\f7d4"; } -.bi-browser-edge::before { content: "\f7d5"; } -.bi-browser-firefox::before { content: "\f7d6"; } -.bi-browser-safari::before { content: "\f7d7"; } -.bi-c-circle-fill::before { content: "\f7da"; } -.bi-c-circle::before { content: "\f7db"; } -.bi-c-square-fill::before { content: "\f7dc"; } -.bi-c-square::before { content: "\f7dd"; } -.bi-capsule-pill::before { content: "\f7de"; } -.bi-capsule::before { content: "\f7df"; } -.bi-car-front-fill::before { content: "\f7e0"; } -.bi-car-front::before { content: "\f7e1"; } -.bi-cassette-fill::before { content: "\f7e2"; } -.bi-cassette::before { content: "\f7e3"; } -.bi-cc-circle-fill::before { content: "\f7e6"; } -.bi-cc-circle::before { content: "\f7e7"; } -.bi-cc-square-fill::before { content: "\f7e8"; } -.bi-cc-square::before { content: "\f7e9"; } -.bi-cup-hot-fill::before { content: "\f7ea"; } -.bi-cup-hot::before { content: "\f7eb"; } -.bi-currency-rupee::before { content: "\f7ec"; } -.bi-dropbox::before { content: "\f7ed"; } -.bi-escape::before { content: "\f7ee"; } -.bi-fast-forward-btn-fill::before { content: "\f7ef"; } -.bi-fast-forward-btn::before { content: "\f7f0"; } -.bi-fast-forward-circle-fill::before { content: "\f7f1"; } -.bi-fast-forward-circle::before { content: "\f7f2"; } -.bi-fast-forward-fill::before { content: "\f7f3"; } -.bi-fast-forward::before { content: "\f7f4"; } -.bi-filetype-sql::before { content: "\f7f5"; } -.bi-fire::before { content: "\f7f6"; } -.bi-google-play::before { content: "\f7f7"; } -.bi-h-circle-fill::before { content: "\f7fa"; } -.bi-h-circle::before { content: "\f7fb"; } -.bi-h-square-fill::before { content: "\f7fc"; } -.bi-h-square::before { content: "\f7fd"; } -.bi-indent::before { content: "\f7fe"; } -.bi-lungs-fill::before { content: "\f7ff"; } -.bi-lungs::before { content: "\f800"; } -.bi-microsoft-teams::before { content: "\f801"; } -.bi-p-circle-fill::before { content: "\f804"; } -.bi-p-circle::before { content: "\f805"; } -.bi-p-square-fill::before { content: "\f806"; } -.bi-p-square::before { content: "\f807"; } -.bi-pass-fill::before { content: "\f808"; } -.bi-pass::before { content: "\f809"; } -.bi-prescription::before { content: "\f80a"; } -.bi-prescription2::before { content: "\f80b"; } -.bi-r-circle-fill::before { content: "\f80e"; } -.bi-r-circle::before { content: "\f80f"; } -.bi-r-square-fill::before { content: "\f810"; } -.bi-r-square::before { content: "\f811"; } -.bi-repeat-1::before { content: "\f812"; } -.bi-repeat::before { content: "\f813"; } -.bi-rewind-btn-fill::before { content: "\f814"; } -.bi-rewind-btn::before { content: "\f815"; } -.bi-rewind-circle-fill::before { content: "\f816"; } -.bi-rewind-circle::before { content: "\f817"; } -.bi-rewind-fill::before { content: "\f818"; } -.bi-rewind::before { content: "\f819"; } -.bi-train-freight-front-fill::before { content: "\f81a"; } -.bi-train-freight-front::before { content: "\f81b"; } -.bi-train-front-fill::before { content: "\f81c"; } -.bi-train-front::before { content: "\f81d"; } -.bi-train-lightrail-front-fill::before { content: "\f81e"; } -.bi-train-lightrail-front::before { content: "\f81f"; } -.bi-truck-front-fill::before { content: "\f820"; } -.bi-truck-front::before { content: "\f821"; } -.bi-ubuntu::before { content: "\f822"; } -.bi-unindent::before { content: "\f823"; } -.bi-unity::before { content: "\f824"; } -.bi-universal-access-circle::before { content: "\f825"; } -.bi-universal-access::before { content: "\f826"; } -.bi-virus::before { content: "\f827"; } -.bi-virus2::before { content: "\f828"; } -.bi-wechat::before { content: "\f829"; } -.bi-yelp::before { content: "\f82a"; } -.bi-sign-stop-fill::before { content: "\f82b"; } -.bi-sign-stop-lights-fill::before { content: "\f82c"; } -.bi-sign-stop-lights::before { content: "\f82d"; } -.bi-sign-stop::before { content: "\f82e"; } -.bi-sign-turn-left-fill::before { content: "\f82f"; } -.bi-sign-turn-left::before { content: "\f830"; } -.bi-sign-turn-right-fill::before { content: "\f831"; } -.bi-sign-turn-right::before { content: "\f832"; } -.bi-sign-turn-slight-left-fill::before { content: "\f833"; } -.bi-sign-turn-slight-left::before { content: "\f834"; } -.bi-sign-turn-slight-right-fill::before { content: "\f835"; } -.bi-sign-turn-slight-right::before { content: "\f836"; } -.bi-sign-yield-fill::before { content: "\f837"; } -.bi-sign-yield::before { content: "\f838"; } -.bi-ev-station-fill::before { content: "\f839"; } -.bi-ev-station::before { content: "\f83a"; } -.bi-fuel-pump-diesel-fill::before { content: "\f83b"; } -.bi-fuel-pump-diesel::before { content: "\f83c"; } -.bi-fuel-pump-fill::before { content: "\f83d"; } -.bi-fuel-pump::before { content: "\f83e"; } -.bi-0-circle-fill::before { content: "\f83f"; } -.bi-0-circle::before { content: "\f840"; } -.bi-0-square-fill::before { content: "\f841"; } -.bi-0-square::before { content: "\f842"; } -.bi-rocket-fill::before { content: "\f843"; } -.bi-rocket-takeoff-fill::before { content: "\f844"; } -.bi-rocket-takeoff::before { content: "\f845"; } -.bi-rocket::before { content: "\f846"; } -.bi-stripe::before { content: "\f847"; } -.bi-subscript::before { content: "\f848"; } -.bi-superscript::before { content: "\f849"; } -.bi-trello::before { content: "\f84a"; } -.bi-envelope-at-fill::before { content: "\f84b"; } -.bi-envelope-at::before { content: "\f84c"; } -.bi-regex::before { content: "\f84d"; } -.bi-text-wrap::before { content: "\f84e"; } -.bi-sign-dead-end-fill::before { content: "\f84f"; } -.bi-sign-dead-end::before { content: "\f850"; } -.bi-sign-do-not-enter-fill::before { content: "\f851"; } -.bi-sign-do-not-enter::before { content: "\f852"; } -.bi-sign-intersection-fill::before { content: "\f853"; } -.bi-sign-intersection-side-fill::before { content: "\f854"; } -.bi-sign-intersection-side::before { content: "\f855"; } -.bi-sign-intersection-t-fill::before { content: "\f856"; } -.bi-sign-intersection-t::before { content: "\f857"; } -.bi-sign-intersection-y-fill::before { content: "\f858"; } -.bi-sign-intersection-y::before { content: "\f859"; } -.bi-sign-intersection::before { content: "\f85a"; } -.bi-sign-merge-left-fill::before { content: "\f85b"; } -.bi-sign-merge-left::before { content: "\f85c"; } -.bi-sign-merge-right-fill::before { content: "\f85d"; } -.bi-sign-merge-right::before { content: "\f85e"; } -.bi-sign-no-left-turn-fill::before { content: "\f85f"; } -.bi-sign-no-left-turn::before { content: "\f860"; } -.bi-sign-no-parking-fill::before { content: "\f861"; } -.bi-sign-no-parking::before { content: "\f862"; } -.bi-sign-no-right-turn-fill::before { content: "\f863"; } -.bi-sign-no-right-turn::before { content: "\f864"; } -.bi-sign-railroad-fill::before { content: "\f865"; } -.bi-sign-railroad::before { content: "\f866"; } -.bi-building-add::before { content: "\f867"; } -.bi-building-check::before { content: "\f868"; } -.bi-building-dash::before { content: "\f869"; } -.bi-building-down::before { content: "\f86a"; } -.bi-building-exclamation::before { content: "\f86b"; } -.bi-building-fill-add::before { content: "\f86c"; } -.bi-building-fill-check::before { content: "\f86d"; } -.bi-building-fill-dash::before { content: "\f86e"; } -.bi-building-fill-down::before { content: "\f86f"; } -.bi-building-fill-exclamation::before { content: "\f870"; } -.bi-building-fill-gear::before { content: "\f871"; } -.bi-building-fill-lock::before { content: "\f872"; } -.bi-building-fill-slash::before { content: "\f873"; } -.bi-building-fill-up::before { content: "\f874"; } -.bi-building-fill-x::before { content: "\f875"; } -.bi-building-fill::before { content: "\f876"; } -.bi-building-gear::before { content: "\f877"; } -.bi-building-lock::before { content: "\f878"; } -.bi-building-slash::before { content: "\f879"; } -.bi-building-up::before { content: "\f87a"; } -.bi-building-x::before { content: "\f87b"; } -.bi-buildings-fill::before { content: "\f87c"; } -.bi-buildings::before { content: "\f87d"; } -.bi-bus-front-fill::before { content: "\f87e"; } -.bi-bus-front::before { content: "\f87f"; } -.bi-ev-front-fill::before { content: "\f880"; } -.bi-ev-front::before { content: "\f881"; } -.bi-globe-americas::before { content: "\f882"; } -.bi-globe-asia-australia::before { content: "\f883"; } -.bi-globe-central-south-asia::before { content: "\f884"; } -.bi-globe-europe-africa::before { content: "\f885"; } -.bi-house-add-fill::before { content: "\f886"; } -.bi-house-add::before { content: "\f887"; } -.bi-house-check-fill::before { content: "\f888"; } -.bi-house-check::before { content: "\f889"; } -.bi-house-dash-fill::before { content: "\f88a"; } -.bi-house-dash::before { content: "\f88b"; } -.bi-house-down-fill::before { content: "\f88c"; } -.bi-house-down::before { content: "\f88d"; } -.bi-house-exclamation-fill::before { content: "\f88e"; } -.bi-house-exclamation::before { content: "\f88f"; } -.bi-house-gear-fill::before { content: "\f890"; } -.bi-house-gear::before { content: "\f891"; } -.bi-house-lock-fill::before { content: "\f892"; } -.bi-house-lock::before { content: "\f893"; } -.bi-house-slash-fill::before { content: "\f894"; } -.bi-house-slash::before { content: "\f895"; } -.bi-house-up-fill::before { content: "\f896"; } -.bi-house-up::before { content: "\f897"; } -.bi-house-x-fill::before { content: "\f898"; } -.bi-house-x::before { content: "\f899"; } -.bi-person-add::before { content: "\f89a"; } -.bi-person-down::before { content: "\f89b"; } -.bi-person-exclamation::before { content: "\f89c"; } -.bi-person-fill-add::before { content: "\f89d"; } -.bi-person-fill-check::before { content: "\f89e"; } -.bi-person-fill-dash::before { content: "\f89f"; } -.bi-person-fill-down::before { content: "\f8a0"; } -.bi-person-fill-exclamation::before { content: "\f8a1"; } -.bi-person-fill-gear::before { content: "\f8a2"; } -.bi-person-fill-lock::before { content: "\f8a3"; } -.bi-person-fill-slash::before { content: "\f8a4"; } -.bi-person-fill-up::before { content: "\f8a5"; } -.bi-person-fill-x::before { content: "\f8a6"; } -.bi-person-gear::before { content: "\f8a7"; } -.bi-person-lock::before { content: "\f8a8"; } -.bi-person-slash::before { content: "\f8a9"; } -.bi-person-up::before { content: "\f8aa"; } -.bi-scooter::before { content: "\f8ab"; } -.bi-taxi-front-fill::before { content: "\f8ac"; } -.bi-taxi-front::before { content: "\f8ad"; } -.bi-amd::before { content: "\f8ae"; } -.bi-database-add::before { content: "\f8af"; } -.bi-database-check::before { content: "\f8b0"; } -.bi-database-dash::before { content: "\f8b1"; } -.bi-database-down::before { content: "\f8b2"; } -.bi-database-exclamation::before { content: "\f8b3"; } -.bi-database-fill-add::before { content: "\f8b4"; } -.bi-database-fill-check::before { content: "\f8b5"; } -.bi-database-fill-dash::before { content: "\f8b6"; } -.bi-database-fill-down::before { content: "\f8b7"; } -.bi-database-fill-exclamation::before { content: "\f8b8"; } -.bi-database-fill-gear::before { content: "\f8b9"; } -.bi-database-fill-lock::before { content: "\f8ba"; } -.bi-database-fill-slash::before { content: "\f8bb"; } -.bi-database-fill-up::before { content: "\f8bc"; } -.bi-database-fill-x::before { content: "\f8bd"; } -.bi-database-fill::before { content: "\f8be"; } -.bi-database-gear::before { content: "\f8bf"; } -.bi-database-lock::before { content: "\f8c0"; } -.bi-database-slash::before { content: "\f8c1"; } -.bi-database-up::before { content: "\f8c2"; } -.bi-database-x::before { content: "\f8c3"; } -.bi-database::before { content: "\f8c4"; } -.bi-houses-fill::before { content: "\f8c5"; } -.bi-houses::before { content: "\f8c6"; } -.bi-nvidia::before { content: "\f8c7"; } -.bi-person-vcard-fill::before { content: "\f8c8"; } -.bi-person-vcard::before { content: "\f8c9"; } -.bi-sina-weibo::before { content: "\f8ca"; } -.bi-tencent-qq::before { content: "\f8cb"; } -.bi-wikipedia::before { content: "\f8cc"; } -.bi-alphabet-uppercase::before { content: "\f2a5"; } -.bi-alphabet::before { content: "\f68a"; } -.bi-amazon::before { content: "\f68d"; } -.bi-arrows-collapse-vertical::before { content: "\f690"; } -.bi-arrows-expand-vertical::before { content: "\f695"; } -.bi-arrows-vertical::before { content: "\f698"; } -.bi-arrows::before { content: "\f6a2"; } -.bi-ban-fill::before { content: "\f6a3"; } -.bi-ban::before { content: "\f6b6"; } -.bi-bing::before { content: "\f6c2"; } -.bi-cake::before { content: "\f6e0"; } -.bi-cake2::before { content: "\f6ed"; } -.bi-cookie::before { content: "\f6ee"; } -.bi-copy::before { content: "\f759"; } -.bi-crosshair::before { content: "\f769"; } -.bi-crosshair2::before { content: "\f794"; } -.bi-emoji-astonished-fill::before { content: "\f795"; } -.bi-emoji-astonished::before { content: "\f79a"; } -.bi-emoji-grimace-fill::before { content: "\f79b"; } -.bi-emoji-grimace::before { content: "\f7a0"; } -.bi-emoji-grin-fill::before { content: "\f7a1"; } -.bi-emoji-grin::before { content: "\f7a6"; } -.bi-emoji-surprise-fill::before { content: "\f7a7"; } -.bi-emoji-surprise::before { content: "\f7ac"; } -.bi-emoji-tear-fill::before { content: "\f7ad"; } -.bi-emoji-tear::before { content: "\f7b2"; } -.bi-envelope-arrow-down-fill::before { content: "\f7b3"; } -.bi-envelope-arrow-down::before { content: "\f7b8"; } -.bi-envelope-arrow-up-fill::before { content: "\f7b9"; } -.bi-envelope-arrow-up::before { content: "\f7be"; } -.bi-feather::before { content: "\f7bf"; } -.bi-feather2::before { content: "\f7c4"; } -.bi-floppy-fill::before { content: "\f7c5"; } -.bi-floppy::before { content: "\f7d8"; } -.bi-floppy2-fill::before { content: "\f7d9"; } -.bi-floppy2::before { content: "\f7e4"; } -.bi-gitlab::before { content: "\f7e5"; } -.bi-highlighter::before { content: "\f7f8"; } -.bi-marker-tip::before { content: "\f802"; } -.bi-nvme-fill::before { content: "\f803"; } -.bi-nvme::before { content: "\f80c"; } -.bi-opencollective::before { content: "\f80d"; } -.bi-pci-card-network::before { content: "\f8cd"; } -.bi-pci-card-sound::before { content: "\f8ce"; } -.bi-radar::before { content: "\f8cf"; } -.bi-send-arrow-down-fill::before { content: "\f8d0"; } -.bi-send-arrow-down::before { content: "\f8d1"; } -.bi-send-arrow-up-fill::before { content: "\f8d2"; } -.bi-send-arrow-up::before { content: "\f8d3"; } -.bi-sim-slash-fill::before { content: "\f8d4"; } -.bi-sim-slash::before { content: "\f8d5"; } -.bi-sourceforge::before { content: "\f8d6"; } -.bi-substack::before { content: "\f8d7"; } -.bi-threads-fill::before { content: "\f8d8"; } -.bi-threads::before { content: "\f8d9"; } -.bi-transparency::before { content: "\f8da"; } -.bi-twitter-x::before { content: "\f8db"; } -.bi-type-h4::before { content: "\f8dc"; } -.bi-type-h5::before { content: "\f8dd"; } -.bi-type-h6::before { content: "\f8de"; } -.bi-backpack-fill::before { content: "\f8df"; } -.bi-backpack::before { content: "\f8e0"; } -.bi-backpack2-fill::before { content: "\f8e1"; } -.bi-backpack2::before { content: "\f8e2"; } -.bi-backpack3-fill::before { content: "\f8e3"; } -.bi-backpack3::before { content: "\f8e4"; } -.bi-backpack4-fill::before { content: "\f8e5"; } -.bi-backpack4::before { content: "\f8e6"; } -.bi-brilliance::before { content: "\f8e7"; } -.bi-cake-fill::before { content: "\f8e8"; } -.bi-cake2-fill::before { content: "\f8e9"; } -.bi-duffle-fill::before { content: "\f8ea"; } -.bi-duffle::before { content: "\f8eb"; } -.bi-exposure::before { content: "\f8ec"; } -.bi-gender-neuter::before { content: "\f8ed"; } -.bi-highlights::before { content: "\f8ee"; } -.bi-luggage-fill::before { content: "\f8ef"; } -.bi-luggage::before { content: "\f8f0"; } -.bi-mailbox-flag::before { content: "\f8f1"; } -.bi-mailbox2-flag::before { content: "\f8f2"; } -.bi-noise-reduction::before { content: "\f8f3"; } -.bi-passport-fill::before { content: "\f8f4"; } -.bi-passport::before { content: "\f8f5"; } -.bi-person-arms-up::before { content: "\f8f6"; } -.bi-person-raised-hand::before { content: "\f8f7"; } -.bi-person-standing-dress::before { content: "\f8f8"; } -.bi-person-standing::before { content: "\f8f9"; } -.bi-person-walking::before { content: "\f8fa"; } -.bi-person-wheelchair::before { content: "\f8fb"; } -.bi-shadows::before { content: "\f8fc"; } -.bi-suitcase-fill::before { content: "\f8fd"; } -.bi-suitcase-lg-fill::before { content: "\f8fe"; } -.bi-suitcase-lg::before { content: "\f8ff"; } -.bi-suitcase::before { content: "\f900"; } -.bi-suitcase2-fill::before { content: "\f901"; } -.bi-suitcase2::before { content: "\f902"; } -.bi-vignette::before { content: "\f903"; } From 9c7624f77ee97f1c3ee5c77f515d817e8422bb36 Mon Sep 17 00:00:00 2001 From: Tim Cappalli Date: Fri, 29 Dec 2023 19:16:27 +0000 Subject: [PATCH 017/203] updated layouts and partials --- .../fullpage.html} | 0 layouts/_default/single.html | 66 +++++++++++++++++++ layouts/device-support/single.html | 26 ++++++++ layouts/docs/single.html | 40 ++++++----- layouts/partials/sidebar/feedback.html | 8 +++ 5 files changed, 125 insertions(+), 15 deletions(-) rename layouts/{device-support/device-support.html => _default/fullpage.html} (100%) create mode 100644 layouts/_default/single.html create mode 100644 layouts/device-support/single.html create mode 100644 layouts/partials/sidebar/feedback.html diff --git a/layouts/device-support/device-support.html b/layouts/_default/fullpage.html similarity index 100% rename from layouts/device-support/device-support.html rename to layouts/_default/fullpage.html diff --git a/layouts/_default/single.html b/layouts/_default/single.html new file mode 100644 index 00000000..d470c681 --- /dev/null +++ b/layouts/_default/single.html @@ -0,0 +1,66 @@ +{{ define "main" }} +

+ {{ if (in site.Params.doks.sectionNav .Section) -}} +
+ +
+ {{ end -}} + {{ if and (eq site.Params.doks.containerBreakpoint "fluid") (in .Site.Params.mainSections .Type) }} +
+ {{ end }} + {{ if ne .Params.toc false -}} + + {{ end -}} + {{ if .Params.toc -}} +
+ {{ else -}} +
+ {{ end -}} + {{ if site.Params.doks.breadcrumbTrail -}} + + + {{ end }} +

{{ .Title }}

+ + {{ if ne .Params.toc false -}} + + {{ end -}} + + {{ if site.Params.doks.headlineHash -}} + {{ partial "main/headline-hash" .Content }} + {{ else -}} + {{ .Content }} + {{ end -}} + + {{ partial "main/docs-navigation.html" . }} + +
+ {{ if and (eq site.Params.doks.containerBreakpoint "fluid") (in .Site.Params.mainSections .Type) }} +
+ {{ end }} +
+{{ end }} \ No newline at end of file diff --git a/layouts/device-support/single.html b/layouts/device-support/single.html new file mode 100644 index 00000000..812a5a77 --- /dev/null +++ b/layouts/device-support/single.html @@ -0,0 +1,26 @@ +{{ define "main" }} +
+

{{ .Title }}

+

JUST A TEST

+
+
+ {{ .Content }} +
+
+
+ + +{{ end }} \ No newline at end of file diff --git a/layouts/docs/single.html b/layouts/docs/single.html index 6ef124e0..d470c681 100644 --- a/layouts/docs/single.html +++ b/layouts/docs/single.html @@ -1,21 +1,26 @@ {{ define "main" }}
-
+ {{ if (in site.Params.doks.sectionNav .Section) -}} +
+ {{ end -}} + {{ if and (eq site.Params.doks.containerBreakpoint "fluid") (in .Site.Params.mainSections .Type) }} +
+ {{ end }} {{ if ne .Params.toc false -}} -
+ {{ end }}
{{ end }} \ No newline at end of file diff --git a/layouts/partials/sidebar/feedback.html b/layouts/partials/sidebar/feedback.html new file mode 100644 index 00000000..50c5e004 --- /dev/null +++ b/layouts/partials/sidebar/feedback.html @@ -0,0 +1,8 @@ + \ No newline at end of file From b05ebd4244366afadc7d33b485bab821b2f1031c Mon Sep 17 00:00:00 2001 From: Tim Cappalli Date: Fri, 29 Dec 2023 19:21:06 +0000 Subject: [PATCH 018/203] move out of en subfolder --- content/{en => }/device-support/_index.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename content/{en => }/device-support/_index.md (100%) diff --git a/content/en/device-support/_index.md b/content/device-support/_index.md similarity index 100% rename from content/en/device-support/_index.md rename to content/device-support/_index.md From 093e699d0c4ec61afb96ef13f02ec7b9aa122528 Mon Sep 17 00:00:00 2001 From: Tim Cappalli Date: Fri, 29 Dec 2023 19:21:59 +0000 Subject: [PATCH 019/203] move out of en subfolder --- content/{en/_index.md => _index.en.md} | 0 content/en/about/roadmap.md | 64 ------ content/en/docs/_index.md | 8 - content/en/docs/demos-examples/_index.md | 9 - .../docs/demos-examples/active-deployments.md | 37 ---- content/en/docs/demos-examples/demos.md | 25 --- content/en/docs/implement/_index.md | 9 - content/en/docs/implement/requirements.md | 27 --- content/en/docs/intro/_index.md | 9 - content/en/docs/intro/what-are-passkeys.md | 27 --- content/en/docs/reference/_index.md | 9 - content/en/docs/reference/android.md | 69 ------ content/en/docs/reference/chromeos.md | 29 --- content/en/docs/reference/ios.md | 50 ----- content/en/docs/reference/macos.md | 57 ----- content/en/docs/reference/specs.md | 41 ---- content/en/docs/reference/terms/index.md | 193 ---------------- .../terms/pkdd-signin-username-autofill.png | Bin 13609 -> 0 bytes .../terms/pkdd-terms-cda-pl-androidwin.png | Bin 27054 -> 0 bytes content/en/docs/reference/windows.md | 40 ---- content/en/docs/tools-libraries/_index.md | 9 - content/en/docs/tools-libraries/libraries.md | 53 ----- content/en/docs/tools-libraries/test-sites.md | 29 --- content/en/docs/use-cases/_index.md | 9 - .../en/docs/use-cases/bootstrapping/index.md | 206 ------------------ .../pkdd-interstitial-cdalocal.png | Bin 13788 -> 0 bytes .../pkdd-interstitial-upgradeaccount.png | Bin 14502 -> 0 bytes .../pkdd-signin-username-autofill.png | Bin 13609 -> 0 bytes .../pkdd-signin-username-next.png | Bin 7159 -> 0 bytes content/en/docs/use-cases/reauth/index.md | 83 ------- .../pkdd-reauth-logout-passkey-knowncid.png | Bin 10167 -> 0 bytes .../reauth/pkdd-reauth-logout-passkey.png | Bin 10376 -> 0 bytes .../reauth/pkdd-reauth-logout-password.png | Bin 9162 -> 0 bytes .../use-cases/reauth/pkdd-reauth-passkey.png | Bin 12667 -> 0 bytes .../use-cases/reauth/pkdd-reauth-password.png | Bin 10713 -> 0 bytes content/{en => }/faq/_index.md | 0 36 files changed, 1092 deletions(-) rename content/{en/_index.md => _index.en.md} (100%) delete mode 100644 content/en/about/roadmap.md delete mode 100644 content/en/docs/_index.md delete mode 100644 content/en/docs/demos-examples/_index.md delete mode 100644 content/en/docs/demos-examples/active-deployments.md delete mode 100644 content/en/docs/demos-examples/demos.md delete mode 100644 content/en/docs/implement/_index.md delete mode 100644 content/en/docs/implement/requirements.md delete mode 100644 content/en/docs/intro/_index.md delete mode 100644 content/en/docs/intro/what-are-passkeys.md delete mode 100644 content/en/docs/reference/_index.md delete mode 100644 content/en/docs/reference/android.md delete mode 100644 content/en/docs/reference/chromeos.md delete mode 100644 content/en/docs/reference/ios.md delete mode 100644 content/en/docs/reference/macos.md delete mode 100644 content/en/docs/reference/specs.md delete mode 100644 content/en/docs/reference/terms/index.md delete mode 100644 content/en/docs/reference/terms/pkdd-signin-username-autofill.png delete mode 100644 content/en/docs/reference/terms/pkdd-terms-cda-pl-androidwin.png delete mode 100644 content/en/docs/reference/windows.md delete mode 100644 content/en/docs/tools-libraries/_index.md delete mode 100644 content/en/docs/tools-libraries/libraries.md delete mode 100644 content/en/docs/tools-libraries/test-sites.md delete mode 100644 content/en/docs/use-cases/_index.md delete mode 100644 content/en/docs/use-cases/bootstrapping/index.md delete mode 100644 content/en/docs/use-cases/bootstrapping/pkdd-interstitial-cdalocal.png delete mode 100644 content/en/docs/use-cases/bootstrapping/pkdd-interstitial-upgradeaccount.png delete mode 100644 content/en/docs/use-cases/bootstrapping/pkdd-signin-username-autofill.png delete mode 100644 content/en/docs/use-cases/bootstrapping/pkdd-signin-username-next.png delete mode 100644 content/en/docs/use-cases/reauth/index.md delete mode 100644 content/en/docs/use-cases/reauth/pkdd-reauth-logout-passkey-knowncid.png delete mode 100644 content/en/docs/use-cases/reauth/pkdd-reauth-logout-passkey.png delete mode 100644 content/en/docs/use-cases/reauth/pkdd-reauth-logout-password.png delete mode 100644 content/en/docs/use-cases/reauth/pkdd-reauth-passkey.png delete mode 100644 content/en/docs/use-cases/reauth/pkdd-reauth-password.png rename content/{en => }/faq/_index.md (100%) diff --git a/content/en/_index.md b/content/_index.en.md similarity index 100% rename from content/en/_index.md rename to content/_index.en.md diff --git a/content/en/about/roadmap.md b/content/en/about/roadmap.md deleted file mode 100644 index a1b7164d..00000000 --- a/content/en/about/roadmap.md +++ /dev/null @@ -1,64 +0,0 @@ ---- -title: "Site Roadmap" -description: "Future content and feature plans for passkeys.dev" -date: 2022-10-11T01:20:36.292Z -lastmod: 2022-10-17T04:29:19.336Z -draft: false -images: [] ---- - -## Content and Tools - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ItemTypeEstimated Arrival
Front End RequirementsContentQ3CY23
Back End RequirementsContentQ3CY23
Security ConsiderationsContentQ3CY23
Frequently Asked QuestionsContentH2CY23
Deployment Considerations: Consumer ServicesContentH2CY23
Deployment Considerations: High Value and Regulated ConsumerContent2HCY23
Deployment Considerations: Work/SchoolContentH2CY23
Persona-based demo siteDemoH2CY23
-
- -You can request content by [creating an issue on GitHub ](https://github.com/passkeydeveloper/passkeys.dev/issues/new/choose) (select the New Content Suggestion option). diff --git a/content/en/docs/_index.md b/content/en/docs/_index.md deleted file mode 100644 index 2ab96d19..00000000 --- a/content/en/docs/_index.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -title : "Docs" -description: "Docs Doks." -lead: "" -date: 2020-10-06T08:48:23+00:00 -draft: false -images: [] ---- diff --git a/content/en/docs/demos-examples/_index.md b/content/en/docs/demos-examples/_index.md deleted file mode 100644 index 3c02f473..00000000 --- a/content/en/docs/demos-examples/_index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title : "Demos & Examples" -description: "Resources for demoing and testing passkeys" -lead: "" -date: 2023-09-19T16:40:11.007Z -draft: false -images: [] -weight: 1100 ---- diff --git a/content/en/docs/demos-examples/active-deployments.md b/content/en/docs/demos-examples/active-deployments.md deleted file mode 100644 index cfd7451a..00000000 --- a/content/en/docs/demos-examples/active-deployments.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: "Active Deployments" -description: "Known live deployments of services offering sign in with passkeys" -lead: "Some examples of live services that offer sign-in with passkeys." -date: 2023-09-19T15:33:17.279Z -draft: false -images: [] -menu: - docs: - parent: "tools-libraries" -weight: 1110 -toc: false -layout: matrix ---- - -The table below lists known active passkeys deployments which largely follow best practices and patterns. Its purpose is to provide developers with real-world examples and is not intended to be an end user facing resource. - -> Said differently, please don't link to this page from end user focused resources 😉 - -To request an addition, update, or deletion, please [create an issue](https://github.com/passkeydeveloper/passkeys.dev/issues/new?assignees=&labels=&projects=&template=active-deployments.yml&title=Add+%3Cservice+name%3E). - -| Service Name | Service Type | Web Support | App Support | Notes | Links | -|---------------------------------------------------|-----------------------|-------------|-------------|---------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------| -| [Adobe](https://www.adobe.com/) | Software as a Service | ✅ | ❓ | | [Support](https://helpx.adobe.com/manage-account/using/secure-sign-in-with-passkey.html) | -| [Air New Zealand](https://www.airnewzealand.com/) | Travel | ✅ | ❓ | | [Support](https://www.airnewzealand.com/cyber-security-account-protection) | -| [Best Buy](https://www.bestbuy.com) | Retail | ✅ | ❓ | | | -| [GitHub](https://github.com) | Software as a Service | ✅ | ✅ | | [Support](https://docs.github.com/en/authentication/authenticating-with-a-passkey/about-passkeys) | -| [Google](https://accounts.google.com) | Software as a Service | ✅ | ✅ | | [Support](https://support.google.com/accounts/answer/13548313?hl=en) | -| [Hancock](https://hancock.ink/) | Software as a Service | ✅ | n/a | | | -| [Hyatt](https://hyatt.com) | Travel | ✅ | ❓ | | [Support](https://www.hyatt.com/en-US/member/passkey/what-is-passkey) | -| [Kayak](https://www.kayak.com/) | Travel | ✅ | ✅ | | | -| [Nintendo](https://www.nintendo.com/) | Gaming | ✅ | ❓ | | [Support](https://en-americas-support.nintendo.com/app/answers/detail/a_id/62531) | -| [PayPal](https://www.paypal.com/) | Finance | ✅ | ❓ | | [Support](https://www.paypal.com/us/cshelp/article/what-is-a-passkey-and-how-do-i-use-it-to-log-in-to-my-paypal-account-help997) | -| [Robinhood](https://robinhood.com) | Finance | ☑️ | ☑️ | * limited to a single passkey | | -| [Shop](https://shop.app/) | Finance | ✅ | ✅ | | [Support](https://help.shop.app/hc/en-us/articles/12637752526868-Set-up-a-Shop-Passkey) | -| [TikTok](https://www.tiktok.com/) | Social Media | ☑️ | ❓ | * Asia, Africa, Australia, and South America only | [Support](https://support.tiktok.com/en/log-in-troubleshoot/log-in/log-in-with-a-passkey) | -| [Zoho](https://www.zoho.com/) | Software as a Service | ☑️ | ❓ | * limited to a single passkey | [Support](https://help.zoho.com/portal/en/kb/accounts/sign-in-za/articles/passkey) | diff --git a/content/en/docs/demos-examples/demos.md b/content/en/docs/demos-examples/demos.md deleted file mode 100644 index 7fbff866..00000000 --- a/content/en/docs/demos-examples/demos.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: "Demo Sites & Services" -description: "Sites and services to demo passkeys" -lead: "Sites and services to demo passkeys" -date: 2023-09-19T16:45:00.148Z -draft: false -images: [] -menu: - docs: - parent: "demos-examples" -weight: 1120 -toc: true ---- - -## General Passkey Demo Sites - -- [webauthn.io](https://webauthn.io) - -## Vendor Demo Sites - -These demo sites have been created and are maintained by FIDO2/WebAuthn vendors in the industry. - -- [passkeys.io (Hanko)](https://www.passkeys.io/) -- [passkeys.guru (Descope)](https://passkeys.guru/) -- [passkey.org (Yubico)](https://passkey.org) diff --git a/content/en/docs/implement/_index.md b/content/en/docs/implement/_index.md deleted file mode 100644 index 72d3fac9..00000000 --- a/content/en/docs/implement/_index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title : "Implement" -description: "Implement passkeys" -lead: "" -date: 2022-09-24T15:57:34.857Z -draft: true -images: [] -weight: 500 ---- diff --git a/content/en/docs/implement/requirements.md b/content/en/docs/implement/requirements.md deleted file mode 100644 index 9a1a0668..00000000 --- a/content/en/docs/implement/requirements.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: "Requirements" -description: "" -lead: "" -date: 2022-09-24T16:02:27.390Z -draft: true -images: [] -menu: - docs: - parent: "implement" -weight: 501 -toc: true ---- - -## Back End - -Your back end will need to generate a challenge, and a set of configuration parameters for WebAuthn. - -This challenge - -### Session Data - -### Persistent Data - -Each passkey will - -## Front End diff --git a/content/en/docs/intro/_index.md b/content/en/docs/intro/_index.md deleted file mode 100644 index d03035e3..00000000 --- a/content/en/docs/intro/_index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title : "Intro" -description: "Intro to passkeys" -lead: "" -date: 2022-09-24T15:57:34.857Z -draft: false -images: [] -weight: 100 ---- diff --git a/content/en/docs/intro/what-are-passkeys.md b/content/en/docs/intro/what-are-passkeys.md deleted file mode 100644 index 3b839280..00000000 --- a/content/en/docs/intro/what-are-passkeys.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: "What are passkeys?" -description: "Passkeys are a replacement for passwords. A password is something that can be remembered and typed, and a passkey is a secret stored on one’s devices, unlocked with biometrics." -lead: "Passkeys are a replacement for passwords. A password is something that can be remembered and typed, and a passkey is a secret stored on one’s devices, unlocked with biometrics." -date: 2022-09-24T16:02:27.390Z -draft: false -images: [] -menu: - docs: - parent: "intro" -weight: 102 -toc: true ---- - -Passkeys are: - -**Intuitive**
Creating and using passkeys is as simple as consenting to save and use them. No having to create a password. - -**Automatically unique per-service**
By design, passkeys are unique per-service. There’s no chance to reuse them. - -**Breach-resistant**
A passkey is only stored on a user’s devices. [Relying Party (RP)](/docs/reference/terms/#relying-party-rp) servers store public keys. Even servers that assist in the syncing of passkeys across a user’s devices never have the ability to view or use the private keys for a user's passkeys. - -**Phishing-resistant**
Rather than trust being rooted in a human who has to verify they’re signing into the right website or app, browser, and operating systems enforce that passkeys are only ever used for the appropriate service. - -


- -> The guidance on this site is currently targeted towards sites and services that are using either password only or password + OTP (SMS, app TOTP, app push, magic link) sign in flows. Future guidance will include more advanced and higher assurance scenarios. diff --git a/content/en/docs/reference/_index.md b/content/en/docs/reference/_index.md deleted file mode 100644 index d39b6c7c..00000000 --- a/content/en/docs/reference/_index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: "Reference" -description: "Help Doks." -lead: "" -date: 2020-10-06T08:49:15+00:00 -draft: false -images: [] -weight: 1000 ---- diff --git a/content/en/docs/reference/android.md b/content/en/docs/reference/android.md deleted file mode 100644 index aab2ecf9..00000000 --- a/content/en/docs/reference/android.md +++ /dev/null @@ -1,69 +0,0 @@ ---- -title: "Android" -description: "Resources for passkeys in Android" -date: 2022-09-03T16:09:38.358Z -draft: false -images: [] -menu: - docs: - parent: "reference" -weight: 1001 -toc: true ---- - -{{% ds-pa %}} - -## Overview - -The platform authenticator in Android 9+ has the following capabilities: - -- creating and using passkeys that are backed up to Google Password Manager -- using a passkey from the local Android device to sign into services on another device (such as a laptop or desktop), using FIDO [Cross-Device Authentication](../terms#cross-device-authentication-cda) - -Android 14 adds the following capabilities: - -- creating and using passkeys in a [third-party passkey provider](../terms/#third-party-passkey-provider) - -### Cross-Device Authentication - -Android devices can be an [authenticator](../terms/#cda-authenticator) for [FIDO Cross-Device Authentication (CDA)](../terms#cross-device-authentication-cda). - -Android devices can be persistently linked to the browsers/platforms below: - -- Chrome OS -- Windows 11 23H2 -- Chrome & Edge on Windows 11 <23H2 -- Chrome & Edge on Windows 10 -- Chrome on macOS -- Edge on macOS -- Chrome on Ubuntu -- Edge on Ubuntu - -macOS (Safari and native apps), iOS (global), and iPadOS (global) do not support persistent linking. - -When an authenticator is not persistently linked, a QR code must be scanned on every use. - -## Platform Notes - -- **Credential Manager** is a new Android Jetpack API that supports multiple sign-in methods, including passkeys, in a single API, thus simplifying the integration for developers.



- -## Resources - -### Docs - -- Adding passkeys support to native Android apps: [User authentication with passkeys](https://developer.android.com/design/ui/mobile/guides/patterns/passkeys) -- [Security of Passkeys in the Google Password Manager](https://security.googleblog.com/2022/10/SecurityofPasskeysintheGooglePasswordManager.html) - -### Videos - -- [Passkeys: a simpler and safer sign-in (Google I/O 2023)](https://www.youtube.com/watch?v=SF8ueIn2Nlc) -- [Reduce reliance on passwords in Android apps with passkey support (Google I/O 2023)](https://www.youtube.com/watch?v=36peNZUlgzU) -- [Learn how to implement passkeys with form autofill in a web app(Google I/O 2023)](https://www.youtube.com/watch?v=_qSCYiU_Yr4) - -### Sample Code - -- [Credential Manager Sample app](https://github.com/android/identity-samples/tree/main/CredentialManager) - -### Community Resources - -- [Sample native app with passkey support from Dashlane](https://github.com/Dashlane/android-passkey-example) diff --git a/content/en/docs/reference/chromeos.md b/content/en/docs/reference/chromeos.md deleted file mode 100644 index 8e59b8bc..00000000 --- a/content/en/docs/reference/chromeos.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: "Chrome OS" -description: "Resources for passkeys in Google's Chrome OS" -lead: "Resources for passkeys in Google's Chrome OS" -date: 2022-09-03T16:09:38.358Z -draft: false -images: [] -menu: - docs: - parent: "reference" -weight: 1002 -toc: true ---- - -{{% ds-cda %}} - -## Overview - -Creation of passkeys in Chrome OS is not currently supported. - -Passkeys from Android, iOS, and iPadOS can be used to sign in to web services on Chrome OS using [FIDO Cross-Device Authentication](../terms#cross-device-authentication-cda). - -## Platform Notes - -> Coming Soon - -## Resources - -> Coming Soon diff --git a/content/en/docs/reference/ios.md b/content/en/docs/reference/ios.md deleted file mode 100644 index 4e364d0f..00000000 --- a/content/en/docs/reference/ios.md +++ /dev/null @@ -1,50 +0,0 @@ ---- -title: "iOS & iPadOS" -description: "Resources for passkeys in Apple's iOS and iPadOS" -date: 2022-09-03T16:09:38.358Z -draft: false -images: [] -menu: - docs: - parent: "reference" -weight: 1003 -toc: true ---- - -{{% ds-full %}} - -## Overview - -The platform authenticators in iOS 16+ and iPadOS 16+ have the following capabilities: - -- creating and using passkeys that are backed up to iCloud Keychain -- creating and using passkeys on/from another device, such as: - - an iPhone or iPad signed in to a different iCloud account, using FIDO [Cross-Device Authentication](../terms#cross-device-authentication-cda) - - an Android phone or tablet, using FIDO [Cross-Device Authentication](../terms#cross-device-authentication-cda) - - a FIDO2 security key1 -- using a passkey from the local iOS or iPadOS device to sign into services on another device (such as a laptop or desktop), using FIDO [Cross-Device Authentication](../terms#cross-device-authentication-cda) - -

1 On iOS and iPadOS, user verification methods (device PIN, biometric, etc) must already be configured on the security key prior to credential creation

- -## Platform Notes - -### Cross-Device Authentication - -iOS and iPadOS support both [client](../terms/#cda-client) and [authenticator](../terms/#cda-client) roles for [Cross-Device Authentication (CDA)](../terms#cross-device-authentication-cda). - -iOS and iPadOS devices (as authenticators) do not support persistent linking for Cross-Device Authentication. When an authenticator is not persistently linked, a QR code must be scanned on every use. - -### Legacy Credentials - -WebAuthn credentials created using the platform authenticator in iOS/iPadOS 15 and earlier ***will not*** not be converted to passkeys but will remain available for the lifetime of the device. - - -To replace a legacy platform credential with a passkey, start a credential registration ceremony and pass **the same user handle** (user.id) in the request. iOS/iPadOS will overwrite the legacy credential with a new passkey that will be backed up to iCloud Keychain. - -## Resources - -- [Apple landing page for passkeys](https://developer.apple.com/passkeys/) -- [About the security of passkeys](https://support.apple.com/en-us/HT213305) -- [Supporting passkeys](https://developer.apple.com/documentation/authenticationservices/public-private_key_authentication/supporting_passkeys) -- [Supporting device-bound passkeys on security keys](https://developer.apple.com/documentation/authenticationservices/public-private_key_authentication/supporting_security_key_authentication_using_physical_keys) -- [Sample Code](https://developer.apple.com/documentation/authenticationservices/connecting_to_a_service_with_passkeys) diff --git a/content/en/docs/reference/macos.md b/content/en/docs/reference/macos.md deleted file mode 100644 index 2027b3f6..00000000 --- a/content/en/docs/reference/macos.md +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: "macOS" -description: "Resources for passkeys in Apple macOS" -date: 2022-09-03T16:09:38.358Z -draft: false -images: [] -menu: - docs: - parent: "reference" -weight: 1004 -toc: true ---- - -{{% ds-full %}} - -## Overview - -The platform authenticator in macOS Ventura (13) has the following capabilities: - -- creating and using passkeys that are backed up to iCloud Keychain -- creating and using passkeys on/from another device, such as: - - an iPhone or iPad signed in to a different iCloud account, using FIDO [Cross-Device Authentication](../terms#cross-device-authentication-cda) - - an Android device, using FIDO [Cross-Device Authentication](../terms#cross-device-authentication-cda) - - a FIDO2 security key1 - -

1 On macOS, user verification methods (device PIN, biometric, etc) must already be configured on the security key prior to credential creation

- -## Platform Notes - -### Cross-Device Authentication - -macOS does not currently support persistent linking of external authenticators for [Cross-Device Authentication](../terms#cross-device-authentication-cda) at the operating system level. - -Persistent linking is available between Android devices (authenticator) and Chrome and Edge (clients) on macOS. - -When an authenticator is not persistently linked, a QR code must be scanned on every use. - -### Legacy Credentials - -WebAuthn credentials created using the platform authenticator in macOS Monterey (12) and earlier ***will not*** be converted to passkeys but will remain available for the lifetime of the device. - - -To replace a legacy platform credential with a passkey, start a credential registration ceremony and pass **the same user handle** (user.id) in the request. macOS will overwrite the legacy credential with a new passkey that will be backed up to iCloud Keychain. - -### Browser Behavior - -**Edge**: credentials created by Edge are currently [***device-bound*** passkeys](/docs/reference/terms/#device-bound-passkey), are not backed up to iCloud Keychain, and are ***not available outside of Edge***. - -**Firefox**: passkeys are not currently supported in Firefox on macOS. [***Device-bound*** passkeys](/docs/reference/terms/#device-bound-passkey) on a FIDO2 security key are supported. - -## Resources - -- [Apple landing page for passkeys](https://developer.apple.com/passkeys/) -- [About the security of passkeys](https://support.apple.com/en-us/HT213305) -- [Supporting passkeys](https://developer.apple.com/documentation/authenticationservices/public-private_key_authentication/supporting_passkeys) -- [Supporting device-bound passkeys on security keys](https://developer.apple.com/documentation/authenticationservices/public-private_key_authentication/supporting_security_key_authentication_using_physical_keys) -- [Sample Code](https://developer.apple.com/documentation/authenticationservices/connecting_to_a_service_with_passkeys) diff --git a/content/en/docs/reference/specs.md b/content/en/docs/reference/specs.md deleted file mode 100644 index 42f72e6d..00000000 --- a/content/en/docs/reference/specs.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: "Specifications" -description: "List of specifications that enable passkeys" -lead: "" -date: 2022-08-04T17:33:14.682Z -draft: false -images: [] -menu: - docs: - parent: "reference" -weight: 1102 -toc: true ---- - -The two primary technical specifications that work together to enable passkeys are Web Authentication, commonly referred to as WebAuthn, and the Client to Authenticator Protocol (CTAP), commonly referred to as FIDO2. - -The two specs together are often referred to as one stack, ***FIDO2/WebAuthn***. - -## W3C Web Authentication (WebAuthn) - -WebAuthn is the primary specification used by developers. - -Platforms also create their own platform-specific abstractions of the WebAuthn API for use by native apps. - -**Current Version**: [WebAuthn Level 2](https://www.w3.org/TR/webauthn-2/) - -***Next Version***: [WebAuthn Level 3](https://w3c.github.io/webauthn/) - -## Client to Authenticator Protocol (CTAP) - -The FIDO *Client to Authenticator Protocol*, often referred to by its acronym CTAP, is responsible for communications with the authenticator over a number of transports including USB, NFC, and Bluetooth. Operating systems, and in some cases apps, utilize this protocol to pass requests from WebAuthn to the appropriate authenticator over its desired transport. - -CTAP is implemented by authenticator and device vendors and abstracts away all of the complexity of interacting with authenticators from relying parties and developers. - -***Current Version***: [CTAP 2.1](https://fidoalliance.org/specs/fido-v2.1-ps-20210615/fido-client-to-authenticator-protocol-v2.1-ps-errata-20220621.html) - -***Next Version***: [CTAP 2.2 (Review Draft 01)](https://fidoalliance.org/specs/fido-v2.2-rd-20230321/fido-client-to-authenticator-protocol-v2.2-rd-20230321.html) - -The next version of CTAP is currently under development at the FIDO Alliance. - -In the context of passkeys, CTAP 2.2 adds support for the hybrid transport, more commonly known as the FIDO Cross-Device Authentication flow, allowing a passkey to be used to sign in on another device (ex: passkey on Android signing into a service on Windows). diff --git a/content/en/docs/reference/terms/index.md b/content/en/docs/reference/terms/index.md deleted file mode 100644 index 411d444a..00000000 --- a/content/en/docs/reference/terms/index.md +++ /dev/null @@ -1,193 +0,0 @@ ---- -title: "Terms" -description: "A list of terms which are used frequently throughout this site and in discussions about passkeys, FIDO2, and WebAuthn." -lead: "Here's a list of terms which are used frequently throughout this site and in discussions about passkeys, FIDO2, and WebAuthn." -date: 2020-11-12T13:26:54+01:00 -draft: false -images: [] -menu: - docs: - parent: "reference" -weight: 1101 -toc: true ---- - -## 2FA user - -A user whose account has [2FA](#2-factor-authentication-2fa) turned on, i.e., who must present 2 authentication factors during sign-in. - -## 2-Factor Authentication (2FA) - -> _also sometimes referred to as MFA: multi-factor authentication or 2SV: two-step verification_ - -This refers to a contract between a user and a [Relying Party (RP)](#relying-party-rp) where the RP must collect at least two distinct authentication factors from the user during a [bootstrap](#account-bootstrapping) sign-in. - -## Account bootstrapping - -A [Relying Party (RP)](#relying-party-rp) authenticates a user without any prior knowledge of who the user is. This means that the RP not only has to verify the identity of the user (checking the password, verifying cryptographic signatures, etc), it also has to establish the identity of the user (figure out the user id, username, etc. of the user who’s signing in). This may happen when a user signs into an existing account for the first time on a newly-purchased device; or when a user logs into a website for the first time in a given browser instance. Or when a user logs into a website in a private browsing session. Or when a user signs into a mobile app for the first time on a given device (contrast this with [reauthentication](#reauthentication) below). - -> Note that this is different from creating an account with a service in the first place. - -## Attestation - -Attestation is an optional statement provided by an authenticator which can be used by a Relying Party to identify and verify the provenance of the authenticator. - - - -## Authentication factor - -Information provided by a user (or one of the user’s devices) for purposes of authentication, usually in response to a login challenge. Often categorized into "knowledge factors" (e.g. passwords), "something you have" factors (e.g. another already signed-in device), and "something you are" factors (e.g. biometrics). Note that a single login challenge may collect multiple factors simultaneously. - -## Autofill UI - -A privacy preserving list UI element that is rendered by the browser (or the OS platform in the case of native apps), in cooperation with the platform authenticator, on username and/or password fields that have the `webauthn` value included in the `autocomplete` attribute. - -This UI element provides a list of passkeys that are available for the [Relying Party (RP)](#relying-party-rp) on the local device, and may also provide an option to kick off [Cross-Device Authentication (CDA)](#cross-device-authentication-cda) or use a FIDO2 security key. - -A generic example of an autofill UI for passkeys is shown below: - -![Image](pkdd-signin-username-autofill.png "Sample sign in screen with the autofill UI rendered under the username field, showing a passkey for bob@example.com, an other accounts option and a passkey from another device option") - -The technical name for this feature in the WebAuthn and Credential Management specifications is "Conditional Mediation". - - - - - -## Cross-Device Authentication (CDA) - -FIDO Cross-Device Authentication (CDA) allows a passkey from one device to be used to sign in on another device. For example, your phone can be linked to your laptop, allowing you to use a passkey from your phone to sign into a service on your laptop. - -CDA is powered by the FIDO Client-to-Authenticator Protocol (CTAP) using "hybrid" transport. CTAP is implemented by authenticators and client platforms, not Relying Parties. - -### CDA Client - -The _client_ in a cross-device authentication flow is the device where the relying party is being actively accessed. - -### CDA Authenticator - -The _authenticator_ in a cross-device authentication flow is the device generating the FIDO assertion. - -## Conditional Mediation - -See [_Autofill UI_](#autofill-ui) - -## Conditional UI - -See [_Autofill UI_](#autofill-ui) - -## Device-bound passkey - -A FIDO2 [Discoverable Credential](#discoverable-credential) that is bound to a single authenticator. For example, FIDO2 security keys typically hold device-bound passkeys as the credential cannot leave the device. Device-bound passkeys have been previously referred to as _single-device passkeys_. - -## Discoverable Credential - -A Discoverable Credential (previously known as a "resident credential" or "resident key") is a FIDO2/WebAuthn credential that is entirely stored in the authenticator (private key, credential ID, user handle, and other metadata). The [Relying Party (RP)](#relying-party-rp) also stores a copy of the _public_ key and credential ID - -[Passkeys](#passkey) are Discoverable Credentials. - - - -## First-Party Passkey Provider - -A [Passkey Provider](#passkey-provider) that is provided by the OS platform vendor and is often enabled by default. Examples include "Windows Hello" on Windows, "Apple iCloud Keychain" on macOS and iOS, and "Google Password Manager" on most Android devices. - -## Login challenge - -A prompt served to the user that they need to satisfy. - -Examples: - -- a prompt asking the user for their password -- a prompt asking the user to confirm sign-in on another device (e.g., their phone) -- a prompt asking the user to insert and activate their security key - -Account bootstrapping and reauthentication usually consist of serving the user one or more login challenges. - -## Logging in - -see [_Signing in_.](#signing-in) - -## Passkey - -> Usage: "a passkey" or "passkeys" - -The high level, end-user centric term for a FIDO2/WebAuthn [Discoverable Credential](#discoverable-credential). Like "password", "passkey" is a common noun intended to be used in every day conversations and experiences. - -Passkeys are designed to be used without additional login challenges. All passkeys can be used with modern sign in experiences like the [Autofill UI](#autofill-ui) or with a "Sign in with a passkey" button. - -From the technical side, there are two flavors of passkeys: [synced](#synced-passkey) and [device-bound](#device-bound-passkey). - -## Passkey Provider - -An app and/or service that is responsible for storing and managing passkeys. Many operating systems include a default passkey provider ([first-party](#first-party-passkey-provider)), and many also support [third-party](#third-party-passkey-provider) providers. - -## Persistent Linking - -The informal name for creating a relationship between a [Cross-Device Authentication authenticator](#cda-authenticator) (typically a phone or tablet) and [Cross-Device Authentication client](#cda-client) (typically a laptop or desktop), which enables future use without having to scan a QR code. - -Both the client and authenticator must support the functionality. - -Example with an Android phone linked to a Windows 11 device: - -![Image captions](pkdd-terms-cda-pl-androidwin.png "A screenshot of the Windows Hello prompt asking the user to choose where to save their new passkey. The list of options includes an entry with a phone icon titled cappy-p7p as an example of a phone that has been persistently linked to the access device the user is current registering a new passkey from.") - -## Platform authenticator - -A FIDO authenticator that is built-in to a user's device. - - - -## Reauthentication - -Reauthentication happens when a [Relying Party (RP)](#relying-party-rp) already knows who the user is, but would like to reconfirm this. - -For example, this can happen before making sensitive changes to an account (adding a recovery email address, changing authentication methods, etc.): a relying party would typically ask the user to re-enter their password or perform some other action to reconfirm their control of the session. Likewise, when a mobile app asks the user to sign in every time the app starts (or a web site asks the user to sign in again after a period of inactivity), this is technically a reauthentication, since the app or web site can choose to remember the user's identity after the account has been bootstrapped on the device (using things like cookies or local storage). - -## Relying Party (RP) - -The website that is trying to ascertain and verify the identity of the user or perform FIDO authentication. - - - -## Roaming authenticator - -A FIDO authenticator usable with any device the user is trying to sign-in from. Roaming authenticators attach to users' devices in using USB, NFC, and/or Bluetooth. These authenticators are often referred to as "security keys". A smartphone can also act as a roaming authenticator using [FIDO Cross-Device Authentication](#cross-device-authentication-cda). - - - -## Signing in - -This can refer to either account [bootstrapping](#account-bootstrapping) or [reauthentication](#reauthentication). - -## Single-device passkey - -see [_Device-bound passkey_.](#device-bound-passkey) - -## Synced passkey - -A FIDO2 [Discoverable Credential](#discoverable-credential) that can reliably be used for bootstrapping sign-in, without requiring other login challenges such as passwords and OTPs. "Reliable" here means that the passkey should be available to, and usable by, the user whenever they need to sign in. This availability can be achieved through different means: for example, passkey providers could sync passkeys in real-time across a user's devices, restore passkeys from a backup whenever a user sets up a new device, offer passkeys across different contexts (a passkey established from an app can be used in the browser when visiting the app’s website), or allow users to [exercise passkeys across devices](#cross-device-authentication-cda) (by, say, using the passkey from a nearby phone when signing in from a laptop). - -## Third-Party Passkey Provider - -A [Passkey Provider](#passkey-provider) that plugs in to the OS via platform APIs to store and manage a user's passkeys via the platform authenticator. - -> NOTE: Some passkey providers support passkeys via a browser extension that intercepts WebAuthn requests. Providers that bypass browser and/or platform interfaces and features in this manner typically offer a way for the intercepted request to be passed back to the browser and/or platform to handle as usual. - -## User Presence (UP) - -A test of User Presence (UP) is used to ensure the user is in local proximity to the authenticator during an authentication or credential creation ceremony. UP is often satisfied by pressing a button or metallic area of a security key, or interacting with a platform authenticator on a device. - - - -## User Verification (UV) - -User Verification (UV) requires the user to either perform a biometric gesture, enter the device PIN, or enter the device password for the authenticator to authorize creation and/or use of the credential. - - - -## User-Verifying Roaming Authenticator - -A User-Verifying Roaming Authentication (UVRA), also known as a first-factor roaming authenticator, can [verify individual](#user-verification-uv) users through the use of biometrics, or through the user entering a device PIN. An important class of UVRAs are smartphones, in which case the “attachment” typically happens over a wireless connection. - - diff --git a/content/en/docs/reference/terms/pkdd-signin-username-autofill.png b/content/en/docs/reference/terms/pkdd-signin-username-autofill.png deleted file mode 100644 index e405a5f68351239f86a7b076c0eec071ca27f689..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13609 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 Iiy8&~FVGHGB>(^b diff --git a/content/en/docs/reference/terms/pkdd-terms-cda-pl-androidwin.png b/content/en/docs/reference/terms/pkdd-terms-cda-pl-androidwin.png deleted file mode 100644 index 6905835427b1c579a159fbb0630e062637ac023f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27054 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 Coming Soon diff --git a/content/en/docs/tools-libraries/_index.md b/content/en/docs/tools-libraries/_index.md deleted file mode 100644 index a85b6647..00000000 --- a/content/en/docs/tools-libraries/_index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title : "Tools & Libraries" -description: "Tools and libraries for FIDO2, WebAuthn, and passkeys" -lead: "Tools and libraries for FIDO2, WebAuthn, and passkeys" -date: 2022-09-24T15:57:34.857Z -draft: false -images: [] -weight: 700 ---- diff --git a/content/en/docs/tools-libraries/libraries.md b/content/en/docs/tools-libraries/libraries.md deleted file mode 100644 index 39753afb..00000000 --- a/content/en/docs/tools-libraries/libraries.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -title: "Libraries" -description: "A list of libraries for passkeys and FIDO2/WebAuthn" -lead: "" -date: 2022-09-24T16:02:27.390Z -draft: false -images: [] -menu: - docs: - parent: "tools-libraries" -weight: 701 -toc: true ---- - -## Updated for passkeys - -### Rust - -- [webauthn_rs: WebAuthn for Rust Server Applications](https://docs.rs/webauthn-rs/latest/webauthn_rs/) (William Brown) - -### TypeScript - -- [SimpleWebAuthn](https://simplewebauthn.dev/) (Matthew Miller) - -### Java - -- [java-webauthn-server](https://github.com/Yubico/java-webauthn-server) ([Yubico](https://developers.yubico.com/java-webauthn-server/)) - -## Other FIDO2/WebAuthn libraries - -The ["Awesome WebAuthn"](https://github.com/herrjemand/awesome-webauthn) GitHub repo is also regularly updated with libraries from the community. - -### .NET - -- [FIDO2 .NET Library](https://fido2-net-lib.passwordless.dev/) (Anders Åberg, Alex Seigler) - -### Go - -- [Go WebAuthn Library](https://github.com/go-webauthn/webauthn) (Fork of Duo Labs library) - -### Java - -- [WebAuthn4J](https://github.com/webauthn4j/webauthn4j) (Yoshikazu Nojima) - -### Python - -- [py_webauthn](https://github.com/duo-labs/py_webauthn) (Duo Labs) - -### Ruby - -- [webauthn-ruby](https://github.com/cedarcode/webauthn-ruby) (Cedarcode) -- [devise-passkeys](https://github.com/ruby-passkeys/devise-passkeys) (Ruby Passkeys, wrapper around `webauthn-ruby`) -- [warden-webauthn](https://github.com/ruby-passkeys/warden-webauthn) (Ruby Passkeys, wrapper around `webauthn-ruby`) diff --git a/content/en/docs/tools-libraries/test-sites.md b/content/en/docs/tools-libraries/test-sites.md deleted file mode 100644 index ddd4634c..00000000 --- a/content/en/docs/tools-libraries/test-sites.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: "Test Sites & Tools" -description: "" -lead: "" -date: 2022-09-24T16:02:27.390Z -draft: false -images: [] -menu: - docs: - parent: "tools-libraries" -weight: 702 -toc: true ---- - -## FIDO2/WebAuthn Tools - -### Basic - -- [WebAuthn.io](https://webauthn.io) -- [Yubico Demo Site](https://demo.yubico.com/webauthn-technical/) -- [WebAuthn.me](https://webauthn.me/) - -### Advanced - -- [aka.ms/webauthntest](https://aka.ms/webauthntest) -- [lbuchs/WebAuthn](https://webauthn.lubu.ch/_test/client.html) -- [WebAuthn Response Debugger](https://debugger.simplewebauthn.dev/) - -The ["Awesome WebAuthn"](https://github.com/herrjemand/awesome-webauthn) GitHub repo is also regularly updated with tools and demos from the community. diff --git a/content/en/docs/use-cases/_index.md b/content/en/docs/use-cases/_index.md deleted file mode 100644 index dab2e332..00000000 --- a/content/en/docs/use-cases/_index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title : "Use Cases" -description: "Implement passkeys" -lead: "" -date: 2022-09-28T18:53:38.996Z -draft: false -images: [] -weight: 300 ---- diff --git a/content/en/docs/use-cases/bootstrapping/index.md b/content/en/docs/use-cases/bootstrapping/index.md deleted file mode 100644 index 0b051d15..00000000 --- a/content/en/docs/use-cases/bootstrapping/index.md +++ /dev/null @@ -1,206 +0,0 @@ ---- -title : "Bootstrapping" -description: "Bootstrapping an account on the web" -lead: "Bootstrapping an account on the web" -date: 2022-10-10T19:52:26.819Z -draft: false -images: ['pkdd-signin-username-next.png'] -weight: 310 ---- - -## Authenticating the user - -This section applies when the [Relying Party (RP)](/docs/reference/terms/#relying-party-rp) does not yet know who is controlling the client device. There is no browser artifact (such as a cookie or a credential ID in local storage) available to the RP, although for now we assume that the user has an existing account with the RP. - -To bootstrap an account, serve the user a sign-in page. - -Start off by asking the user for their account identifier, typically a username or email address: - -![Image](pkdd-signin-username-next.png "Sample sign in screen with a username field and next button") - -To support the [autofill UI](/docs/reference/terms/#autofill-ui) for passkeys, make sure to: - -1. Add the `username` and `webauthn` value to any existing autocomplete annotations on the username input field as shown below in the example. - - ```html -
- - -
- ``` - -2. On page load, check to see if autofill UI (conditional mediation) is available using an if statement, then call `navigator.credentials.get()` with `mediation: "conditional"` and `userVerification: "preferred"`. - -```html - -``` - -This will cause the following to happen: - -- Retrieve the authentication options from your server. Return at least a random `challenge` and `rpId` to be associated with this authentication request. - -- When the user interacts with the username field, the browser and platform will check whether a passkey exists in the platform authenticator that can be used with the relying party.

If this is the case, the passkey will be presented to the user as an option to choose (along with other credentials that can be auto-filled, such as usernames stored in the browser’s password manager). The browser/platform might render a UI similar to the one shown below, although the exact look and feel will vary from platform to platform (Windows vs. Android vs. iOS), and from form factor to form factor (desktop vs. mobile): - -![Image](pkdd-signin-username-autofill.png "Sample sign in screen with the autofill UI rendered under the username field, showing a passkey for bob@example.com, an other accounts option and a passkey from another device option") - -- If the user selects the passkey, the platform UI will guide the user through a (often biometrics-based) user verification check. - -- If the user successfully passes the user verification, the `navigator.credentials.get()` succeeds and returns a WebAuthn response. - -- If the user selects a credential other than a passkey, the browser/platform chooses a different appropriate action (such as auto-filling the username), and the `navigator.credentials.get()` call does not resolve. - -- If the user selects the "Passkey from another device" option (NOTE: the exact text will vary slightly by platform), then the browser/platform will guide the user through using a FIDO2 security key or the Cross-Device Authentication (CDA) flow to use a passkey from their smartphone or tablet to deliver a WebAuthn response to the `navigator.credentials.get()` call. - -- Send the WebAuthn response to your server for verification and additional security checks. If all checks succeed then start an authenticated session for this user. - -This is why this is called the Conditional UI (or more commonly, the autofill UI) mode of WebAuthn — the platform authenticator UI that guides the user through the verification, or through using their phone, is only shown if the user has a passkey on this device (or chooses the "another device" option). - -As we can see, in this mode the `navigator.credentials.get()` call either succeeds, or it doesn’t (never resolves). If it does succeed, then the result of the call will reveal both a user id, as well as a signed WebAuthn assertion, which the relying party will use to authenticate the user. - -If the call doesn’t succeed, perform a "legacy" user authentication: you’ll get a username from this first page, and you then serve appropriate further login challenges (such as passwords, responding to SMS challenges, etc.) to the user in subsequent pages. These may include "account recovery" steps in case the user has forgotten their password or is otherwise not able to pass the regular login challenges. Once the user has passed all the login challenges, they’re considered authenticated and signed in. - -What happens when the user doesn’t already have an account with the relying party? Usually, you will give users the option on the sign-in page to create an account. If the user chooses that option, collect the necessary information from the user to open a new account. If the user successfully opens a new account, they’re also considered authenticated and signed-in. - -Once the user is signed in, it might be time to set up a new passkey for them. Do this for any of the following cases: - -- The user bootstrapped their account on the device by passing non-passkey login challenges (such as using a password). -- The user just created a new account at the relying party, and is considered signed-in because of that. -- The user was using a passkey, but they used a different device than the one they’re currently on (by selecting the "other device" shown in the example above). This can be checked by inspecting the [`authenticatorAttachment`](/) attribute in the returned PublicKeyCredential object. - -### Cross-Device Authentication - -If the user used a passkey from another device (such as a phone, tablet, or FIDO2 security key), the `authenticatorAttachment` property in the authentication response (getAssertion) will have the value `cross-platform`. - -In such a scenario, offer the user the choice to create a passkey on their local device. This will result in a more seamless user experience in the future, as the user will not be required to use their other device. - -![Image](pkdd-interstitial-cdalocal.png "A sample interstitial with the title: Set up a passkey on this device, with the passkey icon to the left. Below is text that reads: Next time you sign in, would you like to use this device instead of your phone? Under that is a button that says yes and a link that says not now.") - -### A note about user verification - -This guidance sets `userVerification` to `preferred`, meaning that user verification will be attempted when possible. - -Some devices, such as desktops and older laptops, may not have biometric sensors. On these devices, the user may be asked to enter their system login password for each sign in using a passkey if `userVerification` is set to `required`. This can be a very frustrating user experience to repeat over and over. - -When `preferred` is used, some platform authenticators will always require a user verification check when the device has biometric sensors, but may skip user verification on devices without them. - -The user verification result (conveyed in [authenticator data flags](https://www.w3.org/TR/2021/REC-webauthn-2-20210408/#flags)) will reflect the actual user verification result and should always be validated against your requirements on the server. - -## Opting the user into passkeys - -First, verify that the user is sufficiently strongly authenticated using other login methods, including multi-factor authentication. - -Second, ensure that the user's device and OS combo supports passkeys by calling: - -```js -PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable() -``` - -If passkeys are supported, this will return `true`. If they aren't supported, this will return `false` and you should abort the passkey enrollment flow. - -Serve an opt-in or "upsell" modal/interstitial or page to the user offering them to create a passkey: - -![Image](pkdd-interstitial-upgradeaccount.png "A sample interstitial with the title: Faster, safer sign-in with passkeys, with the passkey icon to the left. Below is text that reads: You can now sign into this site using your face, fingerprint, or device PIN! Under that is a button that says create a passkey and a link that says not now.") - -> Consider showing (or linking to) longer descriptions explaining that all users that are able to unlock the current device will be able to access the account at the relying party to ensure that the user is giving fully informed consent. - -If the user consents, call `navigator.credentials.create()` with the options as shown in the example below: - -```js -navigator.credentials.create({ - publicKey: { - rp: { - // user friendly name of your service - name: "Passkeys Developer", - // Relying Party (RP) identifier (hostname/FQDN) - id: "passkeys.dev" - }, - - user: { - // persistent, unique identifier for the user account in your backend - id: Uint8Array.from("0525bc79-5a63-4e47-b7d1-597e25f5caba", c => c.charCodeAt(0)), - // user friendly identifier often displayed to the user (e.g. email address) - name: "julia@passkeys.dev", - // human readable display name, sometimes displayed by the client - displayName: "Julia Coleman" - }, - // the challenge is a buffer of cryptographically random bytes generated on your backend - // and should be tightly bound to the current user session - challenge: Uint8Array.from("XZJscsUqtBH7ZB90t2g0EbZTZYlbSRK6lq7zlN2lJKuoYMnp7Qo2OLzD7xawL3s", c => c.charCodeAt(0)), - pubKeyCredParams: [ - // an array of objects describing what public key types are acceptable to a server. - { - "type": "public-key", - "alg": -7 // EC P256 - }, - { - "type": "public-key", - "alg": -257 // RSA - } - ], - excludeCredentials: [ - // array of credential IDs for existing passkeys tied to the user account. - // this avoids creating a new passkey in an authenticator that already has - // a passkey tied to the user account - { - // example only - type: "public-key", - id: new Uint8Array([21, 31, 56, ...]).buffer - }, - { - // example only - type: "public-key", - id: new Uint8Array([21, 31, 56, ...]).buffer - } - ], - authenticatorSelection: { - // tells the authenticator to create a passkey - residentKey: "required", - // tells the client / authenticator to request user verification where possible - // e.g. biometric or device PIN - userVerification: "preferred" - }, - "extensions": { - // returns back details about the passkey - "credProps": true - } - } -}) -``` - -> A note on attestation: We recommend that most relying parties not specify the attestation conveyance parameter `attestation` (thus defaulting to none), or instead explicitly use the value `indirect`. This guarantees the most streamlined user experience (platforms are likely to obtain consent from the user for other types of attestation conveyances, which likely results in a larger fraction of unsuccessful credential creations due to users canceling the creation). - -When the WebAuthn call resolves, send the response to your server and associate the returned public key and credential ID with the previously authenticated user account. diff --git a/content/en/docs/use-cases/bootstrapping/pkdd-interstitial-cdalocal.png b/content/en/docs/use-cases/bootstrapping/pkdd-interstitial-cdalocal.png deleted file mode 100644 index a8b0c05f3bfd6ab12d27284896b5bb21bba05be0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13788 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 Iiy8&~FVGHGB>(^b diff --git a/content/en/docs/use-cases/bootstrapping/pkdd-signin-username-next.png b/content/en/docs/use-cases/bootstrapping/pkdd-signin-username-next.png deleted file mode 100644 index 826036b807836c1b818d69ed98afb4f89123bbe8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7159 zcmd58?W(m`_o}sn)KwM9Ntj6h0OZe=o@oGpbMV(B z!n=x`5ee2@E%=sCRh|M+9zl9$LI42C^AB=z>W&(UvK-Il<-~*@i;3|I3kU(A6qKUr zsuPW6kV0e4DYazBcgo{zJ_1gzBBCxT-At;lz~nO(jZC|LAc+9QBuXiP z^Xa#1ET0Ak>V>>9c(lzvl~?8Ej@jBe9XoAUNnSbYhao9_scCqlmNTuuV-0@^@p1MD zHKn$0xGyff(kwm))iR>hlAs-c9Xyzuw^Nz)8BQq#-~#A~05?tN+@)WgI&;B^-r=(-NdG%MbbfNucUz&vF+!FO`7dGK6{0E`zzPcee=%o_znAPfg2 z+*ahqm8l1B-+a`#huho=(u-s`1@N0oaC~)t3M=CJ!U=#&xK1Rc%v<1_AbYPDa6G~V za%{AHcpS=j>GublW($m={xwQCpcxU<7x!{dgsvuLfZ26#XLkPPe5*~ltO?^CDhuL8 z&g8fxE?T7(Jmr2e0GN+aEfs@`g$?xz60zNWfF>;v;5BOP3&AsG{RR9__9KF*cGmePJf^C@H?pa z2jvF$=!184f@;(`RXSm{8d1+~cE`-qtoaDx( z6gq=0K*oEYKa`m?3Q$=-5Qbp^h;BNLkm17teR0_f05q&#H^~3SsN6vWz_av^cgvm< zlC{tkHB%(Fur@R^;+kB0CPT*EEI}oEZPE7zNyhcqr%bP##mDih%J7)esT1d@DqDme zk+00s7<}A-GG2RoJ+<|E!xv)wr(Hy}CO5?csZGPjIs1ti6TnC*_neo(j8Gw z4=4?NV>7K$%$01CzCSbbP%l@Voq$(xxS20Xh{7WDw~0Y$fc)Da9cJE62D2p{QLPA3 zGgh64F7zzTsU{dAZrl)G+D#&(&s428pCTg_b(D4F@_9D7DrxG7w2A#b3$@aVED$_BWarqUO>|_&I69 zvI*(mU-cEF4ikM36i?H8Zkz6+E~pt$K>NTsk*6<-K@O44pEWX&_`&i6_PyYmQyuZN zADevKK-{49D&gA7n%{vd8Tl7-zfL97+f3F>9!z=HtC<87lyeD&;u5-E-yaiZNwAEk zjEB6@xqEcilRm14CPq9)E50gwxUYk{SFooS@=nyvF)sY=_(8Ale zXC1F%s{iA7Q`v>!l*L8RLs?VK@w-KlMU+L#vV9*8MMwGU&g0+7FZyrxllOb@6O*$jjrH0Hl zU~9yOJ%n_#&ygn2F3pH{sSVhNG2PhM`k;{k!Gvb@gHhXJD=zBsS)q% zqT1ePp`K^ms^Q%Zuv`#zW0bNeg4{4IdN5-?Wi4T1`ayUyyDhtYvGGpdH|s=;I#lJ5 zQ*UqAy{V${qVCP`$0NzssV0rT8z#@f{Bz`!+h2r;g>=SF#CjqKVpU?XMe$lvS}?6c zt+Ar#qXrxIHf%?=ZPZz`lgN_9lMp}ii<64mT#{_jbn|o(cLwhqYT8W*ZJuqCY$k4A z+j@Lta>R3FdxT`|y+Ok|`o!spr-PGouZs<|VIzC)!LNe0f?sRemMoSTjw$=1jJYo( z5j1fwag3U_dBJ&hY3_)aCFbqA!K$Idtfcy+sp8+Z!_&Qz?OuhaDgsF?-G;v;F;5S6 zusZYhy$dOMNqMdNkt>2mE=IaWr*Jm4ie%o@(fhVtlWqF5aD>NOaVbgjlm0b4sSYXJ zH21WC#@t3uv}7Zf_o#P*H{n_8>5~)0dBmTlIoKYoEDrV9Qa4(j}>^$#vNsq9M(Udo0IhB2$+45>fO$L@D%oEGPGSd6n5lsl&e@ ziO^KuklbVCwcejZfwPJ>fi>(Om=YL|z3A@T75*-;{;E>b$=(TjZ?tGp_tX*|z8g^x zTKiZgN?Ws#MQhK<=~QjKrT_nMDx0e|Fo<7k{{xrw)e7Td<#B!dj(%eAkf^=x#e2>ILoH~-^r z$={N*G{`^1R`QMAufAQaX2Hi7O}+?Qw(Vhw4(P!yaveMFPtx1?E2FY1HA>Ve7?cI` z`P}rc>$}w`!IkueMbH)(>&INApBOyhk!9*NWfkK!Zo0d(oK5oe3|t|ajIIJgh8lJ6 z+&=6KdLiB;e#D-u&+BNs*|UO8?S*Uj4d&#?@qN;M5L5828(~*+pjT@~ZxZwF4aO>N zL|@D2E@O;w5ws}3BzvB z9r9w9-LNGVW7`)qP8sf2hv9vdeLa16q9&qS`n^AkCigPLvX0zSd<+p<=f#E9jlX#( zMw_NxJ@zU5Sm~e4V7_fORPniKTf^nO4($fFKTSt4o3hk3EqhPbD7vb(r$%_>cn}`R zV>YauAU0E_O-(Z=+3zovfm zp%Z+n4~aIEV0?q(P0mI9S+?nt8F0*MXjTfV5vyWj^`$pPXu-_6Q#3+5H9h6Fznl;VVP9r5rLbNePV!X0 zES4;hRP=_P&ncDaLpIE@h%If25~l-|jVCC~kk5%#^N8cvpD_W$G#DJyvB^?x$2)za zhNtfEkIT^(qbtd_@|2-_gj?xZd;B2w7dS;(2;d+++A=kk8!(IR`iwJu>Bj)g1e^ZC=4NS(9s9n#|v zWK#*OVBY~#SWqh7$<@i;&<~T`%{?pbpY+1iVCvAFaQ1}TXEGP+`=}GM&b$FNtkjC< z#hD=X^ZqHn;v?jh$>cCo(og}wofiP#&j6fUg?v{5aJ~<~`da|R;{jlVCfB`^xN@h= z>dLR>uMS*ZUhePj1HI(6t^I?e<95_saz%el*Cc9kWqNVTI;zeqr8z9W^Lyj4tZSi; z|Bo%q?#}KW?}uyx!&E|}R8o_4W~&?)>s&V5JYI+I>Y=r7BI+y>TP%}WAn9$%4Z|5t zqnXX4*)3zatz*}WQprryIidO7_62I8HPDQE7Pn z?(XjP_V(7+*5>Bs+S(c#jh>mAnVz1WoSdAPm>3@)9~&DR85tQI97Lf|{r&yDy}bwo zqNk_l*RNl#t*tFBElo{Ljg5`<_4PG1HPzMC6%`eEd3hNb8R_Zisi~-X(Cw7a)cz={f>H zO8eKu0g1`i0iX%x8$wqJ_w65ZpW@=$3h%8+bxxJe*b#|VuQhWbd@Fe8fuaU zG{(WJvOE`XdQvNaaIKzBoYJAdq} zz*lQhLs?m414Wwz%L-gawb8UyQop&f#?~X69*A=UwG#>|YO6I2dFa_Eb3 zNnT|X5AcZc(#60Fu`@%3VqZARgH{>sm87;J=d@R$ zN&IqC+n!vXRrP93`sv!7>cZ~OEyhK#}NZ~OXc-uLfy9m1;dhrUW7-m}F zuho5U(@?>Dd+uC8_^i4X`<@(-xcyw%Xghx`#ONh{X6cx7?ntfU6k2RZCd?qoUQ$r$ zuqw4Rn-^Vf=1u_yG*%dW=MZHo6@|2XWX4f1o#5D$$KW=rH{I>*LBJeiYH9UYqSm-AW@8}3-*aVWbzYq9*xq(f-$)3aXIAy*vG@0o!~t`5JU*{|x9u+&8` zeejl&9a+sm>xc^3f><3$Z%4zS2NJDod$OU92cNcQ1xG>~IOzRuIiL+mO51BLZatxn zGbsI8|KKS0qqXJGv^T~xy&UdPhOQeU^g4E0Bq+EZ+8FCyHI3Yb#CcexQC<=wm$dEA zZN?BTb9?R9b5lcp5vGd-LGhlcjVEcAXqI`Osf9|3G+c0_A!2zu+RkxgqDiE1F8Wi8 zkEo(iWDqJuWW(5o&6A+QqvW)9zX%VsR1kiO>F7?-lXkMR_2*-8!silHYTvo+>9Jh$ zn_SaB7I6HG$^0$pggoj_U?w!)te?R3{b*dn1bce7!_|L2ttSOOT|aK_?$&3wF(7Gp zbRdVm!vN$eS*{K+uw4eH#Z3IBH7p78XW4Z0uN*mC23H&e$N0@StUQ%++&eLFQ>re1 z!}KjjBxOEp2VLQ!C5UVvUE7+58ml>{eV5zP(e+TRzyZ*@lxFsNePqsp1;6`g?NE@H zxI{9NtY{$GLn$alr^XY}n%An^>GaGzi4nNCRK~q~+=O||1!WG_0NbHki ztDY0jYarS2A$uvVe>c9~#E6;2(eUHwT|xGX+R>$@&49RHT?xmNbF5EJDmvqJy_mk+ z=OI!yI*%^aQ~PczF^Xl4NnzZvFV?!0Uot3i7&3)48c4Z3g=1UK8cdQS{)1hvvZR@!+W{HR~I?#u%GH6Q^zw|%|ki={J>mUjtJdWQ#%NeV(KAe zbT>K_C&1hyNz31G5|CPmNL9m?dFkWEkhZHxi7uR4lGHRsjAx;V*ryAQ*ZJ~Aa>w3INg-sx z`L60Bx6$9y*}o%9|E_lbALLw2(0|iX>Vs;8i8w+vRoS=J{;9{;)D~6iqF&;LZP9}o z7b)W5%ld1x7P%)oDwJqb9JDyZjmRYg__hae5B!1A%Xs6U`&B*irF9f*3!yT1|)Q#bA?7HzJ=N%q1k2XRc zSAg%>kmhx*6>M2K{ypuvkyu|-@`PyXC~DnMqc1}r97U<`;eqvdeBW6+k5&dyM5u&w zy9BRU^AQX*(}MA9Y`8My+uc=Nf%l{uO8fGVUa$3Vd_|y;YK#i53|s`M31lLPeC~2b zxrj%<0A&%Q6D_!%W1L(+=p_L(FH)u7tD(a4oh&ZUOG(oU$erpXYdmRlBo9w%SuM7_ zb7K=vhT5N4Q2RFS`-@uiyg!*$vAa+cm5|zHRTm&rK=;>bPpYLykCQ^^UhPyg&lp@f z2HdeJ0Z@0OP?z32aP5*s8?S+S=59@Ke*&}E>|#0dBY*FZCv$>5wfW=+#vx?Qi$Y$v zR;Ev2^vCF&a=cju7fXV8#WIS`lZyc9A};B))#I<$2pCUOIHe{v%k{VX!XO$I2eD{4 zo&@TAxH95iEJVnG5O$s+Qc{p888_1nBPDHKHo%aRl`$~+qOukTEm(n7k}H_~Ko6`a zwZUwN2A)jC#Hq4P?Jz!bl3J$NfX`Ldl_54-D`_vL4VktwN`Y(-mBHitf7k0UdDait zuRYgpl0)7hIurK1v8i>tM@EzpXV(pgx<-W2R ziq+HH>dj)~j|&OCmC1iTmH&=Hbm<&0%m`K8b--|xH4vDgk^)caJeUmD+k+Ydrsy>{ zGF^BABoRsXkA9bp+<|OUp2*Cu9J*LdSdZR=Tw(LTr0g#51Q(1@TigA+yJ zkl!=DnUp!yoeDpGK1^SggVA&<^crtIQTSh8d748IYT2s4rg?tp{+$pz|KZ@YOi@~t z8X?1Zr|uQ)NcSq!-4VBIG|y3CFSzfDEU?M>1lzsl8=CSu(iEe{|48_5`T=@ zRQ&t?KjxPYZXj{wAKLK^C6hpoWAFifJ}9t&$Bu{T38)6!O&H~F;sNGy%1<2Q1in9v zOTy39y=72gFJY%C`Xw86C0DNv@9V;iVd`Kz1GkB5m9sad;>ge1ypcTfxvR^fyq~h{$dA_HJWrq-cRG7O<{2~KdZ0k`MtgW(}gzo z;=?~ECM^9u(`rrm4_e=Nk8Ga^wn0nsD+Rr!_8Zo%h}&egE>fEtSz;CcrR43sD5wz-7u_%QHVcm?AC>qyM!tF)RK#06(p-= z<&F;IZ;K{c1aOP-G<1iKtsJ`yr&45pv>9EDKVhR@3Wr%mlYDt}3c YhaT188#O>*HR|BGyy~+O*|(qm2X%7mm;e9( diff --git a/content/en/docs/use-cases/reauth/index.md b/content/en/docs/use-cases/reauth/index.md deleted file mode 100644 index 3a6ed8d7..00000000 --- a/content/en/docs/use-cases/reauth/index.md +++ /dev/null @@ -1,83 +0,0 @@ ---- -title : "Reauthentication" -description: "Performing a reauthentication with passkeys" -lead: "Performing a reauthentication with passkeys" -date: 2022-10-10T19:52:16.153Z -draft: false -images: [] -weight: 320 ---- - -Reauthentication might happen for the following reasons: - -- The user signed out and now wants to sign in again -- The user session expired due to inactivity, and the user wants to sign in again -- The user is about to perform a sensitive action, and needs to re-confirm control over the user session - -You’ll use passkeys that you set up in the [previous section](../bootstrapping) to reauthenticate the user in each of these situations. The WebAuthn API call is the same in all three cases, but the UI treatment that you provide is slightly different. Since the particular account is specified by you, the platform will not offer the user to select a different account on your service. - -## Sensitive Actions - -Let’s look at the UI for the last case first: when it’s time to re-authenticate for a sensitive action, check whether you have a credential ID for at least one passkey for the user. - -If _no such credential ID is available_, serve a traditional login challenge suitable for reauthentication, for example: - -![Image](pkdd-reauth-password.png "Sample reauthentication screen with a title of: Let's make sure it's you, then showing Account: bob@example.com with a password caption and password field below, and a try another way link and next button at the bottom") - -> We recommend that on this login challenge page, users can’t change their account identifier. Also, the login challenge should be something that an unauthorized user of the device can’t pass. - -If, however, you do find at least one passkey credential ID for the user, then you can use passkeys for reauthentication: - -![Image](pkdd-reauth-passkey.png "Sample reauthentication screen with a title of: Let's make sure it's you, then showing Account: bob@example.com, with text below reading: You'll use your passkey to verify it's you, and a try another way link and a Go button with the passkey icon at the bottom") - -When the user is ready (in the above example, when they click on the "Go" button), call `navigator.credentials.get()`, passing in all the user’s passkey credential IDs: - -```js -navigator.credentials.get({ - publicKey: { - challenge: ..., - rpId: ..., - allowCredentials: [{ - type: "public-key", - id: new UInt8Array([21, 31, 56, ...]).buffer, - }, { - type: "public-key", - id: new UInt8Array([21, 31, 56, ...]).buffer, - }, { - ... - }], - // see note below - userVerification: "preferred", - } -}); -``` - -> NOTE: Be sure to read the guidance around userVerification from the [previous page](../bootstrapping#a-note-about-user-verification) - -If the user instead clicks on "Try another way", you should offer them other sign in methods (password, etc.) to reauthenticate them (assuming the user has such other sign in methods available to them). - -## Expired Sessions and Logout - -Now let’s look at the case where the reauthentication is triggered because the user logged themselves out, or the relying party expired the user's session. To facilitate this, the relying party would have to keep some form of user session state reminding them of the account that used to be signed in, even when they consider the user signed-out (this could be achieved using browser artifacts such as cookies or local storage). - -> Note that a relying party may choose to treat signing-out as a comprehensive action and thus delete all references to the user’s identity. Such a relying party ought to treat a subsequent sign-in like an account bootstrap, and repeat the steps explained above. - -You, as the relying party, might then serve a sign-in page like this: - -![Image](pkdd-reauth-logout-passkey.png "Sample reauthentication screen with a title of: Welcome back!, then showing a button with the passkey icon and text reading sign in as bob@example.com, with a link below saying Use a different account") - -If the user clicks on "Use a different account", then you should enter an account bootstrap flow as explained on the previous page, repeating the steps in [Bootstrapping an account](../bootstrapping), where the platform will let them select which account they want to use. - -> In this case, you should also give the user the ability to completely remove the suggested account from being listed on the sign-in page. - -But if the user clicks the "Sign in as" button, check whether you have at least one passkey credential ID associated with the user. If no credential ID is available, serve a traditional login challenge suitable for reauthentication, for example: - -![Image](pkdd-reauth-logout-password.png "Sample reauthentication screen with a title of: Welcome back!, then showing a button with the passkey icon and text reading sign in as bob@example.com, with a link below saying Use a different account") - -If, however, you _do_ find at least one passkey credential ID for the user, then you can use passkeys for reauthentication: - -![Image](pkdd-reauth-logout-passkey-knowncid.png "Sample reauthentication screen with a title of: Welcome back!, then showing a button with the passkey icon and text reading sign in as bob@example.com, with a link below saying Try another way") - -When the user is ready (in the above example, when they click on the “Go!” button), call `navigator.credentials.get()`, exactly as shown above (i.e., by passing in all the user’s passkey credential IDs). - -If the user instead clicks on "Try another way", you should offer them other sign in methods (password, etc.) to reauthenticate them. diff --git a/content/en/docs/use-cases/reauth/pkdd-reauth-logout-passkey-knowncid.png b/content/en/docs/use-cases/reauth/pkdd-reauth-logout-passkey-knowncid.png deleted file mode 100644 index 75bd5635b76d40a3ed8c8799ea13094fc346e3c4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10167 zcmd^kRZyHkv-XR-1PE>c0t6>$2%ez9AxH?G0Kwgz1W0gqUo^P;F79k_w_sTu78YIj z`EJkUe=g3cI#bWg)U;G}&-6@n_59ROQy{>l#svU?KuPhv7671JJoOB0v?t00LMGv9 zLbsApl>va-SiE~P3;@7Y`u6UfhO3r>ETfX#J7NAe!ou9IdH4Z9@n^QSr+(rUx#arQ zS0Y{6h11$pyI_EcxdMBL*r0$o0WkYcOd{R?BLY{K?D?}S#gBa}KLDJfd3y!8)kxi=R67EwfYU4w3(4T-V`!TOs~*4@4{R`z?BSur zX#qn#Izwc@5G7EfUH=6aNCE&mZ$DWkpqv0Wyik(F02ay;S15pm0@^ZcAQ}ZoXIEfB zm2L-2KL%@Yp+b6qyb5V19&|_*N{~U*YX#JxP7J^!Mn8^7+7t*%m*pA*7)4Qmcl4y= zXpAaod3;mgjWQFbA1#U~0Aw_IJoUqr09i}&A8OC@(~Z9`{`T0_%9>HUBDTcYX39#< zWF}SILsOZ+2LS4u$?gYHskpt}?af`wJ-d^O{(=YFQ%5Gr7ia4a9Z{(00I?eMWXWV_ zXAaG25T(W)Y+GgsEa?K)>o-OM%Q$(TaR2z+M0$(fOVj7%YYd6g(cG`w9RO!8fteoG8F}DrgG;I{s09E={6P8NddB_j$n_H8NQE z-DDLI!mMt(4hRLR8RmOwd=`i}u`K3x5G`&#Wr_@y4n%ALy|D(3I`3J=CUHYIzbL`p z2Fd5(11AbhQ_7qk%8oD`beSP+QnMFg5zowH7MLcmDbi!mnamUg6M{gDun00urv4!p z5NesMO}vpJ^EtN**_-Ik(zkKTLyWI~-T&%P;7s%5!6&rGWp@3yBpyDE5;&dlAq8rYSHX-RJfe!Pkn0EL2`>7eIeagAqzTv z5s&9IkQ}oUY!=kWAksr@Mg?@C`DGB=R4Ve8?9e&_FDV@fPlZ+PiL za?|H!E>;_-FJHlW{DS^P&P!u9LQ<1NMHa&0gl#q47cb*pE8!{GDlRK>gS0`CQ^eo0 zR9FwF&BP`x(J#mcUVlB)mz{IbMLXcKO;a^D zth+f>@xZvF@!<7U(SGMzZdqX&Z<)R8JdQ#*P`h#ZW-&{7;>85PgfBN5w-k5noK2-= zWk99KlFw4tlKGL#5&6-<(uuoMwsbaE_NAD;*p)j@n{b zk`T5!sc>n3QFuwQe=>J6$socfh%FpPWyddSaXJ=f@y|BxTg&9>_s!C0qt<*UX3T&W>~gOHcY#XjSX?F zR4h~sAI7|y&9cog>sstszK{MnsQZuH}^3QJEx8V(57H-SzlQ%OwWqOD&I95E<{oMA#Ri;)gzTc z+rH#ii9@c>Xz~vAaobem^krdYd*({zqW#S3m_)z-?>kkVOqyY%UWpT#i_lNz`1Q-0-gA zE~a&fF6Mx_fb;;Y`<%PCx1-3|Yw)J`Ir*6yhAB!n$_`3rFm-S}nk^awdOCU$mJmiX zMmr`izT|URd>jG;2A4!f2*o+gjfKF96<5aO^AYUq=bvb9`NmjP=;xlrgh8>_i31#q zZ&YAoP1q3|3U(1K4Bx2IDQ^79UU9rG=h@e6&~|fnyW*Ow*fzMc>Wn#yEsJV>yKK|s z;$c-`W2a?jahTZ>)KcCO>=k}3ca}=xM#_S7^mDs!p-U4}r`c7{%hn?=>m zNG}7}AL?>l1{R?TBd~7yuz$mh7eemW8CRpxQd7Us;$?8Q!336TCufe-rtsw9H_~eR;`Qxx%74^) zv@Qjy@mF8#=kLUph=3hpfg@o71#`cLP>i6g<`Yb7Fmqe6bL6CkHlej&>{6 zU~nCdy_Rq^y`q@YPG*qfQsz;HXQR_64#FOpoo=@EVn5$4jeq$Qy(_)r>*;~bm)Hl2 z-keinVD}2{Li;?4{LYhqQH9xb#&il@&5r>m{96|8gF>--IeFRa5@$EtA&FZhUrKVa z)ube5(pS8%RPNJljWmrqt=>U%q$u2uRhmt%hT&^_u|}sIP8Up9=F2aeKU7LoNhkz3 zAvYDP4IK}@UX32wSmmK&R@^-80C6*o(vq)G&``a(zd*8yS(;5 z98q}U9;>Vv`NVov-*+t`_pxq?_5&LpYQIA4H?B<~rqEskq7y=#@SKOF$La9RDTOhG zS!Q|W=-6xq1{wnD&hsx5iJK*LC8W@i0NqFL1J~bs>&U-%AE5g83#WKDkx+1zcNyH} zakNTD5p5Mbg@6~ts z9k+rg^eM??v{2Mi1ppsb00{aH0Jl%1pnm}1&IbVdrT`$81^^UJS#6r)0DwB8p`s)A zB=Gq72#3RgPg$@d_yytyc5vK3xj8twmQ_Dd4W4cpT5ca&m|WhQUfNpSK3dy?Sw=P4 z#y%0JOcB4;x7ecRv?ORMN~G$ z)HX#lw#D@JB@7OwFC5F5oXVJ;%UPVuSzXH6Tz_+VRPuRO3;ERw``3yF)JcanzWdQ6 zAKt7G(V`mFrWVzv9^I}P)2uYAOWmcbMMz>XFw_VL$Z$|HL)VB(%&Xw$7$?%;!KB^Lv)FI%e|0 za|Mt&Q1^WK&|1atdU4Nu)1R$I=-=i)TWwR@?bAD*GdqyEy@4gz(DMH9%Kp^fK4T?3)46U$21q;Jde;KpXf^giDlt) zYY?SP5u;-%lT#^+bJfsy!?Tj#r&`dj=1pLoSWvxqaJ^J$!~3wN50S0vQ7zhW z9r}q~78yM@x&8L}11_K;r~E$8k`b@cQQz{hfQs>us)^8Q=+FAesK%+-=9!qL>7=&V z^v?Orj+uhq<)Z$T(!tfj?zy6#`O1;?nz4=giOtrjZSdS~_xxVZ!ru7$;h)W;>8<01 z-P7fNXWPe@hw$rz^Q)7~o2%RV!;`bkL-_gC?d?4h`S5Uleh!1dHa0fa*Vot9)>cc(&&j*kBM^JidSpp%o6si~=&nwprH7$YO&Qw(1R8_hpO^Rb(jn)cK3|4sw) zsoIL3JjZcTG;jp~JktMk6d)su5&)>MmEOzfcx4@B``R(z_%BEa&?Ye3yyq?|Vz260 z+o|$5u$XpOvHMzLeLwV8)wV<_vp}ABA?O)dXIsn0-|gGeEgqRnL1~h=uZRofiQ8r3 zo2)hFrT0Nyj1rXNt3KJGadz#Vsk2)Mvi;gm%1m+~iJ4nTxr2MMSCFeu8ad&aC8Z0PB zMc#?Lj6WvKdogmla6nZ!1?Bn=p$hI~^}KVFi8z_(e*@x}*CC?V$Dqy2?vDF|wT0nd z#{6Z*w2B|-%^FJZSU@=e2d`)9y9W-0#XIJ1SM)OoN)pUY^-_Xz7_`)LE8lJF);z-^ z>E2^+iH&!q`tI(vj*;*%_y#TFHrG*(zW(ZUq*u6-{#0ax&lP1uoB!(wAG=evc9dR5 zE|>^)0iE5>h zCRwqWIYBft)u2IE($I8p=~e^Qnu3(i#2}S$=4W{gzI4{cZtFBci@r{1#~?0ti8P6{ z`Yzw14;II)m1xQ13R}|dcRurC{>PyF0F$9OfrgweRVQI}=|;+|nM4_MxB(VqV(o3# z!Ew0-$^tV0PtC>-N;FBQw{TEB_ut$d%A$nujARuLi;(;K9tdx^t zMU?Ed&%#{q#JxuAk;aBzVc4p-cB^1rW?UjibhbSnEH z_6AV&!Gf_>MqwBF4a72&Oo-y(*UR_ySr_(@Zyz^TU=;$U19`P#X>WQI;!Z8M5%;eB zpTFO#h9vsToQQeSI>EKIiD>u&7)Ouz^D=TXK5?OV+F2(R7Z)oNM6BUV^<9yd%t`QR zla&-JL$Dzjq{`abk-o%l8W>OtFE7i=I`F;#rB!!0R0pL38v*EIP;sl2QxF9tEtG#D zl;b^8+lNXN>k?07V+k!{?8s^u=#LaJMT|UGl(E>sb=v95#R|F|%i`5gpp_Z zi|csRSQ1`DQ3x^rUE0#aSS;wnOT!4y#T9nv8dDmFZDtlKcy*uy4PWh?3c3B)G=U5Y z-&4;pm(y1A!Iq<3b7ZJfFLo8krc#!vl4Kb=+3no^4?S?L63$0*MoM2r8l;H1(u_r8 zwJw^kTrFSQVsZVhxf2`b?*r|jVk|y6w@kOL#P#QIQs&cHoOoLA#kPF;QzfrO=&S0V zH~8P5PXI5J1OJ(hMc+)HCfOJ0KhRd-ZTsRUww(|QE2u;Wn>y}BAo@^Jm!~m(Khlq_ zIcDoE?N?-IvhIc;8tHDJtS{Eo!3N>A)_n6_1o3afq_7N&Tx&2M%sfB`x@6S;Y|8sc zkNFMs1fcv2fwF*J)fi?VY*WlXMIxx1|>y^$cpgxjTxV+-c2=GXmuI zHjbC09NceL*n?ouvlS!5_IcyAbmlQ3m*rQz)~k}dU-&c7K)-LW!|LbaH}_r0Xsrm? zyJzptkUB-o#e>3Zj2XtEJR*uK)^oi5ow&ZvV~5m&hytU1{1!x;>KAWJ#qNd5dPxih zOZ8lL6#8o#5o&bT8VHi!v&xbKtC{E6@p=2I{F|Z1@XoEd&=*~Im^IX&ze`vX;uFnN zogyS6x&q#3TZL&*$m=d%MU6fjMK0p?O9c7AE)T+8IwVX`oj&M=RAOrIa??M_B7DkF zG+r57$1aVg0L@-zf2FW&2V@DF0U|mU3F%Iv)*JFGrv7KHllAe|b3Tx%gB{Kr$8w z0^g+vB3Vv-JK)TLMgYDsk_O?2ctW~lgItk*ldAz5<@f_$0LZb zTS4QBA;)GEKR&Gb0kL_MdtbY?Tk(CeD{D`!&FA0>co+8|@mMRdZ3VtdGw4L}E6io0 zx-{*1Ba%`vMn^y8Sb+%l{*kmD7M~BNnMCY(8y|uKA?X&UQ@LqJ*ghvE(aT{~`!fMNJ|!B7SP*EhPK z)V_Sme7ii1injv-KVLO{F(Pl6g7|aTg!gJ+x;t7n-=$zTR}PaG>Cy~=ZS8v0*J=fn zw>Hu*qAFe+zA_y>Uvg;(pHu2C-{L*`$Vw}KtqI!f3am1pVYqm;>@#-t49+Vz zMiD2N$q{wi#k!i7Jd5>i$PV7Jq|91@`>deqv|9(QhEp{wr(*z-7&HE7pHAOXDKXt$ zr9ff_!|tCCvGUD%jwI&;VhoYl2j%z(Era9PXRP&VwGe`|!tuB`m3FX4i4y z6O_asroKY$jblsS>s=1_EgYu6K87_muUw~@t3?jNoKlaFs~}!9@iVyII+n?Ib>s#E zV(9bl^bPW$j#kWV{%>|Fo58j`fLCRt!2IWb_}sOBeyyRB&fE}#pq@CsuvZ(mSQ$iZ z0dbG#%GDEV(Fu*WDVZj9|?kyuTw zF1w84l6SSuLmI3c0kBz|bC8jb_z;DF6ZBc7!ZX(Mj;v#Mb!WxjW+wiZMC+IJCP=L0 zN2g}0zwIWUZW|8X?)7r`>*JS|c%I)$Es>w@#Cm+NOdUpav7a!!C05Hn~TYBZ}E&AX!Qk1YFo0pn$ucbwIEJ=PS)8&1hd>JP}8Fm3hZk0TE4dAt$ zMyvb5^nwlT!4X$5rvP&cag!dk^x|(z{2VbniLe0(mJ4*P3xRVzJBOeN#Jk>uK~E#s zJ)Bg>q2chmk}Zs^FS@IA{H}$}iL%o1jfeScqce5p-3iKhDLh`x1eJfL~ z%Rz8cWkX}7!Zi=R{_Pd=oXCUVaRN*jcz!Q1K3*burj;vO_w)jcV??K??Rn=&tO*I9 z$n(e!AUgV5tm-m)#*f(Q22j|%mbwugl-uSpd)^Z)G8&fRo8D@;tOU>xQ6le%8W|a% zocH$19qGr1!YlA0UwYu;y|GZQ9Mv&iCX3t$IC*ID0}^`am9n#V6-eW^#Tj_$i0s=l zIo6J7|BR_ijy!p7g2GN=Ze;E%#7aI?m71>uLZL}%$Kh-JjA`?OGAcMTR3-fj0XgR~ z1mWWv@1Cy_aul7^X&kQgV!8-J@=b{rRi+XWgYViXx^wjh zU-Qhb9@j9(q>I2O6TZH3{>P~~p?V=jgpY^wx5;(%qZtO_x8!l31~UZ5hq04&tPYE9 z?WHGGC(;%%nS;g&`MP2fh3b_!sLrQbMr$xEfS**;S>KZ(s{O*%Vl|qG$MyXRW>fdf zhHpzVSM$bS@pz_-y=O7!ntvJzRkN02jrQAo8CO~`c6b`S@J4;#nZ`|lk?rgM=x#RA zdRwkK@7jIXSYTCk89y~9x>>*AYNR?_GCig2{f3&&tcP_p=Iu^8JXz|g3K=medmC8xKEP=IVqmU z&l>?tr4T7z!z=AddG_8O^y72-cufGDJD2}&UI>+o1z8BO0kv|{R`goo*`k@cNpWfS zylN;=BJH~i58vjf!5Z#h@F~aFxb>uc>{^VZI6=f*K-b(C^5<-7(2^1Q4AWrz%LR0f zC|LrIoIP*jY&z54e67D(QbW)_^QPuU+kvLs!*o}GJu#R{`h?ey57?XM04}F-N{P~M-K>tA0@3@9B&~c$J zM68i4-8~|Hl~tcVSJ}A8Y8xjpHPJ zHSe=#WvBU8BOHo-iJ&sRf;doij|&^lBl$-M3?``8b@%AtXThS;^*yLeNB?#|ywq|?9LkWB!2BAxJ#hStfQ!Dgcksy1&1w{P z2{TG$-KT~ycEgdDK<#!uHuqu_yv*BV*?Uc`0_>T-#3)OiQ*-A_VQ-}TUG*&muA?%I z$J5HS(n!Xa4xGEQmdcfW(Qjlgf=JqA@8pXCX|?*bu5my6gTAK%S~awxD>I@rN;V!b zSw_qV?1!|)4bUT!6oec~y?sA0lA~9exB%b^UlKrj^He)vFejKB%L=u0oCO$dGHd+87Oa08?>9cYk@5jKb8-Pa zo8;|f@Xvj`*<*d!!P(y*-F}d3CLIw85IZPb5@jAO3Ywc_e7|Rx)+A*dv-mgAFOQ;x z(|;Eu$V%3YaE7D!TSl?r!P$q}5twq|?GDApjZ-$K!s`}T_k7n?gjZ1RO(O-O>r&eCZ7`iOD3wQKNZ`lBJWKq zPVt{yR%%s2ctY%vdF5|U!rEoYeRABjS4;nom;S6Emn4Vp_ju_~iS3eSm`>c(@H)2l zS84sJliwHJ&hUlUXxi96Jd0hYTV~0ihO;db>{iHW)il^UVW)cJ>}Jw2%*foUSvNK1 zVfd{i)u(UDkm?S2Z+CCYm=ZSa5CX_198;=lZIYGZ$HjqCsiOzj_o$=gH&s(MqS$)A{c>T6 z9ov+s^t$v(qN30L;2Cw1WTrwT9F%OE^S7if%uEG!yY8oRFQq!F{+P&<(ZPeC#Fgu&zt({xv~b^nnB@IB8nm} zs!naU!5ceM+euWObXwA{+PkJGa zRmvbY(mcOcsLVPU!Mb7+4tA&-7!fG+&!l4HQ!%|OXu`}6n}q5;-l*BtYSA*c>R@EK z-PYAE6#d73n$D977AlGP4#LP;?(%3?HcqBhYr&_}S=#(_gfmdw9QmP^nm=u+>@3f@ zwO+nR#H`B$PTan5Jf-M*5K{Xmz0V$La;O#bq0_eeEs=%ASDV)CPMBQ6!EoiV5JxAK zzB=zq(lew?@+3ehl?4*ct^wqE+TFC;1?Svj-FRcUk~hsRKU0ZwK@1KnG-2ZqAF;Y zV5Lvm8(QlkYtH6{dM~N@=o!!V#Hj z0}1Vk;cuFI+6fUfzu)IOl_I|IowKqt&0WE@@+^I7#LB{{t)B{2*2N}Kxf`XY3Z`(} z2fJhX?0@{#XU<=xB_zzg{OzUFApj2yrlMS4yf$LBz#Mr}@tc$*L)C=+&j7~UiDbJ; zu9szih5EumU*r4SX~V2itf6U=Q=3p}`}Nch?$;0t zX9j8abGJJbI#Tb%_taE;my_C4Fp3&{L1h`4l>bNXhTqaOW~f>`>>mNef2+`PAIRBH Wh{V^XntS>v0hHv_-dD+*hWtM-y21GX diff --git a/content/en/docs/use-cases/reauth/pkdd-reauth-logout-passkey.png b/content/en/docs/use-cases/reauth/pkdd-reauth-logout-passkey.png deleted file mode 100644 index 52a1857e635d2689dfdbc77bd77fa407652e7205..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10376 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 b6vlI2q30l*^>_a=KY;8P#m^NI2LAsAYp?<_ diff --git a/content/en/docs/use-cases/reauth/pkdd-reauth-logout-password.png b/content/en/docs/use-cases/reauth/pkdd-reauth-logout-password.png deleted file mode 100644 index 6330f0defbe815806f268d1f7119a73370e0f355..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9162 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 diff --git a/content/en/docs/use-cases/reauth/pkdd-reauth-passkey.png b/content/en/docs/use-cases/reauth/pkdd-reauth-passkey.png deleted file mode 100644 index be07c2c79cb41db90eef1caf9ad3305b8bb5baa8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12667 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 Date: Fri, 29 Dec 2023 19:22:15 +0000 Subject: [PATCH 020/203] core hugo change --- hugo_stats.json | 3 --- 1 file changed, 3 deletions(-) diff --git a/hugo_stats.json b/hugo_stats.json index 92b7844e..a88bafb7 100644 --- a/hugo_stats.json +++ b/hugo_stats.json @@ -90,7 +90,6 @@ "bi-x-circle-fill", "blur-up", "border", - "brand-github-filled", "btn", "btn-close", "btn-lg", @@ -110,7 +109,6 @@ "card-list", "categories", "chroma", - "coffee", "col", "col-lg-10", "col-lg-12", @@ -354,7 +352,6 @@ "doks-docs-nav", "engage-and-contribute", "expired-sessions-and-logout", - "faq", "fido2webauthn-tools", "first-party-passkey-provider", "general-passkey-demo-sites", From 70ccaaf4d1f4bce721d292a03b64ef0a8bf028a6 Mon Sep 17 00:00:00 2001 From: Tim Cappalli Date: Sat, 30 Dec 2023 16:49:44 +0000 Subject: [PATCH 021/203] restore last updated --- layouts/_default/single.html | 9 +++------ layouts/docs/single.html | 9 +++------ 2 files changed, 6 insertions(+), 12 deletions(-) diff --git a/layouts/_default/single.html b/layouts/_default/single.html index d470c681..09556e89 100644 --- a/layouts/_default/single.html +++ b/layouts/_default/single.html @@ -43,12 +43,9 @@

{{ .Title }}

{{ .Content }} {{ end -}} {{ partial "main/docs-navigation.html" . }} +

{{ .Params.lead | safeHTML }}

{{ if ne .Params.toc false -}} {{ end }}

{{ .Title }}

- +

{{ .Params.lead | safeHTML }}

{{ if ne .Params.toc false -}}
- 1 + 1 Device-bound passkeys supported
- 2 + 2 See
macOS browser behavior for caveats
- 3 + 3 Chrome M108 and Windows 11 22H2
- 4 + 4 Firefox 122 +
+ 5 + Experimental (behind flag) +
+ 6 + Partial support (requires Windows changes)
From 9715098ed09caee71818b7474c71203eb42fde57 Mon Sep 17 00:00:00 2001 From: Eiji Kitamura Date: Wed, 13 Mar 2024 17:56:45 +0900 Subject: [PATCH 045/203] Add UV behavior research results --- content/docs/reference/android.md | 18 +++++++++++++++ content/docs/reference/ios.md | 15 +++++++++++++ content/docs/reference/macos.md | 37 +++++++++++++++++++++++++++++++ content/docs/reference/windows.md | 12 ++++++++++ 4 files changed, 82 insertions(+) diff --git a/content/docs/reference/android.md b/content/docs/reference/android.md index aab2ecf9..a4a36adf 100644 --- a/content/docs/reference/android.md +++ b/content/docs/reference/android.md @@ -47,6 +47,24 @@ When an authenticator is not persistently linked, a QR code must be scanned on e - **Credential Manager** is a new Android Jetpack API that supports multiple sign-in methods, including passkeys, in a single API, thus simplifying the integration for developers.



+### User Verification Behavior + +When a user tries to interact with a passkey on Android, one of screen lock methods is used for user verification. Users can configure a PIN or a pattern and biometric (fingerprint or face) as their screen lock. + +Where these biometrics are not configured or available, both passkey creation and passkey authentication fall back to asking for a PIN or a pattern. + +#### Chrome 120 + +- When biometrics are not configured on Android, or not available on the device: + - The behavior with both `userVerification='required'` and `userVerification='preferred'` are the same: it asks for a PIN or a pattern for both passkey creation and passkey authentication. Since they fail locally if user verification fails, the server can always expect the UV flag to be `true`. + - Calling `PublicKeyCredential.isUserVerifyingPlatformAuthenticator()` returns `true`. +- When a PIN or a pattern is not configured on Android: + - The behavior with both `userVerification='required'` and `userVerification='preferred'` are the same: + - It asks for an external security key on passkey creation. The UV flag the server receives depends on the result of + user verification with the external security key. + - It asks the user to set up a PIN or a pattern on passkey authentication. Since they fail locally before a PIN or a pattern is configured, the server does not receive a response. + - Calling `PublicKeyCredential.isUserVerifyingPlatformAuthenticator()` returns `false`. + ## Resources ### Docs diff --git a/content/docs/reference/ios.md b/content/docs/reference/ios.md index 4e364d0f..6546561a 100644 --- a/content/docs/reference/ios.md +++ b/content/docs/reference/ios.md @@ -41,6 +41,21 @@ WebAuthn credentials created using the platform authenticator in iOS/iPadOS 15 a To replace a legacy platform credential with a passkey, start a credential registration ceremony and pass **the same user handle** (user.id) in the request. iOS/iPadOS will overwrite the legacy credential with a new passkey that will be backed up to iCloud Keychain. +### User Verification Behavior + +When a user tries to interact with a passkey on iOS or iPadOS, one of screen lock methods is used for user verification. Users can configure a passcode and Touch ID or Face ID as their screen lock. + +Both passkey creation and passkey authentication ask for Touch ID or Face ID if one is configured, but fallback to a passcode if not. They ask to configure a passcode (and Touch ID or Face ID) if it's not yet set. + +#### Safari on iOS 17 + +- When Touch ID or Face ID is not configured, but a passcode is configured on iOS: + - The behavior with both `userVerification='required'` and `userVerification='preferred'` are the same: iOS asks for tapping on a "Confirmation" button, then a passcode for both passkey creation and passkey authentication. Since they fail locally if user verification fails, the server can always expect the UV flag to be `true`. + - Calling `PublicKeyCredential.isUserVerifyingPlatformAuthenticator()` always returns true. +- When a passcode is not configured on iOS: + - The behavior with both `userVerification='required'` and `userVerification='preferred'` are the same: iOS asks the user to set up a passcode and the Touch ID or Face ID for both passkey creation and passkey authentication. Since they fail locally before a passcode is configured, the server can always expect the UV flag to be `true`. + - Calling `PublicKeyCredential.isUserVerifyingPlatformAuthenticator()` always returns true. + ## Resources - [Apple landing page for passkeys](https://developer.apple.com/passkeys/) diff --git a/content/docs/reference/macos.md b/content/docs/reference/macos.md index 45031347..9e506059 100644 --- a/content/docs/reference/macos.md +++ b/content/docs/reference/macos.md @@ -46,6 +46,43 @@ To replace a legacy platform credential with a passkey, start a credential regis **Edge**: credentials created by Edge are currently [***device-bound*** passkeys](/docs/reference/terms/#device-bound-passkey), are not backed up to iCloud Keychain, and are ***not available outside of Edge***. +### User Verification Behavior + +On macOS, the user must set up a system password. Enabling iCloud Keychain and setting up Touch ID are optional. + +#### Safari on macOS 14 + +- When iCloud Keychain is not enabled and Touch ID is not configured on macOS: + - The behavior for `userVerification='required'` is: + - macOS asks the user to enable iCloud Keychain on passkey creation. Since user verification fails locally at this point, the server does not receive a credential. + - On passkey authentication, macOS asks the user to enter the system password or use Touch ID (if configured). + - The behavior on `userVerification='preferred'` is: + - macOS asks the user to enable iCloud Keychain on passkey creation. Since user verification fails locally at this point, the server does not receive a credential. + - On passkey authentication: + - If Touch ID is not configured, macOS skips user verification and returns the UV flag as `false`. + - If Touch ID is configured, macOS asks for user verification with Touch ID and returns the UV flag as `true`. + - Calling `PublicKeyCredential.isUserVerifyingPlatformAuthenticator()` always returns true. +- When iCloud Keychain is enabled, but Touch ID is not configured on macOS or not available on the device: + - `userVerification='required'` asks the user to enter the system password on both passkey creation and authentication. Since they fail locally if Touch ID setup fails, the server can always expect the UV flag to be `true`. + - `userVerification='preferred'` skips user verification both on passkey creation and authentication. The UV flag is always `false`. + - Calling `PublicKeyCredential.isUserVerifyingPlatformAuthenticator()` always returns true. + +#### Chrome 120 with iCloud Keychain on macOS 14 + +- When iCloud Keychain is not enabled and Touch ID is not configured on macOS: + - The behavior on `userVerification='required'`: + - macOS asks the user to enable iCloud Keychain on passkey creation. The UV flag sent to the server depends on the fallback user verification result. + - On passkey authentication, macOS asks the user to enter the system password or use Touch ID (if configured). When user verification succeeds, it returns a credential with the UV flag as `true`, otherwise it fails locally. + - The behavior on `userVerification='preferred'`: + - macOS asks the user to enable iCloud Keychain on passkey creation. The UV flag sent to the server depends on the fallback user verification result. + - On passkey authentication, it skips user verification immediately and returns a credential with the UV flag as `false`. + - If Touch ID is configured, macOS asks for user verification with Touch ID.The UV flag sent to the server depends on the fallback user verification result. + - Calling `PublicKeyCredential.isUserVerifyingPlatformAuthenticator()` always returns `true`. +- When iCloud Keychain is enabled, but Touch ID is not configured on macOS or not available on the device: + - `userVerification='required'` asks for the system password on both passkey creation and passkey authentication. Since they fail locally if user verification fails, the server can always expect the UV flag to be `true`. + - `userVerification='preferred'` skips user verification and returns the UV flag as `false` for both passkey creation and passkey authentication. + - Calling `PublicKeyCredential.isUserVerifyingPlatformAuthenticator()` always returns `true`. + ## Resources - [Apple landing page for passkeys](https://developer.apple.com/passkeys/) diff --git a/content/docs/reference/windows.md b/content/docs/reference/windows.md index 96e693fb..f0547ef9 100644 --- a/content/docs/reference/windows.md +++ b/content/docs/reference/windows.md @@ -35,6 +35,18 @@ Windows does not currently support [FIDO Cross-Device Authentication (CDA)](../t Persistent linking is available between Android devices (authenticator) and Chrome and Edge (clients) on Windows. iOS and iPadOS do not support persistent linking. +### User Verification Behavior + +When a user tries to interact with a passkey on Windows 11, one of screen lock methods is used for user verification. Users must set up a PIN. Setting up facial recognition or fingerprint recognition are optional. + +Where these biometrics are not configured or available, both passkey creation and passkey authentication fall back to asking for a PIN. + +#### Chrome 120 + +- When biometrics are not configured on Windows, or not available on the device: + - The behavior for both `userVerification='required'` and `userVerification='preferred'` are the same: it asks for a PIN for both passkey creation and passkey authentication. Since they fail locally if user verification fails, the server can always expect the UV flag to be `true`. + - Calling `PublicKeyCredential.isUserVerifyingPlatformAuthenticator()` returns `true`. + ## Resources > Coming Soon From 0af96d70fceab2153c6e5a527e78a443d34186fd Mon Sep 17 00:00:00 2001 From: Eiji Kitamura Date: Wed, 13 Mar 2024 17:57:53 +0900 Subject: [PATCH 046/203] Hugo stats --- hugo_stats.json | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/hugo_stats.json b/hugo_stats.json index 5cb2bd33..d8e5fd41 100644 --- a/hugo_stats.json +++ b/hugo_stats.json @@ -21,6 +21,7 @@ "h1", "h2", "h3", + "h4", "h5", "head", "header", @@ -85,6 +86,7 @@ "bi-pencil", "bi-twitter-x", "bi-usb-drive", + "bi-wrench-adjustable-circle-fill", "bi-x-circle-fill", "border", "btn", @@ -328,6 +330,10 @@ "buttonColorMode", "cda-authenticator", "cda-client", + "chrome-120", + "chrome-120-on-macos-14", + "chrome-120-on-macos-14-with-icloud-keychain", + "chrome-120-with-icloud-keychain-on-macos-14", "client-to-authenticator-protocol-ctap", "community-resources", "conditional-mediation", @@ -356,10 +362,6 @@ "h-rh-i-2", "h-rh-i-3", "h-rh-i-4", - "icon-passkey", - "icon-passkey-body", - "icon-passkey-head", - "icon-passkey-key", "icon-protected", "java", "java-1", @@ -392,6 +394,8 @@ "roaming-authenticator", "ruby", "rust", + "safari-on-ios-17", + "safari-on-macos-14", "sample-code", "search-form", "searchModal", @@ -408,6 +412,12 @@ "signing-in", "single-device-passkey", "socialMenu", + "supfive", + "supfour", + "supone", + "supsix", + "supthree", + "suptwo", "synced-passkey", "third-party-passkey-provider", "title", @@ -415,6 +425,7 @@ "typescript", "updated-for-passkeys", "user-presence-up", + "user-verification-behavior", "user-verification-uv", "user-verifying-roaming-authenticator", "vendor-demo-sites", From 1aaa17c7c3642dbc073e4e8b621da1a3eec4d869 Mon Sep 17 00:00:00 2001 From: Tim Cappalli Date: Wed, 13 Mar 2024 15:57:01 -0400 Subject: [PATCH 047/203] Update ios.md minor wording changes --- content/docs/reference/ios.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/content/docs/reference/ios.md b/content/docs/reference/ios.md index 6546561a..77882424 100644 --- a/content/docs/reference/ios.md +++ b/content/docs/reference/ios.md @@ -45,15 +45,15 @@ To replace a legacy platform credential with a passkey, start a credential regis When a user tries to interact with a passkey on iOS or iPadOS, one of screen lock methods is used for user verification. Users can configure a passcode and Touch ID or Face ID as their screen lock. -Both passkey creation and passkey authentication ask for Touch ID or Face ID if one is configured, but fallback to a passcode if not. They ask to configure a passcode (and Touch ID or Face ID) if it's not yet set. +Both passkey creation and authentication ask for Touch ID or Face ID if one is configured, but fallback to a passcode if they are not. iOS asks the user to configure a passcode (and Touch ID or Face ID) if not yet set up. -#### Safari on iOS 17 +#### Safari on iOS / iPadOS 17 -- When Touch ID or Face ID is not configured, but a passcode is configured on iOS: - - The behavior with both `userVerification='required'` and `userVerification='preferred'` are the same: iOS asks for tapping on a "Confirmation" button, then a passcode for both passkey creation and passkey authentication. Since they fail locally if user verification fails, the server can always expect the UV flag to be `true`. +- When Touch ID or Face ID are not configured, but a passcode is configured on iOS: + - The behavior with both `userVerification='required'` and `userVerification='preferred'` are the same: iOS asks for tapping on a "Confirmation" button, then a passcode for both passkey creation and authentication. Since they fail locally if user verification fails, the server can always expect the UV flag to be `true`. - Calling `PublicKeyCredential.isUserVerifyingPlatformAuthenticator()` always returns true. - When a passcode is not configured on iOS: - - The behavior with both `userVerification='required'` and `userVerification='preferred'` are the same: iOS asks the user to set up a passcode and the Touch ID or Face ID for both passkey creation and passkey authentication. Since they fail locally before a passcode is configured, the server can always expect the UV flag to be `true`. + - The behavior with both `userVerification='required'` and `userVerification='preferred'` are the same: iOS asks the user to set up a passcode and then Touch ID or Face ID for both passkey creation and authentication. Since they fail locally before a passcode is configured, the server can always expect the UV flag to be `true`. - Calling `PublicKeyCredential.isUserVerifyingPlatformAuthenticator()` always returns true. ## Resources From 3aabcab8a09b2edb7c2ecfa3b39d7fe793d820eb Mon Sep 17 00:00:00 2001 From: Tim Cappalli Date: Wed, 13 Mar 2024 16:02:33 -0400 Subject: [PATCH 048/203] Update macos.md small tweaks --- content/docs/reference/macos.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/content/docs/reference/macos.md b/content/docs/reference/macos.md index 9e506059..9f8340aa 100644 --- a/content/docs/reference/macos.md +++ b/content/docs/reference/macos.md @@ -48,22 +48,22 @@ To replace a legacy platform credential with a passkey, start a credential regis ### User Verification Behavior -On macOS, the user must set up a system password. Enabling iCloud Keychain and setting up Touch ID are optional. +On macOS, the user must set up a local system password. Enabling iCloud Keychain and setting up Touch ID are optional. #### Safari on macOS 14 - When iCloud Keychain is not enabled and Touch ID is not configured on macOS: - The behavior for `userVerification='required'` is: - macOS asks the user to enable iCloud Keychain on passkey creation. Since user verification fails locally at this point, the server does not receive a credential. - - On passkey authentication, macOS asks the user to enter the system password or use Touch ID (if configured). + - On passkey authentication, macOS asks the user to enter the local system password or use Touch ID (if configured). - The behavior on `userVerification='preferred'` is: - macOS asks the user to enable iCloud Keychain on passkey creation. Since user verification fails locally at this point, the server does not receive a credential. - On passkey authentication: - If Touch ID is not configured, macOS skips user verification and returns the UV flag as `false`. - If Touch ID is configured, macOS asks for user verification with Touch ID and returns the UV flag as `true`. - Calling `PublicKeyCredential.isUserVerifyingPlatformAuthenticator()` always returns true. -- When iCloud Keychain is enabled, but Touch ID is not configured on macOS or not available on the device: - - `userVerification='required'` asks the user to enter the system password on both passkey creation and authentication. Since they fail locally if Touch ID setup fails, the server can always expect the UV flag to be `true`. +- When iCloud Keychain is enabled, but Touch ID is not configured on macOS or not available on the device (e.g. laptop lid is closed): + - `userVerification='required'` asks the user to enter the local system password on both passkey creation and authentication. Since they fail locally if Touch ID setup fails, the server can always expect the UV flag to be `true`. - `userVerification='preferred'` skips user verification both on passkey creation and authentication. The UV flag is always `false`. - Calling `PublicKeyCredential.isUserVerifyingPlatformAuthenticator()` always returns true. @@ -78,7 +78,7 @@ On macOS, the user must set up a system password. Enabling iCloud Keychain and s - On passkey authentication, it skips user verification immediately and returns a credential with the UV flag as `false`. - If Touch ID is configured, macOS asks for user verification with Touch ID.The UV flag sent to the server depends on the fallback user verification result. - Calling `PublicKeyCredential.isUserVerifyingPlatformAuthenticator()` always returns `true`. -- When iCloud Keychain is enabled, but Touch ID is not configured on macOS or not available on the device: +- When iCloud Keychain is enabled, but Touch ID is not configured on macOS or not available on the device (e.g. laptop lid is closed): - `userVerification='required'` asks for the system password on both passkey creation and passkey authentication. Since they fail locally if user verification fails, the server can always expect the UV flag to be `true`. - `userVerification='preferred'` skips user verification and returns the UV flag as `false` for both passkey creation and passkey authentication. - Calling `PublicKeyCredential.isUserVerifyingPlatformAuthenticator()` always returns `true`. From 3f9e146da9ff4b1c99ca18b52b21f8f719919805 Mon Sep 17 00:00:00 2001 From: Tim Cappalli Date: Wed, 13 Mar 2024 16:06:08 -0400 Subject: [PATCH 049/203] Update windows.md terminology tweaks --- content/docs/reference/windows.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/content/docs/reference/windows.md b/content/docs/reference/windows.md index f0547ef9..6b09377f 100644 --- a/content/docs/reference/windows.md +++ b/content/docs/reference/windows.md @@ -37,14 +37,14 @@ Persistent linking is available between Android devices (authenticator) and Chro ### User Verification Behavior -When a user tries to interact with a passkey on Windows 11, one of screen lock methods is used for user verification. Users must set up a PIN. Setting up facial recognition or fingerprint recognition are optional. +When a user tries to interact with a passkey on Windows 11, one of screen lock methods is used for user verification via Windows Hello. Starting in Windows 11 22H2, users must set up Windows Hello with at least a device PIN. Setting up facial recognition or fingerprint recognition are optional. -Where these biometrics are not configured or available, both passkey creation and passkey authentication fall back to asking for a PIN. +Where these biometrics are not configured or available, both passkey creation and authentication fall back to asking for the Windows Hello PIN. #### Chrome 120 - When biometrics are not configured on Windows, or not available on the device: - - The behavior for both `userVerification='required'` and `userVerification='preferred'` are the same: it asks for a PIN for both passkey creation and passkey authentication. Since they fail locally if user verification fails, the server can always expect the UV flag to be `true`. + - The behavior for both `userVerification='required'` and `userVerification='preferred'` are the same: Windows Hello asks for the device PIN for both passkey creation and authentication. Since they fail locally if user verification fails, the server can always expect the UV flag to be `true`. - Calling `PublicKeyCredential.isUserVerifyingPlatformAuthenticator()` returns `true`. ## Resources From 3a58522a5c88a9de21b2a8336813f9e74e7fca92 Mon Sep 17 00:00:00 2001 From: Tim Cappalli Date: Wed, 13 Mar 2024 16:08:54 -0400 Subject: [PATCH 050/203] Update android.md small tweaks --- content/docs/reference/android.md | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/content/docs/reference/android.md b/content/docs/reference/android.md index a4a36adf..66747f31 100644 --- a/content/docs/reference/android.md +++ b/content/docs/reference/android.md @@ -49,20 +49,19 @@ When an authenticator is not persistently linked, a QR code must be scanned on e ### User Verification Behavior -When a user tries to interact with a passkey on Android, one of screen lock methods is used for user verification. Users can configure a PIN or a pattern and biometric (fingerprint or face) as their screen lock. +When a user tries to interact with a passkey on Android, one of screen lock methods is used for user verification. Users can configure a device PIN or a pattern and biometric (fingerprint or face) as their screen lock. -Where these biometrics are not configured or available, both passkey creation and passkey authentication fall back to asking for a PIN or a pattern. +Where these biometrics are not configured or available, both passkey creation and authentication fall back to asking for the device PIN or pattern. #### Chrome 120 - When biometrics are not configured on Android, or not available on the device: - - The behavior with both `userVerification='required'` and `userVerification='preferred'` are the same: it asks for a PIN or a pattern for both passkey creation and passkey authentication. Since they fail locally if user verification fails, the server can always expect the UV flag to be `true`. + - The behavior with both `userVerification='required'` and `userVerification='preferred'` are the same: it asks for the device PIN or pattern for both passkey creation and authentication. Since they fail locally if user verification fails, the server can always expect the UV flag to be `true`. - Calling `PublicKeyCredential.isUserVerifyingPlatformAuthenticator()` returns `true`. -- When a PIN or a pattern is not configured on Android: +- When a device PIN or pattern are not configured on Android: - The behavior with both `userVerification='required'` and `userVerification='preferred'` are the same: - - It asks for an external security key on passkey creation. The UV flag the server receives depends on the result of - user verification with the external security key. - - It asks the user to set up a PIN or a pattern on passkey authentication. Since they fail locally before a PIN or a pattern is configured, the server does not receive a response. + - It asks for an external security key on passkey creation. The UV flag the server receives depends on the result of user verification with the external security key. + - It asks the user to set up a device PIN or pattern on passkey authentication. Since they fail locally before a PIN or a pattern is configured, the server does not receive a response. - Calling `PublicKeyCredential.isUserVerifyingPlatformAuthenticator()` returns `false`. ## Resources From ad661f135155412f8b0a97926c177661bbb440e9 Mon Sep 17 00:00:00 2001 From: Tim Cappalli Date: Wed, 13 Mar 2024 20:22:13 +0000 Subject: [PATCH 051/203] update green for ref ds --- assets/scss/common/_custom.scss | 5 +++++ layouts/shortcodes/ds-cda.html | 2 +- layouts/shortcodes/ds-full.html | 4 ++-- layouts/shortcodes/ds-pa.html | 2 +- 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/assets/scss/common/_custom.scss b/assets/scss/common/_custom.scss index 6d0e90aa..e0163745 100644 --- a/assets/scss/common/_custom.scss +++ b/assets/scss/common/_custom.scss @@ -135,6 +135,11 @@ COLORS color: #004b4e } +.bg-color-green { + background-color: #198754; +} + + /* SPECIFIC PAGE OVERRIDES */ diff --git a/layouts/shortcodes/ds-cda.html b/layouts/shortcodes/ds-cda.html index 74585bce..2da5e96b 100644 --- a/layouts/shortcodes/ds-cda.html +++ b/layouts/shortcodes/ds-cda.html @@ -12,7 +12,7 @@
External Authenticator

(create and use passkeys from another device)

- Supported
diff --git a/layouts/shortcodes/ds-full.html b/layouts/shortcodes/ds-full.html index 4ad7c359..301cb38a 100644 --- a/layouts/shortcodes/ds-full.html +++ b/layouts/shortcodes/ds-full.html @@ -4,7 +4,7 @@
Local Authenticator

(create and use passkeys from the local device)

- Supported
@@ -12,7 +12,7 @@
External Authenticator

(create and use passkeys from another device)

- Supported
diff --git a/layouts/shortcodes/ds-pa.html b/layouts/shortcodes/ds-pa.html index 9be2b5dc..57bd0b2f 100644 --- a/layouts/shortcodes/ds-pa.html +++ b/layouts/shortcodes/ds-pa.html @@ -4,7 +4,7 @@
Local Authenticator

(create and use passkeys from the local device)

- Supported
From b5b5ef6619c33d2e7bef96c06abdcafa37073c0d Mon Sep 17 00:00:00 2001 From: Tim Cappalli Date: Wed, 13 Mar 2024 20:27:41 +0000 Subject: [PATCH 052/203] Update Windows reference page for 23H2 --- content/docs/reference/windows.md | 13 +++++++++---- layouts/shortcodes/ds-la_p-ea_s.html | 20 ++++++++++++++++++++ 2 files changed, 29 insertions(+), 4 deletions(-) create mode 100644 layouts/shortcodes/ds-la_p-ea_s.html diff --git a/content/docs/reference/windows.md b/content/docs/reference/windows.md index 96e693fb..01802c7e 100644 --- a/content/docs/reference/windows.md +++ b/content/docs/reference/windows.md @@ -11,7 +11,7 @@ weight: 1005 toc: true --- -{{% ds-cdaps %}} +{{% ds-la_p-ea_s %}} ## Overview @@ -20,7 +20,12 @@ Windows Hello, the local platform authenticator in Windows 10 and 11, has the fo - creating and using [***device-bound*** passkeys](../terms#device-bound-passkey) on the local device - creating and using [***device-bound*** passkeys](../terms#device-bound-passkey) on a FIDO2 security key -The following is also possible in both Windows 10 and 11: +The following is also possible in Windows 11 version 23H2 and newer: + +- using passkeys from iOS and iPadOS devices for signing into services in all browser and native apps using [FIDO Cross-Device Authentication](../terms#cross-device-authentication-cda) +- using passkeys from Android devices for signing into services in all browser and native apps using [FIDO Cross-Device Authentication](../terms#cross-device-authentication-cda) + +The following is also possible in both Windows 10 and Windows 11 (earlier than 23H2): - using passkeys from iOS and iPadOS devices in Chrome (108+) and Edge (108+) for signing in to web services using [FIDO Cross-Device Authentication](../terms#cross-device-authentication-cda) - using passkeys from Android devices in Chrome (108+) and Edge (108+) for signing in to web services using [FIDO Cross-Device Authentication](../terms#cross-device-authentication-cda) @@ -31,9 +36,9 @@ The following is also possible in both Windows 10 and 11: ### Cross-Device Authentication -Windows does not currently support [FIDO Cross-Device Authentication (CDA)](../terms#cross-device-authentication-cda) globally at the operating system level. CDA is available, however, directly in both Chrome and Edge on Windows 10 and 11. +Starting in Windows 11 version 23H2, [FIDO Cross-Device Authentication (CDA)](../terms#cross-device-authentication-cda) is supported globally at the operating system level and available for all apps and browsers. Persistent linking is available between Android devices (authenticator) and Windows 11 23H2+. iOS and iPadOS do not support persistent linking. -Persistent linking is available between Android devices (authenticator) and Chrome and Edge (clients) on Windows. iOS and iPadOS do not support persistent linking. +In Windows versions prior to 11 23H2, including Windows 10, support for [FIDO Cross-Device Authentication (CDA)](../terms#cross-device-authentication-cda) is only available in Chrome and Edge. It is not available globally. Persistent linking is available between Android devices (authenticator) and Chrome and Edge (clients) on these versions. iOS and iPadOS do not support persistent linking. ## Resources diff --git a/layouts/shortcodes/ds-la_p-ea_s.html b/layouts/shortcodes/ds-la_p-ea_s.html new file mode 100644 index 00000000..85333101 --- /dev/null +++ b/layouts/shortcodes/ds-la_p-ea_s.html @@ -0,0 +1,20 @@ +
+
+
+
+ Local Authenticator +

(create and use passkeys from the local device)

+ Partially Supported +
+
+
+
+ External Authenticator +

(create and use passkeys from another device)

+ Supported +
+
+
+
\ No newline at end of file From 677d3eb291021576e5922109b2464e5eb4e9f83b Mon Sep 17 00:00:00 2001 From: Eiji Kitamura Date: Thu, 14 Mar 2024 14:01:29 +0900 Subject: [PATCH 053/203] Update content/docs/reference/macos.md Co-authored-by: Matthew Miller --- content/docs/reference/macos.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/docs/reference/macos.md b/content/docs/reference/macos.md index 9f8340aa..2eff236b 100644 --- a/content/docs/reference/macos.md +++ b/content/docs/reference/macos.md @@ -81,7 +81,7 @@ On macOS, the user must set up a local system password. Enabling iCloud Keychain - When iCloud Keychain is enabled, but Touch ID is not configured on macOS or not available on the device (e.g. laptop lid is closed): - `userVerification='required'` asks for the system password on both passkey creation and passkey authentication. Since they fail locally if user verification fails, the server can always expect the UV flag to be `true`. - `userVerification='preferred'` skips user verification and returns the UV flag as `false` for both passkey creation and passkey authentication. - - Calling `PublicKeyCredential.isUserVerifyingPlatformAuthenticator()` always returns `true`. + - Calling `PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable()` always returns `true`. ## Resources From 05d9215e7500d7b782fe08ad2184928f85c79278 Mon Sep 17 00:00:00 2001 From: Eiji Kitamura Date: Thu, 14 Mar 2024 14:01:39 +0900 Subject: [PATCH 054/203] Update content/docs/reference/windows.md Co-authored-by: Matthew Miller --- content/docs/reference/windows.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/docs/reference/windows.md b/content/docs/reference/windows.md index 6b09377f..2e7db49e 100644 --- a/content/docs/reference/windows.md +++ b/content/docs/reference/windows.md @@ -45,7 +45,7 @@ Where these biometrics are not configured or available, both passkey creation an - When biometrics are not configured on Windows, or not available on the device: - The behavior for both `userVerification='required'` and `userVerification='preferred'` are the same: Windows Hello asks for the device PIN for both passkey creation and authentication. Since they fail locally if user verification fails, the server can always expect the UV flag to be `true`. - - Calling `PublicKeyCredential.isUserVerifyingPlatformAuthenticator()` returns `true`. + - Calling `PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable()` returns `true`. ## Resources From c3c7ba4296af077e78d5d420d94b10639a59fc7e Mon Sep 17 00:00:00 2001 From: Eiji Kitamura Date: Thu, 14 Mar 2024 14:01:47 +0900 Subject: [PATCH 055/203] Update content/docs/reference/macos.md Co-authored-by: Matthew Miller --- content/docs/reference/macos.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/docs/reference/macos.md b/content/docs/reference/macos.md index 2eff236b..f30fda85 100644 --- a/content/docs/reference/macos.md +++ b/content/docs/reference/macos.md @@ -65,7 +65,7 @@ On macOS, the user must set up a local system password. Enabling iCloud Keychain - When iCloud Keychain is enabled, but Touch ID is not configured on macOS or not available on the device (e.g. laptop lid is closed): - `userVerification='required'` asks the user to enter the local system password on both passkey creation and authentication. Since they fail locally if Touch ID setup fails, the server can always expect the UV flag to be `true`. - `userVerification='preferred'` skips user verification both on passkey creation and authentication. The UV flag is always `false`. - - Calling `PublicKeyCredential.isUserVerifyingPlatformAuthenticator()` always returns true. + - Calling `PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable()` always returns true. #### Chrome 120 with iCloud Keychain on macOS 14 From 0aaa1cf5ba6b8e6bb76bcf8dbc42ea7a71350355 Mon Sep 17 00:00:00 2001 From: Eiji Kitamura Date: Thu, 14 Mar 2024 14:01:56 +0900 Subject: [PATCH 056/203] Update content/docs/reference/macos.md Co-authored-by: Matthew Miller --- content/docs/reference/macos.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/docs/reference/macos.md b/content/docs/reference/macos.md index f30fda85..f00f08f4 100644 --- a/content/docs/reference/macos.md +++ b/content/docs/reference/macos.md @@ -77,7 +77,7 @@ On macOS, the user must set up a local system password. Enabling iCloud Keychain - macOS asks the user to enable iCloud Keychain on passkey creation. The UV flag sent to the server depends on the fallback user verification result. - On passkey authentication, it skips user verification immediately and returns a credential with the UV flag as `false`. - If Touch ID is configured, macOS asks for user verification with Touch ID.The UV flag sent to the server depends on the fallback user verification result. - - Calling `PublicKeyCredential.isUserVerifyingPlatformAuthenticator()` always returns `true`. + - Calling `PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable()` always returns `true`. - When iCloud Keychain is enabled, but Touch ID is not configured on macOS or not available on the device (e.g. laptop lid is closed): - `userVerification='required'` asks for the system password on both passkey creation and passkey authentication. Since they fail locally if user verification fails, the server can always expect the UV flag to be `true`. - `userVerification='preferred'` skips user verification and returns the UV flag as `false` for both passkey creation and passkey authentication. From bd2fe9802acac92c0fb0c817dcb54bc6dcca9792 Mon Sep 17 00:00:00 2001 From: Eiji Kitamura Date: Thu, 14 Mar 2024 14:02:07 +0900 Subject: [PATCH 057/203] Update content/docs/reference/ios.md Co-authored-by: Matthew Miller --- content/docs/reference/ios.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/docs/reference/ios.md b/content/docs/reference/ios.md index 77882424..59dd46ea 100644 --- a/content/docs/reference/ios.md +++ b/content/docs/reference/ios.md @@ -51,7 +51,7 @@ Both passkey creation and authentication ask for Touch ID or Face ID if one is c - When Touch ID or Face ID are not configured, but a passcode is configured on iOS: - The behavior with both `userVerification='required'` and `userVerification='preferred'` are the same: iOS asks for tapping on a "Confirmation" button, then a passcode for both passkey creation and authentication. Since they fail locally if user verification fails, the server can always expect the UV flag to be `true`. - - Calling `PublicKeyCredential.isUserVerifyingPlatformAuthenticator()` always returns true. + - Calling `PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable()` always returns true. - When a passcode is not configured on iOS: - The behavior with both `userVerification='required'` and `userVerification='preferred'` are the same: iOS asks the user to set up a passcode and then Touch ID or Face ID for both passkey creation and authentication. Since they fail locally before a passcode is configured, the server can always expect the UV flag to be `true`. - Calling `PublicKeyCredential.isUserVerifyingPlatformAuthenticator()` always returns true. From ff2724c39366b487dd79de0d67663603d1c1b8cb Mon Sep 17 00:00:00 2001 From: Eiji Kitamura Date: Thu, 14 Mar 2024 14:02:18 +0900 Subject: [PATCH 058/203] Update content/docs/reference/ios.md Co-authored-by: Matthew Miller --- content/docs/reference/ios.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/docs/reference/ios.md b/content/docs/reference/ios.md index 59dd46ea..b17c1e07 100644 --- a/content/docs/reference/ios.md +++ b/content/docs/reference/ios.md @@ -54,7 +54,7 @@ Both passkey creation and authentication ask for Touch ID or Face ID if one is c - Calling `PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable()` always returns true. - When a passcode is not configured on iOS: - The behavior with both `userVerification='required'` and `userVerification='preferred'` are the same: iOS asks the user to set up a passcode and then Touch ID or Face ID for both passkey creation and authentication. Since they fail locally before a passcode is configured, the server can always expect the UV flag to be `true`. - - Calling `PublicKeyCredential.isUserVerifyingPlatformAuthenticator()` always returns true. + - Calling `PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable()` always returns true. ## Resources From 371b535f1d0b72aa1cbdb913b35bf35a2eb36c16 Mon Sep 17 00:00:00 2001 From: Eiji Kitamura Date: Thu, 14 Mar 2024 14:02:29 +0900 Subject: [PATCH 059/203] Update content/docs/reference/macos.md Co-authored-by: Matthew Miller --- content/docs/reference/macos.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/docs/reference/macos.md b/content/docs/reference/macos.md index f00f08f4..fdc9591e 100644 --- a/content/docs/reference/macos.md +++ b/content/docs/reference/macos.md @@ -61,7 +61,7 @@ On macOS, the user must set up a local system password. Enabling iCloud Keychain - On passkey authentication: - If Touch ID is not configured, macOS skips user verification and returns the UV flag as `false`. - If Touch ID is configured, macOS asks for user verification with Touch ID and returns the UV flag as `true`. - - Calling `PublicKeyCredential.isUserVerifyingPlatformAuthenticator()` always returns true. + - Calling `PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable()` always returns true. - When iCloud Keychain is enabled, but Touch ID is not configured on macOS or not available on the device (e.g. laptop lid is closed): - `userVerification='required'` asks the user to enter the local system password on both passkey creation and authentication. Since they fail locally if Touch ID setup fails, the server can always expect the UV flag to be `true`. - `userVerification='preferred'` skips user verification both on passkey creation and authentication. The UV flag is always `false`. From 28c7a52aab8c0e3a7e523a288c2c9684e659451b Mon Sep 17 00:00:00 2001 From: Eiji Kitamura Date: Thu, 14 Mar 2024 14:03:04 +0900 Subject: [PATCH 060/203] Update content/docs/reference/windows.md Co-authored-by: Matthew Miller --- content/docs/reference/windows.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/docs/reference/windows.md b/content/docs/reference/windows.md index 2e7db49e..3a8ef0b6 100644 --- a/content/docs/reference/windows.md +++ b/content/docs/reference/windows.md @@ -37,7 +37,7 @@ Persistent linking is available between Android devices (authenticator) and Chro ### User Verification Behavior -When a user tries to interact with a passkey on Windows 11, one of screen lock methods is used for user verification via Windows Hello. Starting in Windows 11 22H2, users must set up Windows Hello with at least a device PIN. Setting up facial recognition or fingerprint recognition are optional. +When a user tries to interact with a passkey on Windows 11, an available screen unlock method is used for user verification via Windows Hello. Starting in Windows 11 22H2, users must set up Windows Hello with at least a device PIN. Setting up facial recognition or fingerprint recognition are optional. Where these biometrics are not configured or available, both passkey creation and authentication fall back to asking for the Windows Hello PIN. From a6915adac3ea3b6ba56e80d083aaa5ec2304c16e Mon Sep 17 00:00:00 2001 From: Eiji Kitamura Date: Thu, 14 Mar 2024 14:03:22 +0900 Subject: [PATCH 061/203] Update content/docs/reference/ios.md Co-authored-by: Matthew Miller --- content/docs/reference/ios.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/docs/reference/ios.md b/content/docs/reference/ios.md index b17c1e07..2fe65e66 100644 --- a/content/docs/reference/ios.md +++ b/content/docs/reference/ios.md @@ -43,7 +43,7 @@ To replace a legacy platform credential with a passkey, start a credential regis ### User Verification Behavior -When a user tries to interact with a passkey on iOS or iPadOS, one of screen lock methods is used for user verification. Users can configure a passcode and Touch ID or Face ID as their screen lock. +When a user tries to interact with a passkey on iOS or iPadOS, an available screen unlock method is used for user verification. Users can configure a passcode and Touch ID or Face ID as their screen unlock. Both passkey creation and authentication ask for Touch ID or Face ID if one is configured, but fallback to a passcode if they are not. iOS asks the user to configure a passcode (and Touch ID or Face ID) if not yet set up. From 79da5e2b1288cee54c8ecbea95e2d3db04f6cd93 Mon Sep 17 00:00:00 2001 From: Eiji Kitamura Date: Thu, 14 Mar 2024 14:03:30 +0900 Subject: [PATCH 062/203] Update content/docs/reference/android.md Co-authored-by: Matthew Miller --- content/docs/reference/android.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/docs/reference/android.md b/content/docs/reference/android.md index 66747f31..bc5f9ef2 100644 --- a/content/docs/reference/android.md +++ b/content/docs/reference/android.md @@ -62,7 +62,7 @@ Where these biometrics are not configured or available, both passkey creation an - The behavior with both `userVerification='required'` and `userVerification='preferred'` are the same: - It asks for an external security key on passkey creation. The UV flag the server receives depends on the result of user verification with the external security key. - It asks the user to set up a device PIN or pattern on passkey authentication. Since they fail locally before a PIN or a pattern is configured, the server does not receive a response. - - Calling `PublicKeyCredential.isUserVerifyingPlatformAuthenticator()` returns `false`. + - Calling `PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable()` returns `false`. ## Resources From bf8a0b6211d15ecb90fbc3142365cac8cad8cd7a Mon Sep 17 00:00:00 2001 From: Eiji Kitamura Date: Thu, 14 Mar 2024 14:03:37 +0900 Subject: [PATCH 063/203] Update content/docs/reference/android.md Co-authored-by: Matthew Miller --- content/docs/reference/android.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/docs/reference/android.md b/content/docs/reference/android.md index bc5f9ef2..bd7d0d86 100644 --- a/content/docs/reference/android.md +++ b/content/docs/reference/android.md @@ -57,7 +57,7 @@ Where these biometrics are not configured or available, both passkey creation an - When biometrics are not configured on Android, or not available on the device: - The behavior with both `userVerification='required'` and `userVerification='preferred'` are the same: it asks for the device PIN or pattern for both passkey creation and authentication. Since they fail locally if user verification fails, the server can always expect the UV flag to be `true`. - - Calling `PublicKeyCredential.isUserVerifyingPlatformAuthenticator()` returns `true`. + - Calling `PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable()` returns `true`. - When a device PIN or pattern are not configured on Android: - The behavior with both `userVerification='required'` and `userVerification='preferred'` are the same: - It asks for an external security key on passkey creation. The UV flag the server receives depends on the result of user verification with the external security key. From 9499f6bab60c547a2c28ce8bcbd384beb018d2c3 Mon Sep 17 00:00:00 2001 From: Eiji Kitamura Date: Thu, 14 Mar 2024 14:03:48 +0900 Subject: [PATCH 064/203] Update content/docs/reference/android.md Co-authored-by: Matthew Miller --- content/docs/reference/android.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/docs/reference/android.md b/content/docs/reference/android.md index bd7d0d86..a0d8e638 100644 --- a/content/docs/reference/android.md +++ b/content/docs/reference/android.md @@ -51,7 +51,7 @@ When an authenticator is not persistently linked, a QR code must be scanned on e When a user tries to interact with a passkey on Android, one of screen lock methods is used for user verification. Users can configure a device PIN or a pattern and biometric (fingerprint or face) as their screen lock. -Where these biometrics are not configured or available, both passkey creation and authentication fall back to asking for the device PIN or pattern. +When biometrics are not configured or available, both passkey creation and authentication fall back to asking for the device PIN or pattern. #### Chrome 120 From 282ce909df94e5c2bda0c9c6ce2ac8c58604651b Mon Sep 17 00:00:00 2001 From: Eiji Kitamura Date: Thu, 14 Mar 2024 14:04:00 +0900 Subject: [PATCH 065/203] Update content/docs/reference/android.md Co-authored-by: Matthew Miller --- content/docs/reference/android.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/docs/reference/android.md b/content/docs/reference/android.md index a0d8e638..c820e8c8 100644 --- a/content/docs/reference/android.md +++ b/content/docs/reference/android.md @@ -49,7 +49,7 @@ When an authenticator is not persistently linked, a QR code must be scanned on e ### User Verification Behavior -When a user tries to interact with a passkey on Android, one of screen lock methods is used for user verification. Users can configure a device PIN or a pattern and biometric (fingerprint or face) as their screen lock. +Users can configure a device PIN, pattern, and/or biometric (fingerprint or face) as their device screen lock. When a user interacts with a passkey on Android, one of these available screen unlock methods is used for user verification. When biometrics are not configured or available, both passkey creation and authentication fall back to asking for the device PIN or pattern. From 620f9f8aba1b75c75fdd9b6762055087988ea670 Mon Sep 17 00:00:00 2001 From: Eiji Kitamura Date: Thu, 14 Mar 2024 14:26:54 +0900 Subject: [PATCH 066/203] Update --- content/docs/reference/ios.md | 2 +- content/docs/reference/windows.md | 2 +- hugo_stats.json | 4 +--- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/content/docs/reference/ios.md b/content/docs/reference/ios.md index 2fe65e66..18589fde 100644 --- a/content/docs/reference/ios.md +++ b/content/docs/reference/ios.md @@ -53,7 +53,7 @@ Both passkey creation and authentication ask for Touch ID or Face ID if one is c - The behavior with both `userVerification='required'` and `userVerification='preferred'` are the same: iOS asks for tapping on a "Confirmation" button, then a passcode for both passkey creation and authentication. Since they fail locally if user verification fails, the server can always expect the UV flag to be `true`. - Calling `PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable()` always returns true. - When a passcode is not configured on iOS: - - The behavior with both `userVerification='required'` and `userVerification='preferred'` are the same: iOS asks the user to set up a passcode and then Touch ID or Face ID for both passkey creation and authentication. Since they fail locally before a passcode is configured, the server can always expect the UV flag to be `true`. + - The behavior with both `userVerification='required'` and `userVerification='preferred'` are the same: User verification fails, iOS asks the user to set up a passcode and then Touch ID or Face ID for both passkey creation and authentication. Since the failure happens locally, the server can expect at least a passcode is already configured and the UV flag to be `true`. - Calling `PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable()` always returns true. ## Resources diff --git a/content/docs/reference/windows.md b/content/docs/reference/windows.md index 3a8ef0b6..7809e479 100644 --- a/content/docs/reference/windows.md +++ b/content/docs/reference/windows.md @@ -44,7 +44,7 @@ Where these biometrics are not configured or available, both passkey creation an #### Chrome 120 - When biometrics are not configured on Windows, or not available on the device: - - The behavior for both `userVerification='required'` and `userVerification='preferred'` are the same: Windows Hello asks for the device PIN for both passkey creation and authentication. Since they fail locally if user verification fails, the server can always expect the UV flag to be `true`. + - The behavior for both `userVerification='required'` and `userVerification='preferred'` are the same: Windows Hello asks for the device PIN for both passkey creation and authentication. Since user verification fails locally, the server only receives a successful response with the UV flag to be `true`. - Calling `PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable()` returns `true`. ## Resources diff --git a/hugo_stats.json b/hugo_stats.json index d8e5fd41..20f6e233 100644 --- a/hugo_stats.json +++ b/hugo_stats.json @@ -331,8 +331,6 @@ "cda-authenticator", "cda-client", "chrome-120", - "chrome-120-on-macos-14", - "chrome-120-on-macos-14-with-icloud-keychain", "chrome-120-with-icloud-keychain-on-macos-14", "client-to-authenticator-protocol-ctap", "community-resources", @@ -394,7 +392,7 @@ "roaming-authenticator", "ruby", "rust", - "safari-on-ios-17", + "safari-on-ios--ipados-17", "safari-on-macos-14", "sample-code", "search-form", From be1c1d04488fb9d00e5d8fd99e4db0ae7dec534b Mon Sep 17 00:00:00 2001 From: maudnals Date: Tue, 19 Mar 2024 13:59:07 +0100 Subject: [PATCH 067/203] Added list of passkey criteria --- content/docs/tools-libraries/libraries.md | 101 ++++++++++++++++++++++ 1 file changed, 101 insertions(+) diff --git a/content/docs/tools-libraries/libraries.md b/content/docs/tools-libraries/libraries.md index 39753afb..783e5009 100644 --- a/content/docs/tools-libraries/libraries.md +++ b/content/docs/tools-libraries/libraries.md @@ -12,6 +12,107 @@ weight: 701 toc: true --- +## Selection criteria + +Companies that want to own passwordless authentication internally, or are +looking to implement a turnkey solution for passkeys, will likely look for +libraries or vendors. When selecting a library to implement passkeys, what +should [Relying Party](/docs/reference/terms/#relying-party-rp) developers keep an eye on? + +Note: A small set of these criteria are not specific to passkeys, but are useful +to keep in mind when selecting an open-source solution. + +### WebAuthn versions and capabilities + +- **Version.** Check which version of the spec the library supports ([Level + 2](https://www.w3.org/TR/webauthn-2/), [Level + 3](https://www.w3.org/TR/webauthn-3/)…) +- **Features and capabilities**. Check whether the library includes key + features and capabilities for your use case. + - Does the library help with generating registration and authentication + options? Does it help with verification of the registration and + authentication response? From a Relying Party perspective, these are the + key steps of your implementation; make sure the library you select + provides useful functions for these steps. + - If you're thinking of using attestation features: + - Does the library help leverage [FIDO + MDS](https://fidoalliance.org/metadata/) in some way? + - Can it verify all attestation statement formats? + - Does the library support [conditional + UI](https://github.com/w3c/webauthn/wiki/Explainer%3A-WebAuthn-Conditional-UI) + (sending empty `allowCredentials`)? + +### Security + +This is not a comprehensive security checklist; this only outlines a few +critical elements. Make sure to run the library through your usual security +reviews / audits. + +- **Challenge parameters:** Ensure the solution follows the [challenge + length](https://www.w3.org/TR/webauthn-3/#sctn-cryptographic-challenges) and + [timeout](https://www.w3.org/TR/webauthn-3/#sctn-createCredential) + recommended in the specification. +- **User ID:** Prioritize solutions that encourage random identifiers, to + enhance user privacy. Passkeys should be + [free](https://www.w3.org/TR/webauthn-3/#sctn-user-handle-privacy) of + personally identifying information (PII). `user.id` should be a [completely + random + identifier](https://www.w3.org/TR/webauthn-2/#dom-publickeycredentialuserentity-id), + and should be different from the ID you've assigned to a user internally. +- **Verification steps: **Check whether the library follows verification + steps, during + [registration](https://developers.devsite.corp.google.com/identity/passkeys/developer-guides/server-registration) + and + [authentication](https://developers.devsite.corp.google.com/identity/passkeys/developer-guides/server-authentication). + +### UX + +If you're looking for a library offering UI elements: + +- **Visual consistency:** Check that the solution uses [standardized + icons](https://fidoalliance.org/passkeys/#:~:text=a%20user%E2%80%99s%20passkeys.-,Passkey%20Logo,-Look%20for%20the). +- **Clear language:** Instructions using plain language are critical for + broader user understanding. Prioritize solutions aligned with the [FIDO UX + guidelines](https://fidoalliance.org/ux-guidelines-for-passkey-creation-and-sign-ins/). + +More UX/UI guidelines can be found on Google Identity: [Communicating passkeys +to +users](https://developers.google.com/identity/passkeys/ux/communicating-passkeys) +and [Passkeys user interface +design](https://developers.google.com/identity/passkeys/ux/user-interface-design). + +### Developer experience + +- **Full-stack coverage:** A library that offers tightly-integrated frontend + and backend components, like in + [SimpleWebAuthn](https://simplewebauthn.dev/docs/), can streamline your + integration. +- **Developer documentation: **Has a maintained docs website to ease the + integration process. + +### Developer involvement and maintenance + +- **Standards participation: **Solution maintainers who are active in shaping + WebAuthn standards signal expertise. Check whether the maintainers are + active in the standards process in some way, in groups such as the [Web + Authentication Working Group (WAWG)](https://www.w3.org/groups/wg/webauthn/) + or the [WebAuthn Adoption Community Group + (WACG)](https://www.w3.org/groups/cg/webauthn-adoption/). The w3c webAuthn + [contributor list](https://github.com/w3c/webauthn/graphs/contributors) can + be a good place to check. +- **Open-source maintenance: **For open-source options, investigate their + community activity. A few active issues, or many issues with up-to-date + labels (assuming these require manual assignment), and comments by + contributors, are all signals of an active community. +- Note that standards can be slow-moving! As a result, WebAuthn/passkey + libraries can go a long time between updates if there aren't any real issues + with it—but it doesn't mean they're unmaintained. + +### Licensing + +Review the solution's licensing model (e.g., MIT, Apache, commercial) in the +context of your project. + ## Updated for passkeys ### Rust From 9e356de94f9e16fc01471d4ae19f1dee801f7378 Mon Sep 17 00:00:00 2001 From: maudnals Date: Tue, 19 Mar 2024 14:01:16 +0100 Subject: [PATCH 068/203] Added passkey lib selection criteria --- content/docs/tools-libraries/libraries.md | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/content/docs/tools-libraries/libraries.md b/content/docs/tools-libraries/libraries.md index 783e5009..69f90613 100644 --- a/content/docs/tools-libraries/libraries.md +++ b/content/docs/tools-libraries/libraries.md @@ -24,10 +24,10 @@ to keep in mind when selecting an open-source solution. ### WebAuthn versions and capabilities -- **Version.** Check which version of the spec the library supports ([Level +- **Version**: Check which version of the spec the library supports ([Level 2](https://www.w3.org/TR/webauthn-2/), [Level 3](https://www.w3.org/TR/webauthn-3/)…) -- **Features and capabilities**. Check whether the library includes key +- **Features and capabilities**: Check whether the library includes key features and capabilities for your use case. - Does the library help with generating registration and authentication options? Does it help with verification of the registration and @@ -48,18 +48,18 @@ This is not a comprehensive security checklist; this only outlines a few critical elements. Make sure to run the library through your usual security reviews / audits. -- **Challenge parameters:** Ensure the solution follows the [challenge +- **Challenge parameters**: Ensure the solution follows the [challenge length](https://www.w3.org/TR/webauthn-3/#sctn-cryptographic-challenges) and [timeout](https://www.w3.org/TR/webauthn-3/#sctn-createCredential) recommended in the specification. -- **User ID:** Prioritize solutions that encourage random identifiers, to +- **User ID**: Prioritize solutions that encourage random identifiers, to enhance user privacy. Passkeys should be [free](https://www.w3.org/TR/webauthn-3/#sctn-user-handle-privacy) of personally identifying information (PII). `user.id` should be a [completely random identifier](https://www.w3.org/TR/webauthn-2/#dom-publickeycredentialuserentity-id), and should be different from the ID you've assigned to a user internally. -- **Verification steps: **Check whether the library follows verification +- **Verification steps**: Check whether the library follows verification steps, during [registration](https://developers.devsite.corp.google.com/identity/passkeys/developer-guides/server-registration) and @@ -69,9 +69,9 @@ reviews / audits. If you're looking for a library offering UI elements: -- **Visual consistency:** Check that the solution uses [standardized +- **Visual consistency**: Check that the solution uses [standardized icons](https://fidoalliance.org/passkeys/#:~:text=a%20user%E2%80%99s%20passkeys.-,Passkey%20Logo,-Look%20for%20the). -- **Clear language:** Instructions using plain language are critical for +- **Clear language**: Instructions using plain language are critical for broader user understanding. Prioritize solutions aligned with the [FIDO UX guidelines](https://fidoalliance.org/ux-guidelines-for-passkey-creation-and-sign-ins/). @@ -83,16 +83,16 @@ design](https://developers.google.com/identity/passkeys/ux/user-interface-design ### Developer experience -- **Full-stack coverage:** A library that offers tightly-integrated frontend +- **Full-stack coverage**: A library that offers tightly-integrated frontend and backend components, like in [SimpleWebAuthn](https://simplewebauthn.dev/docs/), can streamline your integration. -- **Developer documentation: **Has a maintained docs website to ease the +- **Developer documentation**: Check that the library has a maintained docs website to ease the integration process. ### Developer involvement and maintenance -- **Standards participation: **Solution maintainers who are active in shaping +- **Standards participation**: Solution maintainers who are active in shaping WebAuthn standards signal expertise. Check whether the maintainers are active in the standards process in some way, in groups such as the [Web Authentication Working Group (WAWG)](https://www.w3.org/groups/wg/webauthn/) @@ -100,7 +100,7 @@ design](https://developers.google.com/identity/passkeys/ux/user-interface-design (WACG)](https://www.w3.org/groups/cg/webauthn-adoption/). The w3c webAuthn [contributor list](https://github.com/w3c/webauthn/graphs/contributors) can be a good place to check. -- **Open-source maintenance: **For open-source options, investigate their +- **Open-source maintenance**: For open-source options, investigate their community activity. A few active issues, or many issues with up-to-date labels (assuming these require manual assignment), and comments by contributors, are all signals of an active community. From faf04068b4bc7dce2092c811c4644bed78a94d23 Mon Sep 17 00:00:00 2001 From: maudnals Date: Tue, 19 Mar 2024 17:19:22 +0100 Subject: [PATCH 069/203] Fixed links --- content/docs/tools-libraries/libraries.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/docs/tools-libraries/libraries.md b/content/docs/tools-libraries/libraries.md index 69f90613..a6cc953f 100644 --- a/content/docs/tools-libraries/libraries.md +++ b/content/docs/tools-libraries/libraries.md @@ -61,9 +61,9 @@ reviews / audits. and should be different from the ID you've assigned to a user internally. - **Verification steps**: Check whether the library follows verification steps, during - [registration](https://developers.devsite.corp.google.com/identity/passkeys/developer-guides/server-registration) + [registration](https://developers.google.com/identity/passkeys/developer-guides/server-registration) and - [authentication](https://developers.devsite.corp.google.com/identity/passkeys/developer-guides/server-authentication). + [authentication](https://developers.google.com/identity/passkeys/developer-guides/server-authentication). ### UX From 6a7a1d707a6361bf55b2baf1090dbaa49251324a Mon Sep 17 00:00:00 2001 From: Tim Cappalli Date: Thu, 21 Mar 2024 17:23:04 +0000 Subject: [PATCH 070/203] update weights --- content/docs/reference/specs.md | 2 +- content/docs/reference/terms/index.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/content/docs/reference/specs.md b/content/docs/reference/specs.md index 42f72e6d..f13b3fdb 100644 --- a/content/docs/reference/specs.md +++ b/content/docs/reference/specs.md @@ -8,7 +8,7 @@ images: [] menu: docs: parent: "reference" -weight: 1102 +weight: 1111 toc: true --- diff --git a/content/docs/reference/terms/index.md b/content/docs/reference/terms/index.md index 411d444a..b6b51a69 100644 --- a/content/docs/reference/terms/index.md +++ b/content/docs/reference/terms/index.md @@ -8,7 +8,7 @@ images: [] menu: docs: parent: "reference" -weight: 1101 +weight: 1110 toc: true --- From 471e0f4282374ebe0d651fb0e0eb0278a3a9b2fe Mon Sep 17 00:00:00 2001 From: Tim Cappalli Date: Thu, 21 Mar 2024 18:09:07 +0000 Subject: [PATCH 071/203] adds known issues --- content/docs/reference/known-issues.md | 29 ++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 content/docs/reference/known-issues.md diff --git a/content/docs/reference/known-issues.md b/content/docs/reference/known-issues.md new file mode 100644 index 00000000..9ab12f89 --- /dev/null +++ b/content/docs/reference/known-issues.md @@ -0,0 +1,29 @@ +--- +title: "Known Issues" +description: "A list of known issues with passkey implementations" +date: 2022-09-03T16:09:38.358Z +draft: false +images: [] +menu: + docs: + parent: "reference" +weight: 1101 +toc: false +layout: matrix +--- + + +## User Verification + +The following list of passkey providers have not implemented [User Verification](../terms#user-verification-uv) in a spec-compliant manner. + +| **Provider** | **Architecture** | **UV Required Behavior** | **UV Flag** | +| ------------ | ---------------- | ----------------------------- | ------------------------ | +| 1Password | Extension | ❌ Handles request without UV | ❌ Always replies `True` | +| 1Password | Native | ✅ Performs UV | ✅ UV flag accurate | +| Bitwarden | Extension | ❌ Handles request without UV | ❌ Always replies `True` | +| KeepassXC | Extension | ❌ Handles request without UV | ❌ Always replies `True` | +| ProtonPass | Extension | ❌ Handles request without UV | ❌ Always replies `True` | +| ProtonPass | Native | ❌ Handles request without UV | ❌ Always replies `True` | + +> **Architecture**: `Extension` = web browser extension, `Native` = OS native app using provider APIs From f8a377cea98d448d1afc7bbd25a95293f35aea9f Mon Sep 17 00:00:00 2001 From: Tim Cappalli Date: Thu, 21 Mar 2024 18:29:36 +0000 Subject: [PATCH 072/203] add Eiji --- content/about/_index.md | 1 + 1 file changed, 1 insertion(+) diff --git a/content/about/_index.md b/content/about/_index.md index 145844da..3ed2b618 100644 --- a/content/about/_index.md +++ b/content/about/_index.md @@ -58,6 +58,7 @@ Matthew Miller | - Christiaan Brand - Garrett Davidson - Jesse Endahl +- Eiji Kitamura - Akshay Kumar - Dominique Hazael-Massieux - Jeff Hodges From 49deccddd8e0b087f0d558fb2ef93c04dcfb0757 Mon Sep 17 00:00:00 2001 From: Tim Cappalli Date: Tue, 26 Mar 2024 19:39:43 +0000 Subject: [PATCH 073/203] fix Proton Pass name and fix whitespace --- content/docs/reference/android.md | 2 +- content/docs/reference/known-issues.md | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/content/docs/reference/android.md b/content/docs/reference/android.md index c820e8c8..b16d3715 100644 --- a/content/docs/reference/android.md +++ b/content/docs/reference/android.md @@ -49,7 +49,7 @@ When an authenticator is not persistently linked, a QR code must be scanned on e ### User Verification Behavior -Users can configure a device PIN, pattern, and/or biometric (fingerprint or face) as their device screen lock. When a user interacts with a passkey on Android, one of these available screen unlock methods is used for user verification. +Users can configure a device PIN, pattern, and/or biometric (fingerprint or face) as their device screen lock. When a user interacts with a passkey on Android, one of these available screen unlock methods is used for user verification. When biometrics are not configured or available, both passkey creation and authentication fall back to asking for the device PIN or pattern. diff --git a/content/docs/reference/known-issues.md b/content/docs/reference/known-issues.md index 9ab12f89..fd1df162 100644 --- a/content/docs/reference/known-issues.md +++ b/content/docs/reference/known-issues.md @@ -23,7 +23,7 @@ The following list of passkey providers have not implemented [User Verification] | 1Password | Native | ✅ Performs UV | ✅ UV flag accurate | | Bitwarden | Extension | ❌ Handles request without UV | ❌ Always replies `True` | | KeepassXC | Extension | ❌ Handles request without UV | ❌ Always replies `True` | -| ProtonPass | Extension | ❌ Handles request without UV | ❌ Always replies `True` | -| ProtonPass | Native | ❌ Handles request without UV | ❌ Always replies `True` | +| Proton Pass | Extension | ❌ Handles request without UV | ❌ Always replies `True` | +| Proton Pass | Native | ❌ Handles request without UV | ❌ Always replies `True` | > **Architecture**: `Extension` = web browser extension, `Native` = OS native app using provider APIs From 384a92de13755fe9f4c7a0bccf93c88ef301d9bb Mon Sep 17 00:00:00 2001 From: Tim Cappalli Date: Wed, 27 Mar 2024 23:42:12 +0000 Subject: [PATCH 074/203] Edge 122 autofill UI --- content/device-support/_index.md | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/content/device-support/_index.md b/content/device-support/_index.md index 4055fd86..482d029e 100644 --- a/content/device-support/_index.md +++ b/content/device-support/_index.md @@ -123,14 +123,9 @@ Passkeys created in **macOS** can be used on:
Chrome
+ Edge 122+
- - -
- Edge -
-

@@ -168,13 +163,9 @@ Passkeys created in **macOS** can be used on:
Firefox 4
+ Edge 122+
- - -
- Edge -
@@ -188,14 +179,10 @@ Passkeys created in **macOS** can be used on: Chrome 3
Firefox 4 -
-
- - -
- Edge + Edge 122+
+
From 790716d807c43dbb7aa05316186c86eead17f207 Mon Sep 17 00:00:00 2001 From: Tim Cappalli Date: Wed, 27 Mar 2024 23:56:22 +0000 Subject: [PATCH 075/203] add versions and update sups --- content/device-support/_index.md | 35 ++++++++++++++------------------ 1 file changed, 15 insertions(+), 20 deletions(-) diff --git a/content/device-support/_index.md b/content/device-support/_index.md index 482d029e..e81d109c 100644 --- a/content/device-support/_index.md +++ b/content/device-support/_index.md @@ -121,7 +121,7 @@ Passkeys created in **macOS** can be used on:
- Chrome + Chrome 108+
Edge 122+
@@ -159,9 +159,9 @@ Passkeys created in **macOS** can be used on:
Safari
- Chrome + Chrome 108+
- Firefox 4 + Firefox 122+
Edge 122+
@@ -176,11 +176,11 @@ Passkeys created in **macOS** can be used on:
- Chrome 3 + Chrome 108+ 3
- Firefox 4 + Firefox 122+ 3
- Edge 122+ + Edge 122+ 3

@@ -465,7 +465,7 @@ Passkeys created in **macOS** can be used on:
- Chrome 5 + Chrome 4 @@ -476,9 +476,9 @@ Passkeys created in **macOS** can be used on:
- Chrome 5 + Chrome 4
- Edge 5 + Edge 4

@@ -492,9 +492,9 @@ Passkeys created in **macOS** can be used on:
- Chrome 5 + Chrome 4
- Edge 5 + Edge 4

@@ -508,9 +508,9 @@ Passkeys created in **macOS** can be used on:
- Chrome 5 6 + Chrome 4 5
- Edge 5 6 + Edge 4 5

@@ -578,16 +578,11 @@ Passkeys created in **macOS** can be used on: for caveats
3 - Chrome M108 and Windows 11 22H2 + Windows 11 22H2+
4 - - Firefox 122 - -
- 5 Experimental (behind flag)
- 6 + 5 Partial support (requires Windows changes) From 98d3f1cb04d639dbd8e0fd7ffab6af935293839b Mon Sep 17 00:00:00 2001 From: maudnals Date: Thu, 28 Mar 2024 14:27:37 +0100 Subject: [PATCH 076/203] Docs: Addressed review comments --- content/docs/tools-libraries/libraries.md | 41 ++++------------------- 1 file changed, 7 insertions(+), 34 deletions(-) diff --git a/content/docs/tools-libraries/libraries.md b/content/docs/tools-libraries/libraries.md index a6cc953f..afd2fa86 100644 --- a/content/docs/tools-libraries/libraries.md +++ b/content/docs/tools-libraries/libraries.md @@ -38,32 +38,13 @@ to keep in mind when selecting an open-source solution. - Does the library help leverage [FIDO MDS](https://fidoalliance.org/metadata/) in some way? - Can it verify all attestation statement formats? - - Does the library support [conditional - UI](https://github.com/w3c/webauthn/wiki/Explainer%3A-WebAuthn-Conditional-UI) - (sending empty `allowCredentials`)? - -### Security - -This is not a comprehensive security checklist; this only outlines a few -critical elements. Make sure to run the library through your usual security -reviews / audits. - -- **Challenge parameters**: Ensure the solution follows the [challenge - length](https://www.w3.org/TR/webauthn-3/#sctn-cryptographic-challenges) and - [timeout](https://www.w3.org/TR/webauthn-3/#sctn-createCredential) - recommended in the specification. -- **User ID**: Prioritize solutions that encourage random identifiers, to - enhance user privacy. Passkeys should be - [free](https://www.w3.org/TR/webauthn-3/#sctn-user-handle-privacy) of - personally identifying information (PII). `user.id` should be a [completely - random - identifier](https://www.w3.org/TR/webauthn-2/#dom-publickeycredentialuserentity-id), - and should be different from the ID you've assigned to a user internally. -- **Verification steps**: Check whether the library follows verification - steps, during - [registration](https://developers.google.com/identity/passkeys/developer-guides/server-registration) - and - [authentication](https://developers.google.com/identity/passkeys/developer-guides/server-authentication). + +### Verification steps + +Check whether the library follows the necessary verification steps: +- During + [registration](https://developers.google.com/identity/passkeys/developer-guides/server-registration#appendix_verification_of_the_registration_response) +- During [authentication](https://developers.google.com/identity/passkeys/developer-guides/server-authentication#appendix_verification_of_the_authentication_response). ### UX @@ -92,14 +73,6 @@ design](https://developers.google.com/identity/passkeys/ux/user-interface-design ### Developer involvement and maintenance -- **Standards participation**: Solution maintainers who are active in shaping - WebAuthn standards signal expertise. Check whether the maintainers are - active in the standards process in some way, in groups such as the [Web - Authentication Working Group (WAWG)](https://www.w3.org/groups/wg/webauthn/) - or the [WebAuthn Adoption Community Group - (WACG)](https://www.w3.org/groups/cg/webauthn-adoption/). The w3c webAuthn - [contributor list](https://github.com/w3c/webauthn/graphs/contributors) can - be a good place to check. - **Open-source maintenance**: For open-source options, investigate their community activity. A few active issues, or many issues with up-to-date labels (assuming these require manual assignment), and comments by From 35834178e71b05e9e4e95fe4d90a3bce96bb6ae0 Mon Sep 17 00:00:00 2001 From: Tim Cappalli Date: Thu, 28 Mar 2024 18:58:17 +0000 Subject: [PATCH 077/203] fix formatting and md issues --- content/about/_index.md | 3 +- content/docs/tools-libraries/libraries.md | 62 +++++++---------------- 2 files changed, 20 insertions(+), 45 deletions(-) diff --git a/content/about/_index.md b/content/about/_index.md index 3ed2b618..c7325c1e 100644 --- a/content/about/_index.md +++ b/content/about/_index.md @@ -53,6 +53,7 @@ Matthew Miller | ## Contributors +- Anders Åberg - Dirk Balfanz - Arnar Birgisson - Christiaan Brand @@ -64,7 +65,7 @@ Matthew Miller | - Jeff Hodges - Adam Langley - Ricky Mondello -- Anders Åberg +- Maud Nalpas - Cody Salas ## Copyright and Attributions diff --git a/content/docs/tools-libraries/libraries.md b/content/docs/tools-libraries/libraries.md index afd2fa86..089a61f5 100644 --- a/content/docs/tools-libraries/libraries.md +++ b/content/docs/tools-libraries/libraries.md @@ -14,72 +14,46 @@ toc: true ## Selection criteria -Companies that want to own passwordless authentication internally, or are -looking to implement a turnkey solution for passkeys, will likely look for -libraries or vendors. When selecting a library to implement passkeys, what -should [Relying Party](/docs/reference/terms/#relying-party-rp) developers keep an eye on? +Companies that want to own passwordless authentication internally, or are looking to implement a turnkey solution for passkeys, will likely look for libraries or vendors. When selecting a library to implement passkeys, what should [Relying Party](/docs/reference/terms/#relying-party-rp) developers keep an eye on? Note: A small set of these criteria are not specific to passkeys, but are useful to keep in mind when selecting an open-source solution. ### WebAuthn versions and capabilities -- **Version**: Check which version of the spec the library supports ([Level - 2](https://www.w3.org/TR/webauthn-2/), [Level - 3](https://www.w3.org/TR/webauthn-3/)…) -- **Features and capabilities**: Check whether the library includes key - features and capabilities for your use case. - - Does the library help with generating registration and authentication - options? Does it help with verification of the registration and - authentication response? From a Relying Party perspective, these are the - key steps of your implementation; make sure the library you select - provides useful functions for these steps. - - If you're thinking of using attestation features: - - Does the library help leverage [FIDO - MDS](https://fidoalliance.org/metadata/) in some way? - - Can it verify all attestation statement formats? +- **Version**: Check which version of the spec the library supports ([Level 2](https://www.w3.org/TR/webauthn-2/), [Level 3](https://www.w3.org/TR/webauthn-3/)…) +- **Features and capabilities**: Check whether the library includes key features and capabilities for your use case. + - Does the library help with generating registration and authentication options? Does it help with verification of the registration and authentication response? From a Relying Party perspective, these are the key steps of your implementation; make sure the library you select provides useful functions for these steps. + - If you're thinking of using attestation features: + - Does the library help leverage [FIDO MDS](https://fidoalliance.org/metadata/) in some way? + - Can it verify all attestation statement formats? ### Verification steps Check whether the library follows the necessary verification steps: -- During - [registration](https://developers.google.com/identity/passkeys/developer-guides/server-registration#appendix_verification_of_the_registration_response) -- During [authentication](https://developers.google.com/identity/passkeys/developer-guides/server-authentication#appendix_verification_of_the_authentication_response). + +- During [registration](https://developers.google.com/identity/passkeys/developer-guides/server-registration#appendix_verification_of_the_registration_response) +- During [authentication](https://developers.google.com/identity/passkeys/developer-guides/server-authentication#appendix_verification_of_the_authentication_response) ### UX If you're looking for a library offering UI elements: -- **Visual consistency**: Check that the solution uses [standardized - icons](https://fidoalliance.org/passkeys/#:~:text=a%20user%E2%80%99s%20passkeys.-,Passkey%20Logo,-Look%20for%20the). -- **Clear language**: Instructions using plain language are critical for - broader user understanding. Prioritize solutions aligned with the [FIDO UX - guidelines](https://fidoalliance.org/ux-guidelines-for-passkey-creation-and-sign-ins/). +- **Visual consistency**: Check that the solution uses [standardized icons](https://fidoalliance.org/passkeys/#:~:text=a%20user%E2%80%99s%20passkeys.-,Passkey%20Logo,-Look%20for%20the). +- **Clear language**: Instructions using plain language are critical for broader user understanding. Prioritize solutions aligned with the [FIDO UX guidelines](https://fidoalliance.org/ux-guidelines-for-passkey-creation-and-sign-ins/). -More UX/UI guidelines can be found on Google Identity: [Communicating passkeys -to -users](https://developers.google.com/identity/passkeys/ux/communicating-passkeys) -and [Passkeys user interface -design](https://developers.google.com/identity/passkeys/ux/user-interface-design). +More UX/UI guidelines can be found on Google Identity: [Communicating passkeys to users](https://developers.google.com/identity/passkeys/ux/communicating-passkeys) +and [Passkeys user interface design](https://developers.google.com/identity/passkeys/ux/user-interface-design). ### Developer experience -- **Full-stack coverage**: A library that offers tightly-integrated frontend - and backend components, like in - [SimpleWebAuthn](https://simplewebauthn.dev/docs/), can streamline your - integration. -- **Developer documentation**: Check that the library has a maintained docs website to ease the - integration process. +- **Full-stack coverage**: A library that offers tightly-integrated frontend and backend components, like in [SimpleWebAuthn](https://simplewebauthn.dev/docs/), can streamline your integration. +- **Developer documentation**: Check that the library has a maintained docs website to ease the integration process. ### Developer involvement and maintenance -- **Open-source maintenance**: For open-source options, investigate their - community activity. A few active issues, or many issues with up-to-date - labels (assuming these require manual assignment), and comments by - contributors, are all signals of an active community. -- Note that standards can be slow-moving! As a result, WebAuthn/passkey - libraries can go a long time between updates if there aren't any real issues - with it—but it doesn't mean they're unmaintained. +- **Open-source maintenance**: For open-source options, investigate their community activity. A few active issues, or many issues with up-to-date labels (assuming these require manual assignment), and comments by contributors, are all signals of an active community. +- Note that standards can be slow-moving! As a result, WebAuthn/passkey libraries can go a long time between updates if there aren't any real issues with it—but it doesn't mean they're unmaintained. ### Licensing From 3db13184774a42a4783899001537a5c0b22adadc Mon Sep 17 00:00:00 2001 From: Tim Cappalli Date: Thu, 28 Mar 2024 19:22:05 +0000 Subject: [PATCH 078/203] update packagemanager to fix build --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 5ed1366f..92692ebf 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,7 @@ "node": ">=18.14.1", "pnpm": ">=8.10.0" }, - "packageManager": "pnpm@8.6.2", + "packageManager": "^pnpm@8.10.0", "volta": { "node": "18.19.0" } From bf200b35611b2dd14cb2a4aa55dc6e60c478e001 Mon Sep 17 00:00:00 2001 From: Tim Cappalli Date: Thu, 28 Mar 2024 19:26:29 +0000 Subject: [PATCH 079/203] update packagemanager to fix build try2 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 92692ebf..5b96ed36 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,7 @@ "node": ">=18.14.1", "pnpm": ">=8.10.0" }, - "packageManager": "^pnpm@8.10.0", + "packageManager": "pnpm", "volta": { "node": "18.19.0" } From 1b5e16bee21c75d5c2c833663a2c0f15d9b4010e Mon Sep 17 00:00:00 2001 From: Tim Cappalli Date: Thu, 28 Mar 2024 19:30:40 +0000 Subject: [PATCH 080/203] try removing pnmp --- package.json | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/package.json b/package.json index 5b96ed36..ca03e8e1 100644 --- a/package.json +++ b/package.json @@ -46,10 +46,8 @@ "semver": "^7.5.4" }, "engines": { - "node": ">=18.14.1", - "pnpm": ">=8.10.0" + "node": ">=18.14.1" }, - "packageManager": "pnpm", "volta": { "node": "18.19.0" } From 91980b0573e89d1e2edd0cade89732caf3dd675e Mon Sep 17 00:00:00 2001 From: Tim Cappalli Date: Thu, 28 Mar 2024 19:34:25 +0000 Subject: [PATCH 081/203] try adding explicit pnpm version --- package.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index ca03e8e1..73560cbb 100644 --- a/package.json +++ b/package.json @@ -46,8 +46,10 @@ "semver": "^7.5.4" }, "engines": { - "node": ">=18.14.1" + "node": ">=18.14.1", + "pnpm": ">=8.10.0" }, + "packageManager": "pnpm@8.12.0", "volta": { "node": "18.19.0" } From d3ba756d7ae9826d033deb30616a0528447bb05a Mon Sep 17 00:00:00 2001 From: Tim Cappalli Date: Thu, 28 Mar 2024 19:56:39 +0000 Subject: [PATCH 082/203] update sidebar layout and frontmatter for doks change --- content/docs/_index.md | 2 ++ content/docs/demos-examples/_index.md | 2 ++ content/docs/implement/_index.md | 2 ++ content/docs/intro/_index.md | 2 ++ content/docs/reference/_index.md | 4 +++- content/docs/tools-libraries/_index.md | 2 ++ content/docs/use-cases/_index.md | 2 ++ layouts/docs/matrix.html | 2 +- layouts/docs/single.html | 4 +--- 9 files changed, 17 insertions(+), 5 deletions(-) diff --git a/content/docs/_index.md b/content/docs/_index.md index 2ab96d19..9f778c29 100644 --- a/content/docs/_index.md +++ b/content/docs/_index.md @@ -5,4 +5,6 @@ lead: "" date: 2020-10-06T08:48:23+00:00 draft: false images: [] +sidebar: + collapsed: true --- diff --git a/content/docs/demos-examples/_index.md b/content/docs/demos-examples/_index.md index 3c02f473..880e9eda 100644 --- a/content/docs/demos-examples/_index.md +++ b/content/docs/demos-examples/_index.md @@ -6,4 +6,6 @@ date: 2023-09-19T16:40:11.007Z draft: false images: [] weight: 1100 +sidebar: + collapsed: true --- diff --git a/content/docs/implement/_index.md b/content/docs/implement/_index.md index 72d3fac9..c0312737 100644 --- a/content/docs/implement/_index.md +++ b/content/docs/implement/_index.md @@ -6,4 +6,6 @@ date: 2022-09-24T15:57:34.857Z draft: true images: [] weight: 500 +sidebar: + collapsed: true --- diff --git a/content/docs/intro/_index.md b/content/docs/intro/_index.md index d03035e3..0c10f461 100644 --- a/content/docs/intro/_index.md +++ b/content/docs/intro/_index.md @@ -6,4 +6,6 @@ date: 2022-09-24T15:57:34.857Z draft: false images: [] weight: 100 +sidebar: + collapsed: true --- diff --git a/content/docs/reference/_index.md b/content/docs/reference/_index.md index d39b6c7c..5d78af68 100644 --- a/content/docs/reference/_index.md +++ b/content/docs/reference/_index.md @@ -1,9 +1,11 @@ --- title: "Reference" -description: "Help Doks." +description: "" lead: "" date: 2020-10-06T08:49:15+00:00 draft: false images: [] weight: 1000 +sidebar: + collapsed: true --- diff --git a/content/docs/tools-libraries/_index.md b/content/docs/tools-libraries/_index.md index a85b6647..ed744f4d 100644 --- a/content/docs/tools-libraries/_index.md +++ b/content/docs/tools-libraries/_index.md @@ -6,4 +6,6 @@ date: 2022-09-24T15:57:34.857Z draft: false images: [] weight: 700 +sidebar: + collapsed: true --- diff --git a/content/docs/use-cases/_index.md b/content/docs/use-cases/_index.md index dab2e332..33664237 100644 --- a/content/docs/use-cases/_index.md +++ b/content/docs/use-cases/_index.md @@ -6,4 +6,6 @@ date: 2022-09-28T18:53:38.996Z draft: false images: [] weight: 300 +sidebar: + collapsed: true --- diff --git a/layouts/docs/matrix.html b/layouts/docs/matrix.html index 0be52cc6..f4127671 100644 --- a/layouts/docs/matrix.html +++ b/layouts/docs/matrix.html @@ -2,7 +2,7 @@
diff --git a/layouts/docs/single.html b/layouts/docs/single.html index 037d2c56..b889fd3d 100644 --- a/layouts/docs/single.html +++ b/layouts/docs/single.html @@ -2,9 +2,7 @@
{{ if (in site.Params.doks.sectionNav .Section) -}}
- + {{ partial "sidebar/section-menu.html" . }}
{{ end -}} {{ if and (eq site.Params.doks.containerBreakpoint "fluid") (in .Site.Params.mainSections .Type) }} From 23d27cad5f5d2e564a012570d95ff721b7bab9fc Mon Sep 17 00:00:00 2001 From: Tim Cappalli Date: Thu, 28 Mar 2024 23:39:10 +0000 Subject: [PATCH 083/203] fix accessibility issues --- assets/scss/common/_custom.scss | 30 +++++++++++++++++------------- layouts/index.html | 8 ++++---- 2 files changed, 21 insertions(+), 17 deletions(-) diff --git a/assets/scss/common/_custom.scss b/assets/scss/common/_custom.scss index e0163745..74a4ae6e 100644 --- a/assets/scss/common/_custom.scss +++ b/assets/scss/common/_custom.scss @@ -40,28 +40,32 @@ a { button tweaks */ -body .btn-primary { +body .btn-black { color: #fff; - background-color: #d39a1e; - border-color: #d39a1e; + background-color: #000; + border-color: #000; } -body .btn-primary:hover { - background-color: #004b4e; - border-color: #004b4e; +body .btn-black:hover { + color: #000; + background-color: #fff; + border-color: #000; } -[data-bs-theme="dark"] body .btn-primary { - color: #fff !important; - background-color: #d39a1e; - border-color: #d39a1e; +[data-bs-theme="dark"] body .btn-black { + color: #000 !important; + background-color: #fff; + border-color: #fff; } -[data-bs-theme="dark"] body .btn-primary:hover { - background-color: #004b4e; - border-color: #004b4e; +[data-bs-theme="dark"] body .btn-black:hover { + color: #fff !important; + background-color: #000; + border-color: #fff; } + + /* change bw icons to white in dark mode */ diff --git a/layouts/index.html b/layouts/index.html index e3148642..5bb1ab07 100644 --- a/layouts/index.html +++ b/layouts/index.html @@ -2,12 +2,12 @@
- + passkeys icon

passkeys

Hello passkeys! Goodbye passwords.

- Get Started
@@ -38,13 +38,13 @@

Scalable

- + {{ end }} {{ define "sidebar-footer" }} From 893a9a374a2c29b1f2b0a72e7f5cbea7a2b54425 Mon Sep 17 00:00:00 2001 From: Tim Cappalli Date: Thu, 28 Mar 2024 23:48:17 +0000 Subject: [PATCH 084/203] compress image --- static/images/homepage-youtube-preview.jpg | Bin 58829 -> 17594 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/static/images/homepage-youtube-preview.jpg b/static/images/homepage-youtube-preview.jpg index 63de3c5c2de32cbd34dac33f2e0ffa96af099779..2a84689c4212032e89b4dce471c4ae61959b47e0 100644 GIT binary patch literal 17594 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 aHX2h)tbZcE&_7XX{>uK!)%}(IZ~xhnMqM2M literal 58829 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

gEZcGoGZ+!!R|PijGM@IoohWGg!me}A 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≶ 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 X;71Lq#d2g_|Nr9ui?)U9_sqWl1BYIb From 482b058e3b297d48972dec280c61a5afff00ea78 Mon Sep 17 00:00:00 2001 From: Tim Cappalli Date: Thu, 28 Mar 2024 23:51:02 +0000 Subject: [PATCH 085/203] font-display swap --- assets/scss/common/_custom.scss | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/assets/scss/common/_custom.scss b/assets/scss/common/_custom.scss index 74a4ae6e..565bc59d 100644 --- a/assets/scss/common/_custom.scss +++ b/assets/scss/common/_custom.scss @@ -257,6 +257,7 @@ YouTube preview image on homepage url("/fonts/open-sans-v29-latin-300.woff") format("woff"), url("/fonts/open-sans-v29-latin-300.ttf") format("truetype"), url("/fonts/open-sans-v29-latin-300.svg#OpenSans") format("svg"); + font-display: swap; } /* open-sans-regular - latin */ @@ -271,6 +272,7 @@ YouTube preview image on homepage url("/fonts/open-sans-v29-latin-regular.woff") format("woff"), url("/fonts/open-sans-v29-latin-regular.ttf") format("truetype"), url("/fonts/open-sans-v29-latin-regular.svg#OpenSans") format("svg"); + font-display: swap; } /* open-sans-500 - latin */ @@ -285,6 +287,7 @@ YouTube preview image on homepage url("/fonts/open-sans-v29-latin-500.woff") format("woff"), url("/fonts/open-sans-v29-latin-500.ttf") format("truetype"), url("/fonts/open-sans-v29-latin-500.svg#OpenSans") format("svg"); + font-display: swap; } /* open-sans-600 - latin */ @@ -299,6 +302,7 @@ YouTube preview image on homepage url("/fonts/open-sans-v29-latin-600.woff") format("woff"), url("/fonts/open-sans-v29-latin-600.ttf") format("truetype"), url("/fonts/open-sans-v29-latin-600.svg#OpenSans") format("svg"); + font-display: swap; } /* open-sans-700 - latin */ @@ -313,6 +317,7 @@ YouTube preview image on homepage url("/fonts/open-sans-v29-latin-700.woff") format("woff"), url("/fonts/open-sans-v29-latin-700.ttf") format("truetype"), url("/fonts/open-sans-v29-latin-700.svg#OpenSans") format("svg"); + font-display: swap; } /* open-sans-800 - latin */ @@ -327,6 +332,7 @@ YouTube preview image on homepage url("/fonts/open-sans-v29-latin-800.woff") format("woff"), url("/fonts/open-sans-v29-latin-800.ttf") format("truetype"), url("/fonts/open-sans-v29-latin-800.svg#OpenSans") format("svg"); + font-display: swap; } /* open-sans-300italic - latin */ @@ -341,6 +347,7 @@ YouTube preview image on homepage url("/fonts/open-sans-v29-latin-300italic.woff") format("woff"), url("/fonts/open-sans-v29-latin-300italic.ttf") format("truetype"), url("/fonts/open-sans-v29-latin-300italic.svg#OpenSans") format("svg"); + font-display: swap; } /* open-sans-italic - latin */ @@ -355,6 +362,7 @@ YouTube preview image on homepage url("/fonts/open-sans-v29-latin-italic.woff") format("woff"), url("/fonts/open-sans-v29-latin-italic.ttf") format("truetype"), url("/fonts/open-sans-v29-latin-italic.svg#OpenSans") format("svg"); + font-display: swap; } /* open-sans-500italic - latin */ @@ -369,6 +377,7 @@ YouTube preview image on homepage url("/fonts/open-sans-v29-latin-500italic.woff") format("woff"), url("/fonts/open-sans-v29-latin-500italic.ttf") format("truetype"), url("/fonts/open-sans-v29-latin-500italic.svg#OpenSans") format("svg"); + font-display: swap; } /* open-sans-600italic - latin */ @@ -383,6 +392,7 @@ YouTube preview image on homepage url("/fonts/open-sans-v29-latin-600italic.woff") format("woff"), url("/fonts/open-sans-v29-latin-600italic.ttf") format("truetype"), url("/fonts/open-sans-v29-latin-600italic.svg#OpenSans") format("svg"); + font-display: swap; } /* open-sans-700italic - latin */ @@ -397,6 +407,7 @@ YouTube preview image on homepage url("/fonts/open-sans-v29-latin-700italic.woff") format("woff"), url("/fonts/open-sans-v29-latin-700italic.ttf") format("truetype"), url("/fonts/open-sans-v29-latin-700italic.svg#OpenSans") format("svg"); + font-display: swap; } /* open-sans-800italic - latin */ @@ -411,6 +422,7 @@ YouTube preview image on homepage url("/fonts/open-sans-v29-latin-800italic.woff") format("woff"), url("/fonts/open-sans-v29-latin-800italic.ttf") format("truetype"), url("/fonts/open-sans-v29-latin-800italic.svg#OpenSans") format("svg"); + font-display: swap; } /** Bootstrap Icons **/ From 12cf9934dc8770ba59e8a5165fb4f6c1eb0d9929 Mon Sep 17 00:00:00 2001 From: Tim Cappalli Date: Thu, 28 Mar 2024 23:51:34 +0000 Subject: [PATCH 086/203] lazy load image --- layouts/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/layouts/index.html b/layouts/index.html index 5bb1ab07..2fff6161 100644 --- a/layouts/index.html +++ b/layouts/index.html @@ -2,7 +2,7 @@

- passkeys icon + passkeys icon

passkeys

From 0cf39e68afae4deffb85b4700f84d094c335b0a0 Mon Sep 17 00:00:00 2001 From: Tim Cappalli Date: Thu, 28 Mar 2024 23:55:48 +0000 Subject: [PATCH 087/203] revert lazy image --- layouts/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/layouts/index.html b/layouts/index.html index 2fff6161..5bb1ab07 100644 --- a/layouts/index.html +++ b/layouts/index.html @@ -2,7 +2,7 @@
- passkeys icon + passkeys icon

passkeys

From b5129c49e8d356b1f0c99eb672fa3fbc1a2f2ad3 Mon Sep 17 00:00:00 2001 From: Tim Cappalli Date: Fri, 29 Mar 2024 15:34:06 +0000 Subject: [PATCH 088/203] Resolves #358 sitemap --- config/_default/hugo.toml | 2 +- static/robots.txt | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) create mode 100644 static/robots.txt diff --git a/config/_default/hugo.toml b/config/_default/hugo.toml index 11f24fd6..3ea87253 100644 --- a/config/_default/hugo.toml +++ b/config/_default/hugo.toml @@ -6,7 +6,7 @@ disableHugoGeneratorInject = true # disableKinds = ["taxonomy", "term"] enableEmoji = true enableGitInfo = true -enableRobotsTXT = true +enableRobotsTXT = false paginate = 10 rssLimit = 10 summarylength = 20 # 70 (default) diff --git a/static/robots.txt b/static/robots.txt new file mode 100644 index 00000000..5fc0aff4 --- /dev/null +++ b/static/robots.txt @@ -0,0 +1,3 @@ +User-agent: * +Disallow: /admin/ +Sitemap: https://passkeys.dev/sitemap.xml \ No newline at end of file From b26845f2a5cfb89ac4f0e4c218afe65c3731c8bb Mon Sep 17 00:00:00 2001 From: Tim Cappalli Date: Mon, 1 Apr 2024 15:17:47 +0000 Subject: [PATCH 089/203] fix privacy policy link --- config/_default/languages.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/_default/languages.toml b/config/_default/languages.toml index 287478b1..bad0acb3 100644 --- a/config/_default/languages.toml +++ b/config/_default/languages.toml @@ -5,5 +5,5 @@ [en.params] languageISO = "EN" languageTag = "en-US" - footer = 'Privacy Policy' + footer = 'Privacy Policy' #alertText = 'Doks version 1.0 just shipped!' \ No newline at end of file From bd308aa1b64175c4b25477635af1fd9f8120fff6 Mon Sep 17 00:00:00 2001 From: Tim Cappalli Date: Mon, 1 Apr 2024 19:35:05 +0000 Subject: [PATCH 090/203] adds Strongbox to UV issues list --- content/docs/reference/known-issues.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/content/docs/reference/known-issues.md b/content/docs/reference/known-issues.md index fd1df162..def9a722 100644 --- a/content/docs/reference/known-issues.md +++ b/content/docs/reference/known-issues.md @@ -23,7 +23,8 @@ The following list of passkey providers have not implemented [User Verification] | 1Password | Native | ✅ Performs UV | ✅ UV flag accurate | | Bitwarden | Extension | ❌ Handles request without UV | ❌ Always replies `True` | | KeepassXC | Extension | ❌ Handles request without UV | ❌ Always replies `True` | -| Proton Pass | Extension | ❌ Handles request without UV | ❌ Always replies `True` | -| Proton Pass | Native | ❌ Handles request without UV | ❌ Always replies `True` | +| Proton Pass | Extension | ❌ Handles request without UV | ❌ Always replies `True` | +| Proton Pass | Native | ❌ Handles request without UV | ❌ Always replies `True` | +| Strongbox | Native | ❌ Handles request without UV | ❌ Always replies `True` | > **Architecture**: `Extension` = web browser extension, `Native` = OS native app using provider APIs From 541aca46026b1e7fb1129553cd5f83783aa7ef96 Mon Sep 17 00:00:00 2001 From: Tim Cappalli Date: Mon, 1 Apr 2024 19:43:04 +0000 Subject: [PATCH 091/203] #326 improve DC definition --- content/docs/reference/terms/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/docs/reference/terms/index.md b/content/docs/reference/terms/index.md index b6b51a69..2f387a5c 100644 --- a/content/docs/reference/terms/index.md +++ b/content/docs/reference/terms/index.md @@ -82,7 +82,7 @@ A FIDO2 [Discoverable Credential](#discoverable-credential) that is bound to a s ## Discoverable Credential -A Discoverable Credential (previously known as a "resident credential" or "resident key") is a FIDO2/WebAuthn credential that is entirely stored in the authenticator (private key, credential ID, user handle, and other metadata). The [Relying Party (RP)](#relying-party-rp) also stores a copy of the _public_ key and credential ID +A Discoverable Credential (known in previous version of WebAuthn as a "resident credential" or "resident key") is a FIDO2/WebAuthn credential that can be used by a user to log in to a relying party without initially providing a user ID. As such, all parts of the credential are entirely stored in the authenticator (private key, credential ID, user handle, and other metadata). [Passkeys](#passkey) are Discoverable Credentials. From c32ee3fc7132bf97fcf88c50bed5e96976101c90 Mon Sep 17 00:00:00 2001 From: Tim Cappalli Date: Tue, 2 Apr 2024 20:54:50 +0000 Subject: [PATCH 092/203] fix cover.png for social share --- {assets => static}/cover.png | Bin 1 file changed, 0 insertions(+), 0 deletions(-) rename {assets => static}/cover.png (100%) diff --git a/assets/cover.png b/static/cover.png similarity index 100% rename from assets/cover.png rename to static/cover.png From 81cb8e4b34624601ed622f91f7b5b26bc6c318f4 Mon Sep 17 00:00:00 2001 From: Tim Cappalli Date: Tue, 2 Apr 2024 20:59:07 +0000 Subject: [PATCH 093/203] don't load default fonts --- layouts/partials/head/resource-hints.html | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 layouts/partials/head/resource-hints.html diff --git a/layouts/partials/head/resource-hints.html b/layouts/partials/head/resource-hints.html new file mode 100644 index 00000000..e69de29b From c1468800611c5bf2e31c7ed48710c4f48250eb39 Mon Sep 17 00:00:00 2001 From: Tim Cappalli Date: Sat, 6 Apr 2024 13:49:11 +0000 Subject: [PATCH 094/203] fix for viewport size --- hugo_stats.json | 36 +- layouts/docs/single.html | 14 +- package-lock.json | 4101 +++++++++++++++++++++++++++++--------- 3 files changed, 3201 insertions(+), 950 deletions(-) diff --git a/hugo_stats.json b/hugo_stats.json index 20f6e233..778f5141 100644 --- a/hugo_stats.json +++ b/hugo_stats.json @@ -4,6 +4,7 @@ "a", "article", "aside", + "base", "blockquote", "body", "br", @@ -68,10 +69,10 @@ "DocSearch-Label", "about", "active", - "align-items-center", "align-middle", "anchor", "badge", + "bg-color-green", "bg-light", "bi", "bi-box-arrow-up-right", @@ -90,13 +91,11 @@ "bi-x-circle-fill", "border", "btn", + "btn-black", "btn-close", "btn-lg", "btn-light", "btn-link", - "btn-primary", - "btn-toggle", - "btn-toggle-nav", "callout", "callout-body", "callout-content", @@ -110,6 +109,7 @@ "chroma", "col", "col-lg-10", + "col-lg-11", "col-lg-12", "col-lg-16", "col-lg-5", @@ -120,9 +120,6 @@ "col-xl-4", "col-xl-8", "col-xl-9", - "collapse", - "collapsed", - "collapsible-sidebar", "color-black", "color-green", "color-red", @@ -143,7 +140,6 @@ "device-support", "docs", "docs-content", - "docs-link", "docs-links", "docs-sidebar", "docs-sidebar-offset", @@ -169,7 +165,6 @@ "fs-6", "fst-italic", "fw-bold", - "fw-normal", "fw-semibold", "gx-5", "h-auto", @@ -197,11 +192,11 @@ "list", "list-inline", "list-inline-item", + "list-nested", "list-unstyled", "list-view", "m-2", "mb-0", - "mb-1", "mb-2", "mb-3", "mb-4", @@ -222,6 +217,7 @@ "modal-title", "ms-2", "ms-3", + "ms-auto", "ms-lg-2", "mt-0", "mt-3", @@ -254,7 +250,6 @@ "page-footer-meta", "page-links", "page-nav", - "pb-1", "pb-2", "pb-3", "pe-1", @@ -265,7 +260,6 @@ "px-0", "px-4", "query-no-results", - "rounded", "rounded-pill", "row", "search-form", @@ -277,10 +271,9 @@ "search-results", "search-text", "section", + "section-nav", "section-sm", - "show", "single", - "small", "social-link", "status", "sticky-top", @@ -294,7 +287,6 @@ "tags", "taxonomy", "text-bg-secondary", - "text-bg-success", "text-bg-warning", "text-body-secondary", "text-center", @@ -344,6 +336,8 @@ "cross-device-authentication", "cross-device-authentication-cda", "date", + "developer-experience", + "developer-involvement-and-maintenance", "device-bound-passkey", "device-support-table", "discoverable-credential", @@ -364,6 +358,7 @@ "java", "java-1", "legacy-credentials", + "licensing", "logging-in", "login-challenge", "main", @@ -401,11 +396,7 @@ "searchResults", "searchToggleDesktop", "searchToggleMobile", - "section-1cad35d4b3b9f624f82dbf237daaf188", - "section-1cf7e301510c711b73d2b182b9dcf084", - "section-561181a77d6e84bf33d839c2fe81829e", - "section-63d5049791d9d79d86e9a108b0a999ca", - "section-eecdf87546c0c5551016879da5973b27", + "selection-criteria", "sensitive-actions", "signing-in", "single-device-passkey", @@ -413,7 +404,6 @@ "supfive", "supfour", "supone", - "supsix", "supthree", "suptwo", "synced-passkey", @@ -423,12 +413,16 @@ "typescript", "updated-for-passkeys", "user-presence-up", + "user-verification", "user-verification-behavior", "user-verification-uv", "user-verifying-roaming-authenticator", + "ux", "vendor-demo-sites", + "verification-steps", "videos", "w3c-web-authentication-webauthn", + "webauthn-versions-and-capabilities", "website-visitors", "whats-next" ] diff --git a/layouts/docs/single.html b/layouts/docs/single.html index b889fd3d..40be4b82 100644 --- a/layouts/docs/single.html +++ b/layouts/docs/single.html @@ -14,9 +14,9 @@ {{ end -}} {{ if .Params.toc -}} -
+
{{ else -}} -
+
{{ end -}} {{ if site.Params.doks.breadcrumbTrail -}} @@ -41,9 +41,13 @@

{{ .Title }}

{{ .Content }} {{ end -}} {{ partial "main/docs-navigation.html" . }} e2o3^AmIN% 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