diff --git a/common/interfaces/coffee_shop_ui/robot-interface/components/screens/CreateOrder.tsx b/common/interfaces/coffee_shop_ui/robot-interface/components/screens/CreateOrder.tsx index 3a0d5638c..221d3312c 100644 --- a/common/interfaces/coffee_shop_ui/robot-interface/components/screens/CreateOrder.tsx +++ b/common/interfaces/coffee_shop_ui/robot-interface/components/screens/CreateOrder.tsx @@ -7,29 +7,20 @@ import { SetStateAction, useState } from "react"; type State = "edit" | "confirm"; type Item = - | "coffee" - | "biscuits" - | "sandwich" - | "orange_juice" - | "smoothie" - | "granola"; + | "cup" + // | "banana" + | "bottle"; const items: Item[] = [ - "coffee", - "biscuits", - "sandwich", - "orange_juice", - "smoothie", - "granola", + "cup", + // "banana", + "bottle", ]; const NAMES: { [key in Item]: string } = { - coffee: 'Coffee', - biscuits: 'Biscuits', - sandwich: 'Sandwich', - orange_juice: 'Juice', - smoothie: 'Smoothie', - granola: 'Granola' + cup: 'Coffee', + // banana: 'Banana', + bottle: 'Coca Cola' } export function CreateOrder({ finish }: { finish: (order: Item[]) => void }) { @@ -118,14 +109,9 @@ function EditMode({ return ( <>
- - - -
-
- - - + + {/* */} +
=0.10.0" - } - }, - "node_modules/@alloc/quick-lru": { + "dependencies": { + "@alloc/quick-lru": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", - "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==" }, - "node_modules/@babel/runtime": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.15.tgz", - "integrity": "sha512-T0O+aa+4w0u06iNmapipJXMV4HoUir03hpx3/YqXXhu9xim3w+dVphjFWl1OH8NbZHw5Lbm9k45drDkgq2VNNA==", - "dependencies": { + "@babel/runtime": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.5.tgz", + "integrity": "sha512-Nms86NXrsaeU9vbBJKni6gXiEXZ4CVpYVzEjDH9Sb8vmZ3UljyA1GSOJl/6LGPO8EHLuSF9H+IxNXHPX8QHJ4g==", + "requires": { "regenerator-runtime": "^0.14.0" - }, - "engines": { - "node": ">=6.9.0" } }, - "node_modules/@eslint-community/eslint-utils": { + "@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==", - "dependencies": { + "requires": { "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, - "node_modules/@eslint-community/regexpp": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.8.1.tgz", - "integrity": "sha512-PWiOzLIUAjN/w5K17PoF4n6sKBw0gqLHPhywmYHP4t1VFQQVYeb1yWsJwnMVEMl3tUHME7X/SJPZLmtG7XBDxQ==", - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.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==" }, - "node_modules/@eslint/eslintrc": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz", - "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==", - "dependencies": { + "@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", @@ -93,1183 +44,990 @@ "js-yaml": "^4.1.0", "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" } }, - "node_modules/@eslint/js": { + "@eslint/js": { "version": "8.49.0", "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.49.0.tgz", - "integrity": "sha512-1S8uAY/MTJqVx0SC4epBq+N2yhuwtNwLbJYNZyhL2pO1ZVKn5HFXav5T41Ryzy9K9V7ZId2JB2oy/W4aCd9/2w==", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } + "integrity": "sha512-1S8uAY/MTJqVx0SC4epBq+N2yhuwtNwLbJYNZyhL2pO1ZVKn5HFXav5T41Ryzy9K9V7ZId2JB2oy/W4aCd9/2w==" }, - "node_modules/@fortawesome/fontawesome-common-types": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.4.2.tgz", - "integrity": "sha512-1DgP7f+XQIJbLFCTX1V2QnxVmpLdKdzzo2k8EmvDOePfchaIGQ9eCHj2up3/jNEbZuBqel5OxiaOJf37TWauRA==", - "hasInstallScript": true, - "engines": { - "node": ">=6" - } + "@fortawesome/fontawesome-common-types": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.5.2.tgz", + "integrity": "sha512-gBxPg3aVO6J0kpfHNILc+NMhXnqHumFxOmjYCFfOiLZfwhnnfhtsdA2hfJlDnj+8PjAs6kKQPenOTKj3Rf7zHw==" }, - "node_modules/@fortawesome/fontawesome-svg-core": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.4.2.tgz", - "integrity": "sha512-gjYDSKv3TrM2sLTOKBc5rH9ckje8Wrwgx1CxAPbN5N3Fm4prfi7NsJVWd1jklp7i5uSCVwhZS5qlhMXqLrpAIg==", - "hasInstallScript": true, - "dependencies": { - "@fortawesome/fontawesome-common-types": "6.4.2" - }, - "engines": { - "node": ">=6" + "@fortawesome/fontawesome-svg-core": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.5.2.tgz", + "integrity": "sha512-5CdaCBGl8Rh9ohNdxeeTMxIj8oc3KNBgIeLMvJosBMdslK/UnEB8rzyDRrbKdL1kDweqBPo4GT9wvnakHWucZw==", + "requires": { + "@fortawesome/fontawesome-common-types": "6.5.2" } }, - "node_modules/@fortawesome/free-solid-svg-icons": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.4.2.tgz", - "integrity": "sha512-sYwXurXUEQS32fZz9hVCUUv/xu49PEJEyUOsA51l6PU/qVgfbTb2glsTEaJngVVT8VqBATRIdh7XVgV1JF1LkA==", - "hasInstallScript": true, - "dependencies": { - "@fortawesome/fontawesome-common-types": "6.4.2" - }, - "engines": { - "node": ">=6" + "@fortawesome/free-solid-svg-icons": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.5.2.tgz", + "integrity": "sha512-QWFZYXFE7O1Gr1dTIp+D6UcFUF0qElOnZptpi7PBUMylJh+vFmIedVe1Ir6RM1t2tEQLLSV1k7bR4o92M+uqlw==", + "requires": { + "@fortawesome/fontawesome-common-types": "6.5.2" } }, - "node_modules/@fortawesome/react-fontawesome": { + "@fortawesome/react-fontawesome": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/@fortawesome/react-fontawesome/-/react-fontawesome-0.2.0.tgz", "integrity": "sha512-uHg75Rb/XORTtVt7OS9WoK8uM276Ufi7gCzshVWkUJbHhh3svsUUeqXerrM96Wm7fRiDzfKRwSoahhMIkGAYHw==", - "dependencies": { + "requires": { "prop-types": "^15.8.1" - }, - "peerDependencies": { - "@fortawesome/fontawesome-svg-core": "~1 || ~6", - "react": ">=16.3" } }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.11", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz", - "integrity": "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==", - "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", + "@humanwhocodes/config-array": { + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "requires": { + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" } }, - "node_modules/@humanwhocodes/module-importer": { + "@humanwhocodes/module-importer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==" }, - "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==" + "@humanwhocodes/object-schema": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==" + }, + "@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "requires": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==" + }, + "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==" + }, + "string-width-cjs": { + "version": "npm:string-width@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" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, + "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-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "requires": { + "ansi-regex": "^6.0.1" + } + }, + "strip-ansi-cjs": { + "version": "npm:strip-ansi@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" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + } + } + }, + "wrap-ansi-cjs": { + "version": "npm:wrap-ansi@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-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, + "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" + } + } + } + } + } }, - "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==", - "dependencies": { - "@jridgewell/set-array": "^1.0.1", + "@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "requires": { + "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" + "@jridgewell/trace-mapping": "^0.3.24" } }, - "node_modules/@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==", - "engines": { - "node": ">=6.0.0" - } + "@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==" }, - "node_modules/@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==", - "engines": { - "node": ">=6.0.0" - } + "@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==" }, - "node_modules/@jridgewell/sourcemap-codec": { + "@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==" }, - "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==", - "dependencies": { + "@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "requires": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/@next/env": { + "@next/env": { "version": "13.4.19", "resolved": "https://registry.npmjs.org/@next/env/-/env-13.4.19.tgz", "integrity": "sha512-FsAT5x0jF2kkhNkKkukhsyYOrRqtSxrEhfliniIq0bwWbuXLgyt3Gv0Ml+b91XwjwArmuP7NxCiGd++GGKdNMQ==" }, - "node_modules/@next/eslint-plugin-next": { + "@next/eslint-plugin-next": { "version": "13.4.19", "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-13.4.19.tgz", "integrity": "sha512-N/O+zGb6wZQdwu6atMZHbR7T9Np5SUFUjZqCbj0sXm+MwQO35M8TazVB4otm87GkXYs2l6OPwARd3/PUWhZBVQ==", - "dependencies": { + "requires": { "glob": "7.1.7" + }, + "dependencies": { + "glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } } }, - "node_modules/@next/swc-darwin-arm64": { + "@next/swc-darwin-arm64": { "version": "13.4.19", "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.4.19.tgz", "integrity": "sha512-vv1qrjXeGbuF2mOkhkdxMDtv9np7W4mcBtaDnHU+yJG+bBwa6rYsYSCI/9Xm5+TuF5SbZbrWO6G1NfTh1TMjvQ==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-darwin-x64": { + "optional": true + }, + "@next/swc-darwin-x64": { "version": "13.4.19", "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-13.4.19.tgz", "integrity": "sha512-jyzO6wwYhx6F+7gD8ddZfuqO4TtpJdw3wyOduR4fxTUCm3aLw7YmHGYNjS0xRSYGAkLpBkH1E0RcelyId6lNsw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-arm64-gnu": { + "optional": true + }, + "@next/swc-linux-arm64-gnu": { "version": "13.4.19", "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.4.19.tgz", "integrity": "sha512-vdlnIlaAEh6H+G6HrKZB9c2zJKnpPVKnA6LBwjwT2BTjxI7e0Hx30+FoWCgi50e+YO49p6oPOtesP9mXDRiiUg==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-arm64-musl": { + "optional": true + }, + "@next/swc-linux-arm64-musl": { "version": "13.4.19", "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.4.19.tgz", "integrity": "sha512-aU0HkH2XPgxqrbNRBFb3si9Ahu/CpaR5RPmN2s9GiM9qJCiBBlZtRTiEca+DC+xRPyCThTtWYgxjWHgU7ZkyvA==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-x64-gnu": { + "optional": true + }, + "@next/swc-linux-x64-gnu": { "version": "13.4.19", "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.4.19.tgz", "integrity": "sha512-htwOEagMa/CXNykFFeAHHvMJeqZfNQEoQvHfsA4wgg5QqGNqD5soeCer4oGlCol6NGUxknrQO6VEustcv+Md+g==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-x64-musl": { + "optional": true + }, + "@next/swc-linux-x64-musl": { "version": "13.4.19", "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.4.19.tgz", "integrity": "sha512-4Gj4vvtbK1JH8ApWTT214b3GwUh9EKKQjY41hH/t+u55Knxi/0wesMzwQRhppK6Ddalhu0TEttbiJ+wRcoEj5Q==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-win32-arm64-msvc": { + "optional": true + }, + "@next/swc-win32-arm64-msvc": { "version": "13.4.19", "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.4.19.tgz", "integrity": "sha512-bUfDevQK4NsIAHXs3/JNgnvEY+LRyneDN788W2NYiRIIzmILjba7LaQTfihuFawZDhRtkYCv3JDC3B4TwnmRJw==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-win32-ia32-msvc": { + "optional": true + }, + "@next/swc-win32-ia32-msvc": { "version": "13.4.19", "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.4.19.tgz", "integrity": "sha512-Y5kikILFAr81LYIFaw6j/NrOtmiM4Sf3GtOc0pn50ez2GCkr+oejYuKGcwAwq3jiTKuzF6OF4iT2INPoxRycEA==", - "cpu": [ - "ia32" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-win32-x64-msvc": { + "optional": true + }, + "@next/swc-win32-x64-msvc": { "version": "13.4.19", "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.4.19.tgz", "integrity": "sha512-YzA78jBDXMYiINdPdJJwGgPNT3YqBNNGhsthsDoWHL9p24tEJn9ViQf/ZqTbwSpX/RrkPupLfuuTH2sf73JBAw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@nodelib/fs.scandir": { + "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==", - "dependencies": { + "requires": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" } }, - "node_modules/@nodelib/fs.stat": { + "@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==", - "engines": { - "node": ">= 8" - } + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" }, - "node_modules/@nodelib/fs.walk": { + "@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==", - "dependencies": { + "requires": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" } }, - "node_modules/@rushstack/eslint-patch": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.3.3.tgz", - "integrity": "sha512-0xd7qez0AQ+MbHatZTlI1gu5vkG8r7MYRUJAHPAHJBmGLs16zpkrpAVLvjQKQOqaXPDUBwOiJzNc00znHSCVBw==" + "@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "optional": true }, - "node_modules/@socket.io/component-emitter": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", - "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==" + "@rushstack/eslint-patch": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.10.2.tgz", + "integrity": "sha512-hw437iINopmQuxWPSUEvqE56NCPsiU8N4AYtfHmJFckclktzK9YQJieD3XkDCDH4OjL+C7zgPUh73R/nrcHrqw==" + }, + "@socket.io/component-emitter": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz", + "integrity": "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==" }, - "node_modules/@swc/helpers": { + "@swc/helpers": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.1.tgz", "integrity": "sha512-sJ902EfIzn1Fa+qYmjdQqh8tPsoxyBz+8yBKC2HKUxyezKJFwPGOn7pv4WY6QuQW//ySQi5lJjA/ZT9sNWWNTg==", - "dependencies": { + "requires": { "tslib": "^2.4.0" } }, - "node_modules/@types/cookie": { + "@types/cookie": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==" }, - "node_modules/@types/cors": { - "version": "2.8.14", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.14.tgz", - "integrity": "sha512-RXHUvNWYICtbP6s18PnOCaqToK8y14DnLd75c6HfyKf228dxy7pHNOQkxPtvXKp/hINFMDjbYzsj63nnpPMSRQ==", - "dependencies": { + "@types/cors": { + "version": "2.8.17", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz", + "integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==", + "requires": { "@types/node": "*" } }, - "node_modules/@types/json5": { + "@types/json5": { "version": "0.0.29", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==" }, - "node_modules/@types/node": { + "@types/node": { "version": "20.6.0", "resolved": "https://registry.npmjs.org/@types/node/-/node-20.6.0.tgz", "integrity": "sha512-najjVq5KN2vsH2U/xyh2opaSEz6cZMR2SetLIlxlj08nOcmPOemJmUK2o4kUzfLqfrWE0PIrNeE16XhYDd3nqg==" }, - "node_modules/@types/prop-types": { - "version": "15.7.5", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", - "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" + "@types/prop-types": { + "version": "15.7.12", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz", + "integrity": "sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==" }, - "node_modules/@types/react": { + "@types/react": { "version": "18.2.21", "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.21.tgz", "integrity": "sha512-neFKG/sBAwGxHgXiIxnbm3/AAVQ/cMRS93hvBpg8xYRbeQSPVABp9U2bRnPf0iI4+Ucdv3plSxKK+3CW2ENJxA==", - "dependencies": { + "requires": { "@types/prop-types": "*", "@types/scheduler": "*", "csstype": "^3.0.2" } }, - "node_modules/@types/react-dom": { + "@types/react-dom": { "version": "18.2.7", "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.7.tgz", "integrity": "sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA==", - "dependencies": { + "requires": { "@types/react": "*" } }, - "node_modules/@types/roslib": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@types/roslib/-/roslib-1.3.1.tgz", - "integrity": "sha512-k6kZDAYS75P1s9phgdlHcg4DmP9blusZGftS2YQWR6uZ1zSBNgmt0xv5vbEOQ+yqemucrvEYKIaUxfMVeIZ6Vg==", - "dependencies": { + "@types/roslib": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@types/roslib/-/roslib-1.3.4.tgz", + "integrity": "sha512-g5sCaMrgoejEE9GvU4cAOx5DDptAY9a9Gn8ABxaiDp3QTM48blsXwQsezfHjtHpiLhKRDc3IZqrlvKt85h8J/A==", + "requires": { "eventemitter2": "^6.4.0" } }, - "node_modules/@types/scheduler": { - "version": "0.16.3", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz", - "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==" - }, - "node_modules/@typescript-eslint/parser": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.7.0.tgz", - "integrity": "sha512-jZKYwqNpNm5kzPVP5z1JXAuxjtl2uG+5NpaMocFPTNC2EdYIgbXIPImObOkhbONxtFTTdoZstLZefbaK+wXZng==", - "dependencies": { - "@typescript-eslint/scope-manager": "6.7.0", - "@typescript-eslint/types": "6.7.0", - "@typescript-eslint/typescript-estree": "6.7.0", - "@typescript-eslint/visitor-keys": "6.7.0", + "@types/scheduler": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-YIoDCTH3Af6XM5VuwGG/QL/CJqga1Zm3NkU3HZ4ZHK2fRMPYP1VczsTUqtsf43PH/iJNVlPHAo2oWX7BSdB2Hw==" + }, + "@typescript-eslint/parser": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.21.0.tgz", + "integrity": "sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==", + "requires": { + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/typescript-estree": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", "debug": "^4.3.4" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } } }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.7.0.tgz", - "integrity": "sha512-lAT1Uau20lQyjoLUQ5FUMSX/dS07qux9rYd5FGzKz/Kf8W8ccuvMyldb8hadHdK/qOI7aikvQWqulnEq2nCEYA==", - "dependencies": { - "@typescript-eslint/types": "6.7.0", - "@typescript-eslint/visitor-keys": "6.7.0" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "@typescript-eslint/scope-manager": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz", + "integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==", + "requires": { + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0" } }, - "node_modules/@typescript-eslint/types": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.7.0.tgz", - "integrity": "sha512-ihPfvOp7pOcN/ysoj0RpBPOx3HQTJTrIN8UZK+WFd3/iDeFHHqeyYxa4hQk4rMhsz9H9mXpR61IzwlBVGXtl9Q==", - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } + "@typescript-eslint/types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz", + "integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==" }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.7.0.tgz", - "integrity": "sha512-dPvkXj3n6e9yd/0LfojNU8VMUGHWiLuBZvbM6V6QYD+2qxqInE7J+J/ieY2iGwR9ivf/R/haWGkIj04WVUeiSQ==", - "dependencies": { - "@typescript-eslint/types": "6.7.0", - "@typescript-eslint/visitor-keys": "6.7.0", + "@typescript-eslint/typescript-estree": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz", + "integrity": "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==", + "requires": { + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", + "minimatch": "9.0.3", "semver": "^7.5.4", "ts-api-utils": "^1.0.1" }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true + "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" + } + }, + "minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "requires": { + "brace-expansion": "^2.0.1" + } } } }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.7.0.tgz", - "integrity": "sha512-/C1RVgKFDmGMcVGeD8HjKv2bd72oI1KxQDeY8uc66gw9R0OK0eMq48cA+jv9/2Ag6cdrsUGySm1yzYmfz0hxwQ==", - "dependencies": { - "@typescript-eslint/types": "6.7.0", + "@typescript-eslint/visitor-keys": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz", + "integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==", + "requires": { + "@typescript-eslint/types": "6.21.0", "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@xmldom/xmldom": { + "@xmldom/xmldom": { "version": "0.8.10", "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz", - "integrity": "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==", - "engines": { - "node": ">=10.0.0" - } + "integrity": "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==" }, - "node_modules/accepts": { + "accepts": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dependencies": { + "requires": { "mime-types": "~2.1.34", "negotiator": "0.6.3" - }, - "engines": { - "node": ">= 0.6" } }, - "node_modules/acorn": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } + "acorn": { + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==" }, - "node_modules/acorn-jsx": { + "acorn-jsx": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==" }, - "node_modules/ajv": { + "ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dependencies": { + "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" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/ansi-regex": { + "ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "engines": { - "node": ">=8" - } + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" }, - "node_modules/ansi-styles": { + "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { + "requires": { "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/any-promise": { + "any-promise": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==" }, - "node_modules/anymatch": { + "anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dependencies": { + "requires": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" } }, - "node_modules/arg": { + "arg": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" }, - "node_modules/argparse": { + "argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, - "node_modules/aria-query": { + "aria-query": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", - "dependencies": { + "requires": { "dequal": "^2.0.3" } }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", - "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", - "dependencies": { - "call-bind": "^1.0.2", - "is-array-buffer": "^3.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-includes": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz", - "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", + "array-buffer-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "requires": { + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + } + }, + "array-includes": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", + "requires": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/array-union": { + "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==", - "engines": { - "node": ">=8" - } - }, - "node_modules/array.prototype.findlastindex": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz", - "integrity": "sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0", - "get-intrinsic": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==" + }, + "array.prototype.findlast": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", + "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", + "requires": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + } + }, + "array.prototype.findlastindex": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", + "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", + "requires": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" } }, - "node_modules/array.prototype.flat": { + "array.prototype.flat": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", - "dependencies": { + "requires": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", "es-abstract": "^1.22.1", "es-shim-unscopables": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/array.prototype.flatmap": { + "array.prototype.flatmap": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", - "dependencies": { + "requires": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", "es-abstract": "^1.22.1", "es-shim-unscopables": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/array.prototype.tosorted": { + "array.prototype.toreversed": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.2.tgz", - "integrity": "sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg==", - "dependencies": { + "resolved": "https://registry.npmjs.org/array.prototype.toreversed/-/array.prototype.toreversed-1.1.2.tgz", + "integrity": "sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==", + "requires": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0", - "get-intrinsic": "^1.2.1" + "es-shim-unscopables": "^1.0.0" } }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", - "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==", - "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", - "is-array-buffer": "^3.0.2", - "is-shared-array-buffer": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "array.prototype.tosorted": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.3.tgz", + "integrity": "sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg==", + "requires": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.1.0", + "es-shim-unscopables": "^1.0.2" } }, - "node_modules/ast-types-flow": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", - "integrity": "sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==" - }, - "node_modules/asynciterator.prototype": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz", - "integrity": "sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==", - "dependencies": { - "has-symbols": "^1.0.3" + "arraybuffer.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "requires": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", + "is-shared-array-buffer": "^1.0.2" } }, - "node_modules/autoprefixer": { + "ast-types-flow": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", + "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==" + }, + "autoprefixer": { "version": "10.4.15", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.15.tgz", "integrity": "sha512-KCuPB8ZCIqFdA4HwKXsvz7j6gvSDNhDP7WnUjBleRkKjPdvCmHFuQ77ocavI8FT6NdvlBnE2UFr2H4Mycn8Vew==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/autoprefixer" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { + "requires": { "browserslist": "^4.21.10", "caniuse-lite": "^1.0.30001520", "fraction.js": "^4.2.0", "normalize-range": "^0.1.2", "picocolors": "^1.0.0", "postcss-value-parser": "^4.2.0" - }, - "bin": { - "autoprefixer": "bin/autoprefixer" - }, - "engines": { - "node": "^10 || ^12 || >=14" - }, - "peerDependencies": { - "postcss": "^8.1.0" } }, - "node_modules/available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "requires": { + "possible-typed-array-names": "^1.0.0" } }, - "node_modules/axe-core": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.8.1.tgz", - "integrity": "sha512-9l850jDDPnKq48nbad8SiEelCv4OrUWrKab/cPj0GScVg6cb6NbCCt/Ulk26QEq5jP9NnGr04Bit1BHyV6r5CQ==", - "engines": { - "node": ">=4" - } + "axe-core": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.7.0.tgz", + "integrity": "sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==" }, - "node_modules/axobject-query": { + "axobject-query": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz", "integrity": "sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==", - "dependencies": { + "requires": { "dequal": "^2.0.3" } }, - "node_modules/balanced-match": { + "balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, - "node_modules/base64id": { + "base64id": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", - "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", - "engines": { - "node": "^4.5.0 || >= 5.9" - } + "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==" }, - "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==", - "engines": { - "node": ">=8" - } + "binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==" }, - "node_modules/brace-expansion": { + "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dependencies": { + "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, - "node_modules/braces": { + "braces": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dependencies": { + "requires": { "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browserslist": { - "version": "4.21.10", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.10.tgz", - "integrity": "sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001517", - "electron-to-chromium": "^1.4.477", - "node-releases": "^2.0.13", - "update-browserslist-db": "^1.0.11" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/busboy": { + "browserslist": { + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", + "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", + "requires": { + "caniuse-lite": "^1.0.30001587", + "electron-to-chromium": "^1.4.668", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" + } + }, + "busboy": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", - "dependencies": { + "requires": { "streamsearch": "^1.1.0" - }, - "engines": { - "node": ">=10.16.0" } }, - "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "requires": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" } }, - "node_modules/callsites": { + "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "engines": { - "node": ">=6" - } + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" }, - "node_modules/camelcase-css": { + "camelcase-css": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", - "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", - "engines": { - "node": ">= 6" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001534", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001534.tgz", - "integrity": "sha512-vlPVrhsCS7XaSh2VvWluIQEzVhefrUQcEsQWSS5A5V+dM07uv1qHeQzAOTGIMy9i3e9bH15+muvI/UHojVgS/Q==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ] + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==" }, - "node_modules/cbor-js": { + "caniuse-lite": { + "version": "1.0.30001620", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001620.tgz", + "integrity": "sha512-WJvYsOjd1/BYUY6SNGUosK9DUidBPDTnOARHp3fSmFO1ekdxaY6nKRttEVrfMmYi80ctS0kz1wiWmm14fVc3ew==" + }, + "cbor-js": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/cbor-js/-/cbor-js-0.1.0.tgz", "integrity": "sha512-7sQ/TvDZPl7csT1Sif9G0+MA0I0JOVah8+wWlJVQdVEgIbCzlN/ab3x+uvMNsc34TUvO6osQTAmB2ls80JX6tw==" }, - "node_modules/chalk": { + "chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { + "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "dependencies": { + } + }, + "chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "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" }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/chokidar/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" + "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" + } + } } }, - "node_modules/client-only": { + "client-only": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==" }, - "node_modules/color-convert": { + "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": { + "requires": { "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" } }, - "node_modules/color-name": { + "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/commander": { + "commander": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", - "engines": { - "node": ">= 6" - } + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==" }, - "node_modules/concat-map": { + "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, - "node_modules/cookie": { + "cookie": { "version": "0.4.2", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", - "engines": { - "node": ">= 0.6" - } + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==" }, - "node_modules/cors": { + "cors": { "version": "2.8.5", "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "dependencies": { + "requires": { "object-assign": "^4", "vary": "^1" - }, - "engines": { - "node": ">= 0.10" } }, - "node_modules/cross-spawn": { + "cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dependencies": { + "requires": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" } }, - "node_modules/cssesc": { + "cssesc": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==" }, - "node_modules/csstype": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", - "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" + "csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" }, - "node_modules/damerau-levenshtein": { + "damerau-levenshtein": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==" }, - "node_modules/debug": { + "data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "requires": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + } + }, + "data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "requires": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + } + }, + "data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "requires": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + } + }, + "debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { + "requires": { "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } } }, - "node_modules/deep-is": { + "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==" }, - "node_modules/define-data-property": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.0.tgz", - "integrity": "sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==", - "dependencies": { - "get-intrinsic": "^1.2.1", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" + "define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "requires": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" } }, - "node_modules/define-properties": { + "define-properties": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "dependencies": { + "requires": { "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/dequal": { + "dequal": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", - "engines": { - "node": ">=6" - } + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==" }, - "node_modules/didyoumean": { + "didyoumean": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==" }, - "node_modules/dir-glob": { + "dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dependencies": { + "requires": { "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" } }, - "node_modules/dlv": { + "dlv": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" }, - "node_modules/doctrine": { + "doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dependencies": { + "requires": { "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" } }, - "node_modules/electron-to-chromium": { - "version": "1.4.520", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.520.tgz", - "integrity": "sha512-Frfus2VpYADsrh1lB3v/ft/WVFlVzOIm+Q0p7U7VqHI6qr7NWHYKe+Wif3W50n7JAFoBsWVsoU0+qDks6WQ60g==" + "eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" + }, + "electron-to-chromium": { + "version": "1.4.772", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.772.tgz", + "integrity": "sha512-jFfEbxR/abTTJA3ci+2ok1NTuOBBtB4jH+UT6PUmRN+DY3WSD4FFRsgoVQ+QNIJ0T7wrXwzsWCI2WKC46b++2A==" }, - "node_modules/emoji-regex": { + "emoji-regex": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" }, - "node_modules/engine.io": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.5.2.tgz", - "integrity": "sha512-IXsMcGpw/xRfjra46sVZVHiSWo/nJ/3g1337q9KNXtS6YRzbW5yIzTCb9DjhrBe7r3GZQR0I4+nq+4ODk5g/cA==", - "dependencies": { + "engine.io": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.5.4.tgz", + "integrity": "sha512-KdVSDKhVKyOi+r5uEabrDLZw2qXStVvCsEB/LN3mw4WFi6Gx50jTyuxYVCwAAC0U46FdnzP/ScKRBTXb/NiEOg==", + "requires": { "@types/cookie": "^0.4.1", "@types/cors": "^2.8.12", "@types/node": ">=10.0.0", @@ -1281,184 +1039,166 @@ "engine.io-parser": "~5.2.1", "ws": "~8.11.0" }, - "engines": { - "node": ">=10.2.0" - } - }, - "node_modules/engine.io-parser": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.1.tgz", - "integrity": "sha512-9JktcM3u18nU9N2Lz3bWeBgxVgOKpw7yhRaoxQA3FUDZzzw+9WlA6p4G4u0RixNkg14fH7EfEc/RhpurtiROTQ==", - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/engine.io/node_modules/ws": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", - "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true + "dependencies": { + "ws": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", + "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==" } } }, - "node_modules/enhanced-resolve": { - "version": "5.15.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", - "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", - "dependencies": { + "engine.io-parser": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.2.tgz", + "integrity": "sha512-RcyUFKA93/CXH20l4SoVvzZfrSDMOTUS3bWVpTt2FuFP+XYrL8i8oonHP7WInRyVHXh0n/ORtoeiE1os+8qkSw==" + }, + "enhanced-resolve": { + "version": "5.16.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.16.1.tgz", + "integrity": "sha512-4U5pNsuDl0EhuZpq46M5xPslstkviJuhrdobaRDBk2Jy2KO37FDAJl4lb2KlNabxT0m4MTK2UHNrsAcphE8nyw==", + "requires": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" - }, - "engines": { - "node": ">=10.13.0" } }, - "node_modules/es-abstract": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.1.tgz", - "integrity": "sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw==", - "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "arraybuffer.prototype.slice": "^1.0.1", - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "es-set-tostringtag": "^2.0.1", + "es-abstract": { + "version": "1.23.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", + "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", + "requires": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.2.1", - "get-symbol-description": "^1.0.0", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", "globalthis": "^1.0.3", "gopd": "^1.0.1", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", "has-symbols": "^1.0.3", - "internal-slot": "^1.0.5", - "is-array-buffer": "^3.0.2", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", + "is-shared-array-buffer": "^1.0.3", "is-string": "^1.0.7", - "is-typed-array": "^1.1.10", + "is-typed-array": "^1.1.13", "is-weakref": "^1.0.2", - "object-inspect": "^1.12.3", + "object-inspect": "^1.13.1", "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.5.0", - "safe-array-concat": "^1.0.0", - "safe-regex-test": "^1.0.0", - "string.prototype.trim": "^1.2.7", - "string.prototype.trimend": "^1.0.6", - "string.prototype.trimstart": "^1.0.6", - "typed-array-buffer": "^1.0.0", - "typed-array-byte-length": "^1.0.0", - "typed-array-byte-offset": "^1.0.0", - "typed-array-length": "^1.0.4", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.6", "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.10" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "which-typed-array": "^1.1.15" } }, - "node_modules/es-iterator-helpers": { - "version": "1.0.15", - "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz", - "integrity": "sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==", - "dependencies": { - "asynciterator.prototype": "^1.0.0", - "call-bind": "^1.0.2", + "es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "requires": { + "get-intrinsic": "^1.2.4" + } + }, + "es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==" + }, + "es-iterator-helpers": { + "version": "1.0.19", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.19.tgz", + "integrity": "sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==", + "requires": { + "call-bind": "^1.0.7", "define-properties": "^1.2.1", - "es-abstract": "^1.22.1", - "es-set-tostringtag": "^2.0.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.0.3", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", "globalthis": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", "has-symbols": "^1.0.3", - "internal-slot": "^1.0.5", + "internal-slot": "^1.0.7", "iterator.prototype": "^1.1.2", - "safe-array-concat": "^1.0.1" + "safe-array-concat": "^1.1.2" } }, - "node_modules/es-set-tostringtag": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", - "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", - "dependencies": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" + "es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "requires": { + "es-errors": "^1.3.0" } }, - "node_modules/es-shim-unscopables": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", - "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", - "dependencies": { - "has": "^1.0.3" + "es-set-tostringtag": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "requires": { + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" + } + }, + "es-shim-unscopables": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "requires": { + "hasown": "^2.0.0" } }, - "node_modules/es-to-primitive": { + "es-to-primitive": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dependencies": { + "requires": { "is-callable": "^1.1.4", "is-date-object": "^1.0.1", "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "engines": { - "node": ">=6" - } + "escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==" }, - "node_modules/escape-string-regexp": { + "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==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" }, - "node_modules/eslint": { + "eslint": { "version": "8.49.0", "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.49.0.tgz", "integrity": "sha512-jw03ENfm6VJI0jA9U+8H5zfl5b+FvuU3YYvZRdZHOlU2ggJkxrlkJH4HcDrZpj6YwD8kuYqvQM8LyesoazrSOQ==", - "dependencies": { + "requires": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", "@eslint/eslintrc": "^2.1.2", @@ -1496,22 +1236,13 @@ "optionator": "^0.9.3", "strip-ansi": "^6.0.1", "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint-config-next": { + "eslint-config-next": { "version": "13.4.19", "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-13.4.19.tgz", "integrity": "sha512-WE8367sqMnjhWHvR5OivmfwENRQ1ixfNE9hZwQqNCsd+iM3KnuMc1V8Pt6ytgjxjf23D+xbesADv9x3xaKfT3g==", - "dependencies": { + "requires": { "@next/eslint-plugin-next": "13.4.19", "@rushstack/eslint-patch": "^1.1.3", "@typescript-eslint/parser": "^5.4.2 || ^6.0.0", @@ -1521,40 +1252,33 @@ "eslint-plugin-jsx-a11y": "^6.5.1", "eslint-plugin-react": "^7.31.7", "eslint-plugin-react-hooks": "^4.5.0 || 5.0.0-canary-7118f5dd7-20230705" - }, - "peerDependencies": { - "eslint": "^7.23.0 || ^8.0.0", - "typescript": ">=3.3.1" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } } }, - "node_modules/eslint-import-resolver-node": { + "eslint-import-resolver-node": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", - "dependencies": { + "requires": { "debug": "^3.2.7", "is-core-module": "^2.13.0", "resolve": "^1.22.4" - } - }, - "node_modules/eslint-import-resolver-node/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" + "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" + } + } } }, - "node_modules/eslint-import-resolver-typescript": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.0.tgz", - "integrity": "sha512-QTHR9ddNnn35RTxlaEnx2gCxqFlF2SEN0SE2d17SqwyM7YOSI2GHWRYp5BiRkObTUNYPupC/3Fq2a0PpT+EKpg==", - "dependencies": { + "eslint-import-resolver-typescript": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.1.tgz", + "integrity": "sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==", + "requires": { "debug": "^4.3.4", "enhanced-resolve": "^5.12.0", "eslint-module-utils": "^2.7.4", @@ -1562,1058 +1286,752 @@ "get-tsconfig": "^4.5.0", "is-core-module": "^2.11.0", "is-glob": "^4.0.3" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/unts/projects/eslint-import-resolver-ts" - }, - "peerDependencies": { - "eslint": "*", - "eslint-plugin-import": "*" } }, - "node_modules/eslint-module-utils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz", - "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==", - "dependencies": { + "eslint-module-utils": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz", + "integrity": "sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==", + "requires": { "debug": "^3.2.7" }, - "engines": { - "node": ">=4" - }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - } - } - }, - "node_modules/eslint-module-utils/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" + "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" + } + } } }, - "node_modules/eslint-plugin-import": { - "version": "2.28.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.28.1.tgz", - "integrity": "sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A==", - "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.findlastindex": "^1.2.2", - "array.prototype.flat": "^1.3.1", - "array.prototype.flatmap": "^1.3.1", + "eslint-plugin-import": { + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", + "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", + "requires": { + "array-includes": "^3.1.7", + "array.prototype.findlastindex": "^1.2.3", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", "debug": "^3.2.7", "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.7", + "eslint-import-resolver-node": "^0.3.9", "eslint-module-utils": "^2.8.0", - "has": "^1.0.3", - "is-core-module": "^2.13.0", + "hasown": "^2.0.0", + "is-core-module": "^2.13.1", "is-glob": "^4.0.3", "minimatch": "^3.1.2", - "object.fromentries": "^2.0.6", - "object.groupby": "^1.0.0", - "object.values": "^1.1.6", + "object.fromentries": "^2.0.7", + "object.groupby": "^1.0.1", + "object.values": "^1.1.7", "semver": "^6.3.1", - "tsconfig-paths": "^3.14.2" - }, - "engines": { - "node": ">=4" + "tsconfig-paths": "^3.15.0" }, - "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" - } - }, - "node_modules/eslint-plugin-import/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/eslint-plugin-import/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-import/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "bin": { - "semver": "bin/semver.js" + "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" + } + }, + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "requires": { + "esutils": "^2.0.2" + } + }, + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" + } } }, - "node_modules/eslint-plugin-jsx-a11y": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.7.1.tgz", - "integrity": "sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==", - "dependencies": { - "@babel/runtime": "^7.20.7", - "aria-query": "^5.1.3", - "array-includes": "^3.1.6", - "array.prototype.flatmap": "^1.3.1", - "ast-types-flow": "^0.0.7", - "axe-core": "^4.6.2", - "axobject-query": "^3.1.1", + "eslint-plugin-jsx-a11y": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.8.0.tgz", + "integrity": "sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==", + "requires": { + "@babel/runtime": "^7.23.2", + "aria-query": "^5.3.0", + "array-includes": "^3.1.7", + "array.prototype.flatmap": "^1.3.2", + "ast-types-flow": "^0.0.8", + "axe-core": "=4.7.0", + "axobject-query": "^3.2.1", "damerau-levenshtein": "^1.0.8", "emoji-regex": "^9.2.2", - "has": "^1.0.3", - "jsx-ast-utils": "^3.3.3", - "language-tags": "=1.0.5", + "es-iterator-helpers": "^1.0.15", + "hasown": "^2.0.0", + "jsx-ast-utils": "^3.3.5", + "language-tags": "^1.0.9", "minimatch": "^3.1.2", - "object.entries": "^1.1.6", - "object.fromentries": "^2.0.6", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=4.0" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" - } - }, - "node_modules/eslint-plugin-jsx-a11y/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/eslint-plugin-react": { - "version": "7.33.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz", - "integrity": "sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==", - "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flatmap": "^1.3.1", - "array.prototype.tosorted": "^1.1.1", + "object.entries": "^1.1.7", + "object.fromentries": "^2.0.7" + } + }, + "eslint-plugin-react": { + "version": "7.34.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.34.1.tgz", + "integrity": "sha512-N97CxlouPT1AHt8Jn0mhhN2RrADlUAsk1/atcT2KyA/l9Q/E6ll7OIGwNumFmWfZ9skV3XXccYS19h80rHtgkw==", + "requires": { + "array-includes": "^3.1.7", + "array.prototype.findlast": "^1.2.4", + "array.prototype.flatmap": "^1.3.2", + "array.prototype.toreversed": "^1.1.2", + "array.prototype.tosorted": "^1.1.3", "doctrine": "^2.1.0", - "es-iterator-helpers": "^1.0.12", + "es-iterator-helpers": "^1.0.17", "estraverse": "^5.3.0", "jsx-ast-utils": "^2.4.1 || ^3.0.0", "minimatch": "^3.1.2", - "object.entries": "^1.1.6", - "object.fromentries": "^2.0.6", - "object.hasown": "^1.1.2", - "object.values": "^1.1.6", + "object.entries": "^1.1.7", + "object.fromentries": "^2.0.7", + "object.hasown": "^1.1.3", + "object.values": "^1.1.7", "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.4", + "resolve": "^2.0.0-next.5", "semver": "^6.3.1", - "string.prototype.matchall": "^4.0.8" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" - } - }, - "node_modules/eslint-plugin-react-hooks": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", - "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" - } - }, - "node_modules/eslint-plugin-react/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dependencies": { - "esutils": "^2.0.2" + "string.prototype.matchall": "^4.0.10" }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-react/node_modules/resolve": { - "version": "2.0.0-next.4", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", - "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", "dependencies": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "requires": { + "esutils": "^2.0.2" + } + }, + "resolve": { + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", + "requires": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" + } } }, - "node_modules/eslint-plugin-react/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "bin": { - "semver": "bin/semver.js" - } + "eslint-plugin-react-hooks": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz", + "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==" }, - "node_modules/eslint-scope": { + "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==", - "dependencies": { + "requires": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint-visitor-keys": { + "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==", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==" }, - "node_modules/espree": { + "espree": { "version": "9.6.1", "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", - "dependencies": { + "requires": { "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" } }, - "node_modules/esquery": { + "esquery": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", - "dependencies": { + "requires": { "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" } }, - "node_modules/esrecurse": { + "esrecurse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dependencies": { + "requires": { "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" } }, - "node_modules/estraverse": { + "estraverse": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "engines": { - "node": ">=4.0" - } + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" }, - "node_modules/esutils": { + "esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "engines": { - "node": ">=0.10.0" - } + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" }, - "node_modules/eventemitter2": { + "eventemitter2": { "version": "6.4.9", "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.9.tgz", "integrity": "sha512-JEPTiaOt9f04oa6NOkc4aH+nVp5I3wEjpHbIPqfgCdD5v5bUzy7xQqwcVO2aDQgOWhI28da57HksMrzK9HlRxg==" }, - "node_modules/fast-deep-equal": { + "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==" }, - "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==", - "dependencies": { + "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" }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" + "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" + } + } } }, - "node_modules/fast-json-stable-stringify": { + "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==" }, - "node_modules/fast-levenshtein": { + "fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" }, - "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==", - "dependencies": { + "fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "requires": { "reusify": "^1.0.4" } }, - "node_modules/file-entry-cache": { + "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==", - "dependencies": { + "requires": { "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/fill-range": { + "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==", - "dependencies": { + "requires": { "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" } }, - "node_modules/find-up": { + "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==", - "dependencies": { + "requires": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "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==", - "dependencies": { - "flatted": "^3.2.7", + "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" - }, - "engines": { - "node": ">=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==" + "flatted": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==" }, - "node_modules/for-each": { + "for-each": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dependencies": { + "requires": { "is-callable": "^1.1.3" } }, - "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==", - "engines": { - "node": "*" - }, - "funding": { - "type": "patreon", - "url": "https://github.com/sponsors/rawify" + "foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "requires": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" } }, - "node_modules/fs.realpath": { + "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.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, - "node_modules/fsevents": { + "fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } + "optional": true }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" }, - "node_modules/function.prototype.name": { + "function.prototype.name": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", - "dependencies": { + "requires": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", "es-abstract": "^1.22.1", "functions-have-names": "^1.2.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/functions-have-names": { + "functions-have-names": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==" }, - "node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", + "get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "requires": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" } }, - "node_modules/get-tsconfig": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.0.tgz", - "integrity": "sha512-pmjiZ7xtB8URYm74PlGJozDNyhvsVLUcpBa8DZBG3bWHwaHa9bPiRpiSfovw+fjhwONSCWKRyk+JQHEGZmMrzw==", - "dependencies": { + "get-symbol-description": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", + "requires": { + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" + } + }, + "get-tsconfig": { + "version": "4.7.5", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.5.tgz", + "integrity": "sha512-ZCuZCnlqNzjb4QprAzXKdpp/gh6KTxSJuw3IBsPnV/7fV4NxC9ckB+vPTt8w7fJA0TaSD7c55BR47JD6MEDyDw==", + "requires": { "resolve-pkg-maps": "^1.0.0" - }, - "funding": { - "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" } }, - "node_modules/glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", - "dependencies": { + "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.0.4", + "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/glob-parent": { + "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==", - "dependencies": { + "requires": { "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" } }, - "node_modules/glob-to-regexp": { + "glob-to-regexp": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" }, - "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==", - "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" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", - "dependencies": { - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "requires": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" } }, - "node_modules/globby": { + "globby": { "version": "11.1.0", "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dependencies": { + "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" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/gopd": { + "gopd": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dependencies": { + "requires": { "get-intrinsic": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/graceful-fs": { + "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==" }, - "node_modules/graphemer": { + "graphemer": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==" }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-bigints": { + "has-bigints": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==" }, - "node_modules/has-flag": { + "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" - } + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" }, - "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", - "dependencies": { - "get-intrinsic": "^1.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "requires": { + "es-define-property": "^1.0.0" } }, - "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": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==" }, - "node_modules/has-symbols": { + "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" - } + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" }, - "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "requires": { + "has-symbols": "^1.0.3" } }, - "node_modules/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", - "engines": { - "node": ">= 4" + "hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "requires": { + "function-bind": "^1.1.2" } }, - "node_modules/import-fresh": { + "ignore": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==" + }, + "import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dependencies": { + "requires": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/imurmurhash": { + "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "engines": { - "node": ">=0.8.19" - } + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==" }, - "node_modules/inflight": { + "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dependencies": { + "requires": { "once": "^1.3.0", "wrappy": "1" } }, - "node_modules/inherits": { + "inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, - "node_modules/internal-slot": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", - "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", - "dependencies": { - "get-intrinsic": "^1.2.0", - "has": "^1.0.3", + "internal-slot": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "requires": { + "es-errors": "^1.3.0", + "hasown": "^2.0.0", "side-channel": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" } }, - "node_modules/is-array-buffer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", - "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", - "dependencies": { + "is-array-buffer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "requires": { "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", - "is-typed-array": "^1.1.10" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "get-intrinsic": "^1.2.1" } }, - "node_modules/is-async-function": { + "is-async-function": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", - "dependencies": { + "requires": { "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-bigint": { + "is-bigint": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dependencies": { + "requires": { "has-bigints": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-binary-path": { + "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==", - "dependencies": { + "requires": { "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" } }, - "node_modules/is-boolean-object": { + "is-boolean-object": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dependencies": { + "requires": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-callable": { + "is-callable": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==" + }, + "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" } }, - "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==", - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "is-data-view": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "requires": { + "is-typed-array": "^1.1.13" } }, - "node_modules/is-date-object": { + "is-date-object": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dependencies": { + "requires": { "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-extglob": { + "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "engines": { - "node": ">=0.10.0" - } + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" }, - "node_modules/is-finalizationregistry": { + "is-finalizationregistry": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", - "dependencies": { + "requires": { "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-generator-function": { + "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-generator-function": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", - "dependencies": { + "requires": { "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-glob": { + "is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dependencies": { + "requires": { "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" } }, - "node_modules/is-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", - "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==" }, - "node_modules/is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==" }, - "node_modules/is-number": { + "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "engines": { - "node": ">=0.12.0" - } + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" }, - "node_modules/is-number-object": { + "is-number-object": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "dependencies": { + "requires": { "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-path-inside": { + "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==", - "engines": { - "node": ">=8" - } + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==" }, - "node_modules/is-regex": { + "is-regex": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dependencies": { + "requires": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-set": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", - "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==" }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "is-shared-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", + "requires": { + "call-bind": "^1.0.7" } }, - "node_modules/is-string": { + "is-string": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dependencies": { + "requires": { "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-symbol": { + "is-symbol": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dependencies": { + "requires": { "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-typed-array": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", - "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", - "dependencies": { - "which-typed-array": "^1.1.11" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "is-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "requires": { + "which-typed-array": "^1.1.14" } }, - "node_modules/is-weakmap": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", - "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==" }, - "node_modules/is-weakref": { + "is-weakref": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "dependencies": { + "requires": { "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-weakset": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", - "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "is-weakset": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz", + "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==", + "requires": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4" } }, - "node_modules/isarray": { + "isarray": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" }, - "node_modules/isexe": { + "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" }, - "node_modules/iterator.prototype": { + "iterator.prototype": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", - "dependencies": { + "requires": { "define-properties": "^1.2.1", "get-intrinsic": "^1.2.1", "has-symbols": "^1.0.3", @@ -2621,281 +2039,214 @@ "set-function-name": "^2.0.1" } }, - "node_modules/jiti": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.20.0.tgz", - "integrity": "sha512-3TV69ZbrvV6U5DfQimop50jE9Dl6J8O1ja1dvBbMba/sZ3YBEQqJ2VZRoQPVnhlzjNtU1vaXRZVrVjU4qtm8yA==", - "bin": { - "jiti": "bin/jiti.js" + "jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "requires": { + "@isaacs/cliui": "^8.0.2", + "@pkgjs/parseargs": "^0.11.0" } }, - "node_modules/js-tokens": { + "jiti": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz", + "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==" + }, + "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, - "node_modules/js-yaml": { + "js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dependencies": { + "requires": { "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" } }, - "node_modules/json-buffer": { + "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==" }, - "node_modules/json-schema-traverse": { + "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==" }, - "node_modules/json-stable-stringify-without-jsonify": { + "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==" }, - "node_modules/json5": { + "json5": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dependencies": { + "requires": { "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" } }, - "node_modules/jsx-ast-utils": { + "jsx-ast-utils": { "version": "3.3.5", "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", - "dependencies": { + "requires": { "array-includes": "^3.1.6", "array.prototype.flat": "^1.3.1", "object.assign": "^4.1.4", "object.values": "^1.1.6" - }, - "engines": { - "node": ">=4.0" } }, - "node_modules/keyv": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.3.tgz", - "integrity": "sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==", - "dependencies": { + "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" } }, - "node_modules/language-subtag-registry": { + "language-subtag-registry": { "version": "0.3.22", "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz", "integrity": "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==" }, - "node_modules/language-tags": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz", - "integrity": "sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==", - "dependencies": { - "language-subtag-registry": "~0.3.2" + "language-tags": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz", + "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==", + "requires": { + "language-subtag-registry": "^0.3.20" } }, - "node_modules/levn": { + "levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dependencies": { + "requires": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" } }, - "node_modules/lilconfig": { + "lilconfig": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", - "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", - "engines": { - "node": ">=10" - } + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==" }, - "node_modules/lines-and-columns": { + "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==" }, - "node_modules/locate-path": { + "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==", - "dependencies": { + "requires": { "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/lodash.merge": { + "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==" }, - "node_modules/loose-envify": { + "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==", - "dependencies": { + "requires": { "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" } }, - "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" - } + "lru-cache": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", + "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==" }, - "node_modules/merge2": { + "merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "engines": { - "node": ">= 8" - } + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" }, - "node_modules/micromatch": { + "micromatch": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dependencies": { + "requires": { "braces": "^3.0.2", "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" } }, - "node_modules/mime-db": { + "mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "engines": { - "node": ">= 0.6" - } + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" }, - "node_modules/mime-types": { + "mime-types": { "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dependencies": { + "requires": { "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" } }, - "node_modules/minimatch": { + "minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dependencies": { + "requires": { "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" } }, - "node_modules/minimist": { + "minimist": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==" }, - "node_modules/ms": { + "minipass": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.1.tgz", + "integrity": "sha512-UZ7eQ+h8ywIRAW1hIEl2AqdwzJucU/Kp59+8kkZeSvafXhZjul247BvIJjEVFVeON6d7lM46XX1HXCduKAS8VA==" + }, + "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, - "node_modules/mz": { + "mz": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", - "dependencies": { + "requires": { "any-promise": "^1.0.0", "object-assign": "^4.0.1", "thenify-all": "^1.0.0" } }, - "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==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } + "nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==" }, - "node_modules/natural-compare": { + "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" }, - "node_modules/negotiator": { + "negotiator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "engines": { - "node": ">= 0.6" - } + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" }, - "node_modules/next": { + "next": { "version": "13.4.19", "resolved": "https://registry.npmjs.org/next/-/next-13.4.19.tgz", "integrity": "sha512-HuPSzzAbJ1T4BD8e0bs6B9C1kWQ6gv8ykZoRWs5AQoiIuqbGHHdQO7Ljuvg05Q0Z24E2ABozHe6FxDvI6HfyAw==", - "dependencies": { + "requires": { "@next/env": "13.4.19", - "@swc/helpers": "0.5.1", - "busboy": "1.6.0", - "caniuse-lite": "^1.0.30001406", - "postcss": "8.4.14", - "styled-jsx": "5.1.1", - "watchpack": "2.4.0", - "zod": "3.21.4" - }, - "bin": { - "next": "dist/bin/next" - }, - "engines": { - "node": ">=16.8.0" - }, - "optionalDependencies": { "@next/swc-darwin-arm64": "13.4.19", "@next/swc-darwin-x64": "13.4.19", "@next/swc-linux-arm64-gnu": "13.4.19", @@ -2904,637 +2255,431 @@ "@next/swc-linux-x64-musl": "13.4.19", "@next/swc-win32-arm64-msvc": "13.4.19", "@next/swc-win32-ia32-msvc": "13.4.19", - "@next/swc-win32-x64-msvc": "13.4.19" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.1.0", - "react": "^18.2.0", - "react-dom": "^18.2.0", - "sass": "^1.3.0" + "@next/swc-win32-x64-msvc": "13.4.19", + "@swc/helpers": "0.5.1", + "busboy": "1.6.0", + "caniuse-lite": "^1.0.30001406", + "postcss": "8.4.14", + "styled-jsx": "5.1.1", + "watchpack": "2.4.0", + "zod": "3.21.4" }, - "peerDependenciesMeta": { - "@opentelemetry/api": { - "optional": true - }, - "sass": { - "optional": true - } - } - }, - "node_modules/next/node_modules/postcss": { - "version": "8.4.14", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", - "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - } - ], "dependencies": { - "nanoid": "^3.3.4", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" + "postcss": { + "version": "8.4.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", + "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", + "requires": { + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + } + } } }, - "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==" + "node-releases": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==" }, - "node_modules/normalize-path": { + "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "engines": { - "node": ">=0.10.0" - } + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" }, - "node_modules/normalize-range": { + "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==", - "engines": { - "node": ">=0.10.0" - } + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==" }, - "node_modules/object-assign": { + "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==", - "engines": { - "node": ">=0.10.0" - } + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" }, - "node_modules/object-hash": { + "object-hash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", - "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", - "engines": { - "node": ">= 6" - } + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==" }, - "node_modules/object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==" }, - "node_modules/object-keys": { + "object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + }, + "object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "requires": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", "has-symbols": "^1.0.3", "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/object.entries": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.7.tgz", - "integrity": "sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "engines": { - "node": ">= 0.4" + "object.entries": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz", + "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==", + "requires": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" } }, - "node_modules/object.fromentries": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz", - "integrity": "sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "requires": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" } }, - "node_modules/object.groupby": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.1.tgz", - "integrity": "sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1" + "object.groupby": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", + "requires": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" } }, - "node_modules/object.hasown": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.3.tgz", - "integrity": "sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==", - "dependencies": { - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "object.hasown": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.4.tgz", + "integrity": "sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg==", + "requires": { + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" } }, - "node_modules/object.values": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz", - "integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "object.values": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", + "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", + "requires": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" } }, - "node_modules/once": { + "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dependencies": { + "requires": { "wrappy": "1" } }, - "node_modules/optionator": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", - "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", - "dependencies": { - "@aashutoshrathi/word-wrap": "^1.2.3", + "optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "requires": { "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", - "type-check": "^0.4.0" - }, - "engines": { - "node": ">= 0.8.0" + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" } }, - "node_modules/p-limit": { + "p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dependencies": { + "requires": { "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-locate": { + "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==", - "dependencies": { + "requires": { "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/parent-module": { + "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==", - "dependencies": { + "requires": { "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" } }, - "node_modules/path-exists": { + "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==", - "engines": { - "node": ">=8" - } + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" }, - "node_modules/path-is-absolute": { + "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==", - "engines": { - "node": ">=0.10.0" - } + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" }, - "node_modules/path-key": { + "path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "engines": { - "node": ">=8" - } + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" }, - "node_modules/path-parse": { + "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==" }, - "node_modules/path-type": { + "path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "requires": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + } + }, + "path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "engines": { - "node": ">=8" - } + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + "picocolors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==" }, - "node_modules/picomatch": { + "picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" }, - "node_modules/pify": { + "pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "engines": { - "node": ">=0.10.0" - } + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==" }, - "node_modules/pirates": { + "pirates": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", - "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", - "engines": { - "node": ">= 6" - } + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==" }, - "node_modules/pngparse": { + "pngparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/pngparse/-/pngparse-2.0.1.tgz", "integrity": "sha512-RyB1P0BBwt3CNIZ5wT53lR1dT3CUtopnMOuP8xZdHjPhI/uXNNRnkx1yQb/3MMMyyMeo6p19fiIRHcLopWIkxA==" }, - "node_modules/postcss": { + "possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==" + }, + "postcss": { "version": "8.4.29", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.29.tgz", "integrity": "sha512-cbI+jaqIeu/VGqXEarWkRCCffhjgXc0qjBtXpqJhTBohMUjUQnbBr0xqX3vEKudc4iviTewcJo5ajcec5+wdJw==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { + "requires": { "nanoid": "^3.3.6", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" } }, - "node_modules/postcss-import": { + "postcss-import": { "version": "15.1.0", "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", - "dependencies": { + "requires": { "postcss-value-parser": "^4.0.0", "read-cache": "^1.0.0", "resolve": "^1.1.7" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "postcss": "^8.0.0" } }, - "node_modules/postcss-js": { + "postcss-js": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", - "dependencies": { + "requires": { "camelcase-css": "^2.0.1" - }, - "engines": { - "node": "^12 || ^14 || >= 16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": "^8.4.21" } }, - "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==", - "dependencies": { - "lilconfig": "^2.0.5", - "yaml": "^2.1.1" - }, - "engines": { - "node": ">= 14" + "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" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": ">=8.0.9", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "postcss": { - "optional": true - }, - "ts-node": { - "optional": true + "dependencies": { + "lilconfig": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.1.tgz", + "integrity": "sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==" } } }, - "node_modules/postcss-nested": { + "postcss-nested": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz", "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==", - "dependencies": { + "requires": { "postcss-selector-parser": "^6.0.11" - }, - "engines": { - "node": ">=12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": "^8.2.14" } }, - "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==", - "dependencies": { + "postcss-selector-parser": { + "version": "6.0.16", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.16.tgz", + "integrity": "sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==", + "requires": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" } }, - "node_modules/postcss-value-parser": { + "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==" }, - "node_modules/prelude-ls": { + "prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "engines": { - "node": ">= 0.8.0" - } + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==" }, - "node_modules/prop-types": { + "prop-types": { "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "dependencies": { + "requires": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", "react-is": "^16.13.1" } }, - "node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "engines": { - "node": ">=6" - } + "punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==" }, - "node_modules/queue-microtask": { + "queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" }, - "node_modules/react": { + "react": { "version": "18.2.0", "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", - "dependencies": { + "requires": { "loose-envify": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" } }, - "node_modules/react-dom": { + "react-dom": { "version": "18.2.0", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", - "dependencies": { + "requires": { "loose-envify": "^1.1.0", "scheduler": "^0.23.0" - }, - "peerDependencies": { - "react": "^18.2.0" } }, - "node_modules/react-is": { + "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==" }, - "node_modules/read-cache": { + "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": { + "requires": { "pify": "^2.3.0" } }, - "node_modules/readdirp": { + "readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dependencies": { + "requires": { "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" } }, - "node_modules/reflect.getprototypeof": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz", - "integrity": "sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", + "reflect.getprototypeof": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz", + "integrity": "sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==", + "requires": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.1", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", "globalthis": "^1.0.3", "which-builtin-type": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/regenerator-runtime": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", - "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==" + "regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", - "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "set-function-name": "^2.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "regexp.prototype.flags": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", + "requires": { + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" } }, - "node_modules/resolve": { - "version": "1.22.4", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.4.tgz", - "integrity": "sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==", - "dependencies": { + "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" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/resolve-from": { + "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==", - "engines": { - "node": ">=4" - } + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" }, - "node_modules/resolve-pkg-maps": { + "resolve-pkg-maps": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", - "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", - "funding": { - "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" - } + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==" }, - "node_modules/reusify": { + "reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" }, - "node_modules/rimraf": { + "rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dependencies": { + "requires": { "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/roslib": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/roslib/-/roslib-1.3.0.tgz", - "integrity": "sha512-MqxHMW6bMpZbamgOonSOP9WJY4axCQncT5CJD1jXBjYMdp+79udwyDsD2RQXX2/Lokro8bT9LkXiW6wNn6Gxhg==", - "dependencies": { + "roslib": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/roslib/-/roslib-1.4.1.tgz", + "integrity": "sha512-l3BOHqG99RHb73XROykj8o2rRaUqqYwN0E6C1EkH+R1GIfDjMaUGPaCNEoKKmsXT0Vu0EOyL1BudQtdVlMsgjA==", + "requires": { "@xmldom/xmldom": "^0.8.0", "cbor-js": "^0.1.0", "eventemitter2": "^6.4.0", @@ -3544,143 +2689,113 @@ "webworkify": "^1.5.0", "webworkify-webpack": "^2.1.5", "ws": "^8.0.0" - }, - "engines": { - "node": ">=0.10" } }, - "node_modules/run-parallel": { + "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==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { + "requires": { "queue-microtask": "^1.2.2" } }, - "node_modules/safe-array-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz", - "integrity": "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1", + "safe-array-concat": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", + "requires": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", "has-symbols": "^1.0.3", "isarray": "^2.0.5" - }, - "engines": { - "node": ">=0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/safe-regex-test": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", - "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", + "safe-regex-test": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", + "requires": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", "is-regex": "^1.1.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/scheduler": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", - "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", - "dependencies": { + "scheduler": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "requires": { "loose-envify": "^1.1.0" } }, - "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==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" + "semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==" + }, + "set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "requires": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" } }, - "node_modules/set-function-name": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", - "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", - "dependencies": { - "define-data-property": "^1.0.1", + "set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "requires": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" + "has-property-descriptors": "^1.0.2" } }, - "node_modules/shebang-command": { + "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==", - "dependencies": { + "requires": { "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" } }, - "node_modules/shebang-regex": { + "shebang-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "engines": { - "node": ">=8" - } + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" }, - "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" + "side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "requires": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" } }, - "node_modules/slash": { + "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": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "engines": { - "node": ">=8" - } + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" }, - "node_modules/socket.io": { - "version": "4.7.2", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.7.2.tgz", - "integrity": "sha512-bvKVS29/I5fl2FGLNHuXlQaUH/BlzX1IN6S+NKLNZpBsPZIDH+90eQmCs2Railn4YUiww4SzUedJ6+uzwFnKLw==", - "dependencies": { + "socket.io": { + "version": "4.7.5", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.7.5.tgz", + "integrity": "sha512-DmeAkF6cwM9jSfmp6Dr/5/mfMwb5Z5qRrSXLpo3Fq5SqyU8CMF15jIN4ZhfSwu35ksM1qmHZDQ/DK5XTccSTvA==", + "requires": { "accepts": "~1.3.4", "base64id": "~2.0.0", "cors": "~2.8.5", @@ -3688,247 +2803,206 @@ "engine.io": "~6.5.2", "socket.io-adapter": "~2.5.2", "socket.io-parser": "~4.2.4" - }, - "engines": { - "node": ">=10.2.0" } }, - "node_modules/socket.io-adapter": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.2.tgz", - "integrity": "sha512-87C3LO/NOMc+eMcpcxUBebGjkpMDkNBS9tf7KJqcDsmL936EChtVva71Dw2q4tQcuVC+hAUy4an2NO/sYXmwRA==", - "dependencies": { + "socket.io-adapter": { + "version": "2.5.4", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.4.tgz", + "integrity": "sha512-wDNHGXGewWAjQPt3pyeYBtpWSq9cLE5UW1ZUPL/2eGK9jtse/FpXib7epSTsz0Q0m+6sg6Y4KtcFTlah1bdOVg==", + "requires": { + "debug": "~4.3.4", "ws": "~8.11.0" - } - }, - "node_modules/socket.io-adapter/node_modules/ws": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", - "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true + "dependencies": { + "ws": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", + "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==" } } }, - "node_modules/socket.io-parser": { + "socket.io-parser": { "version": "4.2.4", "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", - "dependencies": { + "requires": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.1" - }, - "engines": { - "node": ">=10.0.0" } }, - "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==", - "engines": { - "node": ">=0.10.0" - } + "source-map-js": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==" }, - "node_modules/streamsearch": { + "streamsearch": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", - "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", - "engines": { - "node": ">=10.0.0" - } + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==" }, - "node_modules/string.prototype.matchall": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz", - "integrity": "sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.5", - "regexp.prototype.flags": "^1.5.0", - "set-function-name": "^2.0.0", - "side-channel": "^1.0.4" + "string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "requires": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "dependencies": { + "ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==" + }, + "strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "requires": { + "ansi-regex": "^6.0.1" + } + } } }, - "node_modules/string.prototype.trim": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", - "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "string.prototype.matchall": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz", + "integrity": "sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==", + "requires": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.7", + "regexp.prototype.flags": "^1.5.2", + "set-function-name": "^2.0.2", + "side-channel": "^1.0.6" + } + }, + "string.prototype.trim": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", + "requires": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" } }, - "node_modules/string.prototype.trimend": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", - "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "string.prototype.trimend": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", + "requires": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" } }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", - "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "requires": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" } }, - "node_modules/strip-ansi": { + "strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dependencies": { + "requires": { "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" } }, - "node_modules/strip-bom": { + "strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "engines": { - "node": ">=4" - } + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==" }, - "node_modules/strip-json-comments": { + "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==", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" }, - "node_modules/styled-jsx": { + "styled-jsx": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz", "integrity": "sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==", - "dependencies": { + "requires": { "client-only": "0.0.1" - }, - "engines": { - "node": ">= 12.0.0" - }, - "peerDependencies": { - "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, - "babel-plugin-macros": { - "optional": true - } } }, - "node_modules/sucrase": { - "version": "3.34.0", - "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.34.0.tgz", - "integrity": "sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==", - "dependencies": { + "sucrase": { + "version": "3.35.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", + "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", + "requires": { "@jridgewell/gen-mapping": "^0.3.2", "commander": "^4.0.0", - "glob": "7.1.6", + "glob": "^10.3.10", "lines-and-columns": "^1.1.6", "mz": "^2.7.0", "pirates": "^4.0.1", "ts-interface-checker": "^0.1.9" }, - "bin": { - "sucrase": "bin/sucrase", - "sucrase-node": "bin/sucrase-node" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/sucrase/node_modules/glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "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" + } + }, + "glob": { + "version": "10.3.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.15.tgz", + "integrity": "sha512-0c6RlJt1TICLyvJYIApxb8GsXoai0KUP7AxKKAtsYXdgJR1mGEUa7DgwShbdk1nly0PYoZj01xd4hzbq3fsjpw==", + "requires": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.6", + "minimatch": "^9.0.1", + "minipass": "^7.0.4", + "path-scurry": "^1.11.0" + } + }, + "minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "requires": { + "brace-expansion": "^2.0.1" + } + } } }, - "node_modules/supports-color": { + "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": { + "requires": { "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" } }, - "node_modules/supports-preserve-symlinks-flag": { + "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==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" }, - "node_modules/tailwindcss": { + "tailwindcss": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.3.3.tgz", "integrity": "sha512-A0KgSkef7eE4Mf+nKJ83i75TMyq8HqY3qmFIJSWy8bNt0v1lG7jUcpGpoTFxAwYcWOphcTBLPPJg+bDfhDf52w==", - "dependencies": { + "requires": { "@alloc/quick-lru": "^5.2.0", "arg": "^5.0.2", "chokidar": "^3.5.3", @@ -3951,305 +3025,216 @@ "postcss-selector-parser": "^6.0.11", "resolve": "^1.22.2", "sucrase": "^3.32.0" - }, - "bin": { - "tailwind": "lib/cli.js", - "tailwindcss": "lib/cli.js" - }, - "engines": { - "node": ">=14.0.0" } }, - "node_modules/tapable": { + "tapable": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "engines": { - "node": ">=6" - } + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==" }, - "node_modules/text-table": { + "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==" }, - "node_modules/thenify": { + "thenify": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", - "dependencies": { + "requires": { "any-promise": "^1.0.0" } }, - "node_modules/thenify-all": { + "thenify-all": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", - "dependencies": { + "requires": { "thenify": ">= 3.1.0 < 4" - }, - "engines": { - "node": ">=0.8" } }, - "node_modules/to-regex-range": { + "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==", - "dependencies": { + "requires": { "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" } }, - "node_modules/ts-api-utils": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz", - "integrity": "sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==", - "engines": { - "node": ">=16.13.0" - }, - "peerDependencies": { - "typescript": ">=4.2.0" - } + "ts-api-utils": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", + "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==" }, - "node_modules/ts-interface-checker": { + "ts-interface-checker": { "version": "0.1.13", "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==" }, - "node_modules/tsconfig-paths": { - "version": "3.14.2", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz", - "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==", - "dependencies": { + "tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "requires": { "@types/json5": "^0.0.29", "json5": "^1.0.2", "minimist": "^1.2.6", "strip-bom": "^3.0.0" } }, - "node_modules/tslib": { + "tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, - "node_modules/type-check": { + "type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dependencies": { + "requires": { "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" } }, - "node_modules/type-fest": { + "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==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==" }, - "node_modules/typed-array-buffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", - "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1", - "is-typed-array": "^1.1.10" - }, - "engines": { - "node": ">= 0.4" + "typed-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", + "requires": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" } }, - "node_modules/typed-array-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", - "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", - "dependencies": { - "call-bind": "^1.0.2", + "typed-array-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", + "requires": { + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" } }, - "node_modules/typed-array-byte-offset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", - "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "typed-array-byte-offset": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", + "requires": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" } }, - "node_modules/typed-array-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", - "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", - "dependencies": { - "call-bind": "^1.0.2", + "typed-array-length": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", + "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", + "requires": { + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "is-typed-array": "^1.1.9" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" } }, - "node_modules/typescript": { + "typescript": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", - "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } + "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==" }, - "node_modules/unbox-primitive": { + "unbox-primitive": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "dependencies": { + "requires": { "call-bind": "^1.0.2", "has-bigints": "^1.0.2", "has-symbols": "^1.0.3", "which-boxed-primitive": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", - "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" } }, - "node_modules/uri-js": { + "update-browserslist-db": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz", + "integrity": "sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==", + "requires": { + "escalade": "^3.1.2", + "picocolors": "^1.0.1" + } + }, + "uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dependencies": { + "requires": { "punycode": "^2.1.0" } }, - "node_modules/util-deprecate": { + "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, - "node_modules/vary": { + "vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "engines": { - "node": ">= 0.8" - } + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" }, - "node_modules/watchpack": { + "watchpack": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", - "dependencies": { + "requires": { "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.1.2" - }, - "engines": { - "node": ">=10.13.0" } }, - "node_modules/webworkify": { + "webworkify": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/webworkify/-/webworkify-1.5.0.tgz", "integrity": "sha512-AMcUeyXAhbACL8S2hqqdqOLqvJ8ylmIbNwUIqQujRSouf4+eUFaXbG6F1Rbu+srlJMmxQWsiU7mOJi0nMBfM1g==" }, - "node_modules/webworkify-webpack": { + "webworkify-webpack": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/webworkify-webpack/-/webworkify-webpack-2.1.5.tgz", "integrity": "sha512-2akF8FIyUvbiBBdD+RoHpoTbHMQF2HwjcxfDvgztAX5YwbZNyrtfUMgvfgFVsgDhDPVTlkbb5vyasqDHfIDPQw==" }, - "node_modules/which": { + "which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dependencies": { + "requires": { "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" } }, - "node_modules/which-boxed-primitive": { + "which-boxed-primitive": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dependencies": { + "requires": { "is-bigint": "^1.0.1", "is-boolean-object": "^1.1.0", "is-number-object": "^1.0.4", "is-string": "^1.0.5", "is-symbol": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/which-builtin-type": { + "which-builtin-type": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz", "integrity": "sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==", - "dependencies": { + "requires": { "function.prototype.name": "^1.1.5", "has-tostringtag": "^1.0.0", "is-async-function": "^2.0.0", @@ -4262,102 +3247,90 @@ "which-boxed-primitive": "^1.0.2", "which-collection": "^1.0.1", "which-typed-array": "^1.1.9" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-collection": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", - "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", - "dependencies": { - "is-map": "^2.0.1", - "is-set": "^2.0.1", - "is-weakmap": "^2.0.1", - "is-weakset": "^2.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/which-typed-array": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", - "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "requires": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + } + }, + "which-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "requires": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", "for-each": "^0.3.3", "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "has-tostringtag": "^1.0.2" } }, - "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==" + "word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==" }, - "node_modules/ws": { - "version": "8.14.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.1.tgz", - "integrity": "sha512-4OOseMUq8AzRBI/7SLMUwO+FEDnguetSk7KMb1sHwvF2w2Wv5Hoj0nlifx8vtGsftE/jWHojPy8sMMzYLJ2G/A==", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" + "wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "requires": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true + "dependencies": { + "ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==" + }, + "ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==" }, - "utf-8-validate": { - "optional": true + "strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "requires": { + "ansi-regex": "^6.0.1" + } } } }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, - "node_modules/yaml": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.2.tgz", - "integrity": "sha512-N/lyzTPaJasoDmfV7YTrYCI0G/3ivm/9wdG0aHuheKowWQwGTsK0Eoiw6utmzAnI6pkJa0DUVygvp3spqqEKXg==", - "engines": { - "node": ">= 14" - } + "ws": { + "version": "8.17.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.0.tgz", + "integrity": "sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==" + }, + "yaml": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.2.tgz", + "integrity": "sha512-B3VqDZ+JAg1nZpaEmWtTXUlBneoGx6CPM9b0TENK6aoSu5t73dItudwdgmi6tHlIZZId4dZ9skcAQ2UbcyAeVA==" }, - "node_modules/yocto-queue": { + "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==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" }, - "node_modules/zod": { + "zod": { "version": "3.21.4", "resolved": "https://registry.npmjs.org/zod/-/zod-3.21.4.tgz", - "integrity": "sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==", - "funding": { - "url": "https://github.com/sponsors/colinhacks" - } + "integrity": "sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==" } } } diff --git a/common/interfaces/coffee_shop_ui/robot-interface/public/objects/banana.png b/common/interfaces/coffee_shop_ui/robot-interface/public/objects/banana.png new file mode 100644 index 000000000..b66917c60 Binary files /dev/null and b/common/interfaces/coffee_shop_ui/robot-interface/public/objects/banana.png differ diff --git a/common/interfaces/coffee_shop_ui/robot-interface/public/objects/biscuits.png b/common/interfaces/coffee_shop_ui/robot-interface/public/objects/biscuits.png deleted file mode 100644 index a4b4cfc7c..000000000 Binary files a/common/interfaces/coffee_shop_ui/robot-interface/public/objects/biscuits.png and /dev/null differ diff --git a/common/interfaces/coffee_shop_ui/robot-interface/public/objects/bottle.png b/common/interfaces/coffee_shop_ui/robot-interface/public/objects/bottle.png new file mode 100644 index 000000000..6a4f10ab6 Binary files /dev/null and b/common/interfaces/coffee_shop_ui/robot-interface/public/objects/bottle.png differ diff --git a/common/interfaces/coffee_shop_ui/robot-interface/public/objects/coffee.png b/common/interfaces/coffee_shop_ui/robot-interface/public/objects/coffee.png deleted file mode 100644 index e49b5f259..000000000 Binary files a/common/interfaces/coffee_shop_ui/robot-interface/public/objects/coffee.png and /dev/null differ diff --git a/common/interfaces/coffee_shop_ui/robot-interface/public/objects/cup.png b/common/interfaces/coffee_shop_ui/robot-interface/public/objects/cup.png new file mode 100644 index 000000000..62189b370 Binary files /dev/null and b/common/interfaces/coffee_shop_ui/robot-interface/public/objects/cup.png differ diff --git a/common/interfaces/coffee_shop_ui/robot-interface/public/objects/granola.png b/common/interfaces/coffee_shop_ui/robot-interface/public/objects/granola.png deleted file mode 100644 index d373f0f6d..000000000 Binary files a/common/interfaces/coffee_shop_ui/robot-interface/public/objects/granola.png and /dev/null differ diff --git a/common/interfaces/coffee_shop_ui/robot-interface/public/objects/orange_juice.png b/common/interfaces/coffee_shop_ui/robot-interface/public/objects/orange_juice.png deleted file mode 100644 index 5fe77fa93..000000000 Binary files a/common/interfaces/coffee_shop_ui/robot-interface/public/objects/orange_juice.png and /dev/null differ diff --git a/common/interfaces/coffee_shop_ui/robot-interface/public/objects/sandwich.png b/common/interfaces/coffee_shop_ui/robot-interface/public/objects/sandwich.png deleted file mode 100644 index 96ca25c3c..000000000 Binary files a/common/interfaces/coffee_shop_ui/robot-interface/public/objects/sandwich.png and /dev/null differ diff --git a/common/interfaces/coffee_shop_ui/robot-interface/public/objects/smoothie.png b/common/interfaces/coffee_shop_ui/robot-interface/public/objects/smoothie.png deleted file mode 100644 index 0b7ea08f3..000000000 Binary files a/common/interfaces/coffee_shop_ui/robot-interface/public/objects/smoothie.png and /dev/null differ diff --git a/common/interfaces/coffee_shop_ui/robot-interface/public/tiago.jpg b/common/interfaces/coffee_shop_ui/robot-interface/public/tiago.jpg index 172458513..a9b22ff32 100644 Binary files a/common/interfaces/coffee_shop_ui/robot-interface/public/tiago.jpg and b/common/interfaces/coffee_shop_ui/robot-interface/public/tiago.jpg differ diff --git a/common/vision/lasr_vision_yolov8/launch/camera.launch b/common/vision/lasr_vision_yolov8/launch/camera.launch index 13ab9a0be..e0b478f32 100644 --- a/common/vision/lasr_vision_yolov8/launch/camera.launch +++ b/common/vision/lasr_vision_yolov8/launch/camera.launch @@ -16,10 +16,10 @@ - + - + \ No newline at end of file diff --git a/legacy/aruco_service/CATKIN_IGNORE b/legacy/aruco_service/CATKIN_IGNORE deleted file mode 100644 index e69de29bb..000000000 diff --git a/legacy/aruco_service/CMakeLists.txt b/legacy/aruco_service/CMakeLists.txt index 890b5aba2..6363c3676 100644 --- a/legacy/aruco_service/CMakeLists.txt +++ b/legacy/aruco_service/CMakeLists.txt @@ -8,7 +8,6 @@ project(aruco_service) ## if COMPONENTS list like find_package(catkin REQUIRED COMPONENTS xyz) ## is used, also find other catkin packages find_package(catkin REQUIRED COMPONENTS - aruco_msgs geometry_msgs roscpp rospy @@ -74,7 +73,8 @@ add_service_files( ## Generate added messages and services with any dependencies listed here generate_messages( DEPENDENCIES - aruco_msgs geometry_msgs std_msgs + geometry_msgs + std_msgs ) ################################################ diff --git a/legacy/aruco_service/service_debug.rviz b/legacy/aruco_service/config/service_debug.rviz similarity index 100% rename from legacy/aruco_service/service_debug.rviz rename to legacy/aruco_service/config/service_debug.rviz diff --git a/legacy/aruco_service/launch/coffee_shop_prep.launch b/legacy/aruco_service/launch/coffee_shop_prep.launch index 6639975c3..c479fa6a0 100644 --- a/legacy/aruco_service/launch/coffee_shop_prep.launch +++ b/legacy/aruco_service/launch/coffee_shop_prep.launch @@ -4,6 +4,6 @@ - + diff --git a/legacy/aruco_service/launch/singleTiago.launch b/legacy/aruco_service/launch/singleTiago.launch index 580939ed2..bb0b0c205 100644 --- a/legacy/aruco_service/launch/singleTiago.launch +++ b/legacy/aruco_service/launch/singleTiago.launch @@ -4,7 +4,7 @@ - + diff --git a/legacy/aruco_service/test_check_table_sim.yaml b/legacy/aruco_service/test_check_table_sim.yaml deleted file mode 100644 index 5672a5b9a..000000000 --- a/legacy/aruco_service/test_check_table_sim.yaml +++ /dev/null @@ -1,93 +0,0 @@ -counter: - cuboid: - - [1.5107849957816444, -0.25066567350926594] - - [1.2876042868157063, 0.9279327218929462] - - [0.6980933854538911, 0.8162488708444934] - - [0.9212740944198292, -0.36234952455771874] - last_updated: '2023-08-11 14:42:35.347921' - location: - orientation: {w: 0.0173693114911, x: 0.0, y: 0.0, z: -0.99} - position: {x: 0.222374471246, y: 5.10986001747, z: 0.0} -current_table: table0 -tables: - table0: - last_updated: '2023-08-11 14:39:42.428180' - location: - orientation: {w: 0.03, x: 0.0, y: 0.0, z: -0.99} - position: {x: -0.74, y: -3.57, z: 0.0} - semantic: end - num_persons: 0 - objects_cuboid: - - [1.5106148803956831, -0.2530914533537322] - - [1.295776049010358, 0.9270992669926367] - - [0.7054739490540517, 0.8196612763333845] - - [0.9203127804393768, -0.36052944401298437] - order: [] - persons_cuboid: - - [3.836353265892246, -1.8619493517335064] - - [2.9053849965558367, 3.2522104364340927] - - [-1.6202644364425114, 2.428519174713159] - - [-0.6892961671061022, -2.68564061345444] - pre_location: - orientation: {w: 0.715250767432, x: 0.0, y: 0.0, z: -0.698867898596} - position: {x: 1.70070851471, y: -0.2850247924, z: 0.0} - status: unvisited - table1: - last_updated: '2023-09-06 17:27:24.621675' - location: - orientation: {w: 0.6945330930107928, x: 0.0, y: 0.0, z: -0.7194607582855798} - position: {x: 0.2380382653418661, y: -1.9596508344283876, z: 0.0} - semantic: end - objects_cuboid: - - [0.18085621646545255, 0.4951742497371268] - - [1.3788119304369095, 0.44839179933338924] - - [1.4023456344766423, 1.0479236512678833] - - [0.20438992050518523, 1.094706101671621] - persons_cuboid: - - [-0.3379034177224317, 0.015057060793272237] - - [1.8583487245585726, -0.07071076494691336] - - [1.9211052686645265, 1.5280408402117382] - - [-0.27514687361647794, 1.6138086659519237] - table2: - last_updated: '2023-09-14 13:24:45.784027' - location: - orientation: {w: 0.8777675185589325, x: 0.0, y: 0.0, z: 0.4790868223640617} - position: {x: 4.268568695185875, y: 1.65876967686265, z: 0.0} - objects_cuboid: - - [4.14781513511814, 2.303367071557133] - - [5.152473956594257, 1.647248810124097] - - [5.480062020696485, 2.14933934009104] - - [4.475403199220368, 2.8054576015240755] - persons_cuboid: - - [3.4562172394179016, 2.158340905515112] - - [5.298091745457448, 0.955457426221213] - - [6.171659916396723, 2.294365506133061] - - [4.329785410357177, 3.4972489854269595] - table3: - last_updated: '2023-09-14 13:26:20.189639' - location: - orientation: {w: 0.9161691481201792, x: 0.0, y: 0.0, z: 0.40079183129493184} - position: {x: 3.2981378736303015, y: 2.2215985543521324, z: 0.0} - objects_cuboid: - - [3.2658046838385357, 3.0752199117922876] - - [4.258617072502906, 2.403343913032094] - - [4.594381212847623, 2.9004544748762413] - - [3.6015688241832535, 3.5723304736364354] - persons_cuboid: - - [2.572329404941117, 2.940909443072245] - - [4.392485450825795, 1.7091367786785567] - - [5.287856491745043, 3.0347649435962842] - - [3.467700445860364, 4.266537607989973] -wait: - cuboid: - - [1.5106714710118636, -0.2507169263966076] - - [1.2892009736373304, 0.9281830359742076] - - [0.6995199087568477, 0.8173865689933699] - - [0.9209904061313808, -0.36151339337744526] - last_updated: '2023-08-11 14:43:04.183469' - location: - orientation: {w: 0.658324712318, x: 0.0, y: 0.0, z: 0.752734065} - position: {x: 2.71006066106, y: 2.12491014098, z: 0.0} - pose: - orientation: {w: 0.988446808547, x: 0.0, y: 0.0, z: -0.151568158509} - position: {x: 2.67279863358, y: -0.270290255547, z: -0.00143432617188} diff --git a/legacy/aruco_service/test_lift_wait_position.yaml b/legacy/aruco_service/test_lift_wait_position.yaml deleted file mode 100644 index 5ba601877..000000000 --- a/legacy/aruco_service/test_lift_wait_position.yaml +++ /dev/null @@ -1,5 +0,0 @@ -corner 1: !!python/tuple [12.386118771657284, 28.238929907020307] -corner 2: !!python/tuple [12.971571544394878, 26.59451863098756] -corner 3: !!python/tuple [11.324766697049062, 26.01868978106935] -corner 4: !!python/tuple [10.739313924311467, 27.663101057102097] -wait position: !!python/tuple [10.362901387775281, 27.53148303426365] diff --git a/legacy/lasr_shapely/CATKIN_IGNORE b/legacy/lasr_shapely/CATKIN_IGNORE deleted file mode 100644 index e69de29bb..000000000 diff --git a/legacy/lasr_shapely/CMakeLists.txt b/legacy/lasr_shapely/CMakeLists.txt deleted file mode 100644 index 6fba4dceb..000000000 --- a/legacy/lasr_shapely/CMakeLists.txt +++ /dev/null @@ -1,205 +0,0 @@ -cmake_minimum_required(VERSION 3.0.2) -project(lasr_shapely) - -## Compile as C++11, supported in ROS Kinetic and newer -# add_compile_options(-std=c++11) - -## Find catkin macros and libraries -## if COMPONENTS list like find_package(catkin REQUIRED COMPONENTS xyz) -## is used, also find other catkin packages -find_package(catkin REQUIRED COMPONENTS catkin_virtualenv message_generation) - -## System dependencies are found with CMake's conventions -# find_package(Boost REQUIRED COMPONENTS system) - - -## Uncomment this if the package has a setup.py. This macro ensures -## modules and global scripts declared therein get installed -## See http://ros.org/doc/api/catkin/html/user_guide/setup_dot_py.html -catkin_python_setup() -catkin_generate_virtualenv( - INPUT_REQUIREMENTS requirements.in - PYTHON_INTERPRETER python3.10 -) - -################################################ -## Declare ROS messages, services and actions ## -################################################ - -## To declare and build messages, services or actions from within this -## package, follow these steps: -## * Let MSG_DEP_SET be the set of packages whose message types you use in -## your messages/services/actions (e.g. std_msgs, actionlib_msgs, ...). -## * In the file package.xml: -## * add a build_depend tag for "message_generation" -## * add a build_depend and a exec_depend tag for each package in MSG_DEP_SET -## * If MSG_DEP_SET isn't empty the following dependency has been pulled in -## but can be declared for certainty nonetheless: -## * add a exec_depend tag for "message_runtime" -## * In this file (CMakeLists.txt): -## * add "message_generation" and every package in MSG_DEP_SET to -## find_package(catkin REQUIRED COMPONENTS ...) -## * add "message_runtime" and every package in MSG_DEP_SET to -## catkin_package(CATKIN_DEPENDS ...) -## * uncomment the add_*_files sections below as needed -## and list every .msg/.srv/.action file to be processed -## * uncomment the generate_messages entry below -## * add every package in MSG_DEP_SET to generate_messages(DEPENDENCIES ...) - -## Generate messages in the 'msg' folder -# add_message_files( -# FILES -# Message1.msg -# Message2.msg -# ) - -## Generate services in the 'srv' folder -add_service_files( - FILES - PointInPolygon2D.srv - PointsInPolygon2D.srv -) - -## Generate actions in the 'action' folder -# add_action_files( -# FILES -# Action1.action -# Action2.action -# ) - -## Generate added messages and services with any dependencies listed here -generate_messages( - DEPENDENCIES -# std_msgs # Or other packages containing msgs -) - -################################################ -## Declare ROS dynamic reconfigure parameters ## -################################################ - -## To declare and build dynamic reconfigure parameters within this -## package, follow these steps: -## * In the file package.xml: -## * add a build_depend and a exec_depend tag for "dynamic_reconfigure" -## * In this file (CMakeLists.txt): -## * add "dynamic_reconfigure" to -## find_package(catkin REQUIRED COMPONENTS ...) -## * uncomment the "generate_dynamic_reconfigure_options" section below -## and list every .cfg file to be processed - -## Generate dynamic reconfigure parameters in the 'cfg' folder -# generate_dynamic_reconfigure_options( -# cfg/DynReconf1.cfg -# cfg/DynReconf2.cfg -# ) - -################################### -## catkin specific configuration ## -################################### -## The catkin_package macro generates cmake config files for your package -## Declare things to be passed to dependent projects -## INCLUDE_DIRS: uncomment this if your package contains header files -## LIBRARIES: libraries you create in this project that dependent projects also need -## CATKIN_DEPENDS: catkin_packages dependent projects also need -## DEPENDS: system dependencies of this project that dependent projects also need -catkin_package( -# INCLUDE_DIRS include -# LIBRARIES lasr_shapely - CATKIN_DEPENDS message_runtime -# DEPENDS system_lib -) - -########### -## Build ## -########### - -## Specify additional locations of header files -## Your package locations should be listed before other locations -include_directories( -# include -# ${catkin_INCLUDE_DIRS} -) - -## Declare a C++ library -# add_library(${PROJECT_NAME} -# src/${PROJECT_NAME}/lasr_shapely.cpp -# ) - -## Add cmake target dependencies of the library -## as an example, code may need to be generated before libraries -## either from message generation or dynamic reconfigure -# add_dependencies(${PROJECT_NAME} ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS}) - -## Declare a C++ executable -## With catkin_make all packages are built within a single CMake context -## The recommended prefix ensures that target names across packages don't collide -# add_executable(${PROJECT_NAME}_node src/lasr_shapely_node.cpp) - -## Rename C++ executable without prefix -## The above recommended prefix causes long target names, the following renames the -## target back to the shorter version for ease of user use -## e.g. "rosrun someones_pkg node" instead of "rosrun someones_pkg someones_pkg_node" -# set_target_properties(${PROJECT_NAME}_node PROPERTIES OUTPUT_NAME node PREFIX "") - -## Add cmake target dependencies of the executable -## same as for the library above -# add_dependencies(${PROJECT_NAME}_node ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS}) - -## Specify libraries to link a library or executable target against -# target_link_libraries(${PROJECT_NAME}_node -# ${catkin_LIBRARIES} -# ) - -############# -## Install ## -############# - -# all install targets should use catkin DESTINATION variables -# See http://ros.org/doc/api/catkin/html/adv_user_guide/variables.html - -## Mark executable scripts (Python etc.) for installation -## in contrast to setup.py, you can choose the destination -catkin_install_python(PROGRAMS - nodes/service - DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} -) - -## Mark executables for installation -## See http://docs.ros.org/melodic/api/catkin/html/howto/format1/building_executables.html -# install(TARGETS ${PROJECT_NAME}_node -# RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} -# ) - -## Mark libraries for installation -## See http://docs.ros.org/melodic/api/catkin/html/howto/format1/building_libraries.html -# install(TARGETS ${PROJECT_NAME} -# ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} -# LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} -# RUNTIME DESTINATION ${CATKIN_GLOBAL_BIN_DESTINATION} -# ) - -## Mark cpp header files for installation -# install(DIRECTORY include/${PROJECT_NAME}/ -# DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION} -# FILES_MATCHING PATTERN "*.h" -# PATTERN ".svn" EXCLUDE -# ) - -## Mark other files for installation (e.g. launch and bag files, etc.) -# install(FILES -# requirements.txt -# DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION} -# ) - -############# -## Testing ## -############# - -## Add gtest based cpp test target and link libraries -# catkin_add_gtest(${PROJECT_NAME}-test test/test_lasr_shapely.cpp) -# if(TARGET ${PROJECT_NAME}-test) -# target_link_libraries(${PROJECT_NAME}-test ${PROJECT_NAME}) -# endif() - -## Add folders to be run by python nosetests -# catkin_add_nosetests(test) diff --git a/legacy/lasr_shapely/README.md b/legacy/lasr_shapely/README.md deleted file mode 100644 index b037d4b96..000000000 --- a/legacy/lasr_shapely/README.md +++ /dev/null @@ -1,97 +0,0 @@ -# lasr_shapely - -Abstraction of some algorithms provided by shapely as services. Intended for Python 3.6 or older environments. - -This package is maintained by: -- [Paul Makles](mailto:me@insrt.uk) - -## Prerequisites - -This package depends on the following ROS packages: -- catkin (buildtool) -- catkin_virtualenv (build) -- message_generation (build) -- message_runtime (exec) - -This packages requires Python 3.10 to be present. - -This package has 2 Python dependencies: -- [shapely](https://pypi.org/project/shapely)None -- .. and 1 sub dependencies - - - -## Usage - -Start the service: - -```bash -rosrun lasr_shapely service -``` - -Then consume the Python library: - -```python -from lasr_shapely import LasrShapely - -shapely = LasrShapely() - -shapely.is_point_in_polygon_2d([[0, 0], [5,0], [10, 10], [0, 5]], 6, 6) -shapely.are_points_in_polygon_2d([[0, 0], [5,0], [10, 10], [0, 5]], [[1,2], [11, 11]]) -``` - -## Example - -See usage. - -## Technical Overview - -This package is just a service wrapper around a Python 3.7+ library. - -## ROS Definitions - -### Launch Files - -This package has no launch files. - -### Messages - -This package has no messages. - -### Services - -#### `PointsInPolygon2D` - -Request - -| Field | Type | Description | -|:-:|:-:|---| -| polygon | float32[] | 1D-array of ordered pairs of points (connected by edge) that define the polygon | -| points | float32[] | 1D-array of pairs of points | - -Response - -| Field | Type | Description | -|:-:|:-:|---| -| inside | bool[] | Whether the points are inside the polygon | - -#### `PointInPolygon2D` - -Request - -| Field | Type | Description | -|:-:|:-:|---| -| polygon | float32[] | 1D-array of ordered pairs of points (connected by edge) that define the polygon | -| x | float32 | X coordinate of point | -| y | float32 | Y coordinate of point | - -Response - -| Field | Type | Description | -|:-:|:-:|---| -| inside | bool | Whether the point is inside the polygon | - - -### Actions - -This package has no actions. diff --git a/legacy/lasr_shapely/doc/EXAMPLE.md b/legacy/lasr_shapely/doc/EXAMPLE.md deleted file mode 100644 index 798e5a7f6..000000000 --- a/legacy/lasr_shapely/doc/EXAMPLE.md +++ /dev/null @@ -1 +0,0 @@ -See usage. \ No newline at end of file diff --git a/legacy/lasr_shapely/doc/PREREQUISITES.md b/legacy/lasr_shapely/doc/PREREQUISITES.md deleted file mode 100644 index e69de29bb..000000000 diff --git a/legacy/lasr_shapely/doc/TECHNICAL.md b/legacy/lasr_shapely/doc/TECHNICAL.md deleted file mode 100644 index 903ad0823..000000000 --- a/legacy/lasr_shapely/doc/TECHNICAL.md +++ /dev/null @@ -1 +0,0 @@ -This package is just a service wrapper around a Python 3.7+ library. \ No newline at end of file diff --git a/legacy/lasr_shapely/doc/USAGE.md b/legacy/lasr_shapely/doc/USAGE.md deleted file mode 100644 index e49ec748a..000000000 --- a/legacy/lasr_shapely/doc/USAGE.md +++ /dev/null @@ -1,16 +0,0 @@ -Start the service: - -```bash -rosrun lasr_shapely service -``` - -Then consume the Python library: - -```python -from lasr_shapely import LasrShapely - -shapely = LasrShapely() - -shapely.is_point_in_polygon_2d([[0, 0], [5,0], [10, 10], [0, 5]], 6, 6) -shapely.are_points_in_polygon_2d([[0, 0], [5,0], [10, 10], [0, 5]], [[1,2], [11, 11]]) -``` diff --git a/legacy/lasr_shapely/nodes/service b/legacy/lasr_shapely/nodes/service deleted file mode 100644 index 5b4aef4eb..000000000 --- a/legacy/lasr_shapely/nodes/service +++ /dev/null @@ -1,23 +0,0 @@ -#!/usr/bin/env python3 -import rospy -from shapely.geometry import Point -from shapely.geometry.polygon import Polygon - -from lasr_shapely.srv import PointInPolygon2D, PointsInPolygon2D, PointInPolygon2DResponse, PointsInPolygon2DResponse - -def handle_point_in_polygon_2d(req): - point = Point(req.x, req.y) - polygon = Polygon([(req.polygon[i], req.polygon[i+1]) for i in range(0, len(req.polygon), 2)]) - return PointInPolygon2DResponse(polygon.contains(point)) - -def handle_points_in_polygon_2d(req): - polygon = Polygon([(req.polygon[i], req.polygon[i+1]) for i in range(0, len(req.polygon), 2)]) - return PointsInPolygon2DResponse([ - polygon.contains(Point(req.points[i], req.points[i+1])) for i in range(0, len(req.points), 2) - ]) - -rospy.init_node('lasr_shapely') -rospy.Service('/lasr_shapely/point_in_polygon_2d', PointInPolygon2D, handle_point_in_polygon_2d) -rospy.Service('/lasr_shapely/points_in_polygon_2d', PointsInPolygon2D, handle_points_in_polygon_2d) -rospy.loginfo("lasr_shapely service running") -rospy.spin() diff --git a/legacy/lasr_shapely/package.xml b/legacy/lasr_shapely/package.xml deleted file mode 100644 index 0e873f694..000000000 --- a/legacy/lasr_shapely/package.xml +++ /dev/null @@ -1,62 +0,0 @@ - - - lasr_shapely - 0.0.0 - Abstraction of some algorithms provided by shapely as services. Intended for Python 3.6 or older environments. - - - - - Paul Makles - - - - - - TODO - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - catkin - catkin_virtualenv - message_generation - message_runtime - - - - - - requirements.txt - - diff --git a/legacy/lasr_shapely/requirements.in b/legacy/lasr_shapely/requirements.in deleted file mode 100644 index 231726ccb..000000000 --- a/legacy/lasr_shapely/requirements.in +++ /dev/null @@ -1 +0,0 @@ -shapely \ No newline at end of file diff --git a/legacy/lasr_shapely/requirements.txt b/legacy/lasr_shapely/requirements.txt deleted file mode 100644 index f813785ce..000000000 --- a/legacy/lasr_shapely/requirements.txt +++ /dev/null @@ -1,2 +0,0 @@ -numpy==1.25.2 # via shapely -shapely==2.0.1 # via -r requirements.in diff --git a/legacy/lasr_shapely/setup.py b/legacy/lasr_shapely/setup.py deleted file mode 100644 index 956f1c2ad..000000000 --- a/legacy/lasr_shapely/setup.py +++ /dev/null @@ -1,10 +0,0 @@ -#!/usr/bin/env python3 - -from distutils.core import setup -from catkin_pkg.python_setup import generate_distutils_setup - -setup_args = generate_distutils_setup( - packages=["lasr_shapely"], package_dir={"": "src"} -) - -setup(**setup_args) diff --git a/legacy/lasr_shapely/src/lasr_shapely/__init__.py b/legacy/lasr_shapely/src/lasr_shapely/__init__.py deleted file mode 100644 index c7f60e41f..000000000 --- a/legacy/lasr_shapely/src/lasr_shapely/__init__.py +++ /dev/null @@ -1,45 +0,0 @@ -import rospy - -from lasr_shapely.srv import PointInPolygon2D, PointsInPolygon2D - - -class LasrShapely: - """ - Wrapper class for Shapely service - """ - - def __init__(self): - rospy.wait_for_service("/lasr_shapely/point_in_polygon_2d") - - self.point_proxy = rospy.ServiceProxy( - "/lasr_shapely/point_in_polygon_2d", PointInPolygon2D - ) - self.points_proxy = rospy.ServiceProxy( - "/lasr_shapely/points_in_polygon_2d", PointsInPolygon2D - ) - - def is_point_in_polygon_2d(self, polygon_2d_array, x, y): - return self.point_proxy( - polygon=[item for sublist in polygon_2d_array for item in sublist], x=x, y=y - ) - - def are_points_in_polygon_2d(self, polygon_2d_array, points_2d_array): - return self.points_proxy( - polygon=[item for sublist in polygon_2d_array for item in sublist], - points=[item for sublist in points_2d_array for item in sublist], - ) - - def are_points_in_polygon_2d_flatarr(self, polygon_2d_array, points_2d_array): - return self.points_proxy(polygon=polygon_2d_array, points=points_2d_array) - - -if __name__ == "__main__": - rospy.init_node("testgkfdp", anonymous=True) - print( - LasrShapely().is_point_in_polygon_2d([[0, 0], [5, 0], [10, 10], [0, 5]], 6, 6) - ) - print( - LasrShapely().are_points_in_polygon_2d( - [[0, 0], [5, 0], [10, 10], [0, 5]], [[1, 2], [11, 11]] - ) - ) diff --git a/legacy/lasr_shapely/srv/PointInPolygon2D.srv b/legacy/lasr_shapely/srv/PointInPolygon2D.srv deleted file mode 100644 index 4eb6b5cc3..000000000 --- a/legacy/lasr_shapely/srv/PointInPolygon2D.srv +++ /dev/null @@ -1,9 +0,0 @@ -# 1D-array of ordered pairs of points (connected by edge) that define the polygon -float32[] polygon -# X coordinate of point -float32 x -# Y coordinate of point -float32 y ---- -# Whether the point is inside the polygon -bool inside diff --git a/legacy/lasr_shapely/srv/PointsInPolygon2D.srv b/legacy/lasr_shapely/srv/PointsInPolygon2D.srv deleted file mode 100644 index 0def5e003..000000000 --- a/legacy/lasr_shapely/srv/PointsInPolygon2D.srv +++ /dev/null @@ -1,7 +0,0 @@ -# 1D-array of ordered pairs of points (connected by edge) that define the polygon -float32[] polygon -# 1D-array of pairs of points -float32[] points ---- -# Whether the points are inside the polygon -bool[] inside diff --git a/tasks/coffee_shop/CATKIN_IGNORE b/tasks/coffee_shop/CATKIN_IGNORE deleted file mode 100644 index e69de29bb..000000000 diff --git a/tasks/coffee_shop/CMakeLists.txt b/tasks/coffee_shop/CMakeLists.txt index f02257028..8e02ccf25 100644 --- a/tasks/coffee_shop/CMakeLists.txt +++ b/tasks/coffee_shop/CMakeLists.txt @@ -50,12 +50,9 @@ catkin_python_setup() # ) ## Generate services in the 'srv' folder -add_service_files( - FILES - TfTransform.srv - LatestTransform.srv - ApplyTransform.srv -) +# add_service_files( +# FILES +# ) ## Generate actions in the 'action' folder # add_action_files( @@ -65,12 +62,12 @@ add_service_files( # ) ## Generate added messages and services with any dependencies listed here -generate_messages( - DEPENDENCIES - std_msgs # Or other packages containing msgs - geometry_msgs - sensor_msgs -) +# generate_messages( +# DEPENDENCIES +# std_msgs # Or other packages containing msgs +# geometry_msgs +# sensor_msgs +# ) ################################################ ## Declare ROS dynamic reconfigure parameters ## diff --git a/tasks/coffee_shop/TODO.md b/tasks/coffee_shop/TODO.md deleted file mode 100644 index 1faeffdf4..000000000 --- a/tasks/coffee_shop/TODO.md +++ /dev/null @@ -1,2 +0,0 @@ -- State machine template -- Implementation of final stage states. diff --git a/tasks/coffee_shop/config/ai_festival.yaml b/tasks/coffee_shop/config/ai_festival.yaml new file mode 100755 index 000000000..4b47ba3f7 --- /dev/null +++ b/tasks/coffee_shop/config/ai_festival.yaml @@ -0,0 +1,152 @@ +counter: + cuboid: + - - -4.664883613586426 + - 0.5069149136543274 + - - -4.66 + - 1.18 + - - -3.78360652923584 + - 1.1981416940689087 + - - -3.700509548187256 + - 0.4764649569988251 + last_updated: '2024-05-21 12:43:44.778366' + location: + position: + x: -4.296226348137036 + y: 0.08967264124909166 + z: 0.0 + orientation: + x: 0.0 + y: 0.0 + z: 0.7401058378508781 + w: 0.6724904079457562 +tables: + table0: + last_updated: '2024-05-21 11:05:19.105609' + location: + orientation: + w: 0.026904741251259426 + x: 0.0 + y: 0.0 + z: -0.9996380019277993 + position: + x: -4.855822287964941 + y: -2.7264784408971066 + z: 0.0 + semantic: end + num_persons: 0 + objects_cuboid: + - - -7.309726603688448 + - -3.1535004587235225 + - - -5.49823308072611 + - -3.274925312500865 + - - -5.448570318314367 + - -2.4770380084237065 + - - -7.260063841276704 + - -2.3556131546463646 + order: [] + persons_cuboid: + - - -8.15129910291433 + - -3.898305859510039 + - - -4.755986106323717 + - -4.125894519868664 + - - -4.606997819088486 + - -1.7322326076371901 + - - -8.002310815679097 + - -1.5046439472785653 + pre_location: + orientation: + w: 0.6981442535161398 + x: 0.0 + y: 0.0 + z: -0.7159571225166993 + position: + x: 3.4185893265341467 + y: 1.5007719904983003 + z: 0.0 + status: unvisited + table1: + last_updated: '2024-05-21 11:06:56.162367' + location: + orientation: + w: 0.6940979898029392 + x: 0.0 + y: 0.0 + z: -0.719880532138159 + position: + x: -2.4651278785547643 + y: -1.2458226745654628 + z: 0.0 + objects_cuboid: + - - -2.8254424871901778 + - -1.9543831504533626 + - - -2.859456062960578 + - -3.7829678107717317 + - - -2.059597477265037 + - -3.79774950535365 + - - -2.0255839014946373 + - -1.9691648450352808 + persons_cuboid: + - - -3.61043175014456 + - -1.140220183601119 + - - -3.6741839713972766 + - -4.567567388460139 + - - -1.2746082143106547 + - -4.611912472205893 + - - -1.210855993057938 + - -1.1845652673468736 + pre_location: + orientation: + w: 0.679755237535674 + x: 0.0 + y: 0.0 + z: -0.7334390343053875 + position: + x: 6.294876273276469 + y: 2.3564053436919483 + z: 0.0 +wait: + approach1: + orientation: + w: 0.03122925045972576 + x: 0.0 + y: 0.0 + z: 0.9995122480068585 + position: + x: -2.8701601223027664 + y: -0.3562256053497737 + z: 0.0 + approach2: + orientation: + w: 0.005185091989047549 + x: 0.0 + y: 0.0 + z: -0.9999865573201797 + position: + x: -3.973111012447058 + y: -0.35096261264440465 + z: 0.0 + cuboid: + - - -4.7717108537934765 + - -1.0936771098678093 + - - -4.826165578352385 + - 0.5047626855067713 + - - -5.923852265904756 + - 0.4656883095154718 + - - -5.8693975413458475 + - -1.1327514858591088 + last_updated: '2024-05-21 11:11:40.469766' + location: + orientation: + w: 0.0101037455354343 + x: 0.0 + y: 0.0 + z: -0.9999489558603255 + position: + x: -1.2641920084155993 + y: -0.30165943641891735 + z: 0.0 +objects: {"cup" : "coffee", "bottle": "cocacola"} + +yolo_person_model: "yolov8n-seg.pt" +yolo_objects_model: "yolov8n-seg.pt" +yolo_counter_model: "yolov8n-seg.pt" diff --git a/tasks/coffee_shop/config/ai_festival_2.yaml b/tasks/coffee_shop/config/ai_festival_2.yaml new file mode 100644 index 000000000..ec8565e7f --- /dev/null +++ b/tasks/coffee_shop/config/ai_festival_2.yaml @@ -0,0 +1,147 @@ +counter: + cuboid: + - - -4.589782504695045 + - 0.5566271401427713 + - - -4.66 + - 1.18 + - - -3.5521452061834102 + - 0.861161335790206 + - - -4.411487855334991 + - 1.127419091956325 + last_updated: '2024-05-21 12:43:44.778366' + location: + orientation: + w: 0.7771925436938631 + x: 0.0 + y: 0.0 + z: 0.62926286242449 + position: + x: -4.334041429088822 + y: -0.009764382985697966 + z: 0.0 +tables: + table0: + last_updated: '2024-05-21 12:43:37.890911' + location: + orientation: + w: 0.7591775571212552 + x: 0.0 + y: 0.0 + z: 0.6508835815746187 + position: + x: -4.568242683559272 + y: 0.06684751379553569 + z: 0.0 + semantic: end + num_persons: 0 + objects_cuboid: + - - -4.5898689635799474 + - 0.5569712154888609 + - - -3.73085110930462 + - 0.28950763771438615 + - - -3.5518578665543012 + - 0.8602260634594268 + - - -4.410875720829629 + - 1.1276896412339015 + order: [] + persons_cuboid: + - - -5.84265531735862 + - -0.09704440767012379 + - - -3.0747088980270094 + - -0.9588714916100978 + - - -2.2990715127756283 + - 1.5142416866184116 + - - -5.067017932107239 + - 2.3760687705583856 + pre_location: + orientation: + w: 0.6981442535161398 + x: 0.0 + y: 0.0 + z: -0.7159571225166993 + position: + x: 3.4185893265341467 + y: 1.5007719904983003 + z: 0.0 + status: unvisited + table1: + last_updated: '2024-05-21 11:06:56.162367' + location: + orientation: + w: 0.6940979898029392 + x: 0.0 + y: 0.0 + z: -0.719880532138159 + position: + x: -2.4651278785547643 + y: -1.2458226745654628 + z: 0.0 + objects_cuboid: + - - -2.8254424871901778 + - -1.9543831504533626 + - - -2.859456062960578 + - -3.7829678107717317 + - - -2.059597477265037 + - -3.79774950535365 + - - -2.0255839014946373 + - -1.9691648450352808 + persons_cuboid: + - - -3.61043175014456 + - -1.140220183601119 + - - -3.6741839713972766 + - -4.567567388460139 + - - -1.2746082143106547 + - -4.611912472205893 + - - -1.210855993057938 + - -1.1845652673468736 + pre_location: + orientation: + w: 0.679755237535674 + x: 0.0 + y: 0.0 + z: -0.7334390343053875 + position: + x: 6.294876273276469 + y: 2.3564053436919483 + z: 0.0 +wait: + approach1: + orientation: + w: 0.03122925045972576 + x: 0.0 + y: 0.0 + z: 0.9995122480068585 + position: + x: -2.8701601223027664 + y: -0.3562256053497737 + z: 0.0 + approach2: + orientation: + w: 0.005185091989047549 + x: 0.0 + y: 0.0 + z: -0.9999865573201797 + position: + x: -3.973111012447058 + y: -0.35096261264440465 + z: 0.0 + cuboid: + - - -4.684506316772146 + - 0.6076050756113518 + - - -3.6937263427363503 + - 0.47421678736600054 + - - -3.5589995422023004 + - 1.4627103631531602 + - - -4.549779516238097 + - 1.5960986513985114 + last_updated: '2024-05-21 12:44:20.229716' + location: + orientation: + w: 0.4204985527347494 + x: 0.0 + y: 0.0 + z: 0.9072932090278099 + position: + x: -4.408414332163996 + y: 0.11043913610712916 + z: 0.0 diff --git a/tasks/coffee_shop/config/demo.yaml b/tasks/coffee_shop/config/demo.yaml deleted file mode 100644 index 581536510..000000000 --- a/tasks/coffee_shop/config/demo.yaml +++ /dev/null @@ -1,33 +0,0 @@ -tables: - table0: - num_persons: 0 - status: "unvisited" - order: [] - location: - position: {x: 1.14578607803, y: 1.00757782153, z: 0.0} - orientation: {x: 0.0, y: 0.0, z: 0.746444684543, w: 0.665447468188} - objects_cuboid: - min: [0.615044414997, 1.39581489563, 0.0] - max: [1.47426867485, 2.16378450394, 8.0 ] - persons_cuboid: - min: [-1.615044414997, 0.39581489563, -1.0013427734375] - max: [2.47426867485, 3.16378450394, 8.0013427734375 ] - table1: - num_persons: 0 - status: "unvisited" - order: [] - location: - position: {x: 0.991964592752, y: -0.501381130548, z: 0.0} - orientation: {x: 0.0, y: 0.0, z: 0.0967301538286, w: 0.995310643639} - objects_cuboid: - min: [1.38313889503, -0.777928173542, 0.0] - max: [2.08614087105, 0.14623811841, 8.0] - persons_cuboid: - min: [0.38313889503, -1.777928173542, -1.00137329101562] - max: [3.08614087105, 1.14623811841, 11.0880737304688] - -wait: - location: - position: {x: 2.71006066106, y: 2.12491014098, z: 0.0} - orientation: {x: 0.0, y: 0.0, z: 0.752734065359, w: 0.658324712318} - diff --git a/tasks/coffee_shop/config/dev_room_16_05.yaml b/tasks/coffee_shop/config/dev_room_16_05.yaml new file mode 100644 index 000000000..d5fb4a256 --- /dev/null +++ b/tasks/coffee_shop/config/dev_room_16_05.yaml @@ -0,0 +1,153 @@ +counter: + cuboid: + - - 3.1289636070031643 + - -4.2751113078719545 + - - 2.6919021221753785 + - -4.379153662303753 + - - 2.771619494253796 + - -4.719282388248615 + - - 3.2086809790815813 + - -4.615240033816817 + last_updated: '2024-05-16 12:03:13.636677' + location: + position: + x: 2.760055110189617 + y: -3.741277519626965 + z: 0.0 + orientation: + x: 0.0 + y: 0.0 + z: -0.5624162184748698 + w: 0.8268542780904188 +tables: + table0: + last_updated: '2024-05-16 11:57:18.869944' + location: + orientation: + w: 0.1260212865286328 + x: 0.0 + y: 0.0 + z: -0.9920275375924139 + position: + x: 1.8921004858624988 + y: 1.5968756947085707 + z: 0.0 + semantic: end + num_persons: 0 + objects_cuboid: + - - 0.36692995234924336 + - 1.054711735852705 + - - 1.5440135762373695 + - 1.288101372731992 + - - 1.4273159780792937 + - 1.8766017583068597 + - - 0.2502323541911676 + - 1.6432121214275726 + order: [] + persons_cuboid: + - - -0.6160788263715635 + - -0.41444493917752667 + - - 3.013262347283492 + - 0.30517310786694196 + - - 2.4103247568001005 + - 3.3457584333370916 + - - -1.2190164168549549 + - 2.626140386292623 + pre_location: + orientation: + w: 0.6981442535161398 + x: 0.0 + y: 0.0 + z: -0.7159571225166993 + position: + x: 3.4185893265341467 + y: 1.5007719904983003 + z: 0.0 + status: unvisited + table1: + last_updated: '2024-05-16 11:59:38.547714' + location: + orientation: + w: 0.016149458968483497 + x: 0.0 + y: 0.0 + z: -0.9998695889839961 + position: + x: 2.2174847105596593 + y: -1.3369953499701548 + z: 0.0 + objects_cuboid: + - - 0.5999838647394418 + - -1.9640871825508952 + - - 1.7538912566489502 + - -1.636476090035305 + - - 1.5901729167037555 + - -1.0592694581913291 + - - 0.43626552479424696 + - -1.3868805507069193 + persons_cuboid: + - - -0.08874172860982377 + - -3.1991074793871803 + - - 2.9883446498155317 + - -2.3254778993456062 + - - 2.278898510053021 + - 0.17575083864495622 + - - -0.7981878683723349 + - -0.6978787413966181 + pre_location: + orientation: + w: 0.679755237535674 + x: 0.0 + y: 0.0 + z: -0.7334390343053875 + position: + x: 6.294876273276469 + y: 2.3564053436919483 + z: 0.0 +wait: + #TODO: fill these out + approach1: + position: + x: 2.5833313785676015 + y: -0.0727310067973981 + z: 0.0 + orientation: + x: 0.0 + y: 0.0 + z: 0.5249785543660592 + w: 0.8511154548330812 + approach2: + position: + x: 2.4332176864402975 + y: 1.7897861155564854 + z: 0.0 + orientation: + x: 0.0 + y: 0.0 + z: 0.7494396524891552 + w: 0.6620726601189134 + cuboid: + - - 2.032221097845468 + - 2.8493304229007634 + - - 3.197338606906616 + - 3.101509471967395 + - - 2.9751448878038462 + - 4.0708429096442185 + - - 1.8100273787426984 + - 3.818663860577587 + last_updated: '2024-05-16 12:05:19.859346' + location: + orientation: + w: 0.6152974731062034 + x: 0.0 + y: 0.0 + z: 0.7882950079691745 + position: + x: 3.5465994344446736 + y: -1.2831174246384893 + z: 0.0 +objects: {"cup" : "coffee", "banana": "banana", "bottle": "cocacola"} + +yolo_person_model: "yolov8n-seg.pt" +yolo_objects_model: "yolov8n-seg.pt" +yolo_counter_model: "yolov8n-seg.pt" diff --git a/tasks/coffee_shop/config/lab_demo.yaml b/tasks/coffee_shop/config/lab_demo.yaml deleted file mode 100644 index 214b9229b..000000000 --- a/tasks/coffee_shop/config/lab_demo.yaml +++ /dev/null @@ -1,69 +0,0 @@ -counter: - cuboid: - - [3.742806301313932, 0.6241124789649075] - - [3.935412982324103, 0.16277761172598088] - - [4.396677745912738, 0.35552413241523584] - - [4.204071064902568, 0.8168589996541624] - last_updated: '2023-10-24 14:08:15.117496' - location: - orientation: {w: 0.9748187784058554, x: 0.0, y: 0.0, z: 0.22299854095333407} - position: {x: 3.2406863808206485, y: -0.0012178606019714368, z: 0.0} -tables: - table0: - last_updated: '2023-10-24 14:06:03.837734' - location: - orientation: {w: 0.12006323453252395, x: 0.0, y: 0.0, z: -0.9927662462602102} - position: {x: 0.280574761758218, y: 1.1084370195835973, z: 0.0} - semantic: end - num_persons: 0 - objects_cuboid: - - [-0.20151740105162042, 0.49222759081015494] - - [-0.40933890454461413, 1.6740133969862165] - - [-1.0000827945687423, 1.5699646747788085] - - [-0.7922612910757487, 0.38817886860274703] - order: [] - persons_cuboid: - - [0.4931372407190048, 0.005383409929532068] - - [0.07749423373301734, 2.3689550222816553] - - [-1.6947374363393677, 2.0568088556594315] - - [-1.2790944293533801, -0.30676275669269165] - table1: - last_updated: '2023-10-24 14:07:19.606195' - location: - orientation: {w: 0.0417268379388012, x: 0.0, y: 0.0, z: -0.999129056226286} - position: {x: 1.630928113728348, y: -0.9431710493562107, z: 0.0} - objects_cuboid: - - [1.123181090775851, -1.5385507283287903] - - [0.9108335367173495, -0.35760032467212755] - - [0.3208176106629397, -0.4640165748638083] - - [0.5331651647214413, -1.644966978520471] - persons_cuboid: - - [1.7033391766789014, -1.9419331880259991] - - [1.3140353275716485, 0.2231425520112158] - - [-0.25934047524011095, -0.06063411516659922] - - [0.12996337386714196, -2.2257098552038146] -wait: - approach1: - position: {x: 3.17865429001, y: 0.805295659687, z: 0.0} - orientation: {x: 0.0, y: 0.0, z: -0.665472754214, w: 0.746422141552} - approach2: - position: {x: 3.35503140887, y: -0.245327051469, z: 0.0} - orientation: {x: 0.0, y: 0.0, z: -0.605789084253, w: 0.795625279513} - cuboid: - - [4.467422909074019, -1.5389431186402693] - - [3.4835308252725055, -1.7126656862093346] - - [3.6574980262715107, -2.6974147242975453] - - [4.641390110073024, -2.52369215672848] - last_updated: '2023-10-24 14:09:54.999676' - location: - orientation: {w: 0.7901919720786472, x: 0.0, y: 0.0, z: -0.6128594025243135} - position: {x: 2.4648764084347996, y: 2.275933021419933, z: 0.0} - pose: - orientation: {w: 0.992020738813, x: 0.0, y: 0.0, z: 0.126074794327} - position: {x: 10.3656408799, y: 25.7369664143, z: 0.0} - -objects: {"coffee" : "coffee", "biscuits": "biscuits", "sandwich": "sandwich", "orange_juice" : "juice", "smoothie" : "smoothie", "granola" : "granola"} - -yolo_person_model: "yolov8n-seg.pt" -yolo_objects_model: "MK_COUNTER.pt" -yolo_counter_model: "MK_COUNTER.pt" diff --git a/tasks/coffee_shop/config/sim_tables.yaml b/tasks/coffee_shop/config/sim_tables.yaml deleted file mode 100644 index 95e2a9bc0..000000000 --- a/tasks/coffee_shop/config/sim_tables.yaml +++ /dev/null @@ -1,109 +0,0 @@ -tables: - table0: - num_persons: 0 - status: "unvisited" - order: [] - location: - position: {x: -0.74, y: -3.57, z: 0.0} - orientation: {x: 0.0, y: 0.0, z: -0.99, w: 0.03} - semantic: "end" - objects_cuboid: - min: [-3.3, -3.4, 0.0] - max: [-1.54, -3.1, 8.0] - persons_cuboid: - min: [-3.35, -4.1, 0.0] - max: [-1.44, -2.7, 8.0] - table1: - num_persons: 0 - status: "unvisited" - order: [] - location: - position: {x: -1.17, y: -6.0, z: 0.0} - orientation: {x: 0.0, y: 0.0, z: -1.0, w: 0.02} - semantic: "end" - objects_cuboid: - min: [-3.43, -6.72, 0.0] - max: [-1.67, -5.11, 8.0] - persons_cuboid: - min: [-3.36, -7.26, 0.0] - max: [-1.29, -5.24, 8.0] - table2: - num_persons: 0 - status: "unvisited" - order: [] - location: - position: {x: -1.11, y: -8.60, z: 0.0} - orientation: {x: 0.0, y: 0.0, z: -1.0, w: 0.02} - semantic: "end" - objects_cuboid: - min: [-3.30, -9.45, 0.0] - max: [-1.42, -7.95, 8.0] - persons_cuboid: - min: [-3.34, -9.74, 0.0] - max: [-1.38,-7.37, 8.0] - table3: - num_persons: 0 - status: "unvisited" - order: [] - location: - position: {x: 0.45, y: -8.67, z: 0.0} - orientation: {x: 0.0, y: 0.0, z: -0.02, w: 1.0} - semantic: "end" - objects_cuboid: - min: [0.73, -9.14, 0.0] - max: [3.07, -7.97, 8.0] - persons_cuboid: - min: [0.87, -9.51, 0.0] - max: [2.99, -7.74, 8.0] - table4: - num_persons: 0 - status: "unvisited" - order: [] - location: - position: {x: 0.58, y: -5.92, z: 0.0} - orientation: {x: 0.0, y: 0.0, z: -0.15, w: 0.99} - semantic: "end" - objects_cuboid: - min: [1.07, -6.58, 0.0] - max: [2.69, -5.48, 8.0] - persons_cuboid: - min: [0.94, -6.88, 0.0] - max: [2.71, -5.23, 8.0] - table5: - num_persons: 0 - status: "unvisited" - order: [] - location: - position: {x: 0.61, y: -3.61, z: 0.0} - orientation: {x: 0.0, y: 0.0, z: -0.05, w: 1.0} - semantic: "end" - objects_cuboid: - min: [1.13, -4.10, 0.0] - max: [2.63, -2.92, 8.0] - persons_cuboid: - min: [1.0, -4.10, 0.0] - max: [2.82, -2.73, 8.0] - table6: - num_persons: 0 - status: "unvisited" - order: [] - location: - position: {x: 0.86, y: -0.94, z: 0.0} - orientation: {x: 0.0, y: 0.0, z: 0.04, w: 1.0} - semantic: "end" - objects_cuboid: - min: [1.25, -1.28, 0.0] - max: [2.84, -0.34, 8.0] - persons_cuboid: - min: [1.07, -1.65, 0.0] - max: [2.82, -0.84, 8.0] - -home: - location: - position: {x: 3.0, y: 5.22, z: 0.0} - orientation: {x: 0.0, y: 0.0, z: -0.62, w: 0.78} - -wait: - location: - position: {x: 3.0, y: 5.22, z: 0.0} - orientation: {x: 0.0, y: 0.0, z: 0.57, w: 0.82} diff --git a/tasks/coffee_shop/config/test_check_table.yaml b/tasks/coffee_shop/config/test_check_table.yaml deleted file mode 100644 index 8db4eacc0..000000000 --- a/tasks/coffee_shop/config/test_check_table.yaml +++ /dev/null @@ -1,11 +0,0 @@ -tables: - table0: - location: - position: {x: 1.14578607803, y: 1.00757782153, z: 0.0} - orientation: {x: 0.0, y: 0.0, z: 0.746444684543, w: 0.665447468188} - objects_cuboid: - min: [1.25, -1.28, 0.0] - max: [2.84, -0.34, 8.0] - persons_cuboid: - min: [1.07, -1.65, 0.0] - max: [2.82, -0.84, 8.0] diff --git a/tasks/coffee_shop/config/test_check_table_sim.yaml b/tasks/coffee_shop/config/test_check_table_sim.yaml deleted file mode 100644 index 24e5be749..000000000 --- a/tasks/coffee_shop/config/test_check_table_sim.yaml +++ /dev/null @@ -1,20 +0,0 @@ -tables: - table0: - num_persons: 0 - status: "unvisited" - order: [] - location: - position: {x: -0.74, y: -3.57, z: 0.0} - orientation: {x: 0.0, y: 0.0, z: -0.99, w: 0.03} - semantic: "end" - objects_cuboid: - - [-1.54, -3.97] - - [-3.25, -4.05] - - [-3.24, -3.11] - - [-1.54, -3.16] - persons_cuboid: - - [-1.50, -4.73] - - [-3.27, -4.91] - - [-3.13, -2.33] - - [-1.51, -2.23] -current_table: "table0" diff --git a/tasks/coffee_shop/config/test_make_order.yaml b/tasks/coffee_shop/config/test_make_order.yaml deleted file mode 100644 index 8fbefa9a1..000000000 --- a/tasks/coffee_shop/config/test_make_order.yaml +++ /dev/null @@ -1,15 +0,0 @@ -tables: - table0: - location: - position: {x: -0.74, y: -3.57, z: 0.0} - orientation: {x: 0.0, y: 0.0, z: -0.99, w: 0.03} - semantic: "end" -counter: - location: - position: {x: 0.222374471246, y: 5.10986001747, z: 0.0} - orientation: {x: 0.0, y: 0.0, z: -0.99, w: 0.0173693114911} - cuboid: - - [-0.209220409393, 3.5077354908] - - [-1.98666930199, 3.57624530792] - - [-0.631086707115, 6.58276844025] - - [-1.82701158524, 6.51631641388] \ No newline at end of file diff --git a/tasks/coffee_shop/config/test_phase3.yaml b/tasks/coffee_shop/config/test_phase3.yaml deleted file mode 100644 index 3e31b5f5e..000000000 --- a/tasks/coffee_shop/config/test_phase3.yaml +++ /dev/null @@ -1,15 +0,0 @@ -tables: - table0: - location: - position: {x: 0.45, y: -8.67, z: 0.0} - orientation: {x: 0.0, y: 0.0, z: -0.02, w: 1.0} - semantic: "end" -wait: - location: - position: {x: 2.71006066106, y: 2.12491014098, z: 0.0} - orientation: {x: 0.0, y: 0.0, z: 0.752734065, w: 0.658324712318} - cuboid: - - [-0.28, 3.12] - - [3.78, 2.97] - - [3.94, 7.37] - - [-0.84, 7.19] \ No newline at end of file diff --git a/tasks/coffee_shop/config/test_wait_for_person.yaml b/tasks/coffee_shop/config/test_wait_for_person.yaml deleted file mode 100644 index a0c3c5b0f..000000000 --- a/tasks/coffee_shop/config/test_wait_for_person.yaml +++ /dev/null @@ -1,9 +0,0 @@ -wait: - location: - position: {x: 2.71006066106, y: 2.12491014098, z: 0.0} - orientation: {x: 0.0, y: 0.0, z: 0.752734065, w: 0.658324712318} - cuboid: - - [-0.28, 3.12] - - [3.78, 2.97] - - [3.94, 7.37] - - [-0.84, 7.19] \ No newline at end of file diff --git a/tasks/coffee_shop/launch/core.launch b/tasks/coffee_shop/launch/core.launch index 4b40facbe..e9e01006b 100644 --- a/tasks/coffee_shop/launch/core.launch +++ b/tasks/coffee_shop/launch/core.launch @@ -14,13 +14,9 @@ - + - - - - diff --git a/tasks/coffee_shop/launch/lift/aruco_test.launch b/tasks/coffee_shop/launch/lift/aruco_test.launch deleted file mode 100644 index b9a86ba50..000000000 --- a/tasks/coffee_shop/launch/lift/aruco_test.launch +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - \ No newline at end of file diff --git a/tasks/coffee_shop/launch/lift/demo_609.yaml b/tasks/coffee_shop/launch/lift/demo_609.yaml deleted file mode 100644 index 0ae7ebaba..000000000 --- a/tasks/coffee_shop/launch/lift/demo_609.yaml +++ /dev/null @@ -1,11 +0,0 @@ -lift: - pose: - position: - x: 3.38024333356 - y: -0.707694082116 - z: 0.0 - orientation: - x: 0.0 - y: 0.0 - z: -0.59235272545 - w: 0.805678750279 \ No newline at end of file diff --git a/tasks/coffee_shop/launch/lift/demo_sim.yaml b/tasks/coffee_shop/launch/lift/demo_sim.yaml deleted file mode 100644 index 5cb35f208..000000000 --- a/tasks/coffee_shop/launch/lift/demo_sim.yaml +++ /dev/null @@ -1,11 +0,0 @@ -lift: - pose: - position: - x: 4.011953830718994 - y: -4.4152936935424805 - z: -0.001434326171875 - orientation: - x: 0.0 - y: 0.0 - z: -0.59235272545 - w: 0.805678750279 \ No newline at end of file diff --git a/tasks/coffee_shop/launch/lift/final_lift.yaml b/tasks/coffee_shop/launch/lift/final_lift.yaml deleted file mode 100644 index 96f330402..000000000 --- a/tasks/coffee_shop/launch/lift/final_lift.yaml +++ /dev/null @@ -1,212 +0,0 @@ -#Robot room: -# dev start: -#start: -# pose: -# position: { x: 3.09560757362, y: 0.974404310171, z: 0.0} -# orientation: {x: 0.0, y: 0.0, z: -0.591061635968, w: 0.806626395853} - -#Heavy Goods Lift: -#goods_lift_start: -# pose: -# position: { x: 0.508800501232, y: 33.8344979691, z: 0.0 } -# orientation: { x: 0.0,y: 0.0,z: 0.637510283355, w: 0.770441846356 } - -#Robot Room -#finish: -# pose: -# position: { x: 0.0151059264317, y: 1.16150856018, z: -0.00143432617188} -# orientation: {x: 0.0, y: 0.0, z: 0.752734065, w: 0.658324712318} - -#Robot Room -#wait: -# pose: -# position: { x: 2.67279863358, y: -0.270290255547, z: -0.00143432617188} -# orientation: {x: 0.0, y: 0.0, z: -0.151568158509, w: 0.988446808547} -# -#wait_centre: -# pose: -# position: { x: 3.31266808156, y: -0.483950084911, z: 0.0} -# orientation: {x: 0.0, y: 0.0, z: -0.585323801347, w: 0.810799634668} -# -#goods_lift_wait: -# pose: -# position: { x: 0.508800501232, y: 33.8344979691,z: 0.0} -# orientation: { x: 0.0,y: 0.0,z: 0.637510283355,w: 0.770441846356} -# -#lift_centre: -# pose: -# position: { x: 4.06678438187, y: -2.04051423073, z: 0.00247192382812} -# orientation: {x: 0.0, y: 0.0, z: 0.752734065, w: 1.0} -# - -# wait in dev -#wait_position_center_point: [ 2.81842398643, -0.141454875469 ] -#wait_position_points: -# [[ 3.79584240913, 0.724112570286 ], -# [ 1.32902395725, 0.370439916849 ], -# [ 1.81307899952, -1.20247292519 ], -# [ 4.12164831161, -0.839492976665 ]] -# -#lift: -# pose: -# position: -# x: 3.38024333356 -# y: -0.707694082116 -# z: 0.0 -# orientation: -# x: 0.0 -# y: 0.0 -# z: -0.59235272545 -# w: 0.805678750279 -# -#floor: -# status: "unknown" -# number: 2 -# -#counter_door: -# counter: 0 -# -#in_lift: -# status: False -# -# -#counter_lift: -# counter: 0 -# -#door: -# pose: -# position: { x: 11.119726181, y: 26.7926883698, z: 0.0} -# orientation: { x: 0.0, y: 0.0, z: -0.977169511786, w: 0.212461161713} -# -#lift_in_front: -# pose: -# position: { x: 3.05060815811, y: -0.478551894426, z: -0.00143432617188} -# orientation: { x: 0.0, y: 0.0, z: 0.0, w: 0.0 } -# -# -#counter_door_open: -# counter: 0 -# -# x: 11.119726181 -# y: 26.7926883698 -# z: -0.00143432617188 -# -#door_location: [ 11.119726181, 26.7926883698 ] -# -#test_lift_points: -# - [ 4.63600158691, -1.35065078735 ] -# - [ 4.87020158768, -2.30084991455 ] -# - [ 3.86834454536, -2.61324429512 ] -# - [ 3.50403380394, -1.44176590443 ] -# -#door_detected_official: True - - -# out -# start out -start: - pose: - position: { x: 10.4685899979, y: 26.6557230611, z: 0.0} - orientation: {x: 0.0, y: 0.0, z: 0.160084213465, w: 0.987103360646} - - -# finish out -finish: - pose: - position: { x: 10.3656408799, y: 25.7369664143, z: 0.0} - orientation: {x: 0.0, y: 0.0, z: 0.0965790640525, w: 0.995325315857} - -wait: - pose: - position: { x: 10.3656408799, y: 25.7369664143, z: 0.0} - orientation: {x: 0.0, y: 0.0, z: 0.126074794327, w: 0.992020738813} - -wait_centre: - pose: - position: { x: 10.5647281515, y: 26.7998710048, z: 0.0} - orientation: {x: 0.0, y: 0.0, z: 0.126074794327, w: 0.992020738813} - - -goods_lift_wait: - pose: - position: { x: 0.508800501232, y: 33.8344979691,z: 0.0} - orientation: { x: 0.0,y: 0.0,z: 0.637510283355,w: 0.770441846356} - -lift_centre: - pose: - position: { x: 9.057735641656286, y: 27.38111656110139, z: 0.00247192382812} - orientation: {x: 0.0, y: 0.0, z: 0.752734065, w: 1.0} - - - -# lift in dev - - -#wait_position_center_point: [8.654352168797907, 27.40189201769553] -wait_position_center_point: [10.9, 27.40189201769553] - -wait_position_points: - [[10.745699396246888, 27.818815710370007], - [11.082008345323466, 26.102035182358982], - [9.379748974144063, 25.76267868832162], - [9.043440025067484, 27.479459216332643]] - -lift_position_center_point: [ 11.9706506729, 27.2289657593] - -lift_position_points: - [[ 12.6273851395, 26.9184188843], - [ 11.5624361038, 26.5122585297], - [ 11.1644525528, 27.4878616333], - [ 12.2801580429, 28.0086154938]] - - -lift: - pose: - position: - x: 3.38024333356 - y: -0.707694082116 - z: 0.0 - orientation: - x: 0.0 - y: 0.0 - z: -0.59235272545 - w: 0.805678750279 - -floor: - status: "unknown" - number: 2 - -counter_door: - counter: 0 - -in_lift: - status: False - - -counter_lift: - counter: 0 - -door: - pose: - position: { x: 11.086766243, y: 26.9298286438, z: 0.0} - orientation: { x: 0.0, y: 0.0, z: 0.145168323452, w: 0.989406972821} - -lift_in_front: - pose: - position: { x: 10.412532611, y: 26.7708529502, z: 0.0} - orientation: { x: 0.0, y: 0.0, z: 0.119805466915, w: 0.992797386226 } - - -counter_door_open: - counter: 0 - -door_location: [ x: 11.086766243, y: 26.9298286438] - -test_lift_points: - - [ 12.6273851395, 26.9184188843] - - [ 11.5624361038, 26.5122585297] - - [ 11.1644525528, 27.4878616333] - - [ 12.2801580429, 28.0086154938] - -door_detected_official: True - diff --git a/tasks/coffee_shop/launch/lift/final_lift_sim.yaml b/tasks/coffee_shop/launch/lift/final_lift_sim.yaml deleted file mode 100644 index 113df7fe8..000000000 --- a/tasks/coffee_shop/launch/lift/final_lift_sim.yaml +++ /dev/null @@ -1,92 +0,0 @@ -start: - pose: - position: { x: -0.89295363384, y: -4.34396101132, z: 0.0} - orientation: {x: 0.0, y: 0.0, z: 0.203241335237, w: 0.979128673695} - -finish: - pose: - position: {x: 2.71006066106, y: 2.12491014098, z: 0.0} - orientation: {x: 0.0, y: 0.0, z: 0.752734065, w: 0.658324712318} - - -wait: - pose: - position: { x: 1.52014112473, y: -4.45748567581, z: 0.0} - orientation: {x: 0.0, y: 0.0, z: -0.151568158509, w: 0.988446808547} - -wait_centre: - pose: - position: {x: 3.8297624588, y: -4.5714597702, z: -0.00143432617188} - orientation: {x: 0.0, y: 0.0, z: 0.271253999152, w: 0.962507801498 } - -lift_centre: - pose: - position: { x: 5.42446279526, y: -4.42278385162, z: -0.00143432617188} - orientation: {x: 0.0, y: 0.0, z: 0.752734065, w: 1.0} - - -wait_position_center_point: [3.12702393531799 , -4.532418251037598] - -wait_position_points: - [[ 2.0859310626983643, -3.3872008323669434 ], - [ 4.024967670440674, -3.3741872310638428 ], - [ 4.011953830718994, -5.768733024597168 ], - [ 1.7605891227722168, -5.794760704040527 ] ] - -lift_position_center_point: [5.46206521987915, -4.357753753662109] - -lift_position_points: - [[ 4.442041397094727, -5.306999683380127 ], - [ 6.458549976348877, -5.189324855804443 ], - [ 6.387932300567627, -3.4948019981384277 ], - [ 4.504811763763428, -3.5497169494628906 ]] - -lift: - pose: - position: - x: 3.38024333356 - y: -0.707694082116 - z: 0.0 - orientation: - x: 0.0 - y: 0.0 - z: -0.59235272545 - w: 0.805678750279 - -floor: - status: "unknown" - number: 2 - -counter_door: - counter: 0 - -in_lift: - status: False - - -counter_lift: - counter: 0 - -door: - pose: - position: { x: 4.35229116578, y: -4.5204643254, z: 0.0 } - orientation: { x: 0.0, y: 0.0, z: 0.926613835575, w: 0.376014361058 } - -lift_in_front: - pose: - position: { x: 3.74506759644, y: -5.12129688263, z: -0.00143432617188} - orientation: { x: 0.0, y: 0.0, z: 0.0, w: 0.0 } - - -counter_door_open: - counter: 0 - -# sim sideways -#door_location: [-5.49848747253, 1.02214515209] -door_location: [ 4.19257593155, -4.48854494095] - -test_lift_points: - - [ 4.442041397094727, -5.306999683380127 ] - - [ 6.458549976348877, -5.189324855804443 ] - - [ 6.387932300567627, -3.4948019981384277] - - [ 4.504811763763428, -3.5497169494628906] \ No newline at end of file diff --git a/tasks/coffee_shop/launch/lift/narrow_space_nav_demo.launch b/tasks/coffee_shop/launch/lift/narrow_space_nav_demo.launch deleted file mode 100644 index d41fd4e37..000000000 --- a/tasks/coffee_shop/launch/lift/narrow_space_nav_demo.launch +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tasks/coffee_shop/launch/lift/test_detections.launch b/tasks/coffee_shop/launch/lift/test_detections.launch deleted file mode 100644 index 0ac3e8386..000000000 --- a/tasks/coffee_shop/launch/lift/test_detections.launch +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tasks/coffee_shop/src/coffee_shop/main.py b/tasks/coffee_shop/nodes/main.py similarity index 68% rename from tasks/coffee_shop/src/coffee_shop/main.py rename to tasks/coffee_shop/nodes/main.py index fb199f17a..c7c53010b 100755 --- a/tasks/coffee_shop/src/coffee_shop/main.py +++ b/tasks/coffee_shop/nodes/main.py @@ -3,7 +3,6 @@ from coffee_shop.state_machine import CoffeeShop from coffee_shop.context import Context import sys -from std_msgs.msg import Empty, Int16 if __name__ == "__main__": rospy.init_node("coffee_shop") @@ -13,11 +12,7 @@ sys.exit() context = Context(sys.argv[1], sys.argv[2]) - context.datahub_ping.publish(Empty()) - context.datahub_start_episode.publish(Empty()) coffee_shop = CoffeeShop(context) outcome = coffee_shop.execute() context.voice_controller.sync_tts("I am done.") - context.datahub_stop_phase.publish(Int16(3)) - context.datahub_stop_epsiode.publish(Empty()) rospy.spin() diff --git a/tasks/coffee_shop/nodes/tf_transform.py b/tasks/coffee_shop/nodes/tf_transform.py deleted file mode 100755 index 67bd684f6..000000000 --- a/tasks/coffee_shop/nodes/tf_transform.py +++ /dev/null @@ -1,163 +0,0 @@ -#!/usr/bin/env python -import rospy -import tf2_ros -import tf2_geometry_msgs -import tf2_sensor_msgs - -from geometry_msgs.msg import PoseStamped, PoseArray -from coffee_shop.srv import ( - TfTransform, - TfTransformResponse, - LatestTransform, - LatestTransformResponse, - ApplyTransform, - ApplyTransformResponse, -) - - -from geometry_msgs.msg import PoseStamped, Vector3Stamped, PointStamped, WrenchStamped -import PyKDL -import rospy -import tf2_ros -import copy - - -def tf_transform(msg): - tf_response = TfTransformResponse() - if msg.pose_array.header.frame_id != "": - transformation = get_transform( - source_frame=msg.pose_array.header.frame_id, - target_frame=msg.target_frame.data, - stamp=msg.pose_array.header.stamp, - ) - if transformation: - pose_array = PoseArray() - pose_array.header.frame_id = msg.target_frame.data - pose_array.header.stamp = rospy.get_rostime() - - for pose in msg.pose_array.poses: - new_pose = tf2_geometry_msgs.do_transform_pose( - PoseStamped(pose=pose), transformation - ).pose - pose_array.poses.append(new_pose) - - tf_response.target_pose_array = pose_array - else: - print("Error: No transformation") - if msg.pointcloud.header.frame_id != "": - transformation = get_transform( - source_frame=msg.pointcloud.header.frame_id, - target_frame=msg.target_frame.data, - stamp=msg.pointcloud.header.stamp, - ) - if transformation: - new_pointcloud = tf2_sensor_msgs.do_transform_cloud( - msg.pointcloud, transformation - ) - tf_response.target_pointcloud = new_pointcloud - else: - print("Error: No transformation") - if msg.point.header.frame_id != "": - transformation = get_transform( - source_frame=msg.point.header.frame_id, - target_frame=msg.target_frame.data, - stamp=msg.point.header.stamp, - ) - if transformation: - new_point = do_transform_point(msg.point, transformation) - tf_response.target_point = new_point - else: - print("Error: No transformation") - - return tf_response - - -def get_transform(source_frame, target_frame, stamp): - """ - Converts to target frame - Returns the pose in the target frame - """ - assert source_frame and target_frame - # print('source_frame', source_frame) - # print('target_frame', target_frame) - try: - transformation = tfBuffer.lookup_transform( - target_frame, source_frame, stamp, rospy.Duration(0.1) - ) - return transformation - except ( - tf2_ros.LookupException, - tf2_ros.ConnectivityException, - tf2_ros.ExtrapolationException, - ) as e: - print(e) - - -def do_transform_point(point, transform): - p = transform_to_kdl(transform) * PyKDL.Vector( - point.point.x, point.point.y, point.point.z - ) - res = PointStamped() - res.point.x = p[0] - res.point.y = p[1] - res.point.z = p[2] - res.header = transform.header - return res - - -tf2_ros.TransformRegistration().add(PointStamped, do_transform_point) - - -def transform_to_kdl(t): - return PyKDL.Frame( - PyKDL.Rotation.Quaternion( - t.transform.rotation.x, - t.transform.rotation.y, - t.transform.rotation.z, - t.transform.rotation.w, - ), - PyKDL.Vector( - t.transform.translation.x, - t.transform.translation.y, - t.transform.translation.z, - ), - ) - - -def get_latest_transform(msg): - to_frame = msg.target_frame - from_frame = msg.from_frame - try: - t = tfBuffer.lookup_transform( - to_frame, from_frame, rospy.Time(0), rospy.Duration(5) - ) - return t - except ( - tf2_ros.LookupException, - tf2_ros.ConnectivityException, - tf2_ros.ExtrapolationException, - ): - raise - - -def apply_transform(msg): - rospy.logwarn("Applying transform") - new_p = [] - for p in msg.points: - ps = PointStamped() - ps.point = p - p_tf = do_transform_point(ps, msg.transform) - new_p.append(p_tf.point) - return ApplyTransformResponse(new_p) - - -if __name__ == "__main__": - rospy.init_node("tf_transform_node") - s = rospy.Service("tf_transform", TfTransform, tf_transform) - s2 = rospy.Service("get_latest_transform", LatestTransform, get_latest_transform) - s3 = rospy.Service("apply_transform", ApplyTransform, apply_transform) - tfBuffer = tf2_ros.Buffer() - listener = tf2_ros.TransformListener(tfBuffer) - - print("Ready to transform!") - rospy.spin() diff --git a/tasks/coffee_shop/scripts/datahub.py b/tasks/coffee_shop/scripts/datahub.py deleted file mode 100755 index 607ebb6cf..000000000 --- a/tasks/coffee_shop/scripts/datahub.py +++ /dev/null @@ -1,74 +0,0 @@ -#!/usr/bin/env python3 -import rospy -import requests -from std_msgs.msg import Int16, Empty - -rospy.init_node("datahub_shit") - -DATAHUB_API = "https://ecs-mnemosyne.azurewebsites.net/api/Hub" -ROBOT_ID = "019b1442-728d-48c4-1de7-08dbb68bfcf1" - - -def start_episode(_): - requests.post( - DATAHUB_API, - json={ - "RobotId": ROBOT_ID, - "Competition": "ERL", - "Action": "STARTEPISODE", - "Episode": 1, - }, - ) - - -def stop_episode(_): - requests.post( - DATAHUB_API, - json={ - "RobotId": ROBOT_ID, - "Competition": "ERL", - "Action": "STOPEPISODE", - "Episode": 1, - }, - ) - - -def start_phase(msg): - requests.post( - DATAHUB_API, - json={ - "RobotId": ROBOT_ID, - "Competition": "ERL", - "Action": "STARTPHASE", - "Episode": 1, - "Phase": msg.data, - }, - ) - - -def stop_phase(msg): - requests.post( - DATAHUB_API, - json={ - "RobotId": ROBOT_ID, - "Competition": "ERL", - "Action": "STOPPHASE", - "Episode": 1, - "Phase": msg.data, - }, - ) - - -def ping(_): - requests.post( - DATAHUB_API, json={"RobotId": ROBOT_ID, "Competition": "ERL", "Action": "PING"} - ) - - -rospy.Subscriber("/datahub/start_episode", Empty, start_episode) -rospy.Subscriber("/datahub/stop_episode", Empty, stop_episode) -rospy.Subscriber("/datahub/start_phase", Int16, start_phase) -rospy.Subscriber("/datahub/stop_phase", Int16, stop_phase) -rospy.Subscriber("/datahub/ping", Int16, ping) - -rospy.spin() diff --git a/tasks/coffee_shop/scripts/test_check_table.py b/tasks/coffee_shop/scripts/test_check_table.py index 0f410ef41..fe5b7b1da 100755 --- a/tasks/coffee_shop/scripts/test_check_table.py +++ b/tasks/coffee_shop/scripts/test_check_table.py @@ -9,9 +9,18 @@ rospy.init_node("test_check_table") sm = smach.StateMachine(outcomes=["end", "not_finished"]) context = Context(sys.argv[1], sys.argv[2]) - context.current_table = "table0" + context.current_table = "table1" with sm: - sm.add("CHECK_TABLE", CheckTable(context), transitions={"finished": "end"}) + sm.add( + "CHECK_TABLE", + CheckTable(context), + transitions={ + "has_needs_serving_tables": "end", + "not_finished": "end", + "idle": "end", + "has_free_tables": "end", + }, + ) sm.execute() rospy.signal_shutdown("down") diff --git a/tasks/coffee_shop/scripts/test_make_order.py b/tasks/coffee_shop/scripts/test_make_order.py index 7d9493b29..26298d961 100755 --- a/tasks/coffee_shop/scripts/test_make_order.py +++ b/tasks/coffee_shop/scripts/test_make_order.py @@ -17,7 +17,7 @@ context = Context(sys.argv[1], sys.argv[2]) context.current_table = "table0" context.tables[context.current_table]["status"] = "currently serving" - context.tables[context.current_table]["order"] = ["coffee", "coffee"] + context.tables[context.current_table]["order"] = ["cup", "cup"] with sm: sm.add( diff --git a/tasks/coffee_shop/scripts/test_people_pose.py b/tasks/coffee_shop/scripts/test_people_pose.py index 4e3601704..6074e73e6 100755 --- a/tasks/coffee_shop/scripts/test_people_pose.py +++ b/tasks/coffee_shop/scripts/test_people_pose.py @@ -1,6 +1,7 @@ #!/usr/bin/env python3 import rospy -from common_math import pcl_msg_to_cv2, seg_to_centroid +import cv2_pcl +import cv2_img from sensor_msgs.msg import PointCloud2 from std_msgs.msg import String from geometry_msgs.msg import PointStamped, Point @@ -45,19 +46,19 @@ def create_point_marker(x, y, z, idx): while not rospy.is_shutdown(): pcl_msg = rospy.wait_for_message("/xtion/depth_registered/points", PointCloud2) - cv_im = pcl_msg_to_cv2(pcl_msg) - img_msg = bridge.cv2_to_imgmsg(cv_im) + cv_im = cv2_pcl.pcl_to_cv2(pcl_msg) + img_msg = cv2_img.cv2_img_to_msg(cv_im) detections = yolo(img_msg, "yolov8n-seg.pt", 0.3, 0.3) for detection in detections.detected_objects: if detection.name == "person": - centroid_xyz = seg_to_centroid(pcl_msg, np.array(detection.xyseg)) + centroid_xyz = cv2_pcl.seg_to_centroid(pcl_msg, np.array(detection.xyseg)) centroid = PointStamped() centroid.point = Point(*centroid_xyz) centroid.header = pcl_msg.header tf_req = TfTransformRequest() tf_req.target_frame = String("map") tf_req.point = centroid - centroid_tf = tf(tf_req).target_point.point + centroid_tf = tf(tf_req).point people_pose_pub.publish( create_point_marker(centroid_tf.x, centroid_tf.y, centroid_tf.z, idx) ) diff --git a/tasks/coffee_shop/src/coffee_shop/add_coffee_shop_vo.py b/tasks/coffee_shop/src/coffee_shop/add_coffee_shop_vo.py new file mode 100755 index 000000000..d29a21d60 --- /dev/null +++ b/tasks/coffee_shop/src/coffee_shop/add_coffee_shop_vo.py @@ -0,0 +1,20 @@ +#!/usr/bin/env python3 +import rospy +import rosparam + +rospy.init_node("add_coffee_shop_vo") + +x1, y1 = -5.8, -2.0 +x2, y2 = -5.8, -0.5 +x3, y3 = -4.27, -0.63 +x4, y4 = -4.27, -2.18 +vo_dict = { + "vo_0096": ["submap_0", "pillar", x1, y1, 0.0], + "vo_0097": ["submap_0", "pillar", x2, y2, 0.0], + "vo_0098": ["submap_0", "pillar", x3, y3, 0.0], + "vo_0099": ["submap_0", "pillar", x4, y4, 0.0], +} + + +for vo, params in vo_dict.items(): + rosparam.upload_params(f"mmap/vo/submap_0/{vo}", params) diff --git a/tasks/coffee_shop/src/coffee_shop/context.py b/tasks/coffee_shop/src/coffee_shop/context.py index d4a0ca3a0..f01b14504 100755 --- a/tasks/coffee_shop/src/coffee_shop/context.py +++ b/tasks/coffee_shop/src/coffee_shop/context.py @@ -1,31 +1,30 @@ import rospy import rosparam -from tiago_controllers import BaseController, HeadController from lasr_voice import Voice from play_motion_msgs.msg import PlayMotionAction from control_msgs.msg import PointHeadAction from lasr_vision_msgs.srv import YoloDetection -from coffee_shop.srv import TfTransform, LatestTransform, ApplyTransform -from lasr_shapely import LasrShapely -from lasr_speech.srv import Speech -from cv_bridge3 import CvBridge import actionlib +from move_base_msgs.msg import MoveBaseAction import yaml from visualization_msgs.msg import Marker import rosservice import time import random -from std_msgs.msg import Empty, Int16 +import tf2_ros as tf2 +import tf2_geometry_msgs # noqa +from tf2_geometry_msgs.tf2_geometry_msgs import do_transform_pose, do_transform_point class Context: def __init__(self, config_path=None, tablet=False): self.tablet = tablet - self.base_controller = BaseController() - rospy.loginfo("Got base controller") - self.head_controller = HeadController() - rospy.loginfo("Got head controller") + self.move_base_client = actionlib.SimpleActionClient( + "/move_base", MoveBaseAction + ) + self.move_base_client.wait_for_server() + rospy.loginfo("Got MoveBase") self.voice_controller = Voice() rospy.loginfo("Got voice controller") self.play_motion_client = actionlib.SimpleActionClient( @@ -41,31 +40,9 @@ def __init__(self, config_path=None, tablet=False): rospy.wait_for_service("/yolov8/detect") self.yolo = rospy.ServiceProxy("/yolov8/detect", YoloDetection) rospy.loginfo("Got YOLO") - rospy.wait_for_service("/tf_transform") - rospy.wait_for_service("/get_latest_transform") - rospy.wait_for_service("/apply_transform") - self.tf = rospy.ServiceProxy("/tf_transform", TfTransform) - self.tf_latest = rospy.ServiceProxy("/get_latest_transform", LatestTransform) - self.tf_apply = rospy.ServiceProxy("/apply_transform", ApplyTransform) + self.tf_buffer = tf2.Buffer() + self.tf_listener = tf2.TransformListener(self.tf_buffer) rospy.loginfo("Got TF") - self.shapely = LasrShapely() - rospy.loginfo("Got shapely") - self.bridge = CvBridge() - rospy.loginfo("CV Bridge") - - self.datahub_ping = rospy.Publisher("/datahub/ping", Empty, queue_size=10) - self.datahub_start_episode = rospy.Publisher( - "/datahub/start_episode", Empty, queue_size=10 - ) - self.datahub_stop_epsiode = rospy.Publisher( - "/datahub/stop_episode", Empty, queue_size=10 - ) - self.datahub_start_phase = rospy.Publisher( - "/datahub/start_phase", Int16, queue_size=10 - ) - self.datahub_stop_phase = rospy.Publisher( - "/datahub/stop_phase", Int16, queue_size=10 - ) if not tablet: rospy.wait_for_service("/lasr_speech/transcribe_and_parse") @@ -214,3 +191,16 @@ def get_interaction_person(self): # Seed the random number generator with the current time random.seed(time.time()) return random.choice(self.tables[self.current_table]["people"]) + + def tf_point(self, point_stamped, target_frame): + trans = self.tf_buffer.lookup_transform( + target_frame, point_stamped.header.frame_id, rospy.Time(0) + ) + return do_transform_point(point_stamped, trans) + + def tf_point_list(self, points, source_frame, target_frame): + trans = self.tf_buffer.lookup_transform( + target_frame, source_frame, rospy.Time(0) + ) + + return [do_transform_point(point, trans) for point in points] diff --git a/tasks/coffee_shop/src/coffee_shop/phases/phase_1/phase_1.py b/tasks/coffee_shop/src/coffee_shop/phases/phase_1/phase_1.py index e57019c1d..fccbe0be7 100644 --- a/tasks/coffee_shop/src/coffee_shop/phases/phase_1/phase_1.py +++ b/tasks/coffee_shop/src/coffee_shop/phases/phase_1/phase_1.py @@ -1,23 +1,91 @@ +import rospy import smach +import smach_ros +from .states import Start, GoToTable, CheckTable -from .states import Start, GoToTable, CheckTable, GoToPreTable, PreCheckTable +from move_base_msgs.msg import MoveBaseAction, MoveBaseGoal +from geometry_msgs.msg import Pose, Point, Quaternion class Phase1(smach.StateMachine): + + class GoIdle(smach.StateMachine): + + def __init__(self): + + smach.StateMachine.__init__(self, outcomes=["done"]) + + idle_location = rospy.get_param("wait/location") + idle_position, idle_orientation = ( + idle_location["position"], + idle_location["orientation"], + ) + idle_pose = Pose( + position=Point(**idle_position), + orientation=Quaternion(**idle_orientation), + ) + idle_goal = MoveBaseGoal() + idle_goal.target_pose.header.frame_id = "map" + idle_goal.target_pose.pose = idle_pose + + with self: + + smach.StateMachine.add( + "GO_TO_IDLE", + smach_ros.SimpleActionState( + "move_base", MoveBaseAction, goal=idle_goal + ), + transitions={ + "succeeded": "IDLE", + "aborted": "IDLE", + "preempted": "IDLE", + }, + ) + + @smach.cb_interface( + input_keys=[], output_keys=[], outcomes=["succeeded"] + ) + def idle_cb(_): + rospy.sleep(rospy.Duration(15.0)) + return "succeeded" + + smach.StateMachine.add( + "IDLE", + smach.CBState(idle_cb), + transitions={"succeeded": "done"}, + ) + def __init__(self, context): - smach.StateMachine.__init__(self, outcomes=["done"]) + smach.StateMachine.__init__(self, outcomes=["greet_new_customer", "serve"]) with self: + + @smach.cb_interface(input_keys=[], output_keys=[], outcomes=["done"]) + def reset_tables(ud): + for table in context.tables.keys(): + context.tables[table]["status"] = "unvisited" + return "done" + smach.StateMachine.add( - "START_PHASE_1", Start(context), transitions={"done": "GO_TO_TABLE"} + "GO_IDLE", self.GoIdle(), transitions={"done": "RESET_TABLES"} ) - # smach.StateMachine.add('GO_TO_TABLE', GoToPreTable(context), transitions={'done' : 'GO_TO_TABLE'}) - # smach.StateMachine.add('PRE_CHECK_TABLE', PreCheckTable(context), transitions={'done' : 'GO_TO_TABLE'}) + + smach.StateMachine.add( + "RESET_TABLES", + smach.CBState(reset_tables), + transitions={"done": "GO_TO_TABLE"}, + ) + smach.StateMachine.add( "GO_TO_TABLE", GoToTable(context), transitions={"done": "CHECK_TABLE"} ) smach.StateMachine.add( "CHECK_TABLE", CheckTable(context), - transitions={"not_finished": "GO_TO_TABLE", "finished": "done"}, + transitions={ + "not_finished": "GO_TO_TABLE", + "has_free_tables": "greet_new_customer", + "has_needs_serving_tables": "serve", + "idle": "GO_IDLE", + }, ) diff --git a/tasks/coffee_shop/src/coffee_shop/phases/phase_1/states/__init__.py b/tasks/coffee_shop/src/coffee_shop/phases/phase_1/states/__init__.py index 2c362473b..11a26aa08 100644 --- a/tasks/coffee_shop/src/coffee_shop/phases/phase_1/states/__init__.py +++ b/tasks/coffee_shop/src/coffee_shop/phases/phase_1/states/__init__.py @@ -1,5 +1,3 @@ from .start import Start from .check_table import CheckTable from .go_to_table import GoToTable -from .go_to_pre_table import GoToPreTable -from .pre_check_table import PreCheckTable diff --git a/tasks/coffee_shop/src/coffee_shop/phases/phase_1/states/check_table.py b/tasks/coffee_shop/src/coffee_shop/phases/phase_1/states/check_table.py index 6f3a4daeb..88803c76e 100644 --- a/tasks/coffee_shop/src/coffee_shop/phases/phase_1/states/check_table.py +++ b/tasks/coffee_shop/src/coffee_shop/phases/phase_1/states/check_table.py @@ -1,38 +1,44 @@ -#!/usr/bin/env python3 import smach import rospy -from std_msgs.msg import String from play_motion_msgs.msg import PlayMotionGoal from sensor_msgs.msg import PointCloud2 from geometry_msgs.msg import PointStamped, Point -from common_math import pcl_msg_to_cv2, seg_to_centroid -from coffee_shop.srv import TfTransform, TfTransformRequest +import cv2_pcl +import cv2_img import numpy as np +from shapely.geometry import Point as ShapelyPoint +from shapely.geometry.polygon import Polygon + class CheckTable(smach.State): def __init__(self, context): - smach.State.__init__(self, outcomes=["not_finished", "finished"]) + smach.State.__init__( + self, + outcomes=[ + "not_finished", + "has_free_tables", + "has_needs_serving_tables", + "idle", + ], + ) self.context = context self.detections_objects = [] self.detections_people = [] self.biscuits = False def estimate_pose(self, pcl_msg, detection): - centroid_xyz = seg_to_centroid(pcl_msg, np.array(detection.xyseg)) + centroid_xyz = cv2_pcl.seg_to_centroid(pcl_msg, np.array(detection.xyseg)) centroid = PointStamped() centroid.point = Point(*centroid_xyz) centroid.header = pcl_msg.header - tf_req = TfTransformRequest() - tf_req.target_frame = String("map") - tf_req.point = centroid - response = self.context.tf(tf_req) + centroid = self.context.tf_point(centroid, "map") return np.array( [ - response.target_point.point.x, - response.target_point.point.y, - response.target_point.point.z, + centroid.point.x, + centroid.point.y, + centroid.point.z, ] ) @@ -57,9 +63,9 @@ def filter_detections_by_pose(self, detections, threshold=0.2): return filtered def perform_detection(self, pcl_msg, polygon, filter, model): - cv_im = pcl_msg_to_cv2(pcl_msg) - img_msg = self.context.bridge.cv2_to_imgmsg(cv_im) - detections = self.context.yolo(img_msg, model, 0.6, 0.3) + cv_im = cv2_pcl.pcl_to_cv2(pcl_msg) + img_msg = cv2_img.cv2_img_to_msg(cv_im) + detections = self.context.yolo(img_msg, model, 0.3, 0.3) detections = [ (det, self.estimate_pose(pcl_msg, det)) for det in detections.detected_objects @@ -67,11 +73,11 @@ def perform_detection(self, pcl_msg, polygon, filter, model): ] rospy.loginfo(f"All: {[(det.name, pose) for det, pose in detections]}") rospy.loginfo(f"Boundary: {polygon}") - # satisfied_points = self.context.shapely.are_points_in_polygon_2d(self.arena_polygon, [[pose[0], pose[1]] for (_, pose) in detections]).inside - # detections = [detections[i] for i in range(0, len(detections)) if satisfied_points[i]] - satisfied_points = self.context.shapely.are_points_in_polygon_2d( - polygon, [[pose[0], pose[1]] for (_, pose) in detections] - ).inside + shapely_polygon = Polygon(polygon) + satisfied_points = [ + shapely_polygon.contains(ShapelyPoint(pose[0], pose[1])) + for _, pose in detections + ] detections = [ detections[i] for i in range(0, len(detections)) if satisfied_points[i] ] @@ -114,7 +120,6 @@ def execute(self, userdata): self.person_polygon = rospy.get_param( f"/tables/{self.context.current_table}/persons_cuboid" ) - # self.arena_polygon = rospy.get_param(f"/arena/cuboid") self.detections_objects = [] self.detections_people = [] @@ -126,46 +131,14 @@ def execute(self, userdata): "look_right", "back_to_default", ] - # self.detection_sub = rospy.Subscriber("/xtion/depth_registered/points", PointCloud2, self.check) - - if self.context.current_table == "table2": - pm_goal = PlayMotionGoal(motion_name="back_to_default", skip_planning=True) - self.context.play_motion_client.send_goal_and_wait(pm_goal) - pm_goal = PlayMotionGoal( - motion_name="check_annoying_table_low", skip_planning=True - ) + for motion in motions: + pm_goal = PlayMotionGoal(motion_name=motion, skip_planning=True) self.context.play_motion_client.send_goal_and_wait(pm_goal) pcl_msg = rospy.wait_for_message( "/xtion/depth_registered/points", PointCloud2 ) - self.check_table(pcl_msg) - - pm_goal = PlayMotionGoal(motion_name="look_left", skip_planning=True) - self.context.play_motion_client.send_goal_and_wait(pm_goal) - pcl_msg = rospy.wait_for_message( - "/xtion/depth_registered/points", PointCloud2 - ) - self.check_people(pcl_msg) - - pm_goal = PlayMotionGoal(motion_name="look_right", skip_planning=True) - self.context.play_motion_client.send_goal_and_wait(pm_goal) - pcl_msg = rospy.wait_for_message( - "/xtion/depth_registered/points", PointCloud2 - ) - self.check_people(pcl_msg) - - pm_goal = PlayMotionGoal(motion_name="back_to_default", skip_planning=True) - self.context.play_motion_client.send_goal_and_wait(pm_goal) - - else: - for motion in motions: - pm_goal = PlayMotionGoal(motion_name=motion, skip_planning=True) - self.context.play_motion_client.send_goal_and_wait(pm_goal) - pcl_msg = rospy.wait_for_message( - "/xtion/depth_registered/points", PointCloud2 - ) - self.check(pcl_msg) + self.check(pcl_msg) status = "unknown" if len(self.detections_objects) > 0 and len(self.detections_people) == 0: @@ -177,9 +150,6 @@ def execute(self, userdata): elif len(self.detections_objects) == 0 and len(self.detections_people) == 0: status = "ready" - # self.detection_sub.unregister() - - # self.detections_objects = self.filter_detections_by_pose(self.detections_objects, threshold=0.1) self.detections_people = self.filter_detections_by_pose( self.detections_people, threshold=0.6 ) @@ -199,14 +169,28 @@ def execute(self, userdata): self.context.voice_controller.sync_tts(f"{status_text} {count_text}") self.context.start_head_manager("head_manager", "") - return ( - "not_finished" - if len( - [ - (label, table) - for label, table in self.context.tables.items() - if table["status"] == "unvisited" - ] - ) - else "finished" - ) + + unvisited_tables = [ + (label, table) + for label, table in self.context.tables.items() + if table["status"] == "unvisited" + ] + free_tables = [ + (label, table) + for label, table in self.context.tables.items() + if table["status"] == "ready" + ] + needs_serving_tables = [ + (label, table) + for label, table in self.context.tables.items() + if table["status"] == "needs serving" + ] + + if len(unvisited_tables) > 0: + return "not_finished" + elif len(needs_serving_tables) > 0: + return "has_needs_serving_tables" + elif len(free_tables) > 0: + return "has_free_tables" + else: + return "idle" diff --git a/tasks/coffee_shop/src/coffee_shop/phases/phase_1/states/go_to_pre_table.py b/tasks/coffee_shop/src/coffee_shop/phases/phase_1/states/go_to_pre_table.py deleted file mode 100644 index d556d4269..000000000 --- a/tasks/coffee_shop/src/coffee_shop/phases/phase_1/states/go_to_pre_table.py +++ /dev/null @@ -1,40 +0,0 @@ -#!/usr/bin/env python3 -import smach -import rospy -from geometry_msgs.msg import Pose, Point, Quaternion -import numpy as np - - -class GoToPreTable(smach.State): - def __init__(self, context): - smach.State.__init__(self, outcomes=["done"]) - self.context = context - - def execute(self, userdata): - robot_x, robot_y = self.context.base_controller.get_pose() - unvisited = [ - (label, rospy.get_param(f"/tables/{label}")) - for label, table in self.context.tables.items() - if table["status"] == "unvisited" - ] - closest_table = min( - unvisited, - key=lambda table: np.linalg.norm( - [ - table[1]["pre_location"]["position"]["x"] - robot_x, - table[1]["pre_location"]["position"]["y"] - robot_y, - ] - ), - ) - label, next_table = closest_table - self.context.voice_controller.async_tts(f"I am going to {label}") - position, orientation = ( - next_table["pre_location"]["position"], - next_table["pre_location"]["orientation"], - ) - self.context.base_controller.sync_to_pose( - Pose(position=Point(**position), orientation=Quaternion(**orientation)) - ) - self.context.tables[label]["status"] = "currently visiting" - self.context.current_table = label - return "done" diff --git a/tasks/coffee_shop/src/coffee_shop/phases/phase_1/states/go_to_table.py b/tasks/coffee_shop/src/coffee_shop/phases/phase_1/states/go_to_table.py index ac070130b..6c086c837 100644 --- a/tasks/coffee_shop/src/coffee_shop/phases/phase_1/states/go_to_table.py +++ b/tasks/coffee_shop/src/coffee_shop/phases/phase_1/states/go_to_table.py @@ -1,7 +1,7 @@ -#!/usr/bin/env python3 import smach import rospy -from geometry_msgs.msg import Pose, Point, Quaternion +from geometry_msgs.msg import Pose, Point, Quaternion, PoseWithCovarianceStamped +from move_base_msgs.msg import MoveBaseGoal import numpy as np @@ -11,7 +11,10 @@ def __init__(self, context): self.context = context def execute(self, userdata): - robot_x, robot_y = self.context.base_controller.get_pose() + robot_pose = rospy.wait_for_message( + "/amcl_pose", PoseWithCovarianceStamped + ).pose.pose + robot_x, robot_y = robot_pose.position.x, robot_pose.position.y unvisited = [ (label, rospy.get_param(f"/tables/{label}")) for label, table in self.context.tables.items() @@ -32,9 +35,12 @@ def execute(self, userdata): next_table["location"]["position"], next_table["location"]["orientation"], ) - self.context.base_controller.sync_to_pose( - Pose(position=Point(**position), orientation=Quaternion(**orientation)) + move_base_goal = MoveBaseGoal() + move_base_goal.target_pose.header.frame_id = "map" + move_base_goal.target_pose.pose = Pose( + position=Point(**position), orientation=Quaternion(**orientation) ) + self.context.move_base_client.send_goal_and_wait(move_base_goal) self.context.tables[label]["status"] = "currently visiting" self.context.current_table = label return "done" diff --git a/tasks/coffee_shop/src/coffee_shop/phases/phase_1/states/pre_check_table.py b/tasks/coffee_shop/src/coffee_shop/phases/phase_1/states/pre_check_table.py deleted file mode 100644 index e2ff505fa..000000000 --- a/tasks/coffee_shop/src/coffee_shop/phases/phase_1/states/pre_check_table.py +++ /dev/null @@ -1,122 +0,0 @@ -#!/usr/bin/env python3 -import smach -import rospy - -from std_msgs.msg import String -from play_motion_msgs.msg import PlayMotionGoal -from sensor_msgs.msg import PointCloud2 -from geometry_msgs.msg import PointStamped, Point -from common_math import pcl_msg_to_cv2, seg_to_centroid -from coffee_shop.srv import TfTransform, TfTransformRequest -import numpy as np - - -class PreCheckTable(smach.State): - def __init__(self, context): - smach.State.__init__(self, outcomes=["done"]) - self.context = context - self.detections_people = [] - - def estimate_pose(self, pcl_msg, detection): - centroid_xyz = seg_to_centroid(pcl_msg, np.array(detection.xyseg)) - centroid = PointStamped() - centroid.point = Point(*centroid_xyz) - centroid.header = pcl_msg.header - tf_req = TfTransformRequest() - tf_req.target_frame = String("map") - tf_req.point = centroid - response = self.context.tf(tf_req) - return np.array( - [ - response.target_point.point.x, - response.target_point.point.y, - response.target_point.point.z, - ] - ) - - def publish_object_points(self): - for _, point in self.detections_objects: - self.context.publish_object_pose(*point, "map") - - def publish_people_points(self): - for _, point in self.detections_people: - self.context.publish_person_pose(*point, "map") - - def filter_detections_by_pose(self, detections, threshold=0.2): - filtered = [] - - for i, (detection, point) in enumerate(detections): - distances = np.array( - [np.sqrt(np.sum((point - ref_point) ** 2)) for _, ref_point in filtered] - ) - if not np.any(distances < threshold): - filtered.append((detection, point)) - - return filtered - - def perform_detection(self, pcl_msg, polygon, filter, model): - cv_im = pcl_msg_to_cv2(pcl_msg) - img_msg = self.context.bridge.cv2_to_imgmsg(cv_im) - detections = self.context.yolo(img_msg, model, 0.5, 0.3) - detections = [ - (det, self.estimate_pose(pcl_msg, det)) - for det in detections.detected_objects - if det.name in filter - ] - rospy.loginfo(f"All: {[(det.name, pose) for det, pose in detections]}") - rospy.loginfo(f"Boundary: {polygon}") - satisfied_points = self.context.shapely.are_points_in_polygon_2d( - polygon, [[pose[0], pose[1]] for (_, pose) in detections] - ).inside - detections = [ - detections[i] for i in range(0, len(detections)) if satisfied_points[i] - ] - rospy.loginfo(f"Filtered: {[(det.name, pose) for det, pose in detections]}") - return detections - - def check(self, pcl_msg): - self.check_people(pcl_msg) - - def check_people(self, pcl_msg): - detections_people_ = self.perform_detection( - pcl_msg, self.person_polygon, ["person"], self.context.YOLO_person_model - ) - self.detections_people.extend(detections_people_) - - def execute(self, userdata): - self.context.stop_head_manager("head_manager") - - self.context.voice_controller.async_tts("I'm taking a quick look at the table") - - rospy.loginfo(self.context.current_table) - self.person_polygon = rospy.get_param( - f"/tables/{self.context.current_table}/persons_cuboid" - ) - self.detections_people = [] - - motions = ["back_to_default", "look_left", "look_right", "back_to_default"] - # self.detection_sub = rospy.Subscriber("/xtion/depth_registered/points", PointCloud2, self.check) - for motion in motions: - pm_goal = PlayMotionGoal(motion_name=motion, skip_planning=True) - self.context.play_motion_client.send_goal_and_wait(pm_goal) - pcl_msg = rospy.wait_for_message( - "/xtion/depth_registered/points", PointCloud2 - ) - self.check(pcl_msg) - - self.detections_people = self.filter_detections_by_pose( - self.detections_people, threshold=0.50 - ) - - people_count = len(self.detections_people) - people_text = "person" if people_count == 1 else "people" - - self.context.voice_controller.async_tts( - f"I saw {people_count} {people_text} so far" - ) - - self.context.tables[self.context.current_table][ - "pre_people" - ] = self.detections_people - self.context.start_head_manager("head_manager", "") - return "done" diff --git a/tasks/coffee_shop/src/coffee_shop/phases/phase_1/states/start.py b/tasks/coffee_shop/src/coffee_shop/phases/phase_1/states/start.py index 41178e7a2..90b725e4b 100644 --- a/tasks/coffee_shop/src/coffee_shop/phases/phase_1/states/start.py +++ b/tasks/coffee_shop/src/coffee_shop/phases/phase_1/states/start.py @@ -1,6 +1,5 @@ import smach import rospy -from std_msgs.msg import Int16 class Start(smach.State): @@ -9,7 +8,5 @@ def __init__(self, context): self.context = context def execute(self, userdata): - self.context.voice_controller.sync_tts("Starting Phase 1.") - self.context.datahub_start_phase.publish(Int16(1)) rospy.loginfo(f"Context: {str(self.context)}") return "done" diff --git a/tasks/coffee_shop/src/coffee_shop/phases/phase_2/phase_2.py b/tasks/coffee_shop/src/coffee_shop/phases/phase_2/phase_2.py index 0832c0b24..e9c566eca 100644 --- a/tasks/coffee_shop/src/coffee_shop/phases/phase_2/phase_2.py +++ b/tasks/coffee_shop/src/coffee_shop/phases/phase_2/phase_2.py @@ -49,6 +49,21 @@ def __init__(self, context): smach.StateMachine.add( "LOAD_ORDER", LoadOrder(context), transitions={"done": "DELIVER_ORDER"} ) + + @smach.cb_interface(input_keys=[], output_keys=[], outcomes=["done"]) + def reset_tables(ud): + for table in context.tables.keys(): + context.tables[table]["status"] = "unvisited" + return "done" + + smach.StateMachine.add( + "DELIVER_ORDER", + DeliverOrder(context), + transitions={"done": "RESET_TABLES"}, + ) + smach.StateMachine.add( - "DELIVER_ORDER", DeliverOrder(context), transitions={"done": "done"} + "RESET_TABLES", + smach.CBState(reset_tables), + transitions={"done": "done"}, ) diff --git a/tasks/coffee_shop/src/coffee_shop/phases/phase_2/states/check_order.py b/tasks/coffee_shop/src/coffee_shop/phases/phase_2/states/check_order.py index 425ef3166..6bf9153e1 100644 --- a/tasks/coffee_shop/src/coffee_shop/phases/phase_2/states/check_order.py +++ b/tasks/coffee_shop/src/coffee_shop/phases/phase_2/states/check_order.py @@ -1,16 +1,14 @@ -#!/usr/bin/env python3 import smach import rospy import numpy as np from sensor_msgs.msg import PointCloud2 from geometry_msgs.msg import Point, PointStamped -from std_msgs.msg import String -from common_math import pcl_msg_to_cv2, seg_to_centroid -from coffee_shop.srv import TfTransform, TfTransformRequest +import cv2_pcl +import cv2_img from play_motion_msgs.msg import PlayMotionGoal from collections import Counter -from control_msgs.msg import PointHeadGoal from geometry_msgs.msg import Point +from shapely.geometry import Point as ShapelyPoint, Polygon class CheckOrder(smach.State): @@ -20,19 +18,16 @@ def __init__(self, context): self.n_checks = 0 def estimate_pose(self, pcl_msg, detection): - centroid_xyz = seg_to_centroid(pcl_msg, np.array(detection.xyseg)) + centroid_xyz = cv2_pcl.seg_to_centroid(pcl_msg, np.array(detection.xyseg)) centroid = PointStamped() centroid.point = Point(*centroid_xyz) centroid.header = pcl_msg.header - tf_req = TfTransformRequest() - tf_req.target_frame = String("map") - tf_req.point = centroid - response = self.context.tf(tf_req) + centroid = self.context.tf_point(centroid, "map") return np.array( [ - response.target_point.point.x, - response.target_point.point.y, - response.target_point.point.z, + centroid.point.x, + centroid.point.y, + centroid.point.z, ] ) @@ -41,6 +36,7 @@ def execute(self, userdata): self.context.voice_controller.sync_tts( "I think I have something in my eyes, I'm struggling to check the order. I trust you that the order is correct!" ) + self.n_checks = 0 return "correct" self.n_checks += 1 @@ -50,22 +46,10 @@ def execute(self, userdata): order = self.context.tables[self.context.current_table]["order"] counter_corners = rospy.get_param(f"/counter/cuboid") - """ - pm_goal = PlayMotionGoal(motion_name="back_to_default", skip_planning=True) - self.context.play_motion_client.send_goal_and_wait(pm_goal) - counter_centroid = np.mean(counter_corners, axis=0) - ph_goal = PointHeadGoal() - ph_goal.max_velocity = 1.0 - ph_goal.pointing_frame = 'head_2_link' - ph_goal.pointing_axis = Point(1.0, 0.0, 0.0) - ph_goal.target.header.frame_id = 'map' - ph_goal.target.point = Point(*counter_centroid, 0.7) - self.context.point_head_client.send_goal_and_wait(ph_goal) - """ rospy.sleep(rospy.Duration(2.0)) pcl_msg = rospy.wait_for_message("/xtion/depth_registered/points", PointCloud2) - cv_im = pcl_msg_to_cv2(pcl_msg) - img_msg = self.context.bridge.cv2_to_imgmsg(cv_im) + cv_im = cv2_pcl.pcl_to_cv2(pcl_msg) + img_msg = cv2_img.cv2_img_to_msg(cv_im) detections = self.context.yolo( img_msg, self.context.YOLO_counter_model, 0.6, 0.3 ) @@ -74,9 +58,11 @@ def execute(self, userdata): for det in detections.detected_objects if det.name in self.context.target_object_remappings.keys() ] - satisfied_points = self.context.shapely.are_points_in_polygon_2d( - counter_corners, [[pose[0], pose[1]] for (_, pose) in detections] - ).inside + shapely_polygon = Polygon(counter_corners) + satisfied_points = [ + shapely_polygon.contains(ShapelyPoint(pose[0], pose[1])) + for _, pose in detections + ] given_order = [ detections[i] for i in range(0, len(detections)) if satisfied_points[i] ] @@ -88,6 +74,7 @@ def execute(self, userdata): given_order[:] = [x if x != "biscuits" else "granola" for x in given_order] if sorted(order) == sorted(given_order): + self.n_checks = 0 return "correct" missing_items = list((Counter(order) - Counter(given_order)).elements()) diff --git a/tasks/coffee_shop/src/coffee_shop/phases/phase_2/states/deliver_order.py b/tasks/coffee_shop/src/coffee_shop/phases/phase_2/states/deliver_order.py index 3e9695af6..b2a198aff 100644 --- a/tasks/coffee_shop/src/coffee_shop/phases/phase_2/states/deliver_order.py +++ b/tasks/coffee_shop/src/coffee_shop/phases/phase_2/states/deliver_order.py @@ -1,10 +1,10 @@ -#!/usr/bin/env python3 import smach import rospy from geometry_msgs.msg import Pose, Point, Quaternion import numpy as np from play_motion_msgs.msg import PlayMotionGoal -import json +from move_base_msgs.msg import MoveBaseGoal +from scipy.spatial.transform import Rotation as R class DeliverOrder(smach.State): @@ -17,12 +17,18 @@ def execute(self, userdata): location = rospy.get_param(f"/tables/{self.context.current_table}/location") position = location["position"] orientation = location["orientation"] - # self.context.base_controller.sync_to_radius(self.context.tables[self.context.current_table]["people"][0][0], self.context.tables[self.context.current_table]["people"][0][1], 0.5) - # self.context.base_controller.sync_face_to(self.context.tables[self.context.current_table]["people"][0][0], self.context.tables[self.context.current_table]["people"][0][1]) - self.context.base_controller.sync_to_pose( - Pose(position=Point(**position), orientation=Quaternion(**orientation)) + target_orientation = R.from_quat( + [orientation["x"], orientation["y"], orientation["z"], orientation["w"]] ) - self.context.base_controller.rotate(np.pi) + target_orientation *= R.from_euler("z", np.pi, degrees=False) + move_base_goal = MoveBaseGoal() + move_base_goal.target_pose.header.frame_id = "map" + move_base_goal.target_pose.pose = Pose( + position=Point(**position), + orientation=Quaternion(*target_orientation.as_quat()), + ) + self.context.move_base_client.send_goal_and_wait(move_base_goal) + pm_goal = PlayMotionGoal(motion_name="load_unload", skip_planning=True) self.context.play_motion_client.send_goal_and_wait(pm_goal) self.context.voice_controller.async_tts( diff --git a/tasks/coffee_shop/src/coffee_shop/phases/phase_2/states/go_to_counter.py b/tasks/coffee_shop/src/coffee_shop/phases/phase_2/states/go_to_counter.py index b51534942..4c8af1dd8 100644 --- a/tasks/coffee_shop/src/coffee_shop/phases/phase_2/states/go_to_counter.py +++ b/tasks/coffee_shop/src/coffee_shop/phases/phase_2/states/go_to_counter.py @@ -1,7 +1,7 @@ -#!/usr/bin/env python3 import smach import rospy from geometry_msgs.msg import Pose, Point, Quaternion +from move_base_msgs.msg import MoveBaseGoal class GoToCounter(smach.State): @@ -15,7 +15,10 @@ def execute(self, userdata): ) position = rospy.get_param("counter/location/position") orientation = rospy.get_param("counter/location/orientation") - self.context.base_controller.sync_to_pose( - Pose(position=Point(**position), orientation=Quaternion(**orientation)) + move_base_goal = MoveBaseGoal() + move_base_goal.target_pose.header.frame_id = "map" + move_base_goal.target_pose.pose = Pose( + position=Point(**position), orientation=Quaternion(**orientation) ) + self.context.move_base_client.send_goal_and_wait(move_base_goal) return "done" diff --git a/tasks/coffee_shop/src/coffee_shop/phases/phase_2/states/go_to_table.py b/tasks/coffee_shop/src/coffee_shop/phases/phase_2/states/go_to_table.py index 339d72be0..7d4c79b99 100644 --- a/tasks/coffee_shop/src/coffee_shop/phases/phase_2/states/go_to_table.py +++ b/tasks/coffee_shop/src/coffee_shop/phases/phase_2/states/go_to_table.py @@ -1,7 +1,7 @@ -#!/usr/bin/env python3 import smach import rospy -from geometry_msgs.msg import Pose, Point, Quaternion +from geometry_msgs.msg import Pose, Point, Quaternion, PoseWithCovarianceStamped +from move_base_msgs.msg import MoveBaseGoal import numpy as np @@ -11,7 +11,10 @@ def __init__(self, context): self.context = context def execute(self, userdata): - robot_x, robot_y = self.context.base_controller.get_pose() + robot_pose = rospy.wait_for_message( + "/amcl_pose", PoseWithCovarianceStamped + ).pose.pose + robot_x, robot_y = robot_pose.position.x, robot_pose.position.y tables_need_serving = [ (label, rospy.get_param(f"/tables/{label}")) for label, table in self.context.tables.items() @@ -29,18 +32,13 @@ def execute(self, userdata): ), ) label, table = closest_table - if label == self.context.current_table: - self.context.voice_controller.sync_tts( - "Lucky me, I am already at the table which needs serving!" - ) - else: - self.context.voice_controller.sync_tts( - f"I am going to {label}, which needs serving" - ) - position = table["location"]["position"] - orientation = table["location"]["orientation"] - self.context.base_controller.sync_to_pose( - Pose(position=Point(**position), orientation=Quaternion(**orientation)) - ) + position = table["location"]["position"] + orientation = table["location"]["orientation"] + move_base_goal = MoveBaseGoal() + move_base_goal.target_pose.header.frame_id = "map" + move_base_goal.target_pose.pose = Pose( + position=Point(**position), orientation=Quaternion(**orientation) + ) + self.context.move_base_client.send_goal_and_wait(move_base_goal) self.context.current_table = label return "done" diff --git a/tasks/coffee_shop/src/coffee_shop/phases/phase_2/states/load_order.py b/tasks/coffee_shop/src/coffee_shop/phases/phase_2/states/load_order.py index 13ac0961d..a5595bf2f 100644 --- a/tasks/coffee_shop/src/coffee_shop/phases/phase_2/states/load_order.py +++ b/tasks/coffee_shop/src/coffee_shop/phases/phase_2/states/load_order.py @@ -1,9 +1,10 @@ -#!/usr/bin/env python3 import smach import numpy as np from play_motion_msgs.msg import PlayMotionGoal -import json +from geometry_msgs.msg import PoseWithCovarianceStamped, Pose, Point, Quaternion +from move_base_msgs.msg import MoveBaseGoal import rospy +from scipy.spatial.transform import Rotation as R class LoadOrder(smach.State): @@ -15,7 +16,25 @@ def execute(self, userdata): self.context.voice_controller.sync_tts( "That's the right order, I'll turn around so that you can load it" ) - self.context.base_controller.rotate(np.pi) + robot_pose = rospy.wait_for_message( + "/amcl_pose", PoseWithCovarianceStamped + ).pose.pose + target_orientation = R.from_quat( + [ + robot_pose.orientation.x, + robot_pose.orientation.y, + robot_pose.orientation.z, + robot_pose.orientation.w, + ] + ) * R.from_euler("z", np.pi, degrees=False) + move_base_goal = MoveBaseGoal() + move_base_goal.target_pose.header.frame_id = "map" + move_base_goal.target_pose.pose = Pose( + position=robot_pose.position, + orientation=Quaternion(*target_orientation.as_quat()), + ) + self.context.move_base_client.send_goal_and_wait(move_base_goal) + pm_goal = PlayMotionGoal(motion_name="load_unload", skip_planning=True) self.context.play_motion_client.send_goal_and_wait(pm_goal) self.context.voice_controller.sync_tts( diff --git a/tasks/coffee_shop/src/coffee_shop/phases/phase_2/states/make_order.py b/tasks/coffee_shop/src/coffee_shop/phases/phase_2/states/make_order.py index d0661e7d4..95f57fca1 100644 --- a/tasks/coffee_shop/src/coffee_shop/phases/phase_2/states/make_order.py +++ b/tasks/coffee_shop/src/coffee_shop/phases/phase_2/states/make_order.py @@ -1,4 +1,3 @@ -#!/usr/bin/env python3 import smach import rospy from collections import Counter diff --git a/tasks/coffee_shop/src/coffee_shop/phases/phase_2/states/start.py b/tasks/coffee_shop/src/coffee_shop/phases/phase_2/states/start.py index 2152cb6a6..90b725e4b 100644 --- a/tasks/coffee_shop/src/coffee_shop/phases/phase_2/states/start.py +++ b/tasks/coffee_shop/src/coffee_shop/phases/phase_2/states/start.py @@ -1,6 +1,5 @@ import smach import rospy -from std_msgs.msg import Int16 class Start(smach.State): @@ -9,8 +8,5 @@ def __init__(self, context): self.context = context def execute(self, userdata): - self.context.datahub_stop_phase.publish(Int16(1)) - self.context.voice_controller.sync_tts("Starting Phase 2.") - self.context.datahub_start_phase.publish(Int16(2)) rospy.loginfo(f"Context: {str(self.context)}") return "done" diff --git a/tasks/coffee_shop/src/coffee_shop/phases/phase_2/states/take_order.py b/tasks/coffee_shop/src/coffee_shop/phases/phase_2/states/take_order.py index 9fcac428a..76a641a57 100644 --- a/tasks/coffee_shop/src/coffee_shop/phases/phase_2/states/take_order.py +++ b/tasks/coffee_shop/src/coffee_shop/phases/phase_2/states/take_order.py @@ -1,4 +1,3 @@ -#!/usr/bin/env python3 import smach import rospy import json @@ -89,7 +88,7 @@ def execute(self, userdata): if self.context.tablet: self.context.voice_controller.sync_tts( - "Hello, I'm TIAGo, I'll be serving you today. Please use the tablet to make your order." + "Please use the tablet to make your order." ) pm_goal = PlayMotionGoal(motion_name="tablet", skip_planning=True) self.context.play_motion_client.send_goal_and_wait(pm_goal) @@ -157,6 +156,8 @@ def execute(self, userdata): ) else: break + print(self.context.target_object_remappings) + print(order) order_string = ", ".join( [ f"{count} {self.context.target_object_remappings[item] if count == 1 else self.context.target_object_remappings[item]+'s'}" diff --git a/tasks/coffee_shop/src/coffee_shop/phases/phase_2/states/wait_for_order.py b/tasks/coffee_shop/src/coffee_shop/phases/phase_2/states/wait_for_order.py index b040641e1..bc15f7fea 100644 --- a/tasks/coffee_shop/src/coffee_shop/phases/phase_2/states/wait_for_order.py +++ b/tasks/coffee_shop/src/coffee_shop/phases/phase_2/states/wait_for_order.py @@ -1,4 +1,3 @@ -#!/usr/bin/env python3 import smach import json import rospy diff --git a/tasks/coffee_shop/src/coffee_shop/phases/phase_3/phase_3.py b/tasks/coffee_shop/src/coffee_shop/phases/phase_3/phase_3.py index e2804b401..8ab766cd4 100644 --- a/tasks/coffee_shop/src/coffee_shop/phases/phase_3/phase_3.py +++ b/tasks/coffee_shop/src/coffee_shop/phases/phase_3/phase_3.py @@ -57,5 +57,5 @@ def __init__(self, context): smach.StateMachine.add( "GUIDE_PERSON", GuidePerson(context), - transitions={"done": "GO_TO_WAIT_LOCATION"}, + transitions={"done": "done"}, ) diff --git a/tasks/coffee_shop/src/coffee_shop/phases/phase_3/states/go_closer_to_person.py b/tasks/coffee_shop/src/coffee_shop/phases/phase_3/states/go_closer_to_person.py index 5e8eeb707..3f8989e78 100644 --- a/tasks/coffee_shop/src/coffee_shop/phases/phase_3/states/go_closer_to_person.py +++ b/tasks/coffee_shop/src/coffee_shop/phases/phase_3/states/go_closer_to_person.py @@ -1,7 +1,7 @@ -#!/usr/bin/env python3 import smach from geometry_msgs.msg import Pose, Point, Quaternion import rospy +from move_base_msgs.msg import MoveBaseGoal class GoCloserToPerson(smach.State): @@ -15,7 +15,10 @@ def execute(self, userdata): ) location = rospy.get_param("/wait/approach1") position, orientation = location["position"], location["orientation"] - self.context.base_controller.sync_to_pose( - Pose(position=Point(**position), orientation=Quaternion(**orientation)) + move_base_goal = MoveBaseGoal() + move_base_goal.target_pose.header.frame_id = "map" + move_base_goal.target_pose.pose = Pose( + position=Point(**position), orientation=Quaternion(**orientation) ) + self.context.move_base_client.send_goal_and_wait(move_base_goal) return "done" diff --git a/tasks/coffee_shop/src/coffee_shop/phases/phase_3/states/go_to_person.py b/tasks/coffee_shop/src/coffee_shop/phases/phase_3/states/go_to_person.py index 15f16947c..0b989a7c1 100644 --- a/tasks/coffee_shop/src/coffee_shop/phases/phase_3/states/go_to_person.py +++ b/tasks/coffee_shop/src/coffee_shop/phases/phase_3/states/go_to_person.py @@ -1,7 +1,10 @@ -#!/usr/bin/env python3 import smach -from geometry_msgs.msg import Pose, Point, Quaternion +from geometry_msgs.msg import Pose, Point, Quaternion, PoseWithCovarianceStamped import rospy +from move_base_msgs.msg import MoveBaseGoal +import numpy as np +import math +from scipy.spatial.transform import Rotation as R class GoToPerson(smach.State): @@ -12,11 +15,30 @@ def __init__(self, context): def execute(self, userdata): location = rospy.get_param("/wait/approach2") position, orientation = location["position"], location["orientation"] - self.context.base_controller.sync_to_pose( - Pose(position=Point(**position), orientation=Quaternion(**orientation)) + move_base_goal = MoveBaseGoal() + move_base_goal.target_pose.header.frame_id = "map" + move_base_goal.target_pose.pose = Pose( + position=Point(**position), orientation=Quaternion(**orientation) ) + self.context.move_base_client.send_goal_and_wait(move_base_goal) if self.context.new_customer_pose: - self.context.base_controller.sync_face_to( - self.context.new_customer_pose[0], self.context.new_customer_pose[1] + robot_pose = rospy.wait_for_message( + "/amcl_pose", PoseWithCovarianceStamped + ).pose.pose + robot_x, robot_y = robot_pose.position.x, robot_pose.position.y + customer_x, customer_y = ( + self.context.new_customer_pose.point.x, + self.context.new_customer_pose.point.y, ) + dx, dy = customer_x - robot_x, customer_y - robot_y + theta_deg = np.degrees(math.atan2(dy, dx)) + quaternion = R.from_euler("z", theta_deg, degrees=True).as_quat() + move_base_goal = MoveBaseGoal() + move_base_goal.target_pose.header.frame_id = "map" + move_base_goal.target_pose.pose = Pose( + position=Point(**position), + orientation=Quaternion(*quaternion), + ) + self.context.move_base_client.send_goal_and_wait(move_base_goal) + return "done" diff --git a/tasks/coffee_shop/src/coffee_shop/phases/phase_3/states/go_to_wait_location.py b/tasks/coffee_shop/src/coffee_shop/phases/phase_3/states/go_to_wait_location.py index 8ba02a796..3cd53b1ff 100644 --- a/tasks/coffee_shop/src/coffee_shop/phases/phase_3/states/go_to_wait_location.py +++ b/tasks/coffee_shop/src/coffee_shop/phases/phase_3/states/go_to_wait_location.py @@ -1,7 +1,7 @@ -#!/usr/bin/env python3 import smach import rospy from geometry_msgs.msg import Pose, Point, Quaternion +from move_base_msgs.msg import MoveBaseGoal class GoToWaitLocation(smach.State): @@ -16,11 +16,10 @@ def execute(self, userdata): wait_location["location"]["position"], wait_location["location"]["orientation"], ) - self.context.base_controller.sync_to_pose( - Pose(position=Point(**position), orientation=Quaternion(**orientation)) + move_base_goal = MoveBaseGoal() + move_base_goal.target_pose.header.frame_id = "map" + move_base_goal.target_pose.pose = Pose( + position=Point(**position), orientation=Quaternion(**orientation) ) - if not self.done: - self.done = True - return "not done" - else: - return "done" + self.context.move_base_client.send_goal_and_wait(move_base_goal) + return "not done" diff --git a/tasks/coffee_shop/src/coffee_shop/phases/phase_3/states/greet_person.py b/tasks/coffee_shop/src/coffee_shop/phases/phase_3/states/greet_person.py index e4ae41446..b4c07c18e 100644 --- a/tasks/coffee_shop/src/coffee_shop/phases/phase_3/states/greet_person.py +++ b/tasks/coffee_shop/src/coffee_shop/phases/phase_3/states/greet_person.py @@ -1,4 +1,3 @@ -#!/usr/bin/env python3 import smach from play_motion_msgs.msg import PlayMotionGoal from control_msgs.msg import PointHeadGoal @@ -12,15 +11,6 @@ def __init__(self, context): def execute(self, userdata): self.context.stop_head_manager("head_manager") - """ - ph_goal = PointHeadGoal() - ph_goal.max_velocity = 1.0 - ph_goal.pointing_frame = 'head_2_link' - ph_goal.pointing_axis = Point(1.0, 0.0, 0.0) - ph_goal.target.header.frame_id = 'map' - ph_goal.target.point = Point(*self.context.new_customer_pose) - self.context.point_head_client.send_goal_and_wait(ph_goal) - """ self.context.voice_controller.sync_tts( "Hi there! My name is TIAGO. Please follow me, I'll guide you to a table." ) diff --git a/tasks/coffee_shop/src/coffee_shop/phases/phase_3/states/guide_person.py b/tasks/coffee_shop/src/coffee_shop/phases/phase_3/states/guide_person.py index 7028bb6f6..d3f9b2239 100644 --- a/tasks/coffee_shop/src/coffee_shop/phases/phase_3/states/guide_person.py +++ b/tasks/coffee_shop/src/coffee_shop/phases/phase_3/states/guide_person.py @@ -1,19 +1,17 @@ -#!/usr/bin/env python3 import smach import rospy -from geometry_msgs.msg import Pose, Point, Quaternion +from geometry_msgs.msg import Pose, Point, Quaternion, PoseWithCovarianceStamped from sensor_msgs.msg import PointCloud2 from play_motion_msgs.msg import PlayMotionGoal import numpy as np -from common_math import pcl_msg_to_cv2 - -from std_msgs.msg import String from play_motion_msgs.msg import PlayMotionGoal from sensor_msgs.msg import PointCloud2 from geometry_msgs.msg import PointStamped, Point -from common_math import pcl_msg_to_cv2, seg_to_centroid -from coffee_shop.srv import TfTransform, TfTransformRequest +import cv2_pcl +import cv2_img import numpy as np +from shapely.geometry import Point as ShapelyPoint, Polygon +from move_base_msgs.msg import MoveBaseGoal class GuidePerson(smach.State): @@ -22,25 +20,22 @@ def __init__(self, context): self.context = context def estimate_pose(self, pcl_msg, detection): - centroid_xyz = seg_to_centroid(pcl_msg, np.array(detection.xyseg)) + centroid_xyz = cv2_pcl.seg_to_centroid(pcl_msg, np.array(detection.xyseg)) centroid = PointStamped() centroid.point = Point(*centroid_xyz) centroid.header = pcl_msg.header - tf_req = TfTransformRequest() - tf_req.target_frame = String("map") - tf_req.point = centroid - response = self.context.tf(tf_req) + centroid = self.context.tf_point(centroid, "map") return np.array( [ - response.target_point.point.x, - response.target_point.point.y, - response.target_point.point.z, + centroid.point.x, + centroid.point.y, + centroid.point.z, ] ) def perform_detection(self, pcl_msg, polygon, filter, model): - cv_im = pcl_msg_to_cv2(pcl_msg) - img_msg = self.context.bridge.cv2_to_imgmsg(cv_im) + cv_im = cv2_pcl.pcl_to_cv2(pcl_msg) + img_msg = cv2_img.cv2_img_to_msg(cv_im) detections = self.context.yolo(img_msg, model, 0.5, 0.3) detections = [ (det, self.estimate_pose(pcl_msg, det)) @@ -49,9 +44,11 @@ def perform_detection(self, pcl_msg, polygon, filter, model): ] rospy.loginfo(f"All: {[(det.name, pose) for det, pose in detections]}") rospy.loginfo(f"Boundary: {polygon}") - satisfied_points = self.context.shapely.are_points_in_polygon_2d( - polygon, [[pose[0], pose[1]] for (_, pose) in detections] - ).inside + shapely_polygon = Polygon(polygon) + satisfied_points = [ + shapely_polygon.contains(ShapelyPoint(pose[0], pose[1])) + for _, pose in detections + ] detections = [ detections[i] for i in range(0, len(detections)) if satisfied_points[i] ] @@ -60,7 +57,10 @@ def perform_detection(self, pcl_msg, polygon, filter, model): def execute(self, userdata): self.context.stop_head_manager("head_manager") - robot_x, robot_y = self.context.base_controller.get_pose() + robot_pose = rospy.wait_for_message( + "/amcl_pose", PoseWithCovarianceStamped + ).pose.pose + robot_x, robot_y = robot_pose.position.x, robot_pose.position.y utter_clean_phrase = False empty_tables = [ (label, rospy.get_param(f"/tables/{label}")) @@ -106,9 +106,13 @@ def execute(self, userdata): table["location"]["position"], table["location"]["orientation"], ) - self.context.base_controller.sync_to_pose( - Pose(position=Point(**position), orientation=Quaternion(**orientation)) + + move_base_goal = MoveBaseGoal() + move_base_goal.target_pose.header.frame_id = "map" + move_base_goal.target_pose.pose = Pose( + position=Point(**position), orientation=Quaternion(**orientation) ) + self.context.move_base_client.send_goal_and_wait(move_base_goal) pm_goal = PlayMotionGoal(motion_name="back_to_default", skip_planning=True) self.context.play_motion_client.send_goal_and_wait(pm_goal) diff --git a/tasks/coffee_shop/src/coffee_shop/phases/phase_3/states/look_for_person.py b/tasks/coffee_shop/src/coffee_shop/phases/phase_3/states/look_for_person.py index 96563debd..f3adb5261 100644 --- a/tasks/coffee_shop/src/coffee_shop/phases/phase_3/states/look_for_person.py +++ b/tasks/coffee_shop/src/coffee_shop/phases/phase_3/states/look_for_person.py @@ -1,15 +1,12 @@ -#!/usr/bin/env python3 import smach import rospy import numpy as np -import ros_numpy as rnp from sensor_msgs.msg import PointCloud2 from geometry_msgs.msg import Point, PointStamped -from std_msgs.msg import String -import cv2 -from coffee_shop.srv import TfTransform, TfTransformRequest -from common_math import pcl_msg_to_cv2 +import cv2_pcl +import cv2_img from play_motion_msgs.msg import PlayMotionGoal +from shapely.geometry import Point as ShapelyPoint, Polygon class LookForPerson(smach.State): @@ -17,33 +14,17 @@ def __init__(self, context): smach.State.__init__(self, outcomes=["found", "not found"]) self.context = context - def estimate_pose(self, pcl_msg, cv_im, detection): - contours = np.array(detection.xyseg).reshape(-1, 2) - mask = np.zeros((cv_im.shape[0], cv_im.shape[1]), np.uint8) - cv2.fillPoly(mask, pts=[contours], color=(255, 255, 255)) - indices = np.argwhere(mask) - if indices.shape[0] == 0: - return np.array([np.inf, np.inf, np.inf]) - pcl_xyz = rnp.point_cloud2.pointcloud2_to_xyz_array(pcl_msg, remove_nans=False) - - xyz_points = [] - for x, y in indices: - x, y, z = pcl_xyz[x][y] - xyz_points.append([x, y, z]) - - x, y, z = np.nanmean(xyz_points, axis=0) + def estimate_pose(self, pcl_msg, detection): + centroid_xyz = cv2_pcl.seg_to_centroid(pcl_msg, np.array(detection.xyseg)) centroid = PointStamped() - centroid.point = Point(x, y, z) + centroid.point = Point(*centroid_xyz) centroid.header = pcl_msg.header - tf_req = TfTransformRequest() - tf_req.target_frame = String("map") - tf_req.point = centroid - response = self.context.tf(tf_req) + centroid = self.context.tf_point(centroid, "map") return np.array( [ - response.target_point.point.x, - response.target_point.point.y, - response.target_point.point.z, + centroid.point.x, + centroid.point.y, + centroid.point.z, ] ) @@ -55,25 +36,29 @@ def execute(self, userdata): corners = rospy.get_param("/wait/cuboid") pcl_msg = rospy.wait_for_message("/xtion/depth_registered/points", PointCloud2) - cv_im = pcl_msg_to_cv2(pcl_msg) - img_msg = self.context.bridge.cv2_to_imgmsg(cv_im) + cv_im = cv2_pcl.pcl_to_cv2(pcl_msg) + img_msg = cv2_img.cv2_img_to_msg(cv_im) detections = self.context.yolo( img_msg, self.context.YOLO_person_model, 0.3, 0.3 ) detections = [ - (det, self.estimate_pose(pcl_msg, cv_im, det)) + (det, self.estimate_pose(pcl_msg, det)) for det in detections.detected_objects if det.name == "person" ] - satisfied_points = self.context.shapely.are_points_in_polygon_2d( - corners, [[pose[0], pose[1]] for (_, pose) in detections] - ).inside + shapely_polygon = Polygon(corners) + satisfied_points = [ + shapely_polygon.contains(ShapelyPoint(pose[0], pose[1])) + for _, pose in detections + ] if len(detections): for i in range(0, len(detections)): pose = detections[i][1] self.context.publish_person_pose(*pose, "map") if satisfied_points[i]: - self.context.new_customer_pose = pose.tolist() + self.context.new_customer_pose = PointStamped(point=Point(*pose)) + self.context.new_customer_pose.header.frame_id = "map" + return "found" rospy.sleep(rospy.Duration(1.0)) diff --git a/tasks/coffee_shop/src/coffee_shop/phases/phase_3/states/look_for_person_laser.py b/tasks/coffee_shop/src/coffee_shop/phases/phase_3/states/look_for_person_laser.py index de436ff35..064b6286d 100644 --- a/tasks/coffee_shop/src/coffee_shop/phases/phase_3/states/look_for_person_laser.py +++ b/tasks/coffee_shop/src/coffee_shop/phases/phase_3/states/look_for_person_laser.py @@ -1,16 +1,14 @@ -#!/usr/bin/env python3 import smach import rospy from sensor_msgs.msg import LaserScan, CameraInfo, Image -from std_msgs.msg import String -from geometry_msgs.msg import Point +from geometry_msgs.msg import Point, PointStamped import numpy as np import laser_geometry.laser_geometry as lg import sensor_msgs.point_cloud2 as pc2 from image_geometry import PinholeCameraModel from play_motion_msgs.msg import PlayMotionGoal -from coffee_shop.srv import LatestTransformRequest, ApplyTransformRequest import time +from shapely.geometry import Point as ShapelyPoint, Polygon def timeit_rospy(method): @@ -52,32 +50,30 @@ def get_points_and_pixels_from_laser(self, msg): p for p in pc2.read_points(pcl_msg, field_names=("x, y, z"), skip_nans=True) ] - tf_req = LatestTransformRequest() - tf_req.target_frame = "xtion_rgb_optical_frame" - tf_req.from_frame = "base_laser_link" - t = self.context.tf_latest(tf_req) - padded_points = [] pixels = [] for point in pcl_points: # Pad out the points to add vertical "pillars" to the point cloud for z in np.linspace(0.0, 1.0, 5): - padded_points.append(Point(x=point[0], y=point[1], z=z)) + padded_points.append( + PointStamped( + point=Point(x=point[0], y=point[1], z=z), header=msg.header + ) + ) - apply_req = ApplyTransformRequest() - apply_req.points = padded_points - apply_req.transform = t.transform - res = self.context.tf_apply(apply_req) + tf_points = self.context.tf_point_list( + padded_points, "base_laser_link", "xtion_rgb_optical_frame" + ) padded_converted_points = [] - for p in res.new_points: - pt = (p.x, p.y, p.z) + for p in tf_points: + pt = (p.point.x, p.point.y, p.point.z) u, v = self.camera.project3dToPixel(pt) # Filter out points that are outside the camera frame if u >= 0 and u < 640 and v >= 0 and v < 480: pixels.append(u) pixels.append(v) - padded_converted_points.append(pt) + padded_converted_points.append(p) return padded_converted_points, pixels @@ -90,18 +86,8 @@ def convert_points_to_map_frame(self, points, from_frame="xtion_rgb_optical_fram Returns: List: A list of tuples containing points in map frame. """ - tf_req = LatestTransformRequest() - tf_req.target_frame = "map" - tf_req.from_frame = from_frame - t = self.context.tf_latest(tf_req) - - apply_req = ApplyTransformRequest() - apply_req.points = [ - Point(x=point[0], y=point[1], z=point[2]) for point in points - ] - apply_req.transform = t.transform - res = self.context.tf_apply(apply_req) - converted_points = [(point.x, point.y, point.z) for point in res.new_points] + tf_points = self.context.tf_point_list(points, from_frame, "map") + converted_points = [(p.point.x, p.point.y, p.point.z) for p in tf_points] return converted_points @@ -117,33 +103,45 @@ def execute(self, userdata): detections = self.context.yolo( img_msg, self.context.YOLO_person_model, 0.3, 0.3 ) + waiting_area = Polygon(self.corners) + pixels_2d = np.array(pixels).reshape(-1, 2) for detection in detections.detected_objects: if detection.name == "person": - decision = self.context.shapely.are_points_in_polygon_2d_flatarr( - detection.xyseg, pixels - ) - idx = [idx for idx, el in enumerate(decision.inside) if el] + shapely_polygon = Polygon(np.array(detection.xyseg).reshape(-1, 2)) + satisfied_points = [ + shapely_polygon.contains(ShapelyPoint(x, y)) for x, y in pixels_2d + ] + idx = [idx for idx, el in enumerate(satisfied_points) if el] filtered_points = self.convert_points_to_map_frame( [points[i] for i in idx] ) if self.corners is not None: - waiting_area = self.context.shapely.are_points_in_polygon_2d( - self.corners, [[p[0], p[1]] for p in filtered_points] - ) - idx = [idx for idx, el in enumerate(waiting_area.inside) if el] + waiting_area_satisfied_points = [ + waiting_area.contains(ShapelyPoint(*point)) + for point in filtered_points + ] + idx = [ + idx + for idx, el in enumerate(waiting_area_satisfied_points) + if el + ] points_inside_area = [filtered_points[i] for i in idx] if len(points_inside_area): point = np.mean(points_inside_area, axis=0) self.context.publish_person_pose(*point, "map") - self.context.new_customer_pose = point.tolist() + self.context.new_customer_pose = PointStamped( + point=Point(*point) + ) + self.context.new_customer_pose.header.frame_id = "map" return "found" else: # mean of filtered points point = np.mean(filtered_points, axis=0) self.context.publish_person_pose(*point, "map") - self.context.new_customer_pose = point.tolist() + self.context.new_customer_pose = PointStamped(point=Point(*point)) + self.context.new_customer_pose.header.frame_id = "map" return "found" diff --git a/tasks/coffee_shop/src/coffee_shop/phases/phase_3/states/start.py b/tasks/coffee_shop/src/coffee_shop/phases/phase_3/states/start.py index 0a79d7492..8c5c5b976 100644 --- a/tasks/coffee_shop/src/coffee_shop/phases/phase_3/states/start.py +++ b/tasks/coffee_shop/src/coffee_shop/phases/phase_3/states/start.py @@ -1,6 +1,5 @@ import smach import rospy -from std_msgs.msg import Int16 class Start(smach.State): @@ -9,9 +8,6 @@ def __init__(self, context): self.context = context def execute(self, userdata): - self.context.datahub_stop_phase.publish(Int16(2)) - self.context.voice_controller.sync_tts("Starting Phase 3.") - self.context.datahub_start_phase.publish(Int16(3)) rospy.loginfo(f"Context: {str(self.context)}") self.context.voice_controller.async_tts("I am going to wait for a new customer") return "done" diff --git a/tasks/coffee_shop/src/coffee_shop/state_machine.py b/tasks/coffee_shop/src/coffee_shop/state_machine.py index befa53358..d5ac070da 100644 --- a/tasks/coffee_shop/src/coffee_shop/state_machine.py +++ b/tasks/coffee_shop/src/coffee_shop/state_machine.py @@ -1,4 +1,3 @@ -#!/usr/bin/env python3 import smach from coffee_shop.phases import Phase1, Phase2, Phase3 @@ -8,11 +7,13 @@ def __init__(self, context): smach.StateMachine.__init__(self, outcomes=["end"]) with self: smach.StateMachine.add( - "PHASE_1", Phase1(context), transitions={"done": "PHASE_2"} + "PHASE_1", + Phase1(context), + transitions={"greet_new_customer": "PHASE_3", "serve": "PHASE_2"}, ) smach.StateMachine.add( - "PHASE_2", Phase2(context), transitions={"done": "PHASE_3"} + "PHASE_3", Phase3(context), transitions={"done": "PHASE_2"} ) smach.StateMachine.add( - "PHASE_3", Phase3(context), transitions={"done": "end"} + "PHASE_2", Phase2(context), transitions={"done": "PHASE_1"} ) diff --git a/tasks/coffee_shop/src/coffee_shop/utils/__init__.py b/tasks/coffee_shop/src/coffee_shop/utils/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/tasks/coffee_shop/src/coffee_shop/utils/utils.py b/tasks/coffee_shop/src/coffee_shop/utils/utils.py deleted file mode 100644 index 8b1378917..000000000 --- a/tasks/coffee_shop/src/coffee_shop/utils/utils.py +++ /dev/null @@ -1 +0,0 @@ - diff --git a/tasks/coffee_shop/srv/ApplyTransform.srv b/tasks/coffee_shop/srv/ApplyTransform.srv deleted file mode 100644 index 7a1fa8d6f..000000000 --- a/tasks/coffee_shop/srv/ApplyTransform.srv +++ /dev/null @@ -1,4 +0,0 @@ -geometry_msgs/Point[] points # point we want to transform -geometry_msgs/TransformStamped transform #the transform we want to use ---- -geometry_msgs/Point[] new_points # the transformed point diff --git a/tasks/coffee_shop/srv/LatestTransform.srv b/tasks/coffee_shop/srv/LatestTransform.srv deleted file mode 100644 index e41175e19..000000000 --- a/tasks/coffee_shop/srv/LatestTransform.srv +++ /dev/null @@ -1,4 +0,0 @@ -string from_frame # source frame -string target_frame # target frame ---- -geometry_msgs/TransformStamped transform # transform \ No newline at end of file diff --git a/tasks/coffee_shop/srv/TfTransform.srv b/tasks/coffee_shop/srv/TfTransform.srv deleted file mode 100644 index 9d8833524..000000000 --- a/tasks/coffee_shop/srv/TfTransform.srv +++ /dev/null @@ -1,8 +0,0 @@ -geometry_msgs/PoseArray pose_array -sensor_msgs/PointCloud2 pointcloud -geometry_msgs/PointStamped point -std_msgs/String target_frame ---- -geometry_msgs/PoseArray target_pose_array -sensor_msgs/PointCloud2 target_pointcloud -geometry_msgs/PointStamped target_point \ No newline at end of file