diff --git a/.browserslistrc b/.browserslistrc deleted file mode 100644 index dc3bc09..0000000 --- a/.browserslistrc +++ /dev/null @@ -1,4 +0,0 @@ -> 1% -last 2 versions -not dead -not ie 11 diff --git a/.editorconfig b/.editorconfig deleted file mode 100644 index 7053c49..0000000 --- a/.editorconfig +++ /dev/null @@ -1,5 +0,0 @@ -[*.{js,jsx,ts,tsx,vue}] -indent_style = space -indent_size = 2 -trim_trailing_whitespace = true -insert_final_newline = true diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index 5f3949b..0000000 --- a/.eslintrc.js +++ /dev/null @@ -1,14 +0,0 @@ -module.exports = { - root: true, - env: { - node: true, - }, - extends: [ - 'plugin:vue/vue3-essential', - 'eslint:recommended', - '@vue/eslint-config-typescript', - ], - rules: { - 'vue/multi-word-component-names': 'off', - }, -} diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..c1d2ba2 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,48 @@ +# Define standard eol format + +# Web Files +*.html text eol=lf +*.md text eol=lf +*.css text eol=lf +*.js text eol=lf + +# Jekyll related files +*.yml text eol=lf + +# Git related files +.gittattributes text eol=lf +.gitignore text eol=lf +.gitkeep text eol=lf + +# Ruby files +*.rb text eol=lf +Gemfile text eol=lf +Gemfile.lock text eol=lf + +# Github specific fies +LICENCE text eol=lf + +# Docker specific files +Dockerfile text eol=lf + +# VSCode files +*.json text eol=lf + +# General multimedia files +*.jpg binary +*.jpeg binary +*.gif binary +*.png binary +*.t3x binary +*.t3d binary +*.exe binary +*.data binary +*.ttf binary +*.eof binary +*.eot binary +*.swf binary +*.mov binary +*.mp4 binary +*.mp3 binary +*.ogg binary +*.flv binary diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml deleted file mode 100644 index 82fd334..0000000 --- a/.github/workflows/deploy.yml +++ /dev/null @@ -1,62 +0,0 @@ -# https://vitejs.dev/guide/static-deploy.html - -name: Build and deploy Vite website to Pages - -on: - # Runs on pushes targeting the default branch - push: - branches: ['master'] - - # Allows you to run this workflow manually from the Actions tab - workflow_dispatch: - -# Sets the GITHUB_TOKEN permissions to allow deployment to GitHub Pages -permissions: - contents: read - pages: write - id-token: write - -# Allow one concurrent deployment -concurrency: - group: 'pages' - cancel-in-progress: true - -jobs: - # Build job - build: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - name: Set up Node - uses: actions/setup-node@v4 - with: - node-version: 20 - cache: 'npm' - - name: Setup Python - uses: actions/setup-python@v5 - with: - python-version: "3.13" - - name: Install dependencies and build Scapy - run: npm install - - name: Build - run: npm run build - - name: Setup Pages - uses: actions/configure-pages@v5 - - name: Upload artifact - uses: actions/upload-pages-artifact@v3 - with: - # Upload dist repository - path: './dist' - - # Deployment job - deploy: - environment: - name: github-pages - url: ${{ steps.deployment.outputs.page_url }} - runs-on: ubuntu-latest - needs: build - steps: - - name: Deploy to GitHub Pages - id: deployment - uses: actions/deploy-pages@v4 diff --git a/.gitignore b/.gitignore index ab12cda..9ea1cb2 100644 --- a/.gitignore +++ b/.gitignore @@ -1,27 +1,10 @@ -.DS_Store -node_modules -/dist - -# wheel -*.whl - -# local env files -.env.local -.env.*.local +# project +_site +.sass-cache +.vagrant +Gemfile.lock -# Log files -npm-debug.log* -yarn-debug.log* -yarn-error.log* -pnpm-debug.log* - -# Editor directories and files -.idea -*.suo -*.ntvs* -*.njsproj -*.sln -*.sw? - -.vscode/* -!.vscode/extensions.json +# general +.DS_Store +Thumbs.db +ehthumbs.db diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..32a9e34 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "awesome-scapy"] + path = awesome-scapy + url = https://github.com/secdev/awesome-scapy.git diff --git a/.vscode/extensions.json b/.vscode/extensions.json deleted file mode 100644 index 2599e24..0000000 --- a/.vscode/extensions.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - // See https://go.microsoft.com/fwlink/?LinkId=827846 to learn about workspace recommendations. - // Extension identifier format: ${publisher}.${name}. Example: vscode.csharp - - // List of extensions which should be recommended for users of this workspace. - "recommendations": [ - "Vue.volar" - ], - // List of extensions recommended by VS Code that should not be recommended for users of this workspace. - "unwantedRecommendations": [ - "octref.vetur" - ] -} \ No newline at end of file diff --git a/404.html b/404.html new file mode 100644 index 0000000..cd5d2c5 --- /dev/null +++ b/404.html @@ -0,0 +1,13 @@ +--- +layout: default +title: 404 - Page not found +permalink: /404.html +--- + +
+

Whoops, this page doesn't exist.

+

Move along. (404 error)

+
+ + +
diff --git a/CNAME b/CNAME new file mode 100644 index 0000000..f898b88 --- /dev/null +++ b/CNAME @@ -0,0 +1 @@ +scapy.net diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..45c8cf1 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,8 @@ +FROM jekyll/jekyll + +COPY Gemfile . +COPY Gemfile.lock . + +RUN bundle install --quiet --clean + +CMD ["jekyll", "serve"] diff --git a/Gemfile b/Gemfile new file mode 100644 index 0000000..0ccdb74 --- /dev/null +++ b/Gemfile @@ -0,0 +1,7 @@ +source 'https://rubygems.org' + +gem "github-pages", group: :jekyll_plugins + +# enable tzinfo-data for local build +# gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw] +gem 'jekyll-paginate' diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 10fabd9..0000000 --- a/LICENSE +++ /dev/null @@ -1,395 +0,0 @@ -Attribution 4.0 International - -======================================================================= - -Creative Commons Corporation ("Creative Commons") is not a law firm and -does not provide legal services or legal advice. Distribution of -Creative Commons public licenses does not create a lawyer-client or -other relationship. Creative Commons makes its licenses and related -information available on an "as-is" basis. Creative Commons gives no -warranties regarding its licenses, any material licensed under their -terms and conditions, or any related information. Creative Commons -disclaims all liability for damages resulting from their use to the -fullest extent possible. - -Using Creative Commons Public Licenses - -Creative Commons public licenses provide a standard set of terms and -conditions that creators and other rights holders may use to share -original works of authorship and other material subject to copyright -and certain other rights specified in the public license below. The -following considerations are for informational purposes only, are not -exhaustive, and do not form part of our licenses. - - Considerations for licensors: Our public licenses are - intended for use by those authorized to give the public - permission to use material in ways otherwise restricted by - copyright and certain other rights. Our licenses are - irrevocable. Licensors should read and understand the terms - and conditions of the license they choose before applying it. - Licensors should also secure all rights necessary before - applying our licenses so that the public can reuse the - material as expected. Licensors should clearly mark any - material not subject to the license. This includes other CC- - licensed material, or material used under an exception or - limitation to copyright. More considerations for licensors: - wiki.creativecommons.org/Considerations_for_licensors - - Considerations for the public: By using one of our public - licenses, a licensor grants the public permission to use the - licensed material under specified terms and conditions. If - the licensor's permission is not necessary for any reason--for - example, because of any applicable exception or limitation to - copyright--then that use is not regulated by the license. Our - licenses grant only permissions under copyright and certain - other rights that a licensor has authority to grant. Use of - the licensed material may still be restricted for other - reasons, including because others have copyright or other - rights in the material. A licensor may make special requests, - such as asking that all changes be marked or described. - Although not required by our licenses, you are encouraged to - respect those requests where reasonable. More considerations - for the public: - wiki.creativecommons.org/Considerations_for_licensees - -======================================================================= - -Creative Commons Attribution 4.0 International Public License - -By exercising the Licensed Rights (defined below), You accept and agree -to be bound by the terms and conditions of this Creative Commons -Attribution 4.0 International Public License ("Public License"). To the -extent this Public License may be interpreted as a contract, You are -granted the Licensed Rights in consideration of Your acceptance of -these terms and conditions, and the Licensor grants You such rights in -consideration of benefits the Licensor receives from making the -Licensed Material available under these terms and conditions. - - -Section 1 -- Definitions. - - a. Adapted Material means material subject to Copyright and Similar - Rights that is derived from or based upon the Licensed Material - and in which the Licensed Material is translated, altered, - arranged, transformed, or otherwise modified in a manner requiring - permission under the Copyright and Similar Rights held by the - Licensor. For purposes of this Public License, where the Licensed - Material is a musical work, performance, or sound recording, - Adapted Material is always produced where the Licensed Material is - synched in timed relation with a moving image. - - b. Adapter's License means the license You apply to Your Copyright - and Similar Rights in Your contributions to Adapted Material in - accordance with the terms and conditions of this Public License. - - c. Copyright and Similar Rights means copyright and/or similar rights - closely related to copyright including, without limitation, - performance, broadcast, sound recording, and Sui Generis Database - Rights, without regard to how the rights are labeled or - categorized. For purposes of this Public License, the rights - specified in Section 2(b)(1)-(2) are not Copyright and Similar - Rights. - - d. Effective Technological Measures means those measures that, in the - absence of proper authority, may not be circumvented under laws - fulfilling obligations under Article 11 of the WIPO Copyright - Treaty adopted on December 20, 1996, and/or similar international - agreements. - - e. Exceptions and Limitations means fair use, fair dealing, and/or - any other exception or limitation to Copyright and Similar Rights - that applies to Your use of the Licensed Material. - - f. Licensed Material means the artistic or literary work, database, - or other material to which the Licensor applied this Public - License. - - g. Licensed Rights means the rights granted to You subject to the - terms and conditions of this Public License, which are limited to - all Copyright and Similar Rights that apply to Your use of the - Licensed Material and that the Licensor has authority to license. - - h. Licensor means the individual(s) or entity(ies) granting rights - under this Public License. - - i. Share means to provide material to the public by any means or - process that requires permission under the Licensed Rights, such - as reproduction, public display, public performance, distribution, - dissemination, communication, or importation, and to make material - available to the public including in ways that members of the - public may access the material from a place and at a time - individually chosen by them. - - j. Sui Generis Database Rights means rights other than copyright - resulting from Directive 96/9/EC of the European Parliament and of - the Council of 11 March 1996 on the legal protection of databases, - as amended and/or succeeded, as well as other essentially - equivalent rights anywhere in the world. - - k. You means the individual or entity exercising the Licensed Rights - under this Public License. Your has a corresponding meaning. - - -Section 2 -- Scope. - - a. License grant. - - 1. Subject to the terms and conditions of this Public License, - the Licensor hereby grants You a worldwide, royalty-free, - non-sublicensable, non-exclusive, irrevocable license to - exercise the Licensed Rights in the Licensed Material to: - - a. reproduce and Share the Licensed Material, in whole or - in part; and - - b. produce, reproduce, and Share Adapted Material. - - 2. Exceptions and Limitations. For the avoidance of doubt, where - Exceptions and Limitations apply to Your use, this Public - License does not apply, and You do not need to comply with - its terms and conditions. - - 3. Term. The term of this Public License is specified in Section - 6(a). - - 4. Media and formats; technical modifications allowed. The - Licensor authorizes You to exercise the Licensed Rights in - all media and formats whether now known or hereafter created, - and to make technical modifications necessary to do so. The - Licensor waives and/or agrees not to assert any right or - authority to forbid You from making technical modifications - necessary to exercise the Licensed Rights, including - technical modifications necessary to circumvent Effective - Technological Measures. For purposes of this Public License, - simply making modifications authorized by this Section 2(a) - (4) never produces Adapted Material. - - 5. Downstream recipients. - - a. Offer from the Licensor -- Licensed Material. Every - recipient of the Licensed Material automatically - receives an offer from the Licensor to exercise the - Licensed Rights under the terms and conditions of this - Public License. - - b. No downstream restrictions. You may not offer or impose - any additional or different terms or conditions on, or - apply any Effective Technological Measures to, the - Licensed Material if doing so restricts exercise of the - Licensed Rights by any recipient of the Licensed - Material. - - 6. No endorsement. Nothing in this Public License constitutes or - may be construed as permission to assert or imply that You - are, or that Your use of the Licensed Material is, connected - with, or sponsored, endorsed, or granted official status by, - the Licensor or others designated to receive attribution as - provided in Section 3(a)(1)(A)(i). - - b. Other rights. - - 1. Moral rights, such as the right of integrity, are not - licensed under this Public License, nor are publicity, - privacy, and/or other similar personality rights; however, to - the extent possible, the Licensor waives and/or agrees not to - assert any such rights held by the Licensor to the limited - extent necessary to allow You to exercise the Licensed - Rights, but not otherwise. - - 2. Patent and trademark rights are not licensed under this - Public License. - - 3. To the extent possible, the Licensor waives any right to - collect royalties from You for the exercise of the Licensed - Rights, whether directly or through a collecting society - under any voluntary or waivable statutory or compulsory - licensing scheme. In all other cases the Licensor expressly - reserves any right to collect such royalties. - - -Section 3 -- License Conditions. - -Your exercise of the Licensed Rights is expressly made subject to the -following conditions. - - a. Attribution. - - 1. If You Share the Licensed Material (including in modified - form), You must: - - a. retain the following if it is supplied by the Licensor - with the Licensed Material: - - i. identification of the creator(s) of the Licensed - Material and any others designated to receive - attribution, in any reasonable manner requested by - the Licensor (including by pseudonym if - designated); - - ii. a copyright notice; - - iii. a notice that refers to this Public License; - - iv. a notice that refers to the disclaimer of - warranties; - - v. a URI or hyperlink to the Licensed Material to the - extent reasonably practicable; - - b. indicate if You modified the Licensed Material and - retain an indication of any previous modifications; and - - c. indicate the Licensed Material is licensed under this - Public License, and include the text of, or the URI or - hyperlink to, this Public License. - - 2. You may satisfy the conditions in Section 3(a)(1) in any - reasonable manner based on the medium, means, and context in - which You Share the Licensed Material. For example, it may be - reasonable to satisfy the conditions by providing a URI or - hyperlink to a resource that includes the required - information. - - 3. If requested by the Licensor, You must remove any of the - information required by Section 3(a)(1)(A) to the extent - reasonably practicable. - - 4. If You Share Adapted Material You produce, the Adapter's - License You apply must not prevent recipients of the Adapted - Material from complying with this Public License. - - -Section 4 -- Sui Generis Database Rights. - -Where the Licensed Rights include Sui Generis Database Rights that -apply to Your use of the Licensed Material: - - a. for the avoidance of doubt, Section 2(a)(1) grants You the right - to extract, reuse, reproduce, and Share all or a substantial - portion of the contents of the database; - - b. if You include all or a substantial portion of the database - contents in a database in which You have Sui Generis Database - Rights, then the database in which You have Sui Generis Database - Rights (but not its individual contents) is Adapted Material; and - - c. You must comply with the conditions in Section 3(a) if You Share - all or a substantial portion of the contents of the database. - -For the avoidance of doubt, this Section 4 supplements and does not -replace Your obligations under this Public License where the Licensed -Rights include other Copyright and Similar Rights. - - -Section 5 -- Disclaimer of Warranties and Limitation of Liability. - - a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE - EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS - AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF - ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, - IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, - WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR - PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, - ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT - KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT - ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. - - b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE - TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, - NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, - INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, - COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR - USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN - ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR - DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR - IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. - - c. The disclaimer of warranties and limitation of liability provided - above shall be interpreted in a manner that, to the extent - possible, most closely approximates an absolute disclaimer and - waiver of all liability. - - -Section 6 -- Term and Termination. - - a. This Public License applies for the term of the Copyright and - Similar Rights licensed here. However, if You fail to comply with - this Public License, then Your rights under this Public License - terminate automatically. - - b. Where Your right to use the Licensed Material has terminated under - Section 6(a), it reinstates: - - 1. automatically as of the date the violation is cured, provided - it is cured within 30 days of Your discovery of the - violation; or - - 2. upon express reinstatement by the Licensor. - - For the avoidance of doubt, this Section 6(b) does not affect any - right the Licensor may have to seek remedies for Your violations - of this Public License. - - c. For the avoidance of doubt, the Licensor may also offer the - Licensed Material under separate terms or conditions or stop - distributing the Licensed Material at any time; however, doing so - will not terminate this Public License. - - d. Sections 1, 5, 6, 7, and 8 survive termination of this Public - License. - - -Section 7 -- Other Terms and Conditions. - - a. The Licensor shall not be bound by any additional or different - terms or conditions communicated by You unless expressly agreed. - - b. Any arrangements, understandings, or agreements regarding the - Licensed Material not stated herein are separate from and - independent of the terms and conditions of this Public License. - - -Section 8 -- Interpretation. - - a. For the avoidance of doubt, this Public License does not, and - shall not be interpreted to, reduce, limit, restrict, or impose - conditions on any use of the Licensed Material that could lawfully - be made without permission under this Public License. - - b. To the extent possible, if any provision of this Public License is - deemed unenforceable, it shall be automatically reformed to the - minimum extent necessary to make it enforceable. If the provision - cannot be reformed, it shall be severed from this Public License - without affecting the enforceability of the remaining terms and - conditions. - - c. No term or condition of this Public License will be waived and no - failure to comply consented to unless expressly agreed to by the - Licensor. - - d. Nothing in this Public License constitutes or may be interpreted - as a limitation upon, or waiver of, any privileges and immunities - that apply to the Licensor or You, including from the legal - processes of any jurisdiction or authority. - - -======================================================================= - -Creative Commons is not a party to its public licenses. -Notwithstanding, Creative Commons may elect to apply one of its public -licenses to material it publishes and in those instances will be -considered the “Licensor.” The text of the Creative Commons public -licenses is dedicated to the public domain under the CC0 Public Domain -Dedication. Except for the limited purpose of indicating that material -is shared under a Creative Commons public license or as otherwise -permitted by the Creative Commons policies published at -creativecommons.org/policies, Creative Commons does not authorize the -use of the trademark "Creative Commons" or any other trademark or logo -of Creative Commons without its prior written consent including, -without limitation, in connection with any unauthorized modifications -to any of its public licenses or any other arrangements, -understandings, or agreements concerning use of licensed material. For -the avoidance of doubt, this paragraph does not form part of the public -licenses. - -Creative Commons may be contacted at creativecommons.org. diff --git a/README.md b/README.md index 7e4400a..1fe4c94 100644 --- a/README.md +++ b/README.md @@ -1,18 +1,28 @@ -# Scapy.net +# Scapy.net - OLD -This repo hosts the source code behind the `scapy.net` website. +***Old scapy.net website. Don't look it's ugly*** -## Website +The website is using github pages with the "Beatiful Jekyll" theme. -The website is written in [Vue.js 3](https://vuejs.org/), using the [Vuetify](https://vuetifyjs.com/) framework, and built & published using Github Actions. +#### Build locally -### Develop +**Dependencies:** +```sh +$ sudo apt install ruby-bundler ruby-dev +$ bundle install +``` -```bash -$ npm install -$ npm run dev +**Serve:** +```sh +$ bundle exec jekyll serve ``` -## public +#### awesome-scapy submodule + +Located [here](https://github.com/secdev/awesome-scapy) -The website also serves as a hosting platform for some external files, such as talks or conferences related to Scapy. +**Update:** + +```sh +$ git submodule update --remote --merge +``` diff --git a/_config.yml b/_config.yml new file mode 100644 index 0000000..0a039c8 --- /dev/null +++ b/_config.yml @@ -0,0 +1,63 @@ +# --- General options --- # + +remote_theme: daattali/beautiful-jekyll + +url: "https://secdev.github.io" +baseurl: "" + +title: Scapy +description: Scapy - the Python-based interactive packet manipulation program & library. + +# Beautiful-Jekyll is MIT so nothing prevents us from doing this. +# What kind of OSS is this, I contributed quite a lot to this project +remove-ads: true + +# --- Navigation bar options --- # + +navbar-links: + Home: index + Downloads: download/ + Documentation: http://scapy.readthedocs.io/ + Awesome Scapy: awesome-scapy/ + +avatar: "./assets/img/logo.png" +round-avatar: false + +# --- Footer options --- # + +author: Philippe Biondi and the Scapy community. +url-pretty: "scapy.net" + +social-network-links: + github: secdev + +# Output options (more information on Jekyll's site) +timezone: "Europe/Paris" +markdown: kramdown +highlighter: rouge +permalink: /:year-:month-:day-:title/ +paginate: 5 + +kramdown: + input: GFM + +defaults: + - + scope: + path: "" # all files + values: + layout: "page" + show-avatar: true + +# Exclude these files from production site +exclude: + - CHANGELOG.md + - CNAME + - Dockerfile + - Gemfile + - Gemfile.lock + - LICENSE + - README.md + - Vagrantfile + - awesome-scapy/LICENSE.md + diff --git a/assets/img/404.png b/assets/img/404.png new file mode 100755 index 0000000..7317e17 Binary files /dev/null and b/assets/img/404.png differ diff --git a/assets/img/conda.svg b/assets/img/conda.svg new file mode 100644 index 0000000..e9e95ca --- /dev/null +++ b/assets/img/conda.svg @@ -0,0 +1 @@ + image/svg+xml \ No newline at end of file diff --git a/assets/img/github.svg b/assets/img/github.svg new file mode 100644 index 0000000..5d9b8ab --- /dev/null +++ b/assets/img/github.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/img/logo.png b/assets/img/logo.png new file mode 100755 index 0000000..ae0edd7 Binary files /dev/null and b/assets/img/logo.png differ diff --git a/assets/img/pypi.svg b/assets/img/pypi.svg new file mode 100644 index 0000000..e53853c --- /dev/null +++ b/assets/img/pypi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/img/tux.svg b/assets/img/tux.svg new file mode 100644 index 0000000..d8aa36d --- /dev/null +++ b/assets/img/tux.svg @@ -0,0 +1 @@ + image/svg+xml \ No newline at end of file diff --git a/assets/img/ubuntu.svg b/assets/img/ubuntu.svg new file mode 100644 index 0000000..130218a --- /dev/null +++ b/assets/img/ubuntu.svg @@ -0,0 +1 @@ +image/svg+xml \ No newline at end of file diff --git a/awesome-scapy b/awesome-scapy new file mode 160000 index 0000000..34adeb2 --- /dev/null +++ b/awesome-scapy @@ -0,0 +1 @@ +Subproject commit 34adeb23305c3b0f80c57ab446f9a0a60ee72ab3 diff --git a/public/talks/scapy_Aachen.pdf b/conf/scapy_Aachen.pdf similarity index 100% rename from public/talks/scapy_Aachen.pdf rename to conf/scapy_Aachen.pdf diff --git a/public/talks/scapy_T2.pdf b/conf/scapy_T2.pdf similarity index 100% rename from public/talks/scapy_T2.pdf rename to conf/scapy_T2.pdf diff --git a/public/talks/scapy_csw05.pdf b/conf/scapy_csw05.pdf similarity index 100% rename from public/talks/scapy_csw05.pdf rename to conf/scapy_csw05.pdf diff --git a/public/talks/scapy_hack.lu.pdf b/conf/scapy_hack.lu.pdf similarity index 100% rename from public/talks/scapy_hack.lu.pdf rename to conf/scapy_hack.lu.pdf diff --git a/public/talks/scapy_lsm2003.pdf b/conf/scapy_lsm2003.pdf similarity index 100% rename from public/talks/scapy_lsm2003.pdf rename to conf/scapy_lsm2003.pdf diff --git a/public/talks/scapy_pacsec05.handout.pdf b/conf/scapy_pacsec05.handout.pdf similarity index 100% rename from public/talks/scapy_pacsec05.handout.pdf rename to conf/scapy_pacsec05.handout.pdf diff --git a/public/talks/scapy_pacsec05.pdf b/conf/scapy_pacsec05.pdf similarity index 100% rename from public/talks/scapy_pacsec05.pdf rename to conf/scapy_pacsec05.pdf diff --git a/public/talks/troopers2019/.gitignore b/conf/troopers2019/.gitignore similarity index 100% rename from public/talks/troopers2019/.gitignore rename to conf/troopers2019/.gitignore diff --git a/public/talks/troopers2019/.travis.yml b/conf/troopers2019/.travis.yml similarity index 100% rename from public/talks/troopers2019/.travis.yml rename to conf/troopers2019/.travis.yml diff --git a/public/talks/troopers2019/CONTRIBUTING.md b/conf/troopers2019/CONTRIBUTING.md similarity index 100% rename from public/talks/troopers2019/CONTRIBUTING.md rename to conf/troopers2019/CONTRIBUTING.md diff --git a/public/talks/troopers2019/Gruntfile.js b/conf/troopers2019/Gruntfile.js similarity index 100% rename from public/talks/troopers2019/Gruntfile.js rename to conf/troopers2019/Gruntfile.js diff --git a/public/talks/troopers2019/LICENSE b/conf/troopers2019/LICENSE similarity index 100% rename from public/talks/troopers2019/LICENSE rename to conf/troopers2019/LICENSE diff --git a/public/talks/troopers2019/README.md b/conf/troopers2019/README.md similarity index 100% rename from public/talks/troopers2019/README.md rename to conf/troopers2019/README.md diff --git a/public/talks/troopers2019/animations/.gitignore b/conf/troopers2019/animations/.gitignore similarity index 100% rename from public/talks/troopers2019/animations/.gitignore rename to conf/troopers2019/animations/.gitignore diff --git a/public/talks/troopers2019/animations/animation-cansend.svg b/conf/troopers2019/animations/animation-cansend.svg similarity index 100% rename from public/talks/troopers2019/animations/animation-cansend.svg rename to conf/troopers2019/animations/animation-cansend.svg diff --git a/public/talks/troopers2019/animations/animation-cansend.webm b/conf/troopers2019/animations/animation-cansend.webm similarity index 100% rename from public/talks/troopers2019/animations/animation-cansend.webm rename to conf/troopers2019/animations/animation-cansend.webm diff --git a/public/talks/troopers2019/animations/animation-isotp-mitm.svg b/conf/troopers2019/animations/animation-isotp-mitm.svg similarity index 100% rename from public/talks/troopers2019/animations/animation-isotp-mitm.svg rename to conf/troopers2019/animations/animation-isotp-mitm.svg diff --git a/public/talks/troopers2019/animations/animation-isotp-mitm.webm b/conf/troopers2019/animations/animation-isotp-mitm.webm similarity index 100% rename from public/talks/troopers2019/animations/animation-isotp-mitm.webm rename to conf/troopers2019/animations/animation-isotp-mitm.webm diff --git a/public/talks/troopers2019/animations/animation-isotp-sniff.svg b/conf/troopers2019/animations/animation-isotp-sniff.svg similarity index 100% rename from public/talks/troopers2019/animations/animation-isotp-sniff.svg rename to conf/troopers2019/animations/animation-isotp-sniff.svg diff --git a/public/talks/troopers2019/animations/animation-isotp-sniff.webm b/conf/troopers2019/animations/animation-isotp-sniff.webm similarity index 100% rename from public/talks/troopers2019/animations/animation-isotp-sniff.webm rename to conf/troopers2019/animations/animation-isotp-sniff.webm diff --git a/public/talks/troopers2019/animations/animation-rdcandump.svg b/conf/troopers2019/animations/animation-rdcandump.svg similarity index 100% rename from public/talks/troopers2019/animations/animation-rdcandump.svg rename to conf/troopers2019/animations/animation-rdcandump.svg diff --git a/public/talks/troopers2019/animations/animation-rdcandump.webm b/conf/troopers2019/animations/animation-rdcandump.webm similarity index 100% rename from public/talks/troopers2019/animations/animation-rdcandump.webm rename to conf/troopers2019/animations/animation-rdcandump.webm diff --git a/public/talks/troopers2019/animations/animation-scapy-can.svg b/conf/troopers2019/animations/animation-scapy-can.svg similarity index 100% rename from public/talks/troopers2019/animations/animation-scapy-can.svg rename to conf/troopers2019/animations/animation-scapy-can.svg diff --git a/public/talks/troopers2019/animations/animation-scapy-can.webm b/conf/troopers2019/animations/animation-scapy-can.webm similarity index 100% rename from public/talks/troopers2019/animations/animation-scapy-can.webm rename to conf/troopers2019/animations/animation-scapy-can.webm diff --git a/public/talks/troopers2019/animations/animation-scapy-canframe.svg b/conf/troopers2019/animations/animation-scapy-canframe.svg similarity index 100% rename from public/talks/troopers2019/animations/animation-scapy-canframe.svg rename to conf/troopers2019/animations/animation-scapy-canframe.svg diff --git a/public/talks/troopers2019/animations/animation-scapy-canframe.webm b/conf/troopers2019/animations/animation-scapy-canframe.webm similarity index 100% rename from public/talks/troopers2019/animations/animation-scapy-canframe.webm rename to conf/troopers2019/animations/animation-scapy-canframe.webm diff --git a/public/talks/troopers2019/animations/animation-scapy-cansockets-mitm.svg b/conf/troopers2019/animations/animation-scapy-cansockets-mitm.svg similarity index 100% rename from public/talks/troopers2019/animations/animation-scapy-cansockets-mitm.svg rename to conf/troopers2019/animations/animation-scapy-cansockets-mitm.svg diff --git a/public/talks/troopers2019/animations/animation-scapy-cansockets-mitm.webm b/conf/troopers2019/animations/animation-scapy-cansockets-mitm.webm similarity index 100% rename from public/talks/troopers2019/animations/animation-scapy-cansockets-mitm.webm rename to conf/troopers2019/animations/animation-scapy-cansockets-mitm.webm diff --git a/public/talks/troopers2019/animations/animation-scapy-cansockets-mitm2.svg b/conf/troopers2019/animations/animation-scapy-cansockets-mitm2.svg similarity index 100% rename from public/talks/troopers2019/animations/animation-scapy-cansockets-mitm2.svg rename to conf/troopers2019/animations/animation-scapy-cansockets-mitm2.svg diff --git a/public/talks/troopers2019/animations/animation-scapy-cansockets-mitm2.webm b/conf/troopers2019/animations/animation-scapy-cansockets-mitm2.webm similarity index 100% rename from public/talks/troopers2019/animations/animation-scapy-cansockets-mitm2.webm rename to conf/troopers2019/animations/animation-scapy-cansockets-mitm2.webm diff --git a/public/talks/troopers2019/animations/animation-scapy-cansockets-sniff.svg b/conf/troopers2019/animations/animation-scapy-cansockets-sniff.svg similarity index 100% rename from public/talks/troopers2019/animations/animation-scapy-cansockets-sniff.svg rename to conf/troopers2019/animations/animation-scapy-cansockets-sniff.svg diff --git a/public/talks/troopers2019/animations/animation-scapy-cansockets-sniff.webm b/conf/troopers2019/animations/animation-scapy-cansockets-sniff.webm similarity index 100% rename from public/talks/troopers2019/animations/animation-scapy-cansockets-sniff.webm rename to conf/troopers2019/animations/animation-scapy-cansockets-sniff.webm diff --git a/public/talks/troopers2019/animations/animation-scapy-gmlan.svg b/conf/troopers2019/animations/animation-scapy-gmlan.svg similarity index 100% rename from public/talks/troopers2019/animations/animation-scapy-gmlan.svg rename to conf/troopers2019/animations/animation-scapy-gmlan.svg diff --git a/public/talks/troopers2019/animations/animation-scapy-gmlan.webm b/conf/troopers2019/animations/animation-scapy-gmlan.webm similarity index 100% rename from public/talks/troopers2019/animations/animation-scapy-gmlan.webm rename to conf/troopers2019/animations/animation-scapy-gmlan.webm diff --git a/public/talks/troopers2019/animations/animation-scapy-native-cansocket.svg b/conf/troopers2019/animations/animation-scapy-native-cansocket.svg similarity index 100% rename from public/talks/troopers2019/animations/animation-scapy-native-cansocket.svg rename to conf/troopers2019/animations/animation-scapy-native-cansocket.svg diff --git a/public/talks/troopers2019/animations/animation-scapy-native-cansocket.webm b/conf/troopers2019/animations/animation-scapy-native-cansocket.webm similarity index 100% rename from public/talks/troopers2019/animations/animation-scapy-native-cansocket.webm rename to conf/troopers2019/animations/animation-scapy-native-cansocket.webm diff --git a/public/talks/troopers2019/animations/animation-scapy-obd.svg b/conf/troopers2019/animations/animation-scapy-obd.svg similarity index 100% rename from public/talks/troopers2019/animations/animation-scapy-obd.svg rename to conf/troopers2019/animations/animation-scapy-obd.svg diff --git a/public/talks/troopers2019/animations/animation-scapy-obd.webm b/conf/troopers2019/animations/animation-scapy-obd.webm similarity index 100% rename from public/talks/troopers2019/animations/animation-scapy-obd.webm rename to conf/troopers2019/animations/animation-scapy-obd.webm diff --git a/public/talks/troopers2019/animations/animation-scapy-python-can-cansocket.svg b/conf/troopers2019/animations/animation-scapy-python-can-cansocket.svg similarity index 100% rename from public/talks/troopers2019/animations/animation-scapy-python-can-cansocket.svg rename to conf/troopers2019/animations/animation-scapy-python-can-cansocket.svg diff --git a/public/talks/troopers2019/animations/animation-scapy-python-can-cansocket.webm b/conf/troopers2019/animations/animation-scapy-python-can-cansocket.webm similarity index 100% rename from public/talks/troopers2019/animations/animation-scapy-python-can-cansocket.webm rename to conf/troopers2019/animations/animation-scapy-python-can-cansocket.webm diff --git a/public/talks/troopers2019/animations/animation-scapy-rdcandump.svg b/conf/troopers2019/animations/animation-scapy-rdcandump.svg similarity index 100% rename from public/talks/troopers2019/animations/animation-scapy-rdcandump.svg rename to conf/troopers2019/animations/animation-scapy-rdcandump.svg diff --git a/public/talks/troopers2019/animations/animation-scapy-rdcandump.webm b/conf/troopers2019/animations/animation-scapy-rdcandump.webm similarity index 100% rename from public/talks/troopers2019/animations/animation-scapy-rdcandump.webm rename to conf/troopers2019/animations/animation-scapy-rdcandump.webm diff --git a/public/talks/troopers2019/animations/animation-scapy-rdpcap.svg b/conf/troopers2019/animations/animation-scapy-rdpcap.svg similarity index 100% rename from public/talks/troopers2019/animations/animation-scapy-rdpcap.svg rename to conf/troopers2019/animations/animation-scapy-rdpcap.svg diff --git a/public/talks/troopers2019/animations/animation-scapy-rdpcap.webm b/conf/troopers2019/animations/animation-scapy-rdpcap.webm similarity index 100% rename from public/talks/troopers2019/animations/animation-scapy-rdpcap.webm rename to conf/troopers2019/animations/animation-scapy-rdpcap.webm diff --git a/public/talks/troopers2019/animations/animation-scapy-uds.svg b/conf/troopers2019/animations/animation-scapy-uds.svg similarity index 100% rename from public/talks/troopers2019/animations/animation-scapy-uds.svg rename to conf/troopers2019/animations/animation-scapy-uds.svg diff --git a/public/talks/troopers2019/animations/animation-scapy-uds.webm b/conf/troopers2019/animations/animation-scapy-uds.webm similarity index 100% rename from public/talks/troopers2019/animations/animation-scapy-uds.webm rename to conf/troopers2019/animations/animation-scapy-uds.webm diff --git a/public/talks/troopers2019/animations/animation-scapy-uds2.svg b/conf/troopers2019/animations/animation-scapy-uds2.svg similarity index 100% rename from public/talks/troopers2019/animations/animation-scapy-uds2.svg rename to conf/troopers2019/animations/animation-scapy-uds2.svg diff --git a/public/talks/troopers2019/animations/animation-scapy-uds2.webm b/conf/troopers2019/animations/animation-scapy-uds2.webm similarity index 100% rename from public/talks/troopers2019/animations/animation-scapy-uds2.webm rename to conf/troopers2019/animations/animation-scapy-uds2.webm diff --git a/public/talks/troopers2019/animations/animation-scapy-uds3.svg b/conf/troopers2019/animations/animation-scapy-uds3.svg similarity index 100% rename from public/talks/troopers2019/animations/animation-scapy-uds3.svg rename to conf/troopers2019/animations/animation-scapy-uds3.svg diff --git a/public/talks/troopers2019/animations/animation-scapy-uds3.webm b/conf/troopers2019/animations/animation-scapy-uds3.webm similarity index 100% rename from public/talks/troopers2019/animations/animation-scapy-uds3.webm rename to conf/troopers2019/animations/animation-scapy-uds3.webm diff --git a/public/talks/troopers2019/bower.json b/conf/troopers2019/bower.json similarity index 100% rename from public/talks/troopers2019/bower.json rename to conf/troopers2019/bower.json diff --git a/public/talks/troopers2019/css/print/paper.css b/conf/troopers2019/css/print/paper.css similarity index 100% rename from public/talks/troopers2019/css/print/paper.css rename to conf/troopers2019/css/print/paper.css diff --git a/public/talks/troopers2019/css/print/pdf.css b/conf/troopers2019/css/print/pdf.css similarity index 100% rename from public/talks/troopers2019/css/print/pdf.css rename to conf/troopers2019/css/print/pdf.css diff --git a/public/talks/troopers2019/css/reveal.css b/conf/troopers2019/css/reveal.css similarity index 100% rename from public/talks/troopers2019/css/reveal.css rename to conf/troopers2019/css/reveal.css diff --git a/public/talks/troopers2019/css/reveal.scss b/conf/troopers2019/css/reveal.scss similarity index 100% rename from public/talks/troopers2019/css/reveal.scss rename to conf/troopers2019/css/reveal.scss diff --git a/public/talks/troopers2019/css/theme/README.md b/conf/troopers2019/css/theme/README.md similarity index 100% rename from public/talks/troopers2019/css/theme/README.md rename to conf/troopers2019/css/theme/README.md diff --git a/public/talks/troopers2019/css/theme/beige.css b/conf/troopers2019/css/theme/beige.css similarity index 100% rename from public/talks/troopers2019/css/theme/beige.css rename to conf/troopers2019/css/theme/beige.css diff --git a/public/talks/troopers2019/css/theme/black.css b/conf/troopers2019/css/theme/black.css similarity index 100% rename from public/talks/troopers2019/css/theme/black.css rename to conf/troopers2019/css/theme/black.css diff --git a/public/talks/troopers2019/css/theme/blood.css b/conf/troopers2019/css/theme/blood.css similarity index 100% rename from public/talks/troopers2019/css/theme/blood.css rename to conf/troopers2019/css/theme/blood.css diff --git a/public/talks/troopers2019/css/theme/carsec.css b/conf/troopers2019/css/theme/carsec.css similarity index 100% rename from public/talks/troopers2019/css/theme/carsec.css rename to conf/troopers2019/css/theme/carsec.css diff --git a/public/talks/troopers2019/css/theme/league.css b/conf/troopers2019/css/theme/league.css similarity index 100% rename from public/talks/troopers2019/css/theme/league.css rename to conf/troopers2019/css/theme/league.css diff --git a/public/talks/troopers2019/css/theme/moon.css b/conf/troopers2019/css/theme/moon.css similarity index 100% rename from public/talks/troopers2019/css/theme/moon.css rename to conf/troopers2019/css/theme/moon.css diff --git a/public/talks/troopers2019/css/theme/night.css b/conf/troopers2019/css/theme/night.css similarity index 100% rename from public/talks/troopers2019/css/theme/night.css rename to conf/troopers2019/css/theme/night.css diff --git a/public/talks/troopers2019/css/theme/serif.css b/conf/troopers2019/css/theme/serif.css similarity index 100% rename from public/talks/troopers2019/css/theme/serif.css rename to conf/troopers2019/css/theme/serif.css diff --git a/public/talks/troopers2019/css/theme/simple.css b/conf/troopers2019/css/theme/simple.css similarity index 100% rename from public/talks/troopers2019/css/theme/simple.css rename to conf/troopers2019/css/theme/simple.css diff --git a/public/talks/troopers2019/css/theme/sky.css b/conf/troopers2019/css/theme/sky.css similarity index 100% rename from public/talks/troopers2019/css/theme/sky.css rename to conf/troopers2019/css/theme/sky.css diff --git a/public/talks/troopers2019/css/theme/solarized.css b/conf/troopers2019/css/theme/solarized.css similarity index 100% rename from public/talks/troopers2019/css/theme/solarized.css rename to conf/troopers2019/css/theme/solarized.css diff --git a/public/talks/troopers2019/css/theme/source/beige.scss b/conf/troopers2019/css/theme/source/beige.scss similarity index 100% rename from public/talks/troopers2019/css/theme/source/beige.scss rename to conf/troopers2019/css/theme/source/beige.scss diff --git a/public/talks/troopers2019/css/theme/source/black.scss b/conf/troopers2019/css/theme/source/black.scss similarity index 100% rename from public/talks/troopers2019/css/theme/source/black.scss rename to conf/troopers2019/css/theme/source/black.scss diff --git a/public/talks/troopers2019/css/theme/source/blood.scss b/conf/troopers2019/css/theme/source/blood.scss similarity index 100% rename from public/talks/troopers2019/css/theme/source/blood.scss rename to conf/troopers2019/css/theme/source/blood.scss diff --git a/public/talks/troopers2019/css/theme/source/league.scss b/conf/troopers2019/css/theme/source/league.scss similarity index 100% rename from public/talks/troopers2019/css/theme/source/league.scss rename to conf/troopers2019/css/theme/source/league.scss diff --git a/public/talks/troopers2019/css/theme/source/moon.scss b/conf/troopers2019/css/theme/source/moon.scss similarity index 100% rename from public/talks/troopers2019/css/theme/source/moon.scss rename to conf/troopers2019/css/theme/source/moon.scss diff --git a/public/talks/troopers2019/css/theme/source/night.scss b/conf/troopers2019/css/theme/source/night.scss similarity index 100% rename from public/talks/troopers2019/css/theme/source/night.scss rename to conf/troopers2019/css/theme/source/night.scss diff --git a/public/talks/troopers2019/css/theme/source/serif.scss b/conf/troopers2019/css/theme/source/serif.scss similarity index 100% rename from public/talks/troopers2019/css/theme/source/serif.scss rename to conf/troopers2019/css/theme/source/serif.scss diff --git a/public/talks/troopers2019/css/theme/source/simple.scss b/conf/troopers2019/css/theme/source/simple.scss similarity index 100% rename from public/talks/troopers2019/css/theme/source/simple.scss rename to conf/troopers2019/css/theme/source/simple.scss diff --git a/public/talks/troopers2019/css/theme/source/sky.scss b/conf/troopers2019/css/theme/source/sky.scss similarity index 100% rename from public/talks/troopers2019/css/theme/source/sky.scss rename to conf/troopers2019/css/theme/source/sky.scss diff --git a/public/talks/troopers2019/css/theme/source/solarized.scss b/conf/troopers2019/css/theme/source/solarized.scss similarity index 100% rename from public/talks/troopers2019/css/theme/source/solarized.scss rename to conf/troopers2019/css/theme/source/solarized.scss diff --git a/public/talks/troopers2019/css/theme/source/white.scss b/conf/troopers2019/css/theme/source/white.scss similarity index 100% rename from public/talks/troopers2019/css/theme/source/white.scss rename to conf/troopers2019/css/theme/source/white.scss diff --git a/public/talks/troopers2019/css/theme/template/mixins.scss b/conf/troopers2019/css/theme/template/mixins.scss similarity index 100% rename from public/talks/troopers2019/css/theme/template/mixins.scss rename to conf/troopers2019/css/theme/template/mixins.scss diff --git a/public/talks/troopers2019/css/theme/template/settings.scss b/conf/troopers2019/css/theme/template/settings.scss similarity index 100% rename from public/talks/troopers2019/css/theme/template/settings.scss rename to conf/troopers2019/css/theme/template/settings.scss diff --git a/public/talks/troopers2019/css/theme/template/theme.scss b/conf/troopers2019/css/theme/template/theme.scss similarity index 100% rename from public/talks/troopers2019/css/theme/template/theme.scss rename to conf/troopers2019/css/theme/template/theme.scss diff --git a/public/talks/troopers2019/css/theme/white.css b/conf/troopers2019/css/theme/white.css similarity index 100% rename from public/talks/troopers2019/css/theme/white.css rename to conf/troopers2019/css/theme/white.css diff --git a/public/talks/troopers2019/demo.html b/conf/troopers2019/demo.html similarity index 100% rename from public/talks/troopers2019/demo.html rename to conf/troopers2019/demo.html diff --git a/public/talks/troopers2019/images/can-bus.png b/conf/troopers2019/images/can-bus.png similarity index 100% rename from public/talks/troopers2019/images/can-bus.png rename to conf/troopers2019/images/can-bus.png diff --git a/public/talks/troopers2019/images/commits_by_year.png b/conf/troopers2019/images/commits_by_year.png similarity index 100% rename from public/talks/troopers2019/images/commits_by_year.png rename to conf/troopers2019/images/commits_by_year.png diff --git a/public/talks/troopers2019/images/isotp_flow.svg b/conf/troopers2019/images/isotp_flow.svg similarity index 100% rename from public/talks/troopers2019/images/isotp_flow.svg rename to conf/troopers2019/images/isotp_flow.svg diff --git a/public/talks/troopers2019/images/overview.png b/conf/troopers2019/images/overview.png similarity index 100% rename from public/talks/troopers2019/images/overview.png rename to conf/troopers2019/images/overview.png diff --git a/public/talks/troopers2019/images/scapy_logo.png b/conf/troopers2019/images/scapy_logo.png similarity index 100% rename from public/talks/troopers2019/images/scapy_logo.png rename to conf/troopers2019/images/scapy_logo.png diff --git a/public/talks/troopers2019/index.html b/conf/troopers2019/index.html similarity index 100% rename from public/talks/troopers2019/index.html rename to conf/troopers2019/index.html diff --git a/public/talks/troopers2019/js/reveal.js b/conf/troopers2019/js/reveal.js similarity index 100% rename from public/talks/troopers2019/js/reveal.js rename to conf/troopers2019/js/reveal.js diff --git a/public/talks/troopers2019/lib/css/zenburn.css b/conf/troopers2019/lib/css/zenburn.css similarity index 100% rename from public/talks/troopers2019/lib/css/zenburn.css rename to conf/troopers2019/lib/css/zenburn.css diff --git a/public/talks/troopers2019/lib/font/league-gothic/LICENSE b/conf/troopers2019/lib/font/league-gothic/LICENSE similarity index 100% rename from public/talks/troopers2019/lib/font/league-gothic/LICENSE rename to conf/troopers2019/lib/font/league-gothic/LICENSE diff --git a/public/talks/troopers2019/lib/font/league-gothic/league-gothic.css b/conf/troopers2019/lib/font/league-gothic/league-gothic.css similarity index 100% rename from public/talks/troopers2019/lib/font/league-gothic/league-gothic.css rename to conf/troopers2019/lib/font/league-gothic/league-gothic.css diff --git a/public/talks/troopers2019/lib/font/league-gothic/league-gothic.eot b/conf/troopers2019/lib/font/league-gothic/league-gothic.eot old mode 100644 new mode 100755 similarity index 100% rename from public/talks/troopers2019/lib/font/league-gothic/league-gothic.eot rename to conf/troopers2019/lib/font/league-gothic/league-gothic.eot diff --git a/public/talks/troopers2019/lib/font/league-gothic/league-gothic.ttf b/conf/troopers2019/lib/font/league-gothic/league-gothic.ttf old mode 100644 new mode 100755 similarity index 100% rename from public/talks/troopers2019/lib/font/league-gothic/league-gothic.ttf rename to conf/troopers2019/lib/font/league-gothic/league-gothic.ttf diff --git a/public/talks/troopers2019/lib/font/league-gothic/league-gothic.woff b/conf/troopers2019/lib/font/league-gothic/league-gothic.woff old mode 100644 new mode 100755 similarity index 100% rename from public/talks/troopers2019/lib/font/league-gothic/league-gothic.woff rename to conf/troopers2019/lib/font/league-gothic/league-gothic.woff diff --git a/public/talks/troopers2019/lib/font/source-sans-pro/LICENSE b/conf/troopers2019/lib/font/source-sans-pro/LICENSE similarity index 100% rename from public/talks/troopers2019/lib/font/source-sans-pro/LICENSE rename to conf/troopers2019/lib/font/source-sans-pro/LICENSE diff --git a/public/talks/troopers2019/lib/font/source-sans-pro/source-sans-pro-italic.eot b/conf/troopers2019/lib/font/source-sans-pro/source-sans-pro-italic.eot old mode 100644 new mode 100755 similarity index 100% rename from public/talks/troopers2019/lib/font/source-sans-pro/source-sans-pro-italic.eot rename to conf/troopers2019/lib/font/source-sans-pro/source-sans-pro-italic.eot diff --git a/public/talks/troopers2019/lib/font/source-sans-pro/source-sans-pro-italic.ttf b/conf/troopers2019/lib/font/source-sans-pro/source-sans-pro-italic.ttf old mode 100644 new mode 100755 similarity index 100% rename from public/talks/troopers2019/lib/font/source-sans-pro/source-sans-pro-italic.ttf rename to conf/troopers2019/lib/font/source-sans-pro/source-sans-pro-italic.ttf diff --git a/public/talks/troopers2019/lib/font/source-sans-pro/source-sans-pro-italic.woff b/conf/troopers2019/lib/font/source-sans-pro/source-sans-pro-italic.woff old mode 100644 new mode 100755 similarity index 100% rename from public/talks/troopers2019/lib/font/source-sans-pro/source-sans-pro-italic.woff rename to conf/troopers2019/lib/font/source-sans-pro/source-sans-pro-italic.woff diff --git a/public/talks/troopers2019/lib/font/source-sans-pro/source-sans-pro-regular.eot b/conf/troopers2019/lib/font/source-sans-pro/source-sans-pro-regular.eot old mode 100644 new mode 100755 similarity index 100% rename from public/talks/troopers2019/lib/font/source-sans-pro/source-sans-pro-regular.eot rename to conf/troopers2019/lib/font/source-sans-pro/source-sans-pro-regular.eot diff --git a/public/talks/troopers2019/lib/font/source-sans-pro/source-sans-pro-regular.ttf b/conf/troopers2019/lib/font/source-sans-pro/source-sans-pro-regular.ttf old mode 100644 new mode 100755 similarity index 100% rename from public/talks/troopers2019/lib/font/source-sans-pro/source-sans-pro-regular.ttf rename to conf/troopers2019/lib/font/source-sans-pro/source-sans-pro-regular.ttf diff --git a/public/talks/troopers2019/lib/font/source-sans-pro/source-sans-pro-regular.woff b/conf/troopers2019/lib/font/source-sans-pro/source-sans-pro-regular.woff old mode 100644 new mode 100755 similarity index 100% rename from public/talks/troopers2019/lib/font/source-sans-pro/source-sans-pro-regular.woff rename to conf/troopers2019/lib/font/source-sans-pro/source-sans-pro-regular.woff diff --git a/public/talks/troopers2019/lib/font/source-sans-pro/source-sans-pro-semibold.eot b/conf/troopers2019/lib/font/source-sans-pro/source-sans-pro-semibold.eot old mode 100644 new mode 100755 similarity index 100% rename from public/talks/troopers2019/lib/font/source-sans-pro/source-sans-pro-semibold.eot rename to conf/troopers2019/lib/font/source-sans-pro/source-sans-pro-semibold.eot diff --git a/public/talks/troopers2019/lib/font/source-sans-pro/source-sans-pro-semibold.ttf b/conf/troopers2019/lib/font/source-sans-pro/source-sans-pro-semibold.ttf old mode 100644 new mode 100755 similarity index 100% rename from public/talks/troopers2019/lib/font/source-sans-pro/source-sans-pro-semibold.ttf rename to conf/troopers2019/lib/font/source-sans-pro/source-sans-pro-semibold.ttf diff --git a/public/talks/troopers2019/lib/font/source-sans-pro/source-sans-pro-semibold.woff b/conf/troopers2019/lib/font/source-sans-pro/source-sans-pro-semibold.woff old mode 100644 new mode 100755 similarity index 100% rename from public/talks/troopers2019/lib/font/source-sans-pro/source-sans-pro-semibold.woff rename to conf/troopers2019/lib/font/source-sans-pro/source-sans-pro-semibold.woff diff --git a/public/talks/troopers2019/lib/font/source-sans-pro/source-sans-pro-semibolditalic.eot b/conf/troopers2019/lib/font/source-sans-pro/source-sans-pro-semibolditalic.eot old mode 100644 new mode 100755 similarity index 100% rename from public/talks/troopers2019/lib/font/source-sans-pro/source-sans-pro-semibolditalic.eot rename to conf/troopers2019/lib/font/source-sans-pro/source-sans-pro-semibolditalic.eot diff --git a/public/talks/troopers2019/lib/font/source-sans-pro/source-sans-pro-semibolditalic.ttf b/conf/troopers2019/lib/font/source-sans-pro/source-sans-pro-semibolditalic.ttf old mode 100644 new mode 100755 similarity index 100% rename from public/talks/troopers2019/lib/font/source-sans-pro/source-sans-pro-semibolditalic.ttf rename to conf/troopers2019/lib/font/source-sans-pro/source-sans-pro-semibolditalic.ttf diff --git a/public/talks/troopers2019/lib/font/source-sans-pro/source-sans-pro-semibolditalic.woff b/conf/troopers2019/lib/font/source-sans-pro/source-sans-pro-semibolditalic.woff old mode 100644 new mode 100755 similarity index 100% rename from public/talks/troopers2019/lib/font/source-sans-pro/source-sans-pro-semibolditalic.woff rename to conf/troopers2019/lib/font/source-sans-pro/source-sans-pro-semibolditalic.woff diff --git a/public/talks/troopers2019/lib/font/source-sans-pro/source-sans-pro.css b/conf/troopers2019/lib/font/source-sans-pro/source-sans-pro.css similarity index 100% rename from public/talks/troopers2019/lib/font/source-sans-pro/source-sans-pro.css rename to conf/troopers2019/lib/font/source-sans-pro/source-sans-pro.css diff --git a/public/talks/troopers2019/lib/js/classList.js b/conf/troopers2019/lib/js/classList.js similarity index 100% rename from public/talks/troopers2019/lib/js/classList.js rename to conf/troopers2019/lib/js/classList.js diff --git a/public/talks/troopers2019/lib/js/head.min.js b/conf/troopers2019/lib/js/head.min.js similarity index 100% rename from public/talks/troopers2019/lib/js/head.min.js rename to conf/troopers2019/lib/js/head.min.js diff --git a/public/talks/troopers2019/lib/js/html5shiv.js b/conf/troopers2019/lib/js/html5shiv.js similarity index 100% rename from public/talks/troopers2019/lib/js/html5shiv.js rename to conf/troopers2019/lib/js/html5shiv.js diff --git a/public/talks/troopers2019/package.json b/conf/troopers2019/package.json similarity index 100% rename from public/talks/troopers2019/package.json rename to conf/troopers2019/package.json diff --git a/public/talks/troopers2019/plugin/highlight/highlight.js b/conf/troopers2019/plugin/highlight/highlight.js similarity index 100% rename from public/talks/troopers2019/plugin/highlight/highlight.js rename to conf/troopers2019/plugin/highlight/highlight.js diff --git a/public/talks/troopers2019/plugin/markdown/example.html b/conf/troopers2019/plugin/markdown/example.html similarity index 100% rename from public/talks/troopers2019/plugin/markdown/example.html rename to conf/troopers2019/plugin/markdown/example.html diff --git a/public/talks/troopers2019/plugin/markdown/example.md b/conf/troopers2019/plugin/markdown/example.md similarity index 100% rename from public/talks/troopers2019/plugin/markdown/example.md rename to conf/troopers2019/plugin/markdown/example.md diff --git a/public/talks/troopers2019/plugin/markdown/markdown.js b/conf/troopers2019/plugin/markdown/markdown.js old mode 100644 new mode 100755 similarity index 100% rename from public/talks/troopers2019/plugin/markdown/markdown.js rename to conf/troopers2019/plugin/markdown/markdown.js diff --git a/public/talks/troopers2019/plugin/markdown/marked.js b/conf/troopers2019/plugin/markdown/marked.js similarity index 100% rename from public/talks/troopers2019/plugin/markdown/marked.js rename to conf/troopers2019/plugin/markdown/marked.js diff --git a/public/talks/troopers2019/plugin/math/math.js b/conf/troopers2019/plugin/math/math.js old mode 100644 new mode 100755 similarity index 100% rename from public/talks/troopers2019/plugin/math/math.js rename to conf/troopers2019/plugin/math/math.js diff --git a/public/talks/troopers2019/plugin/multiplex/client.js b/conf/troopers2019/plugin/multiplex/client.js similarity index 100% rename from public/talks/troopers2019/plugin/multiplex/client.js rename to conf/troopers2019/plugin/multiplex/client.js diff --git a/public/talks/troopers2019/plugin/multiplex/index.js b/conf/troopers2019/plugin/multiplex/index.js similarity index 100% rename from public/talks/troopers2019/plugin/multiplex/index.js rename to conf/troopers2019/plugin/multiplex/index.js diff --git a/public/talks/troopers2019/plugin/multiplex/master.js b/conf/troopers2019/plugin/multiplex/master.js similarity index 100% rename from public/talks/troopers2019/plugin/multiplex/master.js rename to conf/troopers2019/plugin/multiplex/master.js diff --git a/public/talks/troopers2019/plugin/multiplex/package.json b/conf/troopers2019/plugin/multiplex/package.json similarity index 86% rename from public/talks/troopers2019/plugin/multiplex/package.json rename to conf/troopers2019/plugin/multiplex/package.json index b570254..bbed77a 100644 --- a/public/talks/troopers2019/plugin/multiplex/package.json +++ b/conf/troopers2019/plugin/multiplex/package.json @@ -10,10 +10,10 @@ "node": "~4.1.1" }, "dependencies": { - "express": "~5.1.0", + "express": "~4.13.3", "grunt-cli": "~0.1.13", "mustache": "~2.2.1", - "socket.io": "~4.8.1" + "socket.io": "~1.3.7" }, "license": "MIT" } diff --git a/public/talks/troopers2019/plugin/notes-server/client.js b/conf/troopers2019/plugin/notes-server/client.js similarity index 100% rename from public/talks/troopers2019/plugin/notes-server/client.js rename to conf/troopers2019/plugin/notes-server/client.js diff --git a/public/talks/troopers2019/plugin/notes-server/index.js b/conf/troopers2019/plugin/notes-server/index.js similarity index 100% rename from public/talks/troopers2019/plugin/notes-server/index.js rename to conf/troopers2019/plugin/notes-server/index.js diff --git a/public/talks/troopers2019/plugin/notes-server/notes.html b/conf/troopers2019/plugin/notes-server/notes.html similarity index 100% rename from public/talks/troopers2019/plugin/notes-server/notes.html rename to conf/troopers2019/plugin/notes-server/notes.html diff --git a/public/talks/troopers2019/plugin/notes/notes.html b/conf/troopers2019/plugin/notes/notes.html similarity index 100% rename from public/talks/troopers2019/plugin/notes/notes.html rename to conf/troopers2019/plugin/notes/notes.html diff --git a/public/talks/troopers2019/plugin/notes/notes.js b/conf/troopers2019/plugin/notes/notes.js similarity index 100% rename from public/talks/troopers2019/plugin/notes/notes.js rename to conf/troopers2019/plugin/notes/notes.js diff --git a/public/talks/troopers2019/plugin/print-pdf/print-pdf.js b/conf/troopers2019/plugin/print-pdf/print-pdf.js similarity index 100% rename from public/talks/troopers2019/plugin/print-pdf/print-pdf.js rename to conf/troopers2019/plugin/print-pdf/print-pdf.js diff --git a/public/talks/troopers2019/plugin/search/search.js b/conf/troopers2019/plugin/search/search.js similarity index 100% rename from public/talks/troopers2019/plugin/search/search.js rename to conf/troopers2019/plugin/search/search.js diff --git a/public/talks/troopers2019/plugin/sequence-diagrams/danielbd.woff b/conf/troopers2019/plugin/sequence-diagrams/danielbd.woff similarity index 100% rename from public/talks/troopers2019/plugin/sequence-diagrams/danielbd.woff rename to conf/troopers2019/plugin/sequence-diagrams/danielbd.woff diff --git a/public/talks/troopers2019/plugin/sequence-diagrams/danielbd.woff2 b/conf/troopers2019/plugin/sequence-diagrams/danielbd.woff2 similarity index 100% rename from public/talks/troopers2019/plugin/sequence-diagrams/danielbd.woff2 rename to conf/troopers2019/plugin/sequence-diagrams/danielbd.woff2 diff --git a/public/talks/troopers2019/plugin/sequence-diagrams/sequence-diagram-min.css b/conf/troopers2019/plugin/sequence-diagrams/sequence-diagram-min.css similarity index 100% rename from public/talks/troopers2019/plugin/sequence-diagrams/sequence-diagram-min.css rename to conf/troopers2019/plugin/sequence-diagrams/sequence-diagram-min.css diff --git a/public/talks/troopers2019/plugin/sequence-diagrams/sequence-diagram-min.js b/conf/troopers2019/plugin/sequence-diagrams/sequence-diagram-min.js similarity index 100% rename from public/talks/troopers2019/plugin/sequence-diagrams/sequence-diagram-min.js rename to conf/troopers2019/plugin/sequence-diagrams/sequence-diagram-min.js diff --git a/public/talks/troopers2019/plugin/sequence-diagrams/sequence-diagrams-plugin.js b/conf/troopers2019/plugin/sequence-diagrams/sequence-diagrams-plugin.js similarity index 100% rename from public/talks/troopers2019/plugin/sequence-diagrams/sequence-diagrams-plugin.js rename to conf/troopers2019/plugin/sequence-diagrams/sequence-diagrams-plugin.js diff --git a/public/talks/troopers2019/plugin/sequence-diagrams/snap.svg-min.js b/conf/troopers2019/plugin/sequence-diagrams/snap.svg-min.js similarity index 100% rename from public/talks/troopers2019/plugin/sequence-diagrams/snap.svg-min.js rename to conf/troopers2019/plugin/sequence-diagrams/snap.svg-min.js diff --git a/public/talks/troopers2019/plugin/sequence-diagrams/underscore-min.js b/conf/troopers2019/plugin/sequence-diagrams/underscore-min.js similarity index 100% rename from public/talks/troopers2019/plugin/sequence-diagrams/underscore-min.js rename to conf/troopers2019/plugin/sequence-diagrams/underscore-min.js diff --git a/public/talks/troopers2019/plugin/sequence-diagrams/webfont.js b/conf/troopers2019/plugin/sequence-diagrams/webfont.js similarity index 100% rename from public/talks/troopers2019/plugin/sequence-diagrams/webfont.js rename to conf/troopers2019/plugin/sequence-diagrams/webfont.js diff --git a/public/talks/troopers2019/plugin/zoom-js/zoom.js b/conf/troopers2019/plugin/zoom-js/zoom.js similarity index 100% rename from public/talks/troopers2019/plugin/zoom-js/zoom.js rename to conf/troopers2019/plugin/zoom-js/zoom.js diff --git a/public/talks/troopers2019/presentation.md b/conf/troopers2019/presentation.md similarity index 99% rename from public/talks/troopers2019/presentation.md rename to conf/troopers2019/presentation.md index 4b29ac2..0366b4d 100644 --- a/public/talks/troopers2019/presentation.md +++ b/conf/troopers2019/presentation.md @@ -20,7 +20,7 @@ Philippe Biondi - phil@secdev.org Maintainers of Scapy ```text Guillaume Valadon (@guedou) - guillaume@valadon.net -Gabriel Potter - 10530980+gpotter2@users.noreply.github.com +Gabriel Potter - gabriel@potter.fr Pierre Lalet (@pi3rre) - pierre@droids-corp.org ``` diff --git a/public/talks/troopers2019/svg2webm/CanvasRecorder.js b/conf/troopers2019/svg2webm/CanvasRecorder.js similarity index 100% rename from public/talks/troopers2019/svg2webm/CanvasRecorder.js rename to conf/troopers2019/svg2webm/CanvasRecorder.js diff --git a/conf/troopers2019/svg2webm/animations b/conf/troopers2019/svg2webm/animations new file mode 120000 index 0000000..b3b3a31 --- /dev/null +++ b/conf/troopers2019/svg2webm/animations @@ -0,0 +1 @@ +../animations/ \ No newline at end of file diff --git a/public/talks/troopers2019/svg2webm/index.html b/conf/troopers2019/svg2webm/index.html similarity index 100% rename from public/talks/troopers2019/svg2webm/index.html rename to conf/troopers2019/svg2webm/index.html diff --git a/public/talks/troopers2019/svg2webm/main.js b/conf/troopers2019/svg2webm/main.js similarity index 100% rename from public/talks/troopers2019/svg2webm/main.js rename to conf/troopers2019/svg2webm/main.js diff --git a/public/talks/troopers2019/svg2webm/package.json b/conf/troopers2019/svg2webm/package.json similarity index 91% rename from public/talks/troopers2019/svg2webm/package.json rename to conf/troopers2019/svg2webm/package.json index 0dc5837..1cc34b1 100644 --- a/public/talks/troopers2019/svg2webm/package.json +++ b/conf/troopers2019/svg2webm/package.json @@ -4,7 +4,7 @@ "description": "Converts animated SVGs created with termtosvg to webm", "main": "main.js", "dependencies": { - "electron": "^37.1.0" + "electron": "^9.1.0" }, "scripts": { "start": "electron ." diff --git a/public/talks/troopers2019/test/examples/assets/image1.png b/conf/troopers2019/test/examples/assets/image1.png similarity index 100% rename from public/talks/troopers2019/test/examples/assets/image1.png rename to conf/troopers2019/test/examples/assets/image1.png diff --git a/public/talks/troopers2019/test/examples/assets/image2.png b/conf/troopers2019/test/examples/assets/image2.png similarity index 100% rename from public/talks/troopers2019/test/examples/assets/image2.png rename to conf/troopers2019/test/examples/assets/image2.png diff --git a/public/talks/troopers2019/test/examples/barebones.html b/conf/troopers2019/test/examples/barebones.html similarity index 100% rename from public/talks/troopers2019/test/examples/barebones.html rename to conf/troopers2019/test/examples/barebones.html diff --git a/public/talks/troopers2019/test/examples/embedded-media.html b/conf/troopers2019/test/examples/embedded-media.html similarity index 100% rename from public/talks/troopers2019/test/examples/embedded-media.html rename to conf/troopers2019/test/examples/embedded-media.html diff --git a/public/talks/troopers2019/test/examples/math.html b/conf/troopers2019/test/examples/math.html similarity index 100% rename from public/talks/troopers2019/test/examples/math.html rename to conf/troopers2019/test/examples/math.html diff --git a/public/talks/troopers2019/test/examples/slide-backgrounds.html b/conf/troopers2019/test/examples/slide-backgrounds.html similarity index 100% rename from public/talks/troopers2019/test/examples/slide-backgrounds.html rename to conf/troopers2019/test/examples/slide-backgrounds.html diff --git a/public/talks/troopers2019/test/examples/slide-transitions.html b/conf/troopers2019/test/examples/slide-transitions.html similarity index 100% rename from public/talks/troopers2019/test/examples/slide-transitions.html rename to conf/troopers2019/test/examples/slide-transitions.html diff --git a/public/talks/troopers2019/test/qunit-2.5.0.css b/conf/troopers2019/test/qunit-2.5.0.css similarity index 100% rename from public/talks/troopers2019/test/qunit-2.5.0.css rename to conf/troopers2019/test/qunit-2.5.0.css diff --git a/public/talks/troopers2019/test/qunit-2.5.0.js b/conf/troopers2019/test/qunit-2.5.0.js similarity index 100% rename from public/talks/troopers2019/test/qunit-2.5.0.js rename to conf/troopers2019/test/qunit-2.5.0.js diff --git a/public/talks/troopers2019/test/simple.md b/conf/troopers2019/test/simple.md similarity index 100% rename from public/talks/troopers2019/test/simple.md rename to conf/troopers2019/test/simple.md diff --git a/public/talks/troopers2019/test/test-markdown-element-attributes.html b/conf/troopers2019/test/test-markdown-element-attributes.html similarity index 100% rename from public/talks/troopers2019/test/test-markdown-element-attributes.html rename to conf/troopers2019/test/test-markdown-element-attributes.html diff --git a/public/talks/troopers2019/test/test-markdown-element-attributes.js b/conf/troopers2019/test/test-markdown-element-attributes.js similarity index 100% rename from public/talks/troopers2019/test/test-markdown-element-attributes.js rename to conf/troopers2019/test/test-markdown-element-attributes.js diff --git a/public/talks/troopers2019/test/test-markdown-external.html b/conf/troopers2019/test/test-markdown-external.html similarity index 100% rename from public/talks/troopers2019/test/test-markdown-external.html rename to conf/troopers2019/test/test-markdown-external.html diff --git a/public/talks/troopers2019/test/test-markdown-external.js b/conf/troopers2019/test/test-markdown-external.js similarity index 100% rename from public/talks/troopers2019/test/test-markdown-external.js rename to conf/troopers2019/test/test-markdown-external.js diff --git a/public/talks/troopers2019/test/test-markdown-options.html b/conf/troopers2019/test/test-markdown-options.html similarity index 100% rename from public/talks/troopers2019/test/test-markdown-options.html rename to conf/troopers2019/test/test-markdown-options.html diff --git a/public/talks/troopers2019/test/test-markdown-options.js b/conf/troopers2019/test/test-markdown-options.js similarity index 100% rename from public/talks/troopers2019/test/test-markdown-options.js rename to conf/troopers2019/test/test-markdown-options.js diff --git a/public/talks/troopers2019/test/test-markdown-slide-attributes.html b/conf/troopers2019/test/test-markdown-slide-attributes.html similarity index 100% rename from public/talks/troopers2019/test/test-markdown-slide-attributes.html rename to conf/troopers2019/test/test-markdown-slide-attributes.html diff --git a/public/talks/troopers2019/test/test-markdown-slide-attributes.js b/conf/troopers2019/test/test-markdown-slide-attributes.js similarity index 100% rename from public/talks/troopers2019/test/test-markdown-slide-attributes.js rename to conf/troopers2019/test/test-markdown-slide-attributes.js diff --git a/public/talks/troopers2019/test/test-markdown.html b/conf/troopers2019/test/test-markdown.html similarity index 100% rename from public/talks/troopers2019/test/test-markdown.html rename to conf/troopers2019/test/test-markdown.html diff --git a/public/talks/troopers2019/test/test-markdown.js b/conf/troopers2019/test/test-markdown.js similarity index 100% rename from public/talks/troopers2019/test/test-markdown.js rename to conf/troopers2019/test/test-markdown.js diff --git a/public/talks/troopers2019/test/test-pdf.html b/conf/troopers2019/test/test-pdf.html similarity index 100% rename from public/talks/troopers2019/test/test-pdf.html rename to conf/troopers2019/test/test-pdf.html diff --git a/public/talks/troopers2019/test/test-pdf.js b/conf/troopers2019/test/test-pdf.js similarity index 100% rename from public/talks/troopers2019/test/test-pdf.js rename to conf/troopers2019/test/test-pdf.js diff --git a/public/talks/troopers2019/test/test.html b/conf/troopers2019/test/test.html similarity index 100% rename from public/talks/troopers2019/test/test.html rename to conf/troopers2019/test/test.html diff --git a/public/talks/troopers2019/test/test.js b/conf/troopers2019/test/test.js similarity index 100% rename from public/talks/troopers2019/test/test.js rename to conf/troopers2019/test/test.js diff --git a/public/talks/troopers2022/images/2022-06-26-092316_1899x1067_scrot.png b/conf/troopers2022/images/2022-06-26-092316_1899x1067_scrot.png similarity index 100% rename from public/talks/troopers2022/images/2022-06-26-092316_1899x1067_scrot.png rename to conf/troopers2022/images/2022-06-26-092316_1899x1067_scrot.png diff --git a/public/talks/troopers2022/images/2022-06-26-093347_1525x848_scrot.png b/conf/troopers2022/images/2022-06-26-093347_1525x848_scrot.png similarity index 100% rename from public/talks/troopers2022/images/2022-06-26-093347_1525x848_scrot.png rename to conf/troopers2022/images/2022-06-26-093347_1525x848_scrot.png diff --git a/public/talks/troopers2022/images/CAN-bus-frame-with-stuff-bit-and-correct-CRC.png b/conf/troopers2022/images/CAN-bus-frame-with-stuff-bit-and-correct-CRC.png similarity index 100% rename from public/talks/troopers2022/images/CAN-bus-frame-with-stuff-bit-and-correct-CRC.png rename to conf/troopers2022/images/CAN-bus-frame-with-stuff-bit-and-correct-CRC.png diff --git a/public/talks/troopers2022/images/Conditions for diagnostic session state 0x82.png b/conf/troopers2022/images/Conditions for diagnostic session state 0x82.png similarity index 100% rename from public/talks/troopers2022/images/Conditions for diagnostic session state 0x82.png rename to conf/troopers2022/images/Conditions for diagnostic session state 0x82.png diff --git a/public/talks/troopers2022/images/EXIST-Logos.png b/conf/troopers2022/images/EXIST-Logos.png similarity index 100% rename from public/talks/troopers2022/images/EXIST-Logos.png rename to conf/troopers2022/images/EXIST-Logos.png diff --git a/public/talks/troopers2022/images/RDBI extended diagnostic state.png b/conf/troopers2022/images/RDBI extended diagnostic state.png similarity index 100% rename from public/talks/troopers2022/images/RDBI extended diagnostic state.png rename to conf/troopers2022/images/RDBI extended diagnostic state.png diff --git a/public/talks/troopers2022/images/Screenshot of the DSC conditions function for the presentation.png b/conf/troopers2022/images/Screenshot of the DSC conditions function for the presentation.png similarity index 100% rename from public/talks/troopers2022/images/Screenshot of the DSC conditions function for the presentation.png rename to conf/troopers2022/images/Screenshot of the DSC conditions function for the presentation.png diff --git a/public/talks/troopers2022/images/big_graph.png b/conf/troopers2022/images/big_graph.png similarity index 100% rename from public/talks/troopers2022/images/big_graph.png rename to conf/troopers2022/images/big_graph.png diff --git a/public/talks/troopers2022/images/commits_per_year.png b/conf/troopers2022/images/commits_per_year.png similarity index 100% rename from public/talks/troopers2022/images/commits_per_year.png rename to conf/troopers2022/images/commits_per_year.png diff --git a/public/talks/troopers2022/images/cooked-spaghetti-noodles.jpg b/conf/troopers2022/images/cooked-spaghetti-noodles.jpg similarity index 100% rename from public/talks/troopers2022/images/cooked-spaghetti-noodles.jpg rename to conf/troopers2022/images/cooked-spaghetti-noodles.jpg diff --git a/public/talks/troopers2022/images/diag_stack.svg b/conf/troopers2022/images/diag_stack.svg similarity index 100% rename from public/talks/troopers2022/images/diag_stack.svg rename to conf/troopers2022/images/diag_stack.svg diff --git a/public/talks/troopers2022/images/dissecto.png b/conf/troopers2022/images/dissecto.png similarity index 100% rename from public/talks/troopers2022/images/dissecto.png rename to conf/troopers2022/images/dissecto.png diff --git a/public/talks/troopers2022/images/graph1.png b/conf/troopers2022/images/graph1.png similarity index 100% rename from public/talks/troopers2022/images/graph1.png rename to conf/troopers2022/images/graph1.png diff --git a/public/talks/troopers2022/images/graph2.png b/conf/troopers2022/images/graph2.png similarity index 100% rename from public/talks/troopers2022/images/graph2.png rename to conf/troopers2022/images/graph2.png diff --git a/public/talks/troopers2022/images/graph3.png b/conf/troopers2022/images/graph3.png similarity index 100% rename from public/talks/troopers2022/images/graph3.png rename to conf/troopers2022/images/graph3.png diff --git a/public/talks/troopers2022/images/hsfz_ws.png b/conf/troopers2022/images/hsfz_ws.png similarity index 100% rename from public/talks/troopers2022/images/hsfz_ws.png rename to conf/troopers2022/images/hsfz_ws.png diff --git a/public/talks/troopers2022/images/img3.png b/conf/troopers2022/images/img3.png similarity index 100% rename from public/talks/troopers2022/images/img3.png rename to conf/troopers2022/images/img3.png diff --git a/public/talks/troopers2022/images/isotp-candump-1.png b/conf/troopers2022/images/isotp-candump-1.png similarity index 100% rename from public/talks/troopers2022/images/isotp-candump-1.png rename to conf/troopers2022/images/isotp-candump-1.png diff --git a/public/talks/troopers2022/images/isotp-candump-2.png b/conf/troopers2022/images/isotp-candump-2.png similarity index 100% rename from public/talks/troopers2022/images/isotp-candump-2.png rename to conf/troopers2022/images/isotp-candump-2.png diff --git a/public/talks/troopers2022/images/isotp-frame-types.png b/conf/troopers2022/images/isotp-frame-types.png similarity index 100% rename from public/talks/troopers2022/images/isotp-frame-types.png rename to conf/troopers2022/images/isotp-frame-types.png diff --git a/public/talks/troopers2022/images/isotpcomm.svg b/conf/troopers2022/images/isotpcomm.svg similarity index 100% rename from public/talks/troopers2022/images/isotpcomm.svg rename to conf/troopers2022/images/isotpcomm.svg diff --git a/public/talks/troopers2022/images/obd_results.png b/conf/troopers2022/images/obd_results.png similarity index 100% rename from public/talks/troopers2022/images/obd_results.png rename to conf/troopers2022/images/obd_results.png diff --git a/public/talks/troopers2022/images/req_resp.svg b/conf/troopers2022/images/req_resp.svg similarity index 100% rename from public/talks/troopers2022/images/req_resp.svg rename to conf/troopers2022/images/req_resp.svg diff --git a/public/talks/troopers2022/images/scan_result_timing.png b/conf/troopers2022/images/scan_result_timing.png similarity index 100% rename from public/talks/troopers2022/images/scan_result_timing.png rename to conf/troopers2022/images/scan_result_timing.png diff --git a/public/talks/troopers2022/images/scan_results1.png b/conf/troopers2022/images/scan_results1.png similarity index 100% rename from public/talks/troopers2022/images/scan_results1.png rename to conf/troopers2022/images/scan_results1.png diff --git a/public/talks/troopers2022/images/scan_results2.png b/conf/troopers2022/images/scan_results2.png similarity index 100% rename from public/talks/troopers2022/images/scan_results2.png rename to conf/troopers2022/images/scan_results2.png diff --git a/public/talks/troopers2022/images/scapy_logo.png b/conf/troopers2022/images/scapy_logo.png similarity index 100% rename from public/talks/troopers2022/images/scapy_logo.png rename to conf/troopers2022/images/scapy_logo.png diff --git a/public/talks/troopers2022/images/small_graph.png b/conf/troopers2022/images/small_graph.png similarity index 100% rename from public/talks/troopers2022/images/small_graph.png rename to conf/troopers2022/images/small_graph.png diff --git a/public/talks/troopers2022/images/uds_req.pdf b/conf/troopers2022/images/uds_req.pdf similarity index 100% rename from public/talks/troopers2022/images/uds_req.pdf rename to conf/troopers2022/images/uds_req.pdf diff --git a/public/talks/troopers2022/images/uds_req.png b/conf/troopers2022/images/uds_req.png similarity index 100% rename from public/talks/troopers2022/images/uds_req.png rename to conf/troopers2022/images/uds_req.png diff --git a/public/talks/troopers2022/images/uds_req.svg b/conf/troopers2022/images/uds_req.svg similarity index 100% rename from public/talks/troopers2022/images/uds_req.svg rename to conf/troopers2022/images/uds_req.svg diff --git a/public/talks/troopers2022/images/uds_resp.pdf b/conf/troopers2022/images/uds_resp.pdf similarity index 100% rename from public/talks/troopers2022/images/uds_resp.pdf rename to conf/troopers2022/images/uds_resp.pdf diff --git a/public/talks/troopers2022/images/uds_resp.png b/conf/troopers2022/images/uds_resp.png similarity index 100% rename from public/talks/troopers2022/images/uds_resp.png rename to conf/troopers2022/images/uds_resp.png diff --git a/public/talks/troopers2022/images/uds_resp.svg b/conf/troopers2022/images/uds_resp.svg similarity index 100% rename from public/talks/troopers2022/images/uds_resp.svg rename to conf/troopers2022/images/uds_resp.svg diff --git a/public/talks/troopers2022/images/udscomm1.png b/conf/troopers2022/images/udscomm1.png similarity index 100% rename from public/talks/troopers2022/images/udscomm1.png rename to conf/troopers2022/images/udscomm1.png diff --git a/public/talks/troopers2022/images/udscomm1.svg b/conf/troopers2022/images/udscomm1.svg similarity index 100% rename from public/talks/troopers2022/images/udscomm1.svg rename to conf/troopers2022/images/udscomm1.svg diff --git a/public/talks/troopers2022/images/update-process.png b/conf/troopers2022/images/update-process.png similarity index 100% rename from public/talks/troopers2022/images/update-process.png rename to conf/troopers2022/images/update-process.png diff --git a/public/talks/troopers2022/main.slides.html b/conf/troopers2022/main.slides.html similarity index 99% rename from public/talks/troopers2022/main.slides.html rename to conf/troopers2022/main.slides.html index aea4ee5..51b8019 100644 --- a/public/talks/troopers2022/main.slides.html +++ b/conf/troopers2022/main.slides.html @@ -14719,7 +14719,7 @@

Acknowledgements +
+ + + +
+ + +## Python versions support + +|Scapy version|Python 2.2-2.6|Python 2.7|Python 3.4-3.6|Python 3.7|Python 3.8|Python 3.9|Python 3.10-3.11| +|:----|:----|:----|:----|:----|:----|:----|:----| +|2.3.3|✅|✅|❌|❌|❌|❌|❌| +|2.4.0|❌|✅|✅|❌|❌|❌|❌| +|2.4.2|❌|✅|✅|✅|❌|❌|❌| +|2.4.3-2.4.4|❌|✅|✅|✅|✅|❌|❌| +|2.4.5|❌|✅|✅|✅|✅|✅|❌| +|2.5.0|❌|✅|✅|✅|✅|✅|✅| + +## Alternative methods + +
+
+
+ +
+
+ +
+ +
+
diff --git a/public/favicon.ico b/favicon.ico similarity index 100% rename from public/favicon.ico rename to favicon.ico diff --git a/public/files/UTscapy/UTscapy.css b/files/UTscapy/UTscapy.css similarity index 100% rename from public/files/UTscapy/UTscapy.css rename to files/UTscapy/UTscapy.css diff --git a/public/files/UTscapy/UTscapy.js b/files/UTscapy/UTscapy.js similarity index 100% rename from public/files/UTscapy/UTscapy.js rename to files/UTscapy/UTscapy.js diff --git a/public/files/doc/README.md b/files/doc/README.md similarity index 100% rename from public/files/doc/README.md rename to files/doc/README.md diff --git a/public/files/doc/animation-scapy-install.svg b/files/doc/animation-scapy-install.svg similarity index 100% rename from public/files/doc/animation-scapy-install.svg rename to files/doc/animation-scapy-install.svg diff --git a/public/files/index.html b/files/index.html similarity index 100% rename from public/files/index.html rename to files/index.html diff --git a/public/files/scapy-olsr.py b/files/scapy-olsr.py similarity index 100% rename from public/files/scapy-olsr.py rename to files/scapy-olsr.py diff --git a/public/files/scapydoc.pdf/index.html b/files/scapydoc.pdf/index.html similarity index 100% rename from public/files/scapydoc.pdf/index.html rename to files/scapydoc.pdf/index.html diff --git a/public/html.old/build_your_own_tools.html b/html.old/build_your_own_tools.html similarity index 100% rename from public/html.old/build_your_own_tools.html rename to html.old/build_your_own_tools.html diff --git a/public/html.old/demo.html b/html.old/demo.html similarity index 100% rename from public/html.old/demo.html rename to html.old/demo.html diff --git a/public/html.old/index.html b/html.old/index.html similarity index 100% rename from public/html.old/index.html rename to html.old/index.html diff --git a/index.html b/index.html deleted file mode 100644 index 2d8f2dd..0000000 --- a/index.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - Scapy - - - -
- - - - diff --git a/index.md b/index.md new file mode 100644 index 0000000..772c226 --- /dev/null +++ b/index.md @@ -0,0 +1,132 @@ +--- +title: Scapy +subtitle: Packet crafting for Python2 and Python3 +--- + +{% raw %} + +{% endraw %} + +Scapy Project +============= + +### What is Scapy? + +Scapy is a powerful interactive packet manipulation program. It is able to +forge or decode packets of a wide number of protocols, send them on the wire, +capture them, match requests and replies, and much more. It can easily handle +most classical tasks like scanning, tracerouting, probing, unit tests, attacks +or network discovery (it can replace hping, 85% of nmap, arpspoof, arp-sk, +arping, tcpdump, tshark, p0f, etc.). It also performs very well at a lot of +other specific tasks that most other tools can't handle, like sending invalid +frames, injecting your own 802.11 frames, combining technics (VLAN hopping+ARP +cache poisoning, VOIP decoding on WEP encrypted channel, ...), etc. + +Scapy runs natively on Linux, Windows, OSX and on most Unixes with libpcap (see [scapy's installation page](http://scapy.readthedocs.io/en/latest/installation.html)). +The same code base now runs natively on both Python 2 and Python 3. + +{% raw %} +
+ + Download Scapy + + + Get started with Scapy + +
+{% endraw %} + +### Shell demo + +```python +$ sudo ./run_scapy -H +Welcome to Scapy (2.4.4.dev221) +>>> p = IP(dst="github.com")/ICMP() +>>> p +> +>>> r = sr1(p) +Begin emission: +Finished sending 1 packets. +.* +Received 2 packets, got 1 answers, remaining 0 packets +>>> r +> +``` + + +## Help, documentation + + +#### Documents + +* [**Official Online HTML documentation**](http://scapy.readthedocs.io/) +* [Scapy's installation page](http://scapy.readthedocs.io/en/latest/installation.html) +* [ThePacketGeek's Building Network Tools with Scapy tutorial](https://thepacketgeek.com/series/building-network-tools-with-scapy/) +* [Security Power Tools](http://www.oreilly.com/catalog/9780596009632/) where Philippe Biondi wrote a complete chapter about Scapy. + +#### Development + +Scapy development uses [Git](https://git-scm.com/) version control system. Scapy reference repository is hosted on [GitHub secdev/scapy](https://github.com/secdev/scapy/). + +It provides the ticket management service used for submitting patches or bugs. + +* [Submit patches](https://github.com/secdev/scapy/pulls/new) +* [Report bugs/wishes here](https://github.com/secdev/scapy/issues/new) +* [Active tickets here](https://github.com/secdev/scapy/issues) +* Head over to [Scapy's GitHub Projects](https://github.com/secdev/scapy/projects) to see what is being worked on. + +#### Slides + +* [Automotive Network Scans with Scapy - Troopers 2022 slides](/conf/troopers2022/main.slides.html) +* [Automotive Penetration Testing with Scapy - Troopers 2019 slides](/conf/troopers2019/index.html) +* [Scapy's PacSec/core05 slides](/conf/scapy_pacsec05.pdf) ([printable version](/conf/scapy_pacsec05.handout.pdf)) +* [Scapy's Hack.lu 2005 slides](/conf/scapy_hack.lu.pdf) +* [Scapy's Summerschool Applied IT Security 2005 slides](/conf/scapy_Aachen.pdf) +* [Scapy's T2'2005 slides](/conf/scapy_T2.pdf) +* [Scapy's CanSecWest/core05 slides](/conf/scapy_csw05.pdf) +* [Scapy's LSM 2003 slides](/conf/scapy_lsm2003.pdf) + +#### Other documents about Scapy : + +* [(french) @p-l- blog posts on scapy](http://pierre.droids-corp.org/blog/html/tags/scapy.html) +* You will also find an article in the French [Linux Magazine #52](https://boutique.ed-diamond.com/numeros-deja-parus/354-misc52.html) + +#### Mailing-list (very low activity) + +Send questions, bug reports, suggestions, ideas, cool usages of Scapy, etc. To avoid spam, you must subscribe to the mailing list to post. + +* To subscribe to the mailing-list, send a mail to scapy.ml-subscribe(at)secdev.org +* To send a mail to the mailing-list: scapy.ml(at)secdev.org + +#### Known bugs + +* May miss packets under heavy load +* BPF filters do not work on PPP interfaces + +### Related projects + +* [UTscapy](http://www.secdev.org/projects/UTscapy/): Unit Testing with scapy (shipped with Scapy 2.X+) +* [Scapytain](http://www.secdev.org/projects/scapytain/): a web application to store, organize and run test campaigns on top of Scapy (low project activity) + +--- + +If you like Scapy, you can [sponsor us on Github](https://github.com/secdev/scapy#sponsor-button-repo) diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index b199758..0000000 --- a/package-lock.json +++ /dev/null @@ -1,3559 +0,0 @@ -{ - "name": "scapy-website", - "version": "1.0.1", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "scapy-website", - "version": "1.0.1", - "hasInstallScript": true, - "dependencies": { - "@mdi/js": "^7.4.47", - "@xterm/addon-fit": "^0.10.0", - "@xterm/xterm": "^5.5.0", - "core-js": "^3.45.1", - "pyodide": "^0.28.2", - "roboto-fontface": "*", - "vue": "^3.5.20", - "vue-router": "^4.2.5", - "vuetify": "^3.9.6", - "webfontloader": "^1.6.28" - }, - "devDependencies": { - "@types/node": "^24.3.0", - "@types/webfontloader": "^1.6.36", - "@vitejs/plugin-vue": "^6.0.1", - "@vue/eslint-config-typescript": "^14.6.0", - "eslint": "^9.31.0", - "eslint-plugin-vue": "^10.3.0", - "sass": "^1.69.4", - "typescript": "^5.8.0", - "vite": "^7.0.6", - "vite-plugin-vuetify": "^2.1.2", - "vue-tsc": "^3.0.4" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", - "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", - "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.4.tgz", - "integrity": "sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==", - "dependencies": { - "@babel/types": "^7.28.4" - }, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/types": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.4.tgz", - "integrity": "sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==", - "dependencies": { - "@babel/helper-string-parser": "^7.27.1", - "@babel/helper-validator-identifier": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.25.10", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.10.tgz", - "integrity": "sha512-0NFWnA+7l41irNuaSVlLfgNT12caWJVLzp5eAVhZ0z1qpxbockccEt3s+149rE64VUI3Ml2zt8Nv5JVc4QXTsw==", - "cpu": [ - "ppc64" - ], - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.25.10", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.10.tgz", - "integrity": "sha512-dQAxF1dW1C3zpeCDc5KqIYuZ1tgAdRXNoZP7vkBIRtKZPYe2xVr/d3SkirklCHudW1B45tGiUlz2pUWDfbDD4w==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.25.10", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.10.tgz", - "integrity": "sha512-LSQa7eDahypv/VO6WKohZGPSJDq5OVOo3UoFR1E4t4Gj1W7zEQMUhI+lo81H+DtB+kP+tDgBp+M4oNCwp6kffg==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.25.10", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.10.tgz", - "integrity": "sha512-MiC9CWdPrfhibcXwr39p9ha1x0lZJ9KaVfvzA0Wxwz9ETX4v5CHfF09bx935nHlhi+MxhA63dKRRQLiVgSUtEg==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.25.10", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.10.tgz", - "integrity": "sha512-JC74bdXcQEpW9KkV326WpZZjLguSZ3DfS8wrrvPMHgQOIEIG/sPXEN/V8IssoJhbefLRcRqw6RQH2NnpdprtMA==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.25.10", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.10.tgz", - "integrity": "sha512-tguWg1olF6DGqzws97pKZ8G2L7Ig1vjDmGTwcTuYHbuU6TTjJe5FXbgs5C1BBzHbJ2bo1m3WkQDbWO2PvamRcg==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.25.10", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.10.tgz", - "integrity": "sha512-3ZioSQSg1HT2N05YxeJWYR+Libe3bREVSdWhEEgExWaDtyFbbXWb49QgPvFH8u03vUPX10JhJPcz7s9t9+boWg==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.25.10", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.10.tgz", - "integrity": "sha512-LLgJfHJk014Aa4anGDbh8bmI5Lk+QidDmGzuC2D+vP7mv/GeSN+H39zOf7pN5N8p059FcOfs2bVlrRr4SK9WxA==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.25.10", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.10.tgz", - "integrity": "sha512-oR31GtBTFYCqEBALI9r6WxoU/ZofZl962pouZRTEYECvNF/dtXKku8YXcJkhgK/beU+zedXfIzHijSRapJY3vg==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.25.10", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.10.tgz", - "integrity": "sha512-5luJWN6YKBsawd5f9i4+c+geYiVEw20FVW5x0v1kEMWNq8UctFjDiMATBxLvmmHA4bf7F6hTRaJgtghFr9iziQ==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.25.10", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.10.tgz", - "integrity": "sha512-NrSCx2Kim3EnnWgS4Txn0QGt0Xipoumb6z6sUtl5bOEZIVKhzfyp/Lyw4C1DIYvzeW/5mWYPBFJU3a/8Yr75DQ==", - "cpu": [ - "ia32" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.25.10", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.10.tgz", - "integrity": "sha512-xoSphrd4AZda8+rUDDfD9J6FUMjrkTz8itpTITM4/xgerAZZcFW7Dv+sun7333IfKxGG8gAq+3NbfEMJfiY+Eg==", - "cpu": [ - "loong64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.25.10", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.10.tgz", - "integrity": "sha512-ab6eiuCwoMmYDyTnyptoKkVS3k8fy/1Uvq7Dj5czXI6DF2GqD2ToInBI0SHOp5/X1BdZ26RKc5+qjQNGRBelRA==", - "cpu": [ - "mips64el" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.25.10", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.10.tgz", - "integrity": "sha512-NLinzzOgZQsGpsTkEbdJTCanwA5/wozN9dSgEl12haXJBzMTpssebuXR42bthOF3z7zXFWH1AmvWunUCkBE4EA==", - "cpu": [ - "ppc64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.25.10", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.10.tgz", - "integrity": "sha512-FE557XdZDrtX8NMIeA8LBJX3dC2M8VGXwfrQWU7LB5SLOajfJIxmSdyL/gU1m64Zs9CBKvm4UAuBp5aJ8OgnrA==", - "cpu": [ - "riscv64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.25.10", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.10.tgz", - "integrity": "sha512-3BBSbgzuB9ajLoVZk0mGu+EHlBwkusRmeNYdqmznmMc9zGASFjSsxgkNsqmXugpPk00gJ0JNKh/97nxmjctdew==", - "cpu": [ - "s390x" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.25.10", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.10.tgz", - "integrity": "sha512-QSX81KhFoZGwenVyPoberggdW1nrQZSvfVDAIUXr3WqLRZGZqWk/P4T8p2SP+de2Sr5HPcvjhcJzEiulKgnxtA==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-arm64": { - "version": "0.25.10", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.10.tgz", - "integrity": "sha512-AKQM3gfYfSW8XRk8DdMCzaLUFB15dTrZfnX8WXQoOUpUBQ+NaAFCP1kPS/ykbbGYz7rxn0WS48/81l9hFl3u4A==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.25.10", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.10.tgz", - "integrity": "sha512-7RTytDPGU6fek/hWuN9qQpeGPBZFfB4zZgcz2VK2Z5VpdUxEI8JKYsg3JfO0n/Z1E/6l05n0unDCNc4HnhQGig==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-arm64": { - "version": "0.25.10", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.10.tgz", - "integrity": "sha512-5Se0VM9Wtq797YFn+dLimf2Zx6McttsH2olUBsDml+lm0GOCRVebRWUvDtkY4BWYv/3NgzS8b/UM3jQNh5hYyw==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.25.10", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.10.tgz", - "integrity": "sha512-XkA4frq1TLj4bEMB+2HnI0+4RnjbuGZfet2gs/LNs5Hc7D89ZQBHQ0gL2ND6Lzu1+QVkjp3x1gIcPKzRNP8bXw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openharmony-arm64": { - "version": "0.25.10", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.10.tgz", - "integrity": "sha512-AVTSBhTX8Y/Fz6OmIVBip9tJzZEUcY8WLh7I59+upa5/GPhh2/aM6bvOMQySspnCCHvFi79kMtdJS1w0DXAeag==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "openharmony" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.25.10", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.10.tgz", - "integrity": "sha512-fswk3XT0Uf2pGJmOpDB7yknqhVkJQkAQOcW/ccVOtfx05LkbWOaRAtn5SaqXypeKQra1QaEa841PgrSL9ubSPQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.25.10", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.10.tgz", - "integrity": "sha512-ah+9b59KDTSfpaCg6VdJoOQvKjI33nTaQr4UluQwW7aEwZQsbMCfTmfEO4VyewOxx4RaDT/xCy9ra2GPWmO7Kw==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.25.10", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.10.tgz", - "integrity": "sha512-QHPDbKkrGO8/cz9LKVnJU22HOi4pxZnZhhA2HYHez5Pz4JeffhDjf85E57Oyco163GnzNCVkZK0b/n4Y0UHcSw==", - "cpu": [ - "ia32" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.25.10", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.10.tgz", - "integrity": "sha512-9KpxSVFCu0iK1owoez6aC/s/EdUQLDN3adTxGCqxMVhrPDj6bt5dbrHDXUuq+Bs2vATFBBrQS5vdQ/Ed2P+nbw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz", - "integrity": "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^3.4.3" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", - "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", - "dev": true, - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/config-array": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.0.tgz", - "integrity": "sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==", - "dev": true, - "dependencies": { - "@eslint/object-schema": "^2.1.6", - "debug": "^4.3.1", - "minimatch": "^3.1.2" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/config-array/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/@eslint/config-array/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/@eslint/config-helpers": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.3.1.tgz", - "integrity": "sha512-xR93k9WhrDYpXHORXpxVL5oHj3Era7wo6k/Wd8/IsQNnZUTzkGS29lyn3nAT05v6ltUuTFVCCYDEGfy2Or/sPA==", - "dev": true, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/core": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.15.2.tgz", - "integrity": "sha512-78Md3/Rrxh83gCxoUc0EiciuOHsIITzLy53m3d9UyiW8y9Dj2D29FeETqyKA+BRK76tnTp6RXWb3pCay8Oyomg==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.15" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", - "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", - "dev": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^10.0.1", - "globals": "^14.0.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/@eslint/eslintrc/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/@eslint/js": { - "version": "9.36.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.36.0.tgz", - "integrity": "sha512-uhCbYtYynH30iZErszX78U+nR3pJU3RHGQ57NXy5QupD4SBVwDeU8TNBy+MjMngc1UyIW9noKqsRqfjQTBU2dw==", - "dev": true, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://eslint.org/donate" - } - }, - "node_modules/@eslint/object-schema": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", - "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", - "dev": true, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/plugin-kit": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.5.tgz", - "integrity": "sha512-Z5kJ+wU3oA7MMIqVR9tyZRtjYPr4OC004Q4Rw7pgOKUOKkJfZ3O24nz3WYfGRpMDNmcOi3TwQOmgm7B7Tpii0w==", - "dev": true, - "dependencies": { - "@eslint/core": "^0.15.2", - "levn": "^0.4.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@humanfs/core": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", - "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", - "dev": true, - "engines": { - "node": ">=18.18.0" - } - }, - "node_modules/@humanfs/node": { - "version": "0.16.7", - "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz", - "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", - "dev": true, - "dependencies": { - "@humanfs/core": "^0.19.1", - "@humanwhocodes/retry": "^0.4.0" - }, - "engines": { - "node": ">=18.18.0" - } - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/retry": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", - "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", - "dev": true, - "engines": { - "node": ">=18.18" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", - "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==" - }, - "node_modules/@mdi/js": { - "version": "7.4.47", - "resolved": "https://registry.npmjs.org/@mdi/js/-/js-7.4.47.tgz", - "integrity": "sha512-KPnNOtm5i2pMabqZxpUz7iQf+mfrYZyKCZ8QNz85czgEt7cuHcGorWfdzUMWYA0SD+a6Hn4FmJ+YhzzzjkTZrQ==" - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@parcel/watcher": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.1.tgz", - "integrity": "sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==", - "hasInstallScript": true, - "optional": true, - "dependencies": { - "detect-libc": "^1.0.3", - "is-glob": "^4.0.3", - "micromatch": "^4.0.5", - "node-addon-api": "^7.0.0" - }, - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "optionalDependencies": { - "@parcel/watcher-android-arm64": "2.5.1", - "@parcel/watcher-darwin-arm64": "2.5.1", - "@parcel/watcher-darwin-x64": "2.5.1", - "@parcel/watcher-freebsd-x64": "2.5.1", - "@parcel/watcher-linux-arm-glibc": "2.5.1", - "@parcel/watcher-linux-arm-musl": "2.5.1", - "@parcel/watcher-linux-arm64-glibc": "2.5.1", - "@parcel/watcher-linux-arm64-musl": "2.5.1", - "@parcel/watcher-linux-x64-glibc": "2.5.1", - "@parcel/watcher-linux-x64-musl": "2.5.1", - "@parcel/watcher-win32-arm64": "2.5.1", - "@parcel/watcher-win32-ia32": "2.5.1", - "@parcel/watcher-win32-x64": "2.5.1" - } - }, - "node_modules/@parcel/watcher-android-arm64": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.1.tgz", - "integrity": "sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-darwin-arm64": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.1.tgz", - "integrity": "sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-darwin-x64": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.1.tgz", - "integrity": "sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-freebsd-x64": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.1.tgz", - "integrity": "sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-arm-glibc": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.1.tgz", - "integrity": "sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-arm-musl": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.1.tgz", - "integrity": "sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-arm64-glibc": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.1.tgz", - "integrity": "sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-arm64-musl": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.1.tgz", - "integrity": "sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-x64-glibc": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.1.tgz", - "integrity": "sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-x64-musl": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.1.tgz", - "integrity": "sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-win32-arm64": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.1.tgz", - "integrity": "sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-win32-ia32": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.1.tgz", - "integrity": "sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==", - "cpu": [ - "ia32" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-win32-x64": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.1.tgz", - "integrity": "sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@rolldown/pluginutils": { - "version": "1.0.0-beta.29", - "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.29.tgz", - "integrity": "sha512-NIJgOsMjbxAXvoGq/X0gD7VPMQ8j9g0BiDaNjVNVjvl+iKXxL3Jre0v31RmBYeLEmkbj2s02v8vFTbUXi5XS2Q==", - "dev": true - }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.52.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.52.0.tgz", - "integrity": "sha512-VxDYCDqOaR7NXzAtvRx7G1u54d2kEHopb28YH/pKzY6y0qmogP3gG7CSiWsq9WvDFxOQMpNEyjVAHZFXfH3o/A==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.52.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.52.0.tgz", - "integrity": "sha512-pqDirm8koABIKvzL59YI9W9DWbRlTX7RWhN+auR8HXJxo89m4mjqbah7nJZjeKNTNYopqL+yGg+0mhCpf3xZtQ==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.52.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.52.0.tgz", - "integrity": "sha512-YCdWlY/8ltN6H78HnMsRHYlPiKvqKagBP1r+D7SSylxX+HnsgXGCmLiV3Y4nSyY9hW8qr8U9LDUx/Lo7M6MfmQ==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.52.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.52.0.tgz", - "integrity": "sha512-z4nw6y1j+OOSGzuVbSWdIp1IUks9qNw4dc7z7lWuWDKojY38VMWBlEN7F9jk5UXOkUcp97vA1N213DF+Lz8BRg==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.52.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.52.0.tgz", - "integrity": "sha512-Q/dv9Yvyr5rKlK8WQJZVrp5g2SOYeZUs9u/t2f9cQ2E0gJjYB/BWoedXfUT0EcDJefi2zzVfhcOj8drWCzTviw==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.52.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.52.0.tgz", - "integrity": "sha512-kdBsLs4Uile/fbjZVvCRcKB4q64R+1mUq0Yd7oU1CMm1Av336ajIFqNFovByipciuUQjBCPMxwJhCgfG2re3rg==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.52.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.52.0.tgz", - "integrity": "sha512-aL6hRwu0k7MTUESgkg7QHY6CoqPgr6gdQXRJI1/VbFlUMwsSzPGSR7sG5d+MCbYnJmJwThc2ol3nixj1fvI/zQ==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.52.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.52.0.tgz", - "integrity": "sha512-BTs0M5s1EJejgIBJhCeiFo7GZZ2IXWkFGcyZhxX4+8usnIo5Mti57108vjXFIQmmJaRyDwmV59Tw64Ap1dkwMw==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.52.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.52.0.tgz", - "integrity": "sha512-uj672IVOU9m08DBGvoPKPi/J8jlVgjh12C9GmjjBxCTQc3XtVmRkRKyeHSmIKQpvJ7fIm1EJieBUcnGSzDVFyw==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.52.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.52.0.tgz", - "integrity": "sha512-/+IVbeDMDCtB/HP/wiWsSzduD10SEGzIZX2945KSgZRNi4TSkjHqRJtNTVtVb8IRwhJ65ssI56krlLik+zFWkw==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-loong64-gnu": { - "version": "4.52.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.52.0.tgz", - "integrity": "sha512-U1vVzvSWtSMWKKrGoROPBXMh3Vwn93TA9V35PldokHGqiUbF6erSzox/5qrSMKp6SzakvyjcPiVF8yB1xKr9Pg==", - "cpu": [ - "loong64" - ], - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.52.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.52.0.tgz", - "integrity": "sha512-X/4WfuBAdQRH8cK3DYl8zC00XEE6aM472W+QCycpQJeLWVnHfkv7RyBFVaTqNUMsTgIX8ihMjCvFF9OUgeABzw==", - "cpu": [ - "ppc64" - ], - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.52.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.52.0.tgz", - "integrity": "sha512-xIRYc58HfWDBZoLmWfWXg2Sq8VCa2iJ32B7mqfWnkx5mekekl0tMe7FHpY8I72RXEcUkaWawRvl3qA55og+cwQ==", - "cpu": [ - "riscv64" - ], - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.52.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.52.0.tgz", - "integrity": "sha512-mbsoUey05WJIOz8U1WzNdf+6UMYGwE3fZZnQqsM22FZ3wh1N887HT6jAOjXs6CNEK3Ntu2OBsyQDXfIjouI4dw==", - "cpu": [ - "riscv64" - ], - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.52.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.52.0.tgz", - "integrity": "sha512-qP6aP970bucEi5KKKR4AuPFd8aTx9EF6BvutvYxmZuWLJHmnq4LvBfp0U+yFDMGwJ+AIJEH5sIP+SNypauMWzg==", - "cpu": [ - "s390x" - ], - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.52.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.52.0.tgz", - "integrity": "sha512-nmSVN+F2i1yKZ7rJNKO3G7ZzmxJgoQBQZ/6c4MuS553Grmr7WqR7LLDcYG53Z2m9409z3JLt4sCOhLdbKQ3HmA==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.52.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.52.0.tgz", - "integrity": "sha512-2d0qRo33G6TfQVjaMR71P+yJVGODrt5V6+T0BDYH4EMfGgdC/2HWDVjSSFw888GSzAZUwuska3+zxNUCDco6rQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-openharmony-arm64": { - "version": "4.52.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.52.0.tgz", - "integrity": "sha512-A1JalX4MOaFAAyGgpO7XP5khquv/7xKzLIyLmhNrbiCxWpMlnsTYr8dnsWM7sEeotNmxvSOEL7F65j0HXFcFsw==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "openharmony" - ] - }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.52.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.52.0.tgz", - "integrity": "sha512-YQugafP/rH0eOOHGjmNgDURrpYHrIX0yuojOI8bwCyXwxC9ZdTd3vYkmddPX0oHONLXu9Rb1dDmT0VNpjkzGGw==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.52.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.52.0.tgz", - "integrity": "sha512-zYdUYhi3Qe2fndujBqL5FjAFzvNeLxtIqfzNEVKD1I7C37/chv1VxhscWSQHTNfjPCrBFQMnynwA3kpZpZ8w4A==", - "cpu": [ - "ia32" - ], - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-x64-gnu": { - "version": "4.52.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.52.0.tgz", - "integrity": "sha512-fGk03kQylNaCOQ96HDMeT7E2n91EqvCDd3RwvT5k+xNdFCeMGnj5b5hEgTGrQuyidqSsD3zJDQ21QIaxXqTBJw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.52.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.52.0.tgz", - "integrity": "sha512-6iKDCVSIUQ8jPMoIV0OytRKniaYyy5EbY/RRydmLW8ZR3cEBhxbWl5ro0rkUNe0ef6sScvhbY79HrjRm8i3vDQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@types/estree": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", - "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", - "devOptional": true - }, - "node_modules/@types/json-schema": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true - }, - "node_modules/@types/node": { - "version": "24.5.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.5.2.tgz", - "integrity": "sha512-FYxk1I7wPv3K2XBaoyH2cTnocQEu8AOZ60hPbsyukMPLv5/5qr7V1i8PLHdl6Zf87I+xZXFvPCXYjiTFq+YSDQ==", - "devOptional": true, - "dependencies": { - "undici-types": "~7.12.0" - } - }, - "node_modules/@types/webfontloader": { - "version": "1.6.38", - "resolved": "https://registry.npmjs.org/@types/webfontloader/-/webfontloader-1.6.38.tgz", - "integrity": "sha512-kUaF72Fv202suFx6yBrwXqeVRMx7hGtJTesyESZgn9sEPCUeDXm2p0SiyS1MTqW74nQP4p7JyrOCwZ7pNFns4w==", - "dev": true - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.44.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.44.0.tgz", - "integrity": "sha512-EGDAOGX+uwwekcS0iyxVDmRV9HX6FLSM5kzrAToLTsr9OWCIKG/y3lQheCq18yZ5Xh78rRKJiEpP0ZaCs4ryOQ==", - "dev": true, - "dependencies": { - "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.44.0", - "@typescript-eslint/type-utils": "8.44.0", - "@typescript-eslint/utils": "8.44.0", - "@typescript-eslint/visitor-keys": "8.44.0", - "graphemer": "^1.4.0", - "ignore": "^7.0.0", - "natural-compare": "^1.4.0", - "ts-api-utils": "^2.1.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^8.44.0", - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", - "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "8.44.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.44.0.tgz", - "integrity": "sha512-VGMpFQGUQWYT9LfnPcX8ouFojyrZ/2w3K5BucvxL/spdNehccKhB4jUyB1yBCXpr2XFm0jkECxgrpXBW2ipoAw==", - "dev": true, - "dependencies": { - "@typescript-eslint/scope-manager": "8.44.0", - "@typescript-eslint/types": "8.44.0", - "@typescript-eslint/typescript-estree": "8.44.0", - "@typescript-eslint/visitor-keys": "8.44.0", - "debug": "^4.3.4" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/project-service": { - "version": "8.44.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.44.0.tgz", - "integrity": "sha512-ZeaGNraRsq10GuEohKTo4295Z/SuGcSq2LzfGlqiuEvfArzo/VRrT0ZaJsVPuKZ55lVbNk8U6FcL+ZMH8CoyVA==", - "dev": true, - "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.44.0", - "@typescript-eslint/types": "^8.44.0", - "debug": "^4.3.4" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "8.44.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.44.0.tgz", - "integrity": "sha512-87Jv3E+al8wpD+rIdVJm/ItDBe/Im09zXIjFoipOjr5gHUhJmTzfFLuTJ/nPTMc2Srsroy4IBXwcTCHyRR7KzA==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "8.44.0", - "@typescript-eslint/visitor-keys": "8.44.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.44.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.44.0.tgz", - "integrity": "sha512-x5Y0+AuEPqAInc6yd0n5DAcvtoQ/vyaGwuX5HE9n6qAefk1GaedqrLQF8kQGylLUb9pnZyLf+iEiL9fr8APDtQ==", - "dev": true, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "8.44.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.44.0.tgz", - "integrity": "sha512-9cwsoSxJ8Sak67Be/hD2RNt/fsqmWnNE1iHohG8lxqLSNY8xNfyY7wloo5zpW3Nu9hxVgURevqfcH6vvKCt6yg==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "8.44.0", - "@typescript-eslint/typescript-estree": "8.44.0", - "@typescript-eslint/utils": "8.44.0", - "debug": "^4.3.4", - "ts-api-utils": "^2.1.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/types": { - "version": "8.44.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.44.0.tgz", - "integrity": "sha512-ZSl2efn44VsYM0MfDQe68RKzBz75NPgLQXuGypmym6QVOWL5kegTZuZ02xRAT9T+onqvM6T8CdQk0OwYMB6ZvA==", - "dev": true, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.44.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.44.0.tgz", - "integrity": "sha512-lqNj6SgnGcQZwL4/SBJ3xdPEfcBuhCG8zdcwCPgYcmiPLgokiNDKlbPzCwEwu7m279J/lBYWtDYL+87OEfn8Jw==", - "dev": true, - "dependencies": { - "@typescript-eslint/project-service": "8.44.0", - "@typescript-eslint/tsconfig-utils": "8.44.0", - "@typescript-eslint/types": "8.44.0", - "@typescript-eslint/visitor-keys": "8.44.0", - "debug": "^4.3.4", - "fast-glob": "^3.3.2", - "is-glob": "^4.0.3", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "ts-api-utils": "^2.1.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/utils": { - "version": "8.44.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.44.0.tgz", - "integrity": "sha512-nktOlVcg3ALo0mYlV+L7sWUD58KG4CMj1rb2HUVOO4aL3K/6wcD+NERqd0rrA5Vg06b42YhF6cFxeixsp9Riqg==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.7.0", - "@typescript-eslint/scope-manager": "8.44.0", - "@typescript-eslint/types": "8.44.0", - "@typescript-eslint/typescript-estree": "8.44.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.44.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.44.0.tgz", - "integrity": "sha512-zaz9u8EJ4GBmnehlrpoKvj/E3dNbuQ7q0ucyZImm3cLqJ8INTc970B1qEqDX/Rzq65r3TvVTN7kHWPBoyW7DWw==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "8.44.0", - "eslint-visitor-keys": "^4.2.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", - "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", - "dev": true, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@vitejs/plugin-vue": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-6.0.1.tgz", - "integrity": "sha512-+MaE752hU0wfPFJEUAIxqw18+20euHHdxVtMvbFcOEpjEyfqXH/5DCoTHiVJ0J29EhTJdoTkjEv5YBKU9dnoTw==", - "dev": true, - "dependencies": { - "@rolldown/pluginutils": "1.0.0-beta.29" - }, - "engines": { - "node": "^20.19.0 || >=22.12.0" - }, - "peerDependencies": { - "vite": "^5.0.0 || ^6.0.0 || ^7.0.0", - "vue": "^3.2.25" - } - }, - "node_modules/@volar/language-core": { - "version": "2.4.23", - "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.4.23.tgz", - "integrity": "sha512-hEEd5ET/oSmBC6pi1j6NaNYRWoAiDhINbT8rmwtINugR39loROSlufGdYMF9TaKGfz+ViGs1Idi3mAhnuPcoGQ==", - "dev": true, - "dependencies": { - "@volar/source-map": "2.4.23" - } - }, - "node_modules/@volar/source-map": { - "version": "2.4.23", - "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.4.23.tgz", - "integrity": "sha512-Z1Uc8IB57Lm6k7q6KIDu/p+JWtf3xsXJqAX/5r18hYOTpJyBn0KXUR8oTJ4WFYOcDzWC9n3IflGgHowx6U6z9Q==", - "dev": true - }, - "node_modules/@volar/typescript": { - "version": "2.4.23", - "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-2.4.23.tgz", - "integrity": "sha512-lAB5zJghWxVPqfcStmAP1ZqQacMpe90UrP5RJ3arDyrhy4aCUQqmxPPLB2PWDKugvylmO41ljK7vZ+t6INMTag==", - "dev": true, - "dependencies": { - "@volar/language-core": "2.4.23", - "path-browserify": "^1.0.1", - "vscode-uri": "^3.0.8" - } - }, - "node_modules/@vue/compiler-core": { - "version": "3.5.21", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.21.tgz", - "integrity": "sha512-8i+LZ0vf6ZgII5Z9XmUvrCyEzocvWT+TeR2VBUVlzIH6Tyv57E20mPZ1bCS+tbejgUgmjrEh7q/0F0bibskAmw==", - "dependencies": { - "@babel/parser": "^7.28.3", - "@vue/shared": "3.5.21", - "entities": "^4.5.0", - "estree-walker": "^2.0.2", - "source-map-js": "^1.2.1" - } - }, - "node_modules/@vue/compiler-dom": { - "version": "3.5.21", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.21.tgz", - "integrity": "sha512-jNtbu/u97wiyEBJlJ9kmdw7tAr5Vy0Aj5CgQmo+6pxWNQhXZDPsRr1UWPN4v3Zf82s2H3kF51IbzZ4jMWAgPlQ==", - "dependencies": { - "@vue/compiler-core": "3.5.21", - "@vue/shared": "3.5.21" - } - }, - "node_modules/@vue/compiler-sfc": { - "version": "3.5.21", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.21.tgz", - "integrity": "sha512-SXlyk6I5eUGBd2v8Ie7tF6ADHE9kCR6mBEuPyH1nUZ0h6Xx6nZI29i12sJKQmzbDyr2tUHMhhTt51Z6blbkTTQ==", - "dependencies": { - "@babel/parser": "^7.28.3", - "@vue/compiler-core": "3.5.21", - "@vue/compiler-dom": "3.5.21", - "@vue/compiler-ssr": "3.5.21", - "@vue/shared": "3.5.21", - "estree-walker": "^2.0.2", - "magic-string": "^0.30.18", - "postcss": "^8.5.6", - "source-map-js": "^1.2.1" - } - }, - "node_modules/@vue/compiler-ssr": { - "version": "3.5.21", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.21.tgz", - "integrity": "sha512-vKQ5olH5edFZdf5ZrlEgSO1j1DMA4u23TVK5XR1uMhvwnYvVdDF0nHXJUblL/GvzlShQbjhZZ2uvYmDlAbgo9w==", - "dependencies": { - "@vue/compiler-dom": "3.5.21", - "@vue/shared": "3.5.21" - } - }, - "node_modules/@vue/compiler-vue2": { - "version": "2.7.16", - "resolved": "https://registry.npmjs.org/@vue/compiler-vue2/-/compiler-vue2-2.7.16.tgz", - "integrity": "sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==", - "dev": true, - "dependencies": { - "de-indent": "^1.0.2", - "he": "^1.2.0" - } - }, - "node_modules/@vue/devtools-api": { - "version": "6.6.4", - "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.4.tgz", - "integrity": "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==" - }, - "node_modules/@vue/eslint-config-typescript": { - "version": "14.6.0", - "resolved": "https://registry.npmjs.org/@vue/eslint-config-typescript/-/eslint-config-typescript-14.6.0.tgz", - "integrity": "sha512-UpiRY/7go4Yps4mYCjkvlIbVWmn9YvPGQDxTAlcKLphyaD77LjIu3plH4Y9zNT0GB4f3K5tMmhhtRhPOgrQ/bQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/utils": "^8.35.1", - "fast-glob": "^3.3.3", - "typescript-eslint": "^8.35.1", - "vue-eslint-parser": "^10.2.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "peerDependencies": { - "eslint": "^9.10.0", - "eslint-plugin-vue": "^9.28.0 || ^10.0.0", - "typescript": ">=4.8.4" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@vue/language-core": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-3.0.7.tgz", - "integrity": "sha512-0sqqyqJ0Gn33JH3TdIsZLCZZ8Gr4kwlg8iYOnOrDDkJKSjFurlQY/bEFQx5zs7SX2C/bjMkmPYq/NiyY1fTOkw==", - "dev": true, - "dependencies": { - "@volar/language-core": "2.4.23", - "@vue/compiler-dom": "^3.5.0", - "@vue/compiler-vue2": "^2.7.16", - "@vue/shared": "^3.5.0", - "alien-signals": "^2.0.5", - "muggle-string": "^0.4.1", - "path-browserify": "^1.0.1", - "picomatch": "^4.0.2" - }, - "peerDependencies": { - "typescript": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@vue/language-core/node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/@vue/reactivity": { - "version": "3.5.21", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.21.tgz", - "integrity": "sha512-3ah7sa+Cwr9iiYEERt9JfZKPw4A2UlbY8RbbnH2mGCE8NwHkhmlZt2VsH0oDA3P08X3jJd29ohBDtX+TbD9AsA==", - "dependencies": { - "@vue/shared": "3.5.21" - } - }, - "node_modules/@vue/runtime-core": { - "version": "3.5.21", - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.21.tgz", - "integrity": "sha512-+DplQlRS4MXfIf9gfD1BOJpk5RSyGgGXD/R+cumhe8jdjUcq/qlxDawQlSI8hCKupBlvM+3eS1se5xW+SuNAwA==", - "dependencies": { - "@vue/reactivity": "3.5.21", - "@vue/shared": "3.5.21" - } - }, - "node_modules/@vue/runtime-dom": { - "version": "3.5.21", - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.21.tgz", - "integrity": "sha512-3M2DZsOFwM5qI15wrMmNF5RJe1+ARijt2HM3TbzBbPSuBHOQpoidE+Pa+XEaVN+czbHf81ETRoG1ltztP2em8w==", - "dependencies": { - "@vue/reactivity": "3.5.21", - "@vue/runtime-core": "3.5.21", - "@vue/shared": "3.5.21", - "csstype": "^3.1.3" - } - }, - "node_modules/@vue/server-renderer": { - "version": "3.5.21", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.21.tgz", - "integrity": "sha512-qr8AqgD3DJPJcGvLcJKQo2tAc8OnXRcfxhOJCPF+fcfn5bBGz7VCcO7t+qETOPxpWK1mgysXvVT/j+xWaHeMWA==", - "dependencies": { - "@vue/compiler-ssr": "3.5.21", - "@vue/shared": "3.5.21" - }, - "peerDependencies": { - "vue": "3.5.21" - } - }, - "node_modules/@vue/shared": { - "version": "3.5.21", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.21.tgz", - "integrity": "sha512-+2k1EQpnYuVuu3N7atWyG3/xoFWIVJZq4Mz8XNOdScFI0etES75fbny/oU4lKWk/577P1zmg0ioYvpGEDZ3DLw==" - }, - "node_modules/@vuetify/loader-shared": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@vuetify/loader-shared/-/loader-shared-2.1.1.tgz", - "integrity": "sha512-jSZTzTYaoiv8iwonFCVZQ0YYX/M+Uyl4ng+C4egMJT0Hcmh9gIxJL89qfZICDeo3g0IhqrvipW2FFKKRDMtVcA==", - "devOptional": true, - "dependencies": { - "upath": "^2.0.1" - }, - "peerDependencies": { - "vue": "^3.0.0", - "vuetify": "^3.0.0" - } - }, - "node_modules/@xterm/addon-fit": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/@xterm/addon-fit/-/addon-fit-0.10.0.tgz", - "integrity": "sha512-UFYkDm4HUahf2lnEyHvio51TNGiLK66mqP2JoATy7hRZeXaGMRDr00JiSF7m63vR5WKATF605yEggJKsw0JpMQ==", - "peerDependencies": { - "@xterm/xterm": "^5.0.0" - } - }, - "node_modules/@xterm/xterm": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@xterm/xterm/-/xterm-5.5.0.tgz", - "integrity": "sha512-hqJHYaQb5OptNunnyAnkHyM8aCjZ1MEIDTQu1iIbbTD/xops91NB5yq1ZK/dC2JDbVWtF23zUtl9JE2NqwT87A==" - }, - "node_modules/acorn": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", - "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/alien-signals": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/alien-signals/-/alien-signals-2.0.7.tgz", - "integrity": "sha512-wE7y3jmYeb0+h6mr5BOovuqhFv22O/MV9j5p0ndJsa7z1zJNPGQ4ph5pQk/kTTCWRC3xsA4SmtwmkzQO+7NCNg==", - "dev": true - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "node_modules/boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "dev": true - }, - "node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "devOptional": true, - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/chokidar": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", - "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", - "devOptional": true, - "dependencies": { - "readdirp": "^4.0.1" - }, - "engines": { - "node": ">= 14.16.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "node_modules/core-js": { - "version": "3.45.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.45.1.tgz", - "integrity": "sha512-L4NPsJlCfZsPeXukyzHFlg/i7IIVwHSItR0wg0FLNqYClJ4MQYTYLbC7EkjKYRLZF2iof2MUgN0EGy7MdQFChg==", - "hasInstallScript": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true, - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/csstype": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" - }, - "node_modules/de-indent": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", - "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==", - "dev": true - }, - "node_modules/debug": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", - "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", - "devOptional": true, - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "node_modules/detect-libc": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", - "optional": true, - "bin": { - "detect-libc": "bin/detect-libc.js" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/esbuild": { - "version": "0.25.10", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.10.tgz", - "integrity": "sha512-9RiGKvCwaqxO2owP61uQ4BgNborAQskMR6QusfWzQqv7AZOg5oGehdY2pRJMTKuwxd1IDBP4rSbI5lHzU7SMsQ==", - "devOptional": true, - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.25.10", - "@esbuild/android-arm": "0.25.10", - "@esbuild/android-arm64": "0.25.10", - "@esbuild/android-x64": "0.25.10", - "@esbuild/darwin-arm64": "0.25.10", - "@esbuild/darwin-x64": "0.25.10", - "@esbuild/freebsd-arm64": "0.25.10", - "@esbuild/freebsd-x64": "0.25.10", - "@esbuild/linux-arm": "0.25.10", - "@esbuild/linux-arm64": "0.25.10", - "@esbuild/linux-ia32": "0.25.10", - "@esbuild/linux-loong64": "0.25.10", - "@esbuild/linux-mips64el": "0.25.10", - "@esbuild/linux-ppc64": "0.25.10", - "@esbuild/linux-riscv64": "0.25.10", - "@esbuild/linux-s390x": "0.25.10", - "@esbuild/linux-x64": "0.25.10", - "@esbuild/netbsd-arm64": "0.25.10", - "@esbuild/netbsd-x64": "0.25.10", - "@esbuild/openbsd-arm64": "0.25.10", - "@esbuild/openbsd-x64": "0.25.10", - "@esbuild/openharmony-arm64": "0.25.10", - "@esbuild/sunos-x64": "0.25.10", - "@esbuild/win32-arm64": "0.25.10", - "@esbuild/win32-ia32": "0.25.10", - "@esbuild/win32-x64": "0.25.10" - } - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint": { - "version": "9.36.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.36.0.tgz", - "integrity": "sha512-hB4FIzXovouYzwzECDcUkJ4OcfOEkXTv2zRY6B9bkwjx/cprAq0uvm1nl7zvQ0/TsUk0zQiN4uPfJpB9m+rPMQ==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.8.0", - "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.21.0", - "@eslint/config-helpers": "^0.3.1", - "@eslint/core": "^0.15.2", - "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.36.0", - "@eslint/plugin-kit": "^0.3.5", - "@humanfs/node": "^0.16.6", - "@humanwhocodes/module-importer": "^1.0.1", - "@humanwhocodes/retry": "^0.4.2", - "@types/estree": "^1.0.6", - "@types/json-schema": "^7.0.15", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.6", - "debug": "^4.3.2", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^8.4.0", - "eslint-visitor-keys": "^4.2.1", - "espree": "^10.4.0", - "esquery": "^1.5.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^8.0.0", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://eslint.org/donate" - }, - "peerDependencies": { - "jiti": "*" - }, - "peerDependenciesMeta": { - "jiti": { - "optional": true - } - } - }, - "node_modules/eslint-plugin-vue": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-10.4.0.tgz", - "integrity": "sha512-K6tP0dW8FJVZLQxa2S7LcE1lLw3X8VvB3t887Q6CLrFVxHYBXGANbXvwNzYIu6Ughx1bSJ5BDT0YB3ybPT39lw==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "natural-compare": "^1.4.0", - "nth-check": "^2.1.1", - "postcss-selector-parser": "^6.0.15", - "semver": "^7.6.3", - "xml-name-validator": "^4.0.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^7.0.0 || ^8.0.0", - "eslint": "^8.57.0 || ^9.0.0", - "vue-eslint-parser": "^10.0.0" - }, - "peerDependenciesMeta": { - "@typescript-eslint/parser": { - "optional": true - } - } - }, - "node_modules/eslint-scope": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", - "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/eslint/node_modules/eslint-visitor-keys": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", - "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", - "dev": true, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/espree": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", - "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", - "dev": true, - "dependencies": { - "acorn": "^8.15.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^4.2.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", - "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", - "dev": true, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esquery": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", - "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", - "dev": true, - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/fast-glob": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", - "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.8" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "node_modules/fastq": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", - "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/file-entry-cache": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", - "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", - "dev": true, - "dependencies": { - "flat-cache": "^4.0.0" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "devOptional": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/flat-cache": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", - "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", - "dev": true, - "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.4" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/flatted": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", - "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", - "dev": true - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/globals": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", - "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", - "dev": true, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true, - "bin": { - "he": "bin/he" - } - }, - "node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/immutable": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.3.tgz", - "integrity": "sha512-+chQdDfvscSF1SJqv2gn4SRO2ZyS3xL3r7IW/wWEEzrzLisnOlKiQu5ytC/BVNcS15C39WT2Hg/bjKjDMcu+zg==", - "devOptional": true - }, - "node_modules/import-fresh": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", - "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", - "dev": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "devOptional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "devOptional": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "devOptional": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true - }, - "node_modules/keyv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", - "dev": true, - "dependencies": { - "json-buffer": "3.0.1" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "node_modules/magic-string": { - "version": "0.30.19", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.19.tgz", - "integrity": "sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.5" - } - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "devOptional": true, - "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "devOptional": true - }, - "node_modules/muggle-string": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/muggle-string/-/muggle-string-0.4.1.tgz", - "integrity": "sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==", - "dev": true - }, - "node_modules/nanoid": { - "version": "3.3.11", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", - "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "node_modules/node-addon-api": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", - "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", - "optional": true - }, - "node_modules/nth-check": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "dev": true, - "dependencies": { - "boolbase": "^1.0.0" - }, - "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" - } - }, - "node_modules/optionator": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", - "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", - "dev": true, - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.5" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/path-browserify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", - "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", - "dev": true - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/picocolors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "devOptional": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/postcss": { - "version": "8.5.6", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", - "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "nanoid": "^3.3.11", - "picocolors": "^1.1.1", - "source-map-js": "^1.2.1" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/postcss-selector-parser": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", - "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", - "dev": true, - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/pyodide": { - "version": "0.28.2", - "resolved": "https://registry.npmjs.org/pyodide/-/pyodide-0.28.2.tgz", - "integrity": "sha512-2BrZHrALvhYZfIuTGDHOvyiirHNLziHfBiBb1tpBFzLgAvDBb2ACxNPFFROCOzLnqapORmgArDYY8mJmMWH1Eg==", - "dependencies": { - "ws": "^8.5.0" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/readdirp": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", - "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", - "devOptional": true, - "engines": { - "node": ">= 14.18.0" - }, - "funding": { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/reusify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", - "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", - "dev": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/roboto-fontface": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/roboto-fontface/-/roboto-fontface-0.10.0.tgz", - "integrity": "sha512-OlwfYEgA2RdboZohpldlvJ1xngOins5d7ejqnIBWr9KaMxsnBqotpptRXTyfNRLnFpqzX6sTDt+X+a+6udnU8g==" - }, - "node_modules/rollup": { - "version": "4.52.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.52.0.tgz", - "integrity": "sha512-+IuescNkTJQgX7AkIDtITipZdIGcWF0pnVvZTWStiazUmcGA2ag8dfg0urest2XlXUi9kuhfQ+qmdc5Stc3z7g==", - "devOptional": true, - "dependencies": { - "@types/estree": "1.0.8" - }, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=18.0.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.52.0", - "@rollup/rollup-android-arm64": "4.52.0", - "@rollup/rollup-darwin-arm64": "4.52.0", - "@rollup/rollup-darwin-x64": "4.52.0", - "@rollup/rollup-freebsd-arm64": "4.52.0", - "@rollup/rollup-freebsd-x64": "4.52.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.52.0", - "@rollup/rollup-linux-arm-musleabihf": "4.52.0", - "@rollup/rollup-linux-arm64-gnu": "4.52.0", - "@rollup/rollup-linux-arm64-musl": "4.52.0", - "@rollup/rollup-linux-loong64-gnu": "4.52.0", - "@rollup/rollup-linux-ppc64-gnu": "4.52.0", - "@rollup/rollup-linux-riscv64-gnu": "4.52.0", - "@rollup/rollup-linux-riscv64-musl": "4.52.0", - "@rollup/rollup-linux-s390x-gnu": "4.52.0", - "@rollup/rollup-linux-x64-gnu": "4.52.0", - "@rollup/rollup-linux-x64-musl": "4.52.0", - "@rollup/rollup-openharmony-arm64": "4.52.0", - "@rollup/rollup-win32-arm64-msvc": "4.52.0", - "@rollup/rollup-win32-ia32-msvc": "4.52.0", - "@rollup/rollup-win32-x64-gnu": "4.52.0", - "@rollup/rollup-win32-x64-msvc": "4.52.0", - "fsevents": "~2.3.2" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/sass": { - "version": "1.93.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.93.0.tgz", - "integrity": "sha512-CQi5/AzCwiubU3dSqRDJ93RfOfg/hhpW1l6wCIvolmehfwgCI35R/0QDs1+R+Ygrl8jFawwwIojE2w47/mf94A==", - "devOptional": true, - "dependencies": { - "chokidar": "^4.0.0", - "immutable": "^5.0.2", - "source-map-js": ">=0.6.2 <2.0.0" - }, - "bin": { - "sass": "sass.js" - }, - "engines": { - "node": ">=14.0.0" - }, - "optionalDependencies": { - "@parcel/watcher": "^2.4.1" - } - }, - "node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/source-map-js": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", - "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/tinyglobby": { - "version": "0.2.15", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", - "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", - "devOptional": true, - "dependencies": { - "fdir": "^6.5.0", - "picomatch": "^4.0.3" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/SuperchupuDev" - } - }, - "node_modules/tinyglobby/node_modules/fdir": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", - "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", - "devOptional": true, - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "picomatch": "^3 || ^4" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } - } - }, - "node_modules/tinyglobby/node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", - "devOptional": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "devOptional": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/ts-api-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", - "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", - "dev": true, - "engines": { - "node": ">=18.12" - }, - "peerDependencies": { - "typescript": ">=4.8.4" - } - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/typescript": { - "version": "5.9.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.2.tgz", - "integrity": "sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==", - "devOptional": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/typescript-eslint": { - "version": "8.44.0", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.44.0.tgz", - "integrity": "sha512-ib7mCkYuIzYonCq9XWF5XNw+fkj2zg629PSa9KNIQ47RXFF763S5BIX4wqz1+FLPogTZoiw8KmCiRPRa8bL3qw==", - "dev": true, - "dependencies": { - "@typescript-eslint/eslint-plugin": "8.44.0", - "@typescript-eslint/parser": "8.44.0", - "@typescript-eslint/typescript-estree": "8.44.0", - "@typescript-eslint/utils": "8.44.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/undici-types": { - "version": "7.12.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.12.0.tgz", - "integrity": "sha512-goOacqME2GYyOZZfb5Lgtu+1IDmAlAEu5xnD3+xTzS10hT0vzpf0SPjkXwAw9Jm+4n/mQGDP3LO8CPbYROeBfQ==", - "devOptional": true - }, - "node_modules/upath": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/upath/-/upath-2.0.1.tgz", - "integrity": "sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==", - "devOptional": true, - "engines": { - "node": ">=4", - "yarn": "*" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true - }, - "node_modules/vite": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/vite/-/vite-7.1.6.tgz", - "integrity": "sha512-SRYIB8t/isTwNn8vMB3MR6E+EQZM/WG1aKmmIUCfDXfVvKfc20ZpamngWHKzAmmu9ppsgxsg4b2I7c90JZudIQ==", - "devOptional": true, - "dependencies": { - "esbuild": "^0.25.0", - "fdir": "^6.5.0", - "picomatch": "^4.0.3", - "postcss": "^8.5.6", - "rollup": "^4.43.0", - "tinyglobby": "^0.2.15" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^20.19.0 || >=22.12.0" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - }, - "peerDependencies": { - "@types/node": "^20.19.0 || >=22.12.0", - "jiti": ">=1.21.0", - "less": "^4.0.0", - "lightningcss": "^1.21.0", - "sass": "^1.70.0", - "sass-embedded": "^1.70.0", - "stylus": ">=0.54.8", - "sugarss": "^5.0.0", - "terser": "^5.16.0", - "tsx": "^4.8.1", - "yaml": "^2.4.2" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "jiti": { - "optional": true - }, - "less": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "sass": { - "optional": true - }, - "sass-embedded": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - }, - "tsx": { - "optional": true - }, - "yaml": { - "optional": true - } - } - }, - "node_modules/vite-plugin-vuetify": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/vite-plugin-vuetify/-/vite-plugin-vuetify-2.1.2.tgz", - "integrity": "sha512-I/wd6QS+DO6lHmuGoi1UTyvvBTQ2KDzQZ9oowJQEJ6OcjWfJnscYXx2ptm6S7fJSASuZT8jGRBL3LV4oS3LpaA==", - "devOptional": true, - "dependencies": { - "@vuetify/loader-shared": "^2.1.1", - "debug": "^4.3.3", - "upath": "^2.0.1" - }, - "engines": { - "node": "^18.0.0 || >=20.0.0" - }, - "peerDependencies": { - "vite": ">=5", - "vue": "^3.0.0", - "vuetify": "^3.0.0" - } - }, - "node_modules/vite/node_modules/fdir": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", - "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", - "devOptional": true, - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "picomatch": "^3 || ^4" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } - } - }, - "node_modules/vite/node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", - "devOptional": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/vscode-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.1.0.tgz", - "integrity": "sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==", - "dev": true - }, - "node_modules/vue": { - "version": "3.5.21", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.21.tgz", - "integrity": "sha512-xxf9rum9KtOdwdRkiApWL+9hZEMWE90FHh8yS1+KJAiWYh+iGWV1FquPjoO9VUHQ+VIhsCXNNyZ5Sf4++RVZBA==", - "dependencies": { - "@vue/compiler-dom": "3.5.21", - "@vue/compiler-sfc": "3.5.21", - "@vue/runtime-dom": "3.5.21", - "@vue/server-renderer": "3.5.21", - "@vue/shared": "3.5.21" - }, - "peerDependencies": { - "typescript": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/vue-eslint-parser": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-10.2.0.tgz", - "integrity": "sha512-CydUvFOQKD928UzZhTp4pr2vWz1L+H99t7Pkln2QSPdvmURT0MoC4wUccfCnuEaihNsu9aYYyk+bep8rlfkUXw==", - "dev": true, - "dependencies": { - "debug": "^4.4.0", - "eslint-scope": "^8.2.0", - "eslint-visitor-keys": "^4.2.0", - "espree": "^10.3.0", - "esquery": "^1.6.0", - "semver": "^7.6.3" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0" - } - }, - "node_modules/vue-eslint-parser/node_modules/eslint-visitor-keys": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", - "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", - "dev": true, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/vue-router": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.5.1.tgz", - "integrity": "sha512-ogAF3P97NPm8fJsE4by9dwSYtDwXIY1nFY9T6DyQnGHd1E2Da94w9JIolpe42LJGIl0DwOHBi8TcRPlPGwbTtw==", - "dependencies": { - "@vue/devtools-api": "^6.6.4" - }, - "funding": { - "url": "https://github.com/sponsors/posva" - }, - "peerDependencies": { - "vue": "^3.2.0" - } - }, - "node_modules/vue-tsc": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-3.0.7.tgz", - "integrity": "sha512-BSMmW8GGEgHykrv7mRk6zfTdK+tw4MBZY/x6fFa7IkdXK3s/8hQRacPjG9/8YKFDIWGhBocwi6PlkQQ/93OgIQ==", - "dev": true, - "dependencies": { - "@volar/typescript": "2.4.23", - "@vue/language-core": "3.0.7" - }, - "bin": { - "vue-tsc": "bin/vue-tsc.js" - }, - "peerDependencies": { - "typescript": ">=5.0.0" - } - }, - "node_modules/vuetify": { - "version": "3.10.2", - "resolved": "https://registry.npmjs.org/vuetify/-/vuetify-3.10.2.tgz", - "integrity": "sha512-uuAm+uj170ZWdS0aiomhgtdYOR3/I2yzynskBfYyFB1Fn/HKvlvPDaU3ISZnf0GHIJQENdj7eLg/wTChrIwEQw==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/johnleider" - }, - "peerDependencies": { - "typescript": ">=4.7", - "vite-plugin-vuetify": ">=2.1.0", - "vue": "^3.5.0", - "webpack-plugin-vuetify": ">=3.1.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - }, - "vite-plugin-vuetify": { - "optional": true - }, - "webpack-plugin-vuetify": { - "optional": true - } - } - }, - "node_modules/webfontloader": { - "version": "1.6.28", - "resolved": "https://registry.npmjs.org/webfontloader/-/webfontloader-1.6.28.tgz", - "integrity": "sha512-Egb0oFEga6f+nSgasH3E0M405Pzn6y3/9tOVanv/DLfa1YBIgcv90L18YyWnvXkRbIM17v5Kv6IT2N6g1x5tvQ==" - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/word-wrap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ws": { - "version": "8.18.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", - "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/xml-name-validator": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", - "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - } -} diff --git a/package.json b/package.json deleted file mode 100644 index b9680bb..0000000 --- a/package.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "name": "scapy-website", - "version": "1.0.1", - "private": true, - "scripts": { - "dev": "vite", - "build": "vue-tsc --noEmit && vite build", - "preview": "vite preview", - "lint": "eslint . --fix --ignore-path .gitignore", - "postinstall": "pip wheel -w public/ https://github.com/secdev/scapy/archive/refs/heads/master.zip" - }, - "dependencies": { - "@mdi/js": "^7.4.47", - "@xterm/addon-fit": "^0.10.0", - "@xterm/xterm": "^5.5.0", - "core-js": "^3.45.1", - "pyodide": "^0.28.2", - "roboto-fontface": "*", - "vue": "^3.5.20", - "vue-router": "^4.2.5", - "vuetify": "^3.9.6", - "webfontloader": "^1.6.28" - }, - "devDependencies": { - "@types/node": "^24.3.0", - "@types/webfontloader": "^1.6.36", - "@vitejs/plugin-vue": "^6.0.1", - "@vue/eslint-config-typescript": "^14.6.0", - "eslint": "^9.31.0", - "eslint-plugin-vue": "^10.3.0", - "sass": "^1.69.4", - "typescript": "^5.8.0", - "vite": "^7.0.6", - "vite-plugin-vuetify": "^2.1.2", - "vue-tsc": "^3.0.4" - } -} diff --git a/public/ci/npcap-0.96.exe b/public/ci/npcap-0.96.exe deleted file mode 100644 index 14541ed..0000000 Binary files a/public/ci/npcap-0.96.exe and /dev/null differ diff --git a/public/files/README.md b/public/files/README.md deleted file mode 100644 index 056bc61..0000000 --- a/public/files/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# public/files - -This folder contains: - -- `UTscapy`: some files used by UTscapy html render -- `doc`: images used in scapy's README -- `index.html` and `scapydoc.pdf`: redirections to keep legacy URLs working - - http://www.secdev.org/projects/scapy/files/scapydoc.pdf - - http://www.secdev.org/projects/scapy/files diff --git a/public/html.old/README.md b/public/html.old/README.md deleted file mode 100644 index 7acbcd7..0000000 --- a/public/html.old/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# public/html.old - -The old Scapy website as it was on http://www.secdev.org/projects/scapy/ diff --git a/public/robots.txt b/public/robots.txt deleted file mode 100644 index 38ec9d7..0000000 --- a/public/robots.txt +++ /dev/null @@ -1,3 +0,0 @@ -User-agent: * -Disallow: /files/ -Disallow: /html.old/ diff --git a/public/talks/README.md b/public/talks/README.md deleted file mode 100644 index a90072d..0000000 --- a/public/talks/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# public/talks - -A folder used to host conferences related to Scapy diff --git a/public/talks/troopers2019/svg2webm/animations b/public/talks/troopers2019/svg2webm/animations deleted file mode 100644 index b3b3a31..0000000 --- a/public/talks/troopers2019/svg2webm/animations +++ /dev/null @@ -1 +0,0 @@ -../animations/ \ No newline at end of file diff --git a/src/App.vue b/src/App.vue deleted file mode 100644 index 61d0851..0000000 --- a/src/App.vue +++ /dev/null @@ -1,7 +0,0 @@ - - - diff --git a/src/assets/logos/conda.svg b/src/assets/logos/conda.svg deleted file mode 100644 index d402012..0000000 --- a/src/assets/logos/conda.svg +++ /dev/null @@ -1,2 +0,0 @@ - -file_type_conda \ No newline at end of file diff --git a/src/assets/logos/debian.svg b/src/assets/logos/debian.svg deleted file mode 100644 index 58fca1c..0000000 --- a/src/assets/logos/debian.svg +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/assets/logos/github-mark-white.svg b/src/assets/logos/github-mark-white.svg deleted file mode 100644 index d5e6491..0000000 --- a/src/assets/logos/github-mark-white.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/logos/linux.svg b/src/assets/logos/linux.svg deleted file mode 100644 index f7b98b2..0000000 --- a/src/assets/logos/linux.svg +++ /dev/null @@ -1,363 +0,0 @@ - - - Tux - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/assets/logos/pypi.svg b/src/assets/logos/pypi.svg deleted file mode 100644 index 1f033e0..0000000 --- a/src/assets/logos/pypi.svg +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/assets/logos/windows.svg b/src/assets/logos/windows.svg deleted file mode 100644 index d0332d4..0000000 --- a/src/assets/logos/windows.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/components/ScapyS.vue b/src/components/ScapyS.vue deleted file mode 100644 index 65a5c1d..0000000 --- a/src/components/ScapyS.vue +++ /dev/null @@ -1,165 +0,0 @@ - - - - - \ No newline at end of file diff --git a/src/components/SponsorCard.vue b/src/components/SponsorCard.vue deleted file mode 100644 index 04a0783..0000000 --- a/src/components/SponsorCard.vue +++ /dev/null @@ -1,42 +0,0 @@ - - - - - \ No newline at end of file diff --git a/src/components/TerminalFrame.vue b/src/components/TerminalFrame.vue deleted file mode 100644 index be170ff..0000000 --- a/src/components/TerminalFrame.vue +++ /dev/null @@ -1,54 +0,0 @@ - - - \ No newline at end of file diff --git a/src/components/XTerm.vue b/src/components/XTerm.vue deleted file mode 100644 index 7a7b2af..0000000 --- a/src/components/XTerm.vue +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/src/components/XTermScapy.vue b/src/components/XTermScapy.vue deleted file mode 100644 index 6c13f0e..0000000 --- a/src/components/XTermScapy.vue +++ /dev/null @@ -1,410 +0,0 @@ - - - - - - - - - diff --git a/src/layouts/default/AppBar.vue b/src/layouts/default/AppBar.vue deleted file mode 100644 index 1dce0ce..0000000 --- a/src/layouts/default/AppBar.vue +++ /dev/null @@ -1,31 +0,0 @@ - - - diff --git a/src/layouts/default/Default.vue b/src/layouts/default/Default.vue deleted file mode 100644 index f1165a0..0000000 --- a/src/layouts/default/Default.vue +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/src/layouts/default/View.vue b/src/layouts/default/View.vue deleted file mode 100644 index 8e9e414..0000000 --- a/src/layouts/default/View.vue +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/src/main.ts b/src/main.ts deleted file mode 100644 index f11674d..0000000 --- a/src/main.ts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * main.ts - * - * Bootstraps Vuetify and other plugins then mounts the App` - */ - -// Components -import App from './App.vue' - -// Composables -import { createApp } from 'vue' - -// Plugins -import { registerPlugins } from '@/plugins' - -const app = createApp(App) - -registerPlugins(app) - -app.mount('#app') diff --git a/src/plugins/index.ts b/src/plugins/index.ts deleted file mode 100644 index a26ebe7..0000000 --- a/src/plugins/index.ts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * plugins/index.ts - * - * Automatically included in `./src/main.ts` - */ - -// Plugins -import { loadFonts } from './webfontloader' -import vuetify from './vuetify' -import router from '../router' - -// Types -import type { App } from 'vue' - -export function registerPlugins (app: App) { - loadFonts() - app - .use(vuetify) - .use(router) -} diff --git a/src/plugins/vuetify.ts b/src/plugins/vuetify.ts deleted file mode 100644 index 04dffca..0000000 --- a/src/plugins/vuetify.ts +++ /dev/null @@ -1,34 +0,0 @@ -/** - * plugins/vuetify.ts - * - * Framework documentation: https://vuetifyjs.com` - */ - -// Styles -import { aliases, mdi } from 'vuetify/iconsets/mdi-svg' -import 'vuetify/styles' - -// Composables -import { createVuetify } from 'vuetify' - -// https://vuetifyjs.com/en/introduction/why-vuetify/#feature-guides -export default createVuetify({ - icons: { - defaultSet: 'mdi', - aliases, - sets: { - mdi, - }, - }, - theme: { - defaultTheme: 'dark', - themes: { - dark: { - colors: { - primary: '#68d665', - secondary: '#BBDEFB', - }, - }, - }, - }, -}) diff --git a/src/plugins/webfontloader.ts b/src/plugins/webfontloader.ts deleted file mode 100644 index 2e9608e..0000000 --- a/src/plugins/webfontloader.ts +++ /dev/null @@ -1,15 +0,0 @@ -/** - * plugins/webfontloader.ts - * - * webfontloader documentation: https://github.com/typekit/webfontloader - */ - -export async function loadFonts () { - const webFontLoader = await import(/* webpackChunkName: "webfontloader" */'webfontloader') - - webFontLoader.load({ - google: { - families: ['Roboto:100,300,400,500,700,900&display=swap'], - }, - }) -} diff --git a/src/router/index.ts b/src/router/index.ts deleted file mode 100644 index 2b7c98e..0000000 --- a/src/router/index.ts +++ /dev/null @@ -1,26 +0,0 @@ -// Composables -import { createRouter, createWebHistory } from 'vue-router' - -const routes = [ - { - path: '/', - component: () => import('@/layouts/default/Default.vue'), - children: [ - { - path: '', - name: 'Home', - // route level code-splitting - // this generates a separate chunk (about.[hash].js) for this route - // which is lazy-loaded when the route is visited. - component: () => import(/* webpackChunkName: "home" */ '@/views/Home.vue'), - }, - ], - }, -] - -const router = createRouter({ - history: createWebHistory(import.meta.env.BASE_URL), - routes, -}) - -export default router diff --git a/src/styles/settings.scss b/src/styles/settings.scss deleted file mode 100644 index ded84f9..0000000 --- a/src/styles/settings.scss +++ /dev/null @@ -1,15 +0,0 @@ -/** - * src/styles/settings.scss - * - * Configures SASS variables and Vuetify overwrites - */ - -// https://next.vuetifyjs.com/features/sass-variables/` -// @use 'vuetify/settings' with ( -// $color-pack: false -// ); - -@use 'vuetify/settings' with ( - // Increase tab-slider-size for accessibility (from 2px) - $tab-slider-size: 3px -) \ No newline at end of file diff --git a/src/views/Home.vue b/src/views/Home.vue deleted file mode 100644 index b58c0e7..0000000 --- a/src/views/Home.vue +++ /dev/null @@ -1,739 +0,0 @@ - - - - - diff --git a/src/views/Try.vue b/src/views/Try.vue deleted file mode 100644 index 1f2de02..0000000 --- a/src/views/Try.vue +++ /dev/null @@ -1,113 +0,0 @@ - - - - - \ No newline at end of file diff --git a/src/vite-env.d.ts b/src/vite-env.d.ts deleted file mode 100644 index 323c78a..0000000 --- a/src/vite-env.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -/// - -declare module '*.vue' { - import type { DefineComponent } from 'vue' - const component: DefineComponent<{}, {}, any> - export default component -} diff --git a/tsconfig.json b/tsconfig.json deleted file mode 100644 index aa6f0fd..0000000 --- a/tsconfig.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "compilerOptions": { - "baseUrl": ".", - "target": "ESNext", - "useDefineForClassFields": true, - "module": "ESNext", - "moduleResolution": "Node", - "strict": true, - "jsx": "preserve", - "resolveJsonModule": true, - "isolatedModules": true, - "esModuleInterop": true, - "lib": ["ESNext", "DOM"], - "skipLibCheck": true, - "noEmit": true, - "paths": { - "@/*": [ - "src/*" - ] - } - }, - "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"], - "references": [{ "path": "./tsconfig.node.json" }], - "exclude": ["node_modules"] -} diff --git a/tsconfig.node.json b/tsconfig.node.json deleted file mode 100644 index 9d31e2a..0000000 --- a/tsconfig.node.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "compilerOptions": { - "composite": true, - "module": "ESNext", - "moduleResolution": "Node", - "allowSyntheticDefaultImports": true - }, - "include": ["vite.config.ts"] -} diff --git a/vite.config.ts b/vite.config.ts deleted file mode 100644 index 9810de6..0000000 --- a/vite.config.ts +++ /dev/null @@ -1,53 +0,0 @@ -// Plugins -import vue from '@vitejs/plugin-vue' -import vuetify, { transformAssetUrls } from 'vite-plugin-vuetify' - -// Utilities -import { defineConfig } from 'vite' -import { fileURLToPath, URL } from 'node:url' -import { readdirSync } from 'fs' - -// Most recent Scapy wheel -const scapywhl = readdirSync('public').filter(fn => fn.endsWith('.whl'))[0]; - -// https://vitejs.dev/config/ -export default defineConfig({ - plugins: [ - vue({ - template: { transformAssetUrls } - }), - // https://github.com/vuetifyjs/vuetify-loader/tree/next/packages/vite-plugin - vuetify({ - autoImport: true, - styles: { - configFile: 'src/styles/settings.scss', - }, - }), - ], - define: { - 'process.env': { - 'scapywhl': scapywhl, - } - }, - resolve: { - alias: { - '@': fileURLToPath(new URL('./src', import.meta.url)), - '~': fileURLToPath(new URL('./node_modules', import.meta.url)) - }, - extensions: [ - '.js', - '.json', - '.jsx', - '.mjs', - '.ts', - '.tsx', - '.vue', - ], - }, - server: { - port: 3000, - watch: { - usePolling: true // support WSL - } - }, -})