├── .gitattributes ├── .github ├── actions │ └── bump-manifest-version.js └── workflows │ └── release.yml ├── LICENSE ├── README.md ├── client.lua ├── fxmanifest.lua ├── modules └── utils │ └── client.lua ├── server.lua └── web ├── .eslintrc.cjs ├── .gitignore ├── components.json ├── index.html ├── package-lock.json ├── package.json ├── pnpm-lock.yaml ├── postcss.config.js ├── src ├── components │ ├── App.css │ ├── App.tsx │ ├── CodeOutput.tsx │ └── ui │ │ ├── button.tsx │ │ ├── card.tsx │ │ ├── scroll-area.tsx │ │ ├── select.tsx │ │ ├── textarea.tsx │ │ ├── toast.tsx │ │ └── toaster.tsx ├── hooks │ ├── use-toast.ts │ └── useNuiEvent.ts ├── index.css ├── lib │ └── utils.ts ├── main.tsx ├── providers │ └── VisibilityProvider.tsx ├── utils │ ├── debugData.ts │ ├── fetchNui.ts │ └── misc.ts └── vite-env.d.ts ├── tailwind.config.js ├── tsconfig.json ├── tsconfig.node.json └── vite.config.ts /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /.github/actions/bump-manifest-version.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Peak-Scripts/peak_executor/4008cb8c1b828463944942e893b4acc4bbb38d33/.github/actions/bump-manifest-version.js -------------------------------------------------------------------------------- /.github/workflows/release.yml: -------------------------------------------------------------------------------- 1 | name: Release 2 | 3 | on: 4 | push: 5 | tags: 6 | - "v*.*.*" 7 | 8 | jobs: 9 | create-release: 10 | name: Build and Create Tagged Release 11 | runs-on: ubuntu-latest 12 | steps: 13 | - name: Install archive tools 14 | run: sudo apt install zip 15 | 16 | - name: Checkout source code 17 | uses: actions/checkout@v2 18 | with: 19 | fetch-depth: 0 20 | ref: ${{ github.event.repository.default_branch }} 21 | 22 | - uses: pnpm/action-setup@v2.0.1 23 | with: 24 | version: 8.6.1 25 | 26 | - name: Setup node 27 | uses: actions/setup-node@v2 28 | with: 29 | node-version: 16.x 30 | cache: "pnpm" 31 | cache-dependency-path: "web/pnpm-lock.yaml" 32 | 33 | - name: Set env 34 | run: echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV 35 | 36 | - name: Install dependencies 37 | run: pnpm install 38 | working-directory: web 39 | 40 | - name: Run build 41 | run: pnpm build 42 | working-directory: web 43 | env: 44 | CI: false 45 | 46 | - name: Bump manifest version 47 | run: node .github/actions/bump-manifest-version.js 48 | env: 49 | TGT_RELEASE_VERSION: ${{ github.ref_name }} 50 | 51 | - name: Push manifest change 52 | uses: EndBug/add-and-commit@v8 53 | with: 54 | add: fxmanifest.lua 55 | push: true 56 | author_name: Manifest Bumper 57 | author_email: 41898282+github-actions[bot]@users.noreply.github.com 58 | message: "chore: bump manifest version to ${{ github.ref_name }}" 59 | 60 | - name: Update tag ref 61 | uses: EndBug/latest-tag@latest 62 | with: 63 | tag-name: ${{ github.ref_name }} 64 | 65 | - name: Bundle files 66 | run: | 67 | mkdir -p ./temp/peak_executor 68 | mkdir -p ./temp/peak_executor/web 69 | cp ./{server.lua,README.md,LICENSE,fxmanifest.lua,client.lua} ./temp/peak_executor 70 | cp -r ./modules ./temp/peak_executor 71 | cp -r ./web/dist ./temp/peak_executor/web/dist 72 | cd ./temp && zip -r ../peak_executor.zip ./peak_executor 73 | 74 | - name: Create Release 75 | uses: "marvinpinto/action-automatic-releases@v1.2.1" 76 | id: auto_release 77 | with: 78 | repo_token: "${{ secrets.GITHUB_TOKEN }}" 79 | title: ${{ env.RELEASE_VERSION }} 80 | prerelease: false 81 | files: peak_executor.zip 82 | 83 | env: 84 | CI: false 85 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | GNU GENERAL PUBLIC LICENSE 2 | Version 3, 29 June 2007 3 | 4 | Copyright (C) 2007 Free Software Foundation, Inc. 5 | Everyone is permitted to copy and distribute verbatim copies 6 | of this license document, but changing it is not allowed. 7 | 8 | Preamble 9 | 10 | The GNU General Public License is a free, copyleft license for 11 | software and other kinds of works. 12 | 13 | The licenses for most software and other practical works are designed 14 | to take away your freedom to share and change the works. By contrast, 15 | the GNU General Public License is intended to guarantee your freedom to 16 | share and change all versions of a program--to make sure it remains free 17 | software for all its users. We, the Free Software Foundation, use the 18 | GNU General Public License for most of our software; it applies also to 19 | any other work released this way by its authors. You can apply it to 20 | your programs, too. 21 | 22 | When we speak of free software, we are referring to freedom, not 23 | price. Our General Public Licenses are designed to make sure that you 24 | have the freedom to distribute copies of free software (and charge for 25 | them if you wish), that you receive source code or can get it if you 26 | want it, that you can change the software or use pieces of it in new 27 | free programs, and that you know you can do these things. 28 | 29 | To protect your rights, we need to prevent others from denying you 30 | these rights or asking you to surrender the rights. Therefore, you have 31 | certain responsibilities if you distribute copies of the software, or if 32 | you modify it: responsibilities to respect the freedom of others. 33 | 34 | For example, if you distribute copies of such a program, whether 35 | gratis or for a fee, you must pass on to the recipients the same 36 | freedoms that you received. You must make sure that they, too, receive 37 | or can get the source code. And you must show them these terms so they 38 | know their rights. 39 | 40 | Developers that use the GNU GPL protect your rights with two steps: 41 | (1) assert copyright on the software, and (2) offer you this License 42 | giving you legal permission to copy, distribute and/or modify it. 43 | 44 | For the developers' and authors' protection, the GPL clearly explains 45 | that there is no warranty for this free software. For both users' and 46 | authors' sake, the GPL requires that modified versions be marked as 47 | changed, so that their problems will not be attributed erroneously to 48 | authors of previous versions. 49 | 50 | Some devices are designed to deny users access to install or run 51 | modified versions of the software inside them, although the manufacturer 52 | can do so. This is fundamentally incompatible with the aim of 53 | protecting users' freedom to change the software. The systematic 54 | pattern of such abuse occurs in the area of products for individuals to 55 | use, which is precisely where it is most unacceptable. Therefore, we 56 | have designed this version of the GPL to prohibit the practice for those 57 | products. If such problems arise substantially in other domains, we 58 | stand ready to extend this provision to those domains in future versions 59 | of the GPL, as needed to protect the freedom of users. 60 | 61 | Finally, every program is threatened constantly by software patents. 62 | States should not allow patents to restrict development and use of 63 | software on general-purpose computers, but in those that do, we wish to 64 | avoid the special danger that patents applied to a free program could 65 | make it effectively proprietary. To prevent this, the GPL assures that 66 | patents cannot be used to render the program non-free. 67 | 68 | The precise terms and conditions for copying, distribution and 69 | modification follow. 70 | 71 | TERMS AND CONDITIONS 72 | 73 | 0. Definitions. 74 | 75 | "This License" refers to version 3 of the GNU General Public License. 76 | 77 | "Copyright" also means copyright-like laws that apply to other kinds of 78 | works, such as semiconductor masks. 79 | 80 | "The Program" refers to any copyrightable work licensed under this 81 | License. Each licensee is addressed as "you". "Licensees" and 82 | "recipients" may be individuals or organizations. 83 | 84 | To "modify" a work means to copy from or adapt all or part of the work 85 | in a fashion requiring copyright permission, other than the making of an 86 | exact copy. The resulting work is called a "modified version" of the 87 | earlier work or a work "based on" the earlier work. 88 | 89 | A "covered work" means either the unmodified Program or a work based 90 | on the Program. 91 | 92 | To "propagate" a work means to do anything with it that, without 93 | permission, would make you directly or secondarily liable for 94 | infringement under applicable copyright law, except executing it on a 95 | computer or modifying a private copy. Propagation includes copying, 96 | distribution (with or without modification), making available to the 97 | public, and in some countries other activities as well. 98 | 99 | To "convey" a work means any kind of propagation that enables other 100 | parties to make or receive copies. Mere interaction with a user through 101 | a computer network, with no transfer of a copy, is not conveying. 102 | 103 | An interactive user interface displays "Appropriate Legal Notices" 104 | to the extent that it includes a convenient and prominently visible 105 | feature that (1) displays an appropriate copyright notice, and (2) 106 | tells the user that there is no warranty for the work (except to the 107 | extent that warranties are provided), that licensees may convey the 108 | work under this License, and how to view a copy of this License. If 109 | the interface presents a list of user commands or options, such as a 110 | menu, a prominent item in the list meets this criterion. 111 | 112 | 1. Source Code. 113 | 114 | The "source code" for a work means the preferred form of the work 115 | for making modifications to it. "Object code" means any non-source 116 | form of a work. 117 | 118 | A "Standard Interface" means an interface that either is an official 119 | standard defined by a recognized standards body, or, in the case of 120 | interfaces specified for a particular programming language, one that 121 | is widely used among developers working in that language. 122 | 123 | The "System Libraries" of an executable work include anything, other 124 | than the work as a whole, that (a) is included in the normal form of 125 | packaging a Major Component, but which is not part of that Major 126 | Component, and (b) serves only to enable use of the work with that 127 | Major Component, or to implement a Standard Interface for which an 128 | implementation is available to the public in source code form. A 129 | "Major Component", in this context, means a major essential component 130 | (kernel, window system, and so on) of the specific operating system 131 | (if any) on which the executable work runs, or a compiler used to 132 | produce the work, or an object code interpreter used to run it. 133 | 134 | The "Corresponding Source" for a work in object code form means all 135 | the source code needed to generate, install, and (for an executable 136 | work) run the object code and to modify the work, including scripts to 137 | control those activities. However, it does not include the work's 138 | System Libraries, or general-purpose tools or generally available free 139 | programs which are used unmodified in performing those activities but 140 | which are not part of the work. For example, Corresponding Source 141 | includes interface definition files associated with source files for 142 | the work, and the source code for shared libraries and dynamically 143 | linked subprograms that the work is specifically designed to require, 144 | such as by intimate data communication or control flow between those 145 | subprograms and other parts of the work. 146 | 147 | The Corresponding Source need not include anything that users 148 | can regenerate automatically from other parts of the Corresponding 149 | Source. 150 | 151 | The Corresponding Source for a work in source code form is that 152 | same work. 153 | 154 | 2. Basic Permissions. 155 | 156 | All rights granted under this License are granted for the term of 157 | copyright on the Program, and are irrevocable provided the stated 158 | conditions are met. This License explicitly affirms your unlimited 159 | permission to run the unmodified Program. The output from running a 160 | covered work is covered by this License only if the output, given its 161 | content, constitutes a covered work. This License acknowledges your 162 | rights of fair use or other equivalent, as provided by copyright law. 163 | 164 | You may make, run and propagate covered works that you do not 165 | convey, without conditions so long as your license otherwise remains 166 | in force. You may convey covered works to others for the sole purpose 167 | of having them make modifications exclusively for you, or provide you 168 | with facilities for running those works, provided that you comply with 169 | the terms of this License in conveying all material for which you do 170 | not control copyright. Those thus making or running the covered works 171 | for you must do so exclusively on your behalf, under your direction 172 | and control, on terms that prohibit them from making any copies of 173 | your copyrighted material outside their relationship with you. 174 | 175 | Conveying under any other circumstances is permitted solely under 176 | the conditions stated below. Sublicensing is not allowed; section 10 177 | makes it unnecessary. 178 | 179 | 3. Protecting Users' Legal Rights From Anti-Circumvention Law. 180 | 181 | No covered work shall be deemed part of an effective technological 182 | measure under any applicable law fulfilling obligations under article 183 | 11 of the WIPO copyright treaty adopted on 20 December 1996, or 184 | similar laws prohibiting or restricting circumvention of such 185 | measures. 186 | 187 | When you convey a covered work, you waive any legal power to forbid 188 | circumvention of technological measures to the extent such circumvention 189 | is effected by exercising rights under this License with respect to 190 | the covered work, and you disclaim any intention to limit operation or 191 | modification of the work as a means of enforcing, against the work's 192 | users, your or third parties' legal rights to forbid circumvention of 193 | technological measures. 194 | 195 | 4. Conveying Verbatim Copies. 196 | 197 | You may convey verbatim copies of the Program's source code as you 198 | receive it, in any medium, provided that you conspicuously and 199 | appropriately publish on each copy an appropriate copyright notice; 200 | keep intact all notices stating that this License and any 201 | non-permissive terms added in accord with section 7 apply to the code; 202 | keep intact all notices of the absence of any warranty; and give all 203 | recipients a copy of this License along with the Program. 204 | 205 | You may charge any price or no price for each copy that you convey, 206 | and you may offer support or warranty protection for a fee. 207 | 208 | 5. Conveying Modified Source Versions. 209 | 210 | You may convey a work based on the Program, or the modifications to 211 | produce it from the Program, in the form of source code under the 212 | terms of section 4, provided that you also meet all of these conditions: 213 | 214 | a) The work must carry prominent notices stating that you modified 215 | it, and giving a relevant date. 216 | 217 | b) The work must carry prominent notices stating that it is 218 | released under this License and any conditions added under section 219 | 7. This requirement modifies the requirement in section 4 to 220 | "keep intact all notices". 221 | 222 | c) You must license the entire work, as a whole, under this 223 | License to anyone who comes into possession of a copy. This 224 | License will therefore apply, along with any applicable section 7 225 | additional terms, to the whole of the work, and all its parts, 226 | regardless of how they are packaged. This License gives no 227 | permission to license the work in any other way, but it does not 228 | invalidate such permission if you have separately received it. 229 | 230 | d) If the work has interactive user interfaces, each must display 231 | Appropriate Legal Notices; however, if the Program has interactive 232 | interfaces that do not display Appropriate Legal Notices, your 233 | work need not make them do so. 234 | 235 | A compilation of a covered work with other separate and independent 236 | works, which are not by their nature extensions of the covered work, 237 | and which are not combined with it such as to form a larger program, 238 | in or on a volume of a storage or distribution medium, is called an 239 | "aggregate" if the compilation and its resulting copyright are not 240 | used to limit the access or legal rights of the compilation's users 241 | beyond what the individual works permit. Inclusion of a covered work 242 | in an aggregate does not cause this License to apply to the other 243 | parts of the aggregate. 244 | 245 | 6. Conveying Non-Source Forms. 246 | 247 | You may convey a covered work in object code form under the terms 248 | of sections 4 and 5, provided that you also convey the 249 | machine-readable Corresponding Source under the terms of this License, 250 | in one of these ways: 251 | 252 | a) Convey the object code in, or embodied in, a physical product 253 | (including a physical distribution medium), accompanied by the 254 | Corresponding Source fixed on a durable physical medium 255 | customarily used for software interchange. 256 | 257 | b) Convey the object code in, or embodied in, a physical product 258 | (including a physical distribution medium), accompanied by a 259 | written offer, valid for at least three years and valid for as 260 | long as you offer spare parts or customer support for that product 261 | model, to give anyone who possesses the object code either (1) a 262 | copy of the Corresponding Source for all the software in the 263 | product that is covered by this License, on a durable physical 264 | medium customarily used for software interchange, for a price no 265 | more than your reasonable cost of physically performing this 266 | conveying of source, or (2) access to copy the 267 | Corresponding Source from a network server at no charge. 268 | 269 | c) Convey individual copies of the object code with a copy of the 270 | written offer to provide the Corresponding Source. This 271 | alternative is allowed only occasionally and noncommercially, and 272 | only if you received the object code with such an offer, in accord 273 | with subsection 6b. 274 | 275 | d) Convey the object code by offering access from a designated 276 | place (gratis or for a charge), and offer equivalent access to the 277 | Corresponding Source in the same way through the same place at no 278 | further charge. You need not require recipients to copy the 279 | Corresponding Source along with the object code. If the place to 280 | copy the object code is a network server, the Corresponding Source 281 | may be on a different server (operated by you or a third party) 282 | that supports equivalent copying facilities, provided you maintain 283 | clear directions next to the object code saying where to find the 284 | Corresponding Source. Regardless of what server hosts the 285 | Corresponding Source, you remain obligated to ensure that it is 286 | available for as long as needed to satisfy these requirements. 287 | 288 | e) Convey the object code using peer-to-peer transmission, provided 289 | you inform other peers where the object code and Corresponding 290 | Source of the work are being offered to the general public at no 291 | charge under subsection 6d. 292 | 293 | A separable portion of the object code, whose source code is excluded 294 | from the Corresponding Source as a System Library, need not be 295 | included in conveying the object code work. 296 | 297 | A "User Product" is either (1) a "consumer product", which means any 298 | tangible personal property which is normally used for personal, family, 299 | or household purposes, or (2) anything designed or sold for incorporation 300 | into a dwelling. In determining whether a product is a consumer product, 301 | doubtful cases shall be resolved in favor of coverage. For a particular 302 | product received by a particular user, "normally used" refers to a 303 | typical or common use of that class of product, regardless of the status 304 | of the particular user or of the way in which the particular user 305 | actually uses, or expects or is expected to use, the product. A product 306 | is a consumer product regardless of whether the product has substantial 307 | commercial, industrial or non-consumer uses, unless such uses represent 308 | the only significant mode of use of the product. 309 | 310 | "Installation Information" for a User Product means any methods, 311 | procedures, authorization keys, or other information required to install 312 | and execute modified versions of a covered work in that User Product from 313 | a modified version of its Corresponding Source. The information must 314 | suffice to ensure that the continued functioning of the modified object 315 | code is in no case prevented or interfered with solely because 316 | modification has been made. 317 | 318 | If you convey an object code work under this section in, or with, or 319 | specifically for use in, a User Product, and the conveying occurs as 320 | part of a transaction in which the right of possession and use of the 321 | User Product is transferred to the recipient in perpetuity or for a 322 | fixed term (regardless of how the transaction is characterized), the 323 | Corresponding Source conveyed under this section must be accompanied 324 | by the Installation Information. But this requirement does not apply 325 | if neither you nor any third party retains the ability to install 326 | modified object code on the User Product (for example, the work has 327 | been installed in ROM). 328 | 329 | The requirement to provide Installation Information does not include a 330 | requirement to continue to provide support service, warranty, or updates 331 | for a work that has been modified or installed by the recipient, or for 332 | the User Product in which it has been modified or installed. Access to a 333 | network may be denied when the modification itself materially and 334 | adversely affects the operation of the network or violates the rules and 335 | protocols for communication across the network. 336 | 337 | Corresponding Source conveyed, and Installation Information provided, 338 | in accord with this section must be in a format that is publicly 339 | documented (and with an implementation available to the public in 340 | source code form), and must require no special password or key for 341 | unpacking, reading or copying. 342 | 343 | 7. Additional Terms. 344 | 345 | "Additional permissions" are terms that supplement the terms of this 346 | License by making exceptions from one or more of its conditions. 347 | Additional permissions that are applicable to the entire Program shall 348 | be treated as though they were included in this License, to the extent 349 | that they are valid under applicable law. If additional permissions 350 | apply only to part of the Program, that part may be used separately 351 | under those permissions, but the entire Program remains governed by 352 | this License without regard to the additional permissions. 353 | 354 | When you convey a copy of a covered work, you may at your option 355 | remove any additional permissions from that copy, or from any part of 356 | it. (Additional permissions may be written to require their own 357 | removal in certain cases when you modify the work.) You may place 358 | additional permissions on material, added by you to a covered work, 359 | for which you have or can give appropriate copyright permission. 360 | 361 | Notwithstanding any other provision of this License, for material you 362 | add to a covered work, you may (if authorized by the copyright holders of 363 | that material) supplement the terms of this License with terms: 364 | 365 | a) Disclaiming warranty or limiting liability differently from the 366 | terms of sections 15 and 16 of this License; or 367 | 368 | b) Requiring preservation of specified reasonable legal notices or 369 | author attributions in that material or in the Appropriate Legal 370 | Notices displayed by works containing it; or 371 | 372 | c) Prohibiting misrepresentation of the origin of that material, or 373 | requiring that modified versions of such material be marked in 374 | reasonable ways as different from the original version; or 375 | 376 | d) Limiting the use for publicity purposes of names of licensors or 377 | authors of the material; or 378 | 379 | e) Declining to grant rights under trademark law for use of some 380 | trade names, trademarks, or service marks; or 381 | 382 | f) Requiring indemnification of licensors and authors of that 383 | material by anyone who conveys the material (or modified versions of 384 | it) with contractual assumptions of liability to the recipient, for 385 | any liability that these contractual assumptions directly impose on 386 | those licensors and authors. 387 | 388 | All other non-permissive additional terms are considered "further 389 | restrictions" within the meaning of section 10. If the Program as you 390 | received it, or any part of it, contains a notice stating that it is 391 | governed by this License along with a term that is a further 392 | restriction, you may remove that term. If a license document contains 393 | a further restriction but permits relicensing or conveying under this 394 | License, you may add to a covered work material governed by the terms 395 | of that license document, provided that the further restriction does 396 | not survive such relicensing or conveying. 397 | 398 | If you add terms to a covered work in accord with this section, you 399 | must place, in the relevant source files, a statement of the 400 | additional terms that apply to those files, or a notice indicating 401 | where to find the applicable terms. 402 | 403 | Additional terms, permissive or non-permissive, may be stated in the 404 | form of a separately written license, or stated as exceptions; 405 | the above requirements apply either way. 406 | 407 | 8. Termination. 408 | 409 | You may not propagate or modify a covered work except as expressly 410 | provided under this License. Any attempt otherwise to propagate or 411 | modify it is void, and will automatically terminate your rights under 412 | this License (including any patent licenses granted under the third 413 | paragraph of section 11). 414 | 415 | However, if you cease all violation of this License, then your 416 | license from a particular copyright holder is reinstated (a) 417 | provisionally, unless and until the copyright holder explicitly and 418 | finally terminates your license, and (b) permanently, if the copyright 419 | holder fails to notify you of the violation by some reasonable means 420 | prior to 60 days after the cessation. 421 | 422 | Moreover, your license from a particular copyright holder is 423 | reinstated permanently if the copyright holder notifies you of the 424 | violation by some reasonable means, this is the first time you have 425 | received notice of violation of this License (for any work) from that 426 | copyright holder, and you cure the violation prior to 30 days after 427 | your receipt of the notice. 428 | 429 | Termination of your rights under this section does not terminate the 430 | licenses of parties who have received copies or rights from you under 431 | this License. If your rights have been terminated and not permanently 432 | reinstated, you do not qualify to receive new licenses for the same 433 | material under section 10. 434 | 435 | 9. Acceptance Not Required for Having Copies. 436 | 437 | You are not required to accept this License in order to receive or 438 | run a copy of the Program. Ancillary propagation of a covered work 439 | occurring solely as a consequence of using peer-to-peer transmission 440 | to receive a copy likewise does not require acceptance. However, 441 | nothing other than this License grants you permission to propagate or 442 | modify any covered work. These actions infringe copyright if you do 443 | not accept this License. Therefore, by modifying or propagating a 444 | covered work, you indicate your acceptance of this License to do so. 445 | 446 | 10. Automatic Licensing of Downstream Recipients. 447 | 448 | Each time you convey a covered work, the recipient automatically 449 | receives a license from the original licensors, to run, modify and 450 | propagate that work, subject to this License. You are not responsible 451 | for enforcing compliance by third parties with this License. 452 | 453 | An "entity transaction" is a transaction transferring control of an 454 | organization, or substantially all assets of one, or subdividing an 455 | organization, or merging organizations. If propagation of a covered 456 | work results from an entity transaction, each party to that 457 | transaction who receives a copy of the work also receives whatever 458 | licenses to the work the party's predecessor in interest had or could 459 | give under the previous paragraph, plus a right to possession of the 460 | Corresponding Source of the work from the predecessor in interest, if 461 | the predecessor has it or can get it with reasonable efforts. 462 | 463 | You may not impose any further restrictions on the exercise of the 464 | rights granted or affirmed under this License. For example, you may 465 | not impose a license fee, royalty, or other charge for exercise of 466 | rights granted under this License, and you may not initiate litigation 467 | (including a cross-claim or counterclaim in a lawsuit) alleging that 468 | any patent claim is infringed by making, using, selling, offering for 469 | sale, or importing the Program or any portion of it. 470 | 471 | 11. Patents. 472 | 473 | A "contributor" is a copyright holder who authorizes use under this 474 | License of the Program or a work on which the Program is based. The 475 | work thus licensed is called the contributor's "contributor version". 476 | 477 | A contributor's "essential patent claims" are all patent claims 478 | owned or controlled by the contributor, whether already acquired or 479 | hereafter acquired, that would be infringed by some manner, permitted 480 | by this License, of making, using, or selling its contributor version, 481 | but do not include claims that would be infringed only as a 482 | consequence of further modification of the contributor version. For 483 | purposes of this definition, "control" includes the right to grant 484 | patent sublicenses in a manner consistent with the requirements of 485 | this License. 486 | 487 | Each contributor grants you a non-exclusive, worldwide, royalty-free 488 | patent license under the contributor's essential patent claims, to 489 | make, use, sell, offer for sale, import and otherwise run, modify and 490 | propagate the contents of its contributor version. 491 | 492 | In the following three paragraphs, a "patent license" is any express 493 | agreement or commitment, however denominated, not to enforce a patent 494 | (such as an express permission to practice a patent or covenant not to 495 | sue for patent infringement). To "grant" such a patent license to a 496 | party means to make such an agreement or commitment not to enforce a 497 | patent against the party. 498 | 499 | If you convey a covered work, knowingly relying on a patent license, 500 | and the Corresponding Source of the work is not available for anyone 501 | to copy, free of charge and under the terms of this License, through a 502 | publicly available network server or other readily accessible means, 503 | then you must either (1) cause the Corresponding Source to be so 504 | available, or (2) arrange to deprive yourself of the benefit of the 505 | patent license for this particular work, or (3) arrange, in a manner 506 | consistent with the requirements of this License, to extend the patent 507 | license to downstream recipients. "Knowingly relying" means you have 508 | actual knowledge that, but for the patent license, your conveying the 509 | covered work in a country, or your recipient's use of the covered work 510 | in a country, would infringe one or more identifiable patents in that 511 | country that you have reason to believe are valid. 512 | 513 | If, pursuant to or in connection with a single transaction or 514 | arrangement, you convey, or propagate by procuring conveyance of, a 515 | covered work, and grant a patent license to some of the parties 516 | receiving the covered work authorizing them to use, propagate, modify 517 | or convey a specific copy of the covered work, then the patent license 518 | you grant is automatically extended to all recipients of the covered 519 | work and works based on it. 520 | 521 | A patent license is "discriminatory" if it does not include within 522 | the scope of its coverage, prohibits the exercise of, or is 523 | conditioned on the non-exercise of one or more of the rights that are 524 | specifically granted under this License. You may not convey a covered 525 | work if you are a party to an arrangement with a third party that is 526 | in the business of distributing software, under which you make payment 527 | to the third party based on the extent of your activity of conveying 528 | the work, and under which the third party grants, to any of the 529 | parties who would receive the covered work from you, a discriminatory 530 | patent license (a) in connection with copies of the covered work 531 | conveyed by you (or copies made from those copies), or (b) primarily 532 | for and in connection with specific products or compilations that 533 | contain the covered work, unless you entered into that arrangement, 534 | or that patent license was granted, prior to 28 March 2007. 535 | 536 | Nothing in this License shall be construed as excluding or limiting 537 | any implied license or other defenses to infringement that may 538 | otherwise be available to you under applicable patent law. 539 | 540 | 12. No Surrender of Others' Freedom. 541 | 542 | If conditions are imposed on you (whether by court order, agreement or 543 | otherwise) that contradict the conditions of this License, they do not 544 | excuse you from the conditions of this License. If you cannot convey a 545 | covered work so as to satisfy simultaneously your obligations under this 546 | License and any other pertinent obligations, then as a consequence you may 547 | not convey it at all. For example, if you agree to terms that obligate you 548 | to collect a royalty for further conveying from those to whom you convey 549 | the Program, the only way you could satisfy both those terms and this 550 | License would be to refrain entirely from conveying the Program. 551 | 552 | 13. Use with the GNU Affero General Public License. 553 | 554 | Notwithstanding any other provision of this License, you have 555 | permission to link or combine any covered work with a work licensed 556 | under version 3 of the GNU Affero General Public License into a single 557 | combined work, and to convey the resulting work. The terms of this 558 | License will continue to apply to the part which is the covered work, 559 | but the special requirements of the GNU Affero General Public License, 560 | section 13, concerning interaction through a network will apply to the 561 | combination as such. 562 | 563 | 14. Revised Versions of this License. 564 | 565 | The Free Software Foundation may publish revised and/or new versions of 566 | the GNU General Public License from time to time. Such new versions will 567 | be similar in spirit to the present version, but may differ in detail to 568 | address new problems or concerns. 569 | 570 | Each version is given a distinguishing version number. If the 571 | Program specifies that a certain numbered version of the GNU General 572 | Public License "or any later version" applies to it, you have the 573 | option of following the terms and conditions either of that numbered 574 | version or of any later version published by the Free Software 575 | Foundation. If the Program does not specify a version number of the 576 | GNU General Public License, you may choose any version ever published 577 | by the Free Software Foundation. 578 | 579 | If the Program specifies that a proxy can decide which future 580 | versions of the GNU General Public License can be used, that proxy's 581 | public statement of acceptance of a version permanently authorizes you 582 | to choose that version for the Program. 583 | 584 | Later license versions may give you additional or different 585 | permissions. However, no additional obligations are imposed on any 586 | author or copyright holder as a result of your choosing to follow a 587 | later version. 588 | 589 | 15. Disclaimer of Warranty. 590 | 591 | THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY 592 | APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT 593 | HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY 594 | OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, 595 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 596 | PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM 597 | IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF 598 | ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 599 | 600 | 16. Limitation of Liability. 601 | 602 | IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING 603 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS 604 | THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY 605 | GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE 606 | USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF 607 | DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD 608 | PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), 609 | EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF 610 | SUCH DAMAGES. 611 | 612 | 17. Interpretation of Sections 15 and 16. 613 | 614 | If the disclaimer of warranty and limitation of liability provided 615 | above cannot be given local legal effect according to their terms, 616 | reviewing courts shall apply local law that most closely approximates 617 | an absolute waiver of all civil liability in connection with the 618 | Program, unless a warranty or assumption of liability accompanies a 619 | copy of the Program in return for a fee. 620 | 621 | END OF TERMS AND CONDITIONS 622 | 623 | How to Apply These Terms to Your New Programs 624 | 625 | If you develop a new program, and you want it to be of the greatest 626 | possible use to the public, the best way to achieve this is to make it 627 | free software which everyone can redistribute and change under these terms. 628 | 629 | To do so, attach the following notices to the program. It is safest 630 | to attach them to the start of each source file to most effectively 631 | state the exclusion of warranty; and each file should have at least 632 | the "copyright" line and a pointer to where the full notice is found. 633 | 634 | 635 | Copyright (C) 636 | 637 | This program is free software: you can redistribute it and/or modify 638 | it under the terms of the GNU General Public License as published by 639 | the Free Software Foundation, either version 3 of the License, or 640 | (at your option) any later version. 641 | 642 | This program is distributed in the hope that it will be useful, 643 | but WITHOUT ANY WARRANTY; without even the implied warranty of 644 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 645 | GNU General Public License for more details. 646 | 647 | You should have received a copy of the GNU General Public License 648 | along with this program. If not, see . 649 | 650 | Also add information on how to contact you by electronic and paper mail. 651 | 652 | If the program does terminal interaction, make it output a short 653 | notice like this when it starts in an interactive mode: 654 | 655 | Copyright (C) 656 | This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. 657 | This is free software, and you are welcome to redistribute it 658 | under certain conditions; type `show c' for details. 659 | 660 | The hypothetical commands `show w' and `show c' should show the appropriate 661 | parts of the General Public License. Of course, your program's commands 662 | might be different; for a GUI interface, you would use an "about box". 663 | 664 | You should also get your employer (if you work as a programmer) or school, 665 | if any, to sign a "copyright disclaimer" for the program, if necessary. 666 | For more information on this, and how to apply and follow the GNU GPL, see 667 | . 668 | 669 | The GNU General Public License does not permit incorporating your program 670 | into proprietary programs. If your program is a subroutine library, you 671 | may consider it more useful to permit linking proprietary applications with 672 | the library. If this is what you want to do, use the GNU Lesser General 673 | Public License instead of this License. But first, please read 674 | . 675 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # peak_executor 2 | 3 | This is a simple standalone FiveM in-game UI made using React and Shadcn to run client-side code (also known as a Lua Executor). You can use it to test how secure your scripts are. Not recommended to use this in production. 4 | 5 | To open it, press F7 (Admin permissions required). 6 | 7 | -------------------------------------------------------------------------------- /client.lua: -------------------------------------------------------------------------------- 1 | local utils = require 'modules.utils.client' 2 | local visible = false 3 | 4 | local function toggleUI() 5 | local isAdmin = lib.callback.await('peak_executor:server:isPlayerAdmin', false) 6 | if not isAdmin then 7 | utils.notify('You are not allowed to use this', 'error') 8 | return 9 | end 10 | 11 | visible = not visible 12 | SetNuiFocus(visible, visible) 13 | utils.sendNuiMessage('setVisible', visible) 14 | end 15 | 16 | RegisterNUICallback('executeCode', function(data, cb) 17 | if not data.code then 18 | cb({ success = false, output = 'No code provided' }) 19 | return 20 | end 21 | 22 | local func, err = load(data.code) 23 | if func then 24 | local success, result = pcall(func) 25 | cb({ 26 | success = success, 27 | output = success and (result or 'Code executed successfully') or result 28 | }) 29 | else 30 | cb({ 31 | success = false, 32 | output = err 33 | }) 34 | end 35 | end) 36 | 37 | RegisterNUICallback('hideFrame', function(_, cb) 38 | toggleUI() 39 | cb({}) 40 | end) 41 | 42 | CreateThread(function() 43 | while true do 44 | if visible then 45 | if IsControlJustReleased(0, 322) then 46 | toggleUI() 47 | end 48 | end 49 | Wait(0) 50 | end 51 | end) 52 | 53 | 54 | lib.addKeybind({ 55 | name = 'executor', 56 | description = 'Opens code executor', 57 | defaultKey = 'F7', 58 | onPressed = function() 59 | toggleUI() 60 | end, 61 | }) -------------------------------------------------------------------------------- /fxmanifest.lua: -------------------------------------------------------------------------------- 1 | fx_version 'cerulean' 2 | game 'gta5' 3 | 4 | author 'Peak Scripts | KostaZ' 5 | description 'Code Executor' 6 | version '0.0.1' 7 | lua54 'yes' 8 | use_experimental_fxv2_oal 'yes' 9 | 10 | shared_scripts { 11 | '@ox_lib/init.lua' 12 | } 13 | 14 | server_scripts { 15 | 'server.lua' 16 | } 17 | 18 | client_scripts { 19 | 'client.lua' 20 | } 21 | 22 | ui_page 'web/dist/index.html' 23 | 24 | files { 25 | 'modules/**/**.lua', 26 | 'web/dist/index.html', 27 | 'web/dist/**/*', 28 | } 29 | 30 | -------------------------------------------------------------------------------- /modules/utils/client.lua: -------------------------------------------------------------------------------- 1 | local utils = {} 2 | 3 | --- @param message string 4 | --- @param type string 5 | function utils.notify(message, type) 6 | lib.notify({ 7 | position = 'top', 8 | title = 'Code Executor', 9 | description = message, 10 | style = { 11 | backgroundColor = '#141517', 12 | color = '#C1C2C5', 13 | ['.description'] = { 14 | color = '#909296' 15 | } 16 | }, 17 | type = type 18 | }) 19 | end 20 | 21 | ---@param action string 22 | ---@param data any 23 | function utils.sendNuiMessage(action, data) 24 | SendNUIMessage({ 25 | action = action, 26 | data = data 27 | }) 28 | end 29 | 30 | return utils -------------------------------------------------------------------------------- /server.lua: -------------------------------------------------------------------------------- 1 | lib.versionCheck('Peak-Scripts/peak_executor') 2 | 3 | lib.callback.register('peak_executor:server:isPlayerAdmin', function() 4 | return IsPlayerAceAllowed(source, 'command') 5 | end) 6 | -------------------------------------------------------------------------------- /web/.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | root: true, 3 | env: { browser: true, es2020: true }, 4 | extends: [ 5 | "eslint:recommended", 6 | "plugin:@typescript-eslint/recommended", 7 | "plugin:react-hooks/recommended", 8 | ], 9 | ignorePatterns: ["dist", ".eslintrc.cjs"], 10 | parser: "@typescript-eslint/parser", 11 | plugins: ["react-refresh"], 12 | rules: { 13 | "react-refresh/only-export-components": [ 14 | "warn", 15 | { allowConstantExport: true }, 16 | ], 17 | }, 18 | }; 19 | -------------------------------------------------------------------------------- /web/.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | pnpm-debug.log* 8 | lerna-debug.log* 9 | 10 | node_modules 11 | build 12 | *.local 13 | 14 | # Editor directories and files 15 | .vscode/* 16 | !.vscode/extensions.json 17 | .idea 18 | .DS_Store 19 | *.suo 20 | *.ntvs* 21 | *.njsproj 22 | *.sln 23 | *.sw? 24 | -------------------------------------------------------------------------------- /web/components.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://ui.shadcn.com/schema.json", 3 | "style": "new-york", 4 | "rsc": false, 5 | "tsx": true, 6 | "tailwind": { 7 | "config": "tailwind.config.js", 8 | "css": "src/index.css", 9 | "baseColor": "neutral", 10 | "cssVariables": true, 11 | "prefix": "" 12 | }, 13 | "aliases": { 14 | "components": "@/components", 15 | "utils": "@/lib/utils", 16 | "ui": "@/components/ui", 17 | "lib": "@/lib", 18 | "hooks": "@/hooks" 19 | }, 20 | "iconLibrary": "lucide" 21 | } -------------------------------------------------------------------------------- /web/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | NUI React Boilerplate 8 | 9 | 10 |
11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /web/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "web", 3 | "homepage": "web/build", 4 | "private": true, 5 | "type": "module", 6 | "version": "0.1.0", 7 | "scripts": { 8 | "start": "vite", 9 | "start:game": "vite build --watch", 10 | "build": "tsc && vite build", 11 | "preview": "vite preview" 12 | }, 13 | "dependencies": { 14 | "@eslint/config-array": "^0.19.1", 15 | "@eslint/object-schema": "^2.1.5", 16 | "@monaco-editor/react": "^4.6.0", 17 | "@radix-ui/react-scroll-area": "^1.2.2", 18 | "@radix-ui/react-select": "^2.1.4", 19 | "@radix-ui/react-slot": "^1.1.1", 20 | "@radix-ui/react-toast": "^1.2.4", 21 | "@types/prismjs": "^1.26.5", 22 | "class-variance-authority": "^0.7.1", 23 | "clsx": "^2.1.1", 24 | "lucide-react": "^0.469.0", 25 | "prismjs": "^1.29.0", 26 | "react": "^18.2.0", 27 | "react-dom": "^18.2.0", 28 | "react-simple-code-editor": "^0.14.1", 29 | "tailwind-merge": "^2.6.0", 30 | "tailwindcss-animate": "^1.0.7" 31 | }, 32 | "devDependencies": { 33 | "@types/node": "^22.10.5", 34 | "@types/react": "^18.2.37", 35 | "@types/react-dom": "^18.2.15", 36 | "@typescript-eslint/eslint-plugin": "^8.19.0", 37 | "@typescript-eslint/parser": "^8.19.0", 38 | "@vitejs/plugin-react": "^4.2.0", 39 | "autoprefixer": "^10.4.20", 40 | "eslint": "^9.17.0", 41 | "eslint-plugin-react-hooks": "^5.1.0", 42 | "eslint-plugin-react-refresh": "^0.4.4", 43 | "postcss": "^8.4.49", 44 | "tailwindcss": "^3.4.17", 45 | "typescript": "^5.2.2", 46 | "vite": "^5.0.0" 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /web/pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '9.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | importers: 8 | 9 | .: 10 | dependencies: 11 | '@eslint/config-array': 12 | specifier: ^0.19.1 13 | version: 0.19.1 14 | '@eslint/object-schema': 15 | specifier: ^2.1.5 16 | version: 2.1.5 17 | '@radix-ui/react-scroll-area': 18 | specifier: ^1.2.2 19 | version: 1.2.2(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 20 | '@radix-ui/react-select': 21 | specifier: ^2.1.4 22 | version: 2.1.4(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 23 | '@radix-ui/react-slot': 24 | specifier: ^1.1.1 25 | version: 1.1.1(@types/react@18.3.18)(react@18.3.1) 26 | '@radix-ui/react-toast': 27 | specifier: ^1.2.4 28 | version: 1.2.4(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 29 | '@types/prismjs': 30 | specifier: ^1.26.5 31 | version: 1.26.5 32 | class-variance-authority: 33 | specifier: ^0.7.1 34 | version: 0.7.1 35 | clsx: 36 | specifier: ^2.1.1 37 | version: 2.1.1 38 | lucide-react: 39 | specifier: ^0.469.0 40 | version: 0.469.0(react@18.3.1) 41 | prismjs: 42 | specifier: ^1.29.0 43 | version: 1.29.0 44 | react: 45 | specifier: ^18.2.0 46 | version: 18.3.1 47 | react-dom: 48 | specifier: ^18.2.0 49 | version: 18.3.1(react@18.3.1) 50 | react-simple-code-editor: 51 | specifier: ^0.14.1 52 | version: 0.14.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 53 | tailwind-merge: 54 | specifier: ^2.6.0 55 | version: 2.6.0 56 | tailwindcss-animate: 57 | specifier: ^1.0.7 58 | version: 1.0.7(tailwindcss@3.4.17) 59 | devDependencies: 60 | '@types/node': 61 | specifier: ^22.10.5 62 | version: 22.10.5 63 | '@types/react': 64 | specifier: ^18.2.37 65 | version: 18.3.18 66 | '@types/react-dom': 67 | specifier: ^18.2.15 68 | version: 18.3.5(@types/react@18.3.18) 69 | '@typescript-eslint/eslint-plugin': 70 | specifier: ^8.19.0 71 | version: 8.19.0(@typescript-eslint/parser@8.19.0(eslint@9.17.0(jiti@1.21.7))(typescript@5.7.2))(eslint@9.17.0(jiti@1.21.7))(typescript@5.7.2) 72 | '@typescript-eslint/parser': 73 | specifier: ^8.19.0 74 | version: 8.19.0(eslint@9.17.0(jiti@1.21.7))(typescript@5.7.2) 75 | '@vitejs/plugin-react': 76 | specifier: ^4.2.0 77 | version: 4.3.4(vite@5.4.11(@types/node@22.10.5)) 78 | autoprefixer: 79 | specifier: ^10.4.20 80 | version: 10.4.20(postcss@8.4.49) 81 | eslint: 82 | specifier: ^9.17.0 83 | version: 9.17.0(jiti@1.21.7) 84 | eslint-plugin-react-hooks: 85 | specifier: ^5.1.0 86 | version: 5.1.0(eslint@9.17.0(jiti@1.21.7)) 87 | eslint-plugin-react-refresh: 88 | specifier: ^0.4.4 89 | version: 0.4.16(eslint@9.17.0(jiti@1.21.7)) 90 | postcss: 91 | specifier: ^8.4.49 92 | version: 8.4.49 93 | tailwindcss: 94 | specifier: ^3.4.17 95 | version: 3.4.17 96 | typescript: 97 | specifier: ^5.2.2 98 | version: 5.7.2 99 | vite: 100 | specifier: ^5.0.0 101 | version: 5.4.11(@types/node@22.10.5) 102 | 103 | packages: 104 | 105 | '@alloc/quick-lru@5.2.0': 106 | resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} 107 | engines: {node: '>=10'} 108 | 109 | '@ampproject/remapping@2.3.0': 110 | resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} 111 | engines: {node: '>=6.0.0'} 112 | 113 | '@babel/code-frame@7.26.2': 114 | resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} 115 | engines: {node: '>=6.9.0'} 116 | 117 | '@babel/compat-data@7.26.3': 118 | resolution: {integrity: sha512-nHIxvKPniQXpmQLb0vhY3VaFb3S0YrTAwpOWJZh1wn3oJPjJk9Asva204PsBdmAE8vpzfHudT8DB0scYvy9q0g==} 119 | engines: {node: '>=6.9.0'} 120 | 121 | '@babel/core@7.26.0': 122 | resolution: {integrity: sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==} 123 | engines: {node: '>=6.9.0'} 124 | 125 | '@babel/generator@7.26.3': 126 | resolution: {integrity: sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ==} 127 | engines: {node: '>=6.9.0'} 128 | 129 | '@babel/helper-compilation-targets@7.25.9': 130 | resolution: {integrity: sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==} 131 | engines: {node: '>=6.9.0'} 132 | 133 | '@babel/helper-module-imports@7.25.9': 134 | resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==} 135 | engines: {node: '>=6.9.0'} 136 | 137 | '@babel/helper-module-transforms@7.26.0': 138 | resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==} 139 | engines: {node: '>=6.9.0'} 140 | peerDependencies: 141 | '@babel/core': ^7.0.0 142 | 143 | '@babel/helper-plugin-utils@7.25.9': 144 | resolution: {integrity: sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==} 145 | engines: {node: '>=6.9.0'} 146 | 147 | '@babel/helper-string-parser@7.25.9': 148 | resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} 149 | engines: {node: '>=6.9.0'} 150 | 151 | '@babel/helper-validator-identifier@7.25.9': 152 | resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} 153 | engines: {node: '>=6.9.0'} 154 | 155 | '@babel/helper-validator-option@7.25.9': 156 | resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} 157 | engines: {node: '>=6.9.0'} 158 | 159 | '@babel/helpers@7.26.0': 160 | resolution: {integrity: sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==} 161 | engines: {node: '>=6.9.0'} 162 | 163 | '@babel/parser@7.26.3': 164 | resolution: {integrity: sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==} 165 | engines: {node: '>=6.0.0'} 166 | hasBin: true 167 | 168 | '@babel/plugin-transform-react-jsx-self@7.25.9': 169 | resolution: {integrity: sha512-y8quW6p0WHkEhmErnfe58r7x0A70uKphQm8Sp8cV7tjNQwK56sNVK0M73LK3WuYmsuyrftut4xAkjjgU0twaMg==} 170 | engines: {node: '>=6.9.0'} 171 | peerDependencies: 172 | '@babel/core': ^7.0.0-0 173 | 174 | '@babel/plugin-transform-react-jsx-source@7.25.9': 175 | resolution: {integrity: sha512-+iqjT8xmXhhYv4/uiYd8FNQsraMFZIfxVSqxxVSZP0WbbSAWvBXAul0m/zu+7Vv4O/3WtApy9pmaTMiumEZgfg==} 176 | engines: {node: '>=6.9.0'} 177 | peerDependencies: 178 | '@babel/core': ^7.0.0-0 179 | 180 | '@babel/template@7.25.9': 181 | resolution: {integrity: sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==} 182 | engines: {node: '>=6.9.0'} 183 | 184 | '@babel/traverse@7.26.4': 185 | resolution: {integrity: sha512-fH+b7Y4p3yqvApJALCPJcwb0/XaOSgtK4pzV6WVjPR5GLFQBRI7pfoX2V2iM48NXvX07NUxxm1Vw98YjqTcU5w==} 186 | engines: {node: '>=6.9.0'} 187 | 188 | '@babel/types@7.26.3': 189 | resolution: {integrity: sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==} 190 | engines: {node: '>=6.9.0'} 191 | 192 | '@esbuild/aix-ppc64@0.21.5': 193 | resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} 194 | engines: {node: '>=12'} 195 | cpu: [ppc64] 196 | os: [aix] 197 | 198 | '@esbuild/android-arm64@0.21.5': 199 | resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} 200 | engines: {node: '>=12'} 201 | cpu: [arm64] 202 | os: [android] 203 | 204 | '@esbuild/android-arm@0.21.5': 205 | resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} 206 | engines: {node: '>=12'} 207 | cpu: [arm] 208 | os: [android] 209 | 210 | '@esbuild/android-x64@0.21.5': 211 | resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} 212 | engines: {node: '>=12'} 213 | cpu: [x64] 214 | os: [android] 215 | 216 | '@esbuild/darwin-arm64@0.21.5': 217 | resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} 218 | engines: {node: '>=12'} 219 | cpu: [arm64] 220 | os: [darwin] 221 | 222 | '@esbuild/darwin-x64@0.21.5': 223 | resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} 224 | engines: {node: '>=12'} 225 | cpu: [x64] 226 | os: [darwin] 227 | 228 | '@esbuild/freebsd-arm64@0.21.5': 229 | resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} 230 | engines: {node: '>=12'} 231 | cpu: [arm64] 232 | os: [freebsd] 233 | 234 | '@esbuild/freebsd-x64@0.21.5': 235 | resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} 236 | engines: {node: '>=12'} 237 | cpu: [x64] 238 | os: [freebsd] 239 | 240 | '@esbuild/linux-arm64@0.21.5': 241 | resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} 242 | engines: {node: '>=12'} 243 | cpu: [arm64] 244 | os: [linux] 245 | 246 | '@esbuild/linux-arm@0.21.5': 247 | resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} 248 | engines: {node: '>=12'} 249 | cpu: [arm] 250 | os: [linux] 251 | 252 | '@esbuild/linux-ia32@0.21.5': 253 | resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} 254 | engines: {node: '>=12'} 255 | cpu: [ia32] 256 | os: [linux] 257 | 258 | '@esbuild/linux-loong64@0.21.5': 259 | resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} 260 | engines: {node: '>=12'} 261 | cpu: [loong64] 262 | os: [linux] 263 | 264 | '@esbuild/linux-mips64el@0.21.5': 265 | resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} 266 | engines: {node: '>=12'} 267 | cpu: [mips64el] 268 | os: [linux] 269 | 270 | '@esbuild/linux-ppc64@0.21.5': 271 | resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} 272 | engines: {node: '>=12'} 273 | cpu: [ppc64] 274 | os: [linux] 275 | 276 | '@esbuild/linux-riscv64@0.21.5': 277 | resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} 278 | engines: {node: '>=12'} 279 | cpu: [riscv64] 280 | os: [linux] 281 | 282 | '@esbuild/linux-s390x@0.21.5': 283 | resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} 284 | engines: {node: '>=12'} 285 | cpu: [s390x] 286 | os: [linux] 287 | 288 | '@esbuild/linux-x64@0.21.5': 289 | resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} 290 | engines: {node: '>=12'} 291 | cpu: [x64] 292 | os: [linux] 293 | 294 | '@esbuild/netbsd-x64@0.21.5': 295 | resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} 296 | engines: {node: '>=12'} 297 | cpu: [x64] 298 | os: [netbsd] 299 | 300 | '@esbuild/openbsd-x64@0.21.5': 301 | resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} 302 | engines: {node: '>=12'} 303 | cpu: [x64] 304 | os: [openbsd] 305 | 306 | '@esbuild/sunos-x64@0.21.5': 307 | resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} 308 | engines: {node: '>=12'} 309 | cpu: [x64] 310 | os: [sunos] 311 | 312 | '@esbuild/win32-arm64@0.21.5': 313 | resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} 314 | engines: {node: '>=12'} 315 | cpu: [arm64] 316 | os: [win32] 317 | 318 | '@esbuild/win32-ia32@0.21.5': 319 | resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} 320 | engines: {node: '>=12'} 321 | cpu: [ia32] 322 | os: [win32] 323 | 324 | '@esbuild/win32-x64@0.21.5': 325 | resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} 326 | engines: {node: '>=12'} 327 | cpu: [x64] 328 | os: [win32] 329 | 330 | '@eslint-community/eslint-utils@4.4.1': 331 | resolution: {integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==} 332 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 333 | peerDependencies: 334 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 335 | 336 | '@eslint-community/regexpp@4.12.1': 337 | resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} 338 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} 339 | 340 | '@eslint/config-array@0.19.1': 341 | resolution: {integrity: sha512-fo6Mtm5mWyKjA/Chy1BYTdn5mGJoDNjC7C64ug20ADsRDGrA85bN3uK3MaKbeRkRuuIEAR5N33Jr1pbm411/PA==} 342 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 343 | 344 | '@eslint/core@0.9.1': 345 | resolution: {integrity: sha512-GuUdqkyyzQI5RMIWkHhvTWLCyLo1jNK3vzkSyaExH5kHPDHcuL2VOpHjmMY+y3+NC69qAKToBqldTBgYeLSr9Q==} 346 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 347 | 348 | '@eslint/eslintrc@3.2.0': 349 | resolution: {integrity: sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==} 350 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 351 | 352 | '@eslint/js@9.17.0': 353 | resolution: {integrity: sha512-Sxc4hqcs1kTu0iID3kcZDW3JHq2a77HO9P8CP6YEA/FpH3Ll8UXE2r/86Rz9YJLKme39S9vU5OWNjC6Xl0Cr3w==} 354 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 355 | 356 | '@eslint/object-schema@2.1.5': 357 | resolution: {integrity: sha512-o0bhxnL89h5Bae5T318nFoFzGy+YE5i/gGkoPAgkmTVdRKTiv3p8JHevPiPaMwoloKfEiiaHlawCqaZMqRm+XQ==} 358 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 359 | 360 | '@eslint/plugin-kit@0.2.4': 361 | resolution: {integrity: sha512-zSkKow6H5Kdm0ZUQUB2kV5JIXqoG0+uH5YADhaEHswm664N9Db8dXSi0nMJpacpMf+MyyglF1vnZohpEg5yUtg==} 362 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 363 | 364 | '@floating-ui/core@1.6.8': 365 | resolution: {integrity: sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA==} 366 | 367 | '@floating-ui/dom@1.6.12': 368 | resolution: {integrity: sha512-NP83c0HjokcGVEMeoStg317VD9W7eDlGK7457dMBANbKA6GJZdc7rjujdgqzTaz93jkGgc5P/jeWbaCHnMNc+w==} 369 | 370 | '@floating-ui/react-dom@2.1.2': 371 | resolution: {integrity: sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==} 372 | peerDependencies: 373 | react: '>=16.8.0' 374 | react-dom: '>=16.8.0' 375 | 376 | '@floating-ui/utils@0.2.8': 377 | resolution: {integrity: sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==} 378 | 379 | '@humanfs/core@0.19.1': 380 | resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} 381 | engines: {node: '>=18.18.0'} 382 | 383 | '@humanfs/node@0.16.6': 384 | resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} 385 | engines: {node: '>=18.18.0'} 386 | 387 | '@humanwhocodes/module-importer@1.0.1': 388 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} 389 | engines: {node: '>=12.22'} 390 | 391 | '@humanwhocodes/retry@0.3.1': 392 | resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} 393 | engines: {node: '>=18.18'} 394 | 395 | '@humanwhocodes/retry@0.4.1': 396 | resolution: {integrity: sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==} 397 | engines: {node: '>=18.18'} 398 | 399 | '@isaacs/cliui@8.0.2': 400 | resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} 401 | engines: {node: '>=12'} 402 | 403 | '@jridgewell/gen-mapping@0.3.8': 404 | resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} 405 | engines: {node: '>=6.0.0'} 406 | 407 | '@jridgewell/resolve-uri@3.1.2': 408 | resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} 409 | engines: {node: '>=6.0.0'} 410 | 411 | '@jridgewell/set-array@1.2.1': 412 | resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} 413 | engines: {node: '>=6.0.0'} 414 | 415 | '@jridgewell/sourcemap-codec@1.5.0': 416 | resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} 417 | 418 | '@jridgewell/trace-mapping@0.3.25': 419 | resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} 420 | 421 | '@nodelib/fs.scandir@2.1.5': 422 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 423 | engines: {node: '>= 8'} 424 | 425 | '@nodelib/fs.stat@2.0.5': 426 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 427 | engines: {node: '>= 8'} 428 | 429 | '@nodelib/fs.walk@1.2.8': 430 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 431 | engines: {node: '>= 8'} 432 | 433 | '@pkgjs/parseargs@0.11.0': 434 | resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} 435 | engines: {node: '>=14'} 436 | 437 | '@radix-ui/number@1.1.0': 438 | resolution: {integrity: sha512-V3gRzhVNU1ldS5XhAPTom1fOIo4ccrjjJgmE+LI2h/WaFpHmx0MQApT+KZHnx8abG6Avtfcz4WoEciMnpFT3HQ==} 439 | 440 | '@radix-ui/primitive@1.1.1': 441 | resolution: {integrity: sha512-SJ31y+Q/zAyShtXJc8x83i9TYdbAfHZ++tUZnvjJJqFjzsdUnKsxPL6IEtBlxKkU7yzer//GQtZSV4GbldL3YA==} 442 | 443 | '@radix-ui/react-arrow@1.1.1': 444 | resolution: {integrity: sha512-NaVpZfmv8SKeZbn4ijN2V3jlHA9ngBG16VnIIm22nUR0Yk8KUALyBxT3KYEUnNuch9sTE8UTsS3whzBgKOL30w==} 445 | peerDependencies: 446 | '@types/react': '*' 447 | '@types/react-dom': '*' 448 | react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 449 | react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 450 | peerDependenciesMeta: 451 | '@types/react': 452 | optional: true 453 | '@types/react-dom': 454 | optional: true 455 | 456 | '@radix-ui/react-collection@1.1.1': 457 | resolution: {integrity: sha512-LwT3pSho9Dljg+wY2KN2mrrh6y3qELfftINERIzBUO9e0N+t0oMTyn3k9iv+ZqgrwGkRnLpNJrsMv9BZlt2yuA==} 458 | peerDependencies: 459 | '@types/react': '*' 460 | '@types/react-dom': '*' 461 | react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 462 | react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 463 | peerDependenciesMeta: 464 | '@types/react': 465 | optional: true 466 | '@types/react-dom': 467 | optional: true 468 | 469 | '@radix-ui/react-compose-refs@1.1.1': 470 | resolution: {integrity: sha512-Y9VzoRDSJtgFMUCoiZBDVo084VQ5hfpXxVE+NgkdNsjiDBByiImMZKKhxMwCbdHvhlENG6a833CbFkOQvTricw==} 471 | peerDependencies: 472 | '@types/react': '*' 473 | react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 474 | peerDependenciesMeta: 475 | '@types/react': 476 | optional: true 477 | 478 | '@radix-ui/react-context@1.1.1': 479 | resolution: {integrity: sha512-UASk9zi+crv9WteK/NU4PLvOoL3OuE6BWVKNF6hPRBtYBDXQ2u5iu3O59zUlJiTVvkyuycnqrztsHVJwcK9K+Q==} 480 | peerDependencies: 481 | '@types/react': '*' 482 | react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 483 | peerDependenciesMeta: 484 | '@types/react': 485 | optional: true 486 | 487 | '@radix-ui/react-direction@1.1.0': 488 | resolution: {integrity: sha512-BUuBvgThEiAXh2DWu93XsT+a3aWrGqolGlqqw5VU1kG7p/ZH2cuDlM1sRLNnY3QcBS69UIz2mcKhMxDsdewhjg==} 489 | peerDependencies: 490 | '@types/react': '*' 491 | react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 492 | peerDependenciesMeta: 493 | '@types/react': 494 | optional: true 495 | 496 | '@radix-ui/react-dismissable-layer@1.1.3': 497 | resolution: {integrity: sha512-onrWn/72lQoEucDmJnr8uczSNTujT0vJnA/X5+3AkChVPowr8n1yvIKIabhWyMQeMvvmdpsvcyDqx3X1LEXCPg==} 498 | peerDependencies: 499 | '@types/react': '*' 500 | '@types/react-dom': '*' 501 | react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 502 | react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 503 | peerDependenciesMeta: 504 | '@types/react': 505 | optional: true 506 | '@types/react-dom': 507 | optional: true 508 | 509 | '@radix-ui/react-focus-guards@1.1.1': 510 | resolution: {integrity: sha512-pSIwfrT1a6sIoDASCSpFwOasEwKTZWDw/iBdtnqKO7v6FeOzYJ7U53cPzYFVR3geGGXgVHaH+CdngrrAzqUGxg==} 511 | peerDependencies: 512 | '@types/react': '*' 513 | react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 514 | peerDependenciesMeta: 515 | '@types/react': 516 | optional: true 517 | 518 | '@radix-ui/react-focus-scope@1.1.1': 519 | resolution: {integrity: sha512-01omzJAYRxXdG2/he/+xy+c8a8gCydoQ1yOxnWNcRhrrBW5W+RQJ22EK1SaO8tb3WoUsuEw7mJjBozPzihDFjA==} 520 | peerDependencies: 521 | '@types/react': '*' 522 | '@types/react-dom': '*' 523 | react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 524 | react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 525 | peerDependenciesMeta: 526 | '@types/react': 527 | optional: true 528 | '@types/react-dom': 529 | optional: true 530 | 531 | '@radix-ui/react-id@1.1.0': 532 | resolution: {integrity: sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==} 533 | peerDependencies: 534 | '@types/react': '*' 535 | react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 536 | peerDependenciesMeta: 537 | '@types/react': 538 | optional: true 539 | 540 | '@radix-ui/react-popper@1.2.1': 541 | resolution: {integrity: sha512-3kn5Me69L+jv82EKRuQCXdYyf1DqHwD2U/sxoNgBGCB7K9TRc3bQamQ+5EPM9EvyPdli0W41sROd+ZU1dTCztw==} 542 | peerDependencies: 543 | '@types/react': '*' 544 | '@types/react-dom': '*' 545 | react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 546 | react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 547 | peerDependenciesMeta: 548 | '@types/react': 549 | optional: true 550 | '@types/react-dom': 551 | optional: true 552 | 553 | '@radix-ui/react-portal@1.1.3': 554 | resolution: {integrity: sha512-NciRqhXnGojhT93RPyDaMPfLH3ZSl4jjIFbZQ1b/vxvZEdHsBZ49wP9w8L3HzUQwep01LcWtkUvm0OVB5JAHTw==} 555 | peerDependencies: 556 | '@types/react': '*' 557 | '@types/react-dom': '*' 558 | react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 559 | react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 560 | peerDependenciesMeta: 561 | '@types/react': 562 | optional: true 563 | '@types/react-dom': 564 | optional: true 565 | 566 | '@radix-ui/react-presence@1.1.2': 567 | resolution: {integrity: sha512-18TFr80t5EVgL9x1SwF/YGtfG+l0BS0PRAlCWBDoBEiDQjeKgnNZRVJp/oVBl24sr3Gbfwc/Qpj4OcWTQMsAEg==} 568 | peerDependencies: 569 | '@types/react': '*' 570 | '@types/react-dom': '*' 571 | react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 572 | react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 573 | peerDependenciesMeta: 574 | '@types/react': 575 | optional: true 576 | '@types/react-dom': 577 | optional: true 578 | 579 | '@radix-ui/react-primitive@2.0.1': 580 | resolution: {integrity: sha512-sHCWTtxwNn3L3fH8qAfnF3WbUZycW93SM1j3NFDzXBiz8D6F5UTTy8G1+WFEaiCdvCVRJWj6N2R4Xq6HdiHmDg==} 581 | peerDependencies: 582 | '@types/react': '*' 583 | '@types/react-dom': '*' 584 | react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 585 | react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 586 | peerDependenciesMeta: 587 | '@types/react': 588 | optional: true 589 | '@types/react-dom': 590 | optional: true 591 | 592 | '@radix-ui/react-scroll-area@1.2.2': 593 | resolution: {integrity: sha512-EFI1N/S3YxZEW/lJ/H1jY3njlvTd8tBmgKEn4GHi51+aMm94i6NmAJstsm5cu3yJwYqYc93gpCPm21FeAbFk6g==} 594 | peerDependencies: 595 | '@types/react': '*' 596 | '@types/react-dom': '*' 597 | react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 598 | react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 599 | peerDependenciesMeta: 600 | '@types/react': 601 | optional: true 602 | '@types/react-dom': 603 | optional: true 604 | 605 | '@radix-ui/react-select@2.1.4': 606 | resolution: {integrity: sha512-pOkb2u8KgO47j/h7AylCj7dJsm69BXcjkrvTqMptFqsE2i0p8lHkfgneXKjAgPzBMivnoMyt8o4KiV4wYzDdyQ==} 607 | peerDependencies: 608 | '@types/react': '*' 609 | '@types/react-dom': '*' 610 | react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 611 | react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 612 | peerDependenciesMeta: 613 | '@types/react': 614 | optional: true 615 | '@types/react-dom': 616 | optional: true 617 | 618 | '@radix-ui/react-slot@1.1.1': 619 | resolution: {integrity: sha512-RApLLOcINYJA+dMVbOju7MYv1Mb2EBp2nH4HdDzXTSyaR5optlm6Otrz1euW3HbdOR8UmmFK06TD+A9frYWv+g==} 620 | peerDependencies: 621 | '@types/react': '*' 622 | react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 623 | peerDependenciesMeta: 624 | '@types/react': 625 | optional: true 626 | 627 | '@radix-ui/react-toast@1.2.4': 628 | resolution: {integrity: sha512-Sch9idFJHJTMH9YNpxxESqABcAFweJG4tKv+0zo0m5XBvUSL8FM5xKcJLFLXononpePs8IclyX1KieL5SDUNgA==} 629 | peerDependencies: 630 | '@types/react': '*' 631 | '@types/react-dom': '*' 632 | react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 633 | react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 634 | peerDependenciesMeta: 635 | '@types/react': 636 | optional: true 637 | '@types/react-dom': 638 | optional: true 639 | 640 | '@radix-ui/react-use-callback-ref@1.1.0': 641 | resolution: {integrity: sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==} 642 | peerDependencies: 643 | '@types/react': '*' 644 | react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 645 | peerDependenciesMeta: 646 | '@types/react': 647 | optional: true 648 | 649 | '@radix-ui/react-use-controllable-state@1.1.0': 650 | resolution: {integrity: sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==} 651 | peerDependencies: 652 | '@types/react': '*' 653 | react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 654 | peerDependenciesMeta: 655 | '@types/react': 656 | optional: true 657 | 658 | '@radix-ui/react-use-escape-keydown@1.1.0': 659 | resolution: {integrity: sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==} 660 | peerDependencies: 661 | '@types/react': '*' 662 | react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 663 | peerDependenciesMeta: 664 | '@types/react': 665 | optional: true 666 | 667 | '@radix-ui/react-use-layout-effect@1.1.0': 668 | resolution: {integrity: sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==} 669 | peerDependencies: 670 | '@types/react': '*' 671 | react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 672 | peerDependenciesMeta: 673 | '@types/react': 674 | optional: true 675 | 676 | '@radix-ui/react-use-previous@1.1.0': 677 | resolution: {integrity: sha512-Z/e78qg2YFnnXcW88A4JmTtm4ADckLno6F7OXotmkQfeuCVaKuYzqAATPhVzl3delXE7CxIV8shofPn3jPc5Og==} 678 | peerDependencies: 679 | '@types/react': '*' 680 | react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 681 | peerDependenciesMeta: 682 | '@types/react': 683 | optional: true 684 | 685 | '@radix-ui/react-use-rect@1.1.0': 686 | resolution: {integrity: sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ==} 687 | peerDependencies: 688 | '@types/react': '*' 689 | react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 690 | peerDependenciesMeta: 691 | '@types/react': 692 | optional: true 693 | 694 | '@radix-ui/react-use-size@1.1.0': 695 | resolution: {integrity: sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==} 696 | peerDependencies: 697 | '@types/react': '*' 698 | react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 699 | peerDependenciesMeta: 700 | '@types/react': 701 | optional: true 702 | 703 | '@radix-ui/react-visually-hidden@1.1.1': 704 | resolution: {integrity: sha512-vVfA2IZ9q/J+gEamvj761Oq1FpWgCDaNOOIfbPVp2MVPLEomUr5+Vf7kJGwQ24YxZSlQVar7Bes8kyTo5Dshpg==} 705 | peerDependencies: 706 | '@types/react': '*' 707 | '@types/react-dom': '*' 708 | react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 709 | react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 710 | peerDependenciesMeta: 711 | '@types/react': 712 | optional: true 713 | '@types/react-dom': 714 | optional: true 715 | 716 | '@radix-ui/rect@1.1.0': 717 | resolution: {integrity: sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==} 718 | 719 | '@rollup/rollup-android-arm-eabi@4.29.1': 720 | resolution: {integrity: sha512-ssKhA8RNltTZLpG6/QNkCSge+7mBQGUqJRisZ2MDQcEGaK93QESEgWK2iOpIDZ7k9zPVkG5AS3ksvD5ZWxmItw==} 721 | cpu: [arm] 722 | os: [android] 723 | 724 | '@rollup/rollup-android-arm64@4.29.1': 725 | resolution: {integrity: sha512-CaRfrV0cd+NIIcVVN/jx+hVLN+VRqnuzLRmfmlzpOzB87ajixsN/+9L5xNmkaUUvEbI5BmIKS+XTwXsHEb65Ew==} 726 | cpu: [arm64] 727 | os: [android] 728 | 729 | '@rollup/rollup-darwin-arm64@4.29.1': 730 | resolution: {integrity: sha512-2ORr7T31Y0Mnk6qNuwtyNmy14MunTAMx06VAPI6/Ju52W10zk1i7i5U3vlDRWjhOI5quBcrvhkCHyF76bI7kEw==} 731 | cpu: [arm64] 732 | os: [darwin] 733 | 734 | '@rollup/rollup-darwin-x64@4.29.1': 735 | resolution: {integrity: sha512-j/Ej1oanzPjmN0tirRd5K2/nncAhS9W6ICzgxV+9Y5ZsP0hiGhHJXZ2JQ53iSSjj8m6cRY6oB1GMzNn2EUt6Ng==} 736 | cpu: [x64] 737 | os: [darwin] 738 | 739 | '@rollup/rollup-freebsd-arm64@4.29.1': 740 | resolution: {integrity: sha512-91C//G6Dm/cv724tpt7nTyP+JdN12iqeXGFM1SqnljCmi5yTXriH7B1r8AD9dAZByHpKAumqP1Qy2vVNIdLZqw==} 741 | cpu: [arm64] 742 | os: [freebsd] 743 | 744 | '@rollup/rollup-freebsd-x64@4.29.1': 745 | resolution: {integrity: sha512-hEioiEQ9Dec2nIRoeHUP6hr1PSkXzQaCUyqBDQ9I9ik4gCXQZjJMIVzoNLBRGet+hIUb3CISMh9KXuCcWVW/8w==} 746 | cpu: [x64] 747 | os: [freebsd] 748 | 749 | '@rollup/rollup-linux-arm-gnueabihf@4.29.1': 750 | resolution: {integrity: sha512-Py5vFd5HWYN9zxBv3WMrLAXY3yYJ6Q/aVERoeUFwiDGiMOWsMs7FokXihSOaT/PMWUty/Pj60XDQndK3eAfE6A==} 751 | cpu: [arm] 752 | os: [linux] 753 | 754 | '@rollup/rollup-linux-arm-musleabihf@4.29.1': 755 | resolution: {integrity: sha512-RiWpGgbayf7LUcuSNIbahr0ys2YnEERD4gYdISA06wa0i8RALrnzflh9Wxii7zQJEB2/Eh74dX4y/sHKLWp5uQ==} 756 | cpu: [arm] 757 | os: [linux] 758 | 759 | '@rollup/rollup-linux-arm64-gnu@4.29.1': 760 | resolution: {integrity: sha512-Z80O+taYxTQITWMjm/YqNoe9d10OX6kDh8X5/rFCMuPqsKsSyDilvfg+vd3iXIqtfmp+cnfL1UrYirkaF8SBZA==} 761 | cpu: [arm64] 762 | os: [linux] 763 | 764 | '@rollup/rollup-linux-arm64-musl@4.29.1': 765 | resolution: {integrity: sha512-fOHRtF9gahwJk3QVp01a/GqS4hBEZCV1oKglVVq13kcK3NeVlS4BwIFzOHDbmKzt3i0OuHG4zfRP0YoG5OF/rA==} 766 | cpu: [arm64] 767 | os: [linux] 768 | 769 | '@rollup/rollup-linux-loongarch64-gnu@4.29.1': 770 | resolution: {integrity: sha512-5a7q3tnlbcg0OodyxcAdrrCxFi0DgXJSoOuidFUzHZ2GixZXQs6Tc3CHmlvqKAmOs5eRde+JJxeIf9DonkmYkw==} 771 | cpu: [loong64] 772 | os: [linux] 773 | 774 | '@rollup/rollup-linux-powerpc64le-gnu@4.29.1': 775 | resolution: {integrity: sha512-9b4Mg5Yfz6mRnlSPIdROcfw1BU22FQxmfjlp/CShWwO3LilKQuMISMTtAu/bxmmrE6A902W2cZJuzx8+gJ8e9w==} 776 | cpu: [ppc64] 777 | os: [linux] 778 | 779 | '@rollup/rollup-linux-riscv64-gnu@4.29.1': 780 | resolution: {integrity: sha512-G5pn0NChlbRM8OJWpJFMX4/i8OEU538uiSv0P6roZcbpe/WfhEO+AT8SHVKfp8qhDQzaz7Q+1/ixMy7hBRidnQ==} 781 | cpu: [riscv64] 782 | os: [linux] 783 | 784 | '@rollup/rollup-linux-s390x-gnu@4.29.1': 785 | resolution: {integrity: sha512-WM9lIkNdkhVwiArmLxFXpWndFGuOka4oJOZh8EP3Vb8q5lzdSCBuhjavJsw68Q9AKDGeOOIHYzYm4ZFvmWez5g==} 786 | cpu: [s390x] 787 | os: [linux] 788 | 789 | '@rollup/rollup-linux-x64-gnu@4.29.1': 790 | resolution: {integrity: sha512-87xYCwb0cPGZFoGiErT1eDcssByaLX4fc0z2nRM6eMtV9njAfEE6OW3UniAoDhX4Iq5xQVpE6qO9aJbCFumKYQ==} 791 | cpu: [x64] 792 | os: [linux] 793 | 794 | '@rollup/rollup-linux-x64-musl@4.29.1': 795 | resolution: {integrity: sha512-xufkSNppNOdVRCEC4WKvlR1FBDyqCSCpQeMMgv9ZyXqqtKBfkw1yfGMTUTs9Qsl6WQbJnsGboWCp7pJGkeMhKA==} 796 | cpu: [x64] 797 | os: [linux] 798 | 799 | '@rollup/rollup-win32-arm64-msvc@4.29.1': 800 | resolution: {integrity: sha512-F2OiJ42m77lSkizZQLuC+jiZ2cgueWQL5YC9tjo3AgaEw+KJmVxHGSyQfDUoYR9cci0lAywv2Clmckzulcq6ig==} 801 | cpu: [arm64] 802 | os: [win32] 803 | 804 | '@rollup/rollup-win32-ia32-msvc@4.29.1': 805 | resolution: {integrity: sha512-rYRe5S0FcjlOBZQHgbTKNrqxCBUmgDJem/VQTCcTnA2KCabYSWQDrytOzX7avb79cAAweNmMUb/Zw18RNd4mng==} 806 | cpu: [ia32] 807 | os: [win32] 808 | 809 | '@rollup/rollup-win32-x64-msvc@4.29.1': 810 | resolution: {integrity: sha512-+10CMg9vt1MoHj6x1pxyjPSMjHTIlqs8/tBztXvPAx24SKs9jwVnKqHJumlH/IzhaPUaj3T6T6wfZr8okdXaIg==} 811 | cpu: [x64] 812 | os: [win32] 813 | 814 | '@types/babel__core@7.20.5': 815 | resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} 816 | 817 | '@types/babel__generator@7.6.8': 818 | resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} 819 | 820 | '@types/babel__template@7.4.4': 821 | resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} 822 | 823 | '@types/babel__traverse@7.20.6': 824 | resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==} 825 | 826 | '@types/estree@1.0.6': 827 | resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} 828 | 829 | '@types/json-schema@7.0.15': 830 | resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} 831 | 832 | '@types/node@22.10.5': 833 | resolution: {integrity: sha512-F8Q+SeGimwOo86fiovQh8qiXfFEh2/ocYv7tU5pJ3EXMSSxk1Joj5wefpFK2fHTf/N6HKGSxIDBT9f3gCxXPkQ==} 834 | 835 | '@types/prismjs@1.26.5': 836 | resolution: {integrity: sha512-AUZTa7hQ2KY5L7AmtSiqxlhWxb4ina0yd8hNbl4TWuqnv/pFP0nDMb3YrfSBf4hJVGLh2YEIBfKaBW/9UEl6IQ==} 837 | 838 | '@types/prop-types@15.7.14': 839 | resolution: {integrity: sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==} 840 | 841 | '@types/react-dom@18.3.5': 842 | resolution: {integrity: sha512-P4t6saawp+b/dFrUr2cvkVsfvPguwsxtH6dNIYRllMsefqFzkZk5UIjzyDOv5g1dXIPdG4Sp1yCR4Z6RCUsG/Q==} 843 | peerDependencies: 844 | '@types/react': ^18.0.0 845 | 846 | '@types/react@18.3.18': 847 | resolution: {integrity: sha512-t4yC+vtgnkYjNSKlFx1jkAhH8LgTo2N/7Qvi83kdEaUtMDiwpbLAktKDaAMlRcJ5eSxZkH74eEGt1ky31d7kfQ==} 848 | 849 | '@typescript-eslint/eslint-plugin@8.19.0': 850 | resolution: {integrity: sha512-NggSaEZCdSrFddbctrVjkVZvFC6KGfKfNK0CU7mNK/iKHGKbzT4Wmgm08dKpcZECBu9f5FypndoMyRHkdqfT1Q==} 851 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 852 | peerDependencies: 853 | '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 854 | eslint: ^8.57.0 || ^9.0.0 855 | typescript: '>=4.8.4 <5.8.0' 856 | 857 | '@typescript-eslint/parser@8.19.0': 858 | resolution: {integrity: sha512-6M8taKyOETY1TKHp0x8ndycipTVgmp4xtg5QpEZzXxDhNvvHOJi5rLRkLr8SK3jTgD5l4fTlvBiRdfsuWydxBw==} 859 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 860 | peerDependencies: 861 | eslint: ^8.57.0 || ^9.0.0 862 | typescript: '>=4.8.4 <5.8.0' 863 | 864 | '@typescript-eslint/scope-manager@8.19.0': 865 | resolution: {integrity: sha512-hkoJiKQS3GQ13TSMEiuNmSCvhz7ujyqD1x3ShbaETATHrck+9RaDdUbt+osXaUuns9OFwrDTTrjtwsU8gJyyRA==} 866 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 867 | 868 | '@typescript-eslint/type-utils@8.19.0': 869 | resolution: {integrity: sha512-TZs0I0OSbd5Aza4qAMpp1cdCYVnER94IziudE3JU328YUHgWu9gwiwhag+fuLeJ2LkWLXI+F/182TbG+JaBdTg==} 870 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 871 | peerDependencies: 872 | eslint: ^8.57.0 || ^9.0.0 873 | typescript: '>=4.8.4 <5.8.0' 874 | 875 | '@typescript-eslint/types@8.19.0': 876 | resolution: {integrity: sha512-8XQ4Ss7G9WX8oaYvD4OOLCjIQYgRQxO+qCiR2V2s2GxI9AUpo7riNwo6jDhKtTcaJjT8PY54j2Yb33kWtSJsmA==} 877 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 878 | 879 | '@typescript-eslint/typescript-estree@8.19.0': 880 | resolution: {integrity: sha512-WW9PpDaLIFW9LCbucMSdYUuGeFUz1OkWYS/5fwZwTA+l2RwlWFdJvReQqMUMBw4yJWJOfqd7An9uwut2Oj8sLw==} 881 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 882 | peerDependencies: 883 | typescript: '>=4.8.4 <5.8.0' 884 | 885 | '@typescript-eslint/utils@8.19.0': 886 | resolution: {integrity: sha512-PTBG+0oEMPH9jCZlfg07LCB2nYI0I317yyvXGfxnvGvw4SHIOuRnQ3kadyyXY6tGdChusIHIbM5zfIbp4M6tCg==} 887 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 888 | peerDependencies: 889 | eslint: ^8.57.0 || ^9.0.0 890 | typescript: '>=4.8.4 <5.8.0' 891 | 892 | '@typescript-eslint/visitor-keys@8.19.0': 893 | resolution: {integrity: sha512-mCFtBbFBJDCNCWUl5y6sZSCHXw1DEFEk3c/M3nRK2a4XUB8StGFtmcEMizdjKuBzB6e/smJAAWYug3VrdLMr1w==} 894 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 895 | 896 | '@vitejs/plugin-react@4.3.4': 897 | resolution: {integrity: sha512-SCCPBJtYLdE8PX/7ZQAs1QAZ8Jqwih+0VBLum1EGqmCCQal+MIUqLCzj3ZUy8ufbC0cAM4LRlSTm7IQJwWT4ug==} 898 | engines: {node: ^14.18.0 || >=16.0.0} 899 | peerDependencies: 900 | vite: ^4.2.0 || ^5.0.0 || ^6.0.0 901 | 902 | acorn-jsx@5.3.2: 903 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 904 | peerDependencies: 905 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 906 | 907 | acorn@8.14.0: 908 | resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} 909 | engines: {node: '>=0.4.0'} 910 | hasBin: true 911 | 912 | ajv@6.12.6: 913 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 914 | 915 | ansi-regex@5.0.1: 916 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 917 | engines: {node: '>=8'} 918 | 919 | ansi-regex@6.1.0: 920 | resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} 921 | engines: {node: '>=12'} 922 | 923 | ansi-styles@4.3.0: 924 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 925 | engines: {node: '>=8'} 926 | 927 | ansi-styles@6.2.1: 928 | resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} 929 | engines: {node: '>=12'} 930 | 931 | any-promise@1.3.0: 932 | resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} 933 | 934 | anymatch@3.1.3: 935 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} 936 | engines: {node: '>= 8'} 937 | 938 | arg@5.0.2: 939 | resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} 940 | 941 | argparse@2.0.1: 942 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 943 | 944 | aria-hidden@1.2.4: 945 | resolution: {integrity: sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==} 946 | engines: {node: '>=10'} 947 | 948 | autoprefixer@10.4.20: 949 | resolution: {integrity: sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==} 950 | engines: {node: ^10 || ^12 || >=14} 951 | hasBin: true 952 | peerDependencies: 953 | postcss: ^8.1.0 954 | 955 | balanced-match@1.0.2: 956 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 957 | 958 | binary-extensions@2.3.0: 959 | resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} 960 | engines: {node: '>=8'} 961 | 962 | brace-expansion@1.1.11: 963 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 964 | 965 | brace-expansion@2.0.1: 966 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} 967 | 968 | braces@3.0.3: 969 | resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} 970 | engines: {node: '>=8'} 971 | 972 | browserslist@4.24.3: 973 | resolution: {integrity: sha512-1CPmv8iobE2fyRMV97dAcMVegvvWKxmq94hkLiAkUGwKVTyDLw33K+ZxiFrREKmmps4rIw6grcCFCnTMSZ/YiA==} 974 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 975 | hasBin: true 976 | 977 | callsites@3.1.0: 978 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 979 | engines: {node: '>=6'} 980 | 981 | camelcase-css@2.0.1: 982 | resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} 983 | engines: {node: '>= 6'} 984 | 985 | caniuse-lite@1.0.30001690: 986 | resolution: {integrity: sha512-5ExiE3qQN6oF8Clf8ifIDcMRCRE/dMGcETG/XGMD8/XiXm6HXQgQTh1yZYLXXpSOsEUlJm1Xr7kGULZTuGtP/w==} 987 | 988 | chalk@4.1.2: 989 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 990 | engines: {node: '>=10'} 991 | 992 | chokidar@3.6.0: 993 | resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} 994 | engines: {node: '>= 8.10.0'} 995 | 996 | class-variance-authority@0.7.1: 997 | resolution: {integrity: sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==} 998 | 999 | clsx@2.1.1: 1000 | resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} 1001 | engines: {node: '>=6'} 1002 | 1003 | color-convert@2.0.1: 1004 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 1005 | engines: {node: '>=7.0.0'} 1006 | 1007 | color-name@1.1.4: 1008 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 1009 | 1010 | commander@4.1.1: 1011 | resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} 1012 | engines: {node: '>= 6'} 1013 | 1014 | concat-map@0.0.1: 1015 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 1016 | 1017 | convert-source-map@2.0.0: 1018 | resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} 1019 | 1020 | cross-spawn@7.0.6: 1021 | resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} 1022 | engines: {node: '>= 8'} 1023 | 1024 | cssesc@3.0.0: 1025 | resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} 1026 | engines: {node: '>=4'} 1027 | hasBin: true 1028 | 1029 | csstype@3.1.3: 1030 | resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} 1031 | 1032 | debug@4.4.0: 1033 | resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} 1034 | engines: {node: '>=6.0'} 1035 | peerDependencies: 1036 | supports-color: '*' 1037 | peerDependenciesMeta: 1038 | supports-color: 1039 | optional: true 1040 | 1041 | deep-is@0.1.4: 1042 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 1043 | 1044 | detect-node-es@1.1.0: 1045 | resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} 1046 | 1047 | didyoumean@1.2.2: 1048 | resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} 1049 | 1050 | dlv@1.1.3: 1051 | resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} 1052 | 1053 | eastasianwidth@0.2.0: 1054 | resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} 1055 | 1056 | electron-to-chromium@1.5.76: 1057 | resolution: {integrity: sha512-CjVQyG7n7Sr+eBXE86HIulnL5N8xZY1sgmOPGuq/F0Rr0FJq63lg0kEtOIDfZBk44FnDLf6FUJ+dsJcuiUDdDQ==} 1058 | 1059 | emoji-regex@8.0.0: 1060 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 1061 | 1062 | emoji-regex@9.2.2: 1063 | resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} 1064 | 1065 | esbuild@0.21.5: 1066 | resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} 1067 | engines: {node: '>=12'} 1068 | hasBin: true 1069 | 1070 | escalade@3.2.0: 1071 | resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} 1072 | engines: {node: '>=6'} 1073 | 1074 | escape-string-regexp@4.0.0: 1075 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 1076 | engines: {node: '>=10'} 1077 | 1078 | eslint-plugin-react-hooks@5.1.0: 1079 | resolution: {integrity: sha512-mpJRtPgHN2tNAvZ35AMfqeB3Xqeo273QxrHJsbBEPWODRM4r0yB6jfoROqKEYrOn27UtRPpcpHc2UqyBSuUNTw==} 1080 | engines: {node: '>=10'} 1081 | peerDependencies: 1082 | eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 1083 | 1084 | eslint-plugin-react-refresh@0.4.16: 1085 | resolution: {integrity: sha512-slterMlxAhov/DZO8NScf6mEeMBBXodFUolijDvrtTxyezyLoTQaa73FyYus/VbTdftd8wBgBxPMRk3poleXNQ==} 1086 | peerDependencies: 1087 | eslint: '>=8.40' 1088 | 1089 | eslint-scope@8.2.0: 1090 | resolution: {integrity: sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==} 1091 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1092 | 1093 | eslint-visitor-keys@3.4.3: 1094 | resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} 1095 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1096 | 1097 | eslint-visitor-keys@4.2.0: 1098 | resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} 1099 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1100 | 1101 | eslint@9.17.0: 1102 | resolution: {integrity: sha512-evtlNcpJg+cZLcnVKwsai8fExnqjGPicK7gnUtlNuzu+Fv9bI0aLpND5T44VLQtoMEnI57LoXO9XAkIXwohKrA==} 1103 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1104 | hasBin: true 1105 | peerDependencies: 1106 | jiti: '*' 1107 | peerDependenciesMeta: 1108 | jiti: 1109 | optional: true 1110 | 1111 | espree@10.3.0: 1112 | resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} 1113 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1114 | 1115 | esquery@1.6.0: 1116 | resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} 1117 | engines: {node: '>=0.10'} 1118 | 1119 | esrecurse@4.3.0: 1120 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 1121 | engines: {node: '>=4.0'} 1122 | 1123 | estraverse@5.3.0: 1124 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 1125 | engines: {node: '>=4.0'} 1126 | 1127 | esutils@2.0.3: 1128 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 1129 | engines: {node: '>=0.10.0'} 1130 | 1131 | fast-deep-equal@3.1.3: 1132 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 1133 | 1134 | fast-glob@3.3.2: 1135 | resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} 1136 | engines: {node: '>=8.6.0'} 1137 | 1138 | fast-json-stable-stringify@2.1.0: 1139 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 1140 | 1141 | fast-levenshtein@2.0.6: 1142 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 1143 | 1144 | fastq@1.18.0: 1145 | resolution: {integrity: sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==} 1146 | 1147 | file-entry-cache@8.0.0: 1148 | resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} 1149 | engines: {node: '>=16.0.0'} 1150 | 1151 | fill-range@7.1.1: 1152 | resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} 1153 | engines: {node: '>=8'} 1154 | 1155 | find-up@5.0.0: 1156 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 1157 | engines: {node: '>=10'} 1158 | 1159 | flat-cache@4.0.1: 1160 | resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} 1161 | engines: {node: '>=16'} 1162 | 1163 | flatted@3.3.2: 1164 | resolution: {integrity: sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==} 1165 | 1166 | foreground-child@3.3.0: 1167 | resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} 1168 | engines: {node: '>=14'} 1169 | 1170 | fraction.js@4.3.7: 1171 | resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} 1172 | 1173 | fsevents@2.3.3: 1174 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 1175 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 1176 | os: [darwin] 1177 | 1178 | function-bind@1.1.2: 1179 | resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} 1180 | 1181 | gensync@1.0.0-beta.2: 1182 | resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} 1183 | engines: {node: '>=6.9.0'} 1184 | 1185 | get-nonce@1.0.1: 1186 | resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} 1187 | engines: {node: '>=6'} 1188 | 1189 | glob-parent@5.1.2: 1190 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 1191 | engines: {node: '>= 6'} 1192 | 1193 | glob-parent@6.0.2: 1194 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 1195 | engines: {node: '>=10.13.0'} 1196 | 1197 | glob@10.4.5: 1198 | resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} 1199 | hasBin: true 1200 | 1201 | globals@11.12.0: 1202 | resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} 1203 | engines: {node: '>=4'} 1204 | 1205 | globals@14.0.0: 1206 | resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} 1207 | engines: {node: '>=18'} 1208 | 1209 | graphemer@1.4.0: 1210 | resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} 1211 | 1212 | has-flag@4.0.0: 1213 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 1214 | engines: {node: '>=8'} 1215 | 1216 | hasown@2.0.2: 1217 | resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} 1218 | engines: {node: '>= 0.4'} 1219 | 1220 | ignore@5.3.2: 1221 | resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} 1222 | engines: {node: '>= 4'} 1223 | 1224 | import-fresh@3.3.0: 1225 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} 1226 | engines: {node: '>=6'} 1227 | 1228 | imurmurhash@0.1.4: 1229 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 1230 | engines: {node: '>=0.8.19'} 1231 | 1232 | is-binary-path@2.1.0: 1233 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} 1234 | engines: {node: '>=8'} 1235 | 1236 | is-core-module@2.16.1: 1237 | resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} 1238 | engines: {node: '>= 0.4'} 1239 | 1240 | is-extglob@2.1.1: 1241 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 1242 | engines: {node: '>=0.10.0'} 1243 | 1244 | is-fullwidth-code-point@3.0.0: 1245 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 1246 | engines: {node: '>=8'} 1247 | 1248 | is-glob@4.0.3: 1249 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 1250 | engines: {node: '>=0.10.0'} 1251 | 1252 | is-number@7.0.0: 1253 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 1254 | engines: {node: '>=0.12.0'} 1255 | 1256 | isexe@2.0.0: 1257 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 1258 | 1259 | jackspeak@3.4.3: 1260 | resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} 1261 | 1262 | jiti@1.21.7: 1263 | resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} 1264 | hasBin: true 1265 | 1266 | js-tokens@4.0.0: 1267 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 1268 | 1269 | js-yaml@4.1.0: 1270 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 1271 | hasBin: true 1272 | 1273 | jsesc@3.1.0: 1274 | resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} 1275 | engines: {node: '>=6'} 1276 | hasBin: true 1277 | 1278 | json-buffer@3.0.1: 1279 | resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} 1280 | 1281 | json-schema-traverse@0.4.1: 1282 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 1283 | 1284 | json-stable-stringify-without-jsonify@1.0.1: 1285 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 1286 | 1287 | json5@2.2.3: 1288 | resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} 1289 | engines: {node: '>=6'} 1290 | hasBin: true 1291 | 1292 | keyv@4.5.4: 1293 | resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} 1294 | 1295 | levn@0.4.1: 1296 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 1297 | engines: {node: '>= 0.8.0'} 1298 | 1299 | lilconfig@3.1.3: 1300 | resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} 1301 | engines: {node: '>=14'} 1302 | 1303 | lines-and-columns@1.2.4: 1304 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} 1305 | 1306 | locate-path@6.0.0: 1307 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 1308 | engines: {node: '>=10'} 1309 | 1310 | lodash.merge@4.6.2: 1311 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 1312 | 1313 | loose-envify@1.4.0: 1314 | resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} 1315 | hasBin: true 1316 | 1317 | lru-cache@10.4.3: 1318 | resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} 1319 | 1320 | lru-cache@5.1.1: 1321 | resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} 1322 | 1323 | lucide-react@0.469.0: 1324 | resolution: {integrity: sha512-28vvUnnKQ/dBwiCQtwJw7QauYnE7yd2Cyp4tTTJpvglX4EMpbflcdBgrgToX2j71B3YvugK/NH3BGUk+E/p/Fw==} 1325 | peerDependencies: 1326 | react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0 1327 | 1328 | merge2@1.4.1: 1329 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 1330 | engines: {node: '>= 8'} 1331 | 1332 | micromatch@4.0.8: 1333 | resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} 1334 | engines: {node: '>=8.6'} 1335 | 1336 | minimatch@3.1.2: 1337 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 1338 | 1339 | minimatch@9.0.5: 1340 | resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} 1341 | engines: {node: '>=16 || 14 >=14.17'} 1342 | 1343 | minipass@7.1.2: 1344 | resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} 1345 | engines: {node: '>=16 || 14 >=14.17'} 1346 | 1347 | ms@2.1.3: 1348 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 1349 | 1350 | mz@2.7.0: 1351 | resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} 1352 | 1353 | nanoid@3.3.8: 1354 | resolution: {integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==} 1355 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 1356 | hasBin: true 1357 | 1358 | natural-compare@1.4.0: 1359 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 1360 | 1361 | node-releases@2.0.19: 1362 | resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} 1363 | 1364 | normalize-path@3.0.0: 1365 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 1366 | engines: {node: '>=0.10.0'} 1367 | 1368 | normalize-range@0.1.2: 1369 | resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} 1370 | engines: {node: '>=0.10.0'} 1371 | 1372 | object-assign@4.1.1: 1373 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} 1374 | engines: {node: '>=0.10.0'} 1375 | 1376 | object-hash@3.0.0: 1377 | resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} 1378 | engines: {node: '>= 6'} 1379 | 1380 | optionator@0.9.4: 1381 | resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} 1382 | engines: {node: '>= 0.8.0'} 1383 | 1384 | p-limit@3.1.0: 1385 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 1386 | engines: {node: '>=10'} 1387 | 1388 | p-locate@5.0.0: 1389 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 1390 | engines: {node: '>=10'} 1391 | 1392 | package-json-from-dist@1.0.1: 1393 | resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} 1394 | 1395 | parent-module@1.0.1: 1396 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 1397 | engines: {node: '>=6'} 1398 | 1399 | path-exists@4.0.0: 1400 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 1401 | engines: {node: '>=8'} 1402 | 1403 | path-key@3.1.1: 1404 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 1405 | engines: {node: '>=8'} 1406 | 1407 | path-parse@1.0.7: 1408 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 1409 | 1410 | path-scurry@1.11.1: 1411 | resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} 1412 | engines: {node: '>=16 || 14 >=14.18'} 1413 | 1414 | picocolors@1.1.1: 1415 | resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} 1416 | 1417 | picomatch@2.3.1: 1418 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 1419 | engines: {node: '>=8.6'} 1420 | 1421 | pify@2.3.0: 1422 | resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} 1423 | engines: {node: '>=0.10.0'} 1424 | 1425 | pirates@4.0.6: 1426 | resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} 1427 | engines: {node: '>= 6'} 1428 | 1429 | postcss-import@15.1.0: 1430 | resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} 1431 | engines: {node: '>=14.0.0'} 1432 | peerDependencies: 1433 | postcss: ^8.0.0 1434 | 1435 | postcss-js@4.0.1: 1436 | resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} 1437 | engines: {node: ^12 || ^14 || >= 16} 1438 | peerDependencies: 1439 | postcss: ^8.4.21 1440 | 1441 | postcss-load-config@4.0.2: 1442 | resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} 1443 | engines: {node: '>= 14'} 1444 | peerDependencies: 1445 | postcss: '>=8.0.9' 1446 | ts-node: '>=9.0.0' 1447 | peerDependenciesMeta: 1448 | postcss: 1449 | optional: true 1450 | ts-node: 1451 | optional: true 1452 | 1453 | postcss-nested@6.2.0: 1454 | resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==} 1455 | engines: {node: '>=12.0'} 1456 | peerDependencies: 1457 | postcss: ^8.2.14 1458 | 1459 | postcss-selector-parser@6.1.2: 1460 | resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} 1461 | engines: {node: '>=4'} 1462 | 1463 | postcss-value-parser@4.2.0: 1464 | resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} 1465 | 1466 | postcss@8.4.49: 1467 | resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==} 1468 | engines: {node: ^10 || ^12 || >=14} 1469 | 1470 | prelude-ls@1.2.1: 1471 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 1472 | engines: {node: '>= 0.8.0'} 1473 | 1474 | prismjs@1.29.0: 1475 | resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==} 1476 | engines: {node: '>=6'} 1477 | 1478 | punycode@2.3.1: 1479 | resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} 1480 | engines: {node: '>=6'} 1481 | 1482 | queue-microtask@1.2.3: 1483 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 1484 | 1485 | react-dom@18.3.1: 1486 | resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} 1487 | peerDependencies: 1488 | react: ^18.3.1 1489 | 1490 | react-refresh@0.14.2: 1491 | resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} 1492 | engines: {node: '>=0.10.0'} 1493 | 1494 | react-remove-scroll-bar@2.3.8: 1495 | resolution: {integrity: sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==} 1496 | engines: {node: '>=10'} 1497 | peerDependencies: 1498 | '@types/react': '*' 1499 | react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 1500 | peerDependenciesMeta: 1501 | '@types/react': 1502 | optional: true 1503 | 1504 | react-remove-scroll@2.6.2: 1505 | resolution: {integrity: sha512-KmONPx5fnlXYJQqC62Q+lwIeAk64ws/cUw6omIumRzMRPqgnYqhSSti99nbj0Ry13bv7dF+BKn7NB+OqkdZGTw==} 1506 | engines: {node: '>=10'} 1507 | peerDependencies: 1508 | '@types/react': '*' 1509 | react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc 1510 | peerDependenciesMeta: 1511 | '@types/react': 1512 | optional: true 1513 | 1514 | react-simple-code-editor@0.14.1: 1515 | resolution: {integrity: sha512-BR5DtNRy+AswWJECyA17qhUDvrrCZ6zXOCfkQY5zSmb96BVUbpVAv03WpcjcwtCwiLbIANx3gebHOcXYn1EHow==} 1516 | peerDependencies: 1517 | react: '>=16.8.0' 1518 | react-dom: '>=16.8.0' 1519 | 1520 | react-style-singleton@2.2.3: 1521 | resolution: {integrity: sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==} 1522 | engines: {node: '>=10'} 1523 | peerDependencies: 1524 | '@types/react': '*' 1525 | react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc 1526 | peerDependenciesMeta: 1527 | '@types/react': 1528 | optional: true 1529 | 1530 | react@18.3.1: 1531 | resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} 1532 | engines: {node: '>=0.10.0'} 1533 | 1534 | read-cache@1.0.0: 1535 | resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} 1536 | 1537 | readdirp@3.6.0: 1538 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} 1539 | engines: {node: '>=8.10.0'} 1540 | 1541 | resolve-from@4.0.0: 1542 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 1543 | engines: {node: '>=4'} 1544 | 1545 | resolve@1.22.10: 1546 | resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} 1547 | engines: {node: '>= 0.4'} 1548 | hasBin: true 1549 | 1550 | reusify@1.0.4: 1551 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 1552 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 1553 | 1554 | rollup@4.29.1: 1555 | resolution: {integrity: sha512-RaJ45M/kmJUzSWDs1Nnd5DdV4eerC98idtUOVr6FfKcgxqvjwHmxc5upLF9qZU9EpsVzzhleFahrT3shLuJzIw==} 1556 | engines: {node: '>=18.0.0', npm: '>=8.0.0'} 1557 | hasBin: true 1558 | 1559 | run-parallel@1.2.0: 1560 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 1561 | 1562 | scheduler@0.23.2: 1563 | resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} 1564 | 1565 | semver@6.3.1: 1566 | resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} 1567 | hasBin: true 1568 | 1569 | semver@7.6.3: 1570 | resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} 1571 | engines: {node: '>=10'} 1572 | hasBin: true 1573 | 1574 | shebang-command@2.0.0: 1575 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 1576 | engines: {node: '>=8'} 1577 | 1578 | shebang-regex@3.0.0: 1579 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 1580 | engines: {node: '>=8'} 1581 | 1582 | signal-exit@4.1.0: 1583 | resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} 1584 | engines: {node: '>=14'} 1585 | 1586 | source-map-js@1.2.1: 1587 | resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} 1588 | engines: {node: '>=0.10.0'} 1589 | 1590 | string-width@4.2.3: 1591 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} 1592 | engines: {node: '>=8'} 1593 | 1594 | string-width@5.1.2: 1595 | resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} 1596 | engines: {node: '>=12'} 1597 | 1598 | strip-ansi@6.0.1: 1599 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 1600 | engines: {node: '>=8'} 1601 | 1602 | strip-ansi@7.1.0: 1603 | resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} 1604 | engines: {node: '>=12'} 1605 | 1606 | strip-json-comments@3.1.1: 1607 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 1608 | engines: {node: '>=8'} 1609 | 1610 | sucrase@3.35.0: 1611 | resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} 1612 | engines: {node: '>=16 || 14 >=14.17'} 1613 | hasBin: true 1614 | 1615 | supports-color@7.2.0: 1616 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 1617 | engines: {node: '>=8'} 1618 | 1619 | supports-preserve-symlinks-flag@1.0.0: 1620 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 1621 | engines: {node: '>= 0.4'} 1622 | 1623 | tailwind-merge@2.6.0: 1624 | resolution: {integrity: sha512-P+Vu1qXfzediirmHOC3xKGAYeZtPcV9g76X+xg2FD4tYgR71ewMA35Y3sCz3zhiN/dwefRpJX0yBcgwi1fXNQA==} 1625 | 1626 | tailwindcss-animate@1.0.7: 1627 | resolution: {integrity: sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==} 1628 | peerDependencies: 1629 | tailwindcss: '>=3.0.0 || insiders' 1630 | 1631 | tailwindcss@3.4.17: 1632 | resolution: {integrity: sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og==} 1633 | engines: {node: '>=14.0.0'} 1634 | hasBin: true 1635 | 1636 | thenify-all@1.6.0: 1637 | resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} 1638 | engines: {node: '>=0.8'} 1639 | 1640 | thenify@3.3.1: 1641 | resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} 1642 | 1643 | to-regex-range@5.0.1: 1644 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 1645 | engines: {node: '>=8.0'} 1646 | 1647 | ts-api-utils@1.4.3: 1648 | resolution: {integrity: sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==} 1649 | engines: {node: '>=16'} 1650 | peerDependencies: 1651 | typescript: '>=4.2.0' 1652 | 1653 | ts-interface-checker@0.1.13: 1654 | resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} 1655 | 1656 | tslib@2.8.1: 1657 | resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} 1658 | 1659 | type-check@0.4.0: 1660 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 1661 | engines: {node: '>= 0.8.0'} 1662 | 1663 | typescript@5.7.2: 1664 | resolution: {integrity: sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==} 1665 | engines: {node: '>=14.17'} 1666 | hasBin: true 1667 | 1668 | undici-types@6.20.0: 1669 | resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==} 1670 | 1671 | update-browserslist-db@1.1.1: 1672 | resolution: {integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==} 1673 | hasBin: true 1674 | peerDependencies: 1675 | browserslist: '>= 4.21.0' 1676 | 1677 | uri-js@4.4.1: 1678 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 1679 | 1680 | use-callback-ref@1.3.3: 1681 | resolution: {integrity: sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==} 1682 | engines: {node: '>=10'} 1683 | peerDependencies: 1684 | '@types/react': '*' 1685 | react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc 1686 | peerDependenciesMeta: 1687 | '@types/react': 1688 | optional: true 1689 | 1690 | use-sidecar@1.1.3: 1691 | resolution: {integrity: sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==} 1692 | engines: {node: '>=10'} 1693 | peerDependencies: 1694 | '@types/react': '*' 1695 | react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc 1696 | peerDependenciesMeta: 1697 | '@types/react': 1698 | optional: true 1699 | 1700 | util-deprecate@1.0.2: 1701 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 1702 | 1703 | vite@5.4.11: 1704 | resolution: {integrity: sha512-c7jFQRklXua0mTzneGW9QVyxFjUgwcihC4bXEtujIo2ouWCe1Ajt/amn2PCxYnhYfd5k09JX3SB7OYWFKYqj8Q==} 1705 | engines: {node: ^18.0.0 || >=20.0.0} 1706 | hasBin: true 1707 | peerDependencies: 1708 | '@types/node': ^18.0.0 || >=20.0.0 1709 | less: '*' 1710 | lightningcss: ^1.21.0 1711 | sass: '*' 1712 | sass-embedded: '*' 1713 | stylus: '*' 1714 | sugarss: '*' 1715 | terser: ^5.4.0 1716 | peerDependenciesMeta: 1717 | '@types/node': 1718 | optional: true 1719 | less: 1720 | optional: true 1721 | lightningcss: 1722 | optional: true 1723 | sass: 1724 | optional: true 1725 | sass-embedded: 1726 | optional: true 1727 | stylus: 1728 | optional: true 1729 | sugarss: 1730 | optional: true 1731 | terser: 1732 | optional: true 1733 | 1734 | which@2.0.2: 1735 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 1736 | engines: {node: '>= 8'} 1737 | hasBin: true 1738 | 1739 | word-wrap@1.2.5: 1740 | resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} 1741 | engines: {node: '>=0.10.0'} 1742 | 1743 | wrap-ansi@7.0.0: 1744 | resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} 1745 | engines: {node: '>=10'} 1746 | 1747 | wrap-ansi@8.1.0: 1748 | resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} 1749 | engines: {node: '>=12'} 1750 | 1751 | yallist@3.1.1: 1752 | resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} 1753 | 1754 | yaml@2.7.0: 1755 | resolution: {integrity: sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==} 1756 | engines: {node: '>= 14'} 1757 | hasBin: true 1758 | 1759 | yocto-queue@0.1.0: 1760 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 1761 | engines: {node: '>=10'} 1762 | 1763 | snapshots: 1764 | 1765 | '@alloc/quick-lru@5.2.0': {} 1766 | 1767 | '@ampproject/remapping@2.3.0': 1768 | dependencies: 1769 | '@jridgewell/gen-mapping': 0.3.8 1770 | '@jridgewell/trace-mapping': 0.3.25 1771 | 1772 | '@babel/code-frame@7.26.2': 1773 | dependencies: 1774 | '@babel/helper-validator-identifier': 7.25.9 1775 | js-tokens: 4.0.0 1776 | picocolors: 1.1.1 1777 | 1778 | '@babel/compat-data@7.26.3': {} 1779 | 1780 | '@babel/core@7.26.0': 1781 | dependencies: 1782 | '@ampproject/remapping': 2.3.0 1783 | '@babel/code-frame': 7.26.2 1784 | '@babel/generator': 7.26.3 1785 | '@babel/helper-compilation-targets': 7.25.9 1786 | '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) 1787 | '@babel/helpers': 7.26.0 1788 | '@babel/parser': 7.26.3 1789 | '@babel/template': 7.25.9 1790 | '@babel/traverse': 7.26.4 1791 | '@babel/types': 7.26.3 1792 | convert-source-map: 2.0.0 1793 | debug: 4.4.0 1794 | gensync: 1.0.0-beta.2 1795 | json5: 2.2.3 1796 | semver: 6.3.1 1797 | transitivePeerDependencies: 1798 | - supports-color 1799 | 1800 | '@babel/generator@7.26.3': 1801 | dependencies: 1802 | '@babel/parser': 7.26.3 1803 | '@babel/types': 7.26.3 1804 | '@jridgewell/gen-mapping': 0.3.8 1805 | '@jridgewell/trace-mapping': 0.3.25 1806 | jsesc: 3.1.0 1807 | 1808 | '@babel/helper-compilation-targets@7.25.9': 1809 | dependencies: 1810 | '@babel/compat-data': 7.26.3 1811 | '@babel/helper-validator-option': 7.25.9 1812 | browserslist: 4.24.3 1813 | lru-cache: 5.1.1 1814 | semver: 6.3.1 1815 | 1816 | '@babel/helper-module-imports@7.25.9': 1817 | dependencies: 1818 | '@babel/traverse': 7.26.4 1819 | '@babel/types': 7.26.3 1820 | transitivePeerDependencies: 1821 | - supports-color 1822 | 1823 | '@babel/helper-module-transforms@7.26.0(@babel/core@7.26.0)': 1824 | dependencies: 1825 | '@babel/core': 7.26.0 1826 | '@babel/helper-module-imports': 7.25.9 1827 | '@babel/helper-validator-identifier': 7.25.9 1828 | '@babel/traverse': 7.26.4 1829 | transitivePeerDependencies: 1830 | - supports-color 1831 | 1832 | '@babel/helper-plugin-utils@7.25.9': {} 1833 | 1834 | '@babel/helper-string-parser@7.25.9': {} 1835 | 1836 | '@babel/helper-validator-identifier@7.25.9': {} 1837 | 1838 | '@babel/helper-validator-option@7.25.9': {} 1839 | 1840 | '@babel/helpers@7.26.0': 1841 | dependencies: 1842 | '@babel/template': 7.25.9 1843 | '@babel/types': 7.26.3 1844 | 1845 | '@babel/parser@7.26.3': 1846 | dependencies: 1847 | '@babel/types': 7.26.3 1848 | 1849 | '@babel/plugin-transform-react-jsx-self@7.25.9(@babel/core@7.26.0)': 1850 | dependencies: 1851 | '@babel/core': 7.26.0 1852 | '@babel/helper-plugin-utils': 7.25.9 1853 | 1854 | '@babel/plugin-transform-react-jsx-source@7.25.9(@babel/core@7.26.0)': 1855 | dependencies: 1856 | '@babel/core': 7.26.0 1857 | '@babel/helper-plugin-utils': 7.25.9 1858 | 1859 | '@babel/template@7.25.9': 1860 | dependencies: 1861 | '@babel/code-frame': 7.26.2 1862 | '@babel/parser': 7.26.3 1863 | '@babel/types': 7.26.3 1864 | 1865 | '@babel/traverse@7.26.4': 1866 | dependencies: 1867 | '@babel/code-frame': 7.26.2 1868 | '@babel/generator': 7.26.3 1869 | '@babel/parser': 7.26.3 1870 | '@babel/template': 7.25.9 1871 | '@babel/types': 7.26.3 1872 | debug: 4.4.0 1873 | globals: 11.12.0 1874 | transitivePeerDependencies: 1875 | - supports-color 1876 | 1877 | '@babel/types@7.26.3': 1878 | dependencies: 1879 | '@babel/helper-string-parser': 7.25.9 1880 | '@babel/helper-validator-identifier': 7.25.9 1881 | 1882 | '@esbuild/aix-ppc64@0.21.5': 1883 | optional: true 1884 | 1885 | '@esbuild/android-arm64@0.21.5': 1886 | optional: true 1887 | 1888 | '@esbuild/android-arm@0.21.5': 1889 | optional: true 1890 | 1891 | '@esbuild/android-x64@0.21.5': 1892 | optional: true 1893 | 1894 | '@esbuild/darwin-arm64@0.21.5': 1895 | optional: true 1896 | 1897 | '@esbuild/darwin-x64@0.21.5': 1898 | optional: true 1899 | 1900 | '@esbuild/freebsd-arm64@0.21.5': 1901 | optional: true 1902 | 1903 | '@esbuild/freebsd-x64@0.21.5': 1904 | optional: true 1905 | 1906 | '@esbuild/linux-arm64@0.21.5': 1907 | optional: true 1908 | 1909 | '@esbuild/linux-arm@0.21.5': 1910 | optional: true 1911 | 1912 | '@esbuild/linux-ia32@0.21.5': 1913 | optional: true 1914 | 1915 | '@esbuild/linux-loong64@0.21.5': 1916 | optional: true 1917 | 1918 | '@esbuild/linux-mips64el@0.21.5': 1919 | optional: true 1920 | 1921 | '@esbuild/linux-ppc64@0.21.5': 1922 | optional: true 1923 | 1924 | '@esbuild/linux-riscv64@0.21.5': 1925 | optional: true 1926 | 1927 | '@esbuild/linux-s390x@0.21.5': 1928 | optional: true 1929 | 1930 | '@esbuild/linux-x64@0.21.5': 1931 | optional: true 1932 | 1933 | '@esbuild/netbsd-x64@0.21.5': 1934 | optional: true 1935 | 1936 | '@esbuild/openbsd-x64@0.21.5': 1937 | optional: true 1938 | 1939 | '@esbuild/sunos-x64@0.21.5': 1940 | optional: true 1941 | 1942 | '@esbuild/win32-arm64@0.21.5': 1943 | optional: true 1944 | 1945 | '@esbuild/win32-ia32@0.21.5': 1946 | optional: true 1947 | 1948 | '@esbuild/win32-x64@0.21.5': 1949 | optional: true 1950 | 1951 | '@eslint-community/eslint-utils@4.4.1(eslint@9.17.0(jiti@1.21.7))': 1952 | dependencies: 1953 | eslint: 9.17.0(jiti@1.21.7) 1954 | eslint-visitor-keys: 3.4.3 1955 | 1956 | '@eslint-community/regexpp@4.12.1': {} 1957 | 1958 | '@eslint/config-array@0.19.1': 1959 | dependencies: 1960 | '@eslint/object-schema': 2.1.5 1961 | debug: 4.4.0 1962 | minimatch: 3.1.2 1963 | transitivePeerDependencies: 1964 | - supports-color 1965 | 1966 | '@eslint/core@0.9.1': 1967 | dependencies: 1968 | '@types/json-schema': 7.0.15 1969 | 1970 | '@eslint/eslintrc@3.2.0': 1971 | dependencies: 1972 | ajv: 6.12.6 1973 | debug: 4.4.0 1974 | espree: 10.3.0 1975 | globals: 14.0.0 1976 | ignore: 5.3.2 1977 | import-fresh: 3.3.0 1978 | js-yaml: 4.1.0 1979 | minimatch: 3.1.2 1980 | strip-json-comments: 3.1.1 1981 | transitivePeerDependencies: 1982 | - supports-color 1983 | 1984 | '@eslint/js@9.17.0': {} 1985 | 1986 | '@eslint/object-schema@2.1.5': {} 1987 | 1988 | '@eslint/plugin-kit@0.2.4': 1989 | dependencies: 1990 | levn: 0.4.1 1991 | 1992 | '@floating-ui/core@1.6.8': 1993 | dependencies: 1994 | '@floating-ui/utils': 0.2.8 1995 | 1996 | '@floating-ui/dom@1.6.12': 1997 | dependencies: 1998 | '@floating-ui/core': 1.6.8 1999 | '@floating-ui/utils': 0.2.8 2000 | 2001 | '@floating-ui/react-dom@2.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': 2002 | dependencies: 2003 | '@floating-ui/dom': 1.6.12 2004 | react: 18.3.1 2005 | react-dom: 18.3.1(react@18.3.1) 2006 | 2007 | '@floating-ui/utils@0.2.8': {} 2008 | 2009 | '@humanfs/core@0.19.1': {} 2010 | 2011 | '@humanfs/node@0.16.6': 2012 | dependencies: 2013 | '@humanfs/core': 0.19.1 2014 | '@humanwhocodes/retry': 0.3.1 2015 | 2016 | '@humanwhocodes/module-importer@1.0.1': {} 2017 | 2018 | '@humanwhocodes/retry@0.3.1': {} 2019 | 2020 | '@humanwhocodes/retry@0.4.1': {} 2021 | 2022 | '@isaacs/cliui@8.0.2': 2023 | dependencies: 2024 | string-width: 5.1.2 2025 | string-width-cjs: string-width@4.2.3 2026 | strip-ansi: 7.1.0 2027 | strip-ansi-cjs: strip-ansi@6.0.1 2028 | wrap-ansi: 8.1.0 2029 | wrap-ansi-cjs: wrap-ansi@7.0.0 2030 | 2031 | '@jridgewell/gen-mapping@0.3.8': 2032 | dependencies: 2033 | '@jridgewell/set-array': 1.2.1 2034 | '@jridgewell/sourcemap-codec': 1.5.0 2035 | '@jridgewell/trace-mapping': 0.3.25 2036 | 2037 | '@jridgewell/resolve-uri@3.1.2': {} 2038 | 2039 | '@jridgewell/set-array@1.2.1': {} 2040 | 2041 | '@jridgewell/sourcemap-codec@1.5.0': {} 2042 | 2043 | '@jridgewell/trace-mapping@0.3.25': 2044 | dependencies: 2045 | '@jridgewell/resolve-uri': 3.1.2 2046 | '@jridgewell/sourcemap-codec': 1.5.0 2047 | 2048 | '@nodelib/fs.scandir@2.1.5': 2049 | dependencies: 2050 | '@nodelib/fs.stat': 2.0.5 2051 | run-parallel: 1.2.0 2052 | 2053 | '@nodelib/fs.stat@2.0.5': {} 2054 | 2055 | '@nodelib/fs.walk@1.2.8': 2056 | dependencies: 2057 | '@nodelib/fs.scandir': 2.1.5 2058 | fastq: 1.18.0 2059 | 2060 | '@pkgjs/parseargs@0.11.0': 2061 | optional: true 2062 | 2063 | '@radix-ui/number@1.1.0': {} 2064 | 2065 | '@radix-ui/primitive@1.1.1': {} 2066 | 2067 | '@radix-ui/react-arrow@1.1.1(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': 2068 | dependencies: 2069 | '@radix-ui/react-primitive': 2.0.1(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 2070 | react: 18.3.1 2071 | react-dom: 18.3.1(react@18.3.1) 2072 | optionalDependencies: 2073 | '@types/react': 18.3.18 2074 | '@types/react-dom': 18.3.5(@types/react@18.3.18) 2075 | 2076 | '@radix-ui/react-collection@1.1.1(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': 2077 | dependencies: 2078 | '@radix-ui/react-compose-refs': 1.1.1(@types/react@18.3.18)(react@18.3.1) 2079 | '@radix-ui/react-context': 1.1.1(@types/react@18.3.18)(react@18.3.1) 2080 | '@radix-ui/react-primitive': 2.0.1(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 2081 | '@radix-ui/react-slot': 1.1.1(@types/react@18.3.18)(react@18.3.1) 2082 | react: 18.3.1 2083 | react-dom: 18.3.1(react@18.3.1) 2084 | optionalDependencies: 2085 | '@types/react': 18.3.18 2086 | '@types/react-dom': 18.3.5(@types/react@18.3.18) 2087 | 2088 | '@radix-ui/react-compose-refs@1.1.1(@types/react@18.3.18)(react@18.3.1)': 2089 | dependencies: 2090 | react: 18.3.1 2091 | optionalDependencies: 2092 | '@types/react': 18.3.18 2093 | 2094 | '@radix-ui/react-context@1.1.1(@types/react@18.3.18)(react@18.3.1)': 2095 | dependencies: 2096 | react: 18.3.1 2097 | optionalDependencies: 2098 | '@types/react': 18.3.18 2099 | 2100 | '@radix-ui/react-direction@1.1.0(@types/react@18.3.18)(react@18.3.1)': 2101 | dependencies: 2102 | react: 18.3.1 2103 | optionalDependencies: 2104 | '@types/react': 18.3.18 2105 | 2106 | '@radix-ui/react-dismissable-layer@1.1.3(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': 2107 | dependencies: 2108 | '@radix-ui/primitive': 1.1.1 2109 | '@radix-ui/react-compose-refs': 1.1.1(@types/react@18.3.18)(react@18.3.1) 2110 | '@radix-ui/react-primitive': 2.0.1(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 2111 | '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.18)(react@18.3.1) 2112 | '@radix-ui/react-use-escape-keydown': 1.1.0(@types/react@18.3.18)(react@18.3.1) 2113 | react: 18.3.1 2114 | react-dom: 18.3.1(react@18.3.1) 2115 | optionalDependencies: 2116 | '@types/react': 18.3.18 2117 | '@types/react-dom': 18.3.5(@types/react@18.3.18) 2118 | 2119 | '@radix-ui/react-focus-guards@1.1.1(@types/react@18.3.18)(react@18.3.1)': 2120 | dependencies: 2121 | react: 18.3.1 2122 | optionalDependencies: 2123 | '@types/react': 18.3.18 2124 | 2125 | '@radix-ui/react-focus-scope@1.1.1(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': 2126 | dependencies: 2127 | '@radix-ui/react-compose-refs': 1.1.1(@types/react@18.3.18)(react@18.3.1) 2128 | '@radix-ui/react-primitive': 2.0.1(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 2129 | '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.18)(react@18.3.1) 2130 | react: 18.3.1 2131 | react-dom: 18.3.1(react@18.3.1) 2132 | optionalDependencies: 2133 | '@types/react': 18.3.18 2134 | '@types/react-dom': 18.3.5(@types/react@18.3.18) 2135 | 2136 | '@radix-ui/react-id@1.1.0(@types/react@18.3.18)(react@18.3.1)': 2137 | dependencies: 2138 | '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.18)(react@18.3.1) 2139 | react: 18.3.1 2140 | optionalDependencies: 2141 | '@types/react': 18.3.18 2142 | 2143 | '@radix-ui/react-popper@1.2.1(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': 2144 | dependencies: 2145 | '@floating-ui/react-dom': 2.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 2146 | '@radix-ui/react-arrow': 1.1.1(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 2147 | '@radix-ui/react-compose-refs': 1.1.1(@types/react@18.3.18)(react@18.3.1) 2148 | '@radix-ui/react-context': 1.1.1(@types/react@18.3.18)(react@18.3.1) 2149 | '@radix-ui/react-primitive': 2.0.1(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 2150 | '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.18)(react@18.3.1) 2151 | '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.18)(react@18.3.1) 2152 | '@radix-ui/react-use-rect': 1.1.0(@types/react@18.3.18)(react@18.3.1) 2153 | '@radix-ui/react-use-size': 1.1.0(@types/react@18.3.18)(react@18.3.1) 2154 | '@radix-ui/rect': 1.1.0 2155 | react: 18.3.1 2156 | react-dom: 18.3.1(react@18.3.1) 2157 | optionalDependencies: 2158 | '@types/react': 18.3.18 2159 | '@types/react-dom': 18.3.5(@types/react@18.3.18) 2160 | 2161 | '@radix-ui/react-portal@1.1.3(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': 2162 | dependencies: 2163 | '@radix-ui/react-primitive': 2.0.1(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 2164 | '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.18)(react@18.3.1) 2165 | react: 18.3.1 2166 | react-dom: 18.3.1(react@18.3.1) 2167 | optionalDependencies: 2168 | '@types/react': 18.3.18 2169 | '@types/react-dom': 18.3.5(@types/react@18.3.18) 2170 | 2171 | '@radix-ui/react-presence@1.1.2(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': 2172 | dependencies: 2173 | '@radix-ui/react-compose-refs': 1.1.1(@types/react@18.3.18)(react@18.3.1) 2174 | '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.18)(react@18.3.1) 2175 | react: 18.3.1 2176 | react-dom: 18.3.1(react@18.3.1) 2177 | optionalDependencies: 2178 | '@types/react': 18.3.18 2179 | '@types/react-dom': 18.3.5(@types/react@18.3.18) 2180 | 2181 | '@radix-ui/react-primitive@2.0.1(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': 2182 | dependencies: 2183 | '@radix-ui/react-slot': 1.1.1(@types/react@18.3.18)(react@18.3.1) 2184 | react: 18.3.1 2185 | react-dom: 18.3.1(react@18.3.1) 2186 | optionalDependencies: 2187 | '@types/react': 18.3.18 2188 | '@types/react-dom': 18.3.5(@types/react@18.3.18) 2189 | 2190 | '@radix-ui/react-scroll-area@1.2.2(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': 2191 | dependencies: 2192 | '@radix-ui/number': 1.1.0 2193 | '@radix-ui/primitive': 1.1.1 2194 | '@radix-ui/react-compose-refs': 1.1.1(@types/react@18.3.18)(react@18.3.1) 2195 | '@radix-ui/react-context': 1.1.1(@types/react@18.3.18)(react@18.3.1) 2196 | '@radix-ui/react-direction': 1.1.0(@types/react@18.3.18)(react@18.3.1) 2197 | '@radix-ui/react-presence': 1.1.2(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 2198 | '@radix-ui/react-primitive': 2.0.1(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 2199 | '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.18)(react@18.3.1) 2200 | '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.18)(react@18.3.1) 2201 | react: 18.3.1 2202 | react-dom: 18.3.1(react@18.3.1) 2203 | optionalDependencies: 2204 | '@types/react': 18.3.18 2205 | '@types/react-dom': 18.3.5(@types/react@18.3.18) 2206 | 2207 | '@radix-ui/react-select@2.1.4(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': 2208 | dependencies: 2209 | '@radix-ui/number': 1.1.0 2210 | '@radix-ui/primitive': 1.1.1 2211 | '@radix-ui/react-collection': 1.1.1(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 2212 | '@radix-ui/react-compose-refs': 1.1.1(@types/react@18.3.18)(react@18.3.1) 2213 | '@radix-ui/react-context': 1.1.1(@types/react@18.3.18)(react@18.3.1) 2214 | '@radix-ui/react-direction': 1.1.0(@types/react@18.3.18)(react@18.3.1) 2215 | '@radix-ui/react-dismissable-layer': 1.1.3(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 2216 | '@radix-ui/react-focus-guards': 1.1.1(@types/react@18.3.18)(react@18.3.1) 2217 | '@radix-ui/react-focus-scope': 1.1.1(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 2218 | '@radix-ui/react-id': 1.1.0(@types/react@18.3.18)(react@18.3.1) 2219 | '@radix-ui/react-popper': 1.2.1(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 2220 | '@radix-ui/react-portal': 1.1.3(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 2221 | '@radix-ui/react-primitive': 2.0.1(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 2222 | '@radix-ui/react-slot': 1.1.1(@types/react@18.3.18)(react@18.3.1) 2223 | '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.18)(react@18.3.1) 2224 | '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.18)(react@18.3.1) 2225 | '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.18)(react@18.3.1) 2226 | '@radix-ui/react-use-previous': 1.1.0(@types/react@18.3.18)(react@18.3.1) 2227 | '@radix-ui/react-visually-hidden': 1.1.1(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 2228 | aria-hidden: 1.2.4 2229 | react: 18.3.1 2230 | react-dom: 18.3.1(react@18.3.1) 2231 | react-remove-scroll: 2.6.2(@types/react@18.3.18)(react@18.3.1) 2232 | optionalDependencies: 2233 | '@types/react': 18.3.18 2234 | '@types/react-dom': 18.3.5(@types/react@18.3.18) 2235 | 2236 | '@radix-ui/react-slot@1.1.1(@types/react@18.3.18)(react@18.3.1)': 2237 | dependencies: 2238 | '@radix-ui/react-compose-refs': 1.1.1(@types/react@18.3.18)(react@18.3.1) 2239 | react: 18.3.1 2240 | optionalDependencies: 2241 | '@types/react': 18.3.18 2242 | 2243 | '@radix-ui/react-toast@1.2.4(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': 2244 | dependencies: 2245 | '@radix-ui/primitive': 1.1.1 2246 | '@radix-ui/react-collection': 1.1.1(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 2247 | '@radix-ui/react-compose-refs': 1.1.1(@types/react@18.3.18)(react@18.3.1) 2248 | '@radix-ui/react-context': 1.1.1(@types/react@18.3.18)(react@18.3.1) 2249 | '@radix-ui/react-dismissable-layer': 1.1.3(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 2250 | '@radix-ui/react-portal': 1.1.3(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 2251 | '@radix-ui/react-presence': 1.1.2(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 2252 | '@radix-ui/react-primitive': 2.0.1(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 2253 | '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.18)(react@18.3.1) 2254 | '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.18)(react@18.3.1) 2255 | '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.18)(react@18.3.1) 2256 | '@radix-ui/react-visually-hidden': 1.1.1(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 2257 | react: 18.3.1 2258 | react-dom: 18.3.1(react@18.3.1) 2259 | optionalDependencies: 2260 | '@types/react': 18.3.18 2261 | '@types/react-dom': 18.3.5(@types/react@18.3.18) 2262 | 2263 | '@radix-ui/react-use-callback-ref@1.1.0(@types/react@18.3.18)(react@18.3.1)': 2264 | dependencies: 2265 | react: 18.3.1 2266 | optionalDependencies: 2267 | '@types/react': 18.3.18 2268 | 2269 | '@radix-ui/react-use-controllable-state@1.1.0(@types/react@18.3.18)(react@18.3.1)': 2270 | dependencies: 2271 | '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.18)(react@18.3.1) 2272 | react: 18.3.1 2273 | optionalDependencies: 2274 | '@types/react': 18.3.18 2275 | 2276 | '@radix-ui/react-use-escape-keydown@1.1.0(@types/react@18.3.18)(react@18.3.1)': 2277 | dependencies: 2278 | '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.18)(react@18.3.1) 2279 | react: 18.3.1 2280 | optionalDependencies: 2281 | '@types/react': 18.3.18 2282 | 2283 | '@radix-ui/react-use-layout-effect@1.1.0(@types/react@18.3.18)(react@18.3.1)': 2284 | dependencies: 2285 | react: 18.3.1 2286 | optionalDependencies: 2287 | '@types/react': 18.3.18 2288 | 2289 | '@radix-ui/react-use-previous@1.1.0(@types/react@18.3.18)(react@18.3.1)': 2290 | dependencies: 2291 | react: 18.3.1 2292 | optionalDependencies: 2293 | '@types/react': 18.3.18 2294 | 2295 | '@radix-ui/react-use-rect@1.1.0(@types/react@18.3.18)(react@18.3.1)': 2296 | dependencies: 2297 | '@radix-ui/rect': 1.1.0 2298 | react: 18.3.1 2299 | optionalDependencies: 2300 | '@types/react': 18.3.18 2301 | 2302 | '@radix-ui/react-use-size@1.1.0(@types/react@18.3.18)(react@18.3.1)': 2303 | dependencies: 2304 | '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.18)(react@18.3.1) 2305 | react: 18.3.1 2306 | optionalDependencies: 2307 | '@types/react': 18.3.18 2308 | 2309 | '@radix-ui/react-visually-hidden@1.1.1(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': 2310 | dependencies: 2311 | '@radix-ui/react-primitive': 2.0.1(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 2312 | react: 18.3.1 2313 | react-dom: 18.3.1(react@18.3.1) 2314 | optionalDependencies: 2315 | '@types/react': 18.3.18 2316 | '@types/react-dom': 18.3.5(@types/react@18.3.18) 2317 | 2318 | '@radix-ui/rect@1.1.0': {} 2319 | 2320 | '@rollup/rollup-android-arm-eabi@4.29.1': 2321 | optional: true 2322 | 2323 | '@rollup/rollup-android-arm64@4.29.1': 2324 | optional: true 2325 | 2326 | '@rollup/rollup-darwin-arm64@4.29.1': 2327 | optional: true 2328 | 2329 | '@rollup/rollup-darwin-x64@4.29.1': 2330 | optional: true 2331 | 2332 | '@rollup/rollup-freebsd-arm64@4.29.1': 2333 | optional: true 2334 | 2335 | '@rollup/rollup-freebsd-x64@4.29.1': 2336 | optional: true 2337 | 2338 | '@rollup/rollup-linux-arm-gnueabihf@4.29.1': 2339 | optional: true 2340 | 2341 | '@rollup/rollup-linux-arm-musleabihf@4.29.1': 2342 | optional: true 2343 | 2344 | '@rollup/rollup-linux-arm64-gnu@4.29.1': 2345 | optional: true 2346 | 2347 | '@rollup/rollup-linux-arm64-musl@4.29.1': 2348 | optional: true 2349 | 2350 | '@rollup/rollup-linux-loongarch64-gnu@4.29.1': 2351 | optional: true 2352 | 2353 | '@rollup/rollup-linux-powerpc64le-gnu@4.29.1': 2354 | optional: true 2355 | 2356 | '@rollup/rollup-linux-riscv64-gnu@4.29.1': 2357 | optional: true 2358 | 2359 | '@rollup/rollup-linux-s390x-gnu@4.29.1': 2360 | optional: true 2361 | 2362 | '@rollup/rollup-linux-x64-gnu@4.29.1': 2363 | optional: true 2364 | 2365 | '@rollup/rollup-linux-x64-musl@4.29.1': 2366 | optional: true 2367 | 2368 | '@rollup/rollup-win32-arm64-msvc@4.29.1': 2369 | optional: true 2370 | 2371 | '@rollup/rollup-win32-ia32-msvc@4.29.1': 2372 | optional: true 2373 | 2374 | '@rollup/rollup-win32-x64-msvc@4.29.1': 2375 | optional: true 2376 | 2377 | '@types/babel__core@7.20.5': 2378 | dependencies: 2379 | '@babel/parser': 7.26.3 2380 | '@babel/types': 7.26.3 2381 | '@types/babel__generator': 7.6.8 2382 | '@types/babel__template': 7.4.4 2383 | '@types/babel__traverse': 7.20.6 2384 | 2385 | '@types/babel__generator@7.6.8': 2386 | dependencies: 2387 | '@babel/types': 7.26.3 2388 | 2389 | '@types/babel__template@7.4.4': 2390 | dependencies: 2391 | '@babel/parser': 7.26.3 2392 | '@babel/types': 7.26.3 2393 | 2394 | '@types/babel__traverse@7.20.6': 2395 | dependencies: 2396 | '@babel/types': 7.26.3 2397 | 2398 | '@types/estree@1.0.6': {} 2399 | 2400 | '@types/json-schema@7.0.15': {} 2401 | 2402 | '@types/node@22.10.5': 2403 | dependencies: 2404 | undici-types: 6.20.0 2405 | 2406 | '@types/prismjs@1.26.5': {} 2407 | 2408 | '@types/prop-types@15.7.14': {} 2409 | 2410 | '@types/react-dom@18.3.5(@types/react@18.3.18)': 2411 | dependencies: 2412 | '@types/react': 18.3.18 2413 | 2414 | '@types/react@18.3.18': 2415 | dependencies: 2416 | '@types/prop-types': 15.7.14 2417 | csstype: 3.1.3 2418 | 2419 | '@typescript-eslint/eslint-plugin@8.19.0(@typescript-eslint/parser@8.19.0(eslint@9.17.0(jiti@1.21.7))(typescript@5.7.2))(eslint@9.17.0(jiti@1.21.7))(typescript@5.7.2)': 2420 | dependencies: 2421 | '@eslint-community/regexpp': 4.12.1 2422 | '@typescript-eslint/parser': 8.19.0(eslint@9.17.0(jiti@1.21.7))(typescript@5.7.2) 2423 | '@typescript-eslint/scope-manager': 8.19.0 2424 | '@typescript-eslint/type-utils': 8.19.0(eslint@9.17.0(jiti@1.21.7))(typescript@5.7.2) 2425 | '@typescript-eslint/utils': 8.19.0(eslint@9.17.0(jiti@1.21.7))(typescript@5.7.2) 2426 | '@typescript-eslint/visitor-keys': 8.19.0 2427 | eslint: 9.17.0(jiti@1.21.7) 2428 | graphemer: 1.4.0 2429 | ignore: 5.3.2 2430 | natural-compare: 1.4.0 2431 | ts-api-utils: 1.4.3(typescript@5.7.2) 2432 | typescript: 5.7.2 2433 | transitivePeerDependencies: 2434 | - supports-color 2435 | 2436 | '@typescript-eslint/parser@8.19.0(eslint@9.17.0(jiti@1.21.7))(typescript@5.7.2)': 2437 | dependencies: 2438 | '@typescript-eslint/scope-manager': 8.19.0 2439 | '@typescript-eslint/types': 8.19.0 2440 | '@typescript-eslint/typescript-estree': 8.19.0(typescript@5.7.2) 2441 | '@typescript-eslint/visitor-keys': 8.19.0 2442 | debug: 4.4.0 2443 | eslint: 9.17.0(jiti@1.21.7) 2444 | typescript: 5.7.2 2445 | transitivePeerDependencies: 2446 | - supports-color 2447 | 2448 | '@typescript-eslint/scope-manager@8.19.0': 2449 | dependencies: 2450 | '@typescript-eslint/types': 8.19.0 2451 | '@typescript-eslint/visitor-keys': 8.19.0 2452 | 2453 | '@typescript-eslint/type-utils@8.19.0(eslint@9.17.0(jiti@1.21.7))(typescript@5.7.2)': 2454 | dependencies: 2455 | '@typescript-eslint/typescript-estree': 8.19.0(typescript@5.7.2) 2456 | '@typescript-eslint/utils': 8.19.0(eslint@9.17.0(jiti@1.21.7))(typescript@5.7.2) 2457 | debug: 4.4.0 2458 | eslint: 9.17.0(jiti@1.21.7) 2459 | ts-api-utils: 1.4.3(typescript@5.7.2) 2460 | typescript: 5.7.2 2461 | transitivePeerDependencies: 2462 | - supports-color 2463 | 2464 | '@typescript-eslint/types@8.19.0': {} 2465 | 2466 | '@typescript-eslint/typescript-estree@8.19.0(typescript@5.7.2)': 2467 | dependencies: 2468 | '@typescript-eslint/types': 8.19.0 2469 | '@typescript-eslint/visitor-keys': 8.19.0 2470 | debug: 4.4.0 2471 | fast-glob: 3.3.2 2472 | is-glob: 4.0.3 2473 | minimatch: 9.0.5 2474 | semver: 7.6.3 2475 | ts-api-utils: 1.4.3(typescript@5.7.2) 2476 | typescript: 5.7.2 2477 | transitivePeerDependencies: 2478 | - supports-color 2479 | 2480 | '@typescript-eslint/utils@8.19.0(eslint@9.17.0(jiti@1.21.7))(typescript@5.7.2)': 2481 | dependencies: 2482 | '@eslint-community/eslint-utils': 4.4.1(eslint@9.17.0(jiti@1.21.7)) 2483 | '@typescript-eslint/scope-manager': 8.19.0 2484 | '@typescript-eslint/types': 8.19.0 2485 | '@typescript-eslint/typescript-estree': 8.19.0(typescript@5.7.2) 2486 | eslint: 9.17.0(jiti@1.21.7) 2487 | typescript: 5.7.2 2488 | transitivePeerDependencies: 2489 | - supports-color 2490 | 2491 | '@typescript-eslint/visitor-keys@8.19.0': 2492 | dependencies: 2493 | '@typescript-eslint/types': 8.19.0 2494 | eslint-visitor-keys: 4.2.0 2495 | 2496 | '@vitejs/plugin-react@4.3.4(vite@5.4.11(@types/node@22.10.5))': 2497 | dependencies: 2498 | '@babel/core': 7.26.0 2499 | '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.0) 2500 | '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.0) 2501 | '@types/babel__core': 7.20.5 2502 | react-refresh: 0.14.2 2503 | vite: 5.4.11(@types/node@22.10.5) 2504 | transitivePeerDependencies: 2505 | - supports-color 2506 | 2507 | acorn-jsx@5.3.2(acorn@8.14.0): 2508 | dependencies: 2509 | acorn: 8.14.0 2510 | 2511 | acorn@8.14.0: {} 2512 | 2513 | ajv@6.12.6: 2514 | dependencies: 2515 | fast-deep-equal: 3.1.3 2516 | fast-json-stable-stringify: 2.1.0 2517 | json-schema-traverse: 0.4.1 2518 | uri-js: 4.4.1 2519 | 2520 | ansi-regex@5.0.1: {} 2521 | 2522 | ansi-regex@6.1.0: {} 2523 | 2524 | ansi-styles@4.3.0: 2525 | dependencies: 2526 | color-convert: 2.0.1 2527 | 2528 | ansi-styles@6.2.1: {} 2529 | 2530 | any-promise@1.3.0: {} 2531 | 2532 | anymatch@3.1.3: 2533 | dependencies: 2534 | normalize-path: 3.0.0 2535 | picomatch: 2.3.1 2536 | 2537 | arg@5.0.2: {} 2538 | 2539 | argparse@2.0.1: {} 2540 | 2541 | aria-hidden@1.2.4: 2542 | dependencies: 2543 | tslib: 2.8.1 2544 | 2545 | autoprefixer@10.4.20(postcss@8.4.49): 2546 | dependencies: 2547 | browserslist: 4.24.3 2548 | caniuse-lite: 1.0.30001690 2549 | fraction.js: 4.3.7 2550 | normalize-range: 0.1.2 2551 | picocolors: 1.1.1 2552 | postcss: 8.4.49 2553 | postcss-value-parser: 4.2.0 2554 | 2555 | balanced-match@1.0.2: {} 2556 | 2557 | binary-extensions@2.3.0: {} 2558 | 2559 | brace-expansion@1.1.11: 2560 | dependencies: 2561 | balanced-match: 1.0.2 2562 | concat-map: 0.0.1 2563 | 2564 | brace-expansion@2.0.1: 2565 | dependencies: 2566 | balanced-match: 1.0.2 2567 | 2568 | braces@3.0.3: 2569 | dependencies: 2570 | fill-range: 7.1.1 2571 | 2572 | browserslist@4.24.3: 2573 | dependencies: 2574 | caniuse-lite: 1.0.30001690 2575 | electron-to-chromium: 1.5.76 2576 | node-releases: 2.0.19 2577 | update-browserslist-db: 1.1.1(browserslist@4.24.3) 2578 | 2579 | callsites@3.1.0: {} 2580 | 2581 | camelcase-css@2.0.1: {} 2582 | 2583 | caniuse-lite@1.0.30001690: {} 2584 | 2585 | chalk@4.1.2: 2586 | dependencies: 2587 | ansi-styles: 4.3.0 2588 | supports-color: 7.2.0 2589 | 2590 | chokidar@3.6.0: 2591 | dependencies: 2592 | anymatch: 3.1.3 2593 | braces: 3.0.3 2594 | glob-parent: 5.1.2 2595 | is-binary-path: 2.1.0 2596 | is-glob: 4.0.3 2597 | normalize-path: 3.0.0 2598 | readdirp: 3.6.0 2599 | optionalDependencies: 2600 | fsevents: 2.3.3 2601 | 2602 | class-variance-authority@0.7.1: 2603 | dependencies: 2604 | clsx: 2.1.1 2605 | 2606 | clsx@2.1.1: {} 2607 | 2608 | color-convert@2.0.1: 2609 | dependencies: 2610 | color-name: 1.1.4 2611 | 2612 | color-name@1.1.4: {} 2613 | 2614 | commander@4.1.1: {} 2615 | 2616 | concat-map@0.0.1: {} 2617 | 2618 | convert-source-map@2.0.0: {} 2619 | 2620 | cross-spawn@7.0.6: 2621 | dependencies: 2622 | path-key: 3.1.1 2623 | shebang-command: 2.0.0 2624 | which: 2.0.2 2625 | 2626 | cssesc@3.0.0: {} 2627 | 2628 | csstype@3.1.3: {} 2629 | 2630 | debug@4.4.0: 2631 | dependencies: 2632 | ms: 2.1.3 2633 | 2634 | deep-is@0.1.4: {} 2635 | 2636 | detect-node-es@1.1.0: {} 2637 | 2638 | didyoumean@1.2.2: {} 2639 | 2640 | dlv@1.1.3: {} 2641 | 2642 | eastasianwidth@0.2.0: {} 2643 | 2644 | electron-to-chromium@1.5.76: {} 2645 | 2646 | emoji-regex@8.0.0: {} 2647 | 2648 | emoji-regex@9.2.2: {} 2649 | 2650 | esbuild@0.21.5: 2651 | optionalDependencies: 2652 | '@esbuild/aix-ppc64': 0.21.5 2653 | '@esbuild/android-arm': 0.21.5 2654 | '@esbuild/android-arm64': 0.21.5 2655 | '@esbuild/android-x64': 0.21.5 2656 | '@esbuild/darwin-arm64': 0.21.5 2657 | '@esbuild/darwin-x64': 0.21.5 2658 | '@esbuild/freebsd-arm64': 0.21.5 2659 | '@esbuild/freebsd-x64': 0.21.5 2660 | '@esbuild/linux-arm': 0.21.5 2661 | '@esbuild/linux-arm64': 0.21.5 2662 | '@esbuild/linux-ia32': 0.21.5 2663 | '@esbuild/linux-loong64': 0.21.5 2664 | '@esbuild/linux-mips64el': 0.21.5 2665 | '@esbuild/linux-ppc64': 0.21.5 2666 | '@esbuild/linux-riscv64': 0.21.5 2667 | '@esbuild/linux-s390x': 0.21.5 2668 | '@esbuild/linux-x64': 0.21.5 2669 | '@esbuild/netbsd-x64': 0.21.5 2670 | '@esbuild/openbsd-x64': 0.21.5 2671 | '@esbuild/sunos-x64': 0.21.5 2672 | '@esbuild/win32-arm64': 0.21.5 2673 | '@esbuild/win32-ia32': 0.21.5 2674 | '@esbuild/win32-x64': 0.21.5 2675 | 2676 | escalade@3.2.0: {} 2677 | 2678 | escape-string-regexp@4.0.0: {} 2679 | 2680 | eslint-plugin-react-hooks@5.1.0(eslint@9.17.0(jiti@1.21.7)): 2681 | dependencies: 2682 | eslint: 9.17.0(jiti@1.21.7) 2683 | 2684 | eslint-plugin-react-refresh@0.4.16(eslint@9.17.0(jiti@1.21.7)): 2685 | dependencies: 2686 | eslint: 9.17.0(jiti@1.21.7) 2687 | 2688 | eslint-scope@8.2.0: 2689 | dependencies: 2690 | esrecurse: 4.3.0 2691 | estraverse: 5.3.0 2692 | 2693 | eslint-visitor-keys@3.4.3: {} 2694 | 2695 | eslint-visitor-keys@4.2.0: {} 2696 | 2697 | eslint@9.17.0(jiti@1.21.7): 2698 | dependencies: 2699 | '@eslint-community/eslint-utils': 4.4.1(eslint@9.17.0(jiti@1.21.7)) 2700 | '@eslint-community/regexpp': 4.12.1 2701 | '@eslint/config-array': 0.19.1 2702 | '@eslint/core': 0.9.1 2703 | '@eslint/eslintrc': 3.2.0 2704 | '@eslint/js': 9.17.0 2705 | '@eslint/plugin-kit': 0.2.4 2706 | '@humanfs/node': 0.16.6 2707 | '@humanwhocodes/module-importer': 1.0.1 2708 | '@humanwhocodes/retry': 0.4.1 2709 | '@types/estree': 1.0.6 2710 | '@types/json-schema': 7.0.15 2711 | ajv: 6.12.6 2712 | chalk: 4.1.2 2713 | cross-spawn: 7.0.6 2714 | debug: 4.4.0 2715 | escape-string-regexp: 4.0.0 2716 | eslint-scope: 8.2.0 2717 | eslint-visitor-keys: 4.2.0 2718 | espree: 10.3.0 2719 | esquery: 1.6.0 2720 | esutils: 2.0.3 2721 | fast-deep-equal: 3.1.3 2722 | file-entry-cache: 8.0.0 2723 | find-up: 5.0.0 2724 | glob-parent: 6.0.2 2725 | ignore: 5.3.2 2726 | imurmurhash: 0.1.4 2727 | is-glob: 4.0.3 2728 | json-stable-stringify-without-jsonify: 1.0.1 2729 | lodash.merge: 4.6.2 2730 | minimatch: 3.1.2 2731 | natural-compare: 1.4.0 2732 | optionator: 0.9.4 2733 | optionalDependencies: 2734 | jiti: 1.21.7 2735 | transitivePeerDependencies: 2736 | - supports-color 2737 | 2738 | espree@10.3.0: 2739 | dependencies: 2740 | acorn: 8.14.0 2741 | acorn-jsx: 5.3.2(acorn@8.14.0) 2742 | eslint-visitor-keys: 4.2.0 2743 | 2744 | esquery@1.6.0: 2745 | dependencies: 2746 | estraverse: 5.3.0 2747 | 2748 | esrecurse@4.3.0: 2749 | dependencies: 2750 | estraverse: 5.3.0 2751 | 2752 | estraverse@5.3.0: {} 2753 | 2754 | esutils@2.0.3: {} 2755 | 2756 | fast-deep-equal@3.1.3: {} 2757 | 2758 | fast-glob@3.3.2: 2759 | dependencies: 2760 | '@nodelib/fs.stat': 2.0.5 2761 | '@nodelib/fs.walk': 1.2.8 2762 | glob-parent: 5.1.2 2763 | merge2: 1.4.1 2764 | micromatch: 4.0.8 2765 | 2766 | fast-json-stable-stringify@2.1.0: {} 2767 | 2768 | fast-levenshtein@2.0.6: {} 2769 | 2770 | fastq@1.18.0: 2771 | dependencies: 2772 | reusify: 1.0.4 2773 | 2774 | file-entry-cache@8.0.0: 2775 | dependencies: 2776 | flat-cache: 4.0.1 2777 | 2778 | fill-range@7.1.1: 2779 | dependencies: 2780 | to-regex-range: 5.0.1 2781 | 2782 | find-up@5.0.0: 2783 | dependencies: 2784 | locate-path: 6.0.0 2785 | path-exists: 4.0.0 2786 | 2787 | flat-cache@4.0.1: 2788 | dependencies: 2789 | flatted: 3.3.2 2790 | keyv: 4.5.4 2791 | 2792 | flatted@3.3.2: {} 2793 | 2794 | foreground-child@3.3.0: 2795 | dependencies: 2796 | cross-spawn: 7.0.6 2797 | signal-exit: 4.1.0 2798 | 2799 | fraction.js@4.3.7: {} 2800 | 2801 | fsevents@2.3.3: 2802 | optional: true 2803 | 2804 | function-bind@1.1.2: {} 2805 | 2806 | gensync@1.0.0-beta.2: {} 2807 | 2808 | get-nonce@1.0.1: {} 2809 | 2810 | glob-parent@5.1.2: 2811 | dependencies: 2812 | is-glob: 4.0.3 2813 | 2814 | glob-parent@6.0.2: 2815 | dependencies: 2816 | is-glob: 4.0.3 2817 | 2818 | glob@10.4.5: 2819 | dependencies: 2820 | foreground-child: 3.3.0 2821 | jackspeak: 3.4.3 2822 | minimatch: 9.0.5 2823 | minipass: 7.1.2 2824 | package-json-from-dist: 1.0.1 2825 | path-scurry: 1.11.1 2826 | 2827 | globals@11.12.0: {} 2828 | 2829 | globals@14.0.0: {} 2830 | 2831 | graphemer@1.4.0: {} 2832 | 2833 | has-flag@4.0.0: {} 2834 | 2835 | hasown@2.0.2: 2836 | dependencies: 2837 | function-bind: 1.1.2 2838 | 2839 | ignore@5.3.2: {} 2840 | 2841 | import-fresh@3.3.0: 2842 | dependencies: 2843 | parent-module: 1.0.1 2844 | resolve-from: 4.0.0 2845 | 2846 | imurmurhash@0.1.4: {} 2847 | 2848 | is-binary-path@2.1.0: 2849 | dependencies: 2850 | binary-extensions: 2.3.0 2851 | 2852 | is-core-module@2.16.1: 2853 | dependencies: 2854 | hasown: 2.0.2 2855 | 2856 | is-extglob@2.1.1: {} 2857 | 2858 | is-fullwidth-code-point@3.0.0: {} 2859 | 2860 | is-glob@4.0.3: 2861 | dependencies: 2862 | is-extglob: 2.1.1 2863 | 2864 | is-number@7.0.0: {} 2865 | 2866 | isexe@2.0.0: {} 2867 | 2868 | jackspeak@3.4.3: 2869 | dependencies: 2870 | '@isaacs/cliui': 8.0.2 2871 | optionalDependencies: 2872 | '@pkgjs/parseargs': 0.11.0 2873 | 2874 | jiti@1.21.7: {} 2875 | 2876 | js-tokens@4.0.0: {} 2877 | 2878 | js-yaml@4.1.0: 2879 | dependencies: 2880 | argparse: 2.0.1 2881 | 2882 | jsesc@3.1.0: {} 2883 | 2884 | json-buffer@3.0.1: {} 2885 | 2886 | json-schema-traverse@0.4.1: {} 2887 | 2888 | json-stable-stringify-without-jsonify@1.0.1: {} 2889 | 2890 | json5@2.2.3: {} 2891 | 2892 | keyv@4.5.4: 2893 | dependencies: 2894 | json-buffer: 3.0.1 2895 | 2896 | levn@0.4.1: 2897 | dependencies: 2898 | prelude-ls: 1.2.1 2899 | type-check: 0.4.0 2900 | 2901 | lilconfig@3.1.3: {} 2902 | 2903 | lines-and-columns@1.2.4: {} 2904 | 2905 | locate-path@6.0.0: 2906 | dependencies: 2907 | p-locate: 5.0.0 2908 | 2909 | lodash.merge@4.6.2: {} 2910 | 2911 | loose-envify@1.4.0: 2912 | dependencies: 2913 | js-tokens: 4.0.0 2914 | 2915 | lru-cache@10.4.3: {} 2916 | 2917 | lru-cache@5.1.1: 2918 | dependencies: 2919 | yallist: 3.1.1 2920 | 2921 | lucide-react@0.469.0(react@18.3.1): 2922 | dependencies: 2923 | react: 18.3.1 2924 | 2925 | merge2@1.4.1: {} 2926 | 2927 | micromatch@4.0.8: 2928 | dependencies: 2929 | braces: 3.0.3 2930 | picomatch: 2.3.1 2931 | 2932 | minimatch@3.1.2: 2933 | dependencies: 2934 | brace-expansion: 1.1.11 2935 | 2936 | minimatch@9.0.5: 2937 | dependencies: 2938 | brace-expansion: 2.0.1 2939 | 2940 | minipass@7.1.2: {} 2941 | 2942 | ms@2.1.3: {} 2943 | 2944 | mz@2.7.0: 2945 | dependencies: 2946 | any-promise: 1.3.0 2947 | object-assign: 4.1.1 2948 | thenify-all: 1.6.0 2949 | 2950 | nanoid@3.3.8: {} 2951 | 2952 | natural-compare@1.4.0: {} 2953 | 2954 | node-releases@2.0.19: {} 2955 | 2956 | normalize-path@3.0.0: {} 2957 | 2958 | normalize-range@0.1.2: {} 2959 | 2960 | object-assign@4.1.1: {} 2961 | 2962 | object-hash@3.0.0: {} 2963 | 2964 | optionator@0.9.4: 2965 | dependencies: 2966 | deep-is: 0.1.4 2967 | fast-levenshtein: 2.0.6 2968 | levn: 0.4.1 2969 | prelude-ls: 1.2.1 2970 | type-check: 0.4.0 2971 | word-wrap: 1.2.5 2972 | 2973 | p-limit@3.1.0: 2974 | dependencies: 2975 | yocto-queue: 0.1.0 2976 | 2977 | p-locate@5.0.0: 2978 | dependencies: 2979 | p-limit: 3.1.0 2980 | 2981 | package-json-from-dist@1.0.1: {} 2982 | 2983 | parent-module@1.0.1: 2984 | dependencies: 2985 | callsites: 3.1.0 2986 | 2987 | path-exists@4.0.0: {} 2988 | 2989 | path-key@3.1.1: {} 2990 | 2991 | path-parse@1.0.7: {} 2992 | 2993 | path-scurry@1.11.1: 2994 | dependencies: 2995 | lru-cache: 10.4.3 2996 | minipass: 7.1.2 2997 | 2998 | picocolors@1.1.1: {} 2999 | 3000 | picomatch@2.3.1: {} 3001 | 3002 | pify@2.3.0: {} 3003 | 3004 | pirates@4.0.6: {} 3005 | 3006 | postcss-import@15.1.0(postcss@8.4.49): 3007 | dependencies: 3008 | postcss: 8.4.49 3009 | postcss-value-parser: 4.2.0 3010 | read-cache: 1.0.0 3011 | resolve: 1.22.10 3012 | 3013 | postcss-js@4.0.1(postcss@8.4.49): 3014 | dependencies: 3015 | camelcase-css: 2.0.1 3016 | postcss: 8.4.49 3017 | 3018 | postcss-load-config@4.0.2(postcss@8.4.49): 3019 | dependencies: 3020 | lilconfig: 3.1.3 3021 | yaml: 2.7.0 3022 | optionalDependencies: 3023 | postcss: 8.4.49 3024 | 3025 | postcss-nested@6.2.0(postcss@8.4.49): 3026 | dependencies: 3027 | postcss: 8.4.49 3028 | postcss-selector-parser: 6.1.2 3029 | 3030 | postcss-selector-parser@6.1.2: 3031 | dependencies: 3032 | cssesc: 3.0.0 3033 | util-deprecate: 1.0.2 3034 | 3035 | postcss-value-parser@4.2.0: {} 3036 | 3037 | postcss@8.4.49: 3038 | dependencies: 3039 | nanoid: 3.3.8 3040 | picocolors: 1.1.1 3041 | source-map-js: 1.2.1 3042 | 3043 | prelude-ls@1.2.1: {} 3044 | 3045 | prismjs@1.29.0: {} 3046 | 3047 | punycode@2.3.1: {} 3048 | 3049 | queue-microtask@1.2.3: {} 3050 | 3051 | react-dom@18.3.1(react@18.3.1): 3052 | dependencies: 3053 | loose-envify: 1.4.0 3054 | react: 18.3.1 3055 | scheduler: 0.23.2 3056 | 3057 | react-refresh@0.14.2: {} 3058 | 3059 | react-remove-scroll-bar@2.3.8(@types/react@18.3.18)(react@18.3.1): 3060 | dependencies: 3061 | react: 18.3.1 3062 | react-style-singleton: 2.2.3(@types/react@18.3.18)(react@18.3.1) 3063 | tslib: 2.8.1 3064 | optionalDependencies: 3065 | '@types/react': 18.3.18 3066 | 3067 | react-remove-scroll@2.6.2(@types/react@18.3.18)(react@18.3.1): 3068 | dependencies: 3069 | react: 18.3.1 3070 | react-remove-scroll-bar: 2.3.8(@types/react@18.3.18)(react@18.3.1) 3071 | react-style-singleton: 2.2.3(@types/react@18.3.18)(react@18.3.1) 3072 | tslib: 2.8.1 3073 | use-callback-ref: 1.3.3(@types/react@18.3.18)(react@18.3.1) 3074 | use-sidecar: 1.1.3(@types/react@18.3.18)(react@18.3.1) 3075 | optionalDependencies: 3076 | '@types/react': 18.3.18 3077 | 3078 | react-simple-code-editor@0.14.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1): 3079 | dependencies: 3080 | react: 18.3.1 3081 | react-dom: 18.3.1(react@18.3.1) 3082 | 3083 | react-style-singleton@2.2.3(@types/react@18.3.18)(react@18.3.1): 3084 | dependencies: 3085 | get-nonce: 1.0.1 3086 | react: 18.3.1 3087 | tslib: 2.8.1 3088 | optionalDependencies: 3089 | '@types/react': 18.3.18 3090 | 3091 | react@18.3.1: 3092 | dependencies: 3093 | loose-envify: 1.4.0 3094 | 3095 | read-cache@1.0.0: 3096 | dependencies: 3097 | pify: 2.3.0 3098 | 3099 | readdirp@3.6.0: 3100 | dependencies: 3101 | picomatch: 2.3.1 3102 | 3103 | resolve-from@4.0.0: {} 3104 | 3105 | resolve@1.22.10: 3106 | dependencies: 3107 | is-core-module: 2.16.1 3108 | path-parse: 1.0.7 3109 | supports-preserve-symlinks-flag: 1.0.0 3110 | 3111 | reusify@1.0.4: {} 3112 | 3113 | rollup@4.29.1: 3114 | dependencies: 3115 | '@types/estree': 1.0.6 3116 | optionalDependencies: 3117 | '@rollup/rollup-android-arm-eabi': 4.29.1 3118 | '@rollup/rollup-android-arm64': 4.29.1 3119 | '@rollup/rollup-darwin-arm64': 4.29.1 3120 | '@rollup/rollup-darwin-x64': 4.29.1 3121 | '@rollup/rollup-freebsd-arm64': 4.29.1 3122 | '@rollup/rollup-freebsd-x64': 4.29.1 3123 | '@rollup/rollup-linux-arm-gnueabihf': 4.29.1 3124 | '@rollup/rollup-linux-arm-musleabihf': 4.29.1 3125 | '@rollup/rollup-linux-arm64-gnu': 4.29.1 3126 | '@rollup/rollup-linux-arm64-musl': 4.29.1 3127 | '@rollup/rollup-linux-loongarch64-gnu': 4.29.1 3128 | '@rollup/rollup-linux-powerpc64le-gnu': 4.29.1 3129 | '@rollup/rollup-linux-riscv64-gnu': 4.29.1 3130 | '@rollup/rollup-linux-s390x-gnu': 4.29.1 3131 | '@rollup/rollup-linux-x64-gnu': 4.29.1 3132 | '@rollup/rollup-linux-x64-musl': 4.29.1 3133 | '@rollup/rollup-win32-arm64-msvc': 4.29.1 3134 | '@rollup/rollup-win32-ia32-msvc': 4.29.1 3135 | '@rollup/rollup-win32-x64-msvc': 4.29.1 3136 | fsevents: 2.3.3 3137 | 3138 | run-parallel@1.2.0: 3139 | dependencies: 3140 | queue-microtask: 1.2.3 3141 | 3142 | scheduler@0.23.2: 3143 | dependencies: 3144 | loose-envify: 1.4.0 3145 | 3146 | semver@6.3.1: {} 3147 | 3148 | semver@7.6.3: {} 3149 | 3150 | shebang-command@2.0.0: 3151 | dependencies: 3152 | shebang-regex: 3.0.0 3153 | 3154 | shebang-regex@3.0.0: {} 3155 | 3156 | signal-exit@4.1.0: {} 3157 | 3158 | source-map-js@1.2.1: {} 3159 | 3160 | string-width@4.2.3: 3161 | dependencies: 3162 | emoji-regex: 8.0.0 3163 | is-fullwidth-code-point: 3.0.0 3164 | strip-ansi: 6.0.1 3165 | 3166 | string-width@5.1.2: 3167 | dependencies: 3168 | eastasianwidth: 0.2.0 3169 | emoji-regex: 9.2.2 3170 | strip-ansi: 7.1.0 3171 | 3172 | strip-ansi@6.0.1: 3173 | dependencies: 3174 | ansi-regex: 5.0.1 3175 | 3176 | strip-ansi@7.1.0: 3177 | dependencies: 3178 | ansi-regex: 6.1.0 3179 | 3180 | strip-json-comments@3.1.1: {} 3181 | 3182 | sucrase@3.35.0: 3183 | dependencies: 3184 | '@jridgewell/gen-mapping': 0.3.8 3185 | commander: 4.1.1 3186 | glob: 10.4.5 3187 | lines-and-columns: 1.2.4 3188 | mz: 2.7.0 3189 | pirates: 4.0.6 3190 | ts-interface-checker: 0.1.13 3191 | 3192 | supports-color@7.2.0: 3193 | dependencies: 3194 | has-flag: 4.0.0 3195 | 3196 | supports-preserve-symlinks-flag@1.0.0: {} 3197 | 3198 | tailwind-merge@2.6.0: {} 3199 | 3200 | tailwindcss-animate@1.0.7(tailwindcss@3.4.17): 3201 | dependencies: 3202 | tailwindcss: 3.4.17 3203 | 3204 | tailwindcss@3.4.17: 3205 | dependencies: 3206 | '@alloc/quick-lru': 5.2.0 3207 | arg: 5.0.2 3208 | chokidar: 3.6.0 3209 | didyoumean: 1.2.2 3210 | dlv: 1.1.3 3211 | fast-glob: 3.3.2 3212 | glob-parent: 6.0.2 3213 | is-glob: 4.0.3 3214 | jiti: 1.21.7 3215 | lilconfig: 3.1.3 3216 | micromatch: 4.0.8 3217 | normalize-path: 3.0.0 3218 | object-hash: 3.0.0 3219 | picocolors: 1.1.1 3220 | postcss: 8.4.49 3221 | postcss-import: 15.1.0(postcss@8.4.49) 3222 | postcss-js: 4.0.1(postcss@8.4.49) 3223 | postcss-load-config: 4.0.2(postcss@8.4.49) 3224 | postcss-nested: 6.2.0(postcss@8.4.49) 3225 | postcss-selector-parser: 6.1.2 3226 | resolve: 1.22.10 3227 | sucrase: 3.35.0 3228 | transitivePeerDependencies: 3229 | - ts-node 3230 | 3231 | thenify-all@1.6.0: 3232 | dependencies: 3233 | thenify: 3.3.1 3234 | 3235 | thenify@3.3.1: 3236 | dependencies: 3237 | any-promise: 1.3.0 3238 | 3239 | to-regex-range@5.0.1: 3240 | dependencies: 3241 | is-number: 7.0.0 3242 | 3243 | ts-api-utils@1.4.3(typescript@5.7.2): 3244 | dependencies: 3245 | typescript: 5.7.2 3246 | 3247 | ts-interface-checker@0.1.13: {} 3248 | 3249 | tslib@2.8.1: {} 3250 | 3251 | type-check@0.4.0: 3252 | dependencies: 3253 | prelude-ls: 1.2.1 3254 | 3255 | typescript@5.7.2: {} 3256 | 3257 | undici-types@6.20.0: {} 3258 | 3259 | update-browserslist-db@1.1.1(browserslist@4.24.3): 3260 | dependencies: 3261 | browserslist: 4.24.3 3262 | escalade: 3.2.0 3263 | picocolors: 1.1.1 3264 | 3265 | uri-js@4.4.1: 3266 | dependencies: 3267 | punycode: 2.3.1 3268 | 3269 | use-callback-ref@1.3.3(@types/react@18.3.18)(react@18.3.1): 3270 | dependencies: 3271 | react: 18.3.1 3272 | tslib: 2.8.1 3273 | optionalDependencies: 3274 | '@types/react': 18.3.18 3275 | 3276 | use-sidecar@1.1.3(@types/react@18.3.18)(react@18.3.1): 3277 | dependencies: 3278 | detect-node-es: 1.1.0 3279 | react: 18.3.1 3280 | tslib: 2.8.1 3281 | optionalDependencies: 3282 | '@types/react': 18.3.18 3283 | 3284 | util-deprecate@1.0.2: {} 3285 | 3286 | vite@5.4.11(@types/node@22.10.5): 3287 | dependencies: 3288 | esbuild: 0.21.5 3289 | postcss: 8.4.49 3290 | rollup: 4.29.1 3291 | optionalDependencies: 3292 | '@types/node': 22.10.5 3293 | fsevents: 2.3.3 3294 | 3295 | which@2.0.2: 3296 | dependencies: 3297 | isexe: 2.0.0 3298 | 3299 | word-wrap@1.2.5: {} 3300 | 3301 | wrap-ansi@7.0.0: 3302 | dependencies: 3303 | ansi-styles: 4.3.0 3304 | string-width: 4.2.3 3305 | strip-ansi: 6.0.1 3306 | 3307 | wrap-ansi@8.1.0: 3308 | dependencies: 3309 | ansi-styles: 6.2.1 3310 | string-width: 5.1.2 3311 | strip-ansi: 7.1.0 3312 | 3313 | yallist@3.1.1: {} 3314 | 3315 | yaml@2.7.0: {} 3316 | 3317 | yocto-queue@0.1.0: {} 3318 | -------------------------------------------------------------------------------- /web/postcss.config.js: -------------------------------------------------------------------------------- 1 | export default { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | } 7 | -------------------------------------------------------------------------------- /web/src/components/App.css: -------------------------------------------------------------------------------- 1 | .nui-wrapper { 2 | height: 100%; 3 | width: 100%; 4 | display: flex; 5 | justify-content: center; 6 | align-items: center; 7 | background: transparent !important; 8 | } 9 | 10 | pre { 11 | counter-reset:line-numbering; 12 | padding:12px 0px 14px 0; 13 | line-height:140%; 14 | margin: 0; 15 | } 16 | -------------------------------------------------------------------------------- /web/src/components/App.tsx: -------------------------------------------------------------------------------- 1 | import React, { useState, useEffect } from "react"; 2 | import "./App.css"; 3 | import { fetchNui } from "../utils/fetchNui"; 4 | import { Button } from "@/components/ui/button"; 5 | import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; 6 | import { CodeOutput } from "./CodeOutput"; 7 | import { debugData } from "../utils/debugData"; 8 | import Editor from "@monaco-editor/react"; 9 | import { useVisibility } from "../providers/VisibilityProvider"; 10 | import { Terminal, Play } from "lucide-react"; 11 | 12 | debugData([ 13 | { 14 | action: 'setVisible', 15 | data: true, 16 | }, 17 | ]); 18 | 19 | interface CodeState { 20 | code: string; 21 | output: string; 22 | outputType: 'success' | 'error'; 23 | showOutput: boolean; 24 | } 25 | 26 | const App: React.FC = () => { 27 | const { visible } = useVisibility(); 28 | const [codeState, setCodeState] = useState({ 29 | code: "", 30 | output: "", 31 | outputType: 'success', 32 | showOutput: false 33 | }); 34 | 35 | useEffect(() => { 36 | const preventBackspace = (e: KeyboardEvent) => { 37 | if (e.key === 'Backspace') { 38 | const target = e.target as HTMLElement; 39 | const isInput = target.tagName === 'INPUT' || target.tagName === 'TEXTAREA' || target.isContentEditable; 40 | 41 | if (!isInput) { 42 | e.preventDefault(); 43 | e.stopPropagation(); 44 | } 45 | } 46 | }; 47 | 48 | window.addEventListener('keydown', preventBackspace, true); 49 | return () => window.removeEventListener('keydown', preventBackspace, true); 50 | }, []); 51 | 52 | const executeCode = async () => { 53 | if (!codeState.code.trim()) { 54 | setCodeState(prev => ({ 55 | ...prev, 56 | output: "Please enter some code to execute", 57 | outputType: 'error', 58 | showOutput: true 59 | })); 60 | return; 61 | } 62 | 63 | try { 64 | const response = await fetchNui<{ success: boolean; output: string }>("executeCode", { 65 | code: codeState.code 66 | }); 67 | 68 | setCodeState(prev => ({ 69 | ...prev, 70 | output: response.output || "Code executed successfully", 71 | outputType: response.success ? 'success' : 'error', 72 | showOutput: true 73 | })); 74 | } catch (e) { 75 | console.error(e); 76 | setCodeState(prev => ({ 77 | ...prev, 78 | output: "Failed to execute code. Check F8 console.", 79 | outputType: 'error', 80 | showOutput: true 81 | })); 82 | } 83 | }; 84 | 85 | if (!visible) return null; 86 | 87 | return ( 88 |
89 | 90 | 91 |
92 |
93 |
94 | 95 |
96 | Code Executor 97 |
98 |
99 |
100 | 101 |
102 |
103 | 112 |
113 | 114 |
115 |
116 | setCodeState(prev => ({ ...prev, code: value || "" }))} 123 | options={{ 124 | minimap: { enabled: false }, 125 | fontSize: 14, 126 | fontFamily: 'ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace', 127 | scrollBeyondLastLine: false, 128 | automaticLayout: true, 129 | lineNumbersMinChars: 4, 130 | padding: { top: 8, bottom: 8 }, 131 | lineDecorationsWidth: 10, 132 | scrollbar: { 133 | vertical: 'visible', 134 | horizontal: 'visible', 135 | verticalScrollbarSize: 8, 136 | horizontalScrollbarSize: 8, 137 | useShadows: false 138 | }, 139 | overviewRulerLanes: 0, 140 | overviewRulerBorder: false, 141 | glyphMargin: false, 142 | folding: false, 143 | }} 144 | /> 145 |
146 |
147 | 148 |
149 | 154 |
155 |
156 |
157 |
158 |
159 | ); 160 | }; 161 | 162 | export default App; -------------------------------------------------------------------------------- /web/src/components/CodeOutput.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { cn } from '@/lib/utils'; 3 | import { CheckCircle2, XCircle, Terminal } from 'lucide-react'; 4 | 5 | interface CodeOutputProps { 6 | output: string; 7 | type: 'success' | 'error'; 8 | show: boolean; 9 | } 10 | 11 | export const CodeOutput: React.FC = ({ output, type, show }) => { 12 | if (!show) return null; 13 | 14 | return ( 15 |
23 |
24 |
25 | {type === 'success' ? ( 26 |
27 | 28 |
29 | ) : ( 30 |
31 | 32 |
33 | )} 34 | 38 | {type} 39 | 40 |
41 |
42 | 43 | Output 44 |
45 |
46 | 47 |
53 | {output} 54 |
55 |
56 | ); 57 | }; 58 | -------------------------------------------------------------------------------- /web/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 gap-2 whitespace-nowrap 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 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0", 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 | -------------------------------------------------------------------------------- /web/src/components/ui/card.tsx: -------------------------------------------------------------------------------- 1 | import * as React from "react" 2 | 3 | import { cn } from "@/lib/utils" 4 | 5 | const Card = React.forwardRef< 6 | HTMLDivElement, 7 | React.HTMLAttributes 8 | >(({ className, ...props }, ref) => ( 9 |
17 | )) 18 | Card.displayName = "Card" 19 | 20 | const CardHeader = React.forwardRef< 21 | HTMLDivElement, 22 | React.HTMLAttributes 23 | >(({ className, ...props }, ref) => ( 24 |
29 | )) 30 | CardHeader.displayName = "CardHeader" 31 | 32 | const CardTitle = React.forwardRef< 33 | HTMLDivElement, 34 | React.HTMLAttributes 35 | >(({ className, ...props }, ref) => ( 36 |
41 | )) 42 | CardTitle.displayName = "CardTitle" 43 | 44 | const CardDescription = React.forwardRef< 45 | HTMLDivElement, 46 | React.HTMLAttributes 47 | >(({ className, ...props }, ref) => ( 48 |
53 | )) 54 | CardDescription.displayName = "CardDescription" 55 | 56 | const CardContent = React.forwardRef< 57 | HTMLDivElement, 58 | React.HTMLAttributes 59 | >(({ className, ...props }, ref) => ( 60 |
61 | )) 62 | CardContent.displayName = "CardContent" 63 | 64 | const CardFooter = React.forwardRef< 65 | HTMLDivElement, 66 | React.HTMLAttributes 67 | >(({ className, ...props }, ref) => ( 68 |
73 | )) 74 | CardFooter.displayName = "CardFooter" 75 | 76 | export { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent } 77 | -------------------------------------------------------------------------------- /web/src/components/ui/scroll-area.tsx: -------------------------------------------------------------------------------- 1 | import * as React from "react" 2 | import * as ScrollAreaPrimitive from "@radix-ui/react-scroll-area" 3 | 4 | import { cn } from "@/lib/utils" 5 | 6 | const ScrollArea = React.forwardRef< 7 | React.ElementRef, 8 | React.ComponentPropsWithoutRef 9 | >(({ className, children, ...props }, ref) => ( 10 | 15 | 16 | {children} 17 | 18 | 19 | 20 | 21 | )) 22 | ScrollArea.displayName = ScrollAreaPrimitive.Root.displayName 23 | 24 | const ScrollBar = React.forwardRef< 25 | React.ElementRef, 26 | React.ComponentPropsWithoutRef 27 | >(({ className, orientation = "vertical", ...props }, ref) => ( 28 | 41 | 42 | 43 | )) 44 | ScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName 45 | 46 | export { ScrollArea, ScrollBar } 47 | -------------------------------------------------------------------------------- /web/src/components/ui/select.tsx: -------------------------------------------------------------------------------- 1 | import * as React from "react" 2 | import * as SelectPrimitive from "@radix-ui/react-select" 3 | import { Check, ChevronDown, ChevronUp } from "lucide-react" 4 | 5 | import { cn } from "@/lib/utils" 6 | 7 | const Select = SelectPrimitive.Root 8 | 9 | const SelectGroup = SelectPrimitive.Group 10 | 11 | const SelectValue = SelectPrimitive.Value 12 | 13 | const SelectTrigger = React.forwardRef< 14 | React.ElementRef, 15 | React.ComponentPropsWithoutRef 16 | >(({ className, children, ...props }, ref) => ( 17 | span]:line-clamp-1", 21 | className 22 | )} 23 | {...props} 24 | > 25 | {children} 26 | 27 | 28 | 29 | 30 | )) 31 | SelectTrigger.displayName = SelectPrimitive.Trigger.displayName 32 | 33 | const SelectScrollUpButton = React.forwardRef< 34 | React.ElementRef, 35 | React.ComponentPropsWithoutRef 36 | >(({ className, ...props }, ref) => ( 37 | 45 | 46 | 47 | )) 48 | SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName 49 | 50 | const SelectScrollDownButton = React.forwardRef< 51 | React.ElementRef, 52 | React.ComponentPropsWithoutRef 53 | >(({ className, ...props }, ref) => ( 54 | 62 | 63 | 64 | )) 65 | SelectScrollDownButton.displayName = 66 | SelectPrimitive.ScrollDownButton.displayName 67 | 68 | const SelectContent = React.forwardRef< 69 | React.ElementRef, 70 | React.ComponentPropsWithoutRef 71 | >(({ className, children, position = "popper", ...props }, ref) => ( 72 | 73 | 84 | 85 | 92 | {children} 93 | 94 | 95 | 96 | 97 | )) 98 | SelectContent.displayName = SelectPrimitive.Content.displayName 99 | 100 | const SelectLabel = React.forwardRef< 101 | React.ElementRef, 102 | React.ComponentPropsWithoutRef 103 | >(({ className, ...props }, ref) => ( 104 | 109 | )) 110 | SelectLabel.displayName = SelectPrimitive.Label.displayName 111 | 112 | const SelectItem = React.forwardRef< 113 | React.ElementRef, 114 | React.ComponentPropsWithoutRef 115 | >(({ className, children, ...props }, ref) => ( 116 | 124 | 125 | 126 | 127 | 128 | 129 | {children} 130 | 131 | )) 132 | SelectItem.displayName = SelectPrimitive.Item.displayName 133 | 134 | const SelectSeparator = React.forwardRef< 135 | React.ElementRef, 136 | React.ComponentPropsWithoutRef 137 | >(({ className, ...props }, ref) => ( 138 | 143 | )) 144 | SelectSeparator.displayName = SelectPrimitive.Separator.displayName 145 | 146 | export { 147 | Select, 148 | SelectGroup, 149 | SelectValue, 150 | SelectTrigger, 151 | SelectContent, 152 | SelectLabel, 153 | SelectItem, 154 | SelectSeparator, 155 | SelectScrollUpButton, 156 | SelectScrollDownButton, 157 | } 158 | -------------------------------------------------------------------------------- /web/src/components/ui/textarea.tsx: -------------------------------------------------------------------------------- 1 | import * as React from "react" 2 | 3 | import { cn } from "@/lib/utils" 4 | 5 | const Textarea = React.forwardRef< 6 | HTMLTextAreaElement, 7 | React.ComponentProps<"textarea"> 8 | >(({ className, ...props }, ref) => { 9 | return ( 10 |