├── .eslintrc.json ├── .gitignore ├── README.md ├── components.json ├── liveblocks.config.ts ├── next.config.js ├── package.json ├── pnpm-lock.yaml ├── postcss.config.js ├── public ├── ambient.mp3 ├── explosion.mp3 ├── next.svg ├── pop.mp3 └── vercel.svg ├── src ├── app │ ├── Room.tsx │ ├── favicon.ico │ ├── globals.css │ ├── layout.tsx │ └── page.tsx ├── components │ ├── canvas │ │ ├── explosion.gif │ │ ├── index.module.css │ │ └── index.tsx │ ├── game │ │ └── index.tsx │ └── ui │ │ ├── button.tsx │ │ ├── input.tsx │ │ ├── label.tsx │ │ └── separator.tsx ├── lib │ ├── colors.ts │ ├── useInterval.tsx │ └── utils.ts └── types │ └── index.ts ├── tailwind.config.js └── tsconfig.json /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "next/core-web-vitals" 3 | } 4 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # next.js 12 | /.next/ 13 | /out/ 14 | 15 | # production 16 | /build 17 | 18 | # misc 19 | .DS_Store 20 | *.pem 21 | 22 | # debug 23 | npm-debug.log* 24 | yarn-debug.log* 25 | yarn-error.log* 26 | 27 | # local env files 28 | .env*.local 29 | 30 | # vercel 31 | .vercel 32 | 33 | # typescript 34 | *.tsbuildinfo 35 | next-env.d.ts 36 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Bounce Dodge 2 | 3 | [![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2FJohnPhamous%2Fbounce-dodge&env=NEXT_PUBLIC_LIVEBLOCKS_PUBLIC_KEY&envDescription=The%20Liveblocks%20project%20Public%20Key&envLink=https%3A%2F%2Fliveblocks.io%2Fblog%2Fclient-side-only-mode-with-public-key&project-name=bounce-dodge) 4 | 5 | ## Getting Started 6 | 7 | 1. You will need a [Liveblocks account](https://liveblocks.io/) 8 | 1. Set your Liveblock project's Public Key to the `NEXT_PUBLIC_LIVEBLOCKS_PUBLIC_KEY` environment variable 9 | 10 | ## How the game works 11 | 12 | - Players join the same room 13 | - The 1st player that joins the room is designated the admin. The admin is able to play/pause the game and reset the game state. 14 | - The admin will wait until all players have set their name and placed their sticky note on the canvas before starting the game. 15 | -------------------------------------------------------------------------------- /components.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://ui.shadcn.com/schema.json", 3 | "style": "new-york", 4 | "rsc": true, 5 | "tailwind": { 6 | "config": "tailwind.config.js", 7 | "css": "src/app/globals.css", 8 | "baseColor": "slate", 9 | "cssVariables": true 10 | }, 11 | "aliases": { 12 | "components": "@/components", 13 | "utils": "@/lib/utils" 14 | } 15 | } -------------------------------------------------------------------------------- /liveblocks.config.ts: -------------------------------------------------------------------------------- 1 | import { LiveList, LiveObject, createClient } from "@liveblocks/client"; 2 | import { createRoomContext } from "@liveblocks/react"; 3 | 4 | const client = createClient({ 5 | publicApiKey: process.env.NEXT_PUBLIC_LIVEBLOCKS_PUBLIC_KEY!, 6 | }); 7 | 8 | type Presence = { 9 | username: string | undefined; 10 | color: string; 11 | isAdmin: boolean; 12 | }; 13 | 14 | type Storage = { 15 | targets: LiveList<{ 16 | id: string; 17 | value: string; 18 | coordinates: { x: number; y: number }; 19 | color: string; 20 | owner: string; 21 | }>; 22 | eliminatedTargets: LiveList<{ 23 | id: string; 24 | value: string; 25 | coordinates: { x: number; y: number }; 26 | color: string; 27 | owner: string; 28 | }>; 29 | attacker: LiveObject<{ x: number; y: number; color: string }>; 30 | gameState: "pregame" | "playing" | "end"; 31 | }; 32 | 33 | // Optionally, UserMeta represents static/readonly metadata on each user, as 34 | // provided by your own custom auth back end (if used). Useful for data that 35 | // will not change during a session, like a user's name or avatar. 36 | type UserMeta = { 37 | // id?: string, // Accessible through `user.id` 38 | // info?: Json, // Accessible through `user.info` 39 | }; 40 | 41 | // Optionally, the type of custom events broadcast and listened to in this 42 | // room. Use a union for multiple events. Must be JSON-serializable. 43 | type RoomEvent = 44 | | { 45 | type: "influence"; 46 | action: "up" | "left" | "right" | "down"; 47 | } 48 | | { 49 | type: "eliminated"; 50 | coordinates: { 51 | x: number; 52 | y: number; 53 | }; 54 | }; 55 | 56 | export const { 57 | suspense: { 58 | RoomProvider, 59 | useRoom, 60 | useMyPresence, 61 | useUpdateMyPresence, 62 | useSelf, 63 | useOthers, 64 | useOthersMapped, 65 | useOthersConnectionIds, 66 | useOther, 67 | useBroadcastEvent, 68 | useEventListener, 69 | useErrorListener, 70 | useStorage, 71 | useObject, 72 | useMap, 73 | useList, 74 | useBatch, 75 | useHistory, 76 | useUndo, 77 | useRedo, 78 | useCanUndo, 79 | useCanRedo, 80 | useMutation, 81 | useStatus, 82 | useLostConnectionListener, 83 | }, 84 | } = createRoomContext(client); 85 | -------------------------------------------------------------------------------- /next.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('next').NextConfig} */ 2 | const nextConfig = {} 3 | 4 | module.exports = nextConfig 5 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "bounce-dodge", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "dev": "next dev", 7 | "build": "next build", 8 | "start": "next start", 9 | "lint": "next lint" 10 | }, 11 | "dependencies": { 12 | "@liveblocks/client": "^1.1.1", 13 | "@liveblocks/react": "^1.1.1", 14 | "@radix-ui/react-icons": "^1.3.0", 15 | "@radix-ui/react-label": "^2.0.2", 16 | "@radix-ui/react-separator": "^1.0.3", 17 | "@radix-ui/react-slot": "^1.0.2", 18 | "@types/node": "20.3.3", 19 | "@types/react": "18.2.14", 20 | "@types/react-dom": "18.2.6", 21 | "autoprefixer": "10.4.14", 22 | "class-variance-authority": "^0.6.1", 23 | "clsx": "^1.2.1", 24 | "eslint": "8.44.0", 25 | "eslint-config-next": "13.4.7", 26 | "framer-motion": "^10.12.18", 27 | "nanoid": "^4.0.2", 28 | "next": "13.4.7", 29 | "postcss": "8.4.24", 30 | "react": "18.2.0", 31 | "react-dom": "18.2.0", 32 | "tailwind-merge": "^1.13.2", 33 | "tailwindcss": "3.3.2", 34 | "tailwindcss-animate": "^1.0.6", 35 | "typescript": "5.1.6", 36 | "unique-names-generator": "^4.7.1", 37 | "use-sound": "^4.0.1" 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '6.0' 2 | 3 | dependencies: 4 | '@liveblocks/client': 5 | specifier: ^1.1.1 6 | version: 1.1.1 7 | '@liveblocks/react': 8 | specifier: ^1.1.1 9 | version: 1.1.1(react@18.2.0) 10 | '@radix-ui/react-icons': 11 | specifier: ^1.3.0 12 | version: 1.3.0(react@18.2.0) 13 | '@radix-ui/react-label': 14 | specifier: ^2.0.2 15 | version: 2.0.2(@types/react-dom@18.2.6)(@types/react@18.2.14)(react-dom@18.2.0)(react@18.2.0) 16 | '@radix-ui/react-separator': 17 | specifier: ^1.0.3 18 | version: 1.0.3(@types/react-dom@18.2.6)(@types/react@18.2.14)(react-dom@18.2.0)(react@18.2.0) 19 | '@radix-ui/react-slot': 20 | specifier: ^1.0.2 21 | version: 1.0.2(@types/react@18.2.14)(react@18.2.0) 22 | '@types/node': 23 | specifier: 20.3.3 24 | version: 20.3.3 25 | '@types/react': 26 | specifier: 18.2.14 27 | version: 18.2.14 28 | '@types/react-dom': 29 | specifier: 18.2.6 30 | version: 18.2.6 31 | autoprefixer: 32 | specifier: 10.4.14 33 | version: 10.4.14(postcss@8.4.24) 34 | class-variance-authority: 35 | specifier: ^0.6.1 36 | version: 0.6.1 37 | clsx: 38 | specifier: ^1.2.1 39 | version: 1.2.1 40 | eslint: 41 | specifier: 8.44.0 42 | version: 8.44.0 43 | eslint-config-next: 44 | specifier: 13.4.7 45 | version: 13.4.7(eslint@8.44.0)(typescript@5.1.6) 46 | framer-motion: 47 | specifier: ^10.12.18 48 | version: 10.12.18(react-dom@18.2.0)(react@18.2.0) 49 | nanoid: 50 | specifier: ^4.0.2 51 | version: 4.0.2 52 | next: 53 | specifier: 13.4.7 54 | version: 13.4.7(react-dom@18.2.0)(react@18.2.0) 55 | postcss: 56 | specifier: 8.4.24 57 | version: 8.4.24 58 | react: 59 | specifier: 18.2.0 60 | version: 18.2.0 61 | react-dom: 62 | specifier: 18.2.0 63 | version: 18.2.0(react@18.2.0) 64 | tailwind-merge: 65 | specifier: ^1.13.2 66 | version: 1.13.2 67 | tailwindcss: 68 | specifier: 3.3.2 69 | version: 3.3.2 70 | tailwindcss-animate: 71 | specifier: ^1.0.6 72 | version: 1.0.6(tailwindcss@3.3.2) 73 | typescript: 74 | specifier: 5.1.6 75 | version: 5.1.6 76 | unique-names-generator: 77 | specifier: ^4.7.1 78 | version: 4.7.1 79 | use-sound: 80 | specifier: ^4.0.1 81 | version: 4.0.1(react@18.2.0) 82 | 83 | packages: 84 | 85 | /@aashutoshrathi/word-wrap@1.2.6: 86 | resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} 87 | engines: {node: '>=0.10.0'} 88 | dev: false 89 | 90 | /@alloc/quick-lru@5.2.0: 91 | resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} 92 | engines: {node: '>=10'} 93 | dev: false 94 | 95 | /@babel/runtime@7.22.5: 96 | resolution: {integrity: sha512-ecjvYlnAaZ/KVneE/OdKYBYfgXV3Ptu6zQWmgEF7vwKhQnvVS6bjMD2XYgj+SNvQ1GfK/pjgokfPkC/2CO8CuA==} 97 | engines: {node: '>=6.9.0'} 98 | dependencies: 99 | regenerator-runtime: 0.13.11 100 | dev: false 101 | 102 | /@emotion/is-prop-valid@0.8.8: 103 | resolution: {integrity: sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==} 104 | requiresBuild: true 105 | dependencies: 106 | '@emotion/memoize': 0.7.4 107 | dev: false 108 | optional: true 109 | 110 | /@emotion/memoize@0.7.4: 111 | resolution: {integrity: sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==} 112 | dev: false 113 | optional: true 114 | 115 | /@eslint-community/eslint-utils@4.4.0(eslint@8.44.0): 116 | resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} 117 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 118 | peerDependencies: 119 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 120 | dependencies: 121 | eslint: 8.44.0 122 | eslint-visitor-keys: 3.4.1 123 | dev: false 124 | 125 | /@eslint-community/regexpp@4.5.1: 126 | resolution: {integrity: sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==} 127 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} 128 | dev: false 129 | 130 | /@eslint/eslintrc@2.1.0: 131 | resolution: {integrity: sha512-Lj7DECXqIVCqnqjjHMPna4vn6GJcMgul/wuS0je9OZ9gsL0zzDpKPVtcG1HaDVc+9y+qgXneTeUMbCqXJNpH1A==} 132 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 133 | dependencies: 134 | ajv: 6.12.6 135 | debug: 4.3.4 136 | espree: 9.6.0 137 | globals: 13.20.0 138 | ignore: 5.2.4 139 | import-fresh: 3.3.0 140 | js-yaml: 4.1.0 141 | minimatch: 3.1.2 142 | strip-json-comments: 3.1.1 143 | transitivePeerDependencies: 144 | - supports-color 145 | dev: false 146 | 147 | /@eslint/js@8.44.0: 148 | resolution: {integrity: sha512-Ag+9YM4ocKQx9AarydN0KY2j0ErMHNIocPDrVo8zAE44xLTjEtz81OdR68/cydGtk6m6jDb5Za3r2useMzYmSw==} 149 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 150 | dev: false 151 | 152 | /@humanwhocodes/config-array@0.11.10: 153 | resolution: {integrity: sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==} 154 | engines: {node: '>=10.10.0'} 155 | dependencies: 156 | '@humanwhocodes/object-schema': 1.2.1 157 | debug: 4.3.4 158 | minimatch: 3.1.2 159 | transitivePeerDependencies: 160 | - supports-color 161 | dev: false 162 | 163 | /@humanwhocodes/module-importer@1.0.1: 164 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} 165 | engines: {node: '>=12.22'} 166 | dev: false 167 | 168 | /@humanwhocodes/object-schema@1.2.1: 169 | resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} 170 | dev: false 171 | 172 | /@jridgewell/gen-mapping@0.3.3: 173 | resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} 174 | engines: {node: '>=6.0.0'} 175 | dependencies: 176 | '@jridgewell/set-array': 1.1.2 177 | '@jridgewell/sourcemap-codec': 1.4.15 178 | '@jridgewell/trace-mapping': 0.3.18 179 | dev: false 180 | 181 | /@jridgewell/resolve-uri@3.1.0: 182 | resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} 183 | engines: {node: '>=6.0.0'} 184 | dev: false 185 | 186 | /@jridgewell/set-array@1.1.2: 187 | resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} 188 | engines: {node: '>=6.0.0'} 189 | dev: false 190 | 191 | /@jridgewell/sourcemap-codec@1.4.14: 192 | resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} 193 | dev: false 194 | 195 | /@jridgewell/sourcemap-codec@1.4.15: 196 | resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} 197 | dev: false 198 | 199 | /@jridgewell/trace-mapping@0.3.18: 200 | resolution: {integrity: sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==} 201 | dependencies: 202 | '@jridgewell/resolve-uri': 3.1.0 203 | '@jridgewell/sourcemap-codec': 1.4.14 204 | dev: false 205 | 206 | /@liveblocks/client@1.1.1: 207 | resolution: {integrity: sha512-f/MdrZfIKojNnYJsJ6hzxW6aU6Yft//EdHPatmc9bvQbpcEaFmdnoxd9Msg0AkUN4uz/epNd1l/397CNI2cs2w==} 208 | dependencies: 209 | '@liveblocks/core': 1.1.1 210 | dev: false 211 | 212 | /@liveblocks/core@1.1.1: 213 | resolution: {integrity: sha512-FwFiq7ASoKH+Q3r0BaTIvEK09LcMLyhBSa3N/nUK2MtdYsH0oZfKnA7s3ymTV+w/mXagztxdNy74B8pwde4X3Q==} 214 | dev: false 215 | 216 | /@liveblocks/react@1.1.1(react@18.2.0): 217 | resolution: {integrity: sha512-Zp5xyGiRyxsakohFSlV9Y8lfFjeDhPzspoRchEb6zSSoDrgaDibLBT/i5829U8QXW0oG493ZZ69EAXKQPOZD+g==} 218 | peerDependencies: 219 | react: ^16.14.0 || ^17 || ^18 220 | dependencies: 221 | '@liveblocks/client': 1.1.1 222 | '@liveblocks/core': 1.1.1 223 | react: 18.2.0 224 | use-sync-external-store: 1.2.0(react@18.2.0) 225 | dev: false 226 | 227 | /@next/env@13.4.7: 228 | resolution: {integrity: sha512-ZlbiFulnwiFsW9UV1ku1OvX/oyIPLtMk9p/nnvDSwI0s7vSoZdRtxXNsaO+ZXrLv/pMbXVGq4lL8TbY9iuGmVw==} 229 | dev: false 230 | 231 | /@next/eslint-plugin-next@13.4.7: 232 | resolution: {integrity: sha512-ANEPltxzXbyyG7CvqxdY4PmeM5+RyWdAJGufTHnU+LA/i3J6IDV2r8Z4onKwskwKEhwqzz5lMaSYGGXLyHX+mg==} 233 | dependencies: 234 | glob: 7.1.7 235 | dev: false 236 | 237 | /@next/swc-darwin-arm64@13.4.7: 238 | resolution: {integrity: sha512-VZTxPv1b59KGiv/pZHTO5Gbsdeoxcj2rU2cqJu03btMhHpn3vwzEK0gUSVC/XW96aeGO67X+cMahhwHzef24/w==} 239 | engines: {node: '>= 10'} 240 | cpu: [arm64] 241 | os: [darwin] 242 | requiresBuild: true 243 | dev: false 244 | optional: true 245 | 246 | /@next/swc-darwin-x64@13.4.7: 247 | resolution: {integrity: sha512-gO2bw+2Ymmga+QYujjvDz9955xvYGrWofmxTq7m70b9pDPvl7aDFABJOZ2a8SRCuSNB5mXU8eTOmVVwyp/nAew==} 248 | engines: {node: '>= 10'} 249 | cpu: [x64] 250 | os: [darwin] 251 | requiresBuild: true 252 | dev: false 253 | optional: true 254 | 255 | /@next/swc-linux-arm64-gnu@13.4.7: 256 | resolution: {integrity: sha512-6cqp3vf1eHxjIDhEOc7Mh/s8z1cwc/l5B6ZNkOofmZVyu1zsbEM5Hmx64s12Rd9AYgGoiCz4OJ4M/oRnkE16/Q==} 257 | engines: {node: '>= 10'} 258 | cpu: [arm64] 259 | os: [linux] 260 | requiresBuild: true 261 | dev: false 262 | optional: true 263 | 264 | /@next/swc-linux-arm64-musl@13.4.7: 265 | resolution: {integrity: sha512-T1kD2FWOEy5WPidOn1si0rYmWORNch4a/NR52Ghyp4q7KyxOCuiOfZzyhVC5tsLIBDH3+cNdB5DkD9afpNDaOw==} 266 | engines: {node: '>= 10'} 267 | cpu: [arm64] 268 | os: [linux] 269 | requiresBuild: true 270 | dev: false 271 | optional: true 272 | 273 | /@next/swc-linux-x64-gnu@13.4.7: 274 | resolution: {integrity: sha512-zaEC+iEiAHNdhl6fuwl0H0shnTzQoAoJiDYBUze8QTntE/GNPfTYpYboxF5LRYIjBwETUatvE0T64W6SKDipvg==} 275 | engines: {node: '>= 10'} 276 | cpu: [x64] 277 | os: [linux] 278 | requiresBuild: true 279 | dev: false 280 | optional: true 281 | 282 | /@next/swc-linux-x64-musl@13.4.7: 283 | resolution: {integrity: sha512-X6r12F8d8SKAtYJqLZBBMIwEqcTRvUdVm+xIq+l6pJqlgT2tNsLLf2i5Cl88xSsIytBICGsCNNHd+siD2fbWBA==} 284 | engines: {node: '>= 10'} 285 | cpu: [x64] 286 | os: [linux] 287 | requiresBuild: true 288 | dev: false 289 | optional: true 290 | 291 | /@next/swc-win32-arm64-msvc@13.4.7: 292 | resolution: {integrity: sha512-NPnmnV+vEIxnu6SUvjnuaWRglZzw4ox5n/MQTxeUhb5iwVWFedolPFebMNwgrWu4AELwvTdGtWjqof53AiWHcw==} 293 | engines: {node: '>= 10'} 294 | cpu: [arm64] 295 | os: [win32] 296 | requiresBuild: true 297 | dev: false 298 | optional: true 299 | 300 | /@next/swc-win32-ia32-msvc@13.4.7: 301 | resolution: {integrity: sha512-6Hxijm6/a8XqLQpOOf/XuwWRhcuc/g4rBB2oxjgCMuV9Xlr2bLs5+lXyh8w9YbAUMYR3iC9mgOlXbHa79elmXw==} 302 | engines: {node: '>= 10'} 303 | cpu: [ia32] 304 | os: [win32] 305 | requiresBuild: true 306 | dev: false 307 | optional: true 308 | 309 | /@next/swc-win32-x64-msvc@13.4.7: 310 | resolution: {integrity: sha512-sW9Yt36Db1nXJL+mTr2Wo0y+VkPWeYhygvcHj1FF0srVtV+VoDjxleKtny21QHaG05zdeZnw2fCtf2+dEqgwqA==} 311 | engines: {node: '>= 10'} 312 | cpu: [x64] 313 | os: [win32] 314 | requiresBuild: true 315 | dev: false 316 | optional: true 317 | 318 | /@nodelib/fs.scandir@2.1.5: 319 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 320 | engines: {node: '>= 8'} 321 | dependencies: 322 | '@nodelib/fs.stat': 2.0.5 323 | run-parallel: 1.2.0 324 | dev: false 325 | 326 | /@nodelib/fs.stat@2.0.5: 327 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 328 | engines: {node: '>= 8'} 329 | dev: false 330 | 331 | /@nodelib/fs.walk@1.2.8: 332 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 333 | engines: {node: '>= 8'} 334 | dependencies: 335 | '@nodelib/fs.scandir': 2.1.5 336 | fastq: 1.15.0 337 | dev: false 338 | 339 | /@pkgr/utils@2.4.1: 340 | resolution: {integrity: sha512-JOqwkgFEyi+OROIyq7l4Jy28h/WwhDnG/cPkXG2Z1iFbubB6jsHW1NDvmyOzTBxHr3yg68YGirmh1JUgMqa+9w==} 341 | engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} 342 | dependencies: 343 | cross-spawn: 7.0.3 344 | fast-glob: 3.3.0 345 | is-glob: 4.0.3 346 | open: 9.1.0 347 | picocolors: 1.0.0 348 | tslib: 2.6.0 349 | dev: false 350 | 351 | /@radix-ui/react-compose-refs@1.0.1(@types/react@18.2.14)(react@18.2.0): 352 | resolution: {integrity: sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==} 353 | peerDependencies: 354 | '@types/react': '*' 355 | react: ^16.8 || ^17.0 || ^18.0 356 | peerDependenciesMeta: 357 | '@types/react': 358 | optional: true 359 | dependencies: 360 | '@babel/runtime': 7.22.5 361 | '@types/react': 18.2.14 362 | react: 18.2.0 363 | dev: false 364 | 365 | /@radix-ui/react-icons@1.3.0(react@18.2.0): 366 | resolution: {integrity: sha512-jQxj/0LKgp+j9BiTXz3O3sgs26RNet2iLWmsPyRz2SIcR4q/4SbazXfnYwbAr+vLYKSfc7qxzyGQA1HLlYiuNw==} 367 | peerDependencies: 368 | react: ^16.x || ^17.x || ^18.x 369 | dependencies: 370 | react: 18.2.0 371 | dev: false 372 | 373 | /@radix-ui/react-label@2.0.2(@types/react-dom@18.2.6)(@types/react@18.2.14)(react-dom@18.2.0)(react@18.2.0): 374 | resolution: {integrity: sha512-N5ehvlM7qoTLx7nWPodsPYPgMzA5WM8zZChQg8nyFJKnDO5WHdba1vv5/H6IO5LtJMfD2Q3wh1qHFGNtK0w3bQ==} 375 | peerDependencies: 376 | '@types/react': '*' 377 | '@types/react-dom': '*' 378 | react: ^16.8 || ^17.0 || ^18.0 379 | react-dom: ^16.8 || ^17.0 || ^18.0 380 | peerDependenciesMeta: 381 | '@types/react': 382 | optional: true 383 | '@types/react-dom': 384 | optional: true 385 | dependencies: 386 | '@babel/runtime': 7.22.5 387 | '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.6)(@types/react@18.2.14)(react-dom@18.2.0)(react@18.2.0) 388 | '@types/react': 18.2.14 389 | '@types/react-dom': 18.2.6 390 | react: 18.2.0 391 | react-dom: 18.2.0(react@18.2.0) 392 | dev: false 393 | 394 | /@radix-ui/react-primitive@1.0.3(@types/react-dom@18.2.6)(@types/react@18.2.14)(react-dom@18.2.0)(react@18.2.0): 395 | resolution: {integrity: sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==} 396 | peerDependencies: 397 | '@types/react': '*' 398 | '@types/react-dom': '*' 399 | react: ^16.8 || ^17.0 || ^18.0 400 | react-dom: ^16.8 || ^17.0 || ^18.0 401 | peerDependenciesMeta: 402 | '@types/react': 403 | optional: true 404 | '@types/react-dom': 405 | optional: true 406 | dependencies: 407 | '@babel/runtime': 7.22.5 408 | '@radix-ui/react-slot': 1.0.2(@types/react@18.2.14)(react@18.2.0) 409 | '@types/react': 18.2.14 410 | '@types/react-dom': 18.2.6 411 | react: 18.2.0 412 | react-dom: 18.2.0(react@18.2.0) 413 | dev: false 414 | 415 | /@radix-ui/react-separator@1.0.3(@types/react-dom@18.2.6)(@types/react@18.2.14)(react-dom@18.2.0)(react@18.2.0): 416 | resolution: {integrity: sha512-itYmTy/kokS21aiV5+Z56MZB54KrhPgn6eHDKkFeOLR34HMN2s8PaN47qZZAGnvupcjxHaFZnW4pQEh0BvvVuw==} 417 | peerDependencies: 418 | '@types/react': '*' 419 | '@types/react-dom': '*' 420 | react: ^16.8 || ^17.0 || ^18.0 421 | react-dom: ^16.8 || ^17.0 || ^18.0 422 | peerDependenciesMeta: 423 | '@types/react': 424 | optional: true 425 | '@types/react-dom': 426 | optional: true 427 | dependencies: 428 | '@babel/runtime': 7.22.5 429 | '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.6)(@types/react@18.2.14)(react-dom@18.2.0)(react@18.2.0) 430 | '@types/react': 18.2.14 431 | '@types/react-dom': 18.2.6 432 | react: 18.2.0 433 | react-dom: 18.2.0(react@18.2.0) 434 | dev: false 435 | 436 | /@radix-ui/react-slot@1.0.2(@types/react@18.2.14)(react@18.2.0): 437 | resolution: {integrity: sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==} 438 | peerDependencies: 439 | '@types/react': '*' 440 | react: ^16.8 || ^17.0 || ^18.0 441 | peerDependenciesMeta: 442 | '@types/react': 443 | optional: true 444 | dependencies: 445 | '@babel/runtime': 7.22.5 446 | '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.14)(react@18.2.0) 447 | '@types/react': 18.2.14 448 | react: 18.2.0 449 | dev: false 450 | 451 | /@rushstack/eslint-patch@1.3.2: 452 | resolution: {integrity: sha512-V+MvGwaHH03hYhY+k6Ef/xKd6RYlc4q8WBx+2ANmipHJcKuktNcI/NgEsJgdSUF6Lw32njT6OnrRsKYCdgHjYw==} 453 | dev: false 454 | 455 | /@swc/helpers@0.5.1: 456 | resolution: {integrity: sha512-sJ902EfIzn1Fa+qYmjdQqh8tPsoxyBz+8yBKC2HKUxyezKJFwPGOn7pv4WY6QuQW//ySQi5lJjA/ZT9sNWWNTg==} 457 | dependencies: 458 | tslib: 2.6.0 459 | dev: false 460 | 461 | /@types/json5@0.0.29: 462 | resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} 463 | dev: false 464 | 465 | /@types/node@20.3.3: 466 | resolution: {integrity: sha512-wheIYdr4NYML61AjC8MKj/2jrR/kDQri/CIpVoZwldwhnIrD/j9jIU5bJ8yBKuB2VhpFV7Ab6G2XkBjv9r9Zzw==} 467 | dev: false 468 | 469 | /@types/prop-types@15.7.5: 470 | resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} 471 | dev: false 472 | 473 | /@types/react-dom@18.2.6: 474 | resolution: {integrity: sha512-2et4PDvg6PVCyS7fuTc4gPoksV58bW0RwSxWKcPRcHZf0PRUGq03TKcD/rUHe3azfV6/5/biUBJw+HhCQjaP0A==} 475 | dependencies: 476 | '@types/react': 18.2.14 477 | dev: false 478 | 479 | /@types/react@18.2.14: 480 | resolution: {integrity: sha512-A0zjq+QN/O0Kpe30hA1GidzyFjatVvrpIvWLxD+xv67Vt91TWWgco9IvrJBkeyHm1trGaFS/FSGqPlhyeZRm0g==} 481 | dependencies: 482 | '@types/prop-types': 15.7.5 483 | '@types/scheduler': 0.16.3 484 | csstype: 3.1.2 485 | dev: false 486 | 487 | /@types/scheduler@0.16.3: 488 | resolution: {integrity: sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==} 489 | dev: false 490 | 491 | /@typescript-eslint/parser@5.60.1(eslint@8.44.0)(typescript@5.1.6): 492 | resolution: {integrity: sha512-pHWlc3alg2oSMGwsU/Is8hbm3XFbcrb6P5wIxcQW9NsYBfnrubl/GhVVD/Jm/t8HXhA2WncoIRfBtnCgRGV96Q==} 493 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 494 | peerDependencies: 495 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 496 | typescript: '*' 497 | peerDependenciesMeta: 498 | typescript: 499 | optional: true 500 | dependencies: 501 | '@typescript-eslint/scope-manager': 5.60.1 502 | '@typescript-eslint/types': 5.60.1 503 | '@typescript-eslint/typescript-estree': 5.60.1(typescript@5.1.6) 504 | debug: 4.3.4 505 | eslint: 8.44.0 506 | typescript: 5.1.6 507 | transitivePeerDependencies: 508 | - supports-color 509 | dev: false 510 | 511 | /@typescript-eslint/scope-manager@5.60.1: 512 | resolution: {integrity: sha512-Dn/LnN7fEoRD+KspEOV0xDMynEmR3iSHdgNsarlXNLGGtcUok8L4N71dxUgt3YvlO8si7E+BJ5Fe3wb5yUw7DQ==} 513 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 514 | dependencies: 515 | '@typescript-eslint/types': 5.60.1 516 | '@typescript-eslint/visitor-keys': 5.60.1 517 | dev: false 518 | 519 | /@typescript-eslint/types@5.60.1: 520 | resolution: {integrity: sha512-zDcDx5fccU8BA0IDZc71bAtYIcG9PowaOwaD8rjYbqwK7dpe/UMQl3inJ4UtUK42nOCT41jTSCwg76E62JpMcg==} 521 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 522 | dev: false 523 | 524 | /@typescript-eslint/typescript-estree@5.60.1(typescript@5.1.6): 525 | resolution: {integrity: sha512-hkX70J9+2M2ZT6fhti5Q2FoU9zb+GeZK2SLP1WZlvUDqdMbEKhexZODD1WodNRyO8eS+4nScvT0dts8IdaBzfw==} 526 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 527 | peerDependencies: 528 | typescript: '*' 529 | peerDependenciesMeta: 530 | typescript: 531 | optional: true 532 | dependencies: 533 | '@typescript-eslint/types': 5.60.1 534 | '@typescript-eslint/visitor-keys': 5.60.1 535 | debug: 4.3.4 536 | globby: 11.1.0 537 | is-glob: 4.0.3 538 | semver: 7.5.3 539 | tsutils: 3.21.0(typescript@5.1.6) 540 | typescript: 5.1.6 541 | transitivePeerDependencies: 542 | - supports-color 543 | dev: false 544 | 545 | /@typescript-eslint/visitor-keys@5.60.1: 546 | resolution: {integrity: sha512-xEYIxKcultP6E/RMKqube11pGjXH1DCo60mQoWhVYyKfLkwbIVVjYxmOenNMxILx0TjCujPTjjnTIVzm09TXIw==} 547 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 548 | dependencies: 549 | '@typescript-eslint/types': 5.60.1 550 | eslint-visitor-keys: 3.4.1 551 | dev: false 552 | 553 | /acorn-jsx@5.3.2(acorn@8.9.0): 554 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 555 | peerDependencies: 556 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 557 | dependencies: 558 | acorn: 8.9.0 559 | dev: false 560 | 561 | /acorn@8.9.0: 562 | resolution: {integrity: sha512-jaVNAFBHNLXspO543WnNNPZFRtavh3skAkITqD0/2aeMkKZTN+254PyhwxFYrk3vQ1xfY+2wbesJMs/JC8/PwQ==} 563 | engines: {node: '>=0.4.0'} 564 | hasBin: true 565 | dev: false 566 | 567 | /ajv@6.12.6: 568 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 569 | dependencies: 570 | fast-deep-equal: 3.1.3 571 | fast-json-stable-stringify: 2.1.0 572 | json-schema-traverse: 0.4.1 573 | uri-js: 4.4.1 574 | dev: false 575 | 576 | /ansi-regex@5.0.1: 577 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 578 | engines: {node: '>=8'} 579 | dev: false 580 | 581 | /ansi-styles@4.3.0: 582 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 583 | engines: {node: '>=8'} 584 | dependencies: 585 | color-convert: 2.0.1 586 | dev: false 587 | 588 | /any-promise@1.3.0: 589 | resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} 590 | dev: false 591 | 592 | /anymatch@3.1.3: 593 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} 594 | engines: {node: '>= 8'} 595 | dependencies: 596 | normalize-path: 3.0.0 597 | picomatch: 2.3.1 598 | dev: false 599 | 600 | /arg@5.0.2: 601 | resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} 602 | dev: false 603 | 604 | /argparse@2.0.1: 605 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 606 | dev: false 607 | 608 | /aria-query@5.3.0: 609 | resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} 610 | dependencies: 611 | dequal: 2.0.3 612 | dev: false 613 | 614 | /array-buffer-byte-length@1.0.0: 615 | resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} 616 | dependencies: 617 | call-bind: 1.0.2 618 | is-array-buffer: 3.0.2 619 | dev: false 620 | 621 | /array-includes@3.1.6: 622 | resolution: {integrity: sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==} 623 | engines: {node: '>= 0.4'} 624 | dependencies: 625 | call-bind: 1.0.2 626 | define-properties: 1.2.0 627 | es-abstract: 1.21.2 628 | get-intrinsic: 1.2.1 629 | is-string: 1.0.7 630 | dev: false 631 | 632 | /array-union@2.1.0: 633 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} 634 | engines: {node: '>=8'} 635 | dev: false 636 | 637 | /array.prototype.flat@1.3.1: 638 | resolution: {integrity: sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==} 639 | engines: {node: '>= 0.4'} 640 | dependencies: 641 | call-bind: 1.0.2 642 | define-properties: 1.2.0 643 | es-abstract: 1.21.2 644 | es-shim-unscopables: 1.0.0 645 | dev: false 646 | 647 | /array.prototype.flatmap@1.3.1: 648 | resolution: {integrity: sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==} 649 | engines: {node: '>= 0.4'} 650 | dependencies: 651 | call-bind: 1.0.2 652 | define-properties: 1.2.0 653 | es-abstract: 1.21.2 654 | es-shim-unscopables: 1.0.0 655 | dev: false 656 | 657 | /array.prototype.tosorted@1.1.1: 658 | resolution: {integrity: sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==} 659 | dependencies: 660 | call-bind: 1.0.2 661 | define-properties: 1.2.0 662 | es-abstract: 1.21.2 663 | es-shim-unscopables: 1.0.0 664 | get-intrinsic: 1.2.1 665 | dev: false 666 | 667 | /ast-types-flow@0.0.7: 668 | resolution: {integrity: sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==} 669 | dev: false 670 | 671 | /autoprefixer@10.4.14(postcss@8.4.24): 672 | resolution: {integrity: sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==} 673 | engines: {node: ^10 || ^12 || >=14} 674 | hasBin: true 675 | peerDependencies: 676 | postcss: ^8.1.0 677 | dependencies: 678 | browserslist: 4.21.9 679 | caniuse-lite: 1.0.30001509 680 | fraction.js: 4.2.0 681 | normalize-range: 0.1.2 682 | picocolors: 1.0.0 683 | postcss: 8.4.24 684 | postcss-value-parser: 4.2.0 685 | dev: false 686 | 687 | /available-typed-arrays@1.0.5: 688 | resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} 689 | engines: {node: '>= 0.4'} 690 | dev: false 691 | 692 | /axe-core@4.7.2: 693 | resolution: {integrity: sha512-zIURGIS1E1Q4pcrMjp+nnEh+16G56eG/MUllJH8yEvw7asDo7Ac9uhC9KIH5jzpITueEZolfYglnCGIuSBz39g==} 694 | engines: {node: '>=4'} 695 | dev: false 696 | 697 | /axobject-query@3.2.1: 698 | resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==} 699 | dependencies: 700 | dequal: 2.0.3 701 | dev: false 702 | 703 | /balanced-match@1.0.2: 704 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 705 | dev: false 706 | 707 | /big-integer@1.6.51: 708 | resolution: {integrity: sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==} 709 | engines: {node: '>=0.6'} 710 | dev: false 711 | 712 | /binary-extensions@2.2.0: 713 | resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} 714 | engines: {node: '>=8'} 715 | dev: false 716 | 717 | /bplist-parser@0.2.0: 718 | resolution: {integrity: sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==} 719 | engines: {node: '>= 5.10.0'} 720 | dependencies: 721 | big-integer: 1.6.51 722 | dev: false 723 | 724 | /brace-expansion@1.1.11: 725 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 726 | dependencies: 727 | balanced-match: 1.0.2 728 | concat-map: 0.0.1 729 | dev: false 730 | 731 | /braces@3.0.2: 732 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} 733 | engines: {node: '>=8'} 734 | dependencies: 735 | fill-range: 7.0.1 736 | dev: false 737 | 738 | /browserslist@4.21.9: 739 | resolution: {integrity: sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==} 740 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 741 | hasBin: true 742 | dependencies: 743 | caniuse-lite: 1.0.30001509 744 | electron-to-chromium: 1.4.447 745 | node-releases: 2.0.12 746 | update-browserslist-db: 1.0.11(browserslist@4.21.9) 747 | dev: false 748 | 749 | /bundle-name@3.0.0: 750 | resolution: {integrity: sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==} 751 | engines: {node: '>=12'} 752 | dependencies: 753 | run-applescript: 5.0.0 754 | dev: false 755 | 756 | /busboy@1.6.0: 757 | resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} 758 | engines: {node: '>=10.16.0'} 759 | dependencies: 760 | streamsearch: 1.1.0 761 | dev: false 762 | 763 | /call-bind@1.0.2: 764 | resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} 765 | dependencies: 766 | function-bind: 1.1.1 767 | get-intrinsic: 1.2.1 768 | dev: false 769 | 770 | /callsites@3.1.0: 771 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 772 | engines: {node: '>=6'} 773 | dev: false 774 | 775 | /camelcase-css@2.0.1: 776 | resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} 777 | engines: {node: '>= 6'} 778 | dev: false 779 | 780 | /caniuse-lite@1.0.30001509: 781 | resolution: {integrity: sha512-2uDDk+TRiTX5hMcUYT/7CSyzMZxjfGu0vAUjS2g0LSD8UoXOv0LtpH4LxGMemsiPq6LCVIUjNwVM0erkOkGCDA==} 782 | dev: false 783 | 784 | /chalk@4.1.2: 785 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 786 | engines: {node: '>=10'} 787 | dependencies: 788 | ansi-styles: 4.3.0 789 | supports-color: 7.2.0 790 | dev: false 791 | 792 | /chokidar@3.5.3: 793 | resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} 794 | engines: {node: '>= 8.10.0'} 795 | dependencies: 796 | anymatch: 3.1.3 797 | braces: 3.0.2 798 | glob-parent: 5.1.2 799 | is-binary-path: 2.1.0 800 | is-glob: 4.0.3 801 | normalize-path: 3.0.0 802 | readdirp: 3.6.0 803 | optionalDependencies: 804 | fsevents: 2.3.2 805 | dev: false 806 | 807 | /class-variance-authority@0.6.1: 808 | resolution: {integrity: sha512-eurOEGc7YVx3majOrOb099PNKgO3KnKSApOprXI4BTq6bcfbqbQXPN2u+rPPmIJ2di23bMwhk0SxCCthBmszEQ==} 809 | dependencies: 810 | clsx: 1.2.1 811 | dev: false 812 | 813 | /client-only@0.0.1: 814 | resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} 815 | dev: false 816 | 817 | /clsx@1.2.1: 818 | resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==} 819 | engines: {node: '>=6'} 820 | dev: false 821 | 822 | /color-convert@2.0.1: 823 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 824 | engines: {node: '>=7.0.0'} 825 | dependencies: 826 | color-name: 1.1.4 827 | dev: false 828 | 829 | /color-name@1.1.4: 830 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 831 | dev: false 832 | 833 | /commander@4.1.1: 834 | resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} 835 | engines: {node: '>= 6'} 836 | dev: false 837 | 838 | /concat-map@0.0.1: 839 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 840 | dev: false 841 | 842 | /cross-spawn@7.0.3: 843 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 844 | engines: {node: '>= 8'} 845 | dependencies: 846 | path-key: 3.1.1 847 | shebang-command: 2.0.0 848 | which: 2.0.2 849 | dev: false 850 | 851 | /cssesc@3.0.0: 852 | resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} 853 | engines: {node: '>=4'} 854 | hasBin: true 855 | dev: false 856 | 857 | /csstype@3.1.2: 858 | resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} 859 | dev: false 860 | 861 | /damerau-levenshtein@1.0.8: 862 | resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} 863 | dev: false 864 | 865 | /debug@3.2.7: 866 | resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} 867 | peerDependencies: 868 | supports-color: '*' 869 | peerDependenciesMeta: 870 | supports-color: 871 | optional: true 872 | dependencies: 873 | ms: 2.1.3 874 | dev: false 875 | 876 | /debug@4.3.4: 877 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 878 | engines: {node: '>=6.0'} 879 | peerDependencies: 880 | supports-color: '*' 881 | peerDependenciesMeta: 882 | supports-color: 883 | optional: true 884 | dependencies: 885 | ms: 2.1.2 886 | dev: false 887 | 888 | /deep-is@0.1.4: 889 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 890 | dev: false 891 | 892 | /default-browser-id@3.0.0: 893 | resolution: {integrity: sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==} 894 | engines: {node: '>=12'} 895 | dependencies: 896 | bplist-parser: 0.2.0 897 | untildify: 4.0.0 898 | dev: false 899 | 900 | /default-browser@4.0.0: 901 | resolution: {integrity: sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==} 902 | engines: {node: '>=14.16'} 903 | dependencies: 904 | bundle-name: 3.0.0 905 | default-browser-id: 3.0.0 906 | execa: 7.1.1 907 | titleize: 3.0.0 908 | dev: false 909 | 910 | /define-lazy-prop@3.0.0: 911 | resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} 912 | engines: {node: '>=12'} 913 | dev: false 914 | 915 | /define-properties@1.2.0: 916 | resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==} 917 | engines: {node: '>= 0.4'} 918 | dependencies: 919 | has-property-descriptors: 1.0.0 920 | object-keys: 1.1.1 921 | dev: false 922 | 923 | /dequal@2.0.3: 924 | resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} 925 | engines: {node: '>=6'} 926 | dev: false 927 | 928 | /didyoumean@1.2.2: 929 | resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} 930 | dev: false 931 | 932 | /dir-glob@3.0.1: 933 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} 934 | engines: {node: '>=8'} 935 | dependencies: 936 | path-type: 4.0.0 937 | dev: false 938 | 939 | /dlv@1.1.3: 940 | resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} 941 | dev: false 942 | 943 | /doctrine@2.1.0: 944 | resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} 945 | engines: {node: '>=0.10.0'} 946 | dependencies: 947 | esutils: 2.0.3 948 | dev: false 949 | 950 | /doctrine@3.0.0: 951 | resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} 952 | engines: {node: '>=6.0.0'} 953 | dependencies: 954 | esutils: 2.0.3 955 | dev: false 956 | 957 | /electron-to-chromium@1.4.447: 958 | resolution: {integrity: sha512-sxX0LXh+uL41hSJsujAN86PjhrV/6c79XmpY0TvjZStV6VxIgarf8SRkUoUTuYmFcZQTemsoqo8qXOGw5npWfw==} 959 | dev: false 960 | 961 | /emoji-regex@9.2.2: 962 | resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} 963 | dev: false 964 | 965 | /enhanced-resolve@5.15.0: 966 | resolution: {integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==} 967 | engines: {node: '>=10.13.0'} 968 | dependencies: 969 | graceful-fs: 4.2.11 970 | tapable: 2.2.1 971 | dev: false 972 | 973 | /es-abstract@1.21.2: 974 | resolution: {integrity: sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==} 975 | engines: {node: '>= 0.4'} 976 | dependencies: 977 | array-buffer-byte-length: 1.0.0 978 | available-typed-arrays: 1.0.5 979 | call-bind: 1.0.2 980 | es-set-tostringtag: 2.0.1 981 | es-to-primitive: 1.2.1 982 | function.prototype.name: 1.1.5 983 | get-intrinsic: 1.2.1 984 | get-symbol-description: 1.0.0 985 | globalthis: 1.0.3 986 | gopd: 1.0.1 987 | has: 1.0.3 988 | has-property-descriptors: 1.0.0 989 | has-proto: 1.0.1 990 | has-symbols: 1.0.3 991 | internal-slot: 1.0.5 992 | is-array-buffer: 3.0.2 993 | is-callable: 1.2.7 994 | is-negative-zero: 2.0.2 995 | is-regex: 1.1.4 996 | is-shared-array-buffer: 1.0.2 997 | is-string: 1.0.7 998 | is-typed-array: 1.1.10 999 | is-weakref: 1.0.2 1000 | object-inspect: 1.12.3 1001 | object-keys: 1.1.1 1002 | object.assign: 4.1.4 1003 | regexp.prototype.flags: 1.5.0 1004 | safe-regex-test: 1.0.0 1005 | string.prototype.trim: 1.2.7 1006 | string.prototype.trimend: 1.0.6 1007 | string.prototype.trimstart: 1.0.6 1008 | typed-array-length: 1.0.4 1009 | unbox-primitive: 1.0.2 1010 | which-typed-array: 1.1.9 1011 | dev: false 1012 | 1013 | /es-set-tostringtag@2.0.1: 1014 | resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} 1015 | engines: {node: '>= 0.4'} 1016 | dependencies: 1017 | get-intrinsic: 1.2.1 1018 | has: 1.0.3 1019 | has-tostringtag: 1.0.0 1020 | dev: false 1021 | 1022 | /es-shim-unscopables@1.0.0: 1023 | resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} 1024 | dependencies: 1025 | has: 1.0.3 1026 | dev: false 1027 | 1028 | /es-to-primitive@1.2.1: 1029 | resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} 1030 | engines: {node: '>= 0.4'} 1031 | dependencies: 1032 | is-callable: 1.2.7 1033 | is-date-object: 1.0.5 1034 | is-symbol: 1.0.4 1035 | dev: false 1036 | 1037 | /escalade@3.1.1: 1038 | resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} 1039 | engines: {node: '>=6'} 1040 | dev: false 1041 | 1042 | /escape-string-regexp@4.0.0: 1043 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 1044 | engines: {node: '>=10'} 1045 | dev: false 1046 | 1047 | /eslint-config-next@13.4.7(eslint@8.44.0)(typescript@5.1.6): 1048 | resolution: {integrity: sha512-+IRAyD0+J1MZaTi9RQMPUfr6Q+GCZ1wOkK6XM52Vokh7VI4R6YFGOFzdkEFHl4ZyIX4FKa5vcwUP2WscSFNjNQ==} 1049 | peerDependencies: 1050 | eslint: ^7.23.0 || ^8.0.0 1051 | typescript: '>=3.3.1' 1052 | peerDependenciesMeta: 1053 | typescript: 1054 | optional: true 1055 | dependencies: 1056 | '@next/eslint-plugin-next': 13.4.7 1057 | '@rushstack/eslint-patch': 1.3.2 1058 | '@typescript-eslint/parser': 5.60.1(eslint@8.44.0)(typescript@5.1.6) 1059 | eslint: 8.44.0 1060 | eslint-import-resolver-node: 0.3.7 1061 | eslint-import-resolver-typescript: 3.5.5(@typescript-eslint/parser@5.60.1)(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.27.5)(eslint@8.44.0) 1062 | eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.60.1)(eslint-import-resolver-typescript@3.5.5)(eslint@8.44.0) 1063 | eslint-plugin-jsx-a11y: 6.7.1(eslint@8.44.0) 1064 | eslint-plugin-react: 7.32.2(eslint@8.44.0) 1065 | eslint-plugin-react-hooks: 4.6.0(eslint@8.44.0) 1066 | typescript: 5.1.6 1067 | transitivePeerDependencies: 1068 | - eslint-import-resolver-webpack 1069 | - supports-color 1070 | dev: false 1071 | 1072 | /eslint-import-resolver-node@0.3.7: 1073 | resolution: {integrity: sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==} 1074 | dependencies: 1075 | debug: 3.2.7 1076 | is-core-module: 2.12.1 1077 | resolve: 1.22.2 1078 | transitivePeerDependencies: 1079 | - supports-color 1080 | dev: false 1081 | 1082 | /eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@5.60.1)(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.27.5)(eslint@8.44.0): 1083 | resolution: {integrity: sha512-TdJqPHs2lW5J9Zpe17DZNQuDnox4xo2o+0tE7Pggain9Rbc19ik8kFtXdxZ250FVx2kF4vlt2RSf4qlUpG7bhw==} 1084 | engines: {node: ^14.18.0 || >=16.0.0} 1085 | peerDependencies: 1086 | eslint: '*' 1087 | eslint-plugin-import: '*' 1088 | dependencies: 1089 | debug: 4.3.4 1090 | enhanced-resolve: 5.15.0 1091 | eslint: 8.44.0 1092 | eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.60.1)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.44.0) 1093 | eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.60.1)(eslint-import-resolver-typescript@3.5.5)(eslint@8.44.0) 1094 | get-tsconfig: 4.6.2 1095 | globby: 13.2.0 1096 | is-core-module: 2.12.1 1097 | is-glob: 4.0.3 1098 | synckit: 0.8.5 1099 | transitivePeerDependencies: 1100 | - '@typescript-eslint/parser' 1101 | - eslint-import-resolver-node 1102 | - eslint-import-resolver-webpack 1103 | - supports-color 1104 | dev: false 1105 | 1106 | /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.60.1)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.44.0): 1107 | resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} 1108 | engines: {node: '>=4'} 1109 | peerDependencies: 1110 | '@typescript-eslint/parser': '*' 1111 | eslint: '*' 1112 | eslint-import-resolver-node: '*' 1113 | eslint-import-resolver-typescript: '*' 1114 | eslint-import-resolver-webpack: '*' 1115 | peerDependenciesMeta: 1116 | '@typescript-eslint/parser': 1117 | optional: true 1118 | eslint: 1119 | optional: true 1120 | eslint-import-resolver-node: 1121 | optional: true 1122 | eslint-import-resolver-typescript: 1123 | optional: true 1124 | eslint-import-resolver-webpack: 1125 | optional: true 1126 | dependencies: 1127 | '@typescript-eslint/parser': 5.60.1(eslint@8.44.0)(typescript@5.1.6) 1128 | debug: 3.2.7 1129 | eslint: 8.44.0 1130 | eslint-import-resolver-node: 0.3.7 1131 | eslint-import-resolver-typescript: 3.5.5(@typescript-eslint/parser@5.60.1)(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.27.5)(eslint@8.44.0) 1132 | transitivePeerDependencies: 1133 | - supports-color 1134 | dev: false 1135 | 1136 | /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.60.1)(eslint-import-resolver-typescript@3.5.5)(eslint@8.44.0): 1137 | resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} 1138 | engines: {node: '>=4'} 1139 | peerDependencies: 1140 | '@typescript-eslint/parser': '*' 1141 | eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 1142 | peerDependenciesMeta: 1143 | '@typescript-eslint/parser': 1144 | optional: true 1145 | dependencies: 1146 | '@typescript-eslint/parser': 5.60.1(eslint@8.44.0)(typescript@5.1.6) 1147 | array-includes: 3.1.6 1148 | array.prototype.flat: 1.3.1 1149 | array.prototype.flatmap: 1.3.1 1150 | debug: 3.2.7 1151 | doctrine: 2.1.0 1152 | eslint: 8.44.0 1153 | eslint-import-resolver-node: 0.3.7 1154 | eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.60.1)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.44.0) 1155 | has: 1.0.3 1156 | is-core-module: 2.12.1 1157 | is-glob: 4.0.3 1158 | minimatch: 3.1.2 1159 | object.values: 1.1.6 1160 | resolve: 1.22.2 1161 | semver: 6.3.0 1162 | tsconfig-paths: 3.14.2 1163 | transitivePeerDependencies: 1164 | - eslint-import-resolver-typescript 1165 | - eslint-import-resolver-webpack 1166 | - supports-color 1167 | dev: false 1168 | 1169 | /eslint-plugin-jsx-a11y@6.7.1(eslint@8.44.0): 1170 | resolution: {integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==} 1171 | engines: {node: '>=4.0'} 1172 | peerDependencies: 1173 | eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 1174 | dependencies: 1175 | '@babel/runtime': 7.22.5 1176 | aria-query: 5.3.0 1177 | array-includes: 3.1.6 1178 | array.prototype.flatmap: 1.3.1 1179 | ast-types-flow: 0.0.7 1180 | axe-core: 4.7.2 1181 | axobject-query: 3.2.1 1182 | damerau-levenshtein: 1.0.8 1183 | emoji-regex: 9.2.2 1184 | eslint: 8.44.0 1185 | has: 1.0.3 1186 | jsx-ast-utils: 3.3.4 1187 | language-tags: 1.0.5 1188 | minimatch: 3.1.2 1189 | object.entries: 1.1.6 1190 | object.fromentries: 2.0.6 1191 | semver: 6.3.0 1192 | dev: false 1193 | 1194 | /eslint-plugin-react-hooks@4.6.0(eslint@8.44.0): 1195 | resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} 1196 | engines: {node: '>=10'} 1197 | peerDependencies: 1198 | eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 1199 | dependencies: 1200 | eslint: 8.44.0 1201 | dev: false 1202 | 1203 | /eslint-plugin-react@7.32.2(eslint@8.44.0): 1204 | resolution: {integrity: sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==} 1205 | engines: {node: '>=4'} 1206 | peerDependencies: 1207 | eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 1208 | dependencies: 1209 | array-includes: 3.1.6 1210 | array.prototype.flatmap: 1.3.1 1211 | array.prototype.tosorted: 1.1.1 1212 | doctrine: 2.1.0 1213 | eslint: 8.44.0 1214 | estraverse: 5.3.0 1215 | jsx-ast-utils: 3.3.4 1216 | minimatch: 3.1.2 1217 | object.entries: 1.1.6 1218 | object.fromentries: 2.0.6 1219 | object.hasown: 1.1.2 1220 | object.values: 1.1.6 1221 | prop-types: 15.8.1 1222 | resolve: 2.0.0-next.4 1223 | semver: 6.3.0 1224 | string.prototype.matchall: 4.0.8 1225 | dev: false 1226 | 1227 | /eslint-scope@7.2.0: 1228 | resolution: {integrity: sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==} 1229 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1230 | dependencies: 1231 | esrecurse: 4.3.0 1232 | estraverse: 5.3.0 1233 | dev: false 1234 | 1235 | /eslint-visitor-keys@3.4.1: 1236 | resolution: {integrity: sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==} 1237 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1238 | dev: false 1239 | 1240 | /eslint@8.44.0: 1241 | resolution: {integrity: sha512-0wpHoUbDUHgNCyvFB5aXLiQVfK9B0at6gUvzy83k4kAsQ/u769TQDX6iKC+aO4upIHO9WSaA3QoXYQDHbNwf1A==} 1242 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1243 | hasBin: true 1244 | dependencies: 1245 | '@eslint-community/eslint-utils': 4.4.0(eslint@8.44.0) 1246 | '@eslint-community/regexpp': 4.5.1 1247 | '@eslint/eslintrc': 2.1.0 1248 | '@eslint/js': 8.44.0 1249 | '@humanwhocodes/config-array': 0.11.10 1250 | '@humanwhocodes/module-importer': 1.0.1 1251 | '@nodelib/fs.walk': 1.2.8 1252 | ajv: 6.12.6 1253 | chalk: 4.1.2 1254 | cross-spawn: 7.0.3 1255 | debug: 4.3.4 1256 | doctrine: 3.0.0 1257 | escape-string-regexp: 4.0.0 1258 | eslint-scope: 7.2.0 1259 | eslint-visitor-keys: 3.4.1 1260 | espree: 9.6.0 1261 | esquery: 1.5.0 1262 | esutils: 2.0.3 1263 | fast-deep-equal: 3.1.3 1264 | file-entry-cache: 6.0.1 1265 | find-up: 5.0.0 1266 | glob-parent: 6.0.2 1267 | globals: 13.20.0 1268 | graphemer: 1.4.0 1269 | ignore: 5.2.4 1270 | import-fresh: 3.3.0 1271 | imurmurhash: 0.1.4 1272 | is-glob: 4.0.3 1273 | is-path-inside: 3.0.3 1274 | js-yaml: 4.1.0 1275 | json-stable-stringify-without-jsonify: 1.0.1 1276 | levn: 0.4.1 1277 | lodash.merge: 4.6.2 1278 | minimatch: 3.1.2 1279 | natural-compare: 1.4.0 1280 | optionator: 0.9.3 1281 | strip-ansi: 6.0.1 1282 | strip-json-comments: 3.1.1 1283 | text-table: 0.2.0 1284 | transitivePeerDependencies: 1285 | - supports-color 1286 | dev: false 1287 | 1288 | /espree@9.6.0: 1289 | resolution: {integrity: sha512-1FH/IiruXZ84tpUlm0aCUEwMl2Ho5ilqVh0VvQXw+byAz/4SAciyHLlfmL5WYqsvD38oymdUwBss0LtK8m4s/A==} 1290 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1291 | dependencies: 1292 | acorn: 8.9.0 1293 | acorn-jsx: 5.3.2(acorn@8.9.0) 1294 | eslint-visitor-keys: 3.4.1 1295 | dev: false 1296 | 1297 | /esquery@1.5.0: 1298 | resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} 1299 | engines: {node: '>=0.10'} 1300 | dependencies: 1301 | estraverse: 5.3.0 1302 | dev: false 1303 | 1304 | /esrecurse@4.3.0: 1305 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 1306 | engines: {node: '>=4.0'} 1307 | dependencies: 1308 | estraverse: 5.3.0 1309 | dev: false 1310 | 1311 | /estraverse@5.3.0: 1312 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 1313 | engines: {node: '>=4.0'} 1314 | dev: false 1315 | 1316 | /esutils@2.0.3: 1317 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 1318 | engines: {node: '>=0.10.0'} 1319 | dev: false 1320 | 1321 | /execa@5.1.1: 1322 | resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} 1323 | engines: {node: '>=10'} 1324 | dependencies: 1325 | cross-spawn: 7.0.3 1326 | get-stream: 6.0.1 1327 | human-signals: 2.1.0 1328 | is-stream: 2.0.1 1329 | merge-stream: 2.0.0 1330 | npm-run-path: 4.0.1 1331 | onetime: 5.1.2 1332 | signal-exit: 3.0.7 1333 | strip-final-newline: 2.0.0 1334 | dev: false 1335 | 1336 | /execa@7.1.1: 1337 | resolution: {integrity: sha512-wH0eMf/UXckdUYnO21+HDztteVv05rq2GXksxT4fCGeHkBhw1DROXh40wcjMcRqDOWE7iPJ4n3M7e2+YFP+76Q==} 1338 | engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} 1339 | dependencies: 1340 | cross-spawn: 7.0.3 1341 | get-stream: 6.0.1 1342 | human-signals: 4.3.1 1343 | is-stream: 3.0.0 1344 | merge-stream: 2.0.0 1345 | npm-run-path: 5.1.0 1346 | onetime: 6.0.0 1347 | signal-exit: 3.0.7 1348 | strip-final-newline: 3.0.0 1349 | dev: false 1350 | 1351 | /fast-deep-equal@3.1.3: 1352 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 1353 | dev: false 1354 | 1355 | /fast-glob@3.3.0: 1356 | resolution: {integrity: sha512-ChDuvbOypPuNjO8yIDf36x7BlZX1smcUMTTcyoIjycexOxd6DFsKsg21qVBzEmr3G7fUKIRy2/psii+CIUt7FA==} 1357 | engines: {node: '>=8.6.0'} 1358 | dependencies: 1359 | '@nodelib/fs.stat': 2.0.5 1360 | '@nodelib/fs.walk': 1.2.8 1361 | glob-parent: 5.1.2 1362 | merge2: 1.4.1 1363 | micromatch: 4.0.5 1364 | dev: false 1365 | 1366 | /fast-json-stable-stringify@2.1.0: 1367 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 1368 | dev: false 1369 | 1370 | /fast-levenshtein@2.0.6: 1371 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 1372 | dev: false 1373 | 1374 | /fastq@1.15.0: 1375 | resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} 1376 | dependencies: 1377 | reusify: 1.0.4 1378 | dev: false 1379 | 1380 | /file-entry-cache@6.0.1: 1381 | resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} 1382 | engines: {node: ^10.12.0 || >=12.0.0} 1383 | dependencies: 1384 | flat-cache: 3.0.4 1385 | dev: false 1386 | 1387 | /fill-range@7.0.1: 1388 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} 1389 | engines: {node: '>=8'} 1390 | dependencies: 1391 | to-regex-range: 5.0.1 1392 | dev: false 1393 | 1394 | /find-up@5.0.0: 1395 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 1396 | engines: {node: '>=10'} 1397 | dependencies: 1398 | locate-path: 6.0.0 1399 | path-exists: 4.0.0 1400 | dev: false 1401 | 1402 | /flat-cache@3.0.4: 1403 | resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} 1404 | engines: {node: ^10.12.0 || >=12.0.0} 1405 | dependencies: 1406 | flatted: 3.2.7 1407 | rimraf: 3.0.2 1408 | dev: false 1409 | 1410 | /flatted@3.2.7: 1411 | resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} 1412 | dev: false 1413 | 1414 | /for-each@0.3.3: 1415 | resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} 1416 | dependencies: 1417 | is-callable: 1.2.7 1418 | dev: false 1419 | 1420 | /fraction.js@4.2.0: 1421 | resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==} 1422 | dev: false 1423 | 1424 | /framer-motion@10.12.18(react-dom@18.2.0)(react@18.2.0): 1425 | resolution: {integrity: sha512-cfhiUpPbj+0eEWKjuD+5cz5cMqH71xOtMxGiS/cSGfHn2OlHIEAqFnFyzEMENw5PxWR9bMVhatzzpD6lexmHZQ==} 1426 | peerDependencies: 1427 | react: ^18.0.0 1428 | react-dom: ^18.0.0 1429 | peerDependenciesMeta: 1430 | react: 1431 | optional: true 1432 | react-dom: 1433 | optional: true 1434 | dependencies: 1435 | react: 18.2.0 1436 | react-dom: 18.2.0(react@18.2.0) 1437 | tslib: 2.6.0 1438 | optionalDependencies: 1439 | '@emotion/is-prop-valid': 0.8.8 1440 | dev: false 1441 | 1442 | /fs.realpath@1.0.0: 1443 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} 1444 | dev: false 1445 | 1446 | /fsevents@2.3.2: 1447 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} 1448 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 1449 | os: [darwin] 1450 | requiresBuild: true 1451 | dev: false 1452 | optional: true 1453 | 1454 | /function-bind@1.1.1: 1455 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} 1456 | dev: false 1457 | 1458 | /function.prototype.name@1.1.5: 1459 | resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} 1460 | engines: {node: '>= 0.4'} 1461 | dependencies: 1462 | call-bind: 1.0.2 1463 | define-properties: 1.2.0 1464 | es-abstract: 1.21.2 1465 | functions-have-names: 1.2.3 1466 | dev: false 1467 | 1468 | /functions-have-names@1.2.3: 1469 | resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} 1470 | dev: false 1471 | 1472 | /get-intrinsic@1.2.1: 1473 | resolution: {integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==} 1474 | dependencies: 1475 | function-bind: 1.1.1 1476 | has: 1.0.3 1477 | has-proto: 1.0.1 1478 | has-symbols: 1.0.3 1479 | dev: false 1480 | 1481 | /get-stream@6.0.1: 1482 | resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} 1483 | engines: {node: '>=10'} 1484 | dev: false 1485 | 1486 | /get-symbol-description@1.0.0: 1487 | resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} 1488 | engines: {node: '>= 0.4'} 1489 | dependencies: 1490 | call-bind: 1.0.2 1491 | get-intrinsic: 1.2.1 1492 | dev: false 1493 | 1494 | /get-tsconfig@4.6.2: 1495 | resolution: {integrity: sha512-E5XrT4CbbXcXWy+1jChlZmrmCwd5KGx502kDCXJJ7y898TtWW9FwoG5HfOLVRKmlmDGkWN2HM9Ho+/Y8F0sJDg==} 1496 | dependencies: 1497 | resolve-pkg-maps: 1.0.0 1498 | dev: false 1499 | 1500 | /glob-parent@5.1.2: 1501 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 1502 | engines: {node: '>= 6'} 1503 | dependencies: 1504 | is-glob: 4.0.3 1505 | dev: false 1506 | 1507 | /glob-parent@6.0.2: 1508 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 1509 | engines: {node: '>=10.13.0'} 1510 | dependencies: 1511 | is-glob: 4.0.3 1512 | dev: false 1513 | 1514 | /glob-to-regexp@0.4.1: 1515 | resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} 1516 | dev: false 1517 | 1518 | /glob@7.1.6: 1519 | resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} 1520 | dependencies: 1521 | fs.realpath: 1.0.0 1522 | inflight: 1.0.6 1523 | inherits: 2.0.4 1524 | minimatch: 3.1.2 1525 | once: 1.4.0 1526 | path-is-absolute: 1.0.1 1527 | dev: false 1528 | 1529 | /glob@7.1.7: 1530 | resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} 1531 | dependencies: 1532 | fs.realpath: 1.0.0 1533 | inflight: 1.0.6 1534 | inherits: 2.0.4 1535 | minimatch: 3.1.2 1536 | once: 1.4.0 1537 | path-is-absolute: 1.0.1 1538 | dev: false 1539 | 1540 | /glob@7.2.3: 1541 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} 1542 | dependencies: 1543 | fs.realpath: 1.0.0 1544 | inflight: 1.0.6 1545 | inherits: 2.0.4 1546 | minimatch: 3.1.2 1547 | once: 1.4.0 1548 | path-is-absolute: 1.0.1 1549 | dev: false 1550 | 1551 | /globals@13.20.0: 1552 | resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==} 1553 | engines: {node: '>=8'} 1554 | dependencies: 1555 | type-fest: 0.20.2 1556 | dev: false 1557 | 1558 | /globalthis@1.0.3: 1559 | resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} 1560 | engines: {node: '>= 0.4'} 1561 | dependencies: 1562 | define-properties: 1.2.0 1563 | dev: false 1564 | 1565 | /globby@11.1.0: 1566 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} 1567 | engines: {node: '>=10'} 1568 | dependencies: 1569 | array-union: 2.1.0 1570 | dir-glob: 3.0.1 1571 | fast-glob: 3.3.0 1572 | ignore: 5.2.4 1573 | merge2: 1.4.1 1574 | slash: 3.0.0 1575 | dev: false 1576 | 1577 | /globby@13.2.0: 1578 | resolution: {integrity: sha512-jWsQfayf13NvqKUIL3Ta+CIqMnvlaIDFveWE/dpOZ9+3AMEJozsxDvKA02zync9UuvOM8rOXzsD5GqKP4OnWPQ==} 1579 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1580 | dependencies: 1581 | dir-glob: 3.0.1 1582 | fast-glob: 3.3.0 1583 | ignore: 5.2.4 1584 | merge2: 1.4.1 1585 | slash: 4.0.0 1586 | dev: false 1587 | 1588 | /gopd@1.0.1: 1589 | resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} 1590 | dependencies: 1591 | get-intrinsic: 1.2.1 1592 | dev: false 1593 | 1594 | /graceful-fs@4.2.11: 1595 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} 1596 | dev: false 1597 | 1598 | /graphemer@1.4.0: 1599 | resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} 1600 | dev: false 1601 | 1602 | /has-bigints@1.0.2: 1603 | resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} 1604 | dev: false 1605 | 1606 | /has-flag@4.0.0: 1607 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 1608 | engines: {node: '>=8'} 1609 | dev: false 1610 | 1611 | /has-property-descriptors@1.0.0: 1612 | resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} 1613 | dependencies: 1614 | get-intrinsic: 1.2.1 1615 | dev: false 1616 | 1617 | /has-proto@1.0.1: 1618 | resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} 1619 | engines: {node: '>= 0.4'} 1620 | dev: false 1621 | 1622 | /has-symbols@1.0.3: 1623 | resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} 1624 | engines: {node: '>= 0.4'} 1625 | dev: false 1626 | 1627 | /has-tostringtag@1.0.0: 1628 | resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} 1629 | engines: {node: '>= 0.4'} 1630 | dependencies: 1631 | has-symbols: 1.0.3 1632 | dev: false 1633 | 1634 | /has@1.0.3: 1635 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} 1636 | engines: {node: '>= 0.4.0'} 1637 | dependencies: 1638 | function-bind: 1.1.1 1639 | dev: false 1640 | 1641 | /howler@2.2.3: 1642 | resolution: {integrity: sha512-QM0FFkw0LRX1PR8pNzJVAY25JhIWvbKMBFM4gqk+QdV+kPXOhleWGCB6AiAF/goGjIHK2e/nIElplvjQwhr0jg==} 1643 | dev: false 1644 | 1645 | /human-signals@2.1.0: 1646 | resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} 1647 | engines: {node: '>=10.17.0'} 1648 | dev: false 1649 | 1650 | /human-signals@4.3.1: 1651 | resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} 1652 | engines: {node: '>=14.18.0'} 1653 | dev: false 1654 | 1655 | /ignore@5.2.4: 1656 | resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} 1657 | engines: {node: '>= 4'} 1658 | dev: false 1659 | 1660 | /import-fresh@3.3.0: 1661 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} 1662 | engines: {node: '>=6'} 1663 | dependencies: 1664 | parent-module: 1.0.1 1665 | resolve-from: 4.0.0 1666 | dev: false 1667 | 1668 | /imurmurhash@0.1.4: 1669 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 1670 | engines: {node: '>=0.8.19'} 1671 | dev: false 1672 | 1673 | /inflight@1.0.6: 1674 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} 1675 | dependencies: 1676 | once: 1.4.0 1677 | wrappy: 1.0.2 1678 | dev: false 1679 | 1680 | /inherits@2.0.4: 1681 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 1682 | dev: false 1683 | 1684 | /internal-slot@1.0.5: 1685 | resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==} 1686 | engines: {node: '>= 0.4'} 1687 | dependencies: 1688 | get-intrinsic: 1.2.1 1689 | has: 1.0.3 1690 | side-channel: 1.0.4 1691 | dev: false 1692 | 1693 | /is-array-buffer@3.0.2: 1694 | resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} 1695 | dependencies: 1696 | call-bind: 1.0.2 1697 | get-intrinsic: 1.2.1 1698 | is-typed-array: 1.1.10 1699 | dev: false 1700 | 1701 | /is-bigint@1.0.4: 1702 | resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} 1703 | dependencies: 1704 | has-bigints: 1.0.2 1705 | dev: false 1706 | 1707 | /is-binary-path@2.1.0: 1708 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} 1709 | engines: {node: '>=8'} 1710 | dependencies: 1711 | binary-extensions: 2.2.0 1712 | dev: false 1713 | 1714 | /is-boolean-object@1.1.2: 1715 | resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} 1716 | engines: {node: '>= 0.4'} 1717 | dependencies: 1718 | call-bind: 1.0.2 1719 | has-tostringtag: 1.0.0 1720 | dev: false 1721 | 1722 | /is-callable@1.2.7: 1723 | resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} 1724 | engines: {node: '>= 0.4'} 1725 | dev: false 1726 | 1727 | /is-core-module@2.12.1: 1728 | resolution: {integrity: sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==} 1729 | dependencies: 1730 | has: 1.0.3 1731 | dev: false 1732 | 1733 | /is-date-object@1.0.5: 1734 | resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} 1735 | engines: {node: '>= 0.4'} 1736 | dependencies: 1737 | has-tostringtag: 1.0.0 1738 | dev: false 1739 | 1740 | /is-docker@2.2.1: 1741 | resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} 1742 | engines: {node: '>=8'} 1743 | hasBin: true 1744 | dev: false 1745 | 1746 | /is-docker@3.0.0: 1747 | resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} 1748 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1749 | hasBin: true 1750 | dev: false 1751 | 1752 | /is-extglob@2.1.1: 1753 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 1754 | engines: {node: '>=0.10.0'} 1755 | dev: false 1756 | 1757 | /is-glob@4.0.3: 1758 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 1759 | engines: {node: '>=0.10.0'} 1760 | dependencies: 1761 | is-extglob: 2.1.1 1762 | dev: false 1763 | 1764 | /is-inside-container@1.0.0: 1765 | resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} 1766 | engines: {node: '>=14.16'} 1767 | hasBin: true 1768 | dependencies: 1769 | is-docker: 3.0.0 1770 | dev: false 1771 | 1772 | /is-negative-zero@2.0.2: 1773 | resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} 1774 | engines: {node: '>= 0.4'} 1775 | dev: false 1776 | 1777 | /is-number-object@1.0.7: 1778 | resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} 1779 | engines: {node: '>= 0.4'} 1780 | dependencies: 1781 | has-tostringtag: 1.0.0 1782 | dev: false 1783 | 1784 | /is-number@7.0.0: 1785 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 1786 | engines: {node: '>=0.12.0'} 1787 | dev: false 1788 | 1789 | /is-path-inside@3.0.3: 1790 | resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} 1791 | engines: {node: '>=8'} 1792 | dev: false 1793 | 1794 | /is-regex@1.1.4: 1795 | resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} 1796 | engines: {node: '>= 0.4'} 1797 | dependencies: 1798 | call-bind: 1.0.2 1799 | has-tostringtag: 1.0.0 1800 | dev: false 1801 | 1802 | /is-shared-array-buffer@1.0.2: 1803 | resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} 1804 | dependencies: 1805 | call-bind: 1.0.2 1806 | dev: false 1807 | 1808 | /is-stream@2.0.1: 1809 | resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} 1810 | engines: {node: '>=8'} 1811 | dev: false 1812 | 1813 | /is-stream@3.0.0: 1814 | resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} 1815 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1816 | dev: false 1817 | 1818 | /is-string@1.0.7: 1819 | resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} 1820 | engines: {node: '>= 0.4'} 1821 | dependencies: 1822 | has-tostringtag: 1.0.0 1823 | dev: false 1824 | 1825 | /is-symbol@1.0.4: 1826 | resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} 1827 | engines: {node: '>= 0.4'} 1828 | dependencies: 1829 | has-symbols: 1.0.3 1830 | dev: false 1831 | 1832 | /is-typed-array@1.1.10: 1833 | resolution: {integrity: sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==} 1834 | engines: {node: '>= 0.4'} 1835 | dependencies: 1836 | available-typed-arrays: 1.0.5 1837 | call-bind: 1.0.2 1838 | for-each: 0.3.3 1839 | gopd: 1.0.1 1840 | has-tostringtag: 1.0.0 1841 | dev: false 1842 | 1843 | /is-weakref@1.0.2: 1844 | resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} 1845 | dependencies: 1846 | call-bind: 1.0.2 1847 | dev: false 1848 | 1849 | /is-wsl@2.2.0: 1850 | resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} 1851 | engines: {node: '>=8'} 1852 | dependencies: 1853 | is-docker: 2.2.1 1854 | dev: false 1855 | 1856 | /isexe@2.0.0: 1857 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 1858 | dev: false 1859 | 1860 | /jiti@1.18.2: 1861 | resolution: {integrity: sha512-QAdOptna2NYiSSpv0O/BwoHBSmz4YhpzJHyi+fnMRTXFjp7B8i/YG5Z8IfusxB1ufjcD2Sre1F3R+nX3fvy7gg==} 1862 | hasBin: true 1863 | dev: false 1864 | 1865 | /js-tokens@4.0.0: 1866 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 1867 | dev: false 1868 | 1869 | /js-yaml@4.1.0: 1870 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 1871 | hasBin: true 1872 | dependencies: 1873 | argparse: 2.0.1 1874 | dev: false 1875 | 1876 | /json-schema-traverse@0.4.1: 1877 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 1878 | dev: false 1879 | 1880 | /json-stable-stringify-without-jsonify@1.0.1: 1881 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 1882 | dev: false 1883 | 1884 | /json5@1.0.2: 1885 | resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} 1886 | hasBin: true 1887 | dependencies: 1888 | minimist: 1.2.8 1889 | dev: false 1890 | 1891 | /jsx-ast-utils@3.3.4: 1892 | resolution: {integrity: sha512-fX2TVdCViod6HwKEtSWGHs57oFhVfCMwieb9PuRDgjDPh5XeqJiHFFFJCHxU5cnTc3Bu/GRL+kPiFmw8XWOfKw==} 1893 | engines: {node: '>=4.0'} 1894 | dependencies: 1895 | array-includes: 3.1.6 1896 | array.prototype.flat: 1.3.1 1897 | object.assign: 4.1.4 1898 | object.values: 1.1.6 1899 | dev: false 1900 | 1901 | /language-subtag-registry@0.3.22: 1902 | resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} 1903 | dev: false 1904 | 1905 | /language-tags@1.0.5: 1906 | resolution: {integrity: sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==} 1907 | dependencies: 1908 | language-subtag-registry: 0.3.22 1909 | dev: false 1910 | 1911 | /levn@0.4.1: 1912 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 1913 | engines: {node: '>= 0.8.0'} 1914 | dependencies: 1915 | prelude-ls: 1.2.1 1916 | type-check: 0.4.0 1917 | dev: false 1918 | 1919 | /lilconfig@2.1.0: 1920 | resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} 1921 | engines: {node: '>=10'} 1922 | dev: false 1923 | 1924 | /lines-and-columns@1.2.4: 1925 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} 1926 | dev: false 1927 | 1928 | /locate-path@6.0.0: 1929 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 1930 | engines: {node: '>=10'} 1931 | dependencies: 1932 | p-locate: 5.0.0 1933 | dev: false 1934 | 1935 | /lodash.merge@4.6.2: 1936 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 1937 | dev: false 1938 | 1939 | /loose-envify@1.4.0: 1940 | resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} 1941 | hasBin: true 1942 | dependencies: 1943 | js-tokens: 4.0.0 1944 | dev: false 1945 | 1946 | /lru-cache@6.0.0: 1947 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} 1948 | engines: {node: '>=10'} 1949 | dependencies: 1950 | yallist: 4.0.0 1951 | dev: false 1952 | 1953 | /merge-stream@2.0.0: 1954 | resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} 1955 | dev: false 1956 | 1957 | /merge2@1.4.1: 1958 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 1959 | engines: {node: '>= 8'} 1960 | dev: false 1961 | 1962 | /micromatch@4.0.5: 1963 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} 1964 | engines: {node: '>=8.6'} 1965 | dependencies: 1966 | braces: 3.0.2 1967 | picomatch: 2.3.1 1968 | dev: false 1969 | 1970 | /mimic-fn@2.1.0: 1971 | resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} 1972 | engines: {node: '>=6'} 1973 | dev: false 1974 | 1975 | /mimic-fn@4.0.0: 1976 | resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} 1977 | engines: {node: '>=12'} 1978 | dev: false 1979 | 1980 | /minimatch@3.1.2: 1981 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 1982 | dependencies: 1983 | brace-expansion: 1.1.11 1984 | dev: false 1985 | 1986 | /minimist@1.2.8: 1987 | resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} 1988 | dev: false 1989 | 1990 | /ms@2.1.2: 1991 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 1992 | dev: false 1993 | 1994 | /ms@2.1.3: 1995 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 1996 | dev: false 1997 | 1998 | /mz@2.7.0: 1999 | resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} 2000 | dependencies: 2001 | any-promise: 1.3.0 2002 | object-assign: 4.1.1 2003 | thenify-all: 1.6.0 2004 | dev: false 2005 | 2006 | /nanoid@3.3.6: 2007 | resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} 2008 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 2009 | hasBin: true 2010 | dev: false 2011 | 2012 | /nanoid@4.0.2: 2013 | resolution: {integrity: sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw==} 2014 | engines: {node: ^14 || ^16 || >=18} 2015 | hasBin: true 2016 | dev: false 2017 | 2018 | /natural-compare@1.4.0: 2019 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 2020 | dev: false 2021 | 2022 | /next@13.4.7(react-dom@18.2.0)(react@18.2.0): 2023 | resolution: {integrity: sha512-M8z3k9VmG51SRT6v5uDKdJXcAqLzP3C+vaKfLIAM0Mhx1um1G7MDnO63+m52qPdZfrTFzMZNzfsgvm3ghuVHIQ==} 2024 | engines: {node: '>=16.8.0'} 2025 | hasBin: true 2026 | peerDependencies: 2027 | '@opentelemetry/api': ^1.1.0 2028 | fibers: '>= 3.1.0' 2029 | react: ^18.2.0 2030 | react-dom: ^18.2.0 2031 | sass: ^1.3.0 2032 | peerDependenciesMeta: 2033 | '@opentelemetry/api': 2034 | optional: true 2035 | fibers: 2036 | optional: true 2037 | sass: 2038 | optional: true 2039 | dependencies: 2040 | '@next/env': 13.4.7 2041 | '@swc/helpers': 0.5.1 2042 | busboy: 1.6.0 2043 | caniuse-lite: 1.0.30001509 2044 | postcss: 8.4.14 2045 | react: 18.2.0 2046 | react-dom: 18.2.0(react@18.2.0) 2047 | styled-jsx: 5.1.1(react@18.2.0) 2048 | watchpack: 2.4.0 2049 | zod: 3.21.4 2050 | optionalDependencies: 2051 | '@next/swc-darwin-arm64': 13.4.7 2052 | '@next/swc-darwin-x64': 13.4.7 2053 | '@next/swc-linux-arm64-gnu': 13.4.7 2054 | '@next/swc-linux-arm64-musl': 13.4.7 2055 | '@next/swc-linux-x64-gnu': 13.4.7 2056 | '@next/swc-linux-x64-musl': 13.4.7 2057 | '@next/swc-win32-arm64-msvc': 13.4.7 2058 | '@next/swc-win32-ia32-msvc': 13.4.7 2059 | '@next/swc-win32-x64-msvc': 13.4.7 2060 | transitivePeerDependencies: 2061 | - '@babel/core' 2062 | - babel-plugin-macros 2063 | dev: false 2064 | 2065 | /node-releases@2.0.12: 2066 | resolution: {integrity: sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==} 2067 | dev: false 2068 | 2069 | /normalize-path@3.0.0: 2070 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 2071 | engines: {node: '>=0.10.0'} 2072 | dev: false 2073 | 2074 | /normalize-range@0.1.2: 2075 | resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} 2076 | engines: {node: '>=0.10.0'} 2077 | dev: false 2078 | 2079 | /npm-run-path@4.0.1: 2080 | resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} 2081 | engines: {node: '>=8'} 2082 | dependencies: 2083 | path-key: 3.1.1 2084 | dev: false 2085 | 2086 | /npm-run-path@5.1.0: 2087 | resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} 2088 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 2089 | dependencies: 2090 | path-key: 4.0.0 2091 | dev: false 2092 | 2093 | /object-assign@4.1.1: 2094 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} 2095 | engines: {node: '>=0.10.0'} 2096 | dev: false 2097 | 2098 | /object-hash@3.0.0: 2099 | resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} 2100 | engines: {node: '>= 6'} 2101 | dev: false 2102 | 2103 | /object-inspect@1.12.3: 2104 | resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} 2105 | dev: false 2106 | 2107 | /object-keys@1.1.1: 2108 | resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} 2109 | engines: {node: '>= 0.4'} 2110 | dev: false 2111 | 2112 | /object.assign@4.1.4: 2113 | resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} 2114 | engines: {node: '>= 0.4'} 2115 | dependencies: 2116 | call-bind: 1.0.2 2117 | define-properties: 1.2.0 2118 | has-symbols: 1.0.3 2119 | object-keys: 1.1.1 2120 | dev: false 2121 | 2122 | /object.entries@1.1.6: 2123 | resolution: {integrity: sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==} 2124 | engines: {node: '>= 0.4'} 2125 | dependencies: 2126 | call-bind: 1.0.2 2127 | define-properties: 1.2.0 2128 | es-abstract: 1.21.2 2129 | dev: false 2130 | 2131 | /object.fromentries@2.0.6: 2132 | resolution: {integrity: sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==} 2133 | engines: {node: '>= 0.4'} 2134 | dependencies: 2135 | call-bind: 1.0.2 2136 | define-properties: 1.2.0 2137 | es-abstract: 1.21.2 2138 | dev: false 2139 | 2140 | /object.hasown@1.1.2: 2141 | resolution: {integrity: sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==} 2142 | dependencies: 2143 | define-properties: 1.2.0 2144 | es-abstract: 1.21.2 2145 | dev: false 2146 | 2147 | /object.values@1.1.6: 2148 | resolution: {integrity: sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==} 2149 | engines: {node: '>= 0.4'} 2150 | dependencies: 2151 | call-bind: 1.0.2 2152 | define-properties: 1.2.0 2153 | es-abstract: 1.21.2 2154 | dev: false 2155 | 2156 | /once@1.4.0: 2157 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 2158 | dependencies: 2159 | wrappy: 1.0.2 2160 | dev: false 2161 | 2162 | /onetime@5.1.2: 2163 | resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} 2164 | engines: {node: '>=6'} 2165 | dependencies: 2166 | mimic-fn: 2.1.0 2167 | dev: false 2168 | 2169 | /onetime@6.0.0: 2170 | resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} 2171 | engines: {node: '>=12'} 2172 | dependencies: 2173 | mimic-fn: 4.0.0 2174 | dev: false 2175 | 2176 | /open@9.1.0: 2177 | resolution: {integrity: sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==} 2178 | engines: {node: '>=14.16'} 2179 | dependencies: 2180 | default-browser: 4.0.0 2181 | define-lazy-prop: 3.0.0 2182 | is-inside-container: 1.0.0 2183 | is-wsl: 2.2.0 2184 | dev: false 2185 | 2186 | /optionator@0.9.3: 2187 | resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} 2188 | engines: {node: '>= 0.8.0'} 2189 | dependencies: 2190 | '@aashutoshrathi/word-wrap': 1.2.6 2191 | deep-is: 0.1.4 2192 | fast-levenshtein: 2.0.6 2193 | levn: 0.4.1 2194 | prelude-ls: 1.2.1 2195 | type-check: 0.4.0 2196 | dev: false 2197 | 2198 | /p-limit@3.1.0: 2199 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 2200 | engines: {node: '>=10'} 2201 | dependencies: 2202 | yocto-queue: 0.1.0 2203 | dev: false 2204 | 2205 | /p-locate@5.0.0: 2206 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 2207 | engines: {node: '>=10'} 2208 | dependencies: 2209 | p-limit: 3.1.0 2210 | dev: false 2211 | 2212 | /parent-module@1.0.1: 2213 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 2214 | engines: {node: '>=6'} 2215 | dependencies: 2216 | callsites: 3.1.0 2217 | dev: false 2218 | 2219 | /path-exists@4.0.0: 2220 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 2221 | engines: {node: '>=8'} 2222 | dev: false 2223 | 2224 | /path-is-absolute@1.0.1: 2225 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} 2226 | engines: {node: '>=0.10.0'} 2227 | dev: false 2228 | 2229 | /path-key@3.1.1: 2230 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 2231 | engines: {node: '>=8'} 2232 | dev: false 2233 | 2234 | /path-key@4.0.0: 2235 | resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} 2236 | engines: {node: '>=12'} 2237 | dev: false 2238 | 2239 | /path-parse@1.0.7: 2240 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 2241 | dev: false 2242 | 2243 | /path-type@4.0.0: 2244 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} 2245 | engines: {node: '>=8'} 2246 | dev: false 2247 | 2248 | /picocolors@1.0.0: 2249 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} 2250 | dev: false 2251 | 2252 | /picomatch@2.3.1: 2253 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 2254 | engines: {node: '>=8.6'} 2255 | dev: false 2256 | 2257 | /pify@2.3.0: 2258 | resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} 2259 | engines: {node: '>=0.10.0'} 2260 | dev: false 2261 | 2262 | /pirates@4.0.6: 2263 | resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} 2264 | engines: {node: '>= 6'} 2265 | dev: false 2266 | 2267 | /postcss-import@15.1.0(postcss@8.4.24): 2268 | resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} 2269 | engines: {node: '>=14.0.0'} 2270 | peerDependencies: 2271 | postcss: ^8.0.0 2272 | dependencies: 2273 | postcss: 8.4.24 2274 | postcss-value-parser: 4.2.0 2275 | read-cache: 1.0.0 2276 | resolve: 1.22.2 2277 | dev: false 2278 | 2279 | /postcss-js@4.0.1(postcss@8.4.24): 2280 | resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} 2281 | engines: {node: ^12 || ^14 || >= 16} 2282 | peerDependencies: 2283 | postcss: ^8.4.21 2284 | dependencies: 2285 | camelcase-css: 2.0.1 2286 | postcss: 8.4.24 2287 | dev: false 2288 | 2289 | /postcss-load-config@4.0.1(postcss@8.4.24): 2290 | resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==} 2291 | engines: {node: '>= 14'} 2292 | peerDependencies: 2293 | postcss: '>=8.0.9' 2294 | ts-node: '>=9.0.0' 2295 | peerDependenciesMeta: 2296 | postcss: 2297 | optional: true 2298 | ts-node: 2299 | optional: true 2300 | dependencies: 2301 | lilconfig: 2.1.0 2302 | postcss: 8.4.24 2303 | yaml: 2.3.1 2304 | dev: false 2305 | 2306 | /postcss-nested@6.0.1(postcss@8.4.24): 2307 | resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} 2308 | engines: {node: '>=12.0'} 2309 | peerDependencies: 2310 | postcss: ^8.2.14 2311 | dependencies: 2312 | postcss: 8.4.24 2313 | postcss-selector-parser: 6.0.13 2314 | dev: false 2315 | 2316 | /postcss-selector-parser@6.0.13: 2317 | resolution: {integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==} 2318 | engines: {node: '>=4'} 2319 | dependencies: 2320 | cssesc: 3.0.0 2321 | util-deprecate: 1.0.2 2322 | dev: false 2323 | 2324 | /postcss-value-parser@4.2.0: 2325 | resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} 2326 | dev: false 2327 | 2328 | /postcss@8.4.14: 2329 | resolution: {integrity: sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==} 2330 | engines: {node: ^10 || ^12 || >=14} 2331 | dependencies: 2332 | nanoid: 3.3.6 2333 | picocolors: 1.0.0 2334 | source-map-js: 1.0.2 2335 | dev: false 2336 | 2337 | /postcss@8.4.24: 2338 | resolution: {integrity: sha512-M0RzbcI0sO/XJNucsGjvWU9ERWxb/ytp1w6dKtxTKgixdtQDq4rmx/g8W1hnaheq9jgwL/oyEdH5Bc4WwJKMqg==} 2339 | engines: {node: ^10 || ^12 || >=14} 2340 | dependencies: 2341 | nanoid: 3.3.6 2342 | picocolors: 1.0.0 2343 | source-map-js: 1.0.2 2344 | dev: false 2345 | 2346 | /prelude-ls@1.2.1: 2347 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 2348 | engines: {node: '>= 0.8.0'} 2349 | dev: false 2350 | 2351 | /prop-types@15.8.1: 2352 | resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} 2353 | dependencies: 2354 | loose-envify: 1.4.0 2355 | object-assign: 4.1.1 2356 | react-is: 16.13.1 2357 | dev: false 2358 | 2359 | /punycode@2.3.0: 2360 | resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} 2361 | engines: {node: '>=6'} 2362 | dev: false 2363 | 2364 | /queue-microtask@1.2.3: 2365 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 2366 | dev: false 2367 | 2368 | /react-dom@18.2.0(react@18.2.0): 2369 | resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} 2370 | peerDependencies: 2371 | react: ^18.2.0 2372 | dependencies: 2373 | loose-envify: 1.4.0 2374 | react: 18.2.0 2375 | scheduler: 0.23.0 2376 | dev: false 2377 | 2378 | /react-is@16.13.1: 2379 | resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} 2380 | dev: false 2381 | 2382 | /react@18.2.0: 2383 | resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} 2384 | engines: {node: '>=0.10.0'} 2385 | dependencies: 2386 | loose-envify: 1.4.0 2387 | dev: false 2388 | 2389 | /read-cache@1.0.0: 2390 | resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} 2391 | dependencies: 2392 | pify: 2.3.0 2393 | dev: false 2394 | 2395 | /readdirp@3.6.0: 2396 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} 2397 | engines: {node: '>=8.10.0'} 2398 | dependencies: 2399 | picomatch: 2.3.1 2400 | dev: false 2401 | 2402 | /regenerator-runtime@0.13.11: 2403 | resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} 2404 | dev: false 2405 | 2406 | /regexp.prototype.flags@1.5.0: 2407 | resolution: {integrity: sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==} 2408 | engines: {node: '>= 0.4'} 2409 | dependencies: 2410 | call-bind: 1.0.2 2411 | define-properties: 1.2.0 2412 | functions-have-names: 1.2.3 2413 | dev: false 2414 | 2415 | /resolve-from@4.0.0: 2416 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 2417 | engines: {node: '>=4'} 2418 | dev: false 2419 | 2420 | /resolve-pkg-maps@1.0.0: 2421 | resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} 2422 | dev: false 2423 | 2424 | /resolve@1.22.2: 2425 | resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==} 2426 | hasBin: true 2427 | dependencies: 2428 | is-core-module: 2.12.1 2429 | path-parse: 1.0.7 2430 | supports-preserve-symlinks-flag: 1.0.0 2431 | dev: false 2432 | 2433 | /resolve@2.0.0-next.4: 2434 | resolution: {integrity: sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==} 2435 | hasBin: true 2436 | dependencies: 2437 | is-core-module: 2.12.1 2438 | path-parse: 1.0.7 2439 | supports-preserve-symlinks-flag: 1.0.0 2440 | dev: false 2441 | 2442 | /reusify@1.0.4: 2443 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 2444 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 2445 | dev: false 2446 | 2447 | /rimraf@3.0.2: 2448 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} 2449 | hasBin: true 2450 | dependencies: 2451 | glob: 7.2.3 2452 | dev: false 2453 | 2454 | /run-applescript@5.0.0: 2455 | resolution: {integrity: sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==} 2456 | engines: {node: '>=12'} 2457 | dependencies: 2458 | execa: 5.1.1 2459 | dev: false 2460 | 2461 | /run-parallel@1.2.0: 2462 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 2463 | dependencies: 2464 | queue-microtask: 1.2.3 2465 | dev: false 2466 | 2467 | /safe-regex-test@1.0.0: 2468 | resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} 2469 | dependencies: 2470 | call-bind: 1.0.2 2471 | get-intrinsic: 1.2.1 2472 | is-regex: 1.1.4 2473 | dev: false 2474 | 2475 | /scheduler@0.23.0: 2476 | resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} 2477 | dependencies: 2478 | loose-envify: 1.4.0 2479 | dev: false 2480 | 2481 | /semver@6.3.0: 2482 | resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} 2483 | hasBin: true 2484 | dev: false 2485 | 2486 | /semver@7.5.3: 2487 | resolution: {integrity: sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==} 2488 | engines: {node: '>=10'} 2489 | hasBin: true 2490 | dependencies: 2491 | lru-cache: 6.0.0 2492 | dev: false 2493 | 2494 | /shebang-command@2.0.0: 2495 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 2496 | engines: {node: '>=8'} 2497 | dependencies: 2498 | shebang-regex: 3.0.0 2499 | dev: false 2500 | 2501 | /shebang-regex@3.0.0: 2502 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 2503 | engines: {node: '>=8'} 2504 | dev: false 2505 | 2506 | /side-channel@1.0.4: 2507 | resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} 2508 | dependencies: 2509 | call-bind: 1.0.2 2510 | get-intrinsic: 1.2.1 2511 | object-inspect: 1.12.3 2512 | dev: false 2513 | 2514 | /signal-exit@3.0.7: 2515 | resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} 2516 | dev: false 2517 | 2518 | /slash@3.0.0: 2519 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} 2520 | engines: {node: '>=8'} 2521 | dev: false 2522 | 2523 | /slash@4.0.0: 2524 | resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} 2525 | engines: {node: '>=12'} 2526 | dev: false 2527 | 2528 | /source-map-js@1.0.2: 2529 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} 2530 | engines: {node: '>=0.10.0'} 2531 | dev: false 2532 | 2533 | /streamsearch@1.1.0: 2534 | resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} 2535 | engines: {node: '>=10.0.0'} 2536 | dev: false 2537 | 2538 | /string.prototype.matchall@4.0.8: 2539 | resolution: {integrity: sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==} 2540 | dependencies: 2541 | call-bind: 1.0.2 2542 | define-properties: 1.2.0 2543 | es-abstract: 1.21.2 2544 | get-intrinsic: 1.2.1 2545 | has-symbols: 1.0.3 2546 | internal-slot: 1.0.5 2547 | regexp.prototype.flags: 1.5.0 2548 | side-channel: 1.0.4 2549 | dev: false 2550 | 2551 | /string.prototype.trim@1.2.7: 2552 | resolution: {integrity: sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==} 2553 | engines: {node: '>= 0.4'} 2554 | dependencies: 2555 | call-bind: 1.0.2 2556 | define-properties: 1.2.0 2557 | es-abstract: 1.21.2 2558 | dev: false 2559 | 2560 | /string.prototype.trimend@1.0.6: 2561 | resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==} 2562 | dependencies: 2563 | call-bind: 1.0.2 2564 | define-properties: 1.2.0 2565 | es-abstract: 1.21.2 2566 | dev: false 2567 | 2568 | /string.prototype.trimstart@1.0.6: 2569 | resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==} 2570 | dependencies: 2571 | call-bind: 1.0.2 2572 | define-properties: 1.2.0 2573 | es-abstract: 1.21.2 2574 | dev: false 2575 | 2576 | /strip-ansi@6.0.1: 2577 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 2578 | engines: {node: '>=8'} 2579 | dependencies: 2580 | ansi-regex: 5.0.1 2581 | dev: false 2582 | 2583 | /strip-bom@3.0.0: 2584 | resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} 2585 | engines: {node: '>=4'} 2586 | dev: false 2587 | 2588 | /strip-final-newline@2.0.0: 2589 | resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} 2590 | engines: {node: '>=6'} 2591 | dev: false 2592 | 2593 | /strip-final-newline@3.0.0: 2594 | resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} 2595 | engines: {node: '>=12'} 2596 | dev: false 2597 | 2598 | /strip-json-comments@3.1.1: 2599 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 2600 | engines: {node: '>=8'} 2601 | dev: false 2602 | 2603 | /styled-jsx@5.1.1(react@18.2.0): 2604 | resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} 2605 | engines: {node: '>= 12.0.0'} 2606 | peerDependencies: 2607 | '@babel/core': '*' 2608 | babel-plugin-macros: '*' 2609 | react: '>= 16.8.0 || 17.x.x || ^18.0.0-0' 2610 | peerDependenciesMeta: 2611 | '@babel/core': 2612 | optional: true 2613 | babel-plugin-macros: 2614 | optional: true 2615 | dependencies: 2616 | client-only: 0.0.1 2617 | react: 18.2.0 2618 | dev: false 2619 | 2620 | /sucrase@3.32.0: 2621 | resolution: {integrity: sha512-ydQOU34rpSyj2TGyz4D2p8rbktIOZ8QY9s+DGLvFU1i5pWJE8vkpruCjGCMHsdXwnD7JDcS+noSwM/a7zyNFDQ==} 2622 | engines: {node: '>=8'} 2623 | hasBin: true 2624 | dependencies: 2625 | '@jridgewell/gen-mapping': 0.3.3 2626 | commander: 4.1.1 2627 | glob: 7.1.6 2628 | lines-and-columns: 1.2.4 2629 | mz: 2.7.0 2630 | pirates: 4.0.6 2631 | ts-interface-checker: 0.1.13 2632 | dev: false 2633 | 2634 | /supports-color@7.2.0: 2635 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 2636 | engines: {node: '>=8'} 2637 | dependencies: 2638 | has-flag: 4.0.0 2639 | dev: false 2640 | 2641 | /supports-preserve-symlinks-flag@1.0.0: 2642 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 2643 | engines: {node: '>= 0.4'} 2644 | dev: false 2645 | 2646 | /synckit@0.8.5: 2647 | resolution: {integrity: sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==} 2648 | engines: {node: ^14.18.0 || >=16.0.0} 2649 | dependencies: 2650 | '@pkgr/utils': 2.4.1 2651 | tslib: 2.6.0 2652 | dev: false 2653 | 2654 | /tailwind-merge@1.13.2: 2655 | resolution: {integrity: sha512-R2/nULkdg1VR/EL4RXg4dEohdoxNUJGLMnWIQnPKL+O9Twu7Cn3Rxi4dlXkDzZrEGtR+G+psSXFouWlpTyLhCQ==} 2656 | dev: false 2657 | 2658 | /tailwindcss-animate@1.0.6(tailwindcss@3.3.2): 2659 | resolution: {integrity: sha512-4WigSGMvbl3gCCact62ZvOngA+PRqhAn7si3TQ3/ZuPuQZcIEtVap+ENSXbzWhpojKB8CpvnIsrwBu8/RnHtuw==} 2660 | peerDependencies: 2661 | tailwindcss: '>=3.0.0 || insiders' 2662 | dependencies: 2663 | tailwindcss: 3.3.2 2664 | dev: false 2665 | 2666 | /tailwindcss@3.3.2: 2667 | resolution: {integrity: sha512-9jPkMiIBXvPc2KywkraqsUfbfj+dHDb+JPWtSJa9MLFdrPyazI7q6WX2sUrm7R9eVR7qqv3Pas7EvQFzxKnI6w==} 2668 | engines: {node: '>=14.0.0'} 2669 | hasBin: true 2670 | dependencies: 2671 | '@alloc/quick-lru': 5.2.0 2672 | arg: 5.0.2 2673 | chokidar: 3.5.3 2674 | didyoumean: 1.2.2 2675 | dlv: 1.1.3 2676 | fast-glob: 3.3.0 2677 | glob-parent: 6.0.2 2678 | is-glob: 4.0.3 2679 | jiti: 1.18.2 2680 | lilconfig: 2.1.0 2681 | micromatch: 4.0.5 2682 | normalize-path: 3.0.0 2683 | object-hash: 3.0.0 2684 | picocolors: 1.0.0 2685 | postcss: 8.4.24 2686 | postcss-import: 15.1.0(postcss@8.4.24) 2687 | postcss-js: 4.0.1(postcss@8.4.24) 2688 | postcss-load-config: 4.0.1(postcss@8.4.24) 2689 | postcss-nested: 6.0.1(postcss@8.4.24) 2690 | postcss-selector-parser: 6.0.13 2691 | postcss-value-parser: 4.2.0 2692 | resolve: 1.22.2 2693 | sucrase: 3.32.0 2694 | transitivePeerDependencies: 2695 | - ts-node 2696 | dev: false 2697 | 2698 | /tapable@2.2.1: 2699 | resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} 2700 | engines: {node: '>=6'} 2701 | dev: false 2702 | 2703 | /text-table@0.2.0: 2704 | resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} 2705 | dev: false 2706 | 2707 | /thenify-all@1.6.0: 2708 | resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} 2709 | engines: {node: '>=0.8'} 2710 | dependencies: 2711 | thenify: 3.3.1 2712 | dev: false 2713 | 2714 | /thenify@3.3.1: 2715 | resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} 2716 | dependencies: 2717 | any-promise: 1.3.0 2718 | dev: false 2719 | 2720 | /titleize@3.0.0: 2721 | resolution: {integrity: sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==} 2722 | engines: {node: '>=12'} 2723 | dev: false 2724 | 2725 | /to-regex-range@5.0.1: 2726 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 2727 | engines: {node: '>=8.0'} 2728 | dependencies: 2729 | is-number: 7.0.0 2730 | dev: false 2731 | 2732 | /ts-interface-checker@0.1.13: 2733 | resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} 2734 | dev: false 2735 | 2736 | /tsconfig-paths@3.14.2: 2737 | resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==} 2738 | dependencies: 2739 | '@types/json5': 0.0.29 2740 | json5: 1.0.2 2741 | minimist: 1.2.8 2742 | strip-bom: 3.0.0 2743 | dev: false 2744 | 2745 | /tslib@1.14.1: 2746 | resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} 2747 | dev: false 2748 | 2749 | /tslib@2.6.0: 2750 | resolution: {integrity: sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA==} 2751 | dev: false 2752 | 2753 | /tsutils@3.21.0(typescript@5.1.6): 2754 | resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} 2755 | engines: {node: '>= 6'} 2756 | peerDependencies: 2757 | typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' 2758 | dependencies: 2759 | tslib: 1.14.1 2760 | typescript: 5.1.6 2761 | dev: false 2762 | 2763 | /type-check@0.4.0: 2764 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 2765 | engines: {node: '>= 0.8.0'} 2766 | dependencies: 2767 | prelude-ls: 1.2.1 2768 | dev: false 2769 | 2770 | /type-fest@0.20.2: 2771 | resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} 2772 | engines: {node: '>=10'} 2773 | dev: false 2774 | 2775 | /typed-array-length@1.0.4: 2776 | resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} 2777 | dependencies: 2778 | call-bind: 1.0.2 2779 | for-each: 0.3.3 2780 | is-typed-array: 1.1.10 2781 | dev: false 2782 | 2783 | /typescript@5.1.6: 2784 | resolution: {integrity: sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==} 2785 | engines: {node: '>=14.17'} 2786 | hasBin: true 2787 | dev: false 2788 | 2789 | /unbox-primitive@1.0.2: 2790 | resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} 2791 | dependencies: 2792 | call-bind: 1.0.2 2793 | has-bigints: 1.0.2 2794 | has-symbols: 1.0.3 2795 | which-boxed-primitive: 1.0.2 2796 | dev: false 2797 | 2798 | /unique-names-generator@4.7.1: 2799 | resolution: {integrity: sha512-lMx9dX+KRmG8sq6gulYYpKWZc9RlGsgBR6aoO8Qsm3qvkSJ+3rAymr+TnV8EDMrIrwuFJ4kruzMWM/OpYzPoow==} 2800 | engines: {node: '>=8'} 2801 | dev: false 2802 | 2803 | /untildify@4.0.0: 2804 | resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} 2805 | engines: {node: '>=8'} 2806 | dev: false 2807 | 2808 | /update-browserslist-db@1.0.11(browserslist@4.21.9): 2809 | resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} 2810 | hasBin: true 2811 | peerDependencies: 2812 | browserslist: '>= 4.21.0' 2813 | dependencies: 2814 | browserslist: 4.21.9 2815 | escalade: 3.1.1 2816 | picocolors: 1.0.0 2817 | dev: false 2818 | 2819 | /uri-js@4.4.1: 2820 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 2821 | dependencies: 2822 | punycode: 2.3.0 2823 | dev: false 2824 | 2825 | /use-sound@4.0.1(react@18.2.0): 2826 | resolution: {integrity: sha512-hykJ86kNcu6y/FzlSHcQxhjSGMslZx2WlfLpZNoPbvueakv4OF3xPxEtGV2YmculrIaH0tPp9LtG4jgy17xMWg==} 2827 | peerDependencies: 2828 | react: '>=16.8' 2829 | dependencies: 2830 | howler: 2.2.3 2831 | react: 18.2.0 2832 | dev: false 2833 | 2834 | /use-sync-external-store@1.2.0(react@18.2.0): 2835 | resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} 2836 | peerDependencies: 2837 | react: ^16.8.0 || ^17.0.0 || ^18.0.0 2838 | dependencies: 2839 | react: 18.2.0 2840 | dev: false 2841 | 2842 | /util-deprecate@1.0.2: 2843 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 2844 | dev: false 2845 | 2846 | /watchpack@2.4.0: 2847 | resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} 2848 | engines: {node: '>=10.13.0'} 2849 | dependencies: 2850 | glob-to-regexp: 0.4.1 2851 | graceful-fs: 4.2.11 2852 | dev: false 2853 | 2854 | /which-boxed-primitive@1.0.2: 2855 | resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} 2856 | dependencies: 2857 | is-bigint: 1.0.4 2858 | is-boolean-object: 1.1.2 2859 | is-number-object: 1.0.7 2860 | is-string: 1.0.7 2861 | is-symbol: 1.0.4 2862 | dev: false 2863 | 2864 | /which-typed-array@1.1.9: 2865 | resolution: {integrity: sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==} 2866 | engines: {node: '>= 0.4'} 2867 | dependencies: 2868 | available-typed-arrays: 1.0.5 2869 | call-bind: 1.0.2 2870 | for-each: 0.3.3 2871 | gopd: 1.0.1 2872 | has-tostringtag: 1.0.0 2873 | is-typed-array: 1.1.10 2874 | dev: false 2875 | 2876 | /which@2.0.2: 2877 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 2878 | engines: {node: '>= 8'} 2879 | hasBin: true 2880 | dependencies: 2881 | isexe: 2.0.0 2882 | dev: false 2883 | 2884 | /wrappy@1.0.2: 2885 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 2886 | dev: false 2887 | 2888 | /yallist@4.0.0: 2889 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} 2890 | dev: false 2891 | 2892 | /yaml@2.3.1: 2893 | resolution: {integrity: sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==} 2894 | engines: {node: '>= 14'} 2895 | dev: false 2896 | 2897 | /yocto-queue@0.1.0: 2898 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 2899 | engines: {node: '>=10'} 2900 | dev: false 2901 | 2902 | /zod@3.21.4: 2903 | resolution: {integrity: sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==} 2904 | dev: false 2905 | -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | } 7 | -------------------------------------------------------------------------------- /public/ambient.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JohnPhamous/bounce-dodge/f06a21e21e90cfd979bd76485725585fc92e739b/public/ambient.mp3 -------------------------------------------------------------------------------- /public/explosion.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JohnPhamous/bounce-dodge/f06a21e21e90cfd979bd76485725585fc92e739b/public/explosion.mp3 -------------------------------------------------------------------------------- /public/next.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/pop.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JohnPhamous/bounce-dodge/f06a21e21e90cfd979bd76485725585fc92e739b/public/pop.mp3 -------------------------------------------------------------------------------- /public/vercel.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/Room.tsx: -------------------------------------------------------------------------------- 1 | "use client"; 2 | 3 | import { ReactNode } from "react"; 4 | import { ClientSideSuspense } from "@liveblocks/react"; 5 | import { RoomProvider } from "../../liveblocks.config"; 6 | import { LiveList, LiveObject } from "@liveblocks/client"; 7 | import { getRandomColor } from "@/lib/colors"; 8 | import { 9 | uniqueNamesGenerator, 10 | Config, 11 | adjectives, 12 | animals, 13 | } from "unique-names-generator"; 14 | 15 | const customConfig: Config = { 16 | dictionaries: [adjectives, animals], 17 | separator: " ", 18 | length: 2, 19 | style: "capital", 20 | }; 21 | 22 | export function Room({ children }: { children: ReactNode }) { 23 | return ( 24 | 38 | {() => children} 39 | 40 | ); 41 | } 42 | -------------------------------------------------------------------------------- /src/app/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JohnPhamous/bounce-dodge/f06a21e21e90cfd979bd76485725585fc92e739b/src/app/favicon.ico -------------------------------------------------------------------------------- /src/app/globals.css: -------------------------------------------------------------------------------- 1 | @tailwind base; 2 | @tailwind components; 3 | @tailwind utilities; 4 | 5 | @layer base { 6 | :root { 7 | --background: 0 0% 100%; 8 | --foreground: 222.2 84% 4.9%; 9 | 10 | --muted: 210 40% 96.1%; 11 | --muted-foreground: 215.4 16.3% 46.9%; 12 | 13 | --popover: 0 0% 100%; 14 | --popover-foreground: 222.2 84% 4.9%; 15 | 16 | --card: 0 0% 100%; 17 | --card-foreground: 222.2 84% 4.9%; 18 | 19 | --border: 214.3 31.8% 91.4%; 20 | --input: 214.3 31.8% 91.4%; 21 | 22 | --primary: 222.2 47.4% 11.2%; 23 | --primary-foreground: 210 40% 98%; 24 | 25 | --secondary: 210 40% 96.1%; 26 | --secondary-foreground: 222.2 47.4% 11.2%; 27 | 28 | --accent: 210 40% 96.1%; 29 | --accent-foreground: 222.2 47.4% 11.2%; 30 | 31 | --destructive: 0 84.2% 60.2%; 32 | --destructive-foreground: 210 40% 98%; 33 | 34 | --ring: 215 20.2% 65.1%; 35 | 36 | --radius: 0.5rem; 37 | } 38 | 39 | .dark { 40 | --background: 222.2 84% 4.9%; 41 | --foreground: 210 40% 98%; 42 | 43 | --muted: 217.2 32.6% 17.5%; 44 | --muted-foreground: 215 20.2% 65.1%; 45 | 46 | --popover: 222.2 84% 4.9%; 47 | --popover-foreground: 210 40% 98%; 48 | 49 | --card: 222.2 84% 4.9%; 50 | --card-foreground: 210 40% 98%; 51 | 52 | --border: 217.2 32.6% 17.5%; 53 | --input: 217.2 32.6% 17.5%; 54 | 55 | --primary: 210 40% 98%; 56 | --primary-foreground: 222.2 47.4% 11.2%; 57 | 58 | --secondary: 217.2 32.6% 17.5%; 59 | --secondary-foreground: 210 40% 98%; 60 | 61 | --accent: 217.2 32.6% 17.5%; 62 | --accent-foreground: 210 40% 98%; 63 | 64 | --destructive: 0 62.8% 30.6%; 65 | --destructive-foreground: 0 85.7% 97.3%; 66 | 67 | --ring: 217.2 32.6% 17.5%; 68 | } 69 | } 70 | 71 | @layer base { 72 | * { 73 | @apply border-border; 74 | } 75 | body { 76 | @apply bg-background text-foreground; 77 | } 78 | } -------------------------------------------------------------------------------- /src/app/layout.tsx: -------------------------------------------------------------------------------- 1 | import './globals.css' 2 | import { Inter } from 'next/font/google' 3 | 4 | const inter = Inter({ subsets: ['latin'] }) 5 | 6 | export const metadata = { 7 | title: 'Create Next App', 8 | description: 'Generated by create next app', 9 | } 10 | 11 | export default function RootLayout({ 12 | children, 13 | }: { 14 | children: React.ReactNode 15 | }) { 16 | return ( 17 | 18 | {children} 19 | 20 | ) 21 | } 22 | -------------------------------------------------------------------------------- /src/app/page.tsx: -------------------------------------------------------------------------------- 1 | import { Room } from "@/app/Room"; 2 | import { Game } from "@/components/game"; 3 | 4 | export default function Home() { 5 | return ( 6 | 7 | 8 | 9 | ); 10 | } 11 | -------------------------------------------------------------------------------- /src/components/canvas/explosion.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JohnPhamous/bounce-dodge/f06a21e21e90cfd979bd76485725585fc92e739b/src/components/canvas/explosion.gif -------------------------------------------------------------------------------- /src/components/canvas/index.module.css: -------------------------------------------------------------------------------- 1 | .pin { 2 | background-color: #94a3b8; 3 | display: block; 4 | height: 18px; 5 | width: 2px; 6 | position: absolute; 7 | left: 50%; 8 | top: -12px; 9 | z-index: 1; 10 | } 11 | 12 | .pin:after { 13 | background-color: #f43f5e; 14 | background-image: radial-gradient( 15 | 25% 25%, 16 | circle, 17 | hsla(0, 0%, 100%, 0.3), 18 | hsla(0, 0%, 0%, 0.3) 19 | ); 20 | border-radius: 50%; 21 | box-shadow: inset 0 0 0 1px hsla(0, 0%, 0%, 0.1), 22 | inset 3px 3px 3px hsla(0, 0%, 100%, 0.2), 23 | inset -3px -3px 3px hsla(0, 0%, 0%, 0.2), 24 | 17px 11px 3px hsla(0, 0%, 0%, 0.15); 25 | content: ""; 26 | height: 12px; 27 | left: -5px; 28 | position: absolute; 29 | top: -10px; 30 | width: 12px; 31 | } 32 | 33 | .pin:before { 34 | background-color: hsla(0, 0%, 0%, 0.1); 35 | box-shadow: 0 0 0.25em hsla(0, 0%, 0%, 0.1); 36 | content: ""; 37 | 38 | height: 15px; 39 | width: 2px; 40 | left: 0; 41 | position: absolute; 42 | top: 4px; 43 | 44 | transform: rotate(57.5deg); 45 | 46 | transform-origin: 50% 100%; 47 | } 48 | -------------------------------------------------------------------------------- /src/components/canvas/index.tsx: -------------------------------------------------------------------------------- 1 | import { GameState, TargetEntity } from "@/types"; 2 | import { AnimatePresence, motion } from "framer-motion"; 3 | import React, { useEffect, useLayoutEffect, useRef, useState } from "react"; 4 | import { 5 | useBroadcastEvent, 6 | useEventListener, 7 | useMutation, 8 | useOthers, 9 | useSelf, 10 | useStorage, 11 | } from "../../../liveblocks.config"; 12 | import { Button } from "@/components/ui/button"; 13 | import styles from "./index.module.css"; 14 | import explosion from "./explosion.gif"; 15 | import useInterval from "@/lib/useInterval"; 16 | import Image from "next/image"; 17 | import useSound from "use-sound"; 18 | 19 | const TARGET_HEIGHT = 48; 20 | const TARGET_WIDTH = 96; 21 | 22 | const DVD_COLORS = [ 23 | "#AE23F6", 24 | "#74FAFD", 25 | "#EF8A33", 26 | "#0B25F5", 27 | "#FEFA53", 28 | "#EA4025", 29 | "#EA3389", 30 | "#7AFB4C", 31 | ]; 32 | 33 | export function Canvas({ 34 | gameState, 35 | onAddTarget, 36 | targets, 37 | onRemoveTarget, 38 | }: { 39 | gameState: GameState; 40 | onAddTarget: (newTarget: Omit) => void; 41 | targets: TargetEntity[]; 42 | onRemoveTarget: (collidedTarget: TargetEntity) => void; 43 | }): JSX.Element { 44 | const self = useSelf(); 45 | const isAdmin = self.presence.isAdmin; 46 | const attackerPosition = useStorage((root) => root.attacker); 47 | const updateAttackerPosition = useMutation( 48 | ({ storage }, newPosition: { x: number; y: number }) => { 49 | storage.get("attacker").update(newPosition); 50 | }, 51 | [] 52 | ); 53 | const [playExplosion] = useSound("/explosion.mp3", { 54 | volume: 0.1, 55 | }); 56 | const [playAmbient] = useSound("/ambient.mp3", { 57 | volume: 0.3, 58 | }); 59 | const [playPop] = useSound("/pop.mp3", { 60 | volume: 0.2, 61 | }); 62 | 63 | const updateAttackerColor = useMutation(({ storage }, newColor: string) => { 64 | storage.get("attacker").update({ color: newColor }); 65 | }, []); 66 | const [eliminatedTargetAnimations, setEliminatedTargetAnimations] = useState< 67 | { timestamp: number; x: number; y: number }[] 68 | >([]); 69 | const broadcast = useBroadcastEvent(); 70 | const [xDirection, setXDirection] = useState(Math.random() * 2 - 1); 71 | const [yDirection, setYDirection] = useState(Math.random() * 2 - 1); 72 | const attackerRef = useRef(null); 73 | const canvasRef = useRef(null); 74 | 75 | useInterval(() => { 76 | setEliminatedTargetAnimations((reactions) => 77 | reactions.filter((target) => target.timestamp > Date.now() - 1000) 78 | ); 79 | }, 1000); 80 | 81 | useEventListener(({ connectionId, event }) => { 82 | if (event.type === "influence") { 83 | if (!isAdmin) { 84 | return; 85 | } 86 | let xDelta = 0; 87 | let yDelta = 0; 88 | const MAGNITUDE = 0.2; 89 | 90 | switch (event.action) { 91 | case "up": 92 | yDelta = -MAGNITUDE; 93 | break; 94 | case "down": 95 | yDelta = MAGNITUDE; 96 | break; 97 | case "left": 98 | xDelta = -MAGNITUDE; 99 | break; 100 | case "right": 101 | xDelta = MAGNITUDE; 102 | break; 103 | } 104 | 105 | setXDirection((prev) => prev + xDelta); 106 | setYDirection((prev) => prev + yDelta); 107 | } 108 | 109 | if (event.type === "eliminated") { 110 | playExplosion(); 111 | setEliminatedTargetAnimations((prev) => [ 112 | ...prev, 113 | { 114 | timestamp: Date.now(), 115 | x: event.coordinates.x, 116 | y: event.coordinates.y, 117 | }, 118 | ]); 119 | } 120 | }); 121 | 122 | useEffect(() => { 123 | playAmbient(); 124 | }, [playAmbient]); 125 | 126 | // Centers the attacker in the canvas before the game starts. 127 | useLayoutEffect(() => { 128 | if (gameState === "pregame" && isAdmin) { 129 | if (attackerRef.current === null || canvasRef.current === null) { 130 | return; 131 | } 132 | 133 | const canvas = canvasRef.current; 134 | const attacker = attackerRef.current; 135 | const canvasRect = canvas.getBoundingClientRect(); 136 | const attackerRect = attacker.getBoundingClientRect(); 137 | 138 | const xRange = canvasRect.width - attackerRect.width; 139 | const yRange = canvasRect.height - attackerRect.height; 140 | 141 | const newX = Math.random() * xRange; 142 | const newY = Math.random() * yRange; 143 | 144 | setPosition(attacker, { 145 | x: newX, 146 | y: newY, 147 | }); 148 | updateAttackerPosition({ 149 | x: newX, 150 | y: newY, 151 | }); 152 | setYDirection(Math.random() * 2 - 1); 153 | setXDirection(Math.random() * 2 - 1); 154 | } 155 | }, [gameState, isAdmin, updateAttackerPosition]); 156 | 157 | useLayoutEffect(() => { 158 | if (gameState !== "playing" || !isAdmin) { 159 | return; 160 | } 161 | let animationFrameId: number; 162 | 163 | const renderFunction = () => { 164 | if (attackerRef.current === null || canvasRef.current === null) { 165 | return; 166 | } 167 | 168 | const canvas = canvasRef.current; 169 | const attacker = attackerRef.current; 170 | const canvasRect = canvas.getBoundingClientRect(); 171 | const attackerRect = attacker.getBoundingClientRect(); 172 | const attackerCoordinates = getRelativeCoordinates( 173 | canvasRect, 174 | attackerRect 175 | ); 176 | 177 | const collidedWithTarget = getCollision(attackerRect, targets); 178 | if (collidedWithTarget !== undefined) { 179 | broadcast({ 180 | type: "eliminated", 181 | coordinates: { 182 | x: collidedWithTarget.coordinates.x, 183 | y: collidedWithTarget.coordinates.y, 184 | }, 185 | }); 186 | onRemoveTarget(collidedWithTarget); 187 | } 188 | 189 | if ( 190 | attackerCoordinates.x + xDirection > 191 | canvasRect.width - attackerRect.width || 192 | attackerCoordinates.x + xDirection < 0 193 | ) { 194 | playPop(); 195 | setXDirection(-xDirection); 196 | updateAttackerColor( 197 | DVD_COLORS[Math.floor(Math.random() * DVD_COLORS.length)] 198 | ); 199 | } 200 | if ( 201 | attackerCoordinates.y + yDirection > 202 | canvasRect.height - attackerRect.height || 203 | attackerCoordinates.y + yDirection < 0 204 | ) { 205 | playPop(); 206 | setYDirection(-yDirection); 207 | updateAttackerColor( 208 | DVD_COLORS[Math.floor(Math.random() * DVD_COLORS.length)] 209 | ); 210 | } 211 | 212 | setPosition(attacker, { 213 | x: attackerCoordinates.x + xDirection, 214 | y: attackerCoordinates.y + yDirection, 215 | }); 216 | updateAttackerPosition({ 217 | x: attackerCoordinates.x + xDirection, 218 | y: attackerCoordinates.y + yDirection, 219 | }); 220 | 221 | animationFrameId = requestAnimationFrame(renderFunction); 222 | }; 223 | renderFunction(); 224 | return () => cancelAnimationFrame(animationFrameId); 225 | }, [ 226 | gameState, 227 | xDirection, 228 | yDirection, 229 | targets, 230 | onRemoveTarget, 231 | updateAttackerPosition, 232 | isAdmin, 233 | updateAttackerColor, 234 | broadcast, 235 | playPop, 236 | ]); 237 | 238 | return ( 239 |
{ 243 | if (canvasRef.current === null || gameState !== "pregame") { 244 | return; 245 | } 246 | 247 | const clickCoordinates = { x: e.clientX, y: e.clientY }; 248 | const canvas = canvasRef.current; 249 | const canvasRect = canvas.getBoundingClientRect(); 250 | 251 | let x = clickCoordinates.x - canvasRect.left; 252 | let y = clickCoordinates.y - canvasRect.top; 253 | 254 | if (x + TARGET_WIDTH >= canvasRect.width) { 255 | x = canvasRect.width - TARGET_WIDTH; 256 | } 257 | if (y + TARGET_HEIGHT >= canvasRect.height) { 258 | y = canvasRect.height - TARGET_HEIGHT; 259 | } 260 | 261 | onAddTarget({ 262 | value: "TODO", 263 | coordinates: { 264 | x, 265 | y, 266 | }, 267 | color: self.presence.color, 268 | owner: self.connectionId.toString(), 269 | }); 270 | }} 271 | > 272 | 279 | 332 | 333 | {targets.map((target) => { 334 | return ( 335 | 343 | ); 344 | })} 345 | 346 | {eliminatedTargetAnimations.map((animation) => { 347 | const SIZE = 200; 348 | return ( 349 |
359 | 360 |
361 | ); 362 | })} 363 | 364 | ); 365 | } 366 | 367 | const AttackerObject = React.forwardRef< 368 | HTMLDivElement, 369 | { 370 | id?: string; 371 | x?: number; 372 | y?: number; 373 | hidden?: boolean; 374 | children?: React.ReactNode; 375 | isAdmin: boolean; 376 | } 377 | >(({ id, x, y, hidden, children, isAdmin }, ref) => { 378 | return ( 379 | 407 | ); 408 | }); 409 | 410 | AttackerObject.displayName = "Attacker"; 411 | 412 | const Object = React.forwardRef< 413 | HTMLDivElement, 414 | { 415 | initialX?: number; 416 | initialY?: number; 417 | label?: string; 418 | id?: string; 419 | x?: number; 420 | y?: number; 421 | hidden?: boolean; 422 | color: string; 423 | } 424 | >(({ initialX = 0, initialY = 0, label, id, x, y, hidden, color }, ref) => { 425 | return ( 426 | 456 | ); 457 | }); 458 | 459 | Object.displayName = "Object"; 460 | 461 | const getRelativeCoordinates = (parent: DOMRect, child: DOMRect) => { 462 | return { 463 | x: child.x - parent.x, 464 | y: child.y - parent.y, 465 | }; 466 | }; 467 | 468 | const setPosition = ( 469 | element: HTMLElement, 470 | { x, y }: { x: number; y: number } 471 | ) => { 472 | element.style.setProperty("--x", `${x}px`); 473 | element.style.setProperty("--y", `${y}px`); 474 | }; 475 | 476 | function getCollision(attackerRect: DOMRect, targets: TargetEntity[]) { 477 | const collidedTarget = targets.find((target) => { 478 | const targetElement = document.getElementById(target.id)!; 479 | const targetRect = targetElement.getBoundingClientRect(); 480 | 481 | return !( 482 | targetRect.left > attackerRect.right || 483 | targetRect.right < attackerRect.left || 484 | targetRect.top > attackerRect.bottom || 485 | targetRect.bottom < attackerRect.top 486 | ); 487 | }); 488 | return collidedTarget; 489 | } 490 | 491 | const InfluenceButton = ({ 492 | className, 493 | children, 494 | onClick, 495 | }: { 496 | children: React.ReactNode; 497 | className: string; 498 | onClick: () => void; 499 | }) => { 500 | return ( 501 | 512 | ); 513 | }; 514 | -------------------------------------------------------------------------------- /src/components/game/index.tsx: -------------------------------------------------------------------------------- 1 | "use client"; 2 | 3 | import { Canvas } from "@/components/canvas"; 4 | import { Button } from "@/components/ui/button"; 5 | import { Input } from "@/components/ui/input"; 6 | import { Separator } from "@/components/ui/separator"; 7 | import { GameState, TargetEntity } from "@/types"; 8 | import React, { useEffect } from "react"; 9 | import { 10 | useOthers, 11 | useUpdateMyPresence, 12 | useSelf, 13 | useStorage, 14 | useMutation, 15 | } from "../../../liveblocks.config"; 16 | import { nanoid } from "nanoid"; 17 | import { AnimatePresence, motion } from "framer-motion"; 18 | 19 | export function Game(): JSX.Element { 20 | const others = useOthers(); 21 | const updateMyPresence = useUpdateMyPresence(); 22 | const self = useSelf(); 23 | const isAdmin = self.presence.isAdmin; 24 | 25 | const gameState = useStorage((root) => root.gameState); 26 | const targets = useStorage((root) => root.targets); 27 | const eliminatedTargets = useStorage((root) => root.eliminatedTargets); 28 | 29 | const addTarget = useMutation(({ storage }, newTarget: TargetEntity) => { 30 | if (gameState === "pregame") { 31 | const previousIndex = storage 32 | .get("targets") 33 | .findIndex((t) => t.owner === self.connectionId.toString()); 34 | 35 | if (previousIndex !== -1) { 36 | storage.get("targets").set(previousIndex, newTarget); 37 | } else { 38 | storage.get("targets").push(newTarget); 39 | } 40 | } 41 | }, []); 42 | 43 | const eliminateTarget = useMutation(({ storage }, target: TargetEntity) => { 44 | const index = storage.get("targets").findIndex((t) => t.id === target.id); 45 | if (index !== -1) { 46 | storage.get("targets").delete(index); 47 | storage.get("eliminatedTargets").push(target); 48 | } 49 | }, []); 50 | 51 | const setGameState = useMutation(({ storage }, newGameState: GameState) => { 52 | storage.set("gameState", newGameState); 53 | }, []); 54 | 55 | const resetGame = useMutation(({ storage }) => { 56 | storage.get("targets").clear(); 57 | storage.get("eliminatedTargets").clear(); 58 | setGameState("pregame"); 59 | }, []); 60 | 61 | const onAddTarget = ({ 62 | coordinates, 63 | value, 64 | color, 65 | owner, 66 | }: Omit) => { 67 | addTarget({ 68 | id: nanoid(), 69 | coordinates, 70 | value: self.presence.username || "", 71 | color, 72 | owner, 73 | // value: self.presence.username || "", 74 | }); 75 | }; 76 | 77 | const onRemoveTarget = (collidedTarget: TargetEntity) => { 78 | eliminateTarget(collidedTarget); 79 | }; 80 | 81 | // Designate the 1st person joining the room as the admin. 82 | useEffect(() => { 83 | if (others.length === 0) { 84 | updateMyPresence({ isAdmin: true }); 85 | } 86 | // Only run on app mount. 87 | // eslint-disable-next-line react-hooks/exhaustive-deps 88 | }, []); 89 | 90 | return ( 91 | <> 92 |
93 |
94 |

95 | Bounce Dodge 96 |

97 |
98 | {/* Avatar Stack */} 99 |
100 | 101 | {others 102 | .filter((other) => other.presence.username !== undefined) 103 | .map((other) => { 104 | return ( 105 | 115 | {other.presence.username?.slice(0, 1)} 116 | 117 | ); 118 | })} 119 | 120 |
121 |
122 | { 127 | updateMyPresence({ username: e.target.value }); 128 | }} 129 | className="h-8 col-span-2" 130 | /> 131 |
132 |
133 |
134 | 135 |
136 |
137 |
138 | {gameState === "playing" || eliminatedTargets.length !== 0 ? ( 139 |
    140 | {eliminatedTargets.map((target) => { 141 | return
  • ☠️ {target.value}
  • ; 142 | })} 143 |
144 | ) : ( 145 |
146 | Type your username ☝️ then click on the board.
147 | 👈 148 |
149 | )} 150 |
151 |
152 |
153 |
154 | 160 |
161 | {isAdmin && ( 162 |
163 | 172 | 180 |
181 | )} 182 |
183 |
184 |
185 |
186 |
187 | 188 | ); 189 | } 190 | -------------------------------------------------------------------------------- /src/components/ui/button.tsx: -------------------------------------------------------------------------------- 1 | import * as React from "react" 2 | import { Slot } from "@radix-ui/react-slot" 3 | import { cva, type VariantProps } from "class-variance-authority" 4 | 5 | import { cn } from "@/lib/utils" 6 | 7 | const buttonVariants = cva( 8 | "inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50", 9 | { 10 | variants: { 11 | variant: { 12 | default: 13 | "bg-primary text-primary-foreground shadow hover:bg-primary/90", 14 | destructive: 15 | "bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90", 16 | outline: 17 | "border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground", 18 | secondary: 19 | "bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80", 20 | ghost: "hover:bg-accent hover:text-accent-foreground", 21 | link: "text-primary underline-offset-4 hover:underline", 22 | }, 23 | size: { 24 | default: "h-9 px-4 py-2", 25 | sm: "h-8 rounded-md px-3 text-xs", 26 | lg: "h-10 rounded-md px-8", 27 | icon: "h-9 w-9", 28 | }, 29 | }, 30 | defaultVariants: { 31 | variant: "default", 32 | size: "default", 33 | }, 34 | } 35 | ) 36 | 37 | export interface ButtonProps 38 | extends React.ButtonHTMLAttributes, 39 | VariantProps { 40 | asChild?: boolean 41 | } 42 | 43 | const Button = React.forwardRef( 44 | ({ className, variant, size, asChild = false, ...props }, ref) => { 45 | const Comp = asChild ? Slot : "button" 46 | return ( 47 | 52 | ) 53 | } 54 | ) 55 | Button.displayName = "Button" 56 | 57 | export { Button, buttonVariants } 58 | -------------------------------------------------------------------------------- /src/components/ui/input.tsx: -------------------------------------------------------------------------------- 1 | import * as React from "react" 2 | 3 | import { cn } from "@/lib/utils" 4 | 5 | export interface InputProps 6 | extends React.InputHTMLAttributes {} 7 | 8 | const Input = React.forwardRef( 9 | ({ className, type, ...props }, ref) => { 10 | return ( 11 | 20 | ) 21 | } 22 | ) 23 | Input.displayName = "Input" 24 | 25 | export { Input } 26 | -------------------------------------------------------------------------------- /src/components/ui/label.tsx: -------------------------------------------------------------------------------- 1 | "use client" 2 | 3 | import * as React from "react" 4 | import * as LabelPrimitive from "@radix-ui/react-label" 5 | import { cva, type VariantProps } from "class-variance-authority" 6 | 7 | import { cn } from "@/lib/utils" 8 | 9 | const labelVariants = cva( 10 | "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70" 11 | ) 12 | 13 | const Label = React.forwardRef< 14 | React.ElementRef, 15 | React.ComponentPropsWithoutRef & 16 | VariantProps 17 | >(({ className, ...props }, ref) => ( 18 | 23 | )) 24 | Label.displayName = LabelPrimitive.Root.displayName 25 | 26 | export { Label } 27 | -------------------------------------------------------------------------------- /src/components/ui/separator.tsx: -------------------------------------------------------------------------------- 1 | "use client" 2 | 3 | import * as React from "react" 4 | import * as SeparatorPrimitive from "@radix-ui/react-separator" 5 | 6 | import { cn } from "@/lib/utils" 7 | 8 | const Separator = React.forwardRef< 9 | React.ElementRef, 10 | React.ComponentPropsWithoutRef 11 | >( 12 | ( 13 | { className, orientation = "horizontal", decorative = true, ...props }, 14 | ref 15 | ) => ( 16 | 27 | ) 28 | ) 29 | Separator.displayName = SeparatorPrimitive.Root.displayName 30 | 31 | export { Separator } 32 | -------------------------------------------------------------------------------- /src/lib/colors.ts: -------------------------------------------------------------------------------- 1 | export const COLORS = [ 2 | "#f87171", 3 | "#fdba74", 4 | "#fde047", 5 | "#86efac", 6 | "#5eead4", 7 | "#7dd3fc", 8 | "#c4b5fd", 9 | "#f0abfc", 10 | "#f9a8d4", 11 | "#fda4af", 12 | ]; 13 | 14 | export const getRandomColor = () => 15 | COLORS[Math.floor(Math.random() * COLORS.length)]; 16 | -------------------------------------------------------------------------------- /src/lib/useInterval.tsx: -------------------------------------------------------------------------------- 1 | import { useRef, useEffect } from "react"; 2 | 3 | // From Dan Abramov's blog: https://overreacted.io/making-setinterval-declarative-with-react-hooks/ 4 | 5 | export default function useInterval(callback: () => void, delay: number) { 6 | const savedCallback = useRef<() => void>(callback); 7 | 8 | // Remember the latest callback. 9 | useEffect(() => { 10 | savedCallback.current = callback; 11 | }, [callback]); 12 | 13 | // Set up the interval. 14 | useEffect(() => { 15 | function tick() { 16 | savedCallback.current(); 17 | } 18 | if (delay !== null) { 19 | let id = setInterval(tick, delay); 20 | return () => clearInterval(id); 21 | } 22 | }, [delay]); 23 | } 24 | -------------------------------------------------------------------------------- /src/lib/utils.ts: -------------------------------------------------------------------------------- 1 | import { type ClassValue, clsx } from "clsx" 2 | import { twMerge } from "tailwind-merge" 3 | 4 | export function cn(...inputs: ClassValue[]) { 5 | return twMerge(clsx(inputs)) 6 | } 7 | -------------------------------------------------------------------------------- /src/types/index.ts: -------------------------------------------------------------------------------- 1 | export type GameState = "pregame" | "playing" | "end"; 2 | 3 | export interface TargetEntity { 4 | id: string; 5 | value: string; 6 | coordinates: { 7 | x: number; 8 | y: number; 9 | }; 10 | color: string; 11 | owner: string; 12 | } 13 | -------------------------------------------------------------------------------- /tailwind.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('tailwindcss').Config} */ 2 | module.exports = { 3 | darkMode: ["class"], 4 | content: [ 5 | './pages/**/*.{ts,tsx}', 6 | './components/**/*.{ts,tsx}', 7 | './app/**/*.{ts,tsx}', 8 | './src/**/*.{ts,tsx}', 9 | ], 10 | theme: { 11 | container: { 12 | center: true, 13 | padding: "2rem", 14 | screens: { 15 | "2xl": "1400px", 16 | }, 17 | }, 18 | extend: { 19 | colors: { 20 | border: "hsl(var(--border))", 21 | input: "hsl(var(--input))", 22 | ring: "hsl(var(--ring))", 23 | background: "hsl(var(--background))", 24 | foreground: "hsl(var(--foreground))", 25 | primary: { 26 | DEFAULT: "hsl(var(--primary))", 27 | foreground: "hsl(var(--primary-foreground))", 28 | }, 29 | secondary: { 30 | DEFAULT: "hsl(var(--secondary))", 31 | foreground: "hsl(var(--secondary-foreground))", 32 | }, 33 | destructive: { 34 | DEFAULT: "hsl(var(--destructive))", 35 | foreground: "hsl(var(--destructive-foreground))", 36 | }, 37 | muted: { 38 | DEFAULT: "hsl(var(--muted))", 39 | foreground: "hsl(var(--muted-foreground))", 40 | }, 41 | accent: { 42 | DEFAULT: "hsl(var(--accent))", 43 | foreground: "hsl(var(--accent-foreground))", 44 | }, 45 | popover: { 46 | DEFAULT: "hsl(var(--popover))", 47 | foreground: "hsl(var(--popover-foreground))", 48 | }, 49 | card: { 50 | DEFAULT: "hsl(var(--card))", 51 | foreground: "hsl(var(--card-foreground))", 52 | }, 53 | }, 54 | borderRadius: { 55 | lg: "var(--radius)", 56 | md: "calc(var(--radius) - 2px)", 57 | sm: "calc(var(--radius) - 4px)", 58 | }, 59 | keyframes: { 60 | "accordion-down": { 61 | from: { height: 0 }, 62 | to: { height: "var(--radix-accordion-content-height)" }, 63 | }, 64 | "accordion-up": { 65 | from: { height: "var(--radix-accordion-content-height)" }, 66 | to: { height: 0 }, 67 | }, 68 | }, 69 | animation: { 70 | "accordion-down": "accordion-down 0.2s ease-out", 71 | "accordion-up": "accordion-up 0.2s ease-out", 72 | }, 73 | }, 74 | }, 75 | plugins: [require("tailwindcss-animate")], 76 | } -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "lib": ["dom", "dom.iterable", "esnext"], 5 | "allowJs": true, 6 | "skipLibCheck": true, 7 | "strict": true, 8 | "forceConsistentCasingInFileNames": true, 9 | "noEmit": true, 10 | "esModuleInterop": true, 11 | "module": "esnext", 12 | "moduleResolution": "node", 13 | "resolveJsonModule": true, 14 | "isolatedModules": true, 15 | "jsx": "preserve", 16 | "incremental": true, 17 | "plugins": [ 18 | { 19 | "name": "next" 20 | } 21 | ], 22 | "paths": { 23 | "@/*": ["./src/*"] 24 | } 25 | }, 26 | "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], 27 | "exclude": ["node_modules"] 28 | } 29 | --------------------------------------------------------------------------------